From 60e48d48fa976ac3e33c69ea1a815d23b756b24d Mon Sep 17 00:00:00 2001 From: andrew Date: Mon, 12 May 2014 21:16:37 -0700 Subject: [PATCH] Added Songbook --- songbook/background.jpg | Bin 0 -> 42266 bytes songbook/displayartist.php | 47 ++++++ songbook/index.new.php | 54 +++++++ songbook/index.php | 55 +++++++ songbook/news.html | 97 ++++++++++++ songbook/search.php | 84 ++++++++++ songbook/songbook.html | 157 +++++++++++++++++++ songbook/songbook.jpg | Bin 0 -> 77468 bytes songbook/songbook.php | 87 +++++++++++ songbook/webchord.cgi | 311 +++++++++++++++++++++++++++++++++++++ 10 files changed, 892 insertions(+) create mode 100644 songbook/background.jpg create mode 100644 songbook/displayartist.php create mode 100644 songbook/index.new.php create mode 100644 songbook/index.php create mode 100644 songbook/news.html create mode 100644 songbook/search.php create mode 100644 songbook/songbook.html create mode 100644 songbook/songbook.jpg create mode 100644 songbook/songbook.php create mode 100755 songbook/webchord.cgi diff --git a/songbook/background.jpg b/songbook/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d289dcec973666078373f3e3d501bac2203dc29 GIT binary patch literal 42266 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 literal 0 HcmV?d00001 diff --git a/songbook/displayartist.php b/songbook/displayartist.php new file mode 100644 index 0000000..627aa16 --- /dev/null +++ b/songbook/displayartist.php @@ -0,0 +1,47 @@ + + + + + + Songbook" Artist + + + + + + +
+Home +

Andrew DeFaria's Songbook

+ +

