ErisPulse 2.4.3.dev1__tar.gz → 2.4.4__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.
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/PKG-INFO +1 -1
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/pyproject.toml +1 -1
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/init.py +1 -13
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/run.py +53 -15
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/run.pyi +5 -3
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/logger.py +1 -1
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/sdk.py +2 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/.gitignore +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/LICENSE +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/README.md +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/base.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/base.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/cli.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/cli.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/init.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/install.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/install.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/list.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/list.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/list_remote.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/list_remote.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/self_update.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/self_update.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/uninstall.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/uninstall.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/upgrade.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/console.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/console.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/registry.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/registry.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/utils/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/utils/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/utils/package_manager.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/CLI/utils/package_manager.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/adapter.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/adapter.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/manager.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/module.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/module.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/storage.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Bases/storage.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/base.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/base.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/command.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/command.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/message.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/message.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/message_builder.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/meta.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/meta.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/notice.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/notice.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/request.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/request.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/session_type.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/session_type.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/wrapper.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/Event/wrapper.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/adapter.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/adapter.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/config.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/config.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/lifecycle.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/lifecycle.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/logger.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/module.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/module.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/router.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/router.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/storage.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/Core/storage.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/__main__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/__main__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/adapter.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/adapter.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/bases/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/bases/finder.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/bases/finder.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/module.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/finders/module.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/adapter.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/adapter.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/bases/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/bases/loader.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/bases/loader.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/module.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/module.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/strategy.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/loaders/strategy.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/runtime/__init__.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/runtime/__init__.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/runtime/exceptions.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/runtime/exceptions.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/runtime/frame_config.py +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/runtime/frame_config.pyi +0 -0
- {erispulse-2.4.3.dev1 → erispulse-2.4.4}/src/ErisPulse/sdk.pyi +0 -0
|
@@ -16,7 +16,6 @@ from ..console import console
|
|
|
16
16
|
from ..utils import PackageManager
|
|
17
17
|
from ..base import Command
|
|
18
18
|
|
|
19
|
-
|
|
20
19
|
class InitCommand(Command):
|
|
21
20
|
name = "init"
|
|
22
21
|
description = "初始化 ErisPulse 项目"
|
|
@@ -119,18 +118,7 @@ class InitCommand(Command):
|
|
|
119
118
|
f.write("import asyncio\n")
|
|
120
119
|
f.write("from ErisPulse import sdk\n\n")
|
|
121
120
|
f.write("async def main():\n")
|
|
122
|
-
f.write(
|
|
123
|
-
f.write(" # 初始化 SDK\n")
|
|
124
|
-
f.write(" await sdk.init()\n\n")
|
|
125
|
-
f.write(" # 启动适配器\n")
|
|
126
|
-
f.write(" await sdk.adapter.startup()\n\n")
|
|
127
|
-
f.write(' print("ErisPulse 已启动,按 Ctrl+C 退出")\n')
|
|
128
|
-
f.write(" try:\n")
|
|
129
|
-
f.write(" while True:\n")
|
|
130
|
-
f.write(" await asyncio.sleep(1)\n")
|
|
131
|
-
f.write(" except KeyboardInterrupt:\n")
|
|
132
|
-
f.write(" print(\"\\n正在关闭...\")\n")
|
|
133
|
-
f.write(" await sdk.adapter.shutdown()\n\n")
|
|
121
|
+
f.write(" await sdk.run(keep_running=True)\n\n")
|
|
134
122
|
f.write("if __name__ == \"__main__\":\n")
|
|
135
123
|
f.write(" asyncio.run(main())\n")
|
|
136
124
|
|
|
@@ -5,8 +5,11 @@ Run 命令实现
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
import os
|
|
8
|
+
import sys
|
|
8
9
|
import time
|
|
9
10
|
import asyncio
|
|
11
|
+
import subprocess
|
|
12
|
+
import runpy
|
|
10
13
|
from argparse import ArgumentParser
|
|
11
14
|
from watchdog.observers import Observer
|
|
12
15
|
from rich.panel import Panel
|
|
@@ -114,27 +117,62 @@ class RunCommand(Command):
|
|
|
114
117
|
self._observer.join()
|
|
115
118
|
|
|
116
119
|
def _run_script(self, script_path: str, reload_mode: bool):
|
|
117
|
-
|
|
118
|
-
运行指定脚本文件
|
|
119
|
-
"""
|
|
120
|
-
async def _run():
|
|
121
|
-
from ... import sdk
|
|
120
|
+
script_path_abs = os.path.abspath(script_path)
|
|
122
121
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
122
|
+
if reload_mode:
|
|
123
|
+
self._run_script_with_reload(script_path_abs)
|
|
124
|
+
else:
|
|
125
|
+
try:
|
|
126
|
+
runpy.run_path(script_path_abs, run_name="__main__")
|
|
127
|
+
except SystemExit:
|
|
128
|
+
pass
|
|
129
|
+
except KeyboardInterrupt:
|
|
130
|
+
pass
|
|
131
|
+
|
|
132
|
+
def _run_script_with_reload(self, script_path_abs: str):
|
|
133
|
+
watch_dir = os.path.dirname(script_path_abs)
|
|
134
|
+
|
|
135
|
+
process = subprocess.Popen([sys.executable, script_path_abs])
|
|
136
|
+
|
|
137
|
+
reload_state = {
|
|
138
|
+
"process": process,
|
|
139
|
+
"last_reload": 0.0,
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
class _ScriptReloadHandler(FileSystemEventHandler):
|
|
143
|
+
def on_modified(self, event):
|
|
144
|
+
now = time.time()
|
|
145
|
+
if now - reload_state["last_reload"] < 1.0:
|
|
146
|
+
return
|
|
147
|
+
if event.src_path.endswith(".py"):
|
|
148
|
+
reload_state["last_reload"] = now
|
|
149
|
+
console.print(f"检测到文件变更 ({os.path.basename(event.src_path)}),正在重启...")
|
|
150
|
+
reload_state["process"].terminate()
|
|
151
|
+
reload_state["process"].wait()
|
|
152
|
+
reload_state["process"] = subprocess.Popen([sys.executable, script_path_abs])
|
|
153
|
+
|
|
154
|
+
observer = Observer()
|
|
155
|
+
observer.schedule(_ScriptReloadHandler(), watch_dir, recursive=True)
|
|
156
|
+
observer.start()
|
|
127
157
|
|
|
128
|
-
|
|
158
|
+
console.print(Panel(
|
|
159
|
+
f"[bold]开发重载模式[/]\n监控目录: [path]{watch_dir}[/]",
|
|
160
|
+
title="热重载已启动",
|
|
161
|
+
border_style="info"
|
|
162
|
+
))
|
|
129
163
|
|
|
130
164
|
try:
|
|
131
|
-
|
|
165
|
+
while True:
|
|
166
|
+
proc = reload_state["process"]
|
|
167
|
+
proc.wait()
|
|
168
|
+
time.sleep(0.3)
|
|
169
|
+
if reload_state["process"] is proc:
|
|
170
|
+
break
|
|
132
171
|
except KeyboardInterrupt:
|
|
133
|
-
|
|
172
|
+
reload_state["process"].terminate()
|
|
134
173
|
finally:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
self._observer.join()
|
|
174
|
+
observer.stop()
|
|
175
|
+
observer.join()
|
|
138
176
|
|
|
139
177
|
def _setup_watchdog(self, watch_dir: str, loop: asyncio.AbstractEventLoop):
|
|
140
178
|
if not os.path.exists(watch_dir):
|
|
@@ -11,8 +11,11 @@ Run 命令实现
|
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
import os
|
|
14
|
+
import sys
|
|
14
15
|
import time
|
|
15
16
|
import asyncio
|
|
17
|
+
import subprocess
|
|
18
|
+
import runpy
|
|
16
19
|
from argparse import ArgumentParser
|
|
17
20
|
from watchdog.observers import Observer
|
|
18
21
|
from rich.panel import Panel
|
|
@@ -55,9 +58,8 @@ class RunCommand(Command):
|
|
|
55
58
|
"""
|
|
56
59
|
...
|
|
57
60
|
def _run_script(self: object, script_path: str, reload_mode: bool) -> ...:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"""
|
|
61
|
+
...
|
|
62
|
+
def _run_script_with_reload(self: object, script_path_abs: str) -> ...:
|
|
61
63
|
...
|
|
62
64
|
def _setup_watchdog(self: object, watch_dir: str, loop: asyncio.AbstractEventLoop) -> ...:
|
|
63
65
|
...
|
|
@@ -120,7 +120,7 @@ class Logger:
|
|
|
120
120
|
try:
|
|
121
121
|
self._file_handler = logging.FileHandler(p, encoding="utf-8")
|
|
122
122
|
# 使用自定义格式化器去除rich markup标签
|
|
123
|
-
self._file_handler.setFormatter(logging.Formatter("
|
|
123
|
+
self._file_handler.setFormatter(logging.Formatter("%(message)s"))
|
|
124
124
|
self._logger.addHandler(self._file_handler)
|
|
125
125
|
return True
|
|
126
126
|
except Exception as e:
|
|
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
|