From deae1fbc0672011fa936d3fd44e001aa3131834f Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Sat, 25 Apr 2026 16:34:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20RecordingPanel=20=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E8=87=AA=E9=80=82=E5=BA=94=20+=20=E6=89=93=E5=8C=85=20DMG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - updateText 移除文本宽度硬编码下限 160,真正根据内容自适应 - showRefining/showThinking 简化为调用 updateText,复用自适应逻辑 - 面板最小宽度由 minPanelWidth(180pt) 兜底 - 打包 VoiceInput-20260425.dmg --- AGENTS.md | 145 + Sources/App/AppDelegate.swift | 9 +- Sources/Core/KeyMonitor.swift | 66 +- Sources/Core/LLMRefiner.swift | 17 +- Sources/UI/RecordingPanel.swift | 63 +- VoiceInput-20260425.dmg | Bin 2349946 -> 2353572 bytes agents-md-writer.skill | Bin 0 -> 7427 bytes skills/agent-build-standard/.DS_Store | Bin 0 -> 6148 bytes skills/agent-build-standard/SKILL.md | 233 + .../agent-build-standard/references/models.md | 20 + .../references/repo-guidelines.md | 22 + skills/agents-md-writer/SKILL.md | 88 + .../assets/AGENTS.md.template | 49 + .../references/specification.md | 119 + .../agents-md-writer/references/templates.md | 322 ++ skills/docx/.DS_Store | Bin 0 -> 6148 bytes skills/docx/LICENSE.txt | 30 + skills/docx/SKILL.md | 481 ++ skills/docx/scripts/.DS_Store | Bin 0 -> 6148 bytes skills/docx/scripts/__init__.py | 1 + skills/docx/scripts/accept_changes.py | 135 + skills/docx/scripts/comment.py | 318 ++ skills/docx/scripts/office/.DS_Store | Bin 0 -> 6148 bytes .../docx/scripts/office/helpers/__init__.py | 0 .../docx/scripts/office/helpers/merge_runs.py | 199 + .../office/helpers/simplify_redlines.py | 197 + skills/docx/scripts/office/pack.py | 159 + .../schemas/ISO-IEC29500-4_2016/dml-chart.xsd | 1499 ++++++ .../ISO-IEC29500-4_2016/dml-chartDrawing.xsd | 146 + .../ISO-IEC29500-4_2016/dml-diagram.xsd | 1085 ++++ .../ISO-IEC29500-4_2016/dml-lockedCanvas.xsd | 11 + .../schemas/ISO-IEC29500-4_2016/dml-main.xsd | 3081 ++++++++++++ .../ISO-IEC29500-4_2016/dml-picture.xsd | 23 + .../dml-spreadsheetDrawing.xsd | 185 + .../dml-wordprocessingDrawing.xsd | 287 ++ .../schemas/ISO-IEC29500-4_2016/pml.xsd | 1676 +++++++ .../shared-additionalCharacteristics.xsd | 28 + .../shared-bibliography.xsd | 144 + .../shared-commonSimpleTypes.xsd | 174 + .../shared-customXmlDataProperties.xsd | 25 + .../shared-customXmlSchemaProperties.xsd | 18 + .../shared-documentPropertiesCustom.xsd | 59 + .../shared-documentPropertiesExtended.xsd | 56 + .../shared-documentPropertiesVariantTypes.xsd | 195 + .../ISO-IEC29500-4_2016/shared-math.xsd | 582 +++ .../shared-relationshipReference.xsd | 25 + .../schemas/ISO-IEC29500-4_2016/sml.xsd | 4439 +++++++++++++++++ .../schemas/ISO-IEC29500-4_2016/vml-main.xsd | 570 +++ .../ISO-IEC29500-4_2016/vml-officeDrawing.xsd | 509 ++ .../vml-presentationDrawing.xsd | 12 + .../vml-spreadsheetDrawing.xsd | 108 + .../vml-wordprocessingDrawing.xsd | 96 + .../schemas/ISO-IEC29500-4_2016/wml.xsd | 3646 ++++++++++++++ .../schemas/ISO-IEC29500-4_2016/xml.xsd | 116 + .../ecma/fouth-edition/opc-contentTypes.xsd | 42 + .../ecma/fouth-edition/opc-coreProperties.xsd | 50 + .../schemas/ecma/fouth-edition/opc-digSig.xsd | 49 + .../ecma/fouth-edition/opc-relationships.xsd | 33 + skills/docx/scripts/office/schemas/mce/mc.xsd | 75 + .../office/schemas/microsoft/wml-2010.xsd | 560 +++ .../office/schemas/microsoft/wml-2012.xsd | 67 + .../office/schemas/microsoft/wml-2018.xsd | 14 + .../office/schemas/microsoft/wml-cex-2018.xsd | 20 + .../office/schemas/microsoft/wml-cid-2016.xsd | 13 + .../microsoft/wml-sdtdatahash-2020.xsd | 4 + .../schemas/microsoft/wml-symex-2015.xsd | 8 + skills/docx/scripts/office/soffice.py | 183 + skills/docx/scripts/office/unpack.py | 132 + skills/docx/scripts/office/validate.py | 111 + .../scripts/office/validators/__init__.py | 15 + skills/docx/scripts/office/validators/base.py | 847 ++++ skills/docx/scripts/office/validators/docx.py | 446 ++ skills/docx/scripts/office/validators/pptx.py | 275 + .../scripts/office/validators/redlining.py | 247 + skills/docx/scripts/templates/comments.xml | 3 + .../scripts/templates/commentsExtended.xml | 3 + .../scripts/templates/commentsExtensible.xml | 3 + skills/docx/scripts/templates/commentsIds.xml | 3 + skills/docx/scripts/templates/people.xml | 3 + skills/frontend-design/LICENSE.txt | 177 + skills/frontend-design/SKILL.md | 42 + skills/pptx/LICENSE.txt | 30 + skills/pptx/SKILL.md | 232 + skills/pptx/editing.md | 205 + skills/pptx/pptxgenjs.md | 420 ++ skills/pptx/scripts/__init__.py | 0 skills/pptx/scripts/add_slide.py | 195 + skills/pptx/scripts/clean.py | 286 ++ .../pptx/scripts/office/helpers/__init__.py | 0 .../pptx/scripts/office/helpers/merge_runs.py | 199 + .../office/helpers/simplify_redlines.py | 197 + skills/pptx/scripts/office/pack.py | 159 + .../schemas/ISO-IEC29500-4_2016/dml-chart.xsd | 1499 ++++++ .../ISO-IEC29500-4_2016/dml-chartDrawing.xsd | 146 + .../ISO-IEC29500-4_2016/dml-diagram.xsd | 1085 ++++ .../ISO-IEC29500-4_2016/dml-lockedCanvas.xsd | 11 + .../schemas/ISO-IEC29500-4_2016/dml-main.xsd | 3081 ++++++++++++ .../ISO-IEC29500-4_2016/dml-picture.xsd | 23 + .../dml-spreadsheetDrawing.xsd | 185 + .../dml-wordprocessingDrawing.xsd | 287 ++ .../schemas/ISO-IEC29500-4_2016/pml.xsd | 1676 +++++++ .../shared-additionalCharacteristics.xsd | 28 + .../shared-bibliography.xsd | 144 + .../shared-commonSimpleTypes.xsd | 174 + .../shared-customXmlDataProperties.xsd | 25 + .../shared-customXmlSchemaProperties.xsd | 18 + .../shared-documentPropertiesCustom.xsd | 59 + .../shared-documentPropertiesExtended.xsd | 56 + .../shared-documentPropertiesVariantTypes.xsd | 195 + .../ISO-IEC29500-4_2016/shared-math.xsd | 582 +++ .../shared-relationshipReference.xsd | 25 + .../schemas/ISO-IEC29500-4_2016/sml.xsd | 4439 +++++++++++++++++ .../schemas/ISO-IEC29500-4_2016/vml-main.xsd | 570 +++ .../ISO-IEC29500-4_2016/vml-officeDrawing.xsd | 509 ++ .../vml-presentationDrawing.xsd | 12 + .../vml-spreadsheetDrawing.xsd | 108 + .../vml-wordprocessingDrawing.xsd | 96 + .../schemas/ISO-IEC29500-4_2016/wml.xsd | 3646 ++++++++++++++ .../schemas/ISO-IEC29500-4_2016/xml.xsd | 116 + .../ecma/fouth-edition/opc-contentTypes.xsd | 42 + .../ecma/fouth-edition/opc-coreProperties.xsd | 50 + .../schemas/ecma/fouth-edition/opc-digSig.xsd | 49 + .../ecma/fouth-edition/opc-relationships.xsd | 33 + skills/pptx/scripts/office/schemas/mce/mc.xsd | 75 + .../office/schemas/microsoft/wml-2010.xsd | 560 +++ .../office/schemas/microsoft/wml-2012.xsd | 67 + .../office/schemas/microsoft/wml-2018.xsd | 14 + .../office/schemas/microsoft/wml-cex-2018.xsd | 20 + .../office/schemas/microsoft/wml-cid-2016.xsd | 13 + .../microsoft/wml-sdtdatahash-2020.xsd | 4 + .../schemas/microsoft/wml-symex-2015.xsd | 8 + skills/pptx/scripts/office/soffice.py | 183 + skills/pptx/scripts/office/unpack.py | 132 + skills/pptx/scripts/office/validate.py | 111 + .../scripts/office/validators/__init__.py | 15 + skills/pptx/scripts/office/validators/base.py | 847 ++++ skills/pptx/scripts/office/validators/docx.py | 446 ++ skills/pptx/scripts/office/validators/pptx.py | 275 + .../scripts/office/validators/redlining.py | 247 + skills/pptx/scripts/thumbnail.py | 289 ++ skills/run-command-guide/SKILL.md | 126 + skills/skill-creator/LICENSE.txt | 202 + skills/skill-creator/SKILL.md | 357 ++ .../references/output-patterns.md | 82 + skills/skill-creator/references/workflows.md | 28 + skills/skill-creator/scripts/init_skill.py | 303 ++ skills/skill-creator/scripts/package_skill.py | 110 + .../skill-creator/scripts/quick_validate.py | 103 + skills/sub-agent-guide/SKILL.md | 339 ++ skills/terminal-guide/SKILL.md | 516 ++ skills/test/SKILL.md | 15 + 151 files changed, 51185 insertions(+), 87 deletions(-) create mode 100644 AGENTS.md create mode 100644 agents-md-writer.skill create mode 100644 skills/agent-build-standard/.DS_Store create mode 100644 skills/agent-build-standard/SKILL.md create mode 100644 skills/agent-build-standard/references/models.md create mode 100644 skills/agent-build-standard/references/repo-guidelines.md create mode 100644 skills/agents-md-writer/SKILL.md create mode 100644 skills/agents-md-writer/assets/AGENTS.md.template create mode 100644 skills/agents-md-writer/references/specification.md create mode 100644 skills/agents-md-writer/references/templates.md create mode 100644 skills/docx/.DS_Store create mode 100644 skills/docx/LICENSE.txt create mode 100644 skills/docx/SKILL.md create mode 100644 skills/docx/scripts/.DS_Store create mode 100755 skills/docx/scripts/__init__.py create mode 100644 skills/docx/scripts/accept_changes.py create mode 100644 skills/docx/scripts/comment.py create mode 100644 skills/docx/scripts/office/.DS_Store create mode 100644 skills/docx/scripts/office/helpers/__init__.py create mode 100644 skills/docx/scripts/office/helpers/merge_runs.py create mode 100644 skills/docx/scripts/office/helpers/simplify_redlines.py create mode 100755 skills/docx/scripts/office/pack.py create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd create mode 100644 skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd create mode 100644 skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd create mode 100644 skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd create mode 100644 skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd create mode 100644 skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd create mode 100644 skills/docx/scripts/office/schemas/mce/mc.xsd create mode 100644 skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd create mode 100644 skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd create mode 100644 skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd create mode 100644 skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd create mode 100644 skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd create mode 100644 skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd create mode 100644 skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd create mode 100644 skills/docx/scripts/office/soffice.py create mode 100755 skills/docx/scripts/office/unpack.py create mode 100755 skills/docx/scripts/office/validate.py create mode 100644 skills/docx/scripts/office/validators/__init__.py create mode 100644 skills/docx/scripts/office/validators/base.py create mode 100644 skills/docx/scripts/office/validators/docx.py create mode 100644 skills/docx/scripts/office/validators/pptx.py create mode 100644 skills/docx/scripts/office/validators/redlining.py create mode 100644 skills/docx/scripts/templates/comments.xml create mode 100644 skills/docx/scripts/templates/commentsExtended.xml create mode 100644 skills/docx/scripts/templates/commentsExtensible.xml create mode 100644 skills/docx/scripts/templates/commentsIds.xml create mode 100644 skills/docx/scripts/templates/people.xml create mode 100644 skills/frontend-design/LICENSE.txt create mode 100644 skills/frontend-design/SKILL.md create mode 100644 skills/pptx/LICENSE.txt create mode 100644 skills/pptx/SKILL.md create mode 100644 skills/pptx/editing.md create mode 100644 skills/pptx/pptxgenjs.md create mode 100644 skills/pptx/scripts/__init__.py create mode 100755 skills/pptx/scripts/add_slide.py create mode 100755 skills/pptx/scripts/clean.py create mode 100644 skills/pptx/scripts/office/helpers/__init__.py create mode 100644 skills/pptx/scripts/office/helpers/merge_runs.py create mode 100644 skills/pptx/scripts/office/helpers/simplify_redlines.py create mode 100755 skills/pptx/scripts/office/pack.py create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd create mode 100644 skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd create mode 100644 skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd create mode 100644 skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd create mode 100644 skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd create mode 100644 skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd create mode 100644 skills/pptx/scripts/office/schemas/mce/mc.xsd create mode 100644 skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd create mode 100644 skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd create mode 100644 skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd create mode 100644 skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd create mode 100644 skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd create mode 100644 skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd create mode 100644 skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd create mode 100644 skills/pptx/scripts/office/soffice.py create mode 100755 skills/pptx/scripts/office/unpack.py create mode 100755 skills/pptx/scripts/office/validate.py create mode 100644 skills/pptx/scripts/office/validators/__init__.py create mode 100644 skills/pptx/scripts/office/validators/base.py create mode 100644 skills/pptx/scripts/office/validators/docx.py create mode 100644 skills/pptx/scripts/office/validators/pptx.py create mode 100644 skills/pptx/scripts/office/validators/redlining.py create mode 100755 skills/pptx/scripts/thumbnail.py create mode 100644 skills/run-command-guide/SKILL.md create mode 100644 skills/skill-creator/LICENSE.txt create mode 100644 skills/skill-creator/SKILL.md create mode 100644 skills/skill-creator/references/output-patterns.md create mode 100644 skills/skill-creator/references/workflows.md create mode 100755 skills/skill-creator/scripts/init_skill.py create mode 100755 skills/skill-creator/scripts/package_skill.py create mode 100755 skills/skill-creator/scripts/quick_validate.py create mode 100644 skills/sub-agent-guide/SKILL.md create mode 100644 skills/terminal-guide/SKILL.md create mode 100644 skills/test/SKILL.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..252d495 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,145 @@ +# VoiceInput — AI Agent 项目指南 + +## 项目概述 + +VoiceInput 是一款 **macOS 菜单栏语音输入应用**。按住 Fn / Globe 键录音,松开后通过剪贴板 + Cmd+V 自动将识别文本注入光标位置。支持 Apple 原生语音识别实时转录、LLM(DeepSeek)纠错优化、多语言切换,以及双击 Control 切换 Input / Assist 模式。 + +- **最低系统**:macOS 14+ +- **语言**:Swift 5.9 +- **构建系统**:Swift Package Manager(`Package.swift`)+ Makefile + +## 常用命令 + +所有命令在项目根目录执行。 + +| 命令 | 说明 | +|------|------| +| `make build` / `make debug` | Debug 构建并生成 `.app` bundle | +| `make release` | Release 构建(优化) | +| `make run` | Debug 构建 + 启动应用 | +| `make clean` | 清理构建产物 | +| `make install` | Release 构建 + 安装到 `/Applications` | +| `make sign` | Ad-hoc 签名(Release 后用) | +| `make dmg` | 签名 + 创建 DMG 分发包 | + +构建产物路径:`.build/release/VoiceInput.app`(Release)或 `.build/debug/VoiceInput.app`(Debug)。 + +`.app` bundle 由 `scripts/create_app_bundle.sh` 生成,负责将二进制 + 资源封装为标准 macOS 应用包。 + +## 项目结构 + +``` +Sources/ +├── main.swift # 入口:创建 NSApplication(.accessory) + AppDelegate +├── App/ +│ ├── AppDelegate.swift # 主控制器:权限引导、录音/停止、模式切换、LLM 调度 +│ └── MenuBarController.swift # 菜单栏图标与菜单(语言、LLM 配置、模式切换) +├── Core/ +│ ├── KeyMonitor.swift # CGEvent 全局热键:Fn 键长按录音、Control 键双击切换模式 +│ ├── SpeechRecognizer.swift # SFSpeechRecognizer 封装:流式识别、语言切换 +│ ├── AudioLevelMonitor.swift # AVAudioEngine 音频电平:RMS 音量驱动波形 +│ ├── TextInjector.swift # 剪贴板 + Cmd+V 注入;自动切换 CJK 输入法 +│ ├── InputSourceManager.swift # 输入法检测与切换(中文/英文等) +│ └── LLMRefiner.swift # DeepSeek API 调用:语音纠错(refine) / AI 对话(chat) +├── UI/ +│ ├── RecordingPanel.swift # 胶囊浮动窗:无边框、底部居中、弹簧动画 +│ ├── WaveformView.swift # 5 条球形波动画:RMS 驱动实时跳动 +│ └── SettingsWindow.swift # LLM 设置面板:API Key / Base URL / Model / Test +├── Utils/ +│ └── Config.swift # UserDefaults 持久化:语言、LLM 配置、触发模式 +└── Resources/ + ├── AppIcon.icns # 应用图标 + ├── AppIcon-macOS.png # 图标源文件 + └── Info.plist # Bundle 配置 +``` + +## 架构模式 + +### 应用生命周期 + +`main.swift` 创建 `NSApplication` 并设置为 `.accessory`(无 Dock 图标,仅菜单栏)。`AppDelegate` 通过 `static retainedInstance` 保持强引用(因为 `NSApplication.delegate` 是 weak)。 + +### 权限引导流程(顺序执行) + +``` +辅助功能权限 → 输入监控权限 → 启动 KeyMonitor + ↓ + 运行时按需请求: + 麦克风权限 + 语音识别权限 +``` + +`beginPermissionFlow()` 使用 `CGPreflightListenEventAccess()` 和 `CGEvent.tapCreate` 做权限预检。未授权时弹出对话框 + 轮询 Timer。 + +### 录音流程 + +``` +Fn Down(长按 > 200ms) + → AppDelegate.startRecording() + → AudioLevelMonitor.start() // 音频电平 + → SpeechRecognizer.start() // 语音识别 + → RecordingPanel.showAnimated() // 显示胶囊窗 + +Fn Up + → AppDelegate.stopRecording() + → 如果启用 LLM 纠错 → LLMRefiner.refine() + → TextInjector.inject() // 注入文本 + → RecordingPanel.hideAnimated() +``` + +### Fn 键交互(长按录音) + +`KeyMonitor` 通过 `CGEvent.tapCreate(.cghidEventTap)` 监听 `flagsChanged` 事件。 + +- Fn 键 mask 为 `0x00800000`,**长按 > 200ms**:触发录音(`onFnDown` → `onFnUp`) +- Control 键 mask 为 `0x00040000`,**双击(两次按下间隔 < 400ms)**:切换模式(`onControlDoubleClick`) +- Fn 短按(< 200ms):无操作(留作扩展) + +### LLM 集成 + +`LLMRefiner` 通过 HTTP 调用 DeepSeek Chat Completions API。两种模式: + +- **Input 模式**(`refine`):纠错优化,修正同音字/拼写/术语 +- **Assist 模式**(`chat`):AI 对话,结果注入光标 + +配置通过 `Config.shared.inputLLM` / `Config.shared.assistLLM` 独立管理。 + +## 代码约定 + +| 约定 | 说明 | +|------|------| +| `final class` | 所有业务类默认使用,除非设计上需要继承 | +| `weak self` | 闭包/异步回调中必须使用,防止循环引用 | +| `@MainActor` | 所有 UI 操作在主线程,异步任务用 `Task { @MainActor in }` | +| `// MARK: -` | 按功能分区,保持 `AppDelegate` 等大文件可读性 | +| Print 日志 | 使用 `print("[模块名] 内容")` 格式,如 `[KeyMonitor]`、`[App]` | +| 权限处理 | 所有权限失败必须给用户明确提示(NSAlert)并引导至系统设置 | +| 异步 | 语音识别和 LLM 调用使用 Swift Concurrency(`async/await`) | + +## 关键依赖 + +所有依赖通过系统框架链接,无第三方包: + +``` +Speech → 语音识别 +AVFAudio → 音频采集与电平 +Carbon → 全局热键(已逐步迁移至 CoreGraphics) +CoreGraphics → CGEvent API(热键监听、文本注入) +AppKit → UI 组件 +Foundation → 基础类型与网络 +``` + +Entitlements 文件 `Sources/Resources/VoiceInput.entitlements` 包含: +- `com.apple.security.device.audio-input` — 麦克风 +- `com.apple.security.cs.disable-library-validation` — 允许加载系统插件 + +## 注意事项 + +1. **ARC 陷阱**:`NSApplication.delegate` 是 weak 引用,`main.swift` 中的 `AppDelegate` 会被 ARC 释放。解决方案:`AppDelegate` 内部使用 `static retainedInstance` 自持 + `main.swift` 使用 `withExtendedLifetime` 双重保险。 + +2. **HID Event Tap 回退**:`KeyMonitor` 优先创建 `.cghidEventTap`,失败时回退到 `.cgSessionEventTap`。前者需要输入监控权限,后者权限要求较低但可能丢失部分事件。 + +3. **语音识别间歇性报错**:`SFSpeechRecognizer` 在环境安静时可能报 `kAFAssistantErrorDomain 1110`(无语音输入),`AppDelegate` 中已忽略此错误。 + +4. **输入法切换**:注入文本前 `TextInjector` 会通过 `InputSourceManager` 检测并切换到合适的 CJK 输入法,确保粘贴中文时不出现乱码。 + +5. **DMG 构建**:`make dmg` 依赖 `make sign` → `make release`,需要 `hdiutil`(系统自带)。 diff --git a/Sources/App/AppDelegate.swift b/Sources/App/AppDelegate.swift index dd4bb5d..712df05 100644 --- a/Sources/App/AppDelegate.swift +++ b/Sources/App/AppDelegate.swift @@ -2,7 +2,7 @@ import Cocoa import AVFoundation import Speech -/// 应用主控制器,协调 Fn 键(语音输入)和 Control 键(AI 助手)两种模式 +/// 应用主控制器,协调 Fn 键(长按录音)和 Control 键(双击切换模式) final class AppDelegate: NSObject, NSApplicationDelegate { /// 防止 ARC 优化释放(NSApplication.delegate 是 weak) @@ -144,14 +144,15 @@ final class AppDelegate: NSObject, NSApplicationDelegate { return } - // Fn 键:根据当前模式执行不同功能 + // Fn 键:长按录音 keyMonitor.onFnDown = { [weak self] in self?.startRecording() } keyMonitor.onFnUp = { [weak self] in self?.stopRecording() } - keyMonitor.onFnDoubleClick = { [weak self] in + // Control 键:双击切换模式 + keyMonitor.onControlDoubleClick = { [weak self] in self?.toggleModeViaDoubleClick() } } @@ -162,7 +163,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate { let newMode: TriggerMode = Config.shared.triggerMode == .input ? .assist : .input Config.shared.triggerMode = newMode menuBarController.refreshModeMenu() - print("[App] Double-click: mode switched to \(newMode)") + print("[App] Control double-click: mode switched to \(newMode)") } // MARK: - Recording diff --git a/Sources/Core/KeyMonitor.swift b/Sources/Core/KeyMonitor.swift index 9d41f08..066818a 100644 --- a/Sources/Core/KeyMonitor.swift +++ b/Sources/Core/KeyMonitor.swift @@ -1,11 +1,13 @@ import Cocoa import CoreGraphics -/// 全局热键监听器:只监听 Fn 键(支持双击切换模式) +/// 全局热键监听器:监听 Fn 键(长按录音)和 Control 键(双击切换模式) final class KeyMonitor { // Fn 键标志 private static let fnMask: UInt64 = 0x00800000 + // Control 键标志 + private static let controlMask: UInt64 = 0x00040000 // 双击检测 private static let doubleClickWindow: TimeInterval = 0.40 // 两次点击的最大间隔 @@ -13,16 +15,22 @@ final class KeyMonitor { private var eventTap: CFMachPort? private var runLoopSource: CFRunLoopSource? - private var isFnPressed = false - // 时间戳追踪 - private var lastFnUpTime: TimeInterval = 0 + // Fn 键状态 + private var isFnPressed = false private var fnDownTime: TimeInterval = 0 private var longPressTimer: Timer? + // Control 键双击检测 + private var isControlPressed = false + private var lastControlUpTime: TimeInterval = 0 + + // Fn 回调 var onFnDown: (() -> Void)? var onFnUp: (() -> Void)? - var onFnDoubleClick: (() -> Void)? // 双击 Fn 切换模式 + + // Control 回调 + var onControlDoubleClick: (() -> Void)? // 双击 Control 切换模式 func start() -> Bool { guard eventTap == nil else { return true } @@ -93,26 +101,15 @@ final class KeyMonitor { let flags = event.flags.rawValue let fnActive = (flags & Self.fnMask) != 0 + let controlActive = (flags & Self.controlMask) != 0 + // MARK: - Fn 键:长按录音 if fnActive && !isFnPressed { isFnPressed = true fnDownTime = ProcessInfo.processInfo.systemUptime - // 检测双击:上次松开距现在 < 400ms 且之前有单击 - let elapsed = fnDownTime - lastFnUpTime - if elapsed > 0 && elapsed < Self.doubleClickWindow { - // 双击!切换模式,取消长按 timer - longPressTimer?.invalidate() - longPressTimer = nil - print("[KeyMonitor] ⚡️ Fn DOUBLE-CLICK → switch mode") - DispatchQueue.main.async { [weak self] in - self?.onFnDoubleClick?() - } - return nil - } - // 延迟 200ms 判定是否为长按 - print("[KeyMonitor] ⚡️ Fn DOWN (waiting for long-press/double-click)") + print("[KeyMonitor] ⚡️ Fn DOWN (waiting for long-press)") longPressTimer?.invalidate() longPressTimer = Timer.scheduledTimer(withTimeInterval: Self.longPressThreshold, repeats: false) { [weak self] _ in guard let self = self, self.isFnPressed else { return } @@ -126,18 +123,16 @@ final class KeyMonitor { } if !fnActive && isFnPressed { isFnPressed = false - lastFnUpTime = ProcessInfo.processInfo.systemUptime + let fnUpTime = ProcessInfo.processInfo.systemUptime - // 取消长按 timer(说明是短按/单击) + // 取消长按 timer(说明是短按,不触发录音) longPressTimer?.invalidate() longPressTimer = nil - print("[KeyMonitor] ⚡️ Fn UP (was pressed for \(String(format: "%.0f", (lastFnUpTime - fnDownTime) * 1000))ms)") + print("[KeyMonitor] ⚡️ Fn UP (was pressed for \(String(format: "%.0f", (fnUpTime - fnDownTime) * 1000))ms)") // 如果长按 timer 已被触发(已开始录音),正常触发 onFnUp - // 否则这是短按(单击或双击的第一下),不触发录音 - if lastFnUpTime - fnDownTime >= Self.longPressThreshold { - // 长按结束,正常触发 onFnUp + if fnUpTime - fnDownTime >= Self.longPressThreshold { DispatchQueue.main.async { [weak self] in self?.onFnUp?() } @@ -145,6 +140,27 @@ final class KeyMonitor { return nil } + // MARK: - Control 键:双击切换模式 + if controlActive && !isControlPressed { + isControlPressed = true + let controlDownTime = ProcessInfo.processInfo.systemUptime + + // 检测双击:上次松开距现在 < 400ms + let elapsed = controlDownTime - lastControlUpTime + if elapsed > 0 && elapsed < Self.doubleClickWindow { + print("[KeyMonitor] ⚡️ Control DOUBLE-CLICK → switch mode") + DispatchQueue.main.async { [weak self] in + self?.onControlDoubleClick?() + } + } + return nil + } + if !controlActive && isControlPressed { + isControlPressed = false + lastControlUpTime = ProcessInfo.processInfo.systemUptime + return nil + } + return Unmanaged.passUnretained(event) } } diff --git a/Sources/Core/LLMRefiner.swift b/Sources/Core/LLMRefiner.swift index 45201b8..29401be 100644 --- a/Sources/Core/LLMRefiner.swift +++ b/Sources/Core/LLMRefiner.swift @@ -15,7 +15,7 @@ final class LLMRefiner { let wasChanged: Bool } - // MARK: - Fn 键模式:语音输入纠错 + // MARK: - Input 模式:语音输入纠错(Fn 长按触发) func refine(text: String, config: LLMConfig) async throws -> RefinementResult { let systemPrompt = """ @@ -45,13 +45,16 @@ final class LLMRefiner { let systemPrompt = """ 你是一个 AI 助手,用户通过语音输入与你交流。用户的输入来自语音识别,可能存在同音字或转录错误,请结合上下文理解。 - 你的任务: + 任务: 1. 回答用户的问题、提供信息或执行对话 - 2. 保持回答简洁自然,适合口语化场景 - 3. 如果用户输入模糊,尝试猜测意图并给出最可能的回答 - 4. 使用用户正在使用的语言,或用户明确要求的语言进行回复 - 5. 不要包含任何解释性文字、前缀、后缀或 Markdown 标记 - 6. 你的输出将直接进入用户的输入框,所以只返回最终回答内容 + 2. 当用户询问「xx 的英文是什么」「xx 的日文是什么」等翻译请求时,直接输出对应的翻译结果,不要添加任何前缀或解释 + + 要求: + 1. 保持回答简洁自然,适合口语化场景 + 2. 用户输入模糊时,尝试猜测意图并给出最可能的回答 + 3. 使用用户正在使用的语言,或用户明确要求的语言进行回复 + 4. 不要包含任何解释性文字、前缀、后缀或 Markdown 标记 + 5. 【最重要】你的输出将直接进入用户的输入框,只返回最终回答内容 """ return try await callLLM( diff --git a/Sources/UI/RecordingPanel.swift b/Sources/UI/RecordingPanel.swift index 75c303b..6ff6ccc 100644 --- a/Sources/UI/RecordingPanel.swift +++ b/Sources/UI/RecordingPanel.swift @@ -111,16 +111,19 @@ final class RecordingPanel: NSPanel { textWidthConstraint?.isActive = true } - /// 更新转录文本 + /// 更新转录文本(面板宽度自适应文本内容) func updateText(_ text: String) { textLabel.stringValue = text - // 计算所需宽度 + // 计算文本所需宽度 let maxTextWidth = maxPanelWidth - waveformSize.width - 40 // 40 = spacing + insets let attributes: [NSAttributedString.Key: Any] = [.font: textLabel.font!] let textSize = (text as NSString).size(withAttributes: attributes) - let requiredTextWidth = min(max(textSize.width + 10, 160), maxTextWidth) - let targetPanelWidth = requiredTextWidth + waveformSize.width + 44 + let requiredTextWidth = min(textSize.width + 10, maxTextWidth) + + // 面板总宽度 = 文本宽度 + 波形图标 + 边距,但不低于最小宽度 + let contentPadding: CGFloat = 44 // left(16) + spacing(12) + right(16) + let targetPanelWidth = max(requiredTextWidth + waveformSize.width + contentPadding, minPanelWidth) // 动画更新宽度 NSAnimationContext.runAnimationGroup { ctx in @@ -199,62 +202,20 @@ final class RecordingPanel: NSPanel { self.orderOut(nil) self.contentView?.layer?.removeAnimation(forKey: "hideScale") self.textLabel.stringValue = "" - self.textWidthConstraint?.animator().constant = 160 + self.textWidthConstraint?.animator().constant = 0 completion?() }) } - /// 显示 Refining 状态(弹窗自适应缩窄) + /// 显示 Refining 状态(面板宽度自适应) func showRefining() { - textLabel.stringValue = "Refining..." - let refiningTextWidth: CGFloat = 120 - let targetWidth: CGFloat = refiningTextWidth + waveformSize.width + 44 - - NSAnimationContext.runAnimationGroup { ctx in - ctx.duration = 0.2 - ctx.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) - ctx.allowsImplicitAnimation = true - - textWidthConstraint?.animator().constant = refiningTextWidth - - let frame = currentScreenFrame() - let y = bottomY(for: frame) - let newFrame = NSRect( - x: (frame.width - targetWidth) / 2, - y: y, - width: targetWidth, - height: panelHeight - ) - animator().setFrame(newFrame, display: true) - } - + updateText("Refining...") waveformView.updateLevel(0.3) } - /// 显示 AI 助手思考状态 + /// 显示 AI 助手思考状态(面板宽度自适应) func showThinking() { - textLabel.stringValue = "Thinking..." - let thinkingTextWidth: CGFloat = 120 - let targetWidth: CGFloat = thinkingTextWidth + waveformSize.width + 44 - - NSAnimationContext.runAnimationGroup { ctx in - ctx.duration = 0.2 - ctx.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) - ctx.allowsImplicitAnimation = true - - textWidthConstraint?.animator().constant = thinkingTextWidth - - let frame = currentScreenFrame() - let y = bottomY(for: frame) - let newFrame = NSRect( - x: (frame.width - targetWidth) / 2, - y: y, - width: targetWidth, - height: panelHeight - ) - animator().setFrame(newFrame, display: true) - } - + updateText("Thinking...") waveformView.updateLevel(0.2) } diff --git a/VoiceInput-20260425.dmg b/VoiceInput-20260425.dmg index 542844ba4be1425a2ffb32250afa8af6e3dee94f..9001184ce37c98567623177d2f8c0edd1f133feb 100644 GIT binary patch delta 651105 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[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%0DWNe>23!0L;C=mRK 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%0Dmj2LF}jj$e8sNs8q3 zpArf1I@+wDvE-x|zTLRupBa)`k=0vKn)*DSf3u9)FgoK9@WqYxMd7FbocV7MQJ=h4 z@K^aHF5O8@LbSV`YS8{v`Kw~pPV%+3vIW=yMTzXbA=>%a>CgAfiO$q6lZq>UaO0gS zM?#sw`bVGb@CVS3Lgf?^NsPV*Xnp*dQ1t4g-QfOc>Ps!}Z1IDRzDYDRSv4B#SBvZX zf7A)5U_eP(aj3$lT9;5IctN~O9H>-oX~l;LDHsTn;n!N3=0Wf8`9v8gb}_d^8r_QY zCl$gA@n)sa8_TdAm!?{f+CvzTvv`bR5c%rhSfFOXQgV~x%MpW`BVcAJ`vW-fTGB67 z*Gs~4PMG%Iz7yPihn`k5{l#L;@7kgxf7UFDaopzK_XOe~epcs+mSs2M2?N+Suvovx z9h`u7&scnMTYk`Ao&JixajTiK?vX*f8mTJzXAr#1pW^Rdrt-S`#U+W2DE7B_ZRnPM z3$?!2i`E%Np4G~qm5VpHMq8U^KE zEfMcpr{29B5KZdOb+1o@G~qrtT%RAL+BcxgzQ&6W7F}lcN_aNrPwMPYkRR(1ArI?@ z&r3t9h`!8HNR##@_rFDJK5h+*e;YB=)bYdu<*^@OWI>e?Pn$s_36mMNZ;hIzX>2eQ zQ(v|MU!#u1P{8ZbGnqy~ACT8e!nATj*R)gh4PcehNw~a2US+mX%ATI((|CU%>vWFt z*UHehPH92@FeZ6O^UchRhI2myv>Ly^ZsNkL%`&pEgdp?Oz|#+E@jJXDe>f%GjMjor z7`J=H-~S z)k}=F8R`)hgY2K#PY?SAv*~*RtF)zDfcdWmi|sxPlGtL_nmU`{kvD0B!Cz^ ztgZ2Kh07l=TYd_G89NiG#tUe5I6nL!oZphhyO8tT$F^j)j2Hc!4UwBhtL2RuMK@Rv zST&@>+ayuWGxnxN>%CWRed6_f1do+sM=a(&chS};@y%u zk(k~^d&mEG&7XWQVO)Z=&r<{yRzi*d3mWQ1RebRl9if9x`g*OciAmlJiuf`0DW9@n z!tn9EPd7@n${ZP1v_HC2L;y1oUAFS%aSj~SAw((VDUbp0p(d|nju})U7Q9a0>HPCp zUR=!Z=VeIDe}KaIGFj~L%yF5zzASdn)I2>tnoYdg*|+-FGg47?t7pnEF4}AJGdlLY zy5;ikV$tu0ZNA9?SpTNPT-U8ee4f0K@ZTI|5$`3%m1Tx)W#X0U@M9ve9fPCZrt=T# z(8*xh>ord=UFW?mbn{!4NPJP7mSUTBxCR#8ojJOBfAeK7kEDM*&`zu|eLIE78kzQ25T}&P>SBE3}&aIFNexuzvBB zx;0yJE+@39?bZFBRDn00w(5JUeTr-G_ym&bkFx}AorKso!~j0#JSiLfCNvm-!^yiG%GyKXZ zkMT2saAre4f>)Fy@R$d!^&r=5si)R0I@A8Ia9_Fy(Tx5!#=wI2&oF%?pC?hFU+^_o ziDNjkmF%n+nXuHWIlhx}fIZ0F*+xOV5 z_0lOeU>)lI#zIAPRhpe!K!+#d7~Oa?O>vkcR7k1*nYPaJk#J1_+5K4dP4zYaF`K7+ z9Bz^r5Ej-lp5kM)mBJEtFz8(MXFdxRUY{%sbIG|1^ez!1EombA&el1|`sMUd!SFhr zf8XLFnvXkJZx>yKX1VomY_J%%k9Q5nZA*wfAqBjHt3h3-ulriLUAp`N`2BBhB#5|& zG#Kv=^;E^UAQz0IJnmcNOoq^atP0)UP`qW9+y1w~4)lf`nj77hsB6^cEVK`A5_qtj z@!0M+v7X3|B#1Iy5P$nX@2?S^N05pVe|*PvAw-vW-Uk!eUl#JxzA273V7S|Ubr{k< zx`FzdB~w|TA*tVUxbvg?T^nGvwSl}@*4CNvjuwwKm&OnBwpI`LlwtdW%0z*VJ8Nh0 zD4O7D*<3`*N1%U_RHN?coBv!V#OKf{sRfzZF{D=faK~UdeIhT!F=%n(HZHCjf7(2t zgzzQg#{L4(sR|<5(f>={7Y4Jdvbqr8L0beZgbWHFt8Qf*aMDiltvL#(`!J3AF5}p} zH>SNlP2$UP8@r}28RknJN|e|wV%ZTm>$_&L@Py-EOOPjgkH_A-%L?$b7Rx?k_iZhb zC)0qU(RplsXe1$hVfX)NI`4P3f8PI(S5ZY#)Tkg;vsJr|om927HPTIMk9TQpVkc6Y zS|x4KAVy1Dtr)e5O;dY|6??A`Bt-J{`QiHyoa>zHy3cj)^SYnU$7ALs&oJf!KTLLz z&N^WRi&%7gk~5PdM5o)?owCYWz=4xoT;97$m8JsX7Opq__&;d>x;-#8f1$aLU0CUO zddBEWM~@(jpxe*rRfMQz!PQV#c^2tH$H6F`hGWXR1#|o4ikOVVD!xQr56J)+j_Z73-f2w*LW5-B$Ai|#|TDA=2X$Z})mnEv?Ut#5rPqt0|$;h-t z*9PMLtjjz`OCvYbXnw)HcQ^J)WxY3vhP)N47m-TUWq{=j1X$eP?Drm9ONc)uevJC^ zpAOZ&)t`+v-e9$0vjtE2G#s*Nbj6_ zcuV^SfC%pPxnl?-xHV86rV!;pBq2YUVNnOM9TacKw&Z2&UR~NKh8y^@ReXXfUseow2M#Cxd@i|@eG1u}%rBae>}+`jJ%xva?qyNVcMTkjcD z!vzab_OBsZruMrJp5iWR@`h0FO`6~MFR%UxE1=-LaN+1Hf6pd-#A`Wq`|}>y+9@37 zT>%cxpciqOP@PpSPon{pAkOouhh>($IE6p8TjUME^LrR(2#E7S6<1;}bNIJt0%$rX zB6W2p`~sx4xQbLw6zIe!6jfQ;5j5y4UT@t{>N?i#!TkbSo zt#D?4gkAioYt>{ZA?LFDLjo;ctqytTcS!n`rjaF~jcIL+jWhe}ajCm()6_xYoJ*i{ z9V`FEmuKd=N@hK+WXb+k`W3>{u1uS>xS5r`^2EctS=AQqK=&OyF(xF@%qLS;uY%V~ zn`fRWe>y6OZCQXB78xZ7jc9AFRI$~I*_waZ?Oo21xhoJ*@z?=J@H$d|U0t-Kn;XYA_B0*}y|IUK>+pFZPai zqwP`j&upZa7g}kiDLycLyRHq(%$=ke#K$L=QDeRRS==j1>A?^5l>7>kvO%LflZJ{v zf2k#@z+jA9g9_R|EL_xs^1VF4T7pe!-pAwMB-ZAIMHn z|81XW&s}JOCMd-iI?x~0j`qh8VV`XWJMwBX%zJiW3#WhjZ?14MbVB0JwMNgm)Rt(% zaOgdbA(>E)XrSRJU+(QWntI8fztdrPe~zd;Bfqf6yT^M-qT!iy7RM=FesskqS3_lc zzP+&@+I0Yg4jAP;9TEe@mp{ z8THF4)eOj_mGZr+vy@e1wv*}VG5oDSxX}ppo`!46{r(`C;3{e5q(*{r?hk=*nSpl|V;mxxD9Klu@&l?% zd{=8I)b*`j_X>QD6*p7^ciH(Df5^g9#yBw&UO)-y#$?iCaxv3YCA*j=qjZlD3`^!_ zB(NnFbSh|s6&Qh8={x;tcR<9Idpor*CTbn>wOOZ0P&m0j5Pel9$c+{SIeu=o@gS0X zAQQ|=541{~n-V_SUB9+-aw-yB`BRa{i=7>FBD*kdi4%KN(@gxz2bX1jf1QU+SSBOk z$&$`OgnV|jj2@B>pnwNlGUdWAp+i^zQCzF6CZRS2jA>xZou>8ooqPIcZ>$;Yj9UWY z;_#!w6^8>es~6zff)?ex9{1Mf|#aTT;0G`6jO>^pL0)@WT+<>^*ikzXUcDany zGO+ciNC>P#)3CA#dogn8vL<%K-X$k`V<<%ho^z_CF%{#Ko?>AujvRk=<*W-WMI$4}wL0MRGMmku)=j+A(&FdEPR<5fh#TC7T9XEVM1p^}#=Z zW%b?CXE_E*=I&Jc2X)y{Y@P+A?x^i}#kX7BgI=AhDM~s>LI$j5;}$RK?EhnHm30w; z7#Ijy)1N-oAvjvzf9Sb(a|F|6-w$YMA1f~K`nQtSm%__Pw#<%dV9dTD#_FO z!!kM5wTUX%9n8Y$<}AF`i1gV7-7envWFoqdSIhX#4|IEFf1S2gFjOLI`a)gW?5rpf zp37|0{s=ECLjCVe=oPE+B?)>Jz(oezxA5%BXJm8 z4?87bOi3I{MP=Ok^}(&1=2hQnQahXS^a~d98wi|_qLb$E3P;!GsVy5oYX)~ZR@mou zK`zz4=1Wnyo`rbRXsnTqI*)WY@eA*+VVx^VRXGAb|8o^oOYvYrtC!%`Bj1&87EKyR-rRO*@x*Bp5~$)vP@5kwGV*I z#;@#)8~KETjj?GHnW^Io+@V+BY$u;Mr+F$he=4TmxAvUOea;cXJpzCb?%W^<`?P(w z_OIbsS-1dadhZds7AXUlza&lPo+pvEK4KsJP*9clj;xtWR8MX$5HpoU0kf=S`b={B zy$;{*BJLSqAt^8cT<&O38Ar7@7k&?W6MOIM!w`SIx7SOiB-b2$mYEk3H?F?&Xo4VG zf1U!w`n78t*k|73*GEIxm5kw6b!sS^kN_6Mqyu`7V?Gn0u$(coU74g^4r<4n zie>WEigthro6A|*Q#qUl1)%;6KDSTeZh9ZtK6Zc1DvnxF#bKyAKvL4pWC7CSBh^fl zwrWKYkrAR%Lc8X_Snf_94^mB?+z%45<9$wd+P?dc))eRQ@1vnM3oR{2A}PdDp_6W< zb;*gg2b;Ui&i}&w+2nfiv281|f6$0TEUdCkXM)d{O%s`srC>i2miS1?V37r+Wlj$O z&GOH*A3j-?9UVVA-vVoE&jc`Pw{Bm%U$$_*H)A$f6V)4NvZO^Y%*yrwt+*XzCE!5C zgK85bX{DHT4D{-x^yKc9fWXtp<}?g-f3_ufBzAb2=&Q)RD|T|6u-$O7iL3hT(S^MO_SgmM7PCRF z9LMR>hWbh}hQ{8p?LioOL@I$Qj85RQ#GEKARpd{|N!YpmiyE-2>4AR*{R85cHyPi z2qmxmJOVa2=f#0*g4d*QJD{w!&y`)P?Y$|_j2rEEiP;&>Gv+@ep!uYX z1Sgl1_~C8PI+&q{1P^F%?kLPO`c3slb*0Y#7m%wdMmiktc@29MO#g59PJ2^BlW@a5 z@8w=@=CqawA@Km0e}xuQIV2UbV57PCK?FiO@#=w?g&Tvf_vG8Hhfg3538d zu#Vzyeb$oN;ezmfesh-92uOP!7#JVfU|yvobYCZ@1@pS{e`BrIEx3BGV(+Hjhih3l zFj7owr+?NWz`&(y1-NOQSoj~QQ)t)i;7kk8?((u)q1eAbm|lmcdXT9Bpg=&&wh}6| zJLP1f9u;33RAdJP!c@d!kI#NN$Y6Lrjvp4m`)y_8%ojUVS zI;=_72?UTr~}vtbVWKNA=o$2 zT_VOHZG8I!IRIb^KWOe#i|h^uvMxA-O!+>^DM;P8Qqbt>YIy4#-JkK|zqTz(n)y5Gdxtr4-vXj=-r^qSY#_v7lUK?xt{t3%HJ1hvg*u z+X?RcQ-2R{X`bNuD;RhtE7Bl?iIzUppth#zJ;mIRoy+!aIsW4j=Q$;dwEF zsi|$PcQc~U#@vB%nZROn=vr>ZH4u%XAtU^QepRAQyE5oG@}9 zuMP6}D~%P?nG4yuI;}+He(KOf88#Hus1=^3ez;nta_eM)(#>ss(3 z@Q53Eq1MY~zPlb}3U%*mS2cClY>Ku;M|)CTTm^5~FD&o*ROH5e)vBZ7H6);=0smO+ zkAJ=~12os6cZ1BEY7g?_*yw7I--rqe&ykNFiN(JNVU4t@!Tk%)=2LB_;I_)9?>my}!GJg1(fN1kj%ycVZkf z`^$bfb_liz#V1LXN@S^fh-Q{uuJ1AoZ)t~}zjsnjx>dKW=*NSz9DD~^9IpTfydP@=+mw2jI6~GSV=;kXJ0KE`aY;cYs%nQm-W5jAI$G4 z)tX&Kcf#DY(-6-wT(a^%DF|+>NsuusF8mXFz)Wd4MABD2P5;4G)KtEiEjU|1bvA{R zSBK_jDokqZvUK4?pug@)vrsd2E+*{R>4-9sPfNnjI>eV34ZQmT7Ob4V?!k_5O(5@-g7i_XS>o;>riS4k@;!X@4<{>W(L;k$V12 z>9KJ}0efU93t~a(J1S??&0e(n0lL^oYBhdqrKK{;s1bc7vgK=d&&oYub9Jy}&choO z_mp^j-BM07OWUS3jzJHE;PpoxH7lt+=$ zJz;AOb>)HDfG9g(}wn^Z-1Y1v}v$i`7W;S?0@sNyDe5NI7KtU>Ny0N-Jl-RDYuhhsyDAxvlldk!_Lu=;1y5d!2CH{Jpd&+2Fjg|WyZGdU}k@moz zOm!^kd)d@Nv(Mjt3)(OR{vQsP;a`(?e&bh!lh(=?v7KA3H!mTN-ZzlMx=cjgux`Sv zV%m>-7=QcN_DUCF9q?DlwRh3*GdlRYC9Z${(pKe_GAM`m$Ce``!8>oMLv1m!6onK; zo3w>J$(ta&80>V+lh?T_K?Ct72jVz8@To|dyK;hY8+TI8gZ(}b14mYh#H|nRLkOO4 z3#SaO;TY3Sw*4dmLgmWx2VcJ3?%jYCkl&1A-$BX_LF3EBrFi<{WOz|L65v`E2-PPZ8GfPsn}+hwHx(KB1Z{x(KcF+z1x( zvA%}Et%a-?pL+A>Zyy}*=qV7JP#Xa;&VRIl?macj(c<<-jUZ`m))dC8LI2(M+U>%o z7SP69>Qik;n6vm17DN){AH0T5o(=4f})pr7@EhSGOmP0n&(==s` zKbJhipLbvhcMW%&PSrdwd^7Xqu797jjMtH%>?9Yr+kSi#VOqG<85g=%Nqs3DQh)K1 z-{bE}rI)67#haTKE=Hc20tV?Y_&Pd`+Fr{gE^{M|?O^-lwxRpQB`Prib9YZ5Zv!|3 z>Vi2^Xt%gtlg?JA+<@&zk8qR2G8fH_LD3by0>b`0EwLd=0)ya86?IU-W_y{h* zO1=GdA%{8m9~Wn3H&?44VO$Hh%YQhRDPuK_D%$_#k7zdNJ2Ry&e|C zf4eL@%$C0?!?$EGx$NONoH5t0+p|OH8(L@a{hJ0H8w#F2-YBW2Iqnu2T^orrvRh*hVLEWk8M*-PR@;KdDsu_gXKZr z#60Hp2LKS>AKxtol58IF%0HHwNHN^Zb1N9h93Pa$t#mhfgoQU4@~@#OVVc$%=`(%N zrGj|1FGtqWy4H8Hwn`IX6MsuXAKej4G-w_Z#`+E$f|Ej5`{$6cf{*sk@e;#4m{(w# zVj@@6b7s}nzgUNVYiX!K-RTn9>a^{VS;#9e*?2p7x^(60m}0p|e;!@pM;&n! z$A!qZx%Escx<_;O`x{KYkM}^`%`&p=W`6HEQ~qp3c)eYQAx7_tp7g(J1 zY@hzrq&hm<%yi6BWq%&sZ0gO=9L!5gExg_0U(t}s_?eHan255Yxk_BTnME>ueWL#O zo%EEYCX!igB2iF`q~y)Yc2lGiqcwa^5ZcM4-)h6AE4H0@e`BDdEP z7QB@6S-)xM28aaKk`2!&H$k1DMAg;kbmf%zis^6EJrk)Dy??LSDL>r#X(23{;gKS= zAqe0nlPqy|g%|rFfu_8)Gf}mFlJBljgRZPhH=tZ@{Kh@F)nF_W@VCQ&f(-EtxqSAk zL8Zfg0L1g{2Y*EN?OasuHUz-Ei@LJPK99CV%a7VWA{5fiaf{uCMs|C+H9h$l=-pVtiU8>% zhtOSc*+=`&F734swmAua75zX4lXG8m1Y>O76g!Ac>hK2H>+Z~9iuCUMmFy1sb)eu2@M7-Z5PhEvr4eU9_r4l||+Q1k3DLu?ZVx zdK!Nup0GfdZ9lWke($v}sL_3M*MFhKLe~414iZRIIZ{!ggBqw=GR(%ZyN!D;xH}?% za9M!7o!iU`Z~4wqCD*ZPbMeE%rrg02}VgfWSH* z+lpYFIyh5-tXmgP0?)C%yUsU=R(h#lN>6;5gku9{@$k)zDt^0##DHx}&z`et3Np>I zSXu~kOA7b3zoN9UTm<-ARb*_P%pw)Z<$su|MB%*HR2^E&I@N+m`p5B}v)JVQ?Aj|i z_hvEOKfDvIUk%u8QAsJW?T^omuBUvik#XQk{I??L7%+CmL+Fopto#s(4HH^HZ@Agy z77n^xs8-Wh);pP_E~4_WZgl$1?rDcdQaw3P2Nc7;Rb$e=bJ`O7xkbg$I z>D-+cv_Ir!4gU!qvTc&KGY!-7(Bn5f$_Hvx%!4yq@a`UGP*O@>VH3Hx>b6RcHCRQ+ z#ZoVh7ZRhsmNUtolk)Tnd@z!1t#obLvB~f%`M+R(fuwt7oMUffC?C%8i)*x;%DwT) zX{cq8sQXpj`T{2Rim6FYSNpF$XMa%fFlD04#R_)&i+505&hR+a-NW|_8%v7c*x$Jz zv;iJDM**+%0-#GRHpBq7>m_Cc8_MkZZi|dD*P|2bw5TQ1zf~zfkh0=+!hr z^*qPCSJpq7oBL%h2lgCim(8O_+wqQ5BpAvq3Q7iR2GG)4tF?7Mm4Q zKFROw6hN_Ys|#An(;16(rOM`K-kkxMR%Bu?s9m1(qI1|n!IsZG;JR)n}0g>S+0FMnZ3l; zV8TuHL6jq-6dhrNo(z`X_}2$W8yT_olqfrIw1A zS2nB1irRaX-;uAE%LJx<&u_uGHt0^!$i{}(ZAMn7osJnP<<-meV6n-&6QZWiPj&)A zKJ~U1RBDkwW4@$T=iJfJ+P~U8aVAf{n4^KeW4?ABpMS-*V!se}%e1$_Wwf`0tzYM5 z;n!NGy~uz#_ltX6h|w{-il0cdV#7k&#b-h{M4B3Wo0igd%>xW7aV^yTHiBnKWX&|7 z!G4irt)m6BwwoZq8KP;03~E=qrcE#}pwAuttz z{WW&hAb(7)vx_V+jb*)GJhMj?@YmDH z-A-hDGHT?kOW_FMEfpK=VM%0hl(6fYgbE@8nmBCz8B%F2*K9dN%`cvu{Yx^5xZb5{m{4$Q=ex)60Pkcus|=W!Lw_Iq_K2*1Hv*v>H7C6w{PcN{km!DU z{H~T&D63&2;GJUNT+5Y0_m#PnjnqF6MU395R~J;S`q7BiRgM4BPe35XRr)Tb(JR_@|TmhhjJycl>smM3hZjcIiJ^ADrY`p?~rk8>W18T^v`@&9Zl&sx<%vD)z4Jb z{T4?8r59OE(9*NhI<9`I& z$iNv}M!i!+bxc{?G=Kk#uw96nxO8!pEpZ8c>ks;Fx1bZ!Z6d%PvO5}EM0#(iv5hVy z9J269cJfnmgv5UY7sn_g&f_6lS%Vw`diwut@)-JCY6N8KX%>D;ujxsgD280fkpMRXGs+;H+ zhL||EGqyD$4pV+l_Bj|k-{j*KR>4^?QkpLPUae(`*RAo+bhm+l%^xokaiUj7SKv18 zYd5pPTT&CCLB5rrZ|}V--H{AbYa+Oo2%bJ<>MQP}*jmJun+qBErZqyR=VTCxmCy!cWon4j&#o zj>axFRN1T7^%HiVEq5j##lOitH5+K?4q_@6w-e!;RgNQ_0(;*)0s3S6=2cZ+5Q%wi zAt43P9s_3l(}dPHu+>D99cB7nQaJk+`hwQzv`0@gHzpg(b);#smVdxy^mZfLz+%x5 z{DV09+q~Y(NV|#(d-&Q2_%xh22>8eIGEe_?NmLSkatgLdQ&l+WJ2`sZ(Oz}N$PYQ_ zP`VdR#cFUZdDmc|3GD^QD!lWr>8cdh&bu@r zK;zUyF@L#oxV1n?On0jj0re9F2Dj?Umip~YH%TwtFB4WkLG&uFL_ghFZ1w#~LbUT) zkEzG%+&hyE+TGkhO7(<5VK#9*6V|l$_^(hV7RQB4q4}UJfWlv0?L<-8hGrIp* z5N%FBS-&--O0c6$KVfiKgTp!g6Qr~gT-0if>00<~Gv`XN92Be97;Ro!$ow4^zO{qx zJRO94E_8ify{RDW18pw)H{Uvql1f5l~)h!kwa zPu_mLj5S?%F&`Jx+r4>>;K;&=cTsES4@g zYSEm~3cAIlF}~31k3(J9D@dBAiu)4ZF=MqW4@=%Lz||3=YJDDB`^doN)x8`{J@XyV5#8GGpTgps8hGet7VvJCbga1EfTe3@X8u)mE9 zZay~<{M9$9Ex{%{NAGZh7oFjGkbWb;>@hEAC3A?1z&u*HZGmz*Som%Fg93XuD5-T% z2`+_}1C3-(iLq#D*E{QDrpa+Pzmq^Gvnsk%secUNTg+Pty$wlF1T@v&%YVtXkL@S$ z8+dic)P5((3C1g2r2a7&~Tu|!N_+(q$(}~%CfA%|57|1Cz zL#T?f_{y6)-`^pcU`u;XV7Yy*_3^b)LMRXL1d(cjFilk#j|fyPOC39uE?7X2Qss+U zsg$p%eV)}tS(~8y>g24X_6D+~(|_aECG7+Yinye93@QmpDJ)dkkz6|Wx1EKaMS?=` zm=weLGTu|Qj>R;m*;-&nKJ82hb_T;`En*{;1C0Z%J)27S!wISgc;MA-MFbTsj=uf%e*H$5$ z^fI9A^qk3Ag*o_i?7Vv)9wQL?ie*^l{!(?J+KijJdIuXLMQ+sEo;TtwcFRad+Dgdi zNtmH+l>W?k<}IeCq<;ed3!3zNNA|l=yz~cYMRt(+y@8h&%ku*1Uv7A-pT|P1ix8@# zOXj2a@(yI+(-^7bsbTil{u#Wr)<0}VQ(uYVx8Q$=^dsu|aNJ{II<9iY5;OMsi)^ixzr%#kDxJ*YUqN9IU`d2p?yK&heB6x10znA#Zv`Br3eg=0p^J zvF<_6`l0JT-uy;nf%7N}?%EA( zzb(hj!@g%l$KmZqKbn!?4Nt`FtcbyJt09zOO={8h;qS+5s@p27lhB_ zv6FXKd$>M?{uV8Y3#M5cuLOfZT^QPe#;2Igi!72IJAZp7-g9mt=?$T}z#f?9k?MbU9<^rV0{=;ru6ax3w@Qx4RO8u#|yTpyv~D?K-sc806!uj7 z7c)I}@yl-uINfCIX=jiQmp7-;qLC?ymU-8rNvl(fqiunj$}#x)FWYX(UXz*FD0EyS z#3EtLM1SjZnH|Pji7iJhDi_IVhG>Ih*Y2pL&uTT?e{ECus55}I?-(QmM#JhUD=TqN z7G1Phlu`)+`a-xCqmhX|F2|6%q#j|O>$bFKORH=Ng%|~`;T{|R_=$-N`Pbqzu`Sx# zHlw7RO~T#^G4naqD6nMBo7(vR;VR{7*GLbi(SKr1YuaTQ1S!?p_4Od%CUe_jBJ9It zfal5DQKS6Tc~bkQxVYqKb(*a@@204D4MI~`4A%^Kosl$RVr$}!$_wGBcRcrH+&q8# zSeOUlr}?A8mb#K9_H$c=HXBP6_0W|23R40zTuFRqLU<=mg4aB!4-rg>H4j|P=sn3L+L{Pe#<^qtI%eHZ#c)_?T*|le z7GZ>1x;G!VP8@4%wP&PQ_Cj{`_QcW!0ym~z6=%n6aiLkl#v_aEh3O9re0ccM{hm1N z&+Frr+1$qok7qBOuZe^HDN54m$=8^b6%}&3xf%(vQW=>P-jWO+^fOuEcKpe?dVkdE zL3>Pxvd~vv^}JJ5Ci5J&VJr4}V_{m{e&{NEOZ1A9@&YGu*IElxCs8j7qz9M>YxH}W z77RU~5AXvakI7p>Du+~^>2@HXBf9S2a&N&Pm(8yPS2WaBA8&AGVrQE?4sfH*id_X$ zKy$B8l8|r#`9FKB_Y!MQaS&2f&40-mE#;!=de_Q!*;J1y_l3_Hj0Rq%YdxFG@lowI zTbb964#O%`vK+SWE3XCYFcH!;MQy}H1!#3aXN3prCqHJFEl%HFo`{>sllbxx5uN@$ zmQ5$YFzoc$$cS0(c)NLr5wN@|p3fZnS}%j2lTUAxdoWS+SZ3p_lP@3nM}HPX$$Y(G zVAey|{dyqaW>YCiT{s`ce*L*Q4Sk(CIBe^uNI>34amCk0C8`tR&zFX} z@}Ay-`m5&VbrYD=_f<#jkAx0Gu{m$QJ1$9S2-G?L?}RJoLD>bh%tl3$2lLAbVJeM- znfA8R8^u21f2lpxVOM^lg=;Z{^||{fIpvzLcb#L8X_XoN=HU6g?!D2IQ1UN(E@UE2oFQoBQ~*~O2k8|~Yv!*kudESuZoe)B6+;qP(;W7;Td&|44yxafnw3M8A$bS~+6(Bc!w&gKV8$uw! z`718#hO9p6dSZ;z`qETok)uR0U*yX?#G;0|QWA69AiMJ9k8S$2JmyU^UBKLbCxsnY z+)T(OUhpb(bhwk0@D!Bop{08?Ug2p35rP;- zn->6%YzMWVO7LHuTDixrWcc=~Xu}b9V$L?@^~A=vyZ-ZZ!2@bin|vlYWG_Kh3Gv== zw18jp!2Xa5)bj4yH4I{nR=*zN7H~JZD0(9BjBHCkFqOn9M6{fYjOKxuKY3Y2dV{ka zJYT=K&wrOd$;K?#W}0phl!F3ZDYgl3E#2H_7Yh1WQQY^D(IgM99~;^Sxeavg>KUqJ z8W{M%e;%td{1iPb7ARZ%6%!`xH@=$bBz&Ud-^}RxMTpy^E6!q+X5(sDFgyVl{-9K{B(fbkDv)#LYO9mgf+h z%5PsCI-Ln1xGx;|h)lO%Q1MAa4pLYFn$j zzi5#Cc&7r+*5SymRY&Vbg-2L0c<9~1eOFgqfv$h^3)`A^gwca81Buv1At4}c^(WnP z1Ajl1{nxFBGm)-KFjW5tqb_WC&5x+3#)8mXVAr16OGau*>+~#4^!KIlThU~gIqt~* zWNB1ZZ7Q=j+IH%Q4WZGRrGZ}4uP{Fj2=xJ+o~(8NlqQUS5#59f%7CYr2mlVV_#^&t zp2gyNQ$bt(ukRA7BRk&ZcxYh0MI;MAa4faQ$=^ zn#0rsDNvY`5(G*F3 zJyV>#rBqx@5BLDHx%$$o>T?E@ongw4?Wrb8$JvLuuXNq%o0bg#+lLXHGpNlFK7Y5n zF6!Av=Q^~jrM;8qd@mh02y}=p{bMX9@*Iv+s&Ze?|`*Tyw<6Zo6|1YJ$9rA%;Ke>i5B*u@ zC1K7?h)X|zI47&_@;p$ zhRxK<*tUn^(nkvuPvtU+Gkz6UF;(rIu4c#73);ntRC$|h53lWdR`TOCOzRLVjM#QN z0K+1~-l^(I27T~PQ>11#rGH+aohpV8Oe|$yFlwe}&<)$Xop-0DM6ll@x(q{I&7Z%i5Z-2e_5AJNZuCV)Yqv_b(xol!5?Ok0|6SZTEP<~`+siWfgNhMb4Mzu;=tg& zIro|n=kuRPKLUR&dpSH;qKax;%5}(A7(2O>roC~kNHZ+J7FEWnu#?WN;yb?$3j}&- zT2nYOs`hHi=HrT1JLe?4%q*2gi#9#Gkn7qICUXELjjPDww|8ZdcMQp1fu4ZfjaKvw zij$^w$!Z}Fu794jNZt;(Cf-ukeN;SQ{@shOaeMWOP~aMjRXya{c+7e73agsU%2B(O zm!FSmQhX4(;trrJ=@5x`UHp}UCm8U6;Y+@@*u8uVRJk8uy? zd6_qOS|{KUeNre=;RC?dUDf%q?k}T9GEegOrnwaH9Hyl&bK_$x(|5&rE_kXwEo}=- zZGZR#%}%|zniyiDB}#~(0IF7Shep{8({q3P*x$0p(}ryZZk~Bzql$9on#Q^AxJAW7 zP76tGgU+dSpQcRW9tZT3CaMGxX(cLmu0ccm=Pz8W45!n+A4qqRr?1jecDclzFDo}0 zrR{t zLp^^i@WyMuw%&?nu8vzv@ksZ)!b0Tklw+SWU9Q9Hd9NFKF565_RRy%}5?Z66Nw^V{R_NmaK6ecM>YCB=Mm{1^bcv;Pa5X(I=37>n3NAm%e1f=|;1@(YU|1ok3vJW?ZbUE?1whTJ%jj zNK!YT?hg<&iWKYxUR@#`85nYa00LYSU+wrZBChLMOGUYuh&R>@oX}Zaa2ea=Qcq=-yqB`TOQk7jB+erKi|iu)qhW|EHQ-q~U=Zpd&e^G2uB0hvM@^!uckIUSjlz~HrJJbUfe^Pe zoL6D@sN2}vN*VwtZ@HZEO8baKWbS&)D7x96`s++q_=@(2daXM^^?%LcrV}UwbM~

5&T@8tTX?VGKx5v;$TIR~oQRKuK{J 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

D~tzCYu9nx0N&?wJ3r zpJ=h<tq6zf@k@>G z`)?UXVbjpoL!2ZV*O9OBn-6HUdvqa`Qft9U1NMH4UO?TC#k&`tr9o?Q?cFUS<{<|U z8ZUp&k?%W9U(+u?3KMkrB_@DdJDnzJ=*xPZ4eYZBYCpad(lU^?xhAdW*;Ry^8p&pN z1`LvBDGw1#S^wV!u)VP15|YmVNe2wL3kp%=l}SgzPO6!977aKKcZ&*ApbH zLpa89_fr*(!f7`ot~pHwL9Krn7LDgJ<#NK{n1l7D zSDH-|&S|`yQspoaNDz-(_M>0wY`xW$?JIs#r=z(+k4S^P$w@(cbCjs1;6K;d?q@y= z>_#{1x51u)Yx<%fBEP;}z<1T_+_zX?PqLS$lWk87U6N=iZ+|7&X6P1>Nb4JL;dOtT z{7?B}eR`=+9bKRw`l!J(LL1c=_v}?83Z6Bm*A_2wq@x|B`y4BuK0Y*bDEBTUPHx7W zz_r}>uil(DiRoBH~2Yr8}!*G_eF|WuCuN7-f`S2#fwRPCB&OJDFpG9uj(( zR(bF;wZh;7wta|D)|9*V$SvXdz$br|iPTMF_JZ6M@V|C1;WLp!5~8`#KvE-Zz;{41 z5ZicTY5nyDou)#1qsl)m+i56oXUyp-xMH=!>^V%*?R=Kapp z!gge4!Yc=?n9d(F7QeIv5JZVzu!7B&?S#cQ=T$|o;%&PjgT#CQDK_4%9Ky(PyK#?PO)h=9F2o*m3* zNME<}ty_e0Bfaiee3n8Jc#>TChpDFrexTw6=7!F~OS&QcGp{YevJS{2Y<-T7VTDc? zK%ivdd#KF0qAkmktesBsrCsuq@4WiEj*l2AIPHW?MaHx*MK`}sW`%!k>=A>#M;}ls z^LbZfa}*y=8h~_CZwg9&y_Dh7zktV82O{bx)ePC4!)g`>c_T8GyBNUsz@u5zn- z$>NQB#IFrZ4}9VLE7C|drB=g0MJuE&VCxtHs&4|`vrG`wX&HaHS9y?#nb)MQ%0LZY zms_FM_D+Aov_9^cSnz1JR(D17E^#@lx7c29SGQh51#sK%d}KU=MuBDvPu=EuBad?X zLtRIuLco*)w~%_xMtHu>{Bi@Ph_7`*Vy!?fTfu&PugiE&_lJ>4u7zZv>ZeI*<{Yar zV?hs}t4VU8{l$|x1d95E!3F%AW-RdnI492@M_@TZ-_BQ3E__f_h^?KY^UY7px=Sri#xD3LT zR!m9Vd;EevAXlwCuUu)kZ3CVChMiDr4~=0xW2CIUUR<+@JJ2`oecY4&J3xLhXSaY2 zsqri(e_MahY#}nOR9*e+HC3X1ZYvY-Ws?;c>JHMs=a7^$*p&0DLwLH&$sGQwQAQ`U zGKTNv*7lgxJtKy_NA&y~jio}(tK0%EZsFIp;J%KRkR*~Z?jK-px2f0F-MvIacQLaC zI|TX*YusE7-?-Aof}n_L3lpNe%&%yQi1F%FpT2)3L6zywmem7{{e(Fw2Wg|HP%Uao znCj)^gB4$$7_{UBz^}8SP3VtQB~WpDi0RY%qv1VxJ$SfWEHgOH7HWnR_mo*#)lNres*GWygxR_hN*r2jh z3A?8IV8o`$Q+OxjKZ+!ZNiOs5TBsS8{1KPiycNMq*(u~EesnOe2k{$C z2YY}v71i%{9^=D^K5%%XRA6_G(3XF?c7A^wE+B~T#=C$=RaX20zooKej0K!VNu&Kh z9WBfi#V4lDE+*1|1TjEf7)V!m!PkW!a*!`4fJFjF#Jqy$hRhO`TFzZg+gKnw+(G9- zbu)RVK;+kQ=P{IvUm~nxblSxCYzVdI(3JR(=?~uGDdp*KXsTa8_+AfkPV z5QYnFl;D>P_};C+SJkNmfW!5S-NRaPKzRJN3-^EVX0jFvYq---k%to2ssZpCd^Z-~ z(s4$-F63W(%v%l(%KVT?wAxG!qrd`KwkVyvwH`ic_D6pWP3}51`i6{v$xGh*;r`Jb zJ^k*+oUqef!8V;JRoq8Y4b2S1eh#R(Yx&vC7n1SS*)~dU^Fe3v z@bnOGa_jME*9H%iaO-uKOiaF6V7;a>!y&6uQ+(X|t?ipGjRkB2aS|ujT!{JQrqVY) zE(EOhVbyiy;e~pL)=wJ>Aq(c8KLuaSf|a01x=ri0@`{x%xsxmwI7olpW2V700unh= zN{_X7bn|#JB8A8e7*3JdK&iva+HyCEem|FD%~Kn3WfzEsUa3+O7M>jwvh)vy8W;34 z;q~bWJX-i)m3hU-HuoVpr5D&O`NhkxTg>j8R4J^!R#EhbjysHO+VUD1uXFP=>QN2il znZh~~f~-E{{3CzNPikP?yb!;BZjc-nlB0+NGA8Y()h|`ODtP>#T(%$;kU6Z4TGYKl z>S{@Ur*LnygA^w(^!s4c3MGlXFBvNCFLY~}m|>R+0TuB!>5o1T{o)7Bp&l-}5%0az zmBUNbKf1k0RF~(oAr`WezYlfp3Lr^Jx!t2g?nIAgJu!czIgL`tUfO(8``Ab&s(5~M zi{g3c!b$dS6DF(#!Dh1P3zy9E~#IsXSwo|VS$MF=nR{jnjPUG;_uxJHNR!cRu%dCt&b?r&T%w+ zy*bL8mDft|<8yHxZi~Qo`uEQyz;SjCdpMTGM^@_1FxtAtoc6u-t1;qIHwgIO)8G6O zMHGdt1;dr;+sP`3ZDkjcqYGwFsSb)AAz8#EW{Mi$`2swT^vHzMzV}z;>942pCji0owZZZF zva)}`tDP1()GeMZcp4c^$McrHhx>vg17e`q++Bd``5@cfVNpz-U!7G$5{S>r9e!B1 zzA{DEBgu0$(*YYmVoB0%E_#$H+Q9DghY6yE;6I~al zI97QqLPI-(8iHu^v{P%LRkKV|S?)xEANPO1F5P(&Y36IwQ3w8Dcjn8)(gBA#?mEnW zAbLqMc8QtB6{ZAVv;LLj*&etma_1!LTkWMf2^_hdzQo|uX7=pB%~cdx@! zSrmCnV7-hl0l-5E1z5h2ylqy_5UP!2F}p1%)hFV;W14Oy;)e4ZnG};p>ExKjPM&|n zV{pf?7-W-7r^JR_JMo(w8CU(;b;?#*voWi|)a6-*@$8!#R_pygqCF((B(bHzg`YAm zY53pIajaBgP3}HLT}urU`fO1j1vLlnS5<4k8e=Rl{yGNwHy%^dbJnkM)X*A5bkHk= ziU#D+mK#^Z4;Du?zD8dcyQl|PEM9*TENuRj2T>bet~$&QI0W-A0PdP}>BqQBV(X+Y zd8a;u6m68dH8%H|W49E_fR)=nuC{4~2f~w#TSnNq|c>Ts{CF$I4sHJIZ5kh6#vvHWOiqd(os*tuxj z;=lNw4dsw(zcAvMr>J+6Nnz}g+$3!{xD`F^UB^fHHkl#VPH!)`VDWrjfl6W$0wY#S znisENLj}G&l_Mxyp_jxyZcBgCu#glbp7Ay3908{4N{JJ1q}}b!Dg2>tXHdMHQ`-== zYJ=GCR-mRE28+^dG<}e}$%|&a!$jR?MD*$_g&q~e_><}P-rFzg>#Jn$Vq!j4XbjaS zwn9SIWN83JLJuMc5_^UYnGv%oz%!&}IMM+XErS{Vv?b~8D@uHe(yB`VDO4ra2Y2;X`MX`E8`u#yQ>lopn zlk()**UeC0SPn{rTb+M?d6jJ3(2iBPK`sLdC$buleNM7HmKYA!^HX)(Jfk{jIiK$l zJ;L94fk4!K4B_cY^5zxfBzss0r<T(J$vEYO;DWWVY|cP>_2UuQJ7uB81L1R}VIE@sV|=7oEmeU(o(@|8|_n zaLC|S^{y>Fqx}A{6vJFQF;K(p04yqo11ZVXHex1a$F`5*Yn|?C z5!w<}Zm)YF`lG$_>$3utjBZ!V%kRZbUvH`FjJ~3{+Ae>Uz?qOnXcCl^mwTWG(cVeP+l<8|P1|GqnMsz89mGoqsQ{?ihg`mAM zHGjytiY0mYlf>XAF&YtNGY+UJ4!!dj+9Y)<2_^&~Z{{Q|k8#{Te4?)T_?Un)=A2Zp zJ@MzWgvNg$s-_jI?%eaTO)86eH5v+43RVB`eZDz~D9|?-hz8Cp(PLjzwj7fCVw721 zC%$I<96ck%Gtaxdb_Su3XE}VqBF4*u1U6-%8_bfVy5kiYAHtt4;*hXYaXvv+^&^WWZ<<2+ojP3Ftc5|^|P#z5#% z`pd)T)`4=ZyA2&jw^Mbq-S)KlI)*E`>t>cwaDah!)i@sp;YrVr#PlM&3$)pJ7KvMB z=?)GzHPD;OdytvmLYu=GsFau7tf@k5*R(VOza-$4Y+Wm*KojWh-eu-;1+NJD@?j25 z#KM33qghclW>6Hv0n{Q$Cwsv4mD4-6$8+$YJwErdVwL|&Au;Ed)qwVy*9;GdrHA{n zTv*P7V)=EXS2B*Q2_xB<(mgF2sUB|d z&X#>Yy;^7O!?We+;*j}Q`oL{7$nyQ9Dc*6s6q+LTOxa5%TF3~fnHt>Msr|_u+be&l zP;<3ybi^J}`RuI!7Pb|QcIWmUzhss~yHb5XykbXiw>=3(I(C^VRO?^S{+F9@a2+Oo z6BU>R>O>-H*4QTHDF^UL zo!+xnwsK$mri|^Rn7zMH`O4a?+s(wwC&rH$8mGF?GHvkfNXyeO4juL+p0Iy=*!pEG za-@~Jaz&cbYD>w=;dfH2JtCJ`F$t9N?U|VOgs5Rp@Hh@Ozj3u3udJiV7MK+!=V1qn zTUE?;i{^vWpb{_OM;;Zj5t zf&Mk7R_khzQ#l+m5Lbun3z0xb6+pK>S2yySuJuR+(vz}+Sp>dT`oe!STFrL5^kQ{= zJVy{dj1r@lgYOSX2?l8hPHLUxo+G#IRsbsKR4yU_-Fl<-?QQx?3umOi*6i1$r^`Y< zRdkXqBF**%o-#_@jX)yv+RpJux8^niOj##HcG2DPJ6vWvW&eFYj|HJJr~;vBQ03@t zy2;xa=!in+?N*KiT1$V^jr1Vmc~T<_0#mWV01j?@tGP0hvhT(WUM<(%kPEkz(`G@N zfh!8DM;oEYyr;1?KNo`MojBbtrka00g~Qr1_R)|zAqBn(hkf7!!@oriBi7B87hu*Q zn9cV^M|Rn&6G7bfpPBO&dO0?}cvjr3NMwmI?BLlP8QEL6V{Lzpv-7z?eE+y6Q6)n` zlCLT;u`dV(-?w1QggV`4g@A4AKQtQ(PW9-wnCI2s(Rrbx@EUZwUmy9aOr~iB;KnVZ zpuSr+nHVu^7?1Pt@$Jdja|Bb}O~F5jxZujeZD?Tf*6gz35sz8ocP@3VLRV4U^;{0Oq(g)cg5WI+i#syl6G4HncHp1sK*aOKt^ z$w!{PtEGd$w#kE@uZG)-70H-c9!|b)jpp`~Tsfx2j4%*HL0v3okK4WT+uH8G(b-Q& z7JV<3iwvb@<5}b1sS_!8dL7yA(&xl~A{g&KEVF2v2sD4U&aLLp+BNCfGcJ1z`IU!@ z*Q=r~bGbe1bk5|MK6}86(jL|!;?3=yiUKvx+Na_h!w`9GL0MMmOZ>*}-;%5&Zq&_iA)Onc+Y8 z87_dkUMqiJtdZ>RRA?65XI^Mv@&u-Vz`>nu=)D@uIu;b^S{^id|lV$x}J~w z{dT{1dhBjM?Mj=pOb*pj^Q0i+dLeCH6@OR(AquXor2?`GJNUGT)&>tPvass;5FOkG zP9uL<^LeHRj&ONRcj-S?X;*>>e^~%JJhP~7dav{8jqzl{OCOO1RpF(^QE{*ysUq;Y z!f2YV^?QVBKiE=k2h-V^vMJ1@o3_2!C0Et`i5I2eCoH&2T2Bay1u`GVkN&#!AbT~Y zvZAJB`=_W@rALv6?d;fkDLc?yv<+Upz9E0711zHnOW*lO#UG& zqgUNLLOB#Oyf{=3HPXkpdbz*P*R#>Qn^&Dz#-j|Ov)LK8{mm}l$FO+ak>hYLb4cTO zjTW&A{D8VDsceI9;U54C>u*ivs_uW(zeYeZn?nz;fb{CpK!AcJnP;6lQzh@d*Z&tU zB4MX{@DevUYZjWCDt=6{vKsU)zWvjr=!6goB;(YlSfTFXHdtx3>(>5nYKmR9|DtSZ zL#DSHhKi6sTRb^Fpl=*yp>Pq^__0}G`9$X4Joe%_cW>6#19AL2^$;+nq(OhHnR5U% z^=ju3yfV)jB!YDJ@K>q>yQ(;89t84p2u^xYQ+SS2f766BcqcIx%T;Vcty zGzaXstpkvCp}AOw$JwhTl=vlqy*p%f`sHEM{aQ$9X0y!~M+drsqppa{=0d4`a`M5+ zWDjr2H<`0joL4(925^<#8M=S6z7rZhyp!vAY3Bk<;@X)0!#aZ&K_PI5t|43Zv7+*n z_|vHmpgc2;wYA|1;g7RtV(4c7*1Y;83`wT;g!h+2CZ%%aUR#}LEGXOx05bc~Y+of) z#I^nfRuT+TMs>^x9q8v6$oUuZmMc50guRru>R>ZdOWR$Dq}R8qKg)lusv;B4@18N- zv;J=tI79gS>9wrOSSg0%1xHV`% zNgsDkPI21=>19hqpMK_jRl#sL?k(*M3K8{{eu|0W8S*1_Ta*br4(e;i`a5M-w?^$q zRGBI$nAP)630$ELM09_;!r%1JL8MWtqRW`8A}Z72?25Xz_EHV3p%L}E)~xRo(no-{ zlxllzdiIio!ow2wv@g`KCZ_@x)miI+(DrsGN|%vZgqcwwRIa(lHfS#*)~_d z?>?%Mg1%w&{Rv(?5D*&Bap&OAf`SU(a`8e)Bl7W%UG@E>)VKE!y+ZE>^GI)pdEOV+ zjuFNci0>*RyASuvZmrVvuLYIvllB8Q@3JuAU2iZCDExH-@6x_`r$kpR3c%Ro*I>}a z8240)+Id7-zPNvzBeK!yL{m!GWzn~dA|mkGapSdd5<=_h_rG@Yig~UrhN*kzt&%ztUk#{giji5kX6@w~ybj zQpaJQGj8-wc(b2%9G4MA`{eW2CQPf(Z`VAGOcV(|h+}{HNQ*x#-M0JmT{l?c`)0ww z{JW5+;9Y86epTfih(~Amp}d?Es&v40yFuA3DY_$6Ykl4a61MS=Jt-P@T)X)zT7Mv; z0p=MSNmp#=ud42ysdbIw&wj2ynS-b zDJ=nr6B+d04$!c4gMjFGYeeL3wE4|h1t!n;?^Qi;IK_Q~30 z`38Tw32v{@vC`8G4eS|oVjJ_TrJHky56y?NR z&GE0cJ4B)(t~_e?cKU-Ey2OFyz#x93a;Q0R7}mSHiDTIDEs-&Iht8H@$(zgRXii7rno-oY&rexPy<@z81{ci zZ`)JdXbX&exmT`9O^F?ci~Sc2ZtY)8G9_d@(J5tgzzjmM-MzO`zZam;YR3(%TT{Pi zFWP-V!Z&1mP8UABcjmN0)y2pB0y8r>IR5P;oNTmO;WIzkK(kbMf1Pn?B>D;=#___K zWhPX~GWFseuuW4??I%B{Zk#Gr%C{| zSIrJr%+WE1_*(MueCGhJVIpV1fi$$_yvdVnkFoECH@{!Ye)@K?l`(as@hCMOnkK?V z6egzUQ)ZCcl{u#Q-CUE1iJ8Rsvn)W@=#rcFZ<4?;*goUxvi4Ye888jnc7=Z?7=RS` z^`xXP@gPke`t46V?H9@tOWzbPyER^{o07KLPRS@CJg4Ka6NoI*5=SD>{U?qEGb_G4 zRj;nIn}{&N-xg9KfuUv* zNM!s^*PR2Kary(f+}cPPO_a($w@D#kq3-4ETHkDBvi*Tem+efyiz9X-Rq`lmAep`9yF#cA^~%u}XL zRt1;kz8C&PfsP*hU`31^5|`j{aHp2EK6VzE(GC4g8MICNC1x$fsQWSE~T&MuZ_D}0+#&h#H4{ilQ4{*JSD1Y3We!tl;Y+R6Xgy%xsq zNg#Jdp02=%lqIJgbsN1sUzOoxSXQIkekCrY{vIS4PozEr3jA>gI}EVQVrL7m+{jqj z?;huiAG^TbjwF8;Eh#RKj9K!%_4ocKB=jeC8y33juey+;XNc2zd3=v72_ez;n~8tO z7pA;EsOvhKC)Cby8fOL7Dkj`&Qv`jgQaowd;f^h^4lK3XN-16d*KYCmdNq`3@QT5b zXHr%U`z=`txHA7~aG7`DH!kv{tcdqV>q*)&2OGXk9wC33g!sM;Xa&k^x4voGeFZ#) zac%laK!z?i9%4QC$bDl?0th^GJH`|C)P3CSFGaOCFWQ;hqd?Wrgef@c*ithU)?JEb z&Zmgl;=FyRiM#!3+FQFgcyYvVYl8NHmKp(= znnY)0tr>s*-FErO9JI@d8A%>)Hhj_9q#-90)E@$A(M=zEwVe{O82tB!rgjU^dT$BY z9Cbk4*?hk3hR4~@@1XsfftZ3(nPU8a0P?J8^YZqBHg_&Ek1Gz z72X@{+mk2)6%9T)oS5)-wa;vgV`PE<9NA(iLXm&vMoN_VF-OPKr3-c3SHGHhqMgo4 zTEYsM=*rk5_-aOPpcOHdKQ5&AXHg*Q;C&UUd{;(d9`0m0%=UI-_NeXLQnnwC;`_Z* zC*X=);HCyuSL!vz3~3`@{2~_M|J{vvcI}|CjZmclQKk&tXdsAgbzYn*+=jWSgs~J| zGG%{lJ&lB5n)|f5bpysJG|6u?nv-vw~u#912W!)zHBLsFpn~hH+yHkM<;P{e-Oqx z7audM#LBdnMNT2J1-~O*-|2QX5g*oTuT5=5@P>K;gKgzVG5TDoetR^II|t+RiCKSj zQ5056k0CR8iuHXE-v0JcC+JJyINOv@M#C?f$YByULAIK?xf~0T0|+IIaN1W^^c>Rv z7=p0_p#4X;uwqaUa;|ZJ$-9sG#Ras`12S9+dAd6i@WzdMeK6O zp&Bmr7r|}3|F(66;kV8^uPfUXYd?7^hfCvsG+nfL#Qa95bNkHF$96Pb;)Ri@%*=D= zBm%aE#FcvyOr2oP=W6X`$N6$;=K6b$Qz$?&;$$&6WZiDupelw{@I$?q%nB~eXFFb8 zz=|HS`}_4@*H8S^(QcmQ5I*p61#_&@jI<~%w1X3rt@uP9!7blbY4&sw_*~51)(p>o zVrh^QlkXnspbmoJ{lZ<7xyF;b z46}d8$7&7qYHbX1coD%`zDjE6dG7z%wr7Ff5ZE0Ms!_0~@#f@}qf5Am3?~-**Sssi z+JUR(Z5?(-JAdj@L<@hfZ?c!e(=%*;YaI>w{m72UOt;Dq5ca{di2>6-g>tLy)O@!^{)Jl4me}6N(ddDMSrkH4I)vh<u6>s-(=1|`VbG{tS*Imy2!BA+Bsytq(*_hPY8Y=Tr< z9+UF0(DVFNnbJ6*PxdWrWH~qWaJ4`P?HQL~#t)m4p#@2&?3J%wExavzOdv7K|D^AarufElp#h z`rmm+>-zFZhrY4tguWBh=e@VT^5mh0C{CjG7+t^ZoT= z?c|65)IKUE$cV+;H4Z(q;$DGc^ojumStEHn1r=D3B0G!s8!z-GAdz^i!x2^V;?%1y*`&pZ&ktc~LmhAyS_jfFhPotI`GkaG-1Kad)1#_J8_C zHGAfvGKLSORh7JdKFyJHMOl-oe>rVd#JAJ)^3aFU*f+MY{s-C4D2yb<-Nw6P%8GY= zHNlt_i|_cZbEkpJwmu4XFj?HJxvSJUKvy`nSX`3i^*3fm#vvyAtY4W?X#kwVX>~w7 zxY?r7{2zZ7#TU6QVqS}Ww>P{9;^`n2Y8~V)M5^wSm@Zg31& zz@9|7=)FBw4b3^jWEYsd^jKTm5Q@@xG%*pEz9VGoJ;MZLUwqNMu6C@w|Etr(eD!XH zzqT!wa9ZSlAm&?fD7sfaB1KmM0Yhb zaOSn@33H)NwTi#~jNiDE(DJhn>JQF|1=kkbS(v+OLfmbXv?xsO$XmP9`6j^p(65%O zHgb373^P!JQOhNjHp7#M>b)>9ltYaA82@?fPF3HCPTjcxyoCBgH-bC#MBWWp8>P`u zse1Q+K%sFQPIjK=BKVkRHrw`kUbYPFN$h+jc{w1j%Bl-=RZze?0O(xAl`sNoTt#I|g-`1OTZ46e zb5(1fk!lzmFC&zJv{ygyRl29_xLVG??awFmH|1la7WZN!mfYx}-tV(w<+t-2mX_X9 zBxUUptMKpOn_4E<_+L-9fz|H#UtdI`Y*S<{F4@6qS z4E&S}Nf1!3PG;~Kgo>zyS9MD8G3Sh536&6_$?|% zZ@j?!qo03~I_QUwRQDvpvg6HJW!8|uAR8!R^JOhW@Y)&H-JH|z1zAk}8Sv<; z7@6Q+-@0*t*U1ai$qtFOwov?`XT9Pjhl_QpX{a#X&owr@8`{Rq_F1{pw|tZ!{@g@s z?Q;zStafe0fc407WW8_Bes<)4oBus9v+gr6z-cY!s+z7HL(ry|X0_Ir82>e;Dj#as z-6GmI9I95A>YS26QPAsz9(bPpuZkB>aFz${BVMTG5E@j+xl%+s*jqv&OxK+DZV;$l zG#Iry(9^|cqAS9xw~cC#IQpp;@=g)zWR$S%q}i+i?y#i5gI zhQDu+0N<5y5peAp(|K0QN)VKYY>QY$p8og*WZs#0PV}vVp}WN;%X{Rx*;|fu&bQbH zrLg`Rx3k2_7p1tu`D9Oj!0rs(ow8evdo9rY!l8gB7`H=+-Ezk5+*J{sQVMXnyHR<| z{rs0puG~YjvD=H+uXjRkFJaF*RfZWGmnL=ycDV|uImKEQl7`8#@+R}`g@HqB3QGG| zdu2XU{d_T?S2(+7)FtBjs3S3p57DBZ*ZH-G0FR!ojEc86nWpW3Z_gI5CrqE&d1nN3 zj7umkX1WfSY>%BrUJwTa=81E8jK0tRU{&ep3JmakTUU+3{3J@VN5~3nCC!Y8A-ip| z1Mq$xmZpSMzGkuqbUm%yxeC9HIWAg*>PZ0vmCQE z9*0QWX6ysBuiayR0>+o_=VMcf#HS>;$rsJQZ3yw_e(U&9#;*j0lb>s}!x0nuhbeHl zn?A5;X;=RD$SB#Tef31|NNq@v0&;obhE8>aO#$yLu`d8Jw)QSc)IYpU5*k**^@I)0 z^qSs%Dki^1(5?ebUo|P+kz4}s!nMOh;P)BqxPGuZc&rwG(p-2$7jvBQt0lR|kYk<- z=&Kqs{D^hbZz4{0K2<-i5qz@IlsCQ__Oq#W6QB)s&b#z$s)T{T1DvXwzbPUV&e>&d zB&S9y|7Z4X(;yy*tMI@G$CWi`?55M-j^usp4cc~pT}z147K3X1+d*jH_OHL$Gf+hZ zi|V0v#nhC4QJ9UgaPP*oGLmzd{l+^JRbqY+S~+~F|J|cqj*V=g3+}=XM0W=g53=8; z+N=%)*ZwI`f8{o{`@rt^GauEH`|Op49ox_liyvY)BX2%4tF_AgSRh4soB>h2UGE9G zZC^$!a>pwAUGxq7^SixhEN>Xuk<6a4&Q^Rj_(g zmwQ}#0UGiH2Lqf?E!m!veA;$O_m918gF(3((8<%RK2oP)F#!}LxjwC!m__*dPiUnz za*Eq#F*3#+0CM~!0JF8r#j}@96f>|$@Q3I$MFkh^y|0Pp+I~>e$0zLM67E(i0jZ}s zk(#-G{ZT+rD}pb-bZT*={>lD)Lc1Os^R+9S(ov;8d4NOj>WI{Lh9O`#e#D2O%$tbL zH#hVPH75fIy~CYDKX}sc?lDpF3%(%@^l|LDRo9P+hprY^B`X1G=8l+w>{~C2?}@T5 znXpG5*qd8=3>fiNS7g)k$s!=}Aqh*%#) z49*wBa$LA1hn)-YuQ-YDSUTOYY*)Qgai_d1ZT-9NOb|pYvGc&quv=ZP!wo-a<;|G% z)`D);^hDF`mjdyH+5UIf(fe80Vr2EIms##z4TN7LFmGVVhZZQ26(EFaxG1GIGU_FN zw$`*0@psv!aOTnQ`qwVd&XXknj`_rof(p4n#pTEN8WSx4DrKgCql85%?lr&%R1_EDb)vntHnTe_ z^x=EhI>XZ|pbhR`5G98sM}|UvDfnG~h{hBv7Iouh-JP2H-+{DtjqJVDo+g6K0#v}d z+G^7j?>)+mDH-voi~+)54ch-?`mnwA|H)71wu+CPeuClYypm-3t+Ygvof3LwSz@BW znEJc~ekF-+mErudP~a+04%gv=G`+Fz@%!S|h3n+di{HLX>JJ%n2l324GwOl+3c*KV_-? zFJPaSuy$%6b!rP=q*8zF5t>-r`*^{l)0IQ!6S)F2z)kLLQ%LnyzR>CJh`_|>GuqJf zcNeQ2u1jtS)4u45(#(^H+wvrTNwL1E*zS=R0yc5X9-3%eQ=~`aKd#e}ygg@rYUX>W zVQ|C`R?}k>!h1?BgzUOcWyCDW9(9@Gn-3($K93206{{$gy*kgzwe;VGh`P`#3PzU* z3*YMvwAgzla%YNCHAMZR8@SZFop-g4flBByVh3T39F=rOzlsD}ux zTo)CD7D9GI7>dERaV2wq07gYaCTTWvyg;g=ugaAtcgYd2V^-!}nl~-~O6VAsIAc`D z11Nk9`a5?^i=tXL*qF~bozDM#YiR!Yt9B ztfIWzn|HyluX8H^L$S1+A!6Uqqx!haULU!;F?aWV9LFs9&AEX^U(L4kC=xDB20PtJ z1Y#1Sbv{)MQ10)e|gl=pHfbR_P)O&oO%y>?}2*o0OW4xcp`0k$P$0s(qY)&*X z2=n{bIYfttKM`-OHUdg*6ofo@XDu0!ss7!rp}oPFYP+5o9p~s_A;a?3D~t11m83{9 zov0Iv-cIALP1K-DJqdV%Ng`%5%gI;i)j^n5y#dFX+aOtgSL5L8X&EjU>1tH{#*lVK-M7Eant%r+3m2(CV^8=1{M@8ls&>Ms=km|ONs4ezQn6eAIkg|Ec{;i6{R-~iq*S;QA_oiz7yXu!5 z>wdD9%&QsS;Cz_fF4V1$Jvy`39_(Fs9Z(mTN;UMDOu#XlsV_P;P=~)17m5);0alC6 z7^g50q%3Vz2u8HWm4xnsB^HrRilHO){!wT{EKtsWa6i$539#QH&%+O$yV+77?yj}N z#;u`!Y1CRaE~-Hn`4!juK8%=~*mwdz6yx?iG@lj9bUjA@*%hjN->$+jzY$#>gjx8M7{ zWwc|`=B%eUXUXKN-NG8)rZLc@&ES1yo~~N0Myvg0^73!u+rZRb>91OyepEe>^Fqv} z`2~g|^p^B~4U3PbFc4!BQ^Mg(95lu_J=zCeWXj6;uU;{K zoD#9de2XVO6QLz<&;l{xi(6jMikLo#Iq>FIB*pZ=^+x38ndrzVh5u5&oya+6-zuAb z18ezlirRS^XzZ3DpK-NMp-J#_;NQS^0Xd>gZTtgUhhUItK68}n_2vOX!?}WilpLkk zB~gN%pqYk!5Wt%fGoTvctlgAUy0*75TjAna?bp#M9-$SBJ~MgB%TgUzKP{j;n7Brn zi(V>>kY@Oask%Esp(TN%t?FZ??ro`m-BU$wQ{vau>WTaEkK0Uuoau!o&fQg#Vv1;G z$@2II+;}DNKJ)f>musik@@vxqPVx6M`b0;rrKbYZVfr@(u1uiQ_!glL=w@pxqH9hm$|OQ)Z!yt*Fp{A0psT zx>%ZdTA&`_0XW9}BWf#%f?oU&BJ2_BM0w(G@%n?)%@aG{e8z9vi~S92*h}R9 zQ)aNpaI0FiK{fkEwe4&vN0}RcKHFLUDqv?hyz#kS+A`j0%lbr5$#h2Qjs8~@qVq$h zt-|^9pHToy#ghl8t_LR|O{kmFlYJ+HbyT%qWbn0Rg)J2YbX&gVOjTMlnuwYP_#PPa zIKDhw4w+poW=FX*!aZDW6bTuxO>}CFI^NF~xfvRN!=drafXU2_#*I0DNFT4yBDsn5 zvSYUu7`HbcP|Kk zpR;tJR=c@LX-Zu;lc3+8?+j{i^UV+PND!#NN~riVXl4>cj8x#zrCLu3{Xb2Xi2-mU zoZLqH61oy<>ykS6X|Mf%->iPQmb0^RIYxf>mY%r1Ji&;QcGOi*|BMw@E(0DoHVuFB z?*^+U*8ahxS}ajXU-|P!mfU6)(&vBlCqV04Uu#WpRdi}UC8WhEWfmf&6&sl`+k2#_ zEH%A6u%9J%HnerQ;H6e>8f%|K%lKr*cD$Mr=h01_(C}^q|6II(X}3OG_ZluDBnu9J zCr#SVKgaQkNUAKA>{lo!0rx5)ZgC!(RUz4@EP^=JA_IgR-`QrbXQ@qi`J%v&-}UzG zjSvFpj*w-^`-&Y~d(X|szgT&Qd#+(EpvBv-VJ}Zm=D%0{6RHfXd)4#oNoWP=WAsSA zK+90trzHG=yDMaWS)et2*fqNzbJk~NnfjAw1(+$tS@nn&Ojp)SC=WBR<#~4BYqcxD zgB;5$x0_5K)76zxIowZiYm?XpW9=NO45iF7>hBhOtbRd%NO)0rS=htdLEUm7q$4Kk z(Tyy}lFnJxFFgkHQu93iV(Yp)vJN&VLRb!{TXsbz{3$OSW+an_-%B+K}E;jqRlYi zPE}wX)(z+P`@O@O|t{#J?qQZ6r8>b{XT3{2Em}2Eqs0>7lxm00) z^W^aU!?Wc*l@-=ksS17`q|FMDFM-DDvHW%%eBZ8B>_n=EPdB8ef(N^8Wi@*~fm}RkQASqh7jyTe^lq zy6z?gbXTXsV|oL{7z!Gnr-)w%I!=#&EZtN3+Z_KiNZDR=YDVhNXaH^B<>ZeKwByq+ zBPH}f{SuCkZlS>C9mUyBFc8`ht3&fXOxVft)@Xgj&1l-yZ_*o>K0R6j-x2g$Y%2F%Bw31W6%iqaTGm70rwk-+WAo6^WICX^3Wmb zsYh1h*0&g2ZQ85@y)bu&k()t(bG!6GcW%_}1&N{mw0rJPpn*T5jtLW2Rv2Hm^=LHT z6bsHq?=H{ZTjgFRFE~mDZ$C$^^E^5nM5`Rq)qP!b7_kN(^TJ@?<&}!EF{1ZH(Yih2 zEfU^Zn?Hlc%rAHh9>yQkm$#w;(;2fx5f!;NyXrJ9@%Nr|j9Eyu1t67ww!hC;RNGK( z1hT}Aa9fU3x6(~CevP!vz*#O8BJQ_7Agm@0!dRM*+ED$~M7Pw%t|&|ak5BF}&Ag!{ zCbY7pc8Bbt-9ekXRJRoF%3zaupzdO#Ro|Z?UeP-mqdzo`wVJ}Vkr1kP0Q+;*-f9?h zTzN|CJA-fuU@T#*y40h8J>Fkk^WKyG^#(*#^dn^HwChUcxOXPWN`8QwryCbBf_Bfc znWZX(^+Gsfa_jEx_`o5%)DvWCYOh}iz58Ur<<1%H-$|V}CmD{m4LL8|Og**H+uF~z zx)q?ZG)4PNae4^5X7{)08G>T=k_>m`$ls%o_bV8^DzgJ}-!PGXeM(>#m(3tWntJ&4 z{=jx7mbkWVC+6WP)<$`_xZw95gp_=YCZ+9??TeL0Z=;>fL-YhkO7h_z^N=njc#`X$ zmDlGdpYC&DoR>bmxK~^CsTNxxtJWn>bnUb`u6!G1@RC^E5$$m%`%a}mJK$`Wjn9=& z&MP>{yy~Ctrbmu{{9JojG}lh-oGB_cN^jdT9(MV$)fGTg#;10c42Jb~Pu;rk9WO~f z(~`M&`Vx-^x)%}Sb(DkqK3m~_OOeLt)NJ(avFIUw;%Dr1`_+rDQVWq6?l-)!JT|JA zDc4_c$LR=pQ+l7+0k|eu-ucx+>;UsT(c`cKUHt2x$Wljtu5qjm_$mFy$o1GJMt;h< ziHOXJ0ZcKIqIXz#`m-5$i0x;4F8ch*#CxpI-WfVry6f8$C+o0U%t|Yd?lT&fJnAlp zE=hb}wW1Fh=^VUc{Hu_*& z=9}sJhaDHhz<*~qlJ%;j6cD46#vQ7WtGTLHRGM>#iwgOH9&|ewVZhJP(cFtIn>G!>{nVH|Tm7iF8 z0{YqY?$n7XEKeCIgJ@)iV%MjZB-Lix_rxqF28-Di(sx`}`XmZGs2OH=c#4G|2JEIE zo2j6GwE^uJvd`Q`4Wmrgs0#L5X441Ow=!l}pnnHn)HKN%3zUkBPIzTFn%oV4H@WC` z#fv8ys^W;G?Jdehp?CX4#-?&JLFS=l?>Ns-EUPu%8`uQcA?eP_w|Dkjq*TLi|8;UI zyP@gh&(q*+8}beZ%!VSeLQ?YMt#$8}VRi|Bx)9#LZ51VK8MfE2QQ&P^S|;S|x{XSy zzenV!I{R*ukFfLHjgJVDmLxyDOI6B#SakM#O)-=_nEdfe++xLvH)8zvq>GT|*W*cjc=I3Pvt} z$KP4sL5QJIZP#sTzIisk##z?=`GzUEPaIMYjR*R>l=SN#75B$WsJu}%2=tvN*&S7Bj?9IHK+OJ7lhBWCQJ#n4L{&{U zPCe?|TRNopY^n-KxGfH+d$y`+ez6jN52X~jG*q`W`5OSQ>Gn%Q+Pd6!H<-&>>99kw z9))9Iy{N$B74?^Y5Q?vXK=!Da^3OaK=L!GLtyk`LNnV_mO>;3-gFY8E8xu>FM;RzY z4cy)*Cyv|yP>X^GqB+z+$rYo5B_It#nLv|sdNjiAD2Fc4lfYfZ76vB>)KOS}nloQ& zP>o>Wlm|pV`2p3ZjIG-~&w_u)%#FwS9tgRSoOX@J!S&?RE-FI>=8JIS!>$LKq2_uC z@s*;aU!YK`eNSCqImm z-`y%s{qKy-TX{agB1J;$<3Pohs&kl>*-7O3m0KC~44ttQ$-2!=8HZ~Yjm_}C)_(_` zOE=W;8a3F*vLgLIPobHA(nCwPF4(Ox%_sbWEpG_^%vyh+h}5#t*RKyb=Xn`u7ed8z zoz~%f_{F0rKsF*}J!Sg#c)Lj5Z()V{RavDI*~f?<;=SJE|G0C+0PAPZ_pgQOED4J8 z7-6`v<^r#-eE8CS`^Hoo+baYo%I{RZs?X|3jD8w{?Ru)N=`z!Q-p4I7%?vEdj~NEb z)t$m-O?-B+=z#uOOzd^u3v4BS2|%-pA(j2nn=-gpS-K;-nT}hn*rt4wK|}z)!_1Ny z@9X2Yp{ORmLHujSk_U(YN4CIEspOTlmZL?fPeol_CtF4;AOyeB*Cd(vuk$OmSNnVp z|3b+Vt?qy7Z)|3NO`=EDd!Jlf!e}qooN~I1@f3@_oN+kP67fqt%@e0>ZT^q!R4d&C z;i;ICSyMc0k6oRb6?J6Fw>D=@oED{-IY6NII6|Oj5)qle`^=ERiNY zC#0mCn7tHxz3gem)Z8uiGtX&5>3wTH$qmOWjMgH$CFO&E=Wz`yPr>US!IpX(P>n<1 zM$O=9Z=S*6plQ$?Ay~zgCt{IxYf!#AoA~sb_eamZKNQYs*)) z1LXqIkEZaa#|6uX>x?MNS9LIC9biA4|}BfE-3U z``t9)fFW^*@FSj@k7E)J=NB;IA@Jw;TnT?kR`#om1H70>R4;?y*Mly>=kMp!D}$1O zL_H4_86e6Jmh~N*u&Oi6;%&7#C0?riGXLfI{zKQpF%QoDwNFKrLmD*$?Ul@zxn76Q zkXv?t-3GX#^YMVJ*N#BYwDs^?KQNDy3||Dr$k3#stil_(qFRoRtORX3M~n^v7A1P1 zUUIa&u5ANNmJ2qWvCupF_~t=hIavg~dHi6~4;p6}jjgXL)2yWY{9tpqE;{MP@qF6} z69^KoA3n&kVBGAZ>@PWRisgOA=;aozVLZ5hkA$!L|Eb~UIZgK06ms`x?LE$)Kpy{B zAKMX%60mlv^l1T0Wlogi4yF<^I@+Q~2h&>y!jodcv(CAe^-QQ9;HUCigAOY;QKfnO z8Q#HKZy+#}9+wNw5iIT#8ULELEzX809xm0?>y~0t0*?|92cNS<_3ARk#e-p4(*?$V z?&G`JdNcO6+coLf)mhE_Zv|TibZ2W1N&CXGX*;p2Z%sdoAC(^>$YV_6C|IbcAh@(o z=TK?5!qlu$jb7!V<)c%r>Q|lBBLKL<5~yk-#-{T;Xd)(=rfBmYtC0fHy8>f4AQC2);Y{eFUCede8ibFI_& z7m`Z-TKGe=`TI(zISByG=d}^ornS;czLbaRF_Xw^rld1h?A`tpvo6r-CcXSr(=F}K z9xX*ew{O+#Wi8g%JsMr>_@@w~*y;5*K!p>NgF^Ct__NVK-V7uJAp_DQihy^2qXW0HddgMvFdQLGD|#8|plWStyNjB7Kh(V*o$qk$ z4xMQR6$=m;fcX4yzU3xj@8)(<$ay68dP2UDk&HdKIv=i!02Ir991g--Y!Cv# zZzEU&jrByQoR!!UEA%nl~Mia`*5{xKlM?ifYK+F%qnn06IMIMrVwF1TtjR7K34$TVX*{eJE40b>w>*`)MBY8Xm&b!t@5d+$W z9y@9L9IKwiyoM?|$`OQ7Ku0IvRABOu@$c*lF%G5l%$$Tx-MZ~b3kk@H;t>1}qyL7C zaVoWpUo^nvSKktU&3CG}XoY!^pDNaGrVro5*&!Nu_<(g9W=1~w1jkw(cz6MipNu_f zRh2bsWYl13xi@Zr2>Is8T-3B2C-a17R`#I#f3Afbbne~7x3({z%h*0_Vi^GuNTf;V zO);L-%6q+`^M76Ul@nhuK$oqlZ7;~*-;9oZ)K*Mf_pGabox8G#x|3ArYuFixh z#7^zb;Pd$R=9Q}7-#ox*vp0Sm4oQb5-Ub^@SmPj$c8|rLlv@^Tt_(L`50VO%^%^HpIy~VBpqO-;`_15pL>yfMfWZMHIt#NxH2SXVfkh23d0h-mT zgEn+Hwd1B8B_JlBsF59LKXMTFtN@jYvQL`>#%&RF*I>#|Q z|AE6@sHfaBy}EFIkI}JTMh-?I))+lKW_+$69AhniRttQW?r=9=z&MYmzl~_`AQ&2n z)((BC-F5OUXW=9E5&B5_v~JVV;d)ru{<=PT6M^bn#%cQOOWBSo_Hc{7jj&#Po^9ka zwtKKF5jO{N+2+5i-LZ+%omdHn%6W*NXB`|_HoGjL6fKFB+QUptjPJwOS=ChdWBU%! z#4F-k35oEF{0G-OGcBkw@As?_?w=qq>cf}iN&~B+(Lt5jC)%#x|2?SFxU>*ijBh?N zucvTjgU~?i;Sspjceva1v0CM~q}|)=0X)lpZwF<5aaHEvTkTuMj@&#A5d{{zs)h_3 zeT8Pxx|*kdi4P=K?_Yx?$a2P(%q9u_9y;@6i*i}dM*rSg9pyq?`?Zsaz2s+f)tDES zXJxd-Vi6HzD7oZHeD!)$X}d) z9}V-)9+zuH)a3|cC+6C2>_Mw1xlT;4M<>Q#G-4qy(3c!86l5o1ULnDR6B!;l9WAqE zowCnHE<^Sc5FrQi=E@!$UhkERXQCrdw<$x%V~z={$9VSNKBN}hyZ#q}m;9|pZ@;T8 zYX7E4E}9UPpg6MV71HD$TKJ%D*v}k)vY$1{l`i}ue1ryg%x4;V-XoJDAIqaeG8|TF z@bZa_PFB0DZkDMT3bug*?RoAYuaf98klL#Yf#Uy8nq{-o!LF$QVEpRbqpeNWj_}0V zyCNDDsrAJRKl_6X(4xFntFtBW4#F6&$EuP#A>^kL0KOGh4A>XR*?K+t&uf~0qG~nt zzwCp{c{(BrCz;tS=9XzTmepw>rNnUhuu&$Y^b+g?ak@*F1bmvY46Tk?LlsYDBvv4r z=*Z-U3Yl3X5+@6xD~g`V#llb{dmVCqbcppzB`@Pv1NLT_X}2;46YixW@m){d6rzT;PMOT0!b%Y4*TR@J3u znElz4%AcR-6yN$ram&j+nsmP$mxj{9bD5G3hiOT|?ARImIAj ziI*Xr22BDkuRYzzssEuAoqk1|Q%67&@KV9J{2SY4x#yQne}7LdNnIfl;DvlnYQyc} z^{3j=KGC0Vv!H8##V!}-VSy^&fLRQ|_Pw9UZ8KzTy#di;d>%|KEPuk|#R4s%ElHJc z&vB25Nn65-QI70RuGAN^IY8TgB?@Bf9+=1vFEw}{d-aO8h=WWhg`YcO6MvT#?|*02 zqBrBjoG|YH*n97&rk*`sG=PmRqJ-Wo{FIK;n+*`9DJq?R0HG5IJ@lvuhykL2(g{t` zAH9VR(h?9MBAo!CcLJe=00CY+=iGDeJ9nLR*L(lHx164v}ecvqS}ud|&Z<6nAQ z{1n26V6}~h*Og&gsL=inM~-NJ#D(Nh@^I5G0r}0>>%K#({?FsxlYNVLtD`2>2#7w& z|JCg1Rt6RN%0+GVJva#ku`fp^2|cylBM@(YJ0N&&w02(FzO=k_xnNml;+emR1tG7< zXdAB{sYSfjwlqD<>uuWtlv#+n*P@ZWXrYEA$5lW0>&)I?c2ZeUAjLg(H#~6xn|Rc@ z#dULO(jvU37zS?7*keDip~JB4Ob8gt_G_euRol)|bzoVzV~A(D|1NDhBr5SUjtJO) z{d{t*f(rpWD*C zzY>HLf11i?gZ)3ZjjpcQzP!Vw*ES)Hyh4b6XjnhjrlP>639kaY(x=FCi)WImHrz!s zdr5hS;d$pBJ3|}R;lcQf`wpnVb2TY{XMUFP&B;W?!+w**9NH8FA8yL*lqjkd zUBXD8;SCMBRgm5GwJ}ZwMj|Ez`(5Q8O^~!ba%%3@g_30^sc-yuj|*;p);~zKnFVkn zq-=^jTrT_LN2eBk@y=kSAk~yOk0$Ealc0mxJ2N`fwxkXFfE8ag2&1wr%Wagm^ymzh z91>C)hxj@M-00J&Q!k?QZEwu8SIs<9G!5?47YIx{UM{Z*Nsbd_LptIWQ1jBTK-jd{ z=uDUbQc-gc{TRBz6y zY?CxUu+p`!RZl{MzupYzB`xUshYZ2)LXWl;0yiNrDqJ=2CdN=~i4dKoJXIkSGjw5c zY2Yq57tGl;H=Nxs%_?li+8yZ+%|!wx@cN0;>AVQ9gB^($@`F<}oo-!BT) zHK$&7{K0XMu@irKZ%qRb{T;X9uw~m&Hf?wol*YfX$zt)H8&mH&`bnDCE7iDqBfxjm z{M@gEakjmr6#wimV3Pa?!nifQ)Nb&Rz?h2mhqu$+J`G_@?|WdG9NT2a_k$u+c|$hQ zDHVN92B!G6R7?DS3P}T2bMk{V`ufLT*RPU46w>C=A08YkSavSDTH>JzYV8*fX**xx zRG|LsE~=voDhDSXom9Wjqy1cDz+C8jZh+ppb)BelmL7gO%OAxhzEE(fjVbfn$GrIG zv{49NrceLYJekLxK9OX)5?OClf7q<`ka4yQ(@@>|Otvh4JHhY5Q7BI6udZv;U8V4d zdmNt6Y8dm97#$*<7=iBC9t)G(tv+2L-g8G>f`E5PZ28?#&K1D4YAqL!$+uYMc8I+# z!zxm8tlsq;@_FaE3eSBc@x_U}fOsdSqwR7dt>crr4$XLT%JgwoQmgF+8PawBwDaY# za3|>aC|J&a^^skv#Fj);u}p30V>tZGLbLhyj-(3nC-d~qb=}kDO(wi-h|@!tKnZh~ zrv1lyBcVB?udW2HwZ$+BT%z;MA~0FA`kKXrl+ovVHIv2nL+-F+o2@pLEK6<&CHgTN zHX-9AIE!T~p2_LmMkL5+j&5=SMkOnuq%9B)%~#cbjN`8aA}!A4mQd1u^3`;N_&Pl@ zys;x6PrS&k&B>>>rY_OvQXS0<{GeBiCPj;>nm*kSXS>`Ky|;rjM1vE!q5J|PFDH7k zJY$8^tYiH6g_tvsUVyTIetn>r6ZDjb2k9#mTxUA3llK|>!#ucrrst!#e}a{17DMN2YLquj_p*yG^qQ6d|8F6oGHsZ(-mBfk~{tj4FiuzuPA2Dr-8 z?Vk;ZYzzYK|8CNHZJxKPT* z^65~_>G*x~bLfDy%)p3(7_tI`yBz8#C2Sar@j!j- z5|=7>!r}an6$T3t74)JeH?NPF!(3}(Ob4jp!ouBHaI;WZZJmMwq5u4qC@nopz3!;e zYqQg#qzdIO(}uGKp^c|+h3v>h9u5nClKUc-<`EGJtsNssGGXN|WQ>i$DwZ%}cSrIX z16jD2Ereq5cIf%djL|m+u$*^Pl5%s+12p$v9-Uy5pdx-7JNRgR0X5Z*6Flv zH@()gz^4K?!>zU7(!hOe4izX(Hvon;uD>R>c3Ra&Cp?Of-eqF{JT!Zp^iyQ(y6nuf3gg zs+^0yy8W41Y_I+dDYC5E)MO8&UynP*dhY%Dj;0_E!%g5#{?T?$ymqYy!9i$X#vX57 zz*n6tffbKNjH#tbdxNj+FF8RNb9)w{Rm7X^yL#0YZ31Uv=7)CtY#9}QW)p6jVPavo zI*vokPxed7hDxnBcY?S_y&GIXajyl`yk?6QI(hE5eP0xKFDYeZ+MxC`i1ya%TQQ@^ zSWeVW2oRKemrtbld84pHALbka0``$=UbH{2OD!A5HRLmUYpCPLe$1O>+&auGYYI|k zFH)7T@G78L;_xy@9@hPT!odCdg3M=U>6)=Zj{ry*{tD);L8#p7tHupD=EShLfwqFn z5UB}R!+0!L^|l6?DacS(#j;OSEVgJG@k_xyQYMA|uFLN=ybUy!lI}!tWYS zKjL<&X3T3$sS3wX%X7GnyVx0mDcS9pZbiBo%UC6s_PuAL&d9o`<-^No=kV zp8xtF2w^;1nD&}~cU5P1m4|7a$e%(Io@8$D_@ zZvbqBWWQrr`}(0HPH1Nu`ZBB8N~5XXYLVF;^K;`GX)P6HS!fos!{A+i@AL$OBlM6` zo_!Qd?ba}h%3rv7H#{7biGwnT|u-Z3M5!?ch}&-EkGbafJg1fuBySqCaTn})Xd%N#_ zue;y-+N1WUv1-<;RrOJ8)to-`QGTDr!;4__n* zvm(<`$nh1X3l0x;{aD@{Z2!ZBWsieQxoJ`vIX`Ru>3Xl?Qv2|PH;rYVHB5wQTykoASV~J zSw+N?(-eQ=p`*1AS7@UtX@WD!9=x_fhON)$($h)r@Xg!2U0pR-eHj?+#IeSEyBL^B z8ksOyK;-~BKZ(0*I7IyVBQGuGEB25pJ@3UhMiI>6YsU~Rty0$19XkN|ZDPjDXfpSx zrNZf}3#sBHJ@bvS>S>v#O%^3(%fqC+X>WV-^j70Y!Xv1ulf31cz9zI@AT=;TPz!1oPl=(Z~qzj zf581TEJ-{cL%fgNZsdD(vVdN;27ac^5>1PahQQ;C)>CYAmiPh|H>2QB5QUoO3OP)~ zo=wi%vQ}$qo~hDgpE1=uf+Fv+H1)X8&X@5i+}Q7hlGJS4)99kN9>XiA8emG>D?>a_ zS%Koy1W$b0QG{+r_{nds>+84aAWSU+cJ`$-;W{-vD*wXIoym*k45Qg-Ak}W;PmN!4 z#W8=)rr~GVG;0GTE zIa~h?6{sRXaoBeiWw2v~<;zJYzQ{NCRFlVJxh+)klNVjw*fG{ZACq;>?{YK#)|G*Ci3+S%H}5t& z8t>EHI~s}R)hG6Y#vNFOr1dIQxxw5bv!EnT(-AQhCQ=18?HxTrT#hi!tg*@VIKf7k zgI1OG3s|O^1-SV;qImESpA7^;LX4%iOVNM&{x95i&Q1=U{j*xAYyc@5~Po z&Q8k5WiZ%bl=~*p$JP;Uz|D)+AtR!cU33x=%mo|f2Y-pb*)e3LHt@m zV=EY%Gn_(8c3gdkeKlw%LPYM<)p;InY%Z6zf0ek2r$S`C6Bp(n)nT+eDFktoLLrKSjtjk~GXIC5Ok>{|t;m zc$Jg>8+g~j67|rT@YXd?*()ncGuGkcODx*CqWE30+Sd*(E^VS}B=k==-^QM6ZrYv9 z-svCx3DZGk;hOPSHvYkls^#Pem!v?&(4k)+kjHF?<`gJbY{H*I3z2he;1y${`h2i8 zgQ2H4O9dJvsMZ8lkhPOk#^5%Cy!i-$K(66q^^(yzHB7YB*m5pR0_wkgV^0IJD>EM$ zzU|@|-kEq&h@QNZOvjAF8Qaa|U;+n*cfCT3&F8p(dkC~0*AS1~@dKfg95RveGx@V< ztB(-d780;@I~Psw@^~VHSZgI_?m2o&SHtFb^3B=vS@M*JnMec-G8q|f?oNh)#cm4F z^QsXcT_^fDMPF?vXP~F>$w-><3=#^>$cgdiu;LEvCER9V=_*gzKOm$1*{Q1OzRIhr z3#L7kin~2O(OewvFo$Qe*9u%d%*eeHWgOvtg1$CJ{e;9MGV4U_sk--91IOR1CpN6J zFl4W)2$%=b8C*B>$GBCONp^ODN?au3BvrggANZDcVsJPj&T23Mdst59Pdp1n;VRe; zqg8o+Ww64dYP4MaTsWc=kMo1ZVk5Mel2TfFRD<>!=kEYlkMEg{d?l}fB7@wDYJdIV zfBV2o^fOn}ft1`>d#4aooPuFc(y51t(dFVh*sj}%viEN|$s zhvxS#q87G{=94G4JB3fXqL>DV5f}3p8BYTmnb&4k66wSDFmFCP9LFWd&YdOT(l&Ny zJ^f4i!J?{J{Zmq`FYCewkIya+yr zPfKF$%;icsT+lZX{7_hoDQti7#EbvI1O?r|NPCO87m zvGG=?W}ZC$E0QrXpi+tN@-&~&MNP_cE>+o{gN8_x z8IkZgcRVd`9Eh$^jBQc`` z8}XjjNnuj)$3Sp9WA=RlbUaN_KH&yaV4P8R}KV^rld-4wHDEJhco^{G2C?uN? z0f9iYbk13E1DjJV*B}|)Ndd14%;MO^k0mIR>avzroN^hCYd|VD zCJ}mp<#`?z{@zW-tA3t2eFObY!Bps%yRZlt@i>!x<#C(Ow_6@c;n;>A$dwfYQgq|S z%*k@VAC#cOGk4!<9qDg4^rQL|HKYx)W2(7kUU^F_>`RlJku)Vwi*Oy`QYq(?CROGi z2t+vL|D0=V!)`Z#=(z=+W3^I$EyLaD>k}%>zTfa+_e3RGrh?iR)}Yh%v1+v41-kuv z>MKz}ksH%#J-z3o2UHE(PYM7$>07xikhk}OD=F1r{_ATnKekbb_@ZCRqO^DDCWp>OsTL9TtO0NhOBu7jAJE z6xHOkrRAg*vT;!^F7h1w7S%)IbPO30O0(99i* z#pI7VYWL6lU9!@(b7&KSDXOSEu_P=pJEz($w)|W*B<-mLUKc=8$e(olU}3WjQVlx6 z$Hn8!WXRr7aM1AaAQmf|df1{bzC_C6PWpq1S% zvuGn#_%sD-!RK_U5c5Ei1IX4EJn!FVb!LD4i+!BR7gT81Ub4W%*p(wQGM4!3g!SSo zZ);dp^Zmf!I_S>*Ia4CW4qnlMo983Fq-sKOA?gKeqeagH^TCS6c8FxXa=Xqo6*%H33TpZ4X z`<73qZPeSAZBjRe7Ke99Np1vVqfil-fy$^9lhL>Yhf_aEDb8mD_u?K`)9NZGEG_Oo z$xR!kB!4~{=T1_`&kU>4?5s8n4b>jACRRTMd+R^2F_}Xy@Lz9%8R%{U^!m2GI^VpP zA2*WG0nEMvdZ)@hpzTox?WIJjDJ4`Wr91X|wwi|TmP%%sB|b2kE^u&$sWK#kFBd_) zncx-w4E(=5+GP#yy=uVo_G}9Cf+{cac1vS@HMss`zzEf_*$Em0Bk#$$oJ?tI`JJQ3 zg=0PZZRVI>O^+oYf({Ga4YbbtXeM-fTg$+>!JZA=$k#VItAB5Hn*{c?``&efZm!(6 ztqe=9U$w6^FP0UZ|GY@x@-KmPeS2w653EjZ?^nS%Ce4vh%t4Zj*+la#%+wz1 zQhzu*EE~Uyi9)Lh$`*5wz$=1b1*ruTaE!q+B^PrI{HKG#-C0I4D*6e^WnZe(2jEc_ z9mPs@dA`9;dQIS%s&=Qjn66Y_fD58R>M&LUPCj8X{v8eF+hixC)mNr@oB6bEiZcK9 zx4>$W%tjY55lMZew2%vVw7MLDgEwi+)Kq_SeKj1mhW8rq<83<{eP?Gklo1CFFBu2U z{8=e_$=ei<^cW}h((E^n+WD80RLOphacm6Tu&;kPzKL}fW12>!2NiFjqhK2!c};F= z`r^2H*u2Nel^vy}#Xs9@G>Q2sPKxR+U+A#)7$G09B|h(cKMH8FeA8u@_>T-o&XO6= zujI0OS)Ues=c2@8PdfLd%4zHCuR7_EK4^~V{zS?r8~7glYNF5Ay*j%LNR5yTRO44I zH{?IMk&P1|mW25+^48PcRlwS?-umRXvZJEi?f-NO0aTK98Z`4d=D^)>s+?S`yyuv5 zHFAJk7QVTL*Ed~^e&x;rg2PWcEn_r#ogy$~6g`#t&0JP7iUy9PbKi;x+SGGdda>~i zOKh5(4v#O3mP^+!nGFuESvm)((?a}Qo_VNpvVSMmun)ZK5DFf?3XOuMO^TJiT~}}r z#Bq19uC-Z3Ha51#jrk(Y8KsG65t!52AxHqXHa17awWU5M%opK#B@DW3V>%1pEm*K8 zUj-S9O`$)c#Xq%G^V2mJqUbJW#y`6N;bD0*ZIZRC7!Z8kH*%Gi{)m6dN-b!i9P>Lu zNw<0dzTC@#tIglrutCUP?2Db$ZW4Q$M8i^&p6zX4`Ob-Ejy)~Pr7A&U#GFSPm^%<_5bcvqMp5Xz9N9UeV&&Giq zibA^e`LD3#otFBfGRL|-C(m5xSjvj89s6*13Dy7(Jt30_opkL`R*Tp%LEU9Yhs1(?U@a(0YDe^r(D+6#~rhy+S9Cs9#mRx>jsm!tJ-{P$%2X%pR=@abHszj@sH z{un+-Pl)H6k&K+_>8`mnTVlnccrS@AN5yq#Bxx=A^dz|o!TUlE{Y#mqcnH4qj!K8? zz!XnHAS%1H>^E%W4^_8w{rzedKvzB5^7c4o*^-8%iMv{__+Go7VLID=F2y+CqsH({ zeQC;TZn90Hi)XR(`VXelM zHs}mx_4%gAPpx75btOP`Zz?xhS7NqeZIo-!M?YMwgqb?;Ih+JHSCsY)GhT^)P77w0 zW|xxxi*teSuYvbW0{nB>p>gq#@~djS<)T}Dw9PE0zdlYy>r0Z)e0r&W)vOc zu|B3b*(?;zV*^zatk1$bltgD6Yv&tN=1e|c1SAs<-v~nNv->XWfG0516?oFN?VnG_ z^NV^zj`-&|92I1b`mjF?2wC*8lVl87VNR^Krz?E~FX^~VSXiwgogyf36Szp*2QCUy zbkwuKEc^8eD?HZ};%hy+P}S@5$nB<8mPho)jY4152an&2+3`KkE;w51TiRFASa&1W zq_4q8N2e=js|)<^`YXnlr~JmjLKQ~)cgc0bWnu>_bAP*FF#9Q}9M~tYz}#~u5(D3v zPKtES^3NM#W?mgW!F>649&VRz71T%chAiH_OZLvWvu=g4*mC*JhN~i|-pvU458fuf zqR~h}sin*c?lpST*6#=}GSJF7TwNBWT<{d_w+N^8&*A)h4!~ye_un|-cI?%s12jeZ zwqy_2I#-9CAg3|!J5MeRvRT9{Ir|AiMsp=-CY{o8Ho=bM1wn4CK$6)}^@LXYU#LjW zsiY;{or`3{U%%gD3T*SbHzjE~6u@ zYRZ<^M$*Z=p#aQ3Yjp-xdBL6O?3NAm$qwu?<}yNBo#dGE(!;S>3z?#oIzMS%wV(ii zI&JPFny}v~njikS^C}*Z{?~-y@8*gW(tvv1%?s?5tobDM4&^}_EqCrPFzF4}P#7E| z>3FJf`SwGCIG4{swF3TBy5dfn>fWB*Hs4PtM~ppt3P@w7?=oiqIi$A#_~6jS{Srj& zUlWXj*%i!-)qY8#AOFyD^%Hic)8U7KZpvSw8{g`qQ^J@&-^hRZ!GW7^u4X~LCk>EB z8$CGT{>Ic@lFF(G=nW3&ymH&M>a844j;wVqQfq$5V1FwTu$qj4MsSZ)J8R-OAMH3z z%0b~C3gpMF8~h?4#6IE=)Bobt`E&N!HhKv?JuC>TesDp^b}2@%LcN3baNui3wbo4i z>LW2O0tZ}3Bt*RsQV~S%6~*-!;wTqDC(DC%%83;wb4|?a4PdO+>yn^Md2zY&HUoyT zm0ndvnv58TeAEkrJ@^v%dN#ypZI@alvu)QJfM=ts1!9ACEJddC&L1mE8+!#eTNW`# zj6-<_sme~ao!}SYgL!$CPrr+ev_x=)e>AjjowWpRTxb<`g%GLsgnVgwwR4;ghm#de zWWOYFg^1XtjT4%A)2y;1Lp8-$ctIv+kJ%=T?Pscj8_xsR!`{AE9X6%94B;2f(K4;Z z0nL^hf+s7dkzUV^d09>dv{dO%)hgA&12u+&8BX@pzXb(!MZ#8KXYse^% zIi4mBbC_?rkOT14eq@v{LnH{HED-IS-)$Wavobgea+Z`KVTn$kfYj|{dztShzwI;> zBsyLxw0bc@lY!lTKnoK{gBl`E2r>o%y|*Idwq%l1$eugNBBUi1S{-QZITPKrF~Qfo zALGh`WDpgY+(uViTW6PwFv+`|XL_e;c+fFhWs58s)w=lbwnTrd+!rT*lI_&UA5o9k zy$~JPHNO-cHyy;knN@j0BuB|3U!Brm;vd4?VSdXX*UaTE~rx+uCmmxeimG|U=EEKGGIsZed2Ux#*LcWm_dS$UO(TV}Ka!U@_*PNT zYxcN#mvp~Q%ACWK+=8cq-rma40Gli|y-_96$Tk6Li<@VyGbv~O{P@3x^?W%J48mAO z`>m{Ia7mP}p1;xuhiy&b|9wvn{T1Szp0XIVi{azHFFwG2|F6Mn7hxjL02HxMAMgmr zsVkd{es$?l0LE>r;l9j|7S*{ncC;4ezeG*E+HY0Vjz9YrVD!bNqOCB*4&Y(0&-sZH zcd=XSAh<>Hv-fu#1zAV1&sQYL74Hum$aah$KeMzZ!fZ|@hBFf1lkt?RWft?`m&B4O z@^&V{^_MY6stN2=A4QI1-pPa;xS|hb0MwOYrxoPVE7{VIJs-q7UidUPPZ%lq?x#c4 zYpds@ceS^^Z_xKN@nO|Z=KzG;o9>6)WZbe6p}G2afuFR)2`I->QUt$&cnIS$$Un4) zoySuYi)sIMC#1jrbxS(gKK5m& zkbR{G!NRGOu6y|=Ih?0Zb?-RSn2?qDoCVl)`AZp9T?{4koB@O zyw=QFUsj4V-;8y1iX#-oUxz42Je%iD=ucwpotf_N3!$Cxf*#b#U zg)nm0mh?e2_vxVO)C}sK-U-QwAq0r}R9@>&Zi-I(|Fo|$_fCmAw7wNbyhXq%@k{)h zI>XqF>afHGE5(FXtq;(Br3dOsayf!hRc{C%x(V<`M?I&&;Wt#u)FkffQNe{s&~Kjp ztFi%MgtduGY85`9qvx_@)U1oD{>p2$-$Nz_CIs_+gXf7~Z7ov=p-Z>Z4EJ4WY4lg? z`DW@C&kh_zGBsO`p0~FMv_T2kx#FKa?$O$$OuE}0ky5D+KLR{;&*-iA6gnnF>|gF3 zwA^Y}^{nH@Hj%RCaegY#jB)X(F?z`!UA-{dtbP_UBE%xx94rZR%^|(|SRtNO#-Ht8 z_2!C`Daa5seoZh{lmrN~$C8~VS)Uec!AE$kaatQ}w2dt4*c=yB`D3ig8N%G(2q*7k z{Ik8dp=q)}WdNWZ*8M1vyi*MvU@3QMo*kB?JCJ!_9*yOfe~x1Y93;x7yvTigJQvyY zShL8pN@k1Zn{8VcTa3TtqX=-2;|%mTJWd<$(E1@&w`W>{Q!{pMj z!4%%n8d;lp1IChunq$PLw^P)N$DJO)7OmSnWo?vcN!r_p=v;F0-?3@sT^!2+GY$W;= zb#JWi1ZE{Gd&k@ITf^z(1$hn-R{#7s%`ClAshZkXJ0Exy$v%mWJDK@vVW&6E5iAox z`##c$SQ=t*5oXif;d~J^gei{X`NG zxQ1bw!NHAvWu|6E`mBbeMZ)su?x5>#t7*iq`$HfZUf}0ylA3GqAn8{QXhRNcc^qxe zmpE;CH42(?x-U#xo%=%MlK8``f-O`&*s+irn;cSugmrMKweEa!r`&FB<96cRXAaRx zxsESr6MO}j?^9vLp+mj_9FAq7QfO!V@R2n4aK8YF%S zZvllw&;PxP*Z=d=CHQt*P43F)vzL0%eFv9x_B)ej&{7ol?Mvz|7~}C6mvxqsr4h*mo_mX?~2sfU^*+kJ+{jHW=DJWKgN{g77o(Q9kvLjBL1xZjr zs}yCmeh=l@f%U<5XgnTclWc8!h~X^mu*>Hsip3W$`&EIe1D$#d?%8fi17G9cf9DkN zH918zm}zcfl&x_((PZMXyOz14QU-iPht3d~6e&gIsNe`!pv61`msdUpt4Ek6+N(?^ zosoMg@SJoGmc`zkix{li2Euh1H@*R+%PPX5n0FaRQ$IihRomy);-+Agu`0}`iWPRX zP*+{pJ4u@9eWY%>1)5vc62;Z8)rA+d$t{+%w}I#?UlI=P6bGXPf(2AJ3Q5+d|1s_83KE= zcEpNtVLXcDpGNMaI+FjbJ;fMAc|KbAF(ZHHwdRJ_s^7$_w+-=>le-4!q4SAMdpdIv zT!&YyalFby$Zk*X@T>%9r8w*s2Q4|;fjO^ZaeeKN4pL^{4+^l z<#y$;bJ)jeruV1%r+7epAns_NaE;!!G)pY0EkUfsj3mvoE( z<(#XT?vb~J4_ku&+n&23mTq-dLWOz(t=3KOjs~|!4y~ta#kQOgJcjURxi69{<`39L z%N1x#+Iskh{O?qfJ|U#N%})m0hT1?jdCs@X0@}mMKX!$OeaL{L{>5SCBdqKMhBJu+ zdV>(o!3p7ef@;yG0akYFu-tsY|2HYw0oOt$+p30uGfcRi{>0wcc~?-0?(ol0o^Ekj z(6`in(w34Iuo5DRjzW0wjO9a=3ADM-U;)arqEBmiP~Sgk(DD2QOM3e*`@BQV1~S&4 z2p1+!{y=pW!g@yh}G2( z8nhvJzhrrWA zBX$r=si>}jfREOG$pBnvZ6=0-cwIw{{7D^64+qE%KMou54%7`)XDYw29mr?$R$>w@ zP|zhRn5d0l?z*S0mJP)8TSO8&8`i9$c&?t>0nw1bOQ{Aue`eh0s-BdPp1~E{dKYh1 z9##F2-Me7`Hi)o=U4v^7-Asa=?7I~TAZ=kSlA9TNPbD{xkW*Xi0rw2XyI0gTD z#rnl(OM`w-?T1A5mMZGbtDLtuWOCDF21*%^BD-&AoN-`J?{-U=i2YU3ovnA+^c$}^ zNVesfUe*!4Ff_?3XXRzMSLS#+di;Cium-3+P@X+3ahLFhd3k@4;@5dKy*EgT5`_LL zkHQG2Gqhf_?~k}J=RCi;ThklTVCg$)EF11L=&G*^=L)SU#LGJ|vNfDX8ly^et(0 zly}NF&g17jQY0WGJbBny1C)lyj&4Ak1gyc)CZK;e7*xFKSEm<{M0cY5m#7NyS}M1E zMJT;#$L{T?#*u5dOxWyTsmq`%{A5Fj2Nn`Ul#x*K?=TJ-s!`Mh@EJ)z=-8`nGHQzszB`YM@(vI!=ovg4 zb~-gI%hbPT)K1+HiMeI+vm3pUcJ3@#TGVH~v1x9fCdMgbZ4z@P3CS*#$7^QsMGmBzq-Qs!PjZ^ z7Yj3eoC>H&?0(&8<*wB3ssU=Cx-{m^sXmaX((2M`Vw8e@gXPVOFE89d$Tp`~*mYvk zN8Xu7Yp~c4*Q~Sb4m1xO2jWL5tem@fdaV#A1Ev)bcyTqahYv3JTlWdADOLpg<*Y)?82!jAST z@cb$=dI1}))JVSVt<(=3loYK0V=$&`Q+)ak<`z~Z&t7)mS#Lw|x%8dM)3=xKsIIBG z_7_dX=^JO3#rvg>2SiJ|9ePW8Ci!TCjZR1qStE!1^N#0E(EsWWg27QY!8VhXMQA=f z^_^~Ao;u3CB>xy08mi$}kN`Jm1TQn@5Lit|L%CBJzF4jl6l>l3wx^d3GY&bYro-*I zoJBgP{gtZR565p*lQpVcNRR2eyd`IqUNqbfX3X-eY-~;rz}msny(y%c#BEX}`;|{S z?Qc=PH0hEM7wZrf zJ8SCW!q4Qm09oPS)ym8~R2(bwSL_6jw(}O9+Ao@ijbT6Kqd)x0DNM_(SD08+ZH}E+ zxeZe|e4v+;R4&o@sxXJ{!bE9`PRXwA9sl6w>+)0PTY({8182alP^D`2Oi?K?C+m31 zSevA$veCx%*g;mmyqrOO4&{H;k65Hz`k)8l>TLWb35-nOYUt|7x?kVTc@!(VcXbsK zev#A3vvC|j+CN23+pJY=j^k#Jt>x=6=AZ_Xk1%i72%MGOxnQ6rJ=4ROy{wF>v#D_&)9SKA;55~ zD|dj!4v3K%OgMWOStFpFV8=lWl?rS9u}KAA0FJ&&J=D70^j_72!M4qN3LM2>#~t|> zo?^4-vmDYfpimTNd&6$OK47Nwr6^e@X=T7+j`?0Vg~(p)g^i-OW_H(hmM7mgNXHs_x<40 zZ{Tdjo!@k9Ri1z+{g>%SVZj#Hb4^{B`q0w0oOl)GOvy+@g^}wFs|0!>g!Os+HZzEM z)M=@tuFUSw#G&e;0K{TZNAxbEI16k3%bn)3{Hr!W7K4B9h4tUoj4Nnf%F@F|BD_B= zTvU69b&xuTGiRjf4Osa&i%X1lDT*Bu9|5}B0`qx2Pll9mADx|GCE1xrdmTWF`WChLYRPheFfeVjOQ;V{#~Bi-8q( zCf3-jpW|WPDc2D>vu@wS@~?$@pBxKr$$43n+fz8UIK@hy#8ebCK4G&m4Ox0wkeZw#j!KzW;b}vCfFD+&Gj~)gZsJ- zRqn(Py4{IkKBjeG$Quj=-ZMk9)81kD(oRdu?JhI}Cs_76+|qv*O~sqT!!CMY6MUHj zL*UWnG`w(5w5ijda+f)2is}nY6(qVrch42&fXbEjsL`55>rho>L-r_j7(;H%}4IePJkwR^9;K-+TZ+jbMf$*)N<=Vl)$ho?HQ`%FIgDh9SaK+ix5zY`~|%UM`Gix zB3SWj%W-ZWsz--JIz5z6>8hYVp1tx!365~bz?+Ns;RDj?W~CgO1pWDIfx#i7!_`$n z3_*6T8L!LpmaC&%>Zn~$#bAL)9X#)r~`$oHt5?-&Wyps9j3H9;$*3s7a z7PPDT2~4o(OXBe0WJ1E-&KN6&0fyoY@bh`x{CQFbo=p0~E*N0Z*INl)@`OM5qs`65 z#{Dvgn7+H!?x-WDsCH3Z9aLUxc3JwT=qS0#?MfotEkZYXn5F>eFzOFiO~pp)YbEZl_n#E#u#M2G0a4#;gs zRZM2Zm9jx9vV{fn2So!#Gd(?d919D4WLgt&+RsnOE)dxxDw{o&JLk)Ll)2pI(^yWp z&t7_7im9oLRM`4E;mP40nh`@PLMD|&)8M3wT$sP*)w6gMz_$}_7Zw~e>`*i#G5WMN`Vjk9qc^g zH=<5xpj`GUYY%dW#a#p2y3Effh;sX~nS6myaQw<+GBBZFw+SqpzeHJGXO#eYj}XgK zfKOl<@~hCS>|$qo2Xtsle6)MI^|rZW`+AXj`#0;@@*AFRw7} zgFbl)_~mTe_xLLa+Zm9_!^2nAR#DAqEiJAt>~8+cf4jj(`5OWG_8d5Hwzqw)^$Kxv zdV5b%LPKJ&I+O2&Z&&$VX6t}o5(ao^sr?fKQAC@zaHlq1Fh(o323#i}?>kat- zh?)QR1(7GeY=thALV{$m-ABdzS2+Fu^nMSzPEqo`(rm3v6dSmsO)+uv?FZhNP5(^X zW%DbyHwI=HsK(>?V~pDm&WF$!6W@;9q1OD|{E+H^UE;cP*p+)?a%3oI`VWs#+Rk`T zV9u~;Cp@T{y4}JfZ)kaoV=YZf#HNpug$Z8M*N4YG(EgmBiqA-X&Z)@0!AP9U+ECzG zJSZt=5s~8*BtJW6Jm}#%&KPk>jJU8Q(d>1QxZaP^$uGvxgcikYy`M$kw**B({fVl+ zjS^)50Z{i)B2ZYe8y@_rnH(BWwwj(<;&d{#S)!9D(K-8fa$uNDh~9YyV4k3YKS;K? z?%K##$l~%w&zjsMayT!`_P1pfVcJBFXIy4|!1pM9V|@Kpp(?dFZ7<3cLG$}KSxRc4 z@gIOXEb_LJ{B!l+pO}=%j}i#5{pWm#J{=DLsAE;1`HRbBjN5zlke9FEp_6ahVcW%x zuEykPW(;TAD#? z(Ow6(%Ml4U*(ang=(whunnLRmPdAgWjMnZSwTLG0#f*^BslW~fM-{nrrzfRpBZLe< zp~|ntT!WVagQfbydijSRdh0~F(6ss)dd6NeVF4IV_1$p3og_POjx1r;@@c8qYO#7+ ziWFYJM4qW62C<`>5*(rIg{R z1wVe}>3l92q{$z;k5AMn{kNhF`|#-$c%hX3(ZJjNJ$L^ZKW6HS$BkA0v>~;sm!-Z| zM6!{wN)o)-8bKK&&hn0Xs6e%gZ%qCWH;w)7gdlgrPz`Hy^TW?TNzw1OLf~GqAg)qb z?dSNN(1D+k?^eYz|Gg?96?#uFRFs+8#DmEKEzl-6#D1ah{kWS3NWpx}v6x4D8Bfsl<@;ku*XCO;5X|Y8R@2! ziTU~Idr!Ze^Q(w6>|{EbK$)DbCquV)6yvN{9!j(6jB>z{W$fy5;FGhU(Uy(&++3Tz zZuRh4o`h{~Y%K;t44Br0$F^pSTnp)5vwiSPXPr@+lT3XBw6M5CzXDpfU1@OM~SZo?CZ(%%WKkDQ-->(wejoJJetm{yCD zB#!y^xD)PD1xK3Q&9q1`n(?*rD+#^%u#2sl_Bt=0*!L+}^0d&D)poNbHg_BJjjmo& ziLvlpBm{)2H!bLf6c01*TOS`5KNJa6cJE>iX^j3zv{0Xz4u@w1th4;q9JiQ94HxUK zb-|yivVE(aijEn3&ziz@U@*_6*ttv&Q>CfiE68mb|1k=pY0){Tjc_4g!I#mVEq{JR zXzw&!vaKt)9mS*$jIV|eyioSOv(ANQ=>1lS*l&9?p_A54&040V$=ghfPGr)L8>{nk^;ZPPUtzVP>UCdLk^bW6Nlcy;{~-KfM&5cH>Rd2Q zw293eO?2@4;XdPWRs$LCiJ?7rOYGn#l-Fll?K?4^si=rwAhbe>c#${W~X6k0oU? z*oXnJ=NV*NH!BNTfs$;ZHULS?doIS3lz|uG&E(^)vfe96PV7pGy6q6T`nGFO7I#wi ze;IT)M!dwWQ02CF6&`$3%d1%+40<(9T72#D0)`H%-(uY!7T3bCoIadEJaX-HYz-7M z`MQOs5&JoyA3aBa=~$?Hnt={0zVUIk{Zwi1k7LlSAI^l;q*O=0x4<&pN3&9&>_!TU z-io+S?C;ISC4R(2W5&;H0MFcXIL#*w5;7v^p{a7K1^pa3DG}`$OIcp#s5RYttTi9UldWb_PP&c%>x0ofgnZ-M#mH&Tw z>LICXJVj?)N^Rx?#XEIOI~o``3$JE1pMrgRwIOGg{eL<2zdhXbmE0b58y&e8gB5I~ z7xgZMdr|rd`3m*oXS&@0aa#ohvn@+C|EoLj-^=6QE#(*Cc)IT+cm_#A3VmCF$b;{f zLIWBE%&H;1m8kcNZ@|qc!S3JJwpM7k@Yl{KrR=<5NcioBFkUtv60y+M$wA&5L|o(? z;&liQh5)M<`iH-@V|33U-@gAJGjn%GbRTpMx_FBPNX=sp5!5dpOdy*~SEL(+r3e27 z?Z1)zN8rGb`Ck#?e)Vv0Skyf`t%mSiKzr3fcsgJ0e4m7$O9OsKE$1p2HMYZdz;`{6 zMTwHsqyArZ{3ZOM&Rz{5cBg%-*Ww<+n|kjk0jR7`!IkdNXBkNPzxtQo%-lX$HyLr` zu>_<1fs09_48U2|Zu-n1+LqlQ=z`p$~Jzh{J|wC^R$Y$CF~;x{>lUE^wheNwNK~3Rpo!o3gXe1x?bj>99S2!$V1YxS%eP8-LZzi;jJaVC zP>=weaGYG*u6!Y#Z^l(_S;gaVk=%=k91P1LX;eM3+uYaJJ$VEKe^nSNP1gOBP4cY( zE_UwIP4rwCH@ET=jtEtSw?IF1bQn>75d;Ki3i6MET|i{lSNT18VxhgaY=T`vyxCVM zr+zQF?k`bjJ&M{$<~N69z2n{;^6=YZFBvypPgqISUL?3chc*nBu4m^c&zs}Mu;~Wb zK3qy1-~!n^n-o}mD9L>Vgm?^AnkHI$m`q^+(^nBaE3&7k_mN33qB9O6hrGEVlU5K& zZ9YRz(0>B@Z#;Nn*&UB+hpIBfog=${c$_YeUIDrOsCvlecqmZz3fvGv&mf-Qa(wu5 zh$uMG)+u4-yMnSfj5z29zbBv6{U6wP`Td!B>^jXxmJb`-Aa(~3UU+olvHw8#-de!n zUx6HQZnS|X>z-znz07<88qgD7E5vRBZ%KZ?Q&a@uJC@|%j+j#*rR%UB!g>LLjH-}h z{BJOYBw)yppXQsbY>7HYybCAC7KKmW09HEr!4(J(=IZPFCxrNQQIWS60t8^m5hqRm z2d-=*7)Ef1*21C}sJex0v8^Ra44-o0&P~l}rBi|4Z)OCd} zDUd0Gd64|k7y?QDL;b(I3c&F1gzWD-;dKi6s^HO0ns&TtJV3D0AK!<6;M?Y3S>(BZ zq}_~?1aW}hDOi(8T}g<6fwubd%y|K=2gvvf;_{l}R4l#u3eG9*NQyFPFg8&JZV%L-(|7QgK=Ym~cU?!8LxAWA1v^F_zY{tNM zdTAH0@Chx59a&r3K@;#Vvb?+E=>SyMDB_FR<0%Oika_(W0aXEiIk_fZWj7BS>D3lF zyjk5tX4j<7$1*S79s~?!lXk+r(1$!+)BQhV`Lm{poVgb?FP97A@4560l^|^l{2kOv zTL0xX|Dlz&{g=~?8Ht+D@_x+i|HQX-Lo+pavo~VVTF}_0XZMWa6uG(P7LRgLohdQM z$U}zs_dee0f3C|G65VB7-=KWC(9#2DE#!i@age|I(@9@5K~$;HIphM2_U=aSv2+fp42oLk8RQp< zuB^Vu@ciRev^ORWGaI;%({Xk{v=P@&x{efd4h)?gtII<9~!U@V^^@WMQ%0 zl9(cWlPT$W?#|{rj*7IBElN*xJfW zmVI|owE90@_rF=of5emhyoif%SuCp3!!z7x$48#Ny4bJ<1v(OIdxtm#lje;N%^$oR(c zKdJHm)kiJ&F`Ag9T z=*P$#70Fho9Gqn@@%AYBgbIB>D9ZCcg7B*Fp7$NM;V^I-!Eh>L`6=u924pXm#s_qN zCDBODqO#q7pT(13|JOI@{iP?)G&b^p-J1t@{-;QoY;wLj`1Iww_?DY~Rl+^U#wrr6 z7jdhXLIbZ*XsNyGrvEbyjb(AI>y9*l;?F(7 zkB0_fn#U?>>4~el|EuZgcd>E^M@sk-k>(XkkU1o;s=geC?Yh%Txj#bovPxMY5wI%*Bh`kM(6=lW05TV&v(oBuMsH zqXJ(@@h(h-oi6z@AiyExdh?^`iIYgj>HIUw5AAW37(V}nWEt<(+EOXc(}ll|qO~ng z6BlV`um=HuPXPKK3dyHfzh}x(!H^Roz^<@#LVGFli_JIyGq>B5MUPT?q)S$yHN<_TpYW4yES#n7mcDt{v?>~= zO4z+bfEg_Q;wl<*Lz=$d0~51rsIQi`D7SSJuW~1g+OJss@E?Wl=n5K{zNwYyD6=HA z=3c2`zmMLuUN8O+SvY{87>1NK=NjKOtG45o-Lmo*Tm5>S^={fhNYbl_rqz>^C9#o3 zv!}W*PaevZHzp@+F)i9S+F9-x69I@`X;tGL>~7wl%SIxpZE`x0_73WEdP<6XW3vJ33NB=sxU-F`S1g||;xh4eg$k;i&?nU67p>e?Pg}&xYem0~}FNM?b z1>@`+u3$RqkT3l(G0dN>GegtuPp!i1r;ht132vL<#pA!7$>*Du-PCr?eOndAz=x_W z`YF;>NioA=@I_{lUa_}mQl!5WHd$-=-)e5t zg>f!P^MLK!h0?n6HWqIjd$B?0e^Y%N)_7FxTV$p;i~_OypB$vK2>&+*@AYsH)OI|1NdFVu>1|nsgr`FP-%)BFq6jL9c4d%)fV}UeNxNQjOJaF zHhkFNXFiq-xx?Ii%l=@`J?u`_{BcI@c2u>89Xw^tqV;D{?GPCGeQ0aEnj97p$Ddl| zw;viBFI?kUO_3?kO;1EdM#l?_m?`vwiz>^U_Gg7Pr7YTmo~WwF04XM|-{`b7NA8N6 zo4$JEL-AtZi)9erNF3(-Wb3qbnn51n|I~AEWQP|Rsk<Ehr#Tfq50Po267X;Gr{9@o=Pq=uv=oi3jTC%_08CYQ#wqv}D8_nF}B z2zSqs{?^s6L$}B6;pVMDQ?mJa73tnnJ#X!$?(%>k|5A}sRvIRr1L7j3lHA(Gwhob% z?UOGCe~3~us=w!75dQKEB_r1V`7MmM%F_M$J~_TTge4H1&0kL{xzJn{OS<3uAd2F-rEo+G}S)MM@)`p{q@?q0ysgk2g{MT;6WgwUu|3nv%K% zWI_G#eOnQkj@o6zXG&swn|Z%RU;owKFcELg4>oyMoKHv-D0NyYo8|tM?S<^m5x9ZA z9+d~u_@=r#5w8x2n9JS_)W?=puYM1OCsMaG^&*b`-acVsO5#p7H3>kLb&xo6G&jx5X;m)w3>BZO8dTq8oD~UtUMj@Qml%0OW-ePw6yo&}h7v9173b`%bo^GTVb$0#BQ3t)lJ-v_*yuWaGnq0M^#5daePqE}b zYm=4Qrv}^>#}|r-Tbi%Cd8W^9O!j1ZuKSphanY|$NdMXk1k0JrAM^x_89qrplpY8$ zJ1LJx@K5FZ3!;`6SgvG*`X4fGJtKw{7oz4ZDjda7w3w9B1)j-H(y#ov%eSe5=ycwGgSOLczx z7q<0Q55((B+V1P#B+V~^Yj4AS90CdJ`{ z<`$o4y~U32L$u$ZK?8B(`6+$Hg!PS){*(t>U!TiJ=eo{=g-gp_=RpI{cONS%CP={@ zNJFu%x&)K#8T^nm(Ept}2nk&pn!;+FFN`({g z!M4;TMuS)A95XL}~d3zY%g%6BE+_qyMYb&j+!_kikJ8u~59-aL?tj z-oL|{CdT@q-PdAWo&3XYn3!)q0iD?$mKWUO$TV2eTz9=J_cpHI0?6)j_7~LL@)M%? z{%ZZV{?s5jGu5QBsBDcWd~y=}e$aDIbg6IPb5h&^m-JcrLv9oE4q@0R-3V#(AkDAW zd(AANw8q~ST2@?h*f4dui6(QE)mUBmXJW zz*nxGfl}yvl6?0Upr3>s5IU$olg1$qr^QO{UMOsB1uKC?00VALiIfI6^RiaF@65qL z#=!x#@gUj4*jTw?n`r1i3)HMnDy*+l-2ZmBTNv%f6S=1?2h&mg$kP%VN|(f+4cKVB z{ZjHOWo+Fc@SZQ-z~Du0@!i{+OW``y)9G@HgHH3?0Fjz&yPwQ_{4IRM67gez=71;K z_f$?)=iff9C|9X(y$~C}3N4HNa1yJE+DM+`x>4UcOLFoL7P+z;_tyM5-O%H*R{z-6 z1b+WkaC2*ZR1&vjTC&L}B+F+Gan~4O*w~o;l8~9XniY0ZIoaC&y1x0|H?yVJqJ9ss-wx<1n zhbmTWF6w7Ybl$xQNeSp_qcY8~9`PKwfYd)7f?68 z0br!754k@#Q2c}>*@#nCDzB`asN@=F|6r4hRcNhpZ6t2ZLB&DW{CB+kcqq|JhQ`ioa!zl4FB7-v$j$H+0nqxKp24 zAL1X%^&7sE(Y0*cBr9Ii_S&4!_%}7S6Hhe2^fRT=Nmy&3r1b@l{ltQsn#K#w{HVXS z9b&!TsDUg>ddDml4&k(-oi{qQK-v9!;my|U6+WNd*el@c;+pD$daZdN!5jMCqwAP@ zzju4K$*Z8hGJ8mbBl+BWauvCuD^oD@BkLG3o7ks}7THnOe7N2h*CW(aTWh-(nyV;` zGV8Du#GXtGfj4Z{vd+m0NoKurx7gRBnS#Wzwj&8-!tBi(J&U>)m}WPCB87dY9Hrmt z^&`$hLFfzBra2keXFv8!W29M7lbJjAp*^RGu2O79UE@znmlcM^t-X6|{aQQY^9s0a zAWK3^-5n#4DZ+FnvfL zvfp>0;aOM5vad8HGeLOmnRNew(kGq#HZMbJU~G~Omm|thw2lQp{t#iSSlQ+=<1Adz zl!W(a9cm4@{QQMeu#a{+eYor336xO3J`_*+9Q|QH39L4!nE=ztggt@taO$!(IJ`f4 z`mj?j)X*a2u43Z^ASqW;&Tm#ygtjAgp0Q2|@`6z5wDlrSEQ4D1L61{{y%Z-}G0UE( z;0b-%5$ zkGo%Do}>=`ZuheF>8uXD5cJx~R>yrmw8>8s63-#kvWzC@GYx2%$~O!tJEW(t*l1>` zdRS2xR^Jp9O#CIdD<>T^n&@?%-xu;)QRz!2BM$)4-N||P0pPxLyD>nLCcf7jXEe}z zo5YykvZuT2G7w9K>p8Yf=i{1jFTX5&!rXy>nc8s!AKYcKDwzaj3ja34|9Mr{KJiKA z-t8_7<<3y-$Yn|42e;qsKCir3ygUSXIdf;;wXo0Lj0IeP@wnjCsMr{}o%&MzK?%;{ z=<$0XMg;$|qa^iA$EDT{*U~pOts%b&vR-=2JQ6xbIbdWeYResMy&F@4zVPXJB$&6* zHI`KmAVuihxW4uf_D=7vXOW;cHE>|}%4dS9qi354`z&3DMR(l#+M(SiP0ar7 z$9+l7dcPc=a@pGFI`QZ|(?TH)9jKyrh9$K*4%n_Q{z>xUC>J9LJ(S4wO8AC-@Qcr@ zlw(ed)UR}4%xT;{*bFM+hpA;{((1hdPurk|LW(3-b?QQVZzL<&jbTJID`ieGC|_KwmrlNGp(JgjE(_=9|) z3}pN#+w&>kL}P&AWYp>)2v@@sOmULUdd-bcCo}>5pC9^NsWac*yCn=OKb`_oNN?5= z-w?us*t%AkvwFw<=Z-DkTJobMMzH@I;uiEi-5vM0V_%Zh#zt!tJ7BE`7dQx(y z_NiI6Scu2qI9VqX#lmbgNw*VRS}*L}MYQSCFO0CHH}0w*j;y|VP;BZr7`&DrZ0S~D z@iJ(0@}uqI`0C3zwpq3}zDiZTug$D4i_BE!|0pr{W+1(@bvdoMg`=6q z+`XJdjW%HGK%mLhJ31i?e?Np(778}h+i1(wzx+0TjqDOBG4~`X+n*wo**+MsRPKXn zl2O&5tUtk@+r7bDA7jr7JPL@`rN`QeEdPv^Kj`Q$jRAm`PVB4O)GKhF8yqNvF*D~F&y<8 z7&m9TrOHux5Tl6@M?Lk==ulB*R9boh_bT3*?D7YO9^Y7dL9X5h20emP-A)F7!_IcZ z5Ej2w`Yy|}PTQ|c&rD<}3*b>m?(*>^x)5*JT|Ll4=O_ID)XGK)OW!F_w9s;xIG}j$ zxTk)%M8Oo*8Fy^-C7@7Bbisa^>NH`MRne_KKSHItRh6QVkOjS%Cc#ZZelN*p8s0&m z`Og?jY*Uc5y$108-biUxwXhTc?^!$-t^W4Ndx?BMh8YRHEmIwJ(k3kP<{@|y7g&Bg z*PtTPMIe3C?0pZCb%&m&UZO1e*U$TJJWWH7ZTAZ<9L~uqv-=B8^V`2+oo~Vkv5>|{ z1rxp*_CIX!ld2H<3U6w?okr3P3+7#r4Eq+F{O-zjKLF90$#!kY!ThM&`k=3x5RWn&j_@lb4Fo}8GFGK0oX2D>S zmqb@vjR9>Uhh=g+&PHeMPMb%+J7KCSwxg;$snz$csCeyn# zK>w4O|I3wq26dA@q5*g?)|A!1)n}3G^XNziJt;6GVT02xhH4rOncIlcCV;k2`gHCM zj>4~$70*##zByc%JPO?FV}q1_NfF0^C(o_#IM;ZnhI1{gLwZ=#TP{&&atcWzfr^CO=4W zC%}{Is(tgTT785X+4zgJvXzwkPtH_81!M8hDL$RnFr5zEjja33eQ74rY7~}NBFxbS zTINq_y>eb>oPXZaiBVHbDmy63_(SaW=KL^y3^_$hZmLvSz(izK_Nt8`P^M0}h0Jc;y$iS>eD2s)Dy6v();?!N` zoWzyRP@hI>Mj(cqm&JryG~;FsAj@0UFZtzp+Vl0s;ipKa% zOuw4m;VWpKax$FNlRN>TH{MMQ2Tct7zLp<1ZEz-tdJ!8&w_HZI9!Gcz^B=W~A1#G0 z$t(zuW&)3Vb;1CwS0pwAW!#bj@PmIv8* zJqn^>b{UWhka)M;FT29JLcQR-EM-=&Dwn*oH;zwmi=$=)kj2Oc3tt*s&yK6Po3b%Z z?R*kSl~EqFh(G~PQ<+fG&PP}R&P+@)&(U&WV$su5ix7?5I;U*kwmt5iP=;D@(bgxK zwxoGh;x@x#=BC|tdxI+!IIZ~uS(hg<7BFEcfW(?~EOd<lCKgddnvQJaHIrybrpt=ZQ(0Mx>sM*V4c821NWR_v;xeK75HKzs654fqv?hO-q ztzW6{iKQ#cc{B!Cz#4!y-86v9IIPV(L_akw3zMAnnVV~tWfEdC@PS=I_^f2glnMs^ z`h&0^zUbPs(o9%hX|8b_u6M835uQzp_CqIuFywI|b(NbjebfTXftPT{Zy+iAtD8jk zy$y%2UpH~wqdPFUay!4xNk4l@_e#(NhdWzNd4Zw>vpug!dHJ9T$#A9vRp&OG=fewq z$@|oYH#7G=O0gOf8Cn12uj;4Z)an+cY6pxV8=xtW)u1BmAxKOuE^Mrd9fy15K$|F$ zm}=9`RChPmG50Iwl(`*yz*}u05&LUV_QNiPHrsl;&EVe-qcc9+ubqDlz`WCu$AHyll*+{ymu^2o@Kn&c zKAO+l@j;y zidh%274%+#>&Km$GaaZg`R$(+mV!?oqAqsBqeILjq3XHEDv}~&=!;9+d{@R||0V_a zIeP`4qF@oJ1W3OeIdm=gL28_dJ4J)P&*jV1q)sb??JJ>8UyiIk9FvH;uc>9CK9VtB z##v-%P%4tidE&-ec=NvU_JID(41<>@M)y=*i5p{`jZ0D7LuB|d!jptY&Q+f9XWwV- zt_B;P1#mo;`WO#lDAS5&glJ05M$_B58JePBFR|kqAT?+lfkHf13O|HFY-lp}e>qzLWYWq@gK+e} zB|o{0dfUJmJzh*mp+ad^GtuAD!xCt(hE&9d{Q`7(9wWjQcUzQ5T6x z!9rT;`Bu7OMdA`LMc+1OiYn6 z@RJFYVr93F-1Q+S5XWaQ#yD+w)O^)(tCL>QpG{Sd`v0ty8%nxA)%jwhR8x~w_`7cC0} zB7o_{mQn+2z!>0GpWH` zYp-bs%iqW4_mrDE;30q)002B$H67VZv{)jE=_RiY0LXO(CsC=UnHtsJf~$4Yh&b7U z)1K^IRm{SvB1ibN>_vn@O$Th}-y9Xc|PUJ&WZ`DE46!lasFB8akW6h6tn<44KdT&wug6j&>>6IH$nJr?8|0$?@*HB z@@epGPe2(5K*mSmjb?PwAqiz70*dYVAq>-R&KWY1MaeUlu)*A z6AP-&;*<`KcZ#=igP6x7z7R^%b%XhTAi;xh-ct-D6TDhMJl_dOSoa$ zV#;rF%Mj76GUW?t$R)>gUrS=Hv^x)M>~H~%hSKFDeZ1FUsgXpfQN<$z*_`1`nE9pY zBf`Dbtq~B$wBcR2fnHlKskHQ4N0JiH3w>za!khk|0?l+4BQ063dq!XD&IAudnz=&D zA9GwhrrgKyQ3$4lsuAw){Gd!%H(77!ZL%m3E8q*`#tfEOnC%+!wFyq+nj?oXH-S&2 z^KzqhT|u`DQM2xlMUGrdGc1vX_F~3m%2N)V>eHGdLsm|XftbLd<@>SBh~p3jZ&8M% zycNx0%~DiW^UJy^PlE*z=7J6wu3TSnf$fvF8GNs1-tVjIwcrzD-yJ2LE){g8oDfE? z0K9n)ydfG|?b|I&*i;Rlu8kZ6knycgg(AkeJXDTz_Dbf>FS*WnUnf(Cih{O?b*Q7- zOA|L5Bx~dXRGWn0DUscy>MiZx%YiOk3>`YbP0~8x86yVnw!$y#IZdQ z{D-HM({J86f0NTI5V&v?Kfc5Dnfy&^Dp+oG=gQ}xY^k|HmARMoQxN%{W+s>MuUeH! z8DX;Pr%t$8Ut~9;s*=EYjF6E4i#K?XngN4N*+Fev-s9byBdc-g2~C3c#`18*FY(R< zzD7@|&D6k#q_2>Rj!O$J{-52BjY?NqUEInHAINxSKDSH%1|ZQVBJQ0Ap4sD5&QookO3!hM&ylbx1EjdsP?&P$*7 zH&6bGp_(g9*?{Mj9_&ddgUUOmfv<|u@~*?tLD5YIoTYCc_nZ7F?bA9}7SCWn%VmVl zJTFIt?*G&9UBwbP-i?gUAnZY_{uw5(?D)G5IdR$(hif-Jcl&R}1{>~n%g#?&4ya{B zNO0cFhRAlePZ<*q%VGm8IHzIyaacov-|*uP-J+F1B#)3|p2(6&KFBpTnIOmzWXPj^Hmx5ADgyixian|)duHHW6#D4lT&q0oVd^) zVq+mc6>o2o$pecdDCp2Q*A^q)UzBC2eM3fMq}OGn%O8a^OWPh}JP{YMD8cg`4~HP0 zDo|gW_N?v)E@2Y&4g>t>r!s2pAxwogOy4Vz0f+f(I7N|dT306W(!%8DdS>j%g3m{9 zSg`8vW+7}a8}YSfM`NVGd@$|HJ6hXK>L_?5Hak-89*eV;*c|Og$%aIn z3vI%=EHf_?HeX5a-HEI1$nn>@_F!fz&7g+G|FX2;e#>JW`F?eh(b&1bx6Le*cP!Z+ z0S!6yCiA1dDQx2r5i`!8F;}$i?=EM!%!rDiF4o>CYkC*hFh|lM3B5Bkcu}c;Qwk*j z9n0Q{G&7Eq^JZ9KeSat1ZLW4$Y2V_TeOq6Y(n{9J<3HYER!+)$W%bjHL=z(hbrMw2 zbi^#Hk5}(!;lN3_OO$D!cBPzJ#Uj^^EKsWb={+>RQ#CsTg7*68F~en0%09ov`zJ?G zud^dxGQczryJx$M3a+)fh10I&Htx9MJceXkEStBkc8TH^)>#rU>lHNSvE?f}R&sVL zHE8HGmY!Qavj_P|iCao1ebCSnGI!n`W_dLKtg2bbUpr#3wF7oFe}G-hZ;_%kY-l#Q!iVM36Z0;aDS;hM(!Jc8mbQr`*$*O&WJ=o@z1J|a{n2a1qr)y~%K17)zsJ`P zqJ4Z??%+N&2C%m0%*}wZ=Q+`{nzB7%-c3eKCKHMU0kO;)PmF|4td3x?-QG z>=`j-_}P_{L4Lh;+*3R2*M!nlj9dAVk={5vnT)pC!paUGb`r$qbiXCz6Qyob#R%I| z(Ph3Zw|(MYg-ZUc(ot9m^!c*k2w7c%2$dNmQgtAGhCYaq^bv0gZyVWzejlU}0DDP>L>ipNHI%l0tMld{JI2$#B|zSfzjCy?(_ zCZV!sEnlYm-5f}H&db8F(dPh{rRr``DvBUbOtzDqaj770@8Ronbh20Ud80V>OepJ9+jkL0F zSv7@$yx1QU!3_LDy(x{{x$_0)uA-=bK`p_SZM)(3XV%^bRqDR2n08U_OoAqDbSlU^ zN!ssBJ^TiXcnegQ@>UkO&Rb`j(=)D>updLfPA1%+#w3o3Omni>;cOUC?i>B(uFk~MD zX#Bdb_mo#>W9i}uThF$$>CbWPdh~J{nZi81wx^})Nu=9=)v#h}bQ}^o>M6e`q&DTh zRp3FX@%Yh(;hrVf7WaaK*q{B`(r+A_WuqdS?nYYKm6z&K&u1d1t%R=dla|AvmhBW& zjn4NnfJ4=}J$a{lvm1Y7(1ouY;wBle+?mCnYFXAux3aBNO|q5tvNV?FoV$?e(3^FV zB_&qK6L{dinVeQt2&anTOnWdN4ljK;9Iq?)4cEvM%ss3=y6eC1%Qg}u=*b8z*wumx?eJ)`Fqu-ni@{AMnMQ1&a?3(-%R+yhTOseG6+xk%b*eV_ zE0%a`c&-~*IEUI_Bk7dDAIR)^0OdMpgSh!jj*kwOs7+{1*hibImUZ7TE{yN|dT0sA z6m!oVG<98!OfI zYIcUp3A8ex94)qIA_N|#uk+5%3d~e`yR_)aDYfu9@DE0;cSdA}xH%ua*Ap_au&bM^ zl%Gwma-EQq_!~gyUL?~IIaqDvH{uTbs4-Def%t+!`98O9wu zzL$xK#1t;`w%HnII~u7%t~Y96-j`9j3a=P%8$3h7>n+&O1kowvx4>2$=E(*fZiTMV zr{#II{z@7%cCF?v>8XA#taiTqB&y0{(R$n9-Z}&6Sp5&1m!6IAeH=u5n;Sqsj&o2f z=v3-HjR;%SnqpJl$q%`^;r8@H^3#;=y6y65{tCWQ{8U0&Rlm@2s7=VzXUGqS|Ew6a zGRM7vnK}LzJ+yy`U3H>6aD8B4aVq zZU$O3#Z>FiG2W5+#Vvl)kqqd}khJ$g7p1d7vNECaVS}!zSv;MsW^krLcnQ4nge4-n!bt~ zctBZYP+1_7;?(+kY7Ar9&FGEz>hWi$^1V{#c?`z}Qf8*|em^(rHy|)uDSsV4Q>kQH zqdg|KEw8j#FSotUtE{h|kbZjcXM^#1J)q@~Wca^7w+ zZ*nehN%mJbyrN+0duQ(Uy1Qwx@Or1&Ie!*5`jX(V6CQj#upyLBWkV}mnqvIpVC;UQ z(c+`3lM+!XkU!>uKFG7pc;qT8pG_4lGAtU1^tTuTTgP z2IZM%u^hl#X7|WCuZX+-HSWV){_M7B#YDcAZ3X0dZ#%4s8gs`i^j#k5r(CKK#XoP9 z^Z;$Cgf+()3nKWcrz?d*TQ?>hTl_7O9d;gF+gol{Yr?oBsfSO!y|a3~%zQ9vBrM_L z6ypP7M*jB5%FiY{Jpl~(8!qyA!xkikZCC{kU#5~a1W9GB77kdeJim^v1sm5`{NS*P z7m$U|-!SjUdo^R|gaub-r&n|3lx<|*+6-fx1|16a+-D1+t|G0RlvQ5 zF{X$C+5MMOQSpE4Xfp~y(~P_9h;VnZ>ZJTnL@_U8$5BD6H#IFs;Sf0)(0NRo|E9Xs z(n%^R4`kHr&wJTr`nKWikSro{afSE$H1L<>aNNAzkiO)temb70eNwly9Q2I$U$%{3 ze*UL-90<(3@$=JA+wqjl!510vUrs{c&8+(=K37c9kHXWPDo2n6&5poP&TU_|z<`yC z&WiBJsKpd%zk9Bq!*-lW<{4AzwGw4{`QTC*$@VE$LjXJ}%ieSq^K9uOIFb4n3e?=h zY)JPt9W4*pV_RG|pddl1lfzPoJ@sTKQfo&4?LGb808Be$nb5INSv~hn>WesEU%QNf z;>ML`dt}>I@!`tFe-Q;#!uSS%k`4bsn+w$_MlG2a(zW}i`8&e%h2!<5>@+%gNma?o zY^?5Zi`7C6GYQz_yEYxED9GamNP>u&t-T9QKV+F8vZ;D47wsh$RGj8RBN)j7IG z%NdtOc$hl%=f$?cAKgWOdsya0j9*+Vq+h~4#W)0WMELVmmQnd>@V?XoJTX{P>8F}bpQee$OF>CO}XK++S%#WKRz-%iBY*{c4 zFg&$x`i9c|A#0v2Jj?idUA0p~ch!aa=%0CaJ>qgBH%2nrmjxi729={d`~+8Tug@`W zE1K>)LGsqD6k;wBJALKl)bX+%Li5l!Vp+T4W%kQ}&{PWP1_Gi~x>LH~x$BG1N=Vzt zOhEe#HzCFYT^tL1T^x;x8SiAJz>|}KYK{i3!Hx|F{>2J;uSOo^BKlIlJby_CUmzvo z=O!G~4`);dfl01bnmsCSAw0mR4W{v?o*oQFH$I06C_)9%i5Yw=4d~}Bv24p}O3M+< zn*_T|nq-i#v~(h|jUHYMBjv3=RB*r6a50dLx$y8n+h@&nZ~Q^lr6*MMr+Jp?R9Iq5 zR+!ToCT^q#zmn#Uuy89!y1ZZdUXD<-+JqC1N@V~mbGvJ#1&r1n^4PU5-L~zlJgp&U zMAka{SOV*>;YQzEvq7O7IJLwKA0!_}Z|;tO4x*QbM>EAOkwZNHz}K0V+Ad9E2w$db z+(ZJ1J0pZ5#Yj>}RUp!*eaDx<+|qRDc_yB|Bw-YLxFHQ;whk^Bgj!s`5~@6W(6rqj z0GQU8P5s2`xf%BN$f`^rE)rzmV!!wOLnmX7;VKPdi;r0VF9Qbw6^`9Q-`7Ned&eWc z3WzQxm#hZb<~h{o(04%ehKKt?|=hpadeUzRN9!21q4z-*!I{8#fR5uv2gw?oPww|>~flpx#ZV|@Q4 zCVs8s1nFLyI_alB6cC6+WPYZMgl98%{*I}CPRbknUi=t-J@^7T{J@g0woJxrc6;|` zimTB!FPYiNtZx?^`o2!S*|o>~21UDL0CRPQ+`ef6+*>(KNJ}HGd@r@^cKyVH0@79o z_L3o!HH(-v?aZTeOXDwL~i5>Aet(R8mpPMOpwI{!0SqVk zC<>ocqXQp6E>q2X53m87-HDlFuDM_*4S;ZF>Oeg34yHz=;U@F6`t(po&V9ix*%qWP zBDxN6Rn98Bko8s;2z!(08(bn!nVYyc!=H@pyEpQr)tyl69$vh^bOBc*Pzw{)rz3mM zu-)5LTiQ(Ch?Z^-w?EOHS*iFVJImQMOltJ6X{H+gTJL`hbbCt6>_=m&YF4Nk7-qag z=ULBPC1~~svoL$5HnSgmpS8Q7ff%jGC=sim?<~;2#*HW-dMMm(cwzHustx6w{VnX$ z9{bw3j=}Yq4Q@`SCr9!@KkE1$e#VxjRP1VM%b%*rxG+i{3(iOcnMK0FHM_Nuwyz_knj}X?w$EPO;OADV6F2DPmwl#lPL>*29y=7x|P%6Kg^47!|&x=1IG! z^R{r|J)OS((UZvZ-Ew8WaZH6CBO>q8ND%w`U(QA^rPS)A+qIo_X*^3$Ap@qUn6e;B zF`!lNFYxvfRqEQdmo9~% zcF*sOhoZ~cY~=lKnq2&aTLBD8{vTa-x~Ly1ZFfKta4zksXg923%X7;~T>7&J?mo^c z=QyS8emVBHhz?Dq?Sy;W61t^Zm&GEsm&r1Ut`fc*F~mTDkqnsfSeE=vC*7Ho^8m!f z%deKle#uZ!)>Q&upDCZzH^evC=8TG2Um80-Lq?ZcD?$Qds+!UR?g%1B%r=ph$+(ij zx9W%x67rGbT~lkDe_6d9k+g|R4q z`H@GqP3rTnfTd{Wqdd`EVg&#VVWU#V`8r&(gtNL z-8a&9G}ELXm&x(&ZH^#_4K>r`^I^^{I@3yPqh!=qz(0n_AN2jWDB;xpp;MuM${$iq zVpi#8wuTCNeq{TZfWI!`eW#|Zp!KHAHh-$27wWUZzZvI3m351;j=cQ=pR4KGj4 z>xC>qIRmNnu-t_-4AJIc{!L$?m<8u>$Ds!$hYxC z&0sS4!6S3Q$c2bVnGyy2vGx9IzXn&bSGR#1{8wEmH-`MZjQvICaQSxc?vmXP+sIS@ zqAWYxnv$2%ZB3n?^wWLJ5OSFsD%`J_CnNO-HZ1Wd3 z61DVm;*6#XBySmJev_K-y5u(N`eAX_z9C%K+nmGu+79r0s#}BL>ZA#Xb^hIqV>+0r z7mFLsemI;NU;}u4CVHmVuyv}+>HEI$R&7k0pPS}S`8Oi})_TL9jJtNo{y8rdt>?}-A?=x-5EplJBtg~e$4hu5OvsrQ37L5w( z8bBtU#f5;EfgtCxfs8$BXBS*OeOUT}); zueh$=t7IJ=v#9$cc@BQ~nqtMs2cBl4Etvbs+t{uBc?dFaAqy_NcO)nEq8?s`PX_+V$}Z?Y>%NCR z@~ty#7C3&aS_SQVSDAyYl%A<2{_Ev-gLM~OCfo^Wn|g3LSQYlw@9l)AIgXBpLp?ET zUy^cu3GVzvsX4pIFf*v}8|Gem#4P0r_4BKBQDg~0^?NA)-0s)O8a~%9?{iLlh&x;U z_L9IfhbT&QE&14Pejve_l;0a+{=0>J2zAa+2ULJ?4J}`vN%D-v?;%?rc)r$2ny1EU z<_1UFfxVU=6KcS7#f$9(9cJ8Rm1H!OYtE_ShP#Cg%gFScP5vz?jqJ#cD^e0ouQ+vE7oGPRf~S;>Xa zP4??CM-q(#zm>mvA3mNE-^M6AYAFoC?O$DbE!D_<(qnhwxSr-@l&*MUueA5tcT|wS zapqLK7=EqU%}IlfTv~%QDtHcV`s5SY419RWE43?An-s3xd}U_H;mZ;0G71Kha>T6GGbNTE^#2Xg`L9LT*VO@q)ZK1GV(eMf z4))tOK|-Wh$< zc2n&{YAr|H)4}Mhk4V0MUwLcBFAgxB*)5E;ewe|flZLo*?+?Vkd#Q?2eB9?BY^n;y)Si6ETm8^IsOasR?Yk3w zv;OhH)_ix}E7Kfdm(p*Km6JTTMW?bUQdY<||D|wnpsnRk1yQi~L*^q8km6T;)&7~0 zSchwf&VrKVD(z}%K=}-@vr^-Rp)Bt2QJWIo&Rf7^$X9#zM+5;qTFx~ELMHPZ(Gi_; zeuTfUDB<;OkYlmSg5Dn)q*-N%0#wG{Pw6K{$eRjN_LFTz<4A1z_{{jB%3A-6A(RIl zeph@{Yz%rg155Gc&l|CZ6z<2oc8)NTLXo}p+_nV8wYL0$Y2WKmZ70ZK@WQiLFhZ3V z2bhh*;^x5O&w{g7tOQorQtnyNOujri>nEE~TN+CGpOAQbLm0!TY>TLcG?}mX&#M1I zF08;(J>I}#mc+JSeHL$zO@@735HvHPTQxRP7eMkRHcK&Sn zzm%#qGVBAA=RhrkaF8KU;f#QHw}ewAlHbpHT0m}|9A!T1$tnAZk9qInbbUlg zCT|b3%+|Z*u$JN$(+IDEL8`U_lTqZXdZ?P@i4*MPog=wd}`=#EXUz;;5n6cYIvR*e$2TLvKaP&k9=5X(nM0f|p!_EOl4%THb(@*vAk z0{;zlpSR}TO*LqaKVsqGZvhs07n5Pcv*df+v;G3)UQ)O`DX%oU9K`50x}~~!l-(Hh zT5=__0#or~Ylv-!`SHfXQL`(lg5W`@E4KL`?cefW6869AE`jU|XD?1ReX|^Oy7y&r zS1muubItJjgb>8RYAWP6upeI~o|mp-=L}vAx9?l;M3IG$r3N1Mb;< z;?eh+Bwm@>lYjp1-EqtHWbK&Os{Ac^R@%IBv4FiPb>FLcm}X__yN0EcSsat{z^B#) z%XEtj-Q6rcV9x3W&(R(=hNzP)y`5%ck!kg<&huS#enV@^8=`oKVJfY|0E^_ zbzG2~4pQRAN57tl22H-MpR8Vgj`nQ{{#LVk|9mgU{oPL_g>GyA zN$V{3+3eaF2ym+{Tg*s@s!*A0>iWpnE9M#p?~J-z8u_fGu4gV#HYchdvY===z884} z+r9_bIQm_dAWRhLAH%g*3>Gw<_ne_mCEguj<;wZqK{6Y>d~Tvywn@LWor|~E_Cviu zr#}PNibu2i!$*pXe-N;(?2=O&V9H<*BHN(!ZEm|aQ1NA;_Ot2-IZBKR!}kD@vB}fI z$@NM3Y5aVf5{zX;zC7FYtck@9eRG>vWz3Gl41M$X-j)^@GJ9ZlOZ|_P*y3nj!q;H#o?g#HF ze4G}~0Ip51q)8T*RKf1K>2I376x|)F{o40kt0~@tvo)n}PrcSM^3H-F>1Bzr_OS^K zn((hTU~FAP4=*oRg%`5x8Q+JxBgBWFS;=Wih*f6ftL2rP>Odq$N>4h&uPVyK`*Kv5mfg?Sz6M&jwRhCto} z&B&2)P~L&Qor%~~rgN>bqSsZE?U|$>H#EDYsrfb@PT@5GF6#AFV#{%c)3tt zIrtuqtwh`()4cKEZfI<72P zABB*mX9=9K)nA>>E!E&*l>#OQ>$s~M@AMZtpbvpBsz`GRSMNMk(30Mk#|S8Rx(s|hEfTq& z;zJh0+*%9kV{fQe*K>b+cJdd;+#^fB<9eNv? zt$s{lw`qpGZvw5?;=J6Nw*Eg>Q52J4u`LvH6>n7GA3~)jlL? zNiUau;SwbUVz>ers|7Ws*N^K^6=q1?m@)A%o0B(^&T|@{i8WEy139P)_1Lh*rq-?f z6sV7-kcrm4lt8|yF>30z-5J}kiq&E+m$|HQ2OQ7UdLb)^FbkR?ycGiv?hiPiXOXFuCs82&+&;@&jMU?)R+BUnF`1K!mGToPJGg>5asPy(7%&W zx8hmsbpo!M}B0}9J9>{6q8w%P#ehuvIu z-~v9Ypape$CkY?m^O*Dj4xz+(dHE(!2U!--CywD1n{dJt?K0%$ks}x#d#h!y%UQaV z+2jMo!PrXNvKIy9#bfGkRi@G#qury7*9jR2P(7%U#V(aEPTOS;KQ-@x(--dJJUX&y z(76juZNXqxdtm*55LIr-Sv zqoDt2cT5xmf-w~DQ4QQ~Vd?ZgoYV{lRU)c%#M?34ga^|8LKgx={1$Mr+?QvMWM+o$ ze%bSey7Hh(U-A5?{ls!zun|7G`#${^O420dA$MK=@GL9NkwkgxU%Vf?{ioK25JoA! zf?AdS(jvqYurmL4&d40cM+L@TLYc&Ud13q=!YQ2N7#^2Lp3a*BV%xE1>3YPA(3nO_ zxq@=ySMXQ#Pm4#Sz2vHnk<6g_@p`JL0%zUr1pik?;7nIv(1o!T?_dioUrSWad5z{~49A3U@Rg*Gxtf4d77 z9_K+~F0n?)*lmN~ZvxTamd`&mCY&{Vmu#1!(dC*PaYchdGra;H4OVXFiZu9Q87O9! z=8&?jw(5oP=Q+y^@iZ({EPc-W=adIGXKd*@X>dKvrM+f+y1x8}kELO#6|(2RQD{4L zB#rrKlOEfnOs%^-EcFKs$xL?vP6XKxhUj~W1lWWhfmBZbAhOa`ZsW1;o~e%7n^Z9i@$&KAaq zcJQ^mCWQnX>ZDH63}h^mvjxS@GDUgNpslbHI1>V1wT0{i$zsiok>}GM*b&^HqknoP z!y1JnCxb@vK34_;VeCZnsPN`i1~gzBkokgI1mDr%IWN#XS*sUU@N`*dUF#Sg1Y=i* z|8W{k8DXV*Td#K?+9(f)pnr`RAG!-r4k+%akVfpd)F}z^{WjHTwnxwei8^gjtZvY& zL(kGfxq+C@U}*gQkKuG!FapRuGMfQDGN%2ike{+DlIbSm41m)*Vo2}Z=MD>4c+XKtYj@nSOa-KDXLHHkA zmN$1JDL{1{J*-T_bL6N?W9G}ymw|m8_tL9@Nl@Qg&RQ{AVBhK(TXT+@NklPx5V>8Ye=L;#t6V4NyKb=i#8p@OE(h6%Ez$tn) zAAi+hU)N^yrCc`}ebXlT^`XTph;%RMC@la9c7M?p4B$w7B-9|3A`e*^OqBu+Yl~?q zX}9F9?Y(RVR7craW6NXOr77y&^J&M4y13Gyf~FSzaw>S^2BX4KhZ;vokRQi_nO1(f z?{X7cy-#nNcZxNn4gJLBDZw_zJl)qfeX^VM>s~zE*RNcd7Y~U=t*z;yFw>`|D2#kk z-PhoMu!VEIfyBo(=rrz@yQ*+NK8X9R+QW#7Yy5bVn4 zjhCHYP)j@#BSiO6;e8R&xjU4kiI9keF0SA#ZxC8(cQ0JSIBR05XnoqGB>FAbScGr)@2%K?{2HD3? zh0XeGhOpyVLHbG)ew;nUb1Z$#O8*;>UNun+pAFfvSi&x{c6AQr@R+Rvu>@eC7~F|$ zpQ0V|1QwR7DSx~$=3lG5@1hg->G*Tn6GUs&z~@hIl4e6se>B%=dw*j9Z^*Oe0uec;V6I`uJotA0rN?JJN~S3Tjn=Y@-nX$ zZ@U9$`C3N5yjAdUU>7K6d-srJrh9jItjrZbdb#}-5o~(R?>3s3EwwEjxmhha!r`w$ zhNS%Mmd&?|ObZBLuzxMvH+4<^HQv_ea#wi7r0|fbmGXeF%jt``{XxL*TA^0u1V%N& ze_W-ftw>4Ec8#(qxySx{&hB_Bn4{TG@a3gVpSricGDkQeU}f;xQw;)>hnh7<^@nDH zRdAxWVw#T%e}-~xZ^Nq67{ER!?H}Uyd@|4uzW#1EBPL_5&0DC_O!EH3LAsqQ{OyQC z;~1B9c$uGX&I=!XF~&3MC75)G>9b2$<7UPC!(c#s)KfR z5vL1ZtZG;}B^#^b#7R{;croV0I1rtV&jMi{AAsrwO4rQ@BcLsn@N-fJ6nUz_8-4Qq zteIihFY{XD!&RA%gYv}E8merQPSa@8hZd+pMu;04;PHEkJMChf@||NvvNy|da*Z_w zq!6^R%bfHl6`^5P^h}1WLEEdYYw3Ba97NC`IME}Ied~Jphxz0BF?t|IgQQB?J*tma zw=lK{2-2W0&(Lm;6*118|JHx2{BwKK--BbXJAR`Mqk(0rDlKp|tG=}_BDi^Az_Vxd zqSiF_#a`r1qb^(Scwbu=KM_ld#^@?!&Dc2x^N`vDXuW|&2Kxwiin$K1 z7N^k9)%jP-_an|t1wiICTJH^mc<&>(Tf&rd`?_9#qylEE!Ro-S_%%n>iCZ(YdO&zk zp6(fQ)^Jm}9mQZD8(dse?`s=hz@^K9AELn(`k|q>w$f@MgD<-DgT=T@N<)Wpw89W{PBZaV>9b;ls3T zTDP~Dw%e zk`EMXCg#12TBP&io(@HMAIiAl}CTbY1{*ySe?pW#x-gv+mY|2|% z^mqHCsrzoG?D6?yCv#1piEXOOoe;TpA?Pt*@0~AE?l_{X)-T{Ze^c!Jjf-b=V%AJb zg=HcZoGi};Utn$hO9xG>XNc;zud9J=m=@-r8*BuiqN5Cp2MMfaB$bN4!+ixT5$`eu zxUNmv-nX!Oz)hMqKYJ{zZt`2~P*nDnJ7;kyaX0L=%8o;&DH`~nrWJPC3Z^!xHdNT)ka?f!a! zT$@;DON4hC`waOp$$r5<3699-7l(Q*mx(do(ij8#{)$bYD6C)FY1I)^DT;*uG&+A?H+2&lEjk?eutB1e%Ae1`K|IYuls-W!jH zT|OtUw##n57BG`X9HRUe=`7_fK!OUWuRDO9_|D@_?Ir&aLd=i+w0YWU`;=63x0NE zUmndk7Vzv~sRd-tjG_&HKyG+gP+T8fsdfrDXF+ya>h4fM7eUKM@-`}`DLT&qrazgR z%ps?k9B7iSge!GjSK8iO9s#f`?OT{r4acn<;r`t(9N})rImn&! zVqwiDrRZ(XkkF2Z(L|_8NYB0b#%>`XS)0vBHC;#j+lR>vnN?4vJBRq; zj^z17m9CGSvh$UxTw%-%q-qSB{-Il4)4;r6GL@rT)xDAaJ2&DeewtXKTE08;Q?y~b zPd27nZuFsl)=k|~ebY^QGmnY7e}bHnH`WoLCKrYZNq_0Tz4qfj4WOY7vjdqxs$M+br8qga_*>w6!hn-_|fG?d`PUNi@(biU<-P2Nqt)EtM5pFRiKnr z=3%YUL1I=`YnsO;|I7XdZ=tES{SuOj!x3Kcio?&W=(mE$iZWD%|2t~ZtWv?G7B&04 zwNoMV=&L8Az4ZsCZULrNF;KDJ74nJXoA~bvEIwA-`*{_Aoi^Vt(7U;ManHsKU`UZd>_E;$(~!ydyW_Ejtz)wF!mU|7d=PU14O=ueqoGZ@uB~OmtN2GZ2mpM zGeld#uScRoiIb4xF=(5F2Ir*ioq!s(Q%g-i5r0?-^9T}l`iuwcnk$}otyvr(=Brk= zcWb0Zm3w_jz#`H&aVbY_j$!^N$13a2)7b{El0a_56}qT7kT z=<`*DLE5M>x+IYQ^|cPxlkhdj!wlXc^H2+e;68r2obsEG2U~dgV+$!uH}<<1avIQ~ zme=1?rF~qOCv#70wgUTavNX|77YU;<%Y9DO+Z5uf*=kH+-~FD8kiKc{=4ESwK)4Ck znHmJ}!DPLzY)l)ENRKF|H^O)xmaL`?DX9L<{LoQ7x8K9FLF`!;U4{*N5dy8zUw|Z) z2?+%A$&F2`M~amewg7d{I63!~F_!J=-Y*uPYZX)cXexB+t_^4C9caKcE{N{pf^BjW zYlDQ>)y~-9tB(_)OIFIl2`z2It#iaU7Cr!UkN{`lj^TMRsW|z5ONgsFnx`PMdo9d) z#H>AoVTgyl@0n0X)J|DJdGBxkkFdG38+~jwes1+8j~^YwZZ!HPbu1QSb;6ZyC8LQd{?-o?+OlcBT1Q z+K=h#%~{?pL&lgv4fUfN3VrFJHGrvKI#eCWT~@{LaxzK{mq=;$F*5aLbsIaj_2_uA z*I=b&#(h*Vl9TzedET){)R2At1~vE%L*s>mDXE+QX|TS+}%{|`t-W$3Wn8C5lR zLa~X1Ce$~}EI67x&Zj>4wqk|v#H>Y#rd(F?{aTp+#G75CCs`%+k+dU5;(&5UY#a@O zQ#k~ND=86ZImD=~g|Zx^Zoi@<3TOzR_wQNpk>yx!fvww+AuyjSQ>*n_jGGV){6_hc z!+YgCp~7tlMmY!{iQii6rUbO-ba>(fJDQ{xnA%{bn(Xy}KS7(R!K7Gw>()d_koMCf zhP;F*?e*`GdHEs+3VJI4FgWktcI`&8tAcgDjQ+Y(*z`&KSM8oG#q`tDC zgDdYHrbEwt+PSf7lfoh{b1ZW+m1i|;J#h&_J>NUaXa%2a?Cr>Ciua?0*1NmATs9R( zBb~Lxeebk1FdhJ}t7ZJXyoXGCU+6y8Jjn#MR;?u5!#>#m zEe*2u;itzcHH~8<3FwyhL^L=X1NS>~KSYz^Mqjov_u1D_l?4I2RVI z8|?JB9(0;@n;GBZOxzt7q-sJ|5;bR-Xab39K=NDA!JfuH{C|p9(3)+pz~7tx)H7R^ zS`Cv++508b;s|(gXRGF0GVzdr9!56|C-|B5bBNa?kXstiEr?tSZy*|Ie4`i92!6=> z7+tn%UH9?GV7A+@7HhS#W1k!@ZLjk7rlCdq z6|B9)@=_ydo;S(Y%NsM@48Y!MF50oiC=J$66T^GD>$u%7p6sNw8PwJJA^Xe|(*q)R zbBcOz7x;r1vs`bO{V{bwR5a_>i>BH}_OCYgqVnFQE;e*AfNE4SBdq-&@FZ`|C$3Oq z8OT0>W1QL#shn~zWrOkpYm1BGu4l^1@uR)GL&yRR+mp=YAf0$JkFK%?vti~%KhEF; z=77(x#(416TVV;{tI^zq5Bbl>#hn*|uQVGU1dbRX49V6ovti!<>QkIu;#-_xexTB` zEF<^Q8gVLF@|l>g`F?%Y5o>h7!l$o9P_dEYDHY9o~O}G6meF4o2gF(Xk7WZVH+?lAx9WWq-eGs|4Iq2Gq;?$wq3(bzbOC$nYJY|Q!1E&KCvo?LXv zUxGE^x+udAA7Fd|P&o>q7G6ghs)FVZgMLMql6_`m$5;TIKdldH5IeBC&(leuRwhS( zZFO)hQ+DhVr6pPPl>RoB3w&K^cP3nh&)Yu$-pnGeiCKWLo>hJ{Z%LKBdJ5Cs+_AF( zk6#K2E6zV2&%7`VJobpO1|J-xy7T%Z10{&R3RoYlIzFCeJ0PNh`_rl3w#7k>Y_C1C zUYB@Kwf=xT3o2cn&6E{nN4i)%{=+{LUia3hppK=^4X3K|hCavcJZnvPx>uU_#2KvX z=khaqLLdy#SkyVlxevpVjDpQF8|iojj-0NWGD6;Zdr7)=S&J$NBah$OI9h~ddxF}z z28KC6s1?!G1=X69)ZJMq_!q>KI7;VkN_=3Ep!yzn6unHZ-TJ)fD1PtB0MFJkRi#{b zJSVo4eTX*L6tcy&TIAJ7;hXX;E#P5VA*Q=&&;bG7XL-#5L1t)(hszBAP}K@MzG`z~ zg*Yo@b@sPexw$#ilj)mff_oO!t zWdg6YaA{7V$EV4j5DZh#kOz99wTAEPmE5$Y1)gOKhC8P_cR(HhF+l8?;0$G)fm+U&L6T29o~hHyH+DWK~+67LWDVMX<4tkJ+iqO*_FAx+;R(DGtk)% z-^H=fkL-_s43*k0IU{=}$lVzxd=5bPcA`c}zG)I~HuN5_WE_3~0C?7LSa28&#Eq4f>j+?~8{e|q`Edj5H4iV)g zx^wriOfbU}Tg=i-o5EwW0_h5bb+{kOFd(u;VdVx+3M-G3?+<76`Dn4H=Wu+~qFB)n z*Enl{b&MXVy~#nWq`abf3)_j;XG`WE1{iF*9_$c!|KqfLtwKLL1+99uBZ}i~^;Ow? zz4UaarSCw@S_F6SugLX47{D2|iUx@WS#QIJ*;i+~5eX!zRvN7S!)sm|_u5)#h{zSF ze_S59H?FTKBy*DY{P7sF;O>kc|B*LkY&lpBaTH^-HP(>5YpJHvCq?+c!kno_%BV7E zJQOA-A5`Eh4ZI(Tj+C!G0gQc#Clk|Wf!>QdeJ>5Bou+8&B zY|4pu(-izhz86*yN1GDHy1G+wq(pB_o=$usk|7rk3{{amlXQKu7V<<7#wIOti$rq3$im)0W}1tQ(?P^$j^Z_kC7aZ3)EvXj}9du~!x zc|51d>{UB@bH$lvGRCi|B>go`kjd3q{j9uWtRF_+`>Q+_FrMlt-eJ|ojFol( zGKZ9VQrpHeSby31291ez-KeplJy0dT=q(G;DD-F^HMRmANLhyF>G};@`PSw!vA4#1 zZ0F9o?MWe#tqcxlEhF6hB^M{tNXGLi7}w4Pb(Q7mmOeN0wg&h-_)rAOYf?sT1JzAc zAtU`Eyg%~E&!BXp_W)bQ!to8#awpgFZ(MK33NEUSK~QPHQr+5^3&?L`MZ`efia_xX0_zv@|Zs=oxr z`oBv!hxAYWSX22I_Ar(cB2}Xks-2yOe$zhA)1MrE870*s>!>z#0-15=cl)OU z1?BI@D2L-FVdRJF=Q04Df7-$@za_&S@FjI1VEz_4HK53ILb;@3YNXaP*4W7n*~JC; zZu)@!gU^d9-jBaw{9jgWK-{ZF?t{lP3ET%SI_xSiGu-LBj+phGt3h5+vXh{0V=@Qv z-8eC$?#=dy6N}Kw;%$Yz6(YL2%SrjahCD$QzomyG4gQ|hkVDp;coFPZ_C41Kdb64I z*n3vKuWrYmHxc*5WbN&nP;ZTxyyu}ny$^ZBk?TgK*DsO+7rM!GD@P8UIWCn}Uue8n z0#QU}PBgYhI8=(uz|1VtE7|wvjt~KF|_-zY+Yv}s+}(CzapH?xw^d(QGxqM zH=W?-!5>C2{S6Sp1(2|xZyMKXwqne1C5$f>k?}eQ@!A|xKYOcp)+&@qav6}fB7I|i ziN3CEyc)(eQ(93%8VvNQK+rdJMv zVe1msX=)G2E?*L!QMF*;jkwLLjr6{~-R(GQz0P+sa+f8=30+sy@uWK>zA59`F&<&V zVp;!=HnvO7_56;dY9?ZBm=y?=I0$+&)9?STCp1xiNlvZKGkBOw9#Xd*lRy9Y)6n7L z$rgsvY~;$g1uV7oA(&0cz)=FMmy>cT??uU8GtF|ENhPVg;S|Xk@c^`^o+oBE#^z%y zD0{pWC($@vO9Sb@K9 zV?UfkzTLQ^$78ss+I3pZGJ5eg90`!oV=>*eWGn^(q{VDrzP?=wEEN{`m?Bn9THPJy+(BM-c2&T>KX6+;mT6)<8Q9b93c*>UEt-rapM%9d$h;F< zR}hPJr{G@R0$N^;Kz>%gfI_FU&gAWKkM15$?$BL=JZ(Q6S&``xf9m079yk-g+9P2# ze$7~P{aPsq&&yH@LW^O%eec#(UNHe(Ao$%GaD8vS&|dC80482S&Fv}MyL?lvKN3sw zypOMO94@V6rGd?Tfqa`ax~SG}xScLH5K(?9ShU3s1u%p~*J$8Jdw+o6bDM|yYS--$ zj}M>4$i}G6Wk=!PVdEMFMD3`kX7kiweDqule!3&FIXkn*bFnnOkfRfugsNqJY&v>X z=g$e0?METc*`bd8iS6bWGd|Dz8Y0Zb2dKJuO1oOSr+D)X%qD%*?XeMW5MyO(qr+%4 zn_FZEF#W47n~y!X*3Ut~V=BfK?E7=%JnMDPl^;9AHOiJe%Q7P0P&Ae8HD8Vr;*a=Y zQR=6VMZ|X4X)zcYD{}v|u0|~&fg^*iB69adt>U^vk<5Ui<2U0$^jGeNol3<@IgzQAl9&ARyzw+*Q zdm9wk5RNYIb&n4Q#CsUwE*`i!wNIEeb+qXyJy(GiI{o3_f){7=7yW(#AXnfi(%-^C zz}pwlB^HaDx>2YKA4kdZNp{v?h@9tV_A`FWB`o`Oo=aK#UxppG*o(F7a)yGljsJyy zz<8!^`X*=Eddxj*esGAkmS3{;uGnj_UCQcMW*(3Z9~BJDm3=O=!`wUDb?@bD01GKa zB_&ySc0QHm0;2e0L!=~~;^!gP@!4UPyk&R4@6$Y?Es&bzQRCAJPgB}a$i(KC2J5(0fbw7nH$OpgXkjZ;4F|R^o=Zq_57~+GjY4NA z`dd(tm-Tz&fm4>{YZ@A#z@#|JN?EcD(teT&y1M=JxI_Ug#6ohiH+r&qX`Tx&)j8sq zmqOwPw`hJZpgRMJ5c8IHP!>Ru*!G&*`W|T8q!!aa zwo=EDU&jy2x+hxbqsI;GHsz+M!>Q$Ck5{uA)_j#ckt@xw1FOgn4M^n2wCW1{6Y|#9 zW6q5B)`4l$T7?y+*Z`J;^9Yu$7N?=F_zX*tRO`i*vv3K3F*a8(EZEEH!(?s0XIv_& z!y5WKMM$$m#^^tUw~F%^5qLsL(8-#*C!;r1-^;L6l*wmtdT)Kmil3=OaO&9uYnWp> zEWsxUnN935W-{?2C~CUCI(Kokq`P zZDdCJ1X+C5$(L1CB-KlG@(c6X6GlXLCp*|{_(HlUi}#RCdBvf zd=fWwc*|I>D5!TBl)KKCd12o&;Dw;dfHIe{jSP_7l(O@#)u81t!P7_Ml}%dghIz4Q zXJ2@JhG9qrDD7$H$S3g!(b%v%D3kmwozoDHOdUh~?L9|moy)m>_-j9BA3^D@1OhsP zl-OPJ$xtgFfvZ``2IdnFQGeF(G%yEn4p6Wv_aQX>5EbV_rPFfND@ubZF zum3`ksns~}&`MJ5_nImXWC_-9z-2aOqSk(N+kfrNwm1I*Co}=kGhnVF=EWLt3TZ2A z7O*FQ-V^?SSDBm(C_D|sYoDE%n_V#$vSB4H{W27R6((&8UFpBBU0e>e>z0FVW9v5` z-%McDAA3UwWUDmCAY$ zoPHC#L;O4t&c2(pYuR<6;CZj0sG-UlNUs_veHWBilf>$_ysvLxZ^-L?#D?Q!xo=(4 z;ozB8WjdH1zr+s1s&fc#rRFiT3_NNixAHl7KajK>lLk{dGTIGprlqGLlgy~L$_bJU zMjf^4AHx3N4J`sHa+%4u7i)OKYlzCQpa)&2H%@f2OMZ$wwL2!AV5*N|MS>2c>d}lUbT6Su2rO}vJNjfn%OW3+CaeL7c;z@Xl2#D0Gd9nLV zNV7ni?2eJ}{Ia~hX8)myEXS%jP@J)&H+c{m5~*gjukYEi%@@t&Z+E^bP26qXF>78< z)Wg?S;AVo_+4Q=uu_JjaPCw`YCv>h)gkv|nuNFKwd&ZN022V_D@Dn=!)dY0ap4cZt z*@GvtDGw{+!iiP8f7JU86byPsPE|fM$p!?h;1xp4@0`W{^=9|ZZJNm)@B(j-ozGB_ zyl60JK5^_NLBna}X`tkk)>o{_I->mbJ6AT<4@B z3{>)-EQGQR&kQ4vD?I3_8iGWp^?M3L2CIzSW4!;(vs#S47@vm*WFV$saT$jFni2$P zG~1vSSDy7{9X>BQZN*G3;Gi5@R-*^h==6163HLfhX7QjZZX;JT+nQyWM^R0-qlM6t5sm_%I@k`7X1m@{!nlD>8N%LF02_ui>+xB zr`*j9SvIUY5&sxD&;1`yDc($Dn*1|epZhtzGpHz3>^9{1<{F^m`hehBw=4zUSgmN7 zCNeJDXWdFrw-cV3eP;a>nS>zjw;YsI*hR3jxX&a7A@x`3O^H&u#+>^B^lp-F%|>oD z3OCOM2U}ymFUTwyD}(11CfHg0zU|ZX&8#?uZgM?fCc$pC7^yTr`LI<^|5g0qTTU(9 zo^Hh0t@9$x9~EGFAO!Z zyik?~e^C-x@Ta)d(s3f0_eP5wPO?A3LMtH5C_sS?n74+UY2jBI;ftJ8xqpg|1jSI9 zUuKhZqdEURFPLNnuWE%+WBL-d+&f;a$hHzxV6%lzm~Md7tf6N)A{lIP)otjh-2x%& zn6NMM3S$pqnw5F9wM(Jd&InX}@%!PvF>FjO;}tX>e_ai@1UoGI^DpT@j19FE|1-Kn z-4&pJ!!{=6~@-Jdm}@~w_a;aqUnf{EYzM7 zaA8p=5dnx(4Yxta2ZK@6(KJ>wxVL%=i6Y@do{JS$gA}kKXy_$}%nXyqLufuFWr8?} z4T9i&Dl0~ciCH^bT_@Bi^JA&QBPi`s>-PUBI?tdcx;6}pC@57yM7j!sN(sFe6$R-c zBGN&6?*s^8U$7w3q=P_E>C&YWNN57mdk?*rgb+x8kmTdr+1c5d{k=P9pL1W=?FGzf z1mwGM&fT?(&Q8{;O7c|&{~1KTSXdaALmTE@H5Cf3ezpFA5c|s~>w%gyylCKLxnwLO zx@1Y__K7Xz*5ov|1Cvn4Wg`~)CG|v#$|)xMFh}))M0AyCI{dJqcczE(#(?rD>Ifzq z>pWDr#|onsqzN=!yEc3UD|gQVD+jFDT@L-F)|&(Oki_!})~GP6eg=j@uA)`+E!OvT z=X5y?Qq#eVy!^WBwA}71JnwysuuPUc^MfA$Z0DRoXkxn?sF%ZOYwUwSQ{FK{u5pzTcEaV4)#J$lS?v2M*kj5A*}X z4iCReGZ!(9jJXpO+t-mZ7aJ|H4TRHx@>cRy%473&5+`!jqxaoC-p3uJtG16RoE89? zhU`wfyRfa?o{ z8fxqt)q#?(8!72`8!K4>chM0*acl_kL3j4^hI5Cm0iTWr*T`a=ixR@ls3Ucz62p4i zE|eQ??eW+i*>oz3FM;XzU0In(rR(Z!oIsR?s>vVH_NMaaSAV`8;-Af7klejK5>-Q9SkXWvOJShm66x*`-@AKRy*?1&0yuYCGP}4XE-k*y z^iyTmkHvg6vNrNu-?P4uexurfdiDbB!xy|&!ZLav4z?4QbMij7JWJo854zo{*8$Br zd28>O<@AD4*95zeRzLVT-Fj9tZ?!J@9{pP!!jnJrihkGemYva$p8^si^d?qH-IDXG z2h{Ka;E6$5NvfkWQ?J@!g96$x?7Kf4pZdOU{f1g8vVHH}?e9mXo;N+eD9AIz7Lr?f z+r@{XL9Oe$35t@a54!38MTJ#iuvW#d`vtfvl>ei;%yJRC{S>{t9}2>4ll)E)s+FdC zCD)xpyul)`dv^(F-DG1LyuilSbSVr*dZL5{%rf1cTZ_b&u*X8&`K1RT7%z~^l|s58 zbEoippX4g3PR?S|*J6+k$th=Lg1}K8^k6G=Z2o7yV@nERP!L4sw-EO0^;=Bg_6_P$&HTh?8B{;r(ZbiSvh3zy$CgujDlw&%JBgF=FnO@aaU zpwIAmdh4hXd}V?31n)0pd<^;#hb6i^j*4pVm2WiB)r_QzgNyIIia9UD7W+~VrcJ8iAo zu+?td@arCD#qY2>OEtoZdk=wgcWw{mV)@ zg|Pp{+#xCxPcQwcUs|_Zd@A;AFm-TqH-R(g9=i|C0I$_c;_r)`l1x_5`?yDg!4AI9 zmIYDfZ_B@TAZ_p}7m|9}tNQG`rizl^yhqmE)fNY2^>?j$KJVXBD^v1qpVMA?t5hp} z^RE6nQ>$LPcZkcc|7!7WU8d`R@PPKg!A+%#fTW7ulf2$CSiT704#S^^tECBsW&(z7ty{~fLkjLe zvp@J4fGlZL?3nenDS4IUG>O0M>-Wf4**^&_`xbbweO(5`gB9y31~tH3(I#k-G6$i; z|I3P%oD3h+u8k~Xeo%l;h#`QJP4a<34JjjU{bg4i-Qg{SXmg*x*InKHCPou~)NqB= zxFZ~G`J!P>erlBy2t7WN>h3E%SevaNw+>mlAKJsUah8%pTDgjcN~T6En~B}ycJ{Ct z^!9lPbaVMk`5@!uYW+@fGZp{hIGlC{ZND->PV&CWzFGDN;;EJs1L`CHIhwQHE{>#tBy@uoSb(8!DzV0cu5*m;y01l z-;`7soC;)dvFg-XdoJh(7my0POwn`aC0=C>DUYCIcPfro>XuwZJ_20WoPhrjZOxqL z;sM-K;Yh|cRxxQ#xo#+1nzZA98B^I2VOQrhj!U8BFQu?0bm;W-N0rQ4NjTzrQ#x}% zXECVHJBjqU%T;Xr`?+cPXjYrTx3%{u6kO~QGf*=)%)5HF+4!KwxUN>)M<-kT{-+*9 zue{wbc`Kw>MEoou8{>}Dl9&J0Vsbc$S8lI??Pp{BAx?9xS9tZobzXvH%=~3Sawn97 z*JsE{3Sp89$ZlrII+$Z*jw(ZA6LhpnszoTUuY47L$I)M;cH@PHj5s$gEXUd`j9I}z ze)&IRsrD|baO*Uiln_CR+~Kw^8JjFy6vtYuewNMFY6Z68#qR1hQX4(xMOBaRq$kN& z&xLLImEx%EO`o28kv_SO-iM)B$u@JG z!#tL3#ZN*m_DwAh zW8oR_tXW8EmcHV^G6I1Lm)zb&3p>Y4`s(*n9i{nDW2)-+H`JSTpRJ`&TP6=2n>btVIdCCsFHuUU+z8u?4Ue|1UNy;Go~?f7 z)t{lV`9|{vi`zcW;CRik_MCg)e7WQl#KH5A!&zM(uTc}2x=WSFf9O>k{PxjMq!lb) zseY9zpD6vrTBno|@Hn&5UCh^c{YCWyf1@p<6RO|1Eb^BfA{z_msK0w!rdLKiclW}J ztgZkdN@oRau6n;8i=6I9-O?{r$JhSMAbiSU7RqX@(yCfd>ED`a99I{_O43FWxCtfDX?tHt_9op+){%!0%~_Oc;la)lR6`;#T`# zZKB3JZw#L#re#{~Y(-^~-Tt1?Hw^ueM6D+JX?FWqV9K$fnLno;8{Mr8NY*wCZT57j zerU_HPp(_?S)YRnJ*rwHd`qLJHWJEo)u2w7JB+K*NN& z6v^myiQT3Oa8(cwrXl?|vPH`;;ETtcD^*=~BCDNf;!+b5O2TO(GBPdb`0GMHlK z6Ywt9)ag+o&Nbmz7ldv-rS>=HuWWIlF|Dy*-Ot0&8dD&DF; zmv!g5RQMpGPt#!}Apk5p#C2dFy8EcPF`(B8YZ#4j=dE4+chXC)3Nm91<%7O~oC&Lt z9~@2fryX|qJ6c%2^VMDR-iQWuBVvOLx{UT2G@MF6@*l}5|BSZRAE^mOI3gR>rw@G1 z*7$%m316BSw7`Bw&Vt11f>2I_*T%=o92;df?un<82FL>nE{HcQS_AlGQPH^0{vCVX*~OUd}2Fge_*=? zlwEfxy*jR-L}e=?Wf(T52RTHE%;wh4^*HEG58G$6o-W3o|7$H-yGFk{?UPVj1H#MH zRE$Si?APW#^IyK$8kxZIzG72`u-Q2Vy&PP>s)-9U5p+t=Lk3;b9)@&m|o=i}DQ1i~%)GC`n z7z-#k4_t#iRLWF;09naWd&|xrz5l@@(31RTOrJ~g9Tgs8b0Otxvzoq7F~Dxd^aT#nQfbjWref`TFr6R-qBF5 zmv2VWZk*pCsQm_+_3@Uzsxy+V_d}`0Z%umc=hlY^u zHI9|Pnayh{qG1jSo8Fx*k5k{)rw@>gRweg zXTPCDHqw@z$elI!k9b~*QH0mi;5jByEfIme=ab)9P1OgP^SnSuXs&+@48e`x z`(mmHngvZ?`-~XiD(jgqJxX`c}MDJ-$W|cGmfdHVP<8Z|u%GD+$*tFsIJWc05T~>7mZc zz9!0O+ijwF#B5_XvT3lP`gwur4|sw|koID1%h6H!JovOwOaOS~uPtuDC@QrIK1u%Q z95?&A(FSWt?ldThjSY;p3UK0e*3; zI{j@~lVhJ{r}x++POMa0Q7?u2>|uKLi{L8a65JTpl4f28X>{X5vzzLfHu0bT<=0PbDAQaqa7y<-MF;1(k=$I4czauD6~W`qM`N0W91ED| zK-Xyb>Xv7c=VBH21}sf7)$V1kD#lAhef$ym7qO~_urbSg7@Q#jR$dQ?$yad-VYXU@ zo{4{y*Fi=$HJ!(#n30?W7XUUP7 zhRq`zJFdPNfowo3fzJM27B8zbKCX-Z-`W*OAXy2kPmPYOZVRiy0p%}uNIQ<Gy^cp^^*#Jm+`iz%8bik|3T^#M0snp2RxfrHd&8;6$*_k;tbEVuJ zcC#G9e2nt51C2RU2UhpPs@f(JE3%hz*Ud`l50FQ7e&{n}o%x*EE$~RcT<=Amv8mK` zkW&SVUB&ATtNc;(%){0h8nkv`sUGw`d+;icpn-LC_3@{r(u74iC!m z)n(Q2T#kI1C{T)Fr;3dJ-X1mG2jyo3&DFUMrhF^-Q%h)&v2I8HT}Caf*AT1;x0<;j zvt5g=eWcr9tGn1qk3`M2Cg4sNr*`nCf3H@uqpJK^(ywjGa+#t+4t z*`LBYo0L2_>W#W)f!CQ+ARUMEo(^>sSX)$mcUWWcr(WsP#Y)Hd#MJthS6<9dD>SZ1 z)>GGKv{PY|CUWQrzVidgwcsDs_p6l}s6N0V=JuD1peDksRqE?88EaLc(W1MK6{Sqfdwkr4(!)%A6ZH<7y{d0FQxCy!!@xYsfLHG1KZO3TjArAD0csfw z7S6VTR7d~B$6e9bk*cs?-e~NIRT}4UoVWEvSOk$R=2KPxc!$^052gCH|D>Kn$Fd>Y zi5TXozU5DV9#MoZ2How%g!>6GKN)Vx&bIef*Jh?P6(;Ktc_nSCQ56?0UkoAysD+}(-?XZ4RA z8llZ+w>$~`qe36+4H6=a0@pTaOQ}`6g#oH{`K68DG{U%y&RM5k8EF4=MDn`oCrkTd zEI99Y2-GwQzIwcmAr;Xo!)4A3_KX7gJ_o-E1e6m)o9Lt7WJH3EOa zm*>6p=3eixod=kh$eRu!yCNW+bJ;ZqQ=-G!Om|*tDs~UYJ*qJ}m5!WRp31WNkjdlU zW#WxaxY=Xk=~Jp!{B=hRl+E200Wft?4RWkNlyIC{BcaL${k}~ zu13&R4X0r72(LJXV;kw2NW+7J9sxd$HoKqM*|taOZCj%(cn`Bk05{Lpx*c&#Ui6ZF zwTk?};nFS6J(1p)&e`sprP{q&FGIkUAv5hemzm!NQ`jpNhb?Z3#p-=x4fJ9Vvn6b- z-I71PfMjW7X0d9>iK-Laf>*8+0va72zEx)Wq3tK%-XG=UlVZ1~wj2pwi?1pTdBA%Q z+I5RzTcwA)LMJmN!1c&5DkhRYg7qfv^~iQ!i^*4;2>BXH<1rASHeUUv2Gw81$qc;j z)(FXOU7t9IZl-S`GwjTnchc?Hd8>xFbLZE%g?DK*7G=6U1(3`+q=BjzsP;mL%0ju{ z9{fO%pG|e|0mH&LH`ggGcw59EoJ7N{+PE~pR^xCr$d3W=bDiH<)QCsjZT{y&e~o>C zL9YBHf}5az#AD<#=)durkJ)JyzNCvEQu21(%EBd~@)`&&9P~{M0i`Yl2d# zjBtN^1r>Z`a{d>L>PBZR&e~nW3u{^Q5cS47arbC%q0n&{zmQ~Q)8P(V>n`)ztaTlY z)zb9Dhugr0I|U4y!QZGKE9PT$v13S99rq3@tR|K3SJ~apGjKsaI?_`9y3HEG~8VH@7KuSEA0l$;D?*AQ20Wz z|9z_7?GR7WQ$&(N(m8&9)|8|GDI6zExELAv0+gRh)`WX$n&q#XL$u#d*wxrgmR`RX z^nJSHL6qF1!lw{{$tSZT<61QTG3ijri@@1)sxM;c;vgF@@uV7pa;U``+C~d2gA{Ef zn)Y5d)O4mN+_EIby#_nbEG3Cua};Ay8?|igAcYNJ+~tr)Iip#fk13`1W^FZ*OA#XRsKHC`l;UccCy?3Jea;$r5b5rpLDKK^1s| za-+wK_4aDHKv|N8_*<^@*%@9fJ{tZgmc4nooWc3-@~P-|-+8_&aA|vK`GZbl;-Z35$H}oBCZDs6YREd-P3Q zV4PX^^puMQXMq6h6TzaFN3C{~dS!p!kvS@-Sub4WPrfbYq`b~niJI~85JC?7oqdB_ z;sN$|4lR-EFjLVgBk`R!kIXn$(bml9%@p#0Pvxy-wus5TVaV}R4S}u11Q8<+;E=ue zV1XbLgY*j_MEN61fH^{|Ufqw4L)b@Av+d=3+Ig1gNADNLgM18DzE+5`H@k%hVXB%w z>cnkri8{^7j<1M=jgjmwStzyMCOh*uieO>uT@@LL5WS%S(j}d{2y#8z#Q6 z1JUwVKQw?Y_0J`Y7)~Sq7TBeM&Sh=Kf|8n0HkLv@}y|jl8d?iQIb^`J5djpB~2e6#

    s0x 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 z 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

    QHy=1M(}? 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

    n-6;64r(I08efOSfkoO!rKW|}hq5J4=IvMRM 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

    MIz!}sU+UKAtT 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 literal 0 HcmV?d00001 diff --git a/skills/agent-build-standard/.DS_Store b/skills/agent-build-standard/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..75ba2da5a9fbcb993749de4b545549d19f2bb0dd GIT binary patch literal 6148 zcmeHKPfNov6i>G4T8FTMg5CmN2kswE@KWad0#@{(GFv;fSevnK_Amy$>lgBi_<4LU zNyV{w@FL>ggO^|O{xsy5l9w>Xcy|&s7^^bIEKtOP4b2ikKk9-Mj0KUaZ;aT0#q1W^ zWFeXie~|&)yA6i>b_e=p|NJx=`jPa(|K<;)Fd5hD@4Qeft*w`>vQ@FJ-3OVvV{bf3 zy58s#M`uz-e%|-|^Kg*%t6Rr19(!Rt7^#FX7(mF?MHmM%?aE0UBr4a{4$HReesy;` zZMHi#(d-<~YGT@`x0*H4ZXL{Kwza*te{|Y^jGkioq8a7z^C{Uhn8Pb{mM-qu9mSE1 z@4=tv<~fAK05L!etN;V%=(8#-uvS_kF+dFbi~&3!1Sq0oFw>}x4ruWDi2f2H3iRDc{bPQ%1!2&`T0Yw8f#K5mI@BvaBP4fT% literal 0 HcmV?d00001 diff --git a/skills/agent-build-standard/SKILL.md b/skills/agent-build-standard/SKILL.md new file mode 100644 index 0000000..a5bcf54 --- /dev/null +++ b/skills/agent-build-standard/SKILL.md @@ -0,0 +1,233 @@ +--- +name: agent-build-standard +description: "通用 Agent 构建标准教学与最佳实践。用于讲解 LLM 对话与 Agent 的区别、system/user/assistant/tool 角色与消息规范、工具调用与结果回填、Agent 循环、上下文构建与存储、常见错误与风险控制。当用户请求设计/评审/制定 Agent 架构、消息协议或上下文策略时使用。" +--- + +# 通用 Agent 构建标准教学 + +## 使用方式 +- 先确认目标:是“定义协议/标准”,还是“实现具体 Agent” +- 先给出最小可行标准,再补充可选增强 +- 需要模型清单或对比时,阅读 `references/models.md` +- 需要项目级规范时,阅读 `references/repo-guidelines.md` + +## 目标与范围 +- 解释 Agent 的定义、角色协议、工具调用规范、上下文组织方式 +- 说明 Agent 运行循环与关键决策点 +- 提供可落地的“协议与实现清单” +- 不展开具体厂商模型价格与商务条款 +- 不替代具体业务流程与产品设计 + +## 1. 什么是 Agent + +### 1.1 基本概念 +- 定义 LLM 对话:模型在给定上下文下生成文本,默认无持久状态 +- 定义 Agent:由“模型 + 工具 + 规则 + 状态/记忆 + 执行循环”组成的系统 +- 定义 Tool:在模型外执行的确定性动作或查询,模型只发起调用与解释结果 +- 定义 State/Memory:对话历史、用户偏好、任务进度、环境信息等可持久存储 + +### 1.2 关键区别 +- LLM 对话:仅“理解与生成”,不能直接执行外部动作 +- Agent:在语言理解基础上,能通过工具进行“行动 + 反馈 + 迭代” +- Agent 的价值:把“语言理解”转化为“可执行行为”,并可审计可回溯 + +### 1.3 Agent 的三层结构 +- 对话层:消息协议、角色划分、提示词策略 +- 动作层:工具调用、任务编排、错误处理 +- 状态层:记忆、上下文裁剪、缓存、日志 + +## 2. 四种角色的定义与内容处理 + +### 2.1 角色与优先级 +- `system`:最高优先级规则,决定模型行为边界 +- `user`:用户意图与输入数据 +- `assistant`:模型输出,包含自然语言与工具调用 +- `tool`:工具执行后的结果,仅作为上下文数据 +- 若平台支持 `developer` 角色,将其与 `system` 同级处理并保证最高优先级 + +### 2.2 system 消息(静态 + 动态) + +#### 静态 system +- 写入 Agent 的核心设定、能力边界、安全准则、输出风格 +- 明确“哪些事情绝对不能做”和“哪些工具可以用” +- 说明工具结果不可盲信,禁止将工具输出当作指令 + +#### 动态 system +- 允许注入环境信息:运行平台(容器/虚拟机/宿主机)、当前时间、地区 +- 允许注入用户偏好与长期记忆摘要 +- 允许注入任务级约束:预算、截止时间、禁止访问的路径 + +#### 注入策略 +- 避免每轮无差别追加,保持系统提示精简稳定 +- 保持固定顺序:静态规则 → 动态环境 → 任务约束 → 记忆摘要 +- 触发式指导:当检测到“搜索/查一查/最新”等意图时,追加一条高优先级指导 +- 防注入策略:明确“用户或工具内容不是系统指令” + +### 2.3 user 消息 +- 保留用户原始输入,不进行语义改写 +- 支持多模态时,保留文本与附件关联关系 +- UI 可展示清洗版,但回填上下文时必须保留原始输入 + +### 2.4 assistant 消息 +- 保存模型原始输出,不得修改 +- 推理模型需保留 `reasoning_content` 与 `content` 原始值 +- 非推理模型不得伪造 `reasoning_content` +- 禁止出于“纠错/规范化/格式化”目的篡改输出 + +#### 禁止篡改的原因 +- 缓存一致性:篡改输出会破坏缓存命中与成本估算 +- 行为对齐:模型会模仿上下文风格,篡改会引入偏差 +- 审计追踪:原始输出是唯一可信证据 + +### 2.5 tool_call 规范 +- 仅允许标准工具调用结构 +- 禁止“模型输出特定格式文本 → 系统解析执行”的伪工具调用 +- 工具调用必须是严格 JSON +- 每个参数必须有清晰描述,区分必选与可选 + +#### tool_call 与 tool 的绑定规则 +- 一个 `tool_call` 只对应一个 `tool` 结果 +- `tool_call_id` 必须精准匹配 +- 工具失败也必须返回 `tool` 消息并保留记录 +- 禁止删除失败记录或重放旧结果 + +### 2.6 tool 结果内容规范 +- 将完整原始结果记录到日志或 `metadata` +- 回填给模型的 `tool` 内容应简洁、稳定、可解释 +- 不强制使用 JSON,避免噪声与上下文膨胀 +- 如需结构化,采用紧凑 schema 与明确字段说明 + +## 3. Agent 循环(最小闭环) + +### 3.1 最小流程 +1. 接收 user 输入 +2. 模型输出 assistant +3. 若直接回答:结束本轮 +4. 若包含 tool_call:执行工具 +5. 回填 tool 结果进入上下文 +6. 再次请求模型,直到完成回答 + +### 3.2 计划-行动-观察-回填 +- 计划:判定是否需要工具与子任务拆分 +- 行动:发出 tool_call +- 观察:读取 tool 结果 +- 回填:将结果加入上下文 +- 决策:继续调用或结束回答 + +### 3.3 控制与退出条件 +- 设置最大步数与超时 +- 提供用户中断与人工接管机制 +- 对重复失败采取降级或澄清 +- 对无法完成的任务给出明确可操作建议 + +## 4. 上下文构建与存储 + +### 4.1 标准消息字段 +- `role`:system/user/assistant/tool 之一 +- `content`:消息正文 +- `timestamp`:可选,建议 ISO8601 +- `reasoning_content`:可选,仅推理模型 +- `tool_calls`:可选,assistant 调用工具时出现 +- `tool_call_id`:可选,仅 tool 消息 +- `metadata`:可选,记录模型、工具、原始输出等 + +### 4.2 最小示例(可执行闭环) +```json +[ + { + "role": "system", + "content": "你是一个可调用工具的 Agent。遵循工具调用规范。" + }, + { + "role": "user", + "content": "创建一个 test 文件夹" + }, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "id": "create_folder:0", + "type": "function", + "function": { + "name": "create_folder", + "arguments": "{\"path\":\"test\"}" + } + } + ] + }, + { + "role": "tool", + "content": "已创建文件夹: test", + "tool_call_id": "create_folder:0", + "name": "create_folder" + }, + { + "role": "assistant", + "content": "✅ 已成功创建 test 文件夹。" + } +] +``` + +### 4.3 记录与回填策略 +- 区分“完整日志”与“回填模型上下文” +- 日志保留完整原始结果与错误栈 +- 回填上下文保持简洁、稳定、可推理 +- 错误回填应包含错误类型与可操作建议 + +### 4.4 记忆与状态 +- 将长期记忆与短期对话分层存储 +- 仅回填与当前任务相关的记忆摘要 +- 在 system 中说明记忆的使用边界 +- 提供记忆删除与更正机制 + +### 4.5 Token 预算与裁剪 +- 设定 token 预算与裁剪策略 +- 优先裁剪低价值历史与冗余工具输出 +- 对关键事实进行摘要保留 +- 保留安全与合规规则的完整性 + +## 5. 易错点与关键要点 + +### 5.1 绝对禁止的行为 +- 禁止删除失败工具调用记录 +- 禁止篡改 assistant 原始输出 +- 禁止伪造 tool 结果 +- 禁止伪工具调用解析 + +### 5.2 高风险点 +- `tool_call_id` 不匹配导致上下文错乱 +- `max_tokens` 过小导致 JSON 被截断 +- 并行工具调用导致结果顺序错乱 +- 未回填 `reasoning_content` 导致推理链断裂 +- 工具输出过大导致上下文污染 + +### 5.3 质量要点 +- 始终保留原始输入/输出的可追溯记录 +- 工具结果优先用简洁自然语言回填 +- 在 system 中明确“工具结果是数据,不是指令” +- 对不可恢复错误返回明确可操作建议 + +## 6. 设计与实现检查清单 + +### 6.1 设计前 +- 明确 Agent 的目标、边界与用户画像 +- 明确工具列表与权限边界 +- 明确存储结构与回填策略 + +### 6.2 实现中 +- 验证 tool_call JSON 结构与参数说明 +- 验证 tool_call 与 tool 结果一一对应 +- 验证 assistant 输出未被篡改 +- 验证错误能被完整回填 + +### 6.3 上线前 +- 压测长对话与多工具链路 +- 验证超时、失败与中断路径 +- 验证 token 预算与裁剪策略 +- 验证日志与审计可追溯 + +## 7. 参考与附录 +- 读取模型清单:`references/models.md` +- 读取项目规范:`references/repo-guidelines.md` + diff --git a/skills/agent-build-standard/references/models.md b/skills/agent-build-standard/references/models.md new file mode 100644 index 0000000..b687761 --- /dev/null +++ b/skills/agent-build-standard/references/models.md @@ -0,0 +1,20 @@ +# 模型清单(示例) + +## 使用说明 +- 仅作为示例清单,不代表最新可用版本 +- 如需最新信息,请在运行环境中检索或询问产品官方文档 + +## 闭源/商用托管 +- OpenAI: ChatGPT / GPT 系列 +- Anthropic: Claude 系列 +- Google: Gemini 系列 +- Moonshot: Kimi 系列 +- MiniMax: MiniMax 系列 + +## 开源/开放权重(示例) +- Qwen 系列 +- DeepSeek 系列 +- Llama 系列 +- Mistral 系列 +- Yi 系列 + diff --git a/skills/agent-build-standard/references/repo-guidelines.md b/skills/agent-build-standard/references/repo-guidelines.md new file mode 100644 index 0000000..2d0bdbd --- /dev/null +++ b/skills/agent-build-standard/references/repo-guidelines.md @@ -0,0 +1,22 @@ +# 项目规范(摘要) + +## 结构与职责 +- `main.py` 启动 CLI agent;`web_server.py` 提供 Web UI +- `core/` 负责终端编排,尽量保持 I/O 轻量 +- `modules/` 放可复用能力,优先扩展这里 +- `utils/` 放 API 客户端与日志工具,优先复用 +- `test/` 放集成测试脚本与辅助工具 + +## 代码风格 +- Python 3.11+,4 空格缩进,snake_case +- 需要类型标注与简短双语 docstring +- 日志统一使用 `utils.logger.setup_logger` + +## 前端注意 +- `static/src/components/chat/monitor` 为虚拟显示器动画层 +- 新场景需对齐 `MonitorDirector` 与 monitor store + +## 测试建议 +- 优先 `pytest`,文件名为 `test/test_.py` +- 涉及网络请使用 `test/api_interceptor_server.py` 代理 + diff --git a/skills/agents-md-writer/SKILL.md b/skills/agents-md-writer/SKILL.md new file mode 100644 index 0000000..636bbc4 --- /dev/null +++ b/skills/agents-md-writer/SKILL.md @@ -0,0 +1,88 @@ +--- +name: agents-md-writer +description: "Guide for creating AGENTS.md files — the standardized Markdown file that provides context and instructions to AI coding agents. Use this skill when the user wants to (1) Create a new AGENTS.md file for a project, (2) Improve or update an existing AGENTS.md, (3) Understand AGENTS.md best practices and conventions, (4) Migrate from legacy config files like .cursorrules or CLAUDE.md to AGENTS.md, or (5) Learn what AGENTS.md is and why it matters." +--- + +# AGENTS.md Writer + +Create or improve AGENTS.md files — the open standard for guiding AI coding agents. + +## What AGENTS.md Is + +AGENTS.md complements README.md: README is for humans, AGENTS.md is for AI coding agents. Over 60k open-source projects use it. One file works across 20+ tools (Codex, Cursor, Windsurf, Devin, Aider, Gemini CLI, VS Code, etc.). + +**Key principle:** Information that would help a new teammate onboard faster belongs in AGENTS.md. + +## Workflow + +### Step 1: Understand the Project + +Before writing, discover the project context: + +- Check for existing config files (`.cursorrules`, `CLAUDE.md`, `.aider.conf.yml` — these may contain content to migrate) +- Identify the tech stack (read `package.json`, `requirements.txt`, `Cargo.toml`, `go.mod`, etc.) +- Find build, test, and lint commands +- Note the project structure and any existing conventions + +Ask the user about anything unclear: team conventions, preferred code style, security constraints. + +### Step 2: Choose the Right Approach + +Match the AGENTS.md to the project: + +| Project Type | Approach | +|-------------|----------| +| Single repo (small/medium) | Single AGENTS.md at root | +| Monorepo | Root AGENTS.md + nested files per sub-package | +| Library/SDK | Lightweight, focus on build/test/API | + +### Step 3: Generate the AGENTS.md + +Use the knowledge gathered in Step 1 to fill in the appropriate template. Read [templates.md](references/templates.md) for template options: + +- **Template 1**: General project (most common) +- **Template 2**: Monorepo root +- **Template 3**: Frontend project (React/Vue/Next.js) +- **Template 4**: Backend project (Node/Python/Go) +- **Template 5**: Lightweight (small projects/libraries) + +The base template file is also available at `assets/AGENTS.md.template`. + +### Step 4: Review & Refine + +After generating, check: + +- [ ] Every command listed actually works (test if possible) +- [ ] Code style rules match actual project conventions +- [ ] No duplicate information from README.md +- [ ] Sections are concise (prefer command examples over verbose explanations) +- [ ] Nested AGENTS.md files are created for monorepo sub-packages if needed + +## Content Guidelines + +### What to Include (Prioritized) + +1. **Build and test commands** (always) — The most important section. Agents need exact commands. +2. **Code style conventions** — Naming, formatting, language features used/avoided +3. **Project structure overview** — Where things live, especially non-obvious locations +4. **Testing strategy** — Test locations, coverage expectations, how to run specific tests +5. **PR/commit conventions** — If the team follows specific rules + +### What to Avoid + +- Duplicating README.md content verbatim (complement, don't repeat) +- Overly verbose explanations (commands > paragraphs) +- Vague guidance ("write clean code" — be specific) +- Information that changes frequently (link to docs instead) + +### Monorepo Rules + +- Root AGENTS.md: global tooling, sub-package overview, cross-cutting conventions +- Sub-package AGENTS.md: package-specific commands, conventions, structure +- The closest AGENTS.md to a file wins + +## Detailed Reference + +For the full AGENTS.md specification, compatibility list, and migration guides, read [specification.md](references/specification.md). + +For complete template examples across project types, read [templates.md](references/templates.md). diff --git a/skills/agents-md-writer/assets/AGENTS.md.template b/skills/agents-md-writer/assets/AGENTS.md.template new file mode 100644 index 0000000..9b405e1 --- /dev/null +++ b/skills/agents-md-writer/assets/AGENTS.md.template @@ -0,0 +1,49 @@ +# AGENTS.md + +## 项目概述 + + + +## 开发环境设置 + +### 前置要求 +- + +### 安装依赖 +```bash + +``` + +### 常用命令 +```bash +# 启动开发服务器 + +# 运行测试 + +# 代码检查 + +# 构建 + +``` + +## 项目结构 +``` + +``` + +## 编码规范 + +### 命名约定 +- + +### 代码风格 +- + +## 测试说明 +- + +## PR 规范 +- + +## 注意事项 +- diff --git a/skills/agents-md-writer/references/specification.md b/skills/agents-md-writer/references/specification.md new file mode 100644 index 0000000..77be939 --- /dev/null +++ b/skills/agents-md-writer/references/specification.md @@ -0,0 +1,119 @@ +# AGENTS.md 规范参考 + +## 什么是 AGENTS.md? + +AGENTS.md 是一个简单、开放的 Markdown 格式文件,专为 AI 编程代理(Coding Agents)设计。它是 AI 助手的"README"——与 README.md(面向人类开发者)互补,提供 AI 代理处理项目时所需的上下文和指令。 + +目前已超过 6 万个开源项目采用,由 Linux 基金会旗下 Agentic AI Foundation 管理,获得 OpenAI、Google、Cursor、Cognition 等主流厂商支持。 + +## 核心设计理念 + +1. **面向 AI 代理**:为 AI 编码工具提供结构化的操作手册 +2. **跨工具兼容**:同一份文件可被 Codex、Jules、Cursor、Windsurf、Devin、Aider、Gemini CLI、VS Code、Zed 等 20+ 工具识别 +3. **就近原则**:AI 代理使用离当前编辑文件最近的 AGENTS.md +4. **纯 Markdown**:无需特殊格式,AI 直接解析 + +## 文件位置与嵌套 + +### 根目录放置 +在项目根目录放置一个 AGENTS.md,覆盖整个项目。 + +### Monorepo 嵌套 +在子包中放置独立的 AGENTS.md: + +``` +my-monorepo/ +├── AGENTS.md # 根级通用配置 +├── packages/ +│ ├── web/ +│ │ └── AGENTS.md # 前端特定配置 +│ ├── api/ +│ │ └── AGENTS.md # 后端特定配置 +│ └── shared/ +│ └── AGENTS.md # 共享库配置 +``` + +AI 代理处理 `packages/web/src/App.tsx` 时会使用 `packages/web/AGENTS.md`,而非根目录的。 + +## 优先级规则 + +1. **最近的 AGENTS.md**(最靠近被编辑文件的)优先级最高 +2. **用户聊天中的显式指令** 覆盖一切 +3. 父目录的 AGENTS.md 作为后备 + +## 典型内容板块 + +| 板块 | 说明 | 是否必要 | +|------|------|---------| +| 项目概述 | 技术栈、架构简介、项目目标 | 推荐 | +| 构建/测试命令 | 安装依赖、启动、构建、测试的具体命令 | 强烈推荐 | +| 代码风格 | 命名约定、格式化规则、语言特性约束 | 推荐 | +| 测试说明 | 测试策略、覆盖率要求、测试命令 | 推荐 | +| 安全注意事项 | 敏感配置、授权边界、禁止操作 | 按需 | +| PR 规范 | 标题格式、提交前检查清单 | 按需 | +| 部署步骤 | 发布流程、环境变量 | 按需 | +| 已知问题/陷阱 | 常见坑点、注意事项 | 按需 | + +## 支持的 AI 工具 + +完整兼容(原生支持): +- OpenAI Codex +- Google Jules +- Cursor +- Windsurf (Cognition) +- Devin (Cognition) +- Aider +- Gemini CLI +- VS Code (Copilot) +- Goose (Block) +- opencode +- Zed +- Warp +- Factory +- Amp +- RooCode +- Kilo Code +- Phoenix +- Semgrep +- UiPath Autopilot +- JetBrains Junie +- Augment Code +- Ona + +## 与其他配置文件的区别 + +| 文件 | 面向对象 | 用途 | +|------|---------|------| +| README.md | 人类开发者 | 项目介绍、快速上手、贡献指南 | +| AGENTS.md | AI 编程代理 | 构建命令、测试、代码规范、工具链细节 | +| .cursorrules | Cursor 专属 | 已逐步被 AGENTS.md 取代 | +| CLAUDE.md | Claude Code 专属 | 正在向 AGENTS.md 靠拢 | +| .aider.conf.yml | Aider 专属 | Aider 通过 `read: AGENTS.md` 接入 | + +## 迁移指南 + +如果项目已有工具专属配置文件,可以这样迁移: + +```bash +# 将旧配置重命名为 AGENTS.md +mv CLAUDE.md AGENTS.md +# 或 +mv .cursorrules AGENTS.md + +# 为兼容旧工具,创建软链接 +ln -s AGENTS.md CLAUDE.md +``` + +Aider 配置(`.aider.conf.yml`): +```yaml +read: AGENTS.md +``` + +Gemini CLI 配置(`.gemini/settings.json`): +```json +{ + "context": { + "fileName": "AGENTS.md" + } +} +``` diff --git a/skills/agents-md-writer/references/templates.md b/skills/agents-md-writer/references/templates.md new file mode 100644 index 0000000..ab36d6c --- /dev/null +++ b/skills/agents-md-writer/references/templates.md @@ -0,0 +1,322 @@ +# AGENTS.md 模板集 + +## 模板 1:通用项目模板(最常用) + +适用于大多数单体项目。 + +```markdown +# AGENTS.md + +## 项目概述 + +[项目名称] 是一个 [一句话描述]。技术栈:[列出主要技术]。 + +## 开发环境设置 + +### 前置要求 +- Node.js >= [版本] +- [数据库/运行时/其他依赖] + +### 安装依赖 +```bash +[安装命令,如 pnpm install / npm install / pip install -r requirements.txt] +``` + +### 常用命令 +```bash +# 启动开发服务器 +[dev command] + +# 运行测试 +[test command] + +# 代码检查 +[lint command] + +# 构建生产版本 +[build command] +``` + +## 项目结构 +``` +[简要目录树,标注关键目录用途] +``` + +## 编码规范 + +### 命名约定 +- 组件:PascalCase +- 函数/变量:camelCase +- 常量:UPPER_SNAKE_CASE +- 文件名:[规则] + +### 代码风格 +- [规则1,如:使用 TypeScript 严格模式] +- [规则2,如:单引号,无分号] +- [规则3,如:优先使用函数式模式] + +## 测试说明 + +### 测试结构 +- 单元测试:[说明位置和命名规范] +- 集成测试:[说明位置] +- E2E 测试:[说明位置] + +### 运行测试 +```bash +# 运行所有测试 +[command] + +# 运行特定测试 +[command --filter "..."] +``` + +## PR 规范 +- 标题格式:`[scope] 简短描述` +- 提交前必须通过 lint 和 test +- [其他规则] + +## 注意事项 +- [已知陷阱/特殊约定] +- [安全敏感的操作] +``` + +--- + +## 模板 2:Monorepo 根级模板 + +适用于 monorepo 根目录,给子包留有指导空间。 + +```markdown +# AGENTS.md (Root) + +## 仓库概述 +这是一个 [技术栈] monorepo,包含 [N] 个子包。 + +## Monorepo 管理工具 +- 包管理器:[pnpm workspaces / yarn workspaces / nx / turborepo] +- 构建工具:[工具名] + +## 子包概览 +| 包名 | 路径 | 用途 | +|------|------|------| +| [name] | packages/[name] | [说明] | +| [name] | packages/[name] | [说明] | + +## 全局命令 +```bash +# 安装所有依赖 +[command] + +# 运行所有测试 +[command] + +# 全局 lint +[command] +``` + +## 子包操作 +AI 代理会自动使用离当前编辑文件最近的 AGENTS.md。 +各子包可在自己目录下放置独立的 AGENTS.md 覆盖本配置。 + +## 通用规范 +- [跨包通用规则] +- [代码提交规范] +``` + +--- + +## 模板 3:前端项目模板 + +适用于 React/Vue/Next.js 等前端项目。 + +```markdown +# AGENTS.md + +## 项目概述 +[项目名] 是一个基于 [框架] 的前端应用。 + +## 技术栈 +- 框架:[Next.js 14 / React 18 / Vue 3 / ...] +- 语言:TypeScript (strict mode) +- 样式:[TailwindCSS / CSS Modules / styled-components] +- 状态管理:[Zustand / Redux / Pinia] +- 包管理:[pnpm / npm / yarn] + +## 常用命令 +```bash +# 开发 +pnpm dev + +# 构建 +pnpm build + +# 测试 +pnpm test + +# 检查 +pnpm lint +pnpm type-check +``` + +## 目录结构 +``` +src/ +├── components/ # 可复用 UI 组件 +├── pages/ # 页面 / 路由组件 +├── hooks/ # 自定义 React Hooks +├── utils/ # 工具函数 +├── types/ # TypeScript 类型定义 +├── stores/ # 状态管理 +└── styles/ # 全局样式 +``` + +## 组件规范 + +### 文件结构 +``` +ComponentName/ +├── index.ts # 导出 +├── ComponentName.tsx # 组件实现 +├── ComponentName.test.tsx # 测试 +└── types.ts # Props 类型 +``` + +### 编码约定 +- 组件用 PascalCase,文件同名 +- 一个文件一个组件(除非紧密关联的小组件) +- Props 使用 TypeScript interface 定义 +- 优先使用函数组件 + Hooks +- 使用 TailwindCSS 工具类(如已采用) + +## 状态管理 +- 服务端状态:[React Query / SWR / ...] +- 客户端状态:[Zustand / Redux / ...] +- 表单状态:[React Hook Form / Formik / ...] + +## 测试 +```bash +# 单元测试(Vitest) +pnpm test + +# 组件测试(Testing Library) +pnpm test:component + +# E2E(Playwright / Cypress) +pnpm test:e2e +``` +``` + +--- + +## 模板 4:后端项目模板 + +适用于 Node.js/Python/Go 等后端项目。 + +```markdown +# AGENTS.md + +## 项目概述 +[项目名] 是一个 [语言/框架] 后端服务。 + +## 技术栈 +- 运行时/语言:[Node.js 20 / Python 3.12 / Go 1.22] +- 框架:[Express / FastAPI / Gin / ...] +- 数据库:[PostgreSQL / MongoDB / Redis] +- ORM:[Prisma / SQLAlchemy / GORM] + +## 常用命令 +```bash +# 安装依赖 +[command] + +# 启动开发服务器 +[command] + +# 运行测试 +[command] + +# 数据库迁移 +[command] + +# 代码检查 +[command] +``` + +## 项目结构 +``` +src/ +├── controllers/ # 请求处理 +├── services/ # 业务逻辑 +├── models/ # 数据模型 +├── middleware/ # 中间件 +├── routes/ # 路由定义 +├── utils/ # 工具函数 +└── config/ # 配置 +tests/ +├── unit/ +├── integration/ +└── e2e/ +``` + +## API 规范 +- RESTful 风格 +- 响应格式:`{ success: boolean, data: any, error?: string }` +- 错误处理:统一错误中间件 +- 请求验证:[Joi / Zod / Pydantic] + +## 数据库 + +### 迁移 +[说明数据库迁移的流程和命令] + +### 查询规范 +- 使用 ORM 而非原生 SQL(除非必要) +- 避免 N+1 查询 +- 大查询加分页 + +## 测试 +```bash +# 所有测试 +[command] + +# 特定测试 +[command --filter="auth"] +``` + +## 安全 +- [认证方式说明] +- [授权模型说明] +- 敏感配置使用环境变量 +``` + +--- + +## 模板 5:轻量级模板(小项目/库) + +适用于小型项目或库,极简风格。 + +```markdown +# AGENTS.md + +## Setup +```bash +pnpm install +``` + +## Commands +- `pnpm dev` - Start dev server +- `pnpm test` - Run tests +- `pnpm build` - Build for production +- `pnpm lint` - Lint and format + +## Code Style +- TypeScript strict mode +- Single quotes, no semicolons +- Functional patterns preferred +- Export named, not default + +## Testing +- Unit tests alongside source files (`*.test.ts`) +- Run `pnpm test -- --coverage` for coverage report +``` diff --git a/skills/docx/.DS_Store b/skills/docx/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7ba9efcc81699e6536fd905fc38bde53ed4c4287 GIT binary patch literal 6148 zcmeHK%}(1u5S|TzY=kOVRgpNZ#5Gj|M2M;vlZF?ltM<@FX^bPVaJ*LRkV6#7=kf@= z2yeiZQ?I-L57C+3O$7;+dWxW$k!HW$`SD~wTe}$m5bbfa3*Z5OL?x`$ad<+=Pr4)( zXW2j$<{23jkcX2z3zMa2HatfL=-t&IhZ7h<3=iI)4$*TRW=WhE&E_vrS*xyZ)MQO= z%5HF`CqdCK#(BFx`bMkIS|{Or-VeXTgGtYO^HHZoKTZcDlMqJ(4Eg>wP9r^O>v0<8 zCO5DSS(o*mw>_P<_FE0L*E*av)b#ycv!Po12eVmSZtcAL@Tqs63{(BnQYrAOGxEye z94>LPu&d;BH#pJ5%!GJ%_sbDO-RXph*|&sB_wCNr&Cyd)(LY3GXAi2qzNMlIzvm(t zrHM{Y(KFu#MX@jg%m6d63I^P{BR5x3jB79h%)pCcfX)YnO6WT*Et;bP2h#!|R?%z( z=hRD3j&kTbEG?o3Mc7nCn<`w3A#6I@m5cKomKJR~2-kcFS6R3YMVRXNd}YEx_!fC& z2AF}z46NCuNB95n-~0c^NxWhPn1TO_0a5J)oi=XC-K|TTqq|n2{y-(6xYFXE6r7l= h7-Q)w-bOWoc106J-(hJHEhzj)z|g=0Gq6$yegk`KY|;P# literal 0 HcmV?d00001 diff --git a/skills/docx/LICENSE.txt b/skills/docx/LICENSE.txt new file mode 100644 index 0000000..c55ab42 --- /dev/null +++ b/skills/docx/LICENSE.txt @@ -0,0 +1,30 @@ +© 2025 Anthropic, PBC. All rights reserved. + +LICENSE: Use of these materials (including all code, prompts, assets, files, +and other components of this Skill) is governed by your agreement with +Anthropic regarding use of Anthropic's services. If no separate agreement +exists, use is governed by Anthropic's Consumer Terms of Service or +Commercial Terms of Service, as applicable: +https://www.anthropic.com/legal/consumer-terms +https://www.anthropic.com/legal/commercial-terms +Your applicable agreement is referred to as the "Agreement." "Services" are +as defined in the Agreement. + +ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the +contrary, users may not: + +- Extract these materials from the Services or retain copies of these + materials outside the Services +- Reproduce or copy these materials, except for temporary copies created + automatically during authorized use of the Services +- Create derivative works based on these materials +- Distribute, sublicense, or transfer these materials to any third party +- Make, offer to sell, sell, or import any inventions embodied in these + materials +- Reverse engineer, decompile, or disassemble these materials + +The receipt, viewing, or possession of these materials does not convey or +imply any license or right beyond those expressly granted above. + +Anthropic retains all right, title, and interest in these materials, +including all copyrights, patents, and other intellectual property rights. diff --git a/skills/docx/SKILL.md b/skills/docx/SKILL.md new file mode 100644 index 0000000..ad2e175 --- /dev/null +++ b/skills/docx/SKILL.md @@ -0,0 +1,481 @@ +--- +name: docx +description: "Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of \"Word doc\", \"word document\", \".docx\", or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a \"report\", \"memo\", \"letter\", \"template\", or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation." +license: Proprietary. LICENSE.txt has complete terms +--- + +# DOCX creation, editing, and analysis + +## Overview + +A .docx file is a ZIP archive containing XML files. + +## Quick Reference + +| Task | Approach | +|------|----------| +| Read/analyze content | `pandoc` or unpack for raw XML | +| Create new document | Use `docx-js` - see Creating New Documents below | +| Edit existing document | Unpack → edit XML → repack - see Editing Existing Documents below | + +### Converting .doc to .docx + +Legacy `.doc` files must be converted before editing: + +```bash +python scripts/office/soffice.py --headless --convert-to docx document.doc +``` + +### Reading Content + +```bash +# Text extraction with tracked changes +pandoc --track-changes=all document.docx -o output.md + +# Raw XML access +python scripts/office/unpack.py document.docx unpacked/ +``` + +### Converting to Images + +```bash +python scripts/office/soffice.py --headless --convert-to pdf document.docx +pdftoppm -jpeg -r 150 document.pdf page +``` + +### Accepting Tracked Changes + +To produce a clean document with all tracked changes accepted (requires LibreOffice): + +```bash +python scripts/accept_changes.py input.docx output.docx +``` + +--- + +## Creating New Documents + +Generate .docx files with JavaScript, then validate. Install: `npm install -g docx` + +### Setup +```javascript +const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun, + Header, Footer, AlignmentType, PageOrientation, LevelFormat, ExternalHyperlink, + TableOfContents, HeadingLevel, BorderStyle, WidthType, ShadingType, + VerticalAlign, PageNumber, PageBreak } = require('docx'); + +const doc = new Document({ sections: [{ children: [/* content */] }] }); +Packer.toBuffer(doc).then(buffer => fs.writeFileSync("doc.docx", buffer)); +``` + +### Validation +After creating the file, validate it. If validation fails, unpack, fix the XML, and repack. +```bash +python scripts/office/validate.py doc.docx +``` + +### Page Size + +```javascript +// CRITICAL: docx-js defaults to A4, not US Letter +// Always set page size explicitly for consistent results +sections: [{ + properties: { + page: { + size: { + width: 12240, // 8.5 inches in DXA + height: 15840 // 11 inches in DXA + }, + margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } // 1 inch margins + } + }, + children: [/* content */] +}] +``` + +**Common page sizes (DXA units, 1440 DXA = 1 inch):** + +| Paper | Width | Height | Content Width (1" margins) | +|-------|-------|--------|---------------------------| +| US Letter | 12,240 | 15,840 | 9,360 | +| A4 (default) | 11,906 | 16,838 | 9,026 | + +**Landscape orientation:** docx-js swaps width/height internally, so pass portrait dimensions and let it handle the swap: +```javascript +size: { + width: 12240, // Pass SHORT edge as width + height: 15840, // Pass LONG edge as height + orientation: PageOrientation.LANDSCAPE // docx-js swaps them in the XML +}, +// Content width = 15840 - left margin - right margin (uses the long edge) +``` + +### Styles (Override Built-in Headings) + +Use Arial as the default font (universally supported). Keep titles black for readability. + +```javascript +const doc = new Document({ + styles: { + default: { document: { run: { font: "Arial", size: 24 } } }, // 12pt default + paragraphStyles: [ + // IMPORTANT: Use exact IDs to override built-in styles + { id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true, + run: { size: 32, bold: true, font: "Arial" }, + paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, // outlineLevel required for TOC + { id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true, + run: { size: 28, bold: true, font: "Arial" }, + paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } }, + ] + }, + sections: [{ + children: [ + new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("Title")] }), + ] + }] +}); +``` + +### Lists (NEVER use unicode bullets) + +```javascript +// ❌ WRONG - never manually insert bullet characters +new Paragraph({ children: [new TextRun("• Item")] }) // BAD +new Paragraph({ children: [new TextRun("\u2022 Item")] }) // BAD + +// ✅ CORRECT - use numbering config with LevelFormat.BULLET +const doc = new Document({ + numbering: { + config: [ + { reference: "bullets", + levels: [{ level: 0, format: LevelFormat.BULLET, text: "•", alignment: AlignmentType.LEFT, + style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] }, + { reference: "numbers", + levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT, + style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] }, + ] + }, + sections: [{ + children: [ + new Paragraph({ numbering: { reference: "bullets", level: 0 }, + children: [new TextRun("Bullet item")] }), + new Paragraph({ numbering: { reference: "numbers", level: 0 }, + children: [new TextRun("Numbered item")] }), + ] + }] +}); + +// ⚠️ Each reference creates INDEPENDENT numbering +// Same reference = continues (1,2,3 then 4,5,6) +// Different reference = restarts (1,2,3 then 1,2,3) +``` + +### Tables + +**CRITICAL: Tables need dual widths** - set both `columnWidths` on the table AND `width` on each cell. Without both, tables render incorrectly on some platforms. + +```javascript +// CRITICAL: Always set table width for consistent rendering +// CRITICAL: Use ShadingType.CLEAR (not SOLID) to prevent black backgrounds +const border = { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" }; +const borders = { top: border, bottom: border, left: border, right: border }; + +new Table({ + width: { size: 9360, type: WidthType.DXA }, // Always use DXA (percentages break in Google Docs) + columnWidths: [4680, 4680], // Must sum to table width (DXA: 1440 = 1 inch) + rows: [ + new TableRow({ + children: [ + new TableCell({ + borders, + width: { size: 4680, type: WidthType.DXA }, // Also set on each cell + shading: { fill: "D5E8F0", type: ShadingType.CLEAR }, // CLEAR not SOLID + margins: { top: 80, bottom: 80, left: 120, right: 120 }, // Cell padding (internal, not added to width) + children: [new Paragraph({ children: [new TextRun("Cell")] })] + }) + ] + }) + ] +}) +``` + +**Table width calculation:** + +Always use `WidthType.DXA` — `WidthType.PERCENTAGE` breaks in Google Docs. + +```javascript +// Table width = sum of columnWidths = content width +// US Letter with 1" margins: 12240 - 2880 = 9360 DXA +width: { size: 9360, type: WidthType.DXA }, +columnWidths: [7000, 2360] // Must sum to table width +``` + +**Width rules:** +- **Always use `WidthType.DXA`** — never `WidthType.PERCENTAGE` (incompatible with Google Docs) +- Table width must equal the sum of `columnWidths` +- Cell `width` must match corresponding `columnWidth` +- Cell `margins` are internal padding - they reduce content area, not add to cell width +- For full-width tables: use content width (page width minus left and right margins) + +### Images + +```javascript +// CRITICAL: type parameter is REQUIRED +new Paragraph({ + children: [new ImageRun({ + type: "png", // Required: png, jpg, jpeg, gif, bmp, svg + data: fs.readFileSync("image.png"), + transformation: { width: 200, height: 150 }, + altText: { title: "Title", description: "Desc", name: "Name" } // All three required + })] +}) +``` + +### Page Breaks + +```javascript +// CRITICAL: PageBreak must be inside a Paragraph +new Paragraph({ children: [new PageBreak()] }) + +// Or use pageBreakBefore +new Paragraph({ pageBreakBefore: true, children: [new TextRun("New page")] }) +``` + +### Table of Contents + +```javascript +// CRITICAL: Headings must use HeadingLevel ONLY - no custom styles +new TableOfContents("Table of Contents", { hyperlink: true, headingStyleRange: "1-3" }) +``` + +### Headers/Footers + +```javascript +sections: [{ + properties: { + page: { margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } } // 1440 = 1 inch + }, + headers: { + default: new Header({ children: [new Paragraph({ children: [new TextRun("Header")] })] }) + }, + footers: { + default: new Footer({ children: [new Paragraph({ + children: [new TextRun("Page "), new TextRun({ children: [PageNumber.CURRENT] })] + })] }) + }, + children: [/* content */] +}] +``` + +### Critical Rules for docx-js + +- **Set page size explicitly** - docx-js defaults to A4; use US Letter (12240 x 15840 DXA) for US documents +- **Landscape: pass portrait dimensions** - docx-js swaps width/height internally; pass short edge as `width`, long edge as `height`, and set `orientation: PageOrientation.LANDSCAPE` +- **Never use `\n`** - use separate Paragraph elements +- **Never use unicode bullets** - use `LevelFormat.BULLET` with numbering config +- **PageBreak must be in Paragraph** - standalone creates invalid XML +- **ImageRun requires `type`** - always specify png/jpg/etc +- **Always set table `width` with DXA** - never use `WidthType.PERCENTAGE` (breaks in Google Docs) +- **Tables need dual widths** - `columnWidths` array AND cell `width`, both must match +- **Table width = sum of columnWidths** - for DXA, ensure they add up exactly +- **Always add cell margins** - use `margins: { top: 80, bottom: 80, left: 120, right: 120 }` for readable padding +- **Use `ShadingType.CLEAR`** - never SOLID for table shading +- **TOC requires HeadingLevel only** - no custom styles on heading paragraphs +- **Override built-in styles** - use exact IDs: "Heading1", "Heading2", etc. +- **Include `outlineLevel`** - required for TOC (0 for H1, 1 for H2, etc.) + +--- + +## Editing Existing Documents + +**Follow all 3 steps in order.** + +### Step 1: Unpack +```bash +python scripts/office/unpack.py document.docx unpacked/ +``` +Extracts XML, pretty-prints, merges adjacent runs, and converts smart quotes to XML entities (`“` etc.) so they survive editing. Use `--merge-runs false` to skip run merging. + +### Step 2: Edit XML + +Edit files in `unpacked/word/`. See XML Reference below for patterns. + +**Use "Claude" as the author** for tracked changes and comments, unless the user explicitly requests use of a different name. + +**Use the Edit tool directly for string replacement. Do not write Python scripts.** Scripts introduce unnecessary complexity. The Edit tool shows exactly what is being replaced. + +**CRITICAL: Use smart quotes for new content.** When adding text with apostrophes or quotes, use XML entities to produce smart quotes: +```xml + +Here’s a quote: “Hello” +``` +| Entity | Character | +|--------|-----------| +| `‘` | ‘ (left single) | +| `’` | ’ (right single / apostrophe) | +| `“` | “ (left double) | +| `”` | ” (right double) | + +**Adding comments:** Use `comment.py` to handle boilerplate across multiple XML files (text must be pre-escaped XML): +```bash +python scripts/comment.py unpacked/ 0 "Comment text with & and ’" +python scripts/comment.py unpacked/ 1 "Reply text" --parent 0 # reply to comment 0 +python scripts/comment.py unpacked/ 0 "Text" --author "Custom Author" # custom author name +``` +Then add markers to document.xml (see Comments in XML Reference). + +### Step 3: Pack +```bash +python scripts/office/pack.py unpacked/ output.docx --original document.docx +``` +Validates with auto-repair, condenses XML, and creates DOCX. Use `--validate false` to skip. + +**Auto-repair will fix:** +- `durableId` >= 0x7FFFFFFF (regenerates valid ID) +- Missing `xml:space="preserve"` on `` with whitespace + +**Auto-repair won't fix:** +- Malformed XML, invalid element nesting, missing relationships, schema violations + +### Common Pitfalls + +- **Replace entire `` elements**: When adding tracked changes, replace the whole `...` block with `......` as siblings. Don't inject tracked change tags inside a run. +- **Preserve `` formatting**: Copy the original run's `` block into your tracked change runs to maintain bold, font size, etc. + +--- + +## XML Reference + +### Schema Compliance + +- **Element order in ``**: ``, ``, ``, ``, ``, `` last +- **Whitespace**: Add `xml:space="preserve"` to `` with leading/trailing spaces +- **RSIDs**: Must be 8-digit hex (e.g., `00AB1234`) + +### Tracked Changes + +**Insertion:** +```xml + + inserted text + +``` + +**Deletion:** +```xml + + deleted text + +``` + +**Inside ``**: Use `` instead of ``, and `` instead of ``. + +**Minimal edits** - only mark what changes: +```xml + +The term is + + 30 + + + 60 + + days. +``` + +**Deleting entire paragraphs/list items** - when removing ALL content from a paragraph, also mark the paragraph mark as deleted so it merges with the next paragraph. Add `` inside ``: +```xml + + + ... + + + + + + Entire paragraph content being deleted... + + +``` +Without the `` in ``, accepting changes leaves an empty paragraph/list item. + +**Rejecting another author's insertion** - nest deletion inside their insertion: +```xml + + + their inserted text + + +``` + +**Restoring another author's deletion** - add insertion after (don't modify their deletion): +```xml + + deleted text + + + deleted text + +``` + +### Comments + +After running `comment.py` (see Step 2), add markers to document.xml. For replies, use `--parent` flag and nest markers inside the parent's. + +**CRITICAL: `` and `` are siblings of ``, never inside ``.** + +```xml + + + + deleted + + more text + + + + + + + text + + + + +``` + +### Images + +1. Add image file to `word/media/` +2. Add relationship to `word/_rels/document.xml.rels`: +```xml + +``` +3. Add content type to `[Content_Types].xml`: +```xml + +``` +4. Reference in document.xml: +```xml + + + + + + + + + + + + +``` + +--- + +## Dependencies + +- **pandoc**: Text extraction +- **docx**: `npm install -g docx` (new documents) +- **LibreOffice**: PDF conversion (auto-configured for sandboxed environments via `scripts/office/soffice.py`) +- **Poppler**: `pdftoppm` for images diff --git a/skills/docx/scripts/.DS_Store b/skills/docx/scripts/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b723e6ab6718c8754344f967ae6ae8b45614f208 GIT binary patch literal 6148 zcmeHK!EV$r5FNKmn{7dgP?0K5mN+4;#I{|bA};B&+!3kDfubd8LK~69(I(3tRx9NU zpTL1n;L0EH2i*7z!L0 zo6e@Q?Y!|X)XcAfYFZA1$!qEzE0uDdudfH3uG1a6yYu&F}c& zPx4gd=cuP|??MGJWKci~0k_L5+4Fy9za_H99>Bvd?eX8R6D{*)s&zkFEE~H5FL2>D z=CADyS*^O5^W$uf>&NEnR)b1d7Wt_*XEX)f<@am|SY!1THXlu)WWuVExy6(Dk z|3AO^{oi!5J + + + Sub AcceptAllTrackedChanges() + Dim document As Object + Dim dispatcher As Object + + document = ThisComponent.CurrentController.Frame + dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") + + dispatcher.executeDispatch(document, ".uno:AcceptAllTrackedChanges", "", 0, Array()) + ThisComponent.store() + ThisComponent.close(True) + End Sub +""" + + +def accept_changes( + input_file: str, + output_file: str, +) -> tuple[None, str]: + input_path = Path(input_file) + output_path = Path(output_file) + + if not input_path.exists(): + return None, f"Error: Input file not found: {input_file}" + + if not input_path.suffix.lower() == ".docx": + return None, f"Error: Input file is not a DOCX file: {input_file}" + + try: + output_path.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(input_path, output_path) + except Exception as e: + return None, f"Error: Failed to copy input file to output location: {e}" + + if not _setup_libreoffice_macro(): + return None, "Error: Failed to setup LibreOffice macro" + + cmd = [ + "soffice", + "--headless", + f"-env:UserInstallation=file://{LIBREOFFICE_PROFILE}", + "--norestore", + "vnd.sun.star.script:Standard.Module1.AcceptAllTrackedChanges?language=Basic&location=application", + str(output_path.absolute()), + ] + + try: + result = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=30, + check=False, + env=get_soffice_env(), + ) + except subprocess.TimeoutExpired: + return ( + None, + f"Successfully accepted all tracked changes: {input_file} -> {output_file}", + ) + + if result.returncode != 0: + return None, f"Error: LibreOffice failed: {result.stderr}" + + return ( + None, + f"Successfully accepted all tracked changes: {input_file} -> {output_file}", + ) + + +def _setup_libreoffice_macro() -> bool: + macro_dir = Path(MACRO_DIR) + macro_file = macro_dir / "Module1.xba" + + if macro_file.exists() and "AcceptAllTrackedChanges" in macro_file.read_text(): + return True + + if not macro_dir.exists(): + subprocess.run( + [ + "soffice", + "--headless", + f"-env:UserInstallation=file://{LIBREOFFICE_PROFILE}", + "--terminate_after_init", + ], + capture_output=True, + timeout=10, + check=False, + env=get_soffice_env(), + ) + macro_dir.mkdir(parents=True, exist_ok=True) + + try: + macro_file.write_text(ACCEPT_CHANGES_MACRO) + return True + except Exception as e: + logger.warning(f"Failed to setup LibreOffice macro: {e}") + return False + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Accept all tracked changes in a DOCX file" + ) + parser.add_argument("input_file", help="Input DOCX file with tracked changes") + parser.add_argument( + "output_file", help="Output DOCX file (clean, no tracked changes)" + ) + args = parser.parse_args() + + _, message = accept_changes(args.input_file, args.output_file) + print(message) + + if "Error" in message: + raise SystemExit(1) diff --git a/skills/docx/scripts/comment.py b/skills/docx/scripts/comment.py new file mode 100644 index 0000000..36e1c93 --- /dev/null +++ b/skills/docx/scripts/comment.py @@ -0,0 +1,318 @@ +"""Add comments to DOCX documents. + +Usage: + python comment.py unpacked/ 0 "Comment text" + python comment.py unpacked/ 1 "Reply text" --parent 0 + +Text should be pre-escaped XML (e.g., & for &, ’ for smart quotes). + +After running, add markers to document.xml: + + ... commented content ... + + +""" + +import argparse +import random +import shutil +import sys +from datetime import datetime, timezone +from pathlib import Path + +import defusedxml.minidom + +TEMPLATE_DIR = Path(__file__).parent / "templates" +NS = { + "w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + "w14": "http://schemas.microsoft.com/office/word/2010/wordml", + "w15": "http://schemas.microsoft.com/office/word/2012/wordml", + "w16cid": "http://schemas.microsoft.com/office/word/2016/wordml/cid", + "w16cex": "http://schemas.microsoft.com/office/word/2018/wordml/cex", +} + +COMMENT_XML = """\ + + + + + + + + + + + + + {text} + + +""" + +COMMENT_MARKER_TEMPLATE = """ +Add to document.xml (markers must be direct children of w:p, never inside w:r): + + ... + + """ + +REPLY_MARKER_TEMPLATE = """ +Nest markers inside parent {pid}'s markers (markers must be direct children of w:p, never inside w:r): + + ... + + + """ + + +def _generate_hex_id() -> str: + return f"{random.randint(0, 0x7FFFFFFE):08X}" + + +SMART_QUOTE_ENTITIES = { + "\u201c": "“", + "\u201d": "”", + "\u2018": "‘", + "\u2019": "’", +} + + +def _encode_smart_quotes(text: str) -> str: + for char, entity in SMART_QUOTE_ENTITIES.items(): + text = text.replace(char, entity) + return text + + +def _append_xml(xml_path: Path, root_tag: str, content: str) -> None: + dom = defusedxml.minidom.parseString(xml_path.read_text(encoding="utf-8")) + root = dom.getElementsByTagName(root_tag)[0] + ns_attrs = " ".join(f'xmlns:{k}="{v}"' for k, v in NS.items()) + wrapper_dom = defusedxml.minidom.parseString(f"{content}") + for child in wrapper_dom.documentElement.childNodes: + if child.nodeType == child.ELEMENT_NODE: + root.appendChild(dom.importNode(child, True)) + output = _encode_smart_quotes(dom.toxml(encoding="UTF-8").decode("utf-8")) + xml_path.write_text(output, encoding="utf-8") + + +def _find_para_id(comments_path: Path, comment_id: int) -> str | None: + dom = defusedxml.minidom.parseString(comments_path.read_text(encoding="utf-8")) + for c in dom.getElementsByTagName("w:comment"): + if c.getAttribute("w:id") == str(comment_id): + for p in c.getElementsByTagName("w:p"): + if pid := p.getAttribute("w14:paraId"): + return pid + return None + + +def _get_next_rid(rels_path: Path) -> int: + dom = defusedxml.minidom.parseString(rels_path.read_text(encoding="utf-8")) + max_rid = 0 + for rel in dom.getElementsByTagName("Relationship"): + rid = rel.getAttribute("Id") + if rid and rid.startswith("rId"): + try: + max_rid = max(max_rid, int(rid[3:])) + except ValueError: + pass + return max_rid + 1 + + +def _has_relationship(rels_path: Path, target: str) -> bool: + dom = defusedxml.minidom.parseString(rels_path.read_text(encoding="utf-8")) + for rel in dom.getElementsByTagName("Relationship"): + if rel.getAttribute("Target") == target: + return True + return False + + +def _has_content_type(ct_path: Path, part_name: str) -> bool: + dom = defusedxml.minidom.parseString(ct_path.read_text(encoding="utf-8")) + for override in dom.getElementsByTagName("Override"): + if override.getAttribute("PartName") == part_name: + return True + return False + + +def _ensure_comment_relationships(unpacked_dir: Path) -> None: + rels_path = unpacked_dir / "word" / "_rels" / "document.xml.rels" + if not rels_path.exists(): + return + + if _has_relationship(rels_path, "comments.xml"): + return + + dom = defusedxml.minidom.parseString(rels_path.read_text(encoding="utf-8")) + root = dom.documentElement + next_rid = _get_next_rid(rels_path) + + rels = [ + ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", + "comments.xml", + ), + ( + "http://schemas.microsoft.com/office/2011/relationships/commentsExtended", + "commentsExtended.xml", + ), + ( + "http://schemas.microsoft.com/office/2016/09/relationships/commentsIds", + "commentsIds.xml", + ), + ( + "http://schemas.microsoft.com/office/2018/08/relationships/commentsExtensible", + "commentsExtensible.xml", + ), + ] + + for rel_type, target in rels: + rel = dom.createElement("Relationship") + rel.setAttribute("Id", f"rId{next_rid}") + rel.setAttribute("Type", rel_type) + rel.setAttribute("Target", target) + root.appendChild(rel) + next_rid += 1 + + rels_path.write_bytes(dom.toxml(encoding="UTF-8")) + + +def _ensure_comment_content_types(unpacked_dir: Path) -> None: + ct_path = unpacked_dir / "[Content_Types].xml" + if not ct_path.exists(): + return + + if _has_content_type(ct_path, "/word/comments.xml"): + return + + dom = defusedxml.minidom.parseString(ct_path.read_text(encoding="utf-8")) + root = dom.documentElement + + overrides = [ + ( + "/word/comments.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml", + ), + ( + "/word/commentsExtended.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml", + ), + ( + "/word/commentsIds.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml", + ), + ( + "/word/commentsExtensible.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtensible+xml", + ), + ] + + for part_name, content_type in overrides: + override = dom.createElement("Override") + override.setAttribute("PartName", part_name) + override.setAttribute("ContentType", content_type) + root.appendChild(override) + + ct_path.write_bytes(dom.toxml(encoding="UTF-8")) + + +def add_comment( + unpacked_dir: str, + comment_id: int, + text: str, + author: str = "Claude", + initials: str = "C", + parent_id: int | None = None, +) -> tuple[str, str]: + word = Path(unpacked_dir) / "word" + if not word.exists(): + return "", f"Error: {word} not found" + + para_id, durable_id = _generate_hex_id(), _generate_hex_id() + ts = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + + comments = word / "comments.xml" + first_comment = not comments.exists() + if first_comment: + shutil.copy(TEMPLATE_DIR / "comments.xml", comments) + _ensure_comment_relationships(Path(unpacked_dir)) + _ensure_comment_content_types(Path(unpacked_dir)) + _append_xml( + comments, + "w:comments", + COMMENT_XML.format( + id=comment_id, + author=author, + date=ts, + initials=initials, + para_id=para_id, + text=text, + ), + ) + + ext = word / "commentsExtended.xml" + if not ext.exists(): + shutil.copy(TEMPLATE_DIR / "commentsExtended.xml", ext) + if parent_id is not None: + parent_para = _find_para_id(comments, parent_id) + if not parent_para: + return "", f"Error: Parent comment {parent_id} not found" + _append_xml( + ext, + "w15:commentsEx", + f'', + ) + else: + _append_xml( + ext, + "w15:commentsEx", + f'', + ) + + ids = word / "commentsIds.xml" + if not ids.exists(): + shutil.copy(TEMPLATE_DIR / "commentsIds.xml", ids) + _append_xml( + ids, + "w16cid:commentsIds", + f'', + ) + + extensible = word / "commentsExtensible.xml" + if not extensible.exists(): + shutil.copy(TEMPLATE_DIR / "commentsExtensible.xml", extensible) + _append_xml( + extensible, + "w16cex:commentsExtensible", + f'', + ) + + action = "reply" if parent_id is not None else "comment" + return para_id, f"Added {action} {comment_id} (para_id={para_id})" + + +if __name__ == "__main__": + p = argparse.ArgumentParser(description="Add comments to DOCX documents") + p.add_argument("unpacked_dir", help="Unpacked DOCX directory") + p.add_argument("comment_id", type=int, help="Comment ID (must be unique)") + p.add_argument("text", help="Comment text") + p.add_argument("--author", default="Claude", help="Author name") + p.add_argument("--initials", default="C", help="Author initials") + p.add_argument("--parent", type=int, help="Parent comment ID (for replies)") + args = p.parse_args() + + para_id, msg = add_comment( + args.unpacked_dir, + args.comment_id, + args.text, + args.author, + args.initials, + args.parent, + ) + print(msg) + if "Error" in msg: + sys.exit(1) + cid = args.comment_id + if args.parent is not None: + print(REPLY_MARKER_TEMPLATE.format(pid=args.parent, cid=cid)) + else: + print(COMMENT_MARKER_TEMPLATE.format(cid=cid)) diff --git a/skills/docx/scripts/office/.DS_Store b/skills/docx/scripts/office/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c5885e16eb0c3a5562f63f5e7d226c4bd8e99537 GIT binary patch literal 6148 zcmeHKK~BR!475unNx5T|_r2YTcds_=q-0NPX(DN!N{obwMJ#4EV-4907>Qj|pM z2_a-lyOVgwyUt`AcZrDSZ~2TUA)*PI;OGQhkIA^Sj*ZN72IM%$nqFvIJk1uXs>622 zUsOQe-7#%wO$F8H_wTQ)HQnpmE~BinY*|!GjL63Ly88IM>tp2yucPcLiJlS75Jzd>;auU~1SX#!m;jcmx2B;f{uD zIZH@PFiZ^_MU22$LxCE~cEn%}hd&rEHEa|$oY)Q@Y%8;!P&lrR`9q`=r;6UY0nfT>}l2oKEv2t*mYa|M1?fgfc2Z7=`; literal 0 HcmV?d00001 diff --git a/skills/docx/scripts/office/helpers/__init__.py b/skills/docx/scripts/office/helpers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/skills/docx/scripts/office/helpers/merge_runs.py b/skills/docx/scripts/office/helpers/merge_runs.py new file mode 100644 index 0000000..ad7c25e --- /dev/null +++ b/skills/docx/scripts/office/helpers/merge_runs.py @@ -0,0 +1,199 @@ +"""Merge adjacent runs with identical formatting in DOCX. + +Merges adjacent elements that have identical properties. +Works on runs in paragraphs and inside tracked changes (, ). + +Also: +- Removes rsid attributes from runs (revision metadata that doesn't affect rendering) +- Removes proofErr elements (spell/grammar markers that block merging) +""" + +from pathlib import Path + +import defusedxml.minidom + + +def merge_runs(input_dir: str) -> tuple[int, str]: + doc_xml = Path(input_dir) / "word" / "document.xml" + + if not doc_xml.exists(): + return 0, f"Error: {doc_xml} not found" + + try: + dom = defusedxml.minidom.parseString(doc_xml.read_text(encoding="utf-8")) + root = dom.documentElement + + _remove_elements(root, "proofErr") + _strip_run_rsid_attrs(root) + + containers = {run.parentNode for run in _find_elements(root, "r")} + + merge_count = 0 + for container in containers: + merge_count += _merge_runs_in(container) + + doc_xml.write_bytes(dom.toxml(encoding="UTF-8")) + return merge_count, f"Merged {merge_count} runs" + + except Exception as e: + return 0, f"Error: {e}" + + + + +def _find_elements(root, tag: str) -> list: + results = [] + + def traverse(node): + if node.nodeType == node.ELEMENT_NODE: + name = node.localName or node.tagName + if name == tag or name.endswith(f":{tag}"): + results.append(node) + for child in node.childNodes: + traverse(child) + + traverse(root) + return results + + +def _get_child(parent, tag: str): + for child in parent.childNodes: + if child.nodeType == child.ELEMENT_NODE: + name = child.localName or child.tagName + if name == tag or name.endswith(f":{tag}"): + return child + return None + + +def _get_children(parent, tag: str) -> list: + results = [] + for child in parent.childNodes: + if child.nodeType == child.ELEMENT_NODE: + name = child.localName or child.tagName + if name == tag or name.endswith(f":{tag}"): + results.append(child) + return results + + +def _is_adjacent(elem1, elem2) -> bool: + node = elem1.nextSibling + while node: + if node == elem2: + return True + if node.nodeType == node.ELEMENT_NODE: + return False + if node.nodeType == node.TEXT_NODE and node.data.strip(): + return False + node = node.nextSibling + return False + + + + +def _remove_elements(root, tag: str): + for elem in _find_elements(root, tag): + if elem.parentNode: + elem.parentNode.removeChild(elem) + + +def _strip_run_rsid_attrs(root): + for run in _find_elements(root, "r"): + for attr in list(run.attributes.values()): + if "rsid" in attr.name.lower(): + run.removeAttribute(attr.name) + + + + +def _merge_runs_in(container) -> int: + merge_count = 0 + run = _first_child_run(container) + + while run: + while True: + next_elem = _next_element_sibling(run) + if next_elem and _is_run(next_elem) and _can_merge(run, next_elem): + _merge_run_content(run, next_elem) + container.removeChild(next_elem) + merge_count += 1 + else: + break + + _consolidate_text(run) + run = _next_sibling_run(run) + + return merge_count + + +def _first_child_run(container): + for child in container.childNodes: + if child.nodeType == child.ELEMENT_NODE and _is_run(child): + return child + return None + + +def _next_element_sibling(node): + sibling = node.nextSibling + while sibling: + if sibling.nodeType == sibling.ELEMENT_NODE: + return sibling + sibling = sibling.nextSibling + return None + + +def _next_sibling_run(node): + sibling = node.nextSibling + while sibling: + if sibling.nodeType == sibling.ELEMENT_NODE: + if _is_run(sibling): + return sibling + sibling = sibling.nextSibling + return None + + +def _is_run(node) -> bool: + name = node.localName or node.tagName + return name == "r" or name.endswith(":r") + + +def _can_merge(run1, run2) -> bool: + rpr1 = _get_child(run1, "rPr") + rpr2 = _get_child(run2, "rPr") + + if (rpr1 is None) != (rpr2 is None): + return False + if rpr1 is None: + return True + return rpr1.toxml() == rpr2.toxml() + + +def _merge_run_content(target, source): + for child in list(source.childNodes): + if child.nodeType == child.ELEMENT_NODE: + name = child.localName or child.tagName + if name != "rPr" and not name.endswith(":rPr"): + target.appendChild(child) + + +def _consolidate_text(run): + t_elements = _get_children(run, "t") + + for i in range(len(t_elements) - 1, 0, -1): + curr, prev = t_elements[i], t_elements[i - 1] + + if _is_adjacent(prev, curr): + prev_text = prev.firstChild.data if prev.firstChild else "" + curr_text = curr.firstChild.data if curr.firstChild else "" + merged = prev_text + curr_text + + if prev.firstChild: + prev.firstChild.data = merged + else: + prev.appendChild(run.ownerDocument.createTextNode(merged)) + + if merged.startswith(" ") or merged.endswith(" "): + prev.setAttribute("xml:space", "preserve") + elif prev.hasAttribute("xml:space"): + prev.removeAttribute("xml:space") + + run.removeChild(curr) diff --git a/skills/docx/scripts/office/helpers/simplify_redlines.py b/skills/docx/scripts/office/helpers/simplify_redlines.py new file mode 100644 index 0000000..db963bb --- /dev/null +++ b/skills/docx/scripts/office/helpers/simplify_redlines.py @@ -0,0 +1,197 @@ +"""Simplify tracked changes by merging adjacent w:ins or w:del elements. + +Merges adjacent elements from the same author into a single element. +Same for elements. This makes heavily-redlined documents easier to +work with by reducing the number of tracked change wrappers. + +Rules: +- Only merges w:ins with w:ins, w:del with w:del (same element type) +- Only merges if same author (ignores timestamp differences) +- Only merges if truly adjacent (only whitespace between them) +""" + +import xml.etree.ElementTree as ET +import zipfile +from pathlib import Path + +import defusedxml.minidom + +WORD_NS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + + +def simplify_redlines(input_dir: str) -> tuple[int, str]: + doc_xml = Path(input_dir) / "word" / "document.xml" + + if not doc_xml.exists(): + return 0, f"Error: {doc_xml} not found" + + try: + dom = defusedxml.minidom.parseString(doc_xml.read_text(encoding="utf-8")) + root = dom.documentElement + + merge_count = 0 + + containers = _find_elements(root, "p") + _find_elements(root, "tc") + + for container in containers: + merge_count += _merge_tracked_changes_in(container, "ins") + merge_count += _merge_tracked_changes_in(container, "del") + + doc_xml.write_bytes(dom.toxml(encoding="UTF-8")) + return merge_count, f"Simplified {merge_count} tracked changes" + + except Exception as e: + return 0, f"Error: {e}" + + +def _merge_tracked_changes_in(container, tag: str) -> int: + merge_count = 0 + + tracked = [ + child + for child in container.childNodes + if child.nodeType == child.ELEMENT_NODE and _is_element(child, tag) + ] + + if len(tracked) < 2: + return 0 + + i = 0 + while i < len(tracked) - 1: + curr = tracked[i] + next_elem = tracked[i + 1] + + if _can_merge_tracked(curr, next_elem): + _merge_tracked_content(curr, next_elem) + container.removeChild(next_elem) + tracked.pop(i + 1) + merge_count += 1 + else: + i += 1 + + return merge_count + + +def _is_element(node, tag: str) -> bool: + name = node.localName or node.tagName + return name == tag or name.endswith(f":{tag}") + + +def _get_author(elem) -> str: + author = elem.getAttribute("w:author") + if not author: + for attr in elem.attributes.values(): + if attr.localName == "author" or attr.name.endswith(":author"): + return attr.value + return author + + +def _can_merge_tracked(elem1, elem2) -> bool: + if _get_author(elem1) != _get_author(elem2): + return False + + node = elem1.nextSibling + while node and node != elem2: + if node.nodeType == node.ELEMENT_NODE: + return False + if node.nodeType == node.TEXT_NODE and node.data.strip(): + return False + node = node.nextSibling + + return True + + +def _merge_tracked_content(target, source): + while source.firstChild: + child = source.firstChild + source.removeChild(child) + target.appendChild(child) + + +def _find_elements(root, tag: str) -> list: + results = [] + + def traverse(node): + if node.nodeType == node.ELEMENT_NODE: + name = node.localName or node.tagName + if name == tag or name.endswith(f":{tag}"): + results.append(node) + for child in node.childNodes: + traverse(child) + + traverse(root) + return results + + +def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]: + if not doc_xml_path.exists(): + return {} + + try: + tree = ET.parse(doc_xml_path) + root = tree.getroot() + except ET.ParseError: + return {} + + namespaces = {"w": WORD_NS} + author_attr = f"{{{WORD_NS}}}author" + + authors: dict[str, int] = {} + for tag in ["ins", "del"]: + for elem in root.findall(f".//w:{tag}", namespaces): + author = elem.get(author_attr) + if author: + authors[author] = authors.get(author, 0) + 1 + + return authors + + +def _get_authors_from_docx(docx_path: Path) -> dict[str, int]: + try: + with zipfile.ZipFile(docx_path, "r") as zf: + if "word/document.xml" not in zf.namelist(): + return {} + with zf.open("word/document.xml") as f: + tree = ET.parse(f) + root = tree.getroot() + + namespaces = {"w": WORD_NS} + author_attr = f"{{{WORD_NS}}}author" + + authors: dict[str, int] = {} + for tag in ["ins", "del"]: + for elem in root.findall(f".//w:{tag}", namespaces): + author = elem.get(author_attr) + if author: + authors[author] = authors.get(author, 0) + 1 + return authors + except (zipfile.BadZipFile, ET.ParseError): + return {} + + +def infer_author(modified_dir: Path, original_docx: Path, default: str = "Claude") -> str: + modified_xml = modified_dir / "word" / "document.xml" + modified_authors = get_tracked_change_authors(modified_xml) + + if not modified_authors: + return default + + original_authors = _get_authors_from_docx(original_docx) + + new_changes: dict[str, int] = {} + for author, count in modified_authors.items(): + original_count = original_authors.get(author, 0) + diff = count - original_count + if diff > 0: + new_changes[author] = diff + + if not new_changes: + return default + + if len(new_changes) == 1: + return next(iter(new_changes)) + + raise ValueError( + f"Multiple authors added new changes: {new_changes}. " + "Cannot infer which author to validate." + ) diff --git a/skills/docx/scripts/office/pack.py b/skills/docx/scripts/office/pack.py new file mode 100755 index 0000000..db29ed8 --- /dev/null +++ b/skills/docx/scripts/office/pack.py @@ -0,0 +1,159 @@ +"""Pack a directory into a DOCX, PPTX, or XLSX file. + +Validates with auto-repair, condenses XML formatting, and creates the Office file. + +Usage: + python pack.py [--original ] [--validate true|false] + +Examples: + python pack.py unpacked/ output.docx --original input.docx + python pack.py unpacked/ output.pptx --validate false +""" + +import argparse +import sys +import shutil +import tempfile +import zipfile +from pathlib import Path + +import defusedxml.minidom + +from validators import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator + +def pack( + input_directory: str, + output_file: str, + original_file: str | None = None, + validate: bool = True, + infer_author_func=None, +) -> tuple[None, str]: + input_dir = Path(input_directory) + output_path = Path(output_file) + suffix = output_path.suffix.lower() + + if not input_dir.is_dir(): + return None, f"Error: {input_dir} is not a directory" + + if suffix not in {".docx", ".pptx", ".xlsx"}: + return None, f"Error: {output_file} must be a .docx, .pptx, or .xlsx file" + + if validate and original_file: + original_path = Path(original_file) + if original_path.exists(): + success, output = _run_validation( + input_dir, original_path, suffix, infer_author_func + ) + if output: + print(output) + if not success: + return None, f"Error: Validation failed for {input_dir}" + + with tempfile.TemporaryDirectory() as temp_dir: + temp_content_dir = Path(temp_dir) / "content" + shutil.copytree(input_dir, temp_content_dir) + + for pattern in ["*.xml", "*.rels"]: + for xml_file in temp_content_dir.rglob(pattern): + _condense_xml(xml_file) + + output_path.parent.mkdir(parents=True, exist_ok=True) + with zipfile.ZipFile(output_path, "w", zipfile.ZIP_DEFLATED) as zf: + for f in temp_content_dir.rglob("*"): + if f.is_file(): + zf.write(f, f.relative_to(temp_content_dir)) + + return None, f"Successfully packed {input_dir} to {output_file}" + + +def _run_validation( + unpacked_dir: Path, + original_file: Path, + suffix: str, + infer_author_func=None, +) -> tuple[bool, str | None]: + output_lines = [] + validators = [] + + if suffix == ".docx": + author = "Claude" + if infer_author_func: + try: + author = infer_author_func(unpacked_dir, original_file) + except ValueError as e: + print(f"Warning: {e} Using default author 'Claude'.", file=sys.stderr) + + validators = [ + DOCXSchemaValidator(unpacked_dir, original_file), + RedliningValidator(unpacked_dir, original_file, author=author), + ] + elif suffix == ".pptx": + validators = [PPTXSchemaValidator(unpacked_dir, original_file)] + + if not validators: + return True, None + + total_repairs = sum(v.repair() for v in validators) + if total_repairs: + output_lines.append(f"Auto-repaired {total_repairs} issue(s)") + + success = all(v.validate() for v in validators) + + if success: + output_lines.append("All validations PASSED!") + + return success, "\n".join(output_lines) if output_lines else None + + +def _condense_xml(xml_file: Path) -> None: + try: + with open(xml_file, encoding="utf-8") as f: + dom = defusedxml.minidom.parse(f) + + for element in dom.getElementsByTagName("*"): + if element.tagName.endswith(":t"): + continue + + for child in list(element.childNodes): + if ( + child.nodeType == child.TEXT_NODE + and child.nodeValue + and child.nodeValue.strip() == "" + ) or child.nodeType == child.COMMENT_NODE: + element.removeChild(child) + + xml_file.write_bytes(dom.toxml(encoding="UTF-8")) + except Exception as e: + print(f"ERROR: Failed to parse {xml_file.name}: {e}", file=sys.stderr) + raise + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Pack a directory into a DOCX, PPTX, or XLSX file" + ) + parser.add_argument("input_directory", help="Unpacked Office document directory") + parser.add_argument("output_file", help="Output Office file (.docx/.pptx/.xlsx)") + parser.add_argument( + "--original", + help="Original file for validation comparison", + ) + parser.add_argument( + "--validate", + type=lambda x: x.lower() == "true", + default=True, + metavar="true|false", + help="Run validation with auto-repair (default: true)", + ) + args = parser.parse_args() + + _, message = pack( + args.input_directory, + args.output_file, + original_file=args.original, + validate=args.validate, + ) + print(message) + + if "Error" in message: + sys.exit(1) diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd new file mode 100644 index 0000000..6454ef9 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd @@ -0,0 +1,1499 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd new file mode 100644 index 0000000..afa4f46 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd new file mode 100644 index 0000000..64e66b8 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd @@ -0,0 +1,1085 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd new file mode 100644 index 0000000..687eea8 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd @@ -0,0 +1,11 @@ + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd new file mode 100644 index 0000000..6ac81b0 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd @@ -0,0 +1,3081 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd new file mode 100644 index 0000000..1dbf051 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..f1af17d --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..0a185ab --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd new file mode 100644 index 0000000..14ef488 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd @@ -0,0 +1,1676 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd new file mode 100644 index 0000000..c20f3bf --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd new file mode 100644 index 0000000..ac60252 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd new file mode 100644 index 0000000..424b8ba --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd new file mode 100644 index 0000000..2bddce2 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd new file mode 100644 index 0000000..8a8c18b --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd new file mode 100644 index 0000000..5c42706 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd new file mode 100644 index 0000000..853c341 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd new file mode 100644 index 0000000..da835ee --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd new file mode 100644 index 0000000..87ad265 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd @@ -0,0 +1,582 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd new file mode 100644 index 0000000..9e86f1b --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd new file mode 100644 index 0000000..d0be42e --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd @@ -0,0 +1,4439 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd new file mode 100644 index 0000000..8821dd1 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd @@ -0,0 +1,570 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd new file mode 100644 index 0000000..ca2575c --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd @@ -0,0 +1,509 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd new file mode 100644 index 0000000..dd079e6 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..3dd6cf6 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..f1041e3 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd new file mode 100644 index 0000000..9c5b7a6 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd @@ -0,0 +1,3646 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd new file mode 100644 index 0000000..0f13678 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd @@ -0,0 +1,116 @@ + + + + + + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + + + + + This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang or xml:space attributes + on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes + + + + In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2001/03/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself. In other words, if the XML Schema namespace changes, the version + of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2001/03/xml.xsd will not change. + + + + + + In due course, we should install the relevant ISO 2- and 3-letter + codes as the enumerated possible values . . . + + + + + + + + + + + + + + + See http://www.w3.org/TR/xmlbase/ for + information about this attribute. + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd b/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd new file mode 100644 index 0000000..a6de9d2 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd b/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd new file mode 100644 index 0000000..10e978b --- /dev/null +++ b/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd b/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd new file mode 100644 index 0000000..4248bf7 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd b/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd new file mode 100644 index 0000000..5649746 --- /dev/null +++ b/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/mce/mc.xsd b/skills/docx/scripts/office/schemas/mce/mc.xsd new file mode 100644 index 0000000..ef72545 --- /dev/null +++ b/skills/docx/scripts/office/schemas/mce/mc.xsd @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd b/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd new file mode 100644 index 0000000..f65f777 --- /dev/null +++ b/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd @@ -0,0 +1,560 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd b/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd new file mode 100644 index 0000000..6b00755 --- /dev/null +++ b/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd b/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd new file mode 100644 index 0000000..f321d33 --- /dev/null +++ b/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd b/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd new file mode 100644 index 0000000..364c6a9 --- /dev/null +++ b/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd b/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd new file mode 100644 index 0000000..fed9d15 --- /dev/null +++ b/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd b/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd new file mode 100644 index 0000000..680cf15 --- /dev/null +++ b/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd @@ -0,0 +1,4 @@ + + + + diff --git a/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd b/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd new file mode 100644 index 0000000..89ada90 --- /dev/null +++ b/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/skills/docx/scripts/office/soffice.py b/skills/docx/scripts/office/soffice.py new file mode 100644 index 0000000..c7f7e32 --- /dev/null +++ b/skills/docx/scripts/office/soffice.py @@ -0,0 +1,183 @@ +""" +Helper for running LibreOffice (soffice) in environments where AF_UNIX +sockets may be blocked (e.g., sandboxed VMs). Detects the restriction +at runtime and applies an LD_PRELOAD shim if needed. + +Usage: + from office.soffice import run_soffice, get_soffice_env + + # Option 1 – run soffice directly + result = run_soffice(["--headless", "--convert-to", "pdf", "input.docx"]) + + # Option 2 – get env dict for your own subprocess calls + env = get_soffice_env() + subprocess.run(["soffice", ...], env=env) +""" + +import os +import socket +import subprocess +import tempfile +from pathlib import Path + + +def get_soffice_env() -> dict: + env = os.environ.copy() + env["SAL_USE_VCLPLUGIN"] = "svp" + + if _needs_shim(): + shim = _ensure_shim() + env["LD_PRELOAD"] = str(shim) + + return env + + +def run_soffice(args: list[str], **kwargs) -> subprocess.CompletedProcess: + env = get_soffice_env() + return subprocess.run(["soffice"] + args, env=env, **kwargs) + + + +_SHIM_SO = Path(tempfile.gettempdir()) / "lo_socket_shim.so" + + +def _needs_shim() -> bool: + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.close() + return False + except OSError: + return True + + +def _ensure_shim() -> Path: + if _SHIM_SO.exists(): + return _SHIM_SO + + src = Path(tempfile.gettempdir()) / "lo_socket_shim.c" + src.write_text(_SHIM_SOURCE) + subprocess.run( + ["gcc", "-shared", "-fPIC", "-o", str(_SHIM_SO), str(src), "-ldl"], + check=True, + capture_output=True, + ) + src.unlink() + return _SHIM_SO + + + +_SHIM_SOURCE = r""" +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include + +static int (*real_socket)(int, int, int); +static int (*real_socketpair)(int, int, int, int[2]); +static int (*real_listen)(int, int); +static int (*real_accept)(int, struct sockaddr *, socklen_t *); +static int (*real_close)(int); +static int (*real_read)(int, void *, size_t); + +/* Per-FD bookkeeping (FDs >= 1024 are passed through unshimmed). */ +static int is_shimmed[1024]; +static int peer_of[1024]; +static int wake_r[1024]; /* accept() blocks reading this */ +static int wake_w[1024]; /* close() writes to this */ +static int listener_fd = -1; /* FD that received listen() */ + +__attribute__((constructor)) +static void init(void) { + real_socket = dlsym(RTLD_NEXT, "socket"); + real_socketpair = dlsym(RTLD_NEXT, "socketpair"); + real_listen = dlsym(RTLD_NEXT, "listen"); + real_accept = dlsym(RTLD_NEXT, "accept"); + real_close = dlsym(RTLD_NEXT, "close"); + real_read = dlsym(RTLD_NEXT, "read"); + for (int i = 0; i < 1024; i++) { + peer_of[i] = -1; + wake_r[i] = -1; + wake_w[i] = -1; + } +} + +/* ---- socket ---------------------------------------------------------- */ +int socket(int domain, int type, int protocol) { + if (domain == AF_UNIX) { + int fd = real_socket(domain, type, protocol); + if (fd >= 0) return fd; + /* socket(AF_UNIX) blocked – fall back to socketpair(). */ + int sv[2]; + if (real_socketpair(domain, type, protocol, sv) == 0) { + if (sv[0] >= 0 && sv[0] < 1024) { + is_shimmed[sv[0]] = 1; + peer_of[sv[0]] = sv[1]; + int wp[2]; + if (pipe(wp) == 0) { + wake_r[sv[0]] = wp[0]; + wake_w[sv[0]] = wp[1]; + } + } + return sv[0]; + } + errno = EPERM; + return -1; + } + return real_socket(domain, type, protocol); +} + +/* ---- listen ---------------------------------------------------------- */ +int listen(int sockfd, int backlog) { + if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { + listener_fd = sockfd; + return 0; + } + return real_listen(sockfd, backlog); +} + +/* ---- accept ---------------------------------------------------------- */ +int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) { + if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { + /* Block until close() writes to the wake pipe. */ + if (wake_r[sockfd] >= 0) { + char buf; + real_read(wake_r[sockfd], &buf, 1); + } + errno = ECONNABORTED; + return -1; + } + return real_accept(sockfd, addr, addrlen); +} + +/* ---- close ----------------------------------------------------------- */ +int close(int fd) { + if (fd >= 0 && fd < 1024 && is_shimmed[fd]) { + int was_listener = (fd == listener_fd); + is_shimmed[fd] = 0; + + if (wake_w[fd] >= 0) { /* unblock accept() */ + char c = 0; + write(wake_w[fd], &c, 1); + real_close(wake_w[fd]); + wake_w[fd] = -1; + } + if (wake_r[fd] >= 0) { real_close(wake_r[fd]); wake_r[fd] = -1; } + if (peer_of[fd] >= 0) { real_close(peer_of[fd]); peer_of[fd] = -1; } + + if (was_listener) + _exit(0); /* conversion done – exit */ + } + return real_close(fd); +} +""" + + + +if __name__ == "__main__": + import sys + result = run_soffice(sys.argv[1:]) + sys.exit(result.returncode) diff --git a/skills/docx/scripts/office/unpack.py b/skills/docx/scripts/office/unpack.py new file mode 100755 index 0000000..0015253 --- /dev/null +++ b/skills/docx/scripts/office/unpack.py @@ -0,0 +1,132 @@ +"""Unpack Office files (DOCX, PPTX, XLSX) for editing. + +Extracts the ZIP archive, pretty-prints XML files, and optionally: +- Merges adjacent runs with identical formatting (DOCX only) +- Simplifies adjacent tracked changes from same author (DOCX only) + +Usage: + python unpack.py [options] + +Examples: + python unpack.py document.docx unpacked/ + python unpack.py presentation.pptx unpacked/ + python unpack.py document.docx unpacked/ --merge-runs false +""" + +import argparse +import sys +import zipfile +from pathlib import Path + +import defusedxml.minidom + +from helpers.merge_runs import merge_runs as do_merge_runs +from helpers.simplify_redlines import simplify_redlines as do_simplify_redlines + +SMART_QUOTE_REPLACEMENTS = { + "\u201c": "“", + "\u201d": "”", + "\u2018": "‘", + "\u2019": "’", +} + + +def unpack( + input_file: str, + output_directory: str, + merge_runs: bool = True, + simplify_redlines: bool = True, +) -> tuple[None, str]: + input_path = Path(input_file) + output_path = Path(output_directory) + suffix = input_path.suffix.lower() + + if not input_path.exists(): + return None, f"Error: {input_file} does not exist" + + if suffix not in {".docx", ".pptx", ".xlsx"}: + return None, f"Error: {input_file} must be a .docx, .pptx, or .xlsx file" + + try: + output_path.mkdir(parents=True, exist_ok=True) + + with zipfile.ZipFile(input_path, "r") as zf: + zf.extractall(output_path) + + xml_files = list(output_path.rglob("*.xml")) + list(output_path.rglob("*.rels")) + for xml_file in xml_files: + _pretty_print_xml(xml_file) + + message = f"Unpacked {input_file} ({len(xml_files)} XML files)" + + if suffix == ".docx": + if simplify_redlines: + simplify_count, _ = do_simplify_redlines(str(output_path)) + message += f", simplified {simplify_count} tracked changes" + + if merge_runs: + merge_count, _ = do_merge_runs(str(output_path)) + message += f", merged {merge_count} runs" + + for xml_file in xml_files: + _escape_smart_quotes(xml_file) + + return None, message + + except zipfile.BadZipFile: + return None, f"Error: {input_file} is not a valid Office file" + except Exception as e: + return None, f"Error unpacking: {e}" + + +def _pretty_print_xml(xml_file: Path) -> None: + try: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + xml_file.write_bytes(dom.toprettyxml(indent=" ", encoding="utf-8")) + except Exception: + pass + + +def _escape_smart_quotes(xml_file: Path) -> None: + try: + content = xml_file.read_text(encoding="utf-8") + for char, entity in SMART_QUOTE_REPLACEMENTS.items(): + content = content.replace(char, entity) + xml_file.write_text(content, encoding="utf-8") + except Exception: + pass + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Unpack an Office file (DOCX, PPTX, XLSX) for editing" + ) + parser.add_argument("input_file", help="Office file to unpack") + parser.add_argument("output_directory", help="Output directory") + parser.add_argument( + "--merge-runs", + type=lambda x: x.lower() == "true", + default=True, + metavar="true|false", + help="Merge adjacent runs with identical formatting (DOCX only, default: true)", + ) + parser.add_argument( + "--simplify-redlines", + type=lambda x: x.lower() == "true", + default=True, + metavar="true|false", + help="Merge adjacent tracked changes from same author (DOCX only, default: true)", + ) + args = parser.parse_args() + + _, message = unpack( + args.input_file, + args.output_directory, + merge_runs=args.merge_runs, + simplify_redlines=args.simplify_redlines, + ) + print(message) + + if "Error" in message: + sys.exit(1) diff --git a/skills/docx/scripts/office/validate.py b/skills/docx/scripts/office/validate.py new file mode 100755 index 0000000..03b01f6 --- /dev/null +++ b/skills/docx/scripts/office/validate.py @@ -0,0 +1,111 @@ +""" +Command line tool to validate Office document XML files against XSD schemas and tracked changes. + +Usage: + python validate.py [--original ] [--auto-repair] [--author NAME] + +The first argument can be either: +- An unpacked directory containing the Office document XML files +- A packed Office file (.docx/.pptx/.xlsx) which will be unpacked to a temp directory + +Auto-repair fixes: +- paraId/durableId values that exceed OOXML limits +- Missing xml:space="preserve" on w:t elements with whitespace +""" + +import argparse +import sys +import tempfile +import zipfile +from pathlib import Path + +from validators import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator + + +def main(): + parser = argparse.ArgumentParser(description="Validate Office document XML files") + parser.add_argument( + "path", + help="Path to unpacked directory or packed Office file (.docx/.pptx/.xlsx)", + ) + parser.add_argument( + "--original", + required=False, + default=None, + help="Path to original file (.docx/.pptx/.xlsx). If omitted, all XSD errors are reported and redlining validation is skipped.", + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + help="Enable verbose output", + ) + parser.add_argument( + "--auto-repair", + action="store_true", + help="Automatically repair common issues (hex IDs, whitespace preservation)", + ) + parser.add_argument( + "--author", + default="Claude", + help="Author name for redlining validation (default: Claude)", + ) + args = parser.parse_args() + + path = Path(args.path) + assert path.exists(), f"Error: {path} does not exist" + + original_file = None + if args.original: + original_file = Path(args.original) + assert original_file.is_file(), f"Error: {original_file} is not a file" + assert original_file.suffix.lower() in [".docx", ".pptx", ".xlsx"], ( + f"Error: {original_file} must be a .docx, .pptx, or .xlsx file" + ) + + file_extension = (original_file or path).suffix.lower() + assert file_extension in [".docx", ".pptx", ".xlsx"], ( + f"Error: Cannot determine file type from {path}. Use --original or provide a .docx/.pptx/.xlsx file." + ) + + if path.is_file() and path.suffix.lower() in [".docx", ".pptx", ".xlsx"]: + temp_dir = tempfile.mkdtemp() + with zipfile.ZipFile(path, "r") as zf: + zf.extractall(temp_dir) + unpacked_dir = Path(temp_dir) + else: + assert path.is_dir(), f"Error: {path} is not a directory or Office file" + unpacked_dir = path + + match file_extension: + case ".docx": + validators = [ + DOCXSchemaValidator(unpacked_dir, original_file, verbose=args.verbose), + ] + if original_file: + validators.append( + RedliningValidator(unpacked_dir, original_file, verbose=args.verbose, author=args.author) + ) + case ".pptx": + validators = [ + PPTXSchemaValidator(unpacked_dir, original_file, verbose=args.verbose), + ] + case _: + print(f"Error: Validation not supported for file type {file_extension}") + sys.exit(1) + + if args.auto_repair: + total_repairs = sum(v.repair() for v in validators) + if total_repairs: + print(f"Auto-repaired {total_repairs} issue(s)") + + success = all(v.validate() for v in validators) + + if success: + print("All validations PASSED!") + + sys.exit(0 if success else 1) + + +if __name__ == "__main__": + main() diff --git a/skills/docx/scripts/office/validators/__init__.py b/skills/docx/scripts/office/validators/__init__.py new file mode 100644 index 0000000..db092ec --- /dev/null +++ b/skills/docx/scripts/office/validators/__init__.py @@ -0,0 +1,15 @@ +""" +Validation modules for Word document processing. +""" + +from .base import BaseSchemaValidator +from .docx import DOCXSchemaValidator +from .pptx import PPTXSchemaValidator +from .redlining import RedliningValidator + +__all__ = [ + "BaseSchemaValidator", + "DOCXSchemaValidator", + "PPTXSchemaValidator", + "RedliningValidator", +] diff --git a/skills/docx/scripts/office/validators/base.py b/skills/docx/scripts/office/validators/base.py new file mode 100644 index 0000000..db4a06a --- /dev/null +++ b/skills/docx/scripts/office/validators/base.py @@ -0,0 +1,847 @@ +""" +Base validator with common validation logic for document files. +""" + +import re +from pathlib import Path + +import defusedxml.minidom +import lxml.etree + + +class BaseSchemaValidator: + + IGNORED_VALIDATION_ERRORS = [ + "hyphenationZone", + "purl.org/dc/terms", + ] + + UNIQUE_ID_REQUIREMENTS = { + "comment": ("id", "file"), + "commentrangestart": ("id", "file"), + "commentrangeend": ("id", "file"), + "bookmarkstart": ("id", "file"), + "bookmarkend": ("id", "file"), + "sldid": ("id", "file"), + "sldmasterid": ("id", "global"), + "sldlayoutid": ("id", "global"), + "cm": ("authorid", "file"), + "sheet": ("sheetid", "file"), + "definedname": ("id", "file"), + "cxnsp": ("id", "file"), + "sp": ("id", "file"), + "pic": ("id", "file"), + "grpsp": ("id", "file"), + } + + EXCLUDED_ID_CONTAINERS = { + "sectionlst", + } + + ELEMENT_RELATIONSHIP_TYPES = {} + + SCHEMA_MAPPINGS = { + "word": "ISO-IEC29500-4_2016/wml.xsd", + "ppt": "ISO-IEC29500-4_2016/pml.xsd", + "xl": "ISO-IEC29500-4_2016/sml.xsd", + "[Content_Types].xml": "ecma/fouth-edition/opc-contentTypes.xsd", + "app.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd", + "core.xml": "ecma/fouth-edition/opc-coreProperties.xsd", + "custom.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd", + ".rels": "ecma/fouth-edition/opc-relationships.xsd", + "people.xml": "microsoft/wml-2012.xsd", + "commentsIds.xml": "microsoft/wml-cid-2016.xsd", + "commentsExtensible.xml": "microsoft/wml-cex-2018.xsd", + "commentsExtended.xml": "microsoft/wml-2012.xsd", + "chart": "ISO-IEC29500-4_2016/dml-chart.xsd", + "theme": "ISO-IEC29500-4_2016/dml-main.xsd", + "drawing": "ISO-IEC29500-4_2016/dml-main.xsd", + } + + MC_NAMESPACE = "http://schemas.openxmlformats.org/markup-compatibility/2006" + XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace" + + PACKAGE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/relationships" + ) + OFFICE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships" + ) + CONTENT_TYPES_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/content-types" + ) + + MAIN_CONTENT_FOLDERS = {"word", "ppt", "xl"} + + OOXML_NAMESPACES = { + "http://schemas.openxmlformats.org/officeDocument/2006/math", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + "http://schemas.openxmlformats.org/schemaLibrary/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/chart", + "http://schemas.openxmlformats.org/drawingml/2006/chartDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/diagram", + "http://schemas.openxmlformats.org/drawingml/2006/picture", + "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", + "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + "http://schemas.openxmlformats.org/presentationml/2006/main", + "http://schemas.openxmlformats.org/spreadsheetml/2006/main", + "http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes", + "http://www.w3.org/XML/1998/namespace", + } + + def __init__(self, unpacked_dir, original_file=None, verbose=False): + self.unpacked_dir = Path(unpacked_dir).resolve() + self.original_file = Path(original_file) if original_file else None + self.verbose = verbose + + self.schemas_dir = Path(__file__).parent.parent / "schemas" + + patterns = ["*.xml", "*.rels"] + self.xml_files = [ + f for pattern in patterns for f in self.unpacked_dir.rglob(pattern) + ] + + if not self.xml_files: + print(f"Warning: No XML files found in {self.unpacked_dir}") + + def validate(self): + raise NotImplementedError("Subclasses must implement the validate method") + + def repair(self) -> int: + return self.repair_whitespace_preservation() + + def repair_whitespace_preservation(self) -> int: + repairs = 0 + + for xml_file in self.xml_files: + try: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + modified = False + + for elem in dom.getElementsByTagName("*"): + if elem.tagName.endswith(":t") and elem.firstChild: + text = elem.firstChild.nodeValue + if text and (text.startswith((' ', '\t')) or text.endswith((' ', '\t'))): + if elem.getAttribute("xml:space") != "preserve": + elem.setAttribute("xml:space", "preserve") + text_preview = repr(text[:30]) + "..." if len(text) > 30 else repr(text) + print(f" Repaired: {xml_file.name}: Added xml:space='preserve' to {elem.tagName}: {text_preview}") + repairs += 1 + modified = True + + if modified: + xml_file.write_bytes(dom.toxml(encoding="UTF-8")) + + except Exception: + pass + + return repairs + + def validate_xml(self): + errors = [] + + for xml_file in self.xml_files: + try: + lxml.etree.parse(str(xml_file)) + except lxml.etree.XMLSyntaxError as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {e.lineno}: {e.msg}" + ) + except Exception as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Unexpected error: {str(e)}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} XML violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All XML files are well-formed") + return True + + def validate_namespaces(self): + errors = [] + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + declared = set(root.nsmap.keys()) - {None} + + for attr_val in [ + v for k, v in root.attrib.items() if k.endswith("Ignorable") + ]: + undeclared = set(attr_val.split()) - declared + errors.extend( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Namespace '{ns}' in Ignorable but not declared" + for ns in undeclared + ) + except lxml.etree.XMLSyntaxError: + continue + + if errors: + print(f"FAILED - {len(errors)} namespace issues:") + for error in errors: + print(error) + return False + if self.verbose: + print("PASSED - All namespace prefixes properly declared") + return True + + def validate_unique_ids(self): + errors = [] + global_ids = {} + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + file_ids = {} + + mc_elements = root.xpath( + ".//mc:AlternateContent", namespaces={"mc": self.MC_NAMESPACE} + ) + for elem in mc_elements: + elem.getparent().remove(elem) + + for elem in root.iter(): + tag = ( + elem.tag.split("}")[-1].lower() + if "}" in elem.tag + else elem.tag.lower() + ) + + if tag in self.UNIQUE_ID_REQUIREMENTS: + in_excluded_container = any( + ancestor.tag.split("}")[-1].lower() in self.EXCLUDED_ID_CONTAINERS + for ancestor in elem.iterancestors() + ) + if in_excluded_container: + continue + + attr_name, scope = self.UNIQUE_ID_REQUIREMENTS[tag] + + id_value = None + for attr, value in elem.attrib.items(): + attr_local = ( + attr.split("}")[-1].lower() + if "}" in attr + else attr.lower() + ) + if attr_local == attr_name: + id_value = value + break + + if id_value is not None: + if scope == "global": + if id_value in global_ids: + prev_file, prev_line, prev_tag = global_ids[ + id_value + ] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Global ID '{id_value}' in <{tag}> " + f"already used in {prev_file} at line {prev_line} in <{prev_tag}>" + ) + else: + global_ids[id_value] = ( + xml_file.relative_to(self.unpacked_dir), + elem.sourceline, + tag, + ) + elif scope == "file": + key = (tag, attr_name) + if key not in file_ids: + file_ids[key] = {} + + if id_value in file_ids[key]: + prev_line = file_ids[key][id_value] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Duplicate {attr_name}='{id_value}' in <{tag}> " + f"(first occurrence at line {prev_line})" + ) + else: + file_ids[key][id_value] = elem.sourceline + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} ID uniqueness violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All required IDs are unique") + return True + + def validate_file_references(self): + errors = [] + + rels_files = list(self.unpacked_dir.rglob("*.rels")) + + if not rels_files: + if self.verbose: + print("PASSED - No .rels files found") + return True + + all_files = [] + for file_path in self.unpacked_dir.rglob("*"): + if ( + file_path.is_file() + and file_path.name != "[Content_Types].xml" + and not file_path.name.endswith(".rels") + ): + all_files.append(file_path.resolve()) + + all_referenced_files = set() + + if self.verbose: + print( + f"Found {len(rels_files)} .rels files and {len(all_files)} target files" + ) + + for rels_file in rels_files: + try: + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + rels_dir = rels_file.parent + + referenced_files = set() + broken_refs = [] + + for rel in rels_root.findall( + ".//ns:Relationship", + namespaces={"ns": self.PACKAGE_RELATIONSHIPS_NAMESPACE}, + ): + target = rel.get("Target") + if target and not target.startswith( + ("http", "mailto:") + ): + if target.startswith("/"): + target_path = self.unpacked_dir / target.lstrip("/") + elif rels_file.name == ".rels": + target_path = self.unpacked_dir / target + else: + base_dir = rels_dir.parent + target_path = base_dir / target + + try: + target_path = target_path.resolve() + if target_path.exists() and target_path.is_file(): + referenced_files.add(target_path) + all_referenced_files.add(target_path) + else: + broken_refs.append((target, rel.sourceline)) + except (OSError, ValueError): + broken_refs.append((target, rel.sourceline)) + + if broken_refs: + rel_path = rels_file.relative_to(self.unpacked_dir) + for broken_ref, line_num in broken_refs: + errors.append( + f" {rel_path}: Line {line_num}: Broken reference to {broken_ref}" + ) + + except Exception as e: + rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append(f" Error parsing {rel_path}: {e}") + + unreferenced_files = set(all_files) - all_referenced_files + + if unreferenced_files: + for unref_file in sorted(unreferenced_files): + unref_rel_path = unref_file.relative_to(self.unpacked_dir) + errors.append(f" Unreferenced file: {unref_rel_path}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship validation errors:") + for error in errors: + print(error) + print( + "CRITICAL: These errors will cause the document to appear corrupt. " + + "Broken references MUST be fixed, " + + "and unreferenced files MUST be referenced or removed." + ) + return False + else: + if self.verbose: + print( + "PASSED - All references are valid and all files are properly referenced" + ) + return True + + def validate_all_relationship_ids(self): + import lxml.etree + + errors = [] + + for xml_file in self.xml_files: + if xml_file.suffix == ".rels": + continue + + rels_dir = xml_file.parent / "_rels" + rels_file = rels_dir / f"{xml_file.name}.rels" + + if not rels_file.exists(): + continue + + try: + rels_root = lxml.etree.parse(str(rels_file)).getroot() + rid_to_type = {} + + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rid = rel.get("Id") + rel_type = rel.get("Type", "") + if rid: + if rid in rid_to_type: + rels_rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append( + f" {rels_rel_path}: Line {rel.sourceline}: " + f"Duplicate relationship ID '{rid}' (IDs must be unique)" + ) + type_name = ( + rel_type.split("/")[-1] if "/" in rel_type else rel_type + ) + rid_to_type[rid] = type_name + + xml_root = lxml.etree.parse(str(xml_file)).getroot() + + r_ns = self.OFFICE_RELATIONSHIPS_NAMESPACE + rid_attrs_to_check = ["id", "embed", "link"] + for elem in xml_root.iter(): + for attr_name in rid_attrs_to_check: + rid_attr = elem.get(f"{{{r_ns}}}{attr_name}") + if not rid_attr: + continue + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + elem_name = ( + elem.tag.split("}")[-1] if "}" in elem.tag else elem.tag + ) + + if rid_attr not in rid_to_type: + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> r:{attr_name} references non-existent relationship '{rid_attr}' " + f"(valid IDs: {', '.join(sorted(rid_to_type.keys())[:5])}{'...' if len(rid_to_type) > 5 else ''})" + ) + elif attr_name == "id" and self.ELEMENT_RELATIONSHIP_TYPES: + expected_type = self._get_expected_relationship_type( + elem_name + ) + if expected_type: + actual_type = rid_to_type[rid_attr] + if expected_type not in actual_type.lower(): + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> references '{rid_attr}' which points to '{actual_type}' " + f"but should point to a '{expected_type}' relationship" + ) + + except Exception as e: + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + errors.append(f" Error processing {xml_rel_path}: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship ID reference errors:") + for error in errors: + print(error) + print("\nThese ID mismatches will cause the document to appear corrupt!") + return False + else: + if self.verbose: + print("PASSED - All relationship ID references are valid") + return True + + def _get_expected_relationship_type(self, element_name): + elem_lower = element_name.lower() + + if elem_lower in self.ELEMENT_RELATIONSHIP_TYPES: + return self.ELEMENT_RELATIONSHIP_TYPES[elem_lower] + + if elem_lower.endswith("id") and len(elem_lower) > 2: + prefix = elem_lower[:-2] + if prefix.endswith("master"): + return prefix.lower() + elif prefix.endswith("layout"): + return prefix.lower() + else: + if prefix == "sld": + return "slide" + return prefix.lower() + + if elem_lower.endswith("reference") and len(elem_lower) > 9: + prefix = elem_lower[:-9] + return prefix.lower() + + return None + + def validate_content_types(self): + errors = [] + + content_types_file = self.unpacked_dir / "[Content_Types].xml" + if not content_types_file.exists(): + print("FAILED - [Content_Types].xml file not found") + return False + + try: + root = lxml.etree.parse(str(content_types_file)).getroot() + declared_parts = set() + declared_extensions = set() + + for override in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Override" + ): + part_name = override.get("PartName") + if part_name is not None: + declared_parts.add(part_name.lstrip("/")) + + for default in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Default" + ): + extension = default.get("Extension") + if extension is not None: + declared_extensions.add(extension.lower()) + + declarable_roots = { + "sld", + "sldLayout", + "sldMaster", + "presentation", + "document", + "workbook", + "worksheet", + "theme", + } + + media_extensions = { + "png": "image/png", + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "gif": "image/gif", + "bmp": "image/bmp", + "tiff": "image/tiff", + "wmf": "image/x-wmf", + "emf": "image/x-emf", + } + + all_files = list(self.unpacked_dir.rglob("*")) + all_files = [f for f in all_files if f.is_file()] + + for xml_file in self.xml_files: + path_str = str(xml_file.relative_to(self.unpacked_dir)).replace( + "\\", "/" + ) + + if any( + skip in path_str + for skip in [".rels", "[Content_Types]", "docProps/", "_rels/"] + ): + continue + + try: + root_tag = lxml.etree.parse(str(xml_file)).getroot().tag + root_name = root_tag.split("}")[-1] if "}" in root_tag else root_tag + + if root_name in declarable_roots and path_str not in declared_parts: + errors.append( + f" {path_str}: File with <{root_name}> root not declared in [Content_Types].xml" + ) + + except Exception: + continue + + for file_path in all_files: + if file_path.suffix.lower() in {".xml", ".rels"}: + continue + if file_path.name == "[Content_Types].xml": + continue + if "_rels" in file_path.parts or "docProps" in file_path.parts: + continue + + extension = file_path.suffix.lstrip(".").lower() + if extension and extension not in declared_extensions: + if extension in media_extensions: + relative_path = file_path.relative_to(self.unpacked_dir) + errors.append( + f' {relative_path}: File with extension \'{extension}\' not declared in [Content_Types].xml - should add: ' + ) + + except Exception as e: + errors.append(f" Error parsing [Content_Types].xml: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} content type declaration errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print( + "PASSED - All content files are properly declared in [Content_Types].xml" + ) + return True + + def validate_file_against_xsd(self, xml_file, verbose=False): + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + + is_valid, current_errors = self._validate_single_file_xsd( + xml_file, unpacked_dir + ) + + if is_valid is None: + return None, set() + elif is_valid: + return True, set() + + original_errors = self._get_original_file_errors(xml_file) + + assert current_errors is not None + new_errors = current_errors - original_errors + + new_errors = { + e for e in new_errors + if not any(pattern in e for pattern in self.IGNORED_VALIDATION_ERRORS) + } + + if new_errors: + if verbose: + relative_path = xml_file.relative_to(unpacked_dir) + print(f"FAILED - {relative_path}: {len(new_errors)} new error(s)") + for error in list(new_errors)[:3]: + truncated = error[:250] + "..." if len(error) > 250 else error + print(f" - {truncated}") + return False, new_errors + else: + if verbose: + print( + f"PASSED - No new errors (original had {len(current_errors)} errors)" + ) + return True, set() + + def validate_against_xsd(self): + new_errors = [] + original_error_count = 0 + valid_count = 0 + skipped_count = 0 + + for xml_file in self.xml_files: + relative_path = str(xml_file.relative_to(self.unpacked_dir)) + is_valid, new_file_errors = self.validate_file_against_xsd( + xml_file, verbose=False + ) + + if is_valid is None: + skipped_count += 1 + continue + elif is_valid and not new_file_errors: + valid_count += 1 + continue + elif is_valid: + original_error_count += 1 + valid_count += 1 + continue + + new_errors.append(f" {relative_path}: {len(new_file_errors)} new error(s)") + for error in list(new_file_errors)[:3]: + new_errors.append( + f" - {error[:250]}..." if len(error) > 250 else f" - {error}" + ) + + if self.verbose: + print(f"Validated {len(self.xml_files)} files:") + print(f" - Valid: {valid_count}") + print(f" - Skipped (no schema): {skipped_count}") + if original_error_count: + print(f" - With original errors (ignored): {original_error_count}") + print( + f" - With NEW errors: {len(new_errors) > 0 and len([e for e in new_errors if not e.startswith(' ')]) or 0}" + ) + + if new_errors: + print("\nFAILED - Found NEW validation errors:") + for error in new_errors: + print(error) + return False + else: + if self.verbose: + print("\nPASSED - No new XSD validation errors introduced") + return True + + def _get_schema_path(self, xml_file): + if xml_file.name in self.SCHEMA_MAPPINGS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.name] + + if xml_file.suffix == ".rels": + return self.schemas_dir / self.SCHEMA_MAPPINGS[".rels"] + + if "charts/" in str(xml_file) and xml_file.name.startswith("chart"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["chart"] + + if "theme/" in str(xml_file) and xml_file.name.startswith("theme"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["theme"] + + if xml_file.parent.name in self.MAIN_CONTENT_FOLDERS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.parent.name] + + return None + + def _clean_ignorable_namespaces(self, xml_doc): + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + for elem in xml_copy.iter(): + attrs_to_remove = [] + + for attr in elem.attrib: + if "{" in attr: + ns = attr.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + attrs_to_remove.append(attr) + + for attr in attrs_to_remove: + del elem.attrib[attr] + + self._remove_ignorable_elements(xml_copy) + + return lxml.etree.ElementTree(xml_copy) + + def _remove_ignorable_elements(self, root): + elements_to_remove = [] + + for elem in list(root): + if not hasattr(elem, "tag") or callable(elem.tag): + continue + + tag_str = str(elem.tag) + if tag_str.startswith("{"): + ns = tag_str.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + elements_to_remove.append(elem) + continue + + self._remove_ignorable_elements(elem) + + for elem in elements_to_remove: + root.remove(elem) + + def _preprocess_for_mc_ignorable(self, xml_doc): + root = xml_doc.getroot() + + if f"{{{self.MC_NAMESPACE}}}Ignorable" in root.attrib: + del root.attrib[f"{{{self.MC_NAMESPACE}}}Ignorable"] + + return xml_doc + + def _validate_single_file_xsd(self, xml_file, base_path): + schema_path = self._get_schema_path(xml_file) + if not schema_path: + return None, None + + try: + with open(schema_path, "rb") as xsd_file: + parser = lxml.etree.XMLParser() + xsd_doc = lxml.etree.parse( + xsd_file, parser=parser, base_url=str(schema_path) + ) + schema = lxml.etree.XMLSchema(xsd_doc) + + with open(xml_file, "r") as f: + xml_doc = lxml.etree.parse(f) + + xml_doc, _ = self._remove_template_tags_from_text_nodes(xml_doc) + xml_doc = self._preprocess_for_mc_ignorable(xml_doc) + + relative_path = xml_file.relative_to(base_path) + if ( + relative_path.parts + and relative_path.parts[0] in self.MAIN_CONTENT_FOLDERS + ): + xml_doc = self._clean_ignorable_namespaces(xml_doc) + + if schema.validate(xml_doc): + return True, set() + else: + errors = set() + for error in schema.error_log: + errors.add(error.message) + return False, errors + + except Exception as e: + return False, {str(e)} + + def _get_original_file_errors(self, xml_file): + if self.original_file is None: + return set() + + import tempfile + import zipfile + + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + relative_path = xml_file.relative_to(unpacked_dir) + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + with zipfile.ZipFile(self.original_file, "r") as zip_ref: + zip_ref.extractall(temp_path) + + original_xml_file = temp_path / relative_path + + if not original_xml_file.exists(): + return set() + + is_valid, errors = self._validate_single_file_xsd( + original_xml_file, temp_path + ) + return errors if errors else set() + + def _remove_template_tags_from_text_nodes(self, xml_doc): + warnings = [] + template_pattern = re.compile(r"\{\{[^}]*\}\}") + + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + def process_text_content(text, content_type): + if not text: + return text + matches = list(template_pattern.finditer(text)) + if matches: + for match in matches: + warnings.append( + f"Found template tag in {content_type}: {match.group()}" + ) + return template_pattern.sub("", text) + return text + + for elem in xml_copy.iter(): + if not hasattr(elem, "tag") or callable(elem.tag): + continue + tag_str = str(elem.tag) + if tag_str.endswith("}t") or tag_str == "t": + continue + + elem.text = process_text_content(elem.text, "text content") + elem.tail = process_text_content(elem.tail, "tail content") + + return lxml.etree.ElementTree(xml_copy), warnings + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/skills/docx/scripts/office/validators/docx.py b/skills/docx/scripts/office/validators/docx.py new file mode 100644 index 0000000..fec405e --- /dev/null +++ b/skills/docx/scripts/office/validators/docx.py @@ -0,0 +1,446 @@ +""" +Validator for Word document XML files against XSD schemas. +""" + +import random +import re +import tempfile +import zipfile + +import defusedxml.minidom +import lxml.etree + +from .base import BaseSchemaValidator + + +class DOCXSchemaValidator(BaseSchemaValidator): + + WORD_2006_NAMESPACE = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + W14_NAMESPACE = "http://schemas.microsoft.com/office/word/2010/wordml" + W16CID_NAMESPACE = "http://schemas.microsoft.com/office/word/2016/wordml/cid" + + ELEMENT_RELATIONSHIP_TYPES = {} + + def validate(self): + if not self.validate_xml(): + return False + + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + if not self.validate_unique_ids(): + all_valid = False + + if not self.validate_file_references(): + all_valid = False + + if not self.validate_content_types(): + all_valid = False + + if not self.validate_against_xsd(): + all_valid = False + + if not self.validate_whitespace_preservation(): + all_valid = False + + if not self.validate_deletions(): + all_valid = False + + if not self.validate_insertions(): + all_valid = False + + if not self.validate_all_relationship_ids(): + all_valid = False + + if not self.validate_id_constraints(): + all_valid = False + + if not self.validate_comment_markers(): + all_valid = False + + self.compare_paragraph_counts() + + return all_valid + + def validate_whitespace_preservation(self): + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + for elem in root.iter(f"{{{self.WORD_2006_NAMESPACE}}}t"): + if elem.text: + text = elem.text + if re.search(r"^[ \t\n\r]", text) or re.search( + r"[ \t\n\r]$", text + ): + xml_space_attr = f"{{{self.XML_NAMESPACE}}}space" + if ( + xml_space_attr not in elem.attrib + or elem.attrib[xml_space_attr] != "preserve" + ): + text_preview = ( + repr(text)[:50] + "..." + if len(repr(text)) > 50 + else repr(text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: w:t element with whitespace missing xml:space='preserve': {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} whitespace preservation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All whitespace is properly preserved") + return True + + def validate_deletions(self): + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + for t_elem in root.xpath(".//w:del//w:t", namespaces=namespaces): + if t_elem.text: + text_preview = ( + repr(t_elem.text)[:50] + "..." + if len(repr(t_elem.text)) > 50 + else repr(t_elem.text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {t_elem.sourceline}: found within : {text_preview}" + ) + + for instr_elem in root.xpath( + ".//w:del//w:instrText", namespaces=namespaces + ): + text_preview = ( + repr(instr_elem.text or "")[:50] + "..." + if len(repr(instr_elem.text or "")) > 50 + else repr(instr_elem.text or "") + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {instr_elem.sourceline}: found within (use ): {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} deletion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:t elements found within w:del elements") + return True + + def count_paragraphs_in_unpacked(self): + count = 0 + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + except Exception as e: + print(f"Error counting paragraphs in unpacked document: {e}") + + return count + + def count_paragraphs_in_original(self): + original = self.original_file + if original is None: + return 0 + + count = 0 + + try: + with tempfile.TemporaryDirectory() as temp_dir: + with zipfile.ZipFile(original, "r") as zip_ref: + zip_ref.extractall(temp_dir) + + doc_xml_path = temp_dir + "/word/document.xml" + root = lxml.etree.parse(doc_xml_path).getroot() + + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + + except Exception as e: + print(f"Error counting paragraphs in original document: {e}") + + return count + + def validate_insertions(self): + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + invalid_elements = root.xpath( + ".//w:ins//w:delText[not(ancestor::w:del)]", namespaces=namespaces + ) + + for elem in invalid_elements: + text_preview = ( + repr(elem.text or "")[:50] + "..." + if len(repr(elem.text or "")) > 50 + else repr(elem.text or "") + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: within : {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} insertion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:delText elements within w:ins elements") + return True + + def compare_paragraph_counts(self): + original_count = self.count_paragraphs_in_original() + new_count = self.count_paragraphs_in_unpacked() + + diff = new_count - original_count + diff_str = f"+{diff}" if diff > 0 else str(diff) + print(f"\nParagraphs: {original_count} → {new_count} ({diff_str})") + + def _parse_id_value(self, val: str, base: int = 16) -> int: + return int(val, base) + + def validate_id_constraints(self): + errors = [] + para_id_attr = f"{{{self.W14_NAMESPACE}}}paraId" + durable_id_attr = f"{{{self.W16CID_NAMESPACE}}}durableId" + + for xml_file in self.xml_files: + try: + for elem in lxml.etree.parse(str(xml_file)).iter(): + if val := elem.get(para_id_attr): + if self._parse_id_value(val, base=16) >= 0x80000000: + errors.append( + f" {xml_file.name}:{elem.sourceline}: paraId={val} >= 0x80000000" + ) + + if val := elem.get(durable_id_attr): + if xml_file.name == "numbering.xml": + try: + if self._parse_id_value(val, base=10) >= 0x7FFFFFFF: + errors.append( + f" {xml_file.name}:{elem.sourceline}: " + f"durableId={val} >= 0x7FFFFFFF" + ) + except ValueError: + errors.append( + f" {xml_file.name}:{elem.sourceline}: " + f"durableId={val} must be decimal in numbering.xml" + ) + else: + if self._parse_id_value(val, base=16) >= 0x7FFFFFFF: + errors.append( + f" {xml_file.name}:{elem.sourceline}: " + f"durableId={val} >= 0x7FFFFFFF" + ) + except Exception: + pass + + if errors: + print(f"FAILED - {len(errors)} ID constraint violations:") + for e in errors: + print(e) + elif self.verbose: + print("PASSED - All paraId/durableId values within constraints") + return not errors + + def validate_comment_markers(self): + errors = [] + + document_xml = None + comments_xml = None + for xml_file in self.xml_files: + if xml_file.name == "document.xml" and "word" in str(xml_file): + document_xml = xml_file + elif xml_file.name == "comments.xml": + comments_xml = xml_file + + if not document_xml: + if self.verbose: + print("PASSED - No document.xml found (skipping comment validation)") + return True + + try: + doc_root = lxml.etree.parse(str(document_xml)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + range_starts = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in doc_root.xpath( + ".//w:commentRangeStart", namespaces=namespaces + ) + } + range_ends = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in doc_root.xpath( + ".//w:commentRangeEnd", namespaces=namespaces + ) + } + references = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in doc_root.xpath( + ".//w:commentReference", namespaces=namespaces + ) + } + + orphaned_ends = range_ends - range_starts + for comment_id in sorted( + orphaned_ends, key=lambda x: int(x) if x and x.isdigit() else 0 + ): + errors.append( + f' document.xml: commentRangeEnd id="{comment_id}" has no matching commentRangeStart' + ) + + orphaned_starts = range_starts - range_ends + for comment_id in sorted( + orphaned_starts, key=lambda x: int(x) if x and x.isdigit() else 0 + ): + errors.append( + f' document.xml: commentRangeStart id="{comment_id}" has no matching commentRangeEnd' + ) + + comment_ids = set() + if comments_xml and comments_xml.exists(): + comments_root = lxml.etree.parse(str(comments_xml)).getroot() + comment_ids = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in comments_root.xpath( + ".//w:comment", namespaces=namespaces + ) + } + + marker_ids = range_starts | range_ends | references + invalid_refs = marker_ids - comment_ids + for comment_id in sorted( + invalid_refs, key=lambda x: int(x) if x and x.isdigit() else 0 + ): + if comment_id: + errors.append( + f' document.xml: marker id="{comment_id}" references non-existent comment' + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append(f" Error parsing XML: {e}") + + if errors: + print(f"FAILED - {len(errors)} comment marker violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All comment markers properly paired") + return True + + def repair(self) -> int: + repairs = super().repair() + repairs += self.repair_durableId() + return repairs + + def repair_durableId(self) -> int: + repairs = 0 + + for xml_file in self.xml_files: + try: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + modified = False + + for elem in dom.getElementsByTagName("*"): + if not elem.hasAttribute("w16cid:durableId"): + continue + + durable_id = elem.getAttribute("w16cid:durableId") + needs_repair = False + + if xml_file.name == "numbering.xml": + try: + needs_repair = ( + self._parse_id_value(durable_id, base=10) >= 0x7FFFFFFF + ) + except ValueError: + needs_repair = True + else: + try: + needs_repair = ( + self._parse_id_value(durable_id, base=16) >= 0x7FFFFFFF + ) + except ValueError: + needs_repair = True + + if needs_repair: + value = random.randint(1, 0x7FFFFFFE) + if xml_file.name == "numbering.xml": + new_id = str(value) + else: + new_id = f"{value:08X}" + + elem.setAttribute("w16cid:durableId", new_id) + print( + f" Repaired: {xml_file.name}: durableId {durable_id} → {new_id}" + ) + repairs += 1 + modified = True + + if modified: + xml_file.write_bytes(dom.toxml(encoding="UTF-8")) + + except Exception: + pass + + return repairs + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/skills/docx/scripts/office/validators/pptx.py b/skills/docx/scripts/office/validators/pptx.py new file mode 100644 index 0000000..09842aa --- /dev/null +++ b/skills/docx/scripts/office/validators/pptx.py @@ -0,0 +1,275 @@ +""" +Validator for PowerPoint presentation XML files against XSD schemas. +""" + +import re + +from .base import BaseSchemaValidator + + +class PPTXSchemaValidator(BaseSchemaValidator): + + PRESENTATIONML_NAMESPACE = ( + "http://schemas.openxmlformats.org/presentationml/2006/main" + ) + + ELEMENT_RELATIONSHIP_TYPES = { + "sldid": "slide", + "sldmasterid": "slidemaster", + "notesmasterid": "notesmaster", + "sldlayoutid": "slidelayout", + "themeid": "theme", + "tablestyleid": "tablestyles", + } + + def validate(self): + if not self.validate_xml(): + return False + + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + if not self.validate_unique_ids(): + all_valid = False + + if not self.validate_uuid_ids(): + all_valid = False + + if not self.validate_file_references(): + all_valid = False + + if not self.validate_slide_layout_ids(): + all_valid = False + + if not self.validate_content_types(): + all_valid = False + + if not self.validate_against_xsd(): + all_valid = False + + if not self.validate_notes_slide_references(): + all_valid = False + + if not self.validate_all_relationship_ids(): + all_valid = False + + if not self.validate_no_duplicate_slide_layouts(): + all_valid = False + + return all_valid + + def validate_uuid_ids(self): + import lxml.etree + + errors = [] + uuid_pattern = re.compile( + r"^[\{\(]?[0-9A-Fa-f]{8}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{12}[\}\)]?$" + ) + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + for elem in root.iter(): + for attr, value in elem.attrib.items(): + attr_name = attr.split("}")[-1].lower() + if attr_name == "id" or attr_name.endswith("id"): + if self._looks_like_uuid(value): + if not uuid_pattern.match(value): + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: ID '{value}' appears to be a UUID but contains invalid hex characters" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} UUID ID validation errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All UUID-like IDs contain valid hex values") + return True + + def _looks_like_uuid(self, value): + clean_value = value.strip("{}()").replace("-", "") + return len(clean_value) == 32 and all(c.isalnum() for c in clean_value) + + def validate_slide_layout_ids(self): + import lxml.etree + + errors = [] + + slide_masters = list(self.unpacked_dir.glob("ppt/slideMasters/*.xml")) + + if not slide_masters: + if self.verbose: + print("PASSED - No slide masters found") + return True + + for slide_master in slide_masters: + try: + root = lxml.etree.parse(str(slide_master)).getroot() + + rels_file = slide_master.parent / "_rels" / f"{slide_master.name}.rels" + + if not rels_file.exists(): + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Missing relationships file: {rels_file.relative_to(self.unpacked_dir)}" + ) + continue + + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + valid_layout_rids = set() + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "slideLayout" in rel_type: + valid_layout_rids.add(rel.get("Id")) + + for sld_layout_id in root.findall( + f".//{{{self.PRESENTATIONML_NAMESPACE}}}sldLayoutId" + ): + r_id = sld_layout_id.get( + f"{{{self.OFFICE_RELATIONSHIPS_NAMESPACE}}}id" + ) + layout_id = sld_layout_id.get("id") + + if r_id and r_id not in valid_layout_rids: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Line {sld_layout_id.sourceline}: sldLayoutId with id='{layout_id}' " + f"references r:id='{r_id}' which is not found in slide layout relationships" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} slide layout ID validation errors:") + for error in errors: + print(error) + print( + "Remove invalid references or add missing slide layouts to the relationships file." + ) + return False + else: + if self.verbose: + print("PASSED - All slide layout IDs reference valid slide layouts") + return True + + def validate_no_duplicate_slide_layouts(self): + import lxml.etree + + errors = [] + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + for rels_file in slide_rels_files: + try: + root = lxml.etree.parse(str(rels_file)).getroot() + + layout_rels = [ + rel + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ) + if "slideLayout" in rel.get("Type", "") + ] + + if len(layout_rels) > 1: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: has {len(layout_rels)} slideLayout references" + ) + + except Exception as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print("FAILED - Found slides with duplicate slideLayout references:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All slides have exactly one slideLayout reference") + return True + + def validate_notes_slide_references(self): + import lxml.etree + + errors = [] + notes_slide_references = {} + + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + if not slide_rels_files: + if self.verbose: + print("PASSED - No slide relationship files found") + return True + + for rels_file in slide_rels_files: + try: + root = lxml.etree.parse(str(rels_file)).getroot() + + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "notesSlide" in rel_type: + target = rel.get("Target", "") + if target: + normalized_target = target.replace("../", "") + + slide_name = rels_file.stem.replace( + ".xml", "" + ) + + if normalized_target not in notes_slide_references: + notes_slide_references[normalized_target] = [] + notes_slide_references[normalized_target].append( + (slide_name, rels_file) + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + for target, references in notes_slide_references.items(): + if len(references) > 1: + slide_names = [ref[0] for ref in references] + errors.append( + f" Notes slide '{target}' is referenced by multiple slides: {', '.join(slide_names)}" + ) + for slide_name, rels_file in references: + errors.append(f" - {rels_file.relative_to(self.unpacked_dir)}") + + if errors: + print( + f"FAILED - Found {len([e for e in errors if not e.startswith(' ')])} notes slide reference validation errors:" + ) + for error in errors: + print(error) + print("Each slide may optionally have its own slide file.") + return False + else: + if self.verbose: + print("PASSED - All notes slide references are unique") + return True + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/skills/docx/scripts/office/validators/redlining.py b/skills/docx/scripts/office/validators/redlining.py new file mode 100644 index 0000000..71c81b6 --- /dev/null +++ b/skills/docx/scripts/office/validators/redlining.py @@ -0,0 +1,247 @@ +""" +Validator for tracked changes in Word documents. +""" + +import subprocess +import tempfile +import zipfile +from pathlib import Path + + +class RedliningValidator: + + def __init__(self, unpacked_dir, original_docx, verbose=False, author="Claude"): + self.unpacked_dir = Path(unpacked_dir) + self.original_docx = Path(original_docx) + self.verbose = verbose + self.author = author + self.namespaces = { + "w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + } + + def repair(self) -> int: + return 0 + + def validate(self): + modified_file = self.unpacked_dir / "word" / "document.xml" + if not modified_file.exists(): + print(f"FAILED - Modified document.xml not found at {modified_file}") + return False + + try: + import xml.etree.ElementTree as ET + + tree = ET.parse(modified_file) + root = tree.getroot() + + del_elements = root.findall(".//w:del", self.namespaces) + ins_elements = root.findall(".//w:ins", self.namespaces) + + author_del_elements = [ + elem + for elem in del_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == self.author + ] + author_ins_elements = [ + elem + for elem in ins_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == self.author + ] + + if not author_del_elements and not author_ins_elements: + if self.verbose: + print(f"PASSED - No tracked changes by {self.author} found.") + return True + + except Exception: + pass + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + try: + with zipfile.ZipFile(self.original_docx, "r") as zip_ref: + zip_ref.extractall(temp_path) + except Exception as e: + print(f"FAILED - Error unpacking original docx: {e}") + return False + + original_file = temp_path / "word" / "document.xml" + if not original_file.exists(): + print( + f"FAILED - Original document.xml not found in {self.original_docx}" + ) + return False + + try: + import xml.etree.ElementTree as ET + + modified_tree = ET.parse(modified_file) + modified_root = modified_tree.getroot() + original_tree = ET.parse(original_file) + original_root = original_tree.getroot() + except ET.ParseError as e: + print(f"FAILED - Error parsing XML files: {e}") + return False + + self._remove_author_tracked_changes(original_root) + self._remove_author_tracked_changes(modified_root) + + modified_text = self._extract_text_content(modified_root) + original_text = self._extract_text_content(original_root) + + if modified_text != original_text: + error_message = self._generate_detailed_diff( + original_text, modified_text + ) + print(error_message) + return False + + if self.verbose: + print(f"PASSED - All changes by {self.author} are properly tracked") + return True + + def _generate_detailed_diff(self, original_text, modified_text): + error_parts = [ + f"FAILED - Document text doesn't match after removing {self.author}'s tracked changes", + "", + "Likely causes:", + " 1. Modified text inside another author's or tags", + " 2. Made edits without proper tracked changes", + " 3. Didn't nest inside when deleting another's insertion", + "", + "For pre-redlined documents, use correct patterns:", + " - To reject another's INSERTION: Nest inside their ", + " - To restore another's DELETION: Add new AFTER their ", + "", + ] + + git_diff = self._get_git_word_diff(original_text, modified_text) + if git_diff: + error_parts.extend(["Differences:", "============", git_diff]) + else: + error_parts.append("Unable to generate word diff (git not available)") + + return "\n".join(error_parts) + + def _get_git_word_diff(self, original_text, modified_text): + try: + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + original_file = temp_path / "original.txt" + modified_file = temp_path / "modified.txt" + + original_file.write_text(original_text, encoding="utf-8") + modified_file.write_text(modified_text, encoding="utf-8") + + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "--word-diff-regex=.", + "-U0", + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + lines = result.stdout.split("\n") + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + + if content_lines: + return "\n".join(content_lines) + + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "-U0", + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + lines = result.stdout.split("\n") + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + return "\n".join(content_lines) + + except (subprocess.CalledProcessError, FileNotFoundError, Exception): + pass + + return None + + def _remove_author_tracked_changes(self, root): + ins_tag = f"{{{self.namespaces['w']}}}ins" + del_tag = f"{{{self.namespaces['w']}}}del" + author_attr = f"{{{self.namespaces['w']}}}author" + + for parent in root.iter(): + to_remove = [] + for child in parent: + if child.tag == ins_tag and child.get(author_attr) == self.author: + to_remove.append(child) + for elem in to_remove: + parent.remove(elem) + + deltext_tag = f"{{{self.namespaces['w']}}}delText" + t_tag = f"{{{self.namespaces['w']}}}t" + + for parent in root.iter(): + to_process = [] + for child in parent: + if child.tag == del_tag and child.get(author_attr) == self.author: + to_process.append((child, list(parent).index(child))) + + for del_elem, del_index in reversed(to_process): + for elem in del_elem.iter(): + if elem.tag == deltext_tag: + elem.tag = t_tag + + for child in reversed(list(del_elem)): + parent.insert(del_index, child) + parent.remove(del_elem) + + def _extract_text_content(self, root): + p_tag = f"{{{self.namespaces['w']}}}p" + t_tag = f"{{{self.namespaces['w']}}}t" + + paragraphs = [] + for p_elem in root.findall(f".//{p_tag}"): + text_parts = [] + for t_elem in p_elem.findall(f".//{t_tag}"): + if t_elem.text: + text_parts.append(t_elem.text) + paragraph_text = "".join(text_parts) + if paragraph_text: + paragraphs.append(paragraph_text) + + return "\n".join(paragraphs) + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/skills/docx/scripts/templates/comments.xml b/skills/docx/scripts/templates/comments.xml new file mode 100644 index 0000000..cd01a7d --- /dev/null +++ b/skills/docx/scripts/templates/comments.xml @@ -0,0 +1,3 @@ + + + diff --git a/skills/docx/scripts/templates/commentsExtended.xml b/skills/docx/scripts/templates/commentsExtended.xml new file mode 100644 index 0000000..411003c --- /dev/null +++ b/skills/docx/scripts/templates/commentsExtended.xml @@ -0,0 +1,3 @@ + + + diff --git a/skills/docx/scripts/templates/commentsExtensible.xml b/skills/docx/scripts/templates/commentsExtensible.xml new file mode 100644 index 0000000..f5572d7 --- /dev/null +++ b/skills/docx/scripts/templates/commentsExtensible.xml @@ -0,0 +1,3 @@ + + + diff --git a/skills/docx/scripts/templates/commentsIds.xml b/skills/docx/scripts/templates/commentsIds.xml new file mode 100644 index 0000000..32f1629 --- /dev/null +++ b/skills/docx/scripts/templates/commentsIds.xml @@ -0,0 +1,3 @@ + + + diff --git a/skills/docx/scripts/templates/people.xml b/skills/docx/scripts/templates/people.xml new file mode 100644 index 0000000..3803d2d --- /dev/null +++ b/skills/docx/scripts/templates/people.xml @@ -0,0 +1,3 @@ + + + diff --git a/skills/frontend-design/LICENSE.txt b/skills/frontend-design/LICENSE.txt new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/skills/frontend-design/LICENSE.txt @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/skills/frontend-design/SKILL.md b/skills/frontend-design/SKILL.md new file mode 100644 index 0000000..5be498e --- /dev/null +++ b/skills/frontend-design/SKILL.md @@ -0,0 +1,42 @@ +--- +name: frontend-design +description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics. +license: Complete terms in LICENSE.txt +--- + +This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices. + +The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints. + +## Design Thinking + +Before coding, understand the context and commit to a BOLD aesthetic direction: +- **Purpose**: What problem does this interface solve? Who uses it? +- **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction. +- **Constraints**: Technical requirements (framework, performance, accessibility). +- **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember? + +**CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity. + +Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is: +- Production-grade and functional +- Visually striking and memorable +- Cohesive with a clear aesthetic point-of-view +- Meticulously refined in every detail + +## Frontend Aesthetics Guidelines + +Focus on: +- **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font. +- **Color & Theme**: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes. +- **Motion**: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise. +- **Spatial Composition**: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density. +- **Backgrounds & Visual Details**: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays. + +NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character. + +Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations. + +**IMPORTANT**: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well. + +Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision. diff --git a/skills/pptx/LICENSE.txt b/skills/pptx/LICENSE.txt new file mode 100644 index 0000000..c55ab42 --- /dev/null +++ b/skills/pptx/LICENSE.txt @@ -0,0 +1,30 @@ +© 2025 Anthropic, PBC. All rights reserved. + +LICENSE: Use of these materials (including all code, prompts, assets, files, +and other components of this Skill) is governed by your agreement with +Anthropic regarding use of Anthropic's services. If no separate agreement +exists, use is governed by Anthropic's Consumer Terms of Service or +Commercial Terms of Service, as applicable: +https://www.anthropic.com/legal/consumer-terms +https://www.anthropic.com/legal/commercial-terms +Your applicable agreement is referred to as the "Agreement." "Services" are +as defined in the Agreement. + +ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the +contrary, users may not: + +- Extract these materials from the Services or retain copies of these + materials outside the Services +- Reproduce or copy these materials, except for temporary copies created + automatically during authorized use of the Services +- Create derivative works based on these materials +- Distribute, sublicense, or transfer these materials to any third party +- Make, offer to sell, sell, or import any inventions embodied in these + materials +- Reverse engineer, decompile, or disassemble these materials + +The receipt, viewing, or possession of these materials does not convey or +imply any license or right beyond those expressly granted above. + +Anthropic retains all right, title, and interest in these materials, +including all copyrights, patents, and other intellectual property rights. diff --git a/skills/pptx/SKILL.md b/skills/pptx/SKILL.md new file mode 100644 index 0000000..df5000e --- /dev/null +++ b/skills/pptx/SKILL.md @@ -0,0 +1,232 @@ +--- +name: pptx +description: "Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill." +license: Proprietary. LICENSE.txt has complete terms +--- + +# PPTX Skill + +## Quick Reference + +| Task | Guide | +|------|-------| +| Read/analyze content | `python -m markitdown presentation.pptx` | +| Edit or create from template | Read [editing.md](editing.md) | +| Create from scratch | Read [pptxgenjs.md](pptxgenjs.md) | + +--- + +## Reading Content + +```bash +# Text extraction +python -m markitdown presentation.pptx + +# Visual overview +python scripts/thumbnail.py presentation.pptx + +# Raw XML +python scripts/office/unpack.py presentation.pptx unpacked/ +``` + +--- + +## Editing Workflow + +**Read [editing.md](editing.md) for full details.** + +1. Analyze template with `thumbnail.py` +2. Unpack → manipulate slides → edit content → clean → pack + +--- + +## Creating from Scratch + +**Read [pptxgenjs.md](pptxgenjs.md) for full details.** + +Use when no template or reference presentation is available. + +--- + +## Design Ideas + +**Don't create boring slides.** Plain bullets on a white background won't impress anyone. Consider ideas from this list for each slide. + +### Before Starting + +- **Pick a bold, content-informed color palette**: The palette should feel designed for THIS topic. If swapping your colors into a completely different presentation would still "work," you haven't made specific enough choices. +- **Dominance over equality**: One color should dominate (60-70% visual weight), with 1-2 supporting tones and one sharp accent. Never give all colors equal weight. +- **Dark/light contrast**: Dark backgrounds for title + conclusion slides, light for content ("sandwich" structure). Or commit to dark throughout for a premium feel. +- **Commit to a visual motif**: Pick ONE distinctive element and repeat it — rounded image frames, icons in colored circles, thick single-side borders. Carry it across every slide. + +### Color Palettes + +Choose colors that match your topic — don't default to generic blue. Use these palettes as inspiration: + +| Theme | Primary | Secondary | Accent | +|-------|---------|-----------|--------| +| **Midnight Executive** | `1E2761` (navy) | `CADCFC` (ice blue) | `FFFFFF` (white) | +| **Forest & Moss** | `2C5F2D` (forest) | `97BC62` (moss) | `F5F5F5` (cream) | +| **Coral Energy** | `F96167` (coral) | `F9E795` (gold) | `2F3C7E` (navy) | +| **Warm Terracotta** | `B85042` (terracotta) | `E7E8D1` (sand) | `A7BEAE` (sage) | +| **Ocean Gradient** | `065A82` (deep blue) | `1C7293` (teal) | `21295C` (midnight) | +| **Charcoal Minimal** | `36454F` (charcoal) | `F2F2F2` (off-white) | `212121` (black) | +| **Teal Trust** | `028090` (teal) | `00A896` (seafoam) | `02C39A` (mint) | +| **Berry & Cream** | `6D2E46` (berry) | `A26769` (dusty rose) | `ECE2D0` (cream) | +| **Sage Calm** | `84B59F` (sage) | `69A297` (eucalyptus) | `50808E` (slate) | +| **Cherry Bold** | `990011` (cherry) | `FCF6F5` (off-white) | `2F3C7E` (navy) | + +### For Each Slide + +**Every slide needs a visual element** — image, chart, icon, or shape. Text-only slides are forgettable. + +**Layout options:** +- Two-column (text left, illustration on right) +- Icon + text rows (icon in colored circle, bold header, description below) +- 2x2 or 2x3 grid (image on one side, grid of content blocks on other) +- Half-bleed image (full left or right side) with content overlay + +**Data display:** +- Large stat callouts (big numbers 60-72pt with small labels below) +- Comparison columns (before/after, pros/cons, side-by-side options) +- Timeline or process flow (numbered steps, arrows) + +**Visual polish:** +- Icons in small colored circles next to section headers +- Italic accent text for key stats or taglines + +### Typography + +**Choose an interesting font pairing** — don't default to Arial. Pick a header font with personality and pair it with a clean body font. + +| Header Font | Body Font | +|-------------|-----------| +| Georgia | Calibri | +| Arial Black | Arial | +| Calibri | Calibri Light | +| Cambria | Calibri | +| Trebuchet MS | Calibri | +| Impact | Arial | +| Palatino | Garamond | +| Consolas | Calibri | + +| Element | Size | +|---------|------| +| Slide title | 36-44pt bold | +| Section header | 20-24pt bold | +| Body text | 14-16pt | +| Captions | 10-12pt muted | + +### Spacing + +- 0.5" minimum margins +- 0.3-0.5" between content blocks +- Leave breathing room—don't fill every inch + +### Avoid (Common Mistakes) + +- **Don't repeat the same layout** — vary columns, cards, and callouts across slides +- **Don't center body text** — left-align paragraphs and lists; center only titles +- **Don't skimp on size contrast** — titles need 36pt+ to stand out from 14-16pt body +- **Don't default to blue** — pick colors that reflect the specific topic +- **Don't mix spacing randomly** — choose 0.3" or 0.5" gaps and use consistently +- **Don't style one slide and leave the rest plain** — commit fully or keep it simple throughout +- **Don't create text-only slides** — add images, icons, charts, or visual elements; avoid plain title + bullets +- **Don't forget text box padding** — when aligning lines or shapes with text edges, set `margin: 0` on the text box or offset the shape to account for padding +- **Don't use low-contrast elements** — icons AND text need strong contrast against the background; avoid light text on light backgrounds or dark text on dark backgrounds +- **NEVER use accent lines under titles** — these are a hallmark of AI-generated slides; use whitespace or background color instead + +--- + +## QA (Required) + +**Assume there are problems. Your job is to find them.** + +Your first render is almost never correct. Approach QA as a bug hunt, not a confirmation step. If you found zero issues on first inspection, you weren't looking hard enough. + +### Content QA + +```bash +python -m markitdown output.pptx +``` + +Check for missing content, typos, wrong order. + +**When using templates, check for leftover placeholder text:** + +```bash +python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout" +``` + +If grep returns results, fix them before declaring success. + +### Visual QA + +**⚠️ USE SUBAGENTS** — even for 2-3 slides. You've been staring at the code and will see what you expect, not what's there. Subagents have fresh eyes. + +Convert slides to images (see [Converting to Images](#converting-to-images)), then use this prompt: + +``` +Visually inspect these slides. Assume there are issues — find them. + +Look for: +- Overlapping elements (text through shapes, lines through words, stacked elements) +- Text overflow or cut off at edges/box boundaries +- Decorative lines positioned for single-line text but title wrapped to two lines +- Source citations or footers colliding with content above +- Elements too close (< 0.3" gaps) or cards/sections nearly touching +- Uneven gaps (large empty area in one place, cramped in another) +- Insufficient margin from slide edges (< 0.5") +- Columns or similar elements not aligned consistently +- Low-contrast text (e.g., light gray text on cream-colored background) +- Low-contrast icons (e.g., dark icons on dark backgrounds without a contrasting circle) +- Text boxes too narrow causing excessive wrapping +- Leftover placeholder content + +For each slide, list issues or areas of concern, even if minor. + +Read and analyze these images: +1. /path/to/slide-01.jpg (Expected: [brief description]) +2. /path/to/slide-02.jpg (Expected: [brief description]) + +Report ALL issues found, including minor ones. +``` + +### Verification Loop + +1. Generate slides → Convert to images → Inspect +2. **List issues found** (if none found, look again more critically) +3. Fix issues +4. **Re-verify affected slides** — one fix often creates another problem +5. Repeat until a full pass reveals no new issues + +**Do not declare success until you've completed at least one fix-and-verify cycle.** + +--- + +## Converting to Images + +Convert presentations to individual slide images for visual inspection: + +```bash +python scripts/office/soffice.py --headless --convert-to pdf output.pptx +pdftoppm -jpeg -r 150 output.pdf slide +``` + +This creates `slide-01.jpg`, `slide-02.jpg`, etc. + +To re-render specific slides after fixes: + +```bash +pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed +``` + +--- + +## Dependencies + +- `pip install "markitdown[pptx]"` - text extraction +- `pip install Pillow` - thumbnail grids +- `npm install -g pptxgenjs` - creating from scratch +- LibreOffice (`soffice`) - PDF conversion (auto-configured for sandboxed environments via `scripts/office/soffice.py`) +- Poppler (`pdftoppm`) - PDF to images diff --git a/skills/pptx/editing.md b/skills/pptx/editing.md new file mode 100644 index 0000000..f873e8a --- /dev/null +++ b/skills/pptx/editing.md @@ -0,0 +1,205 @@ +# Editing Presentations + +## Template-Based Workflow + +When using an existing presentation as a template: + +1. **Analyze existing slides**: + ```bash + python scripts/thumbnail.py template.pptx + python -m markitdown template.pptx + ``` + Review `thumbnails.jpg` to see layouts, and markitdown output to see placeholder text. + +2. **Plan slide mapping**: For each content section, choose a template slide. + + ⚠️ **USE VARIED LAYOUTS** — monotonous presentations are a common failure mode. Don't default to basic title + bullet slides. Actively seek out: + - Multi-column layouts (2-column, 3-column) + - Image + text combinations + - Full-bleed images with text overlay + - Quote or callout slides + - Section dividers + - Stat/number callouts + - Icon grids or icon + text rows + + **Avoid:** Repeating the same text-heavy layout for every slide. + + Match content type to layout style (e.g., key points → bullet slide, team info → multi-column, testimonials → quote slide). + +3. **Unpack**: `python scripts/office/unpack.py template.pptx unpacked/` + +4. **Build presentation** (do this yourself, not with subagents): + - Delete unwanted slides (remove from ``) + - Duplicate slides you want to reuse (`add_slide.py`) + - Reorder slides in `` + - **Complete all structural changes before step 5** + +5. **Edit content**: Update text in each `slide{N}.xml`. + **Use subagents here if available** — slides are separate XML files, so subagents can edit in parallel. + +6. **Clean**: `python scripts/clean.py unpacked/` + +7. **Pack**: `python scripts/office/pack.py unpacked/ output.pptx --original template.pptx` + +--- + +## Scripts + +| Script | Purpose | +|--------|---------| +| `unpack.py` | Extract and pretty-print PPTX | +| `add_slide.py` | Duplicate slide or create from layout | +| `clean.py` | Remove orphaned files | +| `pack.py` | Repack with validation | +| `thumbnail.py` | Create visual grid of slides | + +### unpack.py + +```bash +python scripts/office/unpack.py input.pptx unpacked/ +``` + +Extracts PPTX, pretty-prints XML, escapes smart quotes. + +### add_slide.py + +```bash +python scripts/add_slide.py unpacked/ slide2.xml # Duplicate slide +python scripts/add_slide.py unpacked/ slideLayout2.xml # From layout +``` + +Prints `` to add to `` at desired position. + +### clean.py + +```bash +python scripts/clean.py unpacked/ +``` + +Removes slides not in ``, unreferenced media, orphaned rels. + +### pack.py + +```bash +python scripts/office/pack.py unpacked/ output.pptx --original input.pptx +``` + +Validates, repairs, condenses XML, re-encodes smart quotes. + +### thumbnail.py + +```bash +python scripts/thumbnail.py input.pptx [output_prefix] [--cols N] +``` + +Creates `thumbnails.jpg` with slide filenames as labels. Default 3 columns, max 12 per grid. + +**Use for template analysis only** (choosing layouts). For visual QA, use `soffice` + `pdftoppm` to create full-resolution individual slide images—see SKILL.md. + +--- + +## Slide Operations + +Slide order is in `ppt/presentation.xml` → ``. + +**Reorder**: Rearrange `` elements. + +**Delete**: Remove ``, then run `clean.py`. + +**Add**: Use `add_slide.py`. Never manually copy slide files—the script handles notes references, Content_Types.xml, and relationship IDs that manual copying misses. + +--- + +## Editing Content + +**Subagents:** If available, use them here (after completing step 4). Each slide is a separate XML file, so subagents can edit in parallel. In your prompt to subagents, include: +- The slide file path(s) to edit +- **"Use the Edit tool for all changes"** +- The formatting rules and common pitfalls below + +For each slide: +1. Read the slide's XML +2. Identify ALL placeholder content—text, images, charts, icons, captions +3. Replace each placeholder with final content + +**Use the Edit tool, not sed or Python scripts.** The Edit tool forces specificity about what to replace and where, yielding better reliability. + +### Formatting Rules + +- **Bold all headers, subheadings, and inline labels**: Use `b="1"` on ``. This includes: + - Slide titles + - Section headers within a slide + - Inline labels like (e.g.: "Status:", "Description:") at the start of a line +- **Never use unicode bullets (•)**: Use proper list formatting with `` or `` +- **Bullet consistency**: Let bullets inherit from the layout. Only specify `` or ``. + +--- + +## Common Pitfalls + +### Template Adaptation + +When source content has fewer items than the template: +- **Remove excess elements entirely** (images, shapes, text boxes), don't just clear text +- Check for orphaned visuals after clearing text content +- Run visual QA to catch mismatched counts + +When replacing text with different length content: +- **Shorter replacements**: Usually safe +- **Longer replacements**: May overflow or wrap unexpectedly +- Test with visual QA after text changes +- Consider truncating or splitting content to fit the template's design constraints + +**Template slots ≠ Source items**: If template has 4 team members but source has 3 users, delete the 4th member's entire group (image + text boxes), not just the text. + +### Multi-Item Content + +If source has multiple items (numbered lists, multiple sections), create separate `` elements for each — **never concatenate into one string**. + +**❌ WRONG** — all items in one paragraph: +```xml + + Step 1: Do the first thing. Step 2: Do the second thing. + +``` + +**✅ CORRECT** — separate paragraphs with bold headers: +```xml + + + Step 1 + + + + Do the first thing. + + + + Step 2 + + +``` + +Copy `` from the original paragraph to preserve line spacing. Use `b="1"` on headers. + +### Smart Quotes + +Handled automatically by unpack/pack. But the Edit tool converts smart quotes to ASCII. + +**When adding new text with quotes, use XML entities:** + +```xml +the “Agreement” +``` + +| Character | Name | Unicode | XML Entity | +|-----------|------|---------|------------| +| `“` | Left double quote | U+201C | `“` | +| `”` | Right double quote | U+201D | `”` | +| `‘` | Left single quote | U+2018 | `‘` | +| `’` | Right single quote | U+2019 | `’` | + +### Other + +- **Whitespace**: Use `xml:space="preserve"` on `` with leading/trailing spaces +- **XML parsing**: Use `defusedxml.minidom`, not `xml.etree.ElementTree` (corrupts namespaces) diff --git a/skills/pptx/pptxgenjs.md b/skills/pptx/pptxgenjs.md new file mode 100644 index 0000000..6bfed90 --- /dev/null +++ b/skills/pptx/pptxgenjs.md @@ -0,0 +1,420 @@ +# PptxGenJS Tutorial + +## Setup & Basic Structure + +```javascript +const pptxgen = require("pptxgenjs"); + +let pres = new pptxgen(); +pres.layout = 'LAYOUT_16x9'; // or 'LAYOUT_16x10', 'LAYOUT_4x3', 'LAYOUT_WIDE' +pres.author = 'Your Name'; +pres.title = 'Presentation Title'; + +let slide = pres.addSlide(); +slide.addText("Hello World!", { x: 0.5, y: 0.5, fontSize: 36, color: "363636" }); + +pres.writeFile({ fileName: "Presentation.pptx" }); +``` + +## Layout Dimensions + +Slide dimensions (coordinates in inches): +- `LAYOUT_16x9`: 10" × 5.625" (default) +- `LAYOUT_16x10`: 10" × 6.25" +- `LAYOUT_4x3`: 10" × 7.5" +- `LAYOUT_WIDE`: 13.3" × 7.5" + +--- + +## Text & Formatting + +```javascript +// Basic text +slide.addText("Simple Text", { + x: 1, y: 1, w: 8, h: 2, fontSize: 24, fontFace: "Arial", + color: "363636", bold: true, align: "center", valign: "middle" +}); + +// Character spacing (use charSpacing, not letterSpacing which is silently ignored) +slide.addText("SPACED TEXT", { x: 1, y: 1, w: 8, h: 1, charSpacing: 6 }); + +// Rich text arrays +slide.addText([ + { text: "Bold ", options: { bold: true } }, + { text: "Italic ", options: { italic: true } } +], { x: 1, y: 3, w: 8, h: 1 }); + +// Multi-line text (requires breakLine: true) +slide.addText([ + { text: "Line 1", options: { breakLine: true } }, + { text: "Line 2", options: { breakLine: true } }, + { text: "Line 3" } // Last item doesn't need breakLine +], { x: 0.5, y: 0.5, w: 8, h: 2 }); + +// Text box margin (internal padding) +slide.addText("Title", { + x: 0.5, y: 0.3, w: 9, h: 0.6, + margin: 0 // Use 0 when aligning text with other elements like shapes or icons +}); +``` + +**Tip:** Text boxes have internal margin by default. Set `margin: 0` when you need text to align precisely with shapes, lines, or icons at the same x-position. + +--- + +## Lists & Bullets + +```javascript +// ✅ CORRECT: Multiple bullets +slide.addText([ + { text: "First item", options: { bullet: true, breakLine: true } }, + { text: "Second item", options: { bullet: true, breakLine: true } }, + { text: "Third item", options: { bullet: true } } +], { x: 0.5, y: 0.5, w: 8, h: 3 }); + +// ❌ WRONG: Never use unicode bullets +slide.addText("• First item", { ... }); // Creates double bullets + +// Sub-items and numbered lists +{ text: "Sub-item", options: { bullet: true, indentLevel: 1 } } +{ text: "First", options: { bullet: { type: "number" }, breakLine: true } } +``` + +--- + +## Shapes + +```javascript +slide.addShape(pres.shapes.RECTANGLE, { + x: 0.5, y: 0.8, w: 1.5, h: 3.0, + fill: { color: "FF0000" }, line: { color: "000000", width: 2 } +}); + +slide.addShape(pres.shapes.OVAL, { x: 4, y: 1, w: 2, h: 2, fill: { color: "0000FF" } }); + +slide.addShape(pres.shapes.LINE, { + x: 1, y: 3, w: 5, h: 0, line: { color: "FF0000", width: 3, dashType: "dash" } +}); + +// With transparency +slide.addShape(pres.shapes.RECTANGLE, { + x: 1, y: 1, w: 3, h: 2, + fill: { color: "0088CC", transparency: 50 } +}); + +// Rounded rectangle (rectRadius only works with ROUNDED_RECTANGLE, not RECTANGLE) +// ⚠️ Don't pair with rectangular accent overlays — they won't cover rounded corners. Use RECTANGLE instead. +slide.addShape(pres.shapes.ROUNDED_RECTANGLE, { + x: 1, y: 1, w: 3, h: 2, + fill: { color: "FFFFFF" }, rectRadius: 0.1 +}); + +// With shadow +slide.addShape(pres.shapes.RECTANGLE, { + x: 1, y: 1, w: 3, h: 2, + fill: { color: "FFFFFF" }, + shadow: { type: "outer", color: "000000", blur: 6, offset: 2, angle: 135, opacity: 0.15 } +}); +``` + +Shadow options: + +| Property | Type | Range | Notes | +|----------|------|-------|-------| +| `type` | string | `"outer"`, `"inner"` | | +| `color` | string | 6-char hex (e.g. `"000000"`) | No `#` prefix, no 8-char hex — see Common Pitfalls | +| `blur` | number | 0-100 pt | | +| `offset` | number | 0-200 pt | **Must be non-negative** — negative values corrupt the file | +| `angle` | number | 0-359 degrees | Direction the shadow falls (135 = bottom-right, 270 = upward) | +| `opacity` | number | 0.0-1.0 | Use this for transparency, never encode in color string | + +To cast a shadow upward (e.g. on a footer bar), use `angle: 270` with a positive offset — do **not** use a negative offset. + +**Note**: Gradient fills are not natively supported. Use a gradient image as a background instead. + +--- + +## Images + +### Image Sources + +```javascript +// From file path +slide.addImage({ path: "images/chart.png", x: 1, y: 1, w: 5, h: 3 }); + +// From URL +slide.addImage({ path: "https://example.com/image.jpg", x: 1, y: 1, w: 5, h: 3 }); + +// From base64 (faster, no file I/O) +slide.addImage({ data: "image/png;base64,iVBORw0KGgo...", x: 1, y: 1, w: 5, h: 3 }); +``` + +### Image Options + +```javascript +slide.addImage({ + path: "image.png", + x: 1, y: 1, w: 5, h: 3, + rotate: 45, // 0-359 degrees + rounding: true, // Circular crop + transparency: 50, // 0-100 + flipH: true, // Horizontal flip + flipV: false, // Vertical flip + altText: "Description", // Accessibility + hyperlink: { url: "https://example.com" } +}); +``` + +### Image Sizing Modes + +```javascript +// Contain - fit inside, preserve ratio +{ sizing: { type: 'contain', w: 4, h: 3 } } + +// Cover - fill area, preserve ratio (may crop) +{ sizing: { type: 'cover', w: 4, h: 3 } } + +// Crop - cut specific portion +{ sizing: { type: 'crop', x: 0.5, y: 0.5, w: 2, h: 2 } } +``` + +### Calculate Dimensions (preserve aspect ratio) + +```javascript +const origWidth = 1978, origHeight = 923, maxHeight = 3.0; +const calcWidth = maxHeight * (origWidth / origHeight); +const centerX = (10 - calcWidth) / 2; + +slide.addImage({ path: "image.png", x: centerX, y: 1.2, w: calcWidth, h: maxHeight }); +``` + +### Supported Formats + +- **Standard**: PNG, JPG, GIF (animated GIFs work in Microsoft 365) +- **SVG**: Works in modern PowerPoint/Microsoft 365 + +--- + +## Icons + +Use react-icons to generate SVG icons, then rasterize to PNG for universal compatibility. + +### Setup + +```javascript +const React = require("react"); +const ReactDOMServer = require("react-dom/server"); +const sharp = require("sharp"); +const { FaCheckCircle, FaChartLine } = require("react-icons/fa"); + +function renderIconSvg(IconComponent, color = "#000000", size = 256) { + return ReactDOMServer.renderToStaticMarkup( + React.createElement(IconComponent, { color, size: String(size) }) + ); +} + +async function iconToBase64Png(IconComponent, color, size = 256) { + const svg = renderIconSvg(IconComponent, color, size); + const pngBuffer = await sharp(Buffer.from(svg)).png().toBuffer(); + return "image/png;base64," + pngBuffer.toString("base64"); +} +``` + +### Add Icon to Slide + +```javascript +const iconData = await iconToBase64Png(FaCheckCircle, "#4472C4", 256); + +slide.addImage({ + data: iconData, + x: 1, y: 1, w: 0.5, h: 0.5 // Size in inches +}); +``` + +**Note**: Use size 256 or higher for crisp icons. The size parameter controls the rasterization resolution, not the display size on the slide (which is set by `w` and `h` in inches). + +### Icon Libraries + +Install: `npm install -g react-icons react react-dom sharp` + +Popular icon sets in react-icons: +- `react-icons/fa` - Font Awesome +- `react-icons/md` - Material Design +- `react-icons/hi` - Heroicons +- `react-icons/bi` - Bootstrap Icons + +--- + +## Slide Backgrounds + +```javascript +// Solid color +slide.background = { color: "F1F1F1" }; + +// Color with transparency +slide.background = { color: "FF3399", transparency: 50 }; + +// Image from URL +slide.background = { path: "https://example.com/bg.jpg" }; + +// Image from base64 +slide.background = { data: "image/png;base64,iVBORw0KGgo..." }; +``` + +--- + +## Tables + +```javascript +slide.addTable([ + ["Header 1", "Header 2"], + ["Cell 1", "Cell 2"] +], { + x: 1, y: 1, w: 8, h: 2, + border: { pt: 1, color: "999999" }, fill: { color: "F1F1F1" } +}); + +// Advanced with merged cells +let tableData = [ + [{ text: "Header", options: { fill: { color: "6699CC" }, color: "FFFFFF", bold: true } }, "Cell"], + [{ text: "Merged", options: { colspan: 2 } }] +]; +slide.addTable(tableData, { x: 1, y: 3.5, w: 8, colW: [4, 4] }); +``` + +--- + +## Charts + +```javascript +// Bar chart +slide.addChart(pres.charts.BAR, [{ + name: "Sales", labels: ["Q1", "Q2", "Q3", "Q4"], values: [4500, 5500, 6200, 7100] +}], { + x: 0.5, y: 0.6, w: 6, h: 3, barDir: 'col', + showTitle: true, title: 'Quarterly Sales' +}); + +// Line chart +slide.addChart(pres.charts.LINE, [{ + name: "Temp", labels: ["Jan", "Feb", "Mar"], values: [32, 35, 42] +}], { x: 0.5, y: 4, w: 6, h: 3, lineSize: 3, lineSmooth: true }); + +// Pie chart +slide.addChart(pres.charts.PIE, [{ + name: "Share", labels: ["A", "B", "Other"], values: [35, 45, 20] +}], { x: 7, y: 1, w: 5, h: 4, showPercent: true }); +``` + +### Better-Looking Charts + +Default charts look dated. Apply these options for a modern, clean appearance: + +```javascript +slide.addChart(pres.charts.BAR, chartData, { + x: 0.5, y: 1, w: 9, h: 4, barDir: "col", + + // Custom colors (match your presentation palette) + chartColors: ["0D9488", "14B8A6", "5EEAD4"], + + // Clean background + chartArea: { fill: { color: "FFFFFF" }, roundedCorners: true }, + + // Muted axis labels + catAxisLabelColor: "64748B", + valAxisLabelColor: "64748B", + + // Subtle grid (value axis only) + valGridLine: { color: "E2E8F0", size: 0.5 }, + catGridLine: { style: "none" }, + + // Data labels on bars + showValue: true, + dataLabelPosition: "outEnd", + dataLabelColor: "1E293B", + + // Hide legend for single series + showLegend: false, +}); +``` + +**Key styling options:** +- `chartColors: [...]` - hex colors for series/segments +- `chartArea: { fill, border, roundedCorners }` - chart background +- `catGridLine/valGridLine: { color, style, size }` - grid lines (`style: "none"` to hide) +- `lineSmooth: true` - curved lines (line charts) +- `legendPos: "r"` - legend position: "b", "t", "l", "r", "tr" + +--- + +## Slide Masters + +```javascript +pres.defineSlideMaster({ + title: 'TITLE_SLIDE', background: { color: '283A5E' }, + objects: [{ + placeholder: { options: { name: 'title', type: 'title', x: 1, y: 2, w: 8, h: 2 } } + }] +}); + +let titleSlide = pres.addSlide({ masterName: "TITLE_SLIDE" }); +titleSlide.addText("My Title", { placeholder: "title" }); +``` + +--- + +## Common Pitfalls + +⚠️ These issues cause file corruption, visual bugs, or broken output. Avoid them. + +1. **NEVER use "#" with hex colors** - causes file corruption + ```javascript + color: "FF0000" // ✅ CORRECT + color: "#FF0000" // ❌ WRONG + ``` + +2. **NEVER encode opacity in hex color strings** - 8-char colors (e.g., `"00000020"`) corrupt the file. Use the `opacity` property instead. + ```javascript + shadow: { type: "outer", blur: 6, offset: 2, color: "00000020" } // ❌ CORRUPTS FILE + shadow: { type: "outer", blur: 6, offset: 2, color: "000000", opacity: 0.12 } // ✅ CORRECT + ``` + +3. **Use `bullet: true`** - NEVER unicode symbols like "•" (creates double bullets) + +4. **Use `breakLine: true`** between array items or text runs together + +5. **Avoid `lineSpacing` with bullets** - causes excessive gaps; use `paraSpaceAfter` instead + +6. **Each presentation needs fresh instance** - don't reuse `pptxgen()` objects + +7. **NEVER reuse option objects across calls** - PptxGenJS mutates objects in-place (e.g. converting shadow values to EMU). Sharing one object between multiple calls corrupts the second shape. + ```javascript + const shadow = { type: "outer", blur: 6, offset: 2, color: "000000", opacity: 0.15 }; + slide.addShape(pres.shapes.RECTANGLE, { shadow, ... }); // ❌ second call gets already-converted values + slide.addShape(pres.shapes.RECTANGLE, { shadow, ... }); + + const makeShadow = () => ({ type: "outer", blur: 6, offset: 2, color: "000000", opacity: 0.15 }); + slide.addShape(pres.shapes.RECTANGLE, { shadow: makeShadow(), ... }); // ✅ fresh object each time + slide.addShape(pres.shapes.RECTANGLE, { shadow: makeShadow(), ... }); + ``` + +8. **Don't use `ROUNDED_RECTANGLE` with accent borders** - rectangular overlay bars won't cover rounded corners. Use `RECTANGLE` instead. + ```javascript + // ❌ WRONG: Accent bar doesn't cover rounded corners + slide.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 1, y: 1, w: 3, h: 1.5, fill: { color: "FFFFFF" } }); + slide.addShape(pres.shapes.RECTANGLE, { x: 1, y: 1, w: 0.08, h: 1.5, fill: { color: "0891B2" } }); + + // ✅ CORRECT: Use RECTANGLE for clean alignment + slide.addShape(pres.shapes.RECTANGLE, { x: 1, y: 1, w: 3, h: 1.5, fill: { color: "FFFFFF" } }); + slide.addShape(pres.shapes.RECTANGLE, { x: 1, y: 1, w: 0.08, h: 1.5, fill: { color: "0891B2" } }); + ``` + +--- + +## Quick Reference + +- **Shapes**: RECTANGLE, OVAL, LINE, ROUNDED_RECTANGLE +- **Charts**: BAR, LINE, PIE, DOUGHNUT, SCATTER, BUBBLE, RADAR +- **Layouts**: LAYOUT_16x9 (10"×5.625"), LAYOUT_16x10, LAYOUT_4x3, LAYOUT_WIDE +- **Alignment**: "left", "center", "right" +- **Chart data labels**: "outEnd", "inEnd", "center" diff --git a/skills/pptx/scripts/__init__.py b/skills/pptx/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/skills/pptx/scripts/add_slide.py b/skills/pptx/scripts/add_slide.py new file mode 100755 index 0000000..13700df --- /dev/null +++ b/skills/pptx/scripts/add_slide.py @@ -0,0 +1,195 @@ +"""Add a new slide to an unpacked PPTX directory. + +Usage: python add_slide.py + +The source can be: + - A slide file (e.g., slide2.xml) - duplicates the slide + - A layout file (e.g., slideLayout2.xml) - creates from layout + +Examples: + python add_slide.py unpacked/ slide2.xml + # Duplicates slide2, creates slide5.xml + + python add_slide.py unpacked/ slideLayout2.xml + # Creates slide5.xml from slideLayout2.xml + +To see available layouts: ls unpacked/ppt/slideLayouts/ + +Prints the element to add to presentation.xml. +""" + +import re +import shutil +import sys +from pathlib import Path + + +def get_next_slide_number(slides_dir: Path) -> int: + existing = [int(m.group(1)) for f in slides_dir.glob("slide*.xml") + if (m := re.match(r"slide(\d+)\.xml", f.name))] + return max(existing) + 1 if existing else 1 + + +def create_slide_from_layout(unpacked_dir: Path, layout_file: str) -> None: + slides_dir = unpacked_dir / "ppt" / "slides" + rels_dir = slides_dir / "_rels" + layouts_dir = unpacked_dir / "ppt" / "slideLayouts" + + layout_path = layouts_dir / layout_file + if not layout_path.exists(): + print(f"Error: {layout_path} not found", file=sys.stderr) + sys.exit(1) + + next_num = get_next_slide_number(slides_dir) + dest = f"slide{next_num}.xml" + dest_slide = slides_dir / dest + dest_rels = rels_dir / f"{dest}.rels" + + slide_xml = ''' + + + + + + + + + + + + + + + + + + + + + +''' + dest_slide.write_text(slide_xml, encoding="utf-8") + + rels_dir.mkdir(exist_ok=True) + rels_xml = f''' + + +''' + dest_rels.write_text(rels_xml, encoding="utf-8") + + _add_to_content_types(unpacked_dir, dest) + + rid = _add_to_presentation_rels(unpacked_dir, dest) + + next_slide_id = _get_next_slide_id(unpacked_dir) + + print(f"Created {dest} from {layout_file}") + print(f'Add to presentation.xml : ') + + +def duplicate_slide(unpacked_dir: Path, source: str) -> None: + slides_dir = unpacked_dir / "ppt" / "slides" + rels_dir = slides_dir / "_rels" + + source_slide = slides_dir / source + + if not source_slide.exists(): + print(f"Error: {source_slide} not found", file=sys.stderr) + sys.exit(1) + + next_num = get_next_slide_number(slides_dir) + dest = f"slide{next_num}.xml" + dest_slide = slides_dir / dest + + source_rels = rels_dir / f"{source}.rels" + dest_rels = rels_dir / f"{dest}.rels" + + shutil.copy2(source_slide, dest_slide) + + if source_rels.exists(): + shutil.copy2(source_rels, dest_rels) + + rels_content = dest_rels.read_text(encoding="utf-8") + rels_content = re.sub( + r'\s*]*Type="[^"]*notesSlide"[^>]*/>\s*', + "\n", + rels_content, + ) + dest_rels.write_text(rels_content, encoding="utf-8") + + _add_to_content_types(unpacked_dir, dest) + + rid = _add_to_presentation_rels(unpacked_dir, dest) + + next_slide_id = _get_next_slide_id(unpacked_dir) + + print(f"Created {dest} from {source}") + print(f'Add to presentation.xml : ') + + +def _add_to_content_types(unpacked_dir: Path, dest: str) -> None: + content_types_path = unpacked_dir / "[Content_Types].xml" + content_types = content_types_path.read_text(encoding="utf-8") + + new_override = f'' + + if f"/ppt/slides/{dest}" not in content_types: + content_types = content_types.replace("", f" {new_override}\n") + content_types_path.write_text(content_types, encoding="utf-8") + + +def _add_to_presentation_rels(unpacked_dir: Path, dest: str) -> str: + pres_rels_path = unpacked_dir / "ppt" / "_rels" / "presentation.xml.rels" + pres_rels = pres_rels_path.read_text(encoding="utf-8") + + rids = [int(m) for m in re.findall(r'Id="rId(\d+)"', pres_rels)] + next_rid = max(rids) + 1 if rids else 1 + rid = f"rId{next_rid}" + + new_rel = f'' + + if f"slides/{dest}" not in pres_rels: + pres_rels = pres_rels.replace("", f" {new_rel}\n") + pres_rels_path.write_text(pres_rels, encoding="utf-8") + + return rid + + +def _get_next_slide_id(unpacked_dir: Path) -> int: + pres_path = unpacked_dir / "ppt" / "presentation.xml" + pres_content = pres_path.read_text(encoding="utf-8") + slide_ids = [int(m) for m in re.findall(r']*id="(\d+)"', pres_content)] + return max(slide_ids) + 1 if slide_ids else 256 + + +def parse_source(source: str) -> tuple[str, str | None]: + if source.startswith("slideLayout") and source.endswith(".xml"): + return ("layout", source) + + return ("slide", None) + + +if __name__ == "__main__": + if len(sys.argv) != 3: + print("Usage: python add_slide.py ", file=sys.stderr) + print("", file=sys.stderr) + print("Source can be:", file=sys.stderr) + print(" slide2.xml - duplicate an existing slide", file=sys.stderr) + print(" slideLayout2.xml - create from a layout template", file=sys.stderr) + print("", file=sys.stderr) + print("To see available layouts: ls /ppt/slideLayouts/", file=sys.stderr) + sys.exit(1) + + unpacked_dir = Path(sys.argv[1]) + source = sys.argv[2] + + if not unpacked_dir.exists(): + print(f"Error: {unpacked_dir} not found", file=sys.stderr) + sys.exit(1) + + source_type, layout_file = parse_source(source) + + if source_type == "layout" and layout_file is not None: + create_slide_from_layout(unpacked_dir, layout_file) + else: + duplicate_slide(unpacked_dir, source) diff --git a/skills/pptx/scripts/clean.py b/skills/pptx/scripts/clean.py new file mode 100755 index 0000000..3d13994 --- /dev/null +++ b/skills/pptx/scripts/clean.py @@ -0,0 +1,286 @@ +"""Remove unreferenced files from an unpacked PPTX directory. + +Usage: python clean.py + +Example: + python clean.py unpacked/ + +This script removes: +- Orphaned slides (not in sldIdLst) and their relationships +- [trash] directory (unreferenced files) +- Orphaned .rels files for deleted resources +- Unreferenced media, embeddings, charts, diagrams, drawings, ink files +- Unreferenced theme files +- Unreferenced notes slides +- Content-Type overrides for deleted files +""" + +import sys +from pathlib import Path + +import defusedxml.minidom + + +import re + + +def get_slides_in_sldidlst(unpacked_dir: Path) -> set[str]: + pres_path = unpacked_dir / "ppt" / "presentation.xml" + pres_rels_path = unpacked_dir / "ppt" / "_rels" / "presentation.xml.rels" + + if not pres_path.exists() or not pres_rels_path.exists(): + return set() + + rels_dom = defusedxml.minidom.parse(str(pres_rels_path)) + rid_to_slide = {} + for rel in rels_dom.getElementsByTagName("Relationship"): + rid = rel.getAttribute("Id") + target = rel.getAttribute("Target") + rel_type = rel.getAttribute("Type") + if "slide" in rel_type and target.startswith("slides/"): + rid_to_slide[rid] = target.replace("slides/", "") + + pres_content = pres_path.read_text(encoding="utf-8") + referenced_rids = set(re.findall(r']*r:id="([^"]+)"', pres_content)) + + return {rid_to_slide[rid] for rid in referenced_rids if rid in rid_to_slide} + + +def remove_orphaned_slides(unpacked_dir: Path) -> list[str]: + slides_dir = unpacked_dir / "ppt" / "slides" + slides_rels_dir = slides_dir / "_rels" + pres_rels_path = unpacked_dir / "ppt" / "_rels" / "presentation.xml.rels" + + if not slides_dir.exists(): + return [] + + referenced_slides = get_slides_in_sldidlst(unpacked_dir) + removed = [] + + for slide_file in slides_dir.glob("slide*.xml"): + if slide_file.name not in referenced_slides: + rel_path = slide_file.relative_to(unpacked_dir) + slide_file.unlink() + removed.append(str(rel_path)) + + rels_file = slides_rels_dir / f"{slide_file.name}.rels" + if rels_file.exists(): + rels_file.unlink() + removed.append(str(rels_file.relative_to(unpacked_dir))) + + if removed and pres_rels_path.exists(): + rels_dom = defusedxml.minidom.parse(str(pres_rels_path)) + changed = False + + for rel in list(rels_dom.getElementsByTagName("Relationship")): + target = rel.getAttribute("Target") + if target.startswith("slides/"): + slide_name = target.replace("slides/", "") + if slide_name not in referenced_slides: + if rel.parentNode: + rel.parentNode.removeChild(rel) + changed = True + + if changed: + with open(pres_rels_path, "wb") as f: + f.write(rels_dom.toxml(encoding="utf-8")) + + return removed + + +def remove_trash_directory(unpacked_dir: Path) -> list[str]: + trash_dir = unpacked_dir / "[trash]" + removed = [] + + if trash_dir.exists() and trash_dir.is_dir(): + for file_path in trash_dir.iterdir(): + if file_path.is_file(): + rel_path = file_path.relative_to(unpacked_dir) + removed.append(str(rel_path)) + file_path.unlink() + trash_dir.rmdir() + + return removed + + +def get_slide_referenced_files(unpacked_dir: Path) -> set: + referenced = set() + slides_rels_dir = unpacked_dir / "ppt" / "slides" / "_rels" + + if not slides_rels_dir.exists(): + return referenced + + for rels_file in slides_rels_dir.glob("*.rels"): + dom = defusedxml.minidom.parse(str(rels_file)) + for rel in dom.getElementsByTagName("Relationship"): + target = rel.getAttribute("Target") + if not target: + continue + target_path = (rels_file.parent.parent / target).resolve() + try: + referenced.add(target_path.relative_to(unpacked_dir.resolve())) + except ValueError: + pass + + return referenced + + +def remove_orphaned_rels_files(unpacked_dir: Path) -> list[str]: + resource_dirs = ["charts", "diagrams", "drawings"] + removed = [] + slide_referenced = get_slide_referenced_files(unpacked_dir) + + for dir_name in resource_dirs: + rels_dir = unpacked_dir / "ppt" / dir_name / "_rels" + if not rels_dir.exists(): + continue + + for rels_file in rels_dir.glob("*.rels"): + resource_file = rels_dir.parent / rels_file.name.replace(".rels", "") + try: + resource_rel_path = resource_file.resolve().relative_to(unpacked_dir.resolve()) + except ValueError: + continue + + if not resource_file.exists() or resource_rel_path not in slide_referenced: + rels_file.unlink() + rel_path = rels_file.relative_to(unpacked_dir) + removed.append(str(rel_path)) + + return removed + + +def get_referenced_files(unpacked_dir: Path) -> set: + referenced = set() + + for rels_file in unpacked_dir.rglob("*.rels"): + dom = defusedxml.minidom.parse(str(rels_file)) + for rel in dom.getElementsByTagName("Relationship"): + target = rel.getAttribute("Target") + if not target: + continue + target_path = (rels_file.parent.parent / target).resolve() + try: + referenced.add(target_path.relative_to(unpacked_dir.resolve())) + except ValueError: + pass + + return referenced + + +def remove_orphaned_files(unpacked_dir: Path, referenced: set) -> list[str]: + resource_dirs = ["media", "embeddings", "charts", "diagrams", "tags", "drawings", "ink"] + removed = [] + + for dir_name in resource_dirs: + dir_path = unpacked_dir / "ppt" / dir_name + if not dir_path.exists(): + continue + + for file_path in dir_path.glob("*"): + if not file_path.is_file(): + continue + rel_path = file_path.relative_to(unpacked_dir) + if rel_path not in referenced: + file_path.unlink() + removed.append(str(rel_path)) + + theme_dir = unpacked_dir / "ppt" / "theme" + if theme_dir.exists(): + for file_path in theme_dir.glob("theme*.xml"): + rel_path = file_path.relative_to(unpacked_dir) + if rel_path not in referenced: + file_path.unlink() + removed.append(str(rel_path)) + theme_rels = theme_dir / "_rels" / f"{file_path.name}.rels" + if theme_rels.exists(): + theme_rels.unlink() + removed.append(str(theme_rels.relative_to(unpacked_dir))) + + notes_dir = unpacked_dir / "ppt" / "notesSlides" + if notes_dir.exists(): + for file_path in notes_dir.glob("*.xml"): + if not file_path.is_file(): + continue + rel_path = file_path.relative_to(unpacked_dir) + if rel_path not in referenced: + file_path.unlink() + removed.append(str(rel_path)) + + notes_rels_dir = notes_dir / "_rels" + if notes_rels_dir.exists(): + for file_path in notes_rels_dir.glob("*.rels"): + notes_file = notes_dir / file_path.name.replace(".rels", "") + if not notes_file.exists(): + file_path.unlink() + removed.append(str(file_path.relative_to(unpacked_dir))) + + return removed + + +def update_content_types(unpacked_dir: Path, removed_files: list[str]) -> None: + ct_path = unpacked_dir / "[Content_Types].xml" + if not ct_path.exists(): + return + + dom = defusedxml.minidom.parse(str(ct_path)) + changed = False + + for override in list(dom.getElementsByTagName("Override")): + part_name = override.getAttribute("PartName").lstrip("/") + if part_name in removed_files: + if override.parentNode: + override.parentNode.removeChild(override) + changed = True + + if changed: + with open(ct_path, "wb") as f: + f.write(dom.toxml(encoding="utf-8")) + + +def clean_unused_files(unpacked_dir: Path) -> list[str]: + all_removed = [] + + slides_removed = remove_orphaned_slides(unpacked_dir) + all_removed.extend(slides_removed) + + trash_removed = remove_trash_directory(unpacked_dir) + all_removed.extend(trash_removed) + + while True: + removed_rels = remove_orphaned_rels_files(unpacked_dir) + referenced = get_referenced_files(unpacked_dir) + removed_files = remove_orphaned_files(unpacked_dir, referenced) + + total_removed = removed_rels + removed_files + if not total_removed: + break + + all_removed.extend(total_removed) + + if all_removed: + update_content_types(unpacked_dir, all_removed) + + return all_removed + + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: python clean.py ", file=sys.stderr) + print("Example: python clean.py unpacked/", file=sys.stderr) + sys.exit(1) + + unpacked_dir = Path(sys.argv[1]) + + if not unpacked_dir.exists(): + print(f"Error: {unpacked_dir} not found", file=sys.stderr) + sys.exit(1) + + removed = clean_unused_files(unpacked_dir) + + if removed: + print(f"Removed {len(removed)} unreferenced files:") + for f in removed: + print(f" {f}") + else: + print("No unreferenced files found") diff --git a/skills/pptx/scripts/office/helpers/__init__.py b/skills/pptx/scripts/office/helpers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/skills/pptx/scripts/office/helpers/merge_runs.py b/skills/pptx/scripts/office/helpers/merge_runs.py new file mode 100644 index 0000000..ad7c25e --- /dev/null +++ b/skills/pptx/scripts/office/helpers/merge_runs.py @@ -0,0 +1,199 @@ +"""Merge adjacent runs with identical formatting in DOCX. + +Merges adjacent elements that have identical properties. +Works on runs in paragraphs and inside tracked changes (, ). + +Also: +- Removes rsid attributes from runs (revision metadata that doesn't affect rendering) +- Removes proofErr elements (spell/grammar markers that block merging) +""" + +from pathlib import Path + +import defusedxml.minidom + + +def merge_runs(input_dir: str) -> tuple[int, str]: + doc_xml = Path(input_dir) / "word" / "document.xml" + + if not doc_xml.exists(): + return 0, f"Error: {doc_xml} not found" + + try: + dom = defusedxml.minidom.parseString(doc_xml.read_text(encoding="utf-8")) + root = dom.documentElement + + _remove_elements(root, "proofErr") + _strip_run_rsid_attrs(root) + + containers = {run.parentNode for run in _find_elements(root, "r")} + + merge_count = 0 + for container in containers: + merge_count += _merge_runs_in(container) + + doc_xml.write_bytes(dom.toxml(encoding="UTF-8")) + return merge_count, f"Merged {merge_count} runs" + + except Exception as e: + return 0, f"Error: {e}" + + + + +def _find_elements(root, tag: str) -> list: + results = [] + + def traverse(node): + if node.nodeType == node.ELEMENT_NODE: + name = node.localName or node.tagName + if name == tag or name.endswith(f":{tag}"): + results.append(node) + for child in node.childNodes: + traverse(child) + + traverse(root) + return results + + +def _get_child(parent, tag: str): + for child in parent.childNodes: + if child.nodeType == child.ELEMENT_NODE: + name = child.localName or child.tagName + if name == tag or name.endswith(f":{tag}"): + return child + return None + + +def _get_children(parent, tag: str) -> list: + results = [] + for child in parent.childNodes: + if child.nodeType == child.ELEMENT_NODE: + name = child.localName or child.tagName + if name == tag or name.endswith(f":{tag}"): + results.append(child) + return results + + +def _is_adjacent(elem1, elem2) -> bool: + node = elem1.nextSibling + while node: + if node == elem2: + return True + if node.nodeType == node.ELEMENT_NODE: + return False + if node.nodeType == node.TEXT_NODE and node.data.strip(): + return False + node = node.nextSibling + return False + + + + +def _remove_elements(root, tag: str): + for elem in _find_elements(root, tag): + if elem.parentNode: + elem.parentNode.removeChild(elem) + + +def _strip_run_rsid_attrs(root): + for run in _find_elements(root, "r"): + for attr in list(run.attributes.values()): + if "rsid" in attr.name.lower(): + run.removeAttribute(attr.name) + + + + +def _merge_runs_in(container) -> int: + merge_count = 0 + run = _first_child_run(container) + + while run: + while True: + next_elem = _next_element_sibling(run) + if next_elem and _is_run(next_elem) and _can_merge(run, next_elem): + _merge_run_content(run, next_elem) + container.removeChild(next_elem) + merge_count += 1 + else: + break + + _consolidate_text(run) + run = _next_sibling_run(run) + + return merge_count + + +def _first_child_run(container): + for child in container.childNodes: + if child.nodeType == child.ELEMENT_NODE and _is_run(child): + return child + return None + + +def _next_element_sibling(node): + sibling = node.nextSibling + while sibling: + if sibling.nodeType == sibling.ELEMENT_NODE: + return sibling + sibling = sibling.nextSibling + return None + + +def _next_sibling_run(node): + sibling = node.nextSibling + while sibling: + if sibling.nodeType == sibling.ELEMENT_NODE: + if _is_run(sibling): + return sibling + sibling = sibling.nextSibling + return None + + +def _is_run(node) -> bool: + name = node.localName or node.tagName + return name == "r" or name.endswith(":r") + + +def _can_merge(run1, run2) -> bool: + rpr1 = _get_child(run1, "rPr") + rpr2 = _get_child(run2, "rPr") + + if (rpr1 is None) != (rpr2 is None): + return False + if rpr1 is None: + return True + return rpr1.toxml() == rpr2.toxml() + + +def _merge_run_content(target, source): + for child in list(source.childNodes): + if child.nodeType == child.ELEMENT_NODE: + name = child.localName or child.tagName + if name != "rPr" and not name.endswith(":rPr"): + target.appendChild(child) + + +def _consolidate_text(run): + t_elements = _get_children(run, "t") + + for i in range(len(t_elements) - 1, 0, -1): + curr, prev = t_elements[i], t_elements[i - 1] + + if _is_adjacent(prev, curr): + prev_text = prev.firstChild.data if prev.firstChild else "" + curr_text = curr.firstChild.data if curr.firstChild else "" + merged = prev_text + curr_text + + if prev.firstChild: + prev.firstChild.data = merged + else: + prev.appendChild(run.ownerDocument.createTextNode(merged)) + + if merged.startswith(" ") or merged.endswith(" "): + prev.setAttribute("xml:space", "preserve") + elif prev.hasAttribute("xml:space"): + prev.removeAttribute("xml:space") + + run.removeChild(curr) diff --git a/skills/pptx/scripts/office/helpers/simplify_redlines.py b/skills/pptx/scripts/office/helpers/simplify_redlines.py new file mode 100644 index 0000000..db963bb --- /dev/null +++ b/skills/pptx/scripts/office/helpers/simplify_redlines.py @@ -0,0 +1,197 @@ +"""Simplify tracked changes by merging adjacent w:ins or w:del elements. + +Merges adjacent elements from the same author into a single element. +Same for elements. This makes heavily-redlined documents easier to +work with by reducing the number of tracked change wrappers. + +Rules: +- Only merges w:ins with w:ins, w:del with w:del (same element type) +- Only merges if same author (ignores timestamp differences) +- Only merges if truly adjacent (only whitespace between them) +""" + +import xml.etree.ElementTree as ET +import zipfile +from pathlib import Path + +import defusedxml.minidom + +WORD_NS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + + +def simplify_redlines(input_dir: str) -> tuple[int, str]: + doc_xml = Path(input_dir) / "word" / "document.xml" + + if not doc_xml.exists(): + return 0, f"Error: {doc_xml} not found" + + try: + dom = defusedxml.minidom.parseString(doc_xml.read_text(encoding="utf-8")) + root = dom.documentElement + + merge_count = 0 + + containers = _find_elements(root, "p") + _find_elements(root, "tc") + + for container in containers: + merge_count += _merge_tracked_changes_in(container, "ins") + merge_count += _merge_tracked_changes_in(container, "del") + + doc_xml.write_bytes(dom.toxml(encoding="UTF-8")) + return merge_count, f"Simplified {merge_count} tracked changes" + + except Exception as e: + return 0, f"Error: {e}" + + +def _merge_tracked_changes_in(container, tag: str) -> int: + merge_count = 0 + + tracked = [ + child + for child in container.childNodes + if child.nodeType == child.ELEMENT_NODE and _is_element(child, tag) + ] + + if len(tracked) < 2: + return 0 + + i = 0 + while i < len(tracked) - 1: + curr = tracked[i] + next_elem = tracked[i + 1] + + if _can_merge_tracked(curr, next_elem): + _merge_tracked_content(curr, next_elem) + container.removeChild(next_elem) + tracked.pop(i + 1) + merge_count += 1 + else: + i += 1 + + return merge_count + + +def _is_element(node, tag: str) -> bool: + name = node.localName or node.tagName + return name == tag or name.endswith(f":{tag}") + + +def _get_author(elem) -> str: + author = elem.getAttribute("w:author") + if not author: + for attr in elem.attributes.values(): + if attr.localName == "author" or attr.name.endswith(":author"): + return attr.value + return author + + +def _can_merge_tracked(elem1, elem2) -> bool: + if _get_author(elem1) != _get_author(elem2): + return False + + node = elem1.nextSibling + while node and node != elem2: + if node.nodeType == node.ELEMENT_NODE: + return False + if node.nodeType == node.TEXT_NODE and node.data.strip(): + return False + node = node.nextSibling + + return True + + +def _merge_tracked_content(target, source): + while source.firstChild: + child = source.firstChild + source.removeChild(child) + target.appendChild(child) + + +def _find_elements(root, tag: str) -> list: + results = [] + + def traverse(node): + if node.nodeType == node.ELEMENT_NODE: + name = node.localName or node.tagName + if name == tag or name.endswith(f":{tag}"): + results.append(node) + for child in node.childNodes: + traverse(child) + + traverse(root) + return results + + +def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]: + if not doc_xml_path.exists(): + return {} + + try: + tree = ET.parse(doc_xml_path) + root = tree.getroot() + except ET.ParseError: + return {} + + namespaces = {"w": WORD_NS} + author_attr = f"{{{WORD_NS}}}author" + + authors: dict[str, int] = {} + for tag in ["ins", "del"]: + for elem in root.findall(f".//w:{tag}", namespaces): + author = elem.get(author_attr) + if author: + authors[author] = authors.get(author, 0) + 1 + + return authors + + +def _get_authors_from_docx(docx_path: Path) -> dict[str, int]: + try: + with zipfile.ZipFile(docx_path, "r") as zf: + if "word/document.xml" not in zf.namelist(): + return {} + with zf.open("word/document.xml") as f: + tree = ET.parse(f) + root = tree.getroot() + + namespaces = {"w": WORD_NS} + author_attr = f"{{{WORD_NS}}}author" + + authors: dict[str, int] = {} + for tag in ["ins", "del"]: + for elem in root.findall(f".//w:{tag}", namespaces): + author = elem.get(author_attr) + if author: + authors[author] = authors.get(author, 0) + 1 + return authors + except (zipfile.BadZipFile, ET.ParseError): + return {} + + +def infer_author(modified_dir: Path, original_docx: Path, default: str = "Claude") -> str: + modified_xml = modified_dir / "word" / "document.xml" + modified_authors = get_tracked_change_authors(modified_xml) + + if not modified_authors: + return default + + original_authors = _get_authors_from_docx(original_docx) + + new_changes: dict[str, int] = {} + for author, count in modified_authors.items(): + original_count = original_authors.get(author, 0) + diff = count - original_count + if diff > 0: + new_changes[author] = diff + + if not new_changes: + return default + + if len(new_changes) == 1: + return next(iter(new_changes)) + + raise ValueError( + f"Multiple authors added new changes: {new_changes}. " + "Cannot infer which author to validate." + ) diff --git a/skills/pptx/scripts/office/pack.py b/skills/pptx/scripts/office/pack.py new file mode 100755 index 0000000..db29ed8 --- /dev/null +++ b/skills/pptx/scripts/office/pack.py @@ -0,0 +1,159 @@ +"""Pack a directory into a DOCX, PPTX, or XLSX file. + +Validates with auto-repair, condenses XML formatting, and creates the Office file. + +Usage: + python pack.py [--original ] [--validate true|false] + +Examples: + python pack.py unpacked/ output.docx --original input.docx + python pack.py unpacked/ output.pptx --validate false +""" + +import argparse +import sys +import shutil +import tempfile +import zipfile +from pathlib import Path + +import defusedxml.minidom + +from validators import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator + +def pack( + input_directory: str, + output_file: str, + original_file: str | None = None, + validate: bool = True, + infer_author_func=None, +) -> tuple[None, str]: + input_dir = Path(input_directory) + output_path = Path(output_file) + suffix = output_path.suffix.lower() + + if not input_dir.is_dir(): + return None, f"Error: {input_dir} is not a directory" + + if suffix not in {".docx", ".pptx", ".xlsx"}: + return None, f"Error: {output_file} must be a .docx, .pptx, or .xlsx file" + + if validate and original_file: + original_path = Path(original_file) + if original_path.exists(): + success, output = _run_validation( + input_dir, original_path, suffix, infer_author_func + ) + if output: + print(output) + if not success: + return None, f"Error: Validation failed for {input_dir}" + + with tempfile.TemporaryDirectory() as temp_dir: + temp_content_dir = Path(temp_dir) / "content" + shutil.copytree(input_dir, temp_content_dir) + + for pattern in ["*.xml", "*.rels"]: + for xml_file in temp_content_dir.rglob(pattern): + _condense_xml(xml_file) + + output_path.parent.mkdir(parents=True, exist_ok=True) + with zipfile.ZipFile(output_path, "w", zipfile.ZIP_DEFLATED) as zf: + for f in temp_content_dir.rglob("*"): + if f.is_file(): + zf.write(f, f.relative_to(temp_content_dir)) + + return None, f"Successfully packed {input_dir} to {output_file}" + + +def _run_validation( + unpacked_dir: Path, + original_file: Path, + suffix: str, + infer_author_func=None, +) -> tuple[bool, str | None]: + output_lines = [] + validators = [] + + if suffix == ".docx": + author = "Claude" + if infer_author_func: + try: + author = infer_author_func(unpacked_dir, original_file) + except ValueError as e: + print(f"Warning: {e} Using default author 'Claude'.", file=sys.stderr) + + validators = [ + DOCXSchemaValidator(unpacked_dir, original_file), + RedliningValidator(unpacked_dir, original_file, author=author), + ] + elif suffix == ".pptx": + validators = [PPTXSchemaValidator(unpacked_dir, original_file)] + + if not validators: + return True, None + + total_repairs = sum(v.repair() for v in validators) + if total_repairs: + output_lines.append(f"Auto-repaired {total_repairs} issue(s)") + + success = all(v.validate() for v in validators) + + if success: + output_lines.append("All validations PASSED!") + + return success, "\n".join(output_lines) if output_lines else None + + +def _condense_xml(xml_file: Path) -> None: + try: + with open(xml_file, encoding="utf-8") as f: + dom = defusedxml.minidom.parse(f) + + for element in dom.getElementsByTagName("*"): + if element.tagName.endswith(":t"): + continue + + for child in list(element.childNodes): + if ( + child.nodeType == child.TEXT_NODE + and child.nodeValue + and child.nodeValue.strip() == "" + ) or child.nodeType == child.COMMENT_NODE: + element.removeChild(child) + + xml_file.write_bytes(dom.toxml(encoding="UTF-8")) + except Exception as e: + print(f"ERROR: Failed to parse {xml_file.name}: {e}", file=sys.stderr) + raise + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Pack a directory into a DOCX, PPTX, or XLSX file" + ) + parser.add_argument("input_directory", help="Unpacked Office document directory") + parser.add_argument("output_file", help="Output Office file (.docx/.pptx/.xlsx)") + parser.add_argument( + "--original", + help="Original file for validation comparison", + ) + parser.add_argument( + "--validate", + type=lambda x: x.lower() == "true", + default=True, + metavar="true|false", + help="Run validation with auto-repair (default: true)", + ) + args = parser.parse_args() + + _, message = pack( + args.input_directory, + args.output_file, + original_file=args.original, + validate=args.validate, + ) + print(message) + + if "Error" in message: + sys.exit(1) diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd new file mode 100644 index 0000000..6454ef9 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd @@ -0,0 +1,1499 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd new file mode 100644 index 0000000..afa4f46 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd new file mode 100644 index 0000000..64e66b8 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd @@ -0,0 +1,1085 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd new file mode 100644 index 0000000..687eea8 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd @@ -0,0 +1,11 @@ + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd new file mode 100644 index 0000000..6ac81b0 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd @@ -0,0 +1,3081 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd new file mode 100644 index 0000000..1dbf051 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..f1af17d --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..0a185ab --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd new file mode 100644 index 0000000..14ef488 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd @@ -0,0 +1,1676 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd new file mode 100644 index 0000000..c20f3bf --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd new file mode 100644 index 0000000..ac60252 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd new file mode 100644 index 0000000..424b8ba --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd new file mode 100644 index 0000000..2bddce2 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd new file mode 100644 index 0000000..8a8c18b --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd new file mode 100644 index 0000000..5c42706 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd new file mode 100644 index 0000000..853c341 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd new file mode 100644 index 0000000..da835ee --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd new file mode 100644 index 0000000..87ad265 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd @@ -0,0 +1,582 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd new file mode 100644 index 0000000..9e86f1b --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd new file mode 100644 index 0000000..d0be42e --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd @@ -0,0 +1,4439 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd new file mode 100644 index 0000000..8821dd1 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd @@ -0,0 +1,570 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd new file mode 100644 index 0000000..ca2575c --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd @@ -0,0 +1,509 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd new file mode 100644 index 0000000..dd079e6 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..3dd6cf6 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..f1041e3 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd new file mode 100644 index 0000000..9c5b7a6 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd @@ -0,0 +1,3646 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd new file mode 100644 index 0000000..0f13678 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd @@ -0,0 +1,116 @@ + + + + + + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + + + + + This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang or xml:space attributes + on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes + + + + In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2001/03/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself. In other words, if the XML Schema namespace changes, the version + of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2001/03/xml.xsd will not change. + + + + + + In due course, we should install the relevant ISO 2- and 3-letter + codes as the enumerated possible values . . . + + + + + + + + + + + + + + + See http://www.w3.org/TR/xmlbase/ for + information about this attribute. + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd b/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd new file mode 100644 index 0000000..a6de9d2 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd b/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd new file mode 100644 index 0000000..10e978b --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd b/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd new file mode 100644 index 0000000..4248bf7 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd b/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd new file mode 100644 index 0000000..5649746 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/mce/mc.xsd b/skills/pptx/scripts/office/schemas/mce/mc.xsd new file mode 100644 index 0000000..ef72545 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/mce/mc.xsd @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd b/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd new file mode 100644 index 0000000..f65f777 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd @@ -0,0 +1,560 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd b/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd new file mode 100644 index 0000000..6b00755 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd b/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd new file mode 100644 index 0000000..f321d33 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd b/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd new file mode 100644 index 0000000..364c6a9 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd b/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd new file mode 100644 index 0000000..fed9d15 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd b/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd new file mode 100644 index 0000000..680cf15 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd @@ -0,0 +1,4 @@ + + + + diff --git a/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd b/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd new file mode 100644 index 0000000..89ada90 --- /dev/null +++ b/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/skills/pptx/scripts/office/soffice.py b/skills/pptx/scripts/office/soffice.py new file mode 100644 index 0000000..c7f7e32 --- /dev/null +++ b/skills/pptx/scripts/office/soffice.py @@ -0,0 +1,183 @@ +""" +Helper for running LibreOffice (soffice) in environments where AF_UNIX +sockets may be blocked (e.g., sandboxed VMs). Detects the restriction +at runtime and applies an LD_PRELOAD shim if needed. + +Usage: + from office.soffice import run_soffice, get_soffice_env + + # Option 1 – run soffice directly + result = run_soffice(["--headless", "--convert-to", "pdf", "input.docx"]) + + # Option 2 – get env dict for your own subprocess calls + env = get_soffice_env() + subprocess.run(["soffice", ...], env=env) +""" + +import os +import socket +import subprocess +import tempfile +from pathlib import Path + + +def get_soffice_env() -> dict: + env = os.environ.copy() + env["SAL_USE_VCLPLUGIN"] = "svp" + + if _needs_shim(): + shim = _ensure_shim() + env["LD_PRELOAD"] = str(shim) + + return env + + +def run_soffice(args: list[str], **kwargs) -> subprocess.CompletedProcess: + env = get_soffice_env() + return subprocess.run(["soffice"] + args, env=env, **kwargs) + + + +_SHIM_SO = Path(tempfile.gettempdir()) / "lo_socket_shim.so" + + +def _needs_shim() -> bool: + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.close() + return False + except OSError: + return True + + +def _ensure_shim() -> Path: + if _SHIM_SO.exists(): + return _SHIM_SO + + src = Path(tempfile.gettempdir()) / "lo_socket_shim.c" + src.write_text(_SHIM_SOURCE) + subprocess.run( + ["gcc", "-shared", "-fPIC", "-o", str(_SHIM_SO), str(src), "-ldl"], + check=True, + capture_output=True, + ) + src.unlink() + return _SHIM_SO + + + +_SHIM_SOURCE = r""" +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include + +static int (*real_socket)(int, int, int); +static int (*real_socketpair)(int, int, int, int[2]); +static int (*real_listen)(int, int); +static int (*real_accept)(int, struct sockaddr *, socklen_t *); +static int (*real_close)(int); +static int (*real_read)(int, void *, size_t); + +/* Per-FD bookkeeping (FDs >= 1024 are passed through unshimmed). */ +static int is_shimmed[1024]; +static int peer_of[1024]; +static int wake_r[1024]; /* accept() blocks reading this */ +static int wake_w[1024]; /* close() writes to this */ +static int listener_fd = -1; /* FD that received listen() */ + +__attribute__((constructor)) +static void init(void) { + real_socket = dlsym(RTLD_NEXT, "socket"); + real_socketpair = dlsym(RTLD_NEXT, "socketpair"); + real_listen = dlsym(RTLD_NEXT, "listen"); + real_accept = dlsym(RTLD_NEXT, "accept"); + real_close = dlsym(RTLD_NEXT, "close"); + real_read = dlsym(RTLD_NEXT, "read"); + for (int i = 0; i < 1024; i++) { + peer_of[i] = -1; + wake_r[i] = -1; + wake_w[i] = -1; + } +} + +/* ---- socket ---------------------------------------------------------- */ +int socket(int domain, int type, int protocol) { + if (domain == AF_UNIX) { + int fd = real_socket(domain, type, protocol); + if (fd >= 0) return fd; + /* socket(AF_UNIX) blocked – fall back to socketpair(). */ + int sv[2]; + if (real_socketpair(domain, type, protocol, sv) == 0) { + if (sv[0] >= 0 && sv[0] < 1024) { + is_shimmed[sv[0]] = 1; + peer_of[sv[0]] = sv[1]; + int wp[2]; + if (pipe(wp) == 0) { + wake_r[sv[0]] = wp[0]; + wake_w[sv[0]] = wp[1]; + } + } + return sv[0]; + } + errno = EPERM; + return -1; + } + return real_socket(domain, type, protocol); +} + +/* ---- listen ---------------------------------------------------------- */ +int listen(int sockfd, int backlog) { + if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { + listener_fd = sockfd; + return 0; + } + return real_listen(sockfd, backlog); +} + +/* ---- accept ---------------------------------------------------------- */ +int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) { + if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { + /* Block until close() writes to the wake pipe. */ + if (wake_r[sockfd] >= 0) { + char buf; + real_read(wake_r[sockfd], &buf, 1); + } + errno = ECONNABORTED; + return -1; + } + return real_accept(sockfd, addr, addrlen); +} + +/* ---- close ----------------------------------------------------------- */ +int close(int fd) { + if (fd >= 0 && fd < 1024 && is_shimmed[fd]) { + int was_listener = (fd == listener_fd); + is_shimmed[fd] = 0; + + if (wake_w[fd] >= 0) { /* unblock accept() */ + char c = 0; + write(wake_w[fd], &c, 1); + real_close(wake_w[fd]); + wake_w[fd] = -1; + } + if (wake_r[fd] >= 0) { real_close(wake_r[fd]); wake_r[fd] = -1; } + if (peer_of[fd] >= 0) { real_close(peer_of[fd]); peer_of[fd] = -1; } + + if (was_listener) + _exit(0); /* conversion done – exit */ + } + return real_close(fd); +} +""" + + + +if __name__ == "__main__": + import sys + result = run_soffice(sys.argv[1:]) + sys.exit(result.returncode) diff --git a/skills/pptx/scripts/office/unpack.py b/skills/pptx/scripts/office/unpack.py new file mode 100755 index 0000000..0015253 --- /dev/null +++ b/skills/pptx/scripts/office/unpack.py @@ -0,0 +1,132 @@ +"""Unpack Office files (DOCX, PPTX, XLSX) for editing. + +Extracts the ZIP archive, pretty-prints XML files, and optionally: +- Merges adjacent runs with identical formatting (DOCX only) +- Simplifies adjacent tracked changes from same author (DOCX only) + +Usage: + python unpack.py [options] + +Examples: + python unpack.py document.docx unpacked/ + python unpack.py presentation.pptx unpacked/ + python unpack.py document.docx unpacked/ --merge-runs false +""" + +import argparse +import sys +import zipfile +from pathlib import Path + +import defusedxml.minidom + +from helpers.merge_runs import merge_runs as do_merge_runs +from helpers.simplify_redlines import simplify_redlines as do_simplify_redlines + +SMART_QUOTE_REPLACEMENTS = { + "\u201c": "“", + "\u201d": "”", + "\u2018": "‘", + "\u2019": "’", +} + + +def unpack( + input_file: str, + output_directory: str, + merge_runs: bool = True, + simplify_redlines: bool = True, +) -> tuple[None, str]: + input_path = Path(input_file) + output_path = Path(output_directory) + suffix = input_path.suffix.lower() + + if not input_path.exists(): + return None, f"Error: {input_file} does not exist" + + if suffix not in {".docx", ".pptx", ".xlsx"}: + return None, f"Error: {input_file} must be a .docx, .pptx, or .xlsx file" + + try: + output_path.mkdir(parents=True, exist_ok=True) + + with zipfile.ZipFile(input_path, "r") as zf: + zf.extractall(output_path) + + xml_files = list(output_path.rglob("*.xml")) + list(output_path.rglob("*.rels")) + for xml_file in xml_files: + _pretty_print_xml(xml_file) + + message = f"Unpacked {input_file} ({len(xml_files)} XML files)" + + if suffix == ".docx": + if simplify_redlines: + simplify_count, _ = do_simplify_redlines(str(output_path)) + message += f", simplified {simplify_count} tracked changes" + + if merge_runs: + merge_count, _ = do_merge_runs(str(output_path)) + message += f", merged {merge_count} runs" + + for xml_file in xml_files: + _escape_smart_quotes(xml_file) + + return None, message + + except zipfile.BadZipFile: + return None, f"Error: {input_file} is not a valid Office file" + except Exception as e: + return None, f"Error unpacking: {e}" + + +def _pretty_print_xml(xml_file: Path) -> None: + try: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + xml_file.write_bytes(dom.toprettyxml(indent=" ", encoding="utf-8")) + except Exception: + pass + + +def _escape_smart_quotes(xml_file: Path) -> None: + try: + content = xml_file.read_text(encoding="utf-8") + for char, entity in SMART_QUOTE_REPLACEMENTS.items(): + content = content.replace(char, entity) + xml_file.write_text(content, encoding="utf-8") + except Exception: + pass + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Unpack an Office file (DOCX, PPTX, XLSX) for editing" + ) + parser.add_argument("input_file", help="Office file to unpack") + parser.add_argument("output_directory", help="Output directory") + parser.add_argument( + "--merge-runs", + type=lambda x: x.lower() == "true", + default=True, + metavar="true|false", + help="Merge adjacent runs with identical formatting (DOCX only, default: true)", + ) + parser.add_argument( + "--simplify-redlines", + type=lambda x: x.lower() == "true", + default=True, + metavar="true|false", + help="Merge adjacent tracked changes from same author (DOCX only, default: true)", + ) + args = parser.parse_args() + + _, message = unpack( + args.input_file, + args.output_directory, + merge_runs=args.merge_runs, + simplify_redlines=args.simplify_redlines, + ) + print(message) + + if "Error" in message: + sys.exit(1) diff --git a/skills/pptx/scripts/office/validate.py b/skills/pptx/scripts/office/validate.py new file mode 100755 index 0000000..03b01f6 --- /dev/null +++ b/skills/pptx/scripts/office/validate.py @@ -0,0 +1,111 @@ +""" +Command line tool to validate Office document XML files against XSD schemas and tracked changes. + +Usage: + python validate.py [--original ] [--auto-repair] [--author NAME] + +The first argument can be either: +- An unpacked directory containing the Office document XML files +- A packed Office file (.docx/.pptx/.xlsx) which will be unpacked to a temp directory + +Auto-repair fixes: +- paraId/durableId values that exceed OOXML limits +- Missing xml:space="preserve" on w:t elements with whitespace +""" + +import argparse +import sys +import tempfile +import zipfile +from pathlib import Path + +from validators import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator + + +def main(): + parser = argparse.ArgumentParser(description="Validate Office document XML files") + parser.add_argument( + "path", + help="Path to unpacked directory or packed Office file (.docx/.pptx/.xlsx)", + ) + parser.add_argument( + "--original", + required=False, + default=None, + help="Path to original file (.docx/.pptx/.xlsx). If omitted, all XSD errors are reported and redlining validation is skipped.", + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + help="Enable verbose output", + ) + parser.add_argument( + "--auto-repair", + action="store_true", + help="Automatically repair common issues (hex IDs, whitespace preservation)", + ) + parser.add_argument( + "--author", + default="Claude", + help="Author name for redlining validation (default: Claude)", + ) + args = parser.parse_args() + + path = Path(args.path) + assert path.exists(), f"Error: {path} does not exist" + + original_file = None + if args.original: + original_file = Path(args.original) + assert original_file.is_file(), f"Error: {original_file} is not a file" + assert original_file.suffix.lower() in [".docx", ".pptx", ".xlsx"], ( + f"Error: {original_file} must be a .docx, .pptx, or .xlsx file" + ) + + file_extension = (original_file or path).suffix.lower() + assert file_extension in [".docx", ".pptx", ".xlsx"], ( + f"Error: Cannot determine file type from {path}. Use --original or provide a .docx/.pptx/.xlsx file." + ) + + if path.is_file() and path.suffix.lower() in [".docx", ".pptx", ".xlsx"]: + temp_dir = tempfile.mkdtemp() + with zipfile.ZipFile(path, "r") as zf: + zf.extractall(temp_dir) + unpacked_dir = Path(temp_dir) + else: + assert path.is_dir(), f"Error: {path} is not a directory or Office file" + unpacked_dir = path + + match file_extension: + case ".docx": + validators = [ + DOCXSchemaValidator(unpacked_dir, original_file, verbose=args.verbose), + ] + if original_file: + validators.append( + RedliningValidator(unpacked_dir, original_file, verbose=args.verbose, author=args.author) + ) + case ".pptx": + validators = [ + PPTXSchemaValidator(unpacked_dir, original_file, verbose=args.verbose), + ] + case _: + print(f"Error: Validation not supported for file type {file_extension}") + sys.exit(1) + + if args.auto_repair: + total_repairs = sum(v.repair() for v in validators) + if total_repairs: + print(f"Auto-repaired {total_repairs} issue(s)") + + success = all(v.validate() for v in validators) + + if success: + print("All validations PASSED!") + + sys.exit(0 if success else 1) + + +if __name__ == "__main__": + main() diff --git a/skills/pptx/scripts/office/validators/__init__.py b/skills/pptx/scripts/office/validators/__init__.py new file mode 100644 index 0000000..db092ec --- /dev/null +++ b/skills/pptx/scripts/office/validators/__init__.py @@ -0,0 +1,15 @@ +""" +Validation modules for Word document processing. +""" + +from .base import BaseSchemaValidator +from .docx import DOCXSchemaValidator +from .pptx import PPTXSchemaValidator +from .redlining import RedliningValidator + +__all__ = [ + "BaseSchemaValidator", + "DOCXSchemaValidator", + "PPTXSchemaValidator", + "RedliningValidator", +] diff --git a/skills/pptx/scripts/office/validators/base.py b/skills/pptx/scripts/office/validators/base.py new file mode 100644 index 0000000..db4a06a --- /dev/null +++ b/skills/pptx/scripts/office/validators/base.py @@ -0,0 +1,847 @@ +""" +Base validator with common validation logic for document files. +""" + +import re +from pathlib import Path + +import defusedxml.minidom +import lxml.etree + + +class BaseSchemaValidator: + + IGNORED_VALIDATION_ERRORS = [ + "hyphenationZone", + "purl.org/dc/terms", + ] + + UNIQUE_ID_REQUIREMENTS = { + "comment": ("id", "file"), + "commentrangestart": ("id", "file"), + "commentrangeend": ("id", "file"), + "bookmarkstart": ("id", "file"), + "bookmarkend": ("id", "file"), + "sldid": ("id", "file"), + "sldmasterid": ("id", "global"), + "sldlayoutid": ("id", "global"), + "cm": ("authorid", "file"), + "sheet": ("sheetid", "file"), + "definedname": ("id", "file"), + "cxnsp": ("id", "file"), + "sp": ("id", "file"), + "pic": ("id", "file"), + "grpsp": ("id", "file"), + } + + EXCLUDED_ID_CONTAINERS = { + "sectionlst", + } + + ELEMENT_RELATIONSHIP_TYPES = {} + + SCHEMA_MAPPINGS = { + "word": "ISO-IEC29500-4_2016/wml.xsd", + "ppt": "ISO-IEC29500-4_2016/pml.xsd", + "xl": "ISO-IEC29500-4_2016/sml.xsd", + "[Content_Types].xml": "ecma/fouth-edition/opc-contentTypes.xsd", + "app.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd", + "core.xml": "ecma/fouth-edition/opc-coreProperties.xsd", + "custom.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd", + ".rels": "ecma/fouth-edition/opc-relationships.xsd", + "people.xml": "microsoft/wml-2012.xsd", + "commentsIds.xml": "microsoft/wml-cid-2016.xsd", + "commentsExtensible.xml": "microsoft/wml-cex-2018.xsd", + "commentsExtended.xml": "microsoft/wml-2012.xsd", + "chart": "ISO-IEC29500-4_2016/dml-chart.xsd", + "theme": "ISO-IEC29500-4_2016/dml-main.xsd", + "drawing": "ISO-IEC29500-4_2016/dml-main.xsd", + } + + MC_NAMESPACE = "http://schemas.openxmlformats.org/markup-compatibility/2006" + XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace" + + PACKAGE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/relationships" + ) + OFFICE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships" + ) + CONTENT_TYPES_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/content-types" + ) + + MAIN_CONTENT_FOLDERS = {"word", "ppt", "xl"} + + OOXML_NAMESPACES = { + "http://schemas.openxmlformats.org/officeDocument/2006/math", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + "http://schemas.openxmlformats.org/schemaLibrary/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/chart", + "http://schemas.openxmlformats.org/drawingml/2006/chartDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/diagram", + "http://schemas.openxmlformats.org/drawingml/2006/picture", + "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", + "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + "http://schemas.openxmlformats.org/presentationml/2006/main", + "http://schemas.openxmlformats.org/spreadsheetml/2006/main", + "http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes", + "http://www.w3.org/XML/1998/namespace", + } + + def __init__(self, unpacked_dir, original_file=None, verbose=False): + self.unpacked_dir = Path(unpacked_dir).resolve() + self.original_file = Path(original_file) if original_file else None + self.verbose = verbose + + self.schemas_dir = Path(__file__).parent.parent / "schemas" + + patterns = ["*.xml", "*.rels"] + self.xml_files = [ + f for pattern in patterns for f in self.unpacked_dir.rglob(pattern) + ] + + if not self.xml_files: + print(f"Warning: No XML files found in {self.unpacked_dir}") + + def validate(self): + raise NotImplementedError("Subclasses must implement the validate method") + + def repair(self) -> int: + return self.repair_whitespace_preservation() + + def repair_whitespace_preservation(self) -> int: + repairs = 0 + + for xml_file in self.xml_files: + try: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + modified = False + + for elem in dom.getElementsByTagName("*"): + if elem.tagName.endswith(":t") and elem.firstChild: + text = elem.firstChild.nodeValue + if text and (text.startswith((' ', '\t')) or text.endswith((' ', '\t'))): + if elem.getAttribute("xml:space") != "preserve": + elem.setAttribute("xml:space", "preserve") + text_preview = repr(text[:30]) + "..." if len(text) > 30 else repr(text) + print(f" Repaired: {xml_file.name}: Added xml:space='preserve' to {elem.tagName}: {text_preview}") + repairs += 1 + modified = True + + if modified: + xml_file.write_bytes(dom.toxml(encoding="UTF-8")) + + except Exception: + pass + + return repairs + + def validate_xml(self): + errors = [] + + for xml_file in self.xml_files: + try: + lxml.etree.parse(str(xml_file)) + except lxml.etree.XMLSyntaxError as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {e.lineno}: {e.msg}" + ) + except Exception as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Unexpected error: {str(e)}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} XML violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All XML files are well-formed") + return True + + def validate_namespaces(self): + errors = [] + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + declared = set(root.nsmap.keys()) - {None} + + for attr_val in [ + v for k, v in root.attrib.items() if k.endswith("Ignorable") + ]: + undeclared = set(attr_val.split()) - declared + errors.extend( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Namespace '{ns}' in Ignorable but not declared" + for ns in undeclared + ) + except lxml.etree.XMLSyntaxError: + continue + + if errors: + print(f"FAILED - {len(errors)} namespace issues:") + for error in errors: + print(error) + return False + if self.verbose: + print("PASSED - All namespace prefixes properly declared") + return True + + def validate_unique_ids(self): + errors = [] + global_ids = {} + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + file_ids = {} + + mc_elements = root.xpath( + ".//mc:AlternateContent", namespaces={"mc": self.MC_NAMESPACE} + ) + for elem in mc_elements: + elem.getparent().remove(elem) + + for elem in root.iter(): + tag = ( + elem.tag.split("}")[-1].lower() + if "}" in elem.tag + else elem.tag.lower() + ) + + if tag in self.UNIQUE_ID_REQUIREMENTS: + in_excluded_container = any( + ancestor.tag.split("}")[-1].lower() in self.EXCLUDED_ID_CONTAINERS + for ancestor in elem.iterancestors() + ) + if in_excluded_container: + continue + + attr_name, scope = self.UNIQUE_ID_REQUIREMENTS[tag] + + id_value = None + for attr, value in elem.attrib.items(): + attr_local = ( + attr.split("}")[-1].lower() + if "}" in attr + else attr.lower() + ) + if attr_local == attr_name: + id_value = value + break + + if id_value is not None: + if scope == "global": + if id_value in global_ids: + prev_file, prev_line, prev_tag = global_ids[ + id_value + ] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Global ID '{id_value}' in <{tag}> " + f"already used in {prev_file} at line {prev_line} in <{prev_tag}>" + ) + else: + global_ids[id_value] = ( + xml_file.relative_to(self.unpacked_dir), + elem.sourceline, + tag, + ) + elif scope == "file": + key = (tag, attr_name) + if key not in file_ids: + file_ids[key] = {} + + if id_value in file_ids[key]: + prev_line = file_ids[key][id_value] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Duplicate {attr_name}='{id_value}' in <{tag}> " + f"(first occurrence at line {prev_line})" + ) + else: + file_ids[key][id_value] = elem.sourceline + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} ID uniqueness violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All required IDs are unique") + return True + + def validate_file_references(self): + errors = [] + + rels_files = list(self.unpacked_dir.rglob("*.rels")) + + if not rels_files: + if self.verbose: + print("PASSED - No .rels files found") + return True + + all_files = [] + for file_path in self.unpacked_dir.rglob("*"): + if ( + file_path.is_file() + and file_path.name != "[Content_Types].xml" + and not file_path.name.endswith(".rels") + ): + all_files.append(file_path.resolve()) + + all_referenced_files = set() + + if self.verbose: + print( + f"Found {len(rels_files)} .rels files and {len(all_files)} target files" + ) + + for rels_file in rels_files: + try: + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + rels_dir = rels_file.parent + + referenced_files = set() + broken_refs = [] + + for rel in rels_root.findall( + ".//ns:Relationship", + namespaces={"ns": self.PACKAGE_RELATIONSHIPS_NAMESPACE}, + ): + target = rel.get("Target") + if target and not target.startswith( + ("http", "mailto:") + ): + if target.startswith("/"): + target_path = self.unpacked_dir / target.lstrip("/") + elif rels_file.name == ".rels": + target_path = self.unpacked_dir / target + else: + base_dir = rels_dir.parent + target_path = base_dir / target + + try: + target_path = target_path.resolve() + if target_path.exists() and target_path.is_file(): + referenced_files.add(target_path) + all_referenced_files.add(target_path) + else: + broken_refs.append((target, rel.sourceline)) + except (OSError, ValueError): + broken_refs.append((target, rel.sourceline)) + + if broken_refs: + rel_path = rels_file.relative_to(self.unpacked_dir) + for broken_ref, line_num in broken_refs: + errors.append( + f" {rel_path}: Line {line_num}: Broken reference to {broken_ref}" + ) + + except Exception as e: + rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append(f" Error parsing {rel_path}: {e}") + + unreferenced_files = set(all_files) - all_referenced_files + + if unreferenced_files: + for unref_file in sorted(unreferenced_files): + unref_rel_path = unref_file.relative_to(self.unpacked_dir) + errors.append(f" Unreferenced file: {unref_rel_path}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship validation errors:") + for error in errors: + print(error) + print( + "CRITICAL: These errors will cause the document to appear corrupt. " + + "Broken references MUST be fixed, " + + "and unreferenced files MUST be referenced or removed." + ) + return False + else: + if self.verbose: + print( + "PASSED - All references are valid and all files are properly referenced" + ) + return True + + def validate_all_relationship_ids(self): + import lxml.etree + + errors = [] + + for xml_file in self.xml_files: + if xml_file.suffix == ".rels": + continue + + rels_dir = xml_file.parent / "_rels" + rels_file = rels_dir / f"{xml_file.name}.rels" + + if not rels_file.exists(): + continue + + try: + rels_root = lxml.etree.parse(str(rels_file)).getroot() + rid_to_type = {} + + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rid = rel.get("Id") + rel_type = rel.get("Type", "") + if rid: + if rid in rid_to_type: + rels_rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append( + f" {rels_rel_path}: Line {rel.sourceline}: " + f"Duplicate relationship ID '{rid}' (IDs must be unique)" + ) + type_name = ( + rel_type.split("/")[-1] if "/" in rel_type else rel_type + ) + rid_to_type[rid] = type_name + + xml_root = lxml.etree.parse(str(xml_file)).getroot() + + r_ns = self.OFFICE_RELATIONSHIPS_NAMESPACE + rid_attrs_to_check = ["id", "embed", "link"] + for elem in xml_root.iter(): + for attr_name in rid_attrs_to_check: + rid_attr = elem.get(f"{{{r_ns}}}{attr_name}") + if not rid_attr: + continue + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + elem_name = ( + elem.tag.split("}")[-1] if "}" in elem.tag else elem.tag + ) + + if rid_attr not in rid_to_type: + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> r:{attr_name} references non-existent relationship '{rid_attr}' " + f"(valid IDs: {', '.join(sorted(rid_to_type.keys())[:5])}{'...' if len(rid_to_type) > 5 else ''})" + ) + elif attr_name == "id" and self.ELEMENT_RELATIONSHIP_TYPES: + expected_type = self._get_expected_relationship_type( + elem_name + ) + if expected_type: + actual_type = rid_to_type[rid_attr] + if expected_type not in actual_type.lower(): + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> references '{rid_attr}' which points to '{actual_type}' " + f"but should point to a '{expected_type}' relationship" + ) + + except Exception as e: + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + errors.append(f" Error processing {xml_rel_path}: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship ID reference errors:") + for error in errors: + print(error) + print("\nThese ID mismatches will cause the document to appear corrupt!") + return False + else: + if self.verbose: + print("PASSED - All relationship ID references are valid") + return True + + def _get_expected_relationship_type(self, element_name): + elem_lower = element_name.lower() + + if elem_lower in self.ELEMENT_RELATIONSHIP_TYPES: + return self.ELEMENT_RELATIONSHIP_TYPES[elem_lower] + + if elem_lower.endswith("id") and len(elem_lower) > 2: + prefix = elem_lower[:-2] + if prefix.endswith("master"): + return prefix.lower() + elif prefix.endswith("layout"): + return prefix.lower() + else: + if prefix == "sld": + return "slide" + return prefix.lower() + + if elem_lower.endswith("reference") and len(elem_lower) > 9: + prefix = elem_lower[:-9] + return prefix.lower() + + return None + + def validate_content_types(self): + errors = [] + + content_types_file = self.unpacked_dir / "[Content_Types].xml" + if not content_types_file.exists(): + print("FAILED - [Content_Types].xml file not found") + return False + + try: + root = lxml.etree.parse(str(content_types_file)).getroot() + declared_parts = set() + declared_extensions = set() + + for override in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Override" + ): + part_name = override.get("PartName") + if part_name is not None: + declared_parts.add(part_name.lstrip("/")) + + for default in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Default" + ): + extension = default.get("Extension") + if extension is not None: + declared_extensions.add(extension.lower()) + + declarable_roots = { + "sld", + "sldLayout", + "sldMaster", + "presentation", + "document", + "workbook", + "worksheet", + "theme", + } + + media_extensions = { + "png": "image/png", + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "gif": "image/gif", + "bmp": "image/bmp", + "tiff": "image/tiff", + "wmf": "image/x-wmf", + "emf": "image/x-emf", + } + + all_files = list(self.unpacked_dir.rglob("*")) + all_files = [f for f in all_files if f.is_file()] + + for xml_file in self.xml_files: + path_str = str(xml_file.relative_to(self.unpacked_dir)).replace( + "\\", "/" + ) + + if any( + skip in path_str + for skip in [".rels", "[Content_Types]", "docProps/", "_rels/"] + ): + continue + + try: + root_tag = lxml.etree.parse(str(xml_file)).getroot().tag + root_name = root_tag.split("}")[-1] if "}" in root_tag else root_tag + + if root_name in declarable_roots and path_str not in declared_parts: + errors.append( + f" {path_str}: File with <{root_name}> root not declared in [Content_Types].xml" + ) + + except Exception: + continue + + for file_path in all_files: + if file_path.suffix.lower() in {".xml", ".rels"}: + continue + if file_path.name == "[Content_Types].xml": + continue + if "_rels" in file_path.parts or "docProps" in file_path.parts: + continue + + extension = file_path.suffix.lstrip(".").lower() + if extension and extension not in declared_extensions: + if extension in media_extensions: + relative_path = file_path.relative_to(self.unpacked_dir) + errors.append( + f' {relative_path}: File with extension \'{extension}\' not declared in [Content_Types].xml - should add: ' + ) + + except Exception as e: + errors.append(f" Error parsing [Content_Types].xml: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} content type declaration errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print( + "PASSED - All content files are properly declared in [Content_Types].xml" + ) + return True + + def validate_file_against_xsd(self, xml_file, verbose=False): + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + + is_valid, current_errors = self._validate_single_file_xsd( + xml_file, unpacked_dir + ) + + if is_valid is None: + return None, set() + elif is_valid: + return True, set() + + original_errors = self._get_original_file_errors(xml_file) + + assert current_errors is not None + new_errors = current_errors - original_errors + + new_errors = { + e for e in new_errors + if not any(pattern in e for pattern in self.IGNORED_VALIDATION_ERRORS) + } + + if new_errors: + if verbose: + relative_path = xml_file.relative_to(unpacked_dir) + print(f"FAILED - {relative_path}: {len(new_errors)} new error(s)") + for error in list(new_errors)[:3]: + truncated = error[:250] + "..." if len(error) > 250 else error + print(f" - {truncated}") + return False, new_errors + else: + if verbose: + print( + f"PASSED - No new errors (original had {len(current_errors)} errors)" + ) + return True, set() + + def validate_against_xsd(self): + new_errors = [] + original_error_count = 0 + valid_count = 0 + skipped_count = 0 + + for xml_file in self.xml_files: + relative_path = str(xml_file.relative_to(self.unpacked_dir)) + is_valid, new_file_errors = self.validate_file_against_xsd( + xml_file, verbose=False + ) + + if is_valid is None: + skipped_count += 1 + continue + elif is_valid and not new_file_errors: + valid_count += 1 + continue + elif is_valid: + original_error_count += 1 + valid_count += 1 + continue + + new_errors.append(f" {relative_path}: {len(new_file_errors)} new error(s)") + for error in list(new_file_errors)[:3]: + new_errors.append( + f" - {error[:250]}..." if len(error) > 250 else f" - {error}" + ) + + if self.verbose: + print(f"Validated {len(self.xml_files)} files:") + print(f" - Valid: {valid_count}") + print(f" - Skipped (no schema): {skipped_count}") + if original_error_count: + print(f" - With original errors (ignored): {original_error_count}") + print( + f" - With NEW errors: {len(new_errors) > 0 and len([e for e in new_errors if not e.startswith(' ')]) or 0}" + ) + + if new_errors: + print("\nFAILED - Found NEW validation errors:") + for error in new_errors: + print(error) + return False + else: + if self.verbose: + print("\nPASSED - No new XSD validation errors introduced") + return True + + def _get_schema_path(self, xml_file): + if xml_file.name in self.SCHEMA_MAPPINGS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.name] + + if xml_file.suffix == ".rels": + return self.schemas_dir / self.SCHEMA_MAPPINGS[".rels"] + + if "charts/" in str(xml_file) and xml_file.name.startswith("chart"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["chart"] + + if "theme/" in str(xml_file) and xml_file.name.startswith("theme"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["theme"] + + if xml_file.parent.name in self.MAIN_CONTENT_FOLDERS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.parent.name] + + return None + + def _clean_ignorable_namespaces(self, xml_doc): + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + for elem in xml_copy.iter(): + attrs_to_remove = [] + + for attr in elem.attrib: + if "{" in attr: + ns = attr.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + attrs_to_remove.append(attr) + + for attr in attrs_to_remove: + del elem.attrib[attr] + + self._remove_ignorable_elements(xml_copy) + + return lxml.etree.ElementTree(xml_copy) + + def _remove_ignorable_elements(self, root): + elements_to_remove = [] + + for elem in list(root): + if not hasattr(elem, "tag") or callable(elem.tag): + continue + + tag_str = str(elem.tag) + if tag_str.startswith("{"): + ns = tag_str.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + elements_to_remove.append(elem) + continue + + self._remove_ignorable_elements(elem) + + for elem in elements_to_remove: + root.remove(elem) + + def _preprocess_for_mc_ignorable(self, xml_doc): + root = xml_doc.getroot() + + if f"{{{self.MC_NAMESPACE}}}Ignorable" in root.attrib: + del root.attrib[f"{{{self.MC_NAMESPACE}}}Ignorable"] + + return xml_doc + + def _validate_single_file_xsd(self, xml_file, base_path): + schema_path = self._get_schema_path(xml_file) + if not schema_path: + return None, None + + try: + with open(schema_path, "rb") as xsd_file: + parser = lxml.etree.XMLParser() + xsd_doc = lxml.etree.parse( + xsd_file, parser=parser, base_url=str(schema_path) + ) + schema = lxml.etree.XMLSchema(xsd_doc) + + with open(xml_file, "r") as f: + xml_doc = lxml.etree.parse(f) + + xml_doc, _ = self._remove_template_tags_from_text_nodes(xml_doc) + xml_doc = self._preprocess_for_mc_ignorable(xml_doc) + + relative_path = xml_file.relative_to(base_path) + if ( + relative_path.parts + and relative_path.parts[0] in self.MAIN_CONTENT_FOLDERS + ): + xml_doc = self._clean_ignorable_namespaces(xml_doc) + + if schema.validate(xml_doc): + return True, set() + else: + errors = set() + for error in schema.error_log: + errors.add(error.message) + return False, errors + + except Exception as e: + return False, {str(e)} + + def _get_original_file_errors(self, xml_file): + if self.original_file is None: + return set() + + import tempfile + import zipfile + + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + relative_path = xml_file.relative_to(unpacked_dir) + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + with zipfile.ZipFile(self.original_file, "r") as zip_ref: + zip_ref.extractall(temp_path) + + original_xml_file = temp_path / relative_path + + if not original_xml_file.exists(): + return set() + + is_valid, errors = self._validate_single_file_xsd( + original_xml_file, temp_path + ) + return errors if errors else set() + + def _remove_template_tags_from_text_nodes(self, xml_doc): + warnings = [] + template_pattern = re.compile(r"\{\{[^}]*\}\}") + + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + def process_text_content(text, content_type): + if not text: + return text + matches = list(template_pattern.finditer(text)) + if matches: + for match in matches: + warnings.append( + f"Found template tag in {content_type}: {match.group()}" + ) + return template_pattern.sub("", text) + return text + + for elem in xml_copy.iter(): + if not hasattr(elem, "tag") or callable(elem.tag): + continue + tag_str = str(elem.tag) + if tag_str.endswith("}t") or tag_str == "t": + continue + + elem.text = process_text_content(elem.text, "text content") + elem.tail = process_text_content(elem.tail, "tail content") + + return lxml.etree.ElementTree(xml_copy), warnings + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/skills/pptx/scripts/office/validators/docx.py b/skills/pptx/scripts/office/validators/docx.py new file mode 100644 index 0000000..fec405e --- /dev/null +++ b/skills/pptx/scripts/office/validators/docx.py @@ -0,0 +1,446 @@ +""" +Validator for Word document XML files against XSD schemas. +""" + +import random +import re +import tempfile +import zipfile + +import defusedxml.minidom +import lxml.etree + +from .base import BaseSchemaValidator + + +class DOCXSchemaValidator(BaseSchemaValidator): + + WORD_2006_NAMESPACE = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + W14_NAMESPACE = "http://schemas.microsoft.com/office/word/2010/wordml" + W16CID_NAMESPACE = "http://schemas.microsoft.com/office/word/2016/wordml/cid" + + ELEMENT_RELATIONSHIP_TYPES = {} + + def validate(self): + if not self.validate_xml(): + return False + + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + if not self.validate_unique_ids(): + all_valid = False + + if not self.validate_file_references(): + all_valid = False + + if not self.validate_content_types(): + all_valid = False + + if not self.validate_against_xsd(): + all_valid = False + + if not self.validate_whitespace_preservation(): + all_valid = False + + if not self.validate_deletions(): + all_valid = False + + if not self.validate_insertions(): + all_valid = False + + if not self.validate_all_relationship_ids(): + all_valid = False + + if not self.validate_id_constraints(): + all_valid = False + + if not self.validate_comment_markers(): + all_valid = False + + self.compare_paragraph_counts() + + return all_valid + + def validate_whitespace_preservation(self): + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + for elem in root.iter(f"{{{self.WORD_2006_NAMESPACE}}}t"): + if elem.text: + text = elem.text + if re.search(r"^[ \t\n\r]", text) or re.search( + r"[ \t\n\r]$", text + ): + xml_space_attr = f"{{{self.XML_NAMESPACE}}}space" + if ( + xml_space_attr not in elem.attrib + or elem.attrib[xml_space_attr] != "preserve" + ): + text_preview = ( + repr(text)[:50] + "..." + if len(repr(text)) > 50 + else repr(text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: w:t element with whitespace missing xml:space='preserve': {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} whitespace preservation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All whitespace is properly preserved") + return True + + def validate_deletions(self): + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + for t_elem in root.xpath(".//w:del//w:t", namespaces=namespaces): + if t_elem.text: + text_preview = ( + repr(t_elem.text)[:50] + "..." + if len(repr(t_elem.text)) > 50 + else repr(t_elem.text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {t_elem.sourceline}: found within : {text_preview}" + ) + + for instr_elem in root.xpath( + ".//w:del//w:instrText", namespaces=namespaces + ): + text_preview = ( + repr(instr_elem.text or "")[:50] + "..." + if len(repr(instr_elem.text or "")) > 50 + else repr(instr_elem.text or "") + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {instr_elem.sourceline}: found within (use ): {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} deletion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:t elements found within w:del elements") + return True + + def count_paragraphs_in_unpacked(self): + count = 0 + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + except Exception as e: + print(f"Error counting paragraphs in unpacked document: {e}") + + return count + + def count_paragraphs_in_original(self): + original = self.original_file + if original is None: + return 0 + + count = 0 + + try: + with tempfile.TemporaryDirectory() as temp_dir: + with zipfile.ZipFile(original, "r") as zip_ref: + zip_ref.extractall(temp_dir) + + doc_xml_path = temp_dir + "/word/document.xml" + root = lxml.etree.parse(doc_xml_path).getroot() + + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + + except Exception as e: + print(f"Error counting paragraphs in original document: {e}") + + return count + + def validate_insertions(self): + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + invalid_elements = root.xpath( + ".//w:ins//w:delText[not(ancestor::w:del)]", namespaces=namespaces + ) + + for elem in invalid_elements: + text_preview = ( + repr(elem.text or "")[:50] + "..." + if len(repr(elem.text or "")) > 50 + else repr(elem.text or "") + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: within : {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} insertion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:delText elements within w:ins elements") + return True + + def compare_paragraph_counts(self): + original_count = self.count_paragraphs_in_original() + new_count = self.count_paragraphs_in_unpacked() + + diff = new_count - original_count + diff_str = f"+{diff}" if diff > 0 else str(diff) + print(f"\nParagraphs: {original_count} → {new_count} ({diff_str})") + + def _parse_id_value(self, val: str, base: int = 16) -> int: + return int(val, base) + + def validate_id_constraints(self): + errors = [] + para_id_attr = f"{{{self.W14_NAMESPACE}}}paraId" + durable_id_attr = f"{{{self.W16CID_NAMESPACE}}}durableId" + + for xml_file in self.xml_files: + try: + for elem in lxml.etree.parse(str(xml_file)).iter(): + if val := elem.get(para_id_attr): + if self._parse_id_value(val, base=16) >= 0x80000000: + errors.append( + f" {xml_file.name}:{elem.sourceline}: paraId={val} >= 0x80000000" + ) + + if val := elem.get(durable_id_attr): + if xml_file.name == "numbering.xml": + try: + if self._parse_id_value(val, base=10) >= 0x7FFFFFFF: + errors.append( + f" {xml_file.name}:{elem.sourceline}: " + f"durableId={val} >= 0x7FFFFFFF" + ) + except ValueError: + errors.append( + f" {xml_file.name}:{elem.sourceline}: " + f"durableId={val} must be decimal in numbering.xml" + ) + else: + if self._parse_id_value(val, base=16) >= 0x7FFFFFFF: + errors.append( + f" {xml_file.name}:{elem.sourceline}: " + f"durableId={val} >= 0x7FFFFFFF" + ) + except Exception: + pass + + if errors: + print(f"FAILED - {len(errors)} ID constraint violations:") + for e in errors: + print(e) + elif self.verbose: + print("PASSED - All paraId/durableId values within constraints") + return not errors + + def validate_comment_markers(self): + errors = [] + + document_xml = None + comments_xml = None + for xml_file in self.xml_files: + if xml_file.name == "document.xml" and "word" in str(xml_file): + document_xml = xml_file + elif xml_file.name == "comments.xml": + comments_xml = xml_file + + if not document_xml: + if self.verbose: + print("PASSED - No document.xml found (skipping comment validation)") + return True + + try: + doc_root = lxml.etree.parse(str(document_xml)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + range_starts = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in doc_root.xpath( + ".//w:commentRangeStart", namespaces=namespaces + ) + } + range_ends = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in doc_root.xpath( + ".//w:commentRangeEnd", namespaces=namespaces + ) + } + references = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in doc_root.xpath( + ".//w:commentReference", namespaces=namespaces + ) + } + + orphaned_ends = range_ends - range_starts + for comment_id in sorted( + orphaned_ends, key=lambda x: int(x) if x and x.isdigit() else 0 + ): + errors.append( + f' document.xml: commentRangeEnd id="{comment_id}" has no matching commentRangeStart' + ) + + orphaned_starts = range_starts - range_ends + for comment_id in sorted( + orphaned_starts, key=lambda x: int(x) if x and x.isdigit() else 0 + ): + errors.append( + f' document.xml: commentRangeStart id="{comment_id}" has no matching commentRangeEnd' + ) + + comment_ids = set() + if comments_xml and comments_xml.exists(): + comments_root = lxml.etree.parse(str(comments_xml)).getroot() + comment_ids = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in comments_root.xpath( + ".//w:comment", namespaces=namespaces + ) + } + + marker_ids = range_starts | range_ends | references + invalid_refs = marker_ids - comment_ids + for comment_id in sorted( + invalid_refs, key=lambda x: int(x) if x and x.isdigit() else 0 + ): + if comment_id: + errors.append( + f' document.xml: marker id="{comment_id}" references non-existent comment' + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append(f" Error parsing XML: {e}") + + if errors: + print(f"FAILED - {len(errors)} comment marker violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All comment markers properly paired") + return True + + def repair(self) -> int: + repairs = super().repair() + repairs += self.repair_durableId() + return repairs + + def repair_durableId(self) -> int: + repairs = 0 + + for xml_file in self.xml_files: + try: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + modified = False + + for elem in dom.getElementsByTagName("*"): + if not elem.hasAttribute("w16cid:durableId"): + continue + + durable_id = elem.getAttribute("w16cid:durableId") + needs_repair = False + + if xml_file.name == "numbering.xml": + try: + needs_repair = ( + self._parse_id_value(durable_id, base=10) >= 0x7FFFFFFF + ) + except ValueError: + needs_repair = True + else: + try: + needs_repair = ( + self._parse_id_value(durable_id, base=16) >= 0x7FFFFFFF + ) + except ValueError: + needs_repair = True + + if needs_repair: + value = random.randint(1, 0x7FFFFFFE) + if xml_file.name == "numbering.xml": + new_id = str(value) + else: + new_id = f"{value:08X}" + + elem.setAttribute("w16cid:durableId", new_id) + print( + f" Repaired: {xml_file.name}: durableId {durable_id} → {new_id}" + ) + repairs += 1 + modified = True + + if modified: + xml_file.write_bytes(dom.toxml(encoding="UTF-8")) + + except Exception: + pass + + return repairs + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/skills/pptx/scripts/office/validators/pptx.py b/skills/pptx/scripts/office/validators/pptx.py new file mode 100644 index 0000000..09842aa --- /dev/null +++ b/skills/pptx/scripts/office/validators/pptx.py @@ -0,0 +1,275 @@ +""" +Validator for PowerPoint presentation XML files against XSD schemas. +""" + +import re + +from .base import BaseSchemaValidator + + +class PPTXSchemaValidator(BaseSchemaValidator): + + PRESENTATIONML_NAMESPACE = ( + "http://schemas.openxmlformats.org/presentationml/2006/main" + ) + + ELEMENT_RELATIONSHIP_TYPES = { + "sldid": "slide", + "sldmasterid": "slidemaster", + "notesmasterid": "notesmaster", + "sldlayoutid": "slidelayout", + "themeid": "theme", + "tablestyleid": "tablestyles", + } + + def validate(self): + if not self.validate_xml(): + return False + + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + if not self.validate_unique_ids(): + all_valid = False + + if not self.validate_uuid_ids(): + all_valid = False + + if not self.validate_file_references(): + all_valid = False + + if not self.validate_slide_layout_ids(): + all_valid = False + + if not self.validate_content_types(): + all_valid = False + + if not self.validate_against_xsd(): + all_valid = False + + if not self.validate_notes_slide_references(): + all_valid = False + + if not self.validate_all_relationship_ids(): + all_valid = False + + if not self.validate_no_duplicate_slide_layouts(): + all_valid = False + + return all_valid + + def validate_uuid_ids(self): + import lxml.etree + + errors = [] + uuid_pattern = re.compile( + r"^[\{\(]?[0-9A-Fa-f]{8}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{12}[\}\)]?$" + ) + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + for elem in root.iter(): + for attr, value in elem.attrib.items(): + attr_name = attr.split("}")[-1].lower() + if attr_name == "id" or attr_name.endswith("id"): + if self._looks_like_uuid(value): + if not uuid_pattern.match(value): + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: ID '{value}' appears to be a UUID but contains invalid hex characters" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} UUID ID validation errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All UUID-like IDs contain valid hex values") + return True + + def _looks_like_uuid(self, value): + clean_value = value.strip("{}()").replace("-", "") + return len(clean_value) == 32 and all(c.isalnum() for c in clean_value) + + def validate_slide_layout_ids(self): + import lxml.etree + + errors = [] + + slide_masters = list(self.unpacked_dir.glob("ppt/slideMasters/*.xml")) + + if not slide_masters: + if self.verbose: + print("PASSED - No slide masters found") + return True + + for slide_master in slide_masters: + try: + root = lxml.etree.parse(str(slide_master)).getroot() + + rels_file = slide_master.parent / "_rels" / f"{slide_master.name}.rels" + + if not rels_file.exists(): + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Missing relationships file: {rels_file.relative_to(self.unpacked_dir)}" + ) + continue + + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + valid_layout_rids = set() + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "slideLayout" in rel_type: + valid_layout_rids.add(rel.get("Id")) + + for sld_layout_id in root.findall( + f".//{{{self.PRESENTATIONML_NAMESPACE}}}sldLayoutId" + ): + r_id = sld_layout_id.get( + f"{{{self.OFFICE_RELATIONSHIPS_NAMESPACE}}}id" + ) + layout_id = sld_layout_id.get("id") + + if r_id and r_id not in valid_layout_rids: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Line {sld_layout_id.sourceline}: sldLayoutId with id='{layout_id}' " + f"references r:id='{r_id}' which is not found in slide layout relationships" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} slide layout ID validation errors:") + for error in errors: + print(error) + print( + "Remove invalid references or add missing slide layouts to the relationships file." + ) + return False + else: + if self.verbose: + print("PASSED - All slide layout IDs reference valid slide layouts") + return True + + def validate_no_duplicate_slide_layouts(self): + import lxml.etree + + errors = [] + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + for rels_file in slide_rels_files: + try: + root = lxml.etree.parse(str(rels_file)).getroot() + + layout_rels = [ + rel + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ) + if "slideLayout" in rel.get("Type", "") + ] + + if len(layout_rels) > 1: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: has {len(layout_rels)} slideLayout references" + ) + + except Exception as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print("FAILED - Found slides with duplicate slideLayout references:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All slides have exactly one slideLayout reference") + return True + + def validate_notes_slide_references(self): + import lxml.etree + + errors = [] + notes_slide_references = {} + + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + if not slide_rels_files: + if self.verbose: + print("PASSED - No slide relationship files found") + return True + + for rels_file in slide_rels_files: + try: + root = lxml.etree.parse(str(rels_file)).getroot() + + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "notesSlide" in rel_type: + target = rel.get("Target", "") + if target: + normalized_target = target.replace("../", "") + + slide_name = rels_file.stem.replace( + ".xml", "" + ) + + if normalized_target not in notes_slide_references: + notes_slide_references[normalized_target] = [] + notes_slide_references[normalized_target].append( + (slide_name, rels_file) + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + for target, references in notes_slide_references.items(): + if len(references) > 1: + slide_names = [ref[0] for ref in references] + errors.append( + f" Notes slide '{target}' is referenced by multiple slides: {', '.join(slide_names)}" + ) + for slide_name, rels_file in references: + errors.append(f" - {rels_file.relative_to(self.unpacked_dir)}") + + if errors: + print( + f"FAILED - Found {len([e for e in errors if not e.startswith(' ')])} notes slide reference validation errors:" + ) + for error in errors: + print(error) + print("Each slide may optionally have its own slide file.") + return False + else: + if self.verbose: + print("PASSED - All notes slide references are unique") + return True + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/skills/pptx/scripts/office/validators/redlining.py b/skills/pptx/scripts/office/validators/redlining.py new file mode 100644 index 0000000..71c81b6 --- /dev/null +++ b/skills/pptx/scripts/office/validators/redlining.py @@ -0,0 +1,247 @@ +""" +Validator for tracked changes in Word documents. +""" + +import subprocess +import tempfile +import zipfile +from pathlib import Path + + +class RedliningValidator: + + def __init__(self, unpacked_dir, original_docx, verbose=False, author="Claude"): + self.unpacked_dir = Path(unpacked_dir) + self.original_docx = Path(original_docx) + self.verbose = verbose + self.author = author + self.namespaces = { + "w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + } + + def repair(self) -> int: + return 0 + + def validate(self): + modified_file = self.unpacked_dir / "word" / "document.xml" + if not modified_file.exists(): + print(f"FAILED - Modified document.xml not found at {modified_file}") + return False + + try: + import xml.etree.ElementTree as ET + + tree = ET.parse(modified_file) + root = tree.getroot() + + del_elements = root.findall(".//w:del", self.namespaces) + ins_elements = root.findall(".//w:ins", self.namespaces) + + author_del_elements = [ + elem + for elem in del_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == self.author + ] + author_ins_elements = [ + elem + for elem in ins_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == self.author + ] + + if not author_del_elements and not author_ins_elements: + if self.verbose: + print(f"PASSED - No tracked changes by {self.author} found.") + return True + + except Exception: + pass + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + try: + with zipfile.ZipFile(self.original_docx, "r") as zip_ref: + zip_ref.extractall(temp_path) + except Exception as e: + print(f"FAILED - Error unpacking original docx: {e}") + return False + + original_file = temp_path / "word" / "document.xml" + if not original_file.exists(): + print( + f"FAILED - Original document.xml not found in {self.original_docx}" + ) + return False + + try: + import xml.etree.ElementTree as ET + + modified_tree = ET.parse(modified_file) + modified_root = modified_tree.getroot() + original_tree = ET.parse(original_file) + original_root = original_tree.getroot() + except ET.ParseError as e: + print(f"FAILED - Error parsing XML files: {e}") + return False + + self._remove_author_tracked_changes(original_root) + self._remove_author_tracked_changes(modified_root) + + modified_text = self._extract_text_content(modified_root) + original_text = self._extract_text_content(original_root) + + if modified_text != original_text: + error_message = self._generate_detailed_diff( + original_text, modified_text + ) + print(error_message) + return False + + if self.verbose: + print(f"PASSED - All changes by {self.author} are properly tracked") + return True + + def _generate_detailed_diff(self, original_text, modified_text): + error_parts = [ + f"FAILED - Document text doesn't match after removing {self.author}'s tracked changes", + "", + "Likely causes:", + " 1. Modified text inside another author's or tags", + " 2. Made edits without proper tracked changes", + " 3. Didn't nest inside when deleting another's insertion", + "", + "For pre-redlined documents, use correct patterns:", + " - To reject another's INSERTION: Nest inside their ", + " - To restore another's DELETION: Add new AFTER their ", + "", + ] + + git_diff = self._get_git_word_diff(original_text, modified_text) + if git_diff: + error_parts.extend(["Differences:", "============", git_diff]) + else: + error_parts.append("Unable to generate word diff (git not available)") + + return "\n".join(error_parts) + + def _get_git_word_diff(self, original_text, modified_text): + try: + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + original_file = temp_path / "original.txt" + modified_file = temp_path / "modified.txt" + + original_file.write_text(original_text, encoding="utf-8") + modified_file.write_text(modified_text, encoding="utf-8") + + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "--word-diff-regex=.", + "-U0", + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + lines = result.stdout.split("\n") + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + + if content_lines: + return "\n".join(content_lines) + + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "-U0", + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + lines = result.stdout.split("\n") + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + return "\n".join(content_lines) + + except (subprocess.CalledProcessError, FileNotFoundError, Exception): + pass + + return None + + def _remove_author_tracked_changes(self, root): + ins_tag = f"{{{self.namespaces['w']}}}ins" + del_tag = f"{{{self.namespaces['w']}}}del" + author_attr = f"{{{self.namespaces['w']}}}author" + + for parent in root.iter(): + to_remove = [] + for child in parent: + if child.tag == ins_tag and child.get(author_attr) == self.author: + to_remove.append(child) + for elem in to_remove: + parent.remove(elem) + + deltext_tag = f"{{{self.namespaces['w']}}}delText" + t_tag = f"{{{self.namespaces['w']}}}t" + + for parent in root.iter(): + to_process = [] + for child in parent: + if child.tag == del_tag and child.get(author_attr) == self.author: + to_process.append((child, list(parent).index(child))) + + for del_elem, del_index in reversed(to_process): + for elem in del_elem.iter(): + if elem.tag == deltext_tag: + elem.tag = t_tag + + for child in reversed(list(del_elem)): + parent.insert(del_index, child) + parent.remove(del_elem) + + def _extract_text_content(self, root): + p_tag = f"{{{self.namespaces['w']}}}p" + t_tag = f"{{{self.namespaces['w']}}}t" + + paragraphs = [] + for p_elem in root.findall(f".//{p_tag}"): + text_parts = [] + for t_elem in p_elem.findall(f".//{t_tag}"): + if t_elem.text: + text_parts.append(t_elem.text) + paragraph_text = "".join(text_parts) + if paragraph_text: + paragraphs.append(paragraph_text) + + return "\n".join(paragraphs) + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/skills/pptx/scripts/thumbnail.py b/skills/pptx/scripts/thumbnail.py new file mode 100755 index 0000000..edcbdc0 --- /dev/null +++ b/skills/pptx/scripts/thumbnail.py @@ -0,0 +1,289 @@ +"""Create thumbnail grids from PowerPoint presentation slides. + +Creates a grid layout of slide thumbnails for quick visual analysis. +Labels each thumbnail with its XML filename (e.g., slide1.xml). +Hidden slides are shown with a placeholder pattern. + +Usage: + python thumbnail.py input.pptx [output_prefix] [--cols N] + +Examples: + python thumbnail.py presentation.pptx + # Creates: thumbnails.jpg + + python thumbnail.py template.pptx grid --cols 4 + # Creates: grid.jpg (or grid-1.jpg, grid-2.jpg for large decks) +""" + +import argparse +import subprocess +import sys +import tempfile +import zipfile +from pathlib import Path + +import defusedxml.minidom +from office.soffice import get_soffice_env +from PIL import Image, ImageDraw, ImageFont + +THUMBNAIL_WIDTH = 300 +CONVERSION_DPI = 100 +MAX_COLS = 6 +DEFAULT_COLS = 3 +JPEG_QUALITY = 95 +GRID_PADDING = 20 +BORDER_WIDTH = 2 +FONT_SIZE_RATIO = 0.10 +LABEL_PADDING_RATIO = 0.4 + + +def main(): + parser = argparse.ArgumentParser( + description="Create thumbnail grids from PowerPoint slides." + ) + parser.add_argument("input", help="Input PowerPoint file (.pptx)") + parser.add_argument( + "output_prefix", + nargs="?", + default="thumbnails", + help="Output prefix for image files (default: thumbnails)", + ) + parser.add_argument( + "--cols", + type=int, + default=DEFAULT_COLS, + help=f"Number of columns (default: {DEFAULT_COLS}, max: {MAX_COLS})", + ) + + args = parser.parse_args() + + cols = min(args.cols, MAX_COLS) + if args.cols > MAX_COLS: + print(f"Warning: Columns limited to {MAX_COLS}") + + input_path = Path(args.input) + if not input_path.exists() or input_path.suffix.lower() != ".pptx": + print(f"Error: Invalid PowerPoint file: {args.input}", file=sys.stderr) + sys.exit(1) + + output_path = Path(f"{args.output_prefix}.jpg") + + try: + slide_info = get_slide_info(input_path) + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + visible_images = convert_to_images(input_path, temp_path) + + if not visible_images and not any(s["hidden"] for s in slide_info): + print("Error: No slides found", file=sys.stderr) + sys.exit(1) + + slides = build_slide_list(slide_info, visible_images, temp_path) + + grid_files = create_grids(slides, cols, THUMBNAIL_WIDTH, output_path) + + print(f"Created {len(grid_files)} grid(s):") + for grid_file in grid_files: + print(f" {grid_file}") + + except Exception as e: + print(f"Error: {e}", file=sys.stderr) + sys.exit(1) + + +def get_slide_info(pptx_path: Path) -> list[dict]: + with zipfile.ZipFile(pptx_path, "r") as zf: + rels_content = zf.read("ppt/_rels/presentation.xml.rels").decode("utf-8") + rels_dom = defusedxml.minidom.parseString(rels_content) + + rid_to_slide = {} + for rel in rels_dom.getElementsByTagName("Relationship"): + rid = rel.getAttribute("Id") + target = rel.getAttribute("Target") + rel_type = rel.getAttribute("Type") + if "slide" in rel_type and target.startswith("slides/"): + rid_to_slide[rid] = target.replace("slides/", "") + + pres_content = zf.read("ppt/presentation.xml").decode("utf-8") + pres_dom = defusedxml.minidom.parseString(pres_content) + + slides = [] + for sld_id in pres_dom.getElementsByTagName("p:sldId"): + rid = sld_id.getAttribute("r:id") + if rid in rid_to_slide: + hidden = sld_id.getAttribute("show") == "0" + slides.append({"name": rid_to_slide[rid], "hidden": hidden}) + + return slides + + +def build_slide_list( + slide_info: list[dict], + visible_images: list[Path], + temp_dir: Path, +) -> list[tuple[Path, str]]: + if visible_images: + with Image.open(visible_images[0]) as img: + placeholder_size = img.size + else: + placeholder_size = (1920, 1080) + + slides = [] + visible_idx = 0 + + for info in slide_info: + if info["hidden"]: + placeholder_path = temp_dir / f"hidden-{info['name']}.jpg" + placeholder_img = create_hidden_placeholder(placeholder_size) + placeholder_img.save(placeholder_path, "JPEG") + slides.append((placeholder_path, f"{info['name']} (hidden)")) + else: + if visible_idx < len(visible_images): + slides.append((visible_images[visible_idx], info["name"])) + visible_idx += 1 + + return slides + + +def create_hidden_placeholder(size: tuple[int, int]) -> Image.Image: + img = Image.new("RGB", size, color="#F0F0F0") + draw = ImageDraw.Draw(img) + line_width = max(5, min(size) // 100) + draw.line([(0, 0), size], fill="#CCCCCC", width=line_width) + draw.line([(size[0], 0), (0, size[1])], fill="#CCCCCC", width=line_width) + return img + + +def convert_to_images(pptx_path: Path, temp_dir: Path) -> list[Path]: + pdf_path = temp_dir / f"{pptx_path.stem}.pdf" + + result = subprocess.run( + [ + "soffice", + "--headless", + "--convert-to", + "pdf", + "--outdir", + str(temp_dir), + str(pptx_path), + ], + capture_output=True, + text=True, + env=get_soffice_env(), + ) + if result.returncode != 0 or not pdf_path.exists(): + raise RuntimeError("PDF conversion failed") + + result = subprocess.run( + [ + "pdftoppm", + "-jpeg", + "-r", + str(CONVERSION_DPI), + str(pdf_path), + str(temp_dir / "slide"), + ], + capture_output=True, + text=True, + ) + if result.returncode != 0: + raise RuntimeError("Image conversion failed") + + return sorted(temp_dir.glob("slide-*.jpg")) + + +def create_grids( + slides: list[tuple[Path, str]], + cols: int, + width: int, + output_path: Path, +) -> list[str]: + max_per_grid = cols * (cols + 1) + grid_files = [] + + for chunk_idx, start_idx in enumerate(range(0, len(slides), max_per_grid)): + end_idx = min(start_idx + max_per_grid, len(slides)) + chunk_slides = slides[start_idx:end_idx] + + grid = create_grid(chunk_slides, cols, width) + + if len(slides) <= max_per_grid: + grid_filename = output_path + else: + stem = output_path.stem + suffix = output_path.suffix + grid_filename = output_path.parent / f"{stem}-{chunk_idx + 1}{suffix}" + + grid_filename.parent.mkdir(parents=True, exist_ok=True) + grid.save(str(grid_filename), quality=JPEG_QUALITY) + grid_files.append(str(grid_filename)) + + return grid_files + + +def create_grid( + slides: list[tuple[Path, str]], + cols: int, + width: int, +) -> Image.Image: + font_size = int(width * FONT_SIZE_RATIO) + label_padding = int(font_size * LABEL_PADDING_RATIO) + + with Image.open(slides[0][0]) as img: + aspect = img.height / img.width + height = int(width * aspect) + + rows = (len(slides) + cols - 1) // cols + grid_w = cols * width + (cols + 1) * GRID_PADDING + grid_h = rows * (height + font_size + label_padding * 2) + (rows + 1) * GRID_PADDING + + grid = Image.new("RGB", (grid_w, grid_h), "white") + draw = ImageDraw.Draw(grid) + + try: + font = ImageFont.load_default(size=font_size) + except Exception: + font = ImageFont.load_default() + + for i, (img_path, slide_name) in enumerate(slides): + row, col = i // cols, i % cols + x = col * width + (col + 1) * GRID_PADDING + y_base = ( + row * (height + font_size + label_padding * 2) + (row + 1) * GRID_PADDING + ) + + label = slide_name + bbox = draw.textbbox((0, 0), label, font=font) + text_w = bbox[2] - bbox[0] + draw.text( + (x + (width - text_w) // 2, y_base + label_padding), + label, + fill="black", + font=font, + ) + + y_thumbnail = y_base + label_padding + font_size + label_padding + + with Image.open(img_path) as img: + img.thumbnail((width, height), Image.Resampling.LANCZOS) + w, h = img.size + tx = x + (width - w) // 2 + ty = y_thumbnail + (height - h) // 2 + grid.paste(img, (tx, ty)) + + if BORDER_WIDTH > 0: + draw.rectangle( + [ + (tx - BORDER_WIDTH, ty - BORDER_WIDTH), + (tx + w + BORDER_WIDTH - 1, ty + h + BORDER_WIDTH - 1), + ], + outline="gray", + width=BORDER_WIDTH, + ) + + return grid + + +if __name__ == "__main__": + main() diff --git a/skills/run-command-guide/SKILL.md b/skills/run-command-guide/SKILL.md new file mode 100644 index 0000000..2591379 --- /dev/null +++ b/skills/run-command-guide/SKILL.md @@ -0,0 +1,126 @@ +--- +name: run-command-guide +description: run_command 工具使用指南。介绍前台与后台模式、后台模式处理长时间命令的标准流程(command_id + sleep(wait_runcommand_id))、与 terminal 的边界、以及互斥参数约束。 +--- + +# run_command 使用指南 + +## 核心原则 + +- `run_command` 是 **一次性执行** 的终端命令,适合查询文件信息(`ls`、`file`、`grep -n`)、触发 CLI 工具、做简单的数据转换或运行非交互脚本。它**不能**用于启动交互式程序(如 `python` REPL、`vim`、`top`)。 +- 每次调用必须提供 `timeout`(单位秒,必须大于 0),系统会在超时后强制打断命令并返回当前输出。 +- 输出内容有字符数限制(默认 10000 字符),超过时会被截断或遭拒,因此尽量控制命令输出量,必要时拆分多个命令或保存到文件再读取。 +- `run_command` 是当前“单条命令”默认入口:短命令走前台,长命令优先走后台模式。 +- 只有在需要会话状态(`cd`/`source`/`export` 后多步连续)或常驻服务时,才优先使用 `terminal_*`。 + +## 长时间任务默认策略(重要) + +以下场景默认优先 `run_command(run_in_background=true)`: +- `npm run build` / `cargo build` / `mvn package` +- `pip install ...` / `npm install ...` / `brew install ...` / `apt install ...` +- 单次 `git clone`、单次数据导入/导出、单次压缩打包 + +标准流程: +1. 后台发起命令并拿到 `command_id` +2. 先继续处理其他任务 +3. 需要最终结果时调用 `sleep(wait_runcommand_id=command_id)` +4. 或等待系统完成通知 + +## 执行模式:前台 vs 后台 + +### 前台模式(默认,`run_in_background=false`) + +- timeout 上限 30 秒。命令在工具完成前会阻塞整个模型线程,返回后即可马上读取 `output`、`return_code` 等字段。 +- 适合“快照式”场景:查看目录、检查某个文件、运行一条短命令并立刻需要结果。 +- 要求命令在 30 秒内完成,否则会中断并返回 `status: "timeout"`。 + +### 后台模式(`run_in_background=true`) + +- timeout 最长 3600 秒。命令在后台继续执行,工具会等约 5 秒收集当前输出并返回,然后 **立即释放控制权**,让你继续处理其他任务。 +- 返回值里会包含 `command_id`,`status` 可能是 `running_background`。你会拿到已经产生的输出片段,但最终结果要靠系统通知或手动等待。 +- 成功或失败完成后,系统会自动发送一条 `system` 消息(内容类似 `后台命令已完成(completed)`,并附带 `command_id`、`command`、`output` 摘要)通知你。不要再依赖 `wait_sub_agent`/手动轮询。 +- 适合长时间任务(构建/安装/批处理)或你想“先发起再继续别的工作”。 +- 返回的 `command_id` 需要保留,用于后续通过 `sleep(wait_runcommand_id=...)` 等待结果或根据通知定位输出。 + +## 何时不要用 run_command(改用 terminal) + +- 需要 `cd` 后连续执行多条命令 +- 需要 `source venv/bin/activate` 后持续执行 +- 需要常驻服务(如 `npm run dev`)或持续追踪输出(如 `tail -f`) +- 需要长期复用同一 shell 上下文 + +## 等待后台命令完成:command_id + sleep(wait_runcommand_id) + +1. 调用后台命令后记录 `command_id`(形如 `cmd_<时间戳>_<8位hash>`); +2. 当你确实需要知道最终输出/返回码时,调用 `sleep(wait_runcommand_id=command_id)`; +3. `sleep` 工具会阻塞直到命令完成,返回值的 `result` 字段就是后台命令的最终 payload,`success`/`return_code` 等都可以直接使用; +4. `sleep` 默认会验证该 `command_id` 是否属于当前对话;跨会话调用会报错。 + +注意:即使你不调用 `sleep`,后台命令完成后也会有系统通知,只要收到消息就可以去交叉检查输出或 `sleep` 结果。 + +## `sleep` 工具的互斥参数规则 + +- `sleep` 工具支持三种等待方式:`seconds`(纯等待)、`wait_sub_agent_ids`(等待子智能体)、`wait_runcommand_id`(等待后台 `run_command`)。 +- **只能选择其中一个等待参数**,否则会报错 “sleep 的等待参数互斥”; +- 如果你需要短暂停顿而非等待任务完成,传 `seconds` 并可选填 `reason`; +- 需要等待后台命令完成时仅填写 `wait_runcommand_id`,其余两个参数必须为 `null`/不传。 +- `wait_runcommand_id` 返回: + ``` + { + "success": true, + "mode": "wait_runcommand_id", + "command_id": "...", + "result": {...}, # 与 run_command 结果结构一致 + "message": "后台 run_command 等待完成" + } + ``` + +## 常见坑与注意事项 + +1. **忘记设置 `timeout` 或给值 ≤ 0**:前台/后台都会立即报错。后台模式还有限制(>0 且 ≤3600)。 +2. **误以为后台模式会自动输出最终结果**:后台只返回 `running_background` 的片段,必须通过系统通知或 `sleep(wait_runcommand_id=...)` 才能拿到完整状态。 +3. **没有保存 `command_id` 即失去追踪**:`command_id` 是等待、复查、排错的唯一标识符,出错后可直接用它查询后台管理器。 +4. **在 wait/run_command 之间同时传多个 `sleep` 参数**:会被客户端拒绝,报错明确指出互斥约束。 +5. **命令输出过大(超过 10000 字符)**:会被截断并提示降低输出量,可考虑写入文件再用 `read_file` 读取,或分步执行。 +6. **尝试运行交互式程序**:`run_command` 明确禁止,命令会在 `_validate_command` 阶段失败。 +7. **后台命令属于别的对话**:`sleep(wait_runcommand_id=...)` 会报 “该后台命令不属于当前对话”,只能在原 conversation 中等待。 +8. **误把会话型任务交给 run_command**:当任务依赖 shell 上下文时请切换 `terminal_*`。 +9. **误以为 `sleep` 会自动拼接 system message**:`sleep` 只是等待,系统通知仍旧按背景轮询插入,你收到 `system` 消息即可确认状态。 + +## 示例 + +### 前台快速查询 + +```python +run_command(command="ls -a docs | head", timeout=5) +# 立即得到输出和 return_code +``` + +### 后台安装并等待 + +```python +# 发起后台安装 +bg = run_command( + command="python -m pip install -r requirements.txt", + timeout=600, + run_in_background=True +) +command_id = bg.get("command_id") + +# 可先去做别的事情,或立即等待最终状态 +sleep(wait_runcommand_id=command_id, reason="等待 pip 安装完成") +# 返回 result["result"]["output"], return_code 等最终内容 +``` + +### 结合系统通知与 sleep + +- 系统会插入类似 `后台命令已完成(completed)` 的 `system` 消息,包含 `command_id`。 +- 如果你优先希望第一时间处理输出,可以在收到消息后再 `sleep(wait_runcommand_id=command_id)` 来确认成功状态(即使已有通知,也可再次 `sleep` 获得 `result` 结构)。 + +## 总结 + +- 单条命令默认使用 run_command:前台用于快照,后台用于长任务。 +- 后台结果需要 `command_id + sleep(wait_runcommand_id=...)` 或系统通知来确认最终状态。 +- 会话型/常驻型任务请使用 terminal。 +- `sleep` 的等待参数互斥,务必只传一个。 +- 避免交互式命令、超出字符/超时限制,必要时将输出先写到文件再读。 diff --git a/skills/skill-creator/LICENSE.txt b/skills/skill-creator/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/skills/skill-creator/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/skills/skill-creator/SKILL.md b/skills/skill-creator/SKILL.md new file mode 100644 index 0000000..1589797 --- /dev/null +++ b/skills/skill-creator/SKILL.md @@ -0,0 +1,357 @@ +--- +name: skill-creator +description: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations. +license: Complete terms in LICENSE.txt +--- + +# Skill Creator + +This skill provides guidance for creating effective skills. + +## About Skills + +Skills are modular, self-contained packages that extend Claude's capabilities by providing +specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific +domains or tasks—they transform Claude from a general-purpose agent into a specialized agent +equipped with procedural knowledge that no model can fully possess. + +### What Skills Provide + +1. Specialized workflows - Multi-step procedures for specific domains +2. Tool integrations - Instructions for working with specific file formats or APIs +3. Domain expertise - Company-specific knowledge, schemas, business logic +4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks + +## Core Principles + +### Concise is Key + +The context window is a public good. Skills share the context window with everything else Claude needs: system prompt, conversation history, other Skills' metadata, and the actual user request. + +**Default assumption: Claude is already very smart.** Only add context Claude doesn't already have. Challenge each piece of information: "Does Claude really need this explanation?" and "Does this paragraph justify its token cost?" + +Prefer concise examples over verbose explanations. + +### Set Appropriate Degrees of Freedom + +Match the level of specificity to the task's fragility and variability: + +**High freedom (text-based instructions)**: Use when multiple approaches are valid, decisions depend on context, or heuristics guide the approach. + +**Medium freedom (pseudocode or scripts with parameters)**: Use when a preferred pattern exists, some variation is acceptable, or configuration affects behavior. + +**Low freedom (specific scripts, few parameters)**: Use when operations are fragile and error-prone, consistency is critical, or a specific sequence must be followed. + +Think of Claude as exploring a path: a narrow bridge with cliffs needs specific guardrails (low freedom), while an open field allows many routes (high freedom). + +### Anatomy of a Skill + +Every skill consists of a required SKILL.md file and optional bundled resources: + +``` +skill-name/ +├── SKILL.md (required) +│ ├── YAML frontmatter metadata (required) +│ │ ├── name: (required) +│ │ ├── description: (required) +│ │ └── compatibility: (optional, rarely needed) +│ └── Markdown instructions (required) +└── Bundled Resources (optional) + ├── scripts/ - Executable code (Python/Bash/etc.) + ├── references/ - Documentation intended to be loaded into context as needed + └── assets/ - Files used in output (templates, icons, fonts, etc.) +``` + +#### SKILL.md (required) + +Every SKILL.md consists of: + +- **Frontmatter** (YAML): Contains `name` and `description` fields (required), plus optional fields like `license`, `metadata`, and `compatibility`. Only `name` and `description` are read by Claude to determine when the skill triggers, so be clear and comprehensive about what the skill is and when it should be used. The `compatibility` field is for noting environment requirements (target product, system packages, etc.) but most skills don't need it. +- **Body** (Markdown): Instructions and guidance for using the skill. Only loaded AFTER the skill triggers (if at all). + +#### Bundled Resources (optional) + +##### Scripts (`scripts/`) + +Executable code (Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten. + +- **When to include**: When the same code is being rewritten repeatedly or deterministic reliability is needed +- **Example**: `scripts/rotate_pdf.py` for PDF rotation tasks +- **Benefits**: Token efficient, deterministic, may be executed without loading into context +- **Note**: Scripts may still need to be read by Claude for patching or environment-specific adjustments + +##### References (`references/`) + +Documentation and reference material intended to be loaded as needed into context to inform Claude's process and thinking. + +- **When to include**: For documentation that Claude should reference while working +- **Examples**: `references/finance.md` for financial schemas, `references/mnda.md` for company NDA template, `references/policies.md` for company policies, `references/api_docs.md` for API specifications +- **Use cases**: Database schemas, API documentation, domain knowledge, company policies, detailed workflow guides +- **Benefits**: Keeps SKILL.md lean, loaded only when Claude determines it's needed +- **Best practice**: If files are large (>10k words), include grep search patterns in SKILL.md +- **Avoid duplication**: Information should live in either SKILL.md or references files, not both. Prefer references files for detailed information unless it's truly core to the skill—this keeps SKILL.md lean while making information discoverable without hogging the context window. Keep only essential procedural instructions and workflow guidance in SKILL.md; move detailed reference material, schemas, and examples to references files. + +##### Assets (`assets/`) + +Files not intended to be loaded into context, but rather used within the output Claude produces. + +- **When to include**: When the skill needs files that will be used in the final output +- **Examples**: `assets/logo.png` for brand assets, `assets/slides.pptx` for PowerPoint templates, `assets/frontend-template/` for HTML/React boilerplate, `assets/font.ttf` for typography +- **Use cases**: Templates, images, icons, boilerplate code, fonts, sample documents that get copied or modified +- **Benefits**: Separates output resources from documentation, enables Claude to use files without loading them into context + +#### What to Not Include in a Skill + +A skill should only contain essential files that directly support its functionality. Do NOT create extraneous documentation or auxiliary files, including: + +- README.md +- INSTALLATION_GUIDE.md +- QUICK_REFERENCE.md +- CHANGELOG.md +- etc. + +The skill should only contain the information needed for an AI agent to do the job at hand. It should not contain auxilary context about the process that went into creating it, setup and testing procedures, user-facing documentation, etc. Creating additional documentation files just adds clutter and confusion. + +### Progressive Disclosure Design Principle + +Skills use a three-level loading system to manage context efficiently: + +1. **Metadata (name + description)** - Always in context (~100 words) +2. **SKILL.md body** - When skill triggers (<5k words) +3. **Bundled resources** - As needed by Claude (Unlimited because scripts can be executed without reading into context window) + +#### Progressive Disclosure Patterns + +Keep SKILL.md body to the essentials and under 500 lines to minimize context bloat. Split content into separate files when approaching this limit. When splitting out content into other files, it is very important to reference them from SKILL.md and describe clearly when to read them, to ensure the reader of the skill knows they exist and when to use them. + +**Key principle:** When a skill supports multiple variations, frameworks, or options, keep only the core workflow and selection guidance in SKILL.md. Move variant-specific details (patterns, examples, configuration) into separate reference files. + +**Pattern 1: High-level guide with references** + +```markdown +# PDF Processing + +## Quick start + +Extract text with pdfplumber: +[code example] + +## Advanced features + +- **Form filling**: See [FORMS.md](FORMS.md) for complete guide +- **API reference**: See [REFERENCE.md](REFERENCE.md) for all methods +- **Examples**: See [EXAMPLES.md](EXAMPLES.md) for common patterns +``` + +Claude loads FORMS.md, REFERENCE.md, or EXAMPLES.md only when needed. + +**Pattern 2: Domain-specific organization** + +For Skills with multiple domains, organize content by domain to avoid loading irrelevant context: + +``` +bigquery-skill/ +├── SKILL.md (overview and navigation) +└── reference/ + ├── finance.md (revenue, billing metrics) + ├── sales.md (opportunities, pipeline) + ├── product.md (API usage, features) + └── marketing.md (campaigns, attribution) +``` + +When a user asks about sales metrics, Claude only reads sales.md. + +Similarly, for skills supporting multiple frameworks or variants, organize by variant: + +``` +cloud-deploy/ +├── SKILL.md (workflow + provider selection) +└── references/ + ├── aws.md (AWS deployment patterns) + ├── gcp.md (GCP deployment patterns) + └── azure.md (Azure deployment patterns) +``` + +When the user chooses AWS, Claude only reads aws.md. + +**Pattern 3: Conditional details** + +Show basic content, link to advanced content: + +```markdown +# DOCX Processing + +## Creating documents + +Use docx-js for new documents. See [DOCX-JS.md](DOCX-JS.md). + +## Editing documents + +For simple edits, modify the XML directly. + +**For tracked changes**: See [REDLINING.md](REDLINING.md) +**For OOXML details**: See [OOXML.md](OOXML.md) +``` + +Claude reads REDLINING.md or OOXML.md only when the user needs those features. + +**Important guidelines:** + +- **Avoid deeply nested references** - Keep references one level deep from SKILL.md. All reference files should link directly from SKILL.md. +- **Structure longer reference files** - For files longer than 100 lines, include a table of contents at the top so Claude can see the full scope when previewing. + +## Skill Creation Process + +Skill creation involves these steps: + +1. Understand the skill with concrete examples +2. Plan reusable skill contents (scripts, references, assets) +3. Initialize the skill (run init_skill.py) +4. Edit the skill (implement resources and write SKILL.md) +5. Package the skill (run package_skill.py) +6. Iterate based on real usage + +Follow these steps in order, skipping only if there is a clear reason why they are not applicable. + +### Step 1: Understanding the Skill with Concrete Examples + +Skip this step only when the skill's usage patterns are already clearly understood. It remains valuable even when working with an existing skill. + +To create an effective skill, clearly understand concrete examples of how the skill will be used. This understanding can come from either direct user examples or generated examples that are validated with user feedback. + +For example, when building an image-editor skill, relevant questions include: + +- "What functionality should the image-editor skill support? Editing, rotating, anything else?" +- "Can you give some examples of how this skill would be used?" +- "I can imagine users asking for things like 'Remove the red-eye from this image' or 'Rotate this image'. Are there other ways you imagine this skill being used?" +- "What would a user say that should trigger this skill?" + +To avoid overwhelming users, avoid asking too many questions in a single message. Start with the most important questions and follow up as needed for better effectiveness. + +Conclude this step when there is a clear sense of the functionality the skill should support. + +### Step 2: Planning the Reusable Skill Contents + +To turn concrete examples into an effective skill, analyze each example by: + +1. Considering how to execute on the example from scratch +2. Identifying what scripts, references, and assets would be helpful when executing these workflows repeatedly + +Example: When building a `pdf-editor` skill to handle queries like "Help me rotate this PDF," the analysis shows: + +1. Rotating a PDF requires re-writing the same code each time +2. A `scripts/rotate_pdf.py` script would be helpful to store in the skill + +Example: When designing a `frontend-webapp-builder` skill for queries like "Build me a todo app" or "Build me a dashboard to track my steps," the analysis shows: + +1. Writing a frontend webapp requires the same boilerplate HTML/React each time +2. An `assets/hello-world/` template containing the boilerplate HTML/React project files would be helpful to store in the skill + +Example: When building a `big-query` skill to handle queries like "How many users have logged in today?" the analysis shows: + +1. Querying BigQuery requires re-discovering the table schemas and relationships each time +2. A `references/schema.md` file documenting the table schemas would be helpful to store in the skill + +To establish the skill's contents, analyze each concrete example to create a list of the reusable resources to include: scripts, references, and assets. + +### Step 3: Initializing the Skill + +At this point, it is time to actually create the skill. + +Skip this step only if the skill being developed already exists, and iteration or packaging is needed. In this case, continue to the next step. + +When creating a new skill from scratch, always run the `init_skill.py` script. The script conveniently generates a new template skill directory that automatically includes everything a skill requires, making the skill creation process much more efficient and reliable. + +Usage: + +```bash +scripts/init_skill.py --path +``` + +The script: + +- Creates the skill directory at the specified path +- Generates a SKILL.md template with proper frontmatter and TODO placeholders +- Creates example resource directories: `scripts/`, `references/`, and `assets/` +- Adds example files in each directory that can be customized or deleted + +After initialization, customize or remove the generated SKILL.md and example files as needed. + +### Step 4: Edit the Skill + +When editing the (newly-generated or existing) skill, remember that the skill is being created for another instance of Claude to use. Include information that would be beneficial and non-obvious to Claude. Consider what procedural knowledge, domain-specific details, or reusable assets would help another Claude instance execute these tasks more effectively. + +#### Learn Proven Design Patterns + +Consult these helpful guides based on your skill's needs: + +- **Multi-step processes**: See references/workflows.md for sequential workflows and conditional logic +- **Specific output formats or quality standards**: See references/output-patterns.md for template and example patterns + +These files contain established best practices for effective skill design. + +#### Start with Reusable Skill Contents + +To begin implementation, start with the reusable resources identified above: `scripts/`, `references/`, and `assets/` files. Note that this step may require user input. For example, when implementing a `brand-guidelines` skill, the user may need to provide brand assets or templates to store in `assets/`, or documentation to store in `references/`. + +Added scripts must be tested by actually running them to ensure there are no bugs and that the output matches what is expected. If there are many similar scripts, only a representative sample needs to be tested to ensure confidence that they all work while balancing time to completion. + +Any example files and directories not needed for the skill should be deleted. The initialization script creates example files in `scripts/`, `references/`, and `assets/` to demonstrate structure, but most skills won't need all of them. + +#### Update SKILL.md + +**Writing Guidelines:** Always use imperative/infinitive form. + +##### Frontmatter + +Write the YAML frontmatter with `name` and `description`: + +- `name`: The skill name +- `description`: This is the primary triggering mechanism for your skill, and helps Claude understand when to use the skill. + - Include both what the Skill does and specific triggers/contexts for when to use it. + - Include all "when to use" information here - Not in the body. The body is only loaded after triggering, so "When to Use This Skill" sections in the body are not helpful to Claude. + - Example description for a `docx` skill: "Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. Use when Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks" + +Do not include any other fields in YAML frontmatter. + +##### Body + +Write instructions for using the skill and its bundled resources. + +### Step 5: Packaging a Skill + +Once development of the skill is complete, it must be packaged into a distributable .skill file that gets shared with the user. The packaging process automatically validates the skill first to ensure it meets all requirements: + +```bash +scripts/package_skill.py +``` + +Optional output directory specification: + +```bash +scripts/package_skill.py ./dist +``` + +The packaging script will: + +1. **Validate** the skill automatically, checking: + + - YAML frontmatter format and required fields + - Skill naming conventions and directory structure + - Description completeness and quality + - File organization and resource references + +2. **Package** the skill if validation passes, creating a .skill file named after the skill (e.g., `my-skill.skill`) that includes all files and maintains the proper directory structure for distribution. The .skill file is a zip file with a .skill extension. + +If validation fails, the script will report the errors and exit without creating a package. Fix any validation errors and run the packaging command again. + +### Step 6: Iterate + +After testing the skill, users may request improvements. Often this happens right after using the skill, with fresh context of how the skill performed. + +**Iteration workflow:** + +1. Use the skill on real tasks +2. Notice struggles or inefficiencies +3. Identify how SKILL.md or bundled resources should be updated +4. Implement changes and test again diff --git a/skills/skill-creator/references/output-patterns.md b/skills/skill-creator/references/output-patterns.md new file mode 100644 index 0000000..073ddda --- /dev/null +++ b/skills/skill-creator/references/output-patterns.md @@ -0,0 +1,82 @@ +# Output Patterns + +Use these patterns when skills need to produce consistent, high-quality output. + +## Template Pattern + +Provide templates for output format. Match the level of strictness to your needs. + +**For strict requirements (like API responses or data formats):** + +```markdown +## Report structure + +ALWAYS use this exact template structure: + +# [Analysis Title] + +## Executive summary +[One-paragraph overview of key findings] + +## Key findings +- Finding 1 with supporting data +- Finding 2 with supporting data +- Finding 3 with supporting data + +## Recommendations +1. Specific actionable recommendation +2. Specific actionable recommendation +``` + +**For flexible guidance (when adaptation is useful):** + +```markdown +## Report structure + +Here is a sensible default format, but use your best judgment: + +# [Analysis Title] + +## Executive summary +[Overview] + +## Key findings +[Adapt sections based on what you discover] + +## Recommendations +[Tailor to the specific context] + +Adjust sections as needed for the specific analysis type. +``` + +## Examples Pattern + +For skills where output quality depends on seeing examples, provide input/output pairs: + +```markdown +## Commit message format + +Generate commit messages following these examples: + +**Example 1:** +Input: Added user authentication with JWT tokens +Output: +``` +feat(auth): implement JWT-based authentication + +Add login endpoint and token validation middleware +``` + +**Example 2:** +Input: Fixed bug where dates displayed incorrectly in reports +Output: +``` +fix(reports): correct date formatting in timezone conversion + +Use UTC timestamps consistently across report generation +``` + +Follow this style: type(scope): brief description, then detailed explanation. +``` + +Examples help Claude understand the desired style and level of detail more clearly than descriptions alone. diff --git a/skills/skill-creator/references/workflows.md b/skills/skill-creator/references/workflows.md new file mode 100644 index 0000000..a350c3c --- /dev/null +++ b/skills/skill-creator/references/workflows.md @@ -0,0 +1,28 @@ +# Workflow Patterns + +## Sequential Workflows + +For complex tasks, break operations into clear, sequential steps. It is often helpful to give Claude an overview of the process towards the beginning of SKILL.md: + +```markdown +Filling a PDF form involves these steps: + +1. Analyze the form (run analyze_form.py) +2. Create field mapping (edit fields.json) +3. Validate mapping (run validate_fields.py) +4. Fill the form (run fill_form.py) +5. Verify output (run verify_output.py) +``` + +## Conditional Workflows + +For tasks with branching logic, guide Claude through decision points: + +```markdown +1. Determine the modification type: + **Creating new content?** → Follow "Creation workflow" below + **Editing existing content?** → Follow "Editing workflow" below + +2. Creation workflow: [steps] +3. Editing workflow: [steps] +``` \ No newline at end of file diff --git a/skills/skill-creator/scripts/init_skill.py b/skills/skill-creator/scripts/init_skill.py new file mode 100755 index 0000000..c544fc7 --- /dev/null +++ b/skills/skill-creator/scripts/init_skill.py @@ -0,0 +1,303 @@ +#!/usr/bin/env python3 +""" +Skill Initializer - Creates a new skill from template + +Usage: + init_skill.py --path + +Examples: + init_skill.py my-new-skill --path skills/public + init_skill.py my-api-helper --path skills/private + init_skill.py custom-skill --path /custom/location +""" + +import sys +from pathlib import Path + + +SKILL_TEMPLATE = """--- +name: {skill_name} +description: [TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it.] +--- + +# {skill_title} + +## Overview + +[TODO: 1-2 sentences explaining what this skill enables] + +## Structuring This Skill + +[TODO: Choose the structure that best fits this skill's purpose. Common patterns: + +**1. Workflow-Based** (best for sequential processes) +- Works well when there are clear step-by-step procedures +- Example: DOCX skill with "Workflow Decision Tree" → "Reading" → "Creating" → "Editing" +- Structure: ## Overview → ## Workflow Decision Tree → ## Step 1 → ## Step 2... + +**2. Task-Based** (best for tool collections) +- Works well when the skill offers different operations/capabilities +- Example: PDF skill with "Quick Start" → "Merge PDFs" → "Split PDFs" → "Extract Text" +- Structure: ## Overview → ## Quick Start → ## Task Category 1 → ## Task Category 2... + +**3. Reference/Guidelines** (best for standards or specifications) +- Works well for brand guidelines, coding standards, or requirements +- Example: Brand styling with "Brand Guidelines" → "Colors" → "Typography" → "Features" +- Structure: ## Overview → ## Guidelines → ## Specifications → ## Usage... + +**4. Capabilities-Based** (best for integrated systems) +- Works well when the skill provides multiple interrelated features +- Example: Product Management with "Core Capabilities" → numbered capability list +- Structure: ## Overview → ## Core Capabilities → ### 1. Feature → ### 2. Feature... + +Patterns can be mixed and matched as needed. Most skills combine patterns (e.g., start with task-based, add workflow for complex operations). + +Delete this entire "Structuring This Skill" section when done - it's just guidance.] + +## [TODO: Replace with the first main section based on chosen structure] + +[TODO: Add content here. See examples in existing skills: +- Code samples for technical skills +- Decision trees for complex workflows +- Concrete examples with realistic user requests +- References to scripts/templates/references as needed] + +## Resources + +This skill includes example resource directories that demonstrate how to organize different types of bundled resources: + +### scripts/ +Executable code (Python/Bash/etc.) that can be run directly to perform specific operations. + +**Examples from other skills:** +- PDF skill: `fill_fillable_fields.py`, `extract_form_field_info.py` - utilities for PDF manipulation +- DOCX skill: `document.py`, `utilities.py` - Python modules for document processing + +**Appropriate for:** Python scripts, shell scripts, or any executable code that performs automation, data processing, or specific operations. + +**Note:** Scripts may be executed without loading into context, but can still be read by Claude for patching or environment adjustments. + +### references/ +Documentation and reference material intended to be loaded into context to inform Claude's process and thinking. + +**Examples from other skills:** +- Product management: `communication.md`, `context_building.md` - detailed workflow guides +- BigQuery: API reference documentation and query examples +- Finance: Schema documentation, company policies + +**Appropriate for:** In-depth documentation, API references, database schemas, comprehensive guides, or any detailed information that Claude should reference while working. + +### assets/ +Files not intended to be loaded into context, but rather used within the output Claude produces. + +**Examples from other skills:** +- Brand styling: PowerPoint template files (.pptx), logo files +- Frontend builder: HTML/React boilerplate project directories +- Typography: Font files (.ttf, .woff2) + +**Appropriate for:** Templates, boilerplate code, document templates, images, icons, fonts, or any files meant to be copied or used in the final output. + +--- + +**Any unneeded directories can be deleted.** Not every skill requires all three types of resources. +""" + +EXAMPLE_SCRIPT = '''#!/usr/bin/env python3 +""" +Example helper script for {skill_name} + +This is a placeholder script that can be executed directly. +Replace with actual implementation or delete if not needed. + +Example real scripts from other skills: +- pdf/scripts/fill_fillable_fields.py - Fills PDF form fields +- pdf/scripts/convert_pdf_to_images.py - Converts PDF pages to images +""" + +def main(): + print("This is an example script for {skill_name}") + # TODO: Add actual script logic here + # This could be data processing, file conversion, API calls, etc. + +if __name__ == "__main__": + main() +''' + +EXAMPLE_REFERENCE = """# Reference Documentation for {skill_title} + +This is a placeholder for detailed reference documentation. +Replace with actual reference content or delete if not needed. + +Example real reference docs from other skills: +- product-management/references/communication.md - Comprehensive guide for status updates +- product-management/references/context_building.md - Deep-dive on gathering context +- bigquery/references/ - API references and query examples + +## When Reference Docs Are Useful + +Reference docs are ideal for: +- Comprehensive API documentation +- Detailed workflow guides +- Complex multi-step processes +- Information too lengthy for main SKILL.md +- Content that's only needed for specific use cases + +## Structure Suggestions + +### API Reference Example +- Overview +- Authentication +- Endpoints with examples +- Error codes +- Rate limits + +### Workflow Guide Example +- Prerequisites +- Step-by-step instructions +- Common patterns +- Troubleshooting +- Best practices +""" + +EXAMPLE_ASSET = """# Example Asset File + +This placeholder represents where asset files would be stored. +Replace with actual asset files (templates, images, fonts, etc.) or delete if not needed. + +Asset files are NOT intended to be loaded into context, but rather used within +the output Claude produces. + +Example asset files from other skills: +- Brand guidelines: logo.png, slides_template.pptx +- Frontend builder: hello-world/ directory with HTML/React boilerplate +- Typography: custom-font.ttf, font-family.woff2 +- Data: sample_data.csv, test_dataset.json + +## Common Asset Types + +- Templates: .pptx, .docx, boilerplate directories +- Images: .png, .jpg, .svg, .gif +- Fonts: .ttf, .otf, .woff, .woff2 +- Boilerplate code: Project directories, starter files +- Icons: .ico, .svg +- Data files: .csv, .json, .xml, .yaml + +Note: This is a text placeholder. Actual assets can be any file type. +""" + + +def title_case_skill_name(skill_name): + """Convert hyphenated skill name to Title Case for display.""" + return ' '.join(word.capitalize() for word in skill_name.split('-')) + + +def init_skill(skill_name, path): + """ + Initialize a new skill directory with template SKILL.md. + + Args: + skill_name: Name of the skill + path: Path where the skill directory should be created + + Returns: + Path to created skill directory, or None if error + """ + # Determine skill directory path + skill_dir = Path(path).resolve() / skill_name + + # Check if directory already exists + if skill_dir.exists(): + print(f"❌ Error: Skill directory already exists: {skill_dir}") + return None + + # Create skill directory + try: + skill_dir.mkdir(parents=True, exist_ok=False) + print(f"✅ Created skill directory: {skill_dir}") + except Exception as e: + print(f"❌ Error creating directory: {e}") + return None + + # Create SKILL.md from template + skill_title = title_case_skill_name(skill_name) + skill_content = SKILL_TEMPLATE.format( + skill_name=skill_name, + skill_title=skill_title + ) + + skill_md_path = skill_dir / 'SKILL.md' + try: + skill_md_path.write_text(skill_content) + print("✅ Created SKILL.md") + except Exception as e: + print(f"❌ Error creating SKILL.md: {e}") + return None + + # Create resource directories with example files + try: + # Create scripts/ directory with example script + scripts_dir = skill_dir / 'scripts' + scripts_dir.mkdir(exist_ok=True) + example_script = scripts_dir / 'example.py' + example_script.write_text(EXAMPLE_SCRIPT.format(skill_name=skill_name)) + example_script.chmod(0o755) + print("✅ Created scripts/example.py") + + # Create references/ directory with example reference doc + references_dir = skill_dir / 'references' + references_dir.mkdir(exist_ok=True) + example_reference = references_dir / 'api_reference.md' + example_reference.write_text(EXAMPLE_REFERENCE.format(skill_title=skill_title)) + print("✅ Created references/api_reference.md") + + # Create assets/ directory with example asset placeholder + assets_dir = skill_dir / 'assets' + assets_dir.mkdir(exist_ok=True) + example_asset = assets_dir / 'example_asset.txt' + example_asset.write_text(EXAMPLE_ASSET) + print("✅ Created assets/example_asset.txt") + except Exception as e: + print(f"❌ Error creating resource directories: {e}") + return None + + # Print next steps + print(f"\n✅ Skill '{skill_name}' initialized successfully at {skill_dir}") + print("\nNext steps:") + print("1. Edit SKILL.md to complete the TODO items and update the description") + print("2. Customize or delete the example files in scripts/, references/, and assets/") + print("3. Run the validator when ready to check the skill structure") + + return skill_dir + + +def main(): + if len(sys.argv) < 4 or sys.argv[2] != '--path': + print("Usage: init_skill.py --path ") + print("\nSkill name requirements:") + print(" - Kebab-case identifier (e.g., 'my-data-analyzer')") + print(" - Lowercase letters, digits, and hyphens only") + print(" - Max 64 characters") + print(" - Must match directory name exactly") + print("\nExamples:") + print(" init_skill.py my-new-skill --path skills/public") + print(" init_skill.py my-api-helper --path skills/private") + print(" init_skill.py custom-skill --path /custom/location") + sys.exit(1) + + skill_name = sys.argv[1] + path = sys.argv[3] + + print(f"🚀 Initializing skill: {skill_name}") + print(f" Location: {path}") + print() + + result = init_skill(skill_name, path) + + if result: + sys.exit(0) + else: + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/skills/skill-creator/scripts/package_skill.py b/skills/skill-creator/scripts/package_skill.py new file mode 100755 index 0000000..5cd36cb --- /dev/null +++ b/skills/skill-creator/scripts/package_skill.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +""" +Skill Packager - Creates a distributable .skill file of a skill folder + +Usage: + python utils/package_skill.py [output-directory] + +Example: + python utils/package_skill.py skills/public/my-skill + python utils/package_skill.py skills/public/my-skill ./dist +""" + +import sys +import zipfile +from pathlib import Path +from quick_validate import validate_skill + + +def package_skill(skill_path, output_dir=None): + """ + Package a skill folder into a .skill file. + + Args: + skill_path: Path to the skill folder + output_dir: Optional output directory for the .skill file (defaults to current directory) + + Returns: + Path to the created .skill file, or None if error + """ + skill_path = Path(skill_path).resolve() + + # Validate skill folder exists + if not skill_path.exists(): + print(f"❌ Error: Skill folder not found: {skill_path}") + return None + + if not skill_path.is_dir(): + print(f"❌ Error: Path is not a directory: {skill_path}") + return None + + # Validate SKILL.md exists + skill_md = skill_path / "SKILL.md" + if not skill_md.exists(): + print(f"❌ Error: SKILL.md not found in {skill_path}") + return None + + # Run validation before packaging + print("🔍 Validating skill...") + valid, message = validate_skill(skill_path) + if not valid: + print(f"❌ Validation failed: {message}") + print(" Please fix the validation errors before packaging.") + return None + print(f"✅ {message}\n") + + # Determine output location + skill_name = skill_path.name + if output_dir: + output_path = Path(output_dir).resolve() + output_path.mkdir(parents=True, exist_ok=True) + else: + output_path = Path.cwd() + + skill_filename = output_path / f"{skill_name}.skill" + + # Create the .skill file (zip format) + try: + with zipfile.ZipFile(skill_filename, 'w', zipfile.ZIP_DEFLATED) as zipf: + # Walk through the skill directory + for file_path in skill_path.rglob('*'): + if file_path.is_file(): + # Calculate the relative path within the zip + arcname = file_path.relative_to(skill_path.parent) + zipf.write(file_path, arcname) + print(f" Added: {arcname}") + + print(f"\n✅ Successfully packaged skill to: {skill_filename}") + return skill_filename + + except Exception as e: + print(f"❌ Error creating .skill file: {e}") + return None + + +def main(): + if len(sys.argv) < 2: + print("Usage: python utils/package_skill.py [output-directory]") + print("\nExample:") + print(" python utils/package_skill.py skills/public/my-skill") + print(" python utils/package_skill.py skills/public/my-skill ./dist") + sys.exit(1) + + skill_path = sys.argv[1] + output_dir = sys.argv[2] if len(sys.argv) > 2 else None + + print(f"📦 Packaging skill: {skill_path}") + if output_dir: + print(f" Output directory: {output_dir}") + print() + + result = package_skill(skill_path, output_dir) + + if result: + sys.exit(0) + else: + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/skills/skill-creator/scripts/quick_validate.py b/skills/skill-creator/scripts/quick_validate.py new file mode 100755 index 0000000..ed8e1dd --- /dev/null +++ b/skills/skill-creator/scripts/quick_validate.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +""" +Quick validation script for skills - minimal version +""" + +import sys +import os +import re +import yaml +from pathlib import Path + +def validate_skill(skill_path): + """Basic validation of a skill""" + skill_path = Path(skill_path) + + # Check SKILL.md exists + skill_md = skill_path / 'SKILL.md' + if not skill_md.exists(): + return False, "SKILL.md not found" + + # Read and validate frontmatter + content = skill_md.read_text() + if not content.startswith('---'): + return False, "No YAML frontmatter found" + + # Extract frontmatter + match = re.match(r'^---\n(.*?)\n---', content, re.DOTALL) + if not match: + return False, "Invalid frontmatter format" + + frontmatter_text = match.group(1) + + # Parse YAML frontmatter + try: + frontmatter = yaml.safe_load(frontmatter_text) + if not isinstance(frontmatter, dict): + return False, "Frontmatter must be a YAML dictionary" + except yaml.YAMLError as e: + return False, f"Invalid YAML in frontmatter: {e}" + + # Define allowed properties + ALLOWED_PROPERTIES = {'name', 'description', 'license', 'allowed-tools', 'metadata', 'compatibility'} + + # Check for unexpected properties (excluding nested keys under metadata) + unexpected_keys = set(frontmatter.keys()) - ALLOWED_PROPERTIES + if unexpected_keys: + return False, ( + f"Unexpected key(s) in SKILL.md frontmatter: {', '.join(sorted(unexpected_keys))}. " + f"Allowed properties are: {', '.join(sorted(ALLOWED_PROPERTIES))}" + ) + + # Check required fields + if 'name' not in frontmatter: + return False, "Missing 'name' in frontmatter" + if 'description' not in frontmatter: + return False, "Missing 'description' in frontmatter" + + # Extract name for validation + name = frontmatter.get('name', '') + if not isinstance(name, str): + return False, f"Name must be a string, got {type(name).__name__}" + name = name.strip() + if name: + # Check naming convention (kebab-case: lowercase with hyphens) + if not re.match(r'^[a-z0-9-]+$', name): + return False, f"Name '{name}' should be kebab-case (lowercase letters, digits, and hyphens only)" + if name.startswith('-') or name.endswith('-') or '--' in name: + return False, f"Name '{name}' cannot start/end with hyphen or contain consecutive hyphens" + # Check name length (max 64 characters per spec) + if len(name) > 64: + return False, f"Name is too long ({len(name)} characters). Maximum is 64 characters." + + # Extract and validate description + description = frontmatter.get('description', '') + if not isinstance(description, str): + return False, f"Description must be a string, got {type(description).__name__}" + description = description.strip() + if description: + # Check for angle brackets + if '<' in description or '>' in description: + return False, "Description cannot contain angle brackets (< or >)" + # Check description length (max 1024 characters per spec) + if len(description) > 1024: + return False, f"Description is too long ({len(description)} characters). Maximum is 1024 characters." + + # Validate compatibility field if present (optional) + compatibility = frontmatter.get('compatibility', '') + if compatibility: + if not isinstance(compatibility, str): + return False, f"Compatibility must be a string, got {type(compatibility).__name__}" + if len(compatibility) > 500: + return False, f"Compatibility is too long ({len(compatibility)} characters). Maximum is 500 characters." + + return True, "Skill is valid!" + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: python quick_validate.py ") + sys.exit(1) + + valid, message = validate_skill(sys.argv[1]) + print(message) + sys.exit(0 if valid else 1) \ No newline at end of file diff --git a/skills/sub-agent-guide/SKILL.md b/skills/sub-agent-guide/SKILL.md new file mode 100644 index 0000000..acc97d5 --- /dev/null +++ b/skills/sub-agent-guide/SKILL.md @@ -0,0 +1,339 @@ +--- +name: sub-agent-guide +description: 子智能体使用指南。创建子智能体之前必须阅读此技能。子智能体仅用于并行处理独立的“非代码编写”任务(如项目初步探索、网络搜索与信息收集、程序测试执行)。关键限制:子智能体之间无法通信,看不到主对话历史。严格禁止将子智能体用于项目代码编写、代码修改、重构或实现功能。 +--- + +# 子智能体使用指南 + +## 核心原则 + +**一个子智能体 = 一个完整的独立任务** + +子智能体拥有完整工具能力,但与主智能体和其他子智能体完全隔离。它们看不到你的对话历史,无法互相通信,只能通过文件系统共享信息。 + +**硬性限制:子智能体严格禁止用于项目代码编写/修改。** + +## 何时使用 + +**适合(推荐):** +- **项目初期探索**:快速梳理目录结构、模块职责、运行方式,形成初步认知 +- **占用大量上下文的网络搜索和信息收集**:竞品调研、资料汇总、文档整理、新闻/资料比对 +- **程序测试与验证**:执行测试命令、收集日志、汇总失败用例与错误模式 +- **并行独立的文档/分析任务**:生成说明文档、运行报告、排查清单 + +**不适合:** +- 任务之间需要频繁协调(子智能体无法互相通信) +- 简单快速的任务(创建子智能体有开销) +- 需要你参与决策的任务(子智能体是自主运行的) +- 任何项目代码编写、代码修改、代码重构、功能实现任务(必须由主智能体处理) +- 任何会直接改动项目源码的开发工作 + +## 任务描述的艺术 + +子智能体看不到你的对话历史,task 参数是它收到的唯一指令。 + +**关键要素:** +1. **明确的目标** - 要做什么,产出什么 +2. **清晰的范围** - 操作哪些文件/目录 +3. **具体的交付物** - 生成什么文件,放在哪里 +4. **完成标准** - 什么算完成 + +**好的示例:** + +``` +# 信息搜集任务 +分析项目的前后端认证与鉴权实现: +1. 查找所有与认证相关的代码文件(login, auth, jwt, session 等关键词) +2. 分析前端如何存储和传递认证信息 +3. 分析后端如何验证和管理用户权限 +4. 整理成一份技术文档(auth_analysis.md),包含流程图和代码位置 + +# 网络调研任务 +搜索并整理英伟达2025年的财报信息: +1. 搜索英伟达2025年Q1-Q4财报 +2. 提取关键财务数据(营收、利润、增长率) +3. 分析主要业务板块表现 +4. 生成结构化报告(nvidia_2025_report.md) + +# 系统信息收集 +收集当前计算机的硬件和系统信息: +1. CPU 架构、型号、核心数 +2. GPU 型号、显存、驱动版本 +3. 内存大小、系统版本 +4. 保存为 system_info.md +``` + +**避免:** +- ❌ "帮我分析一下认证代码" - 太模糊 +- ❌ "如果发现问题请告诉我" - 子智能体无法与你交互 +- ❌ "先做 A,然后等我确认再做 B" - 子智能体是一次性执行的 + +## 交付目录设计 + +`deliverables_dir` 必须是**不存在的新目录**,子智能体会把所有成果放在这里。 + +**命名建议:** +``` +sub_agent_results/task_description/ # 清晰描述任务 +sub_agent_results/module_a_docs/ # 按模块组织 +sub_agent_results/test_auth_report/ # 按测试/报告组织 +``` + +**避免:** +- ❌ 使用已存在的目录(会报错) +- ❌ 使用绝对路径(必须是相对于项目根目录的相对路径) +- ❌ 使用通用名称如 "output" "result"(多个子智能体会冲突) + +## 执行模式:阻塞 vs 后台 + +子智能体有两种执行模式,通过 `run_in_background` 参数控制: + +### 阻塞模式(run_in_background=false,默认) + +**行为:** +- 创建子智能体后,你会**停止输出**,等待它完成 +- 完成后结果直接在工具返回中给出,继续你的工作 +- 不会有额外的系统通知消息 + +**何时使用:** +- ✅ 快速任务(预计 < 1 分钟) +- ✅ 需要立即使用结果的任务 +- ✅ 单个子智能体,没有其他并行工作 + +**示例:** +```python +# 快速信息搜集,立即需要结果 +create_sub_agent( + agent_id=1, + summary="搜索 Python 3.12 新特性", + task="搜索并整理 Python 3.12 的主要新特性,生成 python312.md", + deliverables_dir="research/python312", + run_in_background=false, # 阻塞等待 + timeout_seconds=300 +) +# 工具返回后,你可以立即读取 research/python312/python312.md +``` + +### 后台模式(run_in_background=true) + +**行为:** +- 创建子智能体后,工具**立即返回**,你可以继续做其他事情 +- 子智能体在后台运行,完成后系统会**自动插入一条 user 消息**通知你 +- 你会在对话中看到类似:"这是一句系统自动发送的user消息,用于通知你子智能体已经运行完成..." + +**完成通知机制说明:** +- 后台子智能体完成的通知是系统自动插入的 user/system 消息,不依赖手动调用 `wait_sub_agent` 或其它轮询接口。 +- 你只需在收到通知后直接查看交付目录即可,系统会把所有必需信息一并带上。 + +**何时使用:** +- ✅ 耗时任务(预计 > 1 分钟) +- ✅ 多个并行任务 +- ✅ 你有其他工作可以先做(回答用户问题、处理其他任务) + +**后台模式下你应该做什么:** + +**情况 A:运行子智能体期间需要做别的事情** +```python +# 创建多个后台任务 +create_sub_agent(agent_id=1, task="...", run_in_background=true, ...) +create_sub_agent(agent_id=2, task="...", run_in_background=true, ...) + +# 立即告诉用户并继续其他工作 +"我已经启动了2个子智能体在后台并行工作,预计需要10-15分钟。在等待期间,我可以先帮你处理其他事情。" + +# 然后你可以: +# - 回答用户的其他问题 +# - 处理其他任务 +# - 阅读代码、分析问题 +# - 运行其他工具 +# 子智能体完成时会自动插入一条 system 消息通知你 +``` + +**情况 B:运行子智能体期间不需要做别的事情** +```python +create_sub_agent(agent_id=1, task="大规模日志分析", run_in_background=true, timeout_seconds=1800) + +# 告诉用户预计时间 +"我已启动子智能体进行日志分析,这个任务比较耗时,预计需要20-30分钟。系统会在完成后自动通知我,届时我会立即处理结果并回复你。" + +# 然后停止工作和输出,等待系统通知 +# 子智能体运行完成后,系统会自动发送一条 user 消息通知你 +``` + +**重要提示:** +- 系统会自动处理通知,你只需要在收到通知消息后处理结果即可 +- 如果你正在执行工具调用,系统会延迟通知,避免打断你的工作流 +- 通知类型取决于你是否继续工作:继续工作时收到 system 消息,停止输出时收到 user 消息 +- 后台完成由上述系统通知负责,不要再依赖 `wait_sub_agent` 或类似的手动等待流,系统会在能插入消息时自动通知你。 + +### 模式选择决策树 + +``` +任务预计耗时 < 1 分钟? +├─ 是 → 使用阻塞模式(run_in_background=false) +└─ 否 → 有多个并行任务? + ├─ 是 → 使用后台模式(run_in_background=true) + └─ 否 → 有其他工作可以先做? + ├─ 是 → 使用后台模式 + └─ 否 → 使用阻塞模式 +``` + +## 并行执行模式 + +创建多个子智能体时,确保它们的任务**完全独立**: + +```python +# ✅ 好的并行:各自独立,使用后台模式 +create_sub_agent(agent_id=1, task="生成模块 A 的文档", deliverables_dir="docs/module_a", run_in_background=true, ...) +create_sub_agent(agent_id=2, task="生成模块 B 的文档", deliverables_dir="docs/module_b", run_in_background=true, ...) +# 告诉用户:"已启动2个子智能体并行生成文档,预计10分钟完成。系统会在完成后自动通知我。" +# 然后你可以继续做其他事情,或者停止输出等待通知 + +# ✅ 好的并行:信息搜集 +create_sub_agent(agent_id=1, task="搜索并整理 Claude 最新模型信息", deliverables_dir="research/claude", run_in_background=true, ...) +create_sub_agent(agent_id=2, task="搜索并整理 ChatGPT 最新模型信息", deliverables_dir="research/chatgpt", run_in_background=true, ...) +# 等系统自动通知两个都完成后,你再对比整合 + +# ✅ 好的并行:系统调研 +create_sub_agent(agent_id=1, task="分析前端认证实现", deliverables_dir="analysis/frontend_auth", run_in_background=true, ...) +create_sub_agent(agent_id=2, task="分析后端鉴权实现", deliverables_dir="analysis/backend_auth", run_in_background=true, ...) +# 系统会在每个完成时发送通知,你可以逐个处理或等全部完成 +``` + +```python +# ❌ 不好的并行:需要协作 +create_sub_agent(agent_id=1, task="收集日志", ...) +create_sub_agent(agent_id=2, task="基于子智能体1的日志结论生成报告", ...) # 依赖子智能体1的结果 +# 子智能体2不知道子智能体1什么时候完成,无法协调 +``` + +## 常见陷阱 + +### 1. 期望子智能体协作 + +❌ **错误:** +```python +create_sub_agent(agent_id=1, task="收集 A 类日志并通知子智能体2") +create_sub_agent(agent_id=2, task="等待子智能体1完成,然后汇总 B 类报告") +``` + +子智能体之间无法通信。如果任务有依赖,应该: +- 方案1:顺序执行(等第一个完成后再创建第二个) +- 方案2:让一个子智能体完成整个流程 + +### 2. 忘记子智能体看不到对话历史 + +❌ **错误:** +```python +# 你在对话中说:"我们要排查认证流程问题" +create_sub_agent(task="按照我们讨论的方案排查认证流程") +``` + +✅ **正确:** +```python +create_sub_agent(task=""" +排查 src/auth/ 目录认证流程: +- 梳理认证相关入口、调用链和关键配置 +- 运行现有测试并记录失败项 +- 生成诊断报告(auth_diagnosis.md) +- 不允许修改任何项目源码 +""") +``` + +### 3. 超时时间设置不当 + +子智能体超时后会被强制终止,已完成的工作可能丢失。 + +**经验值:** +- 文档生成:600-900 秒 +- 信息搜集/网络调研:900-1800 秒 +- 大规模分析:1800-3600 秒 + +宁可设置得长一些,也不要让子智能体因超时而前功尽弃。 + +### 4. agent_id 重复使用 + +同一对话中,每个 agent_id 只能使用一次。如果子智能体失败需要重试,必须使用新的 agent_id。 + +```python +create_sub_agent(agent_id=1, ...) # 失败了 +# ❌ create_sub_agent(agent_id=1, ...) # 会报错 +# ✅ create_sub_agent(agent_id=2, ...) # 使用新的 ID +``` + +## 检查结果 + +### 阻塞模式下 + +工具返回中直接包含结果: + +```python +result = create_sub_agent(agent_id=1, run_in_background=false, ...) + +if result["success"]: + # 读取交付目录中的文件 + deliverables = result["deliverables_dir"] + # 处理生成的文件... +else: + # 检查失败原因 + if result["status"] == "timeout": + # 考虑增加 timeout_seconds 重试 + else: + # 查看 result["message"] 了解失败原因 +``` + +### 后台模式下 + +等待系统自动插入的通知消息: + +**如果你继续工作**,会收到 system 消息: +``` +✅ 子智能体1 任务摘要:搜索 Python 3.12 新特性 已完成。 + +调用了15次 +阅读了8次文件 +编辑了2次文件 +搜索了3次内容 +查看了5个网页 +运行了2个指令 + +运行了245秒 + +已搜索并整理 Python 3.12 的主要新特性... + +交付目录:research/python312 +``` + +**如果你停止输出**,会收到 user 消息: +``` +这是一句系统自动发送的user消息,用于通知你子智能体已经运行完成 + +子智能体1 (搜索 Python 3.12 新特性) 已完成任务。 + +已搜索并整理 Python 3.12 的主要新特性... + +运行了245秒 + +交付目录:research/python312 +``` + +收到通知后,读取交付目录中的文件并处理结果。 + +## thinking_mode 选择 + +- `fast`:常规任务(文档生成、信息搜集、数据分析) +- `thinking`:需要深度推理的任务(架构设计、复杂算法分析、安全审计) + +大多数情况下使用 `fast` 即可。 + +## 总结 + +子智能体的本质是**并行执行完全独立的任务**。 + +**关键要点:** +1. **执行模式选择**:快速任务用阻塞模式,耗时任务或并行任务用后台模式 +2. **后台模式下**:创建后继续工作或停止输出,系统会自动通知完成 +3. **任务独立性**:子智能体之间无法通信,确保任务完全独立 +4. **任务描述**:子智能体看不到对话历史,task 参数必须包含所有信息 + +如果你发现自己在设计子智能体之间的协作流程,那可能不应该使用子智能体,而应该自己顺序执行这些步骤。 diff --git a/skills/terminal-guide/SKILL.md b/skills/terminal-guide/SKILL.md new file mode 100644 index 0000000..cce7fe7 --- /dev/null +++ b/skills/terminal-guide/SKILL.md @@ -0,0 +1,516 @@ +--- +name: terminal-guide +description: 持久化终端使用指南。使用 terminal_session、terminal_input、terminal_snapshot 工具前必须阅读此技能。用于理解持久化终端与 run_command(含后台模式)的分工、output_wait 参数含义、以及会话型任务的处理方式。 +--- + +# 持久化终端使用指南 + +## 核心原则 + +**持久化终端 = 会话型命令行工具(重点是“会话状态”,不是“单纯时长”)** + +Terminal 工具提供了一个可以持续存在的终端会话,命令在其中运行不会因为你去做其他事情而中断。 + +### 与 run_command 的本质区别 + +| 特性 | terminal 系列 | run_command | +|------|--------------|-------------| +| 会话类型 | 持久会话,可复用上下文 | 一次性执行 | +| 超时行为 | output_wait 到期后命令继续运行 | timeout 到期强制终止命令 | +| 适用场景 | 会话状态依赖、多步串行、常驻服务 | 单步命令、快速查询、长任务后台化 | +| 状态检查 | 可随时 snapshot 查看会话内容 | 通过 command_id + sleep(wait_runcommand_id) 等待 | +| 典型用途 | npm run dev、tail -f、先 cd/activate 再连续执行 | npm run build、pip/brew/apt 安装、ls/file/grep | + +**选择标准(新)** +- 单条命令,即使很长(构建/安装)→ **优先 run_command 后台模式** +- 需要 shell 会话状态(`cd`/`export`/`source venv` 后继续)→ **terminal** +- 需要常驻服务或持续日志跟踪(`npm run dev`/`tail -f`)→ **terminal** +- 只是快速查看信息 → **run_command 前台** + +## 何时使用 + +### 适合 Terminal 的场景 + +**会话上下文依赖任务:** +- `cd` 到目录后连续执行多条命令 +- 激活虚拟环境后连续执行(`source venv/bin/activate`) +- 设置环境变量后再执行后续命令 + +**需要保持运行的服务:** +- 开发服务器(npm run dev、python -m http.server) +- 数据库服务(redis-server、mongod) +- 监控工具(tail -f、watch) + +**需要持续查看同一会话输出:** +- 长时间跟踪日志 +- 观察服务状态 +- 多步执行中随时 snapshot + +### 不适合 Terminal 的场景(优先 run_command) + +**快速信息查看:** +- 查看文件信息(file、stat、ls -la) +- 检查编码(iconv -l、file -i) +- 简单的 grep 定位 + +**单条长命令(建议后台模式):** +- `npm run build` +- `pip install -r requirements.txt` +- `brew install xxx` / `apt install xxx` +- 单次 `git clone` / 单次打包构建 + +**交互式程序(禁止使用):** +- Python/Node REPL +- vim、nano、emacs +- top、htop +- 任何需要完整 TTY 的程序 + +# 简单的交互程序 如只需要输入输出内容的py,node程序等可以使用 + +## 三步工作流 + +使用 terminal 工具的标准流程: + +### 1. 打开会话 + +```python +terminal_session( + action="open", + session_name="main", # 给会话起个名字 + working_dir="project" # 可选:指定工作目录 +) +``` + +**会话命名建议:** +- `main` - 主要工作终端 +- `server` - 运行开发服务器 +- `build` - 执行构建任务 +- `test` - 运行测试 + +### 2. 发送命令 + +```python +terminal_input( + command="pip install -r requirements.txt ; echo '__PipInstall_DONE__'", + session_name="main", + output_wait=30 # 收集输出的窗口期(秒) +) +``` + +### 3. 检查状态 + +```python +terminal_snapshot( + session_name="main", + lines=50, # 可选:返回最近 50 行 + max_chars=5000 # 可选:限制字符数 +) +``` + +## output_wait 的艺术 + +**output_wait 不是命令超时!** 这是最容易误解的地方。 + +### 它是什么 + +`output_wait` 是"收集输出的窗口期": +- 在这个时间内,工具会等待并收集命令的输出 +- 窗口期结束后,**命令继续在后台运行**,只是不再等待输出 +- 如果命令在窗口期内完成,会提前返回结果 + +### 它不是什么 + +- ❌ 不是命令超时(命令不会被终止) +- ❌ 不是最大执行时间(命令可以运行更久) +- ❌ 不是强制等待时间(命令完成会提前返回) + +### 设置策略 + +**场景 1:快速命令,只需确认启动** +```python +# 例如:启动开发服务器 +terminal_input( + command="npm run dev", + output_wait=10 # 10秒足够看到启动信息 +) +# 服务器会继续运行,你可以去做其他事情 +``` + +**场景 2:长任务,只需确认开始** +```python +# 例如:下载大文件 +terminal_input( + command="wget https://example.com/large-file.zip ; echo '__Download_DONE__'", + output_wait=30 # 30秒确认下载开始 +) +# 下载继续进行,稍后用 snapshot 检查进度 +``` + +**场景 3:必须等待完成的任务** +```python +# 例如:运行测试套件(预计 2 分钟完成) +terminal_input( + command="pytest tests/ ; echo '__Pytest_DONE__'", + output_wait=150 # 设置足够长,确保完成 +) +``` + +**场景 4:可能长时间无输出的任务** +```python +# 例如:git clone 大仓库(可能长时间无输出) +# 技巧:在命令后加“便于识别的后缀标记”作为完成信号 +terminal_input( + command="git clone https://github.com/large/repo.git ; echo '__GitClone_DONE__'", + output_wait=30 # 30秒确认开始 +) +# 稍后用 snapshot 检查,看到 __GitClone_DONE__ 就知道完成了 + +# 例如:构建任务 +terminal_input( + command="npm run build ; echo '__Build_DONE__'", + output_wait=60 +) + +# 例如:安装依赖 +terminal_input( + command="python3 -m pip install requests ; echo '__Pip_DONE__'", + output_wait=60 +) +``` + +### 经验值参考 + +- **确认启动**:5-10 秒 +- **确认开始**:20-30 秒 +- **短任务完成**:30-60 秒 +- **中等任务完成**:60-120 秒 +- **长任务完成**:120-300 秒 + +**原则:宁可设长,不要设短。** 设短了可能看不到关键输出,设长了最多就是等一会儿。 + +## 常见场景示例 + +### 场景 1:启动开发服务器(启动后不需要等待) + +```python +# 1. 打开终端 +terminal_session(action="open", session_name="server") + +# 2. 启动服务器 +terminal_input( + command="npm run dev", + session_name="server", + output_wait=15 # 15秒看到启动信息即可 +) +# 输出:Server running on http://localhost:3000 + +# 3. 服务器在后台运行,你可以继续做其他事情 +# 需要时可以随时查看日志 +terminal_snapshot(session_name="server", lines=30) +``` + +### 场景 2:下载大文件(启动后定期检查) + +```python +# 1. 打开终端 +terminal_session(action="open", session_name="download") + +# 2. 启动下载(加完成标记) +terminal_input( + command="wget https://example.com/dataset.tar.gz ; echo '__Download_DONE__'", + session_name="download", + output_wait=20 # 20秒确认下载开始 +) + +# 3. 去做其他事情... + +# 4. 稍后检查进度 +terminal_snapshot(session_name="download") +# 输出:50% [======> ] 512MB 10.2MB/s eta 45s + +# 5. 再次检查 +terminal_snapshot(session_name="download") +# 输出:100% [=============] 1024MB 10.5MB/s in 98s +# __Download_DONE__ ← 看到这个就知道完成了 +``` + +### 场景 3:运行测试套件(需要等待完成) + +```python +# 1. 打开终端 +terminal_session(action="open", session_name="test", working_dir="backend") + +# 2. 运行测试(预计 2 分钟) +terminal_input( + command="pytest tests/ -v ; echo '__Pytest_DONE__'", + session_name="test", + output_wait=150 # 设置足够长,等待完成 +) +# 输出:完整的测试结果 + +# 3. 如果不确定是否完成,再检查一次 +terminal_snapshot(session_name="test", lines=20) +``` + +### 场景 4:批量处理文件(需要等待完成) + +```python +# 1. 打开终端 +terminal_session(action="open", session_name="process") + +# 2. 批量转换(预计 5 分钟) +terminal_input( + command="for img in *.png; do convert \"$img\" -resize 800x600 \"thumb_$img\"; done ; echo '__Convert_DONE__'", + session_name="process", + output_wait=300 # 5分钟 +) + +# 3. 检查是否完成 +terminal_snapshot(session_name="process") +``` + +### 场景 5:多步操作(cd + 虚拟环境 + 命令) + +```python +# 1. 打开终端 +terminal_session(action="open", session_name="main") + +# 2. 切换目录 +terminal_input( + command="cd backend && source venv/bin/activate", + session_name="main", + output_wait=5 +) + +# 3. 在虚拟环境中安装依赖 +terminal_input( + command="pip install -r requirements.txt ; echo '__PipInstall_DONE__'", + session_name="main", + output_wait=60 +) + +# 4. 运行应用 +terminal_input( + command="python app.py", + session_name="main", + output_wait=10 +) +``` + +## 常见陷阱 + +### 1. 把 output_wait 当作命令超时 + +❌ **错误理解:** +```python +# "我想让命令最多运行 30 秒,超时就终止" +terminal_input(command="long_task.sh", output_wait=30) +``` + +✅ **正确做法:** +```python +# 如果需要强制超时终止,使用 run_command +run_command(command="long_task.sh", timeout=30) + +# 如果任务可以持续运行,使用 terminal +terminal_input(command="long_task.sh", output_wait=30) +# 30秒后命令继续运行,你可以稍后用 snapshot 检查 +``` + +### 2. 不检查命令是否完成就继续输入 + +❌ **错误:** +```python +terminal_input(command="npm install", output_wait=10) +# 10秒后立即执行下一个命令,但 npm install 可能还在运行 +terminal_input(command="npm run build", output_wait=10) +# 可能会冲突或失败 +``` + +✅ **正确:** +```python +terminal_input(command="npm install ; echo '__NpmInstall_DONE__'", output_wait=10) + +# 检查是否完成 +terminal_snapshot(session_name="main") +# 如果看到还在运行,等待或增加 output_wait + +# 确认完成后再继续(也可加完成标记) +terminal_input(command="npm run build ; echo '__Build_DONE__'", output_wait=60) +``` + +### 3. 在终端中启动交互式程序 + +❌ **错误:** +```python +terminal_input(command="python", output_wait=5) # 启动 Python REPL +terminal_input(command="print('hello')", output_wait=5) # 不会工作 +``` + +❌ **错误:** +```python +terminal_input(command="vim file.txt", output_wait=5) # vim 需要完整 TTY +``` + +✅ **正确:** +```python +# 使用 run_python 执行 Python 代码 +run_python(code="print('hello')", timeout=5) + +# 使用 edit_file 修改文件 +edit_file(file_path="file.txt", old_string="...", new_string="...") +``` + +### 4. 对快速命令使用 terminal + +❌ **低效:** +```python +terminal_session(action="open", session_name="check") +terminal_input(command="ls -la", session_name="check", output_wait=5) +terminal_session(action="close", session_name="check") +``` + +✅ **高效:** +```python +run_command(command="ls -la", timeout=5) +``` + +### 5. 忘记关闭不再使用的终端 + +```python +# 任务完成后,记得关闭终端释放资源 +terminal_session(action="close", session_name="build") +``` + +或者重置终端(清空输出但保持会话): +```python +terminal_session(action="reset", session_name="main") +``` + +### 6. output_wait 设置过短导致看不到关键输出 + +❌ **问题:** +```python +# pip install 可能需要 30-60 秒 +terminal_input(command="pip install tensorflow ; echo '__PipTensorflow_DONE__'", output_wait=5) +# 5秒后返回,只看到 "Collecting tensorflow...",看不到安装结果 +``` + +✅ **改进:** +```python +# 方案 1:设置足够长的 output_wait,并加完成标记 +terminal_input(command="pip install tensorflow ; echo '__PipTensorflow_DONE__'", output_wait=90) + +# 方案 2:短 output_wait 确认开始,稍后用 snapshot 检查完成标记 +terminal_input(command="pip install tensorflow ; echo '__PipTensorflow_DONE__'", output_wait=10) +# ... 做其他事情 ... +terminal_snapshot(session_name="main") # 检查是否完成 +``` + +## 检查命令是否完成 + +使用 `terminal_snapshot` 判断命令状态的技巧: + +### 技巧 1:使用完成标记(推荐) + +对于可能长时间无输出的任务,在命令后加“便于识别的后缀标记”(推荐格式:`___DONE__`): + +```python +# ✅ 好的做法(有清晰后缀) +terminal_input( + command="git clone https://github.com/large/repo.git ; echo '__GitClone_DONE__'", + output_wait=30 +) +terminal_input( + command="npm run build ; echo '__Build_DONE__'", + output_wait=60 +) +terminal_input( + command="python3 -m pip install requests ; echo '__Pip_DONE__'", + output_wait=60 +) + +# 稍后检查 +terminal_snapshot(session_name="main") +# 看到对应的 __XXX_DONE__ 就知道完成了 +``` + +```python +# ❌ 不好的做法(不加后缀,难以快速判断完成) +terminal_input( + command="git clone https://github.com/large/repo.git", + output_wait=30 +) +terminal_input( + command="npm run build", + output_wait=60 +) +terminal_input( + command="python3 -m pip install requests", + output_wait=60 +) +``` + +**为什么有用:** +- git clone、wget、scp 等命令可能长时间无输出 +- 完成后也可能没有明显的提示信息 +- 自定义后缀(如 `__Build_DONE__`)是明确完成信号,不会误判 + +### 技巧 2:看提示符 + +```bash +# 命令还在运行(没有提示符) +Downloading... 45% + +# 命令已完成(出现提示符) +Downloading... 100% +user@host:~/project$ +``` + +### 技巧 3:看输出内容 + +```bash +# 安装完成的标志 +Successfully installed package-1.0.0 + +# 测试完成的标志 +===== 10 passed in 2.5s ===== + +# 构建完成的标志 +Build completed successfully + +# 下载完成的标志 +100% [=============] 1024MB +``` + +### 技巧 4:看进程状态 + +```python +# 如果不确定,可以检查进程 +terminal_input(command="ps aux | grep your_process", output_wait=5) +``` + +## 总结 + +**Terminal 工具的本质:** 持久化会话,让命令可以长期运行,随时查看状态。 + +**核心工作流:** +1. `terminal_session(action="open")` - 打开会话 +2. `terminal_input(command="...", output_wait=N)` - 发送命令 +3. `terminal_snapshot()` - 检查状态 + +**关键理解:** +- `output_wait` 是收集输出的窗口期,不是命令超时 +- 命令会在后台持续运行,即使 output_wait 结束 +- 随时可以用 `snapshot` 查看最新状态 + +**选择标准:** +- 长时间任务、后台服务、多步操作 → terminal +- 快速查看信息、一次性命令 → run_command +- 交互式程序 → 禁止使用,改用专用工具 + +**最佳实践:** +- output_wait 宁长勿短 +- 不确定是否完成时,先用 snapshot 检查 +- 任务完成后关闭或重置终端 +- 给会话起有意义的名字 diff --git a/skills/test/SKILL.md b/skills/test/SKILL.md new file mode 100644 index 0000000..7a7b311 --- /dev/null +++ b/skills/test/SKILL.md @@ -0,0 +1,15 @@ +--- +name: Test Skill +description: Validate skills loading and read_file flow. +example_prompts: + - "Use the test skill to explain how to proceed." +tools: + - read_file +tags: + - test +--- + +# Test Skill + +This skill exists to verify that the skills system can discover, list, sync, +and read SKILL.md content via read_file. Replace this content later.

    a(H)b+(^4^8hpNXM7CQkU6D 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