+
+ +
+ +"; + +foreach ($artistsSongs as $artistSong) { + print "
  • "; + print basename ($artistSong, ".pro"); + print "
  • "; +} // foreach +?> + + + diff --git a/songbook/index.new.php b/songbook/index.new.php new file mode 100644 index 0000000..14fccff --- /dev/null +++ b/songbook/index.new.php @@ -0,0 +1,54 @@ + + + + + + Songbook + + + + + + + + + + +"; + } +?> + +
    +

    Andrew DeFaria's Songbook

    +
    + +
    + +

    As a professional musician do yourself a favor and invest in a tablet or if +you must an iPad and get either SongBook (for Android) or OnSong for iPad then +send me a request to sign up for Dropbox which integrates with these apps and +your "songbook" will be automated. Note that Songbook is also available for +Windows. More info on this is available here. For +people who must remain with paper...

    + +

    The following songs are available here. Click on a song title to have the +song lyrics rendered in your browser. You can print the result if you wish to +have a paper copy. If new songs are added by me or others this page will +automatically update so you can come back here and get your copy.

    + + + +
    +Search:   + +
    + + diff --git a/songbook/index.php b/songbook/index.php new file mode 100644 index 0000000..8b32bbd --- /dev/null +++ b/songbook/index.php @@ -0,0 +1,55 @@ + + + + + + Songbook + + + + + + + + + + +"; + } +?> + +
    +

    Andrew DeFaria's Songbook

    +
    + +
    + +

    As a professional musician do yourself a favor and invest in a tablet or if +you must an iPad and get either SongBook (for Android) or OnSong (for iPad) then +send me a request to sign up for Dropbox which integrates with these apps and +your "songbook" will be automated. Note that Songbook is also available for +Windows. More info on this is available here. For +people who must remain with paper...

    + +

    The following songs are available here. Select an artist or a song and then +Go or type in a lyric or song title into the search box. You can print the +result if you wish to have a paper copy. If new songs are added by me or others +this page will automatically update so you can come back here and get your +copy.

    + + + +
    +Search:   + +
    + + diff --git a/songbook/news.html b/songbook/news.html new file mode 100644 index 0000000..7c6f562 --- /dev/null +++ b/songbook/news.html @@ -0,0 +1,97 @@ + + + + + + Songbook + + + + + + + + + +
    +

    Songbook News

    +
    + +
    + +

    Recent Changes

    + +

    I've made some more changes:

    + +
      + +
    • Removed the list of songs from the front page. There were getting to be just +too many songs listed to be helpful. Instead I now have a drop down list of +artists and songs as well as a search box. Select an artist or a song and then +select go to go to an artist page or a song page. Or search for a term. The search +will search for a word or phrase in the title, artist or in the song itself. The +search is not that bright but works fairly well.
    • + +
    • There's a new artist's page which shows you all of the artists songs in one +page. Many artists have only one or a few songs. Some artists have quite a few +songs.
    • + +
    • The song pages now are on auto play. If they have music assoicated with them +then their music will start playing automatically.
    • +
    + +

    Past Changes

    + +
      +
    • Changed the home icon to something much bigger. Clicking on this gets you + back to the Songbook home page.
    • + +
    • Now if the song has an associated .mp3 file in the Media folder that + exactly matches the song's title then a little HTML5 MP3 player will + appear. You can play the song while you read the words and follow the + chords! Note: You can right click and save the song's mp3 file to + your computer. If the song does not have a corresponding .mp3 file then + no .mp3 player is displayed. For example, Amie.
    • + +
    • Again, if the song has a corresponding .mp3 file I now re-write the .pro + file to include {musicpath:/sdcard/SongBook/Medai/<title>.mp3}. + This string "links" the ChordPro file with music such that (in SongBook, the + app I use on my Android Tablet) you can play the song's mp3 file on your + tablet! I'm not sure if OnSong (the iPad equivalent of SongBook) does the same + thing. If you sign up for sharing my songbook via DropBox (send me email if + you want an invite) you should be all set.
    • +
    + +

    Note: Currently my code is very picky. The file name for the .pro file +and the .mp3 file must match exactly - is case sensitive, etc. If you +have access to my songbook in DropBox and wish to add a .pro file and it's +corresponding .mp3 file then be sure to match the names up correctly and put the +.mp3 file in the Media folder.

    + +

    Future Changes

    + +

    Here are some of the things I'm thinking of implementing:

    + +
      +
    • I'm thinking of re-vamping the main page. Instead of listing all the + songs, which are getting to be a bit much, I would like to possibly make a + little search facility that would scan the .pro files for text matching in the + song titles and lyrics themselves.
    • + +
    • Another change I'm thinking of making is making it so that when you hover + over a chord a little popup happens that shows the chord's fingering. Sorta + like it's done over on tabs-ulitimate-guitar.com (For example: + here). + Anybody know how to do that?
    • + +
    • Maybe a simple editor so people can edit songs directly.
    • + +
    • Maybe interfacing with Dropbox to display information about the last + person to update the songfile...
    • +
    + +
    + + + diff --git a/songbook/search.php b/songbook/search.php new file mode 100644 index 0000000..edd23f2 --- /dev/null +++ b/songbook/search.php @@ -0,0 +1,84 @@ + + + + + + Songbook" Artist + + + + + + + + + +
    +Home +

    Andrew DeFaria's Songbook

    + +

    +
    + +
    + + 0) { + print "
      "; +} // if + +foreach ($songmatches as $songmatch) { + $artist = getArtist ($songmatch); + $title = basename ($songmatch, ".pro"); + print "
    1. $title"; + print " ($artist)
    2. "; +} // foreach + +if (count ($songmatches) > 0) { + print "
    "; +} // if +?> + +
    + + + diff --git a/songbook/songbook.html b/songbook/songbook.html new file mode 100644 index 0000000..fd3faf8 --- /dev/null +++ b/songbook/songbook.html @@ -0,0 +1,157 @@ + + + + + + Songbook + + + + + + + +
    +

    Songbook/OnSong and chordpro (.pro) files

    +
    + +
    + +

    Rather than carry around sheets of paper for everybody, fumbling +and trying to find the right song sheet etc., you can use your +computer to help automate this process.

    + +

    A chordpro file (signified by a .pro extension) is not a fancy file +format, but it gets the job done and is easy to edit with any editor +like notepad. You can google "chordpro" and read all about the format +if you like.

    + +

    If you have a iPad or a Android tablet you can have all of your +songs with you wherever you go. Linked +with DropBox and everybody can +be on the same page. Worst case you have all of the music you know at +your fingertips. There are two apps, one for iPads +(OnSong) +and the other for Android and PCs +(Songbook) +that will work with .pro file to render them nicely on your iPad or +Android tablet. And Songbook also works on your Windows PC where +you can print out copies of the songs if you inist on dealing with +paper.

    + +

    Finally, you could go to my website and render any of the songs in +my Songbook using the web (described below).

    + +

    Chordpro file format

    + +

    You can go +to http://defaria.com/songbook/Songs +and you'll see a list of all the files in that directory, the .pro +files of the songs I have. You can click on any of them but what you +will get is an unrendered version of the .pro file. For example: If +you click on Brown Eyed Girl.pro you'll see:

    + +
    +    {t:Brown Eyed Girl}
    +    {st:Van Morrison}
    +    {key:G}
    +
    +    [G]Hey, where did [C]we go, da[G]ys when the ra[D]ins came
    +    [G]Down in the holl[C]ow, [G]playin' a ne[D]w game
    +    [G]Laughin' and a-s[C]ingin' hey-hey, [G]skippin' and a-j[D]umpin'
    +    [G]In the misty mor[C]ning fog, with o[G]ur he[D]arts thumpin and yo[C]u[D]
    +    My Brown-eyed gi[G]rl[Em], yo[C]u my[D] brown eyed [G]girl [D]
    +
    +    [G]Hey whatever [C]happened, [G]Tuesday went [D]so slow
    +    [G]Goin down the [C]old mine with a [G]transistor [D]radio
    +    [G]Standin' in the [C]sunlight laughin', [G]hide behind the [D]rainbow's wall
    +    [G]Slippin' and a-[C]slidin', [G]all along the [D]waterfall with [G]you
    +    My Brown-eyed gi[G]rl[Em], yo[C]u my[D] brown eyed [G]girl [D]
    +
    +    {soc}
    +    [D]Do you remember when we used to [G]sing
    +    Sha-la-la [C]la-la la-la [G]la-la la-la [D]de-da
    +    [G]Sha-la-la [C]la-la la-la [G]la-la la-la [D]de-da
    +    La-de-[G]da[D]
    +    {eoc}
    +
    +    [G][Em][C][D][G][D]
    +
    +    So hard to find my way, now that I'm all on my own
    +    Saw you just the other day, my how you have grown
    +    Cast my memory back there lord, sometimes I'm overcome, thinkin'bout
    +    Making love in the green grass, behind the stadium with you
    +    My brown eyed girl, you my brown eyed girl
    +
    +    {soc}
    +    [D]Do you remember when we used to [G]sing
    +    Sha-la-la [C]la-la la-la [G]la-la la-la [D]de-da
    +    [G]Sha-la-la [C]la-la la-la [G]la-la la-la [D]de-da
    +    La-de-[G]da
    +    {eoc}
    +
    + +

    You see things like {t:Brown Eyed Girl} (title) and {key:G} as well +as embedded tags for the chords ([G], [C], etc). Doesn't look as +pretty right? But when you include the webchord.cgi portion you are +running a script named webchord.cgi which reads the file from the +parameter chordpro (that's why you need the chordpro=song.pro portion) +and then reformats stuff into HTML that looks pretty, centering the +title of the song, putting the chords over the words and bolding the +text between {soc} and {eoc} (start of chorus, end of chorus). So +given the above SongTitle="Brown Eyed Girl" we can formulate the URL +to render it thusly:

    + +
    http://defaria.com/bin/webchord.cgi?chordpro=/web/songbook/Songs/Brown Eyed Girl.pro
    + +

    You can do the same thing for the other songs there too.

    + +

    I should just write a quick script that gets all of the .pro files +in the directory songbook/Songs and then formulates a page of links +that have the webchord.cgi links to render them like:

    + + + +

    You have to fill in the <SongTitle> portion of the link. So, for +example, you take:

    + +
    +http://defaria.com/songbook/Songs/webchord.cgi?chordpro=<SongTitle>.pro +
    + +

    pop it into the address bar of your browser then change <SongTitle> +to the title of the song you want to render:

    + +
    +http://defaria.com/bin/webchord.cgi?chordpro=/web/songbook/Songs/Amie.pro +
    + +

    Note:

    + +
      +
    • URLs are case sensitive! ...chordpro=amie.pro is not the same as ...chordpro=Amie.pro
    • +
    • Browsers tend to change spaces in a URL to %20. %20 is the octal representation for a space character. So if you see %20 in a URL like http://defaria.com/bin/webchord.cgi?chordpro=/web/songbook/Songs/Back%20in%20the%20USSR.pro. Don't fear - they're merely spaces.
    • +
    + +

    Songbook for PC

    + +

    You can get a Windows PC version of Songbook +at http://linkesoft.com/songbook/windows.html. It +will run on your PC and render songs like:

    + + + +

    It's $20 and you can even print out your stuff if you still use +paper or need paper for other people.

    + +
    + + + diff --git a/songbook/songbook.jpg b/songbook/songbook.jpg new file mode 100644 index 0000000000000000000000000000000000000000..343a1c443597a15b2a56cacaab9ee070f4e40ed0 GIT binary patch literal 77468 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%0D>sHcsLXaAf=_R;uuP-EfSyf(d|T*F`$!Pr`; zosH~2Xmdi);l&-H9FtvDMtTFpW= z<@BU`qs{*2Gwk+_W`|^7u~Q(UwH_Y5v@$V!mgZCoO6me4-U; zXZG@9GDOCqrA;K}zpXXxk}{BP@}59cY5%6)K`d{NG}jKr*?)+pTIwYhuMTAQGkny) zX}+s}+SlUWfBpoBJZEUM49VE1_RbDQw#K=heFc%i6jmX6#!{4b|7G?6*-Qlc(od}L zK_0P^^b_r&OP*y{RjFv4KQp6d=XeAOwHKg$nQYz~3!C1!b^fr~8uwaxldU79-{->> z>s|y>lhJDK7m~1XNSem&=;JT{jGv~0V}hp6wQtAuchwIUUt{Q!Ja^P1yqq1OWL3cl z+YEbOsb8JB_6xc77?Z`H#eWf-okM(4nSW`)z57d5%|hv^VQ62J;r8QJFTy%`+xS?t z3b5+~ygc*h9r^=c^VpML|y;(Tk0Wn2;qbsEgs|NNujQ7kBlXWFpfqc2LXhSzeILUGj9P41(Z z9UEZe>$lC9hX^KXL6d&lb09$`6XCVA1GO0k7hX3AFxufnK%%Geqb3e9|VfKgZspR8Lr zZ5&5#TQy}JxYTIOPGTOJ6WNW21w?xAUn+4Q;G7xZ)Z{UDpd+1-f6gZt7N&@#rN#Mq z3Z+!9?W$SqcQMukcA~cTe|`mhFSmMEu+8lM!mkdv4Isj7$|c`P!W6CvyN^-MeQBG$ zkd-!Njp7&QxORoJk+Js{A+a>X|E9*Ks6^Xr{pEJR=adpf-Fn30`1q>qiBSkAsr?$1 zHJy$*OKcWnJ3pLQXjt0>?TV>9o&dmX9CBIrRVb>ely`8BCrZsK@m_xDUXJV&vw~=q z_9{iJTw9esu@<{Boi9^D5tE0&Cv%n7Ug`mE1}scZXjZ6e+438GC7J{`0{(NFiB&!V z=TKaaBl!lAhujl%0LGWhqU(q=!Fs`4y;BF>`}6;EI!&HV=fD_Um22MQ^l%^EBN+>; zSw#$>c*|w`H^OW;VM*v4#M;6XGmx&b^rPWYa0+OLjd3!e46{+qnjcoyitPnl$U?o` zvf%8LLl60&iCzQUA7a1|^Uk`dO1pXitcCic^~ zyuHy`z7EBQ%_!z(ZUge{WS#UTk+jg&ynbI;wv)dlC!1#sX@}zeb-Pf+<4#{P2>K|> zBUcllsI9=K-Yt`$fVHS<)+mmA?xqp!QBj3jBby8#IsoM)G+#2nD;4dCM?S-M^TRc9z= zF?;1WWA|jUC@)%Z5nFG6SatD_K99rPOXtb|#T|iHN3>MvzI?3YCAQc`A%H!pqmCf4 z=mM3tTP^yzdb+|c7ba<_33c89l7=f+&gC^Hw zL74d~CFs$H-pi|$16Tv8#qI`XHvzi=Vrizt+J0m87Dp-5mzAm)cQP(~3 zCC^*|-3y^xRb=QjUNna0AT1FB2l3*payp1|#|y}~Nwa@btK+RyQL$@dhgC$!pJ#=D z3rAFf*ph>69>D(qO&X5TwKMedd1fcKH&>2{SH6K;SHeMPeDB?vr`@xx>AMBcGM;<7+Z%b&*51iHLVgwjkc zFH{l+6ZkDDK7^vKOLFC~J2tnQ;>2j^U(#?TQ;B>+_+6T^i$?6T{HGMV$L}9l#S=C? zM3N)vT32@+P(3exjcgs;9?|@@@#Fu$$KY8qnV~mA!E04jy?bq(XQ8L{_y7DL6r1Oq z4cV}LLa;C!$0eHrs-bUrzj(v5l^zTB*;z}vc@j~bU#{OfL*c0v9z0@Tj_e}l9`I4$ zqu`LkGmvF0fCw>a6kT>I^2a)fT(QSAq|`9FY+`d`;~CGm0E_YCfg0eYiUzZToVn&9 z%H^X_7#OK<9e>-t*z@I>FxTbx@ZhId1C>ftA3ALN-??IH|0q!Y>)VTHenMy>gKvaN zQVR@9bPZJR8l9?tI66r#~5s*$M*7WutMS6sm{K!OxCZ zQJAXY3_IOU&VjX1hmsThN!l)W>5lE3ET9%yqAr&yhIwJ# zUFY3)Ld{%6hL^A5(kw-%Nm_I`&EicMWlKhLOTX#|rh9XbE+`8;0V$n1zQ5_^A@l_5 zNLZFw_FNz1jy8YI`k@A4+3Io3sTcT7oD2@lhWleS;AxPvG?E z7I*sA-aJNYG(n|Kxti8mBk!c`!Ii_Bc~SG)(wA-mmygZZsO;9!4;j|!VuE3jyl3UX zJnje0krS>M9R{cLOf?V#-uYQE4FwKFXs5@NSxwP9Ku3id>WR&ENRb6%O{ujuI%@_v9v8_>|7M~1D;`152BZ?GmJ(LV&NnR$Qc|da9WE;zRi)` z9#b}5$U@G7TDvMGhDVhTOkpycCZda)S_n0F=qyxadYxe?g9u)qdnoMwvHBOKV}-Dm z=FKX{je`bg6Wg#aciT^nwka3M_CAx+z}fW=0raSxw5#sjT*(rXj-OYEW4g~UqdQ}K z3y5C?m>EEK?eTBM+Mi%sI6Z09+^Nd+=lFLubVK}+e=w-*)tY(q^q003SV6AB&S
    5-|h}+D;1N?g}HSXQWmKJXZD?6mmJGK{&MC%BtlB;R&%lG5k?F+DB z3@5c+8zAxBa{r||@>u`xyNBo|;*=c^Px`$|0;J@aS=0j&gJ(WmIK2mv?1VVqziAd0 ziC+GPcX_2sF5Xrlz!DgBfqeH04lO@!u@{iZm~?5eQerj%l5DMostWh=O`kDN4ojye zIkeO*T()lw7z2Mg<0QKK(gYOEsU{LnbjPnS&lgCDskRqNH-#&d=T?B?2^~fP!iIhj zx1?U~Shnj-&@6|?;IUPWZSBQAjhQM;{fhzt7GZpX_%0$Uv?@QSq`mWib=(UK5_#C; zG{{p7TI7sl1GW5u1J1pj@SoS$X%`u-ay7&^+TNIFess)IQ)6@mROuKV>qTO$`qgJ@ zDGwH_vr1WAG+>Z>#R?4e=g;uzn z6<(wg$@!4KaDFM&&^pWvx%byGyl-vgC1mD6$i?W(M=_r9hMDIJ(M0qZA|KPp>uu#Suz$cbN;+J&LVkLj zf&dVil<9zF{lONLGDj_*c8zbRZCxJKW9}FjLdU$A0m(5HKA%V5O>-*YtqB>ib2j`% z5dtNO*8@Y|<*ZevV6|kebuMc>B^OXd5KTd9iES58LWn*BxxSJnNcCOykJ5#(@K3VJ zqYn%%em#;7zj!pn>fORE%gdh?C^nedD~}V(H=VpKgvXZhLlP_~d=`=#k|!GUe^4N| zRkW!h&|IN*UU_z2u51c()=JOEDlpy|K1dC6VeB9u^K$f(`LrZMDikZV<`FLtr&Iy& zn0Qw0@9xaXEb=pLb`oe3wL!QU!QxS=ecatER3a{IB{DXR+V3tFWGpAx{r4F}lArk2 zv+V4uU0h=t3bFJs^AcM_r9|JnEXn%-p}iDqh<2sUJ2e>xTHsqONh-SX)L7kIyFgz8 z_GMZWEm5I~d~9lAIs299i=OG1jAf8SotV4#WESH!-uUUx^(Mq?-FGHrEpF0H?;eC@ zbDUS?gX+iGvoG8O)nNL2Q2)C5=KT$iNj}`!GjQPmu7d5d_4E*Rl5O>UdwLdlRA?vZ zL*_bpQK*dt=P*g?l2&`t8W%CfNCfumY1w^VRmlPOozeaPrvt)vo_NP~gbRn?|BS?- zC^5nId0HYL(X?CZ+^$ls*Te`^WEm#JyuW*2TB_1XS&aZ>EHK7)JMwwN)*=ql_2-M` z7BRe)D@kKv??$mH6otaJE_UeDYt}_#Kf|prO!stA^rQf6a0mkeWlqJndn0ja?A3`Nos-_gzX>%DqU3&^#XpxieQB zlHz25fbA@1q)$?QO>Ia{U(|p_A}8qXJj~$Vu7r^bzH$t7v2oh zp2m>kEPV=r!}WMr9~oKOGx0OVqRP>^f~shCMI9rGn>P-!oe#aNv42sreR)d^ppg79 zN9L&!3pxXmX-Vf>mynhfG?{ymMQUGNtB(jvRbv8l}*7=xegVxBgx zP`40$C>l=fZ8U{;N+-DKmhwQl^M73;Jo(x(ohAn8=9XVS%GK{d48XJokZm8l96~5( z@2lh>cF!OagSnI1mGZ?(QS|HL)Pxw6gH|S#%U_iU9h=oBntaJt_9y%jJrB94wxBDy zqQ#CkJ3Je!SQk#81^|17j>QA`O{Osep@cn}vf)J^q*l2bUKDkJX)|_ND07U^!Eo7G z56TtWM+)ArO?6gE4td}`a3VZ)G&c z_hR|~#R>-q7q;l5Sdy&q!>wZ%1J0}jTSB)9RCR;s)6 z{K~RT_{yxpR+q(K2Y(FbL`NSR38rur&)hET*P1`wML4jej!_*FUtXNOO_Aqd9lX+- zY8qoper{>Cje5J1T2o0oeq0|};4mKiq3M&G^V-_Iw*MCmB33E93I5sX$q^b%*-;^6 z@3r>7Wi&U8|F=YjAm7X`l5kJ?fF%VD+v`wOSfh)(sJIAfl=R+Iu&cehk;}ZMR7I>! z?^T1^3vzi6<}eiV;sK%_-Kl&LHgABG!nOh=4f0Y^!$i>KWxg`}ysHb9{PG(-zEp%r z%}&at9n4v_&avc=c*u7o-VS!MDcq zk+dZs$|3}Wb##JQxwRcf>Spk8BQA0))vmmp4nfO1-R|+6S*~1>hWM`FI(4lysn;>JG(WupFN&IYpoBYdXBz{yh-D^Wxh%Ao*GzZ&R zzY=$HRm}X)uHl8Rdku0YKBp|9~%e@Uu-AWJ-h#5d3GyF9$AoS zkSX;#oB&X=XPl;O-m&YnCh8zClwVwtlMKnR&|$>gH zxO5+G1RudzC?j`W_;B^lMhe%T+#qjg$6u6v3FQJGQwXly!_+ntq=hsUtG#KF3Z*C^ zU#BV2vfgMUBH-tcP(n)40Y5xL_LHdgQ;);lKg7h%!IA{6A5`7xiiSlE%^PEPwzIY7 zNPwtqqgXRTZdBq#BkbVnel^loNU?Ob5ax|<#&es>P;@u zd7Jp_IRjCe5;h74v-<5E=yD60ppGk8c&Q)3UGGXihQ0S%O3f#mOtEU>Ky$>q*zQvMUk}xrXy&- zzlsSwi=JB^gOAO**}L!Cd3q! za*c4m3w0J7*9b zF|G>ZA_u~a*ZzWMK&2(a!uO3Y%dkRt8g9Kn#Z(p&M}5HM=tp z+(^9~=PP26E1_P&O-7%V#U0167X8*WE82Uz2A)tsZ_vn5OTmKE?s0qTM{&;Qz0I0d zURGWv<1xcSzCX5tf`(WQ>-1B79;c;IKixnMj?M6_*BannV5y_F9nkXK@jWJoIhNRo zEy2$H_ctMeldCGtm)KJLKbv*j1{h}zH49gH5#xD&EhoLW9s}}Z<|QD8^>c5|z|;|j zuhonusx9LOv4uR}FMyQ!6&0ljVx&WcKQ*uDUUv<>po@Lt- z9DXjloe~xXV~%UZFJ8=;IqAtvFKyy{{T`3s}6qdSn5uQkUnejG2#4DsMRlb&xp*2w@u<9Fr%BHMon`Okc4@EWv*wBs)$A z3Dm$kdhEQ8M8&M)0~}Qqn4L}&7t6|`(mFb7O&l$7-n(~}-V=UC`lG+9VO>7v(nOBh z8ui}#+BN!XwO)s-$Aj=1fvvn2$F9_wEQZvj35PBruiK5G(%paJ4VhSJVwzg4ytg53 zHfz$u18i(|F9w)nk$iN-sd`>(g2tfkPbXW!i8WR@wIfXwaYg1No}KUE-!?wgzcmw5 z8XVWi`2;flD9?vxQN~nv1ckuRwN%KUT;H@DB|e2`(wiQr9Fc{<_MXG#Bh4+?4PwU2 z_76f5^~TJ7Hs?>g5;C4wH+y+Op1)QiaPNESe=T(I#Oot%`mq35;FT|Aq(roI&99oN z@EgMGpNDmaow=%EXzxF~yJ~kM)nD%egD*rb#M@qpS;aPFH}FP05&kK+wuJ;<5s+c& z0uw?KTgKhim%rJ^CQsyWk}tR9Z4gOYFR9uJ!b%@|aO8-AjDo!3zGO(CQ7e5`4sP=Z z4;&5D2zQw7Y-z4@q-X?u?n)A^ABU&zW*xdR`%LX7*%{DVIowRRNVR^wc20>%6&Frq@}h4^8673{ZtFy z+UItC-<_$R5py{$J$C%hxu$#8a0O!+W$|G}6SOLj*43!#dO#1Pq6TO`QeD_*REkAz z$dJ1(W8_c0i*mPaW-l6XRCP@~%E$bOFf)fKPb0xNr4NFme^CekDp9 zE1(f|1XbkhaA`}fm;C~{Rjw=)SpUs>?7YfD*x4d~`Q?2HguZ6Tc9%EW@HURqY{)0h zqk9LCYwgf1@Op425eTR22u*H97m0r6Ty{>H3WFJb42WT26T8T8x8`JLpRl*Qyu38e z0fLE=lD4a9hq@bnK{h$kwt5e<)!oDXB#F%^B6-@ImG4h~N#Isrm>bx$(mc(GR!j(& z_M?x&hd7~qCAi?tVRwBFo&Y3F(T&kIIC%Mrn8vPA-P(J3$H=vp7|_Sd)QgKjZ>bYH zbZ^!i&nQYeuM$(33X40~aNcR7L~POR6KkVIck@dz>dYk3r7#rEwb$JgoB$*Cl&%v|{~4 zW-@vQ@@!lTvXX$V`Q(JWO?8M8@6&kZwg-{1&096Bn=%Pz;iTD)c|N%(mOU{TS%pWB zxf;Ie@t=xxu?pKkdGj1lt` zeM8QW0elzJ+H-V%b+mh9Ly)1le1`>_u7bTbYeF!s(d;x(vaJB0@yKFaE8&uz3=#8?GX-T%@7a29 zzcUqeMxUN1ddNlZ&zJwRA<`S%_(Gsy#BVI3(?0;+v6hKxnsD}ZCqYW2-v%3`-sJo3 zPM^-V!SK8Va?gBP9Jo5?W>O=Km{0TFCnywNn20m|xSlJgX{I+m_krW5Evgffk|82S zn*XOghqzcQKhH_k7PR4bxt`eTmil7hd!SnBfw5*>rk_coJ^nh$VNMG4CR}8zw79G= zq^L8yes(XIjomc()7>3|V6W{wVQprraeM@SgGQxFCch3DAZNCXzh0y{&V6xKd*FGZ zT)hHQ@Hl%h6fxOy)EWdqg~{10CBBr^-Lbj;9z+#XNR-0HIBl!$fLMkr^5&FM22@Z= zJ_HrHj(sH)?&4RdFY=noOC=%S_>0o$96>bKEsb9JX84%ovooQM<4%{N^B(c(kl0_8 zZ(BAch~$F8*K|I@1YKEos(+@@wC*+Ms||-hVi2-In?^t>Oxo4L0-5eIAA7HA;+d2y z&94jp0ZjOswo~0Axjp!pucQa?`j8{z=vlgx2Gaz<#c6^UxZ3BlsHE5 zUxf8groE+l`&BFEB0Z>B%dy4CyKtQhY^-)z>qVTX7!JRNW~5iFBrqp~HxW-Kv81M^ zgglB7CKMcwMvAJGyW|}7$v2a6-K&{0%*af zy`Bl@_y{ovUOs!LM>Q>K1{!HP^c}OPeKsBJPVDsK-580(rST2S{>Z~|g&7V}oXNdb z!dNWEKj&{El7E zF>ASMf0m283l!P~-3SL|H=OO?bbg)l7pE|nQkY#dZubqB8Vi!-1L|${-O*rLUZVr#@O`zI^1)WtZfm1T*I6^ zCI2Fy<`At)#)SNrqITJcP^Wn~6hic)*iKa+5AM&>UDf^TL4eSgqaj?_eFJ8`y|MYr zbu4LypFdG=IF684krRaG;eAP(m}Lbp093CVg9AO*h!^g#k!`uBCe`*&v)l0WvX$Ej zZwW5q;;#RR=Xk^#%G+V1Yq+V-5VEN}Kdu8cCn`d{BRF?Z9X5?tZ+tGtsq+OG!)0>J z@_bqv?p9mF#5^?+uG)+I4Qf&|p%cWTV>wYG@E|P(W1R~-=k2)5l}%MU6?a#rj}ck?q(dVUo_k) z$>*JK!J*KPF9x|995aVHyMktj*v7gt#QB8__=Z^!lm+1%sJJz5>%Z&=j4WYMJG)CY zIPv_lC@Q%(2kl17-=3WF+>m@@q6nNwpRt_yCbV75hzGD>lq0Ic{w6aOwGbK8S=n@J zh*;_YdzlxT7s2Nh7E%d+a4D9|J3GBm={ub#T6`LQQhr!*b6LQUX4RmMzJ_X^qFtWt-Disp;S-3oe&ShM7-T~bYfG-=FlWp>a9bJIeo0?Y>$}6 zm39`H7e)>Ru#(<&v^(`wXKSbV!PSI0zqByivV;vl_41ssYJcye;2K$Y;pRvvb}t=> zLuij|>43G&LQzM&56>~(hz(A|oy%7_Rxw9!ao zc`XOF1pkP%&jmP|Ik*wXE6EcXQ??Jz%0rU+8YmszyQG%!9pC3Vt4+k?o!W+?8n zX-YGeBmswc?upDn#U1Ywk5PFAii0`QYEpO}SSEvDlQMMZ-v2*9+7!@$Q}+1iNlfYB zMA_GYm%Fk4-dBl!YH{!bB??C;eKa~kT`>ivJxo}h*V9A_h+;hH0>A%gW)>Z*L?(f#7pgTQ|=xVi=f((**1R=>5cuZrtAScm8nhZ7W* zS}`Fee{+sQdKobS2PzVB@G!mno z0d$7*L$yE+emB|BU;a4a|GG4-C?e^&(o$hbmpi==H5&D4xIG?Cd068BFBX2aeQ4PY z?})7Sj|b^jqUyzb7~>vOUy6&b?(XcNc5MSM4q~m;R~=+8we+Yh0QgN+B(cH0d;hGd z{*CPY7bTu64PJGT_=~ z)hB;-5)`a#Cne$1Tb194DhRqwH6|FG!h4f1Tb01};dZk7tAzq85WAdW=j#7)X9@P--sJUmHkB_-?L-&ui`QQ=ODXB4@E4jH${%~O#GjfgQg~+ja zUsn^u*cQ)bd-miand=vWHXV>I@5$ir0UK0w2iX}6UR$tqC3>@RG4{_Cp_{jc9Om5( zF5k>SkT^TW%!0wXZjp?fp}KHN$)TV+&?BcgEs zjRJXzf$!4na|09Iz{llAzjX-?S7}Od)+mak7Jy|(MoGVC3-oeA}y~z&o_+>sB)F31v*6K=s6b8!$LVmWStxBoNV~A z>(63E$7{B~oE`ccx&1q<;&V+=EJGQL^gVrWypxWfSexzJq;}wVKY(U>HmOhOjd37A zNkyE5sc4o*-YCW)&_tw`=@I$s?zrpAwe$C#imRZh-rC=e{ykIH|Jq}~Olc_hgx#D% zUP>hLFmOBLlC#IOY?5yV%-{2APr_-!a9~T_!3*2W`$#edobmX+t1N7zv(WR1kO z26V0&#wz`kf5v>Wcq44iofgeYk1(&F3GbRNO~Nf8__aN57@Iql`Zj(r01h&Or6U0z zAbR&lIk~@!-=={V8EpUQR&Dp{AB+U(#}Hz|{o?cs;~&dJS~GMS^QS1b#-oOnEuX}H z-)*<%&d-k!8Z`rizoHAPI>57{+9}&$PTIR2`fN!#4fEGl?`EsKHFcMcT!aeu@GJ=C zbCt{a6ysS-R;rb@?K76;|yRm!x-^rqTKq8_P zv#lZw^E`>kCrnC@Hr9<`z|UBeM}vXuI!!PPP8&^N3;nKgwy`m`dTqW=^2FMvH&$08g-2^hm}>eH zk)O0QM|puCY2h}jPdUeKC^ zX(#D+Dv{b-u?T<0INhPF_Ir&HzQUa${N73VLQ`8I4Dnte3#gej;3M6UiMNT>XOu*H z4Gq^2GQC%RN<0x4t#2p!f0);^Azs&?_!%O#(bS`N*lv6-o1$7w7&H6;v}!AQ5-Nz;g4$Q z4XsyrKEnJh*7E$>V6=VooO@(0vvRx`z6$4(+D92nRC}(LXL!!|18N`!i{%L|1M;fy z!>FxEaH$8*S5cnx=Bp!^Mq&rPB36C~tB$B-5`W;x&45(teN6@yW)xDC^ik1KRM7|A0M8*g^1-6E!$ z%3;mpZ-sJ8M3$NTw?BT#+`n4Zl9$9yn#}LvI%fNC_GIy&siTE>owBIV59+ulfuWZ{ zny^f}aUVO&76r>>O#4H2o<_TL-FI%goLm8GlEYt^y&v!@jwd77f+u%YfCKXPyMPj>cX|Ls%$33hjK0k*ff2s{5p@%m7RMVNdM;q#V$jE7U3=!m0p z#`pB`ob&YR1o&`&XSGs%4h6u^>pwUgxtv};X`nxFHR}BGbzqoOnrM7IY%B7E< zW|)>M>=17PyK*<|0cskWjoKUnwCqs;@RVl8%~rroyIfZ577~g`w<>$XwsFD#X_OW)SvH(N`XVlbpi6D2E&UerxCt4(&oM z(_a)}@r>vBz^NyK8$5DrWp}1^S@5^;vjD+9A_4XJBvW7mdiR~#BI~A?Je=DAb^Ond zyNgj$5)-xnIhHOS8TNkdzn6R`9qq3(0e@KekWt=EJ|l8|N_} zB)2Y^sxE6F&j2xQwcUtDB9 zxy0rjF;kJz8;slbWi`gPAFGdwb6L75-qRYjf7By8?>zH+5E#N*3AU&$%lS!3j9B@L z66I>F+%!ioHmyJl^NOlk-!r#b=DPiPcz5xzsG`DtskVv0f3r6+*TxmF;a<|6xx*kY zl9~ZYwNL#lZ9SDYZ=?FN%HtOgVQY#Vb+*1%0~xu1u53#HGHZXix0f)S*QtoChW?L4N~naJMX3k9*zXFXNdyxbK{4g57El*OVWUp zT+&L{XUM|s7U2{AYNIFyZ8;&hG+(`UzLV)-RKJZjoSi>g!5G1T z|NTolu*B-@9(c6tWcKB{zI75-G{`FrFU~Ird+wH@Zk?%(;Ec+oLg;tIyat35y3>9YvvP8fVYr&V4paPI)Fg0r`YnQx(sO zWjgp@P{+1@fa)iDY^q$2yRw5-RdUHQEwdoR)A6HVqum?}vu{);zkYpI^cYLcA?EIoh_bb3CB&z$1BJ0a+du)|(qx`&>E^282c;0GXet7di!F-Rtc!G=wmz9nZ zN?L)Jv+Dr6NyG7$V?FYH|HXoz1(3Ik|n>`!r`D z{P_$BhfPbBsTk3~^(K$`BEok5?T?>z^T34hDT?|wM(%gtke?RSKIUSo&iqqJFqjK@ z)sbqF}4tSl%k(Xb~y;JRGXU5RG!6g>sATBWF3tcpGzcs)uE zO0k6bp7-=AJvkU8_Oe8ve{w(0?cu%8&4k3MN) zJUxp*HwgH^*jvqK;nDi_$dkxZ9*cvV7UlK#va{_#zA!^Ok&m8w2xcgCi#=E{6=5!t zQFgRn4udl$QX4y#)ekIyq?8z>W2)KS7e}^$Ka7cOH9-KZ2C7kXVx zDe@J+5I-{9sCo|UO|^;@!;=wKO=G+@()wrrUcUF$Vl=&StLMVNLE~u_DR-( z$*h?28B5?dhNP;nR4UOFdwfHVz=U(dM)n>St7OvCg_eE>X!1aP)eJ&#z^83IVMa1g zS{BD{l3)k6+1_>_*D?0qjlI~vrmauPLnG}c2_FTYk0p8_73m&kYGMJlGzg$QKiVyr zDue0q)Y*6PIT{F;%-S#2uXqh=Vqx?|_mY=33t*&NeU*l#$3Y;kYU6v<6x`ha5thpc zKD_K6T|)_t`n;g2+2plQ^@;p;E9dow>e*}!HN3CR{gN1dniaPcVLUjxr^SJyWWxhl0) z-u34vDp8j;H}uo(xjF$&$ZLMpaeR`q(P1lMX^1^o8~^&AuMT7QTTd|eR{4oHR6I-- zUg)!x771z?CHk>Y(G1J>feDqCXje=z7?k={>`nhTFt<8#hI~Vt6PF~aH_}VGmX?WQ zpL6W~I>AbTZMXh%)8!JjF}fQ)r9*|t`?^hDPKWNL*@|w4z-Zf}X4zrPv<#s(o=_el znm#V1MDzOaX$z)dM;?$|uQ5hHLtp)Lb$C>Jr<*guJkl0A3JFqgPBI_}>~s(<7v8goUlFUr#(b2N?Uh-tqKkxq`6_lajR_U_wSX&RD3nQb%mW6?K|`1S0IiKLDh~M?=2&T_Y&_CwN)D8 z_?|6USU6(N@hIt#&s(K;WH430`(9?frXP0>oW8&#uNwKLQb=Q#ce?xvC59NuZreML zaqC2x@nLuSqjhOm5sZuhuDK9ZOy<~ej1gPwI~ezy!UZY7pt|OtR#$%sCWt)z{H^a0 zhP3CIa*Ax}@>A%8mZZ?QO7u^<9cXw?mIm((yiwG%ChufsYQp8Z+0JYzp>mX+JSanD zn8}cP&xegI(ADL$mB>O(Ag`g~RZxNC)J?{QpxEcPeU%0&HD?rMr)1`>u!54aRvys^ zmKoUipM{f0(Ih%_^7!(BRlsT_ctU&HIqK3lTeRcLz|qn+?~Sd?e+1G0Ql9^RPyn@U z3{F7oSM}E2HI%j97z1)`Ym@^oh*K2V{b(rOj5)N6Fuiv>+kcYan%%sAKQrfBY-@Cj zGYM*?6tnIne?L5=7@iUt$A*E5ev7{70mhwOi)rRLAfpl|t@)14d$bZXO4T2cs*kkm z*Rx6FeFE^7sE_8IC=aky8ZVf?QN2-ePZ$Y6x<+?(wblhX)i5TyVkV92*1HD(K z|C!#n?J!$sYe~RY6jS|$861xBy@R7Pu4~8CJY7zj&8j?^4DF4Ad**qipyF@3jp!5h zCk1l$u~+B+Q6Sr5QxLI|>(YuA zNO?3z8l=;d2QOr$Mtsqm!mmczBb^7okFAuaQ#8cw0{zc7}`!#>%o})~3e2 z9t}U-ZgN()wkkW${X9uc6@93#r7mwXp9)!ne=TI6d9ZV6Jj*W6 z-s8x9 z>yLWcr;>#l-{}W@72s7FVQn#0JbE*mnJ^l_GiF8`Db8X0Z1`0yL38&^oIYTplh%>+ zl#UF;yfoVRxcbz$&1Yy(F13Krx2P26%WIi1FVNRWa7Gac;1M%mEp^ps7%%JW!7|!A z|F({3U$3LKdC*B{m{-zi6QA^TzBtEGV~^K%x4Fr;Ms*v#4Cf3sxm^vU#$6ZVBElH9 zwT>UgP;Mb>3ICPbPY?ib6&E&OMGeOd6O(f1OX6`Yd zEc=EAcX%~?uX)8-c;|3RDm1V}z|=J=pIF zlX!Ygc6V&L+4qJ|*C*xhd$nk!0o{i@U&?iP0Bu-IPLpgp58?AF4poYm_XhEem{eUKei=*RS!ebZe(a@%-?71-c&SSQ zVsfm^Ufv~Ngc5v=fEgYq*jAK%sPOQzq-1-B%GEJ-B>U{%G(RfuMao_123945n;yvi9*^+ z%8A_1Fnhp<>bZHEO~SQ8&9r;=)#__=+BLKe)sDS-(gaANtu5*3*Z6pR!*~6o)R1M- zn}=G4#16%Zip&&N_@31=>uBLS6mmr$aPZ~o;%P}p$>fje$REu56 zC()Pj**LXQ0ypLUCnld05vv`2I6r&<=d)#$XjpJBYNgTLPr>gxN~)~r{||9*9TwNJ z^$j*O?(WhJ-DpE_4{6-pEy3L_5G1$-ZQR}6H3WBeOK?jdSV9sYoZ*~%?!E84cfRkN z=b3M2djGL^SFK&L_g+=CR;{&unv3i#5=@JBf#iY?Ckj+Q!^`82E9`~aGAnKjMc?0K z2WM>ax(Tcfalo|P!!4(ovgKF@HPV@k!|Z)3@5sifj@XJ>riK$nd>+;QQsqHzxB?Ca z`L#0kB`HL5cRr@IyS!`1eI{B{RUHjObu=QAc|M-xDX{N6JC^2~4biCdcHVg*;3hk1 zqGcdim4KodhFvawQgFI|>%mz4F3C%9$?aBPj?DJLbSm8C-~-|QEm+QhZ#oIJBb)dZ z7`4N(YpFTWwuf4On=tX8Lk}jzOo=Lr;nP=N9sIeqlH%gDJlYzbiCHlw)#zA#gY@k^ zVQT|2U0+77L2BhyS(XD-@=3RmkHz6v4e^zhepMfl*mwb&=Y7^w9NT>kF>A_%i`T7e z42eJ1&J9Te8Jl^Z{Ltvc)GZCrpO^7#9MO<_BqR*rmy@KX`W7n|Sjoy8SIK&r6p~|h z=^kXeoeg^?iGNbm&NygPfBB?{U1@V#EPwKnBPIQ&LdD0`Dr=abe}tsaT34#}Xhg{2 z+5IN1Hzj4p!{-`jWMKaleF7;>;rNYK+XPt!n)C)Fh9nm@7@xIE)tcq|ETt6+i+lib zQ{*xGs9;4}rinHNY?!yTQ)kZNiMCzk2I*F(L>0*HSc*M?FRHvB6FS&$&dy%engnYH zAEeS6a;Jp7ugwg;iiIeN`~Pxc0Nb{AfyM+S1j)!(xh^P5E0q^(<>Td-b?WAuM>=br zr>jnfcBA5~;#lnMCoUnQh$jcsA2g768SFTNJgF}TcOy&0%AdBxsTN0B_{ZH3GyB`a zUQ)`9#^}`;uv({)X34iXZel-y+k>3(L|VI;JN6>t^ZBw3BVy#%dQ}*`1p?!4IBEkQ zo>Sz-)5Me7*(}(tvM@;t?r;W-pU}!#v_$iWEUBQ)2))#G%07f4*A++fAPKy`d`Bxe zo~II%xfg5h(PC5dzT8skeJuoPc}Cc4R%UO5l5Y2U71_EJ$1I96(~1zHE$B)>CUgFM zClMie#tK4~Fn-Y`y@~MBDHl_qQ^3qqbYwBdsd*Vt8aEcdQKioruOXo1MfWE$G2LNY ziOLF_w5~ET-P9OMY9pMU=VPn!!sc}D4%C^73yP^~pbw`bgMIBM3H06qezt{fFmn|9 zcHMuKadu@ywAiXB#XAmjerE(ul&O7K)uB;c-j##ZrLrHw)F?iTbAUg7cZVLUK6Ri}SR-n5Ht#!oZW=PmFAl1Snbz4NX zeRuEnLyGIPngQD=2W0A1&U>xuubX_{O+uYp#yYYHr+J>-60cf4LZ%1WR&*7;X4MD1 zDYhzeAL}r==9F-w!`=(vXxq<9Hx1#k;tE|ezNtstMC(rHe*bMWoTg^-jFvPPcYLHP zBNEwogVH=_1z&0B!*r3TYXcv==Q)0E6P)&gnm*iF*(r4Xu_|##R$DaBoD*odX}K%Y zv)>0wG}a)DMyDt3Sepq0+_Z4qd3kiEXkY4jKgG^vR)Gal-|k2|F!Nt%@OhC8cz=w1 z%Q_y=KiB-u+o2A`mn|h!gqIH86nHtgy*F$==brMNM2S=wq0+6?jHU?zUzABceM}h4 z2`#4*e=SNHM8<$T_sPge$aIy;hU`Q4mASAjyG69cMwnuTp#!FXD96vF#tZYENo6I{Gu&5WRZKU+atC`E?+o`lVG%yanE*KM$9g%?Ip? zJPkYfL)@}Tjc)RvRQC^1Fpdhak9`S`ge=POJzv)?JAZNUDY zGpt!;#_5%OAf!XSx^`H)zXb*(>p@SF-W15$#ghUjJDC4-fvo z2A~&E3stRRUy4JF=1Ry9w}(NoSi+|*F=_ypMOj^0g)6UBjE;p%C^eh?oqe>>L5!8f zHw*LY9yj9NN*9dxRn9`bT#Qw<|;>yj%$^tfi=<)hMw5{sEbv3>%0 z2=QKdIe82@(`M4Y=$5(wZ}I9Lg>DO#3aQ{B^~qu*@4tmXKpbpXXR*}!c^+tg_}Pfc z0VAB%ViW77GRZaaOlkafg z7z%urNWF2~v6m&HF(Z&}Cn~`Dz8Y^Z!)n6o)Ne8TX+C)qZnIt)qrU3!>RH;x&XN|) zOQlVo)H_p;SDtZc?UMOq*l6|4))1kRGG%pXnyO1?j&4zJx{4h4*>2GeN3-w9Z1*OO z?B!$B?nT45cUssw1yh&kluNIZ{nt5}Z#3nxtK4#i%HjGUlB&!M z+bI#q`=WT4;=n7jHm{Uxt8xFPP{-f+sq5RpJi1yfP$~&fiq*t>rVp;?!z7}Z&|~~` zo?BOX%$3_8RmWR#iP!GJotPY6v!b=nq0em?Kp$9o{>!-Zt|i}d9}#D~^qsw3SeF9FvE2G@ ztNZQlu!$C~`i)PI(r_>D54lF2Y3306lewc!Nz2}ExlJmmB!Ot9%9 z+t{|`?>Kc`d?{NpsnlFju3xU?+_}+rQQF!&{`1FP8Fc!$&{$JPTudqNAXVEB+%j8j zT-7)~8m)09wvnp{jm)U^#z{LlU!y0R9Z~F!9|x=97RP+fkaZC~EX0vt_HLtlG}c4~>NxEkIf{uY?!UYf z|FL4>m)eFX>Te?ZUN1B_<;0xN`)#aV@8@}ZcD5VLaniH7?l4!3TZ*ifsjv=W6Qw@c4RIPU}x`LTvNea;JyxR zJ=X}Vs4~3HRqLItCoiCK1|8`nQIg&-n^6NYMAreNp4C=y$dFk4cL~-E#W9K=>=V+B zB|&_zb^WKr@yiJ}WG-`Y-@H_o_Ei)i=6xqO6Jjm!wHH^6NOKWpZ^cmi=P=ykD1UG;)~7wVztx!^Q-ytZ?m^QPZsZN?)^ROe)InB zWva?IZ5ZlYyXihX`6+8_7MtWAr_b5T0s3FuC&Krb`M6C>^;Y>0fXn}_nx5BXKZX9@ z+}}8T|Lk`!+b~=w+lrk_Z-&2fKQ(X)#xMM~O$ z;`oX?Do+@_@Ma?BeapBgrKD%t%1H&?fklqB<7S|n^VFtTzBL`i@7j+CpalP+{B{h1 z>uiS6^`2tRNVWMt0E9yZNvw|x zI2(nd>(nV8-nqnpPV=k9#K(tzL8vOu&aQ}`2vR0pCx|M!u^RH}z^#8-;OUXH9~TQa zcKUcY_K4{R|0;!DOGA-L>RxOJSnmS94vWaBs1OZfX*C>ohRxTbnl2rW4s5wz(C~d* z;Ct8?)7heCQu9J0YXj*|x%C*SVX#YZ$e^CYhMh;!ff6Abhjr{A3p1Y_eMcZO)PbKvhEc0I+ z@A<_h^C;DeYtLPMc8e+;zkAL$WY#X2^>??YR2wz(cXPjDskJODTffk(;i-9f?-(of zkUWT1oKdaWteV7?ACSeR&~-RRQ{J-2W^-_YXtI%s6J9yGCSPu{D>y?Z(0D9A?tShq>f^{n~l*V*k4&Qn?(+*MN-^?d6#tqH$XxXR=^ zr&h>ir?Z3q0F=emW8a#kGERJC-wrvo`1ZRagwDyQa$07 zp4VSrwIi3c=_VuW8Nei)JygE{jJ5FaE79Z z-krGegCFnL2cKv%VJg*>dc%_@wxf28rOG>Qh+}n={&J}Gr%r3yPcStd?iSZV@BTNz z_7my6vwI%v9}AE?_n+Rme(gWaURN7&ZErK-WffPr$}X2ga*v0za@bmY+Qix%wR|z* z!yOLMHr(ozrKpz4Y}T$mA%1R6_EBJzkYO^iX=n188g4ae87cKSPMtKbxcvPg<8+*8 zX3^eF*7pUpFXDGae_X7`WZ4L_mNFHQiy<)&Je&Bmy1nMClk)bUgSN)};6!dJ-FWBt#NU)9|tKnU6D6p=s<1WfdMvHiA8@ zd$E_Wb+tS5-V*1{oCC1SsbAg2xn#a=CV6QkKBaXXYj02)O~kU)!r}Pj`H}i<>7e~d zp{BwiS#6EYsSEhA+ctu5oJ?vy6nuHXBtSSQK_h&d&99A}-TU$9I8Mr3>G(uAymLQV z*cx?Kd!|{V9($;L;=_+>h02rjx6-Dtd(53gwDlSEbR9>@kh~xmM;3PyEVAddg?+6m zbTVCt;r8n=KLghrd*xOS!j08SrK^w)ze&0mD-QpPu=xZWQW5S*CBH87U_o-(`c96j zvOVhU*q1*ENWxW?7NblgmYffTzO>ToeYU7u3V2l+->vceDR%a`-11X2?f*zV{3|*2 zFKX>SsoVde{`gmN^6#gF&c71=gYN(RH~A9u1e<&XZ=6@({Tp8n=>=GW00p!U0M%ooO*s70 zca&?CvNQYE2M9$4f+*)_g6=!!b_Wy4U=-ZDBcmr7ycVOJLcgYG!wxSJx~;eAoj;xj zE?&^R|Ml&3F_NmxedfcLfSKeHcM}o2+R8ZgY#P za>x#{Z?A&4J?I>BsqG5-V~$Y{4ar{o4yBRa*CwRLG$P(mresGRoI&{S>(}3LdE2^- z{{d*c3`wQxh^2x@vq&k2b;=&HLda-H3y5W9cd{`o)meNghlX?*(^Q%sQK)!!^g>;g zOxeTXUl{3qB;Ks9bJ8s@V3s^+IpeV2%beCUB2C9KAZL_ueI`vV`kNSPUCeR z>+y7P|4t9V z!v<|;5pqdDMXGmZn({gF6v~8#3tR2MjU#E1%H7M#CDoI|c1M`?MUc61pbg2E?oneu z3Q(Mjmh3)7bG1uW^jX>#%~^U$487+H zC8e76xR&}g%T54rjgBz~X-kk;V8~KO3GuMtu1|g}u+p&fhDeJ#vr^8?3}y;ocuY)M zwuecE6}_|pQcEmc6!tl887f{AvOPyaH^LyMVSud^1SJ~!()~KLNzK#sHTd6h(w}j< zxL>7zUjtI!1Gd?iz0A zU9tyDJ(;!z%TZp_JAM$d(~t8u4`7=QDj{}{)1e5}qeSBN%l^7NpA@c6nqTt^zYW+) zITa@D^25C8#7kSmKB%}bSzCDk*&A6wrq$Uk^~A}vMX-YE#AYm@k(|FRg@N(WpxVwB z9Ak_;`rKFrmkyUq#`*sJ0n>XylF0&WPxL?QeJa*Ja#LLDJRf{Jn|S|pZ}Wlp`v2D% zK|4|z^s_tV|5Y(SMnmWy6F4=|N8WQ-D0F$ z0=V}qDf&Glmo0U8?@wM0x#(3E%Tp#`K7k#>TMB3?DB!vOcFgxIkind~fopNExIC>w zOM9I^v##<{>$T!@;pR&VlEpxDbsN=RhjmY(IjJEOOvo-EesZ->pkGZ!%(a(3JPPNd z8w6+HI4K}l3@SzoOqNP~gKXZf#Yko~Gvvntv;P3(-`T{Y6Mu2&n}}Yb9+)BgEbq>W zE4afP4KK|z7MqF=i;*+i>%~k8idhgwFuq#-~TlLhr9{{6x4Hj+N5I}jfk zN+g)i`2XaH#~50T`t3M^oY6MDrajnS(a!KrDzXmr2Ou@M@z@ntYlHFa(8-q^?tah1 z!ubzZPX_D19i+LWtGaNqLUbfxn0%Z@WbhEsA?hQLdHMGq<7atg_qdJ+J-IcxZce-b z3*mZRw}|J3b@m`u5q#4T%R2{2Mop8hx||>;h?_ahSNV9?n!QVE*5*Ft{n1J$Mv4o< zuvy2UWU+x3v9+!orG``LR?TJNpsiJ4)~hmNFHCYCWZSJ)M2ikS8fa!JbN|IQ4n>?r zkF49X%m7IO1x3YUq0rA1B}lOG5x_5D4gtQI)&$=~<_Vx2lT2UPLvibcTJyp(?*#oA zneQ2RJ@i{MB`RjPVEvpM3jDJNDUlE$69fv87k2-QM~y`&n&BPpRM-WIx>jb1_!A6f^`0SNp#|@ z!f2v!Cqaw?G2=&B7On3}M6skova*b(5H*Qc?WD{7q-@Z-@n+wN(UgMsJc_!x4p4qw zW^atQy9yB%c~4=_w^?{pazJ05#E!Tvg?jJE5ZG$Gs8L+!_&+60%E8$ZwBQA-_TFDK z2fHPqSm~bbQ$61OvDM0UcK~Mf;L}=O;Nu_;8cc@>!8p&P;<5G89<_h+edW25WYN3G zd5!kMMk1-ZFK6y!b82u2n29L{0EEZ2V*&6a8M0GZNomf%J~wQ&U#`}z{coo?SmvH( z)o_gw-i`2t37dg{1_6mcF`IF(<6+N$sG=*xXQbF%7UNJD)+egq2#GD!_c!i7RAo2_ z8fOB|+aWt1HT#awa1#m)s+8&urRT=nx=&({%uN#YNN7>0z^RODAJ<=M9lpT?+^^nT%B zBwU}yvW1yFr|%DO=M4)+M#*g#e|4V!>~=Q&-e&T5^Wo$A^^<$*ueWXfA2$D2Ig>W@ zGymf|n(X}_*Q^4W9cxb?*wN(=0S>%-UE&{`!s2kKaTE5zD>I>jY`3y1rnkG~MbhPU zjN%dsg8kt@v4>`p*%c^>dSQHcg*~IufWLE)jE|J|dfL(E*BI7k1R*F9kaq`y)*jtn z!N~8*1(=A~mgSP`JNM;|`}%UGernSIt8CG1BRX84z3HGp61b~{jMIL6OvJV`*DT@s z$gEL$5;ov9?)^VGl*WFH%q0<>WQV;Ghn2NINrN#b9#dI4T4bXNQm+|#xSC#h%gaKY zwJ`|EQ0Q$Cxp5VraCv@zdbshvb9_rW|3lp4 z>WH{Bl#8&5olW`8DyQ0ycdx+GD%sF6QKYWlues^8u(R7$C`B0Z)}$>TJNEZWN5D4} zj@Q3`b*!O+aH(suGj6sBaaLAb&9r~c4atV`;;L<372oWc(?(}756{es4EKN?WH@%u z&HDr;M-;d+S%p|*Fw6l|z=S6~&Eq!n{V><3q)7lrX}_VVUakj;Zk!7FA|ZLmMxsi{ zZ<#H_=Y7vToFL30aNH-lK@e+czvhz);}3wW{iqA<+u9?0@%ia%_G5Iuz~!64uzoQ1 z=b&U~{%3~QBYaBe#3><7CCcib-_%YUzl0ltHC&XH;e%Yk#;CNsRkdHr1}-qSa)5ST zYW`TLs92zKiMq@(hP^$cvY?k=zWU7ny5vG}r0glgg-Fo!e?Lvi918*FbglA8zyzIf zT3$ll=*wa2c;DGv`6Qj1(QxQ&o@TKw#6ch_H_>!ygagYay_pX$A%6h0wFO*VM&6R= z4_{DF5xVf0@`LInMJAUyCv_<(B+7*F?RE*91Vn|RO zN%!Ni0OD+*c_3+9mVb`>!}ZXC*GChNj7Mq+xaqJiN9F(t|3&+sU+ie{&r1vKh+q~| z>4G)IuJI86m=I_QT{Nq3F~lgy$W$ebi~t#v+*uMHjjW$8lcQe1MCL^}84vn|(@48xecE^^lf*d4L=?GfC~4@D&RVw$&K#yK`9w(H9jEor5A(8V<0}?W6rQoKJwZgl zWw&jpps)s6Y8MlCqAG~~@88INLL@{(H}NDAP3s3VGD3IN+rxbl@F>26ahFM8qhxf} z@k#w#awJq_&|)%4^jTXBK3|3iWiJilV)^6y-E4GV`{vVkyJPz8QA}u?TLwol9qy5M zY&(TE-l2GrkWmx?RVol3*3S-NuvUZ!B@mCv0wgR_0q$jZQu4|GVKkfO`mHwK5z}xd zK3X-52og4h%pcl2uYmugE1z%Xw`fm$<7i0>q9#02@PQ8N==>yT2e6|p#>qHNn`RSx zw$(AYKzAg-j#%8vAJTla(ev-e-j0h~_!74{+K?m<#R(tG;4&hW;0Be3+P)HGHd8N> zjAR8uxieFj@MnVOFly9U`)Dep^!3ymF`7mWB@9Ib%|&9Bk51IkxJFKU&mUl!=B(`Yf}oa#g_uj0A4KJ@v9jc17$c7(zQkkh#yK zu%S`7ja)~4EoiiY`wFPOov3%AZzS||k%;z`H?d+(dQyNuEQwsxsvKCf4fd1Q9~o+5 zqZY2o!|}G)@05 z?+-L&Aro*?-IR1O7@krYWG*2DueitYx}0U|tDHYR@;2I3ZtIYh-WbG++nNn7`T7$B z5&+?do6$5xqu_q|0wXAjY)asTl=Z&`m7&)nIem16M0s4^tUMvm%YeSHAE+sNI0AC> z>JWsA5MMYyGb(+CaUQFS@G*Re*x2$XwHw2ezRnIGJU~Q+%SXbOpZq0|zoVZ6%7gra z2xqt;=w6&J&>u%UeRPzbx*eY-Dh)cH)5V)E>wYq0LOEG1>}kUpd-y+0vZhfW6V@|q zUF=5upXjrG*xe&r%w{!iPCgfS5p!}C`@QIQ(YE)EKFfzgj4w8D&*5&MlY%H_x9>gA zEBf{KGd0IJ?bxQKpe%*nDg9yGt?lMV{NV30J#ILYxQ-V%QZ>&Mrhm%O3J+YzibnBn zl1g3*x(TqiW4kiNlMr5DVi=e4*>P-WB!Ar_2B~9|%m_hPY!TREDJXy_@TRhA z)mlO4Wdj)4kTrjxH=pLUzzUG-sP>Q{C5$r(#an`~2G0K+69S!1>B`;f0iw)j=wz=b z1l8@yY-(1M_@FgN(%+3U@E{&h(K}F0pwqi8>AgrS(wa@80ROw&YcUOFAOA>I2CYz2 z$j~U&-MpbdzVWxU&6LzzR?el%>GoQ~!Z(0%xEiRzFnmn|OpPU{3WXj(IsO(N4c=)OJSJJU=ERB@{zRpLPDcCRe@8H4jUr* z=yBJ0M;@0AL!w1_eyAoczR*5#jNwX+<7yc$C)jsSlHU}QZ%qK;?A%=iQ(YoRr^?HipcvnDehk!r_bAr@YEPl3^pX>QrTY}#>l zNMsO4O}ZVKQ}1_~iDTS9AziM%l1QCI+Rnh^w>ike#?7d3Zq)Z(y%?^4m}$>&kmKb& zR~Ad z+MJJ_#7zAyf>_V8+Ljf52p(zBD(GfnK{@eSF{Sn&`z6cn$}Jvv*ugZaF7tUI zQ6d;Ggej!Qb?0j4aMgL@!rifTx@ZU0@P**qrCDG~`=NEwugZ&N3 zFa)qBYZH*s>>P#8&dRmsF~h#>dYFF5-AExNO4+4Wgn8$*49017@3?bw zmH24bqULdg!SLa$6o!u5986G<1RH)3AWsUJPzWbCB1v+hBWxZ_8rC$(#_M?8jA`~x z3Psr}YfvMFFG2aQb=Xj*U&k1e^Z?DKLxy-H>W8+1P>ipUdBT(NAt$hZtldwTFwW@F;en zgChf)OGEqDVgD*lzKRBu#$p!(B4dTi=}Y>N5U4`7j8dE=UD#~eIYGd|h$gM26guaP z;cBY+KFLfYg)2GYxf`PIn^W1^PoOMFrl{@3i$?72|{^AfV8P?WLE<|Jp#}i%Fra{J$m&Pz!UGu9ozs?x11qp<*Kl(PgY;=$;C38+K9DXnf6DWxh2vS8 zRv{@QD7!iquaB6VEyaoOz}!_iLl;9s7@3IEH(Q1#g=A!qL~tyax&lEh?Py9tAgqr{ z^{Gifmgbo@!Reb5%W5y}0d~U}xT}DyXNJvYpu!BU2M{y}*Bznl(ctV+C!F~#`(@8% zQ$CUy?vAn1bD|A%o)`L={+DKqn zPz|XmKN6`hQ(^nN(~}(OH>!A=)>cTBD)^H%dzdE%Yup?eQ@heb|0+)`HH5pnB0ecc zl~u=Nlw^rIsp!&(S69^cX{-tiEF)M5)ky9nFzz*A$Jr7iNX9JMV8mWPxqv94+xcHx zCzoz$*6RZzhkB)lS+>XkVP{wD2xf? zl^7c@voato07Dy8JTcF!M8T2qye{O}I0UL&O)!eSp4HDa2(ztr%A>g$Qp)`e+9StT8qH@yq=G6Ct7zckVG*^4u5Wn z=x9ZBRyh3Po>(DH_E(jXaU%=Uc`d4A4qgf^YDsPx(!FM!xICv?*pt{2pZ&)h-rtWE zfvIyrvqJn-Wn;J2QS6u|P@*$`1S?Z4=@fDDvrU^}s7ppw6MJLu5TWwlOT1h1IOiKW zVa22z;F+071_%MuL^9Y=V}}%2GR1n#SR0N+Qxz{S8nmgs3db@|?1fQD;TR^=N!AQl3IA@@OYv zhfETIOdQT@NC_H(I5-%t9aoy_h7_|0WimyE_IkzfpfK~3;i|Mgvr^il;HqIOS3ZK>DuP7WSgzE#ya6x| zInQJ$mN7-b&f6~tlI2*!!2Rd8T@!>1hsM`lOhej)0B{bR%MKCJv4AbnfZ?If)6OePU6HO~T71^!X6%6=TN| zI+e^>hrFVO6Gnd>4X+{`tUlEO^y4=8dK zMM|U=K4ToFeEA@762uMhYP%~CL&&|3<9jtaGV3Gp2*AW5z?&jq;_gr{43#I`s&PGd z@MR#v3NG}8>Q2d&;<8Uz^)5H~rdv=xmH%DKY(7h-TO6iW? z<}eL=L*HmGMo_U~-xsA0DryZ$>+(4bSo%L9ger!T>W&L;vI_D&B zqFMw7C&4kofgqG4SVa&K^P({{J1Rm2lTTWf&YJ#h12UVPhAAez8A=UOM`Dxii7I3r zP!!P^sb4uF_x@;k`IS70q?A%$&d}$h+C!m;KxzPgFh$r9L*HD1N9(G9b&dD+tV%2i zqNs$M)hnAN2?0s0F(<-N=8_U6lz^%6CnTWbVdTu|)6YBE-b*)0G5qKrH_oafEJT79LNtw49TBp z?p<4S7TA!4RlP|PMn4dfu=XU%d|(8NH*-1;T)y_4F+~&mz7V$giB~;1!sGK9Ud9`n zuUT*6pQ9bOVZ8o;DxG0XaAxQxl)V@cw)V+GTW;>VFnqpDoA7H5|BsoF!B{)TrmV0* zEk%YUZ7>QFv^`N`a{s(`KS^W8W!!ANn${^gT4Q`wEVulXzRa=}>-S78YxL0O`o+J6 zeS7U$L;>2?>zLRul0|$LOc}*{K_Ci@XoVRJ>JgJ)USLIp42_~Bg3gDllS_k7uV+vP z9T5HR1*FC7SP)3z4F5%-X4IooqUtFO&2atnIyb$CtJ}Y0lt#7+BXkHpDm+p=1xmtV zAn7Y|Q@de{5^-U%=2n&Xd6|Q)K##@R|4>~y$o36%KFt0 zw6>r+7*3KJJ1>Y-RZqR1S1G}?4BE-DfXq>a;Yx!89C={}>$=Do@ca%TbsWYOsVKW~ za7$1w>D*|+@inbD#SW!UDJQ{H7T@#%HWjV~VR%bp40aM3<|#G@49yY-l8&&Ik7&e9 z4RL3Yry@m`FVwfx>7WcRE46Z3>2EMcjYDgU8raYuMzKU4$s?&q)?`y90L*9L%)~6+ zk#lzS$n3bpm|-e9`1>y{SS~OzKe;7s=q8#P(CGsv(8}1lOyN_D8Bu0Y893$+IYAgv z4g$ge7qgGd#Lamk5AVBEoFN)cnK(Ck(4WX zq+JjwuuYJ~RJH0{{Y&5{-tj;o#-j{fK^dN1ZLZ-Dz1jJv${_!3ZswB+H>wuFb<%)5 zmi8I*T)1`@CyFOQ(q1R|;{#{`lD1H`Ph8XoWYDT)YzZLpG{lS{?@XQ=I3s~T-Z|Vx z_KUy(JWvsYsN6bPcvb(=Oy(qJDYztJ!uL`D=<0yQhvZ2x$#8ZZOh922iQPQGArIxm zr_HRU?P*@L_*s|m!0BzC@GRrBhD38HSb$la=SkEk?2UK`c=xo#Cz953 zNS+f#Ly(a{K?acVM)Aylmhh7LAG6KKryVh# zh+KlK!*oY&*eiJLUDv%bn9zhh4oi>^R!O1OC~kygx9kZK@~$Ifo5+}pO_GZQlqC(N zlMRavaMuo%{vx)hMZAa5p|ZTT?a+t*B(u&94!R9FjsD)8mFm)AJUf>Z(5m_u)gbw zVc-@PJV=&#WGQ~`uii43j@@l(t3pA1fW=#S_)g^#~J_g65(N<1;O zvt5AR_a>(M2}RFpVl}+`CjH|N0CsNX=}TD0;yhY4DkkKLIWw8idf$f9glG=u35eD$ zvR7M(D^?-XkTbdu7iGXKim5(HAnaJ6Y$sL%BLwMblbff$=ksrVRs{@g(XV!36Sx}j z`^_&QTNGNdCIo`L`UTuP@=J^qn(P-|B1AsdwTqqDex!V>3;2kr6e8wpEonI(iqq z7;{lc^6VYsX_#}Ye~p5vIy!-W^QF&=S&c2eEZ2$L0n?s$Rd5+N17_Z=a8r54p)J^o zsGOt}8%vtGvr!gh+(LPv6|g;vx^08|A?G^^=8#n!m&|Ul3F&F0B_?8gPu2|!7|cUr zP_U7J`jc^L+S1mXv6W!_C5uP_Cx)* z=}B$wxSmhx@)+HK8ijEXV4=vVG5AvP_J|822DtqYUe62P`x5({#J+)mOO5N7umjgG3euEhB1vK+ zv}`VGcC$h)a3CDLbTCvF7G6~(&pd|#IZ2Ye8IR%Oa^|3uM)L+@l-+$L#j70kB9i{v zCBf?1*NB)=VTOr77;)bxt}+N@x9>#XOWi6dEO4;msu?WwUO66)MDk00va*dCA$8TnVwE$CXih!^}BInoV2W+4(X2 z<_g#lkN7S2I3DTZ>QWm=>8hxCZL#k(pt=bPd+CBWZePh`Y=Hbm=#z`1P`nSqJjDFf z=53+sJS9h{X6v@#3ljSw1eyG?$hicQ;unw~W z8mXaK)Pa@m!3eJ=hz6`X*V%j|{V0A|OvHKtI1?W1<>(u#yN&s}|1|H}l=V|Pu|QRr%SfGq{#mf-?J6jRivDB%7<=2vtf2zl$WwVQ#Nu$?sqvQnf-^!YsG z@=VA$li;)q`aG8gabqSL3_fij$s^6%V~l4(Xe|a_BQ((a>BWu)Hy|OQRWqO0|))O4QN(Jew-WV#K)GU^tFJmSPSE9s*8=C*biVQ)mbG-Id?yRKCYLCCMZhupx!91Z6C&3zK z+gsC=Bh=6AUL+<`h*q}PoP43t9Vh@EiquSWm}3Y>2_QmOK=w8Hylor=3L7$k2qGj7 zN(Yt`KoH4rQR@$;==z%qlsk#Qe>Vj&q(c%+qNxNWQkZU7oH6%&HgxX)w>#ieuP9`S+-&n6}$0GXrf%+(%9{Y2n1iNc$BbRMl@C^`Uy$b>N10d`ZVDN~_SMQ&$6l^RZ1_M%KEIX->!d0+4!COdnd%g>^OloY2>gTFQ1q+fe$RN@ z6g_d{f6+6h>>S}s!1{EbL7Twyt`*RdQ1yal&6V01+A3t z1!r^2V0dAF^e0Gs3u#Y^dK?dt?%0r#tUo@noqfm0OjE+5bTUD1mNwE8t}tsxg`P`d zN{p){yclX*AtPKqY?A4Dc}Q6?qN+QdwL*|l<~yrjTz{5AR0^0yGO4OM-Y%M-(JV$V z>kTs9oFE7uJszLKia`ni)6%88HYOGa9jwJ_!Y|?HRa?%4Dfh9=D>?!Y;uAA7rrl)aWdnnvP3ERikZv+$SxK0}3eQEYjk^mL2 zhb3W2HVYAxKF@GDh=LK=6~=y4s4FRocFr3#FhD3>3ETjq{9EIt4oXeMV!(tjEHGm1 zy^}m+!D(*TO4NZahv2BC}H5yv% zxTE^lT~YCvE^Zj6{xdWM@g?V_mssHtxL{zEz^(#58L}M!fu0fd%SS#H9{5wWuRL-f zV3TE(ytVo?X(aOFWE)HVKjfQSLbHzKGg0IuzF2$zs?vrZd{e$zdYT zD4yCV0t_{4L+PVK=O2q|Z2Yyb2LaX9)iBeE zx^X6fMFKY=#@dvw`$(RJ5ULMh9g_Y8CGHF%^4yH%1PaUxL*}TWIoamK1@dAIpdQKw zhUy_en6Jjrv{fq;T3D?sg}ijMBI%(6;jUFp81uge3f1!@MRwfi=Xg^RW;^bpOiOIs z`c3{fEA}>fAR2(ynuBs!kqVRa6&?3}aHJQN| z*k&vVEC%H@(~yYKJ#&XKaH5P5IZ$jgFiL>3{Vefo*)rh4S%lOz=?1aZxCvP7Wqaq2 zq+@COGeqARfI^HUA#laAKG-Jy+FJQ>rUorij{c`WI8&-gt)htO2YFRb=OTPz-|@<^ zsAxlL3DLL%EAA83k2>Q-CA?KWvM9Enc1e75UQ9yE%oJF#Lq9l==B`8W%K#(jTAl~u&f9KqD>fHBUy{cEQ zYuD_(SFh>b-8-z+y?Xst!3lonqoENPN|@8Hq!C?lyYy!zI-&orA)67WV#ZWDTd_K{ z(jW%vTv8zI82d|+$R$;nI2oCC`^^K_l8eiY>m9l8kia4?U+x=&LVAs&SA(%+o@dAW z&?p_wO;vn7a>JRFTVYp+u@_k%*415bZ&``iH7kfs_wU{#eC5*|97H&jV3btP{#?%I znQQ_UmYarf(}E2xkI&nY&rIL;20KyGV9J5SRJE}CJ4iwBe?$8a_CX>5mU^Q$DQ zS#d@NXOB-l@@32~61n5?Oby^LC}=0i^LtNfjvOtwYz13eIPvolpcss1*!-m$U2=41 zQp-hk5_%JYt@TxyU|fy^><=RhIu@IEH}xm|WYb#TaVGyWWPT)c)<}V)OABgIa9F>T zvNn%mWFVXRL}+%`??L>}m}mPlW^BvT`_B9R_vZ*r(?zPcb%gm`XL{6@q!umCh21`G zW^f3<9(W~_B#%@kav&suMD1cfWh_q`6b7G8pzphVV{4qmkQL^%;;=h{toiLFj8(|o zHZ^f0TVQ6QhsuwLKJu_NLnDKw1#T73Ql|JN_x1bf=|J2AdU|=?y_|ZWR;!~bG>x{% z(!}`!g~r^tZ`Qjqm1A+-u6Ave&AX8t{zd+RtZ!NxyhZ|o0w<77Dc0P2VKHoi1|wfL~L*Q5U0=r4;B3)+S#c$k4ECVSE>pSZcQO+hx`b^;>%9 zP4?B4bAxLS&wTvB<>u->3$CRSPtm?+iPWkypraNwy1Pb>ykDOR)`-$xqq8z-0a&Lk zLeAuP{C`Nl6AZZ#9#;DCIi2O@HOT|l3hV>tn?MehiIX~yI}g3xy6jDvQYsDvu(sIW$#8;~nu0 zX;9<6Eo>i^W=|Rz7g5p&Mftrq%mxOTk@g4Z5OkyQIE9R`PG&G4($Ywb%*XWghDK(H zb9D9=gfQ96JAqT(#VGN^#0#qi>G%P{o!$CgWA-;WVHgw=&qsR4?SxcSacO}v{k2vn z(|{~qfrQk7q=*<)^oT?QzwUcj!$9Ei9=MGKX2*_(3`27O?x64)1` z7!3PxKRJ^jFysWzw7q=AqR4(d!3 zbOftj1r^1u?MgG+q~p6$q(oj$GRp-YeV^7i=9Y1Qwog?ZFWy+Qj5_`D3Kw|twNc>} zBYMx-@sa#fcTHKI6@{$#|1H1iy8XYAn4Ya259ub#*1Sn6JoL|rwr$}mwIb9p#1N#} zC?a-~7z6jMdQcK(h=MJL=d;sW3iX}#@0v{q>N^R|cGMM@STbUAJ2e5VHWIn^!3)(M zwN*zkt_3dE{gS7qala(@cK+X2u_R!)xu4r1+)DZ zz2Wb8&b3z^W6@rsteJsG`)9koQFcFRu}D*lB6tAP6D-Kt5ABOr3YKI(v&ZWU=&=rx zgNxxq1^(srV`GaRjM5IEG!IT-0pN*Wty?M8#*nnCtV5qC{0=pW{FbW`^~PkJ!z3*u z>__&P&pp+dt!?)vkSZhGVsf0z?JFOiVZomEaEKPrjd0LVJXPuE$qjkD{`pH)43gYZ zpH7Y|nvIAP$+J(5n72=!aR~lKcK5QQb9fv~kbb=99_QB)!)BcHVNrz>jOYn1c?VXK z7rRe7_y_oIPx!MZNkgaib!W;i(ja|JDz0OoC^ZQa%cB*Fw`FrXZ z3xe_PtMbk#m#Tt>l|1KDW<@#DLp#oeXPmPIX}^Y7sO%be32yXRRU%}CQTIulS^p7QnC)r&2VNDeBa1p zMW_aN=CHcS5~dm9aZ)7meUPoXexiBw(|%lRUfD|lV#H42$h8K4picYR2fO4n(r*J< z7?S}8@@j;UZ1lLnrgcy}5C&&@C;VHg`5QtGYYLu_k?-H&$CHsy9|~I@a;&1>^MyZT z%>P6NYHqMJhZC0a=?f;0zkR)uNrrGY0@j54Z z;9g0OR(aaH9_67WH33#vowX|VuuuNHgL)Q(94S!~+z~h0Q{jh?tTPe~Q3XCm0w%Z$ zhrjW}h#z?<{sA6d6TOYdJ`}ydwd)zZpbLixeZ6~K9~o*H-qU>Z!0z4XMQ%8S(6_tS zI&X8cPegBA><0dl#Qu`T{)03&`s+VQ@!3bsH;?U(lA`|r+0lf*=)&2zOTai%l&i)+ zqsde$4U8l7r{GAHg1gsVZ{yPy4*w}`?d!FiLR^$Wnw%h7Ja`i8;z$I+xEnjA`vx9xh3~0YH2#O zf24db4bS8xAcz0;r2Mbxy^YjHlHAD?sgp^$|Gt3(VTc~6FoagPpG0`$zvONJH|zgV zgi$1LGRc=0P=gu**-groEk60rQUsdiPDYb-CY=mVUZ0Etr1X@+{Y1k3aAOFgp8}SP zlCH+%Z;d?)eCkk#ak-Nbsgnsgf~{+YNx}1p4Q$pSkcfH$JJFXrNkJYz0g3XZbYGT9 zpA2BLAmp^4wsq|83HU z9R7QLHtf}mK>hpVn4>=bCH`wWe!`3DXKcY9CyLKJp#a|hn~u#bCa4$1{$*0GMV+y% z=a*R(**D`!CP2diOnSAtL~g1SrFx#-o&M338;HkMFH$ zEG--TWrza&HQ=f7awk!=kxw8|6F;%UstNHcY()UTsznKo6IP6&h4f(KU%&Tmx4;V> z`n)oU6y~68{(DWx2o=Pkf=5}sOdI9N?3>po@xnIExEWJ~e=9#<>9hZM?>wdZ;MwgH zBGEA#nc1*c|7zaJB+=1s(%&olXCsw68A9VPFh*jZ7gEsG0T}XLE)upHKZ&^d>*GrX z{PpmKKyd!?@crLDz7c8uO^1k*Ubrx7`e@DIUp~HAH(&*LZ>%OKfK<}S>gd73kqxtM zLNjA+=Qk@pMA0)=!&h)`#hs`NMyGz2S00IgL##eL$8PE}ZFN>{$ZvTcZq<64%-1|O zwyJE?^_Z{lG;70dba<+iQ^ecQYQBj;cRB_@Lz}!zXU9ntVox~dpoanc+Njfn6`M-^ zu4%N6KA#u0F8XE70hD5owr^N&+5nL9lpv084bxEIt=i35{{Z)VDksY+HJq#^xctyD z5+E}5wCkEwfBbE305dkNE2q1!j=F_FN6Ce41_H}@94>qv@;P79p(1BaHqRtWm(0oy z>|c5rq8T0bNCQaIjQ@|xysq;PKydI8WS34+AC4(iL-{L;Y=XKe3~_)F=WP-ubrh{o zT$rQqeaTJ6mra{@Bgy=}3}B`q{A28xC~*iUA{EpLl;61q4&T@aw)2gzJ6X1&Z#gYBAgT=miU?{TuF6SCFc4Pj&I+i zz^;6xMYr4Y%e$u$2x&0CcZd&nQ!1pogx#_@T0Onv?l%Hq^`Tpipr={&dYd{`t<-bFcf6@&5)61bBhO$F7FMvjf-;)< zq#glFExgvRbqRdpz>i!)C;w?mx7cV<5mR==l9=wa< z|5?a%i7<-8DMlesSX1_V@O82io<`A44))cAwBd}gykDX$&L5b{jIPnnfV$vMZVRZ2 z>Tx{n43mLApnD>76RiqVdc;dxU)#nrbfZuabbE>yw#ZND!-ac_;8`wG%_sNj1iJ2j zOWd3^s6sgdtH5P3-sN_drLUj9zkGE+9LxY3bnW{c`u2kSyEBO!0kidH#5IzfB$Yer zqA$LfZE}f8(-!>3u%%lv3G+*At7As z!r{+ucQ0QPYLO#{Ge_-n`TamlZtx)9`zr4~TCuej_h8Kh)?YbbjjQZz5wzbm(powR zBFG5Yhr*ii%rkKcw3na6k&p$ls(YDMZh77z(2RDt*cpm=j?1m|Ds(Keg(T^X>%L&0 zFNyY;Es#A4 zrfpFCO_ZFa{b_1XO9*@;4G$ieI^oc7x5FS7jp^7tV%C}-G2j+i>KZwmt8PB(yf+b* z)|Q3yM6aseutOCKqtztC_;~Pdy>#^W-zVa9T8fu13nL!V3pO8D7DN85R1w@Ykj+kv4_8DMI;al*1a>3hqW*JMKTX-M-GAYZ@8~6j=FJ`q{IdecC zgY;{-3NlJopGGx$D=L8>L)!TiGf_A>lj1)$1FpU3FOI*uA`lcDr@k#t1_b3`!HZOjdDy)fT{1SdUbXV< z`FrLLln~>czg<%9WG6RanhZD@eF;}f&~&FQPWQANkUG5ZLkmEU{9DYA|^%O;YTYcMK7w6M&1@63@g1#lrfxraL6}!-B zhL&&^NJMsBP@R?w8vOVy!{rZP`}hnR<@hMnyXi`kBVChJ>El1b_3v-U<|ikdV*A^k z{}TBi00aT!K(W&NKVUro*1xbG{t;NEef{oeK}kT;Fheq0J_k)$GbiYv^fm`~Q1$Xf zHV}01N-)($|FGfqSd%p;{@CHMRu^g9WJ9oOPEc-v)cDAwmN8rVm=^?Bb2wS?AR5q1 zD%^$&X@n5QI|s|%uMVW7{~2Vq+x@6ZJu#r2&(t#a`}@N;K{e5;P013)-Bu#zVu$zY z3T?iBTaf5%8*lKwSC@Msy;2as7iB|lwWYOsWsdhT7xoSm)uyOB>G`M)tfd{OiAVUP z|4XlCCHuk3nj&y%K{9Z__sEmwZSYSW99ItA?_BokEA)0rN>-F;lKVAqF|xg|(8G!# zHlZUH$v4wAmn(mOKfs#Barm0k3z};!h=kgRQSm-be&?IY=GXp+RA%bCf|D$2ZTOXbmK_1vt^wD!Zl54w@k zm3y5fQ1{e9^@N%(&i|~SaA`cVO{aJ5^hjhY@@v+-2x`gb*GSbM_9n zve{A!1pINR_c7${ME2!e6>d5RV$KrZ3fM9UhZk<_vVP0=ndCbPQ_wg{a-y+`WhSGs zZ%BiABb5TjK++&LUIHX&hTlKtW&x4pd7Hr-)1Kg|h4iFYzH{j=&+*W|mH&8Ni(X##j!&)J;A-3ZP}r*Y(^NL{xfJu$+vBErkoR~p=@g8RgMXgCk-coa79yq-MRn%CRP8!2 zcM;nfmr{7!^TSF|q8?YCV^&xEjYk7kseE{DSEx1ic&j-wdg5oLFl>)QAu2Cl?8Ptn z)gSLN1sqp1(LRWDNzDmGcKklWU|f!m`}s3$>$v8iSL9z?ZS7+nvzTaAw6h#YW*W}p z;2a&p%j)AYW|tImppq!C-YOysL*Z`gNNsa_IaK5J_;V#urQ7GfhHgEget9X!Lscap(fipX(Y`9lDFoxBcM9OWCu6$rwQ#PPa3AmnuVKO zwlN)6zsTBZ*r*M@FRh(oZ*39FRE~3b4eO2Q1K){yd{iZfy&7jT!K3e+9{1%FE3p82 z2UfpX6M|QP7*<#eY9H2`w1h*w&8=OSrzu?Q1Ill$wePMOiR>q(?0)I`fTK9((rMHv zcJeeVYD}V<;YCsTd-u>*5vI2hhYuu*6Pc40DEcn}ek3xX_wif*3CW60C0i(^l&oqa zJ5;uC{a)EuIo5JkH@5t})PAABABySuBhMEzw|T$4Yj5PDX}MciP8cO9!b==LK(u5` zM(3+VWix(~|7d}n+PNAb;(R|$b&HON?NaeG-dD+|G(X4RVyhzw2S?LhYelqCcWwiS z=j=CP{g+T}LLIV#7WkzA=m-m39MtDO*ngK^7?Q7heH=7gC^1GH(lP(DG4)g|H_)cv%+Y5w!a;c%x#Cm z?@uSG*y#+mkh@GNjmbTyxDmt)GXaJ|x0rCH%B*mWgU{2}nLEFrKB3J9X1Hl0iOXWV zDMSxh;&#QM>c7qPbSNxd z?8qvqP&_+g%1t4Y`A|xi|KL5(Jh#P6$)em*JbLtL#fK`9&zUD)96d>b?$L1Hlf|}* zCf;#)_B37+#kj*_ccW?j>lcmk*=r){`JJrXNi}DR8=?Bw+}LiJqRqvvm{C#c=Y>`n zA5u8Yf$({idh}s$;ht4%?cwmtDlF4%r+=su$D@1Y@ANcXY$it@UG&258~HpR z8jIzeV+pZWR1_G{5aNJv!acf?TmUDLUx$Nw}!QDAgO0 z-=!)A;w#iwbdG6aT@NY}0*KzPoM-IKjD3+=xtRNpbc5gdtK~D=r&kM)&b3szcjTg5 zPv=?w)!4~~O4n7Dzr}V{zM@h~xcwm|hX~mWq({c2d`@h>iY3@Usj_KrGB00!IZQyC z%I6QDJ|x~E&pgXiQR8^~YuJl$lm4vIjW#8ItRSoqT6J`?5+FO@>;41mu!KzJpA<(D zyz~15v|3U48cnmGQKoBhq+vBDjwed#RN%M&AfRFA{QfFS*y)jfBcNebCAi|Dp#wtL zzhoM#F!ipX{;euu)hY$}gW&2^JRjAWcB(bf zndg+kHDOe>W>}5IGpv>_s3k5yHsgvhKYF^i-1&;J!>>EmV>8usD62G_Wz-Q&#<$2k2b*6UVZES$1_i|`io?(jKO^$!T!b3~a-XO=gyf7UwezZW z!21+$&flg{+t&O!o+AAa7whNMmo~R-vcn=i+5&*3A`y9f>K}lXx04*-Rt|yVKcw}6 zzM!>Dd29H&<-BZ@mLA)|_4K{`QWYzTO#1Lffu#PYdCuX7teOBOZh+j8b*qE}yWk<( zHS^uO_auxWiTO@3@7{HE%W(J$5;3txl}pA)Q4qUKz0;u!wST5pk<&OJ%JUlYg{ZI5 zA79*)!?0YJeS*;ywa|zN1svk& zRAijaONY0_BQnOQwsxb*D@|XsqY2aUV)760Lb=}>_l>Ssj*b02prFz0=$3emj3skJU%_EUrrw`kgyI&9H z%R>*DNPfi4g!N7KV^LV&l2%PdESw+oul`k&{{ZtO?iT`V^17eQNYx8gYf4DMr5nW7 zlW-uakqP7yvqn;SMUiBwy)YTSh&l&HIjL~>gJ1m$Zxui_+H7o*BjRVw5rKIHFm~$9 zVZ*W}Ge1JPmnU&+W@Mpc46x@2`->1Z-bT5|9TH?FpRV`4r00`j0SPK?r>>w+dP`s5 z7MOQ5bBcp+afrSS+#Zb(ttN^iZt52QiL@@sqU}_Muo-%&O32(B4VS9re{;bE6Xzwn zS5P?Y15x7irh1w_PnDi-A}sK zycB^+P%n>(eu(>N znLLMeVGTgtE=trA9haqtB~WcPrsM5}ES2*tx+Bs06L4Sap|06=t{~)$-!U#xu zxL8PEZqyi6Xk`Lzs38eyB%~{DJUdF_GY6ZT@7>9`LnNiyQ-`BXhg+8%BHGi^kV&l|}n;Z0mS}PyMTu5Q9nA zw5-fyw)xVMX{OqIFcr$n{JJbx{G64>c&Yt>WveoMdL}t8aUuxY&;6LjA)a)p8Jiv< zmXEy8e&bE#=M@%-&2GyQ$GqlUEi3QOSK>0_2Vw|zi#QdKQNkbz*%8%AN{7*4qip_eDSjp!HRx3HR~rtO4b1bQWzk7RrA!Q z=Pq#Pd4q1jkPdpy)DPhIlwei;EGdVs=B8XEeG!$`NbAmm`T6fpb zRelD|X~bR4N~5%MyyX1iojYoxG$y8V=b22(b4hq!{ZH5aTh^*e{MRN~dW zyT8v_!FOO(#T}UHr>tJjOqvYZh$Ne%6+vj&99qQdlqu1BAVT(5bl1ZHp=O+0rm=_S zKfSWwf;eiL^T)l*Qs&I{8S)Z!=#8H|89wv>EL;tTN^gGC<6xD0e>v*%Y7#l=^Hf1| zWmqbcLHQo~5C^}OC}wcSl9Ec1Sm4w*iLh6w9H4Y_b3o9R+tuB!zijzF`G32Uw%aPx z2hn*H4_uw*)|l*Sz!?pN5Pckje$c2UFh5`rO5wdjjmD$xgQ>S1QwwB}yXRC+>ak9Q^Z7MvU@JWA21)&&{$V4pGBh`@e9-C!VtwHYbK zgtJ>n!{abY@pV5E><*5P&;AZ2Lljo#zYmBR@}%EP*4WFqLmce?@mU3R9o?7cdA~c2 zQdGD(!d9t#v{37%PaDUN3QR0AbT$ou2DGS=njaJ(A*!T!gT-ArcNjsFMa;|ZaHXGt5*XG18|!mjoHz>)WG9H)<~ko$Y;pM{oW_DX;5R6fry0kR78!1 zw>d89=!M1$g4zjxn9{cl!M?QF7Fel;D2YJ;hkx0-ZnPFHK^9&me7E<|A*5E&mRySs z7;%ua&gX7aq!%@Csz78O|E- z`F5g)q)L3K?@k5~d{A^qOTH`rcByD(Z_@Y7_2re=r{B3hZpP0304|~7E&qockONjr zi$!62D8IUE&sjW9k~wDgvIh%EbAwA1<5P6gKI8gozJ56m@A+Hm77?FtsevB=NUD z)x^*20svI}h z`F8f@gat1gEC@(S3UJ3ejzcaz3=9sfhJ1lvA2*+71S^D^ZZ)kg-X9om{t}r3MfQ>AQOk)i`Z41)kfiM<)EL zuaxj0UPD*e=DmVy_D-R;^bRr}fa}WFtK&C?+%>UpNne)y{sBY!z1=BOV)VI7C>kx) zZON;$Z7=vp&bc9&85g}bz|mwG*`t?*nI8&-N-Cn`vCHVjZ0my6`^aOm7%=D@q$@sw zxs#K%87D-zI|7}v&&WG=^%@J1=}-ThN}9>G945)Kx_n3MLsEu-iwsBG4Plxh_vw5w1($=Y|OjYB6WR_ z*Zk*WoT!-OG*q#D$-XmNXaQBwgM^nPH{7ajqS~zk^!DOnbBxoF4he5tTdLw=!CAO_ zypczkzX-fKdHSQ~Z2u{9)T@G6{2F_N`KNz(L)P;<{!^CWDz zV&CyUX%VItW0ETTRAx_W=#18KQO6x16Jdh7OnY$-7~9ZWp@_yZ@o!3m+MTnFt%XXt z4!*&?A!M0?bQz?4Xe#B^|7aiMSb5DJ(K;o1UDE^{|2o1R!KiR-eh}jqN{eWHXYihY zSLu;<^&Rm;9C04(jh$I{PTJ#3pKkc1WD>{c;gFh=+)Kpm``T6A9{3V<>$bTnC@!Yf z8QfXO=Gf`S=4t$qCFx!og}B$P2-ZNwM#7SauJ*g1UJq9cwyUrb))GW~lgx9-HyM5v zY(2jYs77Y24}U-5Q`EgP$99)gp#zL=V8@>d=*xtQ=tL`#O-Ro=W)S+BT5V;w3G)~= zQE0?c%_zB)rZGgOkfz2nVnb!585AXRsT8Lfct$lrDh3{ifJ)#$q<8O8lqI ze?4dQ{+&evhke+sI){3}Cqd1y0ZI{)`#f>umOU^)rwmut!K)zWj<2=aRW6&NRu&;T4-~ zGFp%j1Xe#5-ihVkR8FU`3hop zQfcO-%-|YR=}nRj7AGwTxP_x&h@!Fq)%oC-26#OK$?;QI(7YDX+zS}%gva`Q@vTKs zPRT3;lgK5|PlKbrialzQ#A+Xmw_iCY+o&%`z<>4ub8aUBgbU6Ha9SFJI(zlI`|L>s z_M+Eu(cW7vNNq_N;>V=3)~JZE%8D*8ry-L1@UB{;p*3hZFa}ua?wJ$wB_nm&ICI7~l&8yZ7H)tV|DAtK?K6iheulF5&F$U=_qvFpp1DC#>e zcoiBXMJdn6^@^i!`+=T@%xWgnKN7R&t^KCEtzaNC?M`DWpu@Z!^vH(e3rVw4E3H)V z$vg9Yy-B<+4DU6bA#r<+vKEwv5lPzNT8h5Y%x^X`^JnKJs9J63XCsUT7wZu^QDdJR8) zt6Z+4;=@~#5K6sCG^=ij{4UXyNdFtFrMSIBZUb#krkO~}qwRFX3g?69TZ!UZ4H}9b z6(&RSiZ%BHp}Y)CXVdp)y^awd;!XWPI1go%c2!9*A4waiina~*ks)vF-tz6thp|v> zZ-<8}5ikl}Y!7fVCphOT0cL)bImukgqo%nrA@W%k%I{_auv%JGk92gPa`$=;%5LnhswiF zdYiouJMZbqwxzqY>V4Y3={7VDQ+Dvf0Fm6DgR;fwW1CHY-*G>fpkTE`BN{YL(%^_j zL#VAh8|i3laJH^al_|BvWOyg}X&yV-yvsC~8RAk`@L5wyE(PH+`P+zd+8g5xzfd69 z1^+Z6(0VNz#2Sxd(kLn3<7Ud0_IYM47`XGb@q>7!g^3pT3w2w@`wh%{O2M@2ubi7% ze{c%F;V5)raA4O`hZ!^G-j5)6f+3={E>syZw3Duch?FhMIu@=gEc+y`%NfhdAFbND>@P-N&!sAoj9i;(5Hlfr2&8hs#c8S6=(@qP@!XYI zY`nP?z4Nq{7bf{q_GM6B3*B)E&pK-iZ6t%wRTGWr;{!zyt_k>(@R`r)A0Xi7Hq|__ zh2;y5_~`V!{wTKE0g)CZ&5HXCkB8NtZl7a;q<@o#7|{J_NG#DSkwnt=@>9(M>u~~- zU5QI}G4l@XaB*lrGUYh2*RRe-Dmbvvk6bRcA&9Pma8lR`@Z)_AJ%00y=t6|F>0FF@ zHrq4_Z6%kQYyw4gWckB-mt&jY+9S7`;hF?XQ9Z=*W>2qQe&pjMGRXr}jPW3|GhvT{ zaOt3%Y6Mbvz79M^ISH1s7T&AYbbJ(oYX8=fpQ z(7hPMU6Q5c8ig4t4G>M`ptne#^TOM3*j4K3Pt~JZNW`rm*HlRr-wsVxWYu1$!ZRRh z4PRlsKdz4%tLG>`DsMg$L$~L8lj5rrEo?x%3X>?D7tpCpNwCG}N{*?8FuUTE1R2to zAy|>iL<4iMx{zHhqs#A3?0mqsRd>V#p@e%RW4K;m?~tik$M76a z1s-g>LH@MHYs19d)SrXa^}dY>`*5SH;iNjM7~hY`H7U8zN?sDfVB(P#-ndLl)zt2` z3+Ou7a=-qFma;t+>?%f8sTvYd8rQtwVTPm;4C)A@Avpe!t|VF9wOocEfxb#1`(AL5 z14Cm4&LVGtd4{cdSPh5xanTK>5Y=|1>$RD`f%Vtz>lam)hhd~;B|oj? zqBNBvISt4#JSl{rJ{$XHk%_oc9tZvf1Ge!R1v2UTVu7fhIA&-gkGmqh7g{`0C?HPOMCXMs8fN zZc(MPbGF4vmM_Ps{x*E}LU=?0gg%`hZ!~cEXgHUOv2udT&rIh?oEt@x@ zR4zr2i}wpLJ?-t(Wtxrt7BjjXp~yKi_6#>tiS4 zAP0%N_evfnvKr=v>sui8KJ4yb3flU4)e^s`HN~h#ViE*x;Yqx6Q6!XuH6fV3HpDGJ zNl}s7eMyzkrB}|)t9no>GOsLgaq}(*H0ds&(>eu#+$|t0-$??BA8k?cqIRC1H`dC zSEm*FpoHxesmeBk)Nk(&PP8<`s7B}O)N`FrVkk8lRjKg9m1K5d-T)OToK!+p$1Rt` zK_2;>)ZV-2Fq)rRA6ro^MXX7P8dh96=e5&Kg0-(dp5Kqd@2BU)go4?)!k{MEtlK@? zPg~&WhMh&MSEt(CdQ8tL7nh!XtmrOo+JJz}|KUYY$Msh%db(LExTK1ck%X{0>94cCYv7Q%&pSrv#CMl_$UaMO%-(e zSMwlBV>P#8r^R6~czKr-#`Zd|uO{t)R+ebbQ)|kj;QLn^0=fD?s2l$T*bx<#@yhb& z%Kf~#g0WS6S(ES$HM+O(y^EbrA)%*_hQ9`O~tq$Q|K5L!OjN4 z6-wvA>fU8Uxp0#^PeGR(io`sq@0+aZG&9;uC`B!f+34KOL}dPW^vORA+xfAV%QH^YxTgqiLs5Nu^PJ%*f5jW`JoHf zURe0A4C?twt)He!z8Wy02zI}Od}fzo9RUkgCgkRDL6!Rz$+ltgYC>BVQAbK~HDzFQ zhM;Ejz-#wK-5n6lA%_o{vEx;=y1TJ7()@dsgQxF9p}=l*&?C;8vYNLV!=4Hkf&4O; zK_4^6yjh0y@`ebAm}ll_m%7GTwS4)++HP!VrlZ+%7nuit;dViiafqOR2a#b|riT4n zR$tn0#mNRFmJ8oS!dG_o)?ydGc{NJD7&8onyO!L#({Qc{%Nsk#Pnp3zHhD5_7xm-I zvwgewsuQPKjd;9BfVab8v$I%58C;oie+3tJ#p(yq#s?1GzPb@7`j2Y{0}?1+IHDz{ zd8ayuPaIjFil% zjTZZ5;MZ|JWpU(EnzL_k=cfv;ch&vxY7*;Y2Glg;6OOlrh?yk4>FIOtv0k6#*Wb_N zMLUQxN8dH>QbFM`Zp1a)5r*mcS1QZZpT4f5za&ITrnL6G5R?P z*LiI)4JVmLV}Yk*)X^g%W7fHpa_*J5MjWm=*bVIFrZwwS#prhx8c%( z!X$kbcc~4b5aQkkRDzUmC@b(Agezsq?kaKc;=!#(LC`rIsd%MxKe|@y*m{B90T=rA zu5H93xFVkD(b)$+(eqDYoWfV=EOc9}lwKwV){(m}K{0I->TiK=qrmL@=tjS5Cn(^cEs%YVce^?=Es%*7P#dp~)E9Oe8nf(@C{_Bl?OYEb> z-+_@`8ewKn5Hmn@9V)`Uhdo(8FE371YpZQDXy*f0iUk4h^d^B4Wu`|uF-hf5>&Oi( z2q4s~nDsrHKhnY!Yex3R{@Vy%UT2c(78bXsu(1At4FK7Wt(mehQ~sSHB~_C;j3CDo zf&rWQFC2aVP(^LWlgLM*q;8bONK50QxBs+9;V|0*YeEs*v)e5n#9w0~P5YN_N0k&! z+lx@^1G5n%Eym|er9U-Z2#U>9)EL@$LR`)GDopr`8Z{;6F@cj<4SSpt%76P^zey>@ zp78rbZ(^|)pI}1bA}Z4a6Kn?Ssh{d-tM%}^tq2qgLVmh* zTK=6VE({*^rYj&ttSuVSZ1}>s(bS&eV7EodZ>Fk>S#7I#xlcB62<8{|ko11_JKd!z1>z>VDL zThZxCD&oi80!Zcq3e=-&e{RZDF^RG+;MJ5>5eu+u3d5dLur7c#sXlp6(j^66*_4@RyE;?*fq_`qVAM*x~VRcf_bVbNKQ0} zz>1)Z#P_1x6~1%;5bWZ0(=)@;RMeU07H;oYnh6@m9Od%Lp~@Q&^Z(T?6Zk{x6gDy+A*nfeefytV z<&?9Mdm4CK&7{M{K&}BWB~q&WYC(*zgv_eCmK#o`?b|PRQ+5$sl_Y0^Ih(TB;Vkw{sGLab?2nx-7FPI!6*!{v^Tc4LUpcYiFq4SZ9;@;Ezv^32x!$QiVW5$kkfN($0(U>J-#X zrUe;up05cc*+MT#WSKRI&_GI$F})z5KX>k&n3P2;LQ_q39KH z&zw7rhcA=y-2;84e;food#5VSQ!n>@zZy5U6|Xifj1X!XTa0E^lglh(YWy9KB20lA0pvxb&qzc0ygBZ%VVhwBgXX@-3MUNK&A?#;XLpo z@I#kj$^UBVx}uuewrCO(2-O6VP^1Jx36UyAieiGH7imF6M4E^+Ls7wtR}vxy2ud%~ zs{sUp(u*b#nu-t=rKz9-ih@WJy{Hf0z4wjxbNyjw@1?J#o5co!QjyhBg z(Eg}u#BE(rTnj+7^mtp8Jy#2AYcQ|pW@=!=vc_aM->*xV`X49{#roWAtZJqG)I~MG zQsjY}sa>|w;RXG|0G+fq2dY&ji;Ha}lVw#57`}|=>8y!~mXpCz)r3xBpE+~C{5ZXxnJFJdJY{khBmD>YMQuD69(>rT! zIGmb7cLNbN6i)RZtgCAY3lZqnE-QpGr|`8v z^-9?&adauYIJ0%Xo-UQ?gzGe2EHs_lWOU`ue=~b5y`{aGIB#}_H}-9}e3J)_Y^T7Y z#$uB7O9x3^noL6p-4uW_L~#DNB5~FZ$#>T+FiI8gZ`a96a%k@=D%lKyRH5oa0BFGl z`=ErD?_)nh3)wQDt?WZH3-<8?x#xYw z3&`dRq;(xE`jG6EvHnv(E)KV43oMP0S-*>`X8-5{#}rykr&K>o4&3sqY2Xdd;}-Iewe3*9MX7`*j@lWloBYk7U=pBW~X=>5MGXt=C?AO0F@ z%GiG#dN^XNlI&+y#h4vdhj0kw!ij3hu-iHkV7Y=F?GORHhDG!_-+t~aqB+yVc_{Bv zC&1rL|LRadQYoYv{h!r(}9HAfh zG+=eT*Do>TZ+N;|`R_t(g#@i*h01teJ5gl_Rtdo2cn2m~=S|AudmpWut0g=bM4)&B zRAIJLt{5vv7{c^-`TVf`+xi{13wTS;L+{##ze(0o`!B$iG`gK@gmoI2b#B?5%~0p> z*o&6r-)qJ!?m?IJEds|CstIw2ecq#3*M zj3mz^#4+*hM%(=1;j0b>!P~rD2Op50U9PT^5v#Llc7Ip3E>KUegxu<`pMvq$TuPkV-9ASC;$euS0`&)Sl`Tle0~UnQb4!I2u6qV^93!lQ%Ro!*^G7$8e48ObQ7J$x`rf zFKNSMowmwXJ-0OzXfirAo?AdG4O~%Jn#KwK84hdp6cG~Pf9S$qMI}zI zI1oBxr!~`K*c{k0xW$7;Q+soP1@(1;nGe?AhdfGOI=RA(`kRN42B!={__|i*M<8IZ z@boJU=8R`Is(d=m!Wq?qYKnWW`;^5NOE)@%362vr`3N^;J|%Q$8lV;~$0l#MFIJtV z%PEn2rw^tymE}{8fl>v}g-=ju2pB0yyS>XJdi_%8XsK^TN-3`HHOe5F=?PLMymFNR zPI!xb6~~?$9BnRsWlOe6D75&XoF<4sxaA4{qjV;v|H}`hGBj5E| z*C*b2>3po+U9ctUt)HLRQ!&Xz+yUNc{}djj&Jb;OiIhM48uQudSc4 zVs61gVTx-|srm9}2J`}*qQUpLXrr$@%R?l!`op|qSxf}i$UH6Qkt54YOBxPL)``&- z5vb)^i(WWRHTVL6^{&Kv!KF`T9y$5tPpS!ao7UOW(Wl?UD3X!+oU#GuS?;j`Z6V|~ zu3#g2O2-t{?aJQ7ZZ<|;n6w)8?$}D+o_=7VEiIu`1W?7?Re=#d{EG`d=w3R)b6&#x z5W?^7F{7iCOJ6KLDWjKP-cP^rAq|JYr#BWJ{Qp36`8Tm}Dot_&`w96|+2mX)4MtSu zRKYsR@BF2_(6-a?SriL;+g^b5GvA|9`jrTAQCC#sRVGTZXh@AqAxx&p+91NVPiq>d z2{4MkLHW(5R07^CIn=}|8K`en@M{7aQj1i`K43Ue{%8O?$Gp6K>-#-ChCDI7J&*W14 zQ&ph#!P>&otN*5-cfZrmc8@r|l26bbsO0=35dPOamx>Z2Mkn>yXvndf0y6XI0Uf zf;((*77HfSL5qE0UsaxGJ`qLd7x9E8ayBWB2%MCks#d4uUQXA^qy5}G?=s!Nm5xmA zXkaGjvTH;mRBZORS7ej4IvQEUd@KRlg->Aag@AHsUIKh}X2>#rWw_!%D6zPZLVap! zo?T(!HN6Z+p0Pc>kjl-}n%7{gnmRvncC=QKDUq-8hk?0L+IA_w09l6V>;!sHAn8Tt zaPrtcNWJdHI?824zm`U0>Yp(BIpXbN6)My_vsc=pJrd}}FtylxFnJo#pA%^$) z;3F9!>F`?6wHLAx*@f##*5V18w!$_Gk! z*ydGfvI!3Up~d>QPj)4?g9E%nlb;VniSJ()c^ogJB5NOHySbT|Pz!Z*vZ=DR_@QLc zl4f)`$V1)o#zCkOh&4$;$9|GXh34?PUmESa>b`I8O@otcu06+xm!NrcQnhthGYZGb z71Uf2*~ofMaAiN6HgtB5Jw`810yD7>5;dj1RstQw6vrl2 zI{pIe`Cl+O@;jL9+DcHTcptr!l|J{i?g%S3V|W74vsh~Y68-49qlZf04#W*&v^f~H zs1~Z2M)vfO-^u==ui!}T=>D#}xSZ&-pQEKP8%)POZGgG7$wz`{lM}Q4ePkgn`@B%o&gl5MR?j+Yv`|X!JDJE**YfY zAGHcritbTtwaU~?gHBS96}w;^?Zd1E8;g}p0prryU0Z8y1V zCATqgNfLxO0?QXr5r3HTfuR$mAiT&`mt)H+9WV`UYvjTPq`p*pqfA{-V-%j6g&jA%G>4S)I5_TW`*?dO zBLkge9cmjFUeViZjmJH~I+*2;ToXPmR4x*oG(89W`7q5H5=7P2{d%UqwCEkb8;}>S z!78^@9j!@t^a=_U`0&4-`R4b|+&!6&)vPbhUaGyGuSZChd>pJvUCKv1esdNumY(7- zf(eK|tJrVZlbK~-RJkojjvN+J+Ak?;D2=-_BdG31k>nqR^fc zp)*EDrwTE0n@B01>!MfKPm=nx*t-m=#ykbidb#UuX zmBHOJh&#S2Kj%h!_KQ``e4zqh2hI7fk^tw7(zpb=;ByyjDQmmS;E!xtTceM3h|~I2Oo`tp;>d#6*jEzwbR^c^6358H2?;?sf8VZ)IVO7q zp799@h3NFNT)bp3?uC)69E~ws^1=0I?_6j;#^85EjaP9uHnR605{A(}xKZ4ZFg2q4 zmGHTH%j6G-xCAf}4vP#O0+eQhZZEa(EUE>LU33vRuV?wG;hix%KnuFxbB~N%a{;D9 zEJFNy#3S~hR@r=)C#O#klV<=8CS=Q}vUTF{h9@5$J_h)CC~XYYZjcq5P$I>ip!&DR zCvrY6<#xR6wA|+s={iq`)*ZJ*mZMhpskJ*K$-3V#DLUB$x2ub|ci-e=WlokMM%8Ja z-$#%WZ?T!*!$;u7ce$R(jYx||%Kr6HTeWQ*DtTkh&;%br#ejIvd%D9!BSJf?PdHg!v&WXLZWc z=PnAkhVR=ei`kG3`l9XQLKW9c`uIgr?24pNip)SbsHJA%9249ki)f5peT?&GH{FX=C`HWSh7^7y?bGO|Lt z$|i8EsV5~+RvaJCAk+#5)GjmpoiL@Q<>us?_{UNrf4mcbgFHfx%3n|LYYY>Io}{Bl zP4hD`2E~gK+mxV5cTFi(t4AWRG+!*_Sm<9LwKBj5m~i7=O{}zlS8+4f*R<~TjU+R6sAH&@^o4?#4Ffgb&xuDMLJG)uGfmLv11a!i(Uxvna9-VAaaEAgtj%p+GXYx9q>u>l z-%2ba4Q?p}ISbJ`txVB&LrY_rE9{?vJ^Wpz&R7hw9|0VG)c?S%ee`>EW*G|hGu@{wJC9=-%woexJ(5r?J%2&Fzl2O9B zV<6J)^XjhGA3hI!*8PqWwrhu>u>E#%`m2N`02zo3TB%n!)3Ao}ne>vP_XSkHj=0p7 zm;Ev%xLOwEhpCWjX!(FDBOI)4nE7lVdTq44ri_v}fF_ggl=E|R@+P-MrIYks>>A>@?f&yG0Q+1;q=7X8=W*D6_pQYSf_dYt3OqfO z"; + print "Songs:  "; + print ""; + print ""; + print ""; +} // songsDropdown + +function artistsDropdown () { + global $songs; + + $artists = getArtists ($songs); + + print "
    "; + print "Artists:  "; + print ""; + print ""; + print "
    "; +} // artistsDropdown + +function getArtist ($song) { + $lyrics = file_get_contents ($song); + + if (preg_match ("/\{(st|subtitle):(.*)\}/", $lyrics, $matches)) { + return trim ($matches[2]); + } else { + return ""; + } // if +} // getArtist + +function getArtists ($songs) { + $artists = array(); + + foreach ($songs as $song) { + $artist = getArtist ($song); + + if ($artist != '') { + $artists[$artist] = 1; + } // if + } // foreach + + return array_keys ($artists); +} // getArtists + +function formatTable ($songs) { + echo "
      "; + + foreach ($songs as $song) { + $artist = getArtist ($song); + + $title = basename ($song, ".pro"); + + echo "
    1. $title"; + + if ($artist != "") { + echo " ($artist)"; + } // if + } // foreach + + echo "
    "; +} // formatTable \ No newline at end of file diff --git a/songbook/webchord.cgi b/songbook/webchord.cgi new file mode 100755 index 0000000..28d0969 --- /dev/null +++ b/songbook/webchord.cgi @@ -0,0 +1,311 @@ +#!/usr/bin/perl + +# Web Chord v1.1 - A CGI script to convert a ChordPro file to HTML +# Copyright 1998-2003 Martin Vilcans (martin@mamaviol.org) +# +# CGI parameters: +# chopro - This parameter can be submitted by a form as a text field or file +# upload. +# +# History: +# 1998-07-20 Version 1.0 +# 2003-08-03 Version 1.1 Uses stylesheets +# 2014-02-05 Added things particular to my implementation of Songbook at +# http://defaria.com/songbook + +use strict; +use warnings; + +use CGI qw(:standard); +use CGI::Carp qw (fatalsToBrowser); +use File::Basename; + +my ($chopro, $output, $i); + +my $documentRoot = "/web"; +my $debug = param ('debug'); +my $infile = param ('chordpro'); + + +sub debug ($) { + my ($msg) = @_; + + return unless $debug; + + print "Debug: $msg
    "; + + return; +} # debug + +sub warning ($) { + my ($msg) = @_; + + debug "warning"; + + print "Warning $msg
    "; + + return; +} # warning + +sub error { + my ($msg) = @_; + + print "Web Chord: Error" . + "

    Error

    \n$msg\n

    " . + ""; + + exit; +} # error + +sub musicFileExists ($) { + my ($song) = @_; + + debug "ENTER musicFileExists ($song)"; + + my $title = fileparse ($song, qr/\.pro/); + my $musicfile = "/songbook/Media/$title.mp3"; + + if (-r "$documentRoot$musicfile") { + debug "Exists!"; + + return $title; + } else { + debug "Could not find $documentRoot$musicfile"; + + return undef; + } # if +} # musicFileExists + +sub updateMusicpath ($$) { + my ($chopro, $song) = @_; + + my $title = musicFileExists $song; + + # If there's no corresponding music file then do nothing + return unless $title; + + # If the .pro file already has musicpath then do nothing + if ($chopro =~ /\{musicpath:.*\}/) { + debug "$song already has musicpath"; + } # if + + return if $chopro =~ /\{musicpath:.*\}/; + + # Otherwise append the musicpath + my $songfile; + + open $songfile, '>>', $song + or undef $songfile; + + unless (defined $songfile) { + my $msg = "Unable to open $song for append - $!
    "; + $msg .= "
    Please notify Andrew DeFaria so this can be corrected.
    "; + $msg .= "
    Thanks"; + warning $msg; + + return; + } # unless + + my $songbase = '/sdcard'; + $songbase = '/storage/emulated/0'; + + print $songfile "{musicpath:$songbase/SongBook/Media/$title.mp3}\n"; + + close $songfile; + + return; +} # updateMusicPath + +# Outputs the HTML code of the chordpro file in the first parameter +sub chopro2html ($$) { + my ($chopro, $song) = @_; + + $chopro =~ s/\/\>/g; # replace > with > + $chopro =~ s/\&/\&/g; # replace & with & + + my $title; + + if(($chopro =~ /^{title:(.*)}/mi) || ($chopro =~ /^{t:(.*)}/mi)) { + $title = $1; + } else { + $title = "ChordPro song"; + } + print < + +$title + + + +END + + $title = musicFileExists $song; + + if ($title) { + updateMusicpath $chopro, $song; + } # if + + print << "END"; + + + + +END + + if ($title) { + print <<"END"; + +END + } # if +print <<"END"; + + +
    Home + +
    +END + my $mode = 0; # mode defines which class to use + + #mode = 0 1 2 3 + # normal chorus normal+tab chorus+tab + my @lClasses = ('lyrics', 'lyrics_chorus', 'lyrics_tab', 'lyrics_chorus_tab' ); + my @cClasses = ('chords', 'chords_chorus', 'chords_tab', 'chords_chorus_tab' ); + + while($chopro ne '') { + $chopro =~ s/(.*)\n?//; # extract and remove first line + $_ = $1; + chomp; + + if(/^#(.*)/) { # a line starting with # is a comment + print "\n"; # insert as HTML comment + } elsif(/{(.*)}/) { # this is a command + $_ = $1; + if(/^title:/i || /^t:/i) { # title + print "

    $'

    \n"; + } elsif(/^subtitle:/i || /^st:/i) { # subtitle + print "

    $'

    \n"; + } elsif(/^start_of_chorus/i || /^soc/i) { # start_of_chorus + $mode |= 1; + } elsif(/^end_of_chorus/i || /^eoc/i) { # end_of_chorus + $mode &= ~1; + } elsif(/^comment:/i || /^c:/i) { # comment + print "($')\n"; + } elsif(/^comment_italic:/i || /^ci:/i) { # comment_italic + print "($')\n"; + } elsif(/^comment_box:/i || /^cb:/i) { # comment_box + print "

    $'

    \n"; + } elsif(/^start_of_tab/i || /^sot/i) { # start_of_tab + $mode |= 2; + } elsif(/^end_of_tab/i || /^eot/i) { # end_of_tab + $mode &= ~2; + } else { + print "\n"; + } + } else { # this is a line with chords and lyrics + my(@chords,@lyrics); + @chords=(""); + @lyrics=(); + s/\s/\ /g; # replace spaces with hard spaces + while(s/(.*?)\[(.*?)\]//) { + push(@lyrics,$1); + push(@chords,$2 eq '\'|' ? '|' : $2); + } + push(@lyrics,$_); # rest of line (after last chord) into @lyrics + + if($lyrics[0] eq "") { # line began with a chord + shift(@chords); # remove first item + shift(@lyrics); # (they are both empty) + } + + if(@lyrics==0) { # empty line? + print "
    \n"; + } elsif(@lyrics==1 && $chords[0] eq "") { # line without chords + print "
    $lyrics[0]
    \n"; + } else { + print ""; + print "\n"; + my($i); + for($i = 0; $i < @chords; $i++) { + print ""; + } + print "\n\n"; + for($i = 0; $i < @lyrics; $i++) { + print ""; + } + print "
    $chords[$i]
    $lyrics[$i]
    \n"; + } # if + } # if + } # while +} # chordpro2html + +## Main +print header; + +unless ($infile) { + error "No chordpro parameter"; +} # unless + +open my $file, '<', $infile + or error "Unable to open file $infile - $!"; + +{ + local $/; + $chopro = <$file>; +} + +chopro2html ($chopro, $infile); + +print end_html(); + +exit; + + -- 2.17.1