From 5a212bffde3ba2d92325edf04ad18d10a38453fd Mon Sep 17 00:00:00 2001 From: LubuWest Date: Sun, 13 May 2018 16:28:58 +0200 Subject: [PATCH] first commit --- README.md | 163 ++++++++++++++++++++++++++++++++++++ federation-widget.js | 1 + federation-widget.max.js | 173 +++++++++++++++++++++++++++++++++++++++ federation_group.png | Bin 0 -> 35314 bytes federation_user.png | Bin 0 -> 22167 bytes index.html | 53 ++++++++++++ minimal.html | 32 ++++++++ style.css | 98 ++++++++++++++++++++++ 8 files changed, 520 insertions(+) create mode 100644 README.md create mode 100644 federation-widget.js create mode 100644 federation-widget.max.js create mode 100644 federation_group.png create mode 100644 federation_user.png create mode 100644 index.html create mode 100644 minimal.html create mode 100644 style.css diff --git a/README.md b/README.md new file mode 100644 index 0000000..09869d3 --- /dev/null +++ b/README.md @@ -0,0 +1,163 @@ +# Federation widget + +## About + +This is a javascript widget that shows the public timeline of an account in the Federation (Diaspora, Friendica, Hubzilla) and Mastodon. Currently onlytested with Friendica. + +This works for a user or a group. It is loosely based on the [ELI widget](https://github.com/blankoworld/eli) for GNU Social. + + +![User Timeline](federation-user.png) ![Group Timeline](federation_group.png) + + +The server has to support [Cross-Origin Resource Sharing](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing). The .htaccess file in the server directory should include the following code for this: + +``` + Access-Control-Allow-Origin: * + Access-Control-Allow-Methods: GET + +``` + +## License + +This program is licensed under the [WTF Public License](http://sam.zoy.org/wtfpl/COPYING 'Read more about the WTF Public License'). + +## Installation + +Just: + + * copy the federation-widget.js in your website directory + * add this code in your page: + +```html +
+

Timeline activity...

+
+``` + +Then add this code **at the end of your page before the `` tag**: + +```html + +``` + +Adapt domain, user, and servertype content to your account in the Federation. For an example: **https://forum.friendi.ca**. + +In order Federation widget to be more beautiful, add this in your CSS file or in **`` tag**: + +```css + +#federation_widget { +font-size: 0.7em; +margin-top: 20px; +height: 350px; +width: 230px; +padding: 0; +border-radius: 5px; +background-color: #FcFcFc; +overflow-y: auto; +} + +#federation_widget header { +padding-bottom: 8px; +text-align: left; +font-size: 1.5em; +border-bottom: 3px solid #EEEEEE; +background-color: #FcFcFc; +border-top-left-radius: 5px; +border-top-right-radius: 5px; +} + +#federation_widget header a { +text-decoration: none; +color:black +} + +#federation_widget header img { +margin: 5px; +background-color: #ffffff; +border-radius: 5px; +float: left; +max-width: 50px; +} + +#federation_widget header p { +margin: 0px; +line-height: 60px; +} + +#federation_widget article { +display: block; +margin-bottom: 5px; +padding: 5px; +border-bottom: thin solid #eeeeee; +overflow: hidden; /* For too long link: hide but enable click on it */ +} + +#federation_widget article img { +margin: 5px; +max-width: 230px; +} + +#federation_widget article p { +margin-top: 0px; +} + +.groupmember img { +border-radius: 5px; +} + +.tooltip {position: relative;} +.tooltip span {display: none;} +.tooltip:hover span { +display: block; +position: absolute; +left: 0; top: 10%; +margin: 20px 0 0; +width: 200px; +font-size: 0.7em; +color: #4D4D4C; +border: thin solid #eeeeee; +padding: 4px; +background: white; +} + + +``` + +An example is available on **minimal.html** page. You can also see a more complete version on **index.html** page. + +## Configuration + +You probably want to change these variables: + + * type: Add here **user** OR **group** if you want to follow a user OR a group + * user: Add here the nickname of the user (or the group) you want to follow + * max: Add here the number of statuses you want to display. By default StatusNet seems to only give 20 statuses. + * tag: The name of the tag we should change to display all statuses. In the previous example, the div with ID equal to *content* would be changed. But you can add another ID. + * domain: The URL of your server Instance. + * servertype: type of server (friendica, hubzilla, diaspora, mastodon) + * posttime_label: Change the label name that appears when you have the time the entry was posted. + +## Read code + +**federation-widget.js** is a minimal version of Federation Widget. To have a more readable version, with more options, you can open **federation-widget.max.js** file. + +### Howto minify federation-widget.max.js + + * Go to http://javascript-minifier.com/ + * Copy/paste the content of federation-widget.max.js + * Delete the license, the first lines ```var loadForm``` and the loadConfig() function + * Click on **Minify** + * Copy the result into eli.js file + +## Contact + +You can contact me at the given address: olivier+eli [AT] dossmann [DOT] net diff --git a/federation-widget.js b/federation-widget.js new file mode 100644 index 0000000..a4f4876 --- /dev/null +++ b/federation-widget.js @@ -0,0 +1 @@ +function getAtom(){window.XMLHttpRequest?xmlhttp=new XMLHttpRequest:xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"),xmlhttp.open("GET",url,!0),xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState===XMLHttpRequest.DONE)try{(xmlhttp.status=200)&&updateWidget(xmlhttp.responseXML)}catch(t){}},xmlhttp.send()}function updateWidget(t){"hubzilla"==servertype?userinfo=t.getElementsByTagNameNS("http://purl.org/zot","owner")[0]:userinfo=t.getElementsByTagName("author")[0];try{if("hubzilla"==servertype)for(var e=userinfo.getElementsByTagName("link"),a=0;a
',""!=img&&(content+=''),content+='

'+displayname+"

";for(var r=t.getElementsByTagName("entry"),n=max-1,l=0;lProfile'+s+" "+m+" "}}catch(t){i="",o="",m=""}try{var p=r[l].getElementsByTagName("content")[0].firstChild.data}catch(t){p=""}try{var d="";d=new Date(r[l].getElementsByTagName("updated")[0].firstChild.data).toLocaleString(),d=''+posttime_label+" "+d+" "}catch(t){d=""}content+="
"+i+d+"
"+p+"
",n",document.getElementById(tag).innerHTML=content}"diaspora"==servertype?url=domain+"/public/"+user+".atom":"mastodon"==servertype?url=domain+"/@"+user+".atom":url=domain+"/feed/"+user,window.onload=getAtom; diff --git a/federation-widget.max.js b/federation-widget.max.js new file mode 100644 index 0000000..346f12f --- /dev/null +++ b/federation-widget.max.js @@ -0,0 +1,173 @@ +/* This program is free software. It comes without any warranty, to + * the extent permitted by applicable law. You can redistribute it + * and/or modify it under the terms of the Do What The Fuck You Want + * To Public License, Version 2, as published by Sam Hocevar. See + * http://sam.zoy.org/wtfpl/COPYING for more details. */ + +var loadForm = document.getElementById('loadForm'); +loadForm.addEventListener('submit', function(e) { + e.preventDefault(); + loadConfig(); +}, true); + +// Change variables here. +var type = 'user'; // could be 'group' to follow a group +var servertype ='friendica'; +var user = 'marco'; +var max = 5; +var tag = 'federation-widget'; +var domain = 'https://freunde.ma-nic.de'; +var posttime_label = 'Post time:'; + +// Other variables +if (servertype=='diaspora'){ + url = domain+'/public/'+user+'.atom' +} +else if (servertype=='mastodon'){ + url = domain+'/@'+user+'.atom' +} +else { + url = domain+'/feed/'+user; +} + +function loadConfig() +{ + domain = document.getElementById('profile_domain').value; + servertype = document.getElementById('server_type').value; + user = document.getElementById('profile_name').value; + profile_type = document.getElementById('profile_type'); + type = profile_type.options[profile_type.selectedIndex].value; + if (servertype=='diaspora'){ + url = domain+'/public/'+user+'.atom' + } + else if (servertype=='mastodon'){ + url = domain+'/@'+user+'.atom' + } + else { + url = domain+'/feed/'+user; + } + getAtom(); +} + +function getAtom() +{ + if (window.XMLHttpRequest) + {// code for IE7+, Firefox, Chrome, Opera, Safari + xmlhttp=new XMLHttpRequest(); + } + else + {// code for IE6, IE5 + xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); + } + xmlhttp.open("GET",url,true); + xmlhttp.onreadystatechange = function() { + if(xmlhttp.readyState === XMLHttpRequest.DONE) { + try{if (xmlhttp.status=200){updateWidget(xmlhttp.responseXML)}} + catch (e){} + } + } + xmlhttp.send(); +} + +function updateWidget(xmlDoc){; + + if (servertype=='hubzilla'){ + userinfo=xmlDoc.getElementsByTagNameNS('http://purl.org/zot','owner')[0]; + } else{ + userinfo=xmlDoc.getElementsByTagName('author')[0]; + } + + try { + if (servertype=='hubzilla'){ + var imagelinks=userinfo.getElementsByTagName('link'); + for (var i=0;i< imagelinks.length;i++) { + if (imagelinks[i].getAttribute('rel')=='avatar'){ + img=imagelinks[i].getAttribute('href') + }; + } + } else{ + img = xmlDoc.getElementsByTagName('logo')[0].firstChild.data; + } + } + catch (e) { + img = ''; + } + + try { + profile = userinfo.getElementsByTagName('uri')[0].firstChild.data; + } + catch (e) { + profile = ''; + } + + try { + displayname = userinfo.getElementsByTagNameNS('http://portablecontacts.net/spec/1.0','displayName')[0].firstChild.data + } + catch (e) { + displayname = ''; + } + + //Header + content = '
'; + if (img != '') { + content += ''; + } + content += '

'+displayname+ '

