From 8d04509b22268597043ecd797be3be002c2d3022 Mon Sep 17 00:00:00 2001 From: patrice4 Date: Sat, 15 May 2021 11:19:39 +0200 Subject: [PATCH] =?UTF-8?q?Des=20partitions=20avec=20SPIP=C2=A0!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Voici la possibilité d’insérer dans les contenus SPIP des extraits musicaux grâce à Verovio : https://www.verovio.org. L'idée est de créer des images au format SVG à la volée, en Javascript, dès le chargement de la page. Utilisation : -* Les données figurent en clair entre les balises et . -* Les documents sont accessibles grâce au modèle où XX est l’identifiant du document. Format des données : MEI, Humdrum, MusicXML, Plaine and Easie (PAE), ABC. _ Explications : https://book.verovio.org/toolkit-reference/input-formats.html --- ascore_administrations.php | 34 +++++++ ascore_fonctions.php | 27 ++++++ ascore_pipelines.php | 88 ++++++++++++++++++ javascript/verovio.js | 47 ++++++++++ lang/paquet-ascore_fr.php | 23 +++++ modeles/score.html | 31 ++++++ prive/themes/spip/images/favicon.ico | Bin 0 -> 4286 bytes .../spip/images/verovio-fadded-50-reverse.png | Bin 0 -> 7063 bytes .../themes/spip/images/verovio-fadded-50.png | Bin 0 -> 7892 bytes prive/themes/spip/images/verovio-logo-big.png | Bin 0 -> 10881 bytes 10 files changed, 250 insertions(+) create mode 100644 ascore_administrations.php create mode 100644 ascore_fonctions.php create mode 100644 ascore_pipelines.php create mode 100644 javascript/verovio.js create mode 100644 lang/paquet-ascore_fr.php create mode 100644 modeles/score.html create mode 100644 prive/themes/spip/images/favicon.ico create mode 100644 prive/themes/spip/images/verovio-fadded-50-reverse.png create mode 100644 prive/themes/spip/images/verovio-fadded-50.png create mode 100644 prive/themes/spip/images/verovio-logo-big.png diff --git a/ascore_administrations.php b/ascore_administrations.php new file mode 100644 index 0000000..a65f1f3 --- /dev/null +++ b/ascore_administrations.php @@ -0,0 +1,34 @@ + 'mei', 'titre' => 'Music Encoding Initiative', 'inclus' => 'non', 'upload' => 'oui', 'mime_type' => 'application/vnd.mei+xml', 'media_defaut' => 'file'), + array('extension' => 'abc', 'titre' => 'ABC Music Notation', 'inclus' => 'non', 'upload' => 'oui', 'mime_type' => 'text/vnd.abc', 'media_defaut' => 'file'), + + )), + ); +/* + $maj['0.1'] = array( + array('sql_updateq', 'spip_documents', array('extension' => 'dist_cubox'), "extension='culturebox'"), + array('sql_insertq', 'spip_types_documents', array('extension' => 'dist_cubox', 'titre' => 'CultureBox', 'inclus' => 'embed', 'upload' => 'oui')), + ); +*/ + + include_spip('base/upgrade'); + maj_plugin($nom_meta_base_version, $version_cible, $maj); +} + + +function ascore_vider_tables($nom_meta_base_version) { + sql_delete("spip_types_documents", sql_in("extension", array('mei', 'abc'))); + + effacer_meta($nom_meta_base_version); +} diff --git a/ascore_fonctions.php b/ascore_fonctions.php new file mode 100644 index 0000000..522aca1 --- /dev/null +++ b/ascore_fonctions.php @@ -0,0 +1,27 @@ +'); +define('_SCORE_FIN', ''); +define('_VEROVIO_HEAD', ""); + +// filtre qui retire le code source des partitions du texte original +function pas_de_balise_ascore($texte) { + if(strpos($texte, _SCORE_DEBUT)===false) return $texte; + return preg_replace(','.preg_quote(_SCORE_DEBUT).'.*?'.preg_quote(_SCORE_DEBUT).',UimsS', '', $texte); +} + +// aide le Couteau Suisse a calculer la balise #INTRODUCTION +$GLOBALS['cs_introduire'][] = 'pas_de_balise_ascore'; + +?> diff --git a/ascore_pipelines.php b/ascore_pipelines.php new file mode 100644 index 0000000..a146922 --- /dev/null +++ b/ascore_pipelines.php @@ -0,0 +1,88 @@ +? + if(strpos($texte, 'class="base64"')===5) // your data...'._SCORE_FIN); + $msg = _L('Format MEI détecté, il est nécessaire d\'utiliser la syntaxe suivante : @syntaxe@.', array('syntaxe'=>$msg)); + } + // recuperation du fond 'modele/score.html' en protegeant le javascript + include_spip('public/assembler'); + $score = protege_js_modeles(recuperer_fond('modeles/score', array( + 'data' => base64_encode($texte), + 'id_score' => 0, + 'msg' => $msg, + ))); + + return $texteAvant . $score . ascore_pre_typo($texteApres, true); +} + +/* +// pipeline ramasse-miettes permet de recuperer le HTML propre *après* la reinsertion des modeles +// les scripts de partitions (base ou inline) sont empeches en partie privee, il a fallu les echapper. +// textwheel >= 1.3.5 +function ascore_post_echappe_html_propre($texte) { + return echappe_retour($texte, 'VEROVIO_SCRIPTS'); +} +*/ + +define('_VEROVIO_SCRIPT', + ''); + +// pour inserer un js +function ascore_javascript($b) { + $f = find_in_path("javascript/$b.js"); + return $f?'\n":''; +} + +// pipeline header_prive +function ascore_header_prive($flux){ + $flux .= _VEROVIO_SCRIPT . ascore_javascript('verovio'); + return $flux; +} + +// pipeline insert_head +function ascore_insert_head($flux){ + return $flux . _VEROVIO_HEAD; +} + +// Le pipeline affichage_final, execute a chaque hit sur toute la page +// Incorporation du js dans a la place de _VEROVIO_HEAD, si un score +// est present dans la page +function ascore_affichage_final($flux) { + return str_replace(_VEROVIO_HEAD, + strpos($flux, 'verovioCreate')!==false?_VEROVIO_SCRIPT . ascore_javascript('verovio'):'', + $flux); +} + +/* +// Afficher la configuration trouvee +function ascore_affiche_milieu($flux){ + if ($flux['args']['exec'] == 'article') { + $flux['data'].= ascore_configuration_inline($flux['args']['id_article']); + } + return $flux; +}*/ + +?> diff --git a/javascript/verovio.js b/javascript/verovio.js new file mode 100644 index 0000000..f9496d6 --- /dev/null +++ b/javascript/verovio.js @@ -0,0 +1,47 @@ +/* Number of the first score */ +var verovioId = 1; +var verovioTools = []; +var verovioRenders = []; + +function verovioCreate(data, options, myOptions) { + /* Create the #outputNN div */ + var id = myOptions.myId; + var attrId = 'verovioOutput' + id; + document.write('<' + myOptions.myBalise + ' id="' + attrId + '">'); + /* Create the Vevorio toolkit instance */ + verovioTools[id] = new verovio.toolkit(); + if(myOptions.myType=='inline') { + verovioRenders[id] = function(){ + console.log('Inline. ' + attrId); + /* Render the data and insert it as content of the #outputNN div */ + document.getElementById(attrId).innerHTML = verovioTools[id].renderData( + data, + options + ); + } + } else if(myOptions.myType=='file') { + verovioRenders[id] = function(){ + console.log('File. ' + attrId); + + fetch(data) + .then( function(response) { return response.text(); } ) + .then( function(meiXML) { + var svg = verovioTools[id].renderData(meiXML, options); + document.getElementById(attrId).innerHTML = svg; + }); + + } + } + window.addEventListener("load", verovioRenders[id]); +} + +function verovioReDrawAll() { + // Si ajax, on construit tout de suite les nouveaux jeux + for (id in verovioRenders) + if(document.getElementById("verovioOutput" + id)) + verovioRenders[id](); +} + +(function($){ + $(document).ready(function(){ onAjaxLoad(verovioReDrawAll); }); +})(jQuery); diff --git a/lang/paquet-ascore_fr.php b/lang/paquet-ascore_fr.php new file mode 100644 index 0000000..8241e74 --- /dev/null +++ b/lang/paquet-ascore_fr.php @@ -0,0 +1,23 @@ + 'Partitions', + 'ascore_description' => 'Des partitions avec SPIP ! + +Voici pour vous la possibilité d’insérer dans vos contenus des extraits musicaux grâce à Verovio : https://www.verovio.org. + +L\'idée est de créer des images au format SVG à la volée, en Javascript, dès le chargement de la page. + +Utilisation : +-* Les données figurent en clair entre les balises et . +-* Les documents sont accessibles grâce au modèle où XX est l’identifiant du document. + +Format des données : MEI, Humdrum, MusicXML, Plaine and Easie (PAE), ABC. +_ Explications : https://book.verovio.org/toolkit-reference/input-formats.html +', + 'ascore_slogan' => 'Créez facilement des partitions dans vos textes.' +); diff --git a/modeles/score.html b/modeles/score.html new file mode 100644 index 0000000..0553b8e --- /dev/null +++ b/modeles/score.html @@ -0,0 +1,31 @@ +[(#ENV**{msg}|oui)

