From 1afb4d5fa67cf5214ae6e7a8ae9d37c6e2eecaae Mon Sep 17 00:00:00 2001 From: Charles Magahern Date: Sun, 24 Aug 2025 17:21:11 -0700 Subject: [PATCH] gtkapplang: First two pages Conflicts: pages.yaml --- assets/css/gtkapplang.css | 53 ++++++++++++++++++++++++++++++++++++++ assets/img/logo-gtk.png | Bin 0 -> 68603 bytes pages.yaml | 2 ++ pages/gtkapplang-1.html | 35 +++++++++++++++++++++++++ pages/gtkapplang-2.html | 25 ++++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 assets/css/gtkapplang.css create mode 100644 assets/img/logo-gtk.png create mode 100644 pages/gtkapplang-1.html create mode 100644 pages/gtkapplang-2.html diff --git a/assets/css/gtkapplang.css b/assets/css/gtkapplang.css new file mode 100644 index 0000000..5cb0476 --- /dev/null +++ b/assets/css/gtkapplang.css @@ -0,0 +1,53 @@ +#article-header { + background-color: #0d0d0d; + color: white; + text-align: center; + padding: 5pt 0 5pt 0; +} + +#article-header > div { + display: inline-block; + vertical-align: middle; + margin: 5pt; +} + +img#gtk-logo { + width: 50px; +} + +#article-body { + columns: 2; + font: 10pt/1.40 Helvetica, sans-serif; + padding: 5pt; +} + +#article-body p { + text-indent: 2em; +} + +#article-body p:first-child { + margin-top: 0; + text-indent: 0; +} + +/* +span.first-word { + font-size: xx-large; + font-weight: bold; + line-height: 0; +} +*/ + +h1, h2, h3 { + margin: 2pt; + text-align: left; + font-family: Helvetica, sans-serif; +} + +h3 { + font-weight: normal; +} + +.code { + font-family: monospace; +} diff --git a/assets/img/logo-gtk.png b/assets/img/logo-gtk.png new file mode 100644 index 0000000000000000000000000000000000000000..c45272fb3981642ce81eb16c7b254ddac7e18d89 GIT binary patch literal 68603 zcmagG2|Uzo_dotY;-(~pvL}+gn(T?R8A@dtV;41UJ0VM96h*Q$_9!h=!q~D@_C%XO zjV)xY$P#5OTmSQ!;a;BS`TqXT{q(wDH#67gy3TdZdB4y5oKF!a4UVqo5a2)%WIa~* zkRgJs$wv@YF7~zX6W7GILGZ6N4hN1OK#+nM&c)NL@ZVzgx`xLQBwz=E5JM4U9)3jp ziXc9_5M;y_LDZ8Ggx@2r^wd81#acW4qlb{+=s$NVGUDJTY~I-8huJl|D1zj*75|HMM@!~?U*olQnt)|EtT^Ap>RVOp1Lo1vXCR^nLJHNG_J z$b2T_lN*WfwL^N_3j+btUdNk-SYldp5tH2!L7wnU%xjn>3S6*>yAmax6N}qu`4Txk zOUr%|64%+VZ2=Ew{Hv@3znHj;n#~1jJ#H`c4$OP?2keaf56p!!at=u$$-9z_ku=dA ziJLAZn@TR>X~F74>K}H)XW)OI6H?@N74|9>24f0$q?T{Plr>S?3L+W5Ox{hvogt() zjJY?sJV{yKHM~{1FfX-(`8+@4_sw<$ht!T>l|uNxNPUa}rtAfkXH1pxOM|!6EUHU( zO1C3HX)rH6wS&)q2_gD$Zz2nxy^G!)`;CiAF4lSm{n%Sf?+ZN-?B85SVz}DRejK zHz)Rq+R*JU5==<=4h}p#MpXf0p_uo=DVr=Sk#N{wjWnJxZQA(kya7K#{PQjmy?-nz zMgE3Ll~Z@?&z4jW}ON-sB73(0>^HfY?i_%MG$`y)3Tc zC{6GD7x{UKKm%IFEw6(v=w}YnKXZgi!PCMf)hQ+VojawUHy+cwMee%gbt0b^K|(oM z<-oPVF@;kS-D1N5SW|4)8B>G$-%=BfVOKlA;cG&e`4B|AHo1ct+x|L|wMT4t-TAXG zXY}VOF9*q~I${oYo8=vj%VnVco==)1PKq#@czS;_|qbp-?%Ar$8 zuJUaROwBu$BzDRa#h^4@K9QTFoGNt zrEkVl%JKbq=w&>-ieAP}KLSo}SjS%&HsKl{Z|kt@@)3zZ z6PlLlPyqU%hgayI(j}a~{ZfO{BcDmK3fW*Txs(&m%Z%)j+zhEp`@pV3R#I-O-+L$C zvP+1j?C|BrXG!QI45H94hf88)Nks=fo!~6jGyFs2GWQ#7=?U7^TVA(N$C5gNI#%t= z&b)y%MI+{ho$YDH?!6v8 zxveUy_av6y)$2yQIrd1`xEL@tS81yj~nHU znA4ob$CFaD+6^3zc+c6-l=|1}pK#@kJMlPT76?$kTv^u<=uA`FDs5?TSYtavYTuu z&IOq3Nc+E~2@W)_K{oTyjWa=|=+Mpz#IU;YoH)ppla^v$%4Xb7 zn!UZ{!%dum!`m@vOPg=>uHdT)%Ke@dQ9>G;<8%<5wfLex2c z-u&mVlw0z7_+tC%V02qIw{TLNv5vMoOTAub#BB|ndUGVlM(L=EyIJOlSwSRkZo+hE zil*E!OXIVHAD<({r}S_qgr>;Hdl#46wMLO}1+x80dr8gDXZN=X88}Vcwf4#Ql%(6$ z6>n@+A7thA+z$Q2%P%=lQu~dRySuPSZ(eH1@`{Ea!flHBb9GU&Spk{zix1v4spyp9 zrCWbw*xQG!&v87vottx?)eAF4+)ulMF>amZ$M|onDZ1%X;`wD4H33)D=C=51AY##I z@Dj19+-QDUi}m`D@Li83Ox_`Wtg)*JOO)k-~g9sFSb+{qjT zt0yN_+$NN@1cYaB&CM3NNDfzdPT0VCFJ|dT2 zAfI!CQm{KCwjpJ<#rta#Tg=GAhWa9ZAD@qj_-$}XHp1+-p^q=p)Df`}bUP>eq9a(X zr5r`T4>LnHDwRAiX(t&r^piT|Xe^lab{qT5p_LqU; zT0`s;{rTgVg$qL;pQ!mD+VN z9pF&qbTgm=Z|hri-O~2a-lB&yVYiA)UAlE#yYh{{JOF35-adR5vv89fqdsJa8kve3 znfnv~2kksS7tjIJm-*0$$ShHN@Vs9xmFL{E_xOI@<3*I@Q$F`ISbJGj7o?Y$ARdgDGQx8EPta)V*I9 z+S`Sw=-zyh8)^y$hI4&$)#Kr;{apD9B@xOqBUhpduJi6dQR6saRvPQ8G4%5#g8aOO z=4s5*={A?da(o}^0T@UfjEqPR`Ad#lw@liFY30q?g*nJaTT$}OQOxN7lk(jG9$&49 zK3?@W0Vm;j8K5VZWL(o2YTEVw0Bj%&z%RJJ<{?a5oe{Zr*t(=Z+1hW^y`V< zjj)@li%XAk_Xii`2EO9qm9*oP^@bmIHH^iH+@#54$8|GpZ_)XRNk`^vW95POOD{TnJma8 zojbnzzX9Feh+E)W#nwQ3)5~pnH}6|0SZDq+DOeaibD6Apzo4e-d}FaEcwfpP^k5KU z#x!2QRX37K{+4YCB0{GQX7h7?MA2QeKsz*D<$`M!{Z!9vBd$f-ZIvx=rS6v+Zf<IAIuLc?B6{7*UDPec0{w~og; zqd00r7f-fCpe1dAI(B~OqXMktL9Y=wuBGH86-A|6GgY@w6B?k8MxxaFASz^HO*L zrhbSzq8N^j^5T43{`jv@-_9RigGrmQ3sY2{{yONJ^RCOZP63CPh7i3#I1fC1H)kY&HahfWVt!+Y9LD*3JZ9Y-zLFE1Pu)G438@X?D$(0KYF9psc5tkLmYzk;}iUlp|N5ZTt4I zTJ!CjTuYNP_e&j{_qbYH2|tmPFPcC)FV=E|b;hVR6NzeZU9b zDvHh2Iw;4TEL{=!qBOW^TZP9RizjYonUYg>02%U*LlC4~LzdgoMfe~)Ywt|%kn=C7 z{s#QtAs^EGZa#cFsjWXZNSXC@AhfXQ(KIhd)TAgG7vuh~_o!{9UEC_r_rbCPR5ZQKP3{p%}yYFZsM59X(xSOnGw>=?P0!XD2+{|WW)DGpl z3uUlLuVwMyVyDl;^47XS$^qz3rBcnQpO6RAgWcn4-7o~)=brmyDYI5z-@?GX2|9wCMFI<>Bu*d3PKXAY z_j`dq9zu)VaOqX}UYqY8KiBLS%3Yw11UZk3yfYPnY}KV`p4-7&u<&QT8Lg0TK95}G z-RR>12eE>Kh#diL+au=41zwXGa=NwHPZ$S#7-{0>T+=sIC5R%O+em9MzubG1QU1)G z8?*6uBnESX-rKW^ zaa}obE?^)5SJCp}zC{V;T`6yYV7BTB+AY%Z2dbNI<2MK_v2xTh)l|7{inLw0{8B?h zX^lSJ)-wF*1agf2ydoXj zJRz{@Le}RuU%$@?PX^t)5Juhu+3%$t%3)iTGxn;coi#%GLW3O$(+yG;_(GUO_W?r(1|7Ouk>h{|3z#>*9emBoTs{1D@Yn?>_38R{ zDD#e^W!~6JbsS`dh7>3hP!IHyk{vgK{mWi#6EZ}j3WHW*yamYE*PpjL2U zlXOv_J|xGD)Hnj08hL)dv(i6BIVU&T;$@`{trtyhE6_F>$;?N*#_@SPQcB!3XPitU%`tZp(c-eBYF4ROw@5CHO9b|JRpO{u|cwXJT1E)JXH%kb*Cyp zS>IaDqYR#(!tkxOVzSTE?DXSI#BfI_Pp34T(aNN=#541){xzs4oFyyl2sUxkr-m%A z8L<&lK*iJ^OEJ4aUJtr&DXM#IvUWYnRt$^<3MQzWl}M6&?8vDkv`js3+@*N!EG7RC z?Hehmp1Lempo1ivff;IPy9=sEB^vDiDM4kar5QgCPKK={>v8!N)C`T3dXLtjFnt&* zWlL+y_bR>82DLe7a8v^{FBaGmOeWXn#_;B#Vw6%^!*FrQ54^3HY1P*PW?~KPLt94E z?>o5Errfp*z0WL7zCencbi*p9c9=>AQq__`O0b;=vxG}v^mRKQ{kYWnm!uZOM=|W| zO*1B_zIupgKmUC}q2j~4oSQEyN`qb)T2;E;uq;0pR)^+JS3 z9vJ$l2xWY-064!+Jyk~1D(i?S(2x-5oC0kHgq4n%2pUlQQ%hNiv1GK3&M8vT zN;2=o$PTP5EcABWP|LfUZ9NaITT93-aUym`2;#qc7i=Kdx;F=?XCk24{mG(6>d$C4GQYUP-Tl%+>BBmqym50t(TjOzzZr0U8L zoKa<7;l^CtAv#EFw-nEDjf|EF6rqVf;D<~@whR z##c-Woxbwfn5u@v|yY30oTrq@kEMbl7v>egAMBhkMUs!`2_5$=;a$2><|6 zN;|}(C-_;o8njP_Ij|ZME23KE^Nqq=qW(r`#Gt+BA$i1ncJ$g4#TFla1rtY4Is34G zmZ9N-9C&T&U#c3m$3A)E|3qryRuxETSF4=b^`kTym78!``mhND+PeGGF2ozLaZ7E^ zCvMpyTv>Ur=R|LAtTD>OYw@~;626cW_zS9aU#Da~xS$O*5v_Wl9(9Sf z6hn~HasO0ip`xW%qnWFfoVGDsn2yt4K2=!Cq?!P0LoZ(~ zU}T7$8w%adM~j#4o$V|tRd@3e)RX8|7*=T*n~30L4(H&&6Jt=Os_3Y|VBkt6Gno&i zGXYEJ92~iGQi2V_*vqH8bOvrmxk}tk-x5`+U!he7INoWHtX^-&q)ICCJw>IIV{jO{ z-~cTbv>ru}%_T2OiYoI94JOnx%qKd^kC~h;SYY=lCMO-Wr?=M7RiHS6-rZjkTKmJO zSP1Gz^t6J_L^X3cNm=Np5T2zCKPy#O8kw=SdU85K!RCpsg7veS0-$@T9lhB3Xs>9M z!-!58GoQyzIG9_)-t<*m#=nghHjrU$TXTiFBV!meSM!}fg5p+lmQ)< zj&m9GsvrrHA1a$3yOCn@M)2u=xNj=>FTDo_r531K%`F{y!9hg^D2PYS$S;mMA|6a(HdySd2m3bU3BUbsLPTGk1_qN2?7H0_yMr+ zK*3!LM&b4V6|5x(5@h8Pr+dF>=6n~G4D3*Ql`4aTEI(M&C-1K75>c)LEN$XO5fRS! zUxD5i6LOcXziQ=8v;l~N{+bP`l$BJub9e(?e;op=AArN@?kVKJCOJY&HBRDHW2n)8 zLii2NH3-7w1l3%3Oq=u6h?8s8pU()Uwd42O4wG&x6)s3DJ@CrCY{b?l#ev_6zyG4$ zR~P#7=dh^u4dp@GDl3?alb+WjxKrMWeJESB6 z>(o?gGFg%xH|KLZ5=u_eT0wiSh=L2ddn1jjWDaeOqD)Cc{WWkL;w694=~~&G`NMSO z($E=GCgQBUD~S@!^-1tar~_HBSq>)tZihe%0Qms&)DpQwP3gR+5>axBke>ZHa|G zL>8nWNE}BV$5Y^B53?~T?^V)WTF{>BRANF_v<|R@~n((#97LBb4-~&?N;Nn1F+5ySf?n( zER0;g7kXt_lD$KXbP}d`dL7zJf@BZaBSjAi?tqRo#}mh|2Kj$~FrAQ*cI#Ou@hzL$RT6*Dp0NNLhsJ9+)#h0Zan8_ z2Wh#RdK((HA75p%Y=NN`sk4Mgi3$st)HqJUfes5S2L<2?m=l1mn+CMWV5M4WNLx|m zcNRt5Q`b+12}zslTq7(bE1b}ZZ{v{VO(Qnww7T2M3(eNz!{@P8js(ci3(6T>sI0mrk~O-a;NN%-8Wglm@o$&_?kugIxK;RtB{t-R zck!6&mV!ixr-5Kzk*0n!d8aL}7{+4fuu~L2r3a-r?{p2=x)zQ^;#LGG0InUNAqAdx zxTRq6q~cZ1zrnEnTng{j2ma+JuaTDyECNY(Vo(^C~~JmSYVoB^lMpE6C3v|2|lI zr4{PTn-9roK%q)Gn6d>=lxDh7FjS%@hu{{#CL%M59X)Uj;R@^iKJ`b?G|hnZyW(P0>7 zAQH_(jZK|&p=dCHWMgk(zTHd@=mGM2ZfNar-4!2t`>yF}j1;EQ8&*mlSAKb8J3Tu0X2(~4_F&sWFN4U{rL-RqPIl<3-M(++wH z)oOFh8CnNv1?8qx%H=*ivyJw-1_ogXtnZrR> z(zFq#%#>!MHq@!+BNnjJ_E+`)4(@O_dswD+5fe!^-5}Ch`2uSdxNK*&5G^UAS35E^ zW?)V6xSA5EQ_B(Z`YtgcrfRW)4;%2LoGUw3A_s;jWHD(*kc@%fph~E3Ksd^Jv=5+d zr3h2=nMr3lNEDy1Lwk_7(KDuYKzyZpjA-vYS$&fUCAoGmFjdQZP{HA0qMITg9;T3B zJm|67ITZS;lTm55po}5S(ks3Xnifu%$*>MObk~2{K$u;H1K+$CbhcFcf49cOKomld zG#XkR#f<$E_&`IEAJ!zys$tX5H*S1|=v-rNlSn})>HaLYol*XaxvQ8LF$P2+P?2L( z6*HUiibfv16zN{f^YcQUY-_Ew!ON;6>$^6l_!e5$n$+Yeu03zY65YqRML95hhi<`%|WX zO6vI+)bwHsHPXCdJV&(iIkJd8$K*V+$=MPK9)h8!|0~e7{d)2o{yl>8U)@LU>mT^@ zsei?|{RYNl$bWEm(AQxqZ2sfH;!^K!o$jZeDR1@AZgCrRoaCM1EU6E9tXprN`SZ$K*BXJtXL20iApUf-|he>hN#9wu|lAzh`j7v~(=sY=vKZOkI<_ zpOMc+%c3P4bgKn~-aZDg0YN0NZ$Ldli&&u8@~NU_F}|`A^j73Bw9u^$gpTRWWBzLwE&dF(2s~15kq5d1C9OqBdCf2*=L0fvJ^2j zC}Bd_!R}T&oFUdGX+^u`OjF;bX7pFMUtjJubFueZ@8A`X zEsO>L+WZieV=#CJRzoZOANo5 zyuDd9#+6esu7##~2YRed79>>7VASjg@_xYu!zcT(#4|;~tW3;}0f(K+P_F&Hir?m8 zCnawi6|`yT7Fo^31m!FyT_i)-!nvaAX)(s7{dkxDW@MpBxNYkG3E6#KoZ2F#|JmA!(Po&Lq6EV?<3~q*-mA5iI!>Wl ztrg|F73nsnFgR{{4p2+wLcMQ!O1Iqbg@NIayR=TsS6+%a$;stgvqxehyf1(tVRaHq zi`q|ud>)yqxZtzu+vSbLH-az20;z=AQ`laQ#Gym0vY$lBIyC=O zI?uK?tI%03LL@(j+C1Q{nO63<78opX`Zn1C>8F^S=d=&^)5t(LY&;60At$lOXmcL( zjfNDik{DD^TsZp~b!uNf0?`1b>D@`^Oi-HUb6a-kk_MC-V>M+_R5ViI(ql! zhme_~@b&Y{Nv>A+GdYMwk=>|mzIt0~>t2Qq08Fe^EP6QNW zxnxDXc_0)JMe8!6b@sG*&TK5P8~j2={Q@Y-NQ|Equ0!aVHfqk-NwYl%0s|R?Lny+{ zpc?HDX6%X7zuJ!Xxi_bFT!2=LEa3=1O0hh)RVl-`_hwrk_lE1}B1jc|%IY;bV#dF=%T@F^stJeZt$Xy|iZxuzB~ ziy;c#MUE-TdC^uUjy@p&wx9(o6>d-)5*cjS$W}+Pyz71mi)tSrxPt9qNUvEpkp!wV zAdZQ9Z~l0%m#(7H>{oQ&h~Vu4bM*p+sh|m zDtbEdZa%c8>l6r4<&4)u(dDe;FoWT|Fvt)mtwg?%mJgtlAuxH<3nx&jBkj57$dp~| z@NV?66E>@$_{572At@M;hk?7?GyhR$Ix?nZs-ys-EQK?oAMH$RkI;}&*v`8#K=^cEm==yM8E?Q6O&Htv3{gxV59FD#NfXYhQ==u4|9Y>k&VNAzB=rs2) z=C)+7q=q)B9^cAD>UKkv#~`n(4hk>L)3*D}_Y@upg-xC!wyZ;_6HhORVSLpCyW(>p4EtBMdOW~3Bh&*=#d-iX%6-JE`U+t3|Wt2A`8%)h-qGe3U&px%1e;Zt-lW!4pAQ5*3>v0$|N=GUl< z%{`-{Lxl5NrJ^rh^I>Z{v~uJFe@--fh0fb_PKE#=!{%3#Zt+D9 zdvQ-gHyz!-`52SFIK!UojZl+}2iR7fub^e!aG}_T1v?WSq^S}N5Afzoh=-w%CHAe0 z`b<|2#||zOSE+4%CD|C~ok2Ej7*jV8!br|y@(n_D>4z8F301|ikMI4;8RPq<&ET}T zaYgmi^EW%XR6WyjFTvr%S3ao=%H;gmWe`s+g_53H8A8EOLw&32dCc?x|6fnGje<6A zKt67P>(w3{UUK*oDaerkOC3AKKRu<_BQ_}=$J0~|B)2(glL~m}VF+!Nv$agc!ot@-tqxDP z7zjy`JQ}}9tbfewet6~6YuTd7XkvJ&iTmk{DQl(@JO@%~1KH^I-ohtd z1FemDR{^^B zd?6Uzhg8_((T=az8(WV_;i`{1!6WD9AaD;F$G3MY;1yxtb4n?bcg-m zZH!pxewU=k_tk!qHiol&x>1wrzJn1@)$9DW<9-Gz;*uk6a(8VTULuW9$G9+`HueVo9InqZhQ1xbdksi0|fJ@?Vk{qg&^qJZ)MEC(X)%+#p}HJ7lU6C>;}ZD9`tMdZe%#79g`8J~{ z^-dKbG>uHhLFvY0u+RLGtnG2TwQZiquWvr@d({2Ks;jtwB#`cJo6blnz@<^`<~Qsj zc~i_4T_4-ydw*UQeH8fV2*cSCYCg0pZu>njNx$%C6||%w+R&bS)t-bqR1a}z&Fo(ZHxB{u)!Dn|-!xD~8d?Zoj-Kj>tNI?Slxr!9 zEr&D>@u$qmRTn4BtpcChjUPipLVKsr4$S;uoHZq1<90!f5=jJ}b^Ce5)q`XQTVd1M z?O~1BE)_+ol|)+%y~ggD>LATY!^kT~>;z>gTcdarJqMm&TV6+5y^E!Qo zSQe%Y5Bdrv(Fd@dF&8#SiKG=Uw-F_5FuoC6Z-@BoTS@h=t5)*Q@|TFU#WP$lJy%73 zKB@7lPzkl6bEJzEFDAP~X4bA){O3LB45bG@!fmL0N1=MS*oR$!MhB=!!8;NUU5wf| zkE<3~^`^yo#)MhQ&zBtNRLy9^*akJv;A3*OztmrMPcSF0#0gS0J$s>`CU1X`c8(^R z_~X4}QZyY2L!JY_crDoyH(>IkSDmjCownlCfIfDghjO%jISzdhND`CU5HWQ0`Jul& z83``mD7&~ERMGNIKC+ibA6m7aM6_7 z@5NC{l#E#M_WjN-`tZQf=?aI`mZYr_koOX&C;y~)a7hKtUlJS;Y5DsOh{5O7n!S9i z=BaaY&P|okJJ;SfI4g&H+Dl!2M-|H0ANbtIHX#9f`0(A%b*uKwR>a(6OLuQe63J}7 z8@&u0Ng-d5&~znC^wnlaf%vfb-j@DVZ2oR#Tpexszy~v^7eUkGr;ZsKEH-?tzA3X}yfqJ3q~qRztW!r9u0Z%7Ck5>hkR`L6 zHO^HYx`#hA#s{xn?*lRtUJW5{6Df@sF|)!fA=ONA@%l5D;HlB0eg zAUfo{t)v~_wtajnmbgUMS$|J21qNi^)re-i;#izgAr;M;hOZWg{X804sOoE55wdc7 zcRh;S@pBVu~V~_Ub7cY5}X94coJ_aNrNDR2tfk=#wd? zq8fL$YqG%6Ily~GZ+6V@EVm`thOJq#Y0U$W$rQ&ZQ+8noA?sPo4}Sr8Oxsm;QaxX1 zg%uA9}^HA-dKx!c;H7aW76)MNU!X-BvsgD!Q9f@K#uL~qud(+pa^kGBeRs+IA{i71hD`v)cQND{~n{IYIX>d8ktw`jeu&=nk zwrUFG=UcrouJp_?c^l^ke;dQEz#kFGA-v~zU)#(V$Doh3)M}Ju^+Lurw*aQo3eEwv zNHWMOo{JKG4bHM@!r}yDm)!dBro;SO`W*>L&$;PRo&oV;jB z+=}15nkzhQZ6+|RBRM&iAr zawjH#;L2*usqo1zqIK4U#~z4K(zGYGYHy*S!CWM(O?8&op2Q9Ahd6@gn{_LfTlF1= zKUI}k*AFInC8LalF=*c)B{<^wZqZ9_{D25w!N*!f(Um+sSpckfVL8G#=lmdHYy= z>C1)o;qK8D&NlGP^lE@l`{jk=g;pGNGT_9mBx{vIHmb|px;xbx`8>QNOf_TB+Kh_5C4pqL+e{HRdJ)&o$S?pa!i4j4XM#Tc5Sbcuz8=e**klKvU3rAg%4^VtkaY8` zC!pZbvL*cfW?VJwM^7>u1Y6ciE2e+{K2C)8``3GCRQxQSd#Ql?X@b#k{CJIv!pxVN zvHA9j!=2m$Vih!p7G}Oj%6nep<zdht8g%1LW}L}LaWM>P^31)O&jO7waW z5p?&b>hCBnijJ~?v{1m0!wpqKB9d9z+h-coYokEzS`B82V_jpUP%aEh8Iu?Hbu7v253&m*Qcqy-T@zie+-= z@`B|Ie-=xPw9+(Rqwns*8_LesCYk8KQd^a4^q^_NOaDv*+7Yax@B(KDl=gX?^@h^p zuVc4HZf^Yb^{CQcWbq zz4pFg#-;b>U1!FH*NGYaybW)*yL}N_s^7#G->}tzF50j^h;nFXu5;!exqdi7Mp|$4 zh_a9`K47PMK97lso#CmchcylTW=S%E1HMhGCpHelU|XFThCb#0?yNw_Cl1)O&*0HE{bLs_%QTAv^HX%hyLZn#>I!oT!|* z7&!BT1=Q3&ZMtfO8Cf*(@_AFrs_x~P0PiDwh<)=$b?8dW9B2PdTN4w{LmM~G=$=08 zcw>LLeU6BK=3%XQ9}PCT36e`l_d=l;qK&@R{A=-?Bu^+y#@$bcsiKGH(MA5yYIpsTx+Xasd)BSn_{&nAC$WY$RZ2dO*cQ8w7Y;9P3#kS|S3i2RE21l<1=af?2z6mdes2>^W zoxC8ksr5j45&I$b`nTkJ;?k*K3~B^dzBqmB*;Bow+_Se$Vz0QK%v=BMlq=zh6PvH} zEoZIaiM(TLNLM(5*%CkdoHmoGvkFrYjM_{Hn%rd4dm)cUKk?AW7e+!o8Qy54WST^= zxP#$0%`7K}um3|kIM-q(MKnvH5dD|a>m6G1GJ3-Jz@REU4!mj#HSR>#(!I!)ZLot^ z2)!IM`zHJ`^Wk0ovp20b9R|iEmG~%&r$SnFE5j$bMZg+8X9mrVAB|Vfzv#a4bgagX zFvd-+x#Ev|o;tEGdzk$ZQ7MOuqAea;eP+dPgTZn9GB8a}>dadP+(@Mcvw}KGwZh5Q zJ{;n(*?%u12utTY+N$t5A%YX+lQr)`T1V3a_YVj9U-~^B%#@vVt!$GK|5e@ohiA>J z7kw$nfhh!>~OVC$O^ytBs!nsz{_!@(;$d{CsM@y*6O_9+~8T8lf(>Z?HzVQhPM-M;L;ut55es;$Iz*!>un z6|O#L7IrWmy#eh}Vt#e*$T|4xp#qkAiQg|9F)W;w47E)R zJ#qO{YT?ajUEcgOF9P8*>7w8^ERgPf$+<{@T zHDUg^e(pJjIolwXrK=naCY>uApWkEQ3}HN^S_<`)T7O)X$VJ^-+u1(E+oSi=tmcq0 ze;nQwWB5g^D16F#TN6A9QO{T3F_jAM8Qf4|?h14N4%?H~?9gKF=Ws2|aorpYd zFsO3NX>DS#MeRDdP$q_@jEpVg-<35&5WP!w@R^t4@iHd!R4MAS@$Ir=>^W`S6y;Kq z5$@{Mpu441g>Oy!p6|=vdU81H^3yR#Ut5@_U8#?3#le2yD!)vIe0G7X?#V4+MJ_nQ z5tBn2`SXiGb&#P5j1~Osz(3Gmd)pp2yq9(Drc6x~{Y%`O@CA`6N{!SV<~G>ZuiF^A zSdDuOCdaLbW>VR9MOs!^0v(8$Y;T)9W!+o5RHTv59Kp?eib3GnRlq@5rYQHe6S?H# zT9h&;hT;~@#SVT9(FJlc-f@3qVVqG7uDK3D3ts5W3YXKarm`=kcS|la&V<*OQ(Stg z#fY(8A{xCfl<%}(398wb9nN`&CENaS)eSB=+bfI$brFKE4>Cv)^G;hIgISe5ES$-V za+p{STSTM!Wv_j%@maT$UNjomdFc1nHx1wMqZY~tF?riyF)bl=>*V_OGM0Q84LiFq zwJ%#LzR@RNn)MEi)vy};i=CC8imIg_>0!g_;9=3w=fAwa9)- zv~w;!g%RI@{l7zEZ(TQT{Nf!(pkSLat3N#r8V6zEEtq3;%ZO=%-?0svZ6luW%F?CI zE!;D5+LlILC-=Jqk{yxJF#Em%V(8UA*)=)hyN@20`LXcW+m^|bAx!@Q$3Ts9+K?Vn z*Uv*pF<;ud%~17s&jphrZ%4BAa;e+AkF z;vaiXXg-LJR4|dCnoPUMs86;jtPkpKO&?-v;*5b-(Q}^Hlw)z=zGD)_`zENsqD& z6X8{pi*#T2SjPze@KU0B{yhyAeLF6`U0dnD;t*sUzZNSb4(x{*OV5@kRp07I!k$>c zfLo?0+@?(HJu_H1cLJdTwrdy3xL1zDaIZTuon?Z>F0xXxWX6STuh9)(3t@`dbn`vr z%F{XZp(`1aY+tLH?Zmr2Qlhi-+R|bI=}bpE6pcY@q0U{1KIgXyr{Q(8v@?bDhv-14 zpuT2niD2^8Gv?V0OsYqwmRRIi<@$=~iI$z8ajNPcyk&+7&&+~s61n6M5qcy&XXGN* zG;`#~0qG6G_;sFa_vp_g=0S?uH)zIWv`PEoNr=7bAGO;IfBxt-%gduP>}?SC9=5l6 zcLgRWhzPGx+;OH!F(`@Yy-6`(XY>^?88XRSa^j(gfgO}XpG2LP1Lx>FOO{~lOgm`J zUKZK;jWugF>WEG3(OSIQsp4{SreZG3Wwh;eMG(5x>J5zKNL-9;=Jt*IY!RCZzNvN2 z)pg`!2|a&ShtBcCXRKf8-h#jB&?Kp&VV`U@Tfvrr@iYuZF#dCwExhbNj6p3=WPZi) zSazJHdcMRe#xYgW6C=kTa4jmHw_BH=ziLeyJ!3>9t~psPK#IRPB6^eB+s42;_O+;2 zayzVS%Y&m&I#jsvnY6=YXh`z_zD&fvx=p z%sLXvH)>4Hix*5#Q-=yqQFOj90}g7BvF@t2dTY;=-87N#^cn}S&|7Olj|+*12_}sQ zJD|y0?0TcM;R9J9N;|<>!XCg?Q~VCGOG=+Ic>q2rRz$aV%1VaVY3T_RzJgdMBqz2= z|IP5SAeC_!#Lajn+5N(Jh^}xtkJtgGd!DM=W&Gl4puC6zv$VtZj$os~79z%0Il>qgB6SDS-CGKtNrpECwR zvh>Ky%}+fz7NP+|hiz7r+kl0UW?pT!wjzrIQbuSj9h87`(CBWdSbnl~t{c5vVlpFz zvD!XdvkM@xl)la{fBV)R1NyJg)SK)8zg~?x|&$+H=HQ_SxaSR`7d(x}mrB1=uu)KKH#4MI3cqHOD zm4Nq^nL7=^3Bgwz#~;TA=spU84W26Kvq(;%_Ijbkc6RV{W|KtXM}sgWyuq@}6F5K2 zhl5muynFBa^!TKX03+-g^Or;)JiIc%zW*1l1bnT2@%-yyjyn@=zJydH=m)-@*!y$R z*#xGUwMp!q=2x%Cug&LV4rgY*569roLoEfoylbCJsK*vMoIT%8$e8)N$Cu^4p$hrxfO=5h5N6e(h0wIHaW;j%dRon79Q^p)B4SbVVXHP+FO{lsm^Y)21n$mCZGl~ zcbsxmmpjIo2Ue^!UkjOZFPa?O7xRgNebKFGm^-_X!u^GImjyzV6i|JNI-`2FvE7%Du^)Z)?+1J4 z;Ku_x8dfJp4@2_BeJfM$?iVx`!JFs3V3i|-N;t3|bQ4#XH{c2ibkfE<0o0l2pOZ~h zJE#l8wC*`ugiVY3I&mZ~q?=XRBODy&034|?CH0$QS5f&T!dgKcD{@`g;tVt|tO5$( zTTKWX8gMBdS2erGP8q|5ysw^+zp;sk%$D=R`ofD3~kDL*0hnwO#<2M4Jz8Lv*T zm(O0L=GH%+@e*YWAMAO5WR)3{MseDunLNIkCV>D>k}&sPWG-^-K?mxj2J-2T`J+pI zF*A3{4!XZr8G$%&?%2W)=QdedtKbKRs60u29>$Hmjm9|HuDpk`QWh}z1LxqmuCX(? zhk8P|z(AzTavE#8Fe&}#YG&h9mv3TPMA1#y4~?%jrJ(u8a?MM3Kn!peA>&(=Lmb{{ z?iO|x9xE!o2p&Qidss+6(=ZR* z8paIP;enkl{uVOi3=?P{@(m>F0mOC3o_r0Oax~yvQ?t1tV7$XFoP@fh>=pb83~U_CWIKJW;ZooWx{_pU4Uj7LD$ULc9E285VEUHR*`F||`96g7dvJD~Kn^Q5tW5!9}r0t{Y+J-H6b}8QcPWf=3d8Ch}{+ zUvjH1-pPx<#)Jt6uMQat84_|t)7fO?Nmlj?mNimJ%v?iJN!EhoENFr8IGVgcltqU1 zaSQZb3pOnIvPH^UNNpcc!la^P>~0hiM8TDniSM9nMX%=F#{Yv2~>(EAV*EjUPB}a=tc}*`FU>cuE?U!Hw)Pu z)goCY=s+p1;Gt$>DDc-0yetk6UC&2*06rmD8> zn%0bWfV04y+yg_$)Eq1)4uYW}_d)8|!U1#s77i-hA0L`(XYva-&NdRY`_@pnAyKU02w4Fa zGp&lppb9%d#(41@`qdkommz<{{zbDI$7m~|)kj1@=m+kR!UxV197K{(dS%a9BYw$W z2-|%%8IMA36EWrJhDka66x?v!hKiFaP_*IJR6vkwXQj3h|FjT=+6VM{@gZoQ^-8d5`6-j zDzGojq5|*m`GilwQP}?^6R|_Db8^(cHnp*zWkFlR5~aMVxo^HKvdj;k&50 zA_b!l?vXLU0936Zz6sd1_3~G2OoRJcoE5T&peTS2piR}#s5jLw6s6O+TMwg$K2cDe z@x$7nScm9Nh3%>Jf(d?=Oz%1Qt){RFbUV*Ql060baYGjD)7O^(v9}(mk$q`t8CsSc zJ|vlwP3|!|w4>sS2fIUYtC2|W-&SJ@9`?X(f2wW5P?_POrjvko63vp8i(d7izCJNA zUXdSMJqFQ)8Ukjv|rv z*I*^fLj$B%(pxoMn2(dpWwIOoAp7#C3)!~B@vRAey~$y*WhN7F?nFH#MAE>9Z=<0` zqz#ZD94iK8J~&GQxen2_dOAqUrXW|ZN)@G(k2kSf#c4{ThAw@mUz<=J%aMN=&F=&u zRDA7F$=dpKP}6I+;xgG$Q4lgPJFp8s9#XxS-1pW+vkeRD!L8n7zRKThEYM1DQ^8+bEWmfmt2iSXl4g#G< z2#UZFlPf`TWTQT#;v7}K9^+E5U;D5G5eY?pKU5<@_5sZ(w}zM6?!PH8GiqA!_-mqD3e$zH*)M z6FItvHIYH*^8}4-q%idmx65F%Kpx+Y2%t14c!%Qrf?gLef1r4cHl=6xByI*KUFQmZo&=wL0)E>oO$HyW+HDygTgxh zg(r4r{0jCEBmArd6FAPmyF5Z2#?GbCVuS`eXvhc@gjYZo1^i1Zs)Se1c@tk&!tA~9 z$5@C$FKp20#JF*Z-RLv!wJl+A2)sNg-GavP%!z?vYYQFS6~S|028B=XFNS`0-{Ck zucz4ws;&0kMO|Y-AQc3nQ^A%o-$L%!##lw%*V6@-3Uo)7OfU(Ddh$BfrmAD-w~nHu zG-D}$iv(rXHKx7ziy&#op&}grBLF@xbRLf?}%hx?3Erk zR|R83GDiByaBck)WQfQr&qS!q*Hhsc7OR?_mT{`ngFHn+Q)Yl65KHNlgUJ}VN00>w zn1z0#F>2l1m{D(gYcVD7d!m4;;=*FMaDY~Z0UbC$IJN=*#2}9!m&}+4ggVq&pQRDxPcwXbZ#YJ3TE0AN?w!muiF?WXxdf7%>0*VGr zz3w(vN#?WM73UR~SAAk3AW(ALexQpP3S5VNznz8&w2fh*T7mq%n#{L;wH`HXOl$h} zuSb5rO{D#Ok+ES|@Ny}<^68<@6QNKhL`#x;d1W==gmYXUiZ8hIJ3X}YS$q?{ zaAZe1na_Opv)+epuPipU;2#%&BR%Ja?N0L7M~_KA$`^9kLl(|Hz>mycY`4NSpl zv;OWSs(i8ewVF3KaKbntmpr$)WNzHO{gF*0=6i~)Yzt=^7pfu(W&pGb*UN?l9Gp$g zSHr=%H+Dsxr&}_R`yqZKR>R5Y><_qw0LZJ-tK z)4hWNDOHOs_?O_XR2K0ppFK$#EL}}FPcWCgD{xjWeiMcD~X^hN%SKlew)=RvB z@+N(~L{9eO4?sjCWCqelWq?IvzoDA}j1Pi+8Yo9*e4k}m1(qrLP-RvO8-;?i$$bM0 z7B@yXWfm6N8>k$cQnQ~b2s}()l~DSzFS9`++q^j9ArXRLNeMN8?N`Jdw_6U~2cq#? z*#`3R!(BKxf?TH&$gf>9#{QOngkUoKO;G;@uZbeXb2fREoa^9~$NCZ!(9V0|LGVF_ z0f)f7!8F9u#O2QhKDs&?kF4MAb9Wi^$ZVQwPfVnFp&p6bmfw#OJz@iP=MuT0Jqu3m z4i^zw%#OR}6&3`Kz~ph5tsan(SGc~=aunW)UL>!8k#v*+kB(l9<{Z77j66RhW)DKN z!QJvF70d4r1n_}g()D}chq3l*Slty5NWsSRcib1ybxg&O#9!k@=8<0;_Z><6+fcqE4 zF`R|)Nb#V@3ZoYz5gNsZV(I=4$)LJLFMnUu0Jch13vp}$?w*qYWU@&Z7m58hm1_cy z%2=rQoAx>H;QkE#-+wtF<*RDCCo1V-O~8an1e5pn2Qa6FL%#fQ%K#kfS=_U+=lv<- zPJlPVT`~#$MDhz2OBeMfuU5X<}mtDHvWv`MQ|y3-R7Ngy_AZv&riyPVR_+ zXCDN1zkNkhj7%r3eRgGrf_c{*PiV_OntS2NYr?YshH_t$Um2iP@qJkb9!!TrOb%z` zRk=O6G=m!%GKB9=23Jo%~ZGkO4yDJRy zglQ&xPpkX-pQB)kl`tMf>3rPR=77GIg!Q`S)i#FK7I*ENksav5V8$*{N?aRY$KLHh zQc$ZE#pGEC%jiWRuZ-hZ1mEJIKJK2U)<0Kl_{V*Nkj5=o)+hTymd5E+DR@_>invKi zU&=a^O7IN7%e>8RcNk=bfKdpZ!7RMn_QWOao0UXhrvUZ2wmn^7WN2Xh*1MXJuWlvX zKgNU`#X09gx8rH|HM7bEmdl#K>0fkg&v*GJfZ@8w-eta&9kD+q5;7Bi4=Yu>AWOV` zZ6#n)A9eJb9tzyh%RkCgJ5_De?FNT#}L}xxvThd=0Lx+h>W&h%5h7@IbFB?KAb%c^_z(O5JaX5Wz>$Y(UpT% zdoK6f<*(T2O1vs#NYZ!T=zq>ciD7@4cv4`YeD{rdIQk78Q}SLQBU6QSDcSrXl(G9% z-{JkGiNUABQmiy5bYI_J(lRIqLgEgEZrqcRGf6!W8Q<386rL#&qj(T^&2!=Mp{_+V z2%{HO^lsoueZFTis@5D2$HAQo8RjNEDBGPI)eBteV}It+zRc_2ae#|^HcPKVx@VCX zd`hs{9%mEsYy48iBKy*7g;J8B$mn&Wqm9D*_MS*;?eAd^s3_hH%Eh>0NGFm)^|n>? z3J|^A0RsY@?AsL!nT!QcSch&) z89Lv@tz?YMjd9q*Lh4mnb#L#z3DO#1+02`>Sm;E-&EgydsP`m+ch$W;50;>MKm!|K z2w5PGj6**JxA?02&bmCgISoJ`_ceda-pakHBfhVwGib?&{-*A}86rn1phL?_r%QQ1 zIu8dJzEXHSD_^MNiUY^!qZp5%2JCFobZB2IGAQW_d-lFU{Q>tfss{>U`Idn@u+NQb z#sqhZ!UJ{B**XyL;(a3+_dFpPP-d2g_v{oSVFJ%M2@$sPAJeBm=VnYCdAE6(y1*0n z!-DWQst1_I@9W+Igc7|nw(oq&q``*aU|DCKE~$=x^S@-55ZPYw&xPC8Xs^-kdL=}O z*6}jy8cyNrpDX&LKjrno3W<;yGro?fLb)Yj=;WW zrf`cuQ~h%$O{cW=IH+mvvJs%u#`KV-qmEeMDbMcer?3K6Th4|p{rKi<;2;m(0iBUl9MewJWTCNfSX&ayn__KZ*K^l11`a3XPL4enlEBDU?e*uN z4uLl>h6J3qv`7=LdrUJ=nVMZ=ZpZf&?Tns?=ALflbRDagMu`J)D=w0;oBHI#!Eb+| zqk_eeEuQcB94(c=yPiA>C@eIu=z3w8CS=iVbH71+-n(gOMBMqx_;JZ^8#g39rRCrjJf$w>K80PKo7kml=&b6|Jm#toyWPy<%;k?cmlx`^+~f z+v>+6C*Vi8wkwt@Fr9$*NIOpR;cP{nziR9dd{5c#OJ2vTl$Ynu4>_`@{f$#q*5}yK zu!=Cson7%(&H3yhdJd7cKQKr2DL8)`54WyFGLC7V|6x(2IT~r0^+B#tc0-SbCa*JI zQz|>H-EG3kYarw$2F&#b>a!00+soF5M-tOjVPQA`>cSITlKUKob~Iy;T& z-h!ip%{AJ6S=bK?F^I-4A2inSrdxe`aU2%Yr1Uvj&m-{y#=P4#iyefRyv4ds1J zq|P#ICFotXg#=r=e#h_#APkaUfmNhT=vpR=RhMa0Kl|R z`;-pelzg>r>|VK}9~KCi+9Q;VHy!X5;#<$Fa-4;O2=U+-{xtqr!a4bxdg`t@&D>>L znos@gzfeWIztbl&%21SQpLKd_D@5(X1>h_x#DIbLYK_+@YGrwWv7sar_X}pK=Z;go zP7xaE9`A+Wzj0Rlc*vxsq|-usd`E9p7L1>+^U%dlkhshEG0nvNmhf!yUen!m+Wr|} z{%@V%q2^x%=6~aFv`(Jz>q%AFKPNjaTqg%xTbxI-#S2sBRlL@n_>8LrW{r#7oYGD! zZwCP>-;05t`61a0Ek7>~zrk@Gr(IFXNxHW`IZo64m3ARVmC?v8W&3X1FXQ!dc_=*z zS$xr<9R*6O85jU_$JQeEYzJ-IIR>n=`XX^aIj+V-7)Q4O_tejKjtT0jJ|sa zrdjJ|cmE9cGIV*xrYZg&crz*Ckq4^Ax#}w`n*|rNw<~W&ZIMQlZdUEwRj^hZiJ$n| zuDG=IhC$ zC0-l4*U-sj1yuLy{VLIcBqv%_1yn?rk5UpQ$rfYJ#;k26B zpE^*47OrnGQMIBnFr`pnP1yE?`<0)gy(z#s80UK2tZ^I2QSUiC-83ZgTHUp%>xDz7sD*ac*QS7Jy}Mr~=303*UVcxh zO_a1fxovUQ$gOFRSxj*8LBIIQ0{D{7mv+sZdMQ$w+i`Kz8>QYaD($|gXdgfZH8|*j zhN@0QYjy}0pQ9+?L8*^Xg;Row&6Ta7zty_{l$xRVec@FQS zAcBOh*s*G4H)dT-c&EVIvEm_>o*R0l(ie_gdrb1{y(blLus-4P=mcU@)wDCxFTXJHl&1t)~$RM`%;z1!zCOjKii_=W-jwqoIc5&h69Ki|MJq;9YEHUM5A%84c_X-Ja1)pdkA{ykiSan6e)y#iwwtmDHq<-cJ0Jh zY#a{EDqYy#5fz9|y5SgQ`B3RR3uz6WdSF&>{-c8|RBROPGL1Z>e{>_c8=iB8gs2jn zO?6~?6cgK2&AvEw8}*M*uUTr33zMpvF3A|)kih@9#Du;9J5CZXH>Vbo*B zdZv5S+fu2H+g+ge%DZQ?su?~$S8FBt1dU!sc272RWi9F16AGV3OkSoiRabmJG4#dk zyEz02q{Zj2IG^AR;wKy~($=w`Qd{43N2{qZER|<-7l=7L?Hqp?_p&<6zTHDI#>Mfo zh7$XGqc>;n(*Ja`ijYXBDP!meE8cnO(j<#uvDZG6W>4QTJV*-}820XR{mG1nvJqk; zf^xDC-B|zeIRDJi z4{0_!b2{9%6*9B6JC^|^ZG}BPlucBUONeH%j6;OibFUnz8yjpjr>Dx)Nc2%rF?PH= z|GMA!P+)GW_+KT3%qL2%SMx60E#2DGZQ@$@J4~kJZ2tAw4&Q6-_4jcz<=R<49aD`E z%*BTDOoTy0TZffR$XU^Go5#b4f=Gfo>s!r(NP^XaN!^$AC@-YCdBk;g^@we;6kjKQ zD*PQOOJrVpdfH~Y_=;R}Tj7Hp4eapY^{9&@*4O(jXirOAI;hX1Z8pyhtxv0J_s7== zKV^&g%ArX2#3Le%@dnY=aTt6MNnCOT!2r-pWUiX*fo%Yn+wHJ6uzIy1QV7`d2P?QLu8;o|<`v~jR zU~Ph{k5kW0E!;xNG!+<@H{*+IyX_RSZ(TJyhBx(aI=tF0dO%QiXu&6$a-nkcnvouM z*jDe?b1;DN<0aeg#MI(dNf0cJ=MfI2x_onxOn6LVGZBJizDRDuaFjM{>tS7^@Hu1c zUZz`Ri>{t;jGlGcC>APDXFUIo*o5TY?kpKd5H_^p}&n$J|L?7h?8gOe z`wE%78m;uqIo6T&0OFmp?7%B>e{8D;Z|n8Af4DfdCg2C>H%mZ|nvy$b|3bXJSte+lUfB7gakM$Gb&xWW3U5mDlaPjB^dCf_SfirvywkO%wG4Ww9Up_?O$ zJYTD4SH>dRrJ01PdSiG!Ki@ z)8OEqKkiIV^Fca-a3}K=<*CK>VYw*3DYrmpW$n3r#Kp9K z#eA4<@w_anai^c~BzEv#XW`a0!wgGQT4%|tWZw5RP2v=@xX`Ha;qW1)){lt_^e1TZ zLfGe~ic(*EyDG_R*9gmmw7dBhDV@642Kf(K{WM*~)MyRz zY9g~T=Pbc!Pu+_;PfPtO>*mKcoXt+%e+uoBSK%+ibcK;k%D3_DT6d!E;zK2;PwV%9 z3bPEGjk)#P!z95k2kwbtBr{jsx0AWs#42d@GrNW_TtHkK8rx_cChr@)dv>ea`{U55 zlkd)qG8*b=Wi8Q{*csO4D6q>jAy~8a#e5 z>+a%eKbI`+b5IZGZXfZxI9v&X*B0h!eB{FG)V9zCp$~)ZSEH-E2?a0i*wRzb=E-qu zr?anJfE9P-sR-;PgOSg@GEx1~5PFQ%RTM#t*DcZ)-=Ur^?VLTCq(_bxyI0SGj}Ikw zJM3&DD>h-eM9FYrNz3!iAF6>2CebHi{4=fCbB1b_2An^9l9~*UsFNUbt!~AF3BDr- zD4*6B7Zo&uw-)yp4*d2p@e4iP)NatKb$Hny?D);DK&;}pVPfz%HhV;5VyHT6U1_L+ zHhxF;b<~RF)tQnIc2$U9VvHhMLJr;O;+-;JHJ?XPMh_fkno*t`8DW=4Jp}}=$3&GG zp}*M01fAcKZF$^ZcbB5U_P>*tS470yId7U}I#ykBtm(4T`s)z9Me^z9FAnm9r?YBu zcCx$8vd$eq%=7(!9q1ZZ_(lqA^sQ!rPx@h!ppJiyR_Y34TdNB{j_D^>RYztq{UxG9 zau+Q(TH$(8-oaq6VNK*^J4p0%8~N%zZ*KXwcyi(_OEX`(aLTMXn{1dV^I zUI+rx|6a{jwS4GQE@;xl$@=Z`Vb9MU-9KO1exobs{BbO+gRVd*;JfPuJboGNO!?=< zv3bmQRJt4dgwL7J6YqEw;M}M6+zHf10a08>MMCj=`?6^N^3sh>6(pgbrJJb|x zWk(IsF!1i#jOzVnyx>4_36U!UoW?0>KXNRd=t}1*;3l+xFr(8fV8LbIs!hX=co$jrE7t zqi(9Fi^{oKn_CCi{``}HvqEf2dx&pQ-}LUdm3NxLR6GbPmvtjMjePUO=jWn%3^Q0O zs0Y%y3*0M?>*rc$1}P!eCJJtFJCqsa)oIyUw()8X(*3S~|Kv$lk>j8>z%m8Ly7*KW zHoquqa>DKMx{st>b*G8yf%kf^(|TD@;+`qUSmJvDai{Z|AjZqi{&j!w&JA{!o r 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%0DtrkPA$%lD6$ZN>Tz5~lzYMSNCj){OUl_G`T7 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 Bp_%{y literal 0 HcmV?d00001 diff --git a/pages.yaml b/pages.yaml index e56dd8c..31d6be2 100644 --- a/pages.yaml +++ b/pages.yaml @@ -2,5 +2,7 @@ - cover.html - bouba.html +- gtkapplang-1.html +- gtkapplang-2.html - drivingmissmuni.html diff --git a/pages/gtkapplang-1.html b/pages/gtkapplang-1.html new file mode 100644 index 0000000..f5f8bf1 --- /dev/null +++ b/pages/gtkapplang-1.html @@ -0,0 +1,35 @@ + + +
+ +
+
+ +
+
+

