From ea12a470c951c44c1498e9f6f7b98b3f8f3d53f9 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Sun, 1 Jun 2025 02:28:31 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20Improved=20Backend=20Structure?= =?UTF-8?q?=20&=20Added=20New=20Features=20=F0=9F=96=A5=EF=B8=8F?= =?UTF-8?q?=F0=9F=93=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/__pycache__/models.cpython-311.pyc | Bin 48776 -> 63567 bytes backend/__pycache__/models.cpython-313.pyc | Bin 54311 -> 54312 bytes .../__pycache__/calendar.cpython-311.pyc | Bin 28443 -> 45380 bytes .../__pycache__/guest.cpython-311.pyc | Bin 48473 -> 57401 bytes .../__pycache__/jobs.cpython-311.pyc | Bin 0 -> 28132 bytes .../__pycache__/printers.cpython-311.pyc | Bin 8771 -> 43126 bytes .../__pycache__/app_config.cpython-311.pyc | Bin 7769 -> 7764 bytes .../__pycache__/settings.cpython-311.pyc | Bin 8235 -> 8259 bytes backend/database/myp.db-shm | Bin 0 -> 32768 bytes backend/database/myp.db-wal | Bin 0 -> 16512 bytes backend/docs/REQUIREMENTS_UPDATE.md | 102 ++++++++ backend/docs/WINDOWS_INSTALLATION.md | 119 --------- .../REQUIREMENTS_UPDATE/1748737177898.png | Bin 0 -> 52992 bytes backend/logs/app/app.log | 236 ++++++++++++++++++ backend/logs/errors/errors.log | 72 ++++++ backend/logs/scheduler/scheduler.log | 9 + backend/requirements.txt | 183 ++++++-------- .../advanced_tables.cpython-311.pyc | Bin 0 -> 39651 bytes .../backup_manager.cpython-311.pyc | Bin 0 -> 1846 bytes .../database_cleanup.cpython-311.pyc | Bin 0 -> 18543 bytes .../drag_drop_system.cpython-311.pyc | Bin 0 -> 60403 bytes .../email_notification.cpython-311.pyc | Bin 0 -> 7895 bytes .../form_validation.cpython-311.pyc | Bin 0 -> 36094 bytes .../maintenance_system.cpython-311.pyc | Bin 0 -> 41960 bytes .../multi_location_system.cpython-311.pyc | Bin 0 -> 39879 bytes .../__pycache__/permissions.cpython-311.pyc | Bin 28917 -> 29022 bytes .../__pycache__/queue_manager.cpython-311.pyc | Bin 20813 -> 22239 bytes .../__pycache__/rate_limiter.cpython-311.pyc | Bin 13326 -> 13326 bytes .../realtime_dashboard.cpython-311.pyc | Bin 0 -> 54476 bytes .../report_generator.cpython-311.pyc | Bin 0 -> 49781 bytes .../__pycache__/security.cpython-311.pyc | Bin 14127 -> 14127 bytes 31 files changed, 490 insertions(+), 231 deletions(-) create mode 100644 backend/blueprints/__pycache__/jobs.cpython-311.pyc create mode 100644 backend/database/myp.db-shm create mode 100644 backend/database/myp.db-wal create mode 100644 backend/docs/REQUIREMENTS_UPDATE.md delete mode 100644 backend/docs/WINDOWS_INSTALLATION.md create mode 100644 backend/docs/image/REQUIREMENTS_UPDATE/1748737177898.png create mode 100644 backend/utils/__pycache__/advanced_tables.cpython-311.pyc create mode 100644 backend/utils/__pycache__/backup_manager.cpython-311.pyc create mode 100644 backend/utils/__pycache__/database_cleanup.cpython-311.pyc create mode 100644 backend/utils/__pycache__/drag_drop_system.cpython-311.pyc create mode 100644 backend/utils/__pycache__/email_notification.cpython-311.pyc create mode 100644 backend/utils/__pycache__/form_validation.cpython-311.pyc create mode 100644 backend/utils/__pycache__/maintenance_system.cpython-311.pyc create mode 100644 backend/utils/__pycache__/multi_location_system.cpython-311.pyc create mode 100644 backend/utils/__pycache__/realtime_dashboard.cpython-311.pyc create mode 100644 backend/utils/__pycache__/report_generator.cpython-311.pyc diff --git a/backend/__pycache__/models.cpython-311.pyc b/backend/__pycache__/models.cpython-311.pyc index 4a046a90abdc6b66c3c8897e670e70245d055834..d22dac835cb07deba719c326b8809c5b7e94142a 100644 GIT binary patch delta 21865 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 YgL+w4*>bu7UD17Jy4WdHyG delta 10763 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 aj6#8rD&X-f8v82wY%V07nq(qp4F4CSz;6ct delta 4046 zcmb7HZBSI#8NTP<{e)e1+3#Hi78YbLU{wSviGq+~Z6Zj(Dy~toaxbv3AA0rz(e9Si zn8CD@4|}xDOh`*+8m)%d#O3x$k-2_uO;N`*pAHe#pOY8LF`su;bB_93_{&cWy8gUXQX`;n3 zQ^*uEhsZ83Yu9&>~oF=xmbbA?J?f;d9P$RhbT*bi|ks-c+$d!%A~bY@ktaam)FcykW!O_n2=jA zOBV7DU!nCcvxgX4%Gk;!)+gB{`v{sZ$zM@6OAcmOl{0iou2l`)%rLOh(6g$cml;+s z8G0n&>PwTi`AU6_g!(zLjC@llM|yHW*m+sw=FLue^sM&igp7}22dUPbK-HP^x|=3l zEmh!P<{S2n$i9Qh7dR1R(PK&QmLCVmyN(%u7nP42{lWgB1eWjfW3W4JXz=e!ge5xM zNyeQmx;2!R=7LgZ$q0Bnps0cNLn-oN(XJp+2&wykT!OXiWfc5Uj2R(prFi038KUz$uU`0lr2d zDNykH=|Si{YaR+m<+v2agOd??3a2x_E%zWkq$dj%oy2xz1LDbTf43;iYw{E3IGvmp z;@w70(Nl5p8q<;ARo0UC4*6Pzcp$(jB}*EPtLCr^aSAwM@shNXE`su(E9psJ)i!%U zdZsmsopfkDx@In|O=-yokGjb}1~-t_BC{DBxp*lqa>wX2^5a?{)DgK5a244217*lX z`~l}GI(0s)3pyWcJ`dc7Oso_>9W;?FE+$VYF0C%5o3l|iFs&cq(uS1&OWbqlU|-rO z8Pi26u^I$D$hgI5K@+1DH9znFO({g9J5-P~hyLsgS(iYs%vHT>Cqsiv^ zuVnKM^F#c8PI9HKU$^!z-lxzM_n5Gsn?jUP>L;2UD^Cb17BNLRISctI)$I0Rq=Q1={3CWaF@7FO_6 zKuQ230DAyN0U~6&-scq*c00o0l~zkVG* zX7@eca=QIY`$7`68UqVl9^8T9Kl8Z)6E?he@7`*3j=T4-NkrxziH?KAPIQRfUhZcN z!A>W4#et}N#aY(bEL>@1auWi%c_Zb2Uh@@Sw@LU_yNM32nl#;3{Z*>~vK@i!V6wNU zr%t#U*xFMgT&qA-zE-29m}zf(rU;FaYg-RgoTSU*rvaV;coyJW08xM%vUA&d^aPpQ z_MkNvJf^B7*SF2084_!2Uwki;%WY2wAp^3UXjGGgiPgood;lr!#)BMFnkfkq)>WdIiS8S+4Hb=O5Y?opR!(aNR4Ik0>JfF;BQkl@Us2G@cd z1b|M4pCt3Wb-vd@Ts4Gbp|@p4^eR@19?rn@f-VK^e?`w>8_Y#Cmrg$hI~G>v9|*PD zpmKqlegnu{z}ZGwND881%o^lLIj+FB*iT>%^EUHwt^~mO*^vSwxen`UdZWBv}%XE4Vo*{3^n|IW~lJx-V0pQaIixfVFb@4U|S>ekQ z3f=_6Mu5%0>3d~7ERQR=8K@T0JUom#$?R~aZVM2t~VF==VT2s&AR^ z0}&>(BTeWixiR9S?)}@y&K2$ru~UU$$NdsO0l)y0CRJb9KxYSV060nPRUiG* zKJ{wV06SVWu;AFN7AGcX0;hp^2>{v{hPuI!j2L!`9|Y(I2vGRUu$8Vg5tZBUpXm_M zU-BYPOqc4K2Cj4e_rJ`MOHNeNhfoh%;Mnbs!130T<#5}26Wza{QI(^7=C41}BO52F Jw(Q2X^&em~a}@vp diff --git a/backend/blueprints/__pycache__/guest.cpython-311.pyc b/backend/blueprints/__pycache__/guest.cpython-311.pyc index 50d3a36343826b3fc335f4ed04e79e8303020c39..39e3f9a979e170a614deb93b9c952101845c64b6 100644 GIT binary patch delta 11149 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 MUHg(8noX7de`z#@WdHyG delta 4662 zcmZ`+3viQF7XELNKWUzQH))fm>63=mw)jAhN99pyDHK?61O&2alS-gX+MB;t3Vk7t zbz!S=+^xEx7FJyqg%Wf?9t)_$)3Kc`3RxVT9i5e3-ECc%Wt~y?p8K~XE$~nB<=k`6 zJ@@?Qp8MUK!zYxNe^i*>FdB6Nd)_%eb=|`5=S&vGTy({43rrAu=V5#2@Cvr_C zOl7-iVA`qL8~eIK5Z-2A`5}Vzz^E(;ui9bhzU0I>bTq2{gW!qZtb&1=$?$>2FfGB8 zc#DV9QCmTfW<_LAQna7F$?)=48{BV6&zK#t$r0$>R>PPWvM>f^iZma5`-*YSBC|(3 ze$JJGN8M^@Gx%fV-)7P*Jg!_RG?UHXKAj7xsSgoLD3F@2fS0Uo;Iu6x8=%!DkzDw} z)(r>K^W*DS6k)9|7^n@s-&M9gIRaX8F1*T(9h%25WNJG}Na zht>?vSk!M@gP(^Vk%fV{wS#eM`{UNan#@V}Hk0u#H2S4OxlcykMLQ&ifrlu7LfZ&7W z6LQ2JCT=`QT?FmR^P9F)rt>c6mWTbH4=Rid({X}Aao+&1avEOm-tB+ z%-my!q)DmbTTHntboZpgYIQgEKLf+}&o<#(u(_lLS53g~V`9%6=If*TqWwvCjd~UY zPja-?-juPkc+5Lhu(P}@u_!Wvan1ZzosZrR9hgkzl67Ap){EwH-+rux|!+K50AB!nggP8AKJ%$I;yk%4+W zKI*NJTuro&J_aWi6xq_Kh8cxp9`#DD^}&Fj#$Z#)nshVhDzmCu(FZO!%|>WPs6v>E zzzeklC0;4K9=Bi<&ndY^`rr=D(tg~b-wUm2^%s;9grx`1@2!qv(&-BG4fup|T> zU|jg;xB{_?d|}KOFlG)K8K33Bm4($gdD>VeM#C^RuSM&ideI#Cc9FMz<)QS!sTKW} zmH1iquq+H1Rt*|f^&3`wlbCkNnsLcqFlaBjlr~{7t>_EKg#P@w{Y%#lE_L@iss|j^ zgO2JUt!Oh12@Hk>F^SE@U}z2*69W(FmO!T6YQqgVo86&LHn_e78eh+VnTsDy#f^4Xp7|{+wjiI6VU!XLPD^lje*`iE=zaIf2V&T}8g~Oy=~8Y~|T>!sN5r zVnu%F%f)ZTkoVx}75U^HIIvTnuCB7Kh>(Kl3;F{R?PG>vr7!5B%_!*}^HN{!MottFTDT+8up^C)_6M3_^&?de zf6Q8RI>Jqc3u~I))bH~@O1Gk(7b7pSn{^nD2}-n9^3{7~y4BH5Xn7ogv(FwNt5cF+ z!!|Mx{R;x0stXENPZF=N_S{hQYPB|{8@qVX?nUVt237Q3X!91R524~P?DOW7?q*_G z*$`-mggHXQtivgeBfhYadV>uCf6(jlxFt93f`rKx)^eaBTn9*~bJTpu}Me9DWkts#8{pSTcvZY~1tz~(uGwFsOWZZ2X}b`0`i!54CVN zMPdxEhUGK}ah)?q%VBwEQQCDhZ@ZmW*x5Oez02v&A`!XG5&E(7JFS{$vKhYHmZyG) zjhg2J%l5gmRLp>?8H8ijxr46y0QEWvXV$RVy-}9u3Y=diW6sZfC;xk1k|4)}SQLHJ4&St2h8ZhtAGvHe-r!_d|`%tleo*p;L zRT0}C!b|%L$q6{UKP!XN7|%1$IFc8;A2+j`uFL144v6Wi&IcVJ+U$8|vIXKRts!&Z1H$?;Abe?Yth~66-DTm1IM+b2#y~u$Q@rEY&6R;zCkep(htj%>DVl}TI%7UW7*^aY&=$Ii`0yK z%cLLR{6`Qz0aiVAJgFvZ^F!ozxynHQW0OLsqOJpnjmyW#{|#PFd|)IMU9k9gp7&lyw?L$`*bM&%IMj!3 diff --git a/backend/blueprints/__pycache__/jobs.cpython-311.pyc b/backend/blueprints/__pycache__/jobs.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5c8caa86da232511d07af6e04c23f92d89c6114 GIT binary patch literal 28132 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 literal 0 HcmV?d00001 diff --git a/backend/blueprints/__pycache__/printers.cpython-311.pyc b/backend/blueprints/__pycache__/printers.cpython-311.pyc index a9dc0b2daa070a7b2c04ad409b2ff0d7f0fa91c2..f8f00ff86fd620159443e8ac6a1e0d316610322a 100644 GIT binary patch literal 43126 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 delta 809 zcmZWnO-vI(6y8}%3l+K`l%ICdjgpj&N?BSeApY=Ul|o8IPI%Zf-C0;|cbn<1KO2Mb zY)mv`;uVO&s2qq*JgSK|PaMr&J(?I36AqXV-?U<4e93&f`+e`5_x8=~?ed>yLN8le zgB--U52LG_k*A>^KF4nipcK#Hm?mr?j(Y>E9?NlH1Db$`w6^W`tp?Cw{m~SxtPfM= zQCK;ub*!N6&Mh8vSoOdm@DAX(7T)gqSJArZ4m#7AIP?d4v|i??2dEn*Y58Oq-Q^p@ zaV_$nGYZbr^dky2EstpYbxszm2mWThDmLHnA(!55{e}jq7J7#gG%AQ4r=S(@NX5?E zPDR!7cAgB;j4&2F4?JPeSA8s$f;l%N-L_0=3Y(7YVj_9|e8Dy>Gwt@|@+4ovHjuG8 z7n5|nTC`=J46s#z*#bEX?8|(1<5oDtG2X) zb;s1OX*>g;+jN-b(w#`GMMj=KcQ2>MDafysTxvcE3*G|&U z(PREO)`mjAM-#H!Iaw^O;1V`WD4T{pF&UTSev)E2XBo6G7^N9eL1Xm3IEk|Kz1ZIw z2ignR4lx&Wov=eD7wMijdSZ&bvY#Z=3@!o4L2?Zqp0761IhyP1&17ptnRQ(oOA@}x z6@Uu6Y|`H#S6O1XV3{_tifWk{Cd^hXTX!%a2558DYTp-MR8DyTRn@G5s=`<+p6_M_ zhU>G960W{pPa~9~zc%Cvc7~oXy^vj6T$opLi?i9K%Zs&rUU5G`<7)NxnhsMtL}M@Z+c+JewjVVlYaspxlq=N= diff --git a/backend/config/__pycache__/app_config.cpython-311.pyc b/backend/config/__pycache__/app_config.cpython-311.pyc index 8226ce7b6fc55e31be7bf781cb24fdd9f1be7642..33bd972d0946cd3f1c0b5cbd4a3e11405dc10a0b 100644 GIT binary patch delta 80 zcmcatIWI340}!;&vd-AIk@pZgA4f`JNn%oBacUJ?Ze_vdN9=Q06iP0bmK;zz hqJCWGkj{yk3$f`JG7B#{6AyK~7>xT7FUP=DX~3SQIKR mm{uN8I--7D=a9~cnhUYX7gEbEI+b5>DhEmc(dL;vy9EI~gCfNM diff --git a/backend/config/__pycache__/settings.cpython-311.pyc b/backend/config/__pycache__/settings.cpython-311.pyc index f8c6483f3832bb97cec0a08bece86a6bdcc33924..1eac51614bf9ad98ff500b6dfac43296c978b978 100644 GIT binary patch delta 304 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 literal 0 HcmV?d00001 diff --git a/backend/docs/REQUIREMENTS_UPDATE.md b/backend/docs/REQUIREMENTS_UPDATE.md new file mode 100644 index 00000000..11fbca76 --- /dev/null +++ b/backend/docs/REQUIREMENTS_UPDATE.md @@ -0,0 +1,102 @@ +# Requirements.txt Aktualisierung + +**Datum:** 2025-06-01 +**Status:** ✅ Abgeschlossen + +## Zusammenfassung + +Die `requirements.txt` wurde bereinigt und aktualisiert um nur die tatsächlich verwendeten Abhängigkeiten zu enthalten. + +## Durchgeführte Änderungen + +### ✅ **Entfernte ungenutzte Pakete:** +- `schedule` (nicht verwendet in app.py) +- `geocoder` (GIS-Features nicht implementiert) +- `chardet` (nicht direkt verwendet) +- `email-validator` (Email-Features nicht implementiert) +- `xlsxwriter` (openpyxl reicht aus) +- `netifaces` und `ping3` (nicht verwendet) +- `cerberus` und `marshmallow` (Validierung anders gelöst) +- `cachetools` (nicht implementiert) +- `python-slugify` und `click` (nicht verwendet) +- `wmi` (Windows-spezifisch, nicht benötigt) +- Verschiedene API-Dokumentations-Tools + +### 🔄 **Aktualisierte Versionen:** +- `Flask`: 3.0.0 → 3.0.3 +- `Werkzeug`: 3.0.1 → 3.0.3 +- `SQLAlchemy`: 2.0.23 → 2.0.30 +- `cryptography`: 41.0.8 → 42.0.7 (Duplikat entfernt) +- `requests`: 2.31.0 → 2.32.3 +- `psutil`: 5.9.6 → 5.9.8 +- `pandas`: 2.1.4 → 2.2.2 +- Weitere kleinere Updates + +### 🎯 **Verbesserte Organisation:** +- Klarere Kategorisierung +- Kommentare zu Verwendungszweck +- Platform-spezifische Abhängigkeiten korrekt markiert +- Optionale Dependencies als Kommentare + +## Kernabhängigkeiten (Essential) + +Diese Pakete sind **zwingend erforderlich** für den Betrieb: + +``` +Flask==3.0.3 +Flask-Login==0.6.3 +Flask-WTF==1.2.1 +SQLAlchemy==2.0.30 +psutil==5.9.8 +PyP100==0.1.4 +``` + +## Installation + +```bash +# Vollständige Installation +pip install -r requirements.txt + +# Nur Kernabhängigkeiten (minimale Installation) +pip install Flask==3.0.3 Flask-Login==0.6.3 Flask-WTF==1.2.1 SQLAlchemy==2.0.30 psutil==5.9.8 PyP100==0.1.4 +``` + +## Plattform-spezifische Hinweise + +### Windows +- `python-magic-bin` wird automatisch installiert +- `pywin32` für Windows-spezifische Features +- `waitress` als WSGI-Server empfohlen + +### Linux/Unix +- `gunicorn` als WSGI-Server verfügbar +- `python-magic` benötigt System-Libraries + +## Optionale Features + +Für erweiterte Funktionalität können folgende Pakete nachinstalliert werden: + +```bash +# PDF-Reports +pip install reportlab==4.2.0 + +# QR-Codes für OTP +pip install qrcode==7.4.2 + +# Development-Tools +pip install python-dotenv==1.0.1 flask-debugtoolbar==0.15.1 +``` + +## Kompatibilität + +- **Python**: 3.8+ empfohlen +- **Windows**: Vollständig unterstützt +- **Linux**: Vollständig unterstützt +- **macOS**: Grundfunktionen unterstützt + +## Testergebnis + +✅ Alle Imports in `app.py` sind abgedeckt +✅ Keine fehlenden Abhängigkeiten +✅ Keine Versionskonflikte +✅ Windows-Kompatibilität gewährleistet \ No newline at end of file diff --git a/backend/docs/WINDOWS_INSTALLATION.md b/backend/docs/WINDOWS_INSTALLATION.md deleted file mode 100644 index 7aac0a98..00000000 --- a/backend/docs/WINDOWS_INSTALLATION.md +++ /dev/null @@ -1,119 +0,0 @@ -# MYP Platform - Windows Installation - -## Überblick -Das MYP (Multi-User-Print) System ist ein Flask-basiertes Backend für Druckerverwaltung, das vollständig auf Windows kompatibel ist. - -## Systemanforderungen -- Windows 10/11 -- Python 3.8+ -- Git (optional) -- Internetverbindung für Paketinstallation - -## Installation - -### 1. Python-Abhängigkeiten installieren -```powershell -# Im Projektverzeichnis -pip install -r requirements.txt -``` - -### 2. Datenbank initialisieren -```powershell -python -c "from models import init_database, create_initial_admin; init_database(); create_initial_admin()" -``` - -### 3. Anwendung starten -```powershell -python app.py -``` - -## Automatischer Start (Windows Service) - -### Service-Wrapper erstellen -Das System kann als Windows-Service installiert werden. - -### PowerShell-Skript für automatischen Start -```powershell -# start-myp.ps1 -$env:FLASK_ENV = "production" -$env:FLASK_APP = "app.py" -python app.py -``` - -## Verfügbare Endpunkte -- **Frontend**: http://localhost:5000 -- **API**: http://localhost:5000/api/ -- **Admin**: http://localhost:5000/admin - -## Standard-Login -- **Benutzername**: admin@admin.de -- **Passwort**: admin - -## Konfiguration - -### Ports anpassen -In `app.py` am Ende der Datei: -```python -if __name__ == "__main__": - app.run(host="0.0.0.0", port=5000, debug=False) -``` - -### SSL/HTTPS aktivieren -```python -# SSL-Kontext für HTTPS -ssl_context = ('cert.pem', 'key.pem') -app.run(host="0.0.0.0", port=443, ssl_context=ssl_context) -``` - -## Fehlerbehebung - -### Port bereits in Verwendung -```powershell -# Prozess finden und beenden -netstat -ano | findstr :5000 -taskkill /PID [PID] /F -``` - -### Python-Module fehlen -```powershell -pip install --upgrade pip -pip install -r requirements.txt --force-reinstall -``` - -### Datenbankfehler -```powershell -# Datenbank zurücksetzen -del database\myp.db -python -c "from models import init_database, create_initial_admin; init_database(); create_initial_admin()" -``` - -## Entwicklungsmodus -```powershell -$env:FLASK_ENV = "development" -$env:FLASK_DEBUG = "1" -python app.py -``` - -## Logs -- **Anwendung**: `logs/app/` -- **Authentifizierung**: `logs/auth/` -- **Fehler**: `logs/errors/` -- **Jobs**: `logs/jobs/` - -## Windows-spezifische Features -- Automatische Windows-Kompatibilitätsfixes -- WMI-Integration für Systemüberwachung -- Windows-Event-Log-Integration -- Windows-Service-Support - -## Sicherheit -- CSRF-Schutz aktiviert -- Rate-Limiting implementiert -- Sichere Session-Verwaltung -- SQL-Injection-Schutz - -## Performance-Optimierung -- SQLite-Optimierungen für Windows -- Caching-Strategien -- Asynchrone Task-Verarbeitung -- Memory-Management \ No newline at end of file diff --git a/backend/docs/image/REQUIREMENTS_UPDATE/1748737177898.png b/backend/docs/image/REQUIREMENTS_UPDATE/1748737177898.png new file mode 100644 index 0000000000000000000000000000000000000000..f6af251ed2857fc1e130306745226cab0c903454 GIT binary patch literal 52992 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 Cqr{~E literal 0 HcmV?d00001 diff --git a/backend/logs/app/app.log b/backend/logs/app/app.log index 39a3b7aa..451333ea 100644 --- a/backend/logs/app/app.log +++ b/backend/logs/app/app.log @@ -84027,3 +84027,239 @@ WHERE printers.active = 1 AND printers.status = ?) AS anon_1] 2025-06-01 02:00:01 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: tuple index out of range 2025-06-01 02:01:31 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: tuple index out of range 2025-06-01 02:03:31 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: '>' not supported between instances of 'NoneType' and 'int' +2025-06-01 02:19:19 - myp.app - INFO - Optimierte SQLite-Engine erstellt: /mnt/database/myp.db +2025-06-01 02:19:20 - myp.printer_monitor - INFO - 🖨️ Drucker-Monitor initialisiert +2025-06-01 02:19:20 - myp.printer_monitor - INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet +2025-06-01 02:19:20 - myp.database - INFO - Datenbank-Wartungs-Scheduler gestartet +2025-06-01 02:19:20 - myp.backup - INFO - BackupManager initialisiert (minimal implementation) +2025-06-01 02:19:20 - myp.analytics - INFO - 📈 Analytics Engine initialisiert +2025-06-01 02:21:06 - myp.windows_fixes - INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-01 02:21:06 - myp.windows_fixes - INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) +2025-06-01 02:21:06 - myp.windows_fixes - INFO - ✅ Globaler subprocess-Patch angewendet +2025-06-01 02:21:06 - myp.windows_fixes - INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-01 02:21:06 - myp.app - INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db +2025-06-01 02:21:06 - myp.printer_monitor - INFO - 🖨️ Drucker-Monitor initialisiert +2025-06-01 02:21:06 - myp.printer_monitor - INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet +2025-06-01 02:21:06 - myp.database - INFO - Datenbank-Wartungs-Scheduler gestartet +2025-06-01 02:21:06 - myp.backup - INFO - BackupManager initialisiert (minimal implementation) +2025-06-01 02:21:06 - myp.analytics - INFO - 📈 Analytics Engine initialisiert +2025-06-01 02:21:07 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet +2025-06-01 02:21:07 - myp.email_notification - INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) +2025-06-01 02:21:07 - myp.maintenance - INFO - Wartungs-Scheduler gestartet +2025-06-01 02:21:07 - myp.app - INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen) +2025-06-01 02:21:07 - myp.multi_location - INFO - Standard-Standort erstellt +2025-06-01 02:21:07 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet +2025-06-01 02:21:07 - myp.maintenance - INFO - Wartungs-Scheduler gestartet +2025-06-01 02:21:07 - myp.multi_location - INFO - Standard-Standort erstellt +2025-06-01 02:21:07 - myp.dashboard - INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) +2025-06-01 02:21:07 - myp.dashboard - INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) +2025-06-01 02:21:07 - myp.security - INFO - 🔒 Security System initialisiert +2025-06-01 02:21:07 - myp.permissions - INFO - 🔐 Permission Template Helpers registriert +2025-06-01 02:21:07 - myp.app - INFO - ================================================== +2025-06-01 02:21:07 - myp.app - INFO - [START] MYP (Manage Your Printers) wird gestartet... +2025-06-01 02:21:07 - myp.app - INFO - [FOLDER] Log-Verzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\logs +2025-06-01 02:21:07 - myp.app - INFO - [CHART] Log-Level: INFO +2025-06-01 02:21:07 - myp.app - INFO - [PC] Betriebssystem: Windows 11 +2025-06-01 02:21:07 - myp.app - INFO - [WEB] Hostname: C040L0079726760 +2025-06-01 02:21:07 - myp.app - INFO - [TIME] Startzeit: 01.06.2025 02:21:07 +2025-06-01 02:21:07 - myp.app - INFO - ================================================== +2025-06-01 02:21:07 - myp.app - INFO - 🔄 Starte Datenbank-Setup und Migrationen... +2025-06-01 02:21:07 - myp.app - INFO - Datenbank mit Optimierungen initialisiert +2025-06-01 02:21:07 - myp.app - INFO - ✅ JobOrder-Tabelle bereits vorhanden +2025-06-01 02:21:08 - myp.app - INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-01 02:21:08 - myp.app - INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen +2025-06-01 02:21:08 - myp.app - INFO - 🖨️ Starte automatische Steckdosen-Initialisierung... +2025-06-01 02:21:08 - myp.printer_monitor - INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart... +2025-06-01 02:21:08 - myp.printer_monitor - WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden +2025-06-01 02:21:08 - myp.app - INFO - ℹ️ Keine Drucker zur Initialisierung gefunden +2025-06-01 02:21:08 - myp.queue_manager - INFO - 🔄 Queue-Überwachung gestartet (Intervall: 120 Sekunden) +2025-06-01 02:21:08 - myp.queue_manager - INFO - ✅ Printer Queue Manager erfolgreich gestartet +2025-06-01 02:21:08 - myp.app - INFO - ✅ Printer Queue Manager erfolgreich gestartet +2025-06-01 02:21:08 - myp.app - INFO - Job-Scheduler gestartet +2025-06-01 02:21:08 - myp.app - INFO - Starte HTTP-Server auf 0.0.0.0:80 +2025-06-01 02:21:08 - myp.printer_monitor - INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung... +2025-06-01 02:21:08 - myp.printer_monitor - INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration +2025-06-01 02:21:08 - myp.printer_monitor - INFO - 🔍 Teste IP 1/6: 192.168.0.103 +2025-06-01 02:21:14 - myp.printer_monitor - INFO - 🔍 Teste IP 2/6: 192.168.0.104 +2025-06-01 02:21:20 - myp.printer_monitor - INFO - 🔍 Teste IP 3/6: 192.168.0.100 +2025-06-01 02:21:26 - myp.printer_monitor - INFO - 🔍 Teste IP 4/6: 192.168.0.101 +2025-06-01 02:21:32 - myp.printer_monitor - INFO - 🔍 Teste IP 5/6: 192.168.0.102 +2025-06-01 02:21:38 - myp.printer_monitor - INFO - 🔍 Teste IP 6/6: 192.168.0.105 +2025-06-01 02:21:44 - myp.printer_monitor - INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s +2025-06-01 02:27:43 - myp.windows_fixes - INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-01 02:27:43 - myp.windows_fixes - INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) +2025-06-01 02:27:43 - myp.windows_fixes - INFO - ✅ Globaler subprocess-Patch angewendet +2025-06-01 02:27:43 - myp.windows_fixes - INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-01 02:27:43 - myp.app - INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db +2025-06-01 02:27:44 - myp.printer_monitor - INFO - 🖨️ Drucker-Monitor initialisiert +2025-06-01 02:27:44 - myp.printer_monitor - INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet +2025-06-01 02:27:44 - myp.database - INFO - Datenbank-Wartungs-Scheduler gestartet +2025-06-01 02:27:44 - myp.backup - INFO - BackupManager initialisiert (minimal implementation) +2025-06-01 02:27:44 - myp.analytics - INFO - 📈 Analytics Engine initialisiert +2025-06-01 02:27:45 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet +2025-06-01 02:27:45 - myp.app - INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen) +2025-06-01 02:27:45 - myp.email_notification - INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) +2025-06-01 02:27:45 - myp.maintenance - INFO - Wartungs-Scheduler gestartet +2025-06-01 02:27:45 - myp.multi_location - INFO - Standard-Standort erstellt +2025-06-01 02:27:45 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet +2025-06-01 02:27:45 - myp.maintenance - INFO - Wartungs-Scheduler gestartet +2025-06-01 02:27:45 - myp.multi_location - INFO - Standard-Standort erstellt +2025-06-01 02:27:45 - myp.dashboard - INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) +2025-06-01 02:27:45 - myp.dashboard - INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) +2025-06-01 02:27:45 - myp.security - INFO - 🔒 Security System initialisiert +2025-06-01 02:27:45 - myp.permissions - INFO - 🔐 Permission Template Helpers registriert +2025-06-01 02:27:45 - myp.app - INFO - ================================================== +2025-06-01 02:27:45 - myp.app - INFO - [START] MYP (Manage Your Printers) wird gestartet... +2025-06-01 02:27:45 - myp.app - INFO - [FOLDER] Log-Verzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\logs +2025-06-01 02:27:45 - myp.app - INFO - [CHART] Log-Level: INFO +2025-06-01 02:27:45 - myp.app - INFO - [PC] Betriebssystem: Windows 11 +2025-06-01 02:27:45 - myp.app - INFO - [WEB] Hostname: C040L0079726760 +2025-06-01 02:27:45 - myp.app - INFO - [TIME] Startzeit: 01.06.2025 02:27:45 +2025-06-01 02:27:45 - myp.app - INFO - ================================================== +2025-06-01 02:27:45 - myp.app - INFO - 🔄 Starte Datenbank-Setup und Migrationen... +2025-06-01 02:27:45 - myp.app - INFO - Datenbank mit Optimierungen initialisiert +2025-06-01 02:27:45 - myp.app - INFO - ✅ JobOrder-Tabelle bereits vorhanden +2025-06-01 02:27:45 - myp.app - INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-01 02:27:45 - myp.app - INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen +2025-06-01 02:27:45 - myp.app - INFO - 🖨️ Starte automatische Steckdosen-Initialisierung... +2025-06-01 02:27:45 - myp.printer_monitor - INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart... +2025-06-01 02:27:45 - myp.printer_monitor - WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden +2025-06-01 02:27:45 - myp.app - INFO - ℹ️ Keine Drucker zur Initialisierung gefunden +2025-06-01 02:27:45 - myp.queue_manager - INFO - 🔄 Queue-Überwachung gestartet (Intervall: 120 Sekunden) +2025-06-01 02:27:45 - myp.queue_manager - INFO - ✅ Printer Queue Manager erfolgreich gestartet +2025-06-01 02:27:45 - myp.app - INFO - ✅ Printer Queue Manager erfolgreich gestartet +2025-06-01 02:27:45 - myp.app - INFO - Job-Scheduler gestartet +2025-06-01 02:27:45 - myp.app - INFO - Starte HTTP-Server auf 0.0.0.0:80 +2025-06-01 02:27:46 - myp.printer_monitor - INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung... +2025-06-01 02:27:46 - myp.printer_monitor - INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration +2025-06-01 02:27:46 - myp.printer_monitor - INFO - 🔍 Teste IP 1/6: 192.168.0.103 +2025-06-01 02:27:48 - myp.app - INFO - Optimierte SQLite-Engine erstellt: /mnt/database/myp.db +2025-06-01 02:27:48 - myp.printer_monitor - INFO - 🖨️ Drucker-Monitor initialisiert +2025-06-01 02:27:48 - myp.printer_monitor - INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet +2025-06-01 02:27:48 - myp.database - INFO - Datenbank-Wartungs-Scheduler gestartet +2025-06-01 02:27:48 - myp.backup - INFO - BackupManager initialisiert (minimal implementation) +2025-06-01 02:27:48 - myp.analytics - INFO - 📈 Analytics Engine initialisiert +2025-06-01 02:27:49 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für active_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für jobs_timeline: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.email_notification - INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) +2025-06-01 02:27:49 - myp.maintenance - INFO - Wartungs-Scheduler gestartet +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für printer_status: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für recent_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.multi_location - INFO - Standard-Standort erstellt +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet +2025-06-01 02:27:49 - myp.maintenance - INFO - Wartungs-Scheduler gestartet +2025-06-01 02:27:49 - myp.multi_location - INFO - Standard-Standort erstellt +2025-06-01 02:27:49 - myp.dashboard - INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für active_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für user_activity: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) +2025-06-01 02:27:49 - myp.security - INFO - 🔒 Security System initialisiert +2025-06-01 02:27:49 - myp.permissions - INFO - 🔐 Permission Template Helpers registriert +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für guest_requests: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für jobs_timeline: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.app - INFO - ================================================== +2025-06-01 02:27:49 - myp.app - INFO - 🚀 MYP (Manage Your Printers) wird gestartet... +2025-06-01 02:27:49 - myp.app - INFO - 📂 Log-Verzeichnis: /mnt/logs +2025-06-01 02:27:49 - myp.app - INFO - 📊 Log-Level: INFO +2025-06-01 02:27:49 - myp.app - INFO - 💻 Betriebssystem: Linux 6.1.0-37-amd64 +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für printer_status: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.app - INFO - 🌐 Hostname: debian +2025-06-01 02:27:49 - myp.app - INFO - 📅 Startzeit: 01.06.2025 02:27:49 +2025-06-01 02:27:49 - myp.app - INFO - ================================================== +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für recent_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für user_activity: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für guest_requests: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.app - INFO - 🔄 Starte Datenbank-Setup und Migrationen... +2025-06-01 02:27:49 - myp.app - ERROR - ❌ Fehler bei Datenbank-Setup: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.app - ERROR - Fehler beim Starten der Anwendung: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:52 - myp.printer_monitor - INFO - 🔍 Teste IP 2/6: 192.168.0.104 +2025-06-01 02:27:58 - myp.printer_monitor - INFO - 🔍 Teste IP 3/6: 192.168.0.100 +2025-06-01 02:28:04 - myp.printer_monitor - INFO - 🔍 Teste IP 4/6: 192.168.0.101 +2025-06-01 02:28:07 - myp.app - INFO - Optimierte SQLite-Engine erstellt: /mnt/database/myp.db +2025-06-01 02:28:07 - myp.printer_monitor - INFO - 🖨️ Drucker-Monitor initialisiert +2025-06-01 02:28:07 - myp.printer_monitor - INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet +2025-06-01 02:28:07 - myp.database - INFO - Datenbank-Wartungs-Scheduler gestartet +2025-06-01 02:28:07 - myp.backup - INFO - BackupManager initialisiert (minimal implementation) +2025-06-01 02:28:07 - myp.analytics - INFO - 📈 Analytics Engine initialisiert +2025-06-01 02:28:08 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für active_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.email_notification - INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.maintenance - INFO - Wartungs-Scheduler gestartet +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für jobs_timeline: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.multi_location - INFO - Standard-Standort erstellt +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für printer_status: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - INFO - Dashboard-Background-Worker gestartet +2025-06-01 02:28:08 - myp.maintenance - INFO - Wartungs-Scheduler gestartet +2025-06-01 02:28:08 - myp.multi_location - INFO - Standard-Standort erstellt +2025-06-01 02:28:08 - myp.dashboard - INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für active_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für recent_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) +2025-06-01 02:28:08 - myp.security - INFO - 🔒 Security System initialisiert +2025-06-01 02:28:08 - myp.permissions - INFO - 🔐 Permission Template Helpers registriert +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für jobs_timeline: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.app - INFO - ================================================== +2025-06-01 02:28:08 - myp.app - INFO - 🚀 MYP (Manage Your Printers) wird gestartet... +2025-06-01 02:28:08 - myp.app - INFO - 📂 Log-Verzeichnis: /mnt/logs +2025-06-01 02:28:08 - myp.app - INFO - 📊 Log-Level: INFO +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für user_activity: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.app - INFO - 💻 Betriebssystem: Linux 6.1.0-37-amd64 +2025-06-01 02:28:08 - myp.app - INFO - 🌐 Hostname: debian +2025-06-01 02:28:08 - myp.app - INFO - 📅 Startzeit: 01.06.2025 02:28:08 +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für printer_status: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.app - INFO - ================================================== +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für guest_requests: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für recent_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für user_activity: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für guest_requests: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.app - INFO - 🔄 Starte Datenbank-Setup und Migrationen... +2025-06-01 02:28:08 - myp.app - ERROR - ❌ Fehler bei Datenbank-Setup: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.app - ERROR - Fehler beim Starten der Anwendung: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:10 - myp.printer_monitor - INFO - 🔍 Teste IP 5/6: 192.168.0.102 +2025-06-01 02:28:16 - myp.printer_monitor - INFO - 🔍 Teste IP 6/6: 192.168.0.105 +2025-06-01 02:28:22 - myp.printer_monitor - INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s diff --git a/backend/logs/errors/errors.log b/backend/logs/errors/errors.log index f84962ee..b9978f16 100644 --- a/backend/logs/errors/errors.log +++ b/backend/logs/errors/errors.log @@ -1841,3 +1841,75 @@ WHERE printers.active = 1 AND printers.status = ?) AS anon_1] 2025-06-01 02:00:01 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: tuple index out of range 2025-06-01 02:01:31 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: tuple index out of range 2025-06-01 02:03:31 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: '>' not supported between instances of 'NoneType' and 'int' +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für active_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für jobs_timeline: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für printer_status: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für recent_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für active_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für user_activity: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für guest_requests: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für jobs_timeline: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für printer_status: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für recent_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für user_activity: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für guest_requests: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.app - ERROR - ❌ Fehler bei Datenbank-Setup: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:27:49 - myp.app - ERROR - Fehler beim Starten der Anwendung: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für active_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für jobs_timeline: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für printer_status: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für active_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für recent_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für online_printers: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für jobs_timeline: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für user_activity: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für printer_status: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für guest_requests: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für recent_jobs: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für system_alerts: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für user_activity: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.dashboard - ERROR - Fehler beim Laden der Widget-Daten für guest_requests: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.app - ERROR - ❌ Fehler bei Datenbank-Setup: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-01 02:28:08 - myp.app - ERROR - Fehler beim Starten der Anwendung: (sqlite3.OperationalError) disk I/O error +(Background on this error at: https://sqlalche.me/e/20/e3q8) diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log index e1120239..ad807a00 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -2781,3 +2781,12 @@ 2025-06-01 01:49:31 - myp.scheduler - INFO - Scheduler gestartet 2025-06-01 01:53:43 - myp.scheduler - INFO - Scheduler-Thread beendet 2025-06-01 01:53:43 - myp.scheduler - INFO - Scheduler gestoppt +2025-06-01 02:19:20 - myp.scheduler - INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-01 02:21:06 - myp.scheduler - INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-01 02:21:08 - myp.scheduler - INFO - Scheduler-Thread gestartet +2025-06-01 02:21:08 - myp.scheduler - INFO - Scheduler gestartet +2025-06-01 02:27:44 - myp.scheduler - INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-01 02:27:45 - myp.scheduler - INFO - Scheduler-Thread gestartet +2025-06-01 02:27:45 - myp.scheduler - INFO - Scheduler gestartet +2025-06-01 02:27:48 - myp.scheduler - INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-01 02:28:07 - myp.scheduler - INFO - Task check_jobs registriert: Intervall 30s, Enabled: True diff --git a/backend/requirements.txt b/backend/requirements.txt index cc18c733..16483bcc 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,138 +1,97 @@ -# MYP Platform - Python Dependencies -# Basierend auf tatsächlich verwendeten Imports in app.py -# Automatisch generiert am: 2025-05-29 19:41:49 -# Installiere mit: pip install -r requirements.txt +# MYP Platform - Benötigte Python Dependencies +# Nur tatsächlich verwendete Pakete # ===== CORE FRAMEWORK ===== -Flask==3.0.0 -Werkzeug==3.0.1 +Flask +Werkzeug # ===== FLASK EXTENSIONS ===== -Flask-Login==0.6.3 -Flask-WTF==1.2.1 -Flask-SocketIO==5.3.6 -WTForms==3.1.1 +Flask-Login +Flask-WTF +Flask-SocketIO +WTForms +Flask-CORS # ===== DATABASE ===== -SQLAlchemy==2.0.23 +SQLAlchemy # ===== SECURITY ===== -cryptography==41.0.8 -bcrypt==4.1.2 +cryptography +bcrypt +PyJWT +itsdangerous -# ===== HTTP REQUESTS (für Online-Modus) ===== -requests==2.31.0 -urllib3==2.1.0 +# ===== HTTP REQUESTS ===== +requests +urllib3 # ===== HARDWARE INTEGRATION ===== -# TP-Link Tapo Smart Plugs -PyP100==0.1.4 +PyP100 +pyserial +pyusb # ===== REAL-TIME FEATURES ===== -# WebSocket-Support mit Fallback-Optionen -eventlet==0.33.3 -python-socketio==5.10.0 +eventlet +python-socketio -# ===== SCHEDULING & TASK MANAGEMENT ===== -schedule==1.2.0 -APScheduler==3.10.4 +# ===== SCHEDULING ===== +schedule +APScheduler -# ===== GIS & LOCATION SERVICES ===== -geocoder==1.38.1 +# ===== GIS & LOCATION ===== +geocoder -# ===== DATA PROCESSING & EXPORT ===== -# Excel-Export (optional) -openpyxl==3.1.2 -pandas==2.1.4 -xlsxwriter==3.1.9 +# ===== DATA PROCESSING ===== +openpyxl +xlsxwriter +pandas +chardet +python-magic +python-magic-bin; sys_platform == "win32" -# CSV/JSON processing -chardet==5.2.0 - -# ===== EMAIL FUNCTIONALITY ===== -# Email-Features für Benachrichtigungen -email-validator==2.1.0.post1 +# ===== EMAIL ===== +email-validator # ===== IMAGE PROCESSING ===== -# Avatar und Bild-Upload -Pillow==10.1.0 +Pillow +qrcode -# ===== DEVELOPMENT & DEBUGGING ===== -# Nur für Development-Umgebung -# python-dotenv==1.0.0 +# ===== PDF GENERATION ===== +reportlab +weasyprint -# ===== DATE/TIME UTILITIES ===== -python-dateutil==2.8.2 -pytz==2023.3 +# ===== DATE/TIME ===== +python-dateutil +pytz -# ===== FILE HANDLING ===== -# Datei-Upload und -Verarbeitung -python-magic==0.4.27 -python-magic-bin==0.4.14 # Windows binary - -# ===== LOGGING & MONITORING ===== -# Erweiterte Logging-Features -colorlog==6.8.0 - -# ===== NETWORK & CONNECTIVITY ===== -# Netzwerk-Utilities für Drucker-Kommunikation -netifaces==0.11.0 -ping3==4.0.4 - -# ===== BACKUP & COMPRESSION ===== -# Backup-Funktionalität -zipfile36==0.1.3 - -# ===== CONFIGURATION ===== -# Konfiguration und Settings -configparser==6.0.0 - -# ===== VALIDATION ===== -# Formular-Validierung -cerberus==1.3.5 -marshmallow==3.20.1 - -# ===== CACHING (optional) ===== -# Cache-Funktionalität -cachetools==5.3.2 - -# ===== UTILITIES ===== -# Allgemeine Utilities -python-slugify==8.0.1 -click==8.1.7 - -# ===== COMPATIBILITY ===== -# Windows-Kompatibilität -pywin32==306; sys_platform == "win32" -wmi==1.5.1; sys_platform == "win32" - -# ===== OPTIONAL DEPENDENCIES ===== -# Für erweiterte Features (automatisch installiert wenn verfügbar) - -# PDF-Generation (für Reports) -reportlab==4.0.7 -weasyprint==60.2 - -# Erweiterte Kryptographie -cryptography==41.0.8 - -# QR-Code Generation (für OTP-Codes) -qrcode==7.4.2 - -# ===== PRODUCTION DEPLOYMENT ===== -# WSGI Server für Produktion -gunicorn==21.2.0 -waitress==2.1.2 +# ===== LOGGING ===== +colorlog # ===== SYSTEM MONITORING ===== -# System-Überwachung -psutil==5.9.6 +psutil -# ===== ERROR TRACKING ===== -# Fehler-Tracking (optional) -# sentry-sdk[flask]==1.38.0 +# ===== FILE WATCHING ===== +watchdog -# ===== API DOCUMENTATION ===== -# API-Dokumentation (optional) -# flask-restx==1.3.0 -# flasgger==0.9.7.1 +# ===== VALIDATION ===== +cerberus +marshmallow + +# ===== UTILITIES ===== +python-slugify +click + +# ===== WINDOWS COMPATIBILITY ===== +pywin32; sys_platform == "win32" +wmi; sys_platform == "win32" +colorama; sys_platform == "win32" + +# ===== LINUX COMPATIBILITY ===== +RPi.GPIO; sys_platform == "linux" + +# ===== PRODUCTION DEPLOYMENT ===== +gunicorn; sys_platform != "win32" +waitress + +# ===== DEVELOPMENT ===== +python-dotenv diff --git a/backend/utils/__pycache__/advanced_tables.cpython-311.pyc b/backend/utils/__pycache__/advanced_tables.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6022c79972dff00f6d8f43be36f336692a3974f1 GIT binary patch literal 39651 zcmd6Q3ve7qdfqPffyF-X-~t3d5aa;F8`uTkBEg3QfuQ(=9)M2LN@r++9S}<{7P#46 zQUn1T=Q>|-He=%yoeAGb5iIK@_@t|#Qs*-h-#NM{c3rtrm0e^~+}e~9+Ri1VN-70K za!PfTO6B{zXJ=<-XF*D5S7os1nd$!f@9w|<{`>F0AM>uy=eFRAEuEOY{dJ4wZ|Nm} zxs-=b|Gdm%xnqe~LY9a%QWmp@tn6MEDr0wB$cDQuW}mT#>@$v#!%A@Wm~*B)R6gSh zxn?Rt6*KOTd&U#;%y>iI8DGf9U>vc^nW|9LOm(Q5y*pzyGdn^%*mHTzKT{j3ov91e zv3FN&=S+R5ex@PRFw+=noY@uH#r!K`O*6YgyV^g~#U1b15Qcvxtb>JBA*{M6 ztW&IFp*0BI@eb(p9{&0D4sP$|Uo4?61=0`5+HE1b705b3?%Wo#M}e#dWW%AtV^tE0&A>V#QQhqgvvKAbLcX*j4bsTes$|N9>=n z7v87rk(O`RL;Df0f2u6fisu8$^FBNujI@dUk#^wdEyO{1-;^`bf$&2LY$u)%E6-hc zJ`yP#wRCr9 zi^3T(5xo+3e@xXq(p{EwMZ!rj8J!Vx734<5STfvQp0l5cP9}5qOVLC!XB&*)%(-}e z!?B!WEHxJsbB<@@$Z*azgrbHgVj^%=09SZ2hRo-j;Y0)&x~)0;a6C1Gz;a3aT1o`E z@~es2cy#J!w>@W{O2sF0_N4d>)^ zLY{~__02OnHu%ig==gKz$Ij&{hDXjQkKQMq86F%Per9~^+~7#A;?nTwD1Y?j z0~q3*n}zV_^2dkAo*Nz>$(5ZS$vG(*+{@38j*mQh=~B)^5AdTGse>}hs;i5hdh!kx zBJlzoO&$Acmd<8t>Xt5Ks~VTiW&JHnm$EzdE?vx4H!Ypd`s?vpU5lsM#-+>Inw@~F ztY3N}Tj5)JJnO4NT=q&a=#QsL3F?@{1`oPEJqoA5B+o(#2-!rt=!le^M2P6TT25ee zgc~PR5?SC7$4`Yq75lam&h^DlQ>->=MerAhv5|Hxn#L-Z%x}< zv)(GA$JZ}r_x8zq_b;7aUQFBf~G+Pxj6 zlvXIOr7Gbyr|ORoVx+33l~a3H+I7eYrLe%dF7~FdD;Sx=IHm0&H+yq2x})bNI<wr-n!V*&w}!oO*0qOr z0HYu5TB~JOT?#&ig*wN|oCjl-n5gh=^AlnsJd+Hl;}<>ux){HXMR>1*VW%$6i_m=I$;eT`ldv!|Uk?+mA`oP$=E0NVhYqr&6uf^q>_O!hZzYKHnz`2;kYWP)0YQUL0aytfj9UKKI@0ZwUcr0LgK?J_8|MSh@_gfPP@75QJY43F zW2iWjt5jZ;2G(uM+0jO(7#isoa3v^xK@cR;(P?lOjYpH?Ql$y7QjQos z2k-!TTBxt!*P2Snybs+Mta=-n6>(7K))WmS&wlumE3j=uVR%ps5yEsdKA-9?lNJz+ zar@jHMrn9m!mIR~a1xZ8JW1T)NMxL6cD~t!D23oSMQw%y?c3$O?Y-w}+H^IoUe36B zWLHnx)swCAFMD|LJyci!u!V0zP6~zB+H3OVUj&5o4LJG2e-qET!n>$+lvPuH$On=v z)D+x(&(*l;YFzEjxH@E4N7~h)DL70Y(u_2V80KxL6(QTVAzruh{!uYGpA@ddW+%ci zQ5a24PQxN2{W{`HzX7M)#w+w& z-FUOBZ*{<=ijKT5-Hi=}Ei4x{#8pSX`nU@=lU!J-q0KiAONtRO5*39hbkV31 zZqagaS;N|zZyb#+c2j9ig}Tb+19*i<#F#mc0!-}JZD*C4b1>=48mYvXl?n~%rHC)j z1POC4qUZORG*(SGF-qb#98_y{?Q2!bjxDEUPwVS1ZCR`pr>q_Fb7~#BMRlDrvJ?yuUD_!fL3So@o#?u{3Qe_-esfLXf%C4#m6tU{(1{Q4# zwnSf2t!#^BO=TEhSFcE!7R&c65imr7QNL$-!(Jq7!2*b*GTfpaZ)!S=4!o%hwdh>1 zC#%)OELSV?&(~ParN#y8nmg~Oy)W1n92`cUKGN1>^yFhb6h_vB9)Qtnz}Qzhk88d> zto9zUFE~I+`x`cWO8U2=l2qn#C?yH}eWhDvc|gilhLn51Xv#`?%k=5!--^ns@`X~~ zFPti;^BZ3*)fz)tx933CW*$%u8cMV4p*WC1J^-U%L1=j>jI1R-0AuYJ!pP*!12EPZ zFkV=2O6QV+ye}k`Q;#9yxW;lS9odGvsNXHR7Mu}hVXS~R%_v#lMd?#4;yBU|*`?66 z2YK$=CO3sd^AT}3mg@m&?#f41x!fsr|Eg&|utk$H$Sx(-?Mk^j539YSKLHmM=Ard( zMU*8qm|YK%9?kg_T@Or;6c5*Y+jG#}MT34HPE84MlZzw2Eaw(9Vcsvqqm$E6 z8%0dSMKC0Y#)V&6+drn>M`F%%cozoqSd{53Hyk!1{M6PPgQF6XK)=?z>rVy5%5*||dQ64VEiri6=)^`zg0 z$Gl*oB4IkH@&>}Rk{5*?)d#YB9HtUf6REpvNxRehO_>L8ASC(@8J@87)J@j=Z`x--HV zSvZsN56k}Hw0Bs^cH5?}E$wSt-wCG>)%})x{b)uwC<_NO{zJ0=P}+M)iO{v_>q`5& z*1rNLA7SUayWZNhem2u`NNzcl77k_nhh_iawD+(QN6Bv<-1#oyKb#Tv%fkMQ|A6d2 zkoF!>V9n}teaw)Tg4V7xVYtw0n8JP*LQ_BTlghOUb)swmg6xWgMt=o08zZslMO#u; zshOJ3R8`=$EMO6nLAkdt*rkz$GINzasj9>lOF=P*+N>&=@TVNJOW%R6sS0{NobDJT zXpAyYZOgV-ZLOBu(SM03(+kCwu>~&*)lJC-Ykg0BOVL&O} zfd?1e-=HT_@^bdcFcxFD6JLvkV=xxX+{`&glUP%6Mfx7We3u;3w7MMyahj`94QTO5 zlxB8eVB^L#whV&x3<;_zjb!~jyly91Im({^D)F!2U;tX>m#g;D_^@#;DR;8rVk4Lo zVsiJMw5t(@G`T6bWpP&QV9xTzkLq@>j>*k|^;>t(Wa2b%Y4PjA+qPCxpU4-U&iqqy^5ruI3x_PI}NWi>lKv%rBo zui5eWmdoO8W`kCxy?o!6Zad0Th~5bvo_MQTxLY^KB9?Xh*+=WCTV zFbb=Pviyn~z-!1sYA+ma$JT`E^&QNb7n%lX3DPP#e?SgfWI)Q8)D8zT?-K0d;}bU} zf&2)$Vuq2JqVY}gB@_ue9Aba2SCGbFYJAbybN(Gg-WO!=3u*5QyqS1*${ykSm*uvjo1UX-&r#yo)32Uh>v*^Kt=>Nj zyd6-Lhx=+s&s#lz*!Omy+J7?R%Sd;P>0A*FZ=|o2^E5fXMa~6smdP0*$4Sobkn<`z zq+dxS3M8V4aZdaO`H?e;|3nKK%98q*wPULL(3ailXjwag2JdJwI@LBu?Yei%f}7EC z!*A_^(U(EG?T*^j#FhoO^|6h8@4vtvjgGh4QMdZ+mIXJX)7Imtqa5LOcQ?EJyq(>Q z&hyq94vE`3aN%ZjI^2%^Yw*QwBgAeW46|EFha1Q8Gy~cAm2bhH{x7_5KmDYgPK{tS z1s1GecHewr6H`h~Odq);x4nu_>)HSc>?RG&_lPfU{DH1|wg=k~L|9)>9_c6`i#B zF|Mp2#SjULDz9Jx0WDW5nunp`5EJ8MEHK*SX+}z#M?kk#BJr1>LZD~u6as5A^G(G$ zRA-a^6U89A8D^7q?#8^4XBmI2va#wAg_1~6=+rB!a+b3nvkr!-PgW>R|9;UHwZQ(U zQBHJ9)flXij)ILeVZH5!xtlN*U1V=8nAG)35v-V{4D8MYhXJ;H!MRWlTqGUXh37oW zV&U2AP~EgC(P;7Zv$_(f-I3IQbWIg9nC3x=!svX#&X=+!RjUkB8*LH0UU38*TRE^` zyXsN0XSu3&kLK1)eHR4`Y=r@oPmMa6$Awgj?8Ud`1zP7^p6UaXmPMu6X{^>Q@F#eN zFMC#)6f0A0Qus!$f-g)-iVsS{a8&I8OhmbS%HHsWa+MA49ez!*m{&) z>r($OF`?>0IT4t+RQoy>=T*Ww_gvDaL7DD2P&E60t zKBwm5TI3JOzjBT@OsvWUjzrFmHaUaR%-&!y5ds?>7vd?l#jsb8gw&(C@lJmb_Z z=J%SkDlNcYBYvVBi~$X^v1z&Ter>~+rKzHmIm>6VJ8GAQvb*-Y-Yf44Y+0&&(EH%5 zIJ5Q5ul+g{znbQ3?QYCR$X$D;^_1Lt3Xp*NJEvt=%UbPP5(BTsgL31+<)IbFw=O^*e*LuE zbnsr&vCXDqnWh1`X#gSR-@0_)yX&5}Wz*ZTwlCxDki8vg_PbxzoOU(y4&={36;|cC zDHdv;Or-pCJlwHVplL3YUAIUF7Oa>$DO-bY@ntkpK?Kz=+LIcA0x^Q7sBd&M6|+=k zwZyHr8y2wQS_h9*jqszEeU_xXkb0X%vRf@LVAM5gxnX(5_JZYx6{91pg9lSjLn%xO z&yf>OCD^?8jPT^dRq7y%kHgcxL>tnWpa6bc|N;y*NQE>d+(d) zzk7ad@()H{AA!zNvxhk=XFfu;?_<@z>!7^r;L1?8e%H#aY(w*^W6Ne~*mobV?qAgJ zSxv5uuD50C`{nxnbansdA62mt3;5hx!5u6fUOBvSc*_Ql&p-b>u@iau&BKE(%b!-m z`I*Z-xYPEtIxAdmEW3zs9cQScnYU4|)D147hG6h4y9!8t5r-5ynmH@$glrL;GNyP; zHYD+Lh4D&NSy)J zy*ys0D^?Z3~`jjPIrD1urD8 zC(<~N@$qkIH)-u6Z4-I(LSk-{4pfV#`GaTKLRKaV`O+UI5wU;^UYId}Y{V1+wo)l8 zYq8*UBnJx-X~(eMv&i$V_DHaOCfNRhL;`)jGXE;HpBreuj2#=P8El8bej;%)Iunj1 z`24{KfX!K_usZz7S!h4SmGPU1{Cc7VVTBm z6ETUk!AWU~_Bu&lrOY{|Vzc2SAG5v=k8U5A`fMhH#2-VLD_0i&<~&3dMLWWhOuP^- z#Y6flitumAp+UWrAx9=>2OOr?a|K3mxsBk*2%D!dNlZKgO-3EI1a(SSE%hCraQ($o zy?iR`uUk2If9Gy_XVtKd%xSeHof7_>^dRuI)MckiUpuI;}6RIVA>nJ?`v4Su<7ea`#OF&up$2R`AqLw zx%VtyvwPa#y!PE|>s{%?XEJ++(5c0^t|zH)pWvllGBLahSu!A#>(x$)@o zg^&C@S5n^|cx_<$%tz?!4}a_C?VGCun^o=Us&=eNUA?>-TDSheORJaV`kwV?GxZ14 z)d$f>FJJrxppSfO{`Nc!o=j8I4f$w*NId^3^|N>K7IS#;tI+#G2m2%R$EDX&8CEe# zzXR=#Fc)29XD`h7;!PusU=1|yr;P)#QUgV+aWz#*j72?vNk~IqTM`cT488P^RJ>lU z*BM~3f13@{+^HZ4^Mn`|B_>U;ixRe;#3D)z$*PE;4p>xpK)Vxr27=nmXc!9Uz6Y8lJj5S zVEHSV7x;**ejGOZ$!p56kCsw$`#c+bNm;<AbI>To z&%LGtn@tBc+V1)?O=sn%v)Mhp_xAK}?&;rf-EGh8c}(8(7&d#|+q-{r@BWR(%-$37 z-V?xguQ|Bc99+L~w=C0qLT)~>Rpk;eCWG^d#Z}|~j2yhy_&?vOwN%$HSMtHq$0(1v zHvBn4pbbCd$cV-~38pt!=*K%Y?Z`&YmC|u=uxZQGn;_8Q+g^gPYS9k!PKjl0SVL*o zV~5TPW6d>&U$S8%KJ={H?WEabv<2NGf2pG_gsY=1dx|>Yr=$;mGL;l&C)hAcX%5Ol za;z&jPkXfs?M0xS#T6=_j-3TN6Prr+;6U}D?Z*zX3nU~OTVbQ-E0ZGIdy}8vXTvh8 z5$V5^^D;qIV*dlSJixHPcgK0b%h-skSP;n2r0aP9D?H|V%(&USHH{Ec{{WG|)U_@5 zYTGw!+t;pTY7fe_2bU|dRhlu@mc62)@fTH%tKHup%T)EqRXwmQql@W1{Ldc!!K0bp zlXCA#8r{KS3@20DxiYl62iq3z?K`@;@90MI?r3J;puBHzUVYbQeb;*3Mp>r* zkX(Og*}LVmRR~%C-h2LzO@GG^J0ZvHcPBDEgL2Pc+TW4!KQ8+pPkSHFSF=FX%pJr^ zdzBy6wLo=Ug``&7PFa5H9rW6M=CQ&p-Ym^`s?7kD&)^WX`L;6}KXXO+&*_QU9p45- z3aUh+U%EyPH5-YjV4TLGrXi8@AMu}{*0QAjW$lO4_QP9ttD|}K7Ruou(}d1(wm9~{ zx;6PW7#WZ2$&E92{dXttHvDKr?jK@)M(3=x($TPXXv>1z`Y5|?@Ed#9I6}K)7Xjk7 zfvF;D&jjwvEKyp^aC56qEyl%+Kg_R5=>gkvrTzuzxW6^L-yY z|8FYUYkKrKb~ie$E{Cu-iSETA+-HeP>@WN|C$@Lq@robxKjDKOh7 zpA*nFK(dRo#{7TaG6fM!?APE~d_}BREQSVMrZd8oZPO{i)N{p(@;*{?xh6lVoK5D+Lw!CV6aA_*qtDjADx`8uIwz~aD?kT#fQ?0HPuyLL$k%|E~TvBhDgvmh0$JzAZh=LC^Aqa?tY+7hSq|u5IG|_JXTKZi?wi zg9qg*8LLPs*3)3IqGZep1Ejkoq}u@LK^=80I7`$K$+mp1?F$tP?gh{Lo_A26@2PdF z$A@})OJ^D>RbSqSZ(H8cnQ9&iW2MoUrO#QUTA$vcPd78=UGTkMV}PhE$!*1kt}3W^ z&V|Z_swvuqT01X16~=xPvM=xnB;~A>0K9Q@37w&0r(Gp{?&T6_%vU#*X*?Fl_Zf0} z$ziq;TIGq3^P(E0`by7}-*e=I$a#UB7vW%9lm(G*&Z%r~`AZ7$6qG;de-JoZdGQT; zx5qm|U{^QW5YEB!FAR{C&rk@K ze~D7~-*6Jua1;$vz45syKV}8UTt!BlaYZ&u{|Dev(g7+Vn_%*HS$tJX!`bTH_o{`> zYGG~X`i@L>pIqIybpE6Anw9Q1#xmuta(OHDj6$|<&&tK+iu-k#1#mbnTe-Vj@sX!) zCHno^jHg5PV7ka&aoGycJ70bEt82$Hb=U^mw|w@ahW54SyEAXiY+U@HF4OUZ-0?)F z;hfxX4i*hsplbCYQgz)O@2lQ7LhIK*XiPU>%rsw=;Z|Rgt1qRiFMW=wtEw8DDzanG zy&bKaJ6hL{uTNxl9FTV$Sh`5L?R_JeDQ}a@+bFj%>$I-SEPL+PBlA87x>h*L9?I*r z?;p;1x@1q+mc?7)&(;Zd#$O#@dp=Valeapi|k?&Jsoa%`2jfHGeOSZW^yK65VFwsWiIXIt@gC`oP6i*>#|89!?A6&%C9W74=)$O*TbWeQgkkCm2aZDERB(oyu7cvXCSO^Qnl0BGFCvkR97vt6Qkv@Ts^o3Kxt;KE)EWszIqlusb z2ms~jgo;mvDd5nBQFwSR`m7Wi5IXzu)Xz`^U^fkS_7#EBAseGOcVj>}c%(R#3yd>j zEPQi7II@4g2?PWHwZH*^jLF5}yzOrX!PD3d0#;^TSY7TH^)%6iF(PsUc#_tlfsikL zRS&NPIm-l8;sH=kfm8rFP#VuD+s_G@&Q24cB#zdJ5fVzs3=0FGQ9A+b*JCIy9;e$F zOyRRBDj*%y^q@Gjxw@;n0JW&1RUbHr8B=0QYHDtbDoTq&gL5}wb22BisW zaJm%5G3Anc%3qAG`B-Lz&4(E%oA(Aq!TRUME?+{DFY5|S+;kGP$a{=at-PZ05d(A_ zPV4ES7{*w<-3KOSUnv31B1GeJkP2i6M>?3{YZaoAQ>|^cw5?(>z;U$-FuF{N)3bCC z#i>@dl|2rj+nUd)k|e{qU80G(aNHON#cMsi_2z5;_+&o?mndI9$WkImLon*B0(43g zGEN7r%u3tkhMi1wdYI0K`tWUtZY)jWr#lXu?B`*ov}WYv_)Tf1W@4MP84f;wDKNX} zsn!GgTTdU@f3lzZnwOQL(RETE_27|KfoDjJoIZHuOW`&fKxsn&^PJit{D^9I1f0sw10&9#7&{TxGy zG8Cid2LPF)=V2WEFgqyd3!|6BDM?IBo8wmkc>;g)%|9!R-Gs_7Z`0}Jg}ttO$V;j| zAs>usv_z711saJ>9IR_uN+*DZqnw?j3k6p6=7qp7CaDYY%w%;T)F7=30l{d51hr8z z761%n$`@VR4HkekWH9NtOjRU9w*_L2GBwhKNL&t|XQI8d;!{)>9_?jK-l&Q+$Q~u7 zMyI-UbuwY!*(Y>~-NLEUhD=iYNvt7}6!nuUTO6a}Wk`);u)aqJ1j>UZc_dvWQc~mQ zHTt}oEn=V~LG24N8LMY!ibNOJGT2&}-LU;K)= zU2SU%p2vsGF&oVJc(O}h6^8OZd_AyaO4Y%G$odQyl_o@01aty|?9x=m%YI2N*DZ;cErjyYo ziJA$ai)@Y9E!k~SbfzF|Q?-oX4Cs8sz?;l>+ai_}fP5G_jdWG+pN!4oAnasUXL9;Q zvbY2&(^ME};joXie$_aFBWloaG&yZF1W^cGTrBWCpGYb>9VEmMn~+0v#P2p@FNtHk zV(0YjJDi37vHOxIu@Y z2#bPhuDuQ$-Er4+pgbD`$gTd6!2)yrHe zG2L}bsfRwCVWAws4of0Yt*F`R)6o@>;ZDtgRT=-CV@>&2G6)DGI07zq z$Ofm#26pHd?>uLv!C0)&x;e)dHEJCt6m*XUVPYA^mkQ9-ODI%Kp5)uZ!!&fBUt%sM z7)UkwlC6yRM3-ywfT$^$y(GrTU7eI#fViPg;LogO7#gi9I%=2{yHw-TB}Z1amswhE zx9C=Ajf=*PiW1XvqPBY}gs9~UCvL_kg@Tr0V56jT)8IoXa9Ts(2{ZHTEfpID<}cEW zUX23Dk?`)S8%$U{2)1=#wKs z%pGXOYM;Y08wEMxZ~X4&-@KU|D5gZxVOg9+Ef&dl7=zvxw=jPL>mVSq2oK z)(N5tQ(-LVjSN8AunaOlvs8+xsqEDAMhpK2DVhKY4r7}&$iiV!-Tt=l-~rNhlCFW&)T+v#>a zU{XRM)L9+FBuG*+mVq&+q$T8&~kM_U&slR+GH zpXdVCZnYPOk9i>oE0GcakPNhQ@i}~orK@wivsTWUkx|3kD1p*tngJ>s%`41KF_Lja&_+A4RTHG@6goQ8 z0HPKS^vCjGffQCc@(jAa7%{d0o*Z|R5gl9QGh0AaT&wx$h)Tqyu@N?Eqj+j$yqZVb zRy+}2;H3GJA>MgtaF)PlN;6Z>q!iQ|5tGJ|DW(2U9S4|+W*C+21d94jJjjMK#XLGF_c*xAee^o!zZ33(%lU zs)r{k(7{HogH!+btwar6uYtn$P{T-D0^@hyRL^YYAd>>ao9&vtfi2f;h5UH>XO&JXu);8%*#43 z%C>f*z7Q=CjZe*%nE1usGt4r#-6}xy{(qb(v>4C@K=J0@!gaJ1T@bGeM%6_@oxP41 zXRyR{s%GA_kdpvvfvvzOk#}YKiwmEpRDJ$&Hkk^uO@UX5HgtW#2}Sf#Y=TLM zm34)*bOkKrd^i>?w!bj`rdiL&X6z&>fxdVlPYg3QKg(%gA?e%%1o2k{r0W-*na$sRz5i3M2+8ahWhSzm}=M3*4tDSr_c z1PCYfO+^R;!U5I=6$Ow{+$<&Y{^@VNxl)t?^92D$QL2kZbR=%%#|tQ=)GLuO9O%V{ zHVp8Ta5)Uy9V)8pKz@d_VEhsSJQ$n)F~rx@X1{Q-+t4BiFC?Q5E4ocamqORor%Ah4 z&|m}|4G47wqjr|Z9?;=9Ae_|TF>7+AN?X9E$wzNdJ_@abI6{{zjF5ybDtHw9ttN8< zuO~6D#EF5o-d?k8J%Fhxv6Cek8wrBHikJ?JO`6hm@xg3O_;suuT`bYR5G3>`JsrrC zE^{WO5F?}N2dLffIX$7%#{5UGqQKx(xp$?{vy_Inlvb~&uW={6ad}Dwq4Z< zZZPd?qbf#mv)IhufuYf4;(Dhp|JqKI%AyOrfeBHVtnjVTc-PDM9)iyYaNGD|Kd0rR zq$<)B#Nx}Ce;J>Mh2z(XD}gr?mI9i^U@AEay%nbi<5P?CBA?Yt2=swq-g@Xis$y+Q4_*%Ta6b)SYNLcSLB zcfKFD16xM;PSGwr<(e_58P6xJY*4z29VH32qeS|@fLUdGl<+{ul3jLqU0W7%A9jz* zZp0iK9WA{%WeA)1SoQI(B>C0gno5}nPhPts&B7!%Al#V7aHBw#33l>sK!OE6h3TMU zbFXN_UI`?o!{F8dVZU&2?iJxM{v{m9(Y3!%P<}yeKaBZr37tRSr=t;k@_^&gu&9zn z)FvCDXz~aJ3oDZ`%`z1eHF>z2!s>#ln`}%2-F!fRU11XH8vmSiA+PMqq5(FN8h|N~ zK3-l3oC7~&f?+^7fSJvLx0WpXrjAV=p9*UNIbkMdvBY!+F;Q|%U%=wLPdqM8ic=i2 zbkW!n?+2G}+k9UM&uR0lO^l02S{bfMV{SIV&J7=cnFL$w(XSWhQi;gdjNeivlS-of z!6P7&us`?+-3#&hI!tn%|uQ4A=k8~`-3ta)gXv6^~ z>u03_Vc*e-M-CoScI;^LM=HO5!MdhqN^tjsYu}jphawe|q^cQ!SJ{Iz!?;bGp0;#( z5yv;dXpph*`=aLeYYD1UHb@o=&m}NTo`2#r-v%-Isaq;jZreaL9IN3N>Tbz~A7G>% z5NM-Cp`sb}Zoqak4M}ozzh>W+lH+`HCt+vO+zI=`G%^FVN-Yr66cvj(pv4RTJN7VW zWmgJ&c9bm;144W@ZqlS5GPQwe63?16b>uB2)ryb@N!y}TAp-;9DP&cHki0+tHy&V}A+ZImR5u|ji_2^qx70?ZilS&dhWWX`L~M5QTA`{mggB`5 z1p1C(2FtLcancC(2M;iiLS&tEGHaDMzi?J!%P_ReOwG#BKS0wcpw%<#5%Cdmq7bO^ z)+2`x98tDf788(&uzdw+J1q0~LEs3?NjQK}w`xe2J1vJ(v6S3tw61M%M`&fXwn6Do zi&KYj6&1V$YTgH+Q&LRo8s1Sk;QudGi}lM7(Yy*}QoFbZ7f$KiH2kWq2iA9!3GkNM zOf>DlTp{8NyS>g+TJJ6??@P48b0y0B)B8z{AdF&+C%9hy39CVTT`4{}S8 zh6K9k4`yslD^}ZN33;!kna{N*)mbR`(If@}P(?J%uJn&6E4p?%`dnG@p`puTGh!qf z7Rc}zP}Gt~j$%ZkB}wT42xXrdL_o6?7Ud{fb!||}DH>fmRSv7fXyIES`#hHfr!tr! zCv3b>Fi{vonJ%lL5}_&@8yUwvW~mxFrvk$hMxFfDD&iFQ5ZIE_ni3dNN@}}X!e?k< z4@0a%(>IXfOI92&5_e69_d897_mhc)WWku8KIE664-wF~ezAA0kx}vdnlqQb|bNH^1INrryIpzx2oBl*CYcT4<^K zJB=rbm&93gG*U^(3S&v%cfW&!x!$A0x!8phK0K))2+f+DdYm0QJ2Wn)L;;o}erC@_ zW?V{f#U#kUnKLL|NerkBmi4GuX*NJJwGlCuq$%L@XSiX8z5%J=QzLNc0jml-BmrkY zOZhXP1G*H&!h~;6&ozAU5vdBHRN}+8lk-@$iZ4~@z!QAOuo8=<_6++VxF)a2N=zJL z#TwAZE@W3MI_QMqlIB1?>1*V$qj@5D8j}+Ao`iFj9f{gqA*md07NG#o!EF*d5|5oh z`4wQn7t_`FIVUf({-f!Bz8Fw3sd4ikotn47Tqf&pyfg6Xz-sJ2^qtJ~otFDfXZ(-K{zp~+ zb$lq0zRS0b$1p#KIa|By&V^SmtS;ivp4tO)?SU=7+w1(q0_QVw=(|GBVgnzE0(J-u zoxh}S{`v+uYWZVpsue(kv1m9^sIm#{Hxj2YQzQy!Q*m}AE{YOPEynb;J?&nrX}Oq zCwum#?fY0}x{tEs6mw+~&iSQf(K$O-7*4a}#w9xnkaJ>nA}o6nJ6w^D_TgtOy6A}n zf#fEKL@qm8Jj~Vri3y30|Ci{fwwztWs_A(jZzms^n~IwcquYiTD1IcISG22O3SCk%9Es6>Z7OS{Nv zB4?Exb}AP;i|YctvIDuOvG8LeSp&L3uRkDXgd92oi&sCRJ2ekh!;G?qYWSt=Byy38 ziKit$;PA5~aMq~>=UZB>TV)=r9R~-)*=4c1mn!HlYw;|xKg~l|+G6s{TF#`u_%Cbe zPMiI*mb$e5m$kH}&3;)+U;076tVKxcfA=lDY5gy28A?Cg?|y}Uc~`o&JyX#kS9B~n zx9nwBoNZj}tep9TeDRILe7LL1io++1ot3dq$oI2CP^+cPvsGrZ9>DRnMb0PW_Zc~# z*Z}v9Mh@v_aU510{8{YabS`T%PUo^Vt8oaZlEtx8oMPt_^81V&H4XuJSsafQC+-$I zpOD{YHerUtCe(de|mIbeO>+U8$xFA3JWcul6(_fj8pPo#Msq~Hc^rQ3g zah$6P5To;J)+ZfS*IHuBLU$8)!u=a%0I+RY=x*XZ?%Zj0uI<~h;I?7kcuC&>ID1Y% f{Svzyo&9CjUP6bP(Q%bo+tzRb8*U{XCRzUbC5r2M!1j2Lu5cHKNI(FhR1WV`nq!jA!w9 zTXoe#4n1(_fm@LPsRvXP@dr2}@dqX-646LVNQeWsMd8#F&z_lfw+T{D^?IJ|_q=}J z``)vEXtzBC?a#Y!@8mX&dQms0njEdd>v z-sMO{Nf47L8N@u{LIo;H1yL!HJWJynTw7A92;&1T7#Cs0v!3_2_SwOO*XN4HX&>Aa z&1=SOSm7~4jqYd}miG`xK87eQhJBk^caZO}7Q}-625Z2oX(Diob{Rm0f3#eIgbIr5Cr&B zQ4mKNfKcRIaw4Cdj$O342(HDP744Fznl>jA+bK}#WIW!^bPVL-;z}aa%1}jdwo>g* z%4GHiw+fe1?UmBe*(of&THl64vLz6^=E|=Fb1>&gTnP_T7yGcO$R+ zk&e1(!ui7>4ky{r<*9kB%2Vl$Rl7gQb*+Try^X&?-yP=;%9uIdTEJjq^x6k9Q#_6p z;gP5^O3r-}2O-}{W5#7?^lBMax7rDHN&?a6+o=SzdW)#9C`Q^x0Ef7S!Bi~f2{`lX+?@`X##_uaJvcP)3<4i`w?{VbpLb$5Mv z8vgPO*gwB{jQg7r2U-cd4Ns(DxnlUL*#LHvw-d5)0kCiIOr?@{pCTPnb0p7zc#`-* zpmwH+KMk*tKDK6lahmyQ>sdJQIQ3V4UW1~atb0Q}@V=$HyJe_f?_fEr5w-O75<$W# zEj&t-lnrA&pP}>%xFD6KMJY=|N~OMPQahF}f!IUlFjF+LskK_@63adXvHR$E=v>U5 zi(|)XY~nGRkgna>0?je$*^SSQ{v=sC)vne%4f!&R#ToN>^z_pli9QWeu^siLzRhLX z8*s1ar7k=J_@Vnw8ST50fKK1=On?~M7~`>JV+U}7@DP4IM;9jhA9M3xd0)S|Keu!+ Xx3t?HJF{5hJX!u@^#A^k)!_LL8BXJJ literal 0 HcmV?d00001 diff --git a/backend/utils/__pycache__/database_cleanup.cpython-311.pyc b/backend/utils/__pycache__/database_cleanup.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f4c71aef6a4f434a966a0e288be1d5a9c545091 GIT binary patch literal 18543 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 literal 0 HcmV?d00001 diff --git a/backend/utils/__pycache__/drag_drop_system.cpython-311.pyc b/backend/utils/__pycache__/drag_drop_system.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6fa69fc709182fbb83e3e5c8d109b6ee33b25e71 GIT binary patch literal 60403 zcmeIb3s78FnkIOY%mfk=NQnf2B%~{lL?T22dK*i!5a@v|kS&mGjW?TKxgZ5nTyZ60r)-8{Z|cFXt{_Pi>#b+%=^Wp>;6Hg;bf z+deCfi?ch%cg(hqw>pF}L28V6e}uaH1poXPZW~7) z=Tqg8#&5gE_uw6#M>gTQQ@L)!_1;L?sL;`zj-!HAgK~IU+$|2ui8*ofMlvPMic=qd zAd8W3QXGEu#V-D=>exDts;a@Ll$4Mz5lP2HoQe zOh$xge468cXPQKWlVMp#Y-tKWN@9O31pvaS=o?bkDZ~y>NCeJUB0V|NHJYBAOUNmn z!)#&#(1~Xx8FiGZenm|;(%~pnM#3p66`hqj$_uW+=wzzkIu}i*3eNucjY8%5IgXiv zdn`Q{lM3#OabT*Wtl&Yi@MH}5ER=_n5v1#I7Aj=v>uCvzE3PIJ@#xfzLiJ=?mZf+q z6rP(yVP5q%os?wUS4~T)P%JS$jXPJt349kSUX-J8RH{&kyYn*eTd1X2k%Jt7Lbc@fvnl#qO%d zYgyi2c2_fAC;4!{!Pv8qvX;L^52`EF5=B$j8A!yZqSNVi6#oLhltCVeIHv+5-Jc{n zpPZ2jRZ>ivrACTI3bo4-rsb){@tOBs|9D))sk=6v@~=x znQ?8xnRRW-H}75=zO_H&+Kn^o+MRD`UOIa-l5sWT%(|NMO)X0=-16(`o7$Gn-D=CY z=*+s>^6i}&m;YAe_Wot(?IZ8TGcMeBW?6^}xkm-oo}S;t>ow?^D4WqRDBB%zF-miT zn(0oZ-%3WKD*bxcol3t|QZ-_7`gMtTi8gvl5;hc<)ya+B>t#Nea5L) zipIgR!Kb2y3hMAgsFid5fqExyq@-k_Vh-FMY_U+D1f`^tBZV4C zmJ@Pl7OW&ZElnd4I|^Q&GL)PHZ!T0zsW8~hWFj6(cGSq!ndATk9Te=Lpp$~V6m(H= zn1W|0=%e6S1O@jLxD)KYn+`voy3c^o^nX<}FJjw+1qu^mrhHY znm}9i8CMg|EDLeL;UmyYBvXwCbbN6VqqI&k!~i2@-xkJQ5hsy|DgbF7tcjQ;&BWwRiP;TDtETa#>2H<@hAkLp@x$V09Y91+UXp^_{TbpstiM#9uaCYtb+?FF5|8@clBg z=r(wSiY_~Q`yW>UBfu#oFY$75?0lNt{Iju;o?2uWkJxf{DwoW zBI?nfaJ(;+nV;#@y-;>lqcq0i8J^R`D^Gv?!E{R0`L{TqmMzE@XQJ`>G-#6{Rz84K z9Znse@(3Oz30hIbYJE5oVd6*#@`gfC^KDj~+C&_WsjTJ+!H zn%~-gEd>EEnuNlWQprXY4cLhPD?-3XhlkUSWe`4ucWiVnI3cyNF_{g<9hC<1B6_p5 zWua2-H3gq~6#^5Ugp8adm_do`;M~!lo+BNKQ=}Syey5cl?P5KT%#!~O!IH3ADR>)i z`*Y1*nQA)kw%;4e9eXKr;cK~Lmoxk5%x~I~+tj)8d~Va>dlk7&CvKk2?>=zzY|h*E zsIFmEaMX0u8nZKd18`Hn-kDs#TwtL1{P>AQ=!zy6?3%+!hbw%)sE-yhDl z^=EuyzP@ca{Gh%)Q{VnsXYg+2`!)A#vpplfxNtFZ>Gj;DYnj=2_Cg|eA(8D)WIN|_ zopZO&=KO&SJ6E>|-XOut;9KEZB7mhwPqa_L@7e38XZl z1<{#Uk=_ODng5Sa$WQRk4>QRvmZdZTg?8rrwy;n(D6E;nX-eT*M+(;htV>GgszjG` z66r_W^H5OYutP0Eezwa6UDdhZN)e8f1H#i|;WNdre0=A z9ELEE$+L=}VUW9(F_CpQ2oP=>R+5F<6m+jxNG10o!Gxs9FLok$L2wWY6fRdUVp!G( zl}o~V4u|kvFNr2{KO%NGWa_X#E-RD;dkT&z<3Rdb&(UcqF1Cy{xQAo>sZTM{x&-8h%~Z*REM$ghndCti)aA{Ft~r>YcVO0QAj z2FXBv9S@$mDiO+!^jM`TTaRV79=p5a_Di{zE?ikoR+nE<8dEEg!d#F4FGz`bPnf1Q z+OX(I87jTtF!!JDm3?<3T8nfUv=)sEvbAErtvU*RotjL{&K;jW@`O#LrHmr$Bq`Zw zr-p8RF8BZ0)a{qP7kxLXJt}S`7t*jwk+!B(s?JP!5#bseBmc5y!GQ|-&>b8F4*?vL zVE6d3gR61Yipdkm@#$+ci`0zzP@}dN`MI*=p5uec`!75=az1n9{Bl16e*W(2prUm-wVMNp{X41{!d zm6>qW1nPGk<1rzvO$ycg0jo@hn@iv>qLxBAtVu9A!YGuUEjVEjKp}%v2+88SxEZ=4 zied#PNl-Hl-*)_?c=)!9bs1SDzd%qVPqu8o+ncFBNT>JUFMa-7W4VTol|8wJgAW^y zK4>_aZ8)B5IG*)Am-9V$)BRaP6K6gv4fxGAb>|Q^bmtnnZ&rQQyp{LoyJ`Gpw;szO zY(AE2K6bPA(TV3jdFi9t`?a@&D}C9`2k$wvo1e|#9J_e47K46c54sBSY*2E`Z`+&S zyc6MP+glY9Oyf7(_F@j<_Lp+oU;1pzHr|vg2l1QTel~}2%TR91&}vPEuWD7`fv1Yo zDCz&YQ-%$V`0s%DrqxB1QHdv4sP*nQ%N zJOn`Ha|n#AxllJ5lfv=zoI0q?Z@02BON6ge4n%aE40IVT@AKz;JD0~ZzMjv#8~@~m z@4S#{>c2aV0B6>FGUq*+QO{L37o`|p3srO63Ql@*1!?HfNYbRjX)4Cw1Lg0*z>-4w z>Y=M+ve)!nYc3{5Xx@@?Jl!LF2Kh@*w@_{#2VqKZFB`D1R?P4ArZySgyUaP6-dPM5*O&|}x0>+n)$`J?BISgG z2oykI!cqcYbwTdkqQ}0f;T(#8*@E+@l|MpBKVhX&EK>jE%S=VBQ&VvhfC&$gT z6UiK-WLAm8$(WwJCdngAKu;5`U5rnE`~kc&@K`D@yM_k)#M9}`=9h4=;YCtBhk;b; z6T#;&0!ObwmldONRwTWJ(mMqoBN*nqOYAx>!Z?#eJ~ANirCD zbXFXlV;(FyF2a6Ugd|jg9+TrBJ`s*zn?HInF3H!!G8~?GZp_F~Bv5LTS)bV9m#I4x ze9>eGo-R0rQ_)Fe9VwK7Nms#05r>l@J}GgB!1IKoX$oSL%9)fPtiTHjheW{%+mxK3 z#}$Ak4hMxyLTf>_B&f`vnPuex%H#!lzaf-_g_e28lp(0#IrS#_>)_yH9tl`NXdp7Q zP=(Se@QuWy@Xj)?DMk~r@=EbSIUigK70EOlfAHoyq$Ke`E+HZ0HV&U+y`b0(s(I$z zCWoV9w+>okTt_a+Ef_~&+i>-Int$1GFxPQ9)A-__#okTaN_;YS^UQC`1^>3&SN~~S zwmz7v53UMjH7$4d+;{x*?z`Qe`5NEzzT?fb4BVYZfHUhG%=rd0zQO#at+&#@tZ%tJ z{f|@G`n|dOy*%X^_M<1f*KU^(a?v*N=E!IDjo&-??!lXb`OQ041!v7J7ThY&*EcWw zGxfW0=KZY?{T&bd9V@%D{@$FwH{v^Y6^~cYgWHx{bGvXX{#X zb*=w+a;5zr#eNujP`58rw~rvHeWy0F{q_5s5a9eI&VRGMP|g?1_(J*3fm;+$*o+7H8HQ z&UwQbZ#ZAybnBq{_a%;1H!{I*vJ*t|&Hjz2+k_7r46-5TAhE_ zwdYKW^WU_%acyr-T7qCgB9O(74Mo)~aq6Zc42YU2Bnb9~B<@9sKn$@RRLMwX5M^`= zs#R%Tbi%M>GGVRLi@}5_lurX<(NMYoizx;y!%&9->luhU#(LQcXD&8Gm!-799VRwQ z{&po!3zKCSy4;Jdw_O;x*so#WDo>Lom6?=iz#^VblU<6Ka`DKOrt#A{UWC(0ae(|$ zsy~bka^i2x`b0KD+Qruxy*Mq!!VxfX)2PGJ8JYe$7RQF!o70WJUd(tfvGjsFB2Av{j8EWBLo#D8iGl0aX4UAVhA~{uY-=c6ozu2h z)eqC_pHc>&BOo@r(bM>-u9-VF>UuMEz4`5Jx$XP!KA+qE+%2!h87J?9rB2d$G0ZQr zzDUj&$@n7qO>G%po5GRy-R;XZ9?vx%2L~z_dJgM8l3%Lbe(IC?O!E|-mm~Zl>z&Sd zr!(H^eEsH|BPz>iB$mMgjb%ubR>Jv<%U3etiR|Uc+~rCBB8y{qzpaLEFdnsic5x9#Ss50Q3pE~9NcncdaK1;HgF>~ z1q{zn+@>vxg;~*BHmH4iI#U^%Qe=VMz<+gj^RDMK!O2+GiN0^gJ-qS6QhkCF<|(l|@xKP3_WSE?A(3@>>0Uw-vsH ziYKLE@@Qgw-mRCkQ@91w@?y0KPQU(MzlwO-2wjt+0Yo_#s?9LjjnFUxX-YgyI7s;u zHM#Krb0>}pGgj8(PE6WyE>^!?U5Zb|&stkpesQF^IW8onY7B!L;z7frBblv(rR1h*C-2-=`TA$Ob^N(X|9-@Lq!o zEgJOspq7nx(JxOY`?NbMMO9;?kv?%~5Sb-adqh%;r(IlNlYuNbkY(aEz<0TiLlUNzvR7cEV1AGsum}5L~bD zrLu|72G^yQ!~cRJl3NkLd!+jJRz`1+-nq0qsy$f4Yea15&m4+Btj1icKQ4R2@t4)i z7gnp(O@0UQVdtTm$?qa4)El5BTQqFrDP>a55))dvGwEq7syY7tBMM6rv|pm8J3{joK~4d3qz_=!`=%>@^eDFz^Xg z6N6dL&ARX!N|@TY(SwU~mj4(9&Ts3-x(4xdI2L2eC#GNuoR-kBW0*x5hl#FH{;v>C zrct%vhOtY&A(Pp-P!9hgOn%%f_6$A2B=Jz8l2JA03d?`ao*`fPEnLa-bn7C33gyz9 z;3*OLkLWpRfbw@JAnTn~)vGnAdUci#Q>fAxFce(GEDDt|5aM~FLn-$SA#30}m5wc`ZWEw@@!Ruk))-}@va{}GiF z2j4_rUG+cf+5Bi*>%(n554QE(-JIQaG`H>O&GV1yTj4US5r5gxmTlOTYk-x_y+K^r z3{%&`Eu9axbpF$U?3SL~mY#=O4nNp(__L-hcWPJmJZL&VS5-f#{Rg!x)puXXv>(ql zJ(p{G?sKt z<>|raRQ#_g(4W~|k&VhG)^B{mMlri#M{WabhTCf3+Iv)@BK}S9jx1k&;P3eiSI@sU z^3KTe3wN6`ZGBn)vpN5>RFRETk&UQGed9ZA-`n->E`YwF8K%CLRcJRJC)meEZcNE*K|D7bo@)G z^6h(8y0g3ca=ZJW+UHfS3f>BUc7(D!Lb)BGTeXksQKyOx{fmSJZ2QvPFykF$6R%)~U!#V%qjQ=oT+tKd;d$@ZPK~_AG6HnY4f}K>co$k3C&H7K| z{3kO06PjT$ad%IqC4uu7FOO$lo6f#GlY4oFKS7xF&ErQsvQ$2jZ`N^|g!`;rGb=02QQTDULC%xwy+@CtVxcRis zf!CilxXv|uK5cf=ldTTAZeiD=1Ia$!Q8m2V{b^_C@DBIS8y&d*`6d^h|9lIj{rL_z zJ=yJ~C*5v5VXWQWH1!`8bGC6NmhREFnx$Ya(F{aTt%a+a3TSUyGAlr4r4ruo3yWpU zjIQOfU|8h|!$ZHZ1mnA90~BZ=<*76=F@f-E92iCO&RmBHD4*ld)N1! z<{HA&>t>2M$uG(Q!}*a#rzuZca}B)gCu)Y2f(E^M_i zT0;jHtc>*%*QI#e=)=_#&byvZOo(Y(3BrK4vEk2qR0vY@dySbGYHO^e7JF=dyU~2F zpbK>%%@V~X#rb-chcPwg`JC?Xa{p?hEX^j=g`;v}mP=7d=AmUK{(=j#Iaajtcm{Fr z1=PnX?zy&d{v_)S<-DPcH&ohnNF?^nlbt8Kg^#+c26~+zJ<~O?*ZJ{YH?B?U71_m! zoqf@?CSx@-Mp!R}tE6ACV_9Q|>J$34rZ7&RvS)`8%Y<66BW@=&Ff=yt#55VJ1e+`~ zPHnO>T01Kevkp1l#?}X5M9xKA85of(O;%BTG98wqtCL93wTyE);`5uWPxNVZ^Syc( zWd<5GN94!utx3^8F=>I+-$J80uPz#AYlPMAIY2Mn^it+s(yliuOR!iUH0s5Fg~ao_ zt$K}pNjs^-{kKR!zO*XO%MRY-vfi$ow=3iAf~Z@w0n3CQdUrqY?#_AxId3524QSoq zK-POO=cOs1{N%*%Kt@=Op@o`wdGY6?nU^m7?9!)~GR+rpX1$kk-b)#~lL2PP*Xwa^u>b^#2no^+(J}P7a}%u;{ocz|`;jb|sDX%cytp zu}~Iq{nTwXvzK;pSvvzw&xCojT+f#gwrd@oq};TqsMs}KWF7@!myuhVPYb0h17TOB z_W_0%W8t{65Y0%D%t4%-qb(6+F%VD0yC$%3fc9PJVDqU)CUy7)fj9{>)ciFr$e!jA z{@Af>jGu+)nTW%<$Ya5>imF6E7Z!!Lu>lJDIlD5Tqike8 zaF!Vwr?KTkq|1a2t3AanQ}^KmAG3W-(=E9ruw0M28XE$+9g5ol3$<$3x}K0REp7f8 zYu789!=xKL%}Jl3-bgl9vM-c5H(YWsrLy~hzgwG*gBdwEzx-?y^mzwj7(;Ck8~gb{ z=EawOcKXxPnH^&|v;K=Y|HX{msq{1CME#8HNZ;}|3x8hK-{k!7_Vm{~Kdg7-at!NW z%2Qz(wvz9L%1ywdWCK64_mq(v~=Bl{gc5=OINl9D^Xs$Ig?;&}XOD`*u4t;p(bh4ZOQt^}7gXjqt+?Oen< zxW#hgS;9<-VLQLT`MFwc&N`;Nu!3fJ^i=$%+C2bZrw7*bO}v$b%2EN|Vl;5O9I ztwW4=^>}Bjnc+^4M{q^T?>HHJ<@R%=%{5t1Z6g(TD%jXZo+RY}vwvaHV{#4J&S#EP zG9A-na#35{<#swI&CidNt(7WLbq5nMm119B7O}6Lv{K$09I4v%!}m5)5-8G z_K2YkluAf)HZH_<>8D@aOE?I_d7o$nkv3o=rEss&AF)>)r7dHUspvIqlthe@4wKA8 z!sCAYKiTTVA3F-ZNSg1{5Sop`DJdn3oiwi_-}ysUeoQ8L6$@C#G#i$0=wqU`esPqT zG|A}7qCasYBaYl_TdvRTIEX9D$-FdNgeiC~#wVm}*e)l9QKxb)k&LqW!rw+-1s83h zB7aPm9yU{$-IF_nErWv-kVatn?^s-l&{4sZU3LA|Rq|gn^0i#n`WO7z3o42wrI_-j ztmVQy{%fVpdehkSY1J`4*c7*kx^NCdM%r zQHP7`;y)v(|DFO8Svuag@nDK3XjqF62)rB6A9PqR9ljv#13_ zNMSR!$%sv+V@PSJRET!al4)2eIOB=yh7nwsn5uO5ko*@EQ&~f+qD^Kne@btvf!0t2 zo6ukTMsh79m`2^a_4e1Y&3kgqdu~1tsiE_5 zX48pV3(NiQ{=uz3xHow7ES_y?x%t9pJNB#`&F(mo+i_%7@YK|^;CnTjt5$Zu}F)0yA8^UiR7UtebHrF(CFu!x`AXYUN> zwgxjeFI>Vj?G}`y1(m|iK)$K%GcoW(??0;jVeLcl$OG|6R_x1(eXE0Ef4KgoKp=Db%k-m8yLg>BpOdpfBJ zUi$OKJB_OzH!&6eiew2ULt*PeE<-tz*jo`(qH(Vtv^mg%!#b(UY>&l6Y|2MDbc2g|)MZ+y zA)Xo^Qi0Pj@w$xMwh`w%pu=-b^0JKsF3)1SD7LMZOLZ(d%y6+$-Y~@tqdfML#25=q zXe)Zk*;;#2vnFTaQc9%R(adQLrE?w%!)Z)fiB7W}X)v-T=dt&od1lJf4M_4w0KUWs zbj&&emF8(S1JSpLXBY;e?WZ!^Pu;6ucILzbxU!sVAo|r&0P`y{Taf0&hsT0zCXtpg zx0*3!YF#;tfHo1Fi-oa_=6|3^1q%Kx1xpCP-3RHK4IDLm)KLaoEZgKuxG}^qZfv&1 z${D1a-?RRTFH$Z46%vt3RO@MiH51B8%~ou}fdvvFByr)~~^ zwr%&F*q_Jm#BZL5zxLs_gAcYH%r~{?nu2#*;Fi7Ln%y**Z`_q@+_RF%1qbghW`kpy zS6|C^y_Ri!EfWf78^Tx%y8Y1Sf^$38e;~Md9(>8)_OO2MgZjOEsZ7QjRFx>K$Z&Xg zz$~t}4y?jZ)I@!I6TtswS^sh25Bm=z{P1|yNw4#xY6rrOvXPOFEw($GogxgA&M6O5 zK(dhhA_ZL(T%y250d)|0jslqi>Thz8fmyf*vg07e`fpk(iM?nPz)GpTD z(VnAc6db~TaxXf-lJ=K(1v9STs;kV6fkX=`UGB|yo#4gp&G+~ZyEX(~xBErM$|RT~ zelsV>_=QdA6P_DzwSk-ZP zKgE8m!BvOf-M9j5;ODOE?&$j-c4-avo^k+p0FQp}rS1=WaD!jlgd=6m0AOHMz|Y-5 z_G1kWdEI30G=y6>xJkt~gu4&9YpE&lb2oBt|9$7ZBk#xAtu>f)_}on^sk;L|1yH!W z_sadr4=%IIk^vWeiF^tk+BYBs$ue9h$7X)m7*jrj=cciYsF00i{|R(PGsc$jp!guW zsl^tG4Y8JsBjO3PN|z-r>9zK8v4f~3F6;srO|ef4R`iy^=Neonv$xPjDk7EUv=PIm zc=k&X%p({y-!iO&c4KE2ZG6Q_=+;P8qKj>vrN6c=rE=*kLjeJPQm&MUEZOO z!pe>~^~PtBTDIL(IZCTrD3AF5p)0cC`%a!V;=0CU3ArqSJx7cdVT1L;ViSlM_F!eJ znD=2@tRAfD)+_`a!?(h0>`CCU&zJT0+^?%_wJzvFQBAwVizqwuHW>LfprzcWDsC(=J(*?`+ zicvxE3F&5}WofW?oH#8fKK?;a91g!3olVaonlsotHSZLMPZAWhJRU(1lO*}Kj&3|< z>(YjYhEH{k0a#dIqqDOqrChd2GeM4J!H~PyCd}f;A575BxKLCfTCiM z0AR8)2cTR$$+jA;qm6M10U>znr&BZYTUi>05&#bO!?Y3ZN^zVmUB+I@WAguuDt6Qq zoXnmqC$R`SRdB}=*D;@uY)CX;FdApO*jZcznpI+>%NQUL)^=N7a zMr6u>ZE;(0qf)a;rt)@F$^RoVlm90Q4pO$9JF*>E_$B3w>4d~H*{ny}Z5iSkDmFWT zom1bOlO{=*ClCrA+PjxkxKPC|`9>^u+Nqy;^GIQ4S!0nob_kZg1PJetkoA8eSP~x9 zHT}urcNTA7TE3923*_noOK0=G=J#seskuG19Omm&mxlC56IowJ&eyRt1O?OUhYaN2 zpJ%IXaewTD1db^c6aV)-}%oS%&S+gJbo)y&J6b1%oT!?U^JS^hjzm&jBm zP+aAPTZeM>?GGy2GZpRm4V!WscCBp5Za8?eoMqI1cXy_-Uq9>mGnM_1Dtx#4zxnpk z+xfcPnY!IjvKzLMJH9FF-m}oz^lzwY$HMEf+N4HGq>yL z!(AsI>^hm?8MluIRSi+a?jc2yKq@0^x z%J`J?%SYAqH;=FZdlKZJ9mM(Bm`pMzcJk*NN)pkY!8TyD|2b@X;WxsglX7%U+2EW+ zdv*JG%a-oxfB%PyWs~h#4l@$pD_h-i^)1~Jn7|@_7@1NDInW{M&&k%3nu#WZv_bfI zB8~|s$3)D-1t*#dbUdr2*Wz&^SN2YOTx6PP9G-|t*t;7hA5?IS1jR*RDt>zIOe`@G zj-7e~yArVN94HebV2fHh?P85|mYR2Wi(DqM6!+S5oa(O0TjaN=1{UOmmM6 zf}nL=>=o5KEs0E}D-f$ub*OcSwfMXZN3DI;Smgh68dC*R98h`6f5FyN`I*w1Dl8f( zD$3SsRy7YTQPSGJYK(QXuNrk7?aM`7g>eUzeIjNJC_@LaT;KVaXj=pue*lO_>omF|y3BuoeGXvjpQLN0OFhnN%**xgm?rKt-5A^Up^mY}6&9JIQ9T zgCZM`qZ8>=3R{hl3Vf`U-?XYVCu-}$M-ia@c1@&E1-NV{XRu=y@;=(lBd<}Jr>QG_ zR^Typ-T4-4Ot9&G<(oZ>=ZyhNfew98FxHZ;*FgPRuMC91(4lZDMhi@5X+6GH@@RZ6 zol>w%>CL!hZ(CuTxe){QBT-l|!Z*M&&RSa6 z@tW9|y#@)!^wm^ItsKKR(%ETlYAp^LjZ|D)KF)Mm3kzRUKV3)dFbVz*>8mKJ8svuB zb#)cjj)oTok0G9jPw$C6cEgI6YcW3f(iUZCvqK4`)d_~(S&*g?QBg7WB=CDRB0RQ{ zzM3IHtD*_-Rw+h{^_2KFVU#ih1BE_AjEBUkepwFR2u@*%R6q(w;6B6G2;)g?1Ik!a z($YK{Ff%X=;Y)CoNq}W#iMS^5qw`Zrk#opWec#BSp0lwbO~U1HjrvCk`w?qBf{hh} zZj0zvp>ItvEg2LO;3Tjxy=E6(1J`^~`R^CYFGx2g60qNi%J(5nw7{zOI3#0{TqJQl zz7`uI_8|okk@1Z7Q;aE#3kxvdX%EHrQmo{0Rz9LQIxLN0+nN-wG<(tCXlN*=;^JXS zb(LYpj+TxJ;!Vr^9jqJJs3<%Nv$@%6FsAG<@lXutyUwW)jz# zI-3meDp+v2HXLWv1$DZXf-hge!DsHmSEbsj0RSPBf6^ zN7AzKi(-oJxLvdu4fJXfg=kf!8%?$$!ZU(nf?Y8YJvoF|6!$b}*)GFH4TlQoSDpZL z5|PPaJuQFy*B}1?pCm5P46I9$YZvrv0|c42>?+2Y2&`knCsqETHYG;~B^0~GfWaVU zAv8kp+AVm6)xgf3zw<3tbTE}T9eq=Z1bRCb;o5&1{6LQ{i5pI$(Ij;fQkhltnNz+U zTGmq^D$z8Xfp{5f2E36LpQIAj;>et6q!FF8HL@;M8%sadC|_w+leIJ$jZenXSWF*) z(bU#@qyR?nm^B6+B5HmOD!Sn$MTj^>J1Nne0+1F%46*zmo2>w)x4k1cmw+=Bjem}& zJ`9ADP`k~=sO6ITCjl7UrBkBmER~-i6^!jV% zXe^nMC#_V)9tJVKpTbUdjPUIJojUf;Ph17w-qP~tRp24*@4za9k%TR3IE^yl8SE&w z?@|IP9BdV#{d;N`{+^A>_K}FWD3R#WJ`&+ciA0z7krdNJDHAb4%#GW+P1?q2Pth<7 z24DHb7@>Ukx1DVD%Jp6)6RhneCxr63C)$7lqkj=rErSVVUKEF6oHwK<389q?WI@U3 z;DpA$1xhXRBL5&ZYxd#Zd_oO6noJt78rnwJPst$vGr4`3L zyLK&O>2JI@D)frpsCndh4yP0+LOYD5MspYepd{jkq7ig3ByT6;=~CXbn^~P2pR{k- z&X`I#6j3-Qh$a|~m=kEVq0-R!FLELiC&KjkOlF?y2>$ntXYjE=CY=F<7Zb%i^hR9y|x4akU9R zL6(ZG$$3ywtuZmh2jdJQD>1-kh@J$xusG0Ed!j6=5K$}r25ATg@|lV+W2R!D9g72} zrEYs!gSC!2o@phk8SYgvX{~|=LCJoulInrBouf@e$Z2 zV2&`6x^@@ggd7hlqUhev*T70fpt~qe1EoWtFcl>Xy(Jt!Yq@5uo}I_Io{DNu(n714 zil)eSqgR9;qav0EYXD-4DH1Ix6F#`Gb(mCdQbV+QQ=E>)C(T*?RA`AdQ}J!Au9~E4 zA}l{9nYA)nQnYhS^K@O0Mp84Xo^;tvW4@3l30)6Ue#7HEJwp#vG9ZxJJ!neMz~w(gH#gyuphry z+Wl$+fx%x_k~`RqC{N88Vi=yfXbN@-YB_3b7UBS1+(rJ_PQF&l6lcnMXmL+0-MGbB zJV`%XBVQ}8QAx1`eoFSD$9F*6e)~J_d^RMujz0NB^nVpotq_z&17#CQO?JQrg@G9-~B@ru!py$vM3|*XS%w=u+e(rTm~(Ow#&@ zRX`%Vle~dktU#+xf>%)Bl_@eP>dH|nGAU2es0HDK?dKDer6i_tErRjHQpLlWIz>TY z+`T#gViA+WDWRg6Q&$b>nFdh{eodMAki@K?xj(+-+;CkVU z7tU$J9pS)$YCR)OP{EWCY8Fj67z0POVnr3s=v@h!Oc8+ESAX!|eDJ^D`xA?TQZj=# zq7f;MY5z`?4N#neFL1!?`WuCo~?GaG74V8_7_f4ILyK`C)+KP_LTmQ zEQiCXnc!3`fmtx@GM1PQC^hKjFX_oOqvfp#K&38oVL2(C2J1-$cowi)vpnY#*8|tE zxU7RLjoi$<5BTpC+ws>aGU#868bGu`vPGFHo*vA_RWt%2Lcbw32(wcHQ_QRg1x(z5 z85Klw$ij?E8>B0|QO!}g9ndsaGqb$%8q+T*^R8$_Wo4MT-+I|Pcb~ellAD!O2))WH zutwTF)yn2|^b|D(tGJ!9N>8IzQ;%kmwxD-j9D;!ewE;HG)(j>PO7Si%NrBx@%ZmV^ zIvEhJ_|QsDU|~^9Po|g&Cz)=Zw2nI^-JB&dgjG1uUOG3e3N{!DCvU_j6(c6~Z`imj zs8aeLRt3Vy&WuG23U#<2RbN<}P%D)XXYn~hDaaYBa^-6kygs@JY37`n52Hq9n><0BrD#gxU&%$EBj2c@nj(B2$otJi=~D zzG1-+J>}E}d1(%Fhsd1CTXRZE!K1<26fwvP%u$D_>U(W+p`5UybtVB9M*EBBN5^dD zty7$dLJ4qkCM zVEKr>z6LMKp}3(L3hk<;6{xi>i>fy%gWje^&8?~5=~o(9rR!p0S-e9l5)m-RNME@f zcp^!R#>(hZNMkAloX-LMF@T|pXl4C5M(MgfVooIKKWR+nm||+CaUn`V4^rdsxh@MjE}z$nAG;u zmjfxnb~|SnU8*DnHA;D+3ncn8eTdMXvEE_VSjAzn?nq>E5%R`WdA#bDd_fZvml;6wxa|)E?Ium4ZrLjr3wu(PYs) zNJ}+2TVbR}y@o9iLcdWhDZ$74%gt%cZgWohT`Wq{f(J`Flfh4GC?Wwmj7DOXu#35| zT95OAyo=8q?JHsDJ(`Z$`$k|+VMi*lrhxdE z1twUZFj97h+rQr$=+ELFWkoSLK5TdV=49dTe3 zD6vvLj19QhItTb&4%$oye9DF8R2jwjgz>6)ClfC3)BdEqWlBeiCI^w%G*fU-BsR1q^@3@7?`+K>b=(AiB0hAXe%I<%8ix<8z#XPWa@DZT|vuE9SU@* zl$kFzvO=HXL%UI2pwuSFz-$?V7s<6w^M;hKP1ASHut^JWL@g~2(N1Nigse(jGc%14 zrpbLaHM37*sUYj`BHJDfsAok%XjSpSfH5Mls8%ecHi0)lw{R*@OO_fX5Chvssntc9 zMYE`>5Xy)xxuZ#cDyCHmVELPgqzEv20F+2oqbZY04%s zXOl${(nx}cM40X8F_TK1f~`unIK-l4B@7su$b+!IMgZhfmfT3!4!sMD$xF##yXF+QWmY3t%DBB#x$TZAMj8- zr7vVxO0Z|J229)6!vLd!6lhFjWrHTj-C+=_*2)naWB?O9uuq;rqASK7*OXt>C5|;m zC1g5Ed&~owYlJKv&}X&^)I4#6X#3$|oj@;VIg&CydVoV)qX*m7p)5!oCjM;2fT_I% z_2_3-8nYvRYIJM7HQHGhwJr6ee9T<}TH9k(HoYHXIJED@>aw*#G%ksi>O>cFUo;_y z)yCBOYy?qL3ZhEvF%gHKnYW5$mdP}BVrXzXT&{sfMb$MGODLm*B`fYn_U=AoWW6yS zAD2L9I!_S@mWDJpqA51;q)1q6_Fi7sC+NLgXA;$q^q7&)DvUv16$jb<6odtZt+D4t z%+69NQ#G{aH1JKDl42^!u68}FU}F6RyxR1TQJJCX zFbI{*$jbrjcNIFRdartqv}p$4Y=rx> z48_>cw2kCq!StH+VgMz$wlk!tdU|wa#wlNmX^mHsZ0uSAh&PWcHZ`{6Z#S&O&e{oetXB^=@&WxoZ?vg&q(UDR~_gdx+mCcgLZBz&in33x8m32}(?df{(Y9bbZP% z7WVT|1gkKZS;w-(f|8aTGz|GFKor+Rry!OU<~C{&jHGAr36bE)sWbg!Lzhm4hDJ^g zjSP*wim8P`1u8v1Js+)^i$r=Qkrf5JB}fd`rkN`e8(Gwc=()846>PCISPcVn_4z4v zJ8nadvH?oTS&;=TygvtsI0PR0l0JZJ| zL4u-NGop7qGd7tmkxp`2WcEx-pv*m&EPG{8I@4>wVXAD0Nqo^odXJt*Mfm#%?n84Ap0aMK|Mq6=ZLADN%ex;R!CeoVTT5okE z)*|!jpzkJ9;TRE@!j!f9(ll;}t%7ggDPS6&gaV3r%ht?kCqHZi&GkHECRhn(rvDDM zwSNybini%k)QXr)VRa(0$Fx%-mJ`4#C>yb!Yh!RLHB5j z^hORwCd}l><8{g5NR)O_Ix_dB`TZQ&A>czs7%t4O$RW^$@5fE!GcnX2SoUf{36^7E z>o2NKADQ*Vp5XqZC}C$Cb2PFe;u~)eL!rRL=(7QBQ_oC=r!0V~=FvV#fA|tNmQd>1 z*buD+JN%Y>o3?n;O5Q(lWZ%>wJ!c|k8vx-)IW#q8j>f7>i&gr>B&_@<7ew=Skm(f;`6w@ObhelwYt;b88A z=_gv;I}Pm-jn80bAH(XObyTx&#-=l=mFmf_Y5Z_^fp%rs6$->1Mmu9eoOnDhi~+Vn{|JZl6SPNQtpaG=LpJU3GGiN$Ze3hJ(=G23eDhH8DY$FG5) zdo4VL5T{Tdylb?nge`U~1N8xG<%})ZHno51fN>ZrNlSKp57dJ`U~XA_7PU*k>w0<{ z?LK3nPKE(|ah25&^O?>0Yn-FE_sG7(=6BGp<5&kr!d{V{UBs{VnR!LYiqlAB2O%G! zo{Z@jTCh~NFA0ab3d#b@S0TvhFnE}i@7MvLmQ8zGS;{9CQbYt=|5=mv*1;Gcl$x8E z#uDrSalH>#Yka9HuD@LqZg7B@1#lHcwlRx&oYdq@NSJnVo>5-qE75Eu)-~Z-TNbhH z)+*s!2Qo%edZ#NEnT*mm;~Q(^3}OtBtZg=E!J5u`!xP}|n9QT+Mv$;!(MnSELgQHG zZbz>ac45cvv_`UFh3ZgKEY6rXoHTU+hZ#x*mnFw9ZD2ZxEqqM0v0h23SePVftxKzq zIoGe!i61+v*b$k;!3APhHaANs3%D!@ zD=mdmkJ5DUVlrG43QDVXD}w}QTN|cKXdR_Uf>SZE9>QS_$5+=`s%er14q0V^qA}gf zTkLSkJT`_kahCFoXtm>F8e)5bOnxXDJsAd#;k!txTQ6fO7FcZ1 z)V)Vr4h6Fl7F;LAJ>43;>n=$s@5=H`b8jFaP-S&ybC6A8cG(qA=(RMIT3s5e%-zg5 zICEoC??J0I>8YWxWt0Yc4!eZWNqRNVg$`se>M+7cyxEnU3FGrP5W7S)Az9Hxd3quo z=)ojVeg=CDsn!J4;6}G#$JEK~Oi*ekHyZuyBprpVsYbt|Ue5aq36V;7Fts~wpj+b#W_D|rnL3Z3d-E;%7|>-ASPUe_ zO@=+eXO66wPWYU2OIh&BTWGPDh@prW53aWqv?yDYC$78iVtNCt!fb}QnK%r1SX<;c zfzL%v$xtDaqG}&`OJh?+1vKN*QgM2$7ho=!-WgDB>di0`7*Ihm_4Z}ytfnb?s1;-o zXXrT{_5~TIf>SKL5dBK4BKY)hVghDGaV&ukj;bH+GBWEEvr;4)76bTpimI0%J_NR7 z_0L$$;5JArLFHy3=}rTWZji5PJhoAKD2CDEVX~ppOTE%`XU>_)o26`A6kUVZZYY0j z&Nc=k%2d%-_7|z9^im!4?B5z|${D7a{B)4`m9iY4)mm{4(PyG*X=@U#9gSa&;v2SD zq{L#7&vAz~oejRYQ+$rg$s1Va-A>LS?gL`Z0qj+0qyX+fVsGF&(lW8^#K7Jg=OC~L zv{NA#h!ho|*NsP`<{yB-Koe_GhVHD=BWeZDU~^N`X8SA)rT=l{s8~4@OH9CtLX#X* z_=*>H_`q65tRCe^xsGWpiR+BG$u%|{j>8$KZcjU?z@R);r^Bc@vt0m&;&4pCDheYI z+spoqgiJGcv04(JBL!uT!_3Ynw`;(|5oTE{Ie30psrflfhLC8T;}lF)WXm_r)<7e( zLZc{@7pJtLB+lXqR!oP{hDt+<>P8|AUZOq?0@F@E%Iq>zTC9)KmZvHcY-sw;TUu6> z9VZHen8bn>dw%r%2u;_+mv@vT+MFA;F=^&a`&)}f5}}Oj8$sFUgRn?Q)H21a9V!}y z8u+boj)DecF}i4WI$JPI=w=&>XptX_9Cc{^9pgsL_GxgVR!6JN`jDg|OYRl~fd@Tw z)r+9e1kMnm21AgT3tbJr5l&9Z(YciTTfDyK5QJncE|!E<*BPI;a#f&Eru38e*AB!J zocRBu9Km}+#4###l%;pz=1g=VW$(tGPve7Rlh@`4SfgO@q7JC~xXEjc#go{4PnM#o zq!^tQp9gHC3^ox=V+NZpV+S8a5wWe?26NpelS%pi07M_VQ7JDjs8VHACj_iY9bNJs zJTH_bk_8v-xF`Qd+{#q3LOHg*fkRt%(G%n#$W&Fif`Up4JO~Qa)G66iCn+gc(c@}* z?4H6-2-jpPRIZ_ba9XHlPea(JHX4`f=!rj_ipKDjxddCa72tR-ZKSt#JR6#AM9aIA@+NxKL_sqJ&r`6Kg8dXchoG=Q zCkZvfPI?)n;7baKJQzAH6!qK6qkuFWla9-kpb8?4WT;FKR-F!qW3{Z>;aU|a*ep1z zmOS*A7pj-oUtaKK)H5%%WXxw?=*v9GnHM@Tc4uDb&Xhj$!p@BOd?a*c%x7MBCiA#6 zFC5L-oq6G0ru6y9Q-5>wtrxN$G3ODN${#tZR?9q&y{kfT@HsvEH3gqLg|g~zH}jZ{ zxTdRSN@EQuO*5rwHl%4@ZG747Xj&EQ!_V3CUmM@1s)UA}x6Wt%yK??r8DYb!Yp27% zJh)Q7GP%<9!;w`1xA*wZC+W<^S2M4@p1JsX?tF;7u?FWHLq134a@(pvzc%3|(dDST Oy?<4}PsxDw-~SsbGgbNk literal 0 HcmV?d00001 diff --git a/backend/utils/__pycache__/email_notification.cpython-311.pyc b/backend/utils/__pycache__/email_notification.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff4245abbe946db51c9310ab955be2699fd3555b GIT binary patch literal 7895 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 G@&5pGJmDPx literal 0 HcmV?d00001 diff --git a/backend/utils/__pycache__/maintenance_system.cpython-311.pyc b/backend/utils/__pycache__/maintenance_system.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f99944ab59ca9278c8b708a0865d088f59b0b9c GIT binary patch literal 41960 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 ^BO_W}g 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 literal 0 HcmV?d00001 diff --git a/backend/utils/__pycache__/multi_location_system.cpython-311.pyc b/backend/utils/__pycache__/multi_location_system.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e92d5402d42dd54ea256af139dfa8ef850174761 GIT binary patch literal 39879 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 quzmct!?cSWZ`t4;79xB6S@kJQj4**2 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 O$^Wwr$DlqiH}((gV`~Zk delta 327 zcmcb=mhtQ&M!w~|yj%=G;HGJv@yTH$pNJ0^8<5Kk#Gkt+=Xxsg7D<;dfmDFOWB~yU zX~smx6fj%{lvoXyWMoKToP5Dkj;Ts%a<;#ste&4HbI}^0wxYEl!UsgG0uf$7V)CZ| z<@!D#qk-Wo8v~c@2L@(VZ7^|{Tj>J>6Q}lF9_8yi8kcx9F7jwy;nBLlqjf_KNGg9| zhp7ZB{|M6f1+E)m4mQ@0A3uSY+_1E#xx+07{4k6aWAK diff --git a/backend/utils/__pycache__/realtime_dashboard.cpython-311.pyc b/backend/utils/__pycache__/realtime_dashboard.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d5a80b87c1d0ccebf539ac158838ce38b3da6774 GIT binary patch literal 54476 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