From c62d36a33837f037124bc8b5e2bd11fd622fdc3d Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Tue, 15 Jul 2025 13:13:21 -0700 Subject: [PATCH] fix --- .spotify_cache | 2 +- logs/app.log | 301 ++++++++++++++++++ .../__pycache__/downloads.cpython-312.pyc | Bin 456206 -> 456066 bytes ui/pages/downloads.py | 13 +- 4 files changed, 309 insertions(+), 7 deletions(-) diff --git a/.spotify_cache b/.spotify_cache index 5ea0321d..7eb1327a 100644 --- a/.spotify_cache +++ b/.spotify_cache @@ -1 +1 @@ -{"access_token": "BQA14CPjrQ7J0h5Z2oVYnqpGfQNJfzIWyhPhqXv8IrrOmT8Q0ZKG1uCE784z-bSD3Ouz_BTZ_Ocflmm7EQC75Fk1NvkzaZq4QVORcD1Jo064dj9odmmptQRP-4xOozuLyW0h40u66NcuGDwhoX7IUjk5fiqu8TZg8DbWoQKVlIoFu7bmDGo41debrcbmAy9hpenqC-9VdJuucF0NpHQpWrm-1Y-SQzc6Y18Ug3yYIivli-qc4oklwqkTcsqX9Hgu", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1752567970, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file +{"access_token": "BQAWKVNNtomCKGa7Uqjf0jVEQL6QhxZjNNR7R_q5J0TUWlMHm7uFhxFTr_tkZx9OUgZK26871FBtB7vTDIvB2w0DsRyva7IW50NZOACzjAqGtwhVHffNydcScBLGEqswd0Iw1DhTVy1QOILDXPU106HwnedIRoBduxlDSfVhVdp5QbOS4svQAzZcHrf3xEvvSr7C_KK4SKMSDjBSl_mKgqhCmkJt0vk79F3lh-TUOI5K1S_hUMxVXro-6vLj2Mh4", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1752613801, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file diff --git a/logs/app.log b/logs/app.log index 0751423b..148ee4de 100644 --- a/logs/app.log +++ b/logs/app.log @@ -32567,3 +32567,304 @@ 2025-07-15 00:26:47 - newmusic.main - INFO - closeEvent:186 - Stopping status monitoring thread... 2025-07-15 00:26:47 - newmusic.main - INFO - closeEvent:191 - Closing Soulseek client... 2025-07-15 00:26:47 - newmusic.main - INFO - closeEvent:197 - Application closed successfully +2025-07-15 13:10:01 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-15 13:10:01 - newmusic.main - INFO - main:211 - Starting NewMusic application +2025-07-15 13:10:01 - newmusic.spotify_client - INFO - _setup_client:179 - Successfully authenticated with Spotify as broquethomas +2025-07-15 13:10:02 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music +2025-07-15 13:10:02 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-15 13:10:02 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-15 13:10:02 - newmusic.spotify_client - INFO - _setup_client:179 - Successfully authenticated with Spotify as broquethomas +2025-07-15 13:10:02 - newmusic.main - INFO - change_page:163 - Changed to page: dashboard +2025-07-15 13:10:02 - newmusic.main - INFO - setup_media_player_connections:150 - Media player connections established between sidebar and downloads page +2025-07-15 13:10:03 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Aether +2025-07-15 13:10:03 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Favorite Artists +2025-07-15 13:10:05 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Brittnea +2025-07-15 13:10:06 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Baleigh +2025-07-15 13:10:08 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Extra Music +2025-07-15 13:10:09 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Maggi Main +2025-07-15 13:10:14 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Broque Main +2025-07-15 13:10:22 - newmusic.spotify_client - INFO - get_user_playlists:208 - Retrieved 7 playlists +2025-07-15 13:10:33 - newmusic.main - INFO - change_page:163 - Changed to page: downloads +2025-07-15 13:10:37 - newmusic.soulseek_client - INFO - search:551 - Starting search for: 'demon days' +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - search:561 - Search data: {'searchText': 'demon days', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - search:562 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: {'searchText': 'demon days', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: {"fileCount":0,"id":"63292ba2-7758-4f6e-b1ca-8f676eeef2d8","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"demon days","startedAt":"2025-07-15T20:10:37.3560629Z","state":"InProgress","token":10928}... +2025-07-15 13:10:37 - newmusic.soulseek_client - INFO - search:575 - Search initiated with ID: 63292ba2-7758-4f6e-b1ca-8f676eeef2d8 +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 1/20) - elapsed: 0.0s +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/63292ba2-7758-4f6e-b1ca-8f676eeef2d8/responses +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-15 13:10:37 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 2/20) - elapsed: 1.5s +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/63292ba2-7758-4f6e-b1ca-8f676eeef2d8/responses +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":17,"files":[{"bitRate":146,"code":1,"extension":"","filename":"@@ktzme\\Music\\E-I\\Gorillaz\\Demon Days\\01 - Intro.mp3","length":63,"size":1290240,"isLocked":false},{"bitRate":179,"code":1,"extension":"","filename":"@@ktzme\\Music\\E-I\\Gorillaz\\Demon Days\\02 - Last Living Souls.mp3","length":190,"size":4409344,"isLocked":false},{"bitRate":198,"code":1,"extension":"","filename":"@@ktzme\\Music\\E-I\\Gorillaz\\Demon Days\\03 - Kids With Guns.mp3","length":225,"size":5738354,"isL... +2025-07-15 13:10:39 - newmusic.soulseek_client - INFO - search:597 - Found 249 new responses (249 total) at 1.5s +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:345 - Processing 249 user responses +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bleebobreebo has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User musica101 has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User erthmvr2 has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Whoregan's Heroes has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Lithim has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Fuzy554 has 31 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User chcoha has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Neitze has 31 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tectonicsynclair has 25 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User notavoidinganything has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User FalconFour has 10 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thampy has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Starsky&Gut has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Hangfire has 2 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User r0b07 has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User arx1963 has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ThunderousWizard has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User properly has 22 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bsdc has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User applegiver has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User baaaas has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Wake has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User printer has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tso55 has 11 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bigmaninspace has 38 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User polop148 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User djkawash has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User attackallaround3 has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Firstgreatcommander has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Badboy2150 has 21 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User sumb0dy has 36 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User hotchair has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User catpunx has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User DonacDum has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Vulcan has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jhlusk2 has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User WD1983 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User GeorgeHatesFun has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User roybafett has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User itmightbemikey has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User SoulEngine has 3 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User JovaZmaj has 10 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Jansten has 29 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User db_cooper has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Senik1221 has 25 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TroubleMoth has 33 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User whoosemoose has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User NegativeZero has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User notZX has 31 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ForTheCompany2REAL has 21 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Gower84 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ./mkk has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Epicus Doomicus has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User amwo has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User shytokyo has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Fortuitous has 28 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Pez has 61 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User GruntusAromalog has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User AxionSigil has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User numian_vibration has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ChaosMerely has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thither has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User godking has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ShockedOtter has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Belcerebon has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User sexint has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User p8757181 has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User deathmatch has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jimbob23 has 37 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TheActionIsGo... has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User marsellus has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User murdercitydevil has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User welphehe has 21 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User povodesanto has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User admin192205 has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User farmdestroyer has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xannia has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jackohdee has 30 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User MYCELIUM_BUDDY has 18 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User chibiotaku has 22 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User glint has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Bruxist has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Marshall2022 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User kristiankat has 11 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User davidx86 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mwslawson has 13 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Sponch24 has 3 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User 22wetdogs has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User the_robot_from_planet_danger has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User penicilling has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User sneezycat has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User gliss has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User yroyathon has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bluecar5556 has 21 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cibaz has 3 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Erarg has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Soul716 has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User k_huntington has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User paulfunyun has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User FragmentHead has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thefasthandovdoom has 2 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User avagantamos has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Psybinary has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User William Woollard has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User blaackhippy has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TheBun has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User OriginSaint has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User activon has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xgvnr has 2 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User oclictis1 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dracbf has 23 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User boxierino has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Hundrednaire has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ghoulbones has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Hamerhoofd has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User alvanchip has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User wrapt_in_plastik has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xjshawx has 2 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User exsanguinidraculae has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BillyStinkyPit911 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dreamer has 18 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Spaal has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User coldsnap has 26 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User techllama has 25 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dudeguy123MN has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Gkirin has 21 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User hayk has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bounceman has 7 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tofillwithfruit has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dvcky has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User leonardoclk has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Turmoil has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TheUnsane has 6 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Jookly has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User luckybeepo has 29 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User 30feet has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User salvo00786 has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Romaco991 has 7 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mysticgarden has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User chewi105 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Doomwalker has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User asdfasdgfdsg has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User brihar22 has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Yeenr has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User pbprincess has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User naraberu has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Trzyzet has 21 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User musickaladin has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User blokmotion has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xjbx has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User JustAnotherPerson123456 has 31 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lno_onel has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User fearkills has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thegreengiant has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User safire has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jeskola333 has 23 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Zift has 31 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Flimhumabber has 30 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User amyslskduser has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Pavlov1955 has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BANLOCKEDFILES has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lexystardust has 30 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lilprincess_uwu has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User vellius has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TooMuchDog has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User 1337haXXor has 4 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User rwb has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User MrWhatNot has 32 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User JasDawg has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User darkling23 has 20 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ztronzo has 2 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User az3x has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BeatscapeLounge has 18 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dropfish has 34 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ThinkDbl has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User IMregoR has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User madness_rules has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User phonetiks has 2 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cinstitute2 has 36 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mrm has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ketacat has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User algernon has 31 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User seants has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User travisestler has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Klipah has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User onekmilesbehind7779979 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mikeoxlarge666 has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User DonMarcos has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User limonchiq has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User trinsic has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dunce has 30 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User nitrogenkitty has 22 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tirantrex has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User AnorexicSnorlax has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Chiritech has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User FulhamRev has 10 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dp8039 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User loudHappyWarthogDream has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lanny has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User commode9588 has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User JColburn has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User countbeefula has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Gbscobel has 2 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User The_Real_Matt_Murdock has 30 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User radishisonline has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User alilstinky has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User deepwound1 has 20 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User naenano has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jimmydean6969 has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tewa has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User drykk has 31 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User badbanker has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User meatfaze has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Wagon has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Aw5027 has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User gizmogoat has 21 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User loginty has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User spikenkw has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thePretender has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jackPOTjohnny has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User KnifeWoundGirl has 51 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Wolf359 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User downloader200 has 2 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User siys has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Gariplex has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User CherrySeed has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User DigidocTN has 2 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Linus Torvalds has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User MGee9 has 7 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Picea rubens has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Zeni has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User darbus has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mothman666 has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xbreeddarby has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Puce_King has 22 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User MariahWest has 1 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tysancho has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TacoMaco has 0 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User venividiveni has 19 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Exposso72 has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User h333d has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User WanderLemming has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jaylfc7 has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User shanealeslie has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User 7vcoTIRF5V4IkMbRlN has 18 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zerolexi_koshu has 15 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thep50 has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tonyzur has 16 files +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User hidden_squid has 17 files +2025-07-15 13:10:39 - newmusic.soulseek_client - INFO - _process_search_responses:399 - Found 86 individual tracks and 206 albums +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:400 - Album detection details: 291 potential albums processed +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: bleebobreebo/@@ktzme/Music/E-I/Gorillaz/Demon Days -> 15 tracks +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: musica101/@@psrlj/downtempo, trip-hop/Gorillaz/Gorillaz - Demon Days -> 15 tracks +2025-07-15 13:10:39 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: erthmvr2/@@nbqmu/AAC Archive/Cacola/2019 - The Angel, The Demon, -> 1 tracks +2025-07-15 13:10:39 - newmusic.soulseek_client - INFO - search:617 - Processed results: 86 tracks, 206 albums +2025-07-15 13:10:39 - newmusic.soulseek_client - INFO - search:621 - Early termination: Found 249 responses, stopping search +2025-07-15 13:10:39 - newmusic.soulseek_client - INFO - search:632 - Search completed. Final results: 86 tracks and 206 albums for query: demon days +2025-07-15 13:12:13 - newmusic.main - INFO - closeEvent:176 - Closing application... +2025-07-15 13:12:13 - newmusic.main - INFO - closeEvent:181 - Cleaning up Downloads page threads... +2025-07-15 13:12:13 - newmusic.main - INFO - closeEvent:186 - Stopping status monitoring thread... +2025-07-15 13:12:15 - newmusic.main - INFO - closeEvent:191 - Closing Soulseek client... +2025-07-15 13:12:15 - newmusic.main - INFO - closeEvent:197 - Application closed successfully diff --git a/ui/pages/__pycache__/downloads.cpython-312.pyc b/ui/pages/__pycache__/downloads.cpython-312.pyc index 6122cccc2d9cef413fc2288faa90c2784067ce56..05e1d5af2ee8f7b6430b20e352e6a7596dfb56a0 100644 GIT binary patch delta 34385 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 b7q$a@8C;CIGt9p*faotF+i!efGh+k*6+BSX delta 34595 zcmbq+2YeOP@-SyxdI+TVn?^{0&}$%}CG=jUr2~PGguS6%N&+H9EXayOQ&F)XK8jIR zz$YkD^eIJA@FG=3L=Y@kuzfSLH@O7yJ^#Ot_ne&FJ!Q_EX=hHki@uJ0=xU_@fBgKs z>*2p8(#*+MPVex~3ly4>cYjdSi=tk=)dK2O&{zJqT$@+#LA74Jc?t+2C&L>%B|n&Y zK=>OM1Ec(l>&>f|<5`mzcH~MSMvI_OWA}G~&~=mICo8%Q@+K-FFldq%V{H7*TPkfx zFG5wNP~9TI@y=3=QRVAv+z3)(pedz5@7ZbyaM|=nrL8DMP?ZvMpg87`#*SHP*%1;I*l818KgOaXl^sqTUm}(mXHN_#Y7j``#6PhIdoUdQi6n;A{NG;nesRh0imU$Fl-C57X1_T=E2G*7ZQRX+8*MRcC zqKzTb!m6(~7ecf$zHMQTnuFh*UU`LuqlybB6;*Juf8Lz385O$2sA?G*?DUwNXV0ss z(Df3`%5~{&tGBg$L=tn2Zf)Wf$#2MCFE28;74vYIi)T-D@5vqPy-Jellz1 z@vM<2v&MapHSSbQ{K=T+$77nGjA?s3rtPulcH0YIYjZNa|MB$xC)0-=Pak%y)9_=F zBbN6+{||F6>;HLhW4BnNa7u%N%vi%Z}k`59g^RBm?cHhM^K@UjFPNTNZ_}#9uQ7rNOp*Jnkwjw z6@(ibvl7Gv6`sD!)^;0A%V1lkekK!AI* z5>qLfML`)QTK|qd5f1uU0^iqz9Y>@N=;N&AD@~iS^UzG+YKm9L>GEJKHc;m!@gVt1-qqrHumuh;&r1?n@~@LzJ!6i0F=FSA7k&PpKcxj0=wJ>cH}u z9>Ly}(}zG1f%~a+mGQ)^cSNW$dG`BSG`-C-&P@vur;XpMB8-4iPorW^q?lx^oYVC0 z5c^`zfEKY-GKPQ+L5jaMyrfF3;b&|uL@868G2Rhs%yG0sr(wIJiAbvc)Zr~_E%BQp zj?sT`g{NAQKVw>%;lH4z57(T4UkhZ5h!Ymnmqe;jS~Wd}URzC*P}*sLY*kfNdUtA^ zy3s`}GSU|&iwdJ);XI3k^NlYSW@=WgM(U!-kPB3lhA=lb*JiU>g>8sigb}*1fvBin zx+qaXef!elg^^rr5Ve|&1)QFGk-faE)Lx|b6>y`q7OwTiZ#)Vi#{Bylh^5sJ-}i{r zEtN{N#}X-?dRI!b{B)yKcLF^K^dyi)AR7U?8T}~DUF>V*EgLH~8vkAfV^~ng!_vbE zoF|Y^U@U?Z4~zO2=!Kg)qp7Be^sX(Y=eT{bwjh}e2di{zLN!)9AKGZ3|L6uG?u!cakG4!Dh4aZU=Jtww6^Yb4r(&O6HmgRNlG>`1Ki#NY*-X4!{jZfrg>V@2S9KO=jNPl!#nI{? zSM?S6(CyLos7mKN`g8pvtS);XN*)VHkx{jJlsH#?YV}NkZqp#h6qk*Mp}(?O8klXI zhZX^Om|yQr$QDp)l3`mD)?qF^lL^p2CUB8J3j%EjkmA>$Be0zSX(zoWfqF*ynwZuk zd3qWFw5IiR;$)pw0?C6;9HA3|b)us_hCsUU=9>K2-a<{;IQB+8`n#{0_4io*jGO%8 zyW!Q{*X|VBJ6Nxywb5;VNOjP9Nr)e+LpOAhx_p4I2c~%Opj-Bq_3b#q;zI(g{Qg6! zJOaca$WkOGXuBSHqMf*99Dd@M@T^|@ zSr|X;?jxpGXYA>uSUR||QME6`cyw<=@u>0q-fXPmo4xJD??$72u|hVo_YD@at6|^2 z1is38tG)NHR3m{BW64{6u~}?f`m>(VWq(U7TDITSIuA!J3hveu-tH|nR+qdzUqQ-V zIownnHbUR&ge8Z*la4Js^iB(GbniRk#q-tC?|w#&iuc-k|4EG!SZ{QHFAJN4ZsBTR z^@jIG3Q=Wz|NaLo|ol9arDv^}=+!_n8Y_o;$2#>>Zgi1Wse z$1X*)w7f}l`iVaM8&ghgMtNagMG@xv<#;#oxsm?Cr&vkYhpoleM*k0|WBQE`dx#r` zbYh?QzIy+OI63$x6<$i9iU2tZdZqEp$roeEpg29s^NLHcM*So`c@>sbbI<-!gL37$jv~R>b?&_YM)WH}`4E9K z#_IDOM6z+@d^uv4d7+&&9?{2xG?hkR}?a2UD3a11^1!wsysrZNw2{ z-U?Fd8=ecDs1gR$n9 zVPakN)nA?#K~$O3S1&3l%Ci^cOe`*;F?jmd4q`|3>0gVb;0!8}S+|x%1nsu@>=!AKYB>XZ84Ke_??=)BCleGUGIeN>@v1%t5MRi;4MUo zIAFFBqN(ujix~!DDKaa1TPT%8LJ${XD_dJC4xYs?;yAn`iTpMLu#ld~B`7tRQVEnw zC(wgHHUUCgk0lT%!G#7Q%sYY}2;`UxWpR&?N(FqXi2mA0`Y;O8RMAO0LmZL@dxwd5 zbEPUwRg8k(K4P#K4QqWwZ?OmNyU`VhbosA%O`5m@bp3O=?5`$x>^>DNW!M$PL8+F&u_86sHr2B{wVj zAj-}KnIhEaW|u-A34;PfJ1q_aE#Jowbt2%oUPz)TO~q@%tPIA`ix>wB!$g~u@zh2R zfm{NNdJ&}-QuTS1nn++0oDCB>0h1}sWu{PSDhvo0Jwzk(k#I3vZp?%Yz{y~ay~u7y zU7k~1Iut* zgD>DoRYaPqP3%yRW@e&j{ePfYV3HX9SDMXD5*cEGxjRWX;G)^(C1rY1 zPF{I&PEl!Lc^PU+`(LQC9P&~`ytoe*r-)Q(kz`E&APiy~AX8mP5eXr8rzAwAiU@6a zEzx2V7gIm)C%`0IK`A%MmeZq)WJ@SbU<7PT6q9MchW2b8aEX&+A1cT z*}thcNd!x5Dcb)Z2)4MTnEY3Q{nk?S5&+0#f##@IB3lxb<`ZoM#v(=n8n!I)CK&8dF-o~f@F+dHNbm@y2|Ngw+lx%;5s6JL zbnYN-r4ifU1o{q96vRvP4m@`sNPUx)lV0# z#5w4mE{en{^M!O#P6Q0^Dw12U#BCx>@<=SX0k_bSlsdgh5!s9K^n%IyXejS0ny0(v z*b-qXPuja?Qs5S5nK0)0fF;%v$Wu z(V;JYVb~Y&r6Y70V|AOpw92Va-czjkyU~itLNa-w+f1UKB@$b2rUrPlUZfOL;{xIR z3_bGTF%GOoso|Ote3H@x-h)@N#2E3U#l(%Xg(fhTh#yJt>x|WWIQ}yR@bY?z1dj%Y zgWXmS-WwrDny5y9p;6h`UySO&qw@C}lbX$^;bM#F9D^#J*AR)G)MSz0BRi#IHeZ$fu%N0{ zN7=OUk|Ol{TEbV8#W}GK-YFJ#kqTX=i0equW>axw2AIpHihdH>>l4$^Z0~_v(?nDg z#)qwPEe)OZ3(86-7EemE7gbbXpvtblK`jn}Zlz*GD$7G4%R>d)=xMd~*)ng35J_fW zeLd_e6=eZ;$_ZqaiCKwm>3D#6B!^0UOs$+Gu!q1Krn5}s3(aKt&NLW?=7R(+^UO_#b++lsb%H zMl$SOi0c>ei^O9s++--D@61%^C_B%t*e%V+#}r>n=llVe7m0r22(-CZ3=*Hi;(J9W zbOH9>D{?$UQ;1z5vMXz=bSks*N~Y>(uwtjDy}YED1Akx8qX(LEd$9w(SG}mbB(I>z znn_YqmNKbtwRase>qIGMKpuIYIT$)DDkUett~Wrx(y8cWWff$vb-V7(FEn;+JHnL} zVx+hN-5wCBqPJP{fS92AoTlnl5aBPtM~@&gT!&vD5!vD@bYF#Rteg5OF+&QOM%nIk z9zKKLA4UJ-L1?sEscLA1PUtuq4%hPvruL~Qnnt2E zqdaFu@pI6M2lpYvQ3=+%h#bWa=VBXP0X3w(W;4Iuz80_7R}-K z4)I6UeCjPtI5)eZ=k%gZz^4H5azwe2A)m6w%eLo~=S?bV2SL^1w@~g1N07V`;jGfU z{F0(V{R||(A~MuWTub~OswPQ6=7Lv5q7+=4TQ8^H&mla{fVmT=5t0A#I=NDdqvz5CISF6F+NZ zR?REk#J)XP+c&uQrg+b<2bCYFyRz(gOLW#&QA11M_qRmafLtm%fdDfu4Yodn9)}Vb zMu2FpPbV;wfP=sS0#yVS5x9@QGTEA;wWS9F8(`gjVVBy^LBr)scV)s5X}b_#PDD;t8|SL4odO2+Teu+W0h~0qBXD9OvPw zPedbQW2ldL`4qZN$vm^~NafQBWDsah*}GxtmT0VBrrxH(WT$8=x|>fp#gnQOER1je z2!xgEm3FY~yvVd-KdG?eGZ6+~oEHs64*Yyx3<>Lll{f>CxdxQs9FbWPEsj11@-B#` ze+kXQ;}=9^JaxwDV|BQqxB{o|pAbF?ghyZeruTynF5nDpAf?-Z|3wiKK+0EV)sDl4 z;t8EEiblR9pw1Y*2v=w9(CvLCOwxzLvWuccQzkzTYaZq2v3-bg2UL_znp9GR3b;Iv z6|f!)pI;Q2p-)n4qbZBGy}YQX(3+i%g-)M|>0&Ot^cjltb0!9v`g;VGVm6MV-p2iq z`Zdlnc%bf72AiPZYtckZH6Q+3l!@@#(uBTVD?3gb9FN4+`z~LLfViqt$^I52*!;k*H!5hm%oXP)VsLuDSa9Kb$wd-fF4V2kHJ@Z zC1%nO!Py@~sPupgKm8!ui)WzuP0>skF#e`E*QT2CzDnS3Vz-GtJWJpO0_zAo45;isvpG^>3-SB^9VCTeiF+?D;6ouEm9o0&?PGJAc5Nr3Y&Hor*`6H)AJXR<0*X1 z$wGQm5{t~=Whq1QVYy+m(! zdB$JrE`&GO0;H}!BpdqU1lZyP!h!(F`>!&wCO{h1a|C5Gh=7k0VCBQi#Ttkih1Jk- z%14W5`g4>5Ow~k7{h)ONsXwx6RRbwT>@uHhAa!XdI>MO*sgqX~X3U$2V?*kpH4L69 z2f(?OxaPhw)EB_if{l%7@sQC<3WC8~M_Eu7JqbjT+v}h^C z!p8QBPa+DWYuS=j3Yl3wlW^)vfRu~g9kwJ%<2AC!dKd6-Bn`zGTwWu|=3|LDy`KXu zFNiSh1*)wTyx2$@?sJXO)^aI$B}*Coc(^uE1008KOW#+~;{d9G)x;o5S;ia@bNbth z&<8He)90`lJGFsj`n0?fy$n_*OTEQlIGrpN_3jdwHx*3tlR*4)rq zYAazZ=YzIVGcoe9c2ZA2S^#v5=8$$$B5pL9*-lClzndG{Nj{R#F{&$ zZF+Z<8i+uFqBszjfh7EEG4&Zp>m+r<5KMU|sZvJ9yU|7J6~JY$5jI@achD;XtA8J+ zWk~VjPgt2DC5u?|wG64Jl;m!V{f=GK?4A0{8{)c2jkJzF=!cAer&^;EklRhVB*bj! z)kA74&cOU0QftxE+|ffiB{hkoIv%3t6DVaZco13GAtz0a3wtBzMH#%3EiDuM%r3p8 zVp(*6=le>-f-h1j_n333wNSsG6zN(#ffoIwG2#PQ(GSO_*nFj*q$ubG>>4D+1+%4N zv0X$htirk+tt^{Z73K?ZgQa^X-O<1uT!gd6dVjG5uSHtS$@LQ;7N`ju@PZ@P zI0$@(AaTw^w;@t%j}1h;76Q7CmeS14L!?ED#~WDbKz%Q?8Yy)SC)?)qm{B^l6vL&~ z(sL3G^FCNQQc9^L-Rtm3Xw#!xcH0*Eo75{UJI`K$QzO#EdIWvfdX<$G;+qsI_!j3G zR#G+#-=xwTvOA8@fn_$fZ#G=K$g}0m%quP-x9~O<&NHn2m|1_D0BQ6To$1=0YVas1 z!)RP5+bxlYt~s0yP;N%4(XC|Fmqnp#H$^0CI833PxeJ_s8}Nx}6GVcO|Y zQC3z`fg3gs!`q`IT!sW?G!k#W*=e-2N7Bwy{xk6F7?i4CpwC!oqjuSPb$zTf1SO~2 zI4M?yv1P@Pkm%d(wt4n=DLRB%>Q3Gs3R}iYjWGQ5!FcJnX8BkUg_Fy($5%)-als-? z)$ziI!LJjfG~sEc=Ac!Gj-Z?|1R@E96Nn}dg#f-?sD;4e`O;|dF8r8}4ZaW21yXzT z-$oQjX`VeW5BjHzVMT$I9L(+UoSr6``XvGdaHv3vNi3!sljsF653tM0w!`g41b}TD z)*D+W`L;>K>`u>Odk)V!^@+8mdm=;dGQN%exfZs`>NsLy`*X4xT`c0G?YwdmUV+qWeD7}L7__Rsb#bq#p{&a3y%D7 z``W>Mq?1D6fyq(>EsH8zVod<1R*PBCd9qX=dKF7yA(s1oN7?CC*%ifDwl9^{t+M-y zr7e*agz^jmcaHl^STaRQ(gsn9SybXcS{7qiGyJ!)&)v!|f=yGUR1C%(ohoH{4#g2k z5qb}ZDv@F<(@ENT5%`UYy5|%h(&Kjo$O>3`T%~+}(mQWTH6Rc{-~)QcjL)pzp5ApN zz%BuM1MDU+pDv@!%nj3J+-_=3QWm-Vrg!Nhfq%iJ5@|QG;8WA2*Tf(gQ!1tSbR=#n zMo{2mO#eCvo-UOxjvquXhf-_92n^@OYcg8#A$F)-@f2Q3XS@6l3eJZMWl|?mXhxMw zp1xl1BVu{wST|J7m%`2Ld6GjCyW!0RQlLnOj}}Nxy-AJYiKy;y3Vals!|8Pa zb&JwEaU(~S^zKBg5PbY9k(673d8kTyUP5fk?v-*?D|iqV%tSjyB{|kLfwGQ+Aw!iw zU$<}5O2C7Sq)^cZ+ANnc2QWD~6vag10Ftk@z?g$NxTxf=7KY|KPVc+|TK&(-uPD`5 zQCr!tZ@Dxq#*ffGff&xJ}ULUJGA{*(&9U6Hv8P zS{2JnB_ygAI_|>DsIF3IxlIa-d63d85%3PLTvYGYwk7JCBMOFWm7;`cF5V{f5Petx zus)nt(bwRiMHTuSn>C@XC@Qq!`eY{?t!p!~Oamt4o!Ybv0(M9?TnK5oLwZc0%0K+F z)VYzHLaam>apo(ksAfCUXh^M=I*2c!pj!Gcf+%cJom=GL;E`AdPxY3=y@yce2o!+* z73nE4#0-8_3KN~~Xv)nK+-Mmws5eFlW)$UA%)y|07B$l!<))xM={$4pPANj%##47w zdQ^#}`JNyoYOAogBEa%){;49oTV)y{gyI(Qnv^AeGIL*(F8hkHW}gGtPb?s36mYIBb4+SbCEJo~z%N(kgXAyKbn( zsSPM9ES@nrybhzvI9xVoC@uCz<9JzQpiyf&sr+>LC zcJJ0~eswm&!k{Bkd?t;r)3dC+$Wm=AZgu9ggw}M*;#PR!jLnz#w$K9Z8dxgRvCa4iNnRZIE)3>!X@ z4v6(;{>Rb@(PK9a_b6-zmoV?D?WqP=gqE~m9jEAdEazwp`>x@9`oU9(<16OVr=%Rw zc>>{0s~37MrSb@n0>nn{Vjgs2rH7rp({tE2QDpA8ARUozV|cf~urlJxsS{RsiWtM`J9I{AMe($v zEL|_tb!G&&uI1*bWu0|xZ2-9@IN_F0cT3ZG_%sr9N1R2gjOTDq{(EMpFQi^7`j6cX zszDTlRAK!U>86+jk9;k)@uUJsl(W!ss}$s+lfHAbr}7E#$5q_8AMh{9LnMOjss!R~ zcHO{4c^9al*uz*0NdHpBpkf>yv>^9=8u$g&TFWqLsNv_yPFQVf4G;o%& zr__V=l_&5vQUM%$r6s2nmy+WpKezd}>^z~?oU5Ejb#SZqQsq36`H4O!QEiO~coRU= zZhH;g{@6X5=D|wek!rEQ`ddu1_fP4(c>L8Sau*TB{7lxzwdLPp0)9K+_+))F zY#kwc!HYun7aO17C1j6aQo5FQ8BM89*d@ne$n}y_A$O+S0a{=RRrOdexx|A4sd+In zJULh?H#59t-2T-OJpJUssGBiT9tb6VvUkK0s^?Q8OQys;xfMo5a{cAtXzGb0q-HnP5VCx?ty!(|mvf{Pw@m)6xwDL%8PPyKC{jpg z>L&=tj|gz2i>b*};(*)-^r0BM0_FB;|DbyIXRJ1$G*B)Os`){noGgiBa4T4j?B;Iq zL#miHH?>Vu+TO*5g+-+tbgR*j#Yp8kYWPza86qc%XmehO{D?MyF>=>=o_LZlrp<)Y z%4QZ>XLa-v;;K)nLAUsSj*qBRIcl|@M(6?DpC$Jd$>y`s@*p+-Gs=Ds5-1z_rwLzlydA+ebMxgQSn<{t0<-q$=<#TFFl2S** z?Bdd5`(*SVYZ%aOk>eOu^euvc7y)E2`#o6QLXK}-JG@Q}&rA)^%h!qEf6l^my0b&ll6dgD>MnAUOw zvB_-FTJEm+)Ut&m3F5Nk(13y&x{ez@O6J(`_?J!p3O2Qu+u}wKXM1_+Kj{cb42Ec^ zE_kYg9Ma#-(?3(cSUkChJb*)M`^qld-^w`);^!cDL{+!~x^1dO+kp@E;2oufn+*i zK9?a+lEe-0?WeuM1CI^bk=ALeHt}MQS zs4RJ3>|IdTxdE$2_%#cKexOVQro!93<=x^3v$BtD^AeS?ai}~<+=LrL*r!A3Bea zJ4CTba~&e%QD*u^AWphJtQ>*N7j7OLAy=zSt4Iq_ygXZfn=~NBTZ&&NedSG$n6PFW zDGhPa=Gn3GgBrzlopCU*xe^EWjFY!ZbL&Cu1&qkp#>=W0Xf_%zA62xmG(>h-_%FE? zTz^{&hi#ki#AaEfk56rj7&>v}BkH4JO}_lJxChb;pnh2kHbxK%9QOjEo!nI7*^_3i*X{qLPN+p~WyI6c!k=r^jU6kX)oY%t8HN^_{54jIoGz|#(SY_dDX zE(W z56e3xi$H;3u96cl;B?n zOs}{*ozlf}81uTE7s*XMMvdN;p6TL#X!vi;$JqS0d@JDHe6B>OP(e9k)+q`ZJY!b-OtfEMTEu<*aDcp>DSLsEE| zOU}u|MevJM|{A~>YF&A*66=Zh0AUj2?WmtG1diz_blHCNDhC~Pb1c5tg zxCgR7!&zLcS^AlruM8#(hG*-mC@YKOVluOJWl}fjYppoy%u>WJcyO4#B@SIB{8CEYi$-zLHxj-Cv^e2grzrW9^f0*zn)6O#K$MH5T7bTDO+|ZO+8wkz6B} zI77vFQqcyET$Aq=XJP0!a+UO{3StyqsW70v;tAKkk-bEY`O7!*tFkY*(H<+;pOj(u zcXG?VTpRDIV&9X)0PJOFQ7*2W+amYOso+7!Lj6U;N!|PL z#^P6~`d$u$s-NXpFuzArwZMG$d%3=n%@}N;8aVh@MXl_h#{mew3dhGUTl2rqGMN|_ z4M@xBfs~ECoUsu5vm88tac94gE94GvS2#QOg3)wsP~|o4>qN7SSlt~QeH9k|jFYiv z&6j_col+&ENlX9wkA&eoYMR0W7CL0xd0h0pl!crwr|)zQT;uZ2BwSjd-sn|S^jA#b zjFEBW3b}}&UGHu}y5_947}l?A^shn0Z*p@Cx%K@`UMJNZ#T$RfQ=8E^p`_EimCh$t zpoK5xkdCV!myv%TzdO<)M^aD){E5>49lZUgyd_0JY+S|l9^}sv8~l%=KdwHZG>X=! zq++e8^V+(5S$(Vok8DGSqD8StPqa`|3MS|2|D^I;a6l-rmDX(gmguT?MmpaTi5xq< zCE}bS(>m_YBf%tg-F(60&s@wCZRQR)o&UlK+)?Z?IapmSPv{%u5JzLuZBQU7iQo*oOCW2~VQv22^ z+i``0=#5Bn1m-N<@WMIAU|&TQE=r_%BPC+ZcHYW=L^GCBcZII5x!(p`yydDZ%~y#R z7YVOKkz&sDRmO^uEJ}op&hkW>vWB+&iQd*?gV~(k6ZN8^9D7L_o=l^UcPN3+h;j+m zpk??gzPJakpTBajG0QFY+BNk2;xAPD96Hul;xJS^w!Y%<3Z893L^U`LsIIsmSO zDFxBIcVq|Y4(eT9NjnWw!j+a7ve^)>R3zeM9&{#>3vfv5ZwpjWfhbrMp-iZM8Ec(E zY<+RV3pU&~d_6*G-GMoW?R*SYsz(!G6K!Ee*f2M6aOx{UJ_La?2%cK01U1k@=}lt- zVFU(4Wuy`saFL2N!IpT-r(O-uMJllxZ5(w*L6`THr~=+VihKPk@^tqGcx$ikyHvRD zJ`88rQikF@ z`(~8VMI#&Uh=8(iB|>DF!=jbBzVU2%dQeH4NIL>*{21GSyi)XJbiJc_BSqOHG}>i= z`qFkvwwb$|D0pZMPx&-cY(6}rNkuFikJgetMOG7q8=jX+Kxr1uS;>~0Zj+>4)AuGG7dw?am|%* ztu^(pIXRHQFrqnj@@ccYxpGCuO&McbE3u+8%x$eCw&tYxPF%!ZLd;h`M%xK0vm-R7frCcOOMp$wKG$8-P0|*R6P*)G5Ow zz^mIXKGa5220!>}s8S-b&5^?tA0OPunm<8FZB8mczeG|=)*)MGmCw@zo=WlDho>(* z^H>IZCMcuAXvgUAlx9{Rex^2mL4bO8#}p-~(pu8|jox?_+i^9wl#XirM9+A_tr#yU zL+5T9UO0k(8WS_JUJfT5Svj+Ux8@r3j-7Xw{@W&Z^x+QNYG#(W{?F4*CSf_eo1;W) zbnsN)4A*j$n3gYM+8KbGoLs>)*H*1f^tz$@bG&vpd3IIDnH$Z3h3_RtQ*Su{~dA5R1z+UOG~l|z6r z=kAmf`*ClmNoNQhH?6@tue2D$OnkI&9F@9b8Yt-#q3tBaCa#$yCn=u^jRwsT3PQuZ z0>g@xDCB_hVucn3o-0;f^0Dj?b!HBXpQ3a{LlI|JSbciHYf}`|+~&b4cpG1vK16&* z>HuZ$O^-tf3?py{8hS3`hN}{99#n(j;~Z3(A@Ee05^DCHru-qAb6tn28m^G*;%d0U zJL{SRv&s}ad~ae6O++LUkXO;}%veOi9th2!Q@mknu2LW8sX^0~-6E{k0y{N4UOBB> zg+7%UFM&(Ck`Q);#({j4x`w1NQ6gEiG5gq+BCiN`JJfqCGcD|C~RS}9`6Ywiuh>53gaMwY5t3=Y@lxR1HN;INMyAgi0$7DF`{uy-PC;3O& zWiv_(Z4PhTQAOvv?6$`G(=c=aGGh`fU7&QRWbv6nRn#KyR0_(<=jhypT36{dd9++4 z8qpLgcc+&`jLAAHmA;a7urR+57Ah# za%0zs!bGG(Mi$$PY3n$%2=RJ~pXHyk+sFRtv#_yJ35jSIv3tXqc3)h*O zRwxfD7f-_}7^_qVtRZm%t6fd(zOTAzzf(tfOd2Fl>X8TDbrT zmlCJDyT^T@7>+gP;4x-<%~ExUM*IIuw21O<$x8VLqQw$F4w4>M5|Vk$Zj%xk_V&y? z)*_2__vB(Idt3?Amf;6n6Yjbmt>KU6zaCerlt2aBr>iI$(@;u;%s%M)w9;K8L>!Ia z+hh#WKK?Y0T86ppY2}&_`SAEAC8h`Y9e9G`zsn1;eNB9#6VkBG3_l8i z>-FHp70NhR{H$V6BAG?Em=%R9xKWH1)hS#6-*&{462F%#9$qz;e!SWJImOo-uU8nf z9j75TVaj&pd(j^z>`>x+@{DUH>8Ap$ezT9YZ>KGdA1{sb3ivQ0fO~%z?@i)aK^Eof z4{z^K?#*H)z@fdd^ppKvQDSfvpvfyr zrbfm9_XDE?5QJBaS$8z$nh(CBEYMVaG3JK`dz1+hhI6OyQBpZO9xr`rj}jcir(7Q= zqEEzpcZ51pE&t@`K~;lmdlY|h!TfEH@{`n!6%`ldAQO}BAyQrr0!(xg!x{&Ua@KT& zd;)z3wArh46W^IL_bNwa1*c|qW5^)hAm|ORzo#^Z$M!36(kRI|KP_0ChNJs2xaJK$ zZ!1eeIm$7DkVTr;tG)D+@^ppEZ!1w6-HbRR0|p#W!Xe>+a(@IH%c+>#x)v{wy33Yz z5*#|9BqcDvP$}L%SEF*NA>@{_LOgAF7U~~F`7Fea;FO054HJ%I;QYpZ#Z&q-%p7)5 z=_`z_-*^e_`R5NQLP}X~?06s;-Z-rER9^DfqMDxXD3fJB8VsHW4A)=LVDWp(LwK~- z)yZy0ktA)PLIvs7oQfo~C9$C=agBM7-{zBFD1U ztnDUJ1+PPk<4TZ5ZVPS*tRY*778{Pk_cAz+E6>O$!seK%A1I-siCXXVo~h_0A4qP4 z@L&`<%m*7sAv~md^{yu$@^9QLT|Shq_O54^e5f3j8uGxhD7ofgqagcZC0^R8!Jr&1 z0v3Oa-tYi(HU9BViz1o2Ox*v5OLeXzu$};0q1*Hdcw9s$aRYtIq(&a6)CEH3ZW?AhWtl+0(lyA57Q;S4 z#c;}wYcrJENT86uK1C_gLi*E`;w@{>P-+u_X9)zUl?d-pL7^@cL?xL7&rw$17Rmu~ z?xm%f=)>~_ULZgk%2~fmFP_BrT4LO;7{hOy=~I7F0y%^v_xDA5w}n6hR@_7A%S-e; zu^wz&sz&p+Q3($b+CRgHSb_QUXDBopRaKzCx3MB<=Vc{J3XUcX%0!_H-z+V&7RFpr zB7Arw6QjQwDz7Nh#7Xno6=jx31P=pKn6q4^rk4`c*TRDDltfFJP(gBy&@ABGkqkCG zcm<=RAAP6fh^uDX@0DM?aUWyzKa{=!fy6|@5*HwA0}Ebq5H#nESP+dUhqKW62eF5F`rT-z%>^QM3eVQUBEq>UnSNV=8paT;!uJ5~TSxKg@9zQvKB4DgOi$QrXe) z$7fnJZdFwqB%h`F+=ww@?}pP2KQ%gniS48kY+BsxbQ+TVRr&#f@&0OOG2C3|uQvA5 z=n{(=Hu&>~5^k-K)oiJ|7K&SBjzL(MdI}ebz711%(M<#|g{w`hYb^S}pWop!)%-}c zJ_JRm4aGZ<9HCZN8!Opkzhmr~%FHNhVQ+*QmVTbdO8vk^(-D+rb;=y!#o8>VxNx@B ziw~(k%)ApR;}vKasXFlbjt3*v;~Juu6R-BmbhpPu=JuEcN~z4lH1M^gt63VYZBoAm zU&X5c5zXlj4S8m= zn#|^*PJ#VYpa~WT0V7!r7T=qjlhqJeV=P9&fmGy^k?>Wjnm^%gvlWYXNC4{Id0`#W zWz)}sz%+I3R^zJcPF_g%>B@8Q1N^&*nkH_USDUD10?&QG_A^?TIis2C<%@^gDm$uE zaQFO`j_P!=8OC)|k7EcwEnQ8sj@Wd8{B(6R5`Ry+`h<3gXnYxRI;)F2e2j$B-TUVm zZN|>6TUiWgH@yBS0oLVbA+n3wj&DE3VB5Z26&E#__4z0~Z>+xp^SY=lBYs3WT8fgJ z+Cx<^XWf89UGNsUTi}(UHbv*QU4}Z`_b2@9RPynfQ#@MwScW=JG&BP<)gX_?v|@~o z64?)09?Q4xu_q>}ai3U8tc5|@s472Pss=Z-V_>QRm;U(1RPqcT1S4A=hhuJjo2{-> zkO>~>ryh|+0E``|&g#jw=@%jnQ=kFvJ8^pV={0cB(5xQahGjXmB6~p|?rCJsBuBaC zgg1}mT4LI@5Hd*Zh+8HH4^rE}pCi>scybW_gaepc2C16XEC}n=uOXv48cY~hIJaff zR`bV>OB-h&*KB+f%dCb{jxYkjaCU^+G$5SPkp!X$L_owyHNq!=(sWQA!vvWl)q!K9 z@dZv}?$QT6mh#3BU~;*38Z@F87Sc3CHhPRB5Kkb1fJz^dJYeDXa;P{(6O}*+9Hln& z_&gHDYrB9QgVeTW-YE56AxRz(t*Bwx$@T(uufS!T@*=fSdqRVEuA>Lb zb&9`_wJ7PIEQhE|lRDm0gbJi zY%cnx=uM%=6t!KpyGNe4F~CbCYCP=3$<}(LyMwO46?-DC4(^?z#v$uon4+foWKfa& zh`+i*$W(Qvm|;FRRc#@OCh*2I^>9O`8Hq{FG+;BVDOD4L+ahn@8F9gDzDm^;@x1wK zsoGP*wXLqx)v`DyJ!8f=68&o=*+L4AO;@8uGx%n@nk){QxRJ8LA6KncRNtyXGap0?gJjKxeq(Kjd-3!%z z+Lu)HGWaY~SK_MYhDGYp0C(jnM3Y-E_g?kK#M`%d{7My2wz^@~_hI#7wFBKrx>#*2 zH27(;x=mbz=kHUigIUjJQDYYgV`lwRP_{(v)aWF=;9X9nP@O?J_!9yZ#S`b`6yWvG zr8!mr@Ddzdg4`$|YN^`ShkHGguxks`m!ik88MZD(!THS+*%ub0$vgK76W1P zDs@mI|40El9Q>OFtngUTTdq2>&Jc()kXMJ}d1f`(N22QU2n>Q;eBm*Im?Kj_Hv=~- z{|RdiwUJnB?laU@s_1WizXo|Gjl0>OtRVaFJml-Be=Kc018{qKaRBSo*c7I64mCvC zaUZ$01;=h_BQDKl2En;?Y7Fk6{$m}I_cb$lz51g!n!=dp)E-H+MCu5$;lJ7iX}oC= zcT1P)b5QLBA(!fbumrQ>fw^~|Q=9mN5|%v0iGA#Obw$7>9314C{5cgx_7vPIWlaAd z5Vk(AwzgcVw$SfIH37U|K+<-C=ogSv2SEA@>bfB(iFR&_%9Q1J2rbB37sR+7Teg%; za<|LHCY0qXo^Y~3qs?loV78;|R&npSl|3+Rv)X+Esp%TW+^#25p-dbcr=NB6qUEvM zdDcY-f9U>AHi`DXo=?M~6f2@%t|+k%whsfp7m`CMa{s4se4~Rr{E~{^BC-XMQ!aCcEWYan+3s#)J}0-soib}9G*7Y z2y{d`*>HKEBVKce<%^;Gkb3_J_X{53Y-)keCe&V2f}8XyD$jf5r{Rn#kGeJ;D|Y%? zANU&hLhHtJzRqGF3_7g#74u=;VYPVxvjFeBvbIRVCx=y=k4e;Je)!XaN}f?;7CX6sxM>a;=csF8T+eCj)Dc>z;_ZGh*C#@<@~x)zS)V zEF__yGiCP%Pg=1=RSTSbey*qW6#FoRy_!ST0|8Yz$_0*OSjy|A& zqK?(xBz!{Q!%x&_d{`6l$1+&xR0F%;;m|gtmd;TDxA?Je@|dR62cC&CT72!uKKR(F zwiv+!mybhRvlLW|r#>HX;UBc%qhVIm2j@xp4XW*11Wq4|EG&(d;4+JKgt4d96v(@% z#(C9@;5X*h)9Ph4knSpSXi0QYflYVycJl?bSDhaIdO_`^@o>zC^owdE7<5ThMFN~Y zrbgCAnKR547uBz%8j?A_Q0GS6MkYd%dppw_g!;H#Q&VS?OKKvlzO2SU`6X4u(9x_* z>bD||vs;{ugI=>KhT`RS8Mp^w@FmseVJ&*+oBzJ7u9WeH{()Cfp)@zQUq$oQlhI-M zVqL)uIG*@`4JLQ+Cz7fO^p01o`G{jazQYYHJW)M?zh)957Q?7-aQakgF8M}%+S6kh zjtpLo3C({}I|uV^ZEFe1bp*VqyWUXs6KcKl=B}UAmxcAqK+9nIFKSo-%iem*$ws;q z*8ZZ7OLeOQe=5%rocfdsK;Xnt#BEq~{}j#;VsELH;$id2TdKF$nA&y`9jcQ)z~=L9`|NTAkSA(i=)8-W3sbGZII$cnb0zAx4?gZ7l&c=GvOwjR(@)*_*) zs(Hh!inhGZ9i6$&7*p%4fmq<_+5$@e@`>I&k8quhrv73Gl!(`imru z?mjS8SSe^E8a}wpW_dNZ!ca=RT1)vSLhNf&s4LpF8N4*Dqj=x!p=lW&q6`-KX??6~ zT-b`D6#8ky@z#(g{#xcR9uejjcTZSsYY&1ugX-QLYh4^|3B9eh&uo#Im9E0S{k7PB zZtBw6Z)ZTw@_{|aRl#+7?N@sx4bNcza{3!P*HMDb{;ExT0ek9b0sb291S+bJKd2*{ z3+iiMD89s+?3WHKz-?pel_0n`NIRQcd)Kw~BMdK5u1VNtitO|(Et-{6QdU-uzr=ts z@*vm{tc}O3ohML2vchceETUJ}UOWT~qA-#+ z(%c%QZIMD3V1}CCNxDsaL3ykeZd*#7BQ0(z+A~-;MZ)XZtliCxU~{b2Oq81^V>NGS z@ZVI0*w=Uhv}vZi#uK=s@<*{VbplYy&@x_26-&%<@!BmJ&s~pdq~Wi_H6@ZXre3mT z>Ozm))eK5y5@<%CIf1SOxLcMbB}(2){mG*WI?z|PWs8UkE``Z;cgIh4=;jQ!_L9P< z$y#Tz!3=M#-IBxt2x_7=>cE&}*S1w_0rWR(+q$E-jPV)3of_HV4Rco$ZM}$LX7ESL zrk72#*^3K{^7C{$Zo;)kf!<6j!}GHjo1v7T8+o{umWcsU&(_*7l>Tw8wU+tJJe)g= zaJfSd++pz9xVx=>t=*_$@k&Cy)>2zKxFcL|two5X;N3=RBt9`)w$UURkF&RFuWjv2 ztFbkllt7x~7oxFy%EPl<)_{WuJ6fi#SsN;bm=0Q`Sc^M3wRrIajPIZ|#)a)A9W?xn zHFlw~1g>toer?BH-Zf-wVaYSDGi3TxH2q7$Qh!8Ke|hk$wF1s3^+S1e=YsA z6;GL#q50Oj48dkxx`sdKlZvrBt?dL}tYyj-P?uOxd6|V*SpGi+^;sB`p{0o^b9n~d zf+-#`-^kRSQ9^muY!&u}g~h$rH@l}cSoDH-dTLwn-rX5l+Pn_K;xLyFlI7>BdY^Zs~(RFMt7?+5NSp;;Wqlw2=x~N)P=e|s+k=!6+eT+W3{MgE_EJTx6?jW7a6-+n)?QbaavO`#Y`Kg z#mX3t8Gh{*$NK(Lc$| z$8irXrrz?67PXb&l?P1@jZg^b;0h^^AvVoYpAm9|>rLqaidqe>frdqlDqY9qpjWBX2znMFGN(t^{I ze{`V`EshOdS*X3`$8;vI4rTvcxOb73jM39Ai?lIfvZ>vx^%c?VtR2K0&HxU54A=3} z@QJvOA1j#+(-v!SzHTQpRY1-TB^b6X)_far*ZC$@x|9h6=cR*PH)2`04l-4Cn->;q zAp)0fe!fp@5qyQnH35m~^z2b{Z_^~`vP4Vq$t4nhMC2-j=}WXmL3xzTw-1H%^Gb>x zw3GKJY+0hM!7x|PrCJ~10S_(JI`;A-QZlb{Z{vwSd8l}`Z8njS6(~Em?x+jTC@c#? zjSd0-Wm;GV9xt8|x-a!*mCk`n-c7|bbmr6RRM3k2zyvH^=}+AoPVCB^=e-nP)4RU( z?i)%a5_;^1F@Ibj&xNm3V4j;xSy&MGatjh!oh2lnDyS7`+yMOtwarrx_pAeMF4NM& z0+Ak0AB;HgIMV!+*RF#geYut>Dj;{cmVu_{$>q4MibsDaG`n95#UF~!x?gM3ls1xE zmmUtqHl5n6GJPttgImCVr3@t7_GZ@4oY>Ce#gy;fujS#IS<@BTkN#1?)Je7z?3pq0 zG(yOQCm>^;wg7)$``_!dQz3__gNG5^?q;2aE$g*(oV|XzUQ4LFNj=BTT6@Luf+i-t zdw?GyLhw&HF}WY3M{b|zF~ky1xtx4uVg$GI$cWK6)WoyHQETXt2%LVd8!I_*0n0aN z(HbdL+~9&oe-m*L={Uafsh>if+(g76*LEPZn2H;WclSr2lChpN@d1P{bs;JgV z1P=cJ#rWfOxWy7xVZl`U?WZxYd52f4*4DxT{$?VfGscYCuldQi%8`0d`?==e65VzM zT@PvAHK&&bAHtthJ`Saaw8S{~F$vd?=eY5Hh0ypEst;)e!HtNw+Tsh0iQ}b!CA5)b z2Q)dXP1d{;afs`~*kMYJ`SW3Im(aQ(Sqc>6sZl}Zf8N!yl`gzRhmI26wxfsd0!gP{ zXykNbV7xm$;IAq1eb)&s3-dd+ZIiCgHwPZo?iJPC!_6PMMy41&@ z$wjS?@0Y|MN=heNvi>JjT|_f_8BSl+x<)XD?!It0*tYbCwx4N<-M>KYbNbir3bK9^ zgbTIC9y#k<@!?YZeH0Gf>tpGycRrrn!<$y{hXM5zSpS*UOuDXeGy%i$Uw?*kg|E%1 z&$ahuF#)c8sWsBrwmbtNm$lKT;L9#!lpzt8T}H(m4_7X0Z)iiYODQWLu0)CmevC-T zb3>X8S~Iu3aONv5uF{|vs|lg5_p*aEePrh2>^jT z1bAoprwk@%PtRr48)EH(IC4A&%)#$d8(SP(JP%3xw(Azj+u zt)$-PcL&SU_dPxL3@7KFulqaaQm$W^w4-UW~C<5&nU0|{K z1Bvo+)jfCE=vk<_O`F@j)!bxehNjoUqt@YB=^zEt;D2kR z54RL%>u$p?{l2NYiF}2mCTM|cO8Nxd)ZrW;7^uQqD!`*+1S(dZLUt*%QG77>i6)Vy o26P#qE{ltBli_m1y7gSR)o^!Rg+zOBG8(n<8_kxdBkPX-03=SoX#fBK diff --git a/ui/pages/downloads.py b/ui/pages/downloads.py index 60bbd606..b1f083e7 100644 --- a/ui/pages/downloads.py +++ b/ui/pages/downloads.py @@ -74,7 +74,7 @@ class SpotifyMatchingModal(QDialog): album_selected = pyqtSignal(object) # Emitted when user selects an album (for album workflow) cancelled = pyqtSignal() # Emitted when modal is cancelled or closed without selection - def __init__(self, track_result: TrackResult, spotify_client: SpotifyClient, matching_engine: MusicMatchingEngine, parent=None, is_album=False): + def __init__(self, track_result: TrackResult, spotify_client: SpotifyClient, matching_engine: MusicMatchingEngine, parent=None, is_album=False, album_result=None): super().__init__(parent) self.track_result = track_result self.spotify_client = spotify_client @@ -82,6 +82,7 @@ class SpotifyMatchingModal(QDialog): self.selected_artist = None self.selected_album = None self.is_album = is_album + self.album_result = album_result # Store album result for display self.artist_image_cache = {} # Cache for artist images self.setWindowTitle("Select Artist Match" if not is_album else "Select Album Match") @@ -196,11 +197,11 @@ class SpotifyMatchingModal(QDialog): separator.setStyleSheet("font-size: 14px; color: #666;") header_layout.addWidget(separator) - # Display folder title for albums, track title for singles - if self.is_album and hasattr(self.track_result, 'album') and self.track_result.album: - display_text = f"{self.track_result.album} by {self.track_result.artist}" + # Display album title for albums, track title for singles (without "by artist") + if self.is_album and self.album_result and self.album_result.album_title: + display_text = self.album_result.album_title else: - display_text = f"{self.track_result.title} by {self.track_result.artist}" + display_text = self.track_result.title track_info = QLabel(display_text) track_info.setStyleSheet("font-size: 14px; color: #aaa;") @@ -6445,7 +6446,7 @@ class DownloadsPage(QWidget): # Show modal ONCE for the album using the first track as reference if album_result.tracks: first_track = album_result.tracks[0] - modal = SpotifyMatchingModal(first_track, self.spotify_client, self.matching_engine, self, is_album=True) + modal = SpotifyMatchingModal(first_track, self.spotify_client, self.matching_engine, self, is_album=True, album_result=album_result) modal.setWindowTitle(f"Select Artist for Album: {album_result.album_title}") # Connect to album-specific handlers