Linux GTK Apps

+

A Language Comparison

+

by P. Michael Cho

+
+
+ +
+ +

A famous hacker once said, "Linux is only free if your time has no value." Well, anyone who knows me knows that my time is about as worthless as a bag of salt. Thus, I really had nothing to lose when I decided to ditch the glitzy, glamorous commercial OS'es and go all-in on Linux this year.

+ +

It's really not that bad in 2025. Maybe it really is the Year of the Linux Desktop. A lot of stuff just works out of the box. You don't have to waste a whole weekend getting sound to work in YouTube videos. X11 isn't really a thing anymore, so fiddling with ancient hieroglyphic Xorg config files is no longer required just to get your anime girlfriend wallpaper desktop to show up on the screen.

+ +

Emboldened with a new sense of optimism for the Linux desktop, I decided to try writing a few native apps to see what the developer ecosystem is like. GTK, formerly known as the GIMP ToolKit, appears to be the de-facto widget toolkit for creating native GUI apps on Linux, so I decided to learn and explore how to develop apps using this toolkit.

+ +

The first problem I encountered was a severe sense of language paralysis. There are many, many choices of programming languages when developing GTK apps, which isn't necessarily a good thing. Apple doesn't always do everything right, but upholding Swift as the one true language for developing macOS and iOS apps reduces a lot of fragmentation for developers. A walled garden keeps the snakes out! Nevertheless, I decided to try and write a few small apps in a variety of different languages to see which one feels the best.

