From 0e3eefaf0f4341d559d11ed523a74e335d2b7cc3 Mon Sep 17 00:00:00 2001 From: Andrew Gerrand Date: Fri, 3 Dec 2010 06:57:30 +0900 Subject: [PATCH] doc: add Practical Go Programming to front page and docs.html R=r CC=golang-dev https://golang.org/cl/3391042 --- doc/docs.html | 8 ++++++++ doc/frontpage.css | 3 +++ doc/root.html | 2 +- doc/video-004.png | Bin 0 -> 22713 bytes 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 doc/video-004.png diff --git a/doc/docs.html b/doc/docs.html index 90e20f74e3..c74ae035f4 100644 --- a/doc/docs.html +++ b/doc/docs.html @@ -120,6 +120,14 @@ examples demonstrating features particular to Go. These include concurrency, embedded types, methods on any type, and program construction using interfaces.

+

Practical Go Programming

+

+This talk presents the development of a complete web application in Go. +It looks at design, storage, concurrency, and scaling issues in detail, using +the simple example of an URL shortening service. +See the presentation slides. +

+

The Go Tech Talk

An hour-long talk delivered by Rob Pike at Google in October 2009. diff --git a/doc/frontpage.css b/doc/frontpage.css index debc9aa44d..bcdca64011 100644 --- a/doc/frontpage.css +++ b/doc/frontpage.css @@ -77,6 +77,9 @@ span.keyword { #content-videos .thumbnail._003 { background: url(/doc/video-003.png); } +#content-videos .thumbnail._004 { + background: url(/doc/video-004.png); +} #content-videos a.video { display: inline-block; width: 150px; diff --git a/doc/root.html b/doc/root.html index 3bc781a678..f98f9c243c 100644 --- a/doc/root.html +++ b/doc/root.html @@ -60,7 +60,7 @@ google.setOnLoadCallback(loadFeed);

Go Blog | More...

diff --git a/doc/video-004.png b/doc/video-004.png new file mode 100644 index 0000000000000000000000000000000000000000..92144549aba4cfc9d268d886a1ba45fdaf3d1766 GIT binary patch literal 22713 zcmV)lK%c*fP)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RV3<3oSDTOmptpETZ07*naRCwBi zy?L2(#h*52RmoO7o)bieM`-Rem#TZ1*&GR6}&CKkaEVjMz2fB=;cDlVMDnFuM0 zA`k+VDl^3uaHwJklSzz2C>szlM#x6UmW*smYFUycOFgRl_3Q38-RYd)@B8-3AN%{A zcW=LTa;vNB4fmdR?(h5d-fOMB_P)Gv^Ru-!dWqHugMp+PU{tGs0}c5>Cm@j&KnVZ@ z5RyQ%s%Bt71_Gi0f*=48iUvqhBO+RB5mTMU&FT8&#!D}J=pX#>TdqFwo9KZ5~YyaR!ey(vK1T#Q^77ZZ->8O$i!etUbK!^q_2B<**qsg2S&GIQx z5P=8*G7=<6MMxkCLUsDy@BO{M@Av-pX*w;im#^LV!{7JE?wr;JB0q_25sh#l1Q4Fj zIf9n&GH3`Sd1i;J$xf_5&ixw1( z+v7t3EQJvf%>lOoZ4#YsM$(wyzn5VgrK+9XeYveJU%I1(0{ z`uc0HZ8pb;w-3k7=JxGd?|9d{pM2t}b*)Wm0wlAtzgP+YLo$O%0&@2{1qS5NDg>F+ z2nZA$nr}4Fn#=)5NFo4|M(dYb(Lna=++QE9$qN0rdB7x7dsapePU_Q zu;i^M|bEiO~AZ7?kAO--203d__ zqeX}WNg5?(Xhn!*K;-a|kN*6JKKxO-5oFVay^DYeAgR1|rhE%|s(}z3XHHOxfHfch zQ

GA3Dox}b8{TH73${3rE ze)uDgKKjVXIQ_`~`6Ew#^*i4BRZl(f#M>@kzBILJbRi@})EY9tEF%T*2w1*%V1k^* z5DFr$}&OrXJAyXBtU<#Bm&D}XEm&*2%|aKVCu)GywAw9 z$;T*w77!Gm3nC2)DM&Yp$Qut-2pOsZGMh9x^AbVwkRX6;0BJIK&?FL|NdbxGQcuVv z2!kNP;DN}549f^7n&-D=hCmaV4_@5lWWa4$lx2v(bmR4xKKSE5{^5W5lc&dPT4s*IUN=S#PiR;c)VV3Hk((jUBB`AYp2I2PrmJ`2OoJPDpVnb z(SojM5h6TL0Sh(500`zX)H=Dbs^n#?K@e^X08${-XqJ%zMGJrk(#gnE1O$ZW5D5fW zL&aPXq!p4`s?0J23%w3D$TE3J`ECId!Vu(KkI4!UFf_8rP-qT=K^b@EMtVT7miG)W zb4LRp7y+OV0v%|i$pQ@^>4{jd&7UwQQ1U{x7EW(!q)W>1bh45Lx{+DV;e&gfnxgr@ zue|W=5B)EH@ue4DJUu)yUkt-y(BNL8VQO(jEH350=2@_|SNXybA^_pgGV1pXubjFN51|JL8U{*{+Bs@7IF>%pBqc=5$*Z+CBRY^{ppIF-T2aa3z&iqJHUue|t` zy-Np#zxeF4U-Q1NZEk8|Zi*n?QJuvI&;Zhipc+XvIRH1bKnO+;BG8-+m|H@X)^iU; zx&)~)Qzn_f2@uU9jESJ6{w1XPKayd9cT zhhQuXKnqzz(A*%pxy(W#z$K7DMua6%yiVdnE z^5*H$Pk;316j8^iHJN!>F>1NA%a`uEu(vZT7p<-9AdS=R?($%H;lT$lKk>+w{pI3h zef-MJ!^%s~y>!z=!enesMuY;C5oH)4BaFyf&t4}4gGq36DM%R6LhJ_~bcbXl;4KiC zX(Jp;3TP3XZ`AxQBVkY&43J=?B!*OI$(Kp@1RPKxh+>p5!yF(2u$gTWPS!9ZN@h{@ zI80DFpQhweWcqY75Y7fbVMN|eLB>22m|2Sk!pxFg^c&-DKq!n>qh^enSr|L+0St7I zblOmSm`>NvzVKq3S|llkNY>4!wpi^fg{f+~yt8}t@*{lY%EjH){;<67;_efVKD56y zPNyg9JFg#(@BG?dfAy{J{-b~T&z9ZYho5-F-4fmbF!%XFOHkH@4$X)RtAu98yEQ=) z^Z$x~MV`3;14K#8JPHam6Qk2bAUVo5uoC?nA+?VFs7@rJC&8Y2XCgsD&EPsi3;>Z< z3OOPAL!aTYk_5$E*UXc(=A+NQGDiNh>X(S2NX8qAEs_Qb6d;UQqYbItFtPotF_^W& zKo~{CIJVojk88B$?%wI0qf3`Aot&&|(_%45F>Tg6e(=;|Z+Z9I-}>m4D?0-ZR*R(p zF^gRq zgI%-~LC7q_8bT9b=2Fvqk|Flc0o@0oWg%*c+B#A!$}Np37v{1B_-)6z0_k8Dc2r)zIqcczOsl#kign+Vf?twOBm) z_@m$XZNK)tZ-48--rm9P&W;l`8d{q+4$v({OSiI9R-2)1?%aI%@wY#)zw?<-KmAqj ze8>G)9>}ZgW@esuTbKb$W>I6brup#ZYM}Yrg7{MI)_KfrLt==O-la znOOp1P|`7qnb9Q%=4-D^jmbwOsR0y~Ny75>n@Z9|_G_oq2+dt;gr&rnXt@`JfPr*| zB@9C^j+VED2<7J%mY#ehT3+FlwB!|nq5~c?ly|@LU3IE%ayO|RpB&!0b0->GYX=7x z%4&CiwOFqYS4+RRzq7xy*eM*`7Qoj>}0eK;0RCEU8dDkNACWA5nw59;vM59Qid^%H< zydCI3H1A7q?DXacgXpge6D1m=nR|3H#IL;g{9}(k?(WkR(RA&lYsE0Sn;Gcqlg)8G z94;SBn{l<;8(5-o9OF};`^A6#(VzXwwd;3o-MqZF|KwY)e$CsTdicJ}JImFJFMs8e zpZ(k~KmWqb=KwNV%$>Q^LCGRjGs|2(Uvm@~)WU&iq=#CUAp<_+b2IBSq_M!k zMyR)q@Y${0Vvf>g_^&|uIiGc<$yeSsL zFbpmf0}VVpItB+=RmjaHt=H>YH`?1CeROwsX~VE-`p8dxCP$cM2ZCm(4enN3 z&AU6l>1@M!QwWl>*Q1oAVM+S~U5QC}-!E`Rnt>pTTSPB~?hZt2f@S&yk?kCS!A6U` zM{uV?gtx{z5rkJC(sDB^Kte7;&2qgK1)1U~#!003qc>`xi zoryPvcVnvvgPaYZQ*}a!9BLa=-8$K9r=n*@mFu(xpej6{Y&>ZO^adq`r#=&o_X&1 zC!Tmb#e1X6NSa_mg`6QL&?W~k%i19rEz~;nfI~n_Qd|ipV?q;&Kr<4`uBK8pBTYmN zW%Dq*MXilp7jBX5;s9I!av(%wo8)GyV(P84NCtqdUlQfxCh2BoL=S43xpgqzX|#E@n>TN6He>QDNL~zdAP^x5Xp%CS_Kq4m=$oHjr$3!+%s9`P zXrmhjLTV9nc)Gy^OWdbu&@8|RQ3H47WC3A92mUGH7-t0)h)Cqo+hX9{D?!QL-wbm) z>=J^co1;_w`A~XJP{iCZ>)#u<&<9(&$!9K1N(#uyuIG`_oArqUwh$`0wk}-QUo4Ml z&4#kGvpPCCs*3wBUiyajzjxZ4{_-!qL@)4RG4TEet^n=+%X?S$cAk3TvFop1+uvEe z^Q+%>?d6w0^2yIW_Q(UfJFES@)&BiguUvUx@51G1Qx+sAP#a}ZN1IAjW(I8P;-Kbs z1UeWoJ45)h^FRP5k4_Tu7f2o;=x+N#TNKzk25oMw=S%ah)IiS4-FzsZI{Qc!D1T81 zxVc(%8pKTP{cC%q(i-Bf(q!fkQlsgr{F$nsGA^Z%xpnQEi2>L}zxmWS!?5k!G_%F9 zSS^nH8bt($uX7l{H*B#e#@%{z8Bb0H-u z_BWKp2WVRZ3$sNXqy?-nGaM*21nE+9V<>yL*-y)eW<+%5D`O1ZyU_t)@+~2iwS*W( z*6j^Y&`P?J7~y6iKrG48vzs`lJYzRbAhNh23S4NUV;hx88I2AqvYXr?ji4Tw>M_Rj zr)(8GOIe?DekEapS#bq0EEn&7$J>A5^Iv{o@6!9;|DMgXdG^{Xuiv`!=)(^@@s_I> zmP3r2>BLuy<)imqx^w$xA+%f!tD#^zSPW<=Hav9o;jjIwx8GhL@7cH-_|_*M)x`$^ zBLtWjbXr!yxlx%ukXekkv+7!>W!rF=;aTU9bTfuL@kfe0%05r;0YT9evNA->6pajS zVJ!=+;Vh{`&sFMa+qzx>7J zz*?s|aI-!w?mNq!<#Ks>u^3N}A|@zaf9zkm7i!Tw2= zD8d{nW<)a}P=V6@cnWxGPYo!&`$=Ta=&lzcOO6#&nl$=3gc9*P)I5a{k${VhZfJ4W z_s5QV@^Szzbv4G^5hR#Rs31e?R3~GeQX{feS+bDjMbzAi?hFnH>v9aBCZ)_zyIZ}s zYUj*;c(<(m>L2+YBXg@ULS|OnfuO;R`v?1b%f-QB@$M&|c<8YQ>$G{tQ%`>4)1TUm zo4Qz>tT*n%g$rExB7o&`XIj@=H*ep#eq(WP@&EbB4?XhOqqh!kUjNFq2QIBxrD=V1 z>+mwoOtpjSQat*Tm--VzC8(Cor*v(>%>cCYs6mEkvJQUIFJ<%h)7u-tSqN8jrmh6* z?wO|8>3N=VSG=K=isqw|&NNU`eo29RtIlM#L;;wc45qO_VlW&uFbtvAnkBB8tJgOE zvMDih`7Dz>Q`cm(0%vo-u%hNm6_!9iaxaLm?8GLYX>s}Dr7QOxynOu?FUwb6c=6E( zE|=xOoufPBIBnXrz#zkVvnH^!voKqXCptP=FZT{!{K`x3eeZj2o*W;YjK|~pExT95 zQdP?=LliP?14g4$nzDdM{f_7DLZq^>1)fO~`XldmR|<6>X3|6^lE}X#oe@HywLtL% z96sl`d@`m_DazInNr3Py8ia45PC*gW&|tF$z`0)`WSiSWqdokj&91eC_(x%m#ntPvI?MW6KzPrl(jMKPrGX+$&_TJ%=NY$VJw>VSi- z8^IKGS45=z(_s%K7@a1ym;oRodIPAWzO{Y)(V?t5uAbd-iB-=$^0~;~1+M)Vqazmq z;V7IDInH_*6INwGgoHpeLC&Bs6qL>B!CgPG-~1a~<1o-Ndx7DDiciqd zIF67PPG+Z2E9JpQpMb~p+qYK62QS}$`{-624b8dOJpfDCsNSgtjp6+@le2egih||= zNCv~QmmU@TlHaRjR4D*k2SPp;jM>^=98h6^q_OcP8?y{Ha}7FBnZn3ai(KB z0D*31P3Lms+#l(Bzk(*Rk%TG{Y$Muq<)H`v{y+M^A9>4z-}?S{w|crWEY^!g$QIVz zU~Y?{6(hM0#KQOXc5c4@>ZgAG7XvuFb8~-h0UM6SjmlzJtW5bn(}YPQoxQ(akZxfn z;hOD9-FH-@5gq}V!r(AO!q;L3LxYzTr~?K!z*;`;s3b(6r87eo7h^yfUPO9$LGx{X zmP9xVEmYi_p}Tunq!t0VtA)b@mi?gZynzXchohnE2)&`Th15M>J)kYN)z-2%=ge96 z%Y^Qj`|gj_zvCOf?%TfU>lVvZ+1Zg{ zSPWLmgdo~Lv!QGb$6GgUKKt_LZ(O^6^Tr*z*J(UzqpyaY41sbc$C(g7i8)ZRkfrD4T%Y|eu#EYuI49B|=wR!|!>xLh z{qFp&!DAM3if<1)j3lh7Ya`$EE#LAppZb;C*Ixbc5B=2T`|p46d)`hn9~R?;<=zU0 zAlFlj+5~j<>H|+a{LtyGJFi~9d31Cf)B5#WuWw>AwP;b7yStOpfUbaL4m5D?0c2Jn zgr?3DyZJeq!&-KFMTR#_{k@B%!#k%CEMXBqFR5UmHF+A_$rf;?M3RXdts8edJHf39 z)&L_}9FS^68lObDd1!VUE4vqs&h8}V83N~hG->OLusIw-n9YVI2OVXsl_&)%ew+86 zr8(SZI0|H)xLXcmZVzYKjR<;DNg5GR4bE2I`Bh*2JAT*iymIv_%4+vuH$28Vfxe#V zdOeL(9b21P9qZV@lW95`r=xMae)GnS!`Dxy(<$1z#_4+0usiG>hy~6N-OSy|p_Gz6 z-Wh8u`|k&~QfYNDDC_xf*)=(ajB>V`WWI%shfIecji;zm;Lw*((bJqE6%SdL6=gb2_cZ zHdUZ1Fiu);;$%}*h6`6N?_W6JV7r(0*KMk@D-XR@wrWfq%2&x$ZPyr%Bh-eKkp-@f{C}@_WQQaxn%(5j>HCNxf6kQy4pw${F-pt%Z zt+8KwA-q38JJX0yVbD#poRj^I*aDg4i-bAMU_#5l>S`F$^qrV9*-HMo&q&qIoE+bP zMTu?Sdpm>Bweqeewr+zo439tYRp0dOziwD9c6WAGLn(t#<8*j@w23xq+DxZ4Firsu zw8hle#J&9s2bV5ixOi!*jkd7m#Ydia+Y|;xQS+@d?@;R=<{TAK@2qUg7-rc!QjnjM zR%t9|o-`vx(=N3_<~Dc!0Yb*w)LMggK9((CMzc0qm(6X~MxwR!sX$F^iU=Uo8U)lx zZ-}8!YNCNCWkwbaFn@CbVBAuU9ChEpW>m>(t*B>*lae= zKH4yF4F0Eo=zAZ(a@p)?Z*Olw-aMIZAKe<;c;R4gvG8%KO(@G17t5fPGSJ6*c(~rg zdR;doFJ8I4y6=HWuqY{3&0|;^%3`WSAkK7n)s3L7Wv82nkda%DrWqshO-zZ4;mw=V@yRQ% z9opW-Z~FERv>bcrz&Y<3tvf6$Fas)4L{l>>X_PWB0@fk9HIa}Lvl-BVm}*V?y?e>& zRU(??4Q6O9+>2}OA)~cQcULqTBE*2fB0>g4hi8DD<=YvmYN?_m|x-p;`j485FLt%ed-2m!TTTDmCN5^-L#*@?2)AjD^!f*L4 z|AFltOf`To3DIJ19YmnGPkDjFn*G8w#+;ed^sd{m4?V%ts~>^1`30SXyJxQ>y{48d zxoa2*wAqz!-F0mp$t!J)QJrX#IRUmHiqH^AHTo3iJTEp|;~i{LnX{bT^YqU;f3~gq zvnR(nus!wZ&rCU9Dby_4VW9J57pcr<>Ew@#(l(Z^n}r_AS5u+xISC-c*5>nzh_bt)*z4 zQ}RMYByf!G41q$VVQQ&-$KC3~a5Ecrz*f!XW9)d$QC(^Ueo#zXf&S%B^Z98*#+iV$c)}!E=>}qET z{+XVIR7LZyo#u!eox|Sgx_0sncc{hW-04U%c{Qmmb1|CbkVSulG`PAOm&QoX3(|Zw%d6Sf zXJ1M%324ndN3o;Jib6o{MyN{Wh%`Z1@?P>!$N&H!07*naR89dFEzEO53X&pv5e3j7 zi>}e6luBA_%}Z%f=NT*Hj8!(M%bCaOXCh4J&l2|>kDae`JRiF_AHi?!~AJ~Fy zU=vhIdXZ zH(!0_m0LG%)Xk}i@9gix!JI-5gb~fiLQ9PUi$ys-U7LB^I%LV#`=RMA?2&+=7w;}- z77493IQu|p;>i|fZ0zk-<*Cg6)cO1p!AFDvW)>0K`D{Tl7^q^ZO^Vk4!uzbCfsv;p zm;&9ebob=W7B)YhBzgY8-jH?eeA(N6Njd-9dtZli7>sboPBfG6bGY={?fO$c|0|!r zcJk`F-8x=>@x|93y!zz+g-gRQOl_oMFzlG^xUa}XaYrmm*)7A;xu6Ze%6)%#wOlTm z(h)@>DFIUO7y4NDlj3KtZ{{nDJCm;~rBav#T&7MsJteAw*WL-rL(jX6* zfk=-(oeXz}H7~PK(V9WlO;eFgM?)pEc*AKC&1Qkx=WPvnn&s|V8MHGGH_iu+-@`QC zP&m&rjqP#P`4shLvDp6|BU`Yc1a~%m@XGD@_y>RX<_PRw-qZ;5pZSH)J^9F^-}s)V zZryshqSd-t)MAJd^<=Yd(`aO>(32>RktN(^E+Bf*rHJ~u^N<}VFjeQP z?2MNhgL{Xucm1`^7hlD3Ew@gKuZoe2<#Jq)hq3&-KlY(V9)04W`yXB(-@rgZHr1F~ zI~~XMN!eM3bnEc;jqBGB@7x~XUT|`JJgra5>SC>xW>Et`w8*(*qUE5#V5O->+D&L3 z_VmVK_BvhBG$RuaO!d%h32?nxFUxMAM(=(n5SsER98|QX2B5(pG$W+iHpL52ftaQV zWeF}VT1dI{sKFI|MM{fs_sYnnONKBjEvdcb{uQ$sBJ%u02hP!aoDV*p!Ioz$pU%gn z-4nRm4BUVS_;Tk$*y1ZU#!o+Y`{SQ~@em6vcH!>B%8ZM_R?A^hI|YC6Z~dLGynede ze*hX)gVd>nKp~7~Ijw_W z4*ShJs3Q7^Yd=Q?A#-NYR-Y162p9^?Qc+ITOj~Z<8-dnZ71-1&&=82);8YmYM_))O z*V*LS1(2QtwUT5AkvSvW=bx1G+YDKVJeU2-9ECiiznpi7zA?7^R{@_m&q>ZXX#oOz zr;5MwH~!9_|MNfe?3b_AFqK7vHgz+qviMj}sg}){<#M%H?wyS7+TrP+`Aa|a@y|R{ zhy7}0v9q_cw>u1Wbm!LL?b|1Z$H#Y$2P-rNaI`*Nma>TW8$a|{zVyY7xR>)PD)4`}Y!W?3_;ed)IPF23gkne~=mW`>-O@cF3DN@8!ooHJeNsE6k}51iGwEqS+lU?pQUKo^yg)_CC?w49AX%W!*!qd3$#ayBw=oA>vMQe|1$}0)2$>HR%f)(ll_!XDoGrBepZP;N53yR&p$xu$Tq5H>L1rRcxNuul*iDr=3Tq zZxHIbKzifk)}Q;Ie&CsBU%GJdGC+gnhQZvK(dsmmGBpX|R*HL#ilA9B5QvGfySGzY z-JIyfn@9iqkNlI%2fOch>amMEdz)!e)Jq30EKjT5S;xfX*eX~6cTm&x!5{na&prK_ z@A(hEXZPUJRF!*^vNPeFzX8>G3qqO+``uUX$}?sIN*YQrcOlT*SIW=HT@$(dWZvqN zX83vXecmLKPWD7q8CbpM@vc{cW=%1(|9N5?U67@8Yc7O3A7^jCnRdp`#52n3cI(?& zK_|{gteuv;@Y)N1>QDWJ@CagYBf#M&D*yQPmb1-(-%vp(QHt(QWh=R&feZ{_)XvS z?)ScL=V14b{kMPa#piBRAsCQD)(E3V^rdGaX`W3bLnxx9LP`Lb!n%_^%{6TO;ge>L z=-D!1Q5MhCF}mVsxiZt|eXW&+5kjw>g=**~Lz?;t)-}~)i%}^k=qa$eNRrP0MazL+^8BTgBe2@7P}{>Cr>=_Ris-AKs50&^EVXPu0Yn49vXzLnEZ)q>2<)pi!6weXxgkprM=A0tES zR!A5khi`kc-c4$v4>_}BXj`*<&dU_%YEjBP4Ft|{$usaoZ$>cgZ4mN&f$R|J@BD)w zed*e*ve?gN&J+#l8f#U8l|m^ZmdgS|-+f8|tdg0NWgZ1lNX9`zC<<8nwDC~TxZ}|p zSrnr|G8Cehzf8|eq>2v?|pMS`QUBILkQ7a@)%}!Kmbs!5DY~rq@=n6lN*gR51>JvqG!L$a!%gUfT0kb zxlFsjbEzMc-Dxq8^&Y8==i_OsnQd8oIUjj(9-78B@&3d|{?+ZH(QMJWVIV!3Y2-%= zRc?NKd^)vebimi+CeKw73-^9^`tfJ)#h^lZjfh;DnT;dPhW6aOJ?k!g3djb9O=^o} zq3L*iJhpL)>cvgG8mwxG&oQqI%M2m5nPMtv?0)=HMmXnid7?#7pBX!F#krI`_hUu0kfMgf)y^)2 zI<~{3V-(-C2@V!iOhGhx-*QnM&7A{T2sc)=a3oU@=EC6b) z2&GD82IP_&b3(Z;Ie&*_m;G?y$GFW7dqdpw_k0b_a}e)r#EA_PDhOb zL*(~3_ogKfZK@%e4>xY!IvFQ5bGqBGvwP42^EwS^yBZCWs%6q4=6R1W^HR#-L-qx0 z>jQjY)-_@{=|(nH0?XyH)_StuOsZ`fuUtMzP$LUMbFG?xE=3o!qwholTE>JKoBEQa zoCxVKHhnY!DlPFso;9s+`iOu6QCse)pR-oEHJ+0>l&QYdF87T_Z}Vw3%z)~Pxr?(u`0l~Z zbkAJvA~;HaYh9}82K?C_*MrKL){V4gHJK&n*(#ZDh{&x@R?gEw&5+gaIqY*EH*Vaa z28u+PYOAX5UR#Sc<&cidy$oZ`A9Z5IeX4c;;Naxw_+am#&HLu^XLcA(QHhF(Y@()- zrS-xb?obPQyC*FdSmu%j=QxfR@4LJiHw4yoYMafa3%g`ZlxUI7)IMiz zHshrJV{>2xBdL%2CTfd=~Waq6)y2pZMZUj3(W<>HX^7D_^d^~EI7 zgir&NbKEm~me7CRP{%hBFa<(U^QdxQk7zW2LFLGIwj1yALcQ5}@E&#T4MtOcvo8mL zPyE8C%~rXBBh=_XYfXZ=TWL`THv`%A{7|W1Rq7ES5o2=;ZkH zTfg-?zVG|~o8S6fzpdEvKmI+x|M&c!Kd`gfAIf53tH1X*|KhLt`d?FP0Oft}|HiL= z$GaZ7`p_efK7Qfy16Ln;{5!tmJ83=?zjEJwEt<2Gvdk^gLmApM)mo!fqkOQ%Ac~OD z`;c8O+l^MiiB_%C%%FwPqE%^1ld$fRQqe4_>Rdu|yseLZ=K-T{pvx)!fNCh*u-!Kg z6c}k}3K&6%9@*LHb6{zhJlFp_3rEiaPM)z%yy?dqqwx9Xu4UoKO;Q$3lIr9M1veW; zb%0HU?n9Ycb9aQsv0XU0sDOKCLMJCD?|RpJ{<}Z=2Y&YBpZw4N;J^2sANas(xp)2g zjo%zxNN0n|6A<{{HX(ul~sQ|JS!}9e=|&f7>7a zzVHA2|H&Wx&;HOK`i;Nw14k$8Z~u-DeDgQ|I%nBkE>BKR@{ZPNqS~;S9T80ytuKXX zK?}7>QTwuABIsg)7jbAZ*dPw65$8_`dAweKoi;!pqZnaKG98kSB4P|Jp zwy3+y)wmg3YfW)*;b59-Z8ap)T8s61eDd)ppMT-#Cx7y%8nDEbTS;{W>5fBdPZ zKli0CKfhS6-ty?9pZnY|U%h&@xVNY+RHrHlt?jHV4fVa5+M1x=Zm`*~k}8$Nu2AQi z5XzWO-^|n8B$?ns*{+V13Q%YzNd*8ap6m3LE2UEV32w*zduB&8qV}zo$&v~sq1ruo z@(t4zym#F2|APzW$B5~**KWcJd`NVzfZGt!TAKjv?Cu^PA9?YZ8loX`T?-eB#cH`c zJiJqUFtXNm`_9qDgNq;e*-z~4?f>u(|4j#e@l&7uO~3gAf98Mulb`(L&krkGE|>q} zC;s`je)Bi|```Ur-~axvTTh#tw_bbn;VV}zT`;rDmoLBk^6RI^Cl5aK$c-Df7XNQ$ zXZGXCb=~)~+*?(@t(Tdel^l*pibIpyVoH{1tv0N9K_Vdr68I@WkT)X;;sgO=#983L z@I(HCJj8K?BnpDW2n+;)k;JhqiPT0)6iJc8**KhDruXh&|CXw{_nec5d#k6LLz#3v z=!FCXcKzxu=X}rSQ!KnR%;!~{$wV6W`$>NKBBTl72i2L3 zQ3kYR;5z;%s^A=$N%FA87(2#R4!c=5wr`N35@HEAo!ek41|;siCd!UiOFg}=(ofGD zo_aRcH=>!(CZc4(0ByuMmoLnSMcJ=slgjy~8LPyqs;9~)Rx&xWHVaA*b^Lr#_g z{qFDnZm%l7_xo${1XD>vEQ5YzgT9B$L#01ef=jTzCEvgDw5AE>qa5P$E z?+I}_nNBVhCFK}=(G&yWCkuxO=v!Dq-mwj%Yylcn)0940qis;W^BhUP(-v2%x%XU*$!1hx!-GOoY&Z9Ct)c9X^4=@KxQJ6m?#baiJK4*u&tYh zU2KD6=g3d$Sut4f-UR_wAWo}G1Tbd^GJovs;#dCa=Rf+)hZf47^K>{q+}Yl_e&gPa z_3c-0uC8xx?rrbS>RBVPsH)2sE)54GLI43y1XxFJuihmxAeh&4GxNS93rZ*o_Rg9% z5N3eC0XPH%QB(mkEy)=OqI7dJW|s7~Io=BhlCI#6IY#TG1e}^rfNUn+bs!@8G|mqq zdCoZTr8z@(6U|342YdijRXfgt9LJyFq1y$Vp8B+IQl8)UE4*{-PUU-IhNPe>rXZSw zcB(+Au_fn;v27v)w)5!>px5gyEiKRLnTRy=xkN{v8B=#3Ie|1~_L0Xg{*5pE{K}|; z$&tor4hAt6!@>DaeDn*S8vJB!>+k-9-<`TJaDRVP^_#X`7!H_xRwTxlkmMRQ z)D3e2g)11UiH3Pq7L)c}fpksL3W-8a0r(jCl-R5}Wk{5`Ovc%MorIG{hN1?MFr_Qf z)O3!HyIfFBi=^gQFkqU^Kp}Q4rrpr!@yvDFVvp;prw%f9de%@+=eXbJY3y)s=b#w& z5dedQ7@VUR0-~5`z~DWL7@4UEq1A02LSz@8xc1bnZjL77!Ej-;Ftkh?1BimoJceO` zKlkyEeDdihKK9gOC?QJg3J&wx{?7K+{T=7}E011%?MFX6IyyAhgSH867!C%^RI+2| zDboWPP)rTkLJZUCv>FUTj8OCl9e}7v;RN9r=WB|9>HvX2(;PeoK}?(scT8bT6t?U& z)^1l+MN3G5ggOvN^tCP)&RH-)pplUb2x5Rd8!QQ5qh_W;l$bt}(KsEi&7EknpUi*4 zd+m!K==ssBKN0W<F1w6KkSVv=gA6JlncwiG@ng>^7@-MufH{@1`7*kL$Ubg z%{yn#oe#!m$Sp6QSz2DIszKW}+Bu_$AR1T%b+EU$mmHu`W952kM4(LU3m^~xZ^z~` z6GV0?k{@RXl>3O>;Xpd=QRW7v+c*MA(psOA4ys`np3SCN1;y;g%)JUCG))c$Fv*Bh2a6@qx*3o(cYfW@fZ83Kb@)RtNpA08z3Ootv* zQUnwx?>M$0M{!fElM<%D#G+`5q9>S4SFt8Uhy+-ug_C(}jV&T~&J{&422Nw72H=3x zrb+f-@Hw@n2oQ)AC`}_XB8Vvo;jw+sC0qiW06@WsK|?yd9e$uoy@SCcmsbAI|M=rC z{QT#yJ^5@9S=-niPp82!1&9nlHE4#hD_RI`D-xC$7W(}%71e-&h)@ZQ+gala``o8K z3EEB$5BmL!-~7fmUwi$>oA)onvkR!0*;V_;RsQq1Llr@4#<@MWi=oZK}MA%d^2Lqp0@<#FgqU9#uN3IhwlvX zK~AB^#kHHSzxH>2t|aaOgP3TP5TmKoP0hrk z;Q}B5Ss1408JP1f2Guss>e-g-R@ndm7&A#kK~!uyXT;IKZ*8rGo(=}X(6$#ZU%v9# zV{cu*{^AQS%%}6q7auvZd~S7Tysq{F3Gfh+(-z8!$&@kphR}&_4bl>wB_-(e zco#I~6m(8!qa>k4GSmFwV!9D3cKRp=fLwG<|B)HU1rH5`K770QfN#-%^{c;D&cZ_F zD-vcu>h&J^)X#qD=RW6SOGZ6i&J=)fy5G>qLag?e5;v4 z*S<554&bV2kSQoBMhpVR3TzgVfh8AA4IzDDX~jMu zYybxbV+91nvKlNc_85_!Pctjz^^q%&)ziI=ucuHU$G`zCoF^ai{8doysm z^SUM%H3ep!Md*fIlAG1lvvFDWbAA{=qJ~yZm>Sb%BQ|hFtMEx(v&wNsv!`eiUC@xrvN1{ltV|Ih`GbpYLdYs766Ktrpn1UIr%s@ ziTS}`lPCZx61w-|-C1```pv)h z$A9vt-}>Ims219KIvEeDMF3n}TqIvX=Z`rSb*b58K70Gl9oJ447Khibzxn3tukY^e z4~PA;D=VHNSaT3~8l;tAU=EBz)`cX5vw}HC2oR&X!muOjN(>5U$T?(1CZP=`-a9f! z9IDDsf+1)k%WIw;)D#=c*a_8yyD(Ew6q0o7&0g|n;CWM$; z_jarTNlMbr4?-P#$~qHaLL9$q@>owCLG1$;MNd8lM~4JK+8IcT7C>4;Aq%K;n;wib zeEBnfbfLd>oVganjpLYz)^*Vpfj7Dho~|KPA!Rp-yG zJo?y&&Rw`L94+|%utknwDv=x^V%s(ejhigHpfPvPrB;#S^Sy*%+0d&dGYI>a&bVuj zomuDuBUlW*s&s&6Y1}EX%M%QWfsruziXo5At7fB!F#@rI1B{){D%HhQlAk2W$Pp}| zn?NC@85xm@4ITvhlkPaNUeQFQ8^=H(VxOAo?!6{p^fXXg{xSMLlRG^vCbbQX?wMQ@CzICr)?}~CTSRf)uF(E*gCM=`Wq1EZQgx11*<@^ewyL$EN zn@2~4xUeuZbVP*Ur)`KpopKHnbl6N0fYGT$hvpfZrq$RG7^9h}nR#-cv0uoSKKI-g zKlQPnedejf!RU|v=l}k{-+B4%Eoo*gBC1%9e&#Ei5r9Yp07A~;U!nBfFhD+rbm+`u z%Y3GmBWUuHKr;7gwmTyx0}Y8Ga{duhQk`e3b+-J95_g(yL;!LRy#jscXhVOQkFag) zc_m_PZ646|2pKeJXjGbJ-Zn=E^}*iW=K9{o`s8RbSUT4m46DI_nJ`_t0b&%980u+= zwWnrOl`0Y>3>St)RhGTdJQ|vs8q%b0$43(|)TrtH&W^w={dx@q(rFSD#G3gG2LJ|5 z)2d30@TreI`}_a$A3yWhMX9IF^k}*}9)djov7gy{;rd(m_RTF~BI2deZi0=b$!s%V z%QL;{Qkj<8>>kVdqx5c$qr}){X4EnP`o^n;>@7HzQtBNwXt)Kzng{w7js?GX-ly)3j}ChW)CNz_X(<75#aX)t$qsh-jV`P8uK47$X9q znyQ*7LIz}QW9y>_GqWfm{Pkb`rGN7;e*5yMn2z_}zH?)5`{3TacW&Ljv2fx16OUi| z?wdb0T*%^IN%9yWG&5x+HI+OGqxq}}YC_})a&M1Pgg%$js59yyiW*aDCnaPwKWHYT zr9CMG)RG4`-ONQ(7L4*1X+{7<>fVc2h^K=Wboxd9g{x?L6z4MoKwxbfD4ezutqIXu zjcps|^U3&Vytci4Z}UD@=a3l{W7J-s5TUIPvEDmd!ACxR<*7%`Gio!N@9!Q80yrk5 z(icQ5q-|^UWVSPw&GEbjXKF-*kl^<`X{Sh;J%DH;O37O)5Mn?y@~)ZB{`TMe^>h95 z=8fwb+m&;dpSt$+XX$e}+jT=FXp8nY2d0VnDu9!)VqTu5BG`&!jO{Fp=bZ6aW$lA+&|# zj4e0R5Hw@ltqs8u^cX++(PzTpIJE8KPd?=q7a_DVn+wP!+O%%Cu)p=IU-;Vp`tin5 zQom{*%(Sj$uBjfHMtI3A)4J1qpeY$yrgd8-*;31HRHq3HfZjVN3H<(HV?=9`}uQFPOm1s}Z4H&Zbqs8IHix-$& z$y^XI;&3ov7;NutUwQo6qnEA(;Khsa`i)zgyLb0@cPG=>sNC7OzcU^SU>16JyP%0g zFo`jQ;MkdoQ&cbzb;PYi0G2kKUp}*ZcKP);-nzf~_R+!NXt=PwyZ4>%e(UPBDNR}T-4%=)T`MhuM3i74cjV6J!(VJDGr*fC_yfVnWR4ku;E45slI{fp#s zK}Qu_YE3}45RoR}2sRv4rX*><9#e?p4((@!+7{`ln* zu;Kzqg9`X!SoYecCC`OfXxcUg0Pw)2$kM_H49=WAJ6c+HzVPUsVV!S9sc2L)QcC-n zT0Cw7s1bpvl7S$h>x7dXixxV~dA6|tCKIf7v_`#-rCyT*&q9=uS`dEdw4Wm-Pn5T_MJOxtF2fUMz;=Z z&Djl}QV9t^p4dAIszKB76j+QU+H5vo>{kZy;Ba?$WA$6#`}WgMKfSovD_r57TUEc?0we-bB0z8khNOwWjEJJpNhu9bvaSu#m{9;oK*?nJVB_h$8Vp>~SERB( z@Kw?Gg$gvW>GwuWXwWl)D~r+$A~G=tQ4P{IO$@P_H+5YX&I@t~dRQM$+xYrh*I)Sl z5ANPut%EUVB@`w@01%^Rc0?TVj^i?2BAJ(uQFTOY3`Xl~TL*{Z&wu8*;X;2lnXKNu z^XQ{jLa5DJXV%QZcV1n8;g!{3KuDAV6##0{W9FwP4GE@vl7f;75GQ&Xnuv0?t7@9J zO2$)m;4^Y5G6_7)wuf#Pu~3Wr<_ht(bV4a z8TALd8=K=0dqs)NZHR-Vr8YzY@<{Ams2edTdJV`ge9XsJ!W zNMdj}nSA?&7oYpYvzPhe(RezUHG|>eiuBczZ_yIL-7X$d-0jbA2#~ zgbE0hcnxTsQdhfar?hjW$%oVy)@&Q6?!vG7z{-P0os$Fr!I)8`%XsHj37|7hb8!HM z=1!kh^aR7?Btzk(wn9#eMIPMu6|9M^#-=Dq0EygWR!3C>o=ocDaHugmPBCg*H{#QD zP@GJs(TMlj>HZBv#t{Rz!dK*z*_VIfTSHr8JJ{tur1@ROjre{j&u=b@brN`|_9?Z(#X zZXMkM#L$&FDGTdWI^|+l03iiMA_dEEHAq(E&d;1e-(I1SQ3Q!aSp;AwBoLZ0}22M&)=Kxe?<3cqIoR9j_x-)K`@>Q7+{d2< zh1JzvCRjPYJRH#W=H8!u^VP|$uMiE$%*e=yB(y<-_mxWlYjVkO*9qNn6XXG8;@DXC zUQga2`-6qeHY_in32mc>s;a8Y)P}Yd3{g{*C@tenUAHQ}EQ+cyFjCvy**U7)@oc`j zv3c|Ez4gtVDByclNu z1V{?#M6O*ux3+fW#aGsty@CQ4DO2Wrh3o*yX@cbDn0zv4JYE~JFNKqA_-T)*7 zq*!_1#PlP=>9j_4b(q~kIQz#HQ(-Y)G?hOF!{Dmh3 zxd}}{4v9lBRju2)na`qXhyY+^S)`SzsLI$jhli8Nyx!c|*;w0L-`T#ueQ-FLM*#E% z`ogEtY3G1^S@jfwh`jR-J$dhaf$WG##6a6r8i`;4N-=5y7Ld4L3_{4v%+$86K@>1V zSl?XVKe&iylX@%e@67imJ1E z-ZX97v_|N>GsPgH##?)11Ff6(a5CRI*t@s3zPY>p)@0~BovO?z^d1R)d z>X#)m5_v>K_NDilTKp8z$~1DoYN8<;rWr6KBIB4U)KSsYF}DywU~+Wy-50|iA@WL7}O%;=bjIfX13DJa}q-)YqW0y1}qZl!$L0YGphMka}~BpMhg zCY@-?gdi!P*oi7oc5i+r70z@WFxa2aJd{Yz5vdw- z0V3%%KuC1M_OY=+wl_lIk4+1ugy5FsUp_6*ztW1VBIn zsXTUk9g&k)N$(cE^eeyo-~Z#++q&7>-d{jlhLSoD7!xE&B|dTON@(XM zQL$6In;4L)b+I(aq6x{@J?3OI1S69NZ!A@4I;DBOiX?tFX04IH-Hii9m&njyrhvc% zxn6^WK*h-4Ox z2sK+DvQikyK%&Gn{jMnxZFwWZ&H>uxol$^@y)S#wMrc(d#XM52B;XAhQ^Q;{hb#ZY z3Dg7_u08$4bUKYH617WBSSC)Uni_y=OhV@rzD{$4kV|L^01|VAUyxXnssPa-Tn zNzI7q`t`NRG(h1<6_AoJ!6YJc2HL4OHBF&_R1Po!qT}Nd|s(g0xssi&V&3N$8kvl*q! zd$PTXT2eJ