rBz ze71u08AaVzyGVrqMFrAetF-D9qBi15GJ>lRY4&_0pXltT9bKJIxYR6To;%JH-fdcA z>TOwL-MOLw0!y^eW+oVew_B9r#ik)2Mx-6pd2|%?Vg@Y6LJrisY)@=ZL1Q*m)OZbK z!p^KKF7{{EQ&+8URZw%5KyyYDv==S??FiS;_dhQw=Js{Er20q|nkD+9$?huFbmld| zidF?>#=vqFCy8EQQQ}+3eK;Xp4M&BXY7y1j&nL=jnbby3Hu=^+1KRoQYPaktD@a=GcdFB(I6Egl;WNE *k1TyTh?$Sdx9BnVlLTvRDBFVB$nXp{bcp{{?nT}}yr$5msPJziyrVcz#8 z|15gv6H=PoEiRs7AX@BA&>0RP%O{4gdW^J2CAYMB7I$8F%@3cN|65;>o!z`uKgT=$ zPl2OQ-~TWnVRXwJ$ej+ICH4j@#Zs9@kd1JV{{_`~hKAgy54Up(*QLyIntSsNH4yn$ z`)M-ELrdow^`brJ*8Jo=ixp0b9?Uw2cfC4V*Z9A zk7ym<{wokagyUvJ3j-QqL6p@aZY0@6%P0)@C6rIpy9VNfIQTqcRY5(lK(t;Q)`)V8 zi@|u@LJ(~W6NA9=9yRCt?`rDnaPfo(j-p|T#r5go`K$V=?fpI^gKI^NvDJHue#W5KqbkNOC!%*n zMi+lj2lOdO@0y`F#>(Dz-#OLlc3;f%-e>ZXw&{p3hVf|7JJ52`p4o6yVG^h8e)U56 zHT ABY2+m|@t&IN!In|M%-9zgQ^Yw^Ig^k^J$7Gg_;+T~2N zK$$NB=je~bwZVFow-KZ>+Dd XPHHQ9^^LzXjMO$@18A_jzzSo?>p3B5%({5uhS zvfGo!9P`#*5t&Rn_;EIeuOB>yFCTpZFHb&&tJxD+xJg qt7 z!Vui_#L!iJDpW>^Y1?PBe+w1I&qrt=3V`Tkzi1nHetZi42}0_{658c8!0UI=TrN`% zeG(mMs{)ty;wvlU`x Ktcp&@p>^=;;0V4rdjwxR_!tG#C-D04 z3EWOj(nOoI+YhkAux4atM#KCpoLLyL*4)<5!04bD8m5kNylQkN=i0Gmp>1t Vj37FclAk;=y&LJ>3Mp3#*FYLIX|Q-5E#Nt}IsagR0_nTc zbNJ;4e+zzl{tNi#_!D?HJ%Lpd*S%XM#*YhjSTDZ9upkJ}(euHm(RUj@(@xvQ$TaRw zc}f$U=y~c@mMs*pupd}y=*mvK9C+d1srX+!{5ERDGM4{YrDhbsuFK8^fMp7+`WRN( z@y{R1jtd1*7%)wQox+F$Bvm%l=_JCQge{9~H)n6l?J@#{7|Gn-JR09uW9*XTQegAq z$}AEjLK1R dSTxOf2Z__Mb5#3V5_D6N%;j2|=o-p*$^)9?Hv`1 UDlG$#jE;gxRB`Gufit7|06cv(D;Rd{@CBKf zZMaWygdwI-G);&m3k==VL#{H2#5>Mrv@vgHFlKTSYbHn{*=^)~k50NY9Xc*g9(T_{ z=6-W{2HkWD{p~d@mY2}?O9<;5n62aPT5+eHxX(enSDzQ;0L`fnK06tGTn3lZ{&`g- z>aV;22ltap5r%ae5aN&U cAy>39)_X4iaw*iM37^RT+9Zrk+bhFFt2tSoi+d3ua29qk1;*AQM_CY5 zKZ)tF^>S`ous`y^Q*_>W3qOq3BmYDho6HMHFx>|7O$5@XG319(|GJ5*2;tX9k5Dk& z!XaL8)OK+4@;0p~baWk{Yhza7Kv|I#4rFM{x%akj>D@C5qE}4zStGT)LCydDG1~o) zp22UPqTPS`4BkwS(*heW~5{1?1vTLXl6K!hRXum^cIK|Th7*?yMj!3H^OVvTZq z)Dc*~a#sw=7PO~zr++-7(}8IV(XVrbz+gdPbkx3>|EcU;0Epej-?>9+QB9V@o2*|; z{-A_5GK|mXs54L*N~M3*9u^U!4&3HRm4J{zx9qR?&viJ_DspBZO-RI}yP5}C^in6~ zF;d9egon6{Iii47*8w~{hi2yCv~A!N&4bsAZ(;uO5{_?r=sG-mKBo9{N;P)02`Ss6 zR;Ll>&o+4ML)!8jk4LB95|PKt!$bJxqYvS?&pw4OpP}|Yd M DYb zrH#I(BI_eizmuXpzV9}Q{`t!u2moEpS7a=6Ji}o#fINc1NQDjlWICh2?AP5Ud2NPa zeq(sJ6>x~gWXD!*nW*HacsmIr(F!!f%>@G`>B{J}59axX!I~!eTZGKXHQ47}h;H2+ zF6IC)AC53bH9cF!jYwXg5O@v8%LPntPylqOnI|FH=TR6A#N4vluxynWa`-SUYn@^7 z3L*XFw1po}j^Q_tKS1XH48DHw5j>wh!F!{zF)Z>nUmWB2Ixft-P*`uI#mVkZr^Kz) zcu^M5p SSJdUtQcw9$NGo^@02)wvM zqwS#VfdJqEt?@B{V8{Sa+i_Jbn@8?|oaH4Yb*bH5)~j&{Rr5kJ) jj# z?lWVzn#>cKdzARK;9Qy`@ABRV=^PI?C=g!F=kV2obNJ%%hw#;t&)|oHC-7?W5bKK* zm6rG{sQHnca<+9ShlIL=!=wU-Sum(X n$^&Zy5yc1GAeOtvCJXG@rOwZ zH`6(Mhc^G$4<4e;{~>(+=u>!g^fBCY^K?%iJ%ec?f|s_kmXpYWz$TDB7hyo_KH5Id zj@{fgPrH!ucuEi32+5XF1SrI?3@xKb)y$6cgZcv`V+k028T676j<&blgvH*idR!m7a(ixU!NWG1H6F~=aBEx?}kW5IKN38(LC2SeEVtk7mJEK*r=U@Qi zL_ZaBE@uWCXm4)r$||&e6Shi=e1wozK2BSewH@>`m-fVJ9GU}R4U=JjgX>#3yt#tu zYMuOmDK*&V#H8q~^8?>I-#>1A8doij`xd-8IEHT@K7-#P^#AhwL-_vW8N8c4fMq-% zHGjq}jlz0vuhrblEFw5nxGMNyNgIIiV0Kx$4LQxiK@z_VFV|&52y7IM5?NZ}l-(fX zXQDVnV_}2(RDgx5O_~0j5d!xDAQvk@%|V7;vO*6K0|jBFQnOTbvIn00TEsg#*izB} z>*zE2*}>*!TJJ7H{mhtNQHA_$@vUL7_*P5*z;`wAal=qdYO?&bW5#f4X~48Yai4cM z8scWCZi4Fn1Uxb>TrZ)!xQ0hBdU$w!l{OlQ`2piJBM_ff;ccKBo79ZBHQBA7CcnbV z`5Aoo;7LmH{rVv?|Lifm@kg+Tn`g!?xKX&|`drx`TZ$%F(etwK+Ykc8Y+@1EWGd}L zxzC0W*aFM#m{o8=V@~`CCP>WVZJFJXaASl9mIOtu=yS6GGfJoqWA3u-UH}wDnMHHD zZF1)pxNfrNKnBDP0KXfJY!?Cny;L-ptFPXEduOz_g{Pr7nMlJbI55qoAMI^7NF(I_ zu)ULxxV-OOymm~m9nz* CE3q0fhDbXn4dFkNgdCK8;l&_@IG9^s=tNBas?xz zfluC{NpL&BB(2C3#l!F}QUtTpb<4<;e;Bc=`yQpFV~!&K|;-r|0l3GXKlTF`5J} zt?CmO^vJmljUXf2OgpZHkmmk3mXPDVFM8gv9LLug?MeU2Xb@6R4Zb0g3qj4T+d>Ge zooneLo=f)E#6P37v33SpL8Xxh5`omt`!HZtoFy10aT`N2Jicx5kh-u<$1u{|s6KOR zYw|Cfg2$P^1(YPpP|a7IS=P=T{~~4uX1Xm^u5mLldSum{0;rIXGy4?8EhsOV2HL|D z7$1EA?J`3B4rbq9!Tj|N%wYwsTfyMga6M_^&Flc)oj-)jr%&L;@j3i(bPiw7(Edj> z@M=0wdl`-{ZwlH3jvCf*m;T5ae)_j$aE # zt_Wg-nh}oFUg0bhZ0|&4Ff(&RU<5{rWm`j0hnZL+-f)81;PNg!!H_L&E|8dtX5U4V zJUTuWc
zr|=x%{&SeXOW(l_ng)G?MnYQ8FE1F%{UUs#l8?F|J1I5tqR9cw+|rNK37c!{lcR40 z@de3fuv4){fMCCJ9tFYq5H^$t3kP9t=L*NL=9AKMh+H<~!)F9eJr6=3Wy-QX<91>6 z^Orpk08|pe^I(=*Wdl{3Qo~1OBd8LBRHXAi{&jm!cS%i!@Mp}qy+LxBJPE~;GXyjM zmx)(#Wo}EOa|0wa=D_4O d3*&P0{}EU_hup zy}W^dX2B(1`}SZ8uTPKQ^86glfXDEzo5BSOjf;?lNSsd)Q-T_BIyZp-R^I*sE3r)E z=PMA8N^*@JhGJy&F5IVTj|Ve;%-~iq*1ka*9%+vbSCG|?09ZV4TLroBOWaX(A(8T) z>iE0cQM!w=a{*v&r2M|=Ayu)Uou@1E28C&bUBy>`AvCA_CQy=VH{8UR)ab*UdRIx! zp__^Tpk=QG;;=0#kcS&c?Q$6b1>VRYX*!-)r_l|TLxHyq^qe0M@>1w=HK7R}YdeJa z9k}iQ8r1ez&mI6=tYLLK!n@w5MLn)hrf`F1z%?R ?tv6rAOMx4# zC(odWL&vBXv#RbwyW4z%%6G93W# 3T)!atA@cp^XT9-1aUa$IEDiGD<2vz1J5tTDeh&5={`mh3P9peI^T{W`4 z?&FL^6a;wxEByYQZ{cDxgZ6YDR~Ut54{+lfxawM1G+m1Cr}^+nkmcQaVx*vv1{Y6Y zj_NZ5^|9tOxN6I_{LCYb11D~6Ox3F8uQd^ZeRm~jEBZ-MR2IV9Vnp_2`orTQPFoP+ zCeLNzKi9BDXB2%URlkqEf4;JN0l>v-!fijRI2XpT(t4{9fJ|fqN&4W-!Vgdq+;(|P zm2Dg7`aII|JUv;$j+)kPgana0hoRCfLS|sHo5jv_L~mjWxS~n2x)IH7XQ9DcV8xY$ z;u?NK>(k_+CEE0_(WakHI~;tU?zKdYzaBjbiM-c9YF(f``bYqX%#nw=OM|IkV!>v$ zJYS!FmUL&sWM=rBiIwW*t~dv5U&CEdo|1O*n?-!(%0McZ?PEDXJw?r1gaHfejBqTH z(QEE~093des_`w)DZFjWv{q{>_^TzZrA3h;_U47UH&+uuWu`6 ;Ky8GUV_MFR-6?-hnSY14KV zbSy~ZcPD)-eQA(|jrQ1?ignoxL+(e}xd8a7^8Sue&MZF>ftj%otuF!V_tYvv+gx2~ zJqZ% bOh_mK94*^sPziU5W${p=BV{xYq2)kD2s5zsjqNk4uo!#pyE~9a zt*|$Kw@zI-S+8KSC`=gBB-7~kAVzcEme$nH!F?z@7XYO*#6jT%6b5$o46*;^Brv*L zfq_Qk$gx%~FHPiF&G6#-s_L~3PDyiPHke^Pr2$0;d`*J+1#@dXd8Zneb~TnrKpj>j zN=;XdI!Vg7612q*$a^2tezg*|y7}=NLMGPNAl<}m z5;woLa$qRb2 z=t1tq$Bb}gp |6l+PNn3{vLvNY|3LaB L-=C~1vV=w+9YX{dv(LM4FsA;P995Ez*hh(O=1V|O#BBiN=9 z`Ux7T*mA#JmOT&vVe_*QlEG4)+j34-Y-pYBe!I#mU(9y6k`j@dvjn$AFtAXtV1k_x z+yLtV=dTq&ww!9?%kk3yb;cWO8<(f<3QDq(1)3Y+LQ%I002XwvAVlw-2!ecAkxtrL zEEtWJ4tpqaW1PK@X|ZjCqw5$c1lulci*RxU3f27 iD7)XrTav2@p%o9u7i 7MThX?=J5SCP=H^i40n{Jt%FD#L>^A%P zuD0u~oE{cMus;%DzXX6K3Sls1G=X$LTA|ugpddVf0Q#O7H2=|y(gkG*P1{gO@eLs$ z(gt`j$dW#klA@WCm*O{?D`--Su6M^x4%&WW9>@X}%yNua9NXGTq%sMLnWEBup?WCR z_H5(FFx_Z9-A;2Ti#9?|LQ)NDh3`mAV79|H q~fMru`4{=?ZE+oQ+$5gH}64eL|8^O5G1K22az(>c?!p8EKJ48HF z2uTHw2Jrsv1&Y|(5S1^_XSwu;tweF>I+(2wD*a5u~;Mw?1r zZScIzCJ!>Gn >khKlg^X)bSMi#(&ZvaL!DyFvOPzYEX z&3Wl(Z=Q+GBVsOz#PG$zXx&l_*+aSRiuoN+?lI%S!@?=vRhx@v<} Cyqy6(?eB^Uy-YSmun1A+1u3^s~7Llhp}&$QgpzB3;0;9lR%7O*9p2n)0@#cHp1r z*{$Z4R?@>TVa0w>h|UD7FjrWBuH!@)xldq~rfrscOXpQ1;Peou_iilMS_wX1BMYgk z6!pSgmZ!Ebi_(C0W{nz@;bEh{MYx*Bls+-5HL>@e&ZfVbrfr{zg~W!yx3{$C?}-H1 zxd4z-bH| jIE`eaMf_b}l0#-$b zd|P4SQO~eQ=^8<9{aT-BF(xrxF@SVFzsV?X!K2&m!63v4gY8!+>@JU56%RsqnRcs8 zJ^M5pim9~41*wPpWt$07)=~DLo?{{f5Q=tK+2QOn8e1 H-+kEw0T8x+jHO`PNU+9jTfkCtj;b;s z7zl|Q*|z|OU>RPrhE*wV2D2J(*6;!-jT5YRh$IAzz!2xuHX^afuH@+lkT9pTH&!S6 zhq2&NrYW?MWqj_AiqXe9$^nKz#hC}%r*)rj8g6kPr-A@j5SIB5(tP$IP@9W>v~6YN z0(bQv{T`~O5|UDsP@^RKJh>GcQ^akkIrXubKe4SD8|b4(gSj2|2;l#BxdSi6!|cZi z7P=X2b+@3FDy%SJ8VXx}v%iaK+4$j(n^wQO>UmOnt}B_gyk3QXt!3jjchFj`i-b7~ z;ksqD#>%;-&8s3UC2WwkxQa3L>iXhRLl?5RLMrc7*zf5=VP(fcQ&XqZY}f)V?*b-j zqm|Dla&12tpUdtAK%qG6&S7b+6Jx+gRMu*nA! I}f8vvYMm;qv}C+(I} z_<96M1?_)L1Sos(uA<#j# @FCfD4^mPOfpxUFO*;UACR) zywmILvzg~FVO04bVp?r@@bo%fSFvo15iF#&H>Yz~g~mB|4NZaqD~OD=mV=v!q $q<;D}kTSF&8lNTTectnc}IGk(|+z*53hgKG;Uc zdzlKW_pxS|O-z#O%<~t5uzv2XW&@N?QPm!0Mdk!EWXj*vM a`19Q%HQ$ZV6LQ2Ar7P4+vQ06feK5j-BnEOn^l4xJ{M=%E&G*Tnd8d|Ws zx@wq37MaHgz0kQ?$QBZi?itDlwe}LX*T@HHu4$Z(u{KJ0-c+Yy#x0L#t}1*iLHn&p zEh=cm+3uFQh2BP OpNwR!J_-;FUH=&kJ2aoI+i1 2ZrZWUT8uMu*`~?Z9nNOmHSbA|{ QDYF9Pch(f@ zpEBBrq!07L$gCEK*$TR_+StaDwUq$on8*+7>{O(|OkJnr^77!OBQ`#7OidPe%x5Vh zmG!f5bEWT%@6A_;Of%O&S(JeZ*#+aaG=r1{kqU5@F!KE3?9+BuDuejhm16@&iGY$> zjS_+!b1ZkO2LR)fp}7i9Js(1^e4v)2Mk# x{vVZO~u?OcKYM#w2Rp)OH`Cc;Y+ed0M|UA3Y%*4uY C#~~$XL~5 zO(gp)&WOXnlWgferU~Mk4E1rA;Q2U5Vl>RBjJQ=OO3MwyZ+Ui0UkMQzc%U++p46;j zV3RcHKKI*$-&Jyt+ohvZab_;Soen^IKB#uw5ay~0^iZYx_ +X1<6pLkz z=Xg!o_m!Fml>T&0pc y+O>8GI!(ZDt=( zUl=sTzMG_l$L;2nO`k5_r7ws+Qa#>uOaNYDNx_pbP17?v=_cu4p{woP$*5r;%FYFV zvW)&spG*f8&a7Z0e65bm*Z7k3PU>|{kqz}FMOy?iY)7T#;MLkKH@K{G3$iTQZmX(d z>oq-Rg=WvG)oIB>n`ImG+kQ9b!t{q&=Rw;k8N_#VhuG`P92?CE)IBAmtAN&Hxt>kT z;i|q08)wwF+~R(7{ETLvMJTUP5tPr>#c4spi7MqlOjfOe6vCZ8pWT$53jj-GDrM=r z)9AFOvxe$CDwUR$mvQ`*=hZ^MGJiREdaWL1%^xbXqNfspSV2Y~9eLNqtIkz$yxPD7 zO{`H$*RUcJUqNch6_r*lOpw~oV3{zKOeh#5@PyooJq d4ISB=pLR_DSzw<&gX-`Av JA?*?1Nfuc+HpzK}%aH$D5l!ITM>y$}2 zz6_f-Fl*Bw+XCqg YhsY (u?lgU^gg z7ZkfXrP_kXXt+a^l#VPYk)QpofW)jdjAxQ_$?d|N42|uzxw6u$uAf UAtb!gZv MJ*!Ur)}V&zp}A+nQ CDG<94I*K>clmfT@I(?Uu3PCe{n3Y*fAd zCuV;7oFWM$X9wmR)@wwRY3ri8%4(q;ORGrssq9<;Y_2E+X3&Yj7;-x5XbWFCu1yT8 z9)3!U!5`WtZm41RsDVu}Tr-MODwZa?{3n=ru%@;0fLlTgMya|D3KWJ?)vdn~taU}@ zMpH{WH?Orn3SpZ%Tme^A*wxOgQWyl)>g2@KDoLXg*IMN#sK_}`XJ4+-3JdP1kghiz z=S(}CX%%biphKB &w_o>dQb&EfyMlv)o14!u;tE zL2$P@;U}1}6M=6kFPTj1GLqJu9{#`fzN|-*97)ee_sFBNs=8;ox98AmcO?P4kNU*| z1n9>spjSOefL6jng0$C6Pfyp88HdwEyNw=^)jP*_6qL^HsECYkr_)K=XP+IU`{pVu z4w>%Mzyk(Q^F-ldW@(rU>&;s8W++4Z9JS#RMg1(w^#S10j5!OztW-6|A+?mT3e0Y& zq5~LOW8m6`Bla7=m;5t8nxIJ$s97Nuww72zwvS7?l>`I>wI0wR%!#a_M;Lj27Wom{ zC#z?qNI#^$MZ2kd70er)AdHAs;=a?pMaVDuFLxr(|F)7|3~({uO>?JU1#|F>*Ggin zNQ$XWd(dY@A`%-b(avPKXlJLC;3~P}0nVx4leu7XMnJ=yqgfF}_j&9e{nnv wa8a2iBKE2fchap8dOOyCYE2geE|#jxll&pjfaB&AsFk$)|+d z*uKvf85%ceY*}fTfY89j>c*HydBv#JuwHdJ%ml= aU!z {+pa(^dl!mR)5K3l?>CMUt(4WkgHu?spNq;@()vyWbYseF^QV^N z>kNyFR0ZX|3DMgZdjzgCDe1SCrab?v0un0}N5M9EhIHqc#^DmSMf!CfFh~r;zO(2_ zGOdyc7&n|~#~BE#?Voz5x+YHmw64 z{NcN2Zp$mo02-|3oQEjLmvap~K!=-rCC1NNUPcB3#sDz-B(a*@Snux(A=9(&x?;IH z09;x$k&*N)ZL*~Eyz|!_&(0UdF!ev@O0Uw9*Og#sWIe|R(dK<}#2NE&R^rrdoL#ms z#Y=YPxrSc-ly9zt#y(Gfwfh 7w=UwDe}3g z-c^UFoV3wjw*mokG#Z0BugBg>8gpQOfmKzsQ=bD{V>i}g#hX{yCP%w*)AXL`5qm8~ zkLtWUo4%JtJLX0C#8E$fxjFz?$#Lbp4*>sG?1)iC4$o*9#7LO~3k5m@h%i?UONGSe zRNadON2nQ`Wq!zW(+?F$%$uBl`7|9|*D2So3Pi)V7tb$gg`4fH V!aKYFQF{(IkuFfu7+mZ_ZyTOpdvF9tKMc-EYkJ^e)a!F&Vke+GORMuFFeb`R z56_BV=$ql@R=PpX@SU#P5A9d> zYUMdBcMfB5eXG*DBb^iXooSN^={cDC{X@Q|;tv&x27>>7zM-i|akM{oc=77>3M)a4 z-$I=jNL1NCMuAl#5C|5K5QU^|t`at^dOsr 7&!XR4A2L=E$3f7uF+Nu09wKF%|fI52C#uW`n&hGX)<>~ s>^;yzDS-6HWK)oH)`lRkJ&Ep;iGf~ qb*f}+?t zaIOK@?uB3{;Lf|}CRY~z{KQ-NbHz$*0{eLuW5>9^j7OO$si2nxlxKS~dYgiE4SCsG z@iV8b?tjHV*7k`pNBzltA9|ksrz^%}iLW-t@;>aoi`tyh1u084w|A}i2LwiNXX9s5 zt_}c2AB8Qc5f?OlMr|7iD83NKjv7D7zedyM&Lk)mn4E$11x;qlYOCpb1(M^9$1Vg? zG#}M#XV}%spuuc%#ol+3j=SDCa+J9QXlJw+((wT((!>Z^S;#9q`Qv2EyV$0SMPvY@ zB{>Y}Au_Eajgo`l$Y@K9)0uFB-)Tv8q<_3=Q73vEavfpbWU%tf`#qW6kLjA0ZAszK z)`cIJ*6sTRfRzOa2K56uF4I#36&QI242vwnhvJMQ)BLQz%)fPk@m!-^9RSWt(omSR zeJJ!0mDNU_S&^HfBJcmr1aM35{k8Aoxj+)8q|`>?Fd;Lc5y86@wYXTEEnHeU@&i3k zBDtikLIon@7{Z+$aOt{dI??W@T$p?pR1(HrC&5bK2*WT91WFDu-I*8+#MlKJ?n1OZ>9d|K|-u?LUpj(@Uct)aPV&PAcU7q;GWskdGj2e;E5FvB^stez*x> zxBSEO=0_=42Y?*TvccofPDf)F0@rQ`V~A%x83qpTuerZH%-CQ3y#v9Aeh4LDP_&B% zcvhyc7VVNbk}ctf$6sno8=KgUihY9BK$FVpxPa{+L2%=Tpo1dHQP= z#ykUoQTXF-lNPmWCa^oJXywOPTM%RW#@T>Fn^S+Mlij3S-?uhppz9#QU;5yZ4}gaF zP$)E9$l=e&?fQh7`aE%Bius 4(wRwKuUs7fGJVU_({!f| zTpr}0+@tz0X@U^Kl2Jh`0bh63|C3vUuR0C*& aYj{elF$e0Fc9P`bE6C2UvuLlTv(AC2F3PnA*gw*ZYA}AJjLu z6MTJ-@biZT-*w^t_Nl?Xi~Lghs|p&k=NrR*mXIW<#xNVt>4;8@G^qxufS5349BrSJ zX+n)Qd{AN+ V?J9h6U*Ok!fZui%@bQFQ3oOhQ8k&X^C!vL#Y6h6>h)_B*e7|Z> zSqU^e^GPO7IjhIgbjE!E62JABIK3iEC5x3!PHW2ARKN>;?oBYU%CsAc3x(fjsxxGE zb>Auo+1WS_GC*F!c lsYDt97`Exq*jb;|VtpyY`&l1SGS0O|7x0(NZ7#^8Tg zh2BvL@XudYc)i=fPhQ`^FFsE2x4${U|Nj06fB)eK-**t$cQ#0LgQ#Fk z%t3%K=B<2L&V&e5urFlA`(OMTWWN~oIddp^oqBdLo3fc;Ha`Nby~<)dcAldX+JDlH zSh)~FpFkju!AQNVEhCQPh===eJRL6!x&f&zxXIcy_X`XZYFK@%bu_)MM_sUauN?Y_ zQZC4D*G ku@b5Z1{IfS*In1Zd0wja97POj#?YOL?kC(H>%m)&xo8O4r z;y^tnXI-;g9{^U=&c4jF$%`YYNqD>`HX83blW6#Nx22 004a QKsML8lp_|w4*))53yFw0aT7=!T_ z$aH%JChMCo32jWz+ls&lw$d0#Qcov;@X#s#tD6aa@%9#e`DTVcechGA9l$rY4Zi41 z;B|kWI{+-cB|$6;Hl!c=(z|bDdI4y1T&=QZ!6FWA*;0Wol$B;gSeejC_%o-~Q%4Zc ziKzoLQz-DJqkf+Z-}G~S*-e6XuP6A&hY9}I_XvOUTZI4nzQI5Cad~PB?Ar-Q=&%-_ z(2^y#LT^+@rA`9Vy++Fe1XK%ClUrsC=(ki#+LFreMF9xI`wm|7*kvw|)_G@U!}{0^ z2$^q(3XTZGg<_K*OE}6(WDFV{(D_w0X@1JMSK+Ken?B?kltijV6Vc^g`*+Aq^xvfo z918A&{bg4K-*k=tS6}bo-*&_Qm#-T;h+lPJsAcJOop=nI*pR8eQ{U&|Uw3Mb1{nx2 z08G$$!%=y)Z8@-%aQMVzGmTYUxeeBqD%5ZYqG{%VGU|3vTtqB=Q=0z1!&7Gj0Mly< z5mxx-zQDIn$i9L1{r&w@g~x6hJf2zygKi=$0LNx)&P!+;bt)N6JT4ShE)wqX=_d^< zYLb{X4AAl$_x4e8N<(t|k!doipvXB@iEe}?a|lq)1_;gN$wJBg25SQ59s?C5!=$X? z2BIN&q5hE~jnY0w&bplH33eT9XIQws)rAofO_y&ZB&%)K{;@26qs_yEMYQiq>PMSD z_WM-D^t I7g(G#(PeXkn(B~zQ0u-!wPc~ z(;tC!^}Br@au7e0P{7pz;C! #lP17>4;6$LS<@K=v?>+P{6q(Zs!*!~^`M z+k@ZS1AI7Dc;5y6-IKjqHwjw*z5~G#;i)6Qu}S<`v;^f8G^TYV^rtTT`wkc<0(lZ# z1u3JWp4(ncXj9gm#QM0d69GxL=Z~%O=S4+6i8!23!;;uYafM!7f^ksrYm;TY0Z42R zlKcORkb{eA5i9$yzu#5@)du% uST_pio^~bxp#gmwg z-A+}2CAvNL7me-14&e0-_VFd5pWtT?0AF{?f8RAd3x1us-e%*}f<2twa#{7`suUv) zLw^|=)B2T|;aNXkr(7KXBE(d6*5R2}!qxG< ?!ATOYekcRVc}Bo>bFFaVe)x2x*q zE&X)Sl;j2Nca2Z?FCS0DKsp=gb$&b*c )g%!wyzBmf^_X0Qj4SA6( r73jq>L0 YY1P85rk*( zGJQERfKg{TNPuBXwidxPU7x#s;vn3SpxsoSoFvTTuOaQeEH#7`gd(!`@5i0m!T@kQ zHJv<@40w~x%!Jk>+kW(-^PENKJ90h303MIPCdh9O2;X%U^6SF_@A`p{P1*qVtojRm z5jUSf(%x2@9ztuaK_DMFcpyp$2HhRee9E@``WE0XJH7t%hpuh=>!EAj-PDvyt8jxb zAi5^AC+fE*An90Bif3vH^{@Og5H$cWR#%zw*Dm~B@cWD2$>F!_zfmUW+<)Iq)D~ry z9NQNrQd;ndurea9pF4QW2Egdovq8|FGl!o&Yaku6nE+bMPS0VbWOXU)lFaPv+4X|4 zI?HTaS-=4x8(}2FEg^5-?MH+Y_!=bbGSMvbBW)ljB4riI-!&Xw?u49NbI3%RxIIl% zn!(V&1qei#3Ir%vAesVB>#U ;O=9$WPd6N%+?*_dLwj>d+SMH|mcT0P7JBZ@vLvS=|b%$0T)t`wnzgJR8 VEegl(LJakJyjK#|T9JyFtR4*<@z*aerwzY9MBz(c3` zKff>Vrw 2Q7FsD4>0sei_fo8^K(jbg?3L1t?mlEx!=Lv z?T#t9t>UyH$;=^-sr{5wz~ygD2~>GR){>XLOH3dD**iH2E)J~6#-2apYK(2(W$nM- z$KEfmJdkrmB$Vj0X<$FGD)DnD*9QRKjY2)kW_$YY9C7#Wd =fX9snNhc5rh; z+h{D(cDuelXjhXazyv@$Z|Dz)EN6fh`gv%68OCDxy_m3#<9rqY8O}6%J}R8B^-aMP zoj(B~0%9ncqbYV;lnIoyzIX$GRMyW~yKuxxF9)4{ZfT_x+f}7z&Y5KAdPQNR2@uNB z2h%oz9Geq)_de6obz?#f)7gb|XmOEA#M@F9%2J|@Dv6qkbCR^{T|L38I>D;~yk_C4 zzbJmPtR}87SnVs{!NT$p*3HzOSW#)acc;^;#d&Kr-erlxYZH9Y?f+MunNS3!PW>2K zPFrEvwYjXASys~dq6VA>1l~J?`I1Wj1?C }+a8f3pL%BKtTrSboICOfXR<0#~y_fviVhfwd39-TIx>!bV@w0rwqRO#q&k}0| z&QZy(oV85SP|;|oj%*5G)tsSjFHcAIw%>Q*dYDRoO>peTpSp_mr{O{g|E6hMv%lRx zvcByyZV^~gKfBD>0kTStPM{^T^9%w2o&LYtQLg>cZQjP4#IAAjhY1V? Gl1J!^COwRS9WarS_}}uUT;r6Xls?~07~nd zOvRoPQSH~F0Fq_7L_P`n{iab!@*g`4mr*Ya^`&t;LnW!BsZv0T|LgA7HfQPgWqU4w zl{Kvz^+9aRo;vJV1YM7seHTk!`Ims>I5dI45OQ+u9@YCKGm7m$IrlqjO>R?eOL7$f z4A)T*K#d=FVVk?uJ#?G ~-XP@9m1yy&Oc2^Kt@ z=F`&YR>^bKf5Y`qCuf{%{`G8tm;$AwstXR2)3l-_9Qhfrek|C~);!5d?OkP4989xa z9D+-*;7*X>!51e42=2DHOK@lL;O_1a+})kvE&+nO%L0qMJazxZosTnJHB~(yrsbT| z`AwGUm5>z7NNlAd?;xbr){q7}KcA&9z?^U831<4wGY0wIk`6uv(F19Gx66r!snkrC zJgUFP!uX#ZK4Sa6hdh;QzW)>ikUP)ldiv2#|E)CrnV3K{=A2~jK>hwV*Cp*kg%dal zxA{rma|A;Y_wrdWj<=&{B~X_mLfpCDkT6it*Q&t1OHCdB(R0zD_|Y~Gd5F8e#z~Ef zA>2B-9ImGx0V%Ha0a|2C?d-Jmz^R|2rc?zH++n+=X#*FA@3e5TU=!2qzwr{ij5y}u zWF^|DsCZf<`D VvRy(&e-~xp8fQCF)w k=WJNvP!8@Z_0DXnj?r&lh#aCP%aU{0AUjN z$3T?Tl*8~7 nUsb@K3BvK$qhx+^MqAP2r>4xOQwLu~ANmgPi#8s%98f`*= zX5y08#9n-inKeT2-)@!4Wpm=EX$5y)m}(&JEG&(-XeraFrXVl2 0#1_pO0o!kiGqF{JS>d+erAJWZZ`=C@{u=NI=eX zeLpCmPXs*z)dewT0UW?CXK Dk zQ#{`e8hTY3)8lOD&K15@9J$ggN0TL%DC&7+ 7NV58+C(>|+a6w-Xa@xzru(1GnpJ=hXlYS%EE@$) zopBx@p8C5`D<%-Hco3pt?iJP?RjNd0Z?(y0H2q2>2{n3ul!Np~-!T+aLvy%x0q~jz zs`sPfzZ^0c-@Dr0b`01}atj2?Guvr@5DKjuympgZe#Z{?rJBxubU&46t>x5gj=(Bq zitVzmI!nb}cgIQ7TRDpF%%`jRCC-kcvsAbE4YUuiMc_sIRl+Q(95`P*bLz#T{OubD z_sxVMyKRP9GM%NYcDClC2RCs!M5pSK4zy2Evdi(AUZt44hIto}kxfYgM-j@@BhKj- zC;p>2fpiZf{}tMd`>Seg!6KFhD(G1ZzUgx2H1>PE4gTYOrQJ_GR^mO)13brWJUNkK z^!1> XIp9MbBs2z*#xyhl1wX3B$cuYM&_v+V;Ke4X7uMR;N zumEyPzAJ1GINS~6+ziZyzF3 &(^4*hm@#`)Y9%p)AZ^`XU zGVZ>#kzNk6oK=TTqrd?DWl#XTI%DB$T(;_EGWl$8(QMIwij;UG@>{JGybI7?2+XS+ z-9ZzI23p(*CX472h<5_9!3HJ9f&E+X3JTJ^WYHZG-szu43Wn*I?;!kQQ)++A0e~iF zf*uW7J~x}X$KWWjy0gDC9LSMB1?56hL_eh!XwX?)<7M!$@~N8MvNm)za9d)}(S-Bx zT!rWbP%5 5UTHA(@}w 2HLj2BOP9=Bi8qrcdMQToG3R8(^!gS651ORA3*R{KuiGfW4I=iJXyMR?e} z(S)=w-E~3Tz`ob3X@3y_Xyc4mG~B-tf+OC8j}VI!p-?Iw1g>KhOMCtk5GN&Up}No@ z95(|gZ@!#}txz($w5<(C&t4Fe!!xJQ67PTT^6XQ{Hgf$sD2xUij3my58P;ydvkV|+ zVx&|RS?xr L1Ag5?iLqUm`BN&oe?OS?ZkAVXQ7OI}ISU~S&qnp~agPhMJ2 zHnaG1?dZVC@f+fVE%l#{+uUE)uXnSs877*i%6RCp&GUeOOO{3{e~q*l;{`(tTq8kJK0c~IOduqA3(0gc)O?c_XLcSDdh^hJe z)wOTdLuEY^tQ!gApp34tSnT{=u%s@c&I)SeTArOr=jZ-2A(jvMviBKbt-JUUi^Z09 zH35sJ*q)bcFBSBW=M#})W-&p341m)U-P+`AVtZc6UK93FKivAu!iq1l)tK#}Lw)a^ zg{{Gebl3z?_d)H8wcbRKE@^!}8g*-lh^Mqn#pqGBe|Xtc9nT%~BcN`$PO`h0|C$gT z)*fWG+TDU>&ej4iAwFtcc$e(lWq>)?rOGwg$Oj zv4PMec3*^gbaaR5)hT<%{hZQDTHldp;+yR+_Yp8Ue*^sNi)CFi_tw4B*K^Vtn(TdV zLrqz>!@-uH)PCHk@6bKGE( j5Xvtvp?_`dpThW2Soc=DGXtqIDN~H z$eZBYc<`{)DC1^l;72T=VmFPKS_eyR+J;im7am{I5`x;gW51XrXT_%KFR-4PK)#R= z{W}y%xWl`I+j%oiI)M}MohB|Pn~sit;0#v8f7`GyzVWvHWZ2BA*K!Ax{xyJzBfwkm zdM%4w7aTb4%MPPH9grGn_I0dPP>2+{qXs?8!i _UrO8e3wmL!C*(^J|2@h%uv4^ehn`3*rKt@tc4(L-r+- zL(3#=-d?!l?VtYdbC6zuOv=jj$ib#_(XV7JHI&WCb5Tw|!D1$oHaK9c(2(;)jL({@ z43(C7 A;;Wi2%*u`z4rXV zBy536tti+Q;l$A8K)Gh~ccIeatqt%0_5735o<&a9)G5DoYP<$` c1zC8{$h1Z*VAt?#ehnyZUZaXdYz}O?|J#TYZ)8Z_fCeOjwk@}PUoD7WGqW{L6 zTWRwnO_frWC(L$w5e|f%!*219isEA>Pn)crbhG7z3_UThv(JOFPm^hx_@4b)L$}`D zvwVr%mS5$BcRrW7t?*u3&D~$`(1W&nEz3Bw8Rs`heNZbjSVPt>CC0L3NOr3h&)lBq z Bf_t`;NThR4jaVA0CFdf*hE7x&bS@FDdnK=9 zqJ#AAr|^Y332QV{^o7DTgEHr7%|Ct?GKz14Nv&ZGLcUA#&fE8=s}L~FoD`PTt$ q%z0{K=Uv@f(5zJWlhzQ)|@sjrE7P>_E (`WE_9yU3 nSbo zI{3x2%b0pLbpM9Q#B}0jmIr{TQf)!%Lv|81!L)hjvSLE&YL8qRth;*$6{D6$>ccPN z5WF=mdjP0tw<-jyP+|?|;+mQol~sf)78ttk;8Hmflz=(_e=BS8>%fM|O2EK)aevVD z43xl$QaC)=di_}ey<{FMu@sT9b<9R;71Xe@Y{QOz@HH=>dv-A2JAkjn&Cdcj;-f}g zGKLk&e&lz)hU`MH6FV}>UrvsGdF%Q}HVWPJ|2N;4W;TrO`$;JKB9E1f+YrXO);AkI zOz6CU*kML5+! PP3hiBXsPsLkX6poG`K12OD9E7Y6#mw4ez?R9BA>@~*+0k?jY`YidV2M0Q+ z%!$$it)JM6CE1cTD5ZFenvg7U7Ak(KtcNh?qgWWJRfYDCqQ3KE`r=%3u|0KJZE}Rg z#4rp(m^etS@4M32lVwtaHeb;*8=sMmQp|*oMTn%m-U_=cnV)yciyBF
) zq@SeM5>?T+W7e3CAhk0iU_m=SQ<21@ZYYH;O%ya;lY8XzO~7_eq5P}Im7!YYrW*(L zses+LByJ=IflZvfl9XKlmp;o^!5d5l%O+mla6Wn^Sd35}l3+69e)Li7S}9fg6quF_ z6k%VfUfh tIs^!dAa6jy9^X#n9AU2Xy!e`M>srH=u=DppW zdgFUd#m_ZSh9tWMvAKfdR5ilkz;e!<*aL_uS=|Ai5#WLE2yRP~1cjRowqa64#Ug*p zz`3{xascpEXO8mrZHF|RrhrB!deG?fDn?!2C|xnva(}kb8*2ABl>BI|bR~G3%Sn;D z33f4hyN*ehoCGcM99m18ni^Ql35Tri|5yTh9-%%o!<>&(0woc-_~|fbF(cQTAmzn1 zlR(lbnT>EH5PbZ1MGnCF>g~!C`GHwaZx*0z=b^Hy%Mz>aOvSaH8&B$38WYc>$bfzC zNKa)Ur$;ZkAOtIS@?b&`Zt;Ws8}32}v{<1$4MmV|X6{(eru gJbxW?# z*I2*lKOyTIVivgFE>SF-41wQNni&g_w;G|JzWJHml^K4As_~W=v3YiNHU&dnl%Kx5 zQ<|NF`sZMW11+cV&!iJwP{oFzN1SVOF6l|MY6}%FnF%2$#1c}p_I5ao+Z)YKia39? ziSx#mBN|2bhX?~$w((dOb+!kLccP*V2H3+SNlV9_F(_GcfyNjs)yD^nA(gdKVnbLrHnO8T>l3`ZiF$H*`-7 z$Iin4a{|{|wmyfuE@4;=VNo8r e)U@qr zxy791gGaDoofijkYg33r!+F{X%O|Jb;7ChWS6Opy{>pnnS8=l-8S`gB$A2hEuKr`~ zJFdl+M(^9)tRZp?GfO2+P!WMg$m3x9E(6;%Mas57cU?S%PKVs*p!DRiyUf41_NWrY z9wp8O8h&xOrHE3&6PS}NEE1y-!%sFR$~r5C1#4Y`N (? zc29}3{F<7(U#Qw4sXJr5e~{^to3Xs?)R06-KQokJlu15i+5D?IgJeAc<0igjJ80w8 z`|&@}70@Y;%l@rOcDZl(g#800GkH)euyMwR_esx%w)b{mt g~91{c@MYsi!3w~(l~9Y5b8_1vJOTc?s=Ur>68wb(YQ7J`W? z_7l7)y4n>bbJ-Z-!a1j(=tnON*p=KdmWiGu7)js0BN z;$zc7S#Q<3oxaPTkL^hgO=VkZ@AWIttjscfQH6h=SazrKzA#07ZtuWq4k`Dk1S|nX zu>%Q9X+8_SssQZrq|pIt@M`LlIssw9tK^wvLHvZ{D*d|5wBR71%G64JKajsx?j-ck z5_Y_d&j-QN!7O7pZG%$ZC|ZOK1;t#WMvi9-=8(hO785C3&d#lLbwJ^C07fKg=L6$B z%IGc|MbEcFBS4K_fOGq$`V3KYE$h!Gmx(2Ww|CKaGng}mv(C=WJ!F8#D8bY_`~K%Q z>)A!)g;I{@0(NSZ2?~1n%_U_j198#ZHV@dYb%D=1CYT)oZqfg~&1xpVQyklK`z^DN zx(ai&3%Y)%{#33VEuK(V#roU~Y4$!3-JEs>d9@U=tndQ_vm8RDQz0c~a6R(t6Ob(T z>@lvhH;UHB|MJrwJndE& +^{tL?LCOU3$arRFC{cL{FJWv|2LIbG71N)S0=78%->!E|`T z@d|zV$%Bg}((pjk62-^;zES9nJYCBuqTBDBQXv|UqnA#<&ge(bL0iIfgHR$3TVK$! z7;o5_bzZ%sTZf0IpbOy8)sNsAA;Rv6RpHb2uE<>~D(DWHK8SC>Zbrw$m6tBH-y=^c z-Yoz@K`58)D$G6qFustQ;vTN|u##KQo#0fLrjjV?im#rJ8CI0#Q&@#E-Y$2R_wW`v zEKWX$u;I7NiOPEy_vJ>n>* d?xo_Ml+b4iGY zzb=DFyXVqZI7l%bpo+W96&l~AnP{r%2fZSU7HV`uqGU>6C> _&XwxQ=e<`8CKs aN+zP+x!6&kp^AEWjTc8Hi{oWLvM6RB2NA`9IK2zBM3+*LC} zQd#2Y7^ONZTkN(GmKoS`Gm-}JCSw_02jR;QIegDydCe3TKSYkVbut LON4^3=u;6Rxa23qv1>du@YQ+zM)N-K*goQ7h zS3^Zy+riDmOP99Tih{TNF(e%I8#m|i_ct2zRfF puORsFSLxx264fVaJM<#K9CSORmNB?Vj}QZDPlZ? SsG_)`Ab tF zN#Qr=zt##Q`Bw`k(%H(W_wc8`yj>rPve_*F8gAP;D_ +K4OxN!drW0GGAjI+X=%v zvs9fkJZ?A+MGT}_bJG`DtrYWg^A)Qa-}J?omEPn0S+%U@W1PUu!}w9x$TBbpD;N A#uHtT`RzyT s!Saa|<-=Y-K{Pbw2;c5P--Y;@LMfhZ zlnuV^FBf{Hn#*s;{eM*B(WxX1VA00gqtWV3=a^qT9f`Qx5rOf6c#g C&VKvR z`ua(R{lVJPiSNZ`mX+7$l=rE-$KREzQw`R4Xg=mew|VKA>suZsWSF&n6S7o|Nxt^d z1=;E195Y5*F)b6QL*@SjYQiMJJnXm5*oY8d`6-mG$3W)f@LG!P4D#tcK~7J5KA*?F znI < z@q>POOQLnFa@j;W^0}DUyiId}Z1t GFaj0+a6Y 8@BN; 8M{A3NyT+4}kYxocbJ1zN5j C)(;pc|*7mEJ>&N0*i&J@y63_tm|c1DZ%FfJmR#M1+n_ zD7J?aKoJ)pfAUp9P&9JX9z%?s;6sbXFUIzHV=_;2W!%IqFYJo^Nf|G~kTdz74;kVi z5ly%_lH35oFX9(!qP@+6vhn~_+p F^^MG7BvC-yal zcFQ&wt@mSk(E#h-1$gV9nTUOGMe?89$|(8rVib^g1%+JC-jsgOl-Ojo6-~dbomot2 z2sZ3E@@ES-^ 3$h3O zJe4X)n!Fg??Xx8P)a7
_w$MrB?9J$ek^Sb|Eyv~yR9$5{Xu9OYqARUeKEN=|#I|vkiyuh# z{X1&_^}RHHyF8zlUt8at*xY=DbbA0N?vD182~QCLm%!J9O*Xhg9 v~sdX{H(F>`*@g=scswBKr5JO9sV^c}W@8b}(SFLj#W?tx`k} zne(02)}Vaji@$LBc=z}2Y2Yf2nw)Hmv3rl>^U-EO1?$xmLr&K&uz>yWt wh_ETnQu%(h$jua<2Yw^YUTIXv2TTNmL0YYr3tcucU #*>Qo1bFyt1ms!Z}CE9^THS76;+NlkkVr+_f|l^0@-4B!NV9`(!cL@ z2&C2jGbQdgq4H4(Ps}XzVCie%w2%ahSeVhuI$li))pEAUb1RWj)|l?1nM%T5D)4(N zJ{+ &DCT=6u!g zapFPs(Z7Gct$xDa&u#Tl`ZJIfPI2ce<%{QVQKik^AfBE{GFgjrFUAuA>(VVuCTGR_ zE<%z^&pom2LoEzNn#O~SS!+_|v!B8E458E_rjD@Rt|KiX*qpqnE{Q;k>gSEYKpa$j zPZ|M?pV49;(49nJ;N3h#u6H5b>Pgn4{%&=Wgbw)6SeFN|Jf^PiumS)v>3H;-!h!$0 gE9L(W-<|M=)U|osdmOJm4|rcPl0PJ>#6SW61A(VAH~;_u diff --git a/main.py b/main.py index c50bddd..07d2d16 100644 --- a/main.py +++ b/main.py @@ -1,23 +1,22 @@ import fnmatch -import glob import os import shutil import sys from os.path import isdir, join -from pathlib import Path from PIL import Image -from pynput.keyboard import Key, Listener from PyQt5 import QtCore, QtGui, QtWidgets, uic from PyQt5.QtGui import QCursor from PyQt5.QtWidgets import * -mode = "folder" # or "folder" -#os.chdir(sys._MEIPASS) + +bundle_dir = getattr( + sys, '_MEIPASS', os.path.abspath(os.path.dirname(__file__))) + def restart_program(): python = sys.executable - os.execl(python, python, * sys.argv) + os.execl(python, python, *sys.argv) def include_patterns(*patterns): @@ -39,9 +38,9 @@ def ignore_list(path, files): for fileName in files: fullFileName = os.path.join(os.path.normpath(path), fileName) if (not os.path.isdir(fullFileName) - and not fileName.endswith('jpg') - and not fileName.endswith('jpeg') - and not fileName.endswith('png') + and not fileName.endswith('jpg') + and not fileName.endswith('jpeg') + and not fileName.endswith('png') and not fileName.endswith('mp4')): filesToIgnore.append(fileName) return filesToIgnore @@ -50,7 +49,8 @@ def ignore_list(path, files): class MyGUI(QMainWindow): def __init__(self): super(MyGUI, self).__init__() - uic.loadUi("comepress.ui", self) + uic.loadUi(os.path.abspath( + os.path.join(bundle_dir, "res/comepress.ui")), self) # Remove Titlebar and background self.setWindowFlags(QtCore.Qt.FramelessWindowHint) @@ -59,6 +59,7 @@ def __init__(self): border: none; color: white; }""") + self.setWindowIcon(QtGui.QIcon("res/inbox_tray_3d.ico")) # BUTTONS self.pushButton.clicked.connect(self.browse) @@ -99,6 +100,8 @@ def checked(self): def browse(self): folder_path = QtWidgets.QFileDialog.getExistingDirectory( self, "Select a Folder") + if folder_path == '': + return self.comepress_folder(folder_path) alert_dialog = QMessageBox.information( self, "All good!", "Successfully comepressed all files/folders") @@ -143,7 +146,7 @@ def comepress_folder(self, folder_path): folder_path + "_COMEPRESS") # Backup folder print(f"backup: {self.backup}") - if self.backup == True: + if self.backup: shutil.copytree(folder_path, backup_destination, ignore=include_patterns("*.png", "*.jpg", "*.jpeg")) @@ -155,14 +158,14 @@ def comepress_folder(self, folder_path): # Convert to WebP try: img = Image.open(root + "/" + file) + img.save(root + "/" + file.rsplit(".", 1) + [0] + ".webp", "webp") + # Remove original file + os.remove(root + "/" + file) except: alert_dialog = QMessageBox.information( self, "Error!", "Please check if " + root + "/" + file + " is not corrupt") return - img = img.save(root + "/" + file.rsplit(".", 1) - [0] + ".webp", "webp") - # Remove original file - os.remove(root + "/" + file) def comepress_file(self, file_path): # GET DETAILS @@ -176,17 +179,18 @@ def comepress_file(self, file_path): # CONVERT try: img = Image.open(parent_folder + "/" + file_name) + img.save(parent_folder + "/" + + file_name.rsplit(".", 1)[0] + ".webp", "webp") + os.remove(parent_folder + "/" + file_name) except: alert_dialog = QMessageBox.information( self, "Error!", "Please check if " + parent_folder + "/" + file_name + " is not corrupt") return - img = img.save(parent_folder + "/" + file_name.rsplit(".", 1) - [0] + ".webp", "webp") - os.remove(parent_folder + "/" + file_name) def main(): app = QApplication([]) + app.setWindowIcon(QtGui.QIcon("res/inbox_tray_3d.ico")) window = MyGUI() app.exec() diff --git a/main.spec b/main.spec index 996561f..b991f83 100644 --- a/main.spec +++ b/main.spec @@ -5,10 +5,10 @@ block_cipher = None a = Analysis( - ['comepress_pyinstaller.py'], + ['main.py'], pathex=[], binaries=[], - datas=[("comepress.ui", "."), ("unchecked.svg", "."), ("logo.png", "."), ("loading.svg", "."), ("folder.png", "."), ("checked.svg", "."), ("logo.ico", ".")], + datas=[('./res/*', 'res')], hiddenimports=[], hookspath=[], hooksconfig={}, @@ -28,18 +28,18 @@ exe = EXE( a.zipfiles, a.datas, [], - name='comepress', + name='main', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, - console=True, + console=False, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, - icon='logo.ico', + icon='res/inbox_tray_3d.ico', ) diff --git a/checked.svg b/res/checked.svg similarity index 100% rename from checked.svg rename to res/checked.svg diff --git a/comepress.ui b/res/comepress.ui similarity index 95% rename from comepress.ui rename to res/comepress.ui index 225f68e..8334101 100644 --- a/comepress.ui +++ b/res/comepress.ui @@ -1,6 +1,6 @@ - MainWindow +Comepress @@ -70,7 +70,7 @@ border: 2px solid #323134; - border-image: url(folder.png) 0 0 0 0 stretch stretch; +border-image: url(res/folder.png) 0 0 0 0 stretch stretch; false @@ -164,7 +164,7 @@ color: #ecedec;1 - <html><head/><body><p align="center">Copyright © 2022 <span style=" font-weight:600;">ComePress</span> <br/> Made by <span style=" font-weight:600;">Nayam Amarshe</span> with ⌨ and 🖱</p></body></html> +<html><head/><body><p align="center">Copyright © 2022 <span style=" font-weight:600;">Comepress</span> <br/> Made by <span style=" font-weight:600;">Nayam Amarshe</span> with ⌨ and 🖱</p></body></html> @@ -195,11 +195,11 @@ QCheckBox::indicator { } QCheckBox::indicator:checked { - image: url("checked.svg") + image: url("res/checked.svg") } QCheckBox::indicator:unchecked { - image: url("unchecked.svg") + image: url("res/unchecked.svg") } @@ -229,7 +229,7 @@ QCheckBox::indicator:unchecked { border: none; border-radius: none; background: none; -border-image: url(logo.png); +border-image: url(res/logo.png);diff --git a/folder.png b/res/folder.png similarity index 100% rename from folder.png rename to res/folder.png diff --git a/res/inbox_tray_3d.ico b/res/inbox_tray_3d.ico new file mode 100644 index 0000000000000000000000000000000000000000..407299596dae512f5c6801383fcc528db09a1c04 GIT binary patch literal 4286 zcmd6oZA?^G8pltw{ZM0?HfgdUZJ?&DWn}={(h)1gwySNoy0Nv%*7%{XX+PLDX{6a? zYei&meW5DgAPbc@7nOJ9MHq$wVFnyvUhmB1-nn<)?l8 nPeUe{k%HwThIE-{1Fz z17*Z|u7?bi)~_*XTc5gC)sZ@Jwmo%R+m>o7Z%G|G-k92_sY$zhxGJry=q#!#tw&Rx zHgL2yZM6JS>ST4-GELQXKQ-NSWewA)Bclx+D;lmpT2370U8MbZ^;Sd0g??*ouix3w zFWKw*Bx_BNWY)Gz`eXG{@8N2xtFSWEiRvz@3ibc9RvIb0C|Mh?NbJQS$=x(4x&J*V zxlnAg!7u8}{Xw&HYp{Eq_^hs^G1QfwAwQldPiZZ!wvT8pfwOS{*d{%=&+EWZ+XvSw z+Mw^qkAU7mccLCfD_g)+-43Rj4wydQ2Yjyy#P%`ZFAdA$@F{eRf^^jea}JMvmiMO2 z&WK6*wI{U%mDBP=b&T>E 4cFmquDTnz)rZ-w5{I+$$JfzRxOkb{F+Cl4Xp41~-s zkc S#KdmL_ zPMuMAoo!rj^j!u2gad+;j3P4w0rVVnpjTFepxpt2Q4c)IZ*yRu0CU(MvaldcVlGfY z`kZn@#LmNY-oFr8h2K%vMA~Z4t8K%kg%ImOZ$ezutD+Ek4osWDUi}$N9?gS^qxmqd z{T%plBhay*=Y{?bb6%MDhZb(mMb$UM(WL%O14G2vuUCsU7xD#M5B*>qL7N2v)=5R! z_H>njtvCx@CE38B%thH?X*!1E(-5#s;S*(>#(l#2h{qK51{M~6x~WDb 1`gRvHG?s*8ag*IPX+cO6*yZ?LkQPO z@MH5gR`hQ|{{rTJmhyYG;4aQYp2DPD%Hd=!=PP}5jLxCT0tfP~jT*Tw7Wvnc^T#p& zi+tXX{K|Xs?~Wl6)4lj5AYlze#h{%3*stIR`j+yS=ip8Z_hK*guka(@IDduwFZCZn z|1ux uN$f0qxMH>#j?`#G>2cnxD%nkPI5_ztaqT7Pu^BfrAG zhu%M!|D}Aoo*V~qEQOn(aC;?ul+MDJ8)l$#$G^Z)n7b?ng`WWy WT63Gb}ANj-Q@zXdMMMqp45%}a3j{X>wyUV!(~gUA >^i$DzBRPM*uO*MNKAGWZz|_g|#`W4GpSyu4EW z#|8~#RHuKEw=qnB{@=kE=-x?~Kfl`x2mda>oB3gQBQuQt75 Net~KRG+Vt>HiMWM@Nm!2`3d=0eqGQb zJ~~*_Mk3+a71^r|ZdMz~h8G7P+43A~csJd@jDINCJ6is?$eI&7rPY?X@9{0UMv{@E zyNkac{TJqXuU343{J%a({uoioe7EfXW2}F9{}uj7#hwT4Kfzb>|1 U=maoh#p!5%hhW=@a&4d4&BNd0$a} zpzK0H><_2jpS$n+TJ6PcuU{iOUWkxC=kRNHs{<*YIF+~!;R)kYUN q`^Eff%lxj!@xFuq5%St?LY|Hh^4M=Bx*lB@VvoT+b^B?GhW`Wh7Dm(n literal 0 HcmV?d00001 diff --git a/logo.png b/res/logo.png similarity index 100% rename from logo.png rename to res/logo.png diff --git a/unchecked.svg b/res/unchecked.svg similarity index 100% rename from unchecked.svg rename to res/unchecked.svg