+ +

C (Rating: B-)

+ +

The first language I decided to try is an oldie-but-goodie. Just plain ol' C. Linux guys really like C, and really hate pretty much every other language, and the GTK toolkit itself is implemented in C, so it seemed like a good first choice.

+ +

One cool thing about GTK is that it is based on runtime library called GLib, which implements a bunch of object-oriented design patterns in C. It defines an object model, lifetime semantics, and a bunch of commonly used data structures that you can use in your app. Object-oriented programming is definitely out of style nowadays but I still think it is a solid paradigm for developing user interfaces. For example, it makes sense conceptually for all widgets to inherit from a base class that defines things like screen geometry and parent-child relationships.

+ +

My first couple of hours with C were glorious. The code was just falling out of my hands. The language is so simple, it's nearly impossible to waste any time on design.

+ +
+
diff --git a/pages/gtkapplang-2.html b/pages/gtkapplang-2.html new file mode 100644 index 0000000..448e5ce --- /dev/null +++ b/pages/gtkapplang-2.html @@ -0,0 +1,25 @@ + + +
+
+ +

Unfortunately this honeymoon phase quickly came to an end. Writing in C requires a lot of boilerplate code, and significant use of macros, against which I am generally ideologically opposed. For every "class" type that you define in your app, you have to implement several functions: one that initializes the class itself with the runtime, another for handling dynamic setting of properties, another to handle getting those properties, one for initializing instances of that class, and one for destroying or "finalizing" instances of that class. Confusingly there are two different functions for destroying objects, one called finalize and another called dispose, and I guess this was done to eliminate cycles in the reference counting mechanism implemented by GObject. Big yuck.

