From 696599d80290857e8448f614c4ee040d949760cb Mon Sep 17 00:00:00 2001 From: Mirko Milovanovic Date: Tue, 30 Jan 2024 19:14:16 +0100 Subject: [PATCH] todo: fix twitch/youtube images and service positioning --- Tesi.tex | 20 +++++++-------- images/Ace_Stream_logo.png | Bin 0 -> 15737 bytes images/Ace_Stream_logo.svg | 50 +++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 images/Ace_Stream_logo.png create mode 100644 images/Ace_Stream_logo.svg diff --git a/Tesi.tex b/Tesi.tex index 613e4d5..298aa7d 100644 --- a/Tesi.tex +++ b/Tesi.tex @@ -327,8 +327,11 @@ Prima di iniziare con il ``dive-in'' vorremmo spendere qualche riga per fare un \section{Stato dell'arte} -Al fine della notra analisi, abbiamo bisogno di studiare alcune soluzioni già esistenti sul mercato per il live streaming, con lo scopo di trarne vantaggi e difetti da cui partire per poter proporre una possibile soluzione alternativa a quelle già esistenti. +Per identificare i punti cardine di quello che vorremmo realizzare, abbiamo bisogno di studiare alcune soluzioni già esistenti sul mercato, con lo scopo di trarne vantaggi e difetti da cui partire per poter proporre una possibile soluzione alternativa a quelle già esistenti. +Questa lista include sia protocolli essenziali che software completi `full-stack' e servizi web, per comparare la fattibilità di realizzazione di un software partendo dalle basi o utilizzando qualcosa che c'è già e, sono stati generalmente scelti, in base alla loro popolarità loro diffusione, licenza di utlizzo e utilità per il nostro caso d'uso. + +\newpage \subsection{Twitch} Twitch è una piattaforma di live streaming di proprietà di Amazon lanciata nel 2011, originariamente specializzata nella trasmissione in diretta di videogiochi, eSports ed eventi riguardanti il mondo videoludico. @@ -343,9 +346,6 @@ Negli anni successivi, ha visto una rapida crescita e ha attirato una vasta gamm \caption{Home page di Twitch.} \end{figure} -\pagebreak -\subsubsection{Caratteristiche} - Twitch offre molti servizi sotto un unico sito web accessibile con un semplice browser: \serviceCharacteristics{Chiunque con un account può condividere e guardare} @@ -445,6 +445,12 @@ PeerTube è iniziato come progetto indipendente da un singolo sviluppatore che p \subsection{Ace Stream} Ace Stream è un software proprietario di video streaming basato su P2P, sviluppato da un gruppo di sviluppatori russi, che permette agli utenti di trasmettere in diretta video e audio, riprodurre file multimediali, e ricevere e condividere contenuti in tempo reale. Il software è stato rilasciato per la prima volta nel 2013 e da allora è stato scaricato più di 100 milioni di volte. Ace Stream offre una vasta gamma di funzionalità che lo rendono popolare tra gli utenti che desiderano guardare contenuti in streaming. Utilizzando la tecnologia P2P, il software consente agli utenti di trasmettere video e audio in tempo reale, senza dover attendere il completamento del download. Questo significa che gli utenti possono godere di una riproduzione fluida e senza interruzioni, anche con connessioni internet più lente. +\begin{figure}[htb] + \centering + \includegraphics[width=\textwidth]{images/Ace_Stream_logo.png} + \caption{PeerTube.} +\end{figure} + Inoltre, Ace Stream supporta la riproduzione di file multimediali locali, consentendo agli utenti di guardare i propri film, serie TV e altri contenuti salvati sul proprio dispositivo. Il software supporta una vasta gamma di formati video e audio, garantendo un'alta compatibilità. Un'altra caratteristica interessante di Ace Stream è la possibilità di ricevere e condividere contenuti in tempo reale. Gli utenti possono creare i propri canali di streaming e condividere i propri contenuti con altri utenti. Questo rende il software ideale per gli appassionati di sport, che possono trasmettere eventi sportivi in diretta e condividerli con altri appassionati. @@ -453,12 +459,6 @@ Ace Stream è disponibile per diverse piattaforme, tra cui Windows, Mac, Linux e In conclusione, Ace Stream è un software potente e versatile per lo streaming di video e audio. Grazie alla sua tecnologia P2P, offre una riproduzione fluida e senza interruzioni, consentendo agli utenti di godersi i propri contenuti preferiti in tempo reale. Con la possibilità di condividere contenuti e creare canali di streaming, Ace Stream offre un'esperienza di streaming interattiva e coinvolgente. \cite{acestreamAnnouncementStream} \cite{archiveStream} -\begin{figure}[htb] - \centering - \includegraphics[width=\textwidth]{images/peerTubeHome.png} - \caption{PeerTube.} -\end{figure} - \pagebreak \serviceCharacteristics{Utenti registrati e non delle singole istanze}{Browser web e server indipendenti}{Federalizzata e decentralizzata P2P}{Video statici e livestream}{AGPLv3+} diff --git a/images/Ace_Stream_logo.png b/images/Ace_Stream_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cd1d17ae3d85914125cb788b9089c5f2cb6f339d GIT binary patch literal 15737 zcmbt*cR1UB^slY0)zV>WwP?+v_G(MbqE=CxirQPupsHwV6tzcd?-e5ip*AsUhs3N+ zP$UR)lke|7_y2qE=XvDG6Q9rdocB4ebKc{;PRtt}HM$$DH%LfG=rq(-^hrp_(1h;| z*Qf}eBtwBSgwN|9>ZaZ#B%HsAf23|>zKVn&S$tlZ_!zhYe1JAy_9Q?cP}tGU+1t*> z!(Q0k%OMjj&q_japF~6Dg`t1e9x5Q%+~^X2IJ2QMF6pTCLa&kQC1u9j4!ZYhTgKCk z_x}~*Zaj_#y?A{4X86tL?_I-NtS`x2HSd*tu{L{t`_0|jFz!V%A+w?OlIKl68tWiX zDE#*P@xpsvZwKBX+?oIJuk;|aOs?RgTp4WEs3=fPg?P<1{X~*R6EF3hWXM?3%)75#O{UZlI8YaRlCk15AMXZxz1)fVzFT}Lf7zr9D3WT zSJ3vSw8XdHupP81P;io7W0R9C>pS%r-AGDjC{(Svd zfS{zlp(e5rb-G#5X+?|F>6Rg7ev|kj77IUf{m|)t?h}f806H|Z)9AfJ7{@>oBk)N% zLmwA5{q}NG*!K>!J^e;5^8~+sX|BtWjC zY#pFi)>1CM^9s5ta?C`t5X>a1*c#ZRh?WtQ3DFOtU3JdMbI(sqb9JJ85gtF}xAv%|p2W?@2 z(wTCu_?P)PmXcoLqId^Y_4=`mZe^LJ+=xO2`F!(%wbYTjchKy0t{WdGyV_U-1(!$U zXhQjK+VwzIu=P1aW194^)udsvCkdlbir6&`RwtwBK&KE334x?{hzOfTVGJ*Z0n z|bnepU6rMwgS?_53jBmy6&|we9lq382 zh&Jhb;^LCU7?3VB1++iQOzBAY(mxTtTL9cYb zoR7W9VRPBXdXY@ok{n+1G{j&(9V;wUQ{DZVMajLG&L%MR$RW@wCv;wtraxotAbz1Db zCw)*2#Ii*cO*S;AxCllLtZsmw_>A~5Qx=5bc&Fl}i;$i%#IY2yU`KwA@Uwnw=PMSx zxHa3D39liyK82TU`xbknq0aAi_)TW^e6Et}$qnT|mxE=WYnM-7@VP74EiW3!%3)@2 z9L|tUEdb}-a-L1@*sTvtRrDqm_o8p{ubd~(HBtwq#VRI6?>T> zCna|r4{0R@?;BZNY~$A_5$O>v)#kSZ$^D`oYf1e{m{pE|)G}ZgwVMOB47Q=`3RN=o z_4R!*YJ5)Tw`;p3a7#NU^O<+|g7i59G1><;#nBv7$=T)8Rb?fmH_FKx*yGyaCaP^oL#|Xb^J>Vdzj>mirK2_`hGO;`%h7>bF}6ws zACqs;2cL7wHp)_2+OXN39kh$U&J;`!^J~8+_>^17U}fP~T4kHdj5tRXCBGf35DghV z@Z{A{>e|GSTD5#Yur=*t`Ce`2{q*^*wqiWGN(JW{A)q#lsLC7HY5KW>TQb`ai*g$o zb#l+FsXF~bG-9t8n;y}CSWqZvSbngt(Xh}l9X4^`aZX3hEprfzXaR+pGR-gSdGd# zT1oiz|Ds@@#axpD|Nd?Lk`NddlE1Fz{$?D4u{841T+$19Sd#kwWekl&d~o%(U;n8U z!-(~B+gl64GGv`~GzvY#Imp)71zH`S&%3g8k&n2W`FuZ5xS>|b8v6U;TAJ&k$@rgZ zpKsUYKYI#$Qu~wOPZh?WUI}|9$`*^Oq5yIup=V}aDXq%ePk->ui}h}MDpP&xwVit^ zfZ|?N0OE2L#X;C|6QyDkM!=*YGfLJW~s#P3}vT<@LvdHIj zg%Ye9lGY(jbczhYDLR#HyI|#P55Ml~C7E7QToXqtYv6g=kwMQ02W!cyN^H}}y76yd z8Q=n4SrAku=NK4Y<`aLNYJ<_rrr2bGj8n>g^5a46RQ29z{9F{hGruP-LGpOyV^8;} zY0CxRC+MgPk7J*W=BQRmL-VIqV)mJghG`Zl28o9J?L7+t2%hp>zv!^=9#m*^?V3xv zej%U5k#y}TDHki8I(H^yr!q9OSG%u51o)gNxS1f>fmIl{Te}1#Eq$ADRT-H1B|>_& zP?9fNfS0y;B+Gj)Fmxdc_q#sSVaJrl(s^i4>RVe#6tBJm6yezM_PSc?ecZKRw?UV| zZk8@9LEtl@SQ&y?HCEw8doKA?rZMo3qMh-P)IegwnXXlo--}i(^+j0~`&>T=T#ApI z!loZW<^DAv&iw&n4-B6UShJ6{NiW}db*=IKwcQr)A_kmya|B^_{T`%v$$0D^87<=*SoH(Xi*VV2nscSu@Zjg3>mto0fv3p zvd-&z{4SL2&%&^jzC(_g(zEJ_S|U6o^;Z@+Crw{PoP;o6EU~{+GH$!%gLRkcN;C$v zPGBm{8{BZl99LGExab)Y%>CZh6FMW<*juEr|<~8?%O5rr3?gb;(fj>~)l#$bIvaA1Jt7w5AzOp9$JI-fwoa zdBG;GaHrL^Kq<-4V^95#zr`r$R=yi^5H7}Hm^}$=V@j0fOUUN%w=*XSf={p1g?%Su z7mcl2cS}A}Jp=z(rNVR7IJ`i0WJ=R?u4AhLHxxm7vzamLRqPTD(7_uxg@dz4I9IhR z$B`Ou!W0BSh7%*U?`L;gRuTG7+j3VCjGWxd(G5*)JS803n()9_hgmEQu2JDy%ia_O zcd^_*UsOm@aqLTZeKy^y`^;5+kvh0AZ8iB16`7ph`0+AK1bCmQ<<%2Uk^Ijs?Y_*Z ze&tOvMNn{BU2S{v4nJEQ$t)$ zULXCO;Fp3BgB45Oo$YfpE2~z2ZR;;4&V{4InJbh2Gyz>%w7{q3ytizuqpOl49E8X1Q@iP7tX9c9Ls(Fl0v(m~v1Z9)tIVz&+q5N3aIv{4(KR^2 zj4Ed0ZMxV@)#dHHr~S)#cd{I_hBb42*JRuzQE{d+I%mHx39I+INXR8CCW#LlW(e-e zvOK{yEjY*-7#rU^4sOO9O5xp>+s=%Vw$-jkNV=+6C7|y7HJ7Mek_hr}5resi+~4=> z$w!()PLp`p4G4ypy~cy)X~d|>?f>2SV*lJet_f)sGEjHgfHJ^twy#GVytx)HVfRx` z&FwoR6H!*H{JEl)mMdwOae10t?T5tryaq1pS))hQcv}-<9Q@8S1 zT<*`IU3g`fD%it%s;62Z#ie_1ronE*GWsxI66FFSb zzQkz)(tPcsGOsq*w0(O#0hozwm7XGnj<~liX9LzUi;NUVhUdfu@0Q}@Zv4EU1Vw)8 zQLdDQo1cyEJETnZw9v~EnfbuNZ1e~= zZ13L|AD@js)mUMBDiQy(!;sWBUG`9Vs-ca8{296t?;|EpHVVVOdMNZfacxo1hum4s zcki^BZ}s)VzLQO=_*^rkm8F+`*@5eAsF|wM&D-A4*Ahu>|jVjzG53PBw;_ z&%hoQP7LBzRMUKaM8@ot4W^bpoih>)uk$h{sC05~YIrza3o>(Ja=K_X)qeQm_obio z#t3@=-={uuXEVq1cU^4rs2_i4Hx^}ldYZ*m&2N4x6(JAR${Qt7;*J3kgZ1dmiY52X z2Wb*PgzR#!DZzmlpS%!1YXa(oo&`sDZqKTY=sI!9R+KWY=6d7CHrS>M=_#O8k2kMJ zvsr0B79`+c>rpZ!Rb4%8leVmjW9ps=RAxX?F2Z|9O_BNc^QFb%YL<$s3KJ}>haH9) z`NhUN#h|npYtzv})-vZiSo5T(-25TINF0Pshizt^_te~w-=#ZTm3MZBMxkw^iE+2u zK&BehZBX#LD}0zCO{^%@scR!ZT=jzg+Q`6}~*Kcef&wmZIepmJs7BZt1R}=I&+TRGurF?<4?f%a^NrY!>imLYi z0FdN{Db^5}u^hD?v?75nUSD-4E)yqbtzNaK{4syDn#(WrmNF40^eW$u;f6LAwl6I4M5735BALdH679ulM}$=u>7@)U>Mmw_HqA8MXHGf= z4>r6VGmG?fO$Z+OYp01kI`mlN^h_-iHuZaWu=+{Od~zblGQlHPUsZXZJ;M(?XFf+| zGy7)OpXkBWH!C^iuOyhO(suCx7L zR@DA8P9!7NT;2jKOp^{{X?9G`G5bcEUqH# zGu8PDx)rEx@=@w7jv%*6R5|eUZ)w`btl}37Qw!X-f-B5Q@_e0cVt#Eaf8j&ZgqK9# zi2#=UT(5M6nEEifF+t9Er`X+9C8*mjKqJ_!b3;4d>f@*4oFhQ#C?z8XlavY84~_`W znNftF@`oX6-O_4&uS65t1nn>ByO4Fuef6R?l6Q1!dVHISlNd#^$&jYM>Fs9F`BB28 zy@1WR?44_{>5&TKJA&*e934OY99X;a8+hH(3{U=(0d1GbuP;KEA%9u+uqtP|80i@z z_+hK`n~1Q*f0Oww!eZ_Pq&-NehAwAEEPXg64^#MKYp~a@-~J)@Cv<1p_T0>(+mK0J zbG|zygt}(m<)40o&4%$?pHTb$zvoBP+Szk$E}iy;HEOHXb9v*hxJdvQ9&x!zcwh=) z4&9Q4S7fGhxBzgOrqKQ&xC_)pK3BNY#0bz>oqi&OG0A@Ms+s&lQ_i-P-GPGj101Zr zt`c>8)tQNRE5X6Pn{3}&0@u1Ey<}(N!^|d9p58ke_9t0IRcw(Jt8<%bfp{3L*`L<%WrYR zE+kKL@qejxGZEIn&}!z@HRg$)_aI6BFjetPGV>*L4A(P9KolvEBzFWPPcDsUJF&fQ z@q-b|oC6Sh<9JFQi7~RkozL&=_{ng)c0PPQ`EDnuylbY4--msGIrvftYJI1;9yti~ zT)p=-aQ}SoLDJ4>rjjR8xiAK;^m#$%S;*dOb7+sW7nr8^i!W5@45r^V5qbF$|7ee7 zo*bBtSU_7I4=N&98Xt53!@9x;x#{mUP&fw>W~DepqU+bG+H?*EbCm$arpQ~>CxyXQ z4q@xmFjuXu)#jTfb^sVj)quDRD)L{*W#GMh1MzY)(9n8PAdUnK-;K6?G$_+u&)|XJ z6)_^)Ak_++XXJDikkpt1_mYQ_xaoRTj1*YNCprRiN@UoXDZ+3O8a{|NOoOp9O+3XF zYImH?abGg-T^scE7t=MK=T%xZ7~hM|&Y4kv>jSz8mqn=F?mh9eylSvjdD zUpt@s_ATHt>Xk|Fk*lQcoD^&Bfpqp4M(jE#r^zxv%3dijmE7`OqTx)NFlbK(NKY-9 za_0PuMh#PCab8`}ySW|L=6B8+7e9nkUG;bw6nOCWTrM8!26!@qXshiJuvCAdH}E6< zgv8D1*FY%(QEdCo!Vxe-&OmDQxR=>NPqH?RF3S*YQeZUI@md^OhYU}SNZ+G>O}M)O z@HWo&hFVW+JDZ1#engt-ms6g=D3fk|7A zww8Uh3KAT+g0?)pW3D-$8b-OKJn;hZ{@^c*R7wF=D{g1ls`MH^TId`?madcmZSqi{ zyb#797dD zsOte)4Y#nXIw5J#STZ46OnVrd48>coMxnp&yr6k&1ikPC(wDaQpT+iU!pd2_Q1G@6 zwMSz{QcLg?$Dja$p<;R}o-_H633@icvK8z$&3agM#ps_-!aUY+E;ly=!MR4CXIO_5@j{ebScnU(F^)WR3=p&Vna*?asir}SRPE6- zo#OoA(#-SMFumu)y$lf@8Sd*EuLZz7^sa3(&-}Y`Oet1_3y$~F#X=biDk|+eQNgj`c>j0+08Sj@VR$B{eG(yVRiEt!fL}*8||({abCj8+VsB0x&;z zuvfx~^NY6{*q9_$__uc4gp7knD**DuAybZfpiI_h)Sr-mUD?2c}yOG!i}f5_kd zUMaPVtKY*Ni;CmK(zi_`d&ha6crJd(DZCJuP(toX&@2iXJWDKIb%X2;`5z2(`@+0y z`NvG`n|Q~$a+}sli;lB3PK5rzU7n^t;x^8u0MTZ>TY^N9JJgRoqI*p(?2E-5KsPvm zp)JT4e;=UfzLT$_LI6)95Zu?W_8oP>Xi;#96v-Rp{;<;5G3ak{dm}>|6@CF083!bc3`@87`D^~oR)Z-I0v^@LK9)})2ZDwBxI4;bB zz9KoG%ggmQ93Mzkd!I_4&E_2-dDD3DYI|3|#`c{1k9$eR&Wj=+*UU5orsKdoV|*Z# zb51iRD8=jmC1gpP@x`*s^oG>?f3DOriY4#KS)-`K@gWDv=jZV2m98@%t`2>mrk)Ol z6k$gLhH4+GVqQl^h})rQ`sM3%dd%I2rOrl+u^j_G+T%NIkZXOOAP1eZzeiZ&C zU|L}?^oLlASem9!=}J@BM3}QJ8h5)#L^pGEJb40)^POAq5ySO+{pwcu$OsJMJEtRA z^lCF2Q@+C`OTq`qqwS)C#A`=xrBZ9>fTn(yf*YL-_!I&qNSQ0>1fHm=c_PLayiZei+u6#aVXYtVyw5GXh_;r8@p_&r@ zv}PhE@Kf7^4Pc}`Z{O>jLtjayle)<=I=MyGOiPyFkV`D}v_jTQ`*)uSH53UuAQw2~ zS^kA7?>$QW`12$daj}U7hc}3ZT=c`e0 zs2RtrMhX{X?_Z_wArDv4&I1=$F?F8#PAdUslI;->h1)cO3yT_)KeKBbhilD{>QTxy zDsPw*iZ8ec+}q6g*?#92CiSZj9v0Hc6uHk8uA;DCEi*e`qh9AIKAXvGnYc_Md2v%m z!19AFppQ)1R@iD2&BpMm3zeFbe)gq~&cipSi-969WwzjnXZE^|urLdIktx(~Ls?7- zKO9mw8J^tF5I(BXxWB4Ccr>))GxT^=*A`PTq*Y2 zTW{b>Q;f}>E4o>2$UZ}FWdXAOVMQ}KJ+!gDQ(f`1xs=`0%G6|jp(EBlG`r8`w?1mr z(}zw}cH*(W+-c;!MvnD3O8H+#*#eBZ-PJ8rd>TGGhZ)CQdmp$_5 z-&1-j?HA+WPm*0xx%UUOZe@qMJodfc0{}>L$cUzfqS2$Otsve*Ef~lJpaJWQG2=Z7 z0=hqHKmITRMgt@hHW5c=s1Tm?LFKdVX?x!@uY_M`hn@zazi=dNV8>iqmp5Z>fcYlt z-tbTIV*Xy2)$)5vCen@<0(yJ;>$%;6i*qB1xin$zx2mH$@DSWxX8}}5c6#KKiMKhQ|3Gj%s!UsxG9bkN|%6Y-*WwT z_~78yfj;JX>|Y1DJOROw+lTKg;Vx!NpI+hyoV>7RG`n{Ef53?0)Xfk$%1R78pdw?cj%t`f+eHUOpW|lzK=~Y zVT-Yq^{0IsCKoohT#vfLx;ofotOx93F!Pjj?Vxih)ULoc#@#Yug3DgS@RxkW;k z`M429`=eMdw{kzz)WCw*hrWS;Mm7&i_?j6?!7YFieI+MuMnW40xp*bUrcQEbQp1cW@X}hKPYLmG-Ppx`(#H(q@wU z$r@+|F0&*PWTGpy;kzm;sevwyDk8t*!$dnqZq4Y3g7LoCSFW+HNz6drmX)bR)MYLS z`bt+kvnOT9NB@19XU`7^Qo7fzqxM$nIuuuq5S`9M3FV;a<^ zi~4Q~W_1Y7*WRz+ zJokl9JK}=Ew9 zF7B;7gQdfZgJw#mz7Wr4nboRRY{m7VOsTTU%2@tzp6gG+?j)Wkmm&!1%t=OIC?!O4 z-7EKQmFrzi_)ZzOp@>IBGzkg&IgtxMfd(n0^C+zO*Mk@j-e63EViFXZrO_I|$?^KQ zZSFjWA-mK~i48Q2?CPd>a{?h1e6d(u5KM6hF9Gv57De*-02=S4N|+1?9q*2W86W<4WMF`1lmn$eL37BC|#e8E>lWm&F%XR*?jm~hxRY( zDB(0|&?qGnpSdi)qE;kXuB7U5rnE%vFk;hmXcT+cCNhh6ZLjzKa zQHFlKS39>-r%B?~S~;5r@ZatZ8s<=_WP3AC%^ay1*C2-AH)MBf#J7GAF=(MxLuD>caYjC00nzX<-@~U*R{r(=tLNL`u<2D)(Y=2$fXY|I zp1m(~m8gcy#KY%~hxz5~lg`As&jYy9CN5q9f#NuFGvPupu_62Ihv(Z~Ep97UsR~UG zJ~%ms;QEl4H-fyXp=X0Dz$4BLgvhba>WUDqV48Db$B*8uRd!zyT4HmwUMOh5(1ctd zLElhF11`$gaUH!Dd%X84eecCFmrR%p`f4K>=Yxg9cR_i&ipWejS21M!xd_u`3D%nX z%D=%FapP&%ActCeopa>=!*)r(%rsNV^y)rsm-Gwf^x>gm9vJ|O0=km?}!W}6=#=VF?8Vq)DC z-6#bOLb72OncAochmUV(w2=ndA^+5y8hzc*8x&wO&lQ`bVX|Q78C{Az&O;Zjw^BJw z&n+x3eQlgAt%4XE5lLUiMHjlyViQm3mwEG&z8O8!+8lPV5{pNB|A9t2r)D5H&{uxl z4UoPS&%RtO>V%NrV)O76^7xvy@d?OZZAt8H56ze0J^LT1f`AbCno!DSI-+SHxqSH5 zq!&{^On$HEpC%IQ#*@_a3?JeTN#9#Tf0YUlDx>&IwX*YD8K4aVuQBC3gu`XKMm2u5 zc&xa!eHdKD?X%yma>=@D&8NJRsY&AB0x;`ap||Wnj;vJ&EyAzx_ke~?@Au?f->vyg zD^#m}8~Eogk|zB^ZKBB=;78`+178!6)UE&*J1%sm#D~n=3W)Xj#eacdiqnGpq`(is zKi(8Xcwzg7cONvqo&<`6E6tvq%}fcAsM<3uZP5xp2z(p-l_wCPoLohw_`L&imRyXI z2D#@Ad9|;hM|)5kXaTs3teJ4QsMyY-?l1;VDORj11&o6BRatsqvBSG8OIpLiu4;e* zqhb@#+vqB&jIZ)nu)}w_OYrGT#+H1WyS?yU7ccHX`XG~MVC1vLnb?%QL5y=?aOS46 zk7ie;y!d4zc=z)pWQ|`7;RW7iUh1GwW=>b&@DN8dOncg+g@@b26XJx>IH;>e{-(4g zX)hF)Fp^lGiP#7O+X|}*{efn^PsGIIhHB;aRLR3j%!>*UnAoDk(zpp^+AgWd&CoI@ zB-M<$?HgZ~7O$0@8*_$FdaWy@DnZeG=lip^U3^r#PQ6<)$3TAFV`sHYq50f!--#e; zPT!B_111++spBAXieTRLIV|dO)!q$(C@TMQvr88)xE*hUd>~A%f8Mg1*xH*m!z4>x zVBkpB+Z^OzR(-*g$Fy9+6KHiGk)-&pD&5%m$3lyfZ{u8`j7G^NKJJHb}y%Yb} zU)|K4wroSkSO^h@@dX7i_1OhYt)MgQV&L* zuCD+_U|Ikc?a5AHGrW;pUe$*Mr9520-=`>BS(OPX?)t4$?xVP7(uQwXf045pdH|TY zI~Ck%?ZerY-H}JCp;)*7?6Y>dG38z32L;K5Ge&oV7-3jrN_5~L`idOb)OhvKK!X=O zjOPI~BG`sq?2{m|n|C^@;V!l`4GD$WV&GB6kTJr($`+pp4NcpCF@$+`^M!|m;f4iM z6XARBFk2{J(bW8u&1H1dol_j&_Vb6QqpDMPu_76!R(ZMHN=a%{nMw(z&;_K<`@uuW zCiYWTVGaj@5fvl+_KTu==hSImygJ1XjUP7h@L09WY6+ObpRfnk;n2&pi}uEK^vt8% zy2W*$CGd7V=`6#>rVbZ8IqBKz7j}!~sE~khJAeS+#iMmEq~3-Uxo$TyiQ6D{MMGSU z|5rY|upjOswd9sp&fGR;I_=){%Fl7`dbhFBT*m8v3;M3uxF!7+ys9fS54aIb5eG;kd@Q`zTt|IvB4 z3;T=yw7ON(?m1l9MmUwNPQ+7H^NR7o8tO%*-4!ZZ&PTveDXYxBF*X2&@O#mU?}Axs zilO(`f&hS!FrIF%0-pk?JEo5>bMx}Yw669gUrhqshR>Z;gC}e#Gk5L-;2w!m+y@++ zwcE?p-T+>xWurBqQO@jb-s8`jV$?DmD(i24mGCK$7$8GzACRXb;-eL7Hf{hHSArAd zaf&Puo|W-uK;4R~V9fhbwXlpdUM{jIC~ooH)<$Ya6SwdsyMM{g`)1e@D2(aWgk{HK zwB6bT7_oKC}fLQ9I=wBJ|X5LEIIt#kpEZxY$ z-5Cs?TUcQSZPnk9J5sWf5`lD>q!!EoEB5(ro_#PFr(g1DP>}Z^jZ!e|Kga1jwD>NY zgiONRJf(3X6k8?XuA0V{%IkWrw$qW?3Il>|37A#eyd=M{m>$i!<<+_m8@ECq_Zy1i zE{eq6&{vv`@7LO%`_iC7zicY2-;f|rOR$?~s>6TT!ae7XkxNfvTLqA4ReqP(Jn{t) z7s7I1;4Nzlui#5~Z^lGI$YtN>}O}{&Atcp%;Y*04AcZkaj~8 zfYd)K*`j05*MpLEY3UGBh8s=eKB{bkd5YAn!zsGr7)kJ+8UGUm!WUI2Hu>2fq*TE3 zM)?F2!4iy+IQ*T6|?!9IY?f>ZAi}J@}VJDoN&9#O19a#f;QN{Jy z=_h=)mx0rl=$whbK{6D*Jgax*=V&@GqRyj_q--A*pgo*IdZzXVIB2b%dS3t8VwectKs7;K)rUwNNkYiEH$7arZtp9A5Bl!My~m<(Zc< z#B34V{Q8~_vJ?6Bl3Cgv4PuEu8HM%+I~bV$3E@7BU(BJdrWs#w@9aJdBCIi&$Ad;V zpa?FFA;BLShO#A_KYVia6CiY@Y|+&ZvPyQjQpLj{4Vm}S5yH2ym+5e>u}1h)O&o^L zONkCV)Q_f-N!fIIkYK8aiE=6J_8W#ba+R8|lRcVYJMhp(|ALmW$OJ+ThaO26eWZyp0fS!Nle@0|iY z^O6|LspI^xkQTH>22_cPmJjsV&+gyV+4!p|Uf=hc?^T~{Gqzo8x(OqdCg_*B)712{ zP%OSVCG6WjYO$&G48k^)%Y3GR2}^!2bcqv3-Q>ca*_{;B>$uS9RdC_%qtDP$YMlqN4yMFJyjCVEJNs|lyna~&;P3S~i=Y|EWAygA4B;_+(> zVn^uoLXUy#EfT(nakoAAOteU(1C$fd~!AB5(W5*^QnLiO^$b6eDlXY77fYRvPQ2=Q59-u_g z&OY(i!&`h*{bGr)4jB zgFi5IH1q8~DZ4q^MADP&D;0Y`NTgec=EDpo+wa|4hGn_Z{u6r74eKRmir~2efiR`J zK%aU3W%|{@G$Nrc`4b~H786j`nX`aZ*R8&i82PhC&o_kZ8u-jXu@|asfNy>Xd=1@W zO5>nq|NVBC#>c%~Q^6ubEX!5#n!pzx=v`w%b@h?ECQ_=i>Aq2l4Qtrc0SmW^X*z#PoXQ(C0GqwuU?i zhlIEPao^VpyW4o8ge>XIUE}vbW+vZdQAnK!2FA@MFOg`;i$Hple}ZQ!mf%oKfE8HVieo1`c zV1eJGljip64+oR#r?XkYDU)QD&hp$pR-`MOgA1g)vqF&4%o|!R?^x?i=B>5rU-t?f zGEFUHgidQz^CF9hlp)Jx$i_g;ix~UHUL_7UI{nVr#?hnwdXVx}`%`c8QQte-R&^bi zft2^`>K%^ zZIEYp+k45ZcFc<4=Rn!-kUE!znn_OWA2jff`Cg9)OuT;mDDaab50$JomI!{*Dcttt z+JD^z>Ilk8saqt0K6pjf`83uQ#l@F$vly#75u8w^uB;>V!7pGDIgKvWm-aI--LzEI z9?19!RhcDh{pS6Ff9YTM<(yyZrHB$C|5rICNSO2TLeecOcf-ON8C+Hv%phmIRm*<* zd-YX}E0dNgJV37g_?Gql-Jpt#)8F(VDrW+m=Yc2g|+`zcW`l9i+hTQYPk2a5z>m4YXcxF&v zi3kr(kDq(6zc(>vVhr+v0l}3fVz%oF%*Ag8o%V)*c%*-8&Q7ofa#dK|S;+pMK~WNp zpUK?oxWEAe@ToXm@sC%29piQg{2AZi9kZ$w`dp*1^YKgvW5xtNc5K21h5a4&yED<64Nae9-JmIK|vh}@3N+qhs*`tFd z)oW>mVUWYvtW7$2gc+l&wbSr-?Ov9Cq~Ae!IGP9*zF+u|AS(ZESqR=0|=JnivSQ2N(;F zxe$A8>XkK-a;2lAoNdGB$riUDxu3uDhfuuGNEx6_H&+^4PIw;(4sD%r&IZgA80rNU zaPmXPjUV@-Mgz-klgrq+zO*PDzDzFGQD}IS=}6?X|0`s{ z>J$J*N|etLCC=gGgDg?a!zYZpbkghR=}{B_E3G^cZ@0A2k<;R&O)bI$1JBUvzA&0@b5UOgF*9W zx#~l9Z+x@e%%idYp!tWuJ6VtP6u*j{Z%sG|zw%bIYCmeVFR<=dasf z*n6c1!Ep+S%6}Z@qs%3O*t)7Ti=?2|SKUdRx<&t?VnuI-vop|-5RO*#_l$}K?#;kC z6-tnzdlK#@O;^BgobSXPj>$OD_9|r!)`sHX^u5{G|27^{g5XY)aUQ68g9{B)7=V+evlR71)btDm9@nff4wuC@Z^M0 zRt^kDJ!4+JHTR95FdmNYjM%r#fXnr`7MfGlX1gbK0VrjiAiv292C4Qp;trFI*73HJ z^?^+|Y)V|#CD@ii^6%$#a(P<(jbq`TnLmC}N9-#&?B;9q5IJ=EntN6J8bPZN<04jF zDoa72;H!U)&|HX5cZE$R?;eSk+Q?O^Q9&H(f@5KPk&i)7^_N@7>q?dQM>hTpkvw}` zGN5GQ>g?85KViC&q&@#oDn({v{!uID>Alw;<@z}UI{6D^MG!OSzg zOP#5G(|lJAEYEzMuqQj0Zc(WDxu~vr3Pq3Q?(4db{-=wg^oi%_pK(2~&tBCqyBELlN8mf~X~bg;|o-}Dj?F3^~hSZCueS1_4evb(>E8hz^CpH@J_lftxt&la0pe!Ft<-1@5;!KVwGL_{Na7o}B#;oprlu$*Bt&$)Ah$R5(Ee9l z3zWI<(w$mmQYCg>|G1BAvXQOM-zn|gOO$=#H+CXEBEGsUxp4K|+HZV+gcJLgk=UOV zT`xu8Cmu8-^0DgF7q_MJTECwveOoH>$z=ev`M`gl^so9K~Ii_(-`Wj3b;D zYXqs3I-&wvy&AN99ko23ss<0pM|$$P9-N4)+9F@0bstJHBgbzS2*dU(ME7rtOA=MY zXvRR3;s3K`oS*7QmsuE(Mwq+*Yl%$ih3Ug*iH4k$<3Z~)s_CZJIz)O$b>+xBvsykF zdbX^M)s-)uQ1HA-5ajsvix>6%Y%>cBi-VcUbCA@U`Rbb~Tf0@BtX#uqh3-&XYm)Jg z$122k(!UT#>pvr4esNwI_e#LXZaM;GM>=sgO9CBV)3S@G9_{r${Jdzh14W7AKk9L%$gBS+OEm`i$f=+1Bx?1_yU)+vuk@DxBy!(L)96BT z%7&=@zx-|sMo+l!NiKsv=+1~}X6r=`bnzZD&9s!;=_UC_ZcCmE>3 + + + + + + + + + + + + + + + + + + + +