openrunner-sdk 2.13.0__tar.gz → 2.13.2__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.
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/PKG-INFO +1 -1
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/__init__.py +1 -1
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/cli.py +28 -3
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/install_commands.py +39 -40
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/pyproject.toml +1 -1
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/.gitignore +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/=6.0 +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/=8.1 +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/README.md +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/api_client.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/artifact.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/buffer.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/cache.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/config.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/cost.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/dataset.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/environment.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/evaluation.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/feedback.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/git_info.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/guardrails.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/__init__.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/accelerate.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/anthropic_tracer.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/catboost.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/diffusers.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/fastai.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/forced_alignment.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/gladia.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/gymnasium.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/huggingface.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/hydra.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/ignite.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/jax.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/keras.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/langchain.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/lightgbm.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/lightning.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/llamaindex.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/openai_finetune.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/openai_tracer.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/optuna.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/pytorch.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/sb3.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/sklearn.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/tensorflow.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/trl.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/tts.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/ultralytics.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/voice_agent.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/whisper.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/integration/xgboost.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/launch.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/media.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/migrate.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/model.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/offline.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/pii.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/plot.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/prompt.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/query_api.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/redact.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/run.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/scorers.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/sender.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/session.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/settings.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/summary.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/sweep.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/system_metrics.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/tensorboard.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/trace.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/transcript_formatter.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/wal.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/wandb_compat/__init__.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/wandb_compat/_shim.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/openrunner/wer.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/__init__.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/conftest.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_alert.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_aliases.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_api_client.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_artifact.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_buffer.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_cache.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_class_scorers.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_cli.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_config.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_evaluation.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_finish.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_git_info.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_init.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_integration_fastai.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_integration_huggingface.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_integration_keras.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_integration_langchain.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_integration_lightning.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_integration_pytorch.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_integration_sklearn.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_integration_xgboost.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_launch.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_log.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_log_code.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_media.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_migrate.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_offline.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_offline_sync.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_pii.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_plot.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_query_api.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_resume.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_sdk_features.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_sender.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_summary.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_sweep.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_system_metrics.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_trace.py +0 -0
- {openrunner_sdk-2.13.0 → openrunner_sdk-2.13.2}/tests/test_wandb_compat.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrunner-sdk
|
|
3
|
-
Version: 2.13.
|
|
3
|
+
Version: 2.13.2
|
|
4
4
|
Summary: OpenRunner SDK - W&B-compatible ML experiment tracking client
|
|
5
5
|
Project-URL: Homepage, https://github.com/jqueguiner/openrunner
|
|
6
6
|
Project-URL: Repository, https://github.com/jqueguiner/openrunner
|
|
@@ -120,7 +120,7 @@ launch.from_run = _launch_from_run # type: ignore[attr-defined]
|
|
|
120
120
|
# openrunner.trace.patch_openai() syntax
|
|
121
121
|
trace.patch_openai = _patch_openai # type: ignore[attr-defined]
|
|
122
122
|
|
|
123
|
-
__version__ = "2.13.
|
|
123
|
+
__version__ = "2.13.2"
|
|
124
124
|
|
|
125
125
|
logger = logging.getLogger("openrunner")
|
|
126
126
|
|
|
@@ -34,6 +34,27 @@ from openrunner.offline import OfflineStorage, OfflineSync
|
|
|
34
34
|
logger = logging.getLogger("openrunner")
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
# ---------------------------------------------------------------------------
|
|
38
|
+
# Auto-install commands
|
|
39
|
+
# ---------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _auto_install_commands() -> None:
|
|
43
|
+
"""Auto-install/update slash commands for all AI tools if outdated."""
|
|
44
|
+
try:
|
|
45
|
+
from openrunner import __version__
|
|
46
|
+
marker = Path.home() / ".openrunner" / ".commands_version"
|
|
47
|
+
if marker.exists() and marker.read_text().strip() == __version__:
|
|
48
|
+
return # already up to date
|
|
49
|
+
# Install for all detected tools silently
|
|
50
|
+
from openrunner.install_commands import install_all
|
|
51
|
+
install_all()
|
|
52
|
+
marker.parent.mkdir(parents=True, exist_ok=True)
|
|
53
|
+
marker.write_text(__version__)
|
|
54
|
+
except Exception:
|
|
55
|
+
pass # never crash on auto-install
|
|
56
|
+
|
|
57
|
+
|
|
37
58
|
# ---------------------------------------------------------------------------
|
|
38
59
|
# Settings helpers
|
|
39
60
|
# ---------------------------------------------------------------------------
|
|
@@ -69,10 +90,14 @@ def _save_settings(settings: dict[str, Any]) -> None:
|
|
|
69
90
|
# ---------------------------------------------------------------------------
|
|
70
91
|
|
|
71
92
|
|
|
72
|
-
@click.group()
|
|
73
|
-
|
|
93
|
+
@click.group(invoke_without_command=True)
|
|
94
|
+
@click.pass_context
|
|
95
|
+
def main(ctx) -> None:
|
|
74
96
|
"""OpenRunner CLI - ML experiment tracking."""
|
|
75
|
-
|
|
97
|
+
if ctx.invoked_subcommand is None:
|
|
98
|
+
click.echo(ctx.get_help())
|
|
99
|
+
# Auto-install/update Claude Code commands on any CLI invocation
|
|
100
|
+
_auto_install_commands()
|
|
76
101
|
|
|
77
102
|
|
|
78
103
|
# ---------------------------------------------------------------------------
|
|
@@ -303,25 +303,40 @@ def install_claude_code() -> list[str]:
|
|
|
303
303
|
return files
|
|
304
304
|
|
|
305
305
|
|
|
306
|
-
def
|
|
307
|
-
"""Install commands
|
|
308
|
-
# Codex uses ~/.codex/ with instructions or custom commands
|
|
309
|
-
cmd_dir = Path.home() / ".codex" / "commands"
|
|
306
|
+
def _install_all_commands_to_dir(cmd_dir: Path, prefix: str = "openrunner:") -> list[str]:
|
|
307
|
+
"""Install all commands to a given directory."""
|
|
310
308
|
cmd_dir.mkdir(parents=True, exist_ok=True)
|
|
311
309
|
|
|
310
|
+
commands = {
|
|
311
|
+
"sync-session.md": SYNC_SESSION_CMD,
|
|
312
|
+
"log-note.md": LOG_NOTE_CMD,
|
|
313
|
+
"setup.md": SETUP_CMD,
|
|
314
|
+
"list-sessions.md": LIST_SESSIONS_CMD,
|
|
315
|
+
"chat.md": CHAT_CMD,
|
|
316
|
+
}
|
|
317
|
+
|
|
312
318
|
files = []
|
|
319
|
+
for filename, template in commands.items():
|
|
320
|
+
path = cmd_dir / filename
|
|
321
|
+
path.write_text(template.format(prefix=prefix))
|
|
322
|
+
files.append(str(path))
|
|
323
|
+
|
|
324
|
+
return files
|
|
313
325
|
|
|
314
|
-
sync_path = cmd_dir / "sync-session.md"
|
|
315
|
-
sync_path.write_text(SYNC_SESSION_CMD.format(prefix="openrunner:"))
|
|
316
|
-
files.append(str(sync_path))
|
|
317
326
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
files.append(str(note_path))
|
|
327
|
+
def install_codex() -> list[str]:
|
|
328
|
+
"""Install commands for Codex CLI.
|
|
321
329
|
|
|
322
|
-
|
|
330
|
+
Codex uses ~/.codex/prompts/ for custom slash commands (Markdown).
|
|
331
|
+
Also adds instructions to AGENTS.md for implicit context.
|
|
332
|
+
Ref: https://developers.openai.com/codex/custom-prompts
|
|
333
|
+
"""
|
|
334
|
+
# Codex custom prompts directory
|
|
335
|
+
files = _install_all_commands_to_dir(Path.home() / ".codex" / "prompts")
|
|
336
|
+
|
|
337
|
+
# Also add to AGENTS.md for implicit context
|
|
323
338
|
agents_file = Path.home() / ".codex" / "AGENTS.md"
|
|
324
|
-
instruction = "\n\n## OpenRunner Integration\nUse `/openrunner:sync-session` to log this session to
|
|
339
|
+
instruction = "\n\n## OpenRunner Integration\nUse `/prompts:openrunner:sync-session` to log this session.\nUse `/prompts:openrunner:setup` to configure.\nUse `/prompts:openrunner:chat <question>` to ask about sessions.\nUse `/prompts:openrunner:login` to authenticate.\n"
|
|
325
340
|
if agents_file.exists():
|
|
326
341
|
content = agents_file.read_text()
|
|
327
342
|
if "openrunner" not in content.lower():
|
|
@@ -335,39 +350,23 @@ def install_codex() -> list[str]:
|
|
|
335
350
|
|
|
336
351
|
|
|
337
352
|
def install_qwen_code() -> list[str]:
|
|
338
|
-
"""Install commands for Qwen Code.
|
|
339
|
-
cmd_dir = Path.home() / ".qwen-code" / "commands"
|
|
340
|
-
cmd_dir.mkdir(parents=True, exist_ok=True)
|
|
341
|
-
|
|
342
|
-
files = []
|
|
353
|
+
"""Install commands for Qwen Code.
|
|
343
354
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
note_path.write_text(LOG_NOTE_CMD.format(prefix="openrunner:"))
|
|
350
|
-
files.append(str(note_path))
|
|
351
|
-
|
|
352
|
-
return files
|
|
355
|
+
Qwen Code uses .qwen-code/commands/ in project root or ~/.qwen-code/commands/ globally.
|
|
356
|
+
Supports Markdown format with YAML frontmatter.
|
|
357
|
+
Ref: https://github.com/QwenLM/qwen-code/blob/main/docs/users/features/commands.md
|
|
358
|
+
"""
|
|
359
|
+
return _install_all_commands_to_dir(Path.home() / ".qwen-code" / "commands")
|
|
353
360
|
|
|
354
361
|
|
|
355
362
|
def install_opencode() -> list[str]:
|
|
356
|
-
"""Install commands for OpenCode.
|
|
357
|
-
cmd_dir = Path.home() / ".opencode" / "commands"
|
|
358
|
-
cmd_dir.mkdir(parents=True, exist_ok=True)
|
|
359
|
-
|
|
360
|
-
files = []
|
|
361
|
-
|
|
362
|
-
sync_path = cmd_dir / "sync-session.md"
|
|
363
|
-
sync_path.write_text(SYNC_SESSION_CMD.format(prefix="openrunner:"))
|
|
364
|
-
files.append(str(sync_path))
|
|
363
|
+
"""Install commands for OpenCode.
|
|
365
364
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
return
|
|
365
|
+
OpenCode uses ~/.config/opencode/commands/ for global user commands.
|
|
366
|
+
Each .md file becomes a user:filename command.
|
|
367
|
+
Ref: https://opencode.ai/docs/commands/
|
|
368
|
+
"""
|
|
369
|
+
return _install_all_commands_to_dir(Path.home() / ".config" / "opencode" / "commands")
|
|
371
370
|
|
|
372
371
|
|
|
373
372
|
# ---------------------------------------------------------------------------
|
|
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
|