+ +

I eventually did finish the app I was writing in pure C, but it was a shitload of code. There are probably a couple of memory leaks too. One great thing about writing in C is that compiling the code is basically instantaneous. I actually started to feel angry and upset thinking about how much time we waste compiling code in newer languages. Do people know that complex C programs take only a few seconds to compile? Debugging was excellent too. GDB just works and I can see everything. Overall a pretty good experience I would say.

+ +

C++ (Rating: C-)

+ +

Linux guys are going to hate me for even mentioning C++, but I of course had to give it a try. Despite its numerous flaws, it's still the best bang for your buck when it comes to offering reasonably good object-oriented features with very fast performance.

+ +

For using GLib and GTK in C++ I decided to use the gtkmm library, which implements a variety of C++ bindings for all of the classes in the toolkit. Along with that I also used glibmm and giomm which are required to use the GLib and GIO dependencies in C++ code.

+ +

I was immediately disappointed to learn that a ton of boilerplate was still required just for defining some basic data types with properties. Properties are an important abstraction in GObject that let you bind data to various widgets, so this isn't something that can be easily avoided. Basically for each data member in your class, you need three accessor functions: two that 'get' and 'set' the data itself, and a third that returns a reference to the Glib::Property object representing that member.

+ +

Another disappointment was the documentation for gtkmm and glibmm. Just atrocious. Looks like autogenerated Doxygen slop. Come on guys, it's not 2008 anymore.

+ +

One positive thing I will say about using C++ is that memory management is a lot more tolerable than C. Using the Glib::RefPtr smart pointer class instead of manually managing GObject lifecycles is a blessing.

+ +

I did end up finishing this project as well and the end result was satisfactory. Overall I didn't really have a lot of fun writing C++, but then again, who does.

+ +
+