fastled 1.4.1__tar.gz → 1.4.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.
- {fastled-1.4.1 → fastled-1.4.2}/PKG-INFO +1 -1
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/__version__.py +1 -1
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/app.py +5 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/playwright_browser.py +94 -26
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled.egg-info/PKG-INFO +1 -1
- {fastled-1.4.1 → fastled-1.4.2}/.aiderignore +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.cursorrules +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.dockerignore +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.github/workflows/build_multi_docker_image.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.github/workflows/build_webpage.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.github/workflows/lint.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.github/workflows/publish_release.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.github/workflows/template_build_docker_image.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.github/workflows/test_build_exe.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.github/workflows/test_macos.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.github/workflows/test_ubuntu.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.github/workflows/test_win.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.gitignore +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.pylintrc +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.vscode/launch.json +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.vscode/settings.json +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/.vscode/tasks.json +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/DEBUGGER.md +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/Dockerfile +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/FAQ.md +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/LICENSE +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/MANIFEST.in +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/README.md +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/RELEASE.md +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/TODO.md +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/build_exe.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/build_local_docker.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/build_site.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/clean +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/compiler/debug.sh +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/compiler/run.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/demo/100dots.html +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/demo/demo_threejs.html +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/demo/micdemo.html +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/demo/mp3upload.html +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/demo/webgl_postprocessing_unreal_bloom.html +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/docker-compose.yml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/entrypoint.sh +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/install +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/install_linux.sh +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/lint +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/pyproject.toml +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/requirements.docker.txt +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/requirements.testing.txt +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/setup.cfg +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/setup.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/__init__.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/__main__.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/args.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/assets/example.txt +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/assets/localhost-key.pem +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/assets/localhost.pem +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/cli.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/cli_test.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/cli_test_interactive.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/client_server.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/compile_server.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/compile_server_impl.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/docker_manager.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/filewatcher.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/keyboard.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/keyz.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/live_client.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/open_browser.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/parse_args.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/paths.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/print_filter.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/project_init.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/select_sketch_directory.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/server_flask.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/server_start.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/settings.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/site/build.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/site/examples.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/sketch.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/spinner.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/string_diff.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/test/can_run_local_docker_tests.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/test/examples.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/types.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/util.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/version.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled/web_compile.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled.egg-info/SOURCES.txt +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled.egg-info/dependency_links.txt +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled.egg-info/entry_points.txt +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled.egg-info/requires.txt +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/src/fastled.egg-info/top_level.txt +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/test +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/integration/test_build_examples.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/integration/test_examples.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/integration/test_playwright_integration.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/html/index.html +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_api.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_bad_ino.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_banner_string.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_cli.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_cli_no_platformio.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_compile_server.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_debug_fetch_source_files.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_docker_linux_on_windows.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_embedded_data.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_filechanger.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_flask_headers.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_http_server.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_ino/bad/bad.ino +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_ino/bad_platformio/bad_platformio.ino +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_ino/bad_platformio/platformio.ini +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_ino/embedded/data/bigdata.dat +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_ino/embedded/wasm.ino +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_ino/wasm/wasm.ino +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_manual_api_invocation.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_no_platformio_compile.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_project_init.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_server_and_client_seperatly.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_session_compile.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_string_diff.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_string_diff_comprehensive.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_version.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/tests/unit/test_webcompile.py +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/upload_package.sh +0 -0
- {fastled-1.4.1 → fastled-1.4.2}/vscode-plugin/readme +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
# IMPORTANT! There's a bug in github which will REJECT any version update
|
2
2
|
# that has any other change in the repo. Please bump the version as the
|
3
3
|
# ONLY change in a commit, or else the pypi update and the release will fail.
|
4
|
-
__version__ = "1.4.
|
4
|
+
__version__ = "1.4.2"
|
5
5
|
|
6
6
|
__version_url_latest__ = "https://raw.githubusercontent.com/zackees/fastled-wasm/refs/heads/main/src/fastled/__version__.py"
|
@@ -63,6 +63,11 @@ def main() -> int:
|
|
63
63
|
# now it is safe to print out the version
|
64
64
|
print(f"FastLED version: {__version__}")
|
65
65
|
|
66
|
+
# Check if Playwright browsers are installed
|
67
|
+
playwright_dir = Path.home() / ".fastled" / "playwright"
|
68
|
+
if playwright_dir.exists() and any(playwright_dir.iterdir()):
|
69
|
+
print(f"🎭 Playwright browsers available at: {playwright_dir}")
|
70
|
+
|
66
71
|
# Resolve some of the last interactive arguments
|
67
72
|
# 1. If interactive is set and the sketch directory is not given,
|
68
73
|
# then prompt the user for a sketch directory.
|
@@ -1,18 +1,23 @@
|
|
1
1
|
"""
|
2
2
|
Playwright browser integration for FastLED WASM compiler.
|
3
3
|
|
4
|
-
This module provides
|
4
|
+
This module provides a Playwright-based browser implementation that can be used
|
5
5
|
in a Playwright browser instead of the default system browser when
|
6
|
-
|
6
|
+
Playwright is available.
|
7
7
|
"""
|
8
8
|
|
9
9
|
import asyncio
|
10
|
+
import os
|
10
11
|
import sys
|
12
|
+
import threading
|
11
13
|
import warnings
|
12
|
-
from
|
14
|
+
from pathlib import Path
|
15
|
+
from typing import Any
|
13
16
|
|
14
|
-
|
15
|
-
|
17
|
+
# Set custom Playwright browser installation path
|
18
|
+
PLAYWRIGHT_DIR = Path.home() / ".fastled" / "playwright"
|
19
|
+
PLAYWRIGHT_DIR.mkdir(parents=True, exist_ok=True)
|
20
|
+
os.environ["PLAYWRIGHT_BROWSERS_PATH"] = str(PLAYWRIGHT_DIR)
|
16
21
|
|
17
22
|
try:
|
18
23
|
from playwright.async_api import Browser, Page, async_playwright
|
@@ -21,8 +26,8 @@ try:
|
|
21
26
|
except ImportError:
|
22
27
|
PLAYWRIGHT_AVAILABLE = False
|
23
28
|
async_playwright = None
|
24
|
-
Browser =
|
25
|
-
Page =
|
29
|
+
Browser = None
|
30
|
+
Page = None
|
26
31
|
|
27
32
|
|
28
33
|
def is_playwright_available() -> bool:
|
@@ -268,34 +273,57 @@ def run_playwright_browser(url: str, headless: bool = False) -> None:
|
|
268
273
|
"Playwright is not installed. Install with: pip install fastled[full]. "
|
269
274
|
"Falling back to default browser."
|
270
275
|
)
|
276
|
+
import webbrowser
|
277
|
+
|
278
|
+
webbrowser.open(url)
|
271
279
|
return
|
272
280
|
|
273
281
|
async def main():
|
274
|
-
browser =
|
282
|
+
browser = None
|
275
283
|
try:
|
284
|
+
browser = PlaywrightBrowser(headless=headless)
|
276
285
|
await browser.start()
|
277
286
|
await browser.open_url(url)
|
278
287
|
|
279
|
-
|
280
|
-
|
281
|
-
await browser.wait_for_close()
|
282
|
-
else:
|
283
|
-
# In headless mode, just wait a bit for the page to load
|
284
|
-
await asyncio.sleep(2)
|
288
|
+
print("Playwright browser opened. Press Ctrl+C to close.")
|
289
|
+
await browser.wait_for_close()
|
285
290
|
|
291
|
+
except Exception as e:
|
292
|
+
# If we get an error that suggests browsers aren't installed, try to install them
|
293
|
+
if "executable doesn't exist" in str(e) or "Browser not found" in str(e):
|
294
|
+
print("🎭 Playwright browsers not found. Installing...")
|
295
|
+
if install_playwright_browsers():
|
296
|
+
print("🎭 Retrying browser startup...")
|
297
|
+
# Try again with fresh browser instance
|
298
|
+
browser = PlaywrightBrowser(headless=headless)
|
299
|
+
await browser.start()
|
300
|
+
await browser.open_url(url)
|
301
|
+
|
302
|
+
print("Playwright browser opened. Press Ctrl+C to close.")
|
303
|
+
await browser.wait_for_close()
|
304
|
+
else:
|
305
|
+
print("❌ Failed to install Playwright browsers")
|
306
|
+
raise e
|
307
|
+
else:
|
308
|
+
raise e
|
286
309
|
except KeyboardInterrupt:
|
287
310
|
print("\nClosing Playwright browser...")
|
288
311
|
finally:
|
289
|
-
|
312
|
+
if browser is not None:
|
313
|
+
try:
|
314
|
+
await browser.close()
|
315
|
+
except Exception as e:
|
316
|
+
print(f"Warning: Failed to close Playwright browser: {e}")
|
290
317
|
|
291
318
|
try:
|
292
319
|
asyncio.run(main())
|
293
320
|
except KeyboardInterrupt:
|
294
321
|
print("\nPlaywright browser closed.")
|
295
322
|
except Exception as e:
|
296
|
-
|
297
|
-
|
298
|
-
|
323
|
+
print(f"Playwright browser failed: {e}. Falling back to default browser.")
|
324
|
+
import webbrowser
|
325
|
+
|
326
|
+
webbrowser.open(url)
|
299
327
|
|
300
328
|
|
301
329
|
class PlaywrightBrowserProxy:
|
@@ -357,7 +385,6 @@ class PlaywrightBrowserProxy:
|
|
357
385
|
return
|
358
386
|
|
359
387
|
import os
|
360
|
-
import threading
|
361
388
|
|
362
389
|
def monitor_process():
|
363
390
|
"""Monitor the browser process and exit when it terminates."""
|
@@ -407,8 +434,9 @@ def run_playwright_browser_persistent(url: str, headless: bool = False) -> None:
|
|
407
434
|
return
|
408
435
|
|
409
436
|
async def main():
|
410
|
-
browser =
|
437
|
+
browser = None
|
411
438
|
try:
|
439
|
+
browser = PlaywrightBrowser(headless=headless)
|
412
440
|
await browser.start()
|
413
441
|
await browser.open_url(url)
|
414
442
|
|
@@ -420,12 +448,37 @@ def run_playwright_browser_persistent(url: str, headless: bool = False) -> None:
|
|
420
448
|
while not browser._should_exit.is_set():
|
421
449
|
await asyncio.sleep(0.1)
|
422
450
|
|
451
|
+
except Exception as e:
|
452
|
+
# If we get an error that suggests browsers aren't installed, try to install them
|
453
|
+
if "executable doesn't exist" in str(e) or "Browser not found" in str(e):
|
454
|
+
print("🎭 Playwright browsers not found. Installing...")
|
455
|
+
if install_playwright_browsers():
|
456
|
+
print("🎭 Retrying browser startup...")
|
457
|
+
# Try again with fresh browser instance
|
458
|
+
browser = PlaywrightBrowser(headless=headless)
|
459
|
+
await browser.start()
|
460
|
+
await browser.open_url(url)
|
461
|
+
|
462
|
+
print(
|
463
|
+
"Playwright browser opened. Browser will remain open until the FastLED process exits."
|
464
|
+
)
|
465
|
+
|
466
|
+
# Keep the browser alive until exit is signaled
|
467
|
+
while not browser._should_exit.is_set():
|
468
|
+
await asyncio.sleep(0.1)
|
469
|
+
else:
|
470
|
+
print("❌ Failed to install Playwright browsers")
|
471
|
+
raise e
|
472
|
+
else:
|
473
|
+
raise e
|
423
474
|
except KeyboardInterrupt:
|
424
475
|
print("\nClosing Playwright browser...")
|
425
|
-
except Exception as e:
|
426
|
-
print(f"Playwright browser error: {e}")
|
427
476
|
finally:
|
428
|
-
|
477
|
+
if browser is not None:
|
478
|
+
try:
|
479
|
+
await browser.close()
|
480
|
+
except Exception as e:
|
481
|
+
print(f"Warning: Failed to close Playwright browser: {e}")
|
429
482
|
|
430
483
|
try:
|
431
484
|
asyncio.run(main())
|
@@ -455,6 +508,8 @@ def open_with_playwright(url: str, headless: bool = False) -> PlaywrightBrowserP
|
|
455
508
|
def install_playwright_browsers() -> bool:
|
456
509
|
"""Install Playwright browsers if not already installed.
|
457
510
|
|
511
|
+
Installs browsers to ~/.fastled/playwright directory.
|
512
|
+
|
458
513
|
Returns:
|
459
514
|
True if installation was successful or browsers were already installed
|
460
515
|
"""
|
@@ -462,6 +517,16 @@ def install_playwright_browsers() -> bool:
|
|
462
517
|
return False
|
463
518
|
|
464
519
|
try:
|
520
|
+
import os
|
521
|
+
from pathlib import Path
|
522
|
+
|
523
|
+
# Set custom browser installation path
|
524
|
+
playwright_dir = Path.home() / ".fastled" / "playwright"
|
525
|
+
playwright_dir.mkdir(parents=True, exist_ok=True)
|
526
|
+
|
527
|
+
# Set environment variable for Playwright browser path
|
528
|
+
os.environ["PLAYWRIGHT_BROWSERS_PATH"] = str(playwright_dir)
|
529
|
+
|
465
530
|
from playwright.sync_api import sync_playwright
|
466
531
|
|
467
532
|
with sync_playwright() as p:
|
@@ -475,21 +540,24 @@ def install_playwright_browsers() -> bool:
|
|
475
540
|
|
476
541
|
# If we get here, browsers need to be installed
|
477
542
|
print("Installing Playwright browsers...")
|
543
|
+
print(f"Installing to: {playwright_dir}")
|
478
544
|
import subprocess
|
479
545
|
|
480
546
|
result = subprocess.run(
|
481
547
|
[sys.executable, "-m", "playwright", "install", "chromium"],
|
482
548
|
capture_output=True,
|
483
549
|
text=True,
|
550
|
+
env=dict(os.environ, PLAYWRIGHT_BROWSERS_PATH=str(playwright_dir)),
|
484
551
|
)
|
485
552
|
|
486
553
|
if result.returncode == 0:
|
487
|
-
print("Playwright browsers installed successfully
|
554
|
+
print("✅ Playwright browsers installed successfully!")
|
555
|
+
print(f" Location: {playwright_dir}")
|
488
556
|
return True
|
489
557
|
else:
|
490
|
-
print(f"Failed to install Playwright browsers: {result.stderr}")
|
558
|
+
print(f"❌ Failed to install Playwright browsers: {result.stderr}")
|
491
559
|
return False
|
492
560
|
|
493
561
|
except Exception as e:
|
494
|
-
print(f"Error installing Playwright browsers: {e}")
|
562
|
+
print(f"❌ Error installing Playwright browsers: {e}")
|
495
563
|
return False
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|