From 93987ae87569e9bdab37c61ff4f1a162a5449e43 Mon Sep 17 00:00:00 2001 From: jonsd Date: Wed, 23 Jan 2008 23:28:25 +0000 Subject: [PATCH] [1.30.01] langs=en: added phoneme [i@3] to distinguish (for example) "ia" from "ier" in American. lang=en-r: adjusted phoneme lengths. lang=fr: changed decimal fractions option. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@130 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/af_list | 7 +- dictsource/af_rules | 65 +++++++++++-- dictsource/dict_phonemes | 29 +++--- dictsource/en_rules | 4 +- dictsource/fr_list | 198 ++++++++++++++++++++------------------- dictsource/fr_rules | 79 ++++++++++++++-- dictsource/id_list | 6 +- dictsource/id_rules | 17 +++- dictsource/jbo_list | 10 ++ espeak-data/voices/fr | 1 + espeak-data/voices/ta | 1 + phsource/compile_report | 113 ++++++++++++++++++++-- phsource/mbrola/af1 | 1 + phsource/mbrola/cr1 | 1 + phsource/mbrola/de4 | 1 + phsource/mbrola/de6 | 1 + phsource/mbrola/en1 | 1 + phsource/mbrola/fr1 | 1 + phsource/mbrola/gr2 | 1 + phsource/mbrola/hu1 | 1 + phsource/mbrola/nl | 1 + phsource/mbrola/pl1 | 1 + phsource/mbrola/ro1 | 1 + phsource/mbrola/sv | 1 + phsource/mbrola/sv2 | 1 + phsource/mbrola/us | 1 + phsource/mbrola/us3 | 1 + phsource/ph_english_us | 40 ++++---- phsource/ph_french | 80 ++++++++++++---- phsource/ph_tamil | 14 +++ phsource/vowel/aa_4 | Bin 42498 -> 5204 bytes 31 files changed, 493 insertions(+), 186 deletions(-) diff --git a/dictsource/af_list b/dictsource/af_list index 64666d12..c8b432f9 100755 --- a/dictsource/af_list +++ b/dictsource/af_list @@ -1,4 +1,4 @@ -//maintainer: Willem van der Walt +//maintainer: Willem van der Walt // email: wvdwalt@csir.co.za // tel: +27 12 8413996 // Meraka Institute, CSIR @@ -228,7 +228,6 @@ george _^_EN gerhard x2&rart gerhardus $2 gloria glO:ria -gouws x2@Us grange x2rA:nsi gustav gustaf havenga hA:f@Nx2a @@ -262,7 +261,6 @@ levi le@fi louis luI louise luw'i:z -louw l'@U mbeki mbE:ki magdalena $3 malan mal'an @@ -316,12 +314,14 @@ sebastian s@bastian servaas s@rfA:s shakespeare _^_EN stephan ste@fan +stephanus st@fA:nWs strauss straUs tania tanja telemann te@l@man terblanche t@rblA:nS theron tr'On toerien $2 +trudie trudi viljoen $2 villiers vIli@rs vincent _^_EN @@ -770,7 +770,6 @@ staccato $2 terdeë $2 terug t@-rWx2 tesaam t@sA:m -tesame t@sA:m@ tevrede t@fre@d@ toegee tux2e@ totale tut'A:l@ diff --git a/dictsource/af_rules b/dictsource/af_rules index 4c408140..f6fffffa 100755 --- a/dictsource/af_rules +++ b/dictsource/af_rules @@ -1,4 +1,4 @@ -//maintainer: Willem van der Walt +//maintainer: Willem van der Walt // email: wvdwalt@csir.co.za // tel: +27 12 8413996 // Meraka Institute, CSIR @@ -119,7 +119,7 @@ ar (gaï %ar // move default stress: argaïes/-e arge (tip %arx2@ // move default stress: argetipe/argetipies/-e ar (moedig %ar // move default stress: armoedig/-e/-heid - arte (ri %arte@ // fix stress and e sound: arterie/-ë/-s + _) arte (ri %arte@ // fix stress and e sound: arterie/-ë/-s _) asbes %asbEs // fix stress and e sound: asbes and many compounds a (siel %a // shorten a sound and move default stress: asiel and compounds asse (gaai %as@ // move default stress: assegaai/-e @@ -627,8 +627,11 @@ // &C) dele (_ de@l@ _) dames d'A:m@s // numerous compounds with dames - de (ba d@ // debat/-te/debakel + de (bA d@ // debat/-te/debakel/waardebepaling deba (tteer d@b%a // move default stress to end: debatteer + debi (te d%Eb%i // fix stress and e sound: debiteer/debiteur/debitering + debu (ta d%Eb%y // fix stress and e sound: debutant/-e and compounds + debu (te@ d%Eb%y // fix stress and e sound: debuteer/debutering debuut d@b'yt // debuut/-bundel/-vertoning dee (moedig d%e@ // move default stress: deemoedig/-e/-er/-ste/-heid/-ing desember de@s'Emb@r @@ -674,6 +677,9 @@ d (riem_ t // fix t sound: gordriem/halsbandriem dril (A drIl // fix i sound when vowel follows dril: driloefening/-opleiding droef (gees dr%uf // move default stress: droefgeestig/-e/-er/-ste/-heid + @) d (roos t // fix d sound: draadrooster/maand-/strand-/veldroos + @) d (rose_ t // fix d sound: maand-/strand-/veldrose + @) d (rosie t // fix d sound: maand-/strand-/veldrosie/-s @) d (t // drop d: breedte/handtekening/rondte/rondtrek... @n) d (uit t_ // fix d sound and insert short break: enduit/handuit and similar @) dwes tv'Es // noordwes/te/lik/e suidwes/te/lik/e @@ -701,6 +707,7 @@ ros) e (CA @ // fix e sound: rosegeur/roseweg speld) e (C @ // fix e sound: speldekop/-kussing/-punt, etc. spok) e (C @ // fix e sound: compounds beginning with spoke: spokebeeld/-lywe/-dans + styw) e (C @ // fix e sound: stywepas/stywesiek/-te blak) e (r @ // fix e sound: blakerend/-e/blakering skilf) e (r @ // fix e sound: skilferagtig/skilferdeeg/-kors/afgeskilferde/verskilfering syf) e (r @ // fix e sound: (be-/in-/ont-/uitsyfering @@ -731,6 +738,7 @@ And) e (lC @ // fix e sound: swendelfirma/vaandeldraer and similar _ad) e (lC @ // fix e sound: adelbors/-trots/-stand, etc. Cing) e (lA @ // fix e sound: dwingeland/klingeling/kringelend/tingeling + Cing) e (lC@ @ // fix e sound: stingelblare/-deel/-groente/-lit.../swingelboor/-hout/-pomp... maand) e (lA @ // fix e sound: (twee)maandelikse/maandelange KeuC) e (lC@ @ // fix e sound: euweldaad/kneukelbeentjie/kreupelsorg/onkreukelbaar... @mp) e (lC@ @ // fix e sound: dompeldoop/-koker/-verwarmer/drumpeltrapper/pampelmoes/rimpelpapier... @@ -895,6 +903,7 @@ %C) e (tt+ E // fix e sound: (enkelveel)lettergrepige/koppelletter/krulletter/spannette ll) e (lK & // parallel/-le @s) e (l@ @ // e sound in words like borselkop/voedselaanvulling and many similar + tronks) e (l & // fix e sound: tronksel/-selletjie @s) e (lfde '& //fix dieselfde Cs) e (lf & // e sound in words like terselfdertyd/vanselfsprekend Cs) e (lle_ & // e sound in words like bloedselle/limfselle/stamselle/tronkselle @@ -975,6 +984,7 @@ lew) e (ns @ &d) e (r@ @ // not initial or final syllable + @C) e (reë @ // fix e sound: geelperskereën/tropereën, etc. @d) e (rnst & // but fix e sound in doodernstig/-e &t) e (r@ @ &b) e (s@ @ @@ -1019,6 +1029,7 @@ hip) e (r @ _) er (b &r' // erbarm/ing erke (n %&rkE // fix stress and e sounds: erken/-ning/(self)erkende + w) erke (n &rk@ // but: (mede/terug)werkend/-e _) er (v &r' // ervaar/ervare/ervarings/ervaringe &) ere (_ @r@ @l) ere (_ e@r@ // fix e sound: staanlere/toonlere @@ -2125,6 +2136,7 @@ ment m'Ent mental (iteit m,Ental // fix stress: mentaliteit/sentimentaliteit and compounds mentjie m'EiNci // monumentjie/dokumentjies + @C) mere (_ me@:r@ // fix penultimate e sound: sout(water)-/strandmere me (riete m@ // move default stress: meriete and compounds merino m@rin%u // fix stress and vowel sounds: merino/-skaap/-ram, etc. me (rrie mE // fix e sound: merrie/-s/perdemerrie and similar compounds @@ -2313,6 +2325,7 @@ oy OI ou @U ouder (wet %@Ud@r // move default stress: ouderwets/-e, etc. + ouw (K @U // Gouws/Louw/Touwsrivier oetjie uIci oentjie uINci @@ -3122,7 +3135,11 @@ stimu (lA st@m%y // move default stress and fix i sound: stimuleer/stimulering/stimulasie _) sub (a sWb_ // subagent/subartikel/subatomies, etc. sub (li s%Wb // move default stress: subliem/-e + subli (mA s%Wbl%i // move default stress: sublimaat/-ate/sublimering + sublimi (na s%Wbl%im%i // move default stress: subliminaal/-ale + sub (sidA s%Wb // move default stress: subsidie/-s and compounds sub (stansie s%Wp // move default stress and fix b sound: substansie/-s/substansieel/-siële + substi (tu s%Wbst@ // move default stress: subsistuut/-tute sub (ti s%Wp // stress and b sound: subtiel/-ste/subtiliteit sugges s%Wx2Es // suggestie/suggestief/suggestiewe @) sug (tig s'Wx2 // eersugtig/onbaatsugtig/onselfsugtig, etc. @@ -3131,19 +3148,27 @@ sukses s%WksEs // sukses/suksesse/suksesvol/reusesukses _) su (meri s%u // fix stress and u sound: sumeries/-e su (mmier s%W // move default stress: sumier/-e + surro (ga s%Wr%u // fix stress and o sound: surrogaat/surrogate and compounds su (saC s%u // fix stress and u sound: susan/-na/susara + _) sw sw // fix w sound: words beginning with sw-: swerweling/swetend + swaar (lyw sw%A:r // move default stress: swaarlywig/-e/-heid + swaar (moed sw%A:r // move default stress: swaarmoedig/-e/-heid swag sv'ax2 + swa (hili sw%a // fix stress and a sound: swahili/-'s swart (gal sw%art // move default stress: swartgallig @) swem (_ swEm // fix e sound of compounds ending in swem: uitswem/wegswem... - swerk sv&rk + @) swerk sv&rk .group st D_) ste st@ //ste after numbers 22ste etc. + stalag (Ciet st%al%ax2 // fix stress and 1st a sound: stalagmiet/stalagtiet/-e stan (da st%an // standaard/-e/standardisering standerd (@ st%and@rt // compounds starting with standerd + stand (houde st%ant // move default stress: standhoudend/-e/-heid stand (vasti st%ant // move default stress: (on)standvastig/-e/-heid stapel stA:p@l // fix e sound: (op)stapeling/stapelaar staties st'A:tis + sta (tutA st%a // fix stress and a sound: statute/statutêr steding ste@d@N // besteding and compounds C) steker ste@k@r // e sound: (aan/dop/kwaad/rugsteker/-s/-y, etc. _ne) stel st@l // fix e sound: nestel/-end @@ -3174,21 +3199,26 @@ sterrei st@r'eI sterre st&r@ sterretjie st'&rici - + sterwens (@ st&rv@ns_ // fix 2nd e sound and insert paus: sterwensuur/-kreet/-nood and similar ste (m stE // eliminate one m in derivitives like stemming stempel stEmp@l // fix 2nd e sound: stempelband/-datum/-gereedskap/-hamer/-jaar/-letter... stewel ste@v@l // sokkerstewels/stewelmaker and other compounds stie (beu st%i // move default stress: stiebeuel and compounds @) stiek st'ik // statistiek/akoestiek/artistiek and many similar @) sties =st%is // statisties/akoesties/artisties and many similar + sti (let st%i // move default stress: stilet/-te/stiletto sti (pulA st@ // stipuleer/stipulering/stipulasie stof (o stOf? // fix 1st o sound: stofomslag/-omslae/stofopskoppery stok (A stOk? // stokagtig/stokinsek/stokoud stok (e sto@k // stoker/-y storm stOr@-m + stout (moedi st%@Ut // move default stress: stoutmoedig/-e/-heid + strand (o strant_ // fix d sound and insert pause: strandoord/-e strategie str%at@x2i // fix stress and vowel sounds: strategie and compounds strategies str%ate@x2is // fix stress and vowel sounds: strategies/-e streke stre@k@ + strig (nien str@x2 // move default stress: strignien and compounds + strukt (u str%Wkt // correct stress: strukture/bevelstruktuur/-ture studen (t st%ydEn // fix stress: student/regstudent/studentesentrum, etc. stu (de st%y // fix stress and e sound: bestuderend/bestudering @@ -3200,11 +3230,17 @@ A) tch _^_EN // clutch/pitch/bitch tabak t%abak; ta (blet t%a // move default stress: tablet/-te and compounds + tablo (Z t%ablo@ // fix stress and o sound: tablo/-'s tafe (re t%af@ // fix vowel sounds: tafereel/taferele and compounds + taiwa (n t%aIwa // fix stress and w and a sounds: Taiwan/Taiwanese + taksider (m t%aks%id%&r // fix stress and e sound: taksidermie/taksidermis/-te @) talig t'A:l@x2 // Anderstalig/tweetalig @) ta (lis t%a // shorten a sound: hospitalisasie/kapitalisme/katalisator and similar _) ta (ma t%a // tamatie and compounds _) ta (mb t%a // tamboer and compounds/tambotie and compounds + tamboe (ryn t%amb%u // move default stress: tamboeryn/-e and compounds + tamele (tj t%am@lEi // fix stress and vowel sounds: tameletjie/-s + _) tand (a tant_ // fix d sound and insert pause: tandarts/-e and compounds _) tande (C@ t''and@ // fix e sound: tandebeker/-pasta/-poeier/-trekker _) tant (e tA~nt // nasalise: tante/-tjie/-s tantes tA~nt@s // nasalise and fix e sound: tantes @@ -3224,6 +3260,7 @@ @) tiewe (_ t'iv@ // alternatiewe/aktiewe/instinktiewe/(ak)kumulatiewe tink (tink t@Nk // move default stress: tinktinkie/-s ti (ra t%i // move default stress tiran tirade + tira (nnie t%ir%a // move default stress: tirannie titel tit@l // fix e sound: (on)getiteld/titelblad/-geveg and many similar tj tS @) tj (a tj // separate tj: agtjarig/blatjang/bontjas/olifantjag/ouditjaar/tweegatjakkals @@ -3247,6 +3284,7 @@ toegewen (d t%ux2e@v@n // move default stress: toegewend/-e/-heid toe (komsti t%u // move default stress: toekomstig/-e toenemen tun'e@m@n //toenemend/e/er + toepaslik t%upasl@k // move default stress: toepaslik/-e/-heid toereike t%ureIk@ // toereikend/heid toereken (b t%ur'e@k@n // ontoerekenbaar/heid/ontoerekenbaarheid toneel t%une@l @@ -3262,10 +3300,12 @@ toi (let t%OI // move default stress: toilet and compounds tokke (lo t%Ok@ // move default stress: tokkelos/-sie/tokkelok and compounds tok (tokk t%Ok // move default stress: toktokkie/-s/-spelery, etc. + _) to (na t%o@ // fix stress and o sound: tonaal/tonale @) toris (_ t'o@r@s // fix stress: pectoris/klitoris tra (dis tr%a// shorten and unstress 1st slb: tradisie/tradisioneel trag (ed tr%ax2 // move default stress: tragedie and compounds tra (jek tr%a // move default stress and shorten a sound: trajek/-te + _) trak (ta tr%ak // move default stress: traktaat/traktate _) trans (@P5 tr%ans // transatlanties/transformasie/transoranje/Transvaal, etc. _) trans (aksie tr%ans // remove small break: transaksie/-s and compounds trap (soe tr%ap // move default stress: trapsoetjies/-e @@ -3274,16 +3314,20 @@ @) treer tr'e@r // this slb always takes stress; many words tref (afs trEf_ // fix e sound and insert short pause: trefafstand/-e trens (_ tre~ns // fix e sound and nasalise: trens/-snytrens and similar + _) tri (bu tr@ // fix stress and i sound: tribuun/tribune/tribuut/tribute + _) tribu (na tr@b%y // fix stress and i sound: tribunaal/tribunale/tribunaat tre (k tr& trekker tr&k@r // voortrekkerleier/Voortrekkerstraat/salaristrekkersvergadering triomf (ant tr%i%Omf // move default stress: triomfantlik/-e tri (omf tr%i // move default stress: triomf/-boog/-lied/-tog, etc. @) trise (_ tr'is@ // aktrise and similar + troglo (die tr%Ox2l%u // fix stress and 2nd o sound: troglodiet/-e and compounds _) trom (b tr%Om // move default stress: tromboon/trombone/trombose and compounds _) trom (pet tr%Om // move default stress: trompet/-tte/-tter and compounds tro (tseer tr%O // stress: trotseer/getrotseer tro (tsering tr%O // move default stress + truk (aats tryk // default stress: trukaatser/-s tru (spieë try // fix u sound: truspieël/-tjie/-s ttel t@l // many compounds of bottel/skottelgoed tuiglik t'Yyx2l@k // stress: werktuiglik/sintuiglik/-e/-heid @@ -3292,6 +3336,7 @@ tuur t'yr parti) tuur ty:r // compounds ending with partituur take default stress: musiekpartituur s) tuur ty:r // "uur" in stuur takes default stress: weggestuur + twyfe (l tweIf@ // fix e sound: twyfelloos/twyfellose @) ty (dig t'eI // gelyktydig/vroegtydig @@ -3307,6 +3352,7 @@ teks (tiel t%Eks // move default stress: tekstiel and compounds _) teks (tu t%Eks // move default stress: tekstuur/teksture _) tele (C t%&l@ // telefoneer/telekommunikasie, etc. + @) tele (gra t&l@ // fix e sound in compounds: riem-/spoedtelegram/veldtelegraaf, etc. teleks t&lEks // fix stress and vowel sounds: teleks and compounds _) teler te@l@r // fix stress and vowel sounds: teler/-s/-y/-svereniging, etc. @C) te (nk t& ++ //tenk and friends @@ -3319,6 +3365,7 @@ te (oC t%i% // teologie/-loog/-logies/teorie/teoreties nie) te (min t@ // fix e sound: (des)nietemin tempera ,tEmp@-r%a //temperatuur, temperament etc. + temper tEmp@r // fix 2nd e sound: temperend/tempering teks (+ tEks // compounds with teks tempel tEmp@l // fix e sounds: afgodtempel/Hindoetempel/kultuurtempel/tempelbewaarder/tempeldienaar tent (_ tEnt //suurstoftent and others @@ -3353,6 +3400,7 @@ A) teur t'Y@r // outeur/ouditeur/operateur k) teur t'Y@r // akteur/inspekteur teen (stryd t%e@n // move default stress: teenstrydig/-e/-heid + teens (woor t%e@ns // move default stress: teenswoordig/-e teen (woor t%e@n // teenwoordig/heid/verteenwoordiging _) te (we t@ // move default stress and fix 1st e sound: teweeg/tewerkstelling _) tewens te@v@ns // fix both e sounds @@ -3374,6 +3422,7 @@ teltjie t@lki @) tel (o t@l // hartelose/besluiteloos/gedagtelose ke) te (l t@ // fix 2nd e sound in many compounds with ketel + tendens t%Ende~ns // fix stress and e sounds: tendens/-e and compounds &) tert (A t@rt // fix e sound: agtertoe/foltertuig/gietertuit/kilometertoelae/lastertaal/letterteken &) tert (r t@rt // fix e sound: pleistertroffel/venstertralie/ystertralies/ystertrap &s) tert (aan t&:rt // fix e sound: swa(w)elstertaandpak/-ke @@ -3405,6 +3454,7 @@ ul) terende (_ t'e@r@nd@ //konsulterende resulterende ver) terende (_ t'e@r@nd@ //verterende in compounds ter (myn t%&r // move default stress: termyn/-aandele/-versekering, etc. + tesame t@sA:m@ // fix stress and vowel sounds: moved here because of compounds with tesame: tesamebeleid C) te (tjie ti // fix e sound: holtetjie/groentetjies/laagtetjie, etc. tewe (_ te@v@ // fix e sound: (agter/voor)stewe/tewe and compounds @@ -3418,7 +3468,7 @@ ui Yy uie (C Yy@ // graansuierdiens/kruiersloon/kuiergas/luierbroekie/sluierdoek/suierklep/getuienis uy Yy - + _) uit (@P3 'Yyt // uit- is prefix: uitademing, etc. uit (bund %Yyt // move default stress: uitbundig and derivitives uit (dagen %Yy // move default stress: uitdagend/-e uit (druk %Yyt // move default stress @@ -3429,6 +3479,7 @@ uit (eenloop Yyt_ // restore default stress: uiteenloop uiteen (lop %Yyt_%e@n // move stress to 3rd slb.: uiteenlopend/uiteenloping uiteindeli %YyteInd@l@ // move default stress: uiteindelik/-e + uiter Yyt@r // uit- not prefix: uiters/uiterlik/uitermate uitgee (+ 'Yytx2e@ // se rule: _) uitge (@P5 Yytx2@ uit (kansel ''Yyt // enforce stress on 1st slb: uitkanselleer uit (sluiten %Yyt // move default stress: uitsluitend/-e @@ -3655,6 +3706,8 @@ vleis) w v // fix w sound: vleisweefsel/-woekering/-wange ooC) w v // booswig/grootwild/ooswaarts/ %At) w v // fix w sound: bloedvaatweefsel/laatwinter/privaatwelsynsorganisasies... + swart) w v // fix w sound: swartwildebees/-witpens/-woud, etc. + Cut) w v // fix w sound: geskutwerf/stutwal/-le out) w v // houtwerk/soutwater and similar yd) w v // fix w sound: sluittydwerk/(wa)wydwakker wee (moedi v%e@ // move default stress: weemoedig/-e/-heid diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 57db87f5..a2328e85 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -111,14 +111,15 @@ S s2 t v Z Dictionary fr_dict -@ @- a A A~ e E E~ -i o O O~ u W w^i W~ -y Y +@ @- a A A~ e E E: +E~ i i: o O O~ u W +w^i W~ y Y -: ; b c d dZ f g -h j k l L m n N -n^ p r R s S t t2 -tS v w z Z z2 z3 +* - : ; b c d dZ +f g h j k l L m +n N n^ p r R s S +t t2 tS v w z Z z2 +z3 Dictionary hi_dict @@ -358,10 +359,11 @@ t tS v w x z Z Dictionary th_dict -3 a E i i: O O: +a a: e E: i i: o O +O: u y -: c d h k l m n -N p s t2 +c d h k l m n N +p s t Dictionary hbs_dict @@ -378,9 +380,10 @@ ts tS; v x z Z Dictionary id_dict -@ a aI aU E i O +@ a aI aU e E i o +O u * ? b d dZ f g h j k l m n N n^ p -q r R s S t tS v -w x z +r R s S t tS v w +x z diff --git a/dictsource/en_rules b/dictsource/en_rules index b4698926..4917fee4 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -3151,7 +3151,7 @@ lle (_ l @@o) lled (_$3v d @@) lled (_$3v d - B) l (_ @L + B) l (_N @L w) l (_ l r) l (_ l Al) l (_ @@ -4205,7 +4205,7 @@ r r rr r r) r (_ - C) r (_ r@ + C) r (_N r@ e) r (_ 3 @) r (B @ 3_) rd (_ diff --git a/dictsource/fr_list b/dictsource/fr_list index 7e687639..05e105e6 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -1,8 +1,11 @@ + // This file in UTF8 encoded // 2006-11-18 Gilles Casse // +// Updated 2008-01-21 Michel Such +// // * Numbers, a few abbreviations and exceptions. // @@ -101,7 +104,7 @@ _4 k'atR _5 s'E~c _6 s'iz3 _7 s'Et -_8 'w^it +_8 _|'w^it _9 n'@f _10 d'iz3 _11 O~z @@ -160,7 +163,7 @@ _1M1 m'il _0M2 milj'O~ _0M3 milj'aR _0and e -_dpt pw'E~ +_dpt virg'yl // ABBREVIATIONS @@ -169,22 +172,32 @@ _dpt pw'E~ (http ://) aSt,et,ep'e abc $abbrev ac $abbrev +adsl $abbrev +amd $abbrev api $abbrev +cci $abbrev cio $abbrev ctrl kO~tRol dept depaRt@mA~ etc etseteRa hmm h@m ibm $abbrev +ide $abbrev ip $abbrev +jaws Z'owz kde $abbrev m. m@sjY mbrola Em'bRola mlle mad@mwazEl mme madam mr m@sjY +nti $abbrev +nvda $abbrev +pci $abbrev +pda $abbrev p.s postskRiptOm ratp $abbrev +scsi $abbrev s.t.p s'il:t'@:pl'E s.v.p s'il:v'u:pl'E st s'E~ @@ -194,6 +207,7 @@ svp s'il:v'u:pl'E url $abbrev usb $abbrev utf $abbrev +wma $abbrev xfce iksEfse@ xy $abbrev @@ -207,47 +221,36 @@ prof $dot // articles le $u $nounf la $u $nounf -les lEz2 $u $nounf +les lez2 $u $nounf ?2 les lez2 $u $nounf un $u $nounf une $u $nounf // conjonctions -et e $u $brk -ou $u $brk -car $u $brk -soit $u $brk mais $u $brk ou u $u $brk +et e $u $brk donc $u $brk or $u $brk ni $u $brk car $u $brk +soit $u $brk cependant $u $brk néanmoins $u $brk toutefois $u $brk comme $u $brk +dont dO~t2 $u $brk lorsque $u $brk puisque $u $brk quand $u $brk que $u $brk -qui $u $brk $verbf +qui $u $verbf quoique $u $brk si $u $brk -// (à cause que) $u $brk -// (ainsi que) $u $brk -// (à mesure que) $u $brk -// (après que) $u $brk -// (à moins que) $u $brk -// (au lieu que) $u $brk -// (aussitôt que) $u $brk -// (pendant que) $u $brk -// (pourvu que) $u $pause - // pronouns je $u $verbf tu $u $verbf @@ -261,20 +264,22 @@ on $u $verbf me $u $verbf te $u $verbf se $u $verbf +lui $u $verbf ce $u $nounf +cette $u $nounf ces sEz2 $u $nounf // possessives ma $u+ $nounf mon $u+ $nounf -mes mEz2 $u+ $nounf +mes mez2 $u+ $nounf ta $u+ $nounf ton $u+ $nounf -tes tEz2 $u+ $nounf +tes tez2 $u+ $nounf sa $u+ $nounf son $u+ $nounf -ses sEz2 $u+ $nounf +ses sez2 $u+ $nounf notre $u+ $nounf votre $u+ $nounf leur $u+ @@ -285,7 +290,7 @@ leurs $u+ // prepositions de $u $nounf du $u+ $nounf -des dEz2 $u $nounf +des dez2 $u $nounf ?2 des dez2 $u+ $nounf @@ -296,8 +301,8 @@ aux $u $brk dans $u+ $brk sur $u+ $brk par $u+ $brk -pour $u+ $brk -en $u+ $brk +pour $u+ +en $u+ (en effet) A~nEf'E $brk vers $u+ $brk @@ -317,35 +322,36 @@ où $brk // auxillary verbs (be, have, can, etc) suis $u+ $verb +es Ez2 $u+ $verb est Et2 $u+ d'est d'Est sommes $u+ êtes $u+ -sont $u+ +sont $u+ $verb -étais $u+ -était $u+ -étions $u+ -étiez $u+ -étaient $u+ +étais $u+ $verb +était $u+ $verb +étions $u+ *verb +étiez $u+ $verb +étaient $u+ $verb -serai $u+ -sera $u+ -seras $u+ -serons $u+ -serez $u+ -seront $u+ +serai $u+ $verb +seras $u+ $verb +sera $u+ $verb +serons $u+ $verb +serez $u+ $verb +seront $u+ $verb eu y $u+ -eus yz2 $u+ -eut yt2 $u+ eue y $u+ eues yz2 $u+ +eus yz2 $u+ +eut yt2 $u+ $verb // some common adjectives and adverbs quelque $u -tout $u +tout t'ut2 $u // Letters which can be words @@ -357,6 +363,7 @@ y i:gR'Ek $atend // pronunciation exceptions +consent kO~s'A~t2 divers div'Erz2 scient si bénéficient benefisi $verb @@ -364,7 +371,7 @@ président pRezid'A~ président pRezidt2 $verb résident Rezid'A~ résident Rezidt2 $verb -récipient Resipj'A~ +ressent r@s'A~t2 ►évident evid'A~ évident evidt2 $verb couvent k'uvt2 $verb @@ -385,11 +392,8 @@ torrent tOR'A~ monsieur m@sjY montréal mO~Real -(il y a) ili;a $u -(il y) ili $u (n'est ce pas) nEspa (qu'est ce que) kEsk@ $u -(ce qui) s@ki $brk (cent un) s'A~||W~ (cent unième) s'A~||ynj'Em (cent une) s'A~||yn @@ -400,14 +404,11 @@ absent absA~ accident aksidA~ adéquat adekuat2 adéquate adekuat -adéquats adekuaz2 -adéquates adekuatz2 ardent aRdA~ boeufs bY bus bys choeur kWr discident disidA~ -echo Eko fils fis haillon _|ajO~ haricot _|aRiko @@ -421,25 +422,23 @@ pays pEi prudent pRydA~ secret sYkRE secrets sYkREz2 +souris suri sens sA~s c'est sEt2 $u+ qu'à ka -qu'y ki -s'y si -m'y mi -t'y ti +m'y mi $verbf +t'y ti $verbf +s'y si $verbf +qu'y ki $verbf (sud est) sydEst (nord est) nOREst -écho Eko cci $abbrev nvda $abbrev -open Op'En -outlook autluk -potentiomètre pOtA~sjOmEtR -reader Rid'WR +open Op'@n +potentiomètre pOtA~sjOmEtR@- processus pROsEsys @@ -449,9 +448,16 @@ azimut azim'yt brut bR'yt but by $verb but byt +club kl@b +(le pub) l@||p'@b +(un pub) W~||p'@b +(du pub) dy||p'@b connecticut kOnEktikyt +cut cWt helmut Elmut +hub _|@b mazout mazut +michael mikaEl out aut rut Ryt scorbut skORbyt @@ -470,8 +476,6 @@ exocet EgzOsEt fret fR'Et gadget gadZEt hamlet amlEt -internet E~tERnEt -(internet explorer) E~tErn'Et||EksplOr'Wr jacket ZakEt knesset knEsEt lazaret lazaREt @@ -482,19 +486,6 @@ pickpocket pikpOkEt racket RakEt set sEt soviet sOvjEt -//ticket tikE - -// ct (ct are not said) -aspect aspE -aspects aspE -circonspect ciRcO~spE -irrespect iREspE -prospect pROspE -respect REspE -suspect syspE - -// st (t is not said) -prévost pRevo // urt (t is said) kurt kuRt @@ -519,42 +510,69 @@ flirt fl@Rt (tee shirt) tiS@Rt parfum paRfW~ -forum fOR@m +forum fOROm // words from other languages +amazon amaz'On +(audible manager) od'ibl||manadZ'@r +bluetooth blut'us boy bOj byte bajt bytes bajts +cleaner kli:n@r +(cyber link) sibEr||link debian dEbjAn +driver drajv@rz2 download dOnlod emacs Emaks -emacspeak Emakspik -espeak @spik +emacspeak Emakspi:k +espeak @spi:k +ethernet etERnEt firefox faj@RfOks -thunderbird f@ndERb@Rd +google gu:g'@l girl g@Rl gnome gnom gnu gnu insight insajt +internet E~tERnEt +(internet explorer) E~tErn'Et||EksplOr'@r +leader li:d@R +light lajt +link link liszt list +lite lajt (mac os x) makoEsiks +mail mE:jl +maker mE:jk@r +media medja +messenger mesEnZ'@r +movy mu:v'i +new nj'u +news nj'uz night najt +ok oke +outlook autluk +player plEj'@r +reader Ri:d@R redhat REdat schubert SubER +screamer skri:m@r +(search & destroy) s@:rS_||end_||dEsstrOj +shrink Sr'ink +skype sk'ajp@- +spybot spajbOt sun s@n sunlight s@nlajt +(text aloud) tEkst||@lau-d +thunderbird f@ndERb@Rd ubuntu ubuntu +update @pd'E:jt +upload @plod viavoice viavOjs windows windoz -word wORd +word wWRd wright _^_EN -update @pd'ejt -skype sk'ajp@- -bluetooth blut'us -messenger mEsE~nZ'Wr -player plEj'Wr -movy muv'i -maker mEjk'Wr +writer rajt@r yacht jot @@ -564,53 +582,38 @@ ajoutions aZutjO~z2 apportions apORtjO~z2 apprêtions apREtjO~z2 arrêtions aREtjO~z2 -assistions asistjO~ -bastions bastjO~z2 -battions batjO~z2 chantions SA~tjO~z2 citions sitjO~z2 -combattions kO~batjO~z2 comptions kO~tjO~z2 -congestions kO~ZEstjO~z2 constations kO~statjO~z2 contentions kO~tA~tjO~z2 dations datjO~z2 -digestions diZEstjO~z2 discutions diskytjO~z2 doutions dutjO~z2 débutions debytjO~z2 désertions dezERtjO~z2 détentions detA~tjO~z2 escomptions EskO~tjO~z2 -existions EgzistjO~z2 exploitions EksplwatjO~z2 exportions EkspORtjO~z2 -gestions ZEstjO~z2 habitions abitjO~z2 heurtions @RtjO~z2 -indigestions E~diZEstjO~z2 -insistions E~sistjO~z2 jetions Z@tjO~z2 limitions limitjO~z2 -manifestions manifEstjO~z2 méritions meRitjO~z2 partions paRtjO~z2 pressentions pREsA~tjO~z2 présentions pRezA~tjO~z2 prêtions pREtjO~z2 -quittions kitjO~z2 rations RatjO~z2 redoutions R@dutjO~z2 -regrettions R@gREtjO~z2 représentions R@pRezA~tjO~z2 respections REspEktjO~z2 ressentions R@sA~tjO~z2 -restions REstjO~z2 répétions RepetjO~z2 sentions sA~tjO~z2 sortions sORtjO~z2 souhaitions suEtjO~z2 -soumettions sumEtjO~z2 supportions sypORtjO~z2 tentions tA~tjO~z2 traitions tREtjO~z2 @@ -630,3 +633,4 @@ vincent vE~sA~ + diff --git a/dictsource/fr_rules b/dictsource/fr_rules index d46b8ff0..f075ef0e 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -3,6 +3,8 @@ // 2006-11-18 Gilles Casse // +// Updated: 2008-01-21 Michel Such +// // * The rules are based on Cicero TTS. // @@ -57,6 +59,7 @@ cc (Y ks // accéder cc k // occuper ar) ch (ét k // archétype architecte + _A) ch (o_ k // écho or) ch (esC k // orchestre or) ch (iC k // orchidée sy) ch (o k // psycho @@ -110,13 +113,19 @@ .group e e (Ce_ E + AC) e (_ @- // e muet + CC) e (_ @- // e muet + gu) e (_ @- // e muet eau o // bateau cheveaux j) e (a // Jean Jeanne + sp) ea (k i: // speak speaker + p) ect (_ E // suspect ect (_ Ekt // direct _trépi) ed e _pi) ed e // pied - ee i // meeting + ee i: // meeting _cl) ef (_ e // clef + k) e (r_ @ // maker ein (C E~ // peindre ein (_ E~ e (il E // vieille @@ -135,6 +144,7 @@ C) en (d_ A~ // comprend dépend C) en (ds_ A~ + cipi) en (C A~ // récipient qu) en (d_ A~ qu) en (ds_ A~ @@ -209,10 +219,10 @@ _trav) er (_ ER _ti) er (_ ER - th) er (_ WR // brother - th) er (s_ WR - w) er (_ WR // power - w) er (s_ WR + th) er (_ @R // brother + th) er (s_ @R + w) er (_ @R // power + w) er (s_ @R er (_ e // parler léger er (s_ e @@ -249,8 +259,8 @@ rC) es (_C =@ // fortes dames ') eu (_ y // eu - eu (r_ W // peur - eu (rs_ W // tracteurs + eu (r_ @ // peur + eu (rs_ @ // tracteurs eu (b @ // meuble eu (f @ // neuf @@ -290,6 +300,7 @@ _d) e (ch @ _d) e (Cl @ _d) e (Cr @ // degré + _d) e (rr E // derrière _r) e (ch @ // recherche _r) e (Cl @ _r) e (Cr @ // retracer @@ -374,6 +385,37 @@ .group h +_) h (ac _! // hache +_) h (al _! // halte +_) h (amp _! // hampe +_) h (an _! // hanche +_) h (app _! // happer +_) h (arc _! // harceler +_) h (arna _! // harnais +_) h (ard _! // hardi +_) h (arp _! // harpe +_) h (au _! // haut +_) h (av _! // havre +_) h (ern _! // hernie +_) h (ers _! // herse +_) h (ibo _! // hibou +_) h (ide _! // hideux +_) h (oll _! // hollandais +_) h (ong _! // hongrois +_) h (ont _! // honte +_) h (ord _! // horde +_) h (ou _! // houpe +_) h (uit_ _! // huit +_) h (ul _! // hululer +_) h (um _! // humer +_) h (umain // humain +_) h (umani // humanité +_) h (umb // humble +_) h (umi // humide +_) h (umo // humour +_) h (un _! // huns +_) h (ure_ _! // hure +_) h (utte_ _! // hutte h // ahuri @@ -466,9 +508,9 @@ oin (C wE~ oin (_ wE~ // coin oi wa // poil + oid (_ wa // froid oê (l wE // poêle oî wa // boîte - _) ok (_ oke // OK o (mm O // comme dr) o (me_ o // vélodrome ph) o (ne_ O // téléphone @@ -556,6 +598,12 @@ .group q q k // coq + _a) qu (a ku // aquarium + _a) qu (if ku // aquifère + _A) qu (idist ky // équidistant + _A) qu (ilat ky // équilatéralt + _C) qu (a ku // squale square + _A) qu (a ku // équateur qu k // quatre _) que (_ k@ // que que (_ k@- // puisque banque... @@ -564,10 +612,12 @@ .group r - right _^_EN // copyright + right rajt // copyright _su) rr RR // surréaliste - ou) rr RR // courrai +cou) rr RR // courrai +mou) rr RR // mourrai rre (_ R@- // barre +C) re (_ R@- // litre rr R // erreur r r // rien @@ -592,6 +642,7 @@ ub) s (is z // subsister han) s (on s // chanson A) s (A z // baiser + A) s (oft s // microsoft y) s (A z // paysage CCan) s (A z // transition @@ -631,10 +682,16 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe Vn) t (_ t2 // silent at end of verb unless next word starts with a vowel n) t (_ // silent at end of word r) t (_ t2 // fort + tte (_ t@- // fillette +C) te (_ t@- // patte +a) te (_ t@- // tomate aul) t (_ // Renault tt t // attitude + tte (_ t@- // fillette +A) te (_ t@- // tomate +C) te (_ t@- // pente s) th (m // asthme th t // théorie @@ -656,6 +713,7 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe t (ion s // programmation s) t (ion t // gestion + t) t (ion t // combattions t (iel s // partiel patiemment t (iem s @@ -794,3 +852,4 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe ® R@ZistR'@d_m'aRk + diff --git a/dictsource/id_list b/dictsource/id_list index a23dbde2..d31bec5e 100644 --- a/dictsource/id_list +++ b/dictsource/id_list @@ -40,7 +40,7 @@ _7 t'udZuh _8 d@l'apan _9 s@mb'ilan _10 s@p'uluh -_11 sebelas +_11 s@belas _12 d'uabelas _13 t'igabelas _14 'Empatbelas @@ -57,8 +57,8 @@ _6X 'Enampuluh _7X t'udZuhpuluh _8X d@l'apanpuluh _9X s@mb'ilanpuluh -_0C R'atus -_1C s@*'atus +_0C R'atus_| +_1C s@*'atus_| _0M1 R'ibu_ _1M1 s@r'ibu_ _0M2 dZ'uta_ diff --git a/dictsource/id_rules b/dictsource/id_rules index ce5e0719..512a7dd0 100644 --- a/dictsource/id_rules +++ b/dictsource/id_rules @@ -4,6 +4,9 @@ .group a a a + a) a _|a + A_) a _|a + au) a _|a ai aI au aU @@ -19,10 +22,13 @@ .group e e E + e) e _|E + A_) e _|E e (_ e .group f f f + ff f .group g g g @@ -32,6 +38,8 @@ .group i i i + i) i _|i + A_) i _|i .group j j dZ @@ -43,6 +51,7 @@ .group l l l + ll l .group m m m @@ -55,21 +64,25 @@ .group o o o + o) o _|o + A_) o _|o o (r O oe u // Dutch spelling .group p p p + pp p .group q q k - qu qw + qu kw .group r r R .group s s s + ss s sy S // perhaps [S;] ?? sj S @@ -79,6 +92,8 @@ .group u u u + u) u _|u + A_) u _|u .group v v v diff --git a/dictsource/jbo_list b/dictsource/jbo_list index e7750f59..0aa0a74d 100644 --- a/dictsource/jbo_list +++ b/dictsource/jbo_list @@ -47,6 +47,16 @@ q k@bu w v@bu +// stressed cmavo +cai k'aI_! +cu'i S'uhi_! +pei p'eI_! +ru'e R'uhe_! +sai s'aI_! +nai n'aI_! +na n'a_! +ja'a Z'aha_! + // unstressed words. Note single-syllable cmavo are all unstressed in jbo_rules e'o $u+ // request diff --git a/espeak-data/voices/fr b/espeak-data/voices/fr index 031f2acb..8baef30e 100755 --- a/espeak-data/voices/fr +++ b/espeak-data/voices/fr @@ -3,3 +3,4 @@ name french gender male dictrules 1 +intonation 3 diff --git a/espeak-data/voices/ta b/espeak-data/voices/ta index 43dd4af9..8d28a988 100755 --- a/espeak-data/voices/ta +++ b/espeak-data/voices/ta @@ -2,3 +2,4 @@ name tamil-test language ta gender male +intonation 3 diff --git a/phsource/compile_report b/phsource/compile_report index f95824e4..960d7310 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -43 phoneme tables +45 phoneme tables new total base 98 98 base2 24 117 @@ -15,10 +15,10 @@ eo 13 110 jbo 4 111 fi 40 129 - fr 35 121 - fr_ca 11 121 + fr 38 122 + fr_ca 11 122 hi 50 134 - ta 13 136 + ta 15 136 hu 23 114 nl 28 121 pl 15 109 @@ -43,29 +43,41 @@ zhy 40 131 zh 61 145 sw 14 107 + th 50 141 + id 14 119 Data file Used by b/b [b] base + [b] fr [b] hi [b;] ro b/b_ [b] base + [b] fr [b] hi b/b@ [b] base + [b] fr [b] hi b/b@2 [b] base + [b] fr [b] hi b/ba [b] base + [b] fr [b] hi b/be [b] base + [b] fr [b] hi b/bi [b] base + [b] fr [b] hi [b;] ro b/bo [b] base + [b] fr [b] hi b/bu [b] base + [b] fr [b] hi b/xb [b] base + [b] fr [b] hi d/d [d] base [d[] base @@ -161,6 +173,8 @@ dzh/xdzh [dZ] base dzh/xdz_pzd [J] base [J2] hi envelope/p_214 [214] zh + [5] th +envelope/p_451 [3] th envelope/p_512 [8] vi envelope/p_fall [2] vi [7] vi @@ -172,6 +186,8 @@ envelope/p_fall [2] vi [22] zh [33] zh [53] zh + [1] th + [2] th envelope/p_fallrise [4] vi envelope/p_level [1] vi [3] zhy @@ -182,6 +198,7 @@ envelope/p_rise [3] vi [2] zhy [5] zhy [35] zh + [4] th envelope/vi_5 [5] vi envelope/vi_5amp [5] vi envelope/vi_6 [6] vi @@ -273,6 +290,7 @@ l/l [l] base [l] en [l] en_wi [l] af + [l] fr [l] hu [l] sk [l] ru @@ -293,7 +311,9 @@ l/_l [l] base [l;] ro [l] zh l/l_ [l/] base + [l] fr l/l@ [(@)] base + [l] fr l/L1_aL [(a)] base l/L1_eL [(e)] base l/L1_iL [(i)] base @@ -312,19 +332,23 @@ l/L2_uL [(u)] base [u:] en_n [u:] en_rp l/l_3 [l/] de - [l] fr l/la [(a)] base + [l] fr l/le [(e)] base + [l] fr l/L_eL_af [&] af [&:] af l/li [(i)] base + [l] fr [l] zh l/l_long [l] base [l] fr [l] la [l;] ro l/lo [(o)] base + [l] fr l/lu [(u)] base + [l] fr l/tl [l] base [l] en [l] en_wi @@ -412,6 +436,7 @@ r2/r2o [(o)] base r2/r2u [(u)] base r3/r_ [r/] base [r/] af + [r] fr [r/] fr [r/] ru r3/r_@ [(@)] base @@ -420,6 +445,7 @@ r3/r_a [(a)] base r3/r_e [(e)] base r3/r_i [(i)] base r3/r_n [r/] base + [r/] fr [r/] ru r3/r_o [(o)] base r3/r_trill [R2] base @@ -447,6 +473,7 @@ r3/rx [*] base [**] base [r/] base [r/] af + [r/] fr [R] fr_ca [r/] ru [x] pt_pt @@ -482,6 +509,7 @@ r/rr [r/] base [r/] af [r] de [r] fi + [R] fr [r2] nl [r] ru [r/] ru @@ -490,6 +518,7 @@ r/rr [r/] base r/ru [(u)] base r/tr [r] base [r] en_sc + [r] fr [R] pt_pt r/trr [r/] base [r/] af @@ -589,6 +618,7 @@ ustop/k_ [k] base [k] el [kh] zh [k] sw + [kh] th ustop/ki [c] base [k] base [k] base2 @@ -637,11 +667,13 @@ ustop/k_unasp [k] base [k] el [k] zhy ustop/k_unasp_ [k] zh + [k] th ustop/null [?] base ustop/p [p] base [p] fr [ph] hi [p] zhy + [ph] th ustop/p_ [p] base [p] fr [ph] hi @@ -660,6 +692,7 @@ ustop/pl [p] base ustop/pr [p] base [p] base2 [p] fi + [p] fr [p] hi [ph] hi [p] hu @@ -675,6 +708,7 @@ ustop/p_unasp [p] base [p] la [p;] ro [p] zh + [p] th ustop/p_unasp_ [p] base2 [p] fi [p] hi @@ -697,6 +731,7 @@ ustop/t_ [t] base [t] sk [t] el [th] zh + [th] th ustop/t_dnt [t] base [t[] base [t] base2 @@ -737,7 +772,9 @@ ustop/t_short [t.] hi [t] sk [t] el ustop/tsh_pzd [tS;] zh + [ch] th ustop/tsh_pzd_unasp [tS;] zh + [c] th ustop/tsh_sr.wav [tS] sr ustop/ts_pzd [tS;] base [ts;] base @@ -755,9 +792,11 @@ ustop/ts_sr.wav [tS;] sr [dZ;] sr ustop/ts_unasp [ts] zh ustop/t_unasp [t] zh + [t] th vdiph/0i [OI] pt [OI] grc [OI] vi + [O:I] th vdiph/0i_2 [OI] en_sc [OI] en_wi [AI] no @@ -773,6 +812,8 @@ vdiph2/i@ [i@] en_n vdiph2/i@_2 [i@] en_wm vdiph2/ie [i@] en_wi [ie] fi + [ia] th + [i:a] th vdiph2/ii@ [i@] en [i@3] en vdiph2/ii@_3 [i@] vi @@ -780,6 +821,7 @@ vdiph2/iioo [io] zh vdiph2/iu [iU] base2 [iU] vi [iu] zhy + [iU] th vdiph2/iu_2 [iu] fi vdiph2/iu_3 [iu] af vdiph2/iu_4 [Iu] cy @@ -792,12 +834,15 @@ vdiph2/oa [Oa] ro vdiph2/o_oo [o@] en_wi [o] is vdiph2/u-@ [y@] vi + [y:a] th vdiph2/u#@ [U@] en_sc vdiph2/uo [uo] fi vdiph2/uu@ [U@] en [U@] en_n [U@] en_wm [u@] vi + [ua] th + [u:a] th vdiph2/y#@ [Y@] af [y@] zh vdiph2/yu [yU] nl @@ -830,6 +875,9 @@ vdiph/ai [aI] base2 [aI] it [aI] pt [a:I] vi + [aI] th + [a:I] th + [aI] id vdiph/ai_2 [aI] cy [aY] cy vdiph/ai_3 [aI] no @@ -844,6 +892,8 @@ vdiph/aoo [aU] en_us vdiph/au [aU] en [aU] af [a:U] vi + [aU] th + [a:U] th vdiph/au# [aU] en_sc vdiph/au_2 [au] zhy vdiph/au_3 [aU] en_rp @@ -853,6 +903,7 @@ vdiph/au_4 [aU] base2 [aU] sk [aU] it [aU] is + [aU] id vdiph/ee-e [E:] hi vdiph/eei [EI] base2 [eI] en @@ -861,12 +912,14 @@ vdiph/eei [EI] base2 [EI] vi vdiph/eei_2 [eI] eo [ei] fi + [eI] id vdiph/eei_3 [eI] en_rp [eI] sk vdiph/eeu [EU] pt [EU] grc [EU] vi [eu] zhy + [E:U] th vdiph/eeu_2 [EU] la [EU] pt_pt vdiph/eeu_3 [aU] en_n @@ -888,7 +941,10 @@ vdiph/eu [eU] base2 [eU] sk [eU] pt [eU] vi + [eU] th + [e:U] th vdiph/eu_2 [eu] fi +vdiph/@i [@:I] th vdiph/&i [&i] fi [aI] hi vdiph/@i_2 [eI] af @@ -908,6 +964,7 @@ vdiph/oi [oI] base2 [oI] it [OI] la [oI] vi + [o:I] th vdiph/oi_2 [oI] af vdiph/ooi [OI] en [OI] en_n @@ -933,12 +990,15 @@ vdiph/@u [u:] en_wm vdiph/@u_2 [oU] en_rp vdiph/@u_3 [@U] ro vdiph/@u_en [oU] en + [@U] id vdiph/ui [uI] base2 [uI] en [uI] eo [ui] fi [uI] vi [ui] zhy + [uI] th + [u:I] th vdiph/u-i [yI] vi vdiph/ui_2 [uI] af vdiph/ui_3 [uI] cy @@ -1007,6 +1067,7 @@ voc/Q_less [Q] nl [x2] pt voc/v [v] base [v] fi + [v] fr [v] hi [v] ta [v2] nl @@ -1068,7 +1129,9 @@ vowel/@ [@] base [@] en_rp [V] cy [@4] hi + [@] th vowel/@- [@-] base + [@-] fr [r*] hr vowel/& [a] en_rp [&] fi @@ -1082,9 +1145,7 @@ vowel/0 [O] base2 vowel/0_2 [0] en_n [O] pt_pt [o] sw -vowel/0_3 [O] en_us - [O:] en_us - [O] en_sc +vowel/0_3 [O] en_sc [0] en_rp [A] hu vowel/@_2 [@] fr @@ -1101,6 +1162,7 @@ vowel/3_3 [3:] en_rp vowel/3_en [3:] en [e@] en_wm [3:] af + [@:] th vowel/@_4 [@] nl [@] no vowel/8_2 [U] en_us @@ -1112,6 +1174,7 @@ vowel/a [a] en_n [aa] en_wm [a] cy [a] de + [a] ta [a:] hu [a:] nl [a] pl @@ -1121,6 +1184,9 @@ vowel/a [a] en_n [a] hr [a] it [a] zh + [a] th + [a:] th + [a] id vowel/a# [a/] base2 [a2] en_sc [a2] en_wi @@ -1181,7 +1247,9 @@ vowel/aa_2 [A:] en [A:] cy [A] zh vowel/aa_3 [A:] af -vowel/aa_4 [A:] sv +vowel/aa_4 [O] en_us + [O:] en_us + [A:] sv [O] vi vowel/aa_5 [A:] en_n [A:] en_wm @@ -1216,6 +1284,9 @@ vowel/e [e] base2 [e] pt_pt [e] grc [e] vi + [e] th + [e:] th + [e] id vowel/e# [I] en_sc [I2] en_sc vowel/e_2 [eI] en_sc @@ -1253,6 +1324,8 @@ vowel/ee_3 [&] af vowel/ee_6 [E] en_n [&] sk [E3] sv + [E] th + [E:] th vowel/e_mid [E] en_rp [e] jbo [E] fr_ca @@ -1266,6 +1339,8 @@ vowel/e_mid [E] en_rp [E] pt_pt [E] no [E] is + [E] id + [E2] id vowel/e_mid2 [E] af [E] de [E2] de @@ -1300,6 +1375,8 @@ vowel/i [i] base2 [i] zhy [i] zh [i] sw + [i] th + [i:] th vowel/i# [i] en_us [i] en_rp [y:] cy @@ -1316,6 +1393,8 @@ vowel/i_4 [i] fi [i] hu [I] it [i] is +vowel/i#_4 [y] th + [y:] th vowel/i_5 [i:] en_sc vowel/i#_5 [y] pt_pt [i/] pt_pt @@ -1323,7 +1402,9 @@ vowel/i#_5 [y] pt_pt vowel/i_6 [i:] en_us [i] ta [i] hr + [i] id vowel/i_en [i:] en + [i:] fr [i] vi vowel/i_fnt [i:] en_wi [i] hi @@ -1371,6 +1452,7 @@ vowel/@_low [3] en_rp [@2] hi [@] ro [@2] no + [@] id vowel/o [o] base2 [o:] en [oU] en_wi @@ -1386,6 +1468,9 @@ vowel/o [o] base2 [o:] sv [o] zh [u] zh + [o] th + [o:] th + [o] id vowel/o- [o-] zh vowel/o_2 [o:] cy [o:] hi @@ -1419,6 +1504,9 @@ vowel/oo [O:] en_sc [O] sv [O] no [o] zhy + [O] th + [O:] th + [O] id vowel/oo_1 [O:] en_n [O:] en_rp [O@] en_rp @@ -1471,6 +1559,9 @@ vowel/u [u:] en_wi [u:] cs [U] la [u] zh + [u] th + [u:] th + [u] id vowel/u# [u-] en [u:] en_sc vowel/u_2 [u1] fi @@ -1512,6 +1603,7 @@ vowel/uu [U] en [U] en_wm vowel/uu_2 [U] base2 [U] de + [U] ta vowel/uu_3 [u] af vowel/uu_4 [U] fi [U] sv @@ -1530,7 +1622,7 @@ vowel/V_2 [V] en [V#] ru vowel/V_3 [V] en_rp [V] hi - [a] ta + [V] ta vowel/V_4 [V] en_sc [@:] vi vowel/V_6 [V] en_us @@ -1725,6 +1817,7 @@ w/xw [(@)] base [(o)] base [(u)] base x/b [b] base + [b] fr [b] hi [b;] ro [b] is diff --git a/phsource/mbrola/af1 b/phsource/mbrola/af1 index 7c1ae036..e2351d80 100644 --- a/phsource/mbrola/af1 +++ b/phsource/mbrola/af1 @@ -47,6 +47,7 @@ 0 0 NULL 0 O 0 A@ NULL 0 a 0 i@ NULL 0 e +0 i@3 NULL 0 e 0 e@ NULL 60 E @ 0 o@ NULL 70 O @ 0 O@ NULL 70 O @ diff --git a/phsource/mbrola/cr1 b/phsource/mbrola/cr1 index 026a7258..40231fda 100644 --- a/phsource/mbrola/cr1 +++ b/phsource/mbrola/cr1 @@ -73,6 +73,7 @@ volume 16 0 aI NULL 60 a j 0 OI NULL 60 o j 0 i@ NULL 60 i r // @ +0 i@3 NULL 60 i r // @ 0 e@ NULL 70 e r 0 o@ NULL 70 o r // @ 0 O@ NULL 70 o r // @ diff --git a/phsource/mbrola/de4 b/phsource/mbrola/de4 index e6cc95e6..3bebb351 100644 --- a/phsource/mbrola/de4 +++ b/phsource/mbrola/de4 @@ -60,6 +60,7 @@ 0 0 NULL 0 O 0 3: NULL 0 @ 0 i@ NULL 60 i: @ +0 i@3 NULL 60 i: @ 0 e@ NULL 60 E @ 0 o@ NULL 70 o: 6 0 O@ NULL 70 O 6 diff --git a/phsource/mbrola/de6 b/phsource/mbrola/de6 index 54aa54e9..67b8610a 100644 --- a/phsource/mbrola/de6 +++ b/phsource/mbrola/de6 @@ -43,6 +43,7 @@ 0 0 NULL 0 a: 0 3: NULL 0 @ 0 i@ NULL 60 i: @ +0 i@3 NULL 60 i: @ 0 e@ NULL 60 E @ 0 o@ NULL 70 o: 6 0 O@ NULL 70 o: 6 diff --git a/phsource/mbrola/en1 b/phsource/mbrola/en1 index c5c1f4c5..30439104 100644 --- a/phsource/mbrola/en1 +++ b/phsource/mbrola/en1 @@ -15,6 +15,7 @@ 0 o@ NULL 0 O: 0 A@ NULL 0 A: 0 i@ NULL 0 I@ +0 i@3 NULL 0 I@ 0 IR NULL 0 3: 0 VR NULL 0 3: 0 @L NULL 0 5 diff --git a/phsource/mbrola/fr1 b/phsource/mbrola/fr1 index e68e124b..c83c5018 100644 --- a/phsource/mbrola/fr1 +++ b/phsource/mbrola/fr1 @@ -49,6 +49,7 @@ volume 15 0 OI NULL 60 O j 0 e@ NULL 0 E 0 i@ NULL 60 i @ +0 i@3 NULL 60 i @ 0 e@ NULL 60 E @ 0 o@ NULL 70 o @ 0 O@ NULL 70 O @ diff --git a/phsource/mbrola/gr2 b/phsource/mbrola/gr2 index e7c73a77..fe9aa051 100644 --- a/phsource/mbrola/gr2 +++ b/phsource/mbrola/gr2 @@ -81,6 +81,7 @@ volume 16 //0 aI NULL 60 a j 0 OI NULL 60 o j 0 i@ NULL 60 i r // @ +0 i@3 NULL 60 i r // @ 0 e@ NULL 70 e r 0 o@ NULL 70 o r // @ 0 O@ NULL 70 o r // @ diff --git a/phsource/mbrola/hu1 b/phsource/mbrola/hu1 index 1db03653..531de819 100644 --- a/phsource/mbrola/hu1 +++ b/phsource/mbrola/hu1 @@ -49,6 +49,7 @@ volume 32 0 aI NULL 60 a: j 0 OI NULL 60 o j 0 i@ NULL 60 i 2 // @ +0 i@3 NULL 60 i 2 // @ 0 e@ NULL 70 e: 2 0 o@ NULL 70 o 2 // @ 0 O@ NULL 70 O 2 // @ diff --git a/phsource/mbrola/nl b/phsource/mbrola/nl index 98cf95c8..05e472b4 100644 --- a/phsource/mbrola/nl +++ b/phsource/mbrola/nl @@ -56,6 +56,7 @@ 0 OI NULL 60 O J 0 e@ NULL 0 E 0 i@ NULL 60 i @ +0 i@3 NULL 60 i @ 0 e@ NULL 60 E @ 0 o@ NULL 70 o @ 0 O@ NULL 70 O @ diff --git a/phsource/mbrola/pl1 b/phsource/mbrola/pl1 index 6f8e2746..bb2545e5 100644 --- a/phsource/mbrola/pl1 +++ b/phsource/mbrola/pl1 @@ -54,6 +54,7 @@ 0 aI NULL 60 a j 0 OI NULL 60 o j 0 i@ NULL 60 i I // @ +0 i@3 NULL 60 i I // @ 0 e@ NULL 0 e 0 o@ NULL 70 o I // @ 0 O@ NULL 70 o I // @ diff --git a/phsource/mbrola/ro1 b/phsource/mbrola/ro1 index 3fc2c746..f7f9fa95 100644 --- a/phsource/mbrola/ro1 +++ b/phsource/mbrola/ro1 @@ -75,6 +75,7 @@ 0 3: NULL 0 @ 0 OI NULL 60 o J 0 i@ NULL 60 i @ +0 i@3 NULL 60 i @ 0 e@ NULL 60 e @ 0 o@ NULL 70 o @ 0 O@ NULL 70 o @ diff --git a/phsource/mbrola/sv b/phsource/mbrola/sv index 819bf94f..a8724dd8 100644 --- a/phsource/mbrola/sv +++ b/phsource/mbrola/sv @@ -55,6 +55,7 @@ 0 aU NULL 60 a U 0 oU NULL 0 o: 0 i@ NULL 60 i: @ +0 i@3 NULL 60 i: @ 0 e@ NULL 0 E: 0 o@ NULL 70 o: @ 0 O@ NULL 70 O @ diff --git a/phsource/mbrola/sv2 b/phsource/mbrola/sv2 index 7ab885e1..d6a121e6 100644 --- a/phsource/mbrola/sv2 +++ b/phsource/mbrola/sv2 @@ -51,6 +51,7 @@ 0 aU NULL 60 a U 0 oU NULL 0 o: 0 i@ NULL 60 i: @ +0 i@3 NULL 60 i: @ 0 e@ NULL 0 E: 0 o@ NULL 70 o: @ 0 O@ NULL 70 O @ diff --git a/phsource/mbrola/us b/phsource/mbrola/us index c5529d50..5c77962c 100644 --- a/phsource/mbrola/us +++ b/phsource/mbrola/us @@ -39,6 +39,7 @@ 0 e@ NULL 50 E r 0 U@ NULL 50 U r 0 i@ NULL 50 I @ +0 i@3 NULL 60 i r 0 p NULL 0 p_h 0 t NULL 0 t_h diff --git a/phsource/mbrola/us3 b/phsource/mbrola/us3 index f3b8897f..825f5504 100644 --- a/phsource/mbrola/us3 +++ b/phsource/mbrola/us3 @@ -39,5 +39,6 @@ 0 e@ NULL 50 E r 0 U@ NULL 50 U r 0 i@ NULL 50 I @ +0 i@3 NULL 60 i r diff --git a/phsource/ph_english_us b/phsource/ph_english_us index c0c694bb..13e93761 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -11,7 +11,7 @@ phoneme 3 // Schwa, used for rhotic schwa in American unstressed linkout r- beforevowel @ - length 215 + length 210 endphoneme @@ -35,7 +35,7 @@ endphoneme phoneme aa // 'bath' etc. vowel starttype (a) endtype (@) - length 215 + length 210 formants vwl_en_us/a linkout r- endphoneme @@ -52,7 +52,7 @@ endphoneme phoneme E vowel starttype (e) endtype (e) - length 185 + length 180 // formants vowel/ee_2 formants vwl_en_us/ee reduceto I 0 @@ -87,7 +87,7 @@ endphoneme phoneme 0 vowel starttype (o) endtype (o) - length 195 + length 190 formants vowel/aa_8 reduceto @ 0 endphoneme @@ -110,7 +110,7 @@ endphoneme phoneme A: vowel starttype (a) endtype (a) - length 215 + length 210 formants vowel/aa_8 before r vwl_en_us/ar linkout r- @@ -119,7 +119,7 @@ endphoneme phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American vowel starttype (a) endtype (@) - length 255 + length 250 formants vwl_en_us/ar appendph r endphoneme @@ -142,9 +142,9 @@ endphoneme phoneme O: - vowel starttype (o) endtype (o) - length 205 - formants vowel/0_3 + vowel starttype (a) endtype (a) + length 210 + formants vowel/aa_4 before r vwl_en_us/or reduceto @ 0 endphoneme @@ -152,7 +152,7 @@ endphoneme phoneme O@ vowel starttype (o) endtype (@) - length 265 + length 260 formants vwl_en_us/oor // formants vwl_en_us/or appendph r @@ -161,23 +161,23 @@ endphoneme phoneme o@ vowel starttype (o) endtype (@) - length 265 + length 260 formants vwl_en_us/or appendph r endphoneme phoneme O - vowel starttype (o) endtype (o) + vowel starttype (a) endtype (a) length 200 - formants vowel/0_3 + formants vowel/aa_4 reduceto @ 0 endphoneme phoneme u: vowel starttype (u) endtype (u) - length 175 + length 170 formants vowel/u#_5 // before l/2 vwl_en/u_L-40+l/L2_uL endphoneme @@ -206,21 +206,21 @@ endphoneme phoneme eI vowel starttype (e) endtype (i) - length 220 + length 225 formants vdiph2/ei_4 endphoneme phoneme OI vowel starttype (o) endtype (i) - length 290 + length 285 formants vdiph/ooi_4 endphoneme phoneme e@ vowel starttype (e) endtype (@) - length 275 + length 270 formants vwl_en_us/er appendph r endphoneme @@ -228,7 +228,7 @@ endphoneme phoneme i@3 vowel starttype (i) endtype (@) - length 255 + length 260 formants vwl_en_us/ir appendph r endphoneme @@ -236,7 +236,7 @@ endphoneme phoneme U@ vowel starttype (@) endtype (@) - length 235 + length 230 formants vwl_en_us/ur linkout r- endphoneme @@ -244,7 +244,7 @@ endphoneme phoneme aI@ vowel starttype (a) endtype (@) - length 265 + length 260 formants vwl_en_us/ai@ linkout r- endphoneme diff --git a/phsource/ph_french b/phsource/ph_french index 9fd47ab8..71329aee 100644 --- a/phsource/ph_french +++ b/phsource/ph_french @@ -9,17 +9,26 @@ phoneme : // Lengthen previous vowel by "length" endphoneme - phoneme @ vowel starttype (@) endtype (@) - length 160 + unstressed + length 170 formants vowel/@_2 endphoneme +phoneme @- // very short schwa + vowel nonsyllabic + starttype (@) endtype (@) + formants vowel/@- + unstressed + length 20 +endphoneme + + phoneme a vowel starttype (a) endtype (a) - length 160 + length 170 formants vowel/a_3 endphoneme @@ -33,7 +42,7 @@ endphoneme phoneme E vowel starttype (e) endtype (e) - length 164 + length 170 formants vowel/ee endphoneme @@ -46,6 +55,14 @@ phoneme i endphoneme +phoneme i: // Slitely longer than i + vowel starttype (i) endtype (i) + length 212 + formants vowel/i_en + linkout ; +endphoneme + + phoneme o vowel starttype (o) endtype (o) length 170 @@ -63,14 +80,14 @@ endphoneme phoneme u vowel starttype (u) endtype (u) - length 160 + length 170 formants vowel/u_2 endphoneme phoneme y vowel starttype (e) endtype (u) - length 160 + length 170 formants vowel/y_2 endphoneme @@ -84,7 +101,7 @@ endphoneme phoneme w liquid - length 120 + length 130 beforenotvowel w/ lengthmod 7 formants w/w @@ -110,21 +127,21 @@ endphoneme phoneme A~ vowel starttype (a) endtype (a) - length 170 + length 180 formants vnasal/aa_n3 endphoneme phoneme E~ // same as W~ for fr-fr vowel starttype (e) endtype (e) - length 170 + length 180 formants vnasal/W_n endphoneme phoneme O~ vowel starttype (o) endtype (o) - length 160 + length 180 formants vnasal/o_n3 endphoneme @@ -182,10 +199,17 @@ phoneme l length 100 lengthmod 7 // beforenotvowel l/ - formants l/l_3 + formants l/l // after _ l/_l // after t l/tl after l/ l/l_long // double l, make it longer + before (a) l/la + before (e) l/le + before (i) l/li + before (o) l/lo + before (u) l/lu + before (@) l/l@ + before _ l/l_ endphoneme @@ -196,6 +220,8 @@ phoneme r lengthmod 7 beforenotvowel r/ formants vwl_fr/@R%40 + after t r/tr + before _ r3/r_ endphoneme @@ -206,6 +232,7 @@ phoneme R lengthmod 7 beforenotvowel r/ formants vwl_fr/@R%40 + after r r/rr endphoneme @@ -213,8 +240,8 @@ phoneme r/ // used for [r] when not preceding a vowel vcd uvl frc length 100 lengthmod 2 // - formants r3/r_ -// before n r3/r_n+r3/rx + formants r3/r_+r3/rx + before n r3/r_n+r3/rx endphoneme @@ -283,7 +310,7 @@ phoneme v vowelin f1=0 f2=1000 -300 -200 f3=-300 100 vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 lengthmod 6 - formants voc/v_+vocw/v + formants voc/v+vocw/v before _ voc/v_+vocw/v switchvoicing f endphoneme @@ -296,16 +323,29 @@ phoneme p lengthmod 2 wave ustop/p before _ ustop/p_ -// before r ustop/pr -// before R ustop/pr + before r ustop/pr%70 + before R ustop/pr before @- ustop/p_unasp before l ustop/pl switchvoicing b endphoneme - - - - +phoneme b + vcd blb stop + vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk + formants b/b+x/b + before _ b/b_+x/b + before (a) b/ba+x/b + before (@) b/b@+x/b + before (e) b/be+x/b + before (i) b/bi+x/b + before (o) b/bo+x/b + before (u) b/bu+x/b + before @- b/b@2+x/b + after _ NULL + after @ b/xb + lengthmod 5 + switchvoicing p +endphoneme diff --git a/phsource/ph_tamil b/phsource/ph_tamil index d4bf8908..30e0170e 100644 --- a/phsource/ph_tamil +++ b/phsource/ph_tamil @@ -5,6 +5,13 @@ phoneme a + vowel starttype (@) endtype (@) + length 130 + formants vowel/a + reduceto V 4 +endphoneme + +phoneme V vowel starttype (@) endtype (@) length 130 formants vowel/V_3 @@ -65,6 +72,13 @@ phoneme u vowel starttype (u) endtype (u) length 130 formants vowel/u + reduceto U 4 +endphoneme + +phoneme U + vowel starttype (u) endtype (u) + length 130 + formants vowel/uu_2 endphoneme diff --git a/phsource/vowel/aa_4 b/phsource/vowel/aa_4 index 6c003cf05a7ec8f7a7504b128bf59058e30fd329..3c4db51509a549f962a4f4b42f2ffe044fd7a4f7 100644 GIT binary patch delta 155 zcmZoV!*oSMA~?X+IV9LMkcEMPAu%!Dgq0x$$YNlae9Fdz&w*ne(>$gJO!f>jm>5Ji z^Vt4lhKfC9vVn+6IR0Z6hp2nZWC0cnW^!Sg%ki1<&t_fMtIT=_*ruQ52b<}@yvDW= a%-YGwz~BsK{a}D-zR%It+n^-iscIDRH|6GJgHKt3Z{pt8sX=^eidMjxHkRk2D~mn zt;lHq`?k%5D(@YK@cT3J8R;bk5ngP4L%bo%aYnKnr&9SzKRH9HiS>`yb(H0*I*LkF zjjZ#za+3yOz z?yKq@>TcnBZns!-O?~taHDO{5cam0fwfHZ5ygFR{iC@Fl<`w=1_Zz3-oAO6^m%6gL zmAaX_jM}Sy$j{|V@sGJK+&i{8dyy&59HQ&f9$KI!+DyCXP&$z=MmMF$(mUz%PeIo zFpuaC^ml3=)rIO!O`>K}L#WzRA{9r~#BV34&y<5s!Wpa5^{`Z?v*{?>PHSnNCg}In zUFrz6oEl3F#=3~wMjgiQJE)b^3jCDly7V&oDt((?O{dcxsXAmMvMxo_wdihiJGv~6 zP0Q2Zc{dFsX&*ZQ)wgplsZdY$CmE&OS%n{%QR-MvL(5- zoWPgiyYPef&U_L6JvV|AxE|~)rZ1DuI2kKrW;o_Cy_cSWbJd}9Xg^KT7jacXsqR!? zYBIH!I)?MSq~1}lsRz^7MVyEA={91$#dja(m?5{FXTP)1sO(lrZ!XesSngE>O8fW zYDGm;Z^@(N8gd~yhn$LQ>p+$uC2}Vgd{a;v+NR%fN^RQqR zXC`OmVL>0cDcMK<0}J{oy;c4G5evS5|94o>%GcjF*;mk4$s6q%;qLENyFWTlTAvvf zY3;hA`l`CGnqtx|bq%fwQ7R=%a7(+z7_X|UCH)m>$8Q}bhbEK4@(TYpYbxq=_1r& zav+sOZ=gTY9;Oh}j+xEuW)3h5m^zHi+`!h7%qm95c4i;3t+^Lm9bC(4{xZLxpTbw+ z8Gb2On7hojWJUG@bB76Gd$If3T)WG=B&HG(iBW2$cCNs3`?EW>T%^78}vnfzG36JL`r z%7^o>xT&0l9VrvNk}kwtVp_4^*rA*n_;P}m)N$%8b+X!~&gB;a zoiA}^xL<*v-I;rIIeIO{P_@Y!uz;KwuaCHaJWgy?!lz9%1$I}n%Uk%y*XTO?JTYKx@-RfbBZA`wO5h?VM8H)=G{ zr6Faa7Lq2iH9-;$h{eQ7M7T(L$Os^lo_s~@A^H*}h~|jPuY@0n;3QuX7YQxd4UwHr zbwUhJMjW<4>=nf^`vBv%Q0sv8?SW$*s0G0Mi`1_eooP64GEl1;t|Ef^L_Q{ifuFfl z3ed0<5WGHeLIpgfqI5~z&-uXTOr{Gm&n#vFaJUsROEmM9-bD|fYhaH;!27Ql6+cns z5cwM^63E|>?nzIimt&uk^kw=nZDeXQD}nJe`;j@tjAgQzn{+Qa2qT~$kYFR(7-)Ko z^ifTytdGlABPrvn0JHY=lfPl$k8S^h7j)+TyEuB6XXY&TZwkvI=vYUd>!#sx!Uml0e!QOgAorkK@~MY3wJAv1xP@#>b9f zXS0ow!Dlg*nItBL31-yHS!C}6)MPS)ctVb+HerMmqa^AZnS^Jx9WmIAa#Ke!5~pEI z-oTg(z}>$}<%$S%n^a^?oJ)Q24r*;!Lxj9C~ zQ!1D)K*!Lz$kM?S0aX7Agx-jp{tY=qOS;I9#3rHzaa5HL?CesU{7`SJz1o zp5JfCRCAGMrW0mlMm=?oT1;01Iz7bNoe5q!^r_h7w7Rdh`y_@f$Gl+a1&C}apH z5W!vejU2_bWIq588!$o4b$S@>qnA=HY7lvi;E7kNfy607MTU@N$j*q~-^c{y-za(= z9mR}eZZmc^o2`NS-;}M(mSvL>|8JO+%tEFE6USVoThaFsQQOF3q?UX~93+|nBMIc# zjzk5*gk!%~<*E*CLH$ zSXxmb)D_&(4rF)W$Td=;qNsvY3GkB)%0s;d)>I+yBIcK>8WOvRTf}){9WjGgO*|oz z$)AwHhmuW!bcM-I6>^ac|<0aRDfad_Hq=*G-m#JrykXD#4xdzsM~l|jfh>u^^!^hDs@ z0k9-1)fz|Uz!OSgB_~D1Q-g0V zkWxO`tJ$fsYtywJ?Riag&3gHz93a=|WCQ2O~a74#4=U2sY4`>BKILjz9U~_3~#`@YLP90N=ei*N(-$pmEKKXr(e?~xce9S0zHNfrYBP` z!6}XqJ1~|V;LD9Lp4)*vmqMJ?!4cP!mk}p-kQI)QMvT0Q^n1EL^ODJCyRZ}3@oY~- zYcqBbyPkc>I=F1E1Q*MFVz;vW*otg0`xLnM|?yD*gJBd3OF}Xw_u3!-<00|#b7Mh|rLoxBxO!6xcOLBnJal0I>8g;02e-?bx?H zICy!ms(v`*At;Q;Jlg;fj6%I(;P7xI-pjR}xhbpJX&O1+m`}e4#2v2m#Hs7CHSAxacstJv|i9 zGXvb<7;_pUtRs^Ny=uU?wEeEsUemX*=N0-cIK(%aXEac>R%Evfram(s?;+VxHW8}z z1F&HnSZy`rEiH2dBRG~0pd;uK7(I=^MpEglPisbP&clLr)@lD13)=q03pSA*h)q!b zKm39xY%2AH{X-Wp@^O;M;{~!3N67z(1?~QY7pPQ!V}VNbCl)+&DejKmB|*vlSs{zV zYDGSeo*4T*woL5RXd>!e_}>K?jw%Z0bh)Yu9loB^yAaPjW=`q*=S}f6~iv& z&kK8{j+z_VZ^}_!0eww@%02YA~8 zaE37O@d~t+oRDCKQqaY5_E67>A^kh07451Y8D+PGfhbhOr$7kI|mt$mhFI$hh!)V{O1Gvf!Q+U5#-EJ{91a%U9eS80iVzEk z2ZW6KI*MfN7gAe(jo4z-7hpA7tZK;)`!fbR^#?-`Vf-T_bM5j~t1>7n3A70Cod z*H}^mZqNjoFOqr;#ow0fix}2WnZTWRVQNiA^qzKF71V9**uAxaUwiJnADtjoasw_|-zq>~#q>`eoQ6zVQmVg?X_#r9Azic-W8)mCWd{iF?< zI~317giI#R5Z%d(&@6Yz*+8>n;7mbywi|)-0q`n3I7%~eKM_MR$np-l3SAR%X@hdy ziKla%ak2T?5cWB19LdlMVKsM2a+ZO!2cRR-f#;Cb9bhB-_olQ!ZoF%^6!jQWfmv=#{c0leTw+p~FCuzvo< ze~SgZ|H6WE#Xm|MU)f{tFh&+W0pXMDl-P z!7u(g{;1$C-Wkq47K?44r+-MFa4zC#*tU@M!Aj5^ugY`R72&uXU^6A@y2(kxS&rb0 zSbt@ILOwgrp5{{2n}l>}sr*oLP1{GgtUOmXDQ?B4T`AL22Vnph!8CP0sMWJvb@moq znXhzB+`C+wp??BXpH7v4t|~?Er0$bF$sFnv)ry`61=pJXgfUqZ%)J+tK+mE#(?5e{ zRR`ujpdQlQ;TE=MPSD$^KBSv^PgSNX(kA*8wVQeZf6hz4flH)8w$$M{zM|}4lv{y3 zBgxG~D#oRRY!pbEu|`7!7e)jP1Se=q+R6UJTGb-L3v@^%PhrdkfO~%-Q@}a5VEha~ zZivQt*FzV6WsV^Jv*`2S6Bnr7$Ss5Ex0Dsn{64jaR+tdxH9prJV9^-(dijA?vGgJE z<8nkSwSmrMZnHBv3tyVg;$L#Dxt;7+rZjV#K0=?Te}hkX1GuAwswx6BDaoWl2VJB) zg4Ksn3FLIuA)+Rj?o6^3G)-@0%I;(k9Lqqu4erw_XxOD-FQ1U(+Auw#E&`Yt7}1Z( zu2A4Ixbtx^;?=-AirNV-{Fd|~?rqdr@TNJ$e4-8%k{fFK1AND&QnKHC%cnsuQdKmEw^;1dm?y<*^9 z7NKHsABw^)*Z}sp2M8omwa6_*Huy*lY8w31RZtES;2n3N>HyQf0S_90pIpFmZwW{J z892`iu(V(B`Wsma`^~^H!l_~8SRx-;m{P;nc}2UJK;{!hT}QYImEbURr>jGiWKag& z`D@f}x)L*$8Nq}x{lN^6(Oa38aHcka>&|8-)0LqwXHr(U3{SvDZ15~j!!;TM7P1oT zBkS{^pzC>9u<^ek!9UdzvYY*>5ooFsK~sP5f)s8(osy>!B4j@sk;e;WYL5{!{}BtK z8~v>j{+SnCR^lz|U5kP`hK-9V9ycX1A?09dNLsbj5y@oY``BqwVt5VzXzyy*0oxsO zs9~@6v*ZwI!K41jtzx}g2X(F(ugR}4`eBBH#to*b=4Iy9=9cDbCXI)6w9C6BQi*;(M$t=UqniQUK4WFFFe=}bBdsxCj41U!pq zRLL6!j*IYM2+NZJUjXbgAh7F@zl7`4xdR=>xG1TS8L#fWSi zjm+~65zqzW*-l@>DCokJXDDVby`J8O-@nsg;02|bNSuExl%W%6ZUELfi(ZJQe~AtT zhcvR&akmz7K7Kkc03CO!NqB;#h4Mm*@KrriZB=*TH-Q!C*%YP<-3y+;2snYw=pOK; z?erPM*=q2b7jQxLVRX?zz&MQS(;D&}$v%r8_5mw@!>Z7VA^6?&G?eE!pBS9k{M*$rTB#lfx3AL+ds%FFyLJ#F$ z5Aog|THrW1LkakF-QfWy;GEZ>SssE(y@Z-y1x4_kXb&f|6>*PS)XS#n3snI+lFQQH#GRa>Ifv|BFH=}sK_SL74vw(d8sscK93hP&^{#^{390p zdyNpQG&db|O!J)xs~!`U=uLIzdzXKDh9zS}zOXc3@{;&_(L_XGNKN0Vz{!qN)=8G< zroF}ohIGR!eN}yJ{ayVtLq*e7bG3lw)*ZHCcE%CqP&o$J_uEceHwFx}6f%D^ZZ-7N zSJ4$vifTJ+&d62eFVb46trR6a71xRV#5!VOFQP^Rz+o@ zET50J@=v%e+%T>-m&)1T!@YtczlZfD`<3N54W~r~kHFTeQ0JrBTEL}u(2Co@6L&Hv zn5)b+=)f7s%{wvX&Xc`}05B9DdawtZ#NFbW^Sk+b{BPj=J@^8=$lu})al5!9&;e>b zm2bh%;E(a2_)v8X^;q>WH7^ttItbH+jlu!pkg!8oA`BCn2}OiZK@mQyZ>zVf2dUH4 zXZh;jPi46)Y#%m<4P+(MPkB^NZLE(CW24wuXwv+sz|=*ZWIlVCeZs0aCl`s&m(3O7 zvbZSDjC#X&R^o!WOs+Uq3wMbfg7;lP7Au9({S9u%7up1!+lE;LoYld(sm^v{$FeKf z1MFq?4ts+=!LDIPp%R?KI&nu%!5<$F$F?iRaX)4h?#L2&wrioOXEVbwx+^pJz=Eud z4$iO&Z0HW0^{w<0c)63{_^yCLxra6;6E%dIEib z{!B+Q72)D{L`}Im^tJ_+s)IO2N7Q9w5Y=YHb};x=3YJLldkR&*+dz&Ns2G0+BRq{7 z!W`(inW*TlKt=c$YAKdAV2hXF46?KVn4p2OyoUJ6e<1Go7b)e(%$%49QD zp#M7nLw7N+7!O+nqoOuj0(ahs3Y8VruX?!iL*eDLV;kWP4MJYJ%~BXgFWK$5i+=Vh z?oUgMnGi<8y|_TH0iMUxXQ5f|0a2|aLuP$mGq6M+7VPSF>p#GP=41fTJWnHBfQNm7 z`NJ=0AnBZ7x2Y$+Oo{j*HY2qvAi(vGtV^-GPgBXHK&<%<{PF(rWU3c(?{cB z<6L8JV*_IeW3n;C=rY=j4r7op+L&f6WGrPYXDn+hZp<{sU@L8WWH@eEYnW~rX6RvP zWvFb3HGI}@(AU?0(@oHY>y9dYm2yh55~+kj(Kc*7~(E+5*~Y z+IHFj+VR@i+7&qJ9j#W$R2nIrlx9kP<)e17wxX8S?$Gqn6w+{-gK~d4L;fUfmxfDC zr3zAMsiIV0`bp|5jg%%yGo=O63TXpskEf)Y(hG@{ji^AzU~vOi4@iBa6zQ{gRlFgx zQXw4Sq{PY*a(+1tdlB*_X^k`<`*f3fN&|7caae{+y`(l$EvclGB_&I7QnVBy1;gdl zNu=~#ydv%umx*J=uK0}Q#R6i27$Q1Ey{Hyd;(Ot#a7VZ-oDvQL(+&zpg|otS;W2!V z?*fZGSn-?i0$YvAyLSOZKZ`uLRFzM zDkvF3xL_7Y;f4B^`l9-b`mFl0`mXwwS|!MWNw5e;K__VO-G%)U@a`Wd`a*pQ^_L%c zVY~VQ_SFc%LaI<$C?ix9s^GZQgz8vo3U!61K;nVIOkoSI{;eR0Ceb1qL><0|iUq}* zVhgdcSX9)A+mL%+z|TolljxDT$3Nj;@b~${K=y`wC@RQ@xL>$=+%LV>ioh&;e(JY))#w;&u61JQS5@;m-YF;kzsjQuzTvi z_YPI6KQ%%ba=ofd9u`!gPOGYbBmCZLBorWK2!FipBezuj=r#D^7aY_*p$_W)>?!K} zFMdJif2=9?6bS1D@58W!nCygM$>q|9VB-;znWhvuiJ?ezpoz*;;8;#Yz?DRw!8hYnkmOM--i!9h0#* zrBZx{sPM2}!4(WLj^0Wr#C$)t}PE>BcH|v@UI7O>23d)I}OC zU6gEc5=QwQjN2IL9PX-LJR-Cfyci{Rp$SG=1n%f!af7%>?1piA7Ek(wI#S)8--R5X zg9`jn)b%T&Tgb}{XYXOR74vAOKfK2}!i(~T8OCrpz~Ym5a9{d5PkRW(2A_>Cn- z8ZQQmkA&Akm{?ovD0V<3tQHfc57Je6mu9|pv@%V1N*`?OY1(MsZ&?x0)0%C2Zfj+q zWA9>rYWrs05|Gcb&Q#r4!?0c7L?5QVs~e#U((O??Dg_n0@>;t=TU~oalTR~PJ}%j$ zpK#SNLMQbUelph|S9~6N)Il$xo|BJ=6T~_)7EWD0)aqWs%fCUjL~gtS52YZg)dOiW zvw|tjzGEkI!C*lIYL9mHTCkE@+%xthdyrjK(mr*RGTKLlrYG!#b$8~}JBaEJ=Q4=9d`Mr*MAoyhoZ==DzE=_}}ssM*Z} zqo@YH|CTxmUtlF%j5DYPeneh>k1IKa8ueU!rVhx$)!-F$#x)&*ZyW)4xhq)8DtNkg z!HQ(m2NZ^7KB6z+JpC(lWlNT_ThLf;ge`lKYa~f^+!j_ zN3sq+a|h^vc;x>~@RzFa8JD5HwHB(j784J(Se$7A_qRSO>0i+)HU{b>AC&4nXwtD% z*5|8FDv>QzmGZElEmc?5HV+Fb2vJ0ZJS>lydnVCu5k* zIdp@K9Zb)Sy$nrsw=_}G4RpS&P-g?HJ;DU_Q@$d9h3m!z!jH^kZ!@=;crfJAYyq}6 z6GXQqXVZ<@72F730}gFgui^zhk~6XApcr4%4)zP%h3m)ZxFGg1yuA_381VO>;qR|y zJ2NrVbE+X5#m`V55Y~!yq+`-|>6>&^Y9ZZ1zMG32a#MXmeGcnnb%44cFLLNIK|CZt zNe%$xdxCC=edKWJIMb86$qND{o)!B@iab!hD<^2WY4&Q2+P2!G+5jb6Nl<>%#%aSe zJEW(=alQ!W;y0@w3lqhi;1C0Z@BA`WP0wb}@L7UW94<~m4w^5lQn%x8u(@;}DvFuR z_T)Zr1}KC$E`Y5>4^iubB^g z-T-F40&e;dW)2kdIq>kth>T*0?3;8qu;nc1h$QwnV`t3t47l@8sJrw4xH>Q4;*5fW zwi-yKAfkFAVlTmAJr9?xJ$?_tdFInkXeX*~ujxMYZE*Nl`YF8MV|dQnnWpH{sDujg zI(UHB;PQS2*ME$jzP*UVjlhXL_|1z*?oN-#an>T1AE2dyMeo@F^tnxh?;`@o7eby?;QAFGX#j zAbcwgs)BD(|Jh8Bq&^eqqXbgWVEgCcU7Q8BY@sUP3hLlq9bgv2Biam~;0j#GPgEeP ziVInRON2VR30M6Pp2A`Hz(Kh4ow3@P1@t?(P}86hUSzG$!-8YSj{pAZ?{EK?UoeB* zteTOB1?|BL+UH@xQ?;9Xs{Vr)w3olC+UH?GJN+lBo&HZ=@V{w-uURSE}QugU!-ngxFcU zFLsv_WxYnDbtwtD41JX0jbX6ys_~I=nbB#?F$C$4D2251EmQ^felNZe_ltdj1b)#5-u*>5FU%6^gC!WT zgn%a(2b(U6@0EoX!T@mEmGDfK2&09TLY5#12h?rVw0bn}JX`SYa6X1l!TW0B`lj)l`7`_- zu;C~C1O7ID6U#N=&t`ri-wgF*E&r4|$L-@ba?80H+(@n$*M_Ubm4p|Ok1N0x#gdQn zaG%*j@EFQNQ$K;{as+M*$>w9bqHE#-t8md=29`*8G>_SR=s@cU-CY8IkAo7ALAOZ` zTM{lvCOXPZ>?h_XkYW#_?KB*l+we4w!JFs{x5LUjN8IlKp3R|0A=B4`tCs|SI1#a5 z7MM~NKjYyk^7ISp0^;^ZeV`K<%WC9t1%D|HWU7fee@h_ABKQ;6ffO&XJONv{3MbscL`TLRsSjj$%8Hnxn)`qKAZ;XEuj{U2e$Ir50=&zfQhswhz+ z4-2}ew-a6Ruppm2U6t=2dBOjN1?~T;DVpT~$3TC*sJ(G@6W=6drz}XllvXqSUfPP( z#wm}J$D}+;t&qMh--C=s*%yj8tGKoHrlzag#dUevb8Fu|{TuZ^-M3fo;yvGXztDYo zkE1=C_d45ieD|M!p3pwF#hUv4s2~(*|t}v0eVI0qgf&kl{K1c znn_wxk(6~>t+s~dogAxqskyBMuhzZOmD7*aAJ!9we1;B&1%{)BT!R|!Kv82e;}GKl z<7VSd<2vIwV{M}m&SXWyO?@N%16?cKYo(W>Q5I{wyIj*< zE+#oePOzw3@{xRN9PhY#l#l`i83EM#8)m6IHBVNU>IPKvk0S0W+F zl2rqk*@L#uagSm2?8yf5r%W?sTd>5D)!F@olvk{rFCf6VO`6%~*`vztc z!l&`Y_zHYwti|A>dU%e1#$Dl#a|gNoSoQ!_=5f8j-E7nUD#*#GutcJ7uqD{TMJfP&$Lmq+Z3|>^faUaNM}qq`MnC2kbQ4Sk%O42Ga2d0o zxr;e3KCseiYztu7Xm%UC!CLSJRKUf0=<6Q9kK-5eJNWZJ`8)gteh3}FQ72+yHJNV+@qoy__&e8#6dEVz)6@HZv+W844eL2ma~ zf58W`hU!BeFIY?!XBOvSL5_Mck&}l75%MC{kNV>O-Cr=i?BD$bfAfOnbhdp`us<>= zwq$(IgoTMI$>&mbrglp;rTCM^C%lM%AO9tuNjQ;sKRvDRi1NldXPc*XeA;7u|7Jtp z4(l*Ha~L^f-oSVL>-AsWKmUM+0|xhx?`!KB_H&=Mt(!Egb+de}q6IRpCe)939a%FjnTwL=+6RN$Sc_S~AhKTb-LEfSXS8{ZL`iJ@hhC{}uCcmXY zzUKspcK)?cx=@g*;yOLe~k$d|Pb56qC!4 zqZ_WAQ0nM5=~n1+bZeC+$|VKYVz_0xWw~j6VE^p2yW_pCpw+=U{Qi(D{@cMdg4%nl zyGyuQJASi`v$lq7aLyEFET*rljMBu*m84A~DLztHWg<u1(z`Ok@Qr6#W#%QKk6C6o4X|&2B+I)@F7lUKd4o?=#fn4m0Ob znTudsfnR)Qi*w_FDR#aR-v?gaGJXj^8L?RyGhMcDjc~2gfGX2b2ds~I77BVLYfvI` za}6k&9_)LzF5>w;7YU5&$PWYOnFKb~6?K~^{w>g{Gnd4@W!Hk;>)CavW~i9cz?~O# zAXAAMiCT&aS9OvNg_hmTedIjAg`(&VsfhR2=bQ6w__p9sRq!b_{55VFD(02AWT=H8 zE{$u9TJmeI82Hys-lER0&iXP@x|fFqS7!Yu^Aw+xo->cbun& zr>-Z%^V0p3dwt*%SB|rXy`1%knK72uRn*?qtkSMkn(Ef;R_ey<4(Mj+J;nfY!GND_ zD;!r`U)+rEPEddU*^tAb^}@!6RS)|$bX7<#|E-{gzR#YO?lysb*M2aCh1QpreC7#8 z&M-k2rR>vGmj%fsUJ*RvP;rykM?5BsR`1~QGmYs}>=^#M`jjw7tSWt$2FbayL!;5` z07n=NKl6n+NSZA_(!?lLb#?V64I#!4#@(h~=3vWG3lR_!;0SnPSz@Vg39`I4A2d%f z*EVa+OHJ{n<*2WWF>r=H`uDmf=m2#pO|(likK}lHxby|rkOYK!B`~PuHUY=jDjov| zSuc)3ofB3GQ*TQl-=3{?Np$95qYe12{o7I!dAFLLwPlP(kN~(`l`=?S5HM2S7Qd` zFVsZ3DdUB{sDUUigxEff%=(ef<&R^-O_%;6jH2JGLHYXa`Gg=2vhD}na4Q4`k)^@K%2)|Xjj zzvf}V^}M-B1?crEOfh5OP?bkl~(t5uhz3G$EEKi=G0VA z*woCj+3I$5bN%Yx?_CsB*?&636_!6dD&ked;K*l@K~bSmUm|Bm8YAmP3=SU?);F|% zNV?w;{MPr#`@s|H>FNFwxG1m(mW6@u1AlVcJkLB&yi!oX;7DITgue6F z3-0af>lq(-+1b|7%zo0gz;?!#Vqa|!am;aKI1^kO0?&Gy2Bn0M;o~BAM7N2Z8doU3 zZ+x?OZTyh98?olt$QVcT{m2m!#_(aGAN&o2Px_L*j|mf~U|QrrpU5upsy&DQrdBpG)Zy{77>hNd*rRbxrxIKzHDtM8?&s+*^)qOWEc zX}n`9Vc8Vmwso~{a$Izta?K4a>fY_vdD1)uJYk+s?qA(C-OmDB2VQhVx!O3VJ2u+) z+4iHhG0)Q7oMU=#n5+-ctJ1mQg}hmQD8G|$$xG!D@-B&&tm0Gj zJWXfY(E&^%_kb@e3>6nitL0^y@!DpJPq$ZBSiemFRv&ICX{cqW3w4%cpiw!gr+=cW zuiLGNO18FoA=at+0Nq7~QvShy(c66TV;7=^LN9O+v3+C}xh(EDFk&mhV#DX73`)4d@ z&;L6tkit7e9EctjpPMv1wRbw5zj8*O%*I()vd(99%@VRsXX>-U3arYmShQ-HoT?G^ z^)16X-st|J@32Adhwd9uYjp0|@)L?qYB#yf8#Ma^QsWb0YmCVL@AS4VBf8+$Q(V_SV| zgMcNLVV05scdUwIuuJb5<9iZp3pIqFiYOm7A$nR&quAH6MdRwl6^MHnTRnDi%%bSg zQ8gl!h^=8wLaia!g0}{3_1*ENcsF~RAyzUxbv*Mu8t)u$RbOBAvCJot?d$W1MH5Ke6b_drB{Sw|J zs!h!E*b{Md{H(a0u~TAdM#n^jN0yBk7k(=&EUZRo%aAI5XYf8>CGTl>cHj!9!O_ij zKcE_PLv`al{ZBfTGFlTYe-m>sp1z1Sxu#}{cBisWH%DK_aM++2gJB@SjL{)OU zE*i@g-AR36Xr+0UGS<7cT8?$j2d=k)*WI%{>E0FIcisS>$@kp5#9PR_52(<=JvVTz zYk~7;N2L9LwOGKfX1%GQVTJCUwvy(7^azY#Gcx=J$s;$B`^lZI5C3TQFO<&DJO#$t2?Gf!4tw%{keKb=^RDu+p@?HB3-5AG#>@(1f zQB*5vcWN4IzRE*nPVR{wg~sAzVT{mR=qFqfYKU*esZzRpTCSlvtx3`jLcc|>R;7^2 zOYKSRO!RVy+Etnonw#>^=$zOAKcxhE9wMY9sg%?b-4HvZXSm{uxZAxnAqEIBSezx!2h-{*mO}5sY4leV7ewI#YG&i`j@hVJ z*@fQV1*>cP@!v`cF!!?mn5S5P8Sx{C@%3MMK@DtaQ~ysaxI?D?g#|PD*MDIFDKGyE z3xW)>)c;>Bs2J5Jxi(`eSvKSx)j)(bu9BjM$e4zna6T` zrEXW5)WF(ibeEca9YeN{=rnronDS$HjqNgS@c5+@>P@sxEH-|`=*>eP^lj8-N$cbW z-K*>?Q7|hyv3U4C-x=?fpacG2LuQ98^5+H(@(v07U_Xsk4~wR~Tvd0{SjQ4<&9d#V zEwizfe1itr-3_9yS5!y5SUIZI;FREYk&FJq~2SvY% z3PC&)5x<623VrGy8(b-s;7sim?y%c_q=lNaSwDCcL%!@-NW56Kn33S-nS_z zF1UQKF1SNb4_~_Xkh?;l&DGr5$obNF7+E*RJ=)#N?RBpR>=meSukhp#suQw2{94rh z*is1%l86*v>fY4bse@8?r7TIVmGnMgWPEVk)|i6Piy|+Fp9t;ef9H$!q`A!YBbIW; zaY`kL<^uR=iPz@ne1^lu9P@O`>45vzE4C%}vW{a8yEDz{b6#>(bu6?WvYoJ=4tQ&6 zVQFajXmMH>+8R2NU95Yzr?&5Gkkg+Q5*&Ibv}4$%Fnzc$TpNBdtVh`Q&_KyG@fTN6I~<%VIHTl{V;s zjzuosBqWKu#1hgWDOnyT-;{$i4K%YfS25?b7NYf<)~-}l#wkY?QkSZ0shh4lqf`kI4;T8n`i582(&3Z}AjPiil}mD_5r zYqGV|wNJE3N>^p0@&a0=imsn-DX!=yuIat*jqZ`|ylyM5u`6^-jE>h`Q&uV6lzc#* zDLBU(jaSoOz94y|=Hfc^vsO?q;Gd(yQH5>IbjAEO3wn(|VSdL+>LUG#vB6&mQ_INr zgGGJpc)?HTHTs_#VPA+NEIo2wOt<(!s3SzBOiC@C zZp}Y8V{xWEi_Yqjxilj>qiLowXL-qYRhl$B+O}Bt#DTVvJH~}gS~PjvWMy*Nq=^$F zC$5|@X?)qSwMMoX+^+Y~PD+bzwF{TKoxLHcYZ&h_cVgPM9~ zIuooP4f*8D%u&q{!yYqb?Q1JkRcAM|R2RUvai zUxj@P|1}~kvRY(zWNt*2h#}!a!|I2+LQVt^2&(RD<~`^c;F;!m?djnC;BD?(<=f#K z>9hJ8c{_RPyNd?abX{=XarSZb2%O*^=81=YSkwE+ljRxceiS%1a10!UO75d>mnROq zyNCN!Uq7 zB0q+24a*K*Sj?z5<})5MZZ*9yR|q&^tzy67sOLHp80Bf@9p>v7R4({+ zaBKfg{}cav|2_XEe|x{)KP{LKt{pVRx5c|3F6#8amaZu09s77&ruCs^f;rpt*056F zT9>TI+Rw6D&X$&-_2=I9w@;YH%C$U$$2oC`A;P@))(_23n1Fr6vblzo@(!HI%U;FHROJz}xH& ze%?mZN}HudxRxcF4DBIpQDw6dsOthZhu0U>x6@D2Z_=OA-_k$Ea#Md)zf|8BO!lZ{f^qNY?>vq?_Gv5O=PCZ(cX*C0@>fkU zp62;@`j4K1HtOnRn>_E(DsNI*^Sr~;`nBZgf7@U1q|l!|$W+|gxONE>lg6ev(lXN1 z^0mlMW#(pGDA+EiXQA7L78Ifi{gU&vP`=_!`4%;OO}!n)_Bt>md2H{=?WQX;XU`Zj zt;b|y!oo4jM!p;78Zvyqn%?nUpSDvq-Bxo}*+MzvQXJ8R!;-^3gb#_V991!DTx4*B zHLQofvTs>n7yD|nU*{D2NjhCYV{P+1OH_ayP{?xF)X$KlpzoC>G=YY2%TQZm=c&N+ zp6pd4deZ8!&vag9R z*0;iY!L!1h6xheP(H>{(WA)ioj)AUN&syKL;0YmnLhFPz340hyg#PAV6}&R&t8bBS zoNtD2wr_y1n2+)0deeN~pcTRELcWGoiX0O?CAMDtjRZOAc2b4p8p+?1N+nfKERbN1 ze;B(trcZQa)GraQ!`_E%2`=E9>^|hYX1i+HV;reV(kv0mb2L9y*dxuL>Kk?% z-5YV-J_|dF>7AR*TC5K%j;0f=_r>5PjG;5SCJQ>(mPC}z|nClbCm$y zK;1oEs=kkY2kNmNLvi$Rk2I_>95FmXrVlX|G1fPBF%CA4HjXk5Gc;5uq1wAunW~IbrXZK!SKM$H=IL(f0`!H!DBA1WfL%oDpXp}m z(scWwMAo5~d!ojvIWBL&m1b!6Y3gfPWwBB~cU)ISzgr(_=w~Yexu5`)=&X8<{J9lI*YEBG6B6O_heppMg0C@qt&Ns^o(my_$ujpbTEv@n^Gf5W_+p;80vVTEei2IUecu0a26)|Vsw0`suo z#eY;s*h!X9?aZqqw4xK3R(V+97I@N~*LN5yFH?o)VZktc0y*s8VnMmT<|EXLaz=lS zDG*;VF*iw{VoI%-mXNP&#+9t61sml!3WXNR%_&rWKT0~TM*U(gdFJEo6hs%2SL`mt$rF?{hM&xr z0v_9zJKU}kfsyV5s0Idk9=aR5X9rGkRdqhLx3X!h0Ra~+O#-G^1L3NrxCRDJakui2 z-WuMH-ZI_?o_wC-ZbRT)r{1y1cFte-Sc2^nB>#P%1Pfq`bd% z@Vp>0Xp*nCuavKXudc7TuRZ?v+ZJDXP+0J6|CG?r;nSkBV|T^hOB|iNC?z=6f^Mwc z$vczQB(6x<9Dgb9TdXTKEJh!FBC<-vg0Nphh6cNRecWrEdu{tH2aS()^|T}9*U}`+ z>+Y`D^uHK_P2J3kEz40Q$!|Mii?%nmx3Xv2uh_C}eXYv_?pSJAidYU<&IgpW$&Os- z*}(OlzP^~?4SsECYFJeG^YES#7bCt#Jd0Qnks2{Ed|%j+(4`@b{RCXlJDzBF16M!C z1lz2D73NdMV8aRBBlKN#Qsygn6_2jGu01$)e_bbV>k#~9mQq?#DSMH*7i!OF{fJh# zZmq7E{<6Nl;hLeiaWQHanWk>0RiYt=Eyi4tVECS6 zfDc~`s|DTC& z==gHL5znpp-~ z##jbh8ljf5*Idv%!*t&G%z8$&k zFD&@id5WRo|I}YFH+*tLZq&rsGw~%8nWQR7N0P25FHb$6emQ@s%+Hx$GOuJF&Z?4= zSYma>>2>55EjtzNlQitcxZJ6_+5UO<`NTY7cDHFuCcGZGZBXsrrY;}a-D^Ij!M+*^ z70wsiotd2|hG%%&yDxbw1h4hK^%wJB4BG4UxoKx}YYEeMWq~+FETaw8%f>L%G}F(f zi^jW#7y4oP{HQM!vaGR+j&xU?`$+>6OLEzrXY2)Rg9B8Sie{T7&icf@*VW3i z)3+d42zeY*Fw`14Fl4TOG@OH0zOml>o<^Q8?z!&D?kIOz_XD@=UF%yFd?w_1*u99^ zQHGd;v5|3?<4VR4j2{|bBmP@l_qfZk&e&oxwW2FWMMd5SZxXgAZz%VCf zWCc_=?a)_MDr=rYJ7!7iq;B%hnu+MBdaC0LtnsFCq)BZq^Zz<~3-G4aZELuiWF=WE zOR`qny_Tl#g_ah#;!xb(o#Mr0 zJKs6S93s>bJi-p%$~RWd<>cIbwjS3}`JA7v%GFT1C3?Ft&$P~b(6ZH9U@LEbW6yU4 zI9odZbl!EoaGrJ!#f;F&vE07bw%t10(%$Sf-8B^G6LeQKd1`}dJKs=AaYvbX^lZg3 zDimH*Rmo5C0_bHL$;N^KK2)+&JWQMAbPy{QIsAl9e`5l~_XTakRV_Vo- z_C_{AUV{8V?xgxDlIZ93WG0f`%EofDxlde%G7q(CH}q<|l=GEcl+nsN+z`&dtpJj- zim@_d>9>j;Y*XKp$z*5wOt4$GL%T6a+(Hx{d@Hb7Knwq)0m}kgfV;FmxS8mqs5>@_ zv0xv}g!XhBc8@D1^DrSy!=7-tWFt0)$0QfQFM1CTNe7Wklp;!i-}wV-)$Wo|xcu(H z2JyUD2BlIVcu4*P2iE5qFc`jLZ@CYe(|*CXpv)`;@9>JPW>H`8rR1t#zx(@_|B4;{ zbWZNv<)7N5)d7iqtBY!Z2)rm!@IPh*xpYy0yr?gTA`kgR71e^D&-%9>;or4M?SHFH zn&8~;8XYnr+&^-N&l^=EsxYcov?bON|1jZE;)BHCL}NmDV(~OvNqJ5oY+avp*7R*S zbjsMVlld7xW{1riGcRnec2=LM11B^XRc-L%-g7$*YdNC9h8nLbP}x^g;-V?fQlm;$ zR&&g-%>312w$`&eF+DZp=~k;J@Fm%F#VayiQJqQP<|)VV66g`vgEwP=!pDX?sRut% z^_Pa!YmARg-7VX!n{2J@=j`w7C+&^x8*GQH^DX7gCyfb)SvsrsjXDGS_DSkoO$n`8 zcUqUFZ?7+@KdgJL-K)t|j}e|Le{fxurG(?^o;ry!*WAo%whwVkc9wT7!=sXGp>w-q zi+#UMY%8>OwDz^mvTnCtvIg5)*%Iv&9DQ8pJgvhN-if|*(QD8>J&sRE2u^4bKOnAs zY)(vSbV5|BFDcUCJriC!tWQW=x68TN7H3&)^y+tN>ZzpsUUn*d2x`QaeR53yxAHfgg2Mbd5CCx6~TtiC}W0`1uVY4_w z;8wlMRo1=SearpSeZoD$ZFkRfeRRe-YdC7zlWkuuGt36l0K;h=udS(GEGYQdToblA zvx4^0_Z7Rr=3b_lr$h` zv1&XFtQ&t`6%)ZIb{@MLkGa4OtFs#RDAShtPWMN}XreepWn(gEPll6$ zfj5yAsbFj~Ceqb_5iDkX+)_*kt-wG1s*J)mwhiBcFU>3Xt;!0@6I>cMpY>yFGArrt zin5By)OFx^ZRH!Gfv+xIM)(uCl0D*hoX)mjKog=D!I!{0TnFcjqrqY@qYt8Mm?VBG z_DPz;ow^V#gE^7~lGW%SZc6+J0})BYpb`WTr@=lf2W`w5Yze1}=ZH6er~Q+IR1%Kh zy(GQCJj#?XlB?oX;*sDnwH3D!cMx|K_rzW?{p+0&7!Tk_vEU#7CvDQYfGEFpMYUjK z@D}ODqFV4(k{_Q1 zO$ts?rS439ka{sSH*IUN`&o-&5hrS>XuZ43y}TMj-i{tO@$1yUS$T6R%xyX6!ptR8 zzfJft>i*!jz58~$-l9eQ8r3(K@03+3)e(C;Y`wjep{i!TX1VTzzJg(&zL#!tFuN|mDy!_<6Gvq;lOW;$f_}GQkSW=6!J3VeJKovKMY{9c zTiplU3*435M_i1{>6AFO+OnMZbovjVlb=2+Gz0f_>t=3gU@7-RT zplzuAfsVVG;fAq-d9r1;HP?2?b{BI%4ckd;w6)MeT4tGZ%x*I%4dzgD33CVYc5|jh zWzDedwhwT&b+-*^8&*5Q9J$4NTg<9xHo9Td65q4Ph{%TCo)OK%O<_|* z&biMxr`cnz%S|FfCGBL@BV`jdj$VSDn~OR{EmaJs8!#^RD%+b2R`!BA!pYa>yW)|{ zNAm>#QEB2Q^UZ`Is_W{iTGTbeBI7fYU@=;QY=>=a>@Vz<9g`ee9eW+C9sL~%jtlm> z_Tx6Ut&MetWutkgX}xiZp`AWa_Z19-ZYr(WfeajG z3c;Tsm{oKs`jVot;sLPv8)Rj2yWB1x1t!!CX&31R+Q}>i zD|IaUmaWXq;~sD(U=$5e6&gdY?ohtuR&fnD3AdO{XHPSAnLC(IuA?*9Njaeqy^qdp zflMmv4)@It#8=4#Ni5u@XNp^aUtJw6>Wkv?@YQZd1WPALwLk-YKpnG8{z$F@M=KEs zfIqog-bOBxPmeui7{^h^-1%G3Qe+GE{{w%5mmx8OxE)~^+!xDAi z;i6hlmfY!A_P4d5veraeDJHC5Y7A8mN2e*z5evg)C-6mv*EMBSXT>phbu4B)zSJ;#23-Zt> zJO*muVm5)VxD$NE>FDN5fE#&M76BIa092}P(vh+#`EBs%GO^DX0fpIO+R79#ufTd5 zjm_mJ)&Ra!F>EhGPy;TqQ`yRxVAg?cX<}~R?{>xBLQ6kYY*P$XR8k1oC`_kvDIN6} zIRX5t@A5z36TyLDkuNI^Cxe&R9iEh41Ft9*45GWTG)(`;+4TA(D+eIG_Z(k^uMbGJ5URD6xD*xq9;V>B3~mx+Au&Unh_e2*Zdm&wifjM zw_5OfJ;F_6bxSelkB~hP4Sg@8R!9Gc&WhOGi3m{vHm_3SURV`s}}cAwg1qGU|TA(irKbe`3sV_ieez3kV? z<$PzIiTYOzyw21~n0hZ5CmKf@F6l;VRthd|3sn=mur%s5vqZT@@TpTYw=_O&l9tzA z*X+<-)6~p0*#?b#UGB>YIkUGMtH zV!m;{KYWXQdA>N`xyTxkTfLtn=!j2YYeJJkCbO=`k5$)EOVxAW;xa)967u<2-p7ySs|lS{$JC{? zr*zf8dvKbYTKZeN*-F?S*&937IW9XcIo3PcIi!x!_K&uTw(-~}J_Oe?(DcplM1M-R zN;^bTPo1bT2sE!&CSaGa`_~NZPj^w=hjL&)rsy5u)ySaWz9f4A7EWFHQs83M$+aX& zHOCHJP_$HR0fJwi9z!3b-_a_@jg!j&3s^u`#5S;p;yX1M`}Eml1~7=D@M1Xyr$msUTN@)AT?#7FECkua*>9 zZ>YP%fc#$vzp)-UfGi+Kk{zL}AkYtV1|Q)ByfnPBTha;A45&6Hp%UDZi~_6i8&3E_ zxMy{NMk^U!S(l*SXanE9GSD_m7hMBSxf#4qE{X%t9TbD-R{Gb^+a?y(g2AErf0u!O zyzjqhlm6}t4hKZ~9WJT`dnHc;_7?R5?a0%9?Qs5o`kMTFk`=$L1^+%H{NBIdvm@J; z8*(c=$k#5Kj+MtPigU;Bif^9qBtezhUFOBUD9FflR&Wf%%t|PAFuH~*Ku1`NvG{7?ze8=!9tozg7hcVmXBqiK|BjH!z$!z41D zHm)_UFm5p(F`h9V#_y*YC*dup>6uAmS!5k(FLWMu`-M8gL%e>z=}{k|sn{#Ab>qgx zb&eCom5EJ@xgVA7Yv@f0zZFv5z0h&a`qcDF|44IPxWieQ=hSX;8<;Z96kX`C%zAJP zekf(aJ7JwFT|HU7MZH?xTWwdbQMpkI{DeWjYQY%3g3wI0O&zP7S|G&g6G2}aUIEX$w(p$tlRD~BNPaY(4F_E zzT$2_r3j&W(|f@+ieYLp&C!1+FmLGzv_KD3T%#hWzT`!Dmi!`kdIho_G7a3AJmgWb zD`im}R5XSgZWE{$elT`m4xvC4-eN|W%+$vIe+ONYz5$P?HPlyVFzU(kWRsp-7ye|5N`|_{ySMr1Mf!GM_f~(b4Xvx2TdFUlh{M4UH7QtKY13Z8)iL_92 zKND92^Z5aEsXQTtGsixB6-^{5;2sz}L)|>GS%W;P-|`zKrmX=-_2zm1#3e^{hhFd)53?2T@P9zh_AOktfCun@}+M z)|AH6K1}O5ZO@dIlZ*w@k=+Lk=vAjfnWocf%_u*)_}18v5S6I|{7^?~!wp@GtBrc& zJ-uCbUmY$yU~f{jiLIgs^3C*UZad!*ulkiZ`wO*uw0~+RY5QvnwePfxb@TM63@TH7 z^Hj?wpoin_*^bkW7-xIuAZG_>tn;j+lw*Q@t!<&TwI$fx&3F*rYRQ@rDqiphCLas7 z+f?OSWixEUt_cC^mYNUR(R#VDj;V#&ZJA*?V%csP1m(g;bBg(ZskJEuHKCJfz3Hhb z5d8i>Ot~gC9^*_i%?Z{tU4ko=zI+9c>sa<06 zgne-zV{S$DkGvB8A>@*4m|bG2W9YBx$Xl3k@+=}#_LMxUa4|aeGMmpuE1xKr@{I(M zYPjl_ico)7?N!xNT@p$NoA^q6DA0q4{666ZIGH1~KXiG955}hE9hQ$)h5eg-m!r1x zm{aR2>8jx>@A9~wIww1wU>v=%d+n8M)vXy8!F=A>-=Np8(8g-E!A@CD>uE2J2xl@PirLMEKeD=2~!-xEN00-m@3MLz<3h zq%PP;6nh28MRg_s{L2Jrs8SUxD4J?XZj$@S(`DVHbBWE8_3)We1}_P$8FVc8t>}!n z6LyXkB9kajltlKFk@$`c!ECrb5R&D{v3Mie0QcQL;Gr1<4#I131#BQLOM;-qGNKmv z5qF?uo&X%dft>LCK@ua_pjgm{mXyH3j+S-ads0NV(l7nA)8 zvnLOqIKCiybmgH>`>DH&+P-P%ss5sL-_&=JrR)<`b2z0o$2i{H-;!^+W!`2AH>T^~ zX)3A8Dxc9q$N>2laxMLZ-J<-!?}i31TJ=pR6x6~@z6@WCpU9^QR+U2?rAgK%={))% z!$Ctk<2#(^8K#Yk4DE?hlnmxs+~BCWEIw39e~3sSS#rbQa@gO+deR{y9HQkgDQTYSlV{ z7Sj1T%CVe+qwwlptK@|_swAj38tAVZvQ3lCM=iIkf7w>sn>+lSeVsR*Zd8MIuJ*3l zF0bpkv(V{rE^<(ghW5F(BMZ&Hr@x6A|SkrNp0tql2f3rb)U=jo?GvpuQ-c(wmv4>_@gI_kydZJfsZa2k-~^ z54>Cm5dH$bVdJMOKXJw3S+|tA1m@HhlAJBx_1~tPq#bDZl-aQ8xK_WMSyUMBI zL(vvK6jPP6l~a@hl(m&6p?cbm;*hcRowMOZ=QkzV<3X)G~M+!s#c_rwwKlIV<$ zXI(OhBA|m9LdRet=!Dvo$35f9;dxFfUn{>W-zd+4dDKA3C^vI;xKHdvHiF#`obwTo zgRhEym}z=ZugNClNhlsh$gaRSu{UuMNtUN^r&kasVZZRxF}6OotcS!J_}Bh)kJ=7} zGzky6#v(R&0#g321l!?feFrGxQFt*brIhpo{24bB^PxCc4VNrAD%ce1RVgEjf~&7y zc3V0eevPA18-@c>Y>K{M*pd6c4u3Jxuyg;p7W_RUJP#P^_q?bUlnC?$l_;tO`=qr0 zzM@*Nj;!ss?zgqz-*<|?pAnqub-IO?lg^zXz0iU_^lBnSkZG#Rl~=PEHS#nn5?n)$JQJ-cwEA`xUuo014gvYZ`kiu z_w@E7np*1Atu!mEZ1OE17jnX$XN|Ouu%57PwU)N_x3n>Aq_ywMnRT=M{CE-j&B z;VkwFP602Z5weEzx8zX8J3113r*~W*<#F6U;ru*)rjVkptKFq{nCe?9+n(CJPMzyd zm%sZPHi|M=gfqlpwHLE3vNo_bu}-v}vVONR;2qw<=exvu$eLi2+eg0IE(pbx*QB$(nE}HZ!_$WNP?%Pnff$)oDDU3FCb< zk|KgKrNQJBYNR5JUQd_Awr&$P32x;IARS9C(yaz_4Z|UvKh+z z*sZ2%u4~)s9~#P;3c)kDVm)nJW^amW(9e0pX?2wbikRinLX*(d`PtFf@rV7U?XC5h z<%oH#Db08p>dPmZ7V0~|EN*daSt+wqQAo{#mumy~ph&=&cgxejipiEo0Y`fS%E{8W!W;U{hED z8%5}?m>Ez7d}r#hXW1&;1+FSs08ywMSHQh42T$9%6nq!@TcxkhZOVZ4&WHvW`}WR;i7+3Vna#?0mWZl^d)rBfTo1o9}fSw?89 zC&LXZShfmItoMjPL_BnoZlW2ngV10iSOkyPV^B->hj!x@F$^v*0Z<>ll5j*8(I09@ zKd_H~>L#pECl$z6z$bGq^id6fKp5c$`|VdA&OK? z2{;pUrl=Nt3MlLM6N3DS5gd^2^*c~h3)Yjx{nr1s7X15+(B-!?fhQGT-G+T0GH~$4{+D{^cYV{gTGQ8c%sC0A3ezUXjtjr%d|^3Yqzo2) zAKhPCtu|ScqBg6Z!-2F9*A=Mr7ABrm;fA#Ee!?nr22E7$z`J{mdT^fS`2_fsdRYl` zMA3uNl80p5!Tr83{VK~OhfwPk2k0%#IJOLUvF(-D!SnCUFXQ*}d-w&|IWzoP0E$0`zzrClewr!~GFI%X+wSA<0 zw7rMDraj%B0ye{5dn-pX=QdYIPv6i>;awt=qcw3K6SgInNgG_OV#dVG%o0^f9Lijt zK^6~4pOx}Dk&J&Iy)Lpu_(IP)$5G2DgHf|q8Ni%S7=fZDCB9%aYlx!x(q@)}{h@IfdE|LldTb*dGr0=#;hs>{Ma!Gy0l3(hWem5skP#s^xhS4rf zfi|KIFvG)A3O>ebWI^zYnj$|hmy&U0O|T()V|&s9%wr{aLf#cv>=;a6jil>{H^2!} z#KlCm;8Sokr+bSl)Y;6gz^*#Rnrv-tD{y^}sFyG#<6OB1 z)q6Fl(y~}bO^^L~Ndx=muOI3^eERS$!$%GeAHHDN&7qryd>-6>;QhYEdv)$ItnKWk zPjgpR2`RIrSljq55$Bwo`IYv9s=M%>Uxkes&mTl@SX?Pqp5c~ph1^{37^hP9#A_s% zKg@fCZo&%TFdoaG*O3TA_UnQbY396FXER0XONwqMf~ZRiZV)^=grya~PH zLvAML&jql<=}y!X*$>Hf8AS&wXRF?5gN*0Rjckh@Gh9iYZXu;YmxPWD{T%Yd)56`y znQY&0DQ~hH{?t{`-O+v4hZw=!GbMs!u-hazd5tYFfAlllGE$ZuwzbZEo-1Kbz0ab~ z#!g5uCO1y4lzy(*_2Nx3>SY`)zNVNuolaex^gRAu%pqU52ytk>>y53dd7l29`mC}$ z-Bb3L_@XRMF_B3}w=D%Kkjh_&gL@lP#Fk7=x}2g6RgtVHPnGGUW*|=wiGH#OazB+w zk3bJ`nA@S8!q*Z4RO5jzv{bKE-&Oxm2Wj4_PpPM>bJSl{g({b7l@K8;=Jot&w3QJtjAj3xV{XB)^a$RCV;sw1*Nt>ZeqQG}50|iq@FrtS-n=lqXhXB!QOlQGu<)=oeA=JxD z;cc@E8;%unwS185J=94S^x(mmW7flMe2=W0{It9RxfkBE^C%7~K|f%c@98$oWhMJLb=pLv6Ui_^fwXn zl1LUVO(&uyUqpGqy#jXxoC}H&dBk_c9f1P4iN?e@VgvCP@tH7Slh6Xra2uqT;d`Kx zd1O9WIJy9l>;be(v!p$tOA3Qm+*xFK)F)KXKednq!pp@bUW$~9^luZ6{&Pkc^S{Ve z{ks-yg6Hf%^AtsaP5eYfGs0-;3ct}swO~IPx8+LJz91 zWgwYwB%&jBeQ-@3)%Ncu<`OIRRz(;tdiE zk@@bwEDiN-)nZ{6atpd~&)HmTf$!0Gfid5Y4}abS~NW!s|<_29m& zgDzC8T*ifQW7soL#c{Mn5l=NCx5$&BIh%!E%qTmLeQ&Jv2GNg@5uGK=#1BQ~#B~X^ zoK)D@@_aw_Lfv9xYs&@ONk?&)!JX?4aO3B`%^bcm!R9F^=jv9Drp92`e_^KMWztzM2FflIqZ#B6a6N(eL~+PAtfsHbn2(n zHL1a=0V(T~9Eo+~8^*>&UyLjpF*B(wV3X>*&YOT~x(sUj`-f6)>l- zGDqQ4H4M0c72l0H*j>ozZHhJuEp`gsC>wPGoCp>^GvV_2IL}q2Ly0+(IpRs8O>jXZ zMQ250#Nl8iyNR*HE20wI;bicG+6it}6YLp2B2l;pKL4xWYzUMYiYkhFhv{lHIh1UG zDMSIcw}tXL@RJ$>my{~fX+-+B!kW8_`htS}|4=FYdh;Le`yY0SYvIZLPd$P@u!Enz zs1{V0&iAWcR0}qd8Gf6JYC$sdEFk$``3V2H7W8JbgdMuKrsdGVO|?C;I81r^e7(n9 z)-gLIC~{kDaLVh9re$0??`st{Jkz3k``oS#d$sG^d%);HTLwGx{qp+_K0nAaXzakC zf$av&>|d*2v%Imr{^+)`uhAa%3972UK zo<*)Rj=46YrHOHYE={vbHA+=aJxQ}!J3&Y5z4}kOzPj^TwYH_^zIv&8tJuGmXy6Wk3d>ecjU5%1=UA_<#hk!0S5yMgDMAq4xSu-xv$2_f z2tU>{$gOA%MeqZpLoI|S!V|b63`6#c6`mnu9B61n|EpWt=;GALQpTU;m^P1Kc2zzFn*clJE_UAY_k z|2^O`bfeB;%aE@)2i;RO^c<_{Q}h$spWzt~zV6DHgnB?#QGngzD9l6kp|}oW4$yhD z2VG_h#b;^|;_`Zsx1kpqDLVk}z&FVU@iozbVEFO5P_f26sh&q8wad4}kR$ zg6-p2%nUNHA!f+#$vn^@jlq6$4RDs>_)0AJTE>IlNysh$X_$?!X)@T1V}Us|0$wof z$hM+dF!9?zTuuIWwP0F6K+v?J86h#SnO|a2EwH06uou;W6=bu2@e5YaKm1o9b9oz* zBY*x2zwZnF_B)&&5*KO^W7XPsHwyRmb{bW<>|a9E^RKpicc!ylzQR`3pI# zYj&*nt#NG2Z*5aLUGI9Ohp+deKI*=g`j+ok&~InI+x}Izf*l%cj>G+SOIZ;!wFU^&0_gkC3VXrMt15ithw_1Z2QbeKTrQi>jE0-vN75lb zMcfttAbOHJ=zZK|p}6LRu9R`3*-ErZQA(`G|y{YBIosrs<6m46N8Z+T^XVBzRW_AW6`&$iDwPLVSqUI3DVUJ`;m$r9`oUX#A29Q0DZ`c9q27JM z4o63P0vG|wEP$i@YK30Wg<40Rlb?|-kfstt#U+A=1{4O*7khxzR|l(LyF8IB#4RU> z3uPKoozkgDxQKlruVBZxgq(|Q;Tcka9l;SQ4V`}sFa|A?$DCn!_?k4swBH^%+wo8% z9K?Iw%rUT(e>z>agmb+?VO11YbXKf_PDzg&yf&1nRk7Wpz(Ss-Xn@42*VIw?maV3? zQWvNnR3y&ne8ny3ryJldzX{KRTxJq(`nQaL?LZQ0Tr9Sk6xa&qnGMW%c&rp-;ei-JnW%E?Gq6NS~s!xhe}ss?HF30aASW0ds5sN2FG`&DO%z+CtVw zh1*NMKyMHatfehxu4&XC@Z!Egy`)6gWBJhgHBj_|hkyFFSusU^hoZ@aIKuzs$A8}` z{yih?4Dbd0Q?pztu(4mIqFTU6@B1-Dwcsi_&F^YaUoegy>p$-QPz#>$CNIc zx}EGXtk=`t{&}bJYW1DkcSv8huRCu|?L}N)u=O%vyD;Oep`Um@lX8^Z8w~VwL(ic@4RL=FwJm7RwLWXvWQXG?JkzCmv^Qf zDNKwJD!3usXW&J>m6Mdyl@o9awm@2%0~*;Q+&J8WBJK#go_z)n#pBB6Lb6%~wq6NC z9mM4(nm!sU8LJu``Ul#bngi-UbsNQ+ra;SJFp{S_l&)Ux{hpU0pF*#N%?OW)SQPO(LhH47 zrQS;s<0BHmMQ$4&96mp+d{|J};n1m}?L$k1(x?n=LSA^vd-C0rT>YFS91m^ntk=z{ zrYVMxP+$&NC57q26`%xi)feHkFbOF9cm9uGiE@FM z39g{Oc%~Hd9=;;qji15qfQI-v|B3(1zkA^QrQE@_<~VL6wl>e1 zejvXLgIif!WW|M31CZ#Xl-H0=m0m+KWpB9oRuCVDg7+TM4gG`12Ngr^;b^1}?+@+* zCf#XqZ;2T$U)k{KaAR87CVM7hk;RrJuL1Y44$$j%#JQ=A{!fMcuxG&jc;vz@l1p%t zUjha=1!zx%q8XeoSArkB9UG!)@JcHUcl@JpPcc)Qfy5ofyl_BP7EHhKa3!pPWStRk zIDIa)!Hsn!{LCK9RPszDb4~**>ZzPVKVAnY-c-0U93^kyRDOng^jGo?d7C@}6l55@ z1rkUail;+xo-f4hJy<>r|6MIV1MkOJ_&99B-!BfFbQu`gr=ZDLP7Q=7BTti9^QVGC0_#bA3HU2xrYv5@5*8i=4c3=a)?4nw5 zhsgB5Q>0n`L~i%{R8$Mj(G~p9{i_!I=NaLpqP1>}LmIvz>Pg)7#0|;QQx2yLO^HYm zQu2|pS}A>CajL|H>;t8bmAh8)Y0k51f7M)2r%b)Q4T#37ruUn*Yq6x|s8)3A@YdH_ z8CpGUQNDS}rnee78tChutW~;tLC)$5%gPMPE|>8sbxfinwr}L!&}y!?RzK4<-D^!5 zO?#*XESSjOYC37ws}HC)L4Q6(IRu*1Z|LfjV7&K$6V53(<2;9U z>2ai~)&Xi|kzJNwqX?!nH=h4X#cJd9$wrlVuO-3O(cZ@4b}n*0biQ=%MzZ`-2k8j0 zhuT!uPv#4zKaDdCqxGY7Gqr~_f@UJPj%mQ-cBy@u6&kB{xb})xrOSY?z-ZkGU9$e6 z{-(iUT5WD;t!OXi^t$CCheB(GuZ=kFT^O0*8|o|cwegX@fsv=ZeqKI89Ztb@?XxGy z6XNa#y}(-MEcg$-bCv{O@~tc0-N@a+UB_*4?}nOSlyj3~mwkz?i#6188IJCC4fXU( zbmidvSfG>Z=fQpTxS^zRf$^sCqw$e(y|ISzjKOZGq_3_^!iHe8s;R*7C*c-=4Ia*Q zBgIABO2^4`atZM4_V`ZKkUl{wR5h?)9^-Y|PGZ9@y_eVtrtEYuWh)@BBuu2kOz^gqABXh6jKFFPy8rlR`EDpe~lt8l&Sms0X< zRi?RE2t>WH@v$-SzO0D0q5ItRot5qLtd%Vl%|lJsjTy$d@Gy_m*VXmWPS7k>?^it+ zTtY|w2s+)#*fZ5d#}LSrrbpwI?xPlwY2-Js#?L@EvP(V}+A$k?z%`gy|By?te?H8- z;6j9U>OZu1_1}#z%uB3Vd!pmBqo%W}^Q|KrUSQ>Ip;nRQk?AkvDZ?rKMcsXEfHq9i zOube`sd`}s84Zq;7VaF)`MdmdVWeu6`iG{E&Sbb}JZ#=)J!!w@yyw0cvM8)X#A5IM z$Qiz{sJy5tzZ?yOs9nBX-{Z*EkvF{+y*ne4B94XUg;x)+6Fw^ZPI#S&#}UK4p^+yd zTlv2D`a#`PIeJ?3;pj`z`=SR%)6uP>3Vb7=cXUKN3fmRBHRPeEwCA$Bz+KlJ>VE1f zaMAE98RHmZZ)I~^kC}5#*9|rFC$;4?msEK|DsP0}auVB`Sq8;WCKv=Su@Tq`2hqK< zmgtT@BJuPLGEpzU^Y@iB2pKHVU_LcR()CREw4cY#&B~+YRpA0!2xQ_c{6* zw6;KdU8~U**HuPsv*~VV^Rz!SO*L!Pk5#nFDMa#7N-r12MlgwVj-ofZ0Xf+XJH!!S z={!bWR6ab!GvFLXpq?Ef<{%X+6>8zbz&UH-Ce|XyB?j7{`RL=*km_)Su%UmLjkMPQ zSs0Lq9>6gUBdIDB9m*p4Gt552G5h$aq3~z$0kJ&;rBe%F3vYo|cZEj#F=Jp$Vaw2y z?GBEE7d(%?%n!O1yGKwf>#fTaN! z0`3IdLI!<2Ql1ln4h2;~5^_b+PH2@zBDJb4To5RH4e8&Oa7T;!f*Bk3{vY~+SYQOP z=mmcE1)qsWexHka0Rwf<&wy;@pS9pNz1Z*eZ)-v4f8!u`{w=?tz%bt2-02Ck`J!U0 zB#cganLH(BNlH%2!Q__qDrcL^lT2Av)6{FfMbc8?7Md0AC(Z#L-*Tl;Y%h5Ev5;kIB_ zRaNyv^79>4l6sGNh-Q@bq%PBN%{T@sN7jDUG0GL^ITlhXY(eg!T!63Ayoo;+n_WW41-5`8IhI;g!@cv{FbhPqw?JtF^O>qm{jsO=jI_ zu57wx=%^=j>owifRaF&*Cj1!X5$w?$vVX#dur+-|5e}!YAgU)El{(5_%Q_(wp}q7e zoW@^D20&eV2YE;0!DqGzr>MQS z8rXng*vQ$D#g+k9;2?MgTt*sPDiTWOq9gw%aeyP-fam}F9#K!f)Ut{_K%N zg;cqvM9{BX-UzUPUdhS>+5aprOHRiQBNh9bS5!5{PB6fx0&lDjb<=I=s6K<&ID;t( zwPR~=F4{rORRiiN718SS>;;j$h9Zo1l@3+ za_H<&b;_^8UfC;(MVldA!W*Jm^gRZJ}y~Ybq zf>P?Us+!1?$Pte6CHU>wAT9+4(2?DVjcW*9LD7+#N4`S0q?3O@rrH--F#Np(9u@{zcohr%heFFd}x$lCw< zsQTDE)WOGfmQ9o$k!g|QP5@6VNxh}!DoVjatpoFrDTDmGt?WT|E!&q3XZL{7v=+MI zzTgg3f;KV}y6IX-R2qr|x1-Wt;PM4a@54v%F7bh2u$9k520PkIuzND_mJ-$BK4z4| zK<`f=i~T#{MAGDN=}zfesU3YyOIaUe74*W6FB@#%$KW9J#r)_-I=fWLfni(*Sx{5p zk#t{5V82leUuPpYq_>r|K}XaOZs~QAd^-?HP|sxlDC_B=K(nJNK3@TD6 zp#Vm?=T|Oeai|hBm@N{(L0+|{K~XK3_VE4RW#Aw0`ycQEOW<}tOHnQOPCWDbUQ`Rp zQCs}V71e@=^f14N|BtmG*L1;L#$LkxEmY_2;(Hx6I=W1BN>sndq=>1ZC){%9AX`1l z4!G_o7*pUGRtB2>Aj@m8U^m+G>@LR&N08IyB%SLVf+NKqVfzN9V7{q^v4df@{+X^U z_VzzC>FB<@s@j7ATTR)Ro56DIF=iJWtkv+xDTFW9TbAT_ID5Us*&Tqc-~`izc?bQx zlRks3adSmQMF~YQC`n?0G*i&pAH`JH4H$7SwG~d2f#g(p>F>h-Rk3WhbR_b?vZN7G zJzfa{(!1J$``K3Jf(HFKIg6?TpZ^~85$NU~fEazbc$o z%~EG-c50N`Ol<{trvz)aYU*h|s7FD8xL?&xm53VTrxIZgP+c`k^tp+c{s6*0AhJmdkv2R&}fy`-qWYQie2K3GjX z&~<0P8RRawA!ESNYY8N7E^=ENVz0Rhe1dY|Jv;Jn9eO{5XUiK;{o-14^x zqqI8whu1<=`2cm{BYr-_zr7JSKyy5wALjZ(B-529qL2uu0`KG#`h=ZuEbAf3#qP8m zri{*#DM&^N#CKv5L8HFV;0`As>$eH~r`l6j!Ex-U7^fJ69f(=6o^nzBpk00=GowSD zNPGZ4BLy=G3r2<(C)|OVr8N4d<&w9OQqU#5CX%I4J0WjnKhjp#!~J*!-fkwXkE!SX E1M0ct<8