From de5149080799bccce71e992542da78ed2f291782 Mon Sep 17 00:00:00 2001 From: SO_RA <490328928@qq.com> Date: Thu, 24 Mar 2022 02:31:42 +0800 Subject: [PATCH] initial commit --- Locales/zh.qm | Bin 0 -> 4039 bytes package.json | 76 +++++ preview/reflection_clock.png | Bin 0 -> 21108 bytes preview/round_clock.png | Bin 0 -> 32137 bytes preview/solars_clock.png | Bin 0 -> 21945 bytes preview/text_clock.png | Bin 0 -> 41867 bytes reflection_clock.qml | 465 +++++++++++++++++++++++++++++ round_clock.qml | 463 +++++++++++++++++++++++++++++ solars_clock.qml | 687 +++++++++++++++++++++++++++++++++++++++++++ text_clock.qml | 312 ++++++++++++++++++++ 10 files changed, 2003 insertions(+) create mode 100644 Locales/zh.qm create mode 100644 package.json create mode 100644 preview/reflection_clock.png create mode 100644 preview/round_clock.png create mode 100644 preview/solars_clock.png create mode 100644 preview/text_clock.png create mode 100644 reflection_clock.qml create mode 100644 round_clock.qml create mode 100644 solars_clock.qml create mode 100644 text_clock.qml diff --git a/Locales/zh.qm b/Locales/zh.qm new file mode 100644 index 0000000000000000000000000000000000000000..1d112c178a8b10fe12cbbc363d5b6f1165a63684 GIT binary patch literal 4039 zcmb7GYiJx*6u!yMOlEgxvzzp-Em=j7iZ7D3LM=j)Dxox+xD(xkl&q7@WHZfXCf%Kl zZYhbTQbR?XVqS(oP_aeufq#nPBQ)`WkAOrdk&^ys6)nanp~fFl^~~I6va@$)cm1&( zcIJHNd~@#k&bbFZ=-B@C?^C1mckG;b>a|an&Lf2A<6V*3U=2dWend}v4t5e-`XaXO z-Pn40L{G;Ma#f;3(RPGN?nTXCeFpwC)BY)hWRmTM|0 zyIcc2LM3m0Hwg8KxP|Qfwxewx_=X}@peh+pQTh}7C%%9kD6~2{`IlXpgiO+Q-5l#K6y6xhGJkrV@eLxEk#)fhYci)ESqenyf03sQ$1>NAl9z$n>+{ zcB&Iog9#J8)j$Pm#AtUcp{A6MK&={A6M4e4h8qM+7(Wj4n5t;`06Bxsgs6XO4xF@RN$54|RY1NFW5N0AWhJFaf&55* zygfER7Q0bYr1<|SwjPEoHV#uzu^Y=H$Mk}mHS>qe=E&DE)Ydi&wC3L5J{u4*%stjI?f_}I`-soX<2E3I zeB2=klXuw%oMOENfdjgYuI{=;2IL`a>fOM#5gI_#?yWs zk&Y}eCOE-5A4p6g>x)F?P$ubY$jh?2I005y0Lw)m&Ndj`U$3g!Djox4lr;xLuRs>W zD1kl1({j&P)rr5YV^7e>!^VZej$4K1vIx>6Xgb7sSTI=&m2b-0qBdCynG_yPdPd8b zWck&fjbL>d=g_3Bf7e5i4Gm-23tBpEh}afzV!Zzg^H?}T^kGSkbs3j10x`K5eAiN6 zUmf@!*8Mk%OrWF}TEn9^#zxFM{9(9;!w?sG#i%VcYUuDwOBwF60vBR%hO4{YFGPk; zW%xD=FFvRydc?RhDJPL=2.12", + "nvg.api": "~1" + }, + + "resources": [ + { + "location": "/nclocks/solars", + "catalog": "widget", + "title": { + "en": "Solars Clock Widget", + "zh": "太阳系时钟挂件" + }, + "preview": "preview/solars_clock.png", + "entry": "solars_clock.qml" + }, + { + "location": "/nclocks/reflection", + "catalog": "widget", + "title": { + "en": "Reflection Clock Widget", + "zh": "倒影时钟挂件" + }, + "preview": "preview/reflection_clock.png", + "entry": "reflection_clock.qml" + }, + { + "location": "/nclocks/round", + "catalog": "widget", + "title": { + "en": "Round Clock Widget", + "zh": "圆盘时钟挂件" + }, + "preview": "preview/round_clock.png", + "entry": "round_clock.qml" + }, + { + "location": "/nclocks/text", + "catalog": "widget", + "title": { + "en": "Text Clock Widget", + "zh": "文字时钟挂件" + }, + "preview": "preview/text_clock.png", + "entry": "text_clock.qml" + } + ] +} \ No newline at end of file diff --git a/preview/reflection_clock.png b/preview/reflection_clock.png new file mode 100644 index 0000000000000000000000000000000000000000..345f5c9924ad650d9bae2d3b4551dd20a21147a3 GIT binary patch literal 21108 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 literal 0 HcmV?d00001 diff --git a/preview/round_clock.png b/preview/round_clock.png new file mode 100644 index 0000000000000000000000000000000000000000..9385ffddf92bcf21695853b1502ade6abf4e0982 GIT binary patch literal 32137 zcmb5WWl$Vl*9AHd2!jQ8cL?rIaEIVdaCdhN!QFxk5L|-01PJaB+}(l)ceu^-ez)%L zTgB8AQ`6n&Y+ZZpeI`OlQ3@FW9{~gcAvYVtd{RHVdJvIxQ{c^)a#%1flf%QwE_glQnpz6kmi0L*t1te@S^VI-vMbxdU&FXu zOE;2wOo>jVo#&3e(nYiZy#aN$#vcHR^DYoZ13?*YK0|s;f~nVhFuQL1Zao5SAK#&Z zVW5MAN&o-9?Qql1-=PQY<@Hs$2xHtbMPzV-_7h6tDVCYANXOgP*#(&8dApz$ z|4^ay|H(c&LJM?M5B?<*o@A(=?jaSz&ns2Y(m~v%k19$vNCw>KXYhVsx;vRPY&7b} zu8$PJ9XOG`*JI1N+c9nVR;sW0l^L8pn|(hWyS_HX5-UL!WS%R5SriRVBF!(S5@F-H zg*@|rz#8+wc+YXVez~+V;q0aGGjviu_h`R8K;_in1s+<&8SI2^3NtZMR{_I1p+mnc z*!kJ&**x>2cdP347yHFt+=Td?+C3uFt;+9xiN(+H@F6_#Q$=ZdQ*u&_VegByN!3NP zk28>_oIX#Ssp=dJS8p#5^w6k!eOV)0NhWRP*;JO#gF(gkCY4#}4hqZ$T^84x zCrhWD-dq=2x}X(r{*G;s{?=~a*MebU38!vv=WnJ{t^hyvwh=3VDn&0a#YtbINF&W} z=a{Z&`4tgN;5nE#WNiXZw=d@B`}YZ z6u5s&S20mP7^aBw=aQZ=V)rWx;aSm|Yqm$Z#D#A_&O`5!{$!F@(;D#ncLIx7!?tax zbRukkTo{Ia(K?;NWXIKFZf{b1HHk@#Kf4uRfmE=Ik1%}KcxO|Lq$HV{WZ0b6&dyYG z97_gU1{gU(JLx=lX%dkamusJxP6h#ExxfHc#ZQZ=%+}1N*iIa_<5V)ZxJN!dj+UX4 zKK}GP+ql9*bLpkp?*CP7zQtMASHJ8aWl@7nC0HC-#i*)fo~a|CYQK8k8g7}hgT@%O#ZY>nVty z9??AO&O4d*x&m38-V1FTcs`Mdr9n*5zwfa+AD}=5nScHP8~E1FnW_<()?Dy#+U^qa z&<=Ha4cz&(L!~u#9PRLRm>@T&a9O?@UBlbnql;&ck%Qk@%(hlkjsEeg zITjsxk5aX}n#7H6w){lbvsoi4lz5da$iX4WE7vsL$wQoAV0iPjDc;acU(giJ_p^2q z|I1?*{?{b-rOX3?PNn;`$4&0_jzW*8zxAo9KP>VJzSnWmk7wl>8cZ)whu(Ae0uyI?Z)qDc}FQS(RfqZNn z=|O?qzuQY+#sQ6HcLppy5V^P}0l{KEr`C*mnfWwNJiUqq5VkO`nZUSmzxz<;2%9^WgXNV~18 z?1Qg6*RZl2;3pPDn@FoX{d1KmhcZxOb5pTdEU34QPsyR6rHfBRXtvu@_~ z_I>m1;QH9J@vi1~81TKsmGTQYM3s2U%d63?Aq1XOBa(dz4}B8|Mzb*uHX>;t`(hmi zbH@7a;!FN7_QR*EU&8RD%Efj$MIjf_ww27Q$Swq)6P zc%kTXDO4zK%JD_Anp*4hI&oa6lnck{rF!*(LHL+6{j`Bf9IW<*w3klGv`&5H7yM1b zfJwmb(tq3R36~x=u?t#c85A%>PC$Cbz4wXu_r94s%ekcG=JNcboUUvq3iZs&|yTJ`Z&Q(dSIs*oPVVIU1m^JjoxzI@FB{6G)opj7J zY+O#_6m4i?8uHsYn>n*W&fCWB(16Q!wJP17fH;+-n0TK*rot~=?!$3J;Lht|9IW$A zxI#!2qLDDWqPNT|`aJRc;NG(R_&7tOq934RUuMNu3Ou&QxhhVrcrRl<9b{ZrGS%Lg zjOvr?9E@75-hFvtdt~iU$=MXjuePIS@8O@fziwBf6Wxc((C2*bbxgCLe6&5)+NnS%o`_uescJ93INdBNc+X9+Q>1P;f zF+-A^5!>BcTpeRiRnexGEoxX1DAOg?s)VAMb%uCl!GjEEgN?omgJ%u_sYmU6Wr6C2 z>2D_EQQHxCOZ^v5yE-G&R?VoGG(+{V#X7M*-chy7cLMZw+g7A7A0NR^!{~1qA|18p z4NO&iGLvgbH)8EPo@#ekpW+|?P zk}CMiiQ#}1bi5>=M97z?AOsCFk>7D5n%3$+%{9rsFb8U7y|fsF1tg3ZjskH?(5cCz zFJKAn<(u^Om$o;gvS;7gx8vQP!n?p@Le>wy$J+%^tlm=1mI*vIDMU4N=t_v%rAeR9 z3MJjNWo}&(4m$?TCT-XMwX`wT0^g-+{QxQ>J^qUc$;?mH>}bNzEODsCNQp7Xja6B3 zUsw>;B*mCifeSBM*^afwj?i{+JRYBmGx@UVMz{Ic)=mamFkJ3s$duA0!c{~60jOuR z|NSzMYy$vi37(9PKiZhxUUePH4Jm%OUQ_QN6d|se(J|+%*iJXCVKFOQo%QO3sVZ3CxYZ5g z&fRL(DF2O}S1SbnUc;}Qy~_aNJDfl3?e~_}qBm(xs(fpL?iFVnnKu?eUp(~uyKZnz z@+!juvwo0M_AcdheNTh8LQ=@ z1C@+<&MLFgD4KC_yE9v2fK4&o5aQhDawZJWVY&F!_6Q!P$;t(7f0BBOcTJ(4*8oLg za6;*dr2VyVC3E_SRyc&G@C_-_XcV07J@COmiv$J6=U7d4p1;VnSQ5%YDbL9zXpMM2 zycyAcc3ptfs0cdvBIgZIW%-Q1WC12E*YD1VxUX0~Y%sB+UV#kUQTUR6`g3JH)E1Di z?ZYA=aa?jIEi3Z$sNmD_w^->{uWjw|2Kcjd5?_fNPi_6p`1Uan5a7uaWwyNBhI@Er zUsqKjBw2Hc_;o2aa~pGd{b=wo!M$m!RM7aholcC2&WW$a;&2Am;he>kgI9dhTkW#< z@jOhZVB>(yPkw_JA=+tdtzMcO(v&fdiZazxZbf~#J}IMKUT^SOBbpxv>>S3b(gW%F zey$eb`QAV>PP-u7w%u${1G;xBnlCDZ0VudC{A1$uh)udh;9-6a)?g1^em7`*A=q}B zgEltN`bhj59|KAn>|r+k)}pooLkrjq z3p__26-Jp&WWN78bkt>Fep^0x;&}{^0qYOB%x(L0dLcZFL2s()pL$I_xxCx+ysOal zKHEb;3KdpgPEh5c4I+JHz%F`Afa`Z|fA6dz1Y|qd@OyF;bC6Wh=_C1(^ONn(q`ll= z@CM(-jc5Jz%b}wbZ~6lL1}64Da!-VRxj#>rHt&~4gbAh^3M--L z|Iza}P)O9m;~_-RYlU{7m`Q^Qo&)E#3y|fNH-Wor=RsruU*SQzG=f3iJ0#Au#|{qz z4dr->d4Pt9X4cL_&$yp;SN6Q1}DR<5N)hbzkum?QV`zxr`v)Bl+ac?2>X>aSsrV|{f9TWHvGHZEn9um>zT^JDb@ zwaCUc)W>dO*cO_ON|@iM)10GLFfM}P!YF9rk}NUr;p0LmD{a!GIJ<$5@yQ@kXvTb! zkg+IixLDNwK-BjeNKi~0yS8N%EYG&T@g6J~doM|rD-5;;irU(zHw6DRb#;!KzfeJM zr9X_Jd>WfOzs!R6hpj-Gh+;qa?WIA04b-x)=?1Xt9Nco{o-1|2@$m97Nb>V6ah7Q| zBG5YVfBrzk#irR%6h}CAzFRrUD(6pQ6J$2zISOxf1&)fcqsR1i*y1E$6so1-}AnTDM z1qH$u3W%i%&$C3qz{df9q2Q=cna9*fx6HDW51Q%LC=z+zb`quS0mklob-Jqg7T(Yp zT8%0N3$)57e9|Aq%3`ohBbX;M2z5h!<@a|GiXLo_%B8Giba`=RL=J4=xIAABKR*}waBFfyi9*=N&EVzogA9N8 zn0jB_Nvw~(J{jF2+tN)Y=;UGaNs2TmQ!dj{qe~^?w>9k7@i5MVjhlsK6TD*VI`Dc? zOBi0G!RMDv9qKo6ivm(YwR^oXFl`8P9Q}M4h2aNAqYb2+-tpCdY#Z>bCcJI>aPT3s z>)xg#I7IHVMZ<~pcc{w4mbcP|$F>t{uM_;Yi0Lvmn%b_UBcxQzOc>rR zxqhLRI%$fve>OHtZ{SE^fdUP}Br!JZo`$(Mb36R3`TmpkqZmgtS%*;1g_p_c)~UFD zk6LC_MW&TY$TxFJ{EQ?^Pf6okya>D_n@zk3YZvtSuP}KorZ4*(Iwz`k>C-Ja<$c13 zAmFHMJaz}x~9(^3~KY*Y(WwZ(+$bJC@zm0WAeQ|E- zk`cY!Ui_|m)UyGR<%;{N$54P98+su}Bzz$fB@t8#s{y`1qsO|7~57-@%I}LxS3DT zFtHh0G;)7=Gk*D-3trMVAWux_IDfX0g#hGS=~F}6H+a(2OsqI+>#@C;_d%otqgCvE zBO1xpX~3GN_X>P6hs%gX(e%o^IEXpKex1Fa#Y8GKsc$ zI`GobVWdSNAW{U6@*2jqGt26x_f6S8ar{G;}a?(L8+@m(4VV`)MIV z(Lg;+(x{v5=Z(n!nm@fHGwDY&Xd}NX5YBv8CmkP)e*r zo@VRzop<~yHd@qoEL1g8I5MKkIhOnYmhTKwr zeVM|0$GB71vlR{1L%vT7*Efz@ITWp-yoo#%eBHv>PY|H~e*%awn$*@XQ12-P-Ln9M zUyymC(fhT;R6%~|3;R|GTD=%T0QG0;xw?N@@uo}IQ2?P8-tu|O2x#3aN)1} zr`onkqxHEA>fm!C8)+)+A?uWy)@eIBk`6p1sEF?@>3pw(cIrwmF@lGc16;!=Lwb7v zh)9x!eNSNt2V}Uu;QigjIW_K;FF;)z*#A7z-p2a^ldBvWvZ|mwDSp2IJ~;z=vRe2c%4v!7 zr|QDi8)+Lc6F)PnK9#UN$k$~nw+AtA%sXStW{HT5|PO1)O#iC_>O=hege7w0d;LI9HYj9S*YnPyHQxpOdZ zdQw*9mElWe07$JI_mF@DcQN%9!NThm=)Aup-ldhCjBmtS+|%j`Gj>xjQlaeg5KfR|uv9jMU`Dl*6o}>q5W~iY{a!DnZm|eo7 zX~!|^=ygYZ-q){g#Dqs9hDR?7i@=gdrdTdp32SVbCs}LAb@G#tnNp8AO*oiDVM1Pg z`1{a{DoObI7IbZIC7hbrXH6Wni6qYHrS0*FdYu2w(z$W=kC3YXz} z8`<8in&TnE=92kwDduosRnaCPt&$wm86(lXVo>Sd%y&L5v{$|mpxCcw4=Z@H5`BMg zc)Et0Z(D2U;|-}8r>#w4bX3qD$&{O9Oo=b?Hq~u7+L&{5lXB*}eGnmX*ZSn6&FG%PAcabSNPU-+LNY3#R=bG&9toK)R^|H>84 zSTvVByNTClBeF#eagH^`9M!l{7r_?JA>Tyy@LL~hkjrz2J(~>hKYGU*5MPto;7Qbe zV{%tmL@z2_0g`Ws#MUXxY3kCU+{l@Ydt2P8)xVXt7U~1@Z}HeM*{y6dep{D89g=Wm z{-;q`QjFM$w2{u5%4{K4e9$k`?;gsY^#|B*U(7kj8!03rT zAOj6ro^;5tI|y{vk2trL>vs+v^*`ORdcI_g(*^5rTrBx~AAg=_f97tVw$0EQ$s61X zH|~?H+sjaKl1m_^OKS1<)Gd7c)0lA`=27Y3{QWy+3I-VDXtMC>Vtg?>o4tuTEbfG% z#luBGyJC?Jk0gie+jAT7ISX$Y2ih%?7_^Flk^zl>d9LeJG$5M55EKG@X z94b+1(fJvE~=K7MJ{`b>!=IdDGPLGbNvz>+rWmCp{>6(FI zuYOw!88f_P*ETgJ`gvvYrX8iUUB_iUkH?!OK!7ux>ikJK8$Z8dP@K8lxCJ$P3qD+)Kx4H-_IsBOO*-QNI>PSZ|c|^F|f3D zUcj_zEx!L}yk0TQP2<!<6^e$ca$>th$Hid}x0e zo6VGc=}(81+qL_S)6ez_cZ&L%_^=X%3p$bs#`%eTiZL2aCUz01Y|OG}SJmYaDgb%S ztx0adcS|O(G#R0)%qd>5EcEiA+DP+8iU4_=o2G?Z*MtSV?{AgHNa+u7Zqv56r+5!) z76k_f&3U|m`BJp2XMX9!82YP3|fbYK5n>+f$Ya=RYNHmAmf&uJA{aM_wNT$h^fmwXRx z`{5@S5uFA?B&SA^n%z~7J#)qDX3uz4#_Cl4`NyHF*p8 z6p_Qch08+z-!}jeszuN z#xvKJWsmYIoAr*4n%YsF#N*P|2b$1z-sR~_tJ|G_rAIHUN(`8~aQvG(@bo0#(Y z^1m*_M32J7X`jA3RLrBnS!DJTK(I`n_F`k=7G?5H?+rc;UjM0=Z?K98u}G;RDp|i9 zlX5?{cI7Rb5*!N<^eVh`_`KTcZzP@BJ6B6v%bPFGI4Ponr+nfnvHJ^ibqWVC`ZJqK z$4{*T(+f+3#1h4^f!Of18K{&XnibZ$6&SS z+sTfUg#6b>`gK8jU${0F?kga&R^1HY&VgoStou{{RG5`=^y>Dwm-==2D05n{56FJr zFAraBzOO&{8iRD@@&^yY(Hqp@W)%~R569)M_x!k<3Si+2S(UdEP>m8$wJmlVZ|sir z!gQ^VP)G zkCF&B-S=+0{4;lWee3YqK@tNbeD?Qhr!C8G&4W1x`KxhMLkv9^LgX+i8Da4pv;qd+PZACDsdZ-kvTI-LnWjqN&bN*uq@s}5 zO)kQCd<|&3nzoi3$j6{bkSWrqFVt&XqhlIZ8)&efn(Me0kH>36p0(8ZhrnoV4ewF}d+SqW>J zpZQds-@%%4ex7q1i_+oN*tTDnnbg6)I=x-fK;@&jk|+XL8nV%_H*Ba&F;GW-W=+0{ z6or6|iO1_yb2*}B{*UMtO@nC(Q6_SdMHA;3CGR(1X5pREQNJwY`n>%xJXOD5k_Gs& z-{I2WA5H^HeBBXRTK5chgx3F&7780e@yXHlqe zNPwMt*m5g<2xRHwj86meYq9G$Q3?mGZ&#ofm@r~y);iTqZS0-X@4I~A;= zK-bvNG}rp!tfcf)bAIKJm1@%3cefe~-;D~FRl%IK48r?SN4Zo98#$F3?bor_$TkKzp5CDkS-+w~zQPojy zvnA>K`_@m#`1pUD`8EjAPMeU@)eB4 zm*=<_jU{QcnVMSsN6rV9Q8BN8hSvO)c3;AH)eH55EQ;Mv*Z=DHqX$_{pzK6rLS+U57t|t@% z{&@vVNNGyK2{p6vp@(l2t|sQOMTh9NeuZW}!7Aq|RGs3VBlmi#RuJSs+j)_viA99L zBNIV@`HR1|1QDljNrXnb-!T9FI0*aPW=*E1 z7j{3%vt2K45nAdstG9Zgd{o>NKRYP9`w$LpJCQEvnpi!*bSyj-xd^pu7Q`Z6!1p^8 z3-`{YZPB6f|6Db&w)w}=Oqg;&{Fnq_lBma-K1p~qn zTh^bwwJR^@U0V86Upl9qb?g>%w+~Ijbaf3mzCiYOv|HgOpwc043fY?1F1J4bI%>Q? z%a-9ogr9fR)@OCd+alw)lI>I1-ul`B5Al6g(S0m?+$R7o$+1d6fzL(XNv0CjZ{eb; zkq$pDYe@OjysGcg=u|2~Fp65q-Uidtl3 zq>_FQ#i(&2bN?GwZ;4*o3A#TkP&FWf^_Y3`sYqNjr6Qskx{HVb?~qSQi$h$NYSr1$ zCFU`A^`KbTQdvKsxUTqdr@<*FcD6US5(Gj5Nn6_=Y^GYzcPOZHO5J+mXRgK;tWN#e zDev6Ae94Zbr}#>uhj%;1N>{6~GUeR!o*f(gryMcpU*%t1-XElWR)yQF(U4yxIT4V~ zOr>YTPK1f4k9X#wOuD4fqg#zm6f^3G7{ne_C}(ahoxYz<^4os(CY)OFFGp6k z97n;+vGqsA`14S=ss>gB8v7r!XnqWtDVjn>V=p`h6RR@Ab&y znH$dh9H}N%BB2khFEWOFR`Q&jrWT^RR6nlc{+3sO(8xt-TWXU`1)0gz8|Q_z>>UaD zR~FyOH?7~^|AD+V%GD~1F#r~_8!1Y-{>5=zra%-N8A>UtkJ41>@#*GUQPEpHy3rHm zx0PnHxd9Q-0OT?F0foY1^*2CCGz#ciqxQoy&Lyx)8s@fHy%E!0^Ez;rK zq%;r5rCIJ{s`(tM7JACKCwlvLBVq#XQK*BJw}W(Mmhid?4 zd88j#KgUgI3G9}Id+ zyhiCt^PvcZI{>BJ5awR6&Lu<)9(&n4t~kZel=QpItxUvp2qYym0hQVCG|ss`;*Z+P zGNjI|>}9FK>{-tY{<-IL9Na1Z-MX0+ zE#m_OP+&rDDOt4BK>Y%vor^XR99PRq+;OGDLQ_MdGC5BvGGVfl`@^u|L>tb7&!-mF z%{Df4gg_P92;=r?#)uztvpvv?Ak?j73p8O)L* zMX@ahXmKC0o|n|?7~I@~HRQwS>Cdh2z1P}U{`ed&-3?x!JA#tYH&ZXdMVHUil(s16 zGGSoH&~qzM;nDEZlQ1jkP;A}j1!@PTDKQ{wJzYe_hS8n#i_?CG!*|jw!4wO5D)H+5 zsGDHp7%zw<%XB`j7ABs(46MGtqZB~?XlR~%ZR6sY)l5mH@fly6JUI8@_wf!aT+JAriOB_d&!j^#txL&KkpJ$`_!HvS)bWlwy ztGL>GLJ%$}jCSvLpoAL|gS&lr$l$n6n~Q;J!{guV{!l;N6$P0Ls_;YkPqUnVE?@eB zI^rDUAMB&Q6^UTk(>c&pL)wGUXo7zHU~Qo$W>q2G%B|EzNYXZ>J0m(l3(Ib)NgpW!26Mn6 z_RCN1OzSDitz_^(sq4T=I$J7}>dwfA0bVP55Y;rQP?fZMXRUv#EX;jw_H6ZU<>wbq z-d@$EI(SCg2bTp6)IC;blor41E8n=6sGV3E;j z+{l_5)BD78|C@pT;R!LMNQ6O`mK@<-uxEL4@wN)q5Q@D^%LhA;s!z2xV)-LhpS_R! zW5{0ro?o`F=Bz<*{a-HzX#smnt>|Vn3woQUO0aBH6&|r|C{_|RMC{>ZU2I8I6f|Lw zeA<)=Tn=sk#{AWm;_FtR$5o%b9jKW!NwwH!I0@wpHvp$_sHpHdMjTTZ0#6$^nLgb< zkL#|fYD!AJFAg?h(B^@AA1;9wcNpRldSmOzck575DYSHW?(0<7Mz%PDB5^e+_5HoK zqOZ`x?PQFT!C8S&RJmDli8~Rd4MWc7=ECTUx3n&sdC1TdczGp!?0>y<|My$8rc0V0 z>S-x3-bXNm+5{^XZHi+W7P9-xk^%qkzqztQinc@U`Wel+e-dBWahjZ&-R0i86J0Ht zVqa;PZjhf&`@>00VR84tQWPQ3fz#9@QtoqA{4*+bFI`#JbQKo*BpHOf{&UMN4|~1; z!ZZg=?CFFY;D@jQefBc9xt^7k2i0}co?rpTLttS0fHFDTx#jA2f8*Ch; zCiVwQ3(`3`V2in77=#wl_`n1`3Z z5#ijFY1QN5?}9VW;->x4v53v2`65XX5t+zDxj|#V`eI!k! zb(%zX2wbsQ<=7yK!_RWTRv$63y5*X2N69_5>~l^N{h{Mj+QJ`4e7?>tO|Lysf*o># z`RrhfUg0oidslv-9ix5w7l(^$rLMG*X_3T?ix4@$)$7OpGvf1e&Pv9`wZehRf==rn z#!{|U!RaH@#wQU&L&hLpw{06U zbE$7?wn3>cH&7baEsM6mrV>l@4yAr~_H;A6Q7ZQi1LCCj#hL=;)T+$W(L-!3VQw$< zV^{^{VovGL0OPy6mbL6@?g3wtbuhT8K9n{DH~$w-af?k*B>G}nt2x*^ub<%uY7=;uC>~6TYY&REQAmB|!Rzsy~ zoiqY`kl~kj+_;Dd=pZ)xg;s0=G=hi-bR{BIJH@SBy!1nnDGiG%Ps6sh(+~( zQOh7*SxWf?X&CYZu-+L-=2P`$Yn+q(>n=sb5y^U|&vW+Jk7CS)Sll>=AF!Yw=T!uDTYJUqk+}0{MVL;4 z;-01&d6U{($t5RiMfkU0`H%4NOb}PlL6pb6><|@7^dL(PgrM}6zck-l{Ze*!cWT54 z2#6m&Z~oE=IeTGvZnHFNEbcT*j3mon{LM{X_&kw=ARyTic@|^DHKqP{m-LsLy$S(BMJ?&%HGJu71Gi zr2Vsu_nq7>7pQM&wD%F4^_D#dp3YcBH$igMH`qu6bimSY=&O-g=~U4Z*I>J(bWp7e zN_Cgnt1`HXMegvcEC%9&%(}(uG;5Qoc6}qzYC!8gbCeTJhVc@9iBiRX8!+wPpQmXy zpo~F8PZUn0ovuzeL?uANrHnqrwFERFiW}G8VPL_UYmCVX0%1!C)9rbuRa>UbB%?2{ zA)9eNHqCMUZT$eMc@H+p8e)(KjP<1lm0CMBhyuOhXGLEozV)gk?;q5hLKtgfK7rfG z-Joogw$KOu%IKKrZ}C8Md^;=v1>({qrx9j&pe=m&|5XBOYXp}%0D&%Fc>Ld~iDX*m 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 literal 0 HcmV?d00001 diff --git a/preview/solars_clock.png b/preview/solars_clock.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0cfd86af25d64fb283f5c03379c572bb1142df GIT binary patch literal 21945 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 literal 0 HcmV?d00001 diff --git a/preview/text_clock.png b/preview/text_clock.png new file mode 100644 index 0000000000000000000000000000000000000000..94dd6724d5b6646a178c66ba0d7996adf9f66c4f GIT binary patch literal 41867 zcmce-RZtvlyN26HU?4bw1a}W^!9BRULvVL@cXxMpCwK@13vPh{1`Y1+o9|!$swKN> zpRIi`GgUn&(>*QkeP7oTp&%!YjEIW}006S2gs2h#KotW3v^)szZ3`<^{{Gtsg1v;M z69AwL{PTiJp+ms~0AfH=R7k}=`)Jk8`-8~~{MjU{$zy4f0<@GON--4_DjKF3`nG~1 z8kXE(Q@+{vOVKl4#VZu>66&=XA6;a5IW;XPTq#K*rSK{@*BU|tfe?{=B98A&%82>< z=-Yi$!ZTR}k#{w{S<3J+#Wsj${`JY||IfE0iX#Shqt_=ekz?5Mec@x!CRo?6rRpT; z`H|lxDXYA}SB@;73)}W7iXa0Z?tYw#IL3#sRoJAMr&~NGG*(|Fqp<9r~uAwO8Ta40c~wAUzbN364xWIBbMys$p=pY zOE(YR2aCfr!}!}U=F=ocy}Me7xsJkvL*GCl!G$2m!KRfHQVBV;QhW?wM}v0YIUuA_ zJbVW*WDC=%d;9!d`Jv2e)1rBZ{W#OEKFuf$5L-Hx45 zzz0;yyaZQl1?I)nWpRl)Pbh!ZUR({fxdNB?=<*Y_Jt2vgQ?-cgT2eLNTbf8n(FyV- z)F{u}9#*vbDK_Gs68}!mEu0F1y72kVWqWxDw%ki%qg`6K~psbLCsboVc;kSe}+pDCsrJJrg zcTiY`g|=K;CV)nkzif{x=}g&KqFRTWi_%y1ZuAiKE5Ky6U^6BVQ2~Z}2O0~i`Aq`9 zh@=h-d**k&7{CHM?@zS!O6LFGF;{D47F9?H+(!70R3<=?1;0y!8zNZvBRdcz^*0I@ z2W%93i18ue8S&gdS&*U0GClvxSGOY;*6OJC3im{gXh|-v>F-A-w15F+_TJvtw zoxV+CLde4@`INT2oif%V*IJvpsX9_|K! zY$IAZ=JdXMKX6(_zGr06dfpOqHIpU>Q}VJazwKx^U5{5aET#?qG7sRN{n2y?6pkRT zPWlA{e^TxA#mR6jEA(}Xnmjl@nW%6=@3@gb_ z{uAHpJ#Lz+n*dYo_>*vcOLF__RFrxYOADRp+wFS8 z{r%sG-dl|67qm4(Cf-XL$Tc#lf-~IS+ zBhS?>1iI#gBuCC($e#ECZT+-FEXFz-sEP4W0=}M*h8>Es?CgZs(q}GfDp(voM;Sp0 z=E7}}F&Kf91feaE|F$*VJF?E#V;jPt>4ILRPli6{%QZxtb0!)MIRU;ocOV+5Y}0ur zARd+$z%TbgE5=9yl+Vd+y1P8G8)9O|NecI5{Z|4D4^d>pCJLfW(Ez?$}Xy4lBk4&4eVHHvDGv=uWlI} z9JKrJ&sBA^5O(^qJUPw$c` zki9U8n6PZ25uHI1sm2Wbj*_^tJ`m9T{kFF?3ZS+%`1W@s6_zA%)4_=#p>@KLBb&_i zU~X{}R?xM;T&9toD-%t&eGw20$46f4rT>ClaZ$Hv%3e*g0X1UkGTTi-rjv87b)QQH zHd4CK2@LLb*sXie#WMP6ohu5JL9)!BSEssVFVCSS0xMlRZI+E6 zboW;zcbmP@`qjHac?qnp_JY@xs>!I~?t&JzGsu=tYViU)PnI{86N?S4@OdUD#=Mz6 zcMU@QoS)9WgN+M!gB?uRLe}l=A0>vzv9wg`&E}ZBGP;>^P`;_%-!fA_Y9#NYAyv!p znrA0;TD6L2aeUnM>=~O(%Bx{w6?TY}KMVh3kveBGp84Dx=DY_H4eZ6_yEF3P(DTUo z=doJ{-50)oe!e+I)x*~@d2>UWx!Mh>CC^yKhD&Lv-#>vwXfd+tAGM8hUdg|U9iEYQ zG)`kQ-n8=%kOKi2#2Jb|>C<%R_~~A!M)Bu~P?t(yT!jO|Yo7+_zI&^}JAFZih9#yp zbxt0u^>M9e;Svl4h!N%OfT5RXf|+U6Y5i6fDUXe+x-l-Y=ZwFxX2c%cL$bUDq=0I= zgmQ_xo9Muo-f=Tc-wx%#dJk89o9de#CD($YqHl)cgF={wmgKcG@A0ehN+TX6#iS@^K-3LX+R%$*ba{L|=3r>4?!PZi z;ya`&@f26TRR*dAH|(Z*HVMuz8uY6$E3EgMqDD&cLio;iZyvc=9KU{S{*n4V(N>Ku&6-F+sRz2&ncQNZfOd~Bv9b8`LoKh-z(5%OW8HA{QB`W{5$;9T)y*CWz)#z!)4kbuDXv1W{UGNb0<~=u-k;@)1J}!$dSDyo0jQU&nw)f7%YdiQWutaFR0mA~%&Z4C#JNxuXOuEchP#*4rIq!~v4fkikT zN-F4asg~W@ci*15%(-D+vzAOro^e>8MJaikmIVL>OT3F`{{0wmNQkRFqu-_2Ix>n> zN*;$XrQJ`WXI-wV2qq5^YAep9T%Ub0)kG=K`JCToTdlvs6b^C&1$>3CD;;=%+Fxf* z&w>`~IO{DZDBJplxNPT<`xT8?Q%f)&05BGaatNcQ?+e08yE%jd6uSF{o16S2zq`&+ zf)IeN@{IRVnFMh8@5Pqiw>S+%>v~jfOQ%|0-CuI_Yk{UmGV)9+DI);XniKkIbwCW;^*TDXRdT|!q_Iv!y8%)Ww>1xy@10D^;Jw^&yy zhq)DkAx6A_HXJzsi)Ns5g8iP8uoV*P9&ysMJr6m-*_XK43dtOT(lJsEj|!6~7?qpjCo)K91z$d*w^RKa-anD2W^`I*<>feX_b`vL{eQ$U z2Z+8OLgqmEBrGig@S9vk5VlX$776RmFzV?_HYzI8*v5a>26Vk9sc_0^EgB%cWy&h6kE|vqvWGb|j>gt3`wG}pLnZTxfuBA&VcTP;DA%xY3wil6S#nI-TZ8g{q=E)MDTv7=l49dWTci-lk6;^^n!p1j2D%2-ilK3EG- z!?rTnA85-Vsg5sIeBCS~Ol0o&*2gg5pXib=>xqj5OjC-rUCO*Fnl>(y{|-MjKW4-H zyK*GDgb%Tagg>c^I$W_IDyBzSpRWZ7A|Jl4GfaqXCHb@oFlW zBZsHeIDGsO+?(Mh{~R2D^;Q=G$g$E3bBtB7O;N#c#rm5ct$Qtn2Y!}rc?k|?;tpY5 zXU)M7#X5il7kc zm$z`5A&k$#lz@ZP*0${Qh?S>yT+jQSN9K3Jb4NtYTkEiE2$B8LoR}a?QB2oxdpwc+ z)G2nX?Dl%kfuN|9h~6=G5P{@k9FGa;Bq~}ek8D|fTxDN4WP(b2K>-HfyT5piJ^8*~ zNaogZ$i8Cx3yN}EbaCAkH+;d%xBDAuCB%T^zlfA3!qBPIrE0pQL%#b$8`tD2M+;Q^ z=vC*&`Beai>08yv4nyYpgC4D1IuUL|$Rn%7yU(_i z$58riRA}4&c9iekhoN}vU%diNTuFY5`evRc!j+2rmyDNjxv{ngq$Hj@Qos)=*hB2H zoA1W%@D0cPKOb;~XmwilJ?YAP^~H-_@#gAyet()`F!fsAB-R zvcrsjy9ebZsCb3&Kw%sQS{z^9N(^$x!2sa^(L1~Y%<;fdbO1ywC#m+=aG_}{nE=Xv zsQPI^mQ5JsAoLst>oK6F-1^*%22*M3yhJ!t43K}U)!q9-1k6lkI);iv1*5arK6iPC zqQb;+hBOdSh3A*H<|{EYNN@Qv@-{ku$jaSYduQV1er-khZ)Eds zYf_s!s79dV2R;2G6AhIM>R`aKd`;<*d3oF+pweyBkyBdG2(aLp9t%1nOv1#~9Vg`(pN3w0m#K zl%BdT^pvm&%D&LrVY(%Q-LeQthW8STpoJsRDTuTP?;PTgaK!;~Gi{nrOV4(7gF)y( zbEO71zckdhSZ8@_z8h&k7@oiH82(mG*=>pQ89ayVaC+;o{@6hw0G)1s$(44}30`p} zYEBN@588XbSy)+#shioTOsXh+?Ek^~&ROTm>Wi*R9;Hsb_r?1rwWbUcD&s|aU=|-k z*K5VMf9=tULTmNv6z%&YG3iK!ItnJ!)O5i!cmiLOOXM}BGG2V1j-$7`@u}P^M01?D z0uBvy;JDafk}}w|@UNalN9XD5k~UF~)z~o(;5=0oDhcpHV*x00e4s*d8Nq=K=|ZqF z26vIQ->bUbsx7p_O5dSlEf#w+o{(LS_aL!E{C(hUdTZ3@btRR$DrAGT5x?^bVpO6ZthQ+K%Bt6wvsTrm&jBX)YqpS z&DU5ulX#sz+-sJ@S^TVpFtUVMvgX55Oey4*G^vt38elzT z+@&>4nw(_Q(9sulqd!_TuX{7$IPc_m`F6mIFd{xQa?wshq2*U?$F)VSTpcceGzhMA z-<}pH`Wq_AXW3g-e?u7jmV5cm6i;=)HF`W5`uFHQ-=uy+HqIbWHA0vsdr&T}5td+C{6_1-@j&zmEd@9jtR=9EWA6mn_zS_l)@4tBmr zn@LHx`S`PS&u#wBnPNe9Pj!Ql&}qq4JC`h__hkkwq-!4E)$XBv;U)Uzh)S84J?gcB z@KAt1ppmTemnRg6i@Uer2ByNpE)@nOxke~zeir3hrORJH>vH#k3K@k1=%KrmTUIKy zytMT$woxh397{{5*B6uz+F}SU$}Yc-1vtSX^!*2SFp^quZ|n_h0?J5Z@@kHc?nEWNOOx?TNx=C5PRWG996TU3PK`6GP1 zGRZu{{zaTe`P)3;Ga$wY?)Dy!ZB;WhpEnY8uwq{Zhn&$8+C3JoG;(G z4o7$7Fgr`H{`P0Fpv6w3^1I>8eF!Sjp1xz2wB1HZzy1*NZQ>_#SPBX;vS}PsUIE=e z0Lk6rG-$KRC#hywVRu3(NFcj-K_|c8Up;a>xN|U?LMY*sHHgzK8LCdLRouIKK5;hG zB@}~eD96Kd9+aZP^ljT^I*1r@!QRoP9D|enN1TO4h}pfna}t{<&CkRn^}!b3d94$* z607KG+6O$?*0~H;U8LpE2~+VRu~xpDtKTgV6Tx51IajR=M~d!u;FjRg6*{gk9IReq z=b~d;@Bj76DS$fPL#XKP3G?OVR5T&BHu9x$-obx)A2Pz{7-XB`Jth3NCNHh7eLR+E zh&XXu@4K9!aJtSe)R)tApO6SwrLG^4LN3M8_xe7%6FB>mY;L?TBePt#n+RA?<^7_W zwA~$Kq`&Uzd8-s0rhVS|-~-X1v-&#>OQ&WEZ5v3tmX`s3%`%X<<1$2`PBX01rRH>&ze`^XmQNPBz12g~$xOgR=C#BYTG@^Yg-{ym;?ftXsh29Lv*h~Dlci#i6d8d= zzULL1-VugZ<3M3_+OD1p28ZXK`uPn10UM&0I{5Mz7NJlYA;#;dz8R07Zl5u3f5?c& zhDw+UYJa!9)UO^*Si8(_prXU_c&ic)z1+N;Od&>UJLWToA>khkRqiT0@6(c6Cozi* zHFAo2)VOx_(n+92C|DPMl0^H51?uy=XxV#CF8;$;9Y|?hKRQPoIADl!Dmw;%P)N|) zntZi-1+tUQw+M*b$uAZd640>LX4S=W7W4ARPmF?5?hlHl}Qyq6@;F_XK{u&(UJL|q9DrxS2UO>*xdWcAvjVS_i=!B z_zBzJ1V%|&lM#8xA8o22U#Yn0ludnn+-EFIpu5nyA%zPd{_jk+a@A%qCyxNVy1&)Oo6qeI5Z634ruZn#yqWcvxkuT^k6J*h4 zQWeLj=m=?Ezbgff#DDQEUd7mXT8J%atNk4&6tI`f#2tTUF|5!WhHtqLmQ`daV5q`> zl;UH-sBSJMYEmIA*u=epllq@704)quqU!7EtEO;U+;SY8FM2v2<*PMJ;#5I1DM=n2 zt78J~iljF6VGhp&o@(6Zio5>G4{x;7VefZHcF1V# zUpUYs9Ias3Vy**&9>?Ul0Ko*d@*LSn-TmaQ5ox0b@62z;;g7VIpMM7wZ@!3)Sat<5 z8F@wuqrwf}>MD@Cgy=c6N#A(rF(Ukn-DdotZAFo=Fq30A!>=s=7Z^1F`){v2U&-Vl z7T{umdwm?V?GoN2|3L!Yvpgb2nMA>G*2K8yy{pEHSAu`?(6Dq?WXLb5GJ?$4G1B>9 z{Q-b6rAwj=NTKB~t=`0=XI;6!FoGjFZzpdgMz;?Do2K{OYvW*ia$Y}^-`h89PS?#= zRxLYrQ0R6R;MPtt*zM@wbzAVtT{1e;^u>z*tzdl~`O|4hNa44JhQ?jjstan`-8D3b zTP-#^!r5(RrN>KYp8VB==p7-veT*v2%>Rqhs@7InNi*IJWmg|)j^&rO_PPif3?xC+ ze2i65s{TCCXx1=vXh9X&cs{@|Lsuf-qIFuD>9C#78B;97d>Bl@Ng=a>FUs5F(|4!- z23>j}t>xv>Xp+Z(|6?8#A4ql|tX=-GN0svaR70O$3G$9Sd9SvrdUQ&K!twD-?uGos znsQBZCj>ShVX;E=#_x7Cc0px9dg&)A+6NjUXz2OSe>#cn^~?=KKod22ktiC-_x_kJRlfOPx&;8aWsx`O>I%cT;gdJq=FiOiX)E$r=Olmfi869z*OKlZ!$axD1sG*d< ztF&BSH?D1BsC22Ay;!^^Y2zesw%2K z&X*IC179eNic(yhZ!0d5fNhEMn0@d;=-cAAR*$)_2#xWPh!0#6)1O!KWn3z)0IkJhp{jS(3i5qcF*;J_V@YnRcFRn#dJY0%A(}e}% zo8$)FAj!g@GPrk4VwNcaZwnihT`~%9BB}x2u8N z?mP9XG49pTOxH#mrJ#R!aB-&j*3=plu-(PP)4Cb$H_|^lAG_b3NQ?@&lRM?5xWtOn zfKMu(VFk}5l!E-~mZ9Gw7BLz}FyxmzLdxE8QEUPEJ=}IK8yg%**-;XgW;Ht7x2*%K zh=MwF!=m84ci4&KmCVuD{USAdG&?)HXqmjI)O4_tXjzL3uUT$$@jZfIzKU_&o0I_m$SCp3HPR;wusLwG_2Dia>7sV=7QL#Nbxzj)0XC*cvy1(e2MxU=*dut z6g=J*A{vAm?+@1HlL1Zz^W!_nxJrq-OBl4%U~wA|6i7v3G@W|7Oq5OhQ$iepsX?ap zCwjxLM!MTDX=~l}7kGzFY!uJ{J~E#~Unr`KtW`G}@z#`;;6%r>CVDfSG2$5G)H^_j zvH5r~>gy3^*$3E>?*qYtI__T99LsNvy6pK|=FF&(G|KxwEW{-{uk4U2pg%nL=N!je zn;qmT0EVjMAkj{-d%ruilBX?x7)QzUYaJSa4Cb_~xQNe8Zm2YO`V>`Gs@~+33R}qA zzo2XmK_KDB7WS@27=i=rad#kCv7nN!hMCQ%Z&}0zDIsPppKUg7AAQ96y;HP02*kw& zl{FY!W_wu8A#@=Gq=dbY)7j?Q7h3T;<;wUQop9dnR>ebk#*-wEuxm}rW5(=u|17RAR=#rRq+g>s26a(+i$6+N%ayri`*tV2cMtPGl{IRm~ zXjG+fbBCRx@4M#rqM1Gq141MnUD~eK z4B@@Bj0T1oRyrjnS}NrhySio_ot!#lKc#1T8iW5EHBWrhAstrRsgK-&QToSc>59yN zWeuL}usu~&QJHHzQPgQ>sgg+>BmQo`OL@;i=VYGvuY$tis;vnSB&Wm3_770*ez--x zx&I!_v|0KAFg{w`esPJKZ|!{#qaf@!gY%L(DPPw;CHV8ZI``)%4O%uq!LrcaGL|dE zIshQeFSA^dCCeJUarpeB*~vB*6D=`uQjd40<9+FpUs*-X$Aj69QdgG5U|mIHZROy% z7DY$AxW*~nF$hxiOD^X@>uJ4DgN^duSlUrz_yVfJmb=b4xQbPe4&r3&B_ow99beCR z(tPEal)lUPS_Z@P!EWJ%ZYFlwU?z+=<1iH}oq2^-l(v~xTt)KPA5h6SDR3DZeVOd6 zL#(h%vj28idp$V@sE{=)N7tXAfI}7Bpaj!>xs|HqEA$}BaDXz^_EFQ(Lu_fI55Dw# z|0A~AL9A>%?;RLhKIx8aB6HpIe(xps;D3g6UTrI#+K2!$mDl z*)TMKGmJx=rj__p_>GKB{5fgB0N#L*UAgY=@jQ#fbzfbGE& z$fLlQBl}bdchoM}-M~943RZTmEER}n60}N3NdjB zk|saxcOO!g`Xcs}>qPID*tz6LF1xqo8|v1?z3Ny^B^LVHy?>uC>&~ylDy?ST##Qa^ zbq6ee>tN{t`h~UadBg=d%kpk7CpSTH)Vy<35zOr*y}VW?$LTZ$RN2#(y^{&yPwc(j z7R^+xM@AAj-=Cej4&ipzODv5;3w<6So64KI2B8ivYVJpEsj%g$&+|l4eBFqqZHZP4 ze?;g{$0ucZWEB%l@in-wj77q!1sS;XH1B_PG`==5!HuqY?(T0#U7pA*uGY3yY1Q(U z>5st|oiWtSt>#==JX3nAl3{)LnV-C8BVCO+o&2`rsPM2?S#MjuN2X;+oX!n zJ(p>degr_^^X;yc50ECa(=`^~@|qouNQvngJ+C~h5kRV! zZqu=FfPACLY%1jsg7eZ+X*EmNeF?`j9$OREcD@2irSXayUFVZ;feaBWZdzCHu{A*& zk-QsP%&K+Ov)b3jE9YfVMsw^c!;6DKtL0UbuCe(b@lnI-?b&!cH!Z$=^XomGm6}$< zmPE!X+}hd#js?|_R3P2L=|dF(yLR4!oh4mb?&ojt-$D-E|sMc~|CSWjp4@D0V*P zh9vR)lwe0Ez}G0hoK6Jxf!@F30pW&S82{mg8HC*!mzkdislENVz;$nM3HT`Lz5*lkF@Ox3VrrR^B#QM`4yTCQ7fFgMEq0qzJGg^Q3I<2QiM%qQ~1em@8^?um^ zQr$cKx!73;qj$$`pNG(kA3|)tIs5J%|M{gjyHcs1$qmD_CP7J&0s&0n}h6mgUAMZ{w z!H%!wBNaI>4yJq2o!F`jwN{r9Ih>J8C-FeiI}x?*Uv)J|j`qVTSDEXLEkm!5QPsbv zVO6^44aFUAyZpfg4+8WFj4<|d{>9eaZpF%P;oFLHl3sslkL34c^4YT*sGHL6YE|-Y zsyL?@-zr!*w6BU^k#JX-pi-zv2?kW1O!f3V4|3+3HQ zfvPh+pGN1A5|zt+4@y2f7!F;Y-#Zy22M8lSHywaFDrmINCyZ1xK{&C=SK7W=zUV;l z&gPgp{~tm{5))K#zW*hs+b4wvmTiyVaAWnsM|qx*2k=0X8mYwu64>Cp6=4y^dO8}$b_E%ZZNfJQt_ zsu0A3wvy~uOZhq(mfs*fe(gtMA#}__?;X5JH48@*9m#!np_eIbW?HG9Z2HUM2a`%?TK{svb1 zbw5=mdmF?{3>(Xb`uAhsg9Su3Sk4hEIQwRWfmOTIUR_A*sq{Cx_S$koBe#^)u3c}4 zdIDf*-eGR{Ov1>;!s{U|Y9c2$p=gt+sND2z9@WNXsr@&Io1gcxLAPy3_HE@T?_(iR zzssJdUenNJi|JziE2sJNW(Nz*FQX`NgUdlkK;SJMMT2vE`Oxe;`C+p@AmVpM_NoPm=H7W$#lk)`%uDL4A99#>Jpnw>Nkyf^2o?A$V>7kw{9WKaNZHdThO4$^w! z11gEVgB&+|*4t72mxFK$YT5}vN zTP2Vuo9|VF$bLdSi<7|aC+_knJG#3bxgV-%0&)d*ZDes%qy0@-~0!a@x4aAVo4|o2A$3+2Y#S9k9`Lz4jM#eyz=02kJ#DBR`SfzeR>Be zEB}fO#Aj|2=79SXJ5~NvEM+%Vbz@f?1Ok#d1dR+7KQxem(!|!x->bcKNY?udKXR?! zggwzO784Uv24-76HVWsaH@0SzLQ&m_In36odv!FvS^@e;Iyrfh!T2zMP^qoeMiA9r zF#5vBy442<5#3NMFiyEedCrS2*Fjjl<2(PwQS`J7?yg~)uR###~D?`yIz!_pug|zY2VrL<2 z=dU}m65n|4Ci!%Oe)scf)2V&cY$EeopRM5}n2iW`xo0R>1#akE=M@#(RY zTO=l^@%}+DR^{TtL&HCaWY@_y?eVF~$^L;eVbejtW$U?{uW=f~6t)hj)lOI>Nr*gg zGm9v>fMgQ$CFv9WX2I14=YT{%A(;nhx7Wb6Rxk0msbFO%HUc1s`!y!M4MuQD`b+-& zYG8eaZqQtOc-iABxADN$pZwSL)Y<4Ik#P6)Y=}rZlhM3coxAa4nHMKkhDXtfgxUz5 z)jWkfBb^@+K>Km!+9svemXbn}fJ63iP_Jj&8m>5Kk#wGAv$Xy1dUx(WEdvP3KWCAc zUDaev&%H?tb3=63;7B5~={k!Nc2ldX6ClxzV6TcYgaSk(8GD|6akx7?0^Jtu5X-h9 z_+f$(8P1rpl8<7!j&>YLxPV}o3Uc}g%YK;b@k0Iyu&En@!+F#WhX4?J%t3i@%@!iB zDG>SN4CUn92yl6tR@k^X*J7%H`75e`M9lF1Q8^(=ZH~7CW`%1junx8yE zNmzew6`KgTrL5YHZ>fw-iyGChfvBBd2kEJe8MosItytq7Wen5Kmyd(BmS0z&YqrDsccw7Kcrc75hM zm6K#X!&Bd@4gK2zpXB>EG&j6Rl%jkw@BCKxxO1D&x};ErK8s8IhnQ{rYC#gnmNvXn zk@&s-#Zlx-4_m|&!^qS00a7FSJuZtX`;9GGu#C2B(XUGU$UbtxM3IN-wkrsya4^{U zRDeICke*z#P}|a)w^%$OS3( zqQ@ir=B$2SyewB=y-?vKL(%io{>E3Ynt&he7g<9B6T>5&vI*X?PS{?LFh7>mj1B)! zCr)4B`wyU(RvmLk9W%G1PL`VYIurNBTg$d}T}{25E+qz$%<0r^UZUnb4vO7~xEpe| z`mm(BiamEaR)dZz!T%P_={ET0$2gCAhiW^9MyK8734Dre?7He3O-r!2EZb104Btmc zpnna?t4#CbvUucW#tp@4IrOUcgOu4iVzMtxTEMam^~a>zl=TX1JvF>KCU3uOEIVB# z!9Mo*U5Rgpa&Ws1nh%zzqruWYbzdL8Q531;zx;mpkf4W%TU*ERv{Z>N>&au|Z@l%W z;hJ~JAXOMimm_RfgxEb0wEpq^gPo5YZ%jJDbxpp8u75BuZvN*sDMpSt2CkV#>PT&w zSpWdTk^j#jQ*A`L|MbFJ=Xgv}{<}h6`KbjQmf-S7m?U3Bs6;{>Vo{r!^_Yt4=P9=T zt%~K%@cCaetbR@p`Vx_yQE(1XMGdi`_w;Yxc`+>}CTuWnVpqNws~+}k>M>t+kc1^> zNc&)g1z@n`Kc~{FEHOHGhuVrd+wA%X03Q;UUzP);mBcJ+(EwrtK{24>=Y!AeeeV9d zoo728h1QYA2kb^~LFnKeal==3()m@oHatM^{6FcdO$Gfwqo9Xza&dV@H$=9GANKoS z3th8g@#xHZLnO(8v#7omrhBtRLPVNGxRxf#2D+R?P7e#2JbC44BnN%57*&$&sWQY$ zFI5$9`s^ZjQjPUl%bOoLZ0z1=?;J-XZTGXrg(B4moVb(hknx6=<%%7n$mSMOy8EDa ze1Sy`ol|!jjGi1RW0_}~nE#Di-H{mIFI^myc|G+}SXi=sEG7||CUh*DDR0LQg3{3^3}|kxfR1QJPKqkFnBT9Wg@%9MryCsEUd&?PC(2vi3{M1CFI^Y;G6jdP^ktj<0&UFD53ESR`x7o9lc&|UyiG&vO;5DM83lhf zv4$pHNJ~)eF6-y^3UvfU)Q5Vi^!3#qXzQVX)RMmfEWKj$(Jj6dOOKt||1z|XM_mdf zB2eN%mM+uth#;HUS)y=s1)KITa&Al>t^bZGT?;SSv}4HwoV1^4rkOvjgKBfvf&2kF z*Ljq$0u?&$Ll2e-4-CWwqHek=@%{qJP5ALTZzF0#4$&unOiVRCI{Y)A_9@BHvCydj zPQo!ANGJD>h@E*#KdX!lp@H!+B{|~ENpFh^#;lit4iN7@mHH&=MY^b&k+^cqfe^I6G7HDsFl3W4Y|jfR zgL;TA%?KOsTL2icSO~|L%kcJ(urBMVE?^+F8g_$&ipRgR?r=>UNATl#yZ%TdMO*Z7 z7ro*YD1I&oDK0bJzb=3mx`e$lPkPKhb^!z*Cjc3{BhgYZ0Jb(5PD0;>3 z`zBu5LcUmsQL!@E?ls?rjzJJl8aX5?kBtiQ(Z0h18Q)xd<`48`bZ5+uS0a&;oUuKx z-WC49=i1XYAuOthNcCQuPt{cUip1G{IRkS!@pS(Ca<1>3jhRi5muSVyK{wQZXp*VSnrUm#H6J`I0i4FzZs8hiX1Nb)j(61APZAMsuDrpkgNK)&mTP^o* z46EJDPUWK_HQ_YxbLUSqApghG>W57XK)~i113E4FuVQ8^s$*o(DQzGvSt--;XaaL4 zBSKG0FJNyDeM4X_gDD(-hsgDcBkKs$$#=WF;Mx?uEH^7@dG~v^QQ!GO@r!B>Oi@8g z^dCc!(MCFO!?&OCOT0Cld6l`9dpMVO&%XL&bl9DJ%KJ2(GZ!Xz@H;5IChh8P3Ut)h z3M=EOd?62!FuBQT3P_{cY%dQYG!VCRmXKv$jkejpz=&}1hoIE@TI*x+GC$j~sNa-> zR35P-QC$3Pa$Uuxb{f*>Y*U}q-y7kJqI^TAjAyun`rx#nO%K;P<|XZyqv#koH1wsS z{Yk#a>_m&jm>8rbx!K9z0u(d6e?SAytUJs5g>DXeu}ShA^xAD^Sl|T`1ZCC%x;)AN zdF}4b58p*;_Ge0Jqn?HR`pS*>|wsrbs2tMAnU`d&m2zzz*5_J7$JyTkN_iek=VBTyVF z!2K3*lkeUDAz@!Y>PMkUj(-5*LTnycWMjo0|_}5`G0783x+t_EnT!4NPq-_hu{vu3Ep^ccL@%`A-Fq92=49@ zEO^ik?(PKl0FAptBd5P_@7Z(boH^&tmFYiF^;XyW)_T?>E7KeZ2((pjT2*&Vh_uIN zL;!YwRfpfEmV=@{zv3W=>YZxvRDLw?h*&$salbNz*y%eC**rAXNz^s!y&U+KUO$jr zz|RPKj()H-bx%_sILIqInOQ`o%XaNf#yUBbS=d!cUcF&)<$F5>0HSYX)LwwtuWZhC z=}U=I3@cCobL@vL?xQO3AC-MJMAab|`+*SdEn!^<#MV=E&_F!qC+qI!rF811p*y-V zhN7$Bib;OP-rzya1kc)xSAPigMwdrH^~1XCs0|XiW#gEP#!-l`X9HThajzT7>4W#4 zdoV#vMyMbT4d91mm{Fp4o!FX#7$TSTC~kReJT&YzzkN7}I>qWU0oR`5@-V;h%Q%uJ zSq`@szUo{=#ZqvOieiZ6xXML>lVb7w^<^HC`_)Uo{b2FL^gi51YrI=Jr$~t|3pv{*~{y5XlrBd+V zi9bm`_Lg4KGJ(d=sg*dmH9dViXk0dN??Q_tySHoEPQZG}H=uxjRItt;lnl+v=XKsX z3TNypxape((}+xb^)}SeI+t#&dE{Xti$QvOXd~@3*6bOm1v2VBnUz^@K^DGq%ghuM zZ{FPONYrL`Ek|L*F`oY2R_tkPNSvhxBEEGuknRf&6Y7gY1Ja6gExKQL-~g1Hq|c4s z0B@N&(w>p4G#86-E?sQ}Az~~Nh3lBl6&CoTO&3X`{4StUs7OKykiI1{>HETa(~z%v zdC)x1$U@|^XgM84CuutD=9OZ9hO+3aVXNm9yD`PFy)FC4k-{ljN-9`hizA>aLkL>)jmpv0c1QY> zQ(;Mh0Rg?ACTAgzsZ&}=Lfm<=9BwWxRbxv3z!D3 z9!O&fUn)rXa05s2Pg4;*;)YJ1sXf z@~sIExf0%pkjWbs|177$tdEgMzqkw8IekX0_Dsdg&hTjA=Rw?Nd$=s3`LuX&{-qPD zt$!3sYlEdewC%Y|jMd41EAnV{51dB7KdSxXp8*YZv4yo_m}6QlMU3V`dYqBrK3mIu ze2a({$9j_|=(nm8Nh>obThk(P072JS!;UK0Me%jq1ApvmY+OH#0)^;MSov|Zw<6ia zNuAyIt37aJ%+`myTe9-OSe~_m&_4Q0=;5^UKFqCrPW>`K11x)&D5SU9ZTvvd&qlMu z<%gwn`FPuu6v}U`GyV7nEPvK>ZKqpbcUM&p^~|%l|B-(*GVr43$NDU~KXzM1m`-fo zY`|nN!i$`}X|7Tpjg{qk0cF3QRKa1Tz5(2K3^V?Z$c*gys&n=`==zyec23{k<-{{gzJ1} zcDRNC5fJI$05Q0gUPMnpd$eiUo|yt+Zs{8D(6Hk{s$2u%{rUIc6>uHwRe0`AqcXNy zzcfOCEh6?n#e0!YUyw}j;UFqMVmBIX-mvWBZNOA#DVOH^kyZ{_%=a>v1TkJ*DR(`B zG!`m>d=H6|yFngpTUh+n_hHh4(BX~;04TwKlkELkxvf8{9<(-$5mdq7mwTBI@e7`P zLn{4PP9%O6N~z**L)LSwaxH<6;3`-?ycQ^=raXjK9ftAExl=h%>ZZ1k;a82hWZl{k-^Jz zVOR2`HSzLTC-Dm~Q1W!`|3&90OPVxdk$m;p+TI1N^-PH~Q(Mz-o!(2Sg=>79Id1Zf zknWz~#VpJ7qs^u<;@cx!8W%UpEMH-jkvuoz`#siH=k9Iu>Q>5HH{_|FOo(6*@!{BLsuQh6k)WyKG?865bYpK)H$wV5Ro#o~B>MPiQ zwwO8~NlmeGd+%7fAc*}Q)x=6dV)3xc94UF_r^RmXVerGl`KaL%P0?8)$$Z%FDuDw( zq;^!R7b(vX>I#n;z9YsTHiySFu;&T0oA`sTCjGeUTMrs+>Qe%aPQVUkE9CqOOm-i9 zH7HP4*6*9zXxllLOb#sZ0Vg7!jBMog(r+}s>VDq4Ouygt_jhKc2B*vhux9V+Ed0a%u17(q z_5BrWAcZgV_jUJVW*^Hl^PMhQg%@eoZdaE@Q2m4>f!*E*^*-6jRl5HV_hG(Y|B98 z_o5?~4WqvJ#uKXkx^HYOBeQSxFfhbBp%#08dVN=}37Ka$08jkwi)06=gC9&fw8D{} zvX#yXf#7S`DHLLsz^$l+@$obMZ&ABJpAoCW(N7E)LauV1&dQ+b3KIc4($mE?90XY;I+*Z26oDB@HJAb@H*9O-@rqJ)6? zqo}>W@jE2MGMDY6J@4>16ND|yxEIG4iYVOVYSr~(zs5AFfJ$6|2`VVo`OV_G=~%%% z%Vj9yQTqDvFOHO&k5@^E($k4bRPUKlTzbTiPkv?+9l7U-WujKOkQP&!KK$$sa^wic zZ~+tr2_?#G@~t*=1nzFjGIYQ;1n-{_lEjydjxQ`93%9vUA(OpoPy=5km~DEpKK~q& z!Gp_s=RUzNVZdLLpFVD#cOGu@;@+>V@^EN22RiRszm2<~NzqLt8p6Z*=LQYPkX)V# ztBP$uw_!HGP4B41$P~l1K1GQZ7Y?}-2?oqV-ykQjAko`O=1q#rt(?$9N z43P{$GHPcWCKvDGt};z7P@=XhS9>Utk$4f~u<41d`_m8s6MRBw$2<43@Tl7M&fO-u z`MkSODqzC@jqh!~p|zpFyc+7J_Y<}+o`}v_{xhsb)}>|OKv4~N4^YTe>eN}9jBo)l zJZBwe>p|NyA|8rf`|*2rKz$Lt-okX7a&;frXwIop)FPva!bz@O$p%x&z2rj1+dtpe zzbeQVauD&0_I0Ia?{&vQkuO=9zYf#NO{2$ZYX=J8wb$WH1CW090+4kKkW@%$$hS_+ zCeS}0X_|lF_RbRNno^u z>0lLSR1nrk4Z@=L-aK=hPZAm}P8|n8nfVFGykeEtF933c=RbljJzG^ErVD+Mjg9fR z*&ij_9#b=IEhyo4QrU$j%?vjl4oK(SI4`f%Lz@!XDG{+T-9OZm?kZ9YKUYf$KntAu zQ@j_#x^*>x2gsBB60fXccnQ0Pe;FET-@AYMy4hiC=*iS3%O0qM3aG@v3K_HrA!sq6 z_9@f?jrz*qFi*u+jo^sDtT(;M$4g{=I&iEa`!Nxx1qdXDW0iXm#oL#z0A(CR7>igF zdZTy7N{b>s(r$01^WJgs?EUodQypf2Rh_~RdEukF~bF=pe^sO@u z>7y*I$ej>B98WK<-P3_0*-(QVq&1AEg|I7*q)nCJgyhjMvR!Qwb8Mc=m8bDQE$ger zw3i|eXYI_^Vn zY=Q{coJ1N-_k(EIhVk3{3N$Ddur!)hvcE1v+*4}i-SP{B***Nhgl?~-lZ0RINdH|3 zh#&)0&zBfi#KJ5rg_*^h$HplVE$FB46!yeFTwEM$J-)lKSp~O|{Rt`es!?~lrKGh( zM7xkgi2(*8i0m5f2v6OX_cd$%O_BY}SkWz(0g*7R$n+Gy?iZcnO7y9BJYS+fpu5pS zjy>k=?=)I1Gt>ws*Lqn@^q#qX(KPSxLc~vMiN@4T$b8lkGgrJwco6wAP&(*A4R;k28$*}` zD%2O9#MEDNc3xck@Yfy&J4u$tyw)`u`~gtw+6(tf9*FhhezM2K6)hwwG@fUcmr1Ds zg@|#)6IJ!L+S4Df4xP?+C|XCNW{77oP+PlJXzVGBa~oU;a*tE)zkaZ=dM-%pORz8G+yR%|`7hs5G*Nm@*i7A2;fSQ9xZ`#551GWGqf!7E0+- zDQpje4*hE>yLkQsQu=&0G2 zM_M!mX{z;fn(;u}GcH>HUEh*f8Mn$1>uWvYe7b0FYg zU+zct1#7w=i%ci)FO`>5 zm5g8^q)>a$4^f9J$E2 zjdbFz<;JnDloxlp`qg9S@F+A2<=NkR#N{%p_od}p$8~s>k2E$SwLz~pIdm6n#t(;F90l3seb`8Sg`bm)>U)$D3jqc&~Dthy^y<)i(_gIb#v5%Rw(3J z*!QR9We@(7?Wz4<_MK@++M&iMLo?Bj)`2~N0FmwsLy21dYD{UJRRildES_%f#Vlzp zScApAl|1>KqEd>AUOdEqt#Z|VZb>zXXPxzBIN^3>P}*;ky_oU2V4)X}jQU_(s=yU> zp+7TB=cO=6k6_K;sdGo0!gzvhXSV&4Q-mt;SK}3#c+Neb1mKh@Qoc22D*qw9=$CEAb);~En%zLQ&@1abMUjqV6<2jH?1f6Vks%BuF06ONpPT97@B|HL=z6;D1JTUO z?NA&>!UQ3O{8TW><#eiRZieL}c93PKt3Ygv*7U(#jgQElZD8YD^v3B=}=e!2s2 zPAus$K6yc^boWsM@)0;{k2JSHz?)o*RfWNhAB-^y+uQo4p56qq?qpA`pa5dfYQa~& zheF%iqevSA?KZ!M^L_4P?|0~@lZAGN=l(CPoy1g8FB%{l zw>$fOhDZ#U7sK_VD_vmOp7vu5z@E{G#r<0)J>tP~l!RNT*JV^p7~>+vP+ztbd1j3o{39d)fAMQKGnq8SeJk1`tLS-D zQD`n`{dSFZXwjBxm+4~XrTAB{(>P>MKvE5d`L?-q8o5I-UMqo72@P&8?!@n2BYJE& z(sx~G&rpg|BlLTkOhY95Fz-fNs(U`g(fat+e7jUKcKpkPzgn`AGoeeH}Lz($jtA3HhrmPBB>{7p{|(&$*EeD%f(JNQfx z$|xbW`-cPph>0jHC-lnPu!PQU;(bW8zF_Ow?INKib`-;{}Es#qy5)^pF$gm zd5Y)s$dR`B+|B!_u6aZ~ZTo;PX1xHF=(#y?Q#bBbVaQ!CdqIFjyDf`@AoJ(2ZF#5K zW2c>T$V!qfnit=@95OX{e^VOU(m>W|kbd?{<0}yj-HPv~6Q*Wa zGgnE%{3dxIaq%n5JLhQ1BGU!0HOFq7?^zqy_#WudaIp6NRDgfX?n-M|ztQ$#kir`Z zDhgcl9SanZ-+V>V+};#^RO9tsW@~_mb9XRcq4`bxRDidrc1PsysHrdel}O{w;?66EEsqOAW!{;(Yz8xonil$fT~DI(A48h7bt&GnMCdFUG6SEcW?jq~?~@ z;k5VpRR-HZ85GKp`I#nGm!-du>*pn-3eLKH6H&nOp;n#DWg0lW=zEE2RvK*T$CK4)ZTlJQ|ss>peXUa8gLbeqg3=%4flIsg{HqQ|=e75~lIKJ-&Gi z&d`t&10&-;kEi8d_zw~9d`o>u|CkdLI3SpY!o8d&)7D&_{lt<(2rilV2^-m8X=ze% zx1*q0^i{FyAlV)5O`B$J^|Q@8T0$6zoaZNA^%^CGJyyGjcuAn-O~!}@piw9OR+~OO zNHff$1Kyynt?UWHAEZsk(yDK>w3>U`tF|xwQQ593c`UIB@@eUzwIi?8gcvmvyH7c? z6|jN%Z?4JaWES>tW&m4z;PASCT=^*U(Lf$^Kzil2O(rI=Me-_=v$8w$D5OlA_xfNz z4oN)!AaYS2E35Z}dIXh9;*c@!|H3bErCA^BYIY3V#{RZ7AGArFotn1yA(wuF1 z0ier0UZ^N*LE_^IviRlX_Sr#Kk!zFu$=o|pwlM;~4jC~FX&yvA2$3H$KJJPcrigT> z#>?gLjalk*I}RWFv%i0p$!r8<-F(%wkb(9<$h`j?28I;o9lC^}9)A=uY9qL@y<~kE zwwUBilzgx8jGSn~`dz_F{Q#|%SpH2M|8ZPyUN)W290y+B=RdPF6w0>d`f?mj{8Q!2 z@~=loxw%lush{=w2naPvHJ<;>v$*ZjF!c4Dyc6n@WKLn>(tney=srH*K-Zzq=5F=@ z?V3iYu_765g3EOJ-?RW8bwMp39Y?4%Ex>UvEFdt}-ipP;jEztI28oi1V=qW{ll6wF z@1ZbK?Ca?R$oB^ii0}ig-fdB(k8G055pCa5EcDy8_&0aoeuqo;x8QlIxE2wa1TU&K z0~3h=G&N)JJU(3;iL zD>6OpA6|`$Pn{3s;~u%tNLf->Y0urV8}|dqKY?l4ygdg?-#hc6F{RIHZojDa(-!MuHXJC#w^Gd|S(!ZEJ!W6+iOLrsTiwdO)`4vL ze5&EtAWVAy@U0J)J|@GndsgvMAvX&=EpbEmoQ_0B?V%{-Y1y<(auqFG_N99U5C$=Z zU?FPbhvA9rEl-2w0 zz@H~Yw5qi)tIMC-C z2kzfa#5VP4(g2&;04(`{=w0gt@d8g3Ph1P1+=5?!q&y9SWrVTqjkJW%iN|{lcq;=GO}JuMO~|! z1|qa5e|vpF-nbqXw>G5pG_;VdBQ5d0+eTd77zGR!wPvI?&(zAQ93Np@_bB{+^(2_S zPMvGqW4PMS%G_oESL4+rdn+M#zWjt*)Q2A7E8Bht`BvpiuXW_>_9Q(w>mXPe);mxhiFaHot3uxM;{HXrZj&1 zme$-qw!m8<&$&8%;@Axh+ttt0+35Zb2apej`C2>riIN!S&3DmeUh z@zlXGfxDvlLKMno8_xp-B&^p}hC2IOTLbUt4>PM?unQx=<$g&2S76CWu|U@Rs3!Bn z1jr-H5eJ&l0nwc{(D)cN6bNVofb}YNK#iKJ6(hhEQI(dskLlw>fQv)8o0?@N%l*@M zYu@_yW$o(VTblTwieZfnGjjCXFz&_N*DbAr6|Y`PcC{GHC-WB>=t`-lQz1nWpTET- z*S>su9OJYfgp;ATG*1YBMW(pGBU6w#+^QIsv<+1zhJGvZe7PeGxF3Qc$inG zNfrln$I^L2H|$4$dV8a7H_a&Mrf5K~d|h7J(O!^Evb`)cfhhY?KKFJ>v{cMW0kw_F z+dAZ}nJ{K3A7grQe@duW_UACn44iwE=$J_5MEINu0 zN?Wj=={kymkPGY=9aO1F`kD9R(Ix~=^>%_%9vh~}0FAcc{5^$Vp7Cxib0nn&DS57r z`vW^Oh(r2+!gsz}s3iLGqXtMQQ@eY=)S=csV`kU@Mvtbht3>-Ni^j%JT%es8engQ! zmv0?viNW8(W(~L+5d+w8mO-LfCHA!pLl_UdGse%Ui{?3r$&ofUzpF#jnvR8CfuK!> zeD|>CtHL1x8T+Ti=Ku=92aR=ExVA_1I&owIu#79>FK2Qj)0C#xqjY32%1LHC{p5x1 zCXnF2;Pw?jlqCgrvIWQG5?wZbAx2w?_OA0eQUd+sVF03U^T$#RZNHtqs;GD5Sl|ry zTL6bf(bu(v;k)IqW+ov0s`(*hW_c@+KuXbPSr-9rU3a|8`p|gpf_ph+;fpy9&uCrZ z6=eVJs=d}+gzRA!XWYwXk$NabPV`*bl)P`(urihX%JQrj z$U)(FnZHq8ai^8EdBYQJ(tCZwYYq=v8C`tYYK8K4L`sWzo7+9VL@YT2GD{AK_QLAS zkJVlI&?x80R^4jQL?q7S_|rBQm5@}m+k>8Ywc>EA`+ms0@NFHx;0P6K z2bIi#y6Y6e8(J>pD8f#AjU;)Kx7w`~X3JwTKxcwpoTRL9p38|k zTvZ%sQL0deS2l~I%0zSAAQs$Lte?zoZ8V$RI5^g?CB{MN>I=pFyyH^JMCog(UgIeTG8jIIKgl=pu6>;BR zTb9&`lebB1O*c746e#fI92o>uyDYM{Hb`^hqdSZDh~J3`PNn0B0g(3S z9q2`p5dzpgIshZtDR2O%QBv9b7jGB-HQyK3&ncOm>Ws5UHyVelM7n%1hEpTzO78Sa ziGKgD6X^5l@M3)d7LdjhUN61o?cNTvw-TL4&fT<=|Iwn(F(HLFP!i`KVKt7t^pHrq z*=qmj?EIM$2(2Y7Wp{xeGbD)E@L<(XHzDFiZhCRAnuhVIf4@?zzqtCE>Mt9}01_cD zOs99R`0k!tk90m@9-rvR9;#-k8}D!c1W-?{FwnsGA{)!e^h4MkEh1?wylnrz<&Fkl zcW$L8x7$kXJzk9V8c&N6-mW}AH2RI&YO$_!ivrJ3pe9k~YND(k*6!`$F_!yGE|ne$ zh}kCg`$Gv=Mh*(qD#$k!^UDh*f|lvPJeS!D{OIIoYq)ocL+maA8!5K?G5Nh=`T6o(A=CXuQL*WdH;g2TpxXg9w`JKy>#aRnieZzh%?Qv={<}? z@^Of(SC zNWi3{8U8tkE~0rzW6x}*?Np{NdBZ#J;0@ied6O%v)JGDEYXWg<@MVzmGqejQ%dvcZ zU8$+&*D|7C?ezX6%DcD{?1MzEGiy6A?WQ;nereUitw~b6QLZ5%)c?Kkk1gUk%1*-F zV@2+)ce;`T%9|X*8K^XKhWC}L3<9OaH)j+qV;+4bCaI~>0(fiIPPpVvGRew=|q7{QfT0Xe%ubQ%p*S5PQB z5KOR05$LKk#Pv5Z$Ja@qxRC^6hbs?qYX`3`g*yt|S!~Bi7Rfyw7PUxQWo7Xx;#8dc zUi|4?Lbn%&kMqes8qop&`rEtI8=dHmAaWSbn^Tv;t<&&)H%A^ErCk7L4?{DmFlbQN zrZSeQ%z8L<;99(^#q3S#KQ$o4z6NXzom4S*w=8=E>Hg30$7HeoH+l=6nq(nj-XdmQ~W@d--n&a`C&zlAIV)#K;oCiamWo{O}yjDFW=^AoUQq2H6U-u;b zQN7>T&%n;v>1bgsFZJvmB(7s^y_deCfx16ahwK*^oi5ZMki&2VoRWgOtLzBxy7I70K9(bdNp04j=DR z5H_q}h2CV;o>LUif|_-yJ2NJZ&~&e3f6Goru6n^xL46nL$beMlc)z(RJM=vka?kH< z@j)6kF*>G$j>GUUO$shnm*K#~8x5jlJ#~va11<_G@uO4p(;FY2PPnSE{k=l=Q(IOY zA~VK>6!n*tn$d_iln4X#d#>9fD*FD*q2mt*18L}oTN>!GXv}M@)Fut~M}d>{{)qkp4YxT;JFB@82!KlRv|H{DL8xGv|!8J_GuE;vv*rNwed3Y>865CJdrx4v(4fD!}!8ZR{{ zoF+tsYGurK-MeJSW95B(*!KU)5Uhbaq#NVwi+ZWHKy-_gN(TCAD?&NXg%Y9=V|0K3 zpV+3Z?)7*f>inB2*o6%PH!xQ4{+{`41S5J%wuq_XX=?CFrXL4jaDqz$)uC}zkdXD1 zk7>{0@ePl~1yTpNhiv<;l6n3yg}*Z14HmbA0?u%YL#5y;&g4|^b^I^tLL0+V*Ieqtm{=r$G$u;=UrdoOJXza9_cbud^JIOi z@ln_FE3KjWkIGai=JR_>q18OT$Ex3N;q&Zv#Bj;t58#!%Kr$S+Cv zQZ_m>UhBnFxvegp!>&c2Cq(HYAnuKtr4VGigpGN!*;jd}mC}>V?yC=eKxz4>F*|q~ z-WTlN$*?fG18dfJ&yD@ZBV|;-Jo7)3k>37ZKa5^7@7$iBDMzJcI^X6ruYz1Liry76 zyV+NGd~`1r#=jzSO)`8&%@OyZ)f~3rw*BYu!eRFydM#Yg-7H&=)QMmHNq73p3~1#d zr{_O}W!$H_vV)9lQ7S1E zfs%C30FPpHgr)v#-s4@6L8@uWyJ3RjmZZWED;1+4p-+?fImPA{ zhWQU#_5c-g3Hwl5W98)3gps?v@|WpyFDq+3RdftB zr8P_&?lsEm$|^f?^ZHeL6^uFXWA_GExvF@;(Q}{jvVA|94{q$AK>VoLUoWGQ`qP)U zpfKjoo?kX9UMbblyjz_O*CH)f4ArVyt14$gQj%Y(JbPN&%%_|0rI_OfgYhiv{ip!T zzz-RF?0MSRsN~1 zPJRai2p|xv^fvU&IlDVc1<}B6==uVY^&S)*;-QB+!@V^|ARtPe6>h6friu&+#EkiC z-W#MjljEdlJ2@%oapUJKJ>7j~|J_(HKtL~q1BxrRu_g#!RQi;7m3+4t{(W~I(!+A1 z?loA!S!N?(^4C4USHHH@%1@Ps`(?9}OO9k4B(kE-F?#YAK6Gbh8f9FDS62gkKY%%j>}Smi zO^=@a#->)zYof&uchGD+Cq^fY`BaE{O$&s?Y)q*`|7iEew$0)%N04|U7y0ARlU{eV zwd|`$f5PpG_*1NMrC`~w?kZR4yY!=!U*?qF{9->FKDKsZ4Zg3^imreEHCN3|N0?>2 z#kS#g{^HU4yr{Da+k`n#T5{l)KJcY8PxC{9RK0(rJ8k&CRA5)WS&`j{aU*+K-e(0r zSvaK)^sZg6ghL(Xt~RW69^3X}A5D7s*hc1WpTQY8X3uJXLP^HuN6*jI0=LUmL(3^~ z&Sh{^5?rB59nF{D?4o%uZ5Wdxvoz)XB!**9Ja4aC=(0nFjc(S~ykKJI_gd9&e%CCk zylV*BHl2POOHD)PExw-bB6Tp%ZpzO!l~LAFpl`k_RhGN45I5LI%lxCVmR+jw0vWJu zIr5^f@?AGvLI5};=-IOT7WX6<2Xh`R8B5$+gpr%=v_j#ZwZdOO86nPirFmwh5-NT7Qp60Z%KhU=VC!q^&s7^|@paAppCt zrxU1AGGh$N!`x&?{EvABiV&o41x=g~R z*Ws+tRmp72-5d0_jp>ZSYyXY+wQV@3X&*TSp6*I~8Kd}Jf9?gVTbjZCGwX?v4CD)` zp$NMM=DatILakoSm^z#Cd&A)j&X=TV`gf&HaIsS@-YnEJ-!fC3!@z9YFGJ$8&EZ8$IKzcCM&~gL*tc(E9gF(FQW(d{bZ|S49#*b_%TI`UABS+8 zji#UQt+C?^fC9pK(MjoWHJzTw|7f3J;C2Xe&DJIqy}G2CQnIo~dTk2VpfSv|yIUuXTPOyIQ?gY==}$ao_7d!hV4a>D~NoRKSe z|6KJ+PGvqW($p<7jl@uZ*|(erVjgA~;MB{1MJyD>G@gd-Cv`Q2sWLd0AU&l$UF+C+ zkc^!joekA&nKaqnOhj^8)L3zkPqj)LI#wFG#WQMexaY~ z0~PhvEmX08^?lvZ)c>Q9=*NT}BIys)$VBL(CPhmJ=&Oh~i7ScD} z(P{Z>mJ#N(J!P{WV(lCla3wYtE0g^)p!OJ|S>+=#D7c|yf-vFk)fus#*8G6z|KQiP zl~mn~<*)r=iq{{0l#r?g2lfhGsGJyTZet~|C26V)7`yTp|5sYOYPop{qmP#HNdL4` zd=r^GnsNW%6>T!^{{K&!&=2FzK2$B)L%FyFHLIk$antDie-ySE0aHQsSuZw(fJPes zJKi6~{GexslG7@h76VA{z}{Ho%0;Ccs)?nig30jFFSxq4&{Pje)#~n>>MyHB{F1%W zCjPvgM0EVX+kv~mt@mq0=yFB2R=D7E0Cl=?KbeH0&)9>%E&_@e7f=iYpbn&#=*5l@ zg*x>3>Fe9NCduc(2DdB$&Vk>Vnn}Mf7^$&YVtMh{#)lF;xCK#vcLeIHBwNS)lsjL_ zIO5z*etdLDQ|JPTiYT(kYE(499@YK|ycYE;>W7JqO)x!V4`F1&FLfmJ=!*z|5nAPt zUGEeY&z6a1oB#2}v|YLWKCR9E{{Kbc7jI{Eh(Q^wMoVV&y}P(bKm}LAq<#-c#A)rY zul7iIhq(O2&6*h=b9R@AF;dB)mk!_=zUlEN((&qy8$!l^nA>w}d--=~mX%(urHn?L z-I`D6nffPdC%u(MX~C1bf>)q^uZw^byy`=_f!eFS_lm{zroS3jEkt|vLcHts56w$l zu7d3e5yFrF+9>CAe%0w*xzR-%xbAS{L8s;#11x2eTAOL!>E~UhEkq7#&l+GH-0!~* zLPdRd6Xajvt_@e^kl8kVQl8Lut6e4hTR>AoBr7LJWorm6x+tdnV(l9Accm!u@10qZ zel_e$oxe*YWS~7FclJPw)N=A$F8zF;FqoFDJ;{wjgAgWGyu52A#D*ylmv9#D{V&7z zQ*g!x8$orZ`LLgN#5_CspIOnx2EX|^h6xMtlnh1%6zXq~C%3$z^;|@6rXqq&f%;9r z;bgNTc25Ff#(o@#5aQUTMPd6#w-xd4Fs6Crgl>47g@E6QQ_kPN_5&Y$KAGwY2eqDu zTN})Pe{ocNcMqfZ4~Nn@J@>!*yya%S3Ue{le*NHu!H7dn=c`4Nfh^E&&I6uvvYl?5 zQ@?>{J3WQRDhCB7PJ&ek~SlOd!b?X0YlF)8}+lRh5!;T^>RZ-$z&N8`XAOrts zsp>K#p8T5@0G>7dcYD>uHRv@QV3%9b34y7s5sYKG(jJR`N++pS*6h5UoFFrQq>tVD z+AJc^LsGnl+w!uGCPaxl9e$gtGS_ZtRzlmKY3bgI%lIV@%CLiE-sjz_i{5$REg-P z90s(+pYc>szkANw8!4`WGeKnX8l4bgiOod_S;}b$OM63U?GSFj_1$O*(>!Pd?^&>K zif`d{MTxVYKUyBut94e@X@#u^0VQFKR!?W_J3u@&hE7S&cw&T6BU%r{7 zs(5mi1dSv9;BRqADfM*fuYj(~66CJw<1e$ZFef!d z5%`2;_tao}-|e+sezE{>k*B5hMk=-jXhco12cKBPfpAU1YZ2*dzXo>}xgbeHGclw@n<^ynn$#?&bf^T>D6?VoF7o>iKsk+`7|$x(T& zKgC&E=5&4Kusyk`05ry1Vkg&nUgesy{JckIO2F*@kUG(nCx%RerlqD`+15vgDR;F6tTr$26Om`pFY#c4b{eYZU*iVsrf#h zAi^Ke7>0H8d2L@B(Q?#BjpY*uuZQ_I)EB@{ww7Vf6EGzFh$Xnb?+ANqO_yrUC$dQH zy>m+PV%|CQsRDyU=&%^%H4CXP9^5aS!6h@lp$e}riYV6ED<`|-YX8Y!FQ_+r4||N+ z2sed#rgc>=R(4*Z7M~yg7Uqsl;aAAl6vCN7@Fc<3LVR@}g7_V#Yg2lW^zz8B=28Y8 z=pDe`X)gP5g_Iv9^pDP#5Novy6JKqvgS-NhWr@HC$J;!79WA}RQ_Ag6_86aA{c&CZ z7dB*VU@zB^>2E>TT3P;$lPVr}&max8f^KC7USal2@500D=7xW~7!_sUVnhK5*VOcn zS2>!YDOEOiQc-$@_~fukU5H2ZK@)VO$I5@@TA`aq!xFz%eJ}+Z#`wjrhuiG+ zImc>gG-5$d#m};dR*k!du6S;H^aZ6l1 z;(Z)rv$mdIpIY!yov5TLBIGKX?LtHTfBQW?>pVpGDygxm@h5meS6D%^Jh61-DzYN;qa+uEi%)-N#DCY zmkUCIsoEGjH*-7V9Xb0;|9EKa*TsQS!JwQiY%S3}ZOfl!amQqgU~`|isH2nG_8jqC z%dO0f|99)=V<4ybWc`cZLPnJ&hp#l6yuPw@uh3QcOAOrDKY9I_^MS5BuEo?{UTV!A zWvoj+2i|ZO(yD!Az+sQ_kFp_n)7oa{eSFoAQV6BadS+f?$h zWWV9{`e;%xR`J%ke(CytZ|kKO1drsY$q`ZKNr!BbT2^DDg>~xqrZruA$>^89h}!7o zjp;fE*0-lxpYFn4MVH{!WPjhzUAu{Ic1>IazCqK8qt|$kZ%fp(VIl?MrRh+OvHEe* zlm^*0P`jty42<&GW&Hk&kzogl-)^zFc3~yW?jOG!Q6JQoB6u0>8)^!B*v#e{EP76iH0jFovf`3`1KXI!lYT{f@77R&ewbSOpJoj9a+BP6I~>sQZ2 zrGrnXP8Fqj-MLCT$Y{AT2;xY#dA?tyozt2NefaquT3PW8b9o~t5N5A)9kel-zT+$q z#H;~2oRnexhDN?tTkdIm`N%^6B9)g;pPhbmbgqO!O`?RkSCKdgl-e3UJ_y>)u4XD* zS!mlHlC@MUN@3UbH#;XTfVEIen=1@_rV@XLW3!?K%ddTj>pd0zFxgsBRBpOppH;r2 z*Gz1_*-l16Ab2}E%b(@OuTYUnT!MhCT22WDnaRkW)E9-AD*?X zC{`W^y;kD=KB=}3R=ilo?!AWTGhmGaExJ9S0yBP*Hgnt%Z7wt6QAsPo`Yj@OcymJc>9>l0Nd%CU3*E%MZyix%vmX7hUF`^Tg?8vw z+d5o=St$55B$+hI=!%PY_{dqyis5eJBX~>%Chx z&d(nyk5PGmrH}y6D&d|c?y{AzCV)cO;uh`53ROto*L4hAN zRFMuw2pAyrPB`56nRCuOXXbhLynNPQux9VsYp>7Rv#%?d2X&AG*B3||PL{Q7+Ye~L zp{nhkYy6G5bvoAGT3nmQe_?4hNp`zkwfo0j(2jHM-y_!$%t%l5^B0saek)h(Z3|At z2+O$}_Cy2~yl?SH)Lw)LNJs)H%#0a#&xZp3PPfdE!$&`tsj~kuWi&!klh7;W!Xos- zSWRo0t;{;l;4x;+a?7Sk);o~Co{bocLtN>oI&|3D(Dj>GRnladdP@X)E7#UL%s{!u zpksU#0agj|_dmqWN>)_5_k5zh)z)r#t@WM$;cUyX#q*0__o1rVO6<)EM@Mu>iDM$p zKV(MwxQVQnqe3((_7^z)pS-gUw($Mf-PES<2}c|XUmdW6w$A-)t;`~nCEJ0{wQt~sRpnN3qCr`!Ne&QOA&>B7-4izm8e4wn5z8KleT#I7Zn#a&>B*#7Zk=c_#`pPk0+ zy-qH!lshXAaRrfLx-1dPm49bJT=;G$sCDDfvC=}!3v%K;(OZ9vK2h?@y81Vfy_(ZGdq*cycEP#nz{9i^}C{? zqLy=!+6AHAKkFZu-2c3Gr=yLHdrdcWy2^n1dF(Ic^|H#QaWm=+oHSpaEGPSRC!Ur_ z(?Aw7ZnUENm+@F$U|S>)b6=Y}IS@a2Bdz)1aH`@rhj>U0&_4mmva*1YTrJsS_e{bz zd}a>ugvX*(BriR|Qc7i?xS}HpKOx@_UQWIiAKat#L(!^`t|rvHgO84DF>HUF+xgBf%RUCNjcZutxH4bx zt9)Sb>RT3j*0y%g`BW<+{~fr{wtb6r@{&oYkF7;2Hp%F&MD%nea%HZk@s04-vkp{v zAR;6F|DXY1Y~yz?wddL1=DNDWAHEoobGNl@RfQc8_`-I?c;VUPg&*ks#3Ufvn~aT? zRDkPAv9>~Et$goatPmwgapq)OabtE`@ad=wC^EY`dESvjeFXSJ29fWZzQcc?!`#^>^26GL2Q|2dt_SS`9y#lof4PaiGe-)AKWn_qA*!T{T8jBj^U_uWx|1SlFpKuGz;$DEfKbd?XQU=-h|Mw!vWT$zjmY3m zD;YDJ8BJ}TP;U#Dx{qkQ7WGR?PCJ|IK&@LbvQ<$41J4dqVGVPs^&g5sen8q_>t0H&Ms?s!G4wD{#9h zgcT5(P~0&fRPzKrK-6z|ygBG45*wfU4mioci( z?F5J{iGB#li{1;;|;b{$(Yrcv%uMSWKt3^I>OoZ6+Mro61kbzjIhL%0YCd4562! zwV*c(pSM;}YfEhgS9D5JHtN=)mICb;_)#r)KC_r(xy?Pxy=zs2!=Y0FZ z5Z7QA_*etnmq4%ci9P6jdmsA~QT9d%A-`g_xz(Tuv$y(qT9n|w_$w}pDX;57L6U@n zNL*gqfB-4f(2OI>eQT9FZg@CehYx&2-nVK*^fLLJnzY1$uJaf} zgxxwfgzdHlr>FBT9;nSJ%nvox21g*ADhdrzpG*eYCX9e$nf?eRGq#Yto6)0FY8$Nq zZwF|yZ@I$edj}Tg0`i4viPiNAjfxE+xn8JnIpe{+z|Qek)o*V{9JN~5GZZ<069wD* zBT|AqkBXDjM?z4%e*@lFvt+U7nYO=r>3ktLrTVIGMt=AcIcep?`_hHM9bSVIj<|&y z!pF5tYK6BSlL>aurY{=0?*}BI`9s87A5}xP_z^JVlm@CG z1~aZpx96d6$(sI!qp9_e)8Xwv)gn!r$(PGi})bH=*ifz9zzx_p z^V!IKV)3o=wN>}#i$H)rbcid~x*i)-0X5Jj}(W|s0x?pdZ2KJlkQqbGcrzbPm*$k4=CI^$r#lm&VRcdLiFSY zXZNpI8oosIoRl@R{bVI`7~NLz-M~S#SVx1IBN*f>Y zLTpa!8{^6fu3!NByjJkCV@}W*y;L17?wc7NHFwxiwV6nvFX6K-xcag$QGSKf?gx|E zNmY6pY}d_Z{6gO?I8xy;!`GUOxmuf*)1?I_-KW#U*>ho!uxhC-^nf2fiu>9?C+Q1n zv=iU!bORXS0xRU30z-9AuFBH>cAU`{5Ekp|N|f|jbi}f#zoaU6cY~k~wD_<_xcA`4ntxNo z{5&rFG#isV3f{XS%hXgX}o z)K?iB$bVAdQI#!~(9_){&FFF?a{eUbQrs{>2P2Rg$Fh1XxbCWPZmj@A>hT_SV?mLo zbNMr7Z8@{BHzb^8X@d*WhUt-!cn#pm0WnZ~VVH54KOQZ<`vWtgf9+^0N3SpNaBIrz zk9T^-`3ih9o6DG_!i4S2yql554MDyr)9#w>0&*g6cJwf^R5WACG&z#pRDLDtM9!iP zJrvfa!i8QS5(}Pt-{c&1I!6a|ma2@3XIYHa^^$w4hY>TT&m$%dR#}NlairVCo>M1X`eO zsjYfo(nIC7>b^(`25I_`7VtA?fJa4r|IOA?-`aD1rX@nYr=)OEAkyp5*%5sx9;LyO zo8H4QXB)N^Ov6YJxF~pmkEih&ua~x9 z|C>Am+O3g;BmG2*`VB`r+on)`E!i4LjD=p*p|5A{;>oLSlHyxFr(aJR7d=(&BD_7! z&7_@Zk2zevv~d2#xp>qw6iY7DP8usW*0NR#-ntVJ-p=dq(RAPgydbpzAee-%Ba-R* z)*lUInj!eN6U3}E`u&fUNHce-!+%7+@qEXG|E9oj6uszE>=hfOe=>cJ4&y$SaCeO^u~Cc-&)~js_SwN2W-2fgf0S zzDW;OvymAbClHV2_;8lw5cx`Tqo!n^r?VJGQ<>+bD*0QSF(WgaNf{80KK~r1UT#x1 zyXbvVbjHoF@{pWWsRO{&v3#bfq9sC2=w^}GQ?0OQjxwZTh2wRlgUt=9v!pQ7NZK_Q zpH0VaQn;RCX3K~;B`2Fp|2cdu5%(#Nqpf<7F$qGSWG>$BT7`S;n?kjE3l3kCbOFa* z<7Wf2WJP(ow5`p;xhWk-_J^pLbm-AmL#{KqKnC+h-@?d?2kpd4 zeR5WRIBj^<$lV~Kq6)!L$i|Tj398^re*`5Z&3JuJB&A@>{-*olCOlJu_`V#gP@-Kz z9V4+KPOik0%!=m)0+BV?$sfH3E@QJtM&n-~GsGVy^1BXnf4r3;+Qh(L#$I10J$Bh& zrRb>kC&a*aMl$uS8*hZ+eYgUcBm$>8oL`zjL&RFVOza>>t=@Yz4gOSFi9a9O+EL#2 zkJtbg18i{UaUT3HbpK9%RIOcxDcljEHOX+w3joN_XQ@w_g`zefBSrHgFUTBa5Rp@E z4Fee)QMyh6w^2}78|4*=_BwIl=^RQz8OW`#zj(7|hv}zk4f-oq{)SRfs$WHkGD$CA z>a){8M(`c0!4Ty19#qfzq0jiwMhUQh9F2AO_I!yv0|zyKG&H%WT@$jBn{K_T0zPR2 zzfrQ#=s6k>EBdS^+WLemGFw2(puo7yO5M6vuD(ouVDg8g}# zok0Rv`BA{pK8otzy1g)c-_5n&JC-ZokYh6$K{N1E39m8CG~2jQ%k2j`iC$O^U<3zA zaOJQ)z-9v(2KP`w?VV#j`R|^L;r9IdE%t{7wVzO>OWWIW?nmUur$HSHJo)Z+=Xc%22 z%YNyaS2O8>ob*_^d(a+qth4;vY4Sl@1hWlW92(E)slk-!fawuw?+|T7Ppz%JaXgZ>L-2i>WetjdYYcsL$1J$Z;gR?Vh0@V~Wu`_4?6!y*Hm};wQ zYp=BbHAk}~oc(!k9h@#FH`s|03d%6l+MnBcbmN}!sqnPkG)V4WyUf zV!-jl1Xrz>gg!#MrvTJ^WreGYx#{b|m%g~>g}DjKm3?y7W|xaa>tx9f&-~@3%emZ+ z@7Y>Oi8_cJUZ+*+*NfpMKm4Pj=n$*m6Y@lYNBMnieF?W`Me?>@QK3~y6uTcFr52=k zIfO2HoPr;|>ljelapzm930jV3e8Fz}lBKOil?V`^Xn6kfE>H{s z1z5^qgN`QtofuC9?7CpWLsMZNYXf9zVI`ED$mrgn`ipZ;4bl>cf#Zk3xBle|+}@IZ z`*wKg@7SVb(b@2cy*iTh0QEV?2UgHQwWN2e$D*5!DxK%nwTC4)srx+apHX09IG6~! zf}zgxRQ~N}GQN6OIkNVr)aC+QDW4_Y2Z|gYZBBy%Y~m+}`!#%Qwdny)M0#rJxr^q% z6KlDC#vLkt$4>c+IUOs!S*hKn3>MXvhQ|zcG63eVE(Hc)SW~s`OF7c^lgYitdU99pn7asxYc~yIkfzErWB%#PyBpu@**cn=su5WFt zHzrtaFk5Tbx|pq}9WH=8QtoQutSNcvUQ;^<9cLbfsPU)#iT-K49f$}#&6yfDY38y zY`Lo#4AagSM&#&873J4VP|lOMrn0e|enF$=OFtgaX??U*UoW)55d)|cupm+gpi$B^ z`e-`5F(3Xq6}FY-FGJfm9g_b2KZ%}jVRnX>vfv>}DwM5IL=H$U9QfI*HuoacjTSKb zQoO=W<9tlS< 11 ? "PM" : "AM"); + if (hr === 0 || hr === 24) + hr = 12; + else if(hr > 12) + hr -= 12; + } else { + am_pm = ""; + } + + hour_text.text = hr < 10 ? "0"+hr : hr; + min_text.text = min < 10 ? "0"+min : min; + sec_text.text = sec < 10 ? "0"+sec : sec; + } + } + + menu: Menu { + Action { + text: qsTr("Settings") + "..." + onTriggered: styleDialog.active = true + } + } + + Loader { + id: styleDialog + active: false + sourceComponent: NVG.Window { + id: window + title: qsTr("Clock Settings") + visible: true + minimumWidth: 380 + minimumHeight: 480 + maximumWidth: minimumWidth + maximumHeight: minimumHeight + width: minimumWidth + height: minimumHeight + + transientParent: widget.NVG.View.window + + property var configuration + + ColumnLayout { + id: root + anchors.fill: parent + anchors.margins: 16 + anchors.topMargin: 0 + + Row { + spacing: 234 + + ToolButton { + text: qsTr("Save") + onClicked: { + configuration = rootPreference.save(); + widget.settings.styles = configuration; + styleDialog.active = false; + } + } + + ToolButton { + text: qsTr("Reset") + onClicked: { + rootPreference.load(); + let cfg = rootPreference.save(); + widget.settings.styles = cfg; + } + } + } + + Label { + Layout.alignment: Qt.AlignCenter + text: qsTr("Settings") + font.pixelSize: 24 + } + + Flickable { + Layout.fillWidth: true + Layout.fillHeight: true + + clip: true + contentWidth: preferenceLayout.implicitWidth + contentHeight: preferenceLayout.implicitHeight + + ColumnLayout { + id: preferenceLayout + width: root.width + + P.PreferenceGroup { + id: rootPreference + Layout.fillWidth: true + + label: qsTr("Configuration") + + onPreferenceEdited: { + widget.settings.styles = rootPreference.save(); + } + + P.DialogPreference { + name: "Hour Settings" + label: qsTr("Hour Settings") + live: true + icon.name: "regular:\uf1de" + + P.SwitchPreference { + name: "Full Clock" + label: qsTr("24 Hour Clock") + defaultValue: true + } + + P.Separator {} + + P.ColorPreference { + name: "Clock BG Color" + label: qsTr("Clock Background Color") + defaultValue: "#2196f3" + } + + P.ColorPreference { + name: "Clock Font Color" + label: qsTr("Clock Font Color") + defaultValue: "#ffffff" + } + + P.Separator {} + + P.ColorPreference { + name: "Panel BG Color" + label: qsTr("Panel Background Color") + defaultValue: "#2196f3" + } + + P.ColorPreference { + name: "Panel Font Color" + label: qsTr("Panel Font Color") + defaultValue: "#ffffff" + } + } + + P.Separator {} + + P.DialogPreference { + name: "Min Settings" + label: qsTr("Minute Settings") + live: true + icon.name: "regular:\uf1de" + + P.ColorPreference { + name: "Clock BG Color" + label: qsTr("Clock Background Color") + defaultValue: "#2196f3" + } + + P.ColorPreference { + name: "Clock Font Color" + label: qsTr("Clock Font Color") + defaultValue: "#ffffff" + } + + P.Separator {} + + P.ColorPreference { + name: "Panel BG Color" + label: qsTr("Panel Background Color") + defaultValue: "#2196f3" + } + + P.ColorPreference { + name: "Panel Font Color" + label: qsTr("Panel Font Color") + defaultValue: "#ffffff" + } + } + + P.Separator {} + + P.DialogPreference { + name: "Sec Settings" + label: qsTr("Second Settings") + live: true + icon.name: "regular:\uf1de" + + P.SwitchPreference { + id: cfg_sec_en + name: "Visible" + label: qsTr("Show") + defaultValue: true + } + + P.Separator {} + + P.ColorPreference { + name: "Clock BG Color" + label: qsTr("Clock Background Color") + enabled: cfg_sec_en.value + defaultValue: "#ff006a" + } + + P.ColorPreference { + name: "Clock Font Color" + label: qsTr("Clock Font Color") + enabled: cfg_sec_en.value + defaultValue: "#ffffff" + } + + P.Separator {} + + P.ColorPreference { + name: "Panel BG Color" + label: qsTr("Panel Background Color") + enabled: cfg_sec_en.value + defaultValue: "#ff006a" + } + + P.ColorPreference { + name: "Panel Font Color" + label: qsTr("Panel Font Color") + enabled: cfg_sec_en.value + defaultValue: "#ffffff" + } + } + + Component.onCompleted: { + if(!widget.settings.styles) { + configuration = rootPreference.save(); + widget.settings.styles = configuration; + } + rootPreference.load(widget.settings.styles); + configuration = widget.settings.styles; + } + } + } + } + } + + onClosing: { + widget.settings.styles = configuration; + styleDialog.active = false; + } + } + } +} diff --git a/round_clock.qml b/round_clock.qml new file mode 100644 index 0000000..1657a82 --- /dev/null +++ b/round_clock.qml @@ -0,0 +1,463 @@ +import QtQuick 2.12 + +import QtQuick.Controls 2.12 +import QtQuick.Layouts 1.12 + +import NERvGear 1.0 as NVG +import NERvGear.Templates 1.0 as T +import NERvGear.Preferences 1.0 as P + + + +T.Widget { + id: widget + solid: true + title: qsTr("Round Clock") + resizable: true + + property real maxr: Math.min(width/2, height/2) -10 + property real thour: 0 + property real tmin: 0 + property real tsec: 0 + + property var configs: widget.settings.styles ? widget.settings.styles : {"Sec Continue":true,"BG Color":"#2196f3","BG Alpha":50,"HGRID Color":"#ffffff","MGRID Color":"#ffffff","Hhand Color":"#ffffff","Mhand Color":"#ffffff","Shand Color":"#f3a829"} + + onConfigsChanged: { + background.requestPaint(); + hour.requestPaint(); + min.requestPaint(); + sec.requestPaint(); + sec_tail.requestPaint(); + sec_center.requestPaint(); + } + + function colorToRGBA(color, alpha) { + var color1, color2, color3; + color = ""+color; + if (typeof color !== "string") return; + if (color.charAt(0) === "#") { + color = color.substring(1); + } + var not16num = color.split("").filter(function (item, index) { + return isNaN(parseInt(item, 16)) + }); + if(not16num.length) return; + switch (color.length) { + case 3: + color1 = color.substr(0,1); + color2 = color.substr(1,1); + color3 = color.substr(2,1); + color1 = color1 + color1; + color2 = color2 + color2; + color3 = color3 + color3; + break; + case 6: + color1 = color.substr(0,2); + color2 = color.substr(2,2); + color3 = color.substr(4,2); + break; + default: + return false; + } + color1 = parseInt(color1, 16); + color2 = parseInt(color2, 16); + color3 = parseInt(color3, 16); + return "rgba("+color1+","+color2+","+color3+","+alpha+")"; + } + + + Timer { + interval: configs["Sec Continue"] ? 50 : 250 + running: widget.NVG.View.exposed + repeat: true + onTriggered: { + var now = new Date(); + tsec = now.getSeconds() + (configs["Sec Continue"] ? now.getMilliseconds()/1000 : 0); + tmin = now.getMinutes(); + thour = now.getHours(); + thour = thour % 12; + } + } + + Canvas { + id: background + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); //将坐标原点移到画布中心 + context.rotate(-Math.PI/2); //将坐标轴逆时针旋转90度,x轴正方向对准12点方向 + + context.fillStyle = colorToRGBA(configs["BG Color"], configs["BG Alpha"]/100); + context.beginPath(); + context.arc(0, 0, maxr, 0, Math.PI * 2, true); + context.fill(); + + context.strokeStyle = configs["HGRID Color"]; + context.lineWidth = maxr*0.04; + context.lineCap = "round"; + for (var i = 0; i < 12; i++) { + context.beginPath(); + context.rotate(Math.PI / 6); + context.moveTo(maxr*0.92, 0); + context.lineTo(maxr*0.78, 0); + context.stroke(); + } + + context.strokeStyle = configs["MGRID Color"]; + context.lineWidth = maxr*0.015; + for (i = 0; i < 60; i++) { + if (i % 5 !== 0) { //去掉与小时刻度重叠的部分 + context.beginPath(); + context.moveTo(maxr*0.92, 0); + context.lineTo(maxr*0.86, 0); + context.stroke(); + } + context.rotate(Math.PI / 30); + } + } + } + + Canvas { + id: hour + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + rotation: thour*30+tmin*0.5+tsec*0.6/60 + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = 'rgba(0,0,0,.5)'; + context.shadowBlur = maxr*0.03; + context.lineCap = "round"; + context.strokeStyle = configs["Hhand Color"]; + + context.lineWidth = maxr*0.08; + context.beginPath(); + context.moveTo(0,0); + context.lineTo(0, -maxr*0.56); + context.stroke(); + } + } + + Canvas { + id: min + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + rotation: tmin*6+tsec*0.1 + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = 'rgba(0,0,0,.5)'; + context.shadowBlur = maxr*0.04; + context.lineCap = "round"; + context.strokeStyle = configs["Mhand Color"]; + + context.lineWidth = maxr*0.045; + context.beginPath(); + context.moveTo(0,0); + context.lineTo(0, -maxr*0.82); + context.stroke(); + } + } + + Canvas { + id: sec + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + rotation: widget.tsec*6 + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = 'rgba(0,0,0,.5)'; + context.shadowBlur = maxr*0.05; + context.lineCap = "round"; + context.strokeStyle = configs["Shand Color"]; + + context.lineWidth = maxr*0.016; + context.beginPath(); + context.moveTo(0,0); + context.lineTo(0, -maxr*0.9); + context.stroke(); + } + } + + + Canvas { + id: sec_tail + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + rotation: widget.tsec*6 + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = 'rgba(0,0,0,.5)'; + context.shadowBlur = maxr*0.05; + + context.lineCap = "round"; + context.strokeStyle = configs["Shand Color"]; + context.beginPath(); + context.moveTo(0,0); + context.lineTo(0, maxr*0.07); + context.lineWidth = maxr*0.07; + context.stroke(); + } + } + + Canvas { + id: sec_center + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = 'rgba(0,0,0,.5)'; + context.shadowBlur = maxr*0.1; + context.shadowOffsetX = maxr*0.05/2.5; + context.shadowOffsetY = maxr*0.05/2.5; + + context.beginPath(); + context.arc(0, 0, maxr*0.07, 0, Math.PI * 2, true); + context.fillStyle = configs["Shand Color"]; + context.fill(); + } + } + + menu: Menu { + Action { + text: qsTr("Settings") + "..." + onTriggered: styleDialog.active = true + } + } + + Loader { + id: styleDialog + active: false + sourceComponent: NVG.Window { + id: window + title: qsTr("Clock Settings") + visible: true + minimumWidth: 380 + minimumHeight: 540 + maximumWidth: minimumWidth + maximumHeight: minimumHeight + width: minimumWidth + height: minimumHeight + + transientParent: widget.NVG.View.window + + property var configuration + + ColumnLayout { + id: root + anchors.fill: parent + anchors.margins: 16 + anchors.topMargin: 0 + + Row { + spacing: 234 + + ToolButton { + text: qsTr("Save") + onClicked: { + configuration = rootPreference.save(); + widget.settings.styles = configuration; + styleDialog.active = false; + } + } + + ToolButton { + text: qsTr("Reset") + onClicked: { + rootPreference.load(); + let cfg = rootPreference.save(); + widget.settings.styles = cfg; + } + } + } + + Label { + Layout.alignment: Qt.AlignCenter + text: qsTr("Settings") + font.pixelSize: 24 + } + + Flickable { + Layout.fillWidth: true + Layout.fillHeight: true + + clip: true + contentWidth: preferenceLayout.implicitWidth + contentHeight: preferenceLayout.implicitHeight + + ColumnLayout { + id: preferenceLayout + width: root.width + + P.PreferenceGroup { + id: rootPreference + Layout.fillWidth: true + + label: qsTr("Configuration") + + onPreferenceEdited: { + widget.settings.styles = rootPreference.save(); + } + + P.SwitchPreference { + name: "Sec Continue" + label: qsTr("Continuous Second Hand") + defaultValue: true + } + + P.Separator {} + + P.ColorPreference { + name: "BG Color" + label: qsTr("Background Color") + defaultValue: "#2196f3" + } + + P.SliderPreference { + name: "BG Alpha" + label: qsTr("Background transparency") + from: 0 + to: 100 + stepSize: 1 + defaultValue: 50 + displayValue: value + "%" + } + + P.Separator {} + + P.ColorPreference { + name: "HGRID Color" + label: qsTr("Hour Scale Color") + defaultValue: "#fff" + } + + P.ColorPreference { + name: "MGRID Color" + label: qsTr("Minute Scale Color") + defaultValue: "#fff" + } + + P.Separator {} + + P.ColorPreference { + name: "Hhand Color" + label: qsTr("Hour Hand Color") + defaultValue: "#fff" + } + + P.ColorPreference { + name: "Mhand Color" + label: qsTr("Minute Hand Color") + defaultValue: "#fff" + } + + P.ColorPreference { + name: "Shand Color" + label: qsTr("Second Hand Color") + defaultValue: "#F3A829" + } + + Component.onCompleted: { + if(!widget.settings.styles) { + configuration = rootPreference.save(); + widget.settings.styles = configuration; + } + rootPreference.load(widget.settings.styles); + configuration = widget.settings.styles; + } + } + } + } + } + + onClosing: { + widget.settings.styles = configuration; + styleDialog.active = false; + } + } + } +} diff --git a/solars_clock.qml b/solars_clock.qml new file mode 100644 index 0000000..34bdc32 --- /dev/null +++ b/solars_clock.qml @@ -0,0 +1,687 @@ +import QtQuick 2.12 + +import QtQuick.Controls 2.12 +import QtQuick.Layouts 1.12 + +import NERvGear 1.0 as NVG +import NERvGear.Templates 1.0 as T +import NERvGear.Preferences 1.0 as P + + + +T.Widget { + id: widget + solid: true + title: qsTr("Solar Clock") + resizable: true + + editing: styleDialog.active + + property real maxr: Math.min(width/2, height/2) -10 + readonly property real rhour: maxr*0.9 + readonly property real rmin: maxr*0.72 + readonly property real rsec: maxr*0.5 + property real thour: 0 + property real tmin: 0 + property real tsec: 0 + property real tmsec: 0 + + property var configs: widget.settings.styles ? widget.settings.styles : {"BG Settings":{"BG Color":"#212121","BG Alpha":100,"Show HGrid":true,"HGRID Color":"#616161","Show Center":true,"Center Color":"#ffeb3b","Center Radius":85,"Show Clock":true,"Clock Color":"#616161","Font Size":100},"Hour Settings":{"Hstar Color":"#ffa000","Show Orbit":true,"Horbit Color":"#616161"},"Min Settings":{"Mstar Color":"#ff5722","Show Orbit":true,"Morbit Color":"#616161"},"Sec Settings":{"Sstar Color":"#2196f3","Show Orbit":true,"Sorbit Color":"#616161"},"MSec Settings":{"MSstar Color":"#9e9e9e","Show Orbit":true,"MSorbit Color":"#9e9e9e"}} + + onConfigsChanged: { + background.requestPaint(); + hour.requestPaint(); + min.requestPaint(); + sec.requestPaint(); + millisec_orbit.requestPaint(); + millisec_star.requestPaint(); + center.requestPaint(); + } + + function colorToRGBA(color, alpha) { + var color1, color2, color3; + color = ""+color; + if (typeof color !== "string") return; + if (color.charAt(0) === "#") { + color = color.substring(1); + } + var not16num = color.split("").filter(function (item, index) { + return isNaN(parseInt(item, 16)) + }); + if(not16num.length) return; + switch (color.length) { + case 3: + color1 = color.substr(0,1); + color2 = color.substr(1,1); + color3 = color.substr(2,1); + color1 = color1 + color1; + color2 = color2 + color2; + color3 = color3 + color3; + break; + case 6: + color1 = color.substr(0,2); + color2 = color.substr(2,2); + color3 = color.substr(4,2); + break; + default: + return false; + } + color1 = parseInt(color1, 16); + color2 = parseInt(color2, 16); + color3 = parseInt(color3, 16); + return "rgba("+color1+","+color2+","+color3+","+alpha+")"; + } + + + Timer { + interval: 50 + running: widget.NVG.View.exposed + repeat: true + onTriggered: { + var now = new Date(); + tmsec = now.getMilliseconds(); + tsec = now.getSeconds(); + tmin = now.getMinutes(); + thour = now.getHours(); + main_time.text = (thour<10 ? "0"+thour : thour) + ":" + (tmin<10 ? "0"+tmin : tmin) + ":" + (tsec<10 ? "0"+tsec : tsec); + thour = thour > 12 ? thour - 12 : thour; + tsec += tmsec/1000; + } + } + + Canvas { + id: background + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); //将坐标原点移到画布中心 + context.rotate(-Math.PI/2); //将坐标轴逆时针旋转90度,x轴正方向对准12点方向 + + context.fillStyle = colorToRGBA(configs["BG Settings"]["BG Color"], configs["BG Settings"]["BG Alpha"]/100); + context.beginPath(); + context.arc(0, 0, maxr, 0, Math.PI * 2, true); + context.fill(); + + if (configs["Hour Settings"]["Show Orbit"]) { + context.strokeStyle = configs["Hour Settings"]["Horbit Color"]; + context.lineWidth = maxr*0.01; + context.beginPath(); + context.arc(0, 0, rhour, 0, Math.PI * 2, true); + context.stroke(); + } + + if (configs["Min Settings"]["Show Orbit"]) { + context.strokeStyle = configs["Min Settings"]["Morbit Color"]; + context.lineWidth = maxr*0.01; + context.beginPath(); + context.arc(0, 0, rmin, 0, Math.PI * 2, true); + context.stroke(); + } + + if (configs["Sec Settings"]["Show Orbit"]) { + context.strokeStyle = configs["Sec Settings"]["Sorbit Color"]; + context.lineWidth = maxr*0.01; + context.beginPath(); + context.arc(0, 0, rsec, 0, Math.PI * 2, true); + context.stroke(); + } + + if (configs["BG Settings"]["Show HGrid"]) { + context.strokeStyle = configs["BG Settings"]["HGRID Color"]; + context.lineWidth = maxr*0.016; + context.lineCap = "round"; + for (var i = 0; i < 12; i++) { + context.beginPath(); + if (!(i%3)) { + context.moveTo(rmin+maxr*0.07, 0); + } else { + context.moveTo(rmin+maxr*0.035, 0); + } + context.lineTo(rmin, 0); + context.stroke(); + context.rotate(Math.PI / 6); + } + } + } + } + + Canvas { + id: hour + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + rotation: thour*30+tmin*0.5+tsec*0.6/60 + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = 'rgba(0,0,0,.5)'; + context.shadowBlur = maxr*0.03; + context.lineCap = "round"; + context.fillStyle = configs["Hour Settings"]["Hstar Color"]; + + context.beginPath(); + context.arc(0, -rhour, maxr*0.075, 0, Math.PI * 2, true); + context.fill(); + } + } + + Canvas { + id: min + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + rotation: tmin*6+tsec*0.1 + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = 'rgba(0,0,0,.5)'; + context.shadowBlur = maxr*0.04; + context.lineCap = "round"; + context.fillStyle = configs["Min Settings"]["Mstar Color"]; + context.beginPath(); + context.arc(0, -rmin, maxr*0.06, 0, Math.PI * 2, true); + context.fill(); + } + } + + Canvas { + id: sec + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + rotation: widget.tsec*6 + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = 'rgba(0,0,0,.5)'; + context.shadowBlur = maxr*0.04; + context.lineCap = "round"; + context.fillStyle = configs["Sec Settings"]["Sstar Color"]; + context.beginPath(); + context.arc(0, -rsec, maxr*0.045, 0, Math.PI * 2, true); + context.fill(); + } + } + + Canvas { + id: millisec_orbit + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + rotation: widget.tsec*6 + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + if (configs["MSec Settings"]["Show Orbit"]) { + context.translate(width/2, height/2); + context.strokeStyle = configs["MSec Settings"]["MSorbit Color"]; + context.lineWidth = maxr*0.005; + context.beginPath(); + context.arc(0, -rsec, maxr*0.1, 0, Math.PI * 2, true); + context.stroke(); + } + } + + Canvas { + id: millisec_star + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + transform: Rotation { + //设置图像原点 + origin.x: width/2 + origin.y: height/2-rsec + axis{ + x: 0 + y: 0 + z: 1 + } + angle: tmsec*0.360 + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = 'rgba(0,0,0,.5)'; + context.shadowBlur = maxr*0.05; + context.lineCap = "round"; + context.fillStyle = configs["MSec Settings"]["MSstar Color"]; + context.beginPath(); + context.arc(0, -rsec-maxr*0.1, maxr*0.025, 0, Math.PI * 2, true); + context.fill(); + } + } + } + + Canvas { + id: center + width: widget.width; + height: widget.height; + contextType: "2d"; + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + visible: configs["BG Settings"]["Show Center"] + + onWidthChanged: { + requestPaint(); + } + + onHeightChanged: { + requestPaint(); + } + + onPaint: { + context.resetTransform(); + context.clearRect(0,0,widget.width,widget.height); + context.translate(width/2, height/2); + context.shadowColor = colorToRGBA(configs["BG Settings"]["Center Color"], 0.5); + context.shadowBlur = maxr*0.1; + context.shadowOffsetX = maxr*0.05/2.5; + context.shadowOffsetY = maxr*0.05/2.5; + + context.beginPath(); + context.arc(0, 0, maxr*0.003*configs["BG Settings"]["Center Radius"], 0, Math.PI * 2, true); + context.fillStyle = configs["BG Settings"]["Center Color"]; + context.fill(); + } + } + + menu: Menu { + Action { + text: qsTr("Settings") + "..." + onTriggered: styleDialog.active = true + } + } + + Loader { + id: styleDialog + active: false + sourceComponent: NVG.Window { + id: window + title: qsTr("Clock Settings") + visible: true + minimumWidth: 400 + minimumHeight: 660 + maximumWidth: minimumWidth + maximumHeight: minimumHeight + width: minimumWidth + height: minimumHeight + + transientParent: widget.NVG.View.window + + property var configuration + + ColumnLayout { + id: root + anchors.fill: parent + anchors.margins: 16 + anchors.topMargin: 0 + + Row { + spacing: 270 + + ToolButton { + text: qsTr("Save") + onClicked: { + configuration = rootPreference.save(); + widget.settings.styles = configuration; + styleDialog.active = false; + } + } + + ToolButton { + text: qsTr("Reset") + onClicked: { + rootPreference.load(); + let cfg = rootPreference.save(); + widget.settings.styles = cfg; + } + } + } + + Label { + Layout.alignment: Qt.AlignCenter + text: qsTr("Settings") + font.pixelSize: 24 + } + + Flickable { + Layout.fillWidth: true + Layout.fillHeight: true + + clip: true + contentWidth: preferenceLayout.implicitWidth + contentHeight: preferenceLayout.implicitHeight + + ColumnLayout { + id: preferenceLayout + width: root.width + + P.PreferenceGroup { + id: rootPreference + Layout.fillWidth: true + + label: qsTr("Configuration") + + onPreferenceEdited: { + widget.settings.styles = rootPreference.save(); + } + + P.DialogPreference { + name: "BG Settings" + label: qsTr("Background Settings") + live: true + icon.name: "regular:\uf1de" + + P.ColorPreference { + name: "BG Color" + label: qsTr("Color") + defaultValue: "#212121" + } + + P.SliderPreference { + name: "BG Alpha" + label: qsTr("Transparency") + from: 0 + to: 100 + stepSize: 1 + defaultValue: 100 + displayValue: value + "%" + } + + P.Separator {} + + P.SwitchPreference { + id: show_hgrid + name: "Show HGrid" + label: qsTr("Show Scale") + defaultValue: true + } + + P.ColorPreference { + name: "HGRID Color" + label: qsTr("Scale Color") + enabled: show_hgrid.value + defaultValue: "#616161" + } + + P.Separator {} + + P.SwitchPreference { + id: showCenter + name: "Show Center" + label: qsTr("Show Center") + defaultValue: true + } + + P.ColorPreference { + name: "Center Color" + label: qsTr("Center Color") + enabled: showCenter.value + defaultValue: "#ffeb3b" + } + + P.SliderPreference { + name: "Center Radius" + label: qsTr("Center Radius") + enabled: showCenter.value + from: 30 + to: 100 + stepSize: 1 + defaultValue: 85 + displayValue: value + "%" + } + + P.Separator {} + + P.SwitchPreference { + id: showClock + name: "Show Clock" + label: qsTr("Display Time") + defaultValue: true + } + + P.ColorPreference { + name: "Clock Color" + label: qsTr("Font Color") + enabled: showClock.value + defaultValue: "#616161" + } + + P.SliderPreference { + name: "Font Size" + label: qsTr("Font Size") + enabled: showClock.value + from: 50 + to: 100 + stepSize: 1 + defaultValue: 100 + displayValue: value + "%" + } + } + + P.Separator {} + + P.DialogPreference { + name: "Hour Settings" + label: qsTr("Hour Settings") + live: true + icon.name: "regular:\uf1de" + + P.ColorPreference { + name: "Hstar Color" + label: qsTr("Star Color") + defaultValue: "#ffa000" + } + + P.Separator {} + + P.SwitchPreference { + id: hour_settings_show_orbit + name: "Show Orbit" + label: qsTr("Show Orbit") + defaultValue: true + } + + P.ColorPreference { + name: "Horbit Color" + label: qsTr("Orbit Color") + enabled: hour_settings_show_orbit.value + defaultValue: "#616161" + } + } + + P.DialogPreference { + name: "Min Settings" + label: qsTr("Minute Settings") + live: true + icon.name: "regular:\uf1de" + + P.ColorPreference { + name: "Mstar Color" + label: qsTr("Star Color") + defaultValue: "#ff5722" + } + + P.Separator {} + + P.SwitchPreference { + id: min_settings_show_orbit + name: "Show Orbit" + label: qsTr("Show Orbit") + defaultValue: true + } + + P.ColorPreference { + name: "Morbit Color" + label: qsTr("Orbit Color") + enabled: min_settings_show_orbit.value + defaultValue: "#616161" + } + } + + P.DialogPreference { + name: "Sec Settings" + label: qsTr("Second Settings") + live: true + icon.name: "regular:\uf1de" + + P.ColorPreference { + name: "Sstar Color" + label: qsTr("Star Color") + defaultValue: "#2196f3" + } + + P.Separator {} + + P.SwitchPreference { + id: sec_settings_show_orbit + name: "Show Orbit" + label: qsTr("Show Orbit") + defaultValue: true + } + + P.ColorPreference { + name: "Sorbit Color" + label: qsTr("Orbit Color") + enabled: sec_settings_show_orbit.value + defaultValue: "#616161" + } + } + + P.DialogPreference { + name: "MSec Settings" + label: qsTr("Millisecond Settings") + live: true + icon.name: "regular:\uf1de" + + P.ColorPreference { + name: "MSstar Color" + label: qsTr("Star Color") + defaultValue: "#9e9e9e" + } + + P.Separator {} + + P.SwitchPreference { + id: msec_settings_show_orbit + name: "Show Orbit" + label: qsTr("Show Orbit") + defaultValue: true + } + + P.ColorPreference { + name: "MSorbit Color" + label: qsTr("Orbit Color") + enabled: msec_settings_show_orbit.value + defaultValue: "#9e9e9e" + } + } + + Component.onCompleted: { + if(!widget.settings.styles) { + configuration = rootPreference.save(); + widget.settings.styles = configuration; + } + rootPreference.load(widget.settings.styles); + configuration = widget.settings.styles; + } + } + } + } + } + + onClosing: { + widget.settings.styles = configuration; + styleDialog.active = false; + } + } + } + + Text { + id: main_time + text: "" + visible: configs["BG Settings"]["Show Clock"] + color: configs["BG Settings"]["Clock Color"] + anchors.centerIn: parent + font.pointSize: 0.0009*configs["BG Settings"]["Center Radius"]*maxr*configs["BG Settings"]["Font Size"]/100 + font.weight: Font.Normal + font.family: "Microsoft YaHei" + } +} diff --git a/text_clock.qml b/text_clock.qml new file mode 100644 index 0000000..45fe1ca --- /dev/null +++ b/text_clock.qml @@ -0,0 +1,312 @@ +import QtQuick 2.12 + +import QtQuick.Controls 2.12 +import QtQuick.Layouts 1.12 +import QtGraphicalEffects 1.0 + +import NERvGear 1.0 as NVG +import NERvGear.Templates 1.0 as T +import NERvGear.Preferences 1.0 as P + + + +T.Widget { + id: widget + solid: true + title: qsTr("Text Clock") + resizable: true + + property real day: 1 + property real hours: 0 + property string minutes: "" + property string seconds: "" + + readonly property string hlight_color: widget.settings.styles["HighLight Color"] + readonly property string normal_color: widget.settings.styles["Normal Color"] + readonly property string rfulltext: "ITAISSL" + ((day===5) ? "TGIF" : "GTFI") + "
" + + "FJLVZGABOUT
" + + "ACQUARTERBS
" + + "TWENTYFIVEX
" + + "HALFBTENFTO
" + + "PASTERUNINE
" + + "ONESIXTHREE
" + + "FOURFIVETWO
" + + "EIGHTELEVEN
" + + "SEVENTNOONE
" + + "TENSEOCLOCK
" + + "AMIDNIGHTVW
" + + + property var rcolors: [hlight_color, hlight_color, hlight_color, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] + readonly property var rcindex: {"M15": 3, "M20": 4, "M5": 5, "M30": 6, "M10": 7, "TO": 8, "PAST": 9, + "9": 10, "1": 11, "13": 11, "6": 12, "3": 13, "4": 14, "5": 15, "2": 16, + "8": 17, "11": 18, "23": 18, "7": 19, "12": 20, "10": 21, "OCLOCK": 22, "0": 23, "24": 23} + + readonly property var fonts: Qt.fontFamilies() + readonly property var fontweight: [Font.Light, Font.Normal, Font.DemiBold, Font.Bold, Font.Black] + readonly property var sfontweight: ["Light", "Normal", "DemiBold", "Bold", "Black"] + + function stringFormat(rtext, format) { + if (!rtext) + return null; + var str = rtext; + for (var i = 0; i < format.length; i++) + { + var re = new RegExp('\\{' + i + '\\}', 'gm'); + str = str.replace(re, format[i]); + } + return str; + } + + function clearHLColors() { + for(let i=3; i<24; i++) { + rcolors[i] = ""; + } + } + + function updateHLColors(){ + for(let i=0; i 12 && hours !== 23) { + hours = hours - 12; + } + + if (minutes < 10) { + minutes = 0 + minutes; + } + if (seconds < 10) { + seconds = 0 + seconds; + } + + var minsSecs = minutes + seconds; + if (minsSecs > 3230) { + hours++; + } + + clearHLColors(); + updateHLColors(hours); + + if ((minsSecs >= 5730 && minsSecs < 6000) || (minsSecs >= 0 && minsSecs < 230)) { + if (hours !== 24 && hours !== 0) { + updateHLColors("OCLOCK"); + } + } else if (minsSecs >= 230 && minsSecs < 730) { + updateHLColors("M5","PAST"); + } else if (minsSecs >= 730 && minsSecs < 1230) { + updateHLColors("M10", "PAST"); + } else if (minsSecs >= 1230 && minsSecs < 1730) { + updateHLColors("M15","PAST"); + } else if (minsSecs >= 1730 && minsSecs < 2230) { + updateHLColors("M20", "PAST"); + } else if (minsSecs >= 2230 && minsSecs < 2730) { + updateHLColors("M20", "M5", "PAST"); + } else if (minsSecs >= 2730 && minsSecs < 3230) { + updateHLColors("M30", "PAST"); + } else if (minsSecs >= 3230 && minsSecs < 3730) { + updateHLColors("M20", "M5", "TO"); + } else if (minsSecs >= 3730 && minsSecs < 4230) { + updateHLColors("M20", "TO"); + } else if (minsSecs >= 4230 && minsSecs < 4730) { + updateHLColors("M15", "TO"); + } else if (minsSecs >= 4730 && minsSecs < 5230) { + updateHLColors("M10", "TO"); + } else if (minsSecs >= 5230 && minsSecs < 5730) { + updateHLColors("M5", "TO"); + } + main.text = stringFormat(rfulltext, rcolors); + } + } + + menu: Menu { + Action { + text: qsTr("Settings") + "..." + onTriggered: styleDialog.active = true + } + } + + Loader { + id: styleDialog + active: false + sourceComponent: NVG.Window { + id: window + title: qsTr("Clock Settings") + visible: true + minimumWidth: 380 + minimumHeight: 580 + maximumWidth: minimumWidth + maximumHeight: minimumHeight + width: minimumWidth + height: minimumHeight + + transientParent: widget.NVG.View.window + + property var configuration + + ColumnLayout { + id: root + anchors.fill: parent + anchors.margins: 16 + anchors.topMargin: 0 + + Row { + spacing: 234 + + ToolButton { + text: qsTr("Save") + onClicked: { + configuration = rootPreference.save(); + widget.settings.styles = configuration; + styleDialog.active = false; + } + } + + ToolButton { + text: qsTr("Reset") + onClicked: { + rootPreference.load(); + let cfg = rootPreference.save(); + widget.settings.styles = cfg; + } + } + } + + Label { + Layout.alignment: Qt.AlignCenter + text: qsTr("Settings") + font.pixelSize: 24 + } + + Flickable { + Layout.fillWidth: true + Layout.fillHeight: true + + clip: true + contentWidth: preferenceLayout.implicitWidth + contentHeight: preferenceLayout.implicitHeight + + ColumnLayout { + id: preferenceLayout + width: root.width + + P.PreferenceGroup { + id: rootPreference + Layout.fillWidth: true + + label: qsTr("Configuration") + + onPreferenceEdited: { + widget.settings.styles = rootPreference.save(); + } + + P.SelectPreference { + name: "Font Name" + label: qsTr("Font Style") + icon.name: "solid:\uf1fc" + defaultValue: 408 + model: fonts + } + + P.SelectPreference { + name: "Font Weight" + label: qsTr("Font Weight") + icon.name: "solid:\uf1fc" + defaultValue: 0 + model: sfontweight + } + + P.ColorPreference { + name: "HighLight Color" + label: qsTr("HighLight Color") + defaultValue: "#FFF" + } + + P.ColorPreference { + name: "Normal Color" + label: qsTr("Normal Color") + defaultValue: "#333333" + } + + P.SliderPreference { + name: "Font Size" + label: qsTr("Font Size") + from: 1 + to: 40 + stepSize: 1 + defaultValue: 20 + displayValue: value + } + + P.SliderPreference { + name: "Letter Space" + label: qsTr("Letter Space") + from: 1 + to: 40 + stepSize: 1 + defaultValue: 20 + displayValue: value + } + + P.SliderPreference { + name: "Line Height" + label: qsTr("Line Spacing") + from: 0.8 + to: 2 + stepSize: 0.1 + defaultValue: 1.5 + displayValue: value.toFixed(1) + } + + Component.onCompleted: { + if(!widget.settings.styles) { + configuration = rootPreference.save(); + widget.settings.styles = configuration; + } + rootPreference.load(widget.settings.styles); + configuration = widget.settings.styles; + } + } + } + } + } + + onClosing: { + widget.settings.styles = configuration; + styleDialog.active = false; + } + } + } + + Component.onCompleted: { + if (!widget.settings.styles) { + widget.settings.styles = {"Font Name": fonts.length-1, "Font Weight": 0, "Normal Color": "#333333", "HighLight Color": "#FFF", "Font Size": 20, "Letter Space": 20, "Line Height": 1.5}; + } + } +}