'; + + //Statuses in Array + var items = xmlDoc.getElementsByTagName('entry'); + var max_item = max - 1 + + //Read item from array + for (var n=0; n < items.length; n++) { + try {//Images, names and link for Group member + var item_groupmember="",item_groupmember_screen_name="",item_groupmember_name="", item_groupmember_image="",item_groupmember_link=""; + if (type=='group'){ + var item_groupmember_screen_name = items[n].getElementsByTagName('author')[0].getElementsByTagNameNS('http://portablecontacts.net/spec/1.0','displayName')[0].firstChild.data; + var authorlinks=items[n].getElementsByTagName('link'); + for (var i=0;i< authorlinks.length;i++) { + if (authorlinks[i].getAttribute('rel')=='avatar'){ + var item_groupmember_image=authorlinks[i].getAttribute('href') + }; + } + + var item_groupmember_link = items[n].getElementsByTagName('uri')[0].firstChild.data; + var item_groupmember = '\"Profile\"' + item_groupmember_screen_name + ' ' + item_groupmember_link +' '; + }; + } + catch (e) { + var item_groupmember='',item_groupmember_name='',item_groupmember_image='',item_groupmember_link=''; + } + + try {//Get Status Html + var item_content = items[n].getElementsByTagName('content')[0].firstChild.data; + } + catch (e) { + var item_content = ''; + } + + + try {//Get Create Time from status + var item_time = ''; + item_time = new Date( items[n].getElementsByTagName('updated')[0].firstChild.data).toLocaleString(); + item_time= "⌛\;" + posttime_label + " " + item_time +" "; + } + catch (e) { + var item_time = ''; + } + + //Build status string and add to timeline + content += '
'+item_groupmember+item_time+"
" +item_content+'
' + + + if ((max_item < items.length) && (n==max_item)) + { + n = items.length; + } + } + + content += '
'; + document.getElementById(tag).innerHTML = content; +} + +window.onload = getAtom; diff --git a/federation_group.png b/federation_group.png new file mode 100644 index 0000000000000000000000000000000000000000..080ec7ff1f6a772e2b05761fa8d62920b99d9e0d GIT binary patch literal 35314 zcmV)pK%2jbP)9BcK!k5l}$?DmE<7 zr`R6vpD2j@rf*>G8dhb2-mfm|ZnUtBy^mhN>Z=JhmP9`&%Nisl$IpH$*p0dv_ zYp?ySx>FK5EOxZ}8Nbx~y|)M6@g7J?N$Io>>EQ}Q+|trwy~O;Ek5_L6cG3e7b82d; zbwt#uJQoNVVh+d7W#)gIl+q!kD&x9~Lda}u3 z0)-hDhdjKG>seV@R$N@%3x9gDwdbC2lh3%C+5Ev;8HcqGQE88jn#%G;Ot*~G?J-M$DBBvFtdZw* zqj-KRMCg-|W=$f{+9t}Q6u^9oopSa$R@^7wrtZJL)iew8=$ZWwKQh^?Xjyb7C)XMq z8!eUD`Jd6>y|sLsdte7*hH!KG531f9|I5afh{OefY=+v=^kuGX^h@~x?{K{uw_pxjI=$xgG^ zN-H%%YD+zH2sm@`CZQS0EA;>A`g?pa=0Y4w(7)fIv#YggH*eWr=S zC#*cB-s)OXY}K+=wtmS1%k5KOn>TE*F;n-mf{9}-QB!a8UU}8lEnZ+befs!2(=xLx zJtN&lj-OzM4m!x+vz?V^FYesls=d8EumdqWR1o164;f+E`F+Hd1r3@SL`13L$c@(2 zP%lF3+lpr+gN*){#J9i-Cu~iKtlT^i{ut-V&3+xo(PDW;MK)mANQWAI`wz7IqGC;& zX3NOPw8DXdtg*Jn3i|c8^mMA1;>4U+P)Nl@$U8!tx3|lB-?q2*z>Y9OG*_6JW(STa zksfbggq4$Aw^fo9J02)l0D@>el0Y^yJ}rkrB0umoDxy#Xf)E99BGl#yjTCcx02I4Tdy67Sp?QcSb3@l zucorXnj7maML4yoNpM4T&CLNrr;F1zTT5-V<7WuoO^iw69G#o)8i{a3JQ;4S|D~na z;4Hxwh%_n6!S!9&ZOtO|j)Y1*pOIrNDQOV~@09@GS*qDf-@YTvfT%=?lGChGYO~7H zjjjuBZfUY2;n+l7w$(K?3(h7iTSD5_%5uxg&aqtSh=Y}|xr@fO8O?XRQT)6;vyaM^ zqC6!}IJ%dR_fk@N=c~0NF(+9n1XNO7V#OI5t`2Kqd5_qsFf2GWqN<|4eZ_3Wv%_=F zog>`bDy_9b>cFF;hNpy|`imNG`vX27PKx{c_XzOxQuI4dID2CaIurntq-K_rXH60S zSFBiRqehLgOmX6x4eMn@DVJ~-Sz|DHXNusPgnRplgJ)-FiCb4lpc5&I#t|UVC71Lq zh|J|l0(P_vHMi2YYowC|+)iJS{26I7dRg<{NJx7_ojN6ENG4T8x@gG~TefPIEndFd zjyvvHhZAWydgz8!QEN+%E0i5OL)7UyS12tA1dPra9W#H^FqsE#o#gOv^T@CgaeRJ9 zq#EbSk*Pg!?p{*f8^~twtV5^73~jXt8)FZjC>?KES(z{OjS>WFr8?^)f<^sSCskd# z?#Y%unBP!ihO`pWrn$fvj)YTVQh0O1jo7VgCcwl2MY#G73KtJfa^&QlJ=%k`E4UN( zgmxroS%N25@I<8So_<%4cEr1=u#Sn@sV8AIB3cGw{J8Npe8h11QEall;=s$-thEYx zFyXz_UpnIDt5>=%d88bKMhzPp32aHdGs0vPnbucWK6nAPA206x(T{#)C!BDC9dyt^J>rqayMSMp zUw*kQ(Q0<#g%{eSNt4`d@#jDPxt(&#DK>rj^d5QFyNLdJv?(2`=7JYpru4dl`xRT= zwn|GATquz?BfYxX_8C9U>O~M4SO!Ioee!Z8B&Isdh*W27l3k?X046}VaN)p}BO(t> zIhsEKL~t*vJ|ISPx;?z0j%(MhwV(XtC-(5e58Fv6on%Ea#^AX0>Z`B1w;$ej@qmNS za}e`WPd#N*rcAMe4?eg@2#j{(XZxWKeaMbJ`e^&qr#@wP1tL>C`Q(#!zySyN=bi8i z?@@}`iwoP)oE=mUB9@x+EmpO0qhn);6};R>Rz0|NjyMs-TPlC&KDoJ;FZG-|B{{7| zkRl+9R!*D54H47c5j>=XNsuJ?)`<|2ee3^Sr=fREoH)_G{`IfhZMWTK=bwMRO`ST` zeXl?Bna?4=@5>Tkan}e!TVT*DpCy6Hd&$i)X^bqW@S?_|59Z_nI0(H!+J)XWq*Ze7Sp# zMP1LL&b1k$odWqz^o2)ipj%p^P!(sq8VvX*I^mMOh2q*WbvujYTm&Z|09WTZGfv`V z2;H%98=vK#9gbFL(vIk3_XeB`Vc@`zQHO)`7hQCb6TwwiU1fj!+uxjf-+ue;_Tq~# z%ANEwTfBI&{pL5nv7i0yXLjb9XZmwD+;D?W3J8jJ{_uxCwEq43+h6|j7yJ9)|8C#; z&Uf7JdfvQwK4~t!^iub~=6zRQd8I!;c<^B7_QC&_a(F-2c`sZWg6BIc2lpR(=%IGk zU3WQAQ%@$?H@@)=FB@W~K0p5Pk6Ven>mhv)-$B@vIyj-FHz9&ZG$j8vH8<&8Lt|V!iI6j1BA8BpMs)5)CT1p}r>3SkK?+d-SQ* zx#ai8`hEMq5sBHeXM6c)opn~?+;h(*oGc-Z>DNB-iBBXX1SjO< zolvwxLWJ+n3ex!d@4N55gjR!u2sI%tpLp!C$NV~V7&~@s;+ku&@!x_se!rlH-!JUW zZ1#6^(2kQ&KH0BTRaGUV5>4E3#~pr+Hoq4?S`8D=Jo8NAfd?K)tY5$0$0dw^e9Sw5 z84aZmW0k|v`}5Q{?Z@(#%9W;x;KD7Mq~4?J9_RpOM9%bdK1+AH2zv6wNsb*`q&vn9R2;*xCq%(=NQZM| z=wEm?u6hXPm>iVn_qy;HIT1yAW&aUI<|9*LW5JkH;+L<>l=l=!JJd zm_VRV7Ly9WF_ibj6HoYLIPt_2ZRpUUj=4M2%5*)v@2xvJ#LS`N8C1B^m@#9V(=iZq z{E8JTJh%`dM&KDVXwZ&Qx~q@dxOX6~cnnvoezy%$JHZB9;0`K`h@N*iCb{)L+$m-;ME~RhB)VrACv5bP={WbyQ9oD}D#2#KBPt|4S_cR1){gw8;) z;P?p>Cb&S$0bcG%BlF%O)9$r4Zr9l136@6)mBFDy;XrU5^rf?A&GO|K0VN1up#TUV z3@C#O*K@|2G=D?bl*cmO*%2rDFcISS#wSO7NskMHaL}NC4xEs`aBI#7A^}3IS+m9- zdgvjC2TWGrK+sgg%Xhe=PdG%-|z4_*we*dG7 zKI+6A+8gRdI}kYG{GqIl`k{Nn{NA`L?fW{y0EG?>Sh%L9+Bq;p*C0zDN(KlVe~S#6 z_~>Ma6|NG`VZb>C8wdh7U$9_-Nr>_Rqb#^RfBCR{$GI5a+Yeg%bAj6~UAolqCV{t1 z7~lo?m4o+Ram5uTfzNR;D@rh8fQRqD|9;ybSwO;>Ps#xU1~~49p!tBa;q+)dz|;_x zghqdd1TrUHCN;Wa2$eF?Co}nhWN=?rts8H=(H?o^k=Az|a>yYL)Bf;>Ke(vBx^JdoLdJuLM6|C6SBh2WX@{{Ms%FOq^&SPH7?3 z@!OnG!Mnr&=6UpqzTs?#)P;!&GoemQ5}3n#@d&FFeLij4G$&}r zw|x?r4v0C5#HN$)yYpXm&#l*6VaWh1>^DG=qS#J2`83OvRw7N@IdDh@I^a~eZX9-S z4@AH{3^4b>arn)>!2r?SK?=kiW@dbLhUGs@mUv_1*E%~N+SA^zBGfIM5BVG7_l0_J zE@*VZ_wanY4&fdq0URE^^URquz3)Q#ts0-C0Vh6@yW3yyhWolp%pGboB7CclRAJIj zSb@yd+cs^qlzMr_DN=+bxmiv~VesQPl0kBVNix!vYjDA!;tB&CAL!098U>uYGw2b= zvr)aNS^Dv(5SoY78Gb))q*}sok*FS|ki^k${t>;M1^t)A=m1Ecbyk2Nf6t!1BO( z4!91&Axk*-vvl&E`xsP~an8pfNn9B0iAL`YWiWAoB>(ka|7G9&<~O|$dee~Y*~oO@ zXcW|6GIA)*!1x)5+UQwF+QvrZt=P0qaej zL~tqJ;ZhJP_keX7PzDeK0mRO|2vj`Z9W1?PO@C*frhULKFm!tu)60Q(Z)`fS07eDT z*#)DJJ!m-) zZg>Xn&UbJ+(JR6CH#FzniW38L+8IpRy&-+?KGgxtNV;!|m`6-M#QJOLPZtIrH)fO- zxKmLS4U%vJo-j3D_(=<%$A?6oMDAP^<-O?mhQRD|iR3Lc3r&WWX(l<$OJm<~%mYJJx`Qp&I1@hGp4#snCbNOa_?^y+&t-&8xq!3TW5)eI?FC9u^Q!?+i#4#%UaT{blF^=AS8J? zN*q(0*&Y(1PiQBTEZ62n`=2Ka`>-QG|RRc zrNEU%PTCWXBJqh6y*KEvdxxvH2fFHk4sy-4<#OwYGd2l6)Qb4FZY`6K^E|6-F0k~~ z>uqJ(TAROlt7S+-FuDx>OR;v_>=$ozlay3;} zoRc9{T;%u@B>RwXpuKwT-L9_dYOs2*@4N>(OlceUNDGe#)IoBWx_YV91P$gadD-SK zmWNnfspV&6S=m-h)M-|(dzxM^v+RNSN^P5NL;B{~)WH%KQ(A18phu;$@Gq{aRZL-{ zZ7tts=?&m&rTj`d--pnuIPvxpaxW=&)dQUp^Y+9;lyv0m?miZZ)>dG@4NIxEeG~KT z`9zLoZ4&Nn$+WbrVoOoxqcsxj2G?)0BaS)R#!lPM@|tTcJ9VH9=+kU3Jvv($VufYb zFP9shwtT24v#JdwTkJRsT^wrk;^?l1^u2q%Q|J6ZKoRla!y83Jj~Y3_F8sE_e5Ab? zA(Qq%X)8`_l*zg#)f%!D{wg(HrZRSJ+Pu~>n#$b`vZ#2VZ4?A)Dy^{o!w1>O=_gp( z>Lr%mvROrw!%K-$GO|5@wlxwYCV+OdQoMJEtheQz^}r5ZbM0?zzr4qH{NdiDiDjof z+?{(UARZwSFR+&zzqbi^54`5K@3{7a^j3%P^b+oSn{fA}^*arl+LMBNpY82|x4Q>= ziTUmB@!t2nWj)YK%x_uO_7?nh_dqW(zui6F`@XlV2YQM5E$iCeg5T~Q=q2X2yT^Oq z_m=g58%=thdET=A?Jc+mdLYne`@ijrZY5@7^m_e=d!Xlgi|Fwlz-U5@DSruiCP13l z)Ao@}t;8IxZ@or~9v_R|0{5^7pv{n@gztPh3dwU~Cg3z=%jqTNJ?#13$9ud7LP`q= zn3z$r0(6ua)rlDb4x#=%UX$JedwXCHdjP_PknszGP9f-y+$wst8GG2#y^rrbJ$`d=R`o=oZwt&g=VYjGcim$NnMoE;mJ3@p@M0_4u<$tLM zQZ2g1_FQo2xMI8UXU`}*Ql_1A!I4&9+hEV$xzL&#TWs)XZEU$sIX@O{R<4f>8$Pk0 zZCSs~wr;Feevcg6wx!m_OdDtwn`&&sa%JHkUSP$8`&i}X8e6|~tCHR1E6<*?EwOQ@ zcIzCbiLr8inH~C}iOK;|XaD@kQ}(qhKDfiCD@=+aB?{lPdX@DPQHO)J3od)91Q*Ou9ubrn`PV2I^pG}&5h4xgG;r1Sylwt4*;Ye&fTWK*2)Iy z2GhjR8p>^BWs6l8YU|yigtj|qR%RsKla;UmeYO2TWx6=O^48@ySWa4%73QaiGj6f; zoJ^}wba?;13Y@Jkw|lm1wGV5nwElyJw5GoG6k^T=l|EM-c)<&6tya12M()$!<~_Gs zD;`ZzGS8$Y#nRhuh*; zU$P}{zG_vc9j-9%7UFul+tH3M?UViDB(eDi918HgqIq;&lre~zuen*b7^3p1+DzA%#!gSyJZTtMvnrPbD)@rrV zS5qmc4{c(u<+E>oj@8%I zTbe90c_QEpZ4&|E0uA&>goD(NKo!9RS1z4v=iandxVcPDR;u6F{RTM%ne)s_36jfPh%DE&RST89>7}){ z&#d7|C}CdiCY75efemX+ROwaPP> zFR45yTidF^ca<~|l~}5hx@2c%`oJPIWn^YsCY(zguR+w9m6ff0bohp7Gsq?-fzjWB zJZ^{Slb-xg0n|nzWgEJZOlP_B#8>*AH<4aMsBaZ1C7(+puDbW9N#pY7ut5v=M#n)Gr-qE9aGY zGExM}4@fhzO;)vRoi!+_WN)^no*?CJ2!OmMQ|z-(-(qd| zP-sot)>yqZEzK+Jqixjktfi?!320NTs36bpOO$bXRNl(!hYo>gQQneVNtP)LKse zaaOLa#5QiwhC#{1is)|Pu+QDSQ1waJqL;7RL4$h4A>xvIy0Q357PJc;FBly5Ceyl2~`E(*4B#fn&W#&-6g| zh*^*#FE8IR64h2y*J%0T(qy`qtY&4(h@YJ+VNU{DjtIA=y2VYj85&66pM>38ed`Fg zmeg38P2zOY5zD$zU)QW8<7^J!s4V&|)+laWul&yig~gW8@|$7N20yul(*JI)u!{0Z z+gPgYce8SQq6Cl;tbfJQWb93cr!-TWMogX}HQE$bP=zUkuLVB~~|G;-O?5I)wj&hD;Ag8G1i(-V!l4^AxN z752npmLbcs=Xm1sL zg24e(Hb)3F2oBu4LokuaI@;4PezY&kH6BTmc}D>bt}>K9yrU!N@IyU$K59~fH~;`3 z07*naRBTYxkx}UFAh4)C5n1d`z(&xuN9|~d;AGNf)qK*md~~isVxXEDV8mP25mzc8|A%U+z`<@Kw-_M$aDN|EL z$P}vQFe6u0HVA_&$+%Q_*%=8N(qDp}EO_;enbwjjG0(pI`W*Y;AN<@Ned;;K&A-3uTAROUNr%qo-5u0D zxsN(M`@+liw}0NU%VBhZAZxX4-t#ZNE<41Awk?5^%z-|oKbNgs-PXqBwKCZh{Mw3D zyVd?KiJ6W`G&kDoa~Ijl4b_4heZ`e?MXchB&2=K)wB&w(2z}fwj4VQT6|iO|oA*qf zG|9$~9wUyd*(!oYs7j<}NJo)w^OkLp4tA53WY<`qlnTqsDX`QG?a!T=r>y(sR=!!9 z0CD(2?H8CY)n3!OMV7X9xfKYGw0i9%x%0|3>+FMPpJ$i<`5)ei%U7P}s`r%vtS8QQ^bH~q8esLpwPlJ|xB^Ve0QdXD?}yzZp`mI(YOIBV% zi8yDjJ~`^JDsf*~@B}%~Tx2Q%Ip*m8{fniE(2lH`xwdk-HfPV)=Ih1MWC%a!$*7Sd z7?Y63qgnf+q=>6GZ>!c;6YB&&v|;AJZN6M(3ZUoa=32GXg1OQnWC^Fo4}3WG+h?Mk zc-)cp_v>%9BWBICgASNxtJbc!0sTtsU$@;OZt;famp=RS587i-&$fFXdcuDHv+pTk z`ci3GwAyHex%!5G+b@6kzcysh0PRdW*d|XLYgHNEm*Y7KJw|W%BVBK zIro%F;}v9CZ;O|$@anJ{Ty^bDzM4&*FxHMZWTp@9{`>Bu`y#{2&%XCRwo<+t-}~9+ zHeKhlbZ<^}j-Fj$FKC0KZJKmTpN`2AJ({-Y1G5o*JAH{azDyzKFNXx#hWMpKecRaxr-!LOASoH{W4>q`4ZPO*qdx_bj{U zlFI}K*Q<5;yAzmHSI+9^z*N%UoW-`e)vnf`uczSyMSl(@5#r%&(8bQ z*>>|C_u1m*D}C~C4ddC#A2`~t-Fnvpws`4^U0zMQ=FEZwnSDxRCLV2t68dtj%ChRD z`l{LB`)KE7i{sT-+2*o!nuQCkTtE8(h88qi zK{^6nitg)YDOrUwAm(Waud#KjH)tShty#M5ObxIpM?YInIJV9!uv~mKMAX}927LK2 z=PpMbdXSy>$+PTR-@8;CM*3ncAQ0X6F1_4l?mxu`_4_~not^alqiyrna>1Ws`e%bDQ_(}V}^S@wAe9+DIpE_CnCw1THr>G7&_E(h=)RPm(jkbek?B|eb zY+SL~|=_kI48AGM)_2ig^Xy?mQG>hlqL~gONAh?9BM{sPeAF7Gtw%xXUQOGKI&|l zI96Y&<8pIk5fp}o%MBV(WU0CRWeBX-@+E^s#WryQEsIjsiBd(_Y2w;~234h2ySByZ zMvfD{2GPi&M+B`Mec}is$)F?k9-Q~TKmQ5mycb{kTRZ8vqx_u^%-Z#(wy(JNteN}U z#Id8Divb-V#%IJ$c;@hfXZXwr#0z()8!%sY;G9_bZ(rwtN?drs3 zSt-8r^)I?`$8%#w4c97mlt14n3+2y#`)BK0(8sR)^^d(R+|Npa(9I+-F6!(3uwwNZ zUoGgnfqDmh5{GI`T(6G?3>Zc^9Fb6&@OIsF$Gvvx#ow}iB}G1tt=BXWSV4b!(YL(a z^vSNsI$d&R=WH9+*)l2q*REKqjd?0nS!pQpN-VQzh@}?|x6Hy(meX&7<@TRo*?mV? zM&Dspt9?)Kofxc{o+~pqTyU{wd!76dYUL+Uwtl_LJjobm+x@@%;E~^NI9%vN28Drw3o;2tiufE4 zs||3~K=2S(oqkisr14|io%JK9ooGiMdY~`QH6mUJ5zY-}rQ+0O`HIy})a$jxgVPy& z%BCzhWToKNYOM-u)~)xl5s-fO=W7KQW{RT@a9kX;2h_Jf(>@-UESXWfLcLO`5M>g95S0A?Z3UU~J6R;r2hqhDTOGp0@TN%reM{9Vv$ zk^T9a=-Q8e^#_MzwDZ#6T)F-D#>cvo?`hxH5oUHrvj80Q(sNJQ@}*1M1YKKGE!ZGe zPI1%9a^dEx8u!y+LrQ!Q8s$IHlEQ41Q9u^F0vT8G1UYc3si>&%4ymfF(0+oNsoE|g zRk)ZPi_@DWU{r0g#-A?OrOW`mv{;SDUmFi4#F!EcuTPEbG#E_^fMnnQ~jFm#DPZUX?>W$JpbGa!rZ!l-^mkv zxkm$pCWwh}tX7+c9)HGHmdWGC3gaGQFG$t^tHa5GF1OzOfY%MUv01C$R*fro9Ijkk zR493<$nFP6;-^2RUCEXSN53q%GR$tf=OOjMV!Qv*r+h*W5~F$I*%$oXKsow{ zaby((^V2RS>UuFh7z>VV`N>^_+pA5x+y;Ur<%%EtpS|$-J(j6WED`Pma>Zqs9+HHm zp>Q*?I+0JNW* zBCk5#0~h3=;~`+zA|&te{!+boH*kWN1l@AjI*w&IoD13m@ID0hz|DVitpLx%{rDTy zVF7ON3`b~p&>6FOWJ&;|UO~gb62f;rte62J1Wie35AUFUw1;bsX6}fCXW4*3L#=+xI-mJ1(xB8y!pBOO z&cqSe2u2g1R<7S}Yfezghd~aVh1Mh9abZ=8JIF)GLCqFA3qp?0MaV3^iUk4!3Iw%X zh=zfXIl^QK<+4PFGN@17KociOginMhAj31#!2&VjYPB~1l*pyEy`z6lBefOOqueN#{I6^o}=JFOniG@p+%21+7AWpGiy?lP9gDw{_*U5pY zZ2dZG5q|C?z4s3BN$px2C$^5@Q)k!1`L3SntaH07uyp4>271V#f%eB={=ofOnv-0y z{kuD>b9dg+)jeHZkJn{)`)p79GCbccV$RCRvs__cAOv$z*u=4_$HO_?&~hh^nW&LK z!u2(ER?#fO#7Jo~7B9B?>T;{Es!;e+m8EDR3=zgFn!KMCPMRhit2P1@ac-09YQdb> zZK*g>dcI=sgke*WsKwFCL#34AaR>{!r}A*?RNreMZ)oEa!g1{SGuhL0E~lXsKNS-rw4B$)$E`t)O!grgcNvYnV9bg+2aH`dzza~_J zuxYfz_PhJ&X-@a6r87`+?(q>Dsl{BskJg zzR3o*RNELuROjg$St>ja1}nq6eRO);w@W?HEzXQ%kn{o)8pID}K#5WfIM4PR09<$O z>^{r#)fhP33I!vw@`@D9Dy%Ji^n@W3rHRXvyJ)U0p7WZ+7QtY}4Hny=p+n``xmMg? zDkgN7@~o@hy2(fW2*l|9fcVs;glxHB%6 z_!mLR2`8!uZm_R5Q6m{r-4#upX#@71Y1t+HrN)!RP%tA)jzai90WM80p1H!s z)w1N_oIZB^L|eIZzJx&umyL4tkw@L;O&cv$e8yN}Am5 zMsx>n|2cglA?&}h$+jRkElQWKv$U|XfXV!lWph`$6LYB;qp1g3r=x=(l@6_ zOM%9Nq$ikAo8&wsO4gi^!e1PiYi@uLVfXJp*c!!ttK}>Nm+wDdpbR4iSh}K4WZ)LLgL}pYmy> zNmvxl@V7MzKBUOsqFF>-Ut5**t8J8$Ue>X6SreNZgq@|uz`WTvlJ#tV#>tCoSZ>a!BkDDZ- zR$e*T;T!eaEq-8TBB0S}gPVItvbP6fJ>bVC9tb_qEtr8?EbT+cZ?1?Plk{N zVO@x7VlyYlxHo=8Rm+)7vxg?GP0=;Oz4rFq-s|>8|xaw>UFuizo;+TG%5CU?dnK4sxbJ zT(ki{S^O$$YuqV_>_1?GRO$0@<;=)ZSQKft6u^oD65JJN0@wB29MWo}iKv?;9OAT( zuPj`51+IW_oI2M@U5JVgWI z=lC8RlepH=b31GFuHN764(y>DyG6_`I26fPk`QMky2R-k%uGrFso%iDRq``-Cv^x} zLLO?nEOAz{8xbFvBZ4Gu&n?kF5fNs#uG6_p0*->>0oEc*BRQa}<*C;sERN{ucM04z8_4iv0Duo86z8bN9-h zd%gTzf|nc5)yQx8%Byd%7hip&%K*~gE_>@;_uK9AOK$H^+}--VRrhsk$iTPFV$I&Y zNnLLOflydERXXNcxp9`s!;M(IY`KS~kyC>dT}liC%pk26Wo(flq)d?`o>N0YT_0iW zt(!`H5^xSkk*3K3X0ESRaz1yYu~Xe6?qZ%KtXjGxNGzmGgZWKac6~~ z_)b_FlkvG1Uu`=l_{Me8Bm@Evj!L1-d<7Q}Ir7r0b6THk&w)eqHP7IqT&!%cIMByk zKSMp@+`s+1;;Tf|H<2%Oa4U_zC)<|vHTQNV{l~kS1l_{SzHEt8u(+e=O_eqS%|@Dx zBMH4|TX~t4ikORrj`cLR4Z_VS!o=X<1W_j<{AzLR6-ro6?m1Eo)ajlwMPRR6wZc;u z;IB-2FOoAdSdI174pnlBA_u3If+A}w(<-1SZx7MY{c+wE1^`YpeCQx6k*W_UQzD0_ zhaZ2|K6y^DO_`Eq8#c7q>8C4ldUC3gr7Jq+z6P5(G1cbGX|V$jOtaEbk~B(%D9-)h zgH4K#N!YQ+ri+8|yV<5rO|>`PXtv{zPq(pS(^N)_-E~)!m6VVlL>yA7#$JB8S&7zh z{5N~`)n=PLyV>8daAC8Za6*P{+?cQh3(&2n*m1|P6F}r^LZk}yC590HWrXO(OIOQVy?NrXM|qqc zQ80vO;Tugj)iyb~&wlYWkNP1xd+3mXwrJ^c#Y5ih@rXwsc96rrC!T!HgMx{2AFD_m zBF|rXZH^OP9`T^b141UUnf1u##qfgHE zpa5biUsP23yoF2clV_c#dahMUb=({?)#hHV;Eod`9%q=Zi=0#*c zf=We-RI7uq>^UqT)CoN^IW?5Hg>%c5zO{7qO6SN8;+|#lhFhy`5bA0w#JRUQ*G<8> z-#baEYgI0jLTujQNJbweZItI8#v3M6LOSd?%%HJ^7;$o|+((I@BNU1#WYPkxQbaVW zzBOxF?3GuVrPoeTa>i79;DJUb&c;T$mKK^l@kFzdptsnKH#XYxB~RAU(u6{K1e+9?%e_nhu1}wyYA?Ld>?^{M zAu0CMQ%!crA!&BoZH-Rs4o4zq7bk|egF4||1l!JCuvi2!!G7_(t2~-z;gaRHNT1Oo zhbc$J)2)z-+!Rw3&UC*x=d+4Vp*$u9llxVr0U)6C<~#0}rM1dKzKEt~i6O>ss=}y< z8pnH)urJaG9H4l~U;O^BaunNWzy9OjohZx8HD)5la8O@T3=n<2S^a(6Jr72X`?{f@ z@}0b{kStOt5N1YvB98k1xbZemr$7kVWqR6)iD^~5nirntb z?gCvBGXpke*5QH;>SP%=0K<-%F=LC1R>}OlrIgGyN}?^Du%~nqCw6!tZd_Hl)s`-t zYb%#5^h`*Z@|@c$xKXi1TQzK}a6yhG71dpnpaahng+b_jqt4@}ktVo;$6d4Xc6eli zbk|dkIBGjfARYR~+=U*u2KV^j`;YR0n>cQaComy6GYbDnIFSLTGc!{}h$$krH2d1u zvTXeLG$(Rq#B()uFL64M1SOwX$t0L=Kuwiit|T?s2vZ=g2N6RP+~L0 zQQ?sJc{v{5PYfV!h9C?3_VM@9cas%ROPh&6pTB6S%L`nCs7X@*QNSJV5q{nvu1Q>8 zqsD5gh!kQb&j!rk)i>sPVCfs;#;9dk6>?O0>TtM%R1w%Yg0Q*&)JYBtH*2L}B?#A8 z<%r~-zVBo^>|j}RRS$6b3$MKC6KMIWH6Bz;+$Pc5bLKDflnP~v3SXvx-|5r#X^nB* zW6q3`W9*?v+pJH1QN9-0%AH)RoO897R@l$-#!Yp>qd^!qPnw8IW$4_pxy=2L>vi9j zvJJLi?i;pNAy)`v`A+;5it=7!m6erNzIBW1pb3ceXkT?I%T5iN5T%4A7hSdRTqCOh z0-&@Zm}?F=*^-tq42}Zjoj;L7C*Bcun~o2+kZabeQYOCrn7Q!w*llkt3sd zOfvMGoHkN|un5n~)t)U=rli`LXJ*)ySLWz9_eL0)2?35{JmIS3+v6OcD7iZ4Aw;-z zGz3Xm)Rru1vCA)Sa7e>S5aQ+nObXaDK5z}v{t!Uw<*0ukBwzpsF^S~I_7rNW9Qipo zfDpv=!6BnucrgEHq7ENAM2Tp=?Fnt}efV)thY(T%a1VYoz#P&mkW}ZlKmD!^Q?M_> zY19^FG)jWJNcgPx$ZAq2j1a_&?`RP9F?Aqj5jO}iC;cW89Jq0oa%cSHyWj9&+c64i zB{&$ELp~GW3D7HKTI!0JyM>vl@WG$>qK%w+m~EK*nkP`q88*&xM^5mVz6qLDc)-DR zvE(7Jfq}P)^A#0Lb+~|F=A2s^iXn=~tx?oTW5WUB*7*)a$ikm0j$T|+Xp=?_wt;;l zAQltQssu68qNIo$C+cR{z~V32h-uS(P%z%am*g>m6LS?m_&;Ag&oSVI-}sW_yeW!) zZfr~wE^c&8ylGR5_3M|a*u)m)^=PrzUTb#90he94FoGc;|G2UnU5%j#H`Nq7;D9ve z((~uHh|@;cdh1s3bea?Aq)Dmb)CtGl^X9eqy@iD-R$QE7fBa*;G$aY<%D@mN#1l^t z7@Fd+B@i0PY6$C}qm&GXDlI@;Dz6j?vrpL^h2_IthiKV7KvCCs-1~@6SO}ME^Od1! zg>dmr5_*ZI{`!|bZFfo-29khj3HhHeZj`@+$um~DGtlurDQyQydPs*5<>pvmrzk3$ zG-vlHg%-I!z}6&?A!PuZnpF=xOnsO{L}i2Bff;bz5XcLcr*2#)wZm31u_en^dUW~& zO5wFh+#ili7AGRf(a4a%X8(Ps*bTSd<=^A+gF7SWE~B$~I7p>L2FI7fjzV}M4#Ovk z)_yCF&azXoO8oV@n~dx@<3=eXzLqaI2>B~EtWUTgM%@t3fC3O0xEPKL7Y0^9&~V|Y zQ_~z@gM%kbP^w-*la(u#Pg*%>#*9hTW<@PFXi$nGg%KW`T>ykB(qteAOpNC!d+AcG zFx3fr_~9n|{`a$04!`BsBF+rVIN}IJ@@V1{wojf9F!2PXN(h^ulT`>}>Z_NJ88u9T zk)qnw#fucek2Zq-Kn@}Dn$Z1HEzw|PFehRCKnt+w7GYhU1!t302_X&vah~7^V>LY;b}iB>^iRsTPKaOGC`$BjG(fOUee)C6KOx0Nky8}@0+*UFk7aDzyJUs07*naRB?K6^DD2s z(q(jZw}|-wIzYw0tsuyrF4M7eGNd0)v_)wR;2I2ErgCT8a!Z5Vd8br;;)=M3z;S^C zz=8-%2Q?bG&t$O_p5b1&BQU~UU3D+lc%JX*t|2N2Hk22s^`hVfU|HT)ZHCbBh z&_g3^&A~I|8o&7BY~gY0(Uw9ta3hlEoOk|r?f-q`R6A1{i{dGDLv(bUX#@tt-|fQj zgT9gX5)Dq{z}d+(2@zx=rEX*di_#6CkqH}oM!7^>O~;Cu?CW?cfzbc)$n1F3c|2vW z*Np*C2LuKiFljSk7dMt0o?o=#r%7_E)TF$VYy$@~y zA#{|eI^?Pdxhq0B_=>p3pa)P-G*KeWLB~3X?Q0MB$<1xC88d>OG~#@1YR>5X7~^a$ zfIb8&kasO`&fOV{?mW}cc)1pY_QtqpN6;~D9NC@3?%k5Kc2&pVN5RDDt`O8!8#=qryI2JfD5I4k`mic2lwjGBd=$!ZjfONF zuc`mH3YYiPc<*Xkb|B{Vrp#8;Y0}XE&e&$&jJ`*oi0wt!qs`NweD+1{92J>Yqic}~ zmUp-#e)73^cAa^?=Nu|4A8cXSi+}oCPevGEMr&J=b&NP* zo86FlEs*fcnS61K z9{M=cn_adrxZEx6N8F^ns|2|x_wS&Zqw!=DS|Xxg@W?hv270n+k~k3aD$+K}b(Gq! z^As_mOB~RzpU$oH{KcqZFo6!y^K=|~WM(<3Q3or%E8lq+5z>b49Tb&1k$fE z<54q_m=N70nK|Jkmt1zGz3=dYB<&yJ_aQLBNyt&`8T|D;$p|TjJj1Pt5)c?g6c0Z3 zjC8F}c;Y|Ir_?J8EiTFWN)@UGcYn zD*yDEZiK>ozFL_`aqSvAdbo3MEP~{5rhaG}NK{E8M*0l3DC3W5KE9{Po)Btxp6xIT zC>3D)gVoxi?68ApYM+hkypeccp|A9<5JbROa>#)UM#cQOLWF>R@nPBYY3N`6ag!Rp z)lHy3yZq0dxDS0PYM5=(O?~sCOFdKP4e|+qBSI*FV=&7ZP$rCnyEMMA&ciVG7)3xyhWzq8M5+`H~Qbo*h%v5zsP50mXevH z%A@{_)gQGF3+0o=eulPoW91{WXp!1}i}E~^w;J`^Eq6ZPYP^5TObxtaqW;hKf9}sP zc`&hm_~Z{L`{`VV8f-C*xf-h_@7vR(yIDXxgc)$wkDqy}n>lg*IY1^wwkx<#91Q&@ zDNETxfyM$ZKJn2H*#%$wg3t6tOIFxNq(Z{!g?zy@9%2Mjop#dumCSplQp-N(rc-p6 zaIRBNIM!ZHIqI8h=biRg>y$M zeeD;|J;$@Nv%F*BLXXJ`L7fBlXDNJb&O9#z!o-(>gE~WGXGp34!S}yUu90s#N5+as zde)<~3eXmah%%W-m;Lxc=RljJ7iCaM`+D2G58K4?qrHuAF5nTF_CGEa8!H=ITX0b4 z;ll>oIm#3dXM}($dz|Xb?@uX>Efb1KH(iE=5xVzd8XK4kMvCAK$7F%H=}TM#AS#Ry zFpH0WB$;Ot@5!EnNRPSLgu)CUJ7oSCQ(jDckAq_<_KFqqI8ryg%-sBO=Sk-_0v zK`@@sUvS}IPREo^*84#N`zg_58^qjGg6_`qI}kI24L-sqj>8EZ#_Z%g91PA!LhjFe z>Yy5a5gZdFUD*T7xvXzVf;M*Q(Rx9yrMg z36lt^Y~uiw;bp8G0c)~iV2oj#1de=hsDKyKuvls!feyUO)70t!0s$3*kmuQ#)P@{o zP^Dfup5`pV?+_PWeaIJZ$uQaQQVd)T_(K~!Rd6zUKlQ<|5DuOVa0ZKAmGWluQeYhi zbqkP&w(mD(vad97WxVU6i4|od^~C4yZcCV)3`NS|pOzG~L;a$7&&Y`>Xsf`@SQI(v z!{Ce*WUTHG+t5LUTnPS@oAO^S+ z>kizSWg2`7#w2m|J}M8)36=vd^Xyh7)D9ARp|}}b4`Ra;j?HqwznDHTkG6SGA#tbL zauKALr*~lW!vKlb9HJha1H3+5iLLQf2osDwI~c4lXhWFKed42TQpFblfs!_bdf|14 z*A{c_$yhLHNfZt&VRN0yY8%AH2L~X$;=taNKV{N5$Fo@Rs2_d6 zqzwce`AbA*XmBv+H)(e-OzI&CJC?jES@wV))#?`}C2giWm=~UKn9bMt%2ne@=${kk zrfwLnaAgHn203I;2(>%Uc8Hn7>|=nzU^BI})7bsw8TF>NP@{2^w1grULfmi(uq^lB z*fUYM6z&b=0H)vt#bA?B9>QRUB(N#Fm-3taKCttT8?EgmG)drw;Ox2LmOurTEd~g} zfWt*ry@(4A7xVyEa{=P%BM1NSV@LYrU}GB0z+`S`H>R*J3H5wY&gk3^OsSRc2=C`$ z#Rz+l0F_G1%Dnz8pG+*^5gZ8|x=q{IuiW3JxMF&^8z+$%_v! zHXsA_1Hxg_Wp#m2kwtKqq#T}yARrjz0+xFq!0VbwSl(bF2WvB)Lk~Qlm6%~5_*Eb; z9Cy?qZcYY9v5JtHpE_^Ts)|<~oDzQtpa#&0jP(e4<(i}j%4Ebxz+A0~!34!GoSg&k zd&a++ckM4PIG`MmW005)lbaO`&$#*WOD3Z~+fLkc+r93)K6UcM?X)l5AL-lRJ-wr9G%zq9rLZZzk7E7YO6YzT?;9Nv^p+{yV~skxnz1HMuALF7APd!~5d* zg?GmFpmDQlSjs6g;5xp?cOeb$i+6DQdbM{BZ~wlizuJ^Tn2aI3h%rRL4g8KD9rbJI z+yD9g&m0PTLeA>p+^??qt1sVQ(FR1J9|NZiYP?W>ypQAGL)QIEF8iZzkAdsv6%z1| z6wb$OwEg&m@}l>k*N>8x2dv)Kp2#03e!whdEAj=#)K8Nmu1ehQ#x8#Bu>~+9t~QUZ z(4q17#ufR27(2V(Ug^L6?>60USQR>Q#%}+<(D5DhMf~3GJlC;NqOD$C87(?$KRyiG z9m$*_;aq2J1?CJ@>V~jU4tN)6!>YxKgi}wz$8mM$&iXi9<9@I)n-V?$@@tZd$~@8o z0l%|8YuAX@$<-A>0#^{O1GbLWwX0`$=lZ+KH)D4?U~hY-z40TgLUGO;Kes#e=N<8t zFV5wAis0faSN!|#)VI5wd8g*=NU{}%Oj?@|m;%S_YRL!w1#t$^)BLI z;auypv2(lA347}^?fW54z>(W$w3K6j2%3Tbk>VV7ciR_n=cFbmW-8wqAxCg63a$-f z6*fVNk8%4|hu`hXr7R-R+mE?#E4K$@-XSsbGK?Q=GkdxAoqIxRBO1X5-Cz3F_uRzU zRe&MaZ&!qLFcnitR7pQlL;{NZ@H`R8Y{!ewMXSn7&!Rz2{{o$|wbVE@XUt}(fb3~@^?wEH-%v20R2L=P8WhY7k=HM^az-(c! zJkEFIvkC{JHE=43)g7X_a@)Pz2RCAenNRc-RDVb2;@w@gSrO4 z-B2FaF;-xhKtt1pn-li)%m3oLtFomp7E@H1;7%;92wt==2y^s*#I40)oy$hQ19p!# zmRv1$>HSIJSq@p=Pi=MdvO+(&&quV?Txd^wB1BvA3 z@NP`x|B@yn?7>Z6g#Ph85hZw{I*d5J0-2>7pRwOQ&L{(<08+KVzVTgR6lp2y<%xU6KOrLJPr^}k+si=8NS76yZBZ@RG zmM-?Y-Xv2w#Evk7bqljAI&n63&s5%ydWCfT-}zs(-~HuU_pu23F<*V-zum0NHoN#q z9DVpKPijKvy-#8C=wok|IhPGCQ9qq5RU+nL!u!#uLOf^5GKs$mgTa9PMVr6pNsU>c zb6mSh5igj_vDB^8>hrZPe9E$Qow{(a^D1SAWtHe;{2TCRIpu_7oJe>M)hL9sQsMV( zjf~)jb^w*)w=TZa&OPUJXAnRC-CtZ^j+zny5+=fm`h?OH;0r^aW3Gm%Q2iaRF~JPY z#*#3ull9Jg8GBd_A<8pOIl--?ap;G?3mduPOmys#huX~PQ>{{MM^}x55^e(st?yR| z)LQANamYd~hvgTCE4BtfjSGWB=f7$5W_L$eU%JWu>$4wswPi*U#yl#Q2*Sr8?2nv! zV(X;a88LUrnIX`FXH0WH228X6_}A^;Iqc00j>F-E7_?_zc-egnh*x8Im?9-UgoRxn zwG81l>q|GfP8pr^7e9TDTd-JC;s?4|3?pBXxtOdw=$7eZ3;+-=Py~x4ghoyX8rZL2 zkrNHZ5tR1_PM_wnWrX{jaq{ufFCQk3hJ~`gqnpux2JVV^o-legB4_L2KPjURI%p(s zw!md`ca~6esi(`a>1quGs}y?jPs{QNHzO22aCZiLn)Ilc@$bI>QMY`t8|!=-JTPBZ ziL>I5fiVU5RSY$3luoEqd{Vn{LlY2BKFr{JTt*>BiQajn_5j3O4^akx6eb||Vdf_t z8j0{dJ8Q6*8g#!!n z$Idv__33wt5kk!LDSGs4RNu2s`=A@K$mbEF!FQRMlk!^Ya~Kp*w)a&dhlxAWfh>6# zJLnMX`lNlrTMJVzmGYgVv~<9Au@GTYVOBa+X;&j)25Wt?g@^%WtjfVr2ge*<1kq;8gN*m1k_yB#Zp;XOCq@uBAQSFY;Xgv+ zSq||wqkVYVF)^`d!O<8P&MjNHsXM6`a0+X;MGhPro5QKu`F~@SAaJ z&j33j>P|3obZd~D30hpK&B8IWLZm@x3Hi{d7@PpNKrk5thmt(fR5W{X5G+UhUafLi zia0_i!HJg(-%&p1Q>v`gspZ>TwuLgig!rB-coVMacr!_)q5p!91MPw{15?;29bb!hKX4w%^RY8dakxQ+o78_mx4#K?(8qAQ zu+1<84Cj9Q=@)$ET%j^?kp*sCf6JZjx>_&7;(+r)z_59U4-OlT$YI&XTMldES3dU% zhXz0)aCZ>oXjimSBN?O&n&bR_*$@BtdVc*L4pPNBH*vV zM&RU4c^XnUhjI~QTLmGkTKhWp~3iYlMiWNkpb|L0JkHo0#QPK zH;fsxUwYlS5d%mrwl^g8FHmSd0|8vZm-#e#2oeqR#+(J-4@9BR4|uJ?iI6#1vhnM{ z_XW)c-f+MJ`UGDM9Ix=1pr7Ed;C1|7j?=^?smmSGAYp!9}<06-Z5I~8*23Da_VdZ7aF_r&Y>9QcS$rHv&kj-}ngy|X% z&G>`AKPV!^tB$-J5Ic;5u?Ie2@o3Zp$>9C1V9sWsvf~{t%68DTD`ELeaQDP)O}0KcOrVq694hOCT5zZWTB$6Nx&*3E@1{J-`Ee zIJh_Ryi?jTE&ad}`hmYV7=`z#-$AsjATdVt^s|iNoT_g0BV)+8Mp#+Tqg7F#QAVW2A%KJQW-lr|L-nq21Wy5N ziSZ)0O9m`05#`OGquLHa+M@tZI)mrhzDLRuS0Oo(<@opTm+vg$fyg+|v%HHA-tIuH zrV})h=XhuM9{$Evcmxu_$&j3b%8K&12V5WO6{*okKdbHClF0yHd3~OQlyY~NIZP2K zL9NGM)M}AREWVLD$rd9QOUlnd-IatI0ZKtkq28hW;ao&e%8c4B9rYB?Mk`6Qk_GM` zAEzjAp?fJFcs}k$7|M&E3x=ZhX&m0#k=(V?yOnAHoQlFegz4Zlw=5nDE#5p?Fl(f>~VtXPK#Y{E5?9n|B)x3^>+h{ z(CW0h)~cX3qTgOc7AB@IAW01Y_o5yob`hZ}Ue3(V=}k+t;Ig`vc*F zZ)p!wy9+?lOdt@&+XzfTutMt-ICpryt?#3>4J3^uRV{jX)QIi-D%7j}c=2vjclgqT zy7DYq3yf6Yb5=MHE7Q?YfA=(D?oN3f!VKpc8eD=fiK0H}fc@McLYe`xLK4S!gse&c zb7I#BWkPj?a{JEv9`wY~=o|s?M<0H$OXML#WQCOfl!a>PNmt3`$!t8+2kaH8z38;V zB%Md#-+WLAqGSL$k6^_X1myEY&2)lv&1esvmud_{2M*?egAxhCds$hq5Qe1H5CzJ8 zbiNpbARs0z1_RGtDTy4yLXSw%-8izJem^rxO6Tm$!qzg_Qx^iO%+kw*3Px$~2gAlD}dmMF}j z=r*xl-7X#W4T3QYI(kzKEFp0oI#~u4(=UbtEKfvo-=hd`-j7oMGMS(u5G+RMs;NI8 zbi0I06-ux9N7X4T#|(&LWDy1VB<|CILj(llUZ(8uDD9b~c(n!G$Rs0fkVtBG$kDSH z9`dDjBFqS4!yJtMl}W*~VFkkQf?gZH6WSejo^q{#%0fc~fxIalFFJ4Zzw|jeWehYU zr5g^u5|qotqD;)hWTU6w=mY#{f|VA|j{)hjKV9v01x^8JSeY1Kv=8WkpOqyQZ3?<> z)Rp+({O&K;wHiw(2S|jWiit!UFf^fapD$hV-U2;3^_rt&XNkKIuZMpDI?qW`!lOV( z8IR9Jv1T&%f4raI;6zmqmV%ogQtpHM;x>q08p8q(FF8tMz;|Nh)@>+roh|{77%&Kk zg-hYk5>!7J5SSPQOTsZAE(Qh;g{2C@!yrR?R3el;9xzF)3@)Zp3^$v!RYj{ZI=O~L zs=-W;J_lmM!7vix05t2s{T(Oz1kkl#UGX>ff8Z0m!!TxGxF99K92tu+*x(I!ko;Pn zl36;a90R8&#{@ySOxieC$vHX$E7>!O@gkEA_oFb!RgvW< z9CSQRCvcyawY9)EzI3h+GCIWrrcL%77hgR0Y&XYVc>WjM@))=)_g(tiKl`&I1x*46 z;9VFI0)FeGQ1}D2R9^7a&)Yd?L>cwD7Z0^fo3?sh;0Ry02~qs^q<}hj4`p&40|^J3 zfV5;xAH;Wn+!IOe9nw~X2@^CA*&?WrS^z^3Mx9VUcD#a%0mUGk2){=?6vwZ@)H_Dj zvmadWRapxcc(7?lzRc7&7@SxUBPX3G?_T_%FT#BoDXt_bFgQ$C<%Ff#-do^Y(^rdr`oIL2go zy)jY30jCD9(Q$A#d?rYs4VMK&lN4qA=uuu)p&$qxBX3xweCJtU2<8^JGq41hf~69{ z4L3!&FF^+jWHyDZa8h28*DZ`JM)rW~dU*VxgJ-CN51HPTC)rveFr2E3ZfoS-V!v}l0 z9}u2@RFDc6Oj2tiH70Qya(?7-uUO3sLmHyXx9VMp2d|Ry2oaF!jAOJ~3K~x?AhW#oa9tZ<}4LBF6 zS#b|NTbYV5!Gigi?fVD{unG|RUZkZCZ>rEazz}Tw3_iq%e=q~UbF2tpP3nc$8_OUm z4uZouf**bcOc?wY$d3ms05XyP0xpEG#2{iBg99Q^0ZrgW5Ht6KdBLj;8e1d)D_B|J zO5l6cV5~lHZTv-m6?oRQ?K=YAUhFUdLInoU4sbX=3aAP_t$~OT0h81Nz$VW&ukX|o zV&i$*5;#7S5UmVeZ&(G%n?c*~ivXI@hG&%M@s9f*^{i7^TSE#omj;ZRX3h|99)AV_1t)m8$72$XJ|s*=&WO0FmhWMSj2i-iFc;Kc;jh;PUxuUsp*zn8 z!$`bs9d&+4oz;G$nb6+2fhC^5*kM9)nUA-j^?h#7Z8QINR*!h!1^*8x7)r*>*F2~b5GAMFeghD zI25%U9HuKPS5MdBy;vT7%!&m(LXc)f_)k2#OU&IiXYXz&zy%N-N#e&5^24>ariJnY zhv9m6Os5^0g*z*IciRwuZac1)ywII`_Qbn)rHs&zVEJ&wS0*2eB;Wl{a#h$_AH3zn z9HiZ_TvC~x5gTv;p%Wa7;h{6Zg7d)=g|KBFj>13mW1@kh>|Af`9t@*cI-;~J2hv!Uun`*9SCq| zX6tYb_|^7(`!eFD?_i21LDk!95cc@lppvB0ON%#nvrXP^13TYl~!;^AOK{rX_Z{qRX zvEK=cZEyE=i}m$+km+}V0Fyr&q_zmZ|=pHnYt3Sjm{eLHW4YrETS^QPz3IzZD?Jf zJ~EY}ec(VdKr{t@yF}rfr6_XDyf_ar(eQnMn2r_qL+iqMRA`-% zevZ`*4F%eXX?l0qsgwvDk2jPo!dO6T=;zVGP&fW!OrbCDf8;42Co~daA~9Y#5V6Pg zg6+gp7xA4=H4tzd!tx2LhpPtd z$R8C!%*4Vs1ERkE);m356sYnmZG6rWOb8E=(1ZH-_qJA6%4DnwfyIyk#z^unnRq!c z@uH6>%n4I($koib-~8zskMLl^|54j3pyI->0+lEALhVKWY)~K2kN9cOp5G|}50jUT zI(;8()rtC}ri*e;m>Y&rD-uzI-WW^WCBONTtLSdN<6fJsd~!s3kbgR0V~BdN+Q1m0 z^5h`sn6ab&1j(WcCs7NkP9pCYO69n#iD=$#&fKX55K}NI1_<59=zvZbU2QNKLzu+6 z5sHta4S|#xCg6Ca7+@b|xGn=&t@y2F;*KSruC>^?&R5U-q;n+n&Sb)8L-G*a0H=U6 z!X5C1n4yrMh@<8Dwzxr!M;!)=aBz@m()Px1Ik-K(A`CX}n>aR+s{?&G=Xe&q^imNG zTqp;#TLH#%PT zaMOA2Bh>-vU2#TY!mt9pPYzhh3`gm7IL0`^9 zM}A>US0#7&db}!Ei9jGx-gy?2anRyxPG+kp*@Ni?&z`4k}j_*K(&)d@1VgL!g1FiTviG9(zhJfpI zwkt@QkbyBQ|6!1^3NlC}XbGV{=t|w;NB5?KLG_mj;RJ)Pgvai&*?W`+I+%6cWSrE? z;so{T|N;jcMMOWG6m_6eV-?QD1yP9@5?`Zz|yR3!gg2%Lkt_!S7Pe z4JITE0%s~#LiY!mHr2Un&_7>(MEQvU~B z9rbb4PJf!IyZ3VPxT;u7}8x=*nyU&}WzK`-X+RCICI|O3 z7_0yg6cC8K62Kjna5yr)w-7tnFqnd)4obKq4^B96QhY3s?y1vMge?&;0v%0RSrkF#$X9fe9vlU>0P=hluF*X6VjLyzzH-RDPJj?al3RRaARjcf4*qAAX1BG+wuz z`5!Q$@DKjzX(u{|WLpVROF^W_8sEI=r}p>XUD~QmX?s^>wjkrrkCh#j#4C8fk%Qy& zpFFE|1EbLAadlhdc^9ea!r%5|v;8KT{_6b!47@CkT3vhU$%&qdqzIf+)VjyPK|Pz1-O_Gagu^@HbvOLE-q zaLssqcjY~AdNQw)T)uiN&W9lmkK0U-?M+z-%k|gf>e8(bGWJp zG{@ex!@REV%hq&I;o2j#V(@N=gH8Wj2QYDE4poYy^AaHWiyK1kmA0ghCA>cHA;_PD>EKX_I@4t+#N-RE#vMJD@p)C8wn zF`iYBvFpDd?e6W~b;q;W!u76dyXVz)w7xujXI=2#VZ5I2t55y;BhNGGU5UQMU%95C zfYq zssd7h3I5G~#0}tf;%yKGY*4w!Xl$Mj4u3f;_*g;FP$&0a@u3f=cLZhBI|(?5_JMEy zd!Ekuu4!=rt={d~#+@6`q!gf06YN?E7nLqH;oN^t{C0#&%?11rF~f(>Z_Ax%0u`^c zo%5`4bAi1#lYumTN8lcacAgs{USRkw1CaP(j0>=)lF{%sSlsv|H5O1+ktJN8B~-?q zjZISvJjjBQai6?>k3`C_s?cgIypu-+C1O{XbSh_Maqr4p3#n@^G zfd(P3jm2_HWHj9-pmoaR^p&ggdr4XVH2|t}qhthEqKI)2za-&=+1!Es6~p8*G^{&79a=KhCYzI@Af;6|>fFg+qJC~j$-y%~Mhfi7-d~=7&0O`cOo2$=E zg?X%*LCZ<;FaAu?aXw|VYC*ATETnm{YnJe5;VDyU%lJTsgWg5BnYx) z@)P@x3l5x2pl-0(2OtFCM~IU$30!sj=kikc307Y5wzuR?0&H3yr73ofU|tJ>Ms3Lj z1(=Gx+%wB4uv0yU@0YebEc&kyI{+m?k^nm1e&TUij-djNwZ#I)9oIk5INvpmRxtgW zjyY=4@xOcY&{LvJ!z2*v{dt_7wfI32X%aoiefu6~GCfdwS z-Z&3FR-x^erm1ZXLr#S5X(#<&u&wS|bVZDP)+|yrhPc>V~=@W*_22(G>gd-A?*8Y0|8?v)1b1-S4ju$bWmX%LMjQ8 z090+Jm3&+SmNjuw+zQ52@8sc!TTyd%Kj6Z)tqq=2b}Ck&b3y}oekwJxcHk>8ZF~r{ zwh~b7-EP}oOaYV&L_ar+e8{4!2@@E7bui`F+U#N#Qp=wVg_B_1IfFUzSk|L{BF9!A zz30(LbdEDYpzMqSWsO~5A&c_4Ct!DTmu6LrWfrAR&r;-$j_0@s6wZs}_mq-^F6ADD z^tSU)D*?iW2H88b%bzk+&(T~8{aBmX=tTbN^ulL8H@_>EzNH-Uo zIyt`4ZuTo~1zM-jdfTt;_c$6DeFV$L`9Rx%BuGHG9rAw=4#F&}zqZ-!K>RO{#c5Gm z*i0o0gt?(`kMX5AEI12U+Aa%$El&8dGC`Oqs!6e5eYDTB^{=HKdoT~j=1e~cCSgQg z(q?01=Q4+c-a%WcGkq*`g;p+(hsCK#kv>s(AK!jd{+v>-zWA_v5aswv3yn(SA>AYp-#q>(5+j=9w;tiLAMv zgi~5$rVrhi*Ntkd`4|bkG5fpltf!8^Of~bw1K<#iLiEl&Y*Pi@y{@5e4bhtIVW93E zB4vZEbsTJ3*EC3YU2a3)#y+5vby8^8Oxjl0G}d49yv*djp(!wM&y@lwB7Z%{vnoJ% zJ|k$)^o2ArI@^H&HYYj3s$V=U-;P9!g~rXO5pj|0zZAi`017Tl z>1Z9Q>X7RBJT!R1zTa3|bid$cv-qa#SMG#^3)c6{N!Rwf>H3~A(=ndObrUtS$vJ8H znF$?3!EU*&wes6jZM7My@ElBOGw$;DuXALx=yX?yAGGh9Y2si~y^!@bj zYD=}J|DATImFS$oJAX{x&2J^RD0Q}k9i6VSxaSH>Q33lhrAt+Mz`k)Q)8B0dKPh`XAa+4sP zfFF6-fyrkfh(I94N%@Mo{D3$TQ-bILJR-DT7d6Pe@7B-Vm1%9k+{Z?JY++VhkS~1U z^Rr!CrxuLy{Y?1H#dLo6kw>B!{SoP+%@hpr`OTh=S_;`Etkc_kJ@>seSi)b@q$mxhNK`G{giLuO`PSRuE;wr)&{YK$i!11*!@K z)HhrUpb5T=_sPP_r>#BL1rJBYR)u=-QEFGh&%x<1$3nUwkk{S#iO3alNG_@me)z^L z6Qa-iFWqAR`EPo0p5_493fTZc5MF$&Oa;_wH6$ahJ9*^(IaW0$nWQPo5YSFpZ#sYh zZau;V0FWu)pz1K_n~&D^gggXkBPfZQg%-rU;2br8>|olU!n4-#B@a%GG)8ZW3VOx9 z0}zNThd?3<{c8X@CI-Y@t|uB2iivY_;iXq)E@QEZ&@Vg$b+fg_E@2WOgg+g96a#2M zRGkuBi1OnCd444XQgRm8yfi}j2@#$LK!ZtxW3fey#o?y=2?pV)LJE0u+BNRy(IQzjB9{XR#gahCUK< z3$Gx1XBqF1^BR(wb2><>1I{lq19&6Y*y5E|0{V(gi0V*Db7&F~-U+qm+-!Pbo|tRS zAQCbHQQNxq^x^87M}reQXg{zq z{=xqSJgiR0J5N0^i@Zx@LRf5xf;oE|I=uwL!~@O$Txke?@PqdLtpjYKg^``0jP*{F zf>B4a5bRGzgtoK_v^(<%=L3y0-GcfYZP2$Wnn|-gH_BVc(UE%@n|2LE>VUCjcZBLV!Ns4iklm<#4Obc2}m(AOGQ7bB8fdJ4c}F9T5r6 zM6yGG%9%v3TXt~kZ~Q4xNeYV3#dz%&*GfIX)G98wv6N3G>A}GV$+J@YoeTHwSU6ki zEFgut9N^M6=uc$L5nC_%rp5`=CzOXDazJR2f60~pPZ6?ClPkIdqGmJxbv%c_vZa;h zvg&CooPqC!@G}DprWMajVYlK}U~HKP@Gk*b8w){HH#^uiR;7wP>*F%MhXxmsO&cJe zv;A!U(ry{hgQH3m!D#f&fO^A@tkFhC#bXw^anSyI=9cWfuZA5D(x!Fvmr%2P(KxsJ zrEPPkx;|`XcDDl{TUF$`k{8Swrq-bcE=}kebp4u0D8n?;PdkO{+4f%uvx@Rq5@rDn z`#?}zH;Z~L+K*mpJdBqGN^@R!{mp3uJ7f|*g@%mz*CS1X-Ea%(xZ-O3j!(tm9sgP# zzh#k#2ERo50A~Yyu>{!nUM=46=h2{xj~xe+}wsm>@g|@5!2cp#h!#FI=@E-u3JhZu|>EizA?O zm9!)oVR3yjx#Hgh;%6cUhiCWiXN%hU*}3}WUF9RMpR|gc7W!BAtwWh2KuTX^p1gPm zQ=nXI{_S}!>9|7dYIoJBp3wJFsb~l_H2ki4;wqpKjvK_cpc~IAP=po)bnQ2 zkN;QKRQOtP&ie&9IuLe93q%wRR^I5Rw`FNzilHhSjM};V|1t2)&!lTN=7emJX5N?$ zne;3JQ;znYg=J!_a9XT(15z+(S~+_DuXso z>v;xEUb{o>s6CL>+SL;MIPldDIqtw#&+(I4G2OMZ?eE68ev_sen67~aM9i6kR8K5- zPfbt_sB38gNdniUHqLGcJcoTKB3ur-4SCk=-aPxOwbi!Ijabn->~!FigKmwJpOd!l zUWog#bdP8o=G+$}<*hQ(rQL^~s|miedRLig)4hN8z22}po_6N^QTVz4f3Ed`kGLSz z-o`D>uz7?nUGveK!u7(_$j1Nx33N$BK~&ZF3R4hr>s0;UvmIER`hCVh-#rXo@2{Wz z^$ul_O$iZuha#&MreE9Q;&i^9OskSYsI>+r-ySw-5l15ABj zcoMkGDin;X&cTfDmCqOGR0~k#jWL0~=@Zu$H<%iL#!&DsZw9XrcwYZ_fJzbY;0Qcr z2jiaz+u~jX>~NiVAGFnT*s_p2VPq`|`z1*k03HEnc!&hw8YgoovdEl3WJR_ZPiQQ3 z7J;jc(^fg3+^^e)uNzWYZCk&nZTc%FX3m$qg=Vmd9Spc*z8~%>j5L|lxw%AsfL9?^ zr@rI792jsZKPv%HG4w?-z~@HjyJwWWD#;7~tKZ4G&yjysTnib4EPWtSze*LLfIPOI z0p(glDDshSLfb&Fw3YkM43g3Rg!}4K0Yfugyek(@{O-I6%YVTjwE(~94+BIYSZvXi z=U<$j06ucj-Sg&(OWRHqV`$-4U-VtpP`e6u z83O~35zM_d zzyndpinnvhbG{dYjn5fZ;q`&GxzB*og2+Z}XTC`TYOp!>x%q%J2uv@?EcH(&Wc!N9 zv0)dWm46{LtvnEW1>a$>042b@1leC27%C}q{fblGlCUn}T@vjEAZU+W2kA)gX(pM8 z1;wQVniq$-EL>G4?y<)oONbi?uyts28r`@c`_SzCytJ~q-XFW=(-9}R=P;Q#_sk)o z2`xN*1hCMg+q`(I1eOjPq)GrM12dqJV)D59dZFQ>d}YK3$~|q@5ZZ<}Lu=bLA)|yp zq4Gc)eWx##n!%x4OlRewrd^pycCGWyI5mKi&n7&-B+3ZW)X>lWjNMTZ9^+`d?zr&)LerA!}lCQxo_l*Sb6%%=|4R^@=IX9VTb`j*rKk3c+nVy0PO7jRYSx( zrjix5_Eh>VU`5(|@eJ3e%PM}F{54UNgci4mF!Wk88!uuA(nO;rw7E4>E4b&-D6xRx z#Iqnl&8o=Byjv9aIpNr&lM;G%B&)H-dnZPrcPI(Llqf2uarK^-RUa#DYD)U*v%|59 zv9+`KlU-P^|F$?O5UCkXeDfRDSrFb)f|xGQf$hz^Lvh%pe2h1Lw>exB`J&|o zIqjr3rxrguz#4*GbH3?~i1oi=qGrA-5FsmCCL@gpfns-kGN94jc6n7IU>I`}h_kP3 zcYenlKpm6-g;l^v(*NYfy+w}YR28@6`g_VQY=6Yqd!}d0RX^NVIHWiga^UYU?VzMf!wu$Mg|$9T0ZjV zqq#i`uh&OH1EE8_(Z@&PJ^F^Gx=WO3@XoLO<9*pr_x)M0|Ih%o$#}&kc-kU?y5~u2 zpxye(+@aYm4r8f)H6oGnY@d&v$u6Ny-l0!C89We72vl74Ubc=ML<$BKzyvC2He0%9H9Y^hW_ z0kU<|%nm-ZtPkFX`v{do)5~Hj$L^xtrSJMq2p!G9hQ?diK6nxM6%ITQFx#m`=lycb z$-3VXrzkqPQ!Il2&J6I7O+*+bf;?(zzJ#s0e}vETsw|0xs$a|jTe19g>`m9(R{lQR zi556i?wa6#EIWALMZ531OA5LJVjjf8{K6^OZ|UyC?cFvzxqho2^se?HqO%ZclA@X2B_O za5UaY;EFM}*kqz&!!u0?BoxqrTt8&9+UXTLWVtwV=ze3H@O>x~?=jx3+Se8v1Xr(5 z=WZ}Jqj&MtsxH5*|M!QIVpG*mjceiX6o2FXsdV(@lgXdT38`Z8)sc36+uqB$-@mWE zb12~_enTX4p&4j6MDo&po^Km1Aja?O;F;G9(jQEvwPdw0^hD`K`|_9l>bdt6wz-J^j^p1tN|9-hp+G z2&&jR*o+^K9Z8WTk?rL&9esbz!?=FewRV|$kMW|IjP2Nn@_OJ#_&HMqaNfb$)AhXu zn!g#7jYoyH8=c6FFn&*YM7jBx2KR<};f#Pl?+{wH>!x_`(|x8xEz^LuX3yIhM+1VN z?z89mz8_0ru0iaDw}-+v^&k`I#*Qm(+6Y#Y5V%dEamO7qt!kMw-kh2dKmf%!NBrEq)K@bLVSk{q8= zfu4^YS!mP32$cOi&UQ}CTthTpV9A9kTNr^!BQV_oa2?m&GueH!F#QW7u;7|okbxhY a5%@p)Ewq6BVk)5k0000EvxYYiAUFhfLU4C?cX!#iySoS1;I?shcMUGV-2-ggf;%tIhw}^0hnZP5 zwW`+CRM$-R-B+(jB?U<&cszIj0DvSdC8qK@)_%60uP~pzD2{>b=K$v@rR@R$pcwtv zAj$+wtpETLfV7yfnkVoa1e;ATRR3Y~kmx+cZ2>3!^}CQ5niz(1pfttP>WaTYz?sDr z)J9nr^uyPxChq&~? zapfI1@n_%0z-8BwiBQW>-kv^Puh}}K%AgmR$zexB$m`Aq*YC1@t46RK;%*R9+On|M z7dF#l!~eM6VwY6~>|Wz?Je&f_%K)(XSnK-@gzLVTMf<70<dq$*8XU6*lNnuZVTE;LEjHHzWFB z3@S(myDv3qBQ_yl(SMiRE9WhRwBG-st5UYh7ee!#_=X9;hr?vuGoFkV1Tn5*7G}hvYfScS%v+qNA4)4OHI=K9Yewo*tfRCCylyCrqzcyNN{i(R;$&f zO58<2v~SCPDGTqVg^Go)-%!2|H>wI!-}6M>@vQdi7=O6S`v}YLa2`nVpO*d()GH)+ z^I>C0Mgd8~v8Mr-5d<7%=2S}GuT)&OFGNj!_KX_7?-{LTaY#uS@$XUQsmk7BEXw8*o1E>8x`C0qfJ0F(E{TM{99e^*Xzx7a1Wlli-ew7912#o z4oS7MFzZf^e?)mf+nQgXa<}!fI$IW|6$3ArVRkLa`2VHl>v3$pw~aJ={rvuX-E40-HZdcEx(HgTZH3+8f(?HxuTqJe zM6zIxbKAG^_IzD)iu;hjWp!^?+uglo!+qV3#cqx5>D(cJR+7L;Z1yH96|JNa=86Xj zvI^UagVgI^a|7R@)3NeH8ca`$7o&{(U-s{99b1a6!r@G|U-8K#X(}#h5(jrYSw|UJNTDMsC1+`|ahn!9~Yu%{LOAPWS59 zW5s|(&Mi;TDc(yytChO^D(%K$A^!m+PN_!qi}UuOi)gli1F>bgmU z8NgpjVm~qjEV=|;`}QH3p97l#A8+I(_H*|qi?aT2rv?)?wcQlGuVBVv#aw{~vk9#B zgG?LKvz7YmgRC_e=tGhY;T?>f*EJf3nLF8JEd)#H&& zQ7fOtfqQ7T+0p#ANMTWGJvc4!r$S}tJlU(b%Ai@y-JDKtv^lilN6$haUaTviM0{hU zdAxk&6;l)75I^1G`b#Qa?3@1R5OPwBzCtyVCqF6+3ro~BjMUrnUDEd3#pi+h1tla8 z!qLl%r|%ZhHsEQ(z;vfC=z2-lVXREK&=!?WyFrYh_tn|!c2+W$_om8hB6T<)jsIk+ z+NLl3^x>+&^_4VW!EbGSyYV+IB5-Z9 z1`K$zKHg+;>E}^(!u)du=bO1kn}10UWWrRXJ0doMXP;LP+fNrDELLw!O`))xVaAiTADfXt1 zBIOum7@i~Y+fIrBzV&}C?idIInj6>w;Q zIgLOfyL9p&9oURbG;G={fwo zS`1_gz#-q4&!f_IB2Ib}QO!tv#jHD2i7J$vJFzqi4Bz6ABH~UKvT!RWZL^^@m(`kV z88(l?yTh{&^{}|Udwn-oodUzC6KucPG3K_cZ-EDeLTb9w`+ipoLxtt&IJ_Ti(FHZC zUFUU0ip6HLH0kftcfL|zD0L6^@Akes({I9gzupmF0=FAn{ae*qC-$CDM@&eOR)@PX zR(8SP4%AaFg^+-@x1BH_d$VuHV>ywM$Z~(qF#Afs(ky$;QI+OOyE#cSF8){ zegy361wfeZALhwS35HAzJV6LNkzCqub#W(q(XQ8HN*Nd-WZftj_Gay6iU+I-L$76U zPoznEPb{gFN-{<+j3xd)(^tvM=BhUOQNG++TU5SAqCRpN#LW*Srycg@fi#B)_i4%CX%-U_=DcL{fu3?1z z1B1Xhh>*koa@NRVJowdWe)zb0R_M_ikyv1(kJo;KD=Fkx(rO1%L`X;}q#rs3bvUF| zN7Q?v;$G`|k;dsD_zqXsbZgBQ%roWE?;$bOP@GspQ!?3dPUf*FGp5}lcimiQGG2Yn zS|H4! zU-K?4AbfjtsCCP`vP!pgYC#_W4`O7w7W{ZpM2GVXYk_dX-TrikY#L~u@_qp#6b0X! zy58>BVZ;W%jf+-ZZTVbgSjPqhcTHlQ`&@P}t9fO!_ZepLc{QX+=KNJ>hM(DHLbOyQ z{=VfEU2de_9{cVtv@dbY8;$^$jA#6{Y<`iOmZN^n0`jmP@lr>HTuQ%O%M-5)sb{ zyt}~8fkD*eol+AmSLZ=6WEN{hX|Xrr4L+ z>u^+n_Q{8Y<>pMRp|yXjns4qDJLOC$bH?wSV97~f{J^Xc;HqDD;;-t$9x?Sl?HatX;^$0zjN+A>6Is`DawdGH)277E?F z1}UEGz{*(GmHFnDdKaqfxOG7611-d%JcgarFk#^5Q<~R}krNsL^R>!cNEIyLnm|xi z=(F70pUDNil<294Y=%dF8l@FTR^}s>6ii=AZpDwu0GQm;jzbue`ut&(7{jOUj+JwJ z<=f>Lp0cLDW-cW#(nGDchm0saHt~{NSTkD_VzB6u*hYJfe1Ev9$tlegT*eyXBIwXn z)bblCz@kFaz;6A#lta6?I#+*cQ3Cg+kGopYFzi=U3zl4)ZI%2v7)4+2k)L1qb&FN) z+FznUwLjurHi61tLBdKP1VZO%wuM&{QBSQaA}=2&rI{AT=Sa=I)WD%Sb-gqSj5}BQ z1KChrF@EAY5dYmcGs0EfK>R8IDG1-#1%+CPdg_$kWXNZ+$+bH&iq7XRT?d38?*%wa`G;JGbF3bA|&A@Lb z7Y({Jkjr7&8s0QzB+0iPW zGg(PNxM@`(qOmLnb69%{`aySIutB%JG#QxJ|A5cY~@bUt$Y$p|79xZOUPSe^!)J$lbO>UNKflul5;G-p5(<-R{c z1;nwqDIA_bOyPXJ>u7FAK$+}tvWK!Ta2!R*%|;sG4-k;_)?WXOB9|CiT|U z{LW0xl5~IbUs9^gSZGn(*LoL z31_S4qP^}_4WDT*v3P`?(0R^k?qOy?HUd_6sW#=$_^*M&Op*Ns82GamL(v2I`9|x; z+k^y=HxsafXnFsm#o9KKqIwNO{JtCs>FcTEj*21Y)ib@&dB;Ptmul%~340}d!}Of? z_P9GgT&Z?eOA5TR-%cWjt(UwiNpVFCt1CX6Jxxd)5jldnKfUbX^xThg&I!Y}^O`HI zuFQ*crjKjtgl}Dr+Z!9U86Qt%R$T%NNLXjdE5F?uJeLqXlz^V07-i5HQssxS73?O9 zbK;5bVCzUZ?Q-E7gd*W?o(3fU4iWe%&upNm6ftIUa5; zt~p)$9k;l3D3t_QgerZ?B+!SkvLzCAe18*Z$qh{8zf|`*?uU6xxsJMtK7Q`rr%}$c z8JkfewP&7)Oe+bw=K3A2?-Y{k2B5`6YUqEtdnd$t)nR9Zeom{|e%jD1RaapEs_WU3 ztfbwRA`9a^@f4SPj;V|iFKOw&DeDLnA9?u=y6ms*3L+$wMz{LObB%8|c~ws4v?~2j zsrV3QM5T8T)$kXXVt7~F4Oz6Red->~!W7_oxPaO^TZrYHmSfYDgK z3f?)eqRNlkU3=RPm!2ZeFI|_I_*>CLaid4?1Gx@q(9vnBS5HmeN3sX7nUA+&*iv{g zki@r`^0I1MbTKW9Wcn8YXWCxi>W6bsc#f}di>0S#&kX^?UWnsMMqdv3doZtBu$6vR zvppW%!g9T-PFi?j=_%3WGLOYOX*+QJY}~^tm>_{K`o_bGFF~(c&%cMyKy&W#vi~~x z@_MuM#t&l=$JanE>pSP$xq{CJ2u1MMbg92;a+<7xp5`{PwKgGT0v7btJtj0AH@8#! zDZ~C|1e-m<>`W=z)2(W${?URoJ95@ugQrvera?=UQi$?Mv2tO=5szXi$1f!O-3CkL zd>Gy(rRwLkF0W9$`DL)^*3BXI8j0l$iSc%0;~tOk-aYW0O9uGvD+cQ%Bya6ZV4|Ppw|R-GW(d@hg41*r*3JIjpa}r~0*ymz*PIwT#ArI_Vtd zlnyEu@zQ<%@Vsmlc(G2bFQ>g`T5USJ5!Op_TZV;o>UZq&BHU!AfJIhW8kuo8EfG71 zk?=<~z|R>OxD6WH`uTSD^A(|T%8mqVdGSkj;cQkLWmEdhQ(fkoK1GQY7aZ_#c#~zV`^^E?#uzH zl)<>1j6WRR;jSQ2`yN(Ip76psNlzDrlw0k^xE2!KpRE%AyNsZG}2?p;h>wt_@tY1DCV@aaO(n$fY1N6^C{#*tyC<;mI_7kl3y!Lu> zI<0Y*$#)`8e;l0I3p~VfyeJH~D{zh+y4jcKx?i2;;<$&MP$O86qph4Te@sisMe-QU zVY7HIDDyNsBuVCYOFJ)|p1;8*6~}+ON?YD0UG1Y+DAW{|Ljs!pZg6cxaP*zqaB2*Y*Q^*!v=Qyw)CKJ6BdP z-F4eRz~>p*^?0(*^EGo6eLB9if2KvAw*BoQyc&5A=(7xS^T@fq-1}g95j?~Jz@eM( z1<@Ov68HMJUmD+LKR#(X&u?F*-VA5cUE1jWEkJSw2;S}5Xgp|cKMRE+UoZx|JV4P% zfMrUN&-byHH|fHOS=2Jw?QFf6>hi`SN8*xo-@R&|yf4)fKK?R(B)TXFN|#vXG{WKimhjv>tYE}ME}EV*ch4NRwA24<17nxm@m z)J(I0XGG^QUY}TeJu`b4o!_5uo$nTLujgc+VD@QiCzFGq=4~DOGTJRCJJ+sQ6^O{O zb2%k4Iqi(+FV~5EjS1|Pdbi*g##9u!r8_z3%~p1Tt|y2;lv3$l6u6fV-?D1-Dr@&G z+g4EopY+0zPaO1iem5?LC_pG$1iUZ0LYUua40V|B<4N9 zfSPZ@ZDjkv9NttAeBz4TQl}Dyxub-YT>;}#s$Drfpb0UBMX&u*QKta8h&1NP^93Fc8U1I0~? z4fY~*B9+so?q-L0v5jWhP?p2+{%$m@Ye)RVU?lWhqs7AYb^o?BLTgx(OTT^!M=Eh% zI1XRPOTeR1P}j3{k2A|6tM2tKTGVsgF{o154{5x5+S%Dzom`(P%T4EblhMEEX|eV7 zq|&l4CFd7~ZZjIR%svu6CvK|%_-A1(E2liy()=oiXS2#3y#e!YAMV8Ml1-&4m0ZIe zZwL;ahJf50nL-duBC8^IPehR`FlQ+(uK8h+Gn2)r9tppV4;8_Z%`8ci5&9lEr8ixj zp?il;yUjFXGM!zs!`-@egWVj^($L&e=#;}}+R<2O8EoZ3JgyN^+dazAetJDmB|?`&h(|Wd z!)8NKBIv>}C~!Z{$a>lH>uSe=d<4(Q{7HEaZzWD z69jX0U9Go^4|Qx;+Ez>S-V@+%+{g<2R+_xBocwr@yc#SXYQz}|H;Bu!!;U>Kg2j0f z8jI8?4jL4|ZSp!CJ6kEBLMT~mgu#~iZMpS7>KEApE;WA;_jzqDMEq()o87uo|JVjj z_WBP{pa%fh%vu*_+T1W57vft;AR&Nl4Cf|m7D6vW*c%UndlEFD60B+jn7d1Q1HZRw zE7XK}AJ=nRXQs@w_6|c+q!Ypp`=rg_>y-*J&)q@{Uyo@69Za6{MPu{#F z9*^SLQjxIBJ;}@H8(m+|dxsE1JDIBYts_C>XJ|-Y^10b-y9ig!_Jk?-=Y|R_M~c@hdm+f*SV48<=Pizo2FzNpjtF!XokahhDtAB7We)KeJ(SXXDJ3$S+{o zC99WZH!4osx3sO4WMjce}49Acy{tmp>P@h)R6m((E6mbYd z!jT=Vg6P`2@x_ePU#fqdT}kKnRn8szm^92Ld6dDhKuTsGAc5A6G&l7DHX2%IH0Lih{VSW6B%hb>y zgFhgjZh1&Uk?8zHbyvdyE^lgnG-aF}Ndg`F_k*x{Yx_qn0<>5%QyFXzNeu8eRC*WA!sY< zZkd*T<;_Lx=3Lh7FIHmjdcfl2Sgf%p6%B10j&TsDLyk2lm3rQ$wDCHy;C}54?F%Dx zLBm=zt^F>*O(+>q_udIB=jN;O?_n!?Y@=O)On6cXE9CKy?MxGOVUsVIGgd^w*Z)!>})cGbyiM94<3Sub)DHDU6Z=u<*_7MlK4sc-I9COS8H z71sX6>@!HHoakih|K6JPba;LBA5AgiCGtub1QVXBsE}R_Z%M;*pKXjC)r&SQRcDw@ zu69N#8ROD5esDuEj>1YhREUhrq`g*EJ#_O86?_GM>`ljVo}#8vdSChFdQ@D4xL3x~ z4gC34kuU=|szcJaY3Ewh%qW&~kwI6hY1d~HwP^_`n>=|+>;HD_&-3ixE$Lws%DV3F z!_6<`7kjRcE{|20Iu~wcEr1*dT1s1VK1vl5QuKBx0{?<>Rc9EIAMC}SJL&RL?*$%a zbJ&#K%=s6~$Vz2ZQn*tvQbJwo;lo0%HYMzhWo~1clWat|U>$q*K*y-(5KC;ZVj7DZ zoc0L`n2-FDn*FssZ$Za&+L$H^rs^j`M?Bez8a2WSCz5&G2-JpUl<>}U%16$yC}QKeWm2Wdi`|0uT-#b=~PYI^Qp=Ant_dC`&Y-><=QGP z;w$Tje98^&fYb&0+WT`Su`VwI5wAou=O23F+EaFKn-^+cuado<;zh#T{MP?t0eti8 zFAEd793PHZw=d=b&nKwt4p!`@jG^PSU8i1$B#O}E`G3QAJp3xP!+eW9A(kW#NX}$K zQE#4SdvacD)qtZDrD~`C+I=+7*kca`F~ql2Jd#6Li_ov%AfNJApVy785&_9q?{ZqV zZADGi%}uAzBM_5!{LJ9((fKr@)WG}C*I@6H1@w6OZ)=n`PX_Y2W_E%qnlGyrOC2{s zl=6!%H8f|qwpwjI8p=#O1VUJur(AtMI6ec+2Zu4b#T$3! zZn7SXbhlaDLfDdO#Y#9#w;7ZsJH?9CBo0Om*{$!QFqwqCZG`LKWx@6hx$5bz*US^S zEL?fN5tTy=bz&aHyFToAepPjC5cqE?P)P?|2H%jc{m}));xUphGEh3s2M+AVTE}*L z>}CUQ?Ovhj~9IW z1THrHhssG%eGr99s-lfR0NQINR!yg&aDoSdTwq{L=%PNZPxTGaf^Eo-)1Nq{H`A38hv zQ>qn-tU2YlU=*H?*6)%<%fK^@arH>f)Lfv+_c56S{#9zw5EtY!bG$M>&1aUJU9rUC zi~d|egdLa@a6ny>G-N$Uf?o{pa$C!L2cpag7+UM=Gg=e8-RU>y8D^8wC*X|C^mng8 z-XW&yQ|=3B^^Sd&t5&`A<(duTtTSNL?(`4g*{e!XqzIt?%$;(Zdva+X_X`!q)ez#l z)lH@qA`1?}0H*DpWvhh7USg8sQVJJ)|4LWmlccjc{L(AXyNvY^U=fYP=KK^*xLLgk z_$&j100(`xq3@3-#mrFe?0%)KbAOrC7mb?wNT2|?o{i{FBJ*z6{=--GdaxJqwU0qM z`#M<_h!fae1t+46@5FbjIBp9@EE-nN=~1rf`_Ay9py4t%=OV^wZs~X@TSCuoPJDhpsK-#~a!o@qrs5nV605)J+x738?0jz5Wj2wN^U$~&__Jh8saZ^pB~_hs>X<(1F&a718d z#uf^jy={~k-=j{7y>^B|#pB}aN^@-FT@#EG?@1AJl(iCethqj#7H{e3@OAM9<}>O6cPWHAL{2N z7nxDr6#{Pzqt+=CT&u&fP8^PZ-4s>r`U5FJnFaoVLqG#}$v;z&pB1TC#S3}gDNk4Z zSbVzpu_fM^YnZ*1_AJrgz?Yj(hO2X5zikv4Y~ zUWMVSFt=V0-&aXL2L2Da)dG;XMPg0RGYmjTE*}^+)c#XJOkg6$bnR@1r+8+LsT=Y) zdc1OXi2{f#nNFh=FYxjdlkD5&%ZvXAOke2E!uRQGTT4J66Qo56deXWu(WLbx7Woo1 zO#$=FKXhP&Z!w!PEP+r^=}PEfwmm@-?w1`E3PcF6=k#9#f3Cxif(0*f z@XH=H?gOr~1YgB(fL7pH_sLO2kz7Woso9lgE~>0{PpJZtRt@zs>X! zxFdvK>3TkU)f`%eUkMkYum<~;K$xs|xPD>Taia4PMzEO7S>x7hiIW3PtYD*$cgtN< zde6|YDAc2K6pHk!V7q61aIh%MeJk3_T;*k%=Dcqf%asv(O(6jyIu*QQgrI~OqXb!M zw*NEo@vFKbEKG}=#1Ej#V_O^n^CZ`d45(rx$E#v|k=1s5wZ$YY!`X_A#Hyxo0M;5N zr_u~mFdT6~!?^3vVR_7Q*ZhaWKBBzEY{GolPLhW6Xr?E&>voNoW}cA+*RNuHav=#C z=X|eVVEg5Wl{HI5&paKPh7)DE9IY3gYg+A&qA>2w+oQFs)QV^l8Ii*mH~3u0RfOV0 zr`=q^J}yH;TdAAVD3SZtRxKAWSwfe9JV%`cahE@SP`R*<=v|)<78w=~d-WbBFrj%{ zh_<=bG*}N57qg!42*o8zIA*5wnCtNtH}f|yXQm{sZFsSM5}MF!bPs8MYxWReyWrR2 zF54SK!)NLWDJOX9>Fv<+&&%;{JfKTJU$DT234;0tWo)<&oJyHjbLucxiUpW8Dgf{o z`u70r%Q%?-u9EsNQ{2A#wP|ON6#&h+>aYuCv{tga4(0rhmbJS2*Pf=JxG;O=U-AYA z+e6WQRt>ryOV&;k%og~+bxi#epZ9{oO}QsA8X}&zyLH5woSmUhfU7zO!MY3MK z!`sTq>4Q2&HKSTVwH*^T6ZeSa4u&;WI*)KBJi0vXvT5Lzyh;A44d;aQ`r*I?E6|bO zfY^Y@uE^ePGHBBZ<25+K|GUFcTqA$>qF^}8!t&widVi;7R4|227Wv=%HO`v&o2tzj z;x%E~HAz7%E866xh;$EutG3spIRsmc`!_4DnddLvqn1$Tg|(xlqC37cgzzqML9niyTrNi-BX=#kgKZsfSjMNk>kBW{| zgsmvoOhr}PJWY!269rw>JGPo)RUQK5xG$|PVNqljc3HDgZ!F_bVs5R1nCNTsJY>C! zS-5qM*6wMnteQWwG)k(+cIfASAE2jc08$!5WsQwgfo5-1q34};bN1hNw_P5ht8G%O zw5+W7e^G~fdxNaJyk1&-?s7HLVYhFv*yl*rZxm45gcSyoFEAg#v*leK>frX;Ui2H9 zgFy5zvZx3|=|H-Cf!i#Psam+55^EQD1bmj#PLSOGHzX-kfc7<(8=TmdELKNSzoI|R zm!4PeFnagLSfZJy$>9Y6%LtaV9QRmuMOTp85}1j~9-|-~?wpv8N-{Zhq<4o{nQ@%xs&Mq)@N#a7Y`0btW1Fle*!i>_@%MbjLJ4B*; z(T%%(L0QMF8A~Dfyhv;-Ow87=Y38U=>?ge*m~HpI>g2GZ0Qp1UK*F^%auy6X#!3@Y z$1nAuILlpJ{Lr_{E%G+)YVtQK#fI+kL!A~u;|Eqa4q#<_@GC|2a;din&qZ;^XdkPp zEcAk=e`hD>FO^|A_HTyl9ePM`Z|cPI_`X}_Fq|$H(z$9|CX)S0)4epT7+oHf z^Q;Ajdj%{Wf{#C+>UZ6?Ww5DH!#1n6A`|CtkdcNTnPk;%{Jh;7J+^!=O`vY!tXV?w zbG>(&TZ{u9%dwI8&iDsjauI6$1`IyzD##a9WfvcV*5F*ox1CO`@>B8EJko=Dl_qcx zG!{h52EFf&3Wn1ttjm3r+do=|<+-8X4|=!FHui+UQUhvs0~!STtpS@a5!y#gN%u>! zQDtbyh`y9NhBr-{(W!KtDc{Vs7tC@inq#Zk5Up?bKYS(x<=+N}<%MG0jz!h^nOBtA zg*z==mwrPINBK58KkK@+GVqFDg$8b&WgEI0{dpPt=$sY9kn8&Nd?PA$kbm(muC++{ zr7No&1ye9;TpvXfZVnOHDG@e^{(Sg1@%0|lY$mmLQ(2E=iNp2&=&642P4v&0)^J@@ zLFCSF6ys8B38h+Q&#OY5hv810C5()+lRpd{56JV6g6K^IwdN+zVftk8<@2aCA_PIB zjRm_g*zB^7KpsSdQ4+UZiQZ1_l*7RNsOTwngc()FE*&<%I&}A-Z)b-m2!TDA3SqxN zQRJnHMDpq1X788@V>Jv7Wz4;|^08RHDp(lL^6H;&qfpPT8p)#6rTj!TSMICXd7$t$ z=aIwMO(!l#Ajr;ua$)R{ff@N#!D%kbMHqXWRn55X_fa^#dLSgXdqiB@xE6s&T*ZY)WbxZjJY(a1Lz`aBmT`ZNx5^9FkKa1%_%973<WOlC zj=zEcw3^4#0kqLY)e^>yq=qA%D?fr={a)t_rjb=RG{(1}5vyJ4mbJilD=xMezb=fL z7G0c-PV_FJX_72!L^0bz391HlL6FM4PnY28UWehNoAOED44u_7jS>jor!%BxRMu+*1%&XmOUXA=dy^zeeaHYCx!T0H=Bk(#N1`AuOav@3mzrymmq8ibL1a}ozb%A^Gz!Z9HJZ4! z|MdFE`3LQ1Wysn;fQNCODjwp^^g?{DOoYZU(WScey? zkWnT~*VY-q_xyl@1CCMr4oi6CWShMH`su1^>fIUCikUOLhXt&=70n6L( zmd48>Apel_(0M0ilmIPaGg6&C(BG~}jX<=4ucZ$-sNb$DFV)&EXF{IGG--N&2eIA)rZ1tYI^ckT8DFK_A^VQ!2Dd-61D8tA>J-=T$z5P0acJT6#C~Bxf)Nwv@FjW7zW}&gA z=vdL+ENE=sd_hqeQ{`mWG%Z$BB_a$a_&l&ihUC}B|3)*bH|}J?N{+g{E3CO+z(BQh zD@^;y2aGMCqgRPWOSKE&>(0?uGlJ+afZ1uB?Z!#S9K0Fy_ME=HhjpjGBP9%YD4CkV zbZ&nl+~JB_ZD<@fh(Hx^2qq;x?7iz@z`9Uwm>QuTdW3KdfJ70%y$Ohk zrqsh%;B&e6W$$dMw@UWyqKT#ErKKG(o#KIK>5DRga)RAXSYAX&Y!y2SD#a_nJ7g0w z;o^QroLNcZ*Y)5h7VwSu!#01%&$qN9KS|;vT557F@@{5$rO;S%@wGHwZC+&4i3wKD z(a@bxcbg`u56q&zx)6S{Oh7swo8zxy7N?q;C{5ef6kxjH{)3++qZti*F z6NzqSd|tw8=LS83zaRn`|Nbrz#SktQ%ayZ?BgV9y=d|2>x+{8P9H*S8@xb@Srp=<8 zXW+KIW)Ewv4q+4F!n$Jp!bt6JLPD1mtSLRDb2PXe*R9oFDPJQRlo=$v=RXkdT`)(G zu}Lpc94_$!NcWgPU&LKCvn0XWB1J=`5~R7+5XG*&BM(+_8y<6rHKSa(*qHg4wjSg; zEDO@La~$1OtmU1|fun>jpSCJYgDY)ujj-ZkMp|Nn{vE2@Sn>5h>sVDI$2VEG6wTUk zK1GGB3VXA~{H_LHNsXU-k6q&h03}_p40RM8`7)(%$RJo zCF9Z0WXoev-VfJ$Tkq5Bd*__doNq26Lbig0)5^<+;&k?fncZ%)#uV0eKRqVlmj1NH zcKNMW>~bqJ{3jl#I~7{StvTfG{5X70Us>wocUYYnUr28kk9klknIXZB}~$UMrco8;rY z>{WZD2jkyi(t7s=_d-6I&=>e#dma`l${$8u=M0=^?Qh=9sLsj#$>f6I=X^&}-=9{c z1dYh4hgu`3>x6Z17%yF{b~m15!E9V~ZBN@_Lr8pCTbD&CfclKE^ZalSnJVgt8TNa8 zV1}c5Ky!SE|JGY=ir0;F(&Mlj>D*mhn{2-uE!Q0iMW&)C0dDpp%G!AS3DtY(ec2?NQeR=0oLt-lu# z0jCi?xqsoSQgxVDab~|t2{>xC9fT+fIQX=d(3V;0f_TcpoG04=j;r-CI`9)DJbGvE zd%%F{+rr#(fsB_UoqxX}n~r>N>5imVW!QxL&;`sSt1e=YgLIXT)D1c|O@VR+X9{M5 z*as5HdjRAe02V_atKvCWYiGxE`Qw=qhJ(wTiT-fdIL9m=gJipEi3ejD2fjx=RDj|j z$#sO<7=BAul|A4(>{ONEvcc%eanlE8RQDLzw9Bt*ZLUEKXDsB%_r7GuJ86+$m_rev zl6$@46UK@Z&cJHOq)SvP07z%SFEjc=iH>DvcSm9#I0~e(eK``$vf^)FX&O^5cl0$U zoookSihj+4;||1=O*EJbC8-f`Oifdjxv6_79g^952+0qG{rYY^K;&HCTbE^VdLY7( zi#1zd$)39sJAPvlPhiAhCzopbO-wrWI0K!~;bY$I!01aE)qsAa-Rd}bch}g0|4RT- z{bz|=KCixHNNt{w=G5sl%@6)VWW#^`Ya^@3TByu)k6m-I=DT2a!k{vo*mjeJ2 z0$IT|*`d+j=P(CRWu4~gy-Y5jEy$!S2xw*N1l>rdz*j2-subdQ6;<+viyQAQz5>V) zNKIj1VySp=D38(b(8eg(oqM^Fu&s^5IgpiNjaz5Sm)+%eeq>;XDtw8w?XlJxs^(Qd z;D8Gb{67N6Au)R}q5F1&K0YyYwx0Q9rUfb5)0J=B62ffAHPb-P?b^Dz_ggd!dViOW z_H^0hkFtA>EceDbWu_YIv!{`I7{}QRc|3L&5^Rugao^rgCmte(pA*C-Iy{@D(0th+ zf#;q1<28Xe22esHuJP$X22g}?zTIN;NvX#H{~EyNDtE_zAf9HA@I-(>iyf4?f|GEG zc?YcN>#z|lEbb=`S^3rRK~!;#nuTD$A0RgQT>-KJR$!K=PuPiL7X#F#`_@IiqQ8&#kGi4dYt#T9P14)^9uDyMyTlo#DU4K$(X>0e|70iSyz0jVL1Cq z6?dwx=bs6(xT+v>Xi^3#*0f(2km}cKIz3IHEd5CNH{gqD8H?PMW)Luvtqq{xz(%PM z;P1q?V?|jsXJ;)Mhj#db(Rt}CZZ1jIcN(cZC|R{SkN1}}YMpBLtE2$=W#{_*>%fCY zX&(eMa9X&#bulM1>AMA!q9E&zMQ5w~B++QzmV+OD#hjHmLo_vVUzv=5S5kH3=`2Wony}TJNX4$3dN(G&i z3N;i4bPTP@Wap{84TW-leoz43GhVW{Usy2Oqff(t*+}6#bVV*?rxWnf^4oKshG6{w zflVsp-{5NVWBdbP2*%fb-H<_~#v1Ma7OMRm*1k*vEpoL);xth8`QCR=o75ho3wEiX z%{VUkt-_QFTi1bn_W~Fn^2rVnj1{D=Ko&)h4S$Yz=+$PwEW5jV&HM}K)0NI#M1f&K zfp7n@x8%?�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 IM6N<$f)UlCssI20 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..914e4aa --- /dev/null +++ b/index.html @@ -0,0 +1,53 @@ + + + + + Federation Widget + + + + +

