From 1f84843814efbd5d5637c69e797c4c5528a01c50 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 6 Oct 2026 16:49:13 +0900 Subject: [PATCH] =?UTF-8?q?chore(sync):=20=EA=B3=B5=EC=9C=A0=20docs=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EB=8B=B4=EC=9D=8C=20=E2=80=94=20=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=20=EC=BB=A4=EB=B0=8B=EA=B3=BC=20=EA=B0=99=EC=9D=80=20?= =?UTF-8?q?=EB=82=B4=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01FJqWQpoB1RE7hiaQ2wH8qV --- docs/.agents/rules/graphify.md | 14 + docs/.agents/workflows/graphify.md | 10 + docs/.claude/settings.json | 24 ++ docs/.claude/settings.local.json | 22 ++ docs/.codex/hooks.json | 15 + docs/.obsidian/app.json | 3 + docs/.obsidian/appearance.json | 1 + docs/.obsidian/community-plugins.json | 1 + docs/.obsidian/core-plugins.json | 33 +++ docs/.obsidian/graph.json | 22 ++ docs/.obsidian/workspace.json | 271 ++++++++++++++++++ .../sub2/__pycache__/tool.cpython-312.pyc | Bin 0 -> 10141 bytes docs/raw/사용자요구/2026-10-05_수정요구.md | 7 + .../graphify-out/.graphify_incremental.json | 1 + docs/wiki/graphify-out/.graphify_python | 1 + ...282510fad5462a02092dbd801e45a7f956fb1.json | 1 + ...c97348e3e237b506afcbcef3cf2a92b708b59.json | 1 + ...cfb28e755d2003d074d293e2c3b3ec026dec2.json | 1 + ...3e93b431cd01626287338ffc2864d9ef31260.json | 1 + ...c68cd25e9160f5ddc0f9d696ee72b39b7d3ee.json | 1 + ...2fdd5d83fada62b10909474a3384b95948ce4.json | 1 + ...837bc500bae9655d740ce56956d94cda2a625.json | 1 + ...c9d232065de56e60b29b789039700effa1cd9.json | 1 + ...d04880cc38b42fcc24844c6ba222b8a437680.json | 1 + ...eec1a38ebf48a6dd4e113e3ea673af9c6518e.json | 1 + ...a9c395a1337b90acb3f360d20504a2de2fcc7.json | 1 + ...2c51d5dfe72ca819a581e7bb85ad04058251c.json | 1 + ...c52db9956d1d6049ac400bef447a48b609c64.json | 1 + ...a1a93002e8ecd82230eb6c758edd73e33ebb5.json | 1 + ...50119d67bc0e0479a7b78ddec1c50188b71b2.json | 1 + ...1ae027a5a98376d0df670b9a1d7fa8568acad.json | 1 + ...39ae38b57c0e43c35f52c5d3398dc98b368ed.json | 1 + 32 files changed, 442 insertions(+) create mode 100644 docs/.agents/rules/graphify.md create mode 100644 docs/.agents/workflows/graphify.md create mode 100644 docs/.claude/settings.json create mode 100644 docs/.claude/settings.local.json create mode 100644 docs/.codex/hooks.json create mode 100644 docs/.obsidian/app.json create mode 100644 docs/.obsidian/appearance.json create mode 100644 docs/.obsidian/community-plugins.json create mode 100644 docs/.obsidian/core-plugins.json create mode 100644 docs/.obsidian/graph.json create mode 100644 docs/.obsidian/workspace.json create mode 100644 docs/raw/M01_고침/sub2/__pycache__/tool.cpython-312.pyc create mode 100644 docs/wiki/graphify-out/.graphify_incremental.json create mode 100644 docs/wiki/graphify-out/.graphify_python create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/3a7ccd44185fcd0b735174a6d45282510fad5462a02092dbd801e45a7f956fb1.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/456345173cbe8379b23da736bedc97348e3e237b506afcbcef3cf2a92b708b59.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/4d22371954ddb259f818e89f77acfb28e755d2003d074d293e2c3b3ec026dec2.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/58da2f4ea87c68f5c28c50755f93e93b431cd01626287338ffc2864d9ef31260.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/604c85b04c27441315b38867b2dc68cd25e9160f5ddc0f9d696ee72b39b7d3ee.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/6ec170b81bc7453c99a4353c3662fdd5d83fada62b10909474a3384b95948ce4.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/7aab5822742004b0aa42355819f837bc500bae9655d740ce56956d94cda2a625.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/80b8e6ddb03e3928e9e528074ddc9d232065de56e60b29b789039700effa1cd9.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/901938a8286a00a69c3b2fec951d04880cc38b42fcc24844c6ba222b8a437680.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/93106073252858e09c823f89692eec1a38ebf48a6dd4e113e3ea673af9c6518e.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/9929353a13b176872a923bc6fa2a9c395a1337b90acb3f360d20504a2de2fcc7.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/cfcd660466d61a836d480fab4492c51d5dfe72ca819a581e7bb85ad04058251c.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/ea46826ede84d0192ec3198fd44c52db9956d1d6049ac400bef447a48b609c64.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/eb9df3f9e9f31f6598053a01f5ba1a93002e8ecd82230eb6c758edd73e33ebb5.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/ee57e3058f0b6ba2a2bd431682850119d67bc0e0479a7b78ddec1c50188b71b2.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/fb3335ebc40f92e8b3b885c40561ae027a5a98376d0df670b9a1d7fa8568acad.json create mode 100644 docs/wiki/graphify-out/cache/ast/v0.9.12/ffbd538a8d4402dea1e148d077939ae38b57c0e43c35f52c5d3398dc98b368ed.json diff --git a/docs/.agents/rules/graphify.md b/docs/.agents/rules/graphify.md new file mode 100644 index 000000000..0fc786414 --- /dev/null +++ b/docs/.agents/rules/graphify.md @@ -0,0 +1,14 @@ +--- +trigger: always_on +description: Consult the graphify knowledge graph at graphify-out/ for codebase and architecture questions. +--- + +## graphify + +This project has a graphify knowledge graph at graphify-out/. + +Rules: +- For codebase or architecture questions, when `graphify-out/graph.json` exists, first run `graphify query ""` (CLI) or `query_graph` (MCP). Use `graphify path "" ""` / `shortest_path` for relationships and `graphify explain ""` / `get_node` for focused concepts. These return a scoped subgraph, usually much smaller than `GRAPH_REPORT.md` or raw grep output. +- If graphify-out/wiki/index.md exists, navigate it instead of reading raw files +- Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context +- After modifying code files in this session, run `graphify update .` to keep the graph current (AST-only, no API cost) diff --git a/docs/.agents/workflows/graphify.md b/docs/.agents/workflows/graphify.md new file mode 100644 index 000000000..c57bdf13b --- /dev/null +++ b/docs/.agents/workflows/graphify.md @@ -0,0 +1,10 @@ +--- +name: graphify +description: Turn any folder of files into a navigable knowledge graph +--- + +# Workflow: graphify + +Follow the graphify skill installed at ~/.gemini/config/skills/graphify/SKILL.md to run the full pipeline. + +If no path argument is given, use `.` (current directory). diff --git a/docs/.claude/settings.json b/docs/.claude/settings.json new file mode 100644 index 000000000..167d86540 --- /dev/null +++ b/docs/.claude/settings.json @@ -0,0 +1,24 @@ +{ + "hooks": { + "PreToolUse": [ + { + "matcher": "Bash", + "hooks": [ + { + "type": "command", + "command": "C:\\Users\\umsan\\AppData\\Local\\Programs\\Python\\Python312\\Scripts\\graphify.EXE hook-guard search" + } + ] + }, + { + "matcher": "Read|Glob", + "hooks": [ + { + "type": "command", + "command": "C:\\Users\\umsan\\AppData\\Local\\Programs\\Python\\Python312\\Scripts\\graphify.EXE hook-guard read" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/.claude/settings.local.json b/docs/.claude/settings.local.json new file mode 100644 index 000000000..d8f6fdf56 --- /dev/null +++ b/docs/.claude/settings.local.json @@ -0,0 +1,22 @@ +{ + "permissions": { + "allow": [ + "Read(//c/Program_coding/임도설계 및 견적자동화 프로그램 개발/**)", + "Bash(python -c \"import aiomysql; print\\('ok'\\)\")", + "Bash(python -c \"import pymysql; print\\('pymysql ok'\\)\")", + "Bash(python -c \"import mysql.connector; print\\('mysql.connector ok'\\)\")", + "Bash(\"/c/Program_coding/임도설계 및 견적자동화 프로그램 개발/venv/Scripts/python.exe\" \"C:\\\\Users\\\\umsan\\\\AppData\\\\Local\\\\Temp\\\\claude\\\\c--Program-coding----------------------docs\\\\57bf1f9e-714c-482d-9caa-a113bdc0a8d6\\\\scratchpad\\\\inspect_db.py\")", + "Bash(\"/c/Program_coding/임도설계 및 견적자동화 프로그램 개발/venv/Scripts/python.exe\" \"C:\\\\Users\\\\umsan\\\\AppData\\\\Local\\\\Temp\\\\claude\\\\c--Program-coding----------------------docs\\\\57bf1f9e-714c-482d-9caa-a113bdc0a8d6\\\\scratchpad\\\\inspect_db2.py\")", + "Read(//c/Program_coding/임도설계 및 견적자동화 프로그램 개발/A01_Home/**)", + "Bash(cd \"c:\\\\Program_coding\\\\임도설계 및 견적자동화 프로그램 개발\\\\A01_Home\" && ls -la)", + "Read(//c/Program_coding/�ӵ����� �� �����ڵ�ȭ ���α׷� ����/**)", + "Read(//c/Program_coding/임도설계 및 견적자동화 프로그램 개발/A00_Common/**)", + "Read(//c/Program_coding/�ӵ����� �� �����ڵ�ȭ ���α׷� ����/docs/wiki/**)", + "Bash(find \"c:\\\\Program_coding\\\\임도설계 및 견적자동화 프로그램 개발\" -name \"*locale*\" -type f 2>/dev/null | head -5)", + "Read(//c/Program_coding/�ӵ����� �� �����ڵ�ȭ ���α׷� ����/docs/wiki/pages/**)", + "Read(//c/Program_coding/임도설계 및 견적자동화 프로그램 개발/A06_Login/**)", + "Read(//c/Program_coding/임도설계 및 견적자동화 프로그램 개발/ui_template/**)", + "Read(//c/Program_coding/임도설계 및 견적자동화 프로그램 개발/A07_Register/**)" + ] + } +} diff --git a/docs/.codex/hooks.json b/docs/.codex/hooks.json new file mode 100644 index 000000000..d87c474a6 --- /dev/null +++ b/docs/.codex/hooks.json @@ -0,0 +1,15 @@ +{ + "hooks": { + "PreToolUse": [ + { + "matcher": "Bash", + "hooks": [ + { + "type": "command", + "command": "C:\\Users\\umsan\\AppData\\Local\\Programs\\Python\\Python312\\Scripts\\graphify.EXE hook-check" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/.obsidian/app.json b/docs/.obsidian/app.json new file mode 100644 index 000000000..e609a07e7 --- /dev/null +++ b/docs/.obsidian/app.json @@ -0,0 +1,3 @@ +{ + "promptDelete": false +} \ No newline at end of file diff --git a/docs/.obsidian/appearance.json b/docs/.obsidian/appearance.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/docs/.obsidian/appearance.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/docs/.obsidian/community-plugins.json b/docs/.obsidian/community-plugins.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/docs/.obsidian/community-plugins.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/docs/.obsidian/core-plugins.json b/docs/.obsidian/core-plugins.json new file mode 100644 index 000000000..639b90da7 --- /dev/null +++ b/docs/.obsidian/core-plugins.json @@ -0,0 +1,33 @@ +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "footnotes": false, + "properties": true, + "page-preview": true, + "daily-notes": true, + "templates": true, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": true, + "bases": true, + "webviewer": false +} \ No newline at end of file diff --git a/docs/.obsidian/graph.json b/docs/.obsidian/graph.json new file mode 100644 index 000000000..b46f5853a --- /dev/null +++ b/docs/.obsidian/graph.json @@ -0,0 +1,22 @@ +{ + "collapse-filter": false, + "search": "", + "showTags": true, + "showAttachments": true, + "hideUnresolved": true, + "showOrphans": true, + "collapse-color-groups": false, + "colorGroups": [], + "collapse-display": false, + "showArrow": false, + "textFadeMultiplier": 0, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": false, + "centerStrength": 0.518713248970312, + "repelStrength": 10, + "linkStrength": 1, + "linkDistance": 250, + "scale": 0.7003715382344561, + "close": true +} \ No newline at end of file diff --git a/docs/.obsidian/workspace.json b/docs/.obsidian/workspace.json new file mode 100644 index 000000000..23630b941 --- /dev/null +++ b/docs/.obsidian/workspace.json @@ -0,0 +1,271 @@ +{ + "main": { + "id": "99c9496f9af0d35f", + "type": "split", + "children": [ + { + "id": "34e9ffa4ccc78d90", + "type": "tabs", + "dimension": 56.82302771855011, + "children": [ + { + "id": "41ded8d7baed12f5", + "type": "leaf", + "state": { + "type": "graph", + "state": {}, + "icon": "lucide-git-fork", + "title": "그래프 뷰" + } + } + ] + }, + { + "id": "23dcd189ca429a1a", + "type": "tabs", + "dimension": 43.17697228144989, + "children": [ + { + "id": "ba0eee70a4b40379", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "wiki/architecture/project_map.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "project_map" + } + }, + { + "id": "a632970c50a7a55e", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "wiki/ingest/verification_2026_07.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "verification_2026_07" + } + } + ] + } + ], + "direction": "vertical" + }, + "left": { + "id": "1fdf49368d0b8d12", + "type": "split", + "children": [ + { + "id": "286216e41ef17318", + "type": "tabs", + "children": [ + { + "id": "bf4a66eeb6ba12b7", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical", + "autoReveal": false, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-folder-closed", + "title": "파일 탐색기" + } + }, + { + "id": "d69b070685f35c13", + "type": "leaf", + "state": { + "type": "search", + "state": { + "query": "", + "matchingCase": false, + "explainSearch": false, + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical" + }, + "icon": "lucide-search", + "title": "검색" + } + }, + { + "id": "f48a2962a3eee224", + "type": "leaf", + "state": { + "type": "bookmarks", + "state": {}, + "icon": "lucide-bookmark", + "title": "북마크" + } + } + ] + } + ], + "direction": "horizontal", + "width": 200 + }, + "right": { + "id": "47e841f62a2c8446", + "type": "split", + "children": [ + { + "id": "ed0c1ac6b73a8ced", + "type": "tabs", + "children": [ + { + "id": "9eee98dc05d3fde2", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-coming-in", + "title": "백링크" + } + }, + { + "id": "1e0ba87b26453941", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "linksCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-going-out", + "title": "나가는 링크" + } + }, + { + "id": "aea498d48aaa60a0", + "type": "leaf", + "state": { + "type": "tag", + "state": { + "sortOrder": "frequency", + "useHierarchy": true, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-tags", + "title": "태그" + } + }, + { + "id": "dde952791b603350", + "type": "leaf", + "state": { + "type": "all-properties", + "state": { + "sortOrder": "frequency", + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-archive", + "title": "모든 속성" + } + }, + { + "id": "2daeda4e90730082", + "type": "leaf", + "state": { + "type": "outline", + "state": { + "followCursor": false, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-list", + "title": "개요" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300, + "collapsed": true + }, + "left-ribbon": { + "hiddenItems": { + "canvas:새 캔버스 만들기": true, + "graph:그래프 뷰 열기": false, + "switcher:빠른 전환기 열기": true, + "daily-notes:오늘의 일일 노트 열기": true, + "templates:템플릿 삽입": true, + "command-palette:명령어 팔레트 열기": true, + "bases:새 베이스 생성하기": true + } + }, + "active": "41ded8d7baed12f5", + "lastOpenFiles": [ + "wiki/concepts/completed_2026-08-29.md", + "wiki/graphify-out/2026-09-10/manifest.json", + "wiki/graphify-out/2026-09-10/graph.json", + "wiki/graphify-out/2026-09-10/cost.json", + "wiki/graphify-out/2026-09-10/GRAPH_REPORT.md", + "wiki/concepts/design_data_lifecycle.md", + "raw/verification/2026-09-10_계획서_e_f_g_이관_교차검증.md", + "raw/plans/2026-08-13_plan_rainfall_wamis_station.md", + "raw/plans/2026-08-18_plan_B05_sidebar_ui_page_improvements.md", + "wiki/graphify-out/cache/ast/v0.9.12/f9ba53d937aa3d2e502fc976096f58f6671fe27c5529f52ef6044ffbc784862e.json", + "wiki/graphify-out/cache/ast/v0.9.12/cf5183db8137ee3c2c8cef6fd3be395b4b85a83c3f4717a1bf054b7ee6a702c1.json", + "wiki/graphify-out/cache/ast/v0.9.12/0489582c6e1820a05b10a55cc165ce0f4edeb1407c6161876dbc5de3c1014709.json", + "wiki/graphify-out/cache/ast/v0.9.12/56000e954dc3088e72f1b346511bee73a2328868f4e835e165857118f5ebed1c.json", + "wiki/graphify-out/cache/ast/v0.9.12/f7cb9eaa4aaca14f928852ace24b0735c46a4f8115b5c7502093b2e31e82bbc8.json", + "wiki/graphify-out/cache/ast/v0.9.12/2f9bba4bbf05240f2f639495a7d9a4f2641825e576c5440395aa5b95986b7544.json", + "wiki/graphify-out/cache/ast/v0.9.12/80835802ae68203adcb24943f96b1845160622a7d86361c4c0b5bfb7e73a5c8d.json", + "wiki/pages/B06_Section/B06_cross_design_ui_2026_09.md", + "wiki/pages/B05_Profile/B05_profile_interaction_2026_09.md", + "wiki/pages/B04_PreProcess/B04_compass_crs_2026_09.md", + "wiki/pages/B03_FileInput/B03_upload_ui_2026_09.md", + "wiki/concepts/completed_2026-09-03_additional.md", + "raw/plans/2026-09-03_plan_completed_items_2.md", + "wiki/pages/B08_DesignDetail/B08_cad_delivery_2026_09.md", + "wiki/pages/B06_Section/B06_masshaul_culvert_2026_09.md", + "wiki/pages/B05_Profile/B05_masshaul_structure_2026_09.md", + "wiki/pages/B04_PreProcess/B04_drainage_compass_crs.md", + "wiki/pages/B03_FileInput/B03_route_snapshot_crs.md", + "wiki/concepts/completed_2026-09-03.md", + "wiki/architecture/workflow_data_flow.md", + "wiki/graphify-out/memory/query_20260821_101018_임도_기술정보db에서_집수정의_형태정보는_어떤게_있는지_확인해줘.md", + "wiki/architecture/project_map.md", + "wiki/pages/B05_Profile/B05_Profile_plan_2026-08-19.md", + "wiki/pages/B06_Section/B06_culvert_set.md", + "wiki/pages/B05_Profile/B05_structures.md", + "raw/verification/2026-08-16_verify_B05_구조물_수동추가_교차검증.md", + "raw/plans/2026-08-16_plan_B05_구조물_수동추가.md", + "raw/law/original/임도기술교본/그림/그림 3-24 노선의 계곡부와 산등부분 계획.png", + "raw/law/original/임도기술교본/그림/그림 3-23 기존 작업도로의 지반과 계획고.png", + "raw/law/original/임도기술교본/그림/그림 3-21 분묘 통과 측량 평면.png", + "raw/law/original/임도기술교본/그림/그림 3-22 분묘 주변의 횡단 계획 및 구조물 배치도.png", + "raw/law/original/임도기술교본/그림/그림 3-20 BOX암거 설치 단면도.png", + "raw/law/original/임도기술교본/그림/그림 3-18 세월교 설치 종단도.png", + "raw/law/original/임도기술교본/그림/그림 3-19 BOX암거 설치 종단도.png", + "raw/law/original/임도기술교본/그림/그림 3-17 물넘이포장 설치 횡단도.png", + "raw/law/original/임도기술교본/그림/그림 3-16 물넘이포장 단면 조사.png", + "raw/law/original/임도기술교본/그림/그림 3-15 유출구 주계곡 유수 흐름의 방해가.png", + "무제 4.canvas", + "무제 3.canvas", + "무제 2.canvas", + "무제 1.canvas", + "무제.canvas" + ] +} \ No newline at end of file diff --git a/docs/raw/M01_고침/sub2/__pycache__/tool.cpython-312.pyc b/docs/raw/M01_고침/sub2/__pycache__/tool.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff699fad1ff0569a2035f83e632fd4a0f8548bd4 GIT binary patch literal 10141 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