task-agent 1.3.0__tar.gz → 1.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {task_agent-1.3.0 → task_agent-1.3.1}/PKG-INFO +1 -1
- {task_agent-1.3.0 → task_agent-1.3.1}/pyproject.toml +1 -1
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/chat/last_used.py +39 -39
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/cli.py +0 -2
- {task_agent-1.3.0 → task_agent-1.3.1}/uv.lock +1 -1
- {task_agent-1.3.0 → task_agent-1.3.1}/.agents/skills/next/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.env +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.gemini/settings.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.github/workflows/ci.yml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.github/workflows/publish.yml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.gitignore +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.mise.toml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.pre-commit-config.yaml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.python-version +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/agy-cli/meta.toml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/antigravity/meta.toml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/gh/meta.toml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/minimal/meta.toml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.ta/agents/uat-aws/meta.toml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.ta/worker +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/.ta-config.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/CLAUDE.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/GEMINI.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/Makefile +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/agent.env +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/STATION-MAP.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/architecture/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/chats/gemini-conversation-1773283034591.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/chats/project-init-to-v0.1.46.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/cli/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/development/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/task-agents.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/workflow/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/docs/workflow/trivial_worker_policy.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/opencode.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/.gemini-plugin/plugin.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/.mcp.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/hooks/hooks.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/hooks/session_start.sh +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/rules/task_agent.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/scripts/statusline.sh +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/agent-import/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/complete-task/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/mission-workflow/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/next/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/antigravity/skills/next-task/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/.mcp.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/hooks/hooks.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/hooks/session_start.sh +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/scripts/statusline.sh +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/skills/agent-import/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/skills/complete-task/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/skills/mission-workflow/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/claude-code/skills/next-task/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/codex/.mcp.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/codex/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/copilot/.mcp.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/copilot/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/grok/.mcp.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/plugins/grok/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/scripts/clean_duplicates.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/scripts/migrate_tasks.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/scripts/recover_dates.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/.env.example +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/instructions/manager.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/instructions/validator.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/instructions/worker.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/profiles/default.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/pyproject.toml +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/uv.lock +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/sidecars/adk-worker/worker.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/skills/README.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/skills/agent-import/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/skills/complete-task/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/skills/mission-workflow/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/skills/next/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/skills/next-task/SKILL.md +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/__init__.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/__main__.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/agent.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/agent_registry.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/audit.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/chat/__init__.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/chat/config.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/chat/discovery.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/config.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/discovery.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/__init__.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/antigravity.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/base.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/claude_code.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/importers/generic.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/inbox.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/manager.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/mcp.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/models/__init__.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/models/issue.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/models/metric.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/perf.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/plugins/__init__.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/plugins/github.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/runner.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/store_registry.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/templates.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/src/taskagent/theme.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/test-dir/opencode.json +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/conftest.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/e2e/test_agent_sandboxing.sh +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_agent.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_agent_registry.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_agy_cli_worker.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_atomic_mutations.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_auto_commit.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_chat_config.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_chat_discovery.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_chat_last_used.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_cli.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_cli_windows.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_discovery.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_github_token.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_importers.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_inbox.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_inbox_watch.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_lease.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_manager.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_manager_git.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_mcp.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_metrics.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_migration.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_perf.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_plugin_antigravity.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_plugin_claude.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_project_host_root.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_rebind.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_remote_attach.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_remote_create.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_repo_resolve.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_runner.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_store_registry.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_store_symlink.py +0 -0
- {task_agent-1.3.0 → task_agent-1.3.1}/tests/test_templates.py +0 -0
|
@@ -4,7 +4,7 @@ import json
|
|
|
4
4
|
from dataclasses import dataclass
|
|
5
5
|
from datetime import datetime, timezone
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import List, Optional, Tuple
|
|
7
|
+
from typing import Any, List, Optional, Tuple
|
|
8
8
|
|
|
9
9
|
from agent_registry import (
|
|
10
10
|
AgentCLIInfo,
|
|
@@ -27,6 +27,30 @@ class AgentLastUsedInfo:
|
|
|
27
27
|
log_path: Path
|
|
28
28
|
|
|
29
29
|
|
|
30
|
+
def _extract_text(node: Any) -> str:
|
|
31
|
+
"""Recursively extract string content from dicts, lists, or primitive strings."""
|
|
32
|
+
if isinstance(node, str):
|
|
33
|
+
return node
|
|
34
|
+
elif isinstance(node, dict):
|
|
35
|
+
if "text" in node and isinstance(node["text"], str):
|
|
36
|
+
return node["text"]
|
|
37
|
+
if "content" in node:
|
|
38
|
+
return _extract_text(node["content"])
|
|
39
|
+
if "message" in node:
|
|
40
|
+
return _extract_text(node["message"])
|
|
41
|
+
elif isinstance(node, list):
|
|
42
|
+
parts = [_extract_text(item) for item in node]
|
|
43
|
+
return " ".join(p for p in parts if p)
|
|
44
|
+
return ""
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _is_user_role(role_val: Any) -> bool:
|
|
48
|
+
if isinstance(role_val, str):
|
|
49
|
+
r = role_val.lower()
|
|
50
|
+
return r in ("user", "say", "user_input", "user_explicit", "human", "user_feedback")
|
|
51
|
+
return False
|
|
52
|
+
|
|
53
|
+
|
|
30
54
|
def _parse_last_user_comment_and_timestamp(
|
|
31
55
|
discovered: DiscoveredChat,
|
|
32
56
|
) -> Tuple[datetime, str]:
|
|
@@ -48,35 +72,21 @@ def _parse_last_user_comment_and_timestamp(
|
|
|
48
72
|
try:
|
|
49
73
|
data = json.loads(line)
|
|
50
74
|
if isinstance(data, dict):
|
|
75
|
+
msg = data.get("message")
|
|
51
76
|
role = (
|
|
52
77
|
data.get("type")
|
|
53
78
|
or data.get("role")
|
|
54
79
|
or data.get("source")
|
|
80
|
+
or (msg.get("role") if isinstance(msg, dict) else None)
|
|
55
81
|
)
|
|
56
|
-
if role
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
or data.get("text")
|
|
65
|
-
or data.get("message")
|
|
66
|
-
)
|
|
67
|
-
if isinstance(content, list):
|
|
68
|
-
text_parts = []
|
|
69
|
-
for part in content:
|
|
70
|
-
if (
|
|
71
|
-
isinstance(part, dict)
|
|
72
|
-
and part.get("type") == "text"
|
|
73
|
-
):
|
|
74
|
-
text_parts.append(part.get("text", ""))
|
|
75
|
-
elif isinstance(part, str):
|
|
76
|
-
text_parts.append(part)
|
|
77
|
-
content = " ".join(text_parts)
|
|
78
|
-
if isinstance(content, str) and content.strip():
|
|
79
|
-
user_comment = content.strip()
|
|
82
|
+
if _is_user_role(role):
|
|
83
|
+
raw_comment = _extract_text(msg if msg else data).strip()
|
|
84
|
+
if (
|
|
85
|
+
raw_comment
|
|
86
|
+
and not raw_comment.startswith("<local-command-")
|
|
87
|
+
and not raw_comment.startswith("<command-name>")
|
|
88
|
+
):
|
|
89
|
+
user_comment = raw_comment
|
|
80
90
|
break
|
|
81
91
|
except Exception:
|
|
82
92
|
continue
|
|
@@ -104,20 +114,10 @@ def _parse_last_user_comment_and_timestamp(
|
|
|
104
114
|
or msg.get("type")
|
|
105
115
|
or msg.get("source")
|
|
106
116
|
)
|
|
107
|
-
if role
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
"USER_INPUT",
|
|
112
|
-
"human",
|
|
113
|
-
):
|
|
114
|
-
content = (
|
|
115
|
-
msg.get("text")
|
|
116
|
-
or msg.get("content")
|
|
117
|
-
or msg.get("message")
|
|
118
|
-
)
|
|
119
|
-
if isinstance(content, str) and content.strip():
|
|
120
|
-
user_comment = content.strip()
|
|
117
|
+
if _is_user_role(role):
|
|
118
|
+
raw_comment = _extract_text(msg).strip()
|
|
119
|
+
if raw_comment:
|
|
120
|
+
user_comment = raw_comment
|
|
121
121
|
break
|
|
122
122
|
|
|
123
123
|
elif discovered.parser_type == "markdown":
|
|
@@ -4273,7 +4273,6 @@ def cmd_agent_last_used(
|
|
|
4273
4273
|
table = Table(box=box.ROUNDED, show_header=True, header_style="bold cyan")
|
|
4274
4274
|
table.add_column("#", style="dim", width=3)
|
|
4275
4275
|
table.add_column("Agent CLI", style="bold yellow")
|
|
4276
|
-
table.add_column("Description", style="white")
|
|
4277
4276
|
table.add_column("Last Active", style="green")
|
|
4278
4277
|
table.add_column("Last Comment Snippet", style="dim white")
|
|
4279
4278
|
|
|
@@ -4283,7 +4282,6 @@ def cmd_agent_last_used(
|
|
|
4283
4282
|
table.add_row(
|
|
4284
4283
|
str(idx),
|
|
4285
4284
|
item.agent_name,
|
|
4286
|
-
item.description,
|
|
4287
4285
|
rel_time,
|
|
4288
4286
|
comment_snippet,
|
|
4289
4287
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|