Federation Widget

+

The Federation widget parses the Atom output of your account. It shows the timeline from the personal or forum account on your personal blog or website. It works only if CORS is enabled on the server. Friendica and Hubzilla accounts are currently supported. You have to give the type of the account as the XML is different for the services (hooray for standards!).
+It makes most sense for static website generators like Pelican. You only have to include the Javascript file, the CSS part and a placeholder in your website template.

+

You can test the output with this file.

+
+
+

+ +

+

+ +

+

+ + +

+

+ +

+

+ +

+
+ +
+

Timeline activity...

+
+ + + +
+

Get the code at Federation Widget at Github

+ + + diff --git a/minimal.html b/minimal.html new file mode 100644 index 0000000..589e06e --- /dev/null +++ b/minimal.html @@ -0,0 +1,32 @@ + + + + + Federation Widget + + + + + + + +

Federation Widget

+ +
+

Timeline activity...

+
+ + + +
+

Get the sources of the Federation widget at Federation widget on Github

+ + diff --git a/style.css b/style.css new file mode 100644 index 0000000..e4a464a --- /dev/null +++ b/style.css @@ -0,0 +1,98 @@ +body, html { +background-color: #999999; +color: #ffffff; +} + +html { +margin: 0em; +padding: 1em 3%; +background-color: #999999; +color: #ffffff; +} + +body { +padding: 1em; +color: #112233; +background-color: #ffffff; +font-family: Georgia, Palatina, serif; +box-shadow: 1px 1px 12px #000000; +} + +h1 { +text-align: center; +} + +#federation_widget { +font-size: 0.7em; +margin-top: 20px; +height: 350px; +width: 230px; +padding: 0; +border-radius: 5px; +background-color: #FcFcFc; +overflow-y: auto; +} + +#federation_widget header { +padding-bottom: 8px; +text-align: left; +font-size: 1.5em; +border-bottom: 3px solid #EEEEEE; +background-color: #FcFcFc; +border-top-left-radius: 5px; +border-top-right-radius: 5px; +} + +#federation_widget header a { +text-decoration: none; +color:black +} + +#federation_widget header img { +margin: 5px; +background-color: #ffffff; +border-radius: 5px; +float: left; +max-width: 50px; +} + +#federation_widget header p { +margin: 0px; +line-height: 60px; +} + +#federation_widget article { +display: block; +margin-bottom: 5px; +padding: 5px; +border-bottom: thin solid #eeeeee; +overflow: hidden; /* For too long link: hide but enable click on it */ +} + +#federation_widget article img { +margin: 5px; +max-width: 230px; +} + +#federation_widget article p { +margin-top: 0px; +} + +.groupmember img { +border-radius: 5px; +} + +.tooltip {position: relative;} +.tooltip span {display: none;} +.tooltip:hover span { +display: block; +position: absolute; +left: 0; top: 10%; +margin: 20px 0 0; +width: 200px; +font-size: 0.7em; +color: #4D4D4C; +border: thin solid #eeeeee; +padding: 4px; +background: white; +}