#ENV{msg}

] + + + diff --git a/prive/themes/spip/images/favicon.ico b/prive/themes/spip/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..910ef41cf409b459bd259e46ac4f3b1169aa3d98 GIT binary patch literal 4286 zcmds)Uuc$P7{=diT2@q2O@e4!Eiw#7AR$EgiNyx}vx2~4K~SJz33*`u_f_`i(Ar5S zu~m97DhLWQ4-!vmriFwgR0a*L5hQ2}Yo_1R?|SxJFVEg>(r4g7k6gR&`?|0DzMuE` z-aX$eiWdHLbrt$qj4UjQMMY6u2cU`-K>Yt@_4W0|N9pbDE$pA|XUpf>w>=ws(X;34 zzs{bkzB)%U(Y7YL690bhV>YdGr?Yd-c1^V}`ZndT>%m@dMT%Qo(~PCQl;d}U2f#|^ zmi=-Ke0+ZFP4I`nlWyR>=6dDKTQ{3Uvlje7?O)(1*h+kPs&92qY}^-iA^DxyA3=w7 z*toak$GLC{PrK0QERWIeU2q%zCU640M?6o(`0?C{%U*DUAb?j*;`{wjjp=Bsu}HY3 z^gM+<2Z_!=j9&rAg)F zise@q+Q;ElcN|QcL);E}(43#w5qtjg_@AS>NO`RGqh9ZW3tWS5cZMamj2?Q=R5xfr zwMMZytj~WVwO@kntnMZ9>a`udJ>$!IbFyeIMEh~7`JVV%@x(Ia%42-be+>U?&{GO= zh&O;!^wPV#*g5ppO}XBFZqa-GL-_l^&C1gw-VyTE6Z`@W!>2eEnnXiN5G9K*Q(jcS3Z9y zULmLVtb8^%LRUT`zTRKW*E@V)rkMv9_v#tgE8z}cbq`$Zxz58)+b{eO&>p7UHLlBM zt)n)c1KKs_lWsn_Huy-Z7x4+KzCZKljrn{J^3m+U>b;Hob?;o4=G+B02DFd2sk_?R zswMv@m;k!7<9lcgb#~+DLH<*qp3BQba^R+&7jYLD0>|m|8}@aqe(#oGF9Qoyiq+pJ zJAlsimTKRm=_db?Gzn{~I`}wWHebZIg00{n{dGqi0Q$`J9j)K5&#>ZkwpY0pKf2@> z;eUel?7xXOSXZ^GLtCY_x5YqzBR&HL!8>3C?H25_V2O+H%d^Dq2cGS_cE&sCT3O9k zk26`G?RxBTp!4x;eQ)W%ivN14SB`3-b2*=%A$gsF?&EFn%W_>azUFB8d=$&iXXX8@ z7l*I=qN(T3do}BOHnzOq(mu}kvu$<{)@v`I4U~6um~Ay6!C0dnb~kEaDAYnny%Veo z9Rq8^aCjta4o`sR!e|(%kA`~fP^b@2gxct2sEwZt!xN4AzRA!zJ{evcKNfyEcPunI L$LK0do literal 0 HcmV?d00001 diff --git a/prive/themes/spip/images/verovio-fadded-50-reverse.png b/prive/themes/spip/images/verovio-fadded-50-reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..7d356e873b4e57078b26f5b80672108282b82f65 GIT binary patch literal 7063 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 tYx9Vw)I?zj{Nw*?aM2HP+dI7Q>44Qla ztTl7a%-(N4&-2b#1vzmvWI|*J1cD|h@j(fE*8TfKga!X=s$xDvAjqQTqM{0tqM~GW z4z?!dR^XJ|QiigtM%*>7!0Pp93^kF3ztu@reh>=Ea>M~l&0Ne_h+!ZmmQZg{D6-mX zoLA`*sy+U*$PyW$8`-o?ro!JswZc?&xQeT796 z^C#B=!mSj<$Fo2hB`?u4*y;<5Be4cghWTf>%k)Jr1o9Wo-ObzSyWj&%l`RAoVmHe~ zh1I|Q9MG&lqYfd9fvizr?V!L!D?tXBR0du{2Jj)@m1{pCL*gM2D|asu3P>p$d;WFZ$?f(VI#fuzuiQ^5-Tgczv$DKWrybV0Jqg(#TdJ1Sv(H5=H(VSQU) zKwKglLQQ;V>n?nNqXwt>!ySW zLf5muYa8SnT~^g1hInr=O^~)I(v#9Cu_bokWX4b-5W?HZ&L=Lx=$$`X>wipktWGX^ zbDu2#+ENIRpRPW&gu}u^Fy+Qimh`u`=iu!6VZJ-JTb5`;mee3-tGBxEmXWfxkS9ED z!`!(Zgh(=T6bAT+p~xsGN7P0+tt^{i0?+T(ZP&uQufWx(WskoQ`&6NnijKU1M|(pX zmrA9`ond$pR-5Y`%BTJypU23zlN;>SIt)19PBp$ZDNxAvyZ=y%`9MCHuz|Jb!*)uV z_=pteiUuhUmhX^jK&T(K>hL~>fek~~m~w##d7m?e6QaaGFiqLn+^->!xc1v9A$l0d zXj1+r1k$pLuTvb4C)0-rfqcmJqx&w5fZF-GyaPSGlenb=57zMI2O(6d4n9ngms`G2 zpEGv(010abo>tN@Ln3=XLjMY1S7!<4KMiG-&xlwgnb%_rLneXU5*JK&HHTOwi+qbosq#^~^xJ3>e3E_!)@jP2XQ zw-#~Mc)uD&xEWYyp&!Mhgx~tI9VeaGF?4+sb1f$c>qz*08*+;#rFWg3AYZ;k8v9PN zqML*-8tR0Hh#7pbR)Cf0cGf9-Wzmm{Wu9K z^ugFIIb?F`Xf{a{NlS@k3C4Woe1R!U^K==SgJ|o)-&=?^zU5>|F^$m}(eknPgWX$= zuX%byH)N1HmJEu~Q zrs0YX=QHNbPNbTfnqQkS?>RLitpt#WB~2tvS?(h2?d%0yxT2y3qXqO!7|{|~5_l36 z;WrX6r^pn(m`+L=P+^&8BT6w%#z?kR)u6kg^TLT4!b;#tP)qPm*eO*}byO9cbuUFx zDO1HL(^LCW_))c1VY38j2Dfasgjn@w31{V)lB-gb!nmS-UYq`-|D7>fO>of1>|lvJ z730P}f(UZlKDN)N8X|KJYH$Y(mdUb4+BLU_GA=LfiCmaHWt2r7OHIm6VoWmr*pI@X z_f@a`Vmm!qFka5Xl z&2#OH)Xdqe*c{Zn>^#0NFl~I`zK3)-n!DPi+I+d>oX!Emf%Tlal>(7^8fqF(+Hga0MOsCVOPclS z>y6h@Z>Qc~D%&iv9zGl*AEq9@JmS7GyrRCcz8WVUfnpKQ@jCH(IXF3wxLDb>9OSRF zcbD{(bnmH~5}D>WW}I{26-q}BV+WZ` zr*bb0U^-#8VOsqN{c7PX;Yi_A;0q8qUPQe3`H~q`07nEB2~CsKAbvx*(iM8fhElP3Y<4(6-$FSPv1!g$!M9 zQQkV9FXLDR$xP)4OToYr8c`v`T2ryjwMS+P|el@yGRQjsC9C^u2bW z$xZWgjiO!bCoW}}GM+0FtFBV>CpYuIQ(uP7hHDZZ6*e@KRL?Bjf1O1t1xytbh|>G3 zvnQ0q4-VT@UTFO=#xYFzqm+*Gyo7F-u&rOBhoU!g--J`21K8=@%2NLe|Q#|d?<&1gO+59=JC%fT!8N_b9DSj%Nzu zIUUP1>R%6@|K5qx{o7)9L2+%gOx-A5!C%QQ?rrzDE>Wdzd+_;s_(+|v(&<9>fOqm_ z+UL%qW7cv0W}Znm%f0oa?~tg`hGqrYMBRLO<8pO`=ZbtR^Gnww%B||5ZRv3z;SOWp zr|zlxbBFcXjX{UOc(*3T2|7|p=2QIhbjbRY_=xx{n4A~eF*vrl7j>qRw1 z*yBUqYR~Qmj%7Qmj~n;W;~EbOe^GA3#@j31OU@lm%1Wwu`YHQKTgKe^PYWL^#+JXF zG@UfB_P3Iz&^`z~DV$H<8TS`W$X^TWcs)HZUk9Gw`*Ksif>=4TqBT zk_z@Oqc6V{6kppLs(vzkX_CDC`~1?dcMRvW+^|?d+iALqmkz4pbtL z@H$x--oJm(&OW1Jmt9rz0$-Z*b8=l{W0iJeWqp0Uwm30l?eMV0ac9ie7qXP`0yV~O zlPe6B=<*}vJ2?60&!1ytm{_V_qtmCyd*>qtO1tmhzkhCaKA2ni=?VksgDK0;-x^7I zSJz>bVQ^*L6iaox;<~DchW$q#0!iohRHKPg%z`*Q2CJ$Z`4bWmNlQ!r+`i8LGQiya zAd-OLJIjBRWCyJ(E2Bj0ijND&?>yb?FByj^KQ6Isy@-oIt#58#Vj#1$vGKmUD4A=6 zleL*F!VmUHlZ^ck^71i_O7c>0<^v|Yq&TL?rELWp3NUYCK?lnrSglr;<9#{5|E8O) ztgN_rf7*N7OhF%}1gYiaWoj%*Q_~_Dnz-R@haWm6DoSFENyE+#|2Z5TvA=!*&Rbt! zCnqP5jEqdodf^b4_JXvxx3|`0)WP0<@}+oH(cPU#f|RPB-qXe2bYEZJ+}s>E6C{$O zKpQVbt+YGwI}Zi1V%q;neUyX>3+aw9_oVH9Y;f=`Ev?x|GOKct+~wtE{X&a~sAx$Z z2Rc+$RW&0c;|nYlvkTlxyU}KLc6O!h%g-PG4$TTVb7C&WH!#i>CGRzM+jmLn5~L_% z;^X5%)a<0$wx#em@1JcC-(Mb>`k6QX{C9-)8cmZHsL&nk@3V)jEO&r~QDI3M8m?a+ z%r7r3MN51vN*~_dU$Uw-c-3!@9+Ia(%cRq!prh0BX)w09xHvPjDk^F`nq1UorTOz+ z9t2XQ*NTjRal*f*UX-6m9-h*jErvyspRTysniE4Gm>wC=lOhLnzJ6nZH_FHUgVFn`G?3 z`R@99wbR}di7ql8UJ_VHcL)a2j_`cCCo>E}upxM|=~(&?`^}G{qHsyWV$uOB(gA5j zCC;Vo;S3r*2KG?#=h^UlrL?A03uKSij9xI1BDsvawEzq+FE5W7lJM~G7W>UUaMOF9 z9Wun+^78WH;@$n(GBcDIw$7fQa-4S|hWJ_Iu8xk5UPfdQo2bbW5&Ct3#JJ&n>;2!TTYkiAOw}+E} zmDo~bEb&q2-Jc$AE$1uiF~+0pddAM0SJ_z$^n?jK_d5< z^t3}y_b2VoSIf4bdSX$$jDaC{a&$~%H=nuzbt9Z0PfeU%edzEFz6fp7uzWh#BsNL> zacoxBY9_zu)b#YpYWphV{R@%Zqa$mCH8RPw#ah#pl$3~w2n*LBZyQiWU!p^~Ea%EW zd3NN2$_gc$ZL+>%y1l)v(r+((^v}!7E0kY?-P+oUPfJUSi*wwYq7J6v*D_>gW=?yF z5U5a~boA@TIfy0+yZtO8h%Z^_#Kgqv^V7Aku&_nDTNJE_rKWrakE)K2OqcaM+T#_%f`|jE93m%gN~GdLADhKvC0c^BUYd zy%2(5m+6SEG|A|U{kE(D!;DhL&E z9fa(|!$WyNs1Ty4h=|M4lJiE-R}c=u!x1@Retv#qV`Hh7X4q>T_ARBQbno9^1Jgm# z`?Kc;*X>M3lB+!~Ek2PMsC^TE`}XbN=x71X{_a{|PtU`j_wAkKcuWDm4|aD!kSu}d z&Ej*f$xqwVU`&8absK1jXDhzR2MHtDnDSsDz#o1HDSwTX^ia&d9x7ZpW8xu*)FbJT7v zEiGd*syIs4)(kK(Fe+HJ(V(DX6A%#4@<_KIBauVdK1moE^k2Wmo8A!imb6(WGg)#uYbU_hqk+)n|OFMcWPrfnVznPkb>qz z;oQ?a(7|Fgp2;6YDp-gP_oW7ejQ;c8e6s9IEBe>pa&sx_^0m&-E-vyT#I}KlSH178 zg@yfuso_q;K__tV_%d=6m>%Rm|qgrAPC*pI5>u=HbpHhEoWzEAEQXDQ5XnC7G`EH zF6Z@?e-LXOgS%8{RCjR(kYW-dBO^CAHy4vA6)15#{*lpD7t|SMU=qdzncV(xhLSb@ zes>205piH(;P3f)?W;^w@?X`);+~$oM^hN20(_jDxV5uAERc@bGIeI1rjE_iVjo}_ z&=_V~k!lZu9B$*PS^ zG8TXf&+FsaZ;qn*N+r3uxpkF$jL4Cdm6f2+&d<%UO}^vf;{!Qp1y5imph$>? z%~T0e*C(r0!zF^Q$G;TwJ{oe$eEs^>_IFE;*h>f*Kff+9v8lP81XXNP6IU<0?P zj~|0&$>F-cf4RS^Z)lkMmS)%;tVw1#_?pN4Y%7D;)l7^;GBym4nS{l_7p8C8kts41_4Vcc?rw5gnx*o95FAJ)dM2jA=Fdp} z8ub=9m$1_=(US`c$%%+FFUy_j)3lEy&+zsnLQ6vqQ zJoQ9JM}tzoY*i!g=y;yU2==7q)JsZDLj&B)TG#65j`0sj$z}2lQl+AFe+PAizdoVD z?IvDo8?2{TjMt4%Pe(^5>Q7~g2yi%nl5;rl7!ZY3eC<@nXe#&3zK8$>4A8p+2FMVN zZqK$~y?WK){$yccvA@4xS3`;99~vHB$5EjvYi(_fgoK1hph7D64F)tWrADUGk(ZGm zppTXtje|uVCnk#Iv)a6F9f&@SnMouu>lY%w_VIZZ3&UM3%$%H>!otH-*VdLUGc8sr z1vPst?S0ix0`EUC;-aG6g|ca{k%KxtvA2>%ky084(~1vm{8>10aZmO=Hj?ON*>Pk1a?=)l&#h8qy6=G%W)|zOH+|sn^w_se~k3 zs-&YV40CDu06YO#Wc&FTFTHwYUFU%ID1l_b)Y+NC=pFbS^vSGk`Xvd~O|EdJ$BEpdCgL z^WxSblol6fC%O~xI2ALx>5qY6y!mUWi^dLt0JDOE*V)$>KGuhc>Wt5u$zwL}=bUSSc#ZeL9<2P9^bIQxhzhmRJaYb1A z{W~)$ssFnMDrD_^TyV$X#}#ZOh&`p+7p<+W6~%T=E-ogfrmM})(&}xf!kE}JGNDmX z?>(1;kNx2KPXQI2pPzrH$S4^b9vX@-=*?&HCSQfF*Qojri4YG9ds#DXX z!ZL5r{thWQC?pl|(opANrEASdN#Qmb!B;^Xv`B}8xdkQ}2sJu;tTyhCBo+LfsH>+^ zT2(bqC-v1Zxu~d!nwwM#?N_}ep48B6fwza7o7HlI^+dKXzlHHTSb(uXh5PAoNhj*J zv9(nP7|G9QnpD&3`g&E%5h_U!4-c)E8@r5HUq69xDJUq=VM@BnjG`LM5e+HK&)=2& zSOevfh&|ljr=z8v;LxF~ERszNwxYYwO-#fsjq8T>%=TWXH64$Qivx7+0@?*SF%=b+ zMlh*k3bdrFs|)0C@O&&q3@s1OQX3C)ZibnS&D>pj|E6Yn;4Z-Bu7?XbWy_R2&h%>K zEYD=8PvJLP*V)g*)epES6MaW|Pl<@g*;qdTqW5Y<-Tg*9q zwJQi^lubF9=o17=m#_~o|2}%^OMM2cui+>>H9TK?jVjdG@q_KT(lgu2ZOzOEMn*oM z`8X2`3S_l^9>yJ>r(uUge*5+fBwz5jQi;kxW>Aui|7T`qCQvDv-8Hm(-K?IBm6`v` z9XkgH&>~djJ@IU9Ps+;~%6d@k&}w)CbQxx>jBoy~7gHqiV==nEMug|T?gNRP9c`sM z0Qv?C3(K1~{eUUcS$56l{fJLYocd!nEf>(e{y|(^dve-}VsP8R;-_GY#EdA7CE&im z(JaIyVl#bqfU1BS9pb*>tSXByGi{g85*TIigs28Q%vO1S*4JZ}6TJe{Y9i?z#*w#rqs=7#W)h3|#|Un8Q* zD;*VLtoy9YFa8!576Ou1Q^Uqze{t*O?d8RH#_T$e3I;sfVDEk9t)L4V8X7)5J-HyG z)LE;%L8#}B_{vFDIvh45ueWG|fhyL_$jImc^r%MA)GSiW0|pw3Mea7E1i$qf(UfBD?;2jlZWY?< zIXc!Rc6?l8vA>)g2f$HJL!-Eei8;`2Yaj-|?3L2n)#-K2i?y4*qAdL1)o&AqUZCJE zRFRa@q{swY!H;49z9|{YzT_A%VYfSx1A=wmsM`#Ul7ix2Yp7U&(7eB-IYvpEdrFj` zLiG_e=_Xh+^nZZ$I2u8Qf@rRD?8?==2ET5+zi_=50g4OJ6H~oT7 zoqTVdhT`AOIZP%e6`Nlc%hpd46a(bOEA zpf6P_0cdubH(IzA-Pz7=?fkaSxs(QxLO|eYGEclY+K);^MrH&!u=!^UE%6lWa4uRT zNV$sdFZny5?`?D%RV>qHKO*^Ovq_7Ki&MhFD=zv0#utJ?y5IbH+m4Ht*?KBp@+0bk zQKR}&oH!$QG8rg=0A6Twwbg`305K^p2y~c7k_-+4Fs72Svf@qAE7@K~ zm)G@;SHD|5Q9pkxD?9kR-tFm^;lGuqCQPBS_g$OdJ(yi?pT)<&))(Q&!j7$KIXFGiJ%T|JIYAF^@f{F@BvEg0!=gy|n*nLv=kOTcgU*QB zPDBP_>b1C?E>s&gvw7G-U0q!PzsU{>3E`(R6^e6oa&ls^9|AHL=(4pVSD+8Sc=1BZ zp+x4!W>{R{^^DO) z^J}YtXmS%bRtO+~({!wI+e*c3T2V|e7TLlH3^VMwvMdFKg$?!fds9N(P&t4~4Ggk% zwQq#@N%<{v#QqGO13K`vGa_kt8&@N!vXZG(r1VV!J$O!Tt_a=?7j!HbjmWCuO<0Uk z5E9(ZsT=r(q0v{3kAw5rt>OiM^hhT$?a_6?lk3!5B#gQgabiK)Qo_G-0`O~5X_5kz zRF4Mu7xf4T2->~lIbk3?fR#)82Y~S9{pl0c9Q|(lnt_rHYX3ixIgP%#e|1%mfT zEeRZ->281g{HgpdwKxkC9>iMFurGzA14w;e)WH!rXDh{Y`3m|r~0D8(*7)lAIHMZ}B{gQYt2GWDv4&M{;Y2tr&Lyo&C4xQTyz zyP);6c^yomxp#mD>}B`e-CblPItLdJ+|9I=^W;TDL^!RN0zc&JiB72&bn~qFVzQZI zp_8+pD9$-og?VJ%-P~wYrzxwdCN!ga0GzL;hFiFaOG8FRMo&K+4x`11CGukCYziRX zY!PJg4_|Tq{A=|kDpJD*rlYB16&%x|-soCmK!pNe1RYXbSt%zgTX4h~xY-mCAPVTB zHK#orPTsyxP8k}FoYFfbAn=KcBRKa0k>|JP34a(G+-Pd^HGmqElaoMQu9Kq0q6O+) zz)Q4!;#c+;>2SItgids8TsBNquN|^Txg9=O%Ekb}MqaRfi*7=%g}g~cU42@PfZTX* zs(@Ca>6(1gr-K|55r|@D-%(#9CoF){+fJ3l3g{%j04f zhhA;L3eL#UA5c!fPYK`=y6N!)-qcrA907esOA3nh40;47lVOipMu2;8*4-PRZc0i@ zCQg1Uw;d8e?C$D9ZP4aK0a5Mqbe;u@MsWxm8QDL7;qpfAiWyZW-xAHPL<1cD1!seU z1j-eOLBRIG$JAYgtVLT|@;>^f>&esOiBA!s6=oOU-`Y=HN(n}foBGX8=8bpW%lurJ z!1{YB?_fjTjs#Ev1^0*RiJrwV8^i$guf!9ZsJmI#XKynzS|tvTYM~s2{%qlZ3oDGS z2qru>Q9l610<DkZfCVTLz#z4GoP_9B=gP-K01v8kB2-Zb%Tj+Mf;8$k-Ukf0xnGO1w%)QMb9K1*MLhfAd1E)rPFZ;xfEDK;O)$3r#EOrBL52z|Cz&{w3I|yX zlu@9?%gT;|0?MS@40wg}>?dkThtX6H6kLYy8(3fr($n96@HQ0!S@`M7yq_{#G~l}e zG~NslUh(ny1XsC*S65e{k0Qat3S>oT(Z*6qVg^bTh-k8e6724)1{*E}B4L-4*xv$$ zOU4!dE%MVr#dT$07|sVkbAiI?;^>%{zzl&DD7{UP;^pB1gA{S`5E&X#ze7Z94?5f6 zprC^Me2o=20EjB2@fTy91!0J6sQs!zKu1>Aw!#gDQwOE9ZQ=XR8NyE3$HM?pam8yo9UH;(3*4}$4H zYA_J<>8i24_m0Imt*pPN2g>6_OGTBh?OHT&{j1&Q8L&7Xz}Fkz`BZC^hgkzBsU;PK z)T=ouwR=B;)x}S#@|i^(uGv)JwO^%LMc_3 zdT26QSI0X)%reu{-(R;sgL%Qh*q9sujw&hwSto#J93Kl9^@IX;4-iN)JsGo9eq777_OK5XD6*+M9C!?UG^b{9%r4Pg56~Kn@c|U06 zD46}ehd{tI>EAV18EzDGI4h6|0GC-Jy$%v#H64SV)4*MmR8JNC^;^=n@LmA6C3t6Y zQ3y+v2oYySaS#sDtgE>v4+PpR3Xz&!;1#SMv}AdvT`5g7$+M%HJ{GlZ$#x#q)qX*Ya$hOafhkTtri~ z>|J<-C1;wi`mF{_KrELC1zOQRMS+mxn^>@bUGa*r2dtoHgb0w>fIcKrphSR$Rpb5W zp_V=I4pvuK;V$I^^DZ?CIiJtd0~oA`QM?KZu<;F`PQ0tE@A|(+=Kn_J|Ibt%eC3Y) bkrbZpZSVOj*JJQ%DMV6C?n9-Bf&c#i6X+E6 literal 0 HcmV?d00001