u0HFUj(FB-EQJ8&k#=TVu8
zY0d0VWE@b#iEiK*;8F36j@aUE<{}q=3C{@Jr$>}q+N97DSOFt?5;(%RP6jl|?1(+w&L&bE2NMCM
z=!wXmYuyCSkfC#C(E7J;qyljq`TrkvTP3(3r8Do~BABE?6A+i0o
zTglvH(ah1Hp!kID(30ycSu#F06jqcYv4Mo2p~_<|;EJcmAx3)r`NYfp_gfq)>5ZiA
zQ)|#~suGZB#Dzj&JNh>WEp~9ZN&-*Efc+k$h$1_LU_kTwRGfRC-*W_ByOCa6JlOm-
ziTaF>ap3A1y8}14>V0pR{rC`|&QF`?wkEy*M+0Te&=Rj2em7$0!vHZyJ*EGLH#Q>M
zNQqTVy26i2IsaC%Z;vgH?;nqM!z>Qe#>}+Q+Wg_1bEeRfyX<2W<;c9Vo}a1+Bhfo2
zX3z&-OjX#3UPlX!4EcM`D$HD?-)`8!Z!J0j=$4R_A=)aah~
z8k2Z@-u{3y2tRvc^pW2>O~IA=vW%SO{gd-{w$;bt;QecnOEmdrhE$}o>lu!#)~kp^
zUDDUbny)S#2)0yczcOXq&kF*D{P{X^s`0dl;scC@lMbYEDMn}4%jCq5p}W1EcgH#;
zmt&e-z}P5?`+^192b3tz8b-Y
zeG)TPK}`e^Slb$-4<)|Rc$M{4V)y27xrR4xy^J;Piyom4+oFbLI&1i@zh|mzFG5Rj
zGv7?m99c>u`!0F?Zq2}_L`huYtA-Xuhr$JL1$2`|za{eJgreNwc(v2?`W1wPiXDc^
zX|uzJpUGKiliEl`%j@!EkI3Qr6tDq{87jo$HXeYBG_`VIr=
zR}N|n%Ez#JUGKr{UPTL_m1`uNXZQw;F}ONmeNLYYe#0rgfefJ4WUgJx8==~%dr_LZ
zFEu+^r)sg5M5D*V_*SSYpq)ta&t+_oHUe)PU!Y7cbTZ^12DAx)W#^}u{}C!nR|3fI
zE@oN3+ChrIf4y};zZG8Ks!z=Sv3Dlqgd2G{0`7yA$#Bsc-fwqo`15~<)O2b8VGvTp
zXvDdQl)3w%sU;y|g^xs`&oqMDu2+8R>q3p}5G@mD0
z-*O?7p?P{6AIO^20yzv>lMyO6NPh}VjtUgvF5kCBLGjZKC7_riz8qQ>VZ7(Z(1ts`
zz}C4nBXl2*QRVoWOf#Nn|Oih~I=BY3d!3$`COv&saL%h8F+IM^(gvB|&X+Ucx
z1k8UMC|_Ql%kkVPPZCSmo90A~+gNC0%Rj3_}_fAdIUgG88)H*r5L0zV(MD?~iwF{s$iHCU7lBOpztm)KZ@owFlliL-_e|vXA+S
z*^C{_Uw_{Nm|gFCswn?YVOVqo7R{bWM=*Ot7mrQazM#<8rq%PGi9n2J48ZZawrk`eZ#Ki_eXYfJABBu}^$
z4bz;Rd)(7T2i|6maPMAyHntRs&wnr>``d=&Wo6>MS@)LY0y>M@g~TrW(y*auRQqh~
zrV^mdS|e19rROA5)Ljc6rVj4G?1Os_2C*DrfVkKs1!w^(n1S8Nfu{xvJdPOwuPF4y
zt&2l72}cGkFp`B#n((+BN9Lq{@53u()~y_aCw!W3%2(ohglYxhuyr9gqS>h08=utk
zFd&aSf&kY1aU@($*nXZ>*y+ka*b=g`%GSKZ;mY36)LD+}7cC>=x8IUotrgIUEvd0k
zCePVJ9q5dtra?hs9Fnoz93h4Oz6J$M{oaokNz1ln&U?QEOncARBrv9`b3Ir%xES41
zj5(yTh_9>R74=Ec^i$9Ark=!jmDbKvk$Hx9uF(Fr__bGQa^=)WKO$ybaN~?6^JFz^
z^v}O9Jh^1rYx4Al_o?N6(E3uMzfG3{6Yh^>yY5EKs1-36(t&_Z!M0<=SqdP?$gxZd
z|5?Y$q;HxiRJ<|6xm5EdxWh%S&dEMixp{k5j^wIBsF$l?rJye-y(b0i%yI=UOU_As
zfiF;@2U^QzG0&2I!-tg3rPZy)PPm`T-To2QS#XQ2I@TnI)s3q94u&qeOS*KmCJI_E
zit++Kh^ZB5QBg{&ZJzSsR)oQq?9BYc&JPFDg?#?M7hv1xEK}f%;?gg78!(xD>h`0@
zuphRcMZy-+U|(7H*V*@ao~=7uU343izcTWiX+*|K8}9~bU`4-m#UB}8mFUiSGfy;D
z$0!b9@+A7bWYi&*?O=C^G<)=x7<`;_W#p9G9tvA>D{ChtRfE-k!a^Xx+!GyggvM@P
zDZkpMX5%$Eo@=(<_Zm_x6^hEAH)L)IZT4={Y&UNxOy^g7<`4T^F^cgcZ~Bs(9A_*K
zcPI%SGP22z72y{iB%bzP4k)Xr*R?=v%G2C(_x^$^?wqF>4e=FK4?o@O~{a8oz
z0-CAT9a>2xJIqt;iIX+Sk1eO+>R^>NT6DIROE*sV;bs1vE)VEIB0&dSB}*gaA)@39
zByoCCmdusR3D`io0tEQNP+yL8#qTD`*fEW4U;LWu7LI+#I+91)_Xkre$2js9Q~3*
z^+B#}bc5Zc(LezUrq>t;Pi9S{H$c+v-S=|)F=?ra+vC_gfAnsL_{u9sJUmR1_m82h
zvWLbfOhpc?MA?;p>HfCD^Z;W{3B1QsIwtJ?$c=>yq0yCncl!%)#@Fz`8uVk8QzMlS
zhDHp@Cz(HAq8s!i6xG|6r2ORXqc8eR6*5Pgm>8Fx{wVS7`@$AKKQYCM5Sz*E<_F-7
zXAt=LZgK)s^Y~ChPT*8V9fDZeq5afNeugpiy#r~Ps=??iLi`(}!F}YFs)gj4rU+I)
zIT6+#+eb&s=R-0?8r-V8)g)i6V^tN;P+LRZ&iavf#B-3tnWuRX9Y54*jCW!NtQvyW
zaPe^*wFn~`OEReT7JusIHW+_9(-m@lnQ~v%ei0#(iG-$Sa{CYIibB+sfKej&4*{B_
z=MP?X8USc_MJ$*-TS5TYG+jJe`J@gv6N@OaIQ=~eD
zU;d>;7^7+s*IqqOC9yMkr;~Iqt1CEu@#Bq9_rpmr-i-eFN4MuzpX5ELYxM*urYp&C
z)+$&_`-+{3Ic9&%E+e6&YkDwutPzf2O+OD7wvSD8nKMkV^~{A@*k@!_#6pK|S+OAM2;#yOZ87D(mW%r6ul~
zUGbDdXM}L|C2fOYxJ02Uf15A2d=~E;nVkC~)fCgqSOsHj)i5cDizw9biN6*nyG#sS
zM1T*e9yW%*vQ!{mN=yA7dp29D8)SFW@Nu8f`&Wa;_($_cCcpvl_UD7`w7X)PKh#~I
zxh9?}S@HpNa+6a*rs9&6kMNqb$>U
zI-O7Fi@03gIi3^co>ltC>Xy21X#aDW&55+9WvM>AxLR5$G4=Mm$xn*C3+Snf_1T0c
zqpZ>;8^rW+KKoWPbNM$E2d7rnv8~6pKd9|2XAy#|WES%eKL~W#fgY#U}U_F(86d1*=7Wu>=+zN9l$miG*EV
zD4x8(aEsKlWD%SWX91#eIb?7++U+O9p!d|!&N``bmR4NgZ&8zGyJc326}u7iu%^Z*
zm4v($J-j`bzaY8W(Tt~beHmmq7Wbm*cBSxNQ)hdE_G+&H*Sm2p+uMGBBq)cstv$J#
zmgjMH{0|mnG~1KgS6^+nxVxsRD8cT?_lAb{t6WdYGo@h-WVdp1lG)~MiFXZ-fuXFk
z(@yH^<)f$~7g}8sXn9S;4hV?ji$>#lQ3V(>{i#^-KnZWF*46f%Imr>op!W|{p1=9k
zVxizRZY_G;MVxBBn_+%Oc*S2QrWy~CuaDurY|-7#xmA&z@A&keRjZi$8orw=!R&CF7&FE0$-4LwKz&3qBCO!^g1PmFaIP4wv
z2VocR9H!nQ@#UMhu~fXn)VV6+WV!@gC?ZY0IdYI$=%Ph^Oc47U^mmqo=#smkTtYk)
z97;=#ayBd98t(tGO#QfB>Aats;a)ELM`i_{n>;MtxO71}zCO)E_9*H(GY|OUj>As9
z`X6pBq!@lhz9I(;p&vcjWgEfeppbjAd{Uae5*~}rA^YU|=9`1EH*EM`H-t+R^;FR&
zt-JYS{_a+hb<YM-Q`r<{T?t
zm8(DBB28c8jXx#|y`Y~}Te7nT(p;1+^
z88Ibfe3pyl2qpq$mTVQMb&I#3tf;xzPJ$uAMwdCh{n3dnw>p{cFn}b$1EN`b(h?j6
zDorApxW0f}X89nHA>WS7b_~hK=2wn_1XdRVmQD*lq*wRCinZF`y>%qsY-%sd58FNv
z&z?kGCB1FBwDBg9ufwDA`dkKXll*>PfCuxZ#;(PLhQ~2axVw_7<14OCS`C^?m
zfssAX$A98~^qayi(e1Yf>Qeij{@!J(^QRTchnEx1a2fp
z2kwHkro&oW7P3obg?65oTLC5Qe!fw@V|eS5wj*W9PY{MMpBops@}<61;1}1nrh!0$OH2+=0$R4NA4kSiQ^4@cYDI9#e74_qRxAi^qt*
zGf9b5qE)x!BH$(5)5Gzj`ILJ{J*Gq_!262*ed}8tG`GB(sGM9|b^)s%mBbKXWy9y<
z9S(To!oSIGC|&3K&K}0ec@9EmyH7{tgEXf61Tc{UI-jj;Vp-OCSp5Fw(p2@V?@gFcf5rF~XpdOF~-i*Qh={kgZHkFd3j=W{2yE-M)
z6`QIR6WHv)C>q{TA{@C9c|H0qQeJ0h?HupKv>#54oS52SP
zb^?&YM8z8YfS1A-Ig-EKwgm%F-9CA=h~v;i+?v20^=kvWZY7R<0{5iON3An{f^3%W
zq)nn#nvASjQ-oL;jjjTEP_LXjf9?4_@>pC6sef5np7Q8Cop)|Z59&2tKuO`%n!S$KJAJQh8Q9V6Ie$s~t?WazF
z0+*l5zhBWP0-P6;pVe%J_B}q3M$8R7aZp2Z#W|16x?!{)(+$I)ff_wxJ1SG+#%$;D
z>qK`W+F7PP)CYgw`>25Oqx8PJzO&3?2djgzK2+Nej8hv*c*GJjjhwQ?IY)xEw&hk3
z$@UdT*2@T|WTsv?Kaqs02+Ka+D4}sV&n7fg06>p-b@WjzI@&2?@iyItH_KYw>~D=?
z-tnR1fnX)gy6@)ntj|T60Ju>Dxwa8zO>#b!Z(Q4eRVE28G
zkDrbGl_bi}-cvoUY{dMQI4IX@(;j%Gky&vnJ9$Pncy+bb%xc<{7dCtUOS6lo@lQ{S
z`LsIzbNBDm)J}GzF7LLPOnk~U<~8i*h9BV$#@91Y?BMs{!XEvzdE(^sM+1m4p*)Sk
zJt_;SK_oN8jvM16Gu}yeifY@wOeW%tv)3YQ{8pb|l=EQ8v4-+)*D*L>wG-+}NDvA1{ueKkWlSslE$KK(WL--zdzaXlxlU#3<;|GS%OR
zgB#QHSp5JGHkjy|h7=ztim0_;=w+Fw{%r9&R{{!z94Jr&gj;vAPU1*^Cwfm5{&N`z
znmZ)oDX%WD5GmQ`xwr+IT{d1q>o5}Og_?G0#WP*~3x#-{S9h6JFkg9Ue
zGQuzC(UO76_Ztf$*Q?jm^k5zHbwfku*|+^pqRr7Ny;r24EhMfHX~?aP%_)|^hj^a{
zrblh&PE|nL$uIURxPM{704IB>-X25#=9Wa*aA!Ue<(D6Ju7BhS`3>K=jWdo;k7>{O
zHa=0hA##0>GCD*ZrN=bp%_qh*hvp91C+s#`Gi8@1Z{_7Sk2F|xVZ~IN%eg_G8xw+c
z&u)@WF5kB5v&{HQR`!oRo_bFcs`ip{oHi=>HFmk*E{w{Oh#ql?Kc=TDV5Dj#e#%4^
z*z|B|gR-?oDE)glb699irg#9id4nFJ5>OL_z~v`7faRQq6)oSOpg+;@7=GBXaZ{Y?
zkjJEJz^tN|+unC?)4hWY<=;+kFD66_q%*#)brd!yYqp=k{Z_8VPR+aTzZG7}ip_HM
zINlqPz;~gKD`0>c$0x40I)xL)$edX(9^}#LbnRn4V0~;M2%vUzyIzgKH1}{#+;)4n
zBYddd+7XO*%++sod>h%Ljo5h3ms9hUY*52ctn0tACbFDe&+$BzO2Dh51Ib>ZjC6lQ
zn1UVs0Qx^%*anh8jiH2+ids?*_SEu-BYIuS#?Nn74zHvG`llTS}$
z_b@Mb(gqk@=k?3KE}OaZ;MZLD?13-q{rn;F|Ll2$9y3x?%zIq#RHd>exLqPuHow^5
zK@)Y?k7ORzNm%BZ`~y3h6|}Mfl1ysO7S&QVx*H$zUvzKsIhq=hi|%n52+XC%-grAC4Ms)@<(!xQ(pI%epSf%Ecq~fZ}|7`YF+~FE|2gI
zluzP*BOq9tY^)61Ce
zKKOgcE|-!_O}o_1O2AX#_ln(&)VYM)8zRQqRhp6GuFiyEW7C0w$DRA!J~L+FeFcvs
zl`#>VYZ$OP$e6Fw;?d@WqpdpbXyprXbhM^YWh>*kNzMe+R>a83Nvm?`sp%U0^}w9&
z_4>67A-eeI_n>aSDTIxS5wD@8kHcZ#O9X6d`|gVQgMC0{WGa`~)*&g!89jRuj4ua)
z>p<*mg}w~epP^w*zp;~AAdIp1Gtg}gn$STWNTGet=`64I@>&<^CALC3Xs#kS8aTVB
zp9+8C?olQi6aQT2Ef;RtUhHlq@OmeWUSKI(oM
zliaJdz7Wj%dV3H_26Q#?`&t}fR><@31}WySTn=1L|eETkvBa!mTYPk$S`yw;PqOw&Eiu5U%$BR>Ab3qD~?$nul9c!
zp}NJ#FGRP1EWz<(YSqffNIa*HGz3}iuM(i_{U)yLN#>HDnO}3NpOg=WT3!D|CaeDN
z-BpDY&DYRo(mTEXgRvgAIK9}DKlK;MK+?}b=w>#KF5FaalD@9I;)nOF#dd(!4J(WRE)O^0wXH!$m<^#;^;g2*>D8`9^?0Y%do$yy&
z0z;J>5=k$KN*~d|%NY4+y@xd>!M>pB!}xI#8HD*%)?13rgqVOJ_+>?GQRQzoa?p8p
zzt2Ao2;d?qxW`iW87~BRe`Y|#w)U@dJt8dkFRmG!21Cnr>g6On(`G9q7Ce`sVnuMj>Z3!l?s!WrQdY+L$0SGW#$j
z0$aC1e1?Hq$r?Kw7SvGJV;{S7;{Dr@<%M$?onwvTeaFg!O>U22Uv~Dcgi8TO9TSz_
zn`;_a$QcD?LY{Ui13BNZ^K~z6djIhT0aOEwXHF@zsc=n?H?Mm>`=|pkKR`nm4@3M>
zJOTc(H2M0~+1M?~L<)0p_wtgbZr;>RcF0CmvWcitLSQZONy0X6tZNCGpSF!Y?W1ge
zeYKwJe1QGwBx`+aCGGOAoIo9|>xQea?0@sX$KG>DRiGK_XzVZ;3bV^OEzORhYCesWA36Q>CPX^@-
zwfUbN*{|}8CVjw<#HBpXWaJs5n^_)njyr?YTfG}=u|t0la}4=;huK$#+zO6m#=l3+
zWG(!&FuyI4^KOx>4-bx{422<>--T_jm$=}WHm`637$^dZ{E5uZE|aV&M8-GGimslz
z%O`ofKg$S4Q+oY@DmUgWtGfaTv8=Y`IgeFBcf{suu!STXxmI*z^gwfi+7;SCinz-*
z+ky95zA_1e3{BFIg(gH?82|c^wg8mdb`Nyvp&1rJie#536TNx9R_wanZdte
zz5q+!rB9@09cYk2muC9Q#%m|FX5sx@IsN81eiRD&MsV|Hn*48F$l;G@!7Cc7TAx|(
zb04=#J+_~tAI@^%B_IxWeR8oBcnKtBqZ&75Ql7Rt5Byzh+@u~0$CccK=hM;I-RmdQ
zkRG~2$5WgW)^a*i_%ATSq^d9NvApZ2UE4|YcU*TENlM~%4)aVf_(KaBC%vE0y&i}?KZ9m5uC1Kwqa=-!AN&{aQGv2XVy=$)>DH~>()*)|XIqm`X8{iH
z=etZMI&8iway7s9h_!kYnNAJB^VS?!#1V$OUbv0F^3LtUtrh&+mRrl>hlz(JsR!-5
zUKh7-)WU6!2&ug3SG(k?k}t9*V=Cm8Z~IXen`G_?ejyuxD5tReKu07$80r=taeD*L
za#1U{h18Sj(Zk-K<|(CUr#kPUO$AUlHEzFC)xOpZGQTsw=m}T-=zRgTjS~hz~g?N
zsj??Kf3Q-5(dP8w@_f5uBDdYd=WI|+`DDQ##Kv_Y|DE#UZD~wk*2J5}9IJ1gSShak
z2_cLlImYkQIo7L^xuoKxMRZA?#mQma1-lueU+|Z=mHFJ!05{Hqo8w;Jk~-TG=eAwK
zYccae91VY+B;XjluYs;LD=cAfHZzhsES^n<(ew(*bXjA-ml}(~Pwkjbwew{ugG*B4
ziluM_z$oflpmD^ec}Hh~c%C|X%a-N2S8LwqT6-Ko(~b?@&W7Z4`;tHYeyw97E9!59
zAftc(eZ{gwEpi`fYEYH7Y~lH_%D7exXMOspz3pUCbLDdQZg7JqI8N^k6_iM^I!g6s
zEt@Z3{J6XG=>RUrAEa5W4qP4VT&zNsqVW8ZN)kn-F$nWtv?+PPlEWK_btB$86A!EV
zcW9(5Rdnx|3x5!pHgd`Y&}Tj($M;Vr)%MGMfjo`Vx1s1wH8B!r-2Ob2HPaF*9tQ+RuXML!KbLalRfYpTdGj4%kkSW
zk)vBLQ?0m<)k6c3yDkMn1emm6${37%J*9W4g`6L3omMh7-@B~2-z-c|e`YmSXej#*
zyIq(ac-{DI5$=hEuJ^S(Ge9}&aCL>!9)83GIsw!`O$4}cM&;R&1a}*=`%8bhm3PdM
z!xgAywCC5mE$Z7E!XdnRWl%~8*HC6xj<6kos_$-(B(!mFCz|%i@;VyXOs;ta-xtSY
z3vC(VwiG^r8w4Nnb|3ZGgYBNm8$}}
z)p&}7Cg+1tG8;^A(zo?{HRoUu)ADD|4=^aN4|*Zjf_2uLuPY$0lLMU!XD7v*G}yXP
zu)o5!KPD@3%e(vT-65WL
zUhnb0tc|~Vg#&2ySF3Yyf@c2vdgh99rYdPGpcZ`HC(EJ>A6>YTcaDlEn9&ybyrLW_
z;|K;?C18-}@*Cb=>)(5{#OV|MPXL@FW8B_XCPJw*3jE^82^=v|6t#C=)>Nb^hT|%(
z_?U}acko#aaopbV>9|!JiZSTLC78BwtFgGmEQH+avFgX?*jYh{YE*IX@Fgv9Xqy_G
zQbheQ`s-D=^;MGLk8%#cUFSE)Sx4H}NDO>-F5dappWLIVki6jdh8TRFeTXt?_6D4B
z$29Y1DqM{3E3tHa=6QW9$i5NYiLsTGjK^oefn@@it&pVN!v=X%W5nO5h)@8h>*K4q
z(KA}g!;g>brx2x-|j1uV(&a(aE{))7M{M`u8yCa
znH4yO1+6E03&995T>_
zc>)a7IyHl{;+;k4W<49he$S9_B*%rGzs%O^YZpN%H#QunkKqJ%!!Wq?!SfsA&^Lz#XW1glG1YL*hR5eDwPJCYcY;I6=S!+EF(NVl{(Fi
zMS|tOyJsUDvse7spB0`ZtGDC1&sU{KX_JB+Q@^!IDWYoi$*S+$su~8K)(8h!?vW=d
zEordn_2?hoz64t5;C<_yqwC|gbL`4^gX`S*!hDSSitbD#8hzsJiPw+w`DWTW^tgwF
z5rMLV|Kf~{K2a@B)+xLF_|&*Dm80QvtDONGmOE!W79{*c4`Ug7N-#sc*m5?Mw`7uK
z&n$qj6F>IBF+)3XY%pMv?zwnRHIg_4wfjGyBikbyc>A*;0K=MxBGOsa`db+Ltj
z473wuOvi;clz$#SI$`D;DPK(comda&cd(B?qr4WW!~c5v227l`5#P?*hz(?RodE`u
z^%Qyhf&yUwR@Km9uNvsES5535qf}RQf9p4=aOOR;v0w#ZDFQ9wjdk$ry;@eqivwDt
zRyDiX2f_Ew9XcD|%^;O`zLQ~;ktFs$9K0u*)sL5$d~oa{JUq^yUyxA_hz&pZ_pUED
zHXK*VJib|uSlG`kR@t7bA1pWfaJDhNr#$py;`@D2z+Nsb9sjzjIa)P}o*)yY_^QAE
zcg`mKIA&yg7cE7olX*&w4{%|bM&S%e0)3e*2vi=&QSx$Lzo88d-NUZ`KX@LJKRD`|$s8MD
zc50!u@rLp(ma0FrSdRNv{tgM^=*l2t?=Uu*ddiOIev*2RT6Xu~ZlivP!7ThRNl
zxghoM${3&V4kX5ZsCUcQP@g>Oc@NA6spu2sXpfz$;>AI`gH#8`{oL~MJiPEp&sC=5j?(1`MCBsks0}t7C
zl&RRYo5sH)>^D;&`k89woyS+P5uEX%*3mPl|7#p+T)PO*^l661b^O-5xRP52jwjn;
zKls*P=~)DUxUwE65K2s@!9r<@=fIaZW(%
z`9es>gb(Z83MU_8w>gTqHmlZe$0@h{hPi(++j`kn?p2U}eEQ<}>C6mZHSS8xD8B|C
z?La&}TLvuDCMkGh->4ASx?fG)d3I*C|0SvL(zeb{s)Y4>FQOZv_*gzS$lF|Q93Wcf)JK*JF@J#m{F@4YR4-2K7(X;i
zRCzeF!y20)xXuF`5gp?T>!5&56jnLtdT1@&(A9n-PH8Cp$3LyXi1(L)B=<~ZucZF}
z;^Q0Q(vFR++j3RUvuNd3Tr|vY19pH@4y}i)PiuxPz7UBW_YbkQU>{7N$#
zVr9qU%Syo*LFN`z$DQ@JI=J?9yRlUzrTk=hKl^1ZhQGfQbCzt?AQsef~ytKDchWKA+SDWc%qgY!*KKX$_U6KrSs4U$JBS(3t3y
z%&a%8T(Wu~Arr09veZMZlNOvdlZ$Xpc{uR=vL~jVt$g?6`^!g%YKG`T(R-k@l;#Z`
z8Gw@Bh~wt7N;d=`Ex6y!+<@^@*5QlE>#%H%H%>f&do1`ObM=qkuQoa#SjT$GZj=K5
zzGQQH*PT6ER!i^98@EzVb$+sI@A>!5#E-Lr5n>`-_T)F=@m1jrQ>4Tye*pV+6oEDd
z(Ivu6MGmaeF_xMWO5VX+G!6-tQLvz5>@GLNM1(WUV%cSFT^!rKChj_?3CPAACG}ad
zY8%E+U7uF?Z)a}6R?<1Bpn|FtIoP{ZbsV@`H5}HqhV@Q5w$DKlafGsqQF0xo}e%kMS8N$;b`w@ws8yT8c98RKjV(MmasD7q~hBkqC)zq8HTjONqT4#rWDq
zDA|7e=osJk96|Z75a#T;Qx#OJQXm;4kz)$3)2dNrTzp(TG_9K-8j!@k=@Q^I+dw)6
zSFYQR4O>#!wk-w1+7%W6Rf-BwqiO-_*6>P!o7Sy_X7%G2(L^a{KL1Xdbj}_!1EhR6
zL~yoQeH%7M3LAOl(Z|l_<0!0Wj+4U1Xrz)2kMCQ5iuxEUMC6o*{nlMUdcL1_m)S0k
z8m`&a>c?9gJ_{%7+y*NHR3Qe{5kArus
zis8M=AAes_48+YZ&c%!W+i*ko-p!O4&wDGU8E5SA{oI(OWNJBzp4T8C&H͘J6s
z&UUm)U-cAU`2!s+i5Q>8qWVojC~Q)PAL`g$-F?N{7aOBht+Inr16rbC?Ragf6-Dt%
z^EpUD@9L-iz}&yYDZxIHl(PC%K3Fei<-}|}r{^)GM51#3gW|aSOv19`@s(4tne_`j
zzplb>N96Il99RptbSt}@eQ7FZzOKD`!*<;L`U1TE?`3SLDrfI~Jxq9f-WXB`Cn69b
z@y8$w3j2iw*N)8N4?Lv-x*uLUUvi$DS6G3uU$4O6SLTB-1#HD37o#RTzHbyoB&?6|
znG}{X7vP*cY$<0dbO{3+xU7t+!wg_xsrcYJ3~jWrzhJop%7P11GU~pPW4J-566Md`
zw4OxUjyuqOK`Pl{|
zbC?pkXiw?2xd56oV3l1iHx|xEvi&Cy3le@RB~!!}I{=S=@`1H*>sblx&xg@kv!NKH
zzgmH(K3IY!tJpDNdU(p-2OFN2e2ibdczn+ou&c!X?410d=lOLpLu4*M>#@rhkI(YC
zHLDij^#Lu>sCIrh`g|x=Sw83bO~v?l(rUc(?Mh6XvKGYaOY)|XBV$%S;qfh6iq(~!
zL|#JJA1B7=VlfTn5rTUkrpsAR(IPS700ZCi$>W<~+@XZ(yJV-btW#zB-sUaaf{9bs
z;qzZseCbvZF99H+~*
z8DYK}ftdAD4!51o5B?>@{N9PPit)<rCGbN7_%2`
z#_YwLG5OC8Y485W60ai9W}SU?@Qx3Z!IT3^`tgkoT1q6ZSWl<35Bn>^T>Usk%X3A{
zlwt~1I3Xm*kx4ydx86#Hq?kyypqyfanVCSOg>NWotXbigdJ*``dCJ7tsoK>FP`gGE
z$OfF%Dixrx&`D3lNx5#izJJq}6v!ymWLR>bm!``?};^{G%;yzIP;9D8ex;)JDnf!Jbx&&HkC!;H_F~zeNlPj
zZIpQ2ryFKrU7VpvfGR7>EV9k)%i?2V|0Of;G4pJ5h$mSaVx0IAOFne5yTQ1!9zPKH
zgva+yb7X?uY(zQb7L0+f{N`GH4vs~}_-fB+TdSY#T>WhN@g*TNWlOE5zZ&*_6JkAX
zSrsv*R8eMv#n$lIb|#~~qAapuN*UvO4J}-Zn(+8O;uM^dp;q6lm(hCYbQ&6Xe(|Ez
zLl`eo4tabL4w;2e4V#RKCm|+{CMA;+WWmb}VnY9X2BQ_)coPgYh9zbrMWX`hgji83
znOgmd#p9ctT3Y!#4qf8El_342_W06-6mc?)$-|V=Tz$`p3W&zq6RBZSG}R=mpJ+6#
zD#~&c{RXrSVkC#PLwK8|JoBR9xchA$#A;eO7jvNMo(JNYP$x%%AtQR^tIr=G_b
z5iT|P-oKQvpR*W|%Au9Zz_CLB6!cjafLeUTWk>aCWQ#a5~=ad465YAoKlpF^FfL
zsOQyIYME;FZ7R4-S#;*XOq2(^AhyOxZYkDzd?B$VT5y9!XDv59KxfP2bDq=`
zzC`qYdkX3)iP~t&F{Sc2DRx%G_%S>_A3HNIHX_ECj1RL=I!~^1B2mancpL@wD8O@D
z&l&0sZ!{}HKR)|@1Ro-gn^RZ;=Oo|rt2Y-&czkuXIePY*7?X;^uY}K%((4N<%vD7L1P^CO0PgFR){b#;o^M@=QAM{!&o{o!7VC}nu?5m@3zR%KEWP=^f=fq
z7xmbAe%&HkC&*Y)Ggpe`%@Y}w$GnJ=G9^5IdPx!h|-n9D0LvDIn
z!3gS%up!154S{pw{Yz4g>pI$tSi(zfOt0i^H8b}z%GzpRHnRvG92Z`aD*WJt-G6!7
zFok+p*7!ztL26(q{WWu4=ElW$8WuBYgg|A?ylcepoC%L_OibnmS$Xm+C!obJMUc0M
z_ipm|!QTk%CmXg^63)dvv?qh{J*QGB{9o!Cht#wAI>)cyj*FidInO<+BJ)Srn7-_>#OCV|R0rlxNI&q^76N)ZuAG-_OG)
zeKyp5oM0o2V~kk%pJ}bWT-&Zj5K&YR`<2V}jY
zRjzwESYsq0&P=r4|BiFQkj0|_w>yQ>j3rer7JuBrY0!lWNRBBzwE98e4%KME8$$KO4_Kb(Sxqm`e5lU#qW
zun4AF{e;K2fT1R2#THKqo=$Kp2MDsWbQlC6D2%;!sDxvfy&8x@}B<~U-JCq7sn4-v=**gi@68w)KAeO+A9z9
zaDF~XdT5J9(8D7$tV?)&4;Jw2m+<&yd9J>v4nh(u%AMQ)eH}@Yo$=T9
z=kq9C6XPfS__k%D@^ShwMVTN|PS(-4085C8znr2xHX@rHqFO2#{C%pzx?I=lSM0g^
zF_k&q;SL^3EC1i`T6net_jUH$>aH>S$uQB`W+5gLvekTrU&7;Cbqgwoji}dIqH+aS
zpIHvbq6IikS7FkRA5WoU9qsn?JpWzuo4arp@XF7)2IKTs{c(Qe5a3HMlE|2<$%iLO
zc>ILN_r+7FW{R5&pw3E-;7X!aKbGznRc?`1{beP!s0G(%_5_o{R~d_YIZ**t-`DgNp$=cxlVe+a8znw`}
z@bd|eA7K<6JcRL`2U6u9Jg=i$;Cy7P)lYbQen2Oa;nMb#o7jkCuD+oLK8O}YrRS+H
ziq`q*AYnJ2a*`BHjM}n8A>uWKtzKL!c=n+Bu;h7stqE|^2@^Yi94dbr`rox+C0w^2
z%Lm6>96sBe@c6#R;*5j_?g?el;v4~*K$YtyLeH4+_}WTS+d2>1<5V%exj0Re3&*AM!NgAQOUh4var7PY=fQPbhIT)S0@3mF^aO%MRK;)!
zkDu`P@sSFj*kcl-wo{l5$CZV-`f;7Q#qskoq4UncaUAR?zdUB}yn9^WMnQLjT3?|y
zJZ43iF+rB__+jjBBb2tqGD=V68CzL-sQ6fgQz1e$%-r)4u>^xP&OvlKdiX3LknlPY
zawIsbY+`&K=G(CmrRMR|uD)Oh#&^6)tNcgaxv*_vaq)Czt$xDeCp><_F5&S*A0~Cvv1AoTNhSUGNk6^?cF*vT
zahTBgO!m7H>?eQhaO=E|aNLj7FjNzpF=MaHl!uz9wazvt{rG_u_H462qX;RQ=s@j$y|MGNq}k7omcuXzS*fUNRKhfr5fXh_}-a_@tuwqZGzJClY@@9
z_0Mhv4n{|I=Oz94z6TaPf|q@cZjq)wc9kKv5xarQdW#CzR^ns|T`b*qA)zfCO7?
zvG0PP<q^`C>4Hv)>cTI
zXkn;e`4z(NDUYvoVlB9)HeB8_(5_50>BoHCabv1v;&rZ1vbMjNEUAt7HGTgJt!7IFO-7k2yKY~gB8E0#wh8>Px|rA2xN!i@n!8Ehw*%d
zpFPCr`P0z#aV
z2iKL33zk&X=pq_7KVg>e_z90+Qg%S7=2KnPO8Lnb55M`3-vI0>?@CKyx~D7*_BZj+
zmNC99GT;(7>@6uN#$>L3!sCbWWRM04;s?&-hYpXGqp}?1r|;gGh6$bain24-%74U7
zbGo<%%+5X>3`ltVD3-wrsU-dQNk4v+#@hVdkmQRM^RovZe)Av0++f7FM4hQUe$tOG
zBrp{erDsQdRwVE+y5q7%Rz8=-hHptfKJ{dAD2m>m&LlvYJXOVQ+r)e!+X_jc5HWWZk`xzna9J{Dn&Yg?x+ADV
zD`e&0gO~61pZkT-#oPrI
zn;i_r_|Dha9LgS(vGS9X9D387QAoMn!w@Qc=7h)hmO+f=OSTKLbYgsF{)3Lnl_m(O
zjhWnF6ogX(!i;DvvN+&YzX?cOT^z{yAyRmvGU+TIo$5
z-*$Xeq$f&v{Dj9>Bg}F!SKnTfC!)!^WASE>V*9VqBePO|a+#`n^f2IQ6Nw)t7#k
z-`KI42n)5;mj(uFy7*+cCwB2^JW)iqpe=l6DYiJ%Uj;|139k$}5^g;WGxzwKEd_!R
zb2~{tekO{SgYQg6rAjB_^ArBc^jujhKe_Nh*Us7v4nA~%HntUcwzc|lMWMY#XN?if
zESnRPe3x6&kFTZ}_3+uwNKtVO$CxGk_%U?YnT74C&iMM|IWfK@9hwv6CucqQy5HM6
zNWGhK-8MmV#)Q7%h2_MJSOlZtUz2`(Kb4?LkcGpQt=2h=XSE43VRj?K$X8Q&X}Fu4Y_ot=G>I@i9MI3^^DIEpk8jmt&UhbP*vZx!ut+geh062yCS$wXHCvA#
z++)r>e{e#Q1K7T8`=HR3syoq#s{4T58W31|)$&F(EL+08lITM52Z(AdjD60gsIZ%B%8|8#rLV
z^h;dFd4~1^*Ppgb3EiFB0>S#*=S429z$;U(zqqNac(j1%1>_Qz(Lav
zO1TA30PZ0|(muMoEZZ1PD0S1q{Dj93w7~;v%(~l6Xi_MXGBIfxPKCNH#Oj9n4Rd&<
zMk-});3m0E$N2%pPQN%!I&qXfIJQKTKe*U_1Evjwivdg&K(p%nJGLk;;f094c-iuM
z!YuyYi=mUb`iw^mwLanTGf}3Td?!Xfezw;uQROE$yZ_a{bxAn|L*cr6s&WC8!ts?`
zwDgiES0}=fx%y@g%P0A$IZk-|Y*i}L?>p1r;#y4X^nRvii2J<~SN`Az_q}@BJ#cZO
ztfU4{#AM=RzFz@5O)~`(9zU6@A6HxQb-aTi7~eVEIy+yN5zkv{%1>^j{lFRf6%?m#
z16;Zo^#P
zVrQ^vymmfsuT+&kc(A>%{H==%T<^f&8Z6=QX~IpxyYp0}zltWxG~w}?1ZFc7)1T}TE|zZwSLgP#Pv+|L1v*(*NGARGd6ja|{;wN#{VJ}nFl
zpD_IoJr(IcuO#kWQl|Q)Iw*98JEi5Sh2jHIXx@Z}QzZC0ni9n4qB|Ls$EhQt9@c8*q
zNoPJB=M@yBUd%-YUS94nA1BSnIrr>0xrCXwRFD7E=ZqhEz9glJ_J&I&Q);Tw}65%r5(@PJaU=#
z{JIBd*O!C^=m@wcxN!XmLVAy{Opr;+BT|ffSV5H{=5aiVHWn4}_sM4I^joBx<|CvL
z690e9mflopO~+Y}XWMc6@h8KLgO&gQ002ovPDHLkV1iVqGFSir
literal 0
HcmV?d00001
diff --git a/app/static/manifest.json b/app/static/manifest.json
new file mode 100644
index 0000000..f5ad44f
--- /dev/null
+++ b/app/static/manifest.json
@@ -0,0 +1,17 @@
+{
+ "name": "Gemini Balance",
+ "short_name": "GBalance",
+ "description": "Gemini API密钥管理工具",
+ "start_url": "/",
+ "display": "standalone",
+ "background_color": "#667eea",
+ "theme_color": "#764ba2",
+ "icons": [
+ {
+ "src": "/static/icons/icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "any maskable"
+ }
+ ]
+}
diff --git a/app/static/service-worker.js b/app/static/service-worker.js
new file mode 100644
index 0000000..937b4cd
--- /dev/null
+++ b/app/static/service-worker.js
@@ -0,0 +1,43 @@
+const CACHE_NAME = 'gbalance-cache-v1';
+const urlsToCache = [
+ '/',
+ '/static/manifest.json',
+ '/static/icons/icon-192x192.png'
+];
+
+self.addEventListener('install', event => {
+ event.waitUntil(
+ caches.open(CACHE_NAME)
+ .then(cache => {
+ console.log('Opened cache');
+ return cache.addAll(urlsToCache);
+ })
+ );
+});
+
+self.addEventListener('fetch', event => {
+ event.respondWith(
+ caches.match(event.request)
+ .then(response => {
+ if (response) {
+ return response;
+ }
+ return fetch(event.request);
+ })
+ );
+});
+
+self.addEventListener('activate', event => {
+ const cacheWhitelist = [CACHE_NAME];
+ event.waitUntil(
+ caches.keys().then(cacheNames => {
+ return Promise.all(
+ cacheNames.map(cacheName => {
+ if (cacheWhitelist.indexOf(cacheName) === -1) {
+ return caches.delete(cacheName);
+ }
+ })
+ );
+ })
+ );
+});
diff --git a/app/templates/auth.html b/app/templates/auth.html
index b24681b..2949222 100644
--- a/app/templates/auth.html
+++ b/app/templates/auth.html
@@ -4,6 +4,12 @@
验证页面
+
+
+
+
+
+