From 2ddcf513db7a608f26c9389ae429d11081ac2064 Mon Sep 17 00:00:00 2001 From: Stefan Sayer Date: Tue, 24 Aug 2010 02:19:11 +0200 Subject: [PATCH] DSM doc: quizconnect tutorial This DSM tutorial implements step by step an application, which is best described by the original question: "I am trying to accomplish a script that parallel forks to many callers and then the one who enters the right DTMF code gets the call." The tutorial shows how a full application can be implemented with DSM state machine scripting alone. Specifically, it shows how to - play ringback tone (183 early media) - read from mysql database - place outgoing calls - interact between calls - use conference module to connect the audio of calls --- .../Readme.quizconnect_tutorial.txt | 18 + .../tutorials/quizconnect/prompts/Makefile | 10 + .../quizconnect/prompts/sorry_pin_wrong.txt | 1 + .../quizconnect/prompts/sorry_pin_wrong.wav | Bin 0 -> 58330 bytes .../quizconnect/prompts/welcome_callee.txt | 1 + .../quizconnect/prompts/welcome_callee.wav | Bin 0 -> 56882 bytes .../quizconnect/prompts/welcome_caller.txt | 1 + .../quizconnect/prompts/welcome_caller.wav | Bin 0 -> 80780 bytes .../tutorials/quizconnect/quizconnect.conf | 31 + .../quizconnect/quizconnect_callee.dsm | 66 ++ .../quizconnect/quizconnect_caller.dsm | 150 ++++ .../quizconnect/quizconnect_tutorial.pdf | Bin 0 -> 45134 bytes .../quizconnect/quizconnect_tutorial.txt | 660 ++++++++++++++++++ 13 files changed, 938 insertions(+) create mode 100644 doc/dsm/tutorials/quizconnect/Readme.quizconnect_tutorial.txt create mode 100644 doc/dsm/tutorials/quizconnect/prompts/Makefile create mode 100644 doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.txt create mode 100644 doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.wav create mode 100644 doc/dsm/tutorials/quizconnect/prompts/welcome_callee.txt create mode 100644 doc/dsm/tutorials/quizconnect/prompts/welcome_callee.wav create mode 100644 doc/dsm/tutorials/quizconnect/prompts/welcome_caller.txt create mode 100644 doc/dsm/tutorials/quizconnect/prompts/welcome_caller.wav create mode 100644 doc/dsm/tutorials/quizconnect/quizconnect.conf create mode 100644 doc/dsm/tutorials/quizconnect/quizconnect_callee.dsm create mode 100644 doc/dsm/tutorials/quizconnect/quizconnect_caller.dsm create mode 100644 doc/dsm/tutorials/quizconnect/quizconnect_tutorial.pdf create mode 100644 doc/dsm/tutorials/quizconnect/quizconnect_tutorial.txt diff --git a/doc/dsm/tutorials/quizconnect/Readme.quizconnect_tutorial.txt b/doc/dsm/tutorials/quizconnect/Readme.quizconnect_tutorial.txt new file mode 100644 index 00000000..2d8f0bd5 --- /dev/null +++ b/doc/dsm/tutorials/quizconnect/Readme.quizconnect_tutorial.txt @@ -0,0 +1,18 @@ +quizconnect DSM tutorial (c) 2010 Stefan Sayer + +This DSM tutorial implements step by step an application, +which is best described by the original question: + +"I am trying to accomplish a script that parallel forks to + many callers and then the one who enters the right DTMF + code gets the call." + +The tutorial shows how a full application can be implemented +with DSM state machine scripting alone. Specifically, it shows +how to + - play ringback tone (183 early media) + - read from mysql database + - place outgoing calls + - interact between calls + - use conference module to connect the audio of calls + diff --git a/doc/dsm/tutorials/quizconnect/prompts/Makefile b/doc/dsm/tutorials/quizconnect/prompts/Makefile new file mode 100644 index 00000000..556f343a --- /dev/null +++ b/doc/dsm/tutorials/quizconnect/prompts/Makefile @@ -0,0 +1,10 @@ +SRCS=$(wildcard *.txt) +WAVS=$(SRCS:.txt=.wav) + +all: $(WAVS) + +%.wav : %.txt Makefile +## flite -f $< -o $(basename $@)_16k.wav + text2wave $< -o $(basename $@)_16k.wav + sox $(basename $@)_16k.wav -r 8000 $@ + rm $(basename $@)_16k.wav diff --git a/doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.txt b/doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.txt new file mode 100644 index 00000000..5cc4898d --- /dev/null +++ b/doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.txt @@ -0,0 +1 @@ +sorry, the pin you entered is wrong. please try again diff --git a/doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.wav b/doc/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.wav new file mode 100644 index 0000000000000000000000000000000000000000..a7baae6d2600bc6e7a4bb3a92056fe32c40f9d67 GIT binary patch literal 58330 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

ot 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

+a3Y@ zD%js;91_k%;EcZ?B(4zT#|^em@Bo|zk6;OcoUp-1uyyqRyHvq%1i#7R7c?HfOBl3$ z@L#Z$zyB(~t|Q`F!K*?76^~#Ue%mwHLchxuyn_Wb`UD?A3;llnU6NpFewQa`zh4E!C=XgQ*p|QBGx$vs@Ba7Bf4}%`8{*d| z!S{Y!>-YbH&;MO5c*Xz!2$m-Jjo&2-{_p=S(QhjSpZ_b(?{EBP$^ZHMcX@;73V!yx z9{;@xe(Qh!{a45TzVqL=e}CimyZ`_BgP;EQZty$7$M60|pml?MJXrVO?}F&+;4g#UBZ&V6=woV@ literal 0 HcmV?d00001 diff --git a/doc/dsm/tutorials/quizconnect/prompts/welcome_callee.txt b/doc/dsm/tutorials/quizconnect/prompts/welcome_callee.txt new file mode 100644 index 00000000..d9422f74 --- /dev/null +++ b/doc/dsm/tutorials/quizconnect/prompts/welcome_callee.txt @@ -0,0 +1 @@ +welcome to quizconnect. please enter the PIN number diff --git a/doc/dsm/tutorials/quizconnect/prompts/welcome_callee.wav b/doc/dsm/tutorials/quizconnect/prompts/welcome_callee.wav new file mode 100644 index 0000000000000000000000000000000000000000..5d2c7345d61746821ef1c408886fa566a0c158d9 GIT binary patch literal 56882 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

+}n`>oW(Ln_1t7#Dx?O{+_Tr@pv&;$n2;O zrj@~2=CAtd#1MK8a~zeMwvq3dCG2_qaVCi=iCRS?i22GhF(=TIA0Un(pifLj(_bj3 z{-vS6se$pCaj=0$1+asQR!eBB?(=!R)=-QDAG@%BL3Un{BeDUJrM#Agi(FtXKbEhGY6#baM^ZCoF0p~0f?BX;_1E>E z^iKVJeFan-31SXWr;vGjt>_g4;`AegApsk2;F|ecqqfLv?=J6A??dlpZ=rXp@09Ni zqQKStjr_I1g)HO0<2UmMg){P8;ylgiz8b$-rUx|(rNaLX7sHB$&I!)42dq!b3ylf- zgG?n#2D4?gd=ZtpW{7_SPn{wBB`%g8%cW3J_zt-h)dWY={b&+=(_++QAXIuIN7evH z;#sJ>w-ObXdnzuutb9jmF1;526x*W0SCZIBY$q-g+k?+z0>39nX$nTsUL^{MY7_EP zLxHtgiY)(o$z}MEDmuEv*jvYv5rl$SNiw+ppo~l7RcDgA7^}P#Y4E zdYZ1yF))a>g4=ZpdBO|WJ#Gf~U@NpNG_{+P$h=)ZChZY&booH_`S8C4D1t=e(6Esq z$O~$U4 z>B{5-@fO{h^zp@Xr`3nhpF1hvQ61y}xdG|~%~ISzLhKDprIyiuNX5YMZZAJ1c=DKJ zX3vO+i1KuVxQ2P9E|p3%FVrStL*)1prNgLIHxFuYn}};fg4BZEPu5Y#1-k0{kUW2p z-KoUME`4)VqE?%S1d1yUn2}&X&Sw@%mxWOJv$RerP2Q6R($&Zrge;V2K9Q$U8LNgk z3-Qlx@>}9>NhHQm$FU!6CZ1A0>Q3{=l%~vWVjUmLl4LSJMIS_8^G#$Z-Pi!od~5^d zsZf?}q&AQaQ7(+2bonT~kqmHEO|ztfffPd#aS%BHnfOr{ZysioU?GOlwXvfuuWqCM zQ9jaXVqfJfTO1kyE1|D)iatzym3I&u<#zN8wnM-#tTT_1S^0(9m&_xZ1MT-llIg#J z92iW*so~T+C|?Q64{|=0CQ;%%X1H!GS4s1CC`j(MWnqw5Bt~`ihZ4Eqi6PvVtnAR#Co!S8zf3j{i9r^SuY~ z`@7`#>PM)!bSFAWZHUiQaWILu$nS|JK#=|;3(&$zhCcW)@~qNWtxlCx%PGs$R@5@E zZ!1t?Y6m$6YV;GqrKnDP&E@Dw7j{XIVfd5cQQX>JU`_+NpD?;?xtRK-on~ z)D7Yz>i0_2Jpzgq;0oO&T0-%DGwNkKz#8qM4pnB7+h`tfretXH)F!*AkL3DlZ*V%k zE5+pN!2B4L4bn4cs9B|b;tJU2K|(dbDqa^l1PTI#xEOVJ(Q86(z%4xlPG>N^S9iZc;42nEQ>N;!pF{;U;*SdBT0csNr49-2k!C zCGK0!6i<%dz)cHy0s{9naFnv>-ZI7Y^~{c7F)ShMaA;=Ok+7vK<)DIyuwhZjC)nZq{#FymX`nR~- zy9c@)s7d-hZ@1$^?xnm}dHu4#Uk=*Diu~lQwMvk+dBnkB+ zc}m>kT2M&%9t3^})x>7XIl7+do3)qOV{n;A+j5QVfmgbz<{^Gx*k35T9CkvhV5e4P)SLRO3eUkekXRPCb~7v)S5`r3C4Nj#xaXw$)u{qxP#~!JYjsWs5DP zJ#sg!!50t-TaEev)8*ROrAG(0;F{+;*A|W_{F>h+FW2!RcV6yN$6^PUn~>8tr$_!J zd6aRndY7pdc`W{7(Ju+>i$uruO^l5>Y-Za?Fxu%4Vtp1;nVE#NB?Y_oQzV*O#ltZRa=1!|Au|PJK7C!Co?CUy#Gv(VAu! zjE7lZK-Ahmrk9ZJ3ZW8sh0uWrZUeb>nb=A$qzbV=KTfY^>ac^^ z7NMK>?fk*mU`3_Zrv8dcR0QuZ;@D=-_Hpp0_ zJXw;w2~TS`<)k{&O_&K#nt6^&eovW?OmpT9T?5?B_RytjL~1ps=7Tk{Q7MP^^p#IS z?`*5&01LI5syco%H*mhZT!T88=aH`xLnErI`cJkg80Tp{gPp+JZa? zodgyL^nPkN@C!r1=wQ{Uh&|sxg`u*jNKy(b)W2k9sv5PCI!kq580berr& zRiHjo0cs=7QL_*$D^I7P0%Zy4({6^IKuO?`4}pIW3KE}H=_e=1)8*~r7vN}HNV#HF z@wxa;h!WQex1a_zQz!^bLw)zGKtJ@+Ea6|Q|4+btFM_$-9*1=(4t*W$to5i2caNrH>7&#LYAYE+(%Ad)NE%UF0l$U4KR7Z$||r z@sezz$50#fbIqcy6LOy8g1TGh*?u$6)xV@u$TL{ydF7mB0W!Ef6ny?7IUoT(VD84# zcBm@=>kF;NWaTR6=v(l0OUVTises`O8`hJq#&**`G;B4jH_(Q)`W;Y2D$5+F5~-P} z0u~2!PfsXj6)1I;De`s1#h##+#bmxV_uZf2TZKvt+g&xBlblVQ;|k&n9y#XchvyeM zTIOBMDUtgzzrE5#zeqpPx;7*s_CV6Wq)IXO!uEwZg6fzuh${X(cRl|+UiD}C&j=sL zKIZxM1lus{C41B0>h?*-s^lB7rC3+!8 zcIXPI?v^my4r+$3k?ym>Y0TGEA=j%H4L@|R$tdD7Q0lM9zm$_)M}NGq8x>g2`qz7= zcuY_NT>Yb_VSU8=Ul4x&M_p z8-3k2Hn@j1LT3<$=1+G7dkTf40`^qOX~UwhoT&Kl&i1A@bI>$v2j=gk%Pt}N2+6*GoaLM+3zGc{(mi48GM|9^4kKEM_x$TzvkK$#9_B{oe9f7gm73ixyGd5lj87R=GLL3f z&2Q%Gtyj#8LN;|zE6SfQaz00VwA)tnA_M}S{9qy z7?$f-=}$0T^}ezM+2sLr3^j$U$5b>NG88})Fah<-_YpZ#A@`3r+#TTzFWi!!mUlL9 zQ$CTOo7d5?A~!8(ZtmXPRgMSF<=j2GoN>D~C3tnj^O$<^q45i&s)i2?{%mQbUrh$f z)r45oyxlGh214HoEsS~0Hz--RBD+CREf;p~0#sHmp>pL)WOcs6XZ@GnK);9HPD@z$ z#z60GBCmkmvq+_Z@X3KcVsYu6)JrCmKb2&}Hr8P$RDgemGbX87*Bd?Mb@Li*!o_CM>05cp?NS72zmKYO8kLmZ;SuWIclfHqG9BPSXNJ&tf@S7`$JPNo9)+k**cZUMSwX{%Lq`0)WdsCn|!Gc2y z(RG)Z+54R2>+iewkDL6~W_QjUpL5>#eV(TRkTe-csR3{~oeUs+9StBtI z4n~Cd07PK7fu)C7m^{V0Q`6F3~}MkL%k|DuP-j zICH`hO>+1Yi0j+falR=2jxh0-Xh;T-TQ|}o+{OgiOE`f`aMA>COa2L>N@`#{* zl3-OTixy2nSyIpvByWUoxB_a2;E|G%;~3;ti!%xORe{_}z^D?$Hqqc@5CKonHslrV zxZ>|Hb>Rqw_XIO<2bz_zEz2kwsb!M0A{-?MSc1+jDE>r_64Z3bKfwqqklw#2Sb|3) zsC804f+!P^YZLNBP(1`CP0+>!=R+_)(0InTrBR|XC|N0#pd#9>G)hBIv!t{Hu}l!P zDx^U0PCESmi_RjpwUVPsv`h(}oZxv0$1!1A7K?L9P`U&!PxMLyC>3cvf;cCw=f*b# zvmL?aE-jfnyV_J;wm z!aIVtBPcZieSq{mGk&8+jts@MW>fyBvY^|iNd|-t>24rVQb}7e0 zrT!Y-0Jg>7fj6lSjnVrNJ#52EBG(XCF^nF}JO_5GC4CDlRkOjrwS>MxAETQ<<4}Z^ zyf2t3=U_Y^LhZ>E%dBFY^aDDJ+752cCG;h3HdwFXz(^F3KFF(K<+@J~2Y<)GNY_XP zQt8H4#fq^aT@|zPR$w>@PCbZT7y_4Zfa(bw5=$?k9%D~17iD??+{d5k_7 zhmzjGnFC>uxC!=QuB*r)a2PB{o)Vg}V0n6hKgxSWMqD--D`a0Qoa09t5qkA@hLLouID#jd6;B6~{1-rf*ifN!y5X(@k_N68^^2-xm?(pu?v zSgW>!pK_K|2@Jta;qBN7AHW`{7CfYG(Z6BGz_3@Cx9lOXp<39{Ts{6Kzm(4apRFFu za6f>9vp;v6y$)4_k#t#_rySB@@Vm0%tpSJkj`x743Am-R9IYHvotvEB+DACj-D_NT zoYmY_J-xjB0?$J~ON9)rtgcHjK8n5>|7U`b$R$omxEcF0`dm~OLkO|&8 zluzb!xU1Ylu(m<9R30m41ap1MyaU~oE5TXaan0V89EyKIT|V*XW?>g+bILs2}h?++}T0X^WLl(g)}?c8QQB zTvGPXzEyvwJga&u++=&PT^XZ14$2+(L&rjA!)JmS!G6KU{s&&IZ@l}2bGdVy{h9TR zb-p!hIbu8HIOCAq69S9FN4ej)mrA#B5wyFsW<~5AAX+HHWOaAtPQD7gJu)1)y2kQN z%EfxP_1suxB3Nx#srslo2;;%^h&UQ*9-{Md!wFzjiorg)3s4hl1GC`8zvceTwaQW1 z{)?5dR4BSzR2$)M-R#@l`MxXk6{ap%$~fKRiTd2!C$7jm!*tcyNz+r6E1aY^MJ~~O z>BrJ4YCF@GZ4dp7vP!#>Q=Jo{lo`TbTo-7Gtpr1GoV-HX2!^GR;*IdB@aEt`@K*2i zb#;B?>gU*R?SWYP=)##rKU<$!<~qjsUQ$I;FK(2fn<2+g0A!KNG~CP^W~h111ED-! zpHXtd>F>cndWo6HE>vU!OdF?OrZ~!#!5-o|qvF=GRe&TlQT;G8nc)GMCvB0}goHrp z&^+HTV6mn-CRzWsq*{yxoh+=ij%AJGY~XSvH9Sm6)mPR1VEEF!#++>KVit7WHM_N| z6xZm+d>rQn8*WSJS3TpZ0w;Atp;X24)uACchRP#38#eW|XeS*<;8$TGc)N{%iUHC)?U z*IZkZw{wpbV-SP;09eaSOdURh`;*Y&|3PnoCWN$ z8*ALJVBuRRTcH>H6dtzrQY*1}xHH+c1^W8?__BaXy69T%@;ThL!}dkCJChmayXk?YC2@RZ(5S%NXm$RkT@dwS$yZX3o$E=6O7k%BUA&0r##Vu z{R%eIAA22u(Xz&i|)*`iy z9Ht)8aqL(wl^@HO;!}AqxOm60ALw-4XO>Av!f%7i{U1G}U56Y`Y>ah!QBC9|ocB#$ z3RDOO45&3I#KnL zFrDwj%#CD}-mJXzyl88_+vDcE7eW;M1%Fu`GK?~L z%oXEyC9F%Fn{X}89(yNdS@detE5im&4OJPXS)pRzL~2MjSVIQ{w)oG2wQsrK71$R# z750m6*+y+*oNOkyfzRjrC{8MR!?xC)`)1fFV4iQ> ztX&4w!1s!)>^$lWVu<2Gmjd7T>-z`#+xcq+J_UtvB{5!ZMH!j-h-MkZrz*~2MvoJQ zLxbrS_XP9v4xpVMiEBfH0#Uvd?h4KUcG>!uWk`_@7?!O3Dfpk7zp=2M>#etgR~P&x zvW{!5dZ(XcY8m}U?7jps@mV61@F4DDY>Sw2W}9)gF07iUJff)2Riit~`QZVf>cLEZ zGT6PxfK2O0Fx#rdz0&JQAw8E}$bHXGQ^W};gmXf=FhKDa=7K|DAB>{f%FV>skl(-0 z`-Qu!^SXVNZGv^UWkHd#Xl)^)3JY%+1`E};W!``M7yNoLgSnt+qiJDmWA;W@k6V)P zUEy&MV`A!=OGlm6Yc>A}QxzMz&dm78U2$uuN3cae2NvNEh$Bl2+zqx5PZ!f+ zo$ATtu|7`ZPb)eJR>3WF5N0W?yn)YT)0n~37WsnsW2jf4ldrvJsO!1ocl!q0cNVy?zDO<0s*jVp+m5xvv& zt8udaqb5apfKTUIG6MCp)G6F1SU>Qk{|B&e4)>+_`v%H{4uw5ncFd(>(2qnAZ5$L9 zDpOP{RS)GJsAzRo#Pf65D_|V3OJev=aHD^l_rAM{OX1A2`)vJeHtSLA4(m?qS!*rZ zdD}i)6x0^t+(SYq#cAR~s*K`ubqBrH+$|;{_EKDhg#HP(xVGH=H)#x6K3I*&UJI`%+0va_?dbGx&&E7LXH zz2E)No#M&#M0rQ~H%LpdqMyLb7VfG?>V`$_H!m>jqP@}QqpO>{M9nfx(M{9LQ~fRs z8PO9U|cfwn+(%xh9>3URWd8YUY_XJJgq;IBog-3L6cAMQ>U0q#uTD%{ zpn34QoAxa7?Dc59TfOPf&h-cE(om?6S7zG_2hxm9k!HAXW}*Lfyb@IS*{2{evxoD}p_ttug{U1BW6V=^xqV{5r)) z_>=mo2CF$ufx5AJr0T3PARLC*SjpC+S49+ZZ}CiM0AiNw0Sh|IyVo-k`eirVUER&x z-Q1r+S>zCE)$Z=+33Y;Z5nI~}jPhS$EnOMxRvz$%j|i>}UJZ5&HVGC48;6=oH^KNlgZhy< z#I00};7c=a=)+t$RkCuevQgCcYO|_a)N^4DVhh%Vn}-GjF4{*HwaTxV>-ZFUJM!h5 zx8J_0|0exS(c^t@V})`l@8dToFEgdbI5T#qY~%+@ll?nGPc0(6vG_IcSRzYJ=GuAI%b)R;Oc5amqsVXrS{FTLX3PViqM1!f1c97XhQ@wwCasuD-877T#zM@h>-;^2UDkQ%VI*KdVJ;EO9 zUMR<@cJ85ArJZUO%J3cVAEU-|cfk;{K{LagntUR5g>t51neev|$G(@d!-E;OX0E2M zu!(*xBHl1`$C+X2kIbJV=h%6XOWscYeTYI`syG_% z=L)$ViO2aoejC5vJTAIYED-nnq{vvR5pAYxAi6t+2@5wBEVW)-<)7fZ=ZJQ2g;c@5 z+&%AxzUu#S>ywF3cRzPNU;6myCoR3Kyr!|I%E2OiV2)1;*l?M^VG}vR-x(cF@am`7lxs6owXYE*Sc%k zRl1%09{l0_A?;3R^X@ zPMl8}RAF8)oGO!AF?N!bN_M6tpmXn2Zald|)KOuj3-YK-%q?a1N?U^+{AvE% z;yx}<^_wQ5UaU$}^;Qj3o>$!Crn42e!+eyWQBD>lz9mpPyFPxNt(z9!DJ?ukV#~G2v`Nmbx3CtlTPG!@ssrxIpDmFt)sz{Zjj1%^9=h*vvTVay2 zfpVzg0=J&M$}Fc^%O65#e3|Yl&RzDyw(Hg*MT-jW=HJWB$!(KYHkZrK&A(FE&bBAq zH+o;A9ml7B3{*k~`{lqFn9yJ&H$s0i7VX;j8F5vo>LK zbd07NpMog6?T8LAg%qJ5#UgnVAEQ333M;z^+xfx51eHehL8zpd&RyrHC~K>-!R9@K z&7mGfrpv9x?}N>~gPl|ClWp^CJFSn3T>0u;{?plyJwF-p8s=3goN4J9s-f=^*CeGy z(hI|Vb)urQVhX%9pSWrCN9a*K)GRbNjcyw?T62py zS*A@u%>Qm-jbemisG_-`5o~-pz6qFv4a`qaiP{~S>2L2T3%f^IM+dvgw#pJhjC{R< zxPp@f!wcsZU9|XYr2|8m$Lg_B>!bEZMT}((-3`%(VY+?l7Rn~rna$)&^IN!mhD+L?*4|&UauDT{UcY-=}fc>_uhRtLB+v>A^XS?ju`l|*$mqV<(G_4-x68NH^NZ`1qoIAZRd2Bro-3$UfL)Qbu4}mG z7jFgs)zI`vZAC4u+Hl*L9<|+A#&pC)nNAyD=$q@3v^z9f^+lnS;#+n-{OhIYKVYT( zM=lLs;{EdU$S!IM6x8-I!`L6#>(F#4&HloahVJxTFey%wOG#J4WkUM`U-+Hy)%JBh zv5&D0!Hn@;Q92uy5~(k2A{(i?^gj9&^F15Qb%PxN(?z8A9*Y>+XL z-w=87S7>zbK2Rk~-RGSh9ntn2YnoMU*m8Uyx~v1Pu!oo&LbXcwXM)9fU)5_Xw@!tr}=b& z&B5=*YE&Ekh5EK`gJGKS4?`oP-MGlO!|)oK0bi0u>)Z#L^d|+yo+(`BwGnqL7{=;sO2SB7fLd5%Vf5>a{%y*?b z8##L0AKU8Kc-s$F#@@s|#CI%kIs`=?>NeL5sPh6tv#6uSk;dtSoIz_<`o5rP)cYebn>;;#YuH5)oaJ(w-@ zV)*k{N=f3LPPdd6da_qcnc%h8vGbV_JsG@kvk=8y9UR*pX$?{dy4c|s=XF6gQ ze*`ytW%yltL&vr(EY7>Y{3L?IDh|F7Ct}twgSTlL^bl7f_I)Yr&PyW8!4BoKGs!P`euun&z`GAPO4yGH2XYB#um^K0VM``0Ku`vRx10QX zanxVzR}A4hQWr$~6)$Kjf?_Dqg(d9Dq-_84EzAG$q|*2`Nil@q5fxd&2JJ)I|9B>lE@7)OOS=}&ZB`7Zc4s`c%DhmRUrHhb7a_Ly7iiKw3e62ALPzko;L6~J;9TgQr3Ci}W(3X!Mk0c%eej_F zNAEii=T8WK6)6C2JjAzA4pv{%T+vp*-H2B;;p+qMl??V?uec3rNaw^}avQ21a~JVW zZMkgr2)mp;!dwM2;bLeoR)(@ra(Gra9T6gpY7=GUkA8 z2lur+Hf$6J%e}#%+YQ!+$?{h2b8SmwBmF(4iOXaTuwB_mF&wQ`kUwC@>D~WFK2@K~?DE?H|)f8$6X>F?c zip}8f-3lJgL+Dkr;R`KA4`qh1v)DOI0$m<{#lg@S87XxYuZOpXPlPkW&!JXSMVy5A z+S^bpdWRZZ6{;4ZL*C#^XyAmQ+%h;=8Aqt#8}B-ImaiFoMV}Bm%WT#7l(b=Le4V6U z%~pk1qNEK}KlU^uV!hx3lA)9^P&?G1(VtfKWOvcS*%91Cs!ia8bH1~i{{v7J(7uAV zbs;-j@F>p+E4a1PBiIAagwhdtmK_=nmYt@E>L1KE#OnJxZQ%MUKdP6jdhu83>U0+K z4Of|4#(arY`90_uUo|e$4LG!S;RE63 zU_ibH1q+N@wg9{GWW^ZX!e=V>^ZS`o_|*z|Dlk;hxOV`#M9a9d3G^KKdH6+ebl`>W zN6#eJ9A`V{dFNT@D`%#&sdKGkntiivxaCv+@=t4WU%Gc`?v%Qkyu>`s@FY36`s$iV z$xE4b{!^lbc`h-IH+fd;iSU=oCpwS5r!n1h*E~GBrzuO@f*l&@>>B6tdu#iN75kwF z`fY+u(?oqj=qtQc9#G2M`AAZDSfI5($zLfzh1Nj*>rceuKh`{q8f1}vW=x*S=@3f~J*!kj|^_;U@FWs-*KeQ*pXM9W3jOm)o)jL*H5W zf@Yq@oJMcaWoe%2%9>h74~Xim@o}Byqkf(HYgduy0xW9PJY)ST>b7#LW}Wg9w}a~< z{3w)Re-`@$B!8{ooM4sUU%|rgAF_q=Gd=hg%6giW+P9iI>Z8hBAz7%)e`Ji%5k8B! zD=4dhZ8nY;=T`*{JFub(A3bX&@ZBbaxs^dYGDD+arsh_JFD!1|Tp*7YLYxo7sd9b+tO|@q> zGHt-OeidlH_40J^t;_-1{_^NE4 zB2)DTZxF|LPPkjZVx0y4!#Tm$GRb;qSwz5x=ZN-10=kEvJM> zLP^Iaek%=@YDo*E39?5v%3q5)q07OV!I;3`o+0*Gwlm@V`d$eKqqRaiMRMG&iq|W2 z*KhX+JlkoD>Iq|YmMs!J-S{;+tLi0U_WCQ^Xk*p4n3tj^bT9D6@Ac0O{u90rrM4tl z!K_vs5!P}0sS%Oip^f=Vq>Q*ObT>Rpj>i2S@j!GY(+GEwxrhR&#=T^+p?<{D^AM*} z2JFv?bUM`W2G9xgXz1Zxp)w+Gq^?qV~K=OE^vEOCuk0Sbv5q4k#< zejH2-g~NTN&k)7ELEIv*BkL^rA91v_N3JW+h9>1aXq&FazHc3;Q|N?pLR;+T7b_S= z7p^Omh!-G6ya2grhx^z9b~QVaiK90lQs;YMF6JT%GK9HslYAb05);5-eFpz|SRXt> zB*zsf+SLSxYY5^KA4E=K9p9dr%|7O`6{7^LLIgVMKBwU~us3O*E>GL(OF#qc0#oZ8 zM5iDYDk4iB@uB#)SY3>Vf39)il^zcL@mNPt2XURLEF?kmgG#45k0(@8N*r;Pn=8t&Xi)803X29bLeuwDx8DeV>ECN9l%#!oe834Dn}MV zQR623g)xZtKY`J{5&Dihfj+MRJnAR9|GPnC_R(M$VIB@3^A~&cNK!mnN^x1ptfNMjA zm4O!44D69pv3u=+*sng|Q5F#aMs}ZBl!0y!E$ff8iiu~|Vz09jbvBOa#3-@;>&aDO zJ2BINx;V!?#pwPUkzy5~eLb1#f|=+w_Wqq}T=gLO;=+_Stu9i3zL0G0m~qvt!sy!DCH zhtgY`+)17$*Or$<%eIkJ4z)K?8Y!)plCfSq1I^w7xlAM*5!^N8)$*cn z5pjhrQ11>YEFF?9;1C!G8%8tCQFo!U7L6UWYyi~EqM%fpg0@*E?bwl%ynci&<0ba<(XgJ>K%YrMEIN4R!Cd|=a=RV-*H?%aTntUu-N?&2q|ySm zi>|1tWb94PAhK~BcF4`a`%oGfhOP28`6PPV48+^VA;R%I-d{!BeTPT~L`3Zbw?lu} zmVlzc?&(XU(*{_%Lr8x!VkI{s-myEbJ`H=hs;IXV>@emQ+m|p`!S>V^ccBVk85;yd zQ&m_FpCL^>7#da~UNbH7NIocE#@w|-u8f!@8dt7@I7}sCSd)OHilT==pVy4%AAmM^ zP3O=)`ZwT|s^aeZ2THXTrMiQi%za?WnaET53{n~fWzPd>YZ-R45nymgLp#J{=W-8` znOZuLjw;^G_r%N_1zTJm%CQZs3=!}~)WT?9f?U>tZSy!r^&H$yKVW6x!N?)lKr8G5 zZsPlM ze*-%(7^D0f)Y>An**LUe0?w|1h-nfLt}nKzS2@^ zFv{$(PmvgK9p=s#D8mcXyNuql3IBUw@BD-#o6tVn5l5VZ&j<0F4PgH`jIqOGb+a6O z`V2~MM~myBQ*{gDE*(9!Htdg;(MAL}IT!8KAABb}VB>j&xW?1y6>f?FRShj}ErzOyE712v7ptqHxY0NbLpv_;R9~_0kz*@{z^IU%o7uVft-ah{*Kl>j?%t`-B3hXNd$aF*h`zCMq8kk`=U2ZK)cOD+pL1- zz*@A$A83)|Si7x2F6X26cVINlN9#;LYi>YWEXIf(k8_5j*EK~ch`tX|CrCqIEr<39 zqt8TecPWD?`Ap>CHF^?1d3A8~vycayK1i*#v*r zZ1k8-$ngf0Whc-?ThM=YW9%;mE_6JQI15p-efU)aq%D-38HP^pbR47 zyOmfK7r}OF!06H8jz}!O#70UKf7HeJgF^IAqJx-^vFAeRi8dioOUyzR@e$QN zg0CsU*d_{gKJ;%3`aemf99AbhX6Q87=6Q@c1#Iq3Fgg-Z;)ZAeqA64p zJ&UMuPQi@T5%23_{7yhmYmG;BoL32T)eaW?R1Bw4bjpM2KMDSE5yb{C@0tV2B zh^8a)AQ4S0qTxvt3&|`^ydDIT6^+zQ7!z8YOS~r~IHXjZorZalpq0|mhD3|1I(kM6 zd?rY`)@WIR)@y{<)@UKZl~f5X@jn*@=!QDI>wuk!MnG6(sqvoVjrvdCNPUv_A%7*$#M?x? zROGHxg8w7mmAoTuNIYKTujI^B-x@*O$9B*l`pCRZiLNohz8m7GsrOUg&yk=&DUOrFWPC9U#n3B7cuO>#F>vd{0aKyNzFoY0>qi%kLX8nv1gThe%KI8iI zhGz&xh*AdbvG9bEGM**WNK?wf86h36jBDd;{A&CeX(splPujRP?ilxsyo_(-Y^046 z|4SS9jW_=L{-1pQ$>E=~Q7VFWj5-)8<4-d#;EGV4@^DSzn^G0dIyGAHUpx`7~`KNY9OaFWJpQrx0Z#?r)UPhh>skzcIBx6W`z_*es9R;Lg)WUe?pPCtU zGyX{K@n6cQrE%|n?i;@wS31>l&-CB#f1Whj^Utp;+}EImDphjN8hp#SheQMLE&ZET z;J$Ik_*H?ojpvPLjr9-jhgwNW!MSAaFU3(YNEJba zQGS$^n^PR*9R`Oz_uGza$S9xxSE@!mq3XF(mvd!d$ia|~(N2{Hq0NR2Jk(2FGz&gC zaAd)e4d2-`oo42yvf$fDxv7&n;As!!VdP@;rZK9F9yI#if;c$r@GU?+EGPup9tABo z>SstJ8jesD36h9Li6|zw&Y>Wi5V#xtZ%YiBg~40KJE71XD-z*%Go*~CLg6|h_bvlv z7~{<79SvH7kp%THdeW$sF}C&Gk!G~lXuEOWXtgm4jZtfiPz192XRKO4W=8#OPz$35 zq0m!>a^+qOBwq#ngesz%r~#^j>Y~P|IckbpqE@H_Y7L)ms4JYi!qE=3N58H*)spuX_w35W4?m)y6EXPZM_E#T7({S4>oP{L2B8kAHHRe(`Z40^aAjG1s0 z2NJV@ge*Zj~=nb3JL)x1M+PPQmqZ|7&Wm$KH(ra7GxBJbg9PL1B&@!|LO@?DUlvpXZb`j7gM(ZVzf&=DA8vT?j=?{?h zK+hOQXl|{I_BKPE(J(XzEkzs9HnbldLFXa&D{ve~2hb+;JCr^b{R*w<2>BNP2?U|P zuF`#U2^~y3&^k1Z`pFY=g6tq0$R@If93rR4J@S#bh>4bM<_imi@{cVMZ`zm~^}yC*vsm1g(H^?WC({DSDN(A@B8S`h4w~DymJD zy>fN=o-{~Gmby#hrDxJ4xw%3VRV}J>#7Y~W5qJ%AiFI&k{5@g0si3$*yei%l*NL4( z$u!?2nx+b$_(uF;PUOb2SxgV+E$)fmz^Fe%ljs!kNpGXy)XHhwRku<@nJ0ghewH2v z7X}*y6M`sc55@%>25$sAN=4;bN(FVPHkxcj&zKm#iAgXIwd}Kwwf${7X=`B{ZY^a= z5tB_D_(bjrvk6~BO+exdYJ_$p7ixzO;~zMRDZvzBT=)-M6i-C2X+^q~-AW$E2WxR3Q&wld4buq!pnSh4BsCm^sNfneWVe<_dm^ zKEM-o$!Wc*{$6XZy;jGoacV&EDqoc&N`2)I`Kpu}R0HvWL4Jqts_%gBicj)&_2WRT z;7<9wb_Zo}cg29UbjbbCK-iq{9pQt+n}wAQ>0+g(&RiPmPUdNi)hE!NG^M_pUmK=d zX%Re*?ZjUZHkrs=A zY;M-Q*8R6{o(%KZwAQvZ?C*%HQD0)@xP1wC66(fnj$CTLWO6Yp={9|+`@FgJw0T+i#=JnkerfJsMNXh}MV7D1a~4R}G1 zlb(7ft(vOJ)ud_xulKCGylb7aoO7kalarY}I{RUEjhrtz{TvyN>7IJheNxIWH6Iyel1zr>$7+=-RFE*TC2v83G^y@!1#DI?*nj>5gKADD^`U|DFO?V?}f*&%^*g5P0<`V2`gU~ZH37sLk)alYre+8f0bHshw zIXY)@R!YXnjDDG&GMi{NBIal~W{>^db zh|AVq;se&FHw?ymvYbm?W4!Hy0cnzQS!;xxT$K5_^*8Gc^HFg*%<<)75z{RGcV;&J znW0PqH;r?%f3Vr?F21&Kk{`jTcsYHjJJmnsJ(_lwNW(=O_ceYBW|-$dF3E;;h#405jZ zybF|62CECnPh2z03;T+Y6#Fa7ZE?N0&vc2~h+gVZ`fqxF)R=KI=h>b7c+p{5Y&&J^ zV+j|V2otzeT%0_VC;JmTA6#3U@s1VQ(=+*u>FM6IBB{Y|bH5(`QueFCJ*G z#hGC>hy z0^we_`+!IFzW2`Y+PpP9(VoKYSjYXe;VEC<-GBG=ec~tl@$u*0jwO8gn1%UI6pb%h zrDWgoah1xHTAn!GlB^f@PxJh6-pU-3+9oZ+)mi&ld>+;yszy|!=$SFD=!)UkjA^HU z=E`(-ah-9kaPRefP*`q2NY$9*ans@!M^BG1hpLtwejeHYYhf2n&@X9j)v9h)ZmOfT zPwH*CZLqj+j(e|TR(5hmXqqSWby~OdPw9EG);lkIUI)8NUC9|s;n?m;XA%xY7PT)H zb4*j%Ct7@Pf?S5%V%s0_IsAA?N84OmyyXX;DLwVf@MH(tX{%^soWgp=u~uSP!tbV` z>O8F>UdfucQQS7Zr#R7a#nMom#=qb{3cF4F`KQcws_WzQ6z!N&McxamaX z(n{)svd!^PVszW^2wQbg75cI*b+13*n(lcL^b?Ld$6HNjg=eO4foIE*9BmNUfR1sS zg&bk4@K~rR{w!`6Ylwmn$y>NBY+hy|DoRGHBa~F-zOqP3lUf8L0#W`yeWN{HojtPs zSx2*nWS`73=M>M51oe7S&XAlib~HP=S&3!~SS#Bum`j)@^LI_PZS_LA z5XHQi(?L5fiX}V<_0S@N54|OQt%LK`*}6+z5j^d-=e)}b$DmUC7y%m7S58;Y=TrQ6{T*b|ptGCkeh}!)?8yR>YK! zP7YaZ9%kNZ8Y|pjAJEBaLQs|}>NA;g=HmA7kXWnP{Kj-d*eUem!i$-YA=ulX7k8rT?3| zfg_mpcjm8|cQb2ecg|_*h;r6+wQ~O&oXw`&wV1YvV-wS2I)*2Q%?NE5`oQip*Js1j zf`PBTtiXJ&8Pi=z6I{HL3$TbkBgBY`@QGbX8TF_%P9CqVMkTp>LLSpH!6ba-#|htr zZl)qa4qF$mAxE_R>JjycI!L{tERkDFje^?(D+0X&RRd%Fi+vZoWxSQWL9gi7{JjG& z1M>ru0u=%W1AaM$j1m0Srs3Tp8%K7E_%p0^cxu?f@RZOfdns`!vr$h{>dQH@Lv`qf z=sLvV?yv(EVSndl@{z)Reh6o0JK_=O4%ktCu$WI!l?)>v^|yKfa-77_NP2)g*URbe zw9@)1eHgg_TKot7xt5|Gb6%YXyQWvm3yTRQtXf;?fx6n;=2kedG zXggRRzr(%hs25nY1wdQ=4rN^iz3Uj*8e8cGum}F2yXbMK|2cXZjtlVX6|fsG!u1WX z9Y275m;(0USNes12MhBx*gYS?PJ9jReg(&K7!5``1uUWruues=whDp`SRTr212*z6 zsC#a`=72S1*hBNdvYLmMpykk(mGD`CRzZ3J{5BU&MPt!uGyvXe1$I#~*v~D&!fOIK zH30juELh8xz-F!l-=)D?jLWqp4eQaKYeR-WN(6gPgIXB)KnB#vux`KQA{vfd3?u*u z0RmggKs5|>%)k(gXAPUy4sUBz02?v}Y{mrmn84Z#h0-fRNebBAB9vPZEL0nmVuL60 zfc;_E!I2QFG0ODu*6S8?GDqU z)Qr4vheKbWH{QeBC&9LhMpr@RA~Njtyik{$Ao;TBA>>yHT5uKKNkFflz6Rd$lom%W z$ia>RGzvX{_9#%66WSjFTJ{I9={c01ivjte9bU-k0&NZwG@-*#%eiPT+zm%h;2oV7 zLmv7B-VH22Bytm@0~W?l3Y-YNkW?moz?C7MWkp&DokeMV=%m^uyR_eJmFYBfAv z68gLnx&Tk;v>G}~M?tS0r|}>k8J-A2NwYzY#X(x*(QeuZYEcCZr=wA4x{WC*oW$*L z7}Hj>=?`!wd8IW)x3wc0%y81sdW4O{zw!0hBYF?!AZJlaGA*nVNr;}w_h+zLkUhh! zl_x>(eAS+6O>iNathK<=bP_oZa%w{($q?+;`{*-i5fVivl43|8vq@vznXCZRr~tY~ zr_q{t8qCEFv@O&>KeTEsb&}51iUz=Zk&z!gq7z{@-G?WJq7*!swxHq68CsMSVEWMW zdK^whM@cB2hRV^yfN$KSHQ~4xWH%R9lAClB%;R~G{z6Zn_kg|pjPl@z=nu3L{QykkIn3OlC;@K22~8jO4}oH?5|AQY)uM%4NY)73BlcS24t)}`HNFmm(I-sB+)MS){EuwB$x+>3= zB1$!BO3)S9;*at#@|W{+o}s?FzVrUQfs200KQF*Yng(kPyV{%?S}$}^#M_93u!A9& zZC%V|xrZ#r{DOk00o#I^#TORWnmdcz#IC|n_9cEq>uPxvK{+H3Q^K?h`cl#i--G@1 z7p5}P7M;h_*`=V}l;C=D+1!28S0S74E-+$m;TiXiU5-c4LHGlmPD;a=dPJVlmgpQA ztEcJ#t&*BgSt%V1UI~l}jP^J7XZT+DANlhI+WW`&%z^3tCEkJl&E7da>I?U;^!D%! zRc??EOko=iZy(A;y^J0a`8l+9NCk5QSDv58y+&Q}5biX`iLI=YtkuNkVg=K1b~k!K z<|zW;Q(>TEOw!)Mdh!(?XZu5IfA9@JW^tEKC~CBgO}@$-Rz|E-@5ZVt`}{OwN&6bLwc z4gE3xIliBKP5iq9hy7&(+5Rei9IQ?nFc*YdAuGaO1I%6~GA6uS=mML?+>^h;ujTu) z6s+^D{A1G!^Chv5@CVn6?Th=;#Uw>_%lDNl>N0JczMkZe5;PL_*rN0Ir*IieXZ#g*=2vtoElY30dv$1G`WGodI_m?qvFZV3tNcwm zDIJw=N#CT=QgP`INVk>hO2ef^!F_=`fjU8aHup(>MsZ6)ACzD81HBdTFVp? zVk{@D$80enPeM9|@}Um<5!-K;P2vL+hVqy2_qcMLgWb!nV`EqeC*Wpi98Dqh$!5R+ zHfW=@omz^PPj9UE&_|FIIv+K~(abPL2fXqlx0xTum**4sQ(Q-`8%NkG>=5P^?uXw3 z@>&h{F*|)m_K|wz9=v^DtD}8Zx2ZMMXUY;KLfIp4l`qL><-_t8xs6;(E-x>WAIkgS z&Pn-}{6p@myiuMge=1{?S4t19G&xKiC_g)Ze;~{kW2}|z*X*rA!b5k3B-oQ}x^=W= zt~k_GNGJ@*TSGy(TMo5}H#`e}4YI|fUZ7wX%7Y1>i*k*uA^~VR$XIPy^>I3yW`Z}$P#%Kdo zvsz6Zr|wg0YUi|TT3x*x=!kCG4ZmZau(i0W{B@zCAP5%IcfgG=@bNHW%Rs;Mz^wsM zZB84Ke)>@TC;f;vUn`*XQ3W+i`9lG0SjnRtkgLf<;HWH5gr4amhshCgLwTyaQvM># z@;f3{rIElQsu-^%gje`-5L0d=!^izu5}f3x;xEF5Ak2XRFtG1eG%+PN3^Dzrp{9fL7%h+)b^^{LYtxO*V^b)$yNFbYKEIJ71$9B`318lP>d9B~jN9$PMrzL8~K`y1$Ps(zo zsbW)($a<*JVnWm&D<M79uE3!W$FZ7r=flvMpv|UPi>&q zS0|~zsdv;V+5_#SR!?6*Zh~eR307)8wjgKaAM@$_55AtzQ8>?+25hesJD9=DD7+1H z$iehI=|aj9JNZLzrDtj_HLrSCouighoiGd9DB1E|`HZ|BX3IYLh&&(KaZHwA#q6XU zP!#2vGDjJzFzQ$B4mnRHWMxNk7y0+5#g;49F;>a?i>;}3rscN9ZfPP$ni>i}xcO`i z*30a}TY#M_M$P1mzFap0dOZXXt1;@YVDI_VMlina!l$zSPXCR5Mn&)|yp(y)-sOhy zd4&?fZhkf2pI-+yWeK(dvkbomJK_jfW>3j<5>Ht2Q17fK>DRPAfP&}OUZ`VLUj3{* zP&UE}uu2&S$6{p`a0RoJ-<2GtlR8DUsk;@YQd6C;EKp8qy+}U#3b~l~>;bN;X^^3j3v@-WMwGjsLS!@xuF1v`~aZxmub|pvk`FcrMZ{9%Nf6=OGNPnzP z1RXO4>;M;Cfo9;2On+uIvxuq3902BKIn;R|DWK0*8_2&0M}Wm#*PG#f<=XE&>qvGq zcJy_2@oiTIYU$da=!#I=emf#M=FjLJkzFIBqKZXc3x62$3D(mYrs4c|<~{}lfo78h zWQXR2c8yeiQZUfrqIy#&^f_o%HQCGjeN#2_YV&+CLi`Kx-_f8+bl_$(9<-G1)qhee z$t!~A{psGHJzHEWohD}+N12>a*;C*slU+G`Pxi%}o$lgtQ{Y89VO1y)vNq~lY+BsQ z*gDarqPxYMi)s}9)ZW9AUtA`1=1Q|4LC5V0dy@_$G+I5Od)Z5bDuOvmbVL9Z+nT)s72}CeFjI5dQ zoyx@Hc4##%MPl?iT1S;r6V)zCxH1lEG!OlWFEjJF9KNrqq@-PKdv)6f0P-O=NBxAWxnTD_dNjrX}PSw5~k z(_i6i{)nlhZBzK|h>DRrqoO12;jO|Qp^5f2)Skl(;>5L%f&3Hyc8!Z)rl7s)xH$G@Y|po=clf6+v>zS320 zCcO%F4?YQ84V(*14lEB`3EU1u2PXzM1y2S=-~bOvX1S%@N!}%o15MScP1onpad;iu zTBvI72RmE-&`x2k!fJ%w4=o)s))ug6qEDE^>#!R hG#DNNJID$WlVbBg)ElxO>~CE0aMer7q2!+(N(eG%SSOS1G|b)U9IvuWGZDr$u4fpsHG z8L0MDbv0YvtI66jU=quyQ}yw54`T2_`c4lawLk)})`7KdrVELiWYMYU4LS-IOChjL zW}rD>BXz*XP%1hE`psF;hA-l=jLghu&#_7DZsq|~24-gmb^{Z^59tKJL-OVF|9Qc4!SFe< z!JXoO*TlkADCE)^%54nyLO~X7pyvxft(!wVx&t0i7E;r|wr&BqLIdE?dxH&I1fFOL zEhz@=DGJYM;H99_0w6aYEb-$YCl4Sc5n#uD2AQM+PQk%%6flx^PUXz2WIo1&(4M z(-QD|75G$#r(>bDNzl$XxL*sjk)rTq7)UYpvP zoBG-a8Nzn|mWW;E&dOD8xV}fvWY;)W(+7B{W2rgCJ6C&ZZ7<(td(dh)QaGu1l1i8o zwFdGLvA<`dHpAY*HJYEJE~1It7CBj%8Ysg2#n`nb`ZVT^{uggnMw(6cx7odm1VHK?DN*6lf?&az##teukto@_J!VZ#Z{BRybBHYuQ`u1@=Bp!|c^HzI zRxFxGj9fJ&Ie1uWV=d|bgkyyQ?#3bGY7VQ8lXs3}CuTu_~YRRWbtgsN)`6_H% zDr(>O-oY$EVdp=(bozS zq@C<~vI--;vOZf}>>C2O^`HJ9OeR}NiDwq#2P7{cc)R(ftCDcle8giDZ_;zhTxJ*h z5#90^;cA%{OIPSgSJKtRRVk%?KHfLHoSg%`lTVgD&!K>h^sh?1W4{+nT4{S@8V^=amnT5yvRrN=l?%oP&iY^ZYWXbQQl2~>-96Fma>=eV=W^E|cc@2o?RL+1 z2izTefB5SAmU!z1=UJj`dgObv{GZW z7pOd6)0|;DZXIKC0e|@!pVR-Ai_2rBLV7KfruRTG{4$}s*w(a~yTzX|px4)wf0f@#_0@ZTPlgKF<^k4Qq4y%*L`{m!iHwa}8(Pn1 zGdsC%c$mIW4M>NBak0~V*hU=dhhIk%mA!4_us zu`Fv>}hx?IxgL{!1=oCLWAvHcb&%Qi26XIePhxQh)u&dBgd6$) zsa%#Yz*5lG#M;d=(DGGG=Ia9YoT;x=ZUTRlK3GYe zMK|EC+7fl-=O0J5+Ybg_Zg8ZTW`0NPY=e(xl)<{~q6P-w*E_PcKh@ z&tZ@3=@hJ|)3Pce^iNn9LP#PNXMw?Gq7Lwp*1%EsWu zI2#vZGI0ZZ3iOv|pevjNX09_`PIm%#vy#pQY<({W~re)J5_NEF_JT1wAp9HU(6DCa%Uv%u8Sx+wd3p7@@3C z3Q&?$d<*_OSCiYtMzhnH54ajW1bQj(GBlO!BvZ&>IEIsjWH)(7?6fNFP8R?-^a|Le zMDVw)3%b=L(7ApCpToUy>;v6!39v8SLDz~0uIL@;rrUt^7(tV1HCmHa2j9XXz_LLcmS}{tLPZ|3mt^?0kjA1Z3mCB-$2j)4fxE(pgGM1sZRj?yML}Pa8uB#8Uo^I zczqihv%!QJjH97jdg1t<%TuNTtNNZkq7Q-1y9?(Bp!MI$O+A6DyTBUWhhN{p=P@vc zcj5dR(gN~dCEglU|WU zu37=t-Ag+$ciDUBfNoJcYXhmw%;c)DH<5+>s`nrn=nRw2RK)q|e!T)YLyv)7yB=3U ztHFoy9XW|s;72$BTxxmxGi`x9=pK&6=g@XK52UjM-9x3pbG0wp54Mq?en12@z^P#M z3<2G{EY83WO%nHpnWSM@0gIBR3=95~EPH~!R;%h&NJYj0nukd5>)SL*`-#-WV@>(3 zc`P@$N_rqzM=GHYX8hbRc0M_xOpps{B~X9v7C((^jWzK0ovQbttMDz*K?>6DL;|~h z0q($h*h|bj)Rn0EUa|&7;a{;6G^a#zm+Yl>*pV0DTj&<714qel=)Vszu6F=Vdjr-1 znRY}sU>-z(Ew%yHK?df3d6+|ophr7_jkOoNV*dauZ8O+t8;~1a2Szaw?5FKu!L@`r z^#uBO6g*!QJRKi{rMet`D+9e03)aeIn5$0O8a;($16*5SydFj4aWR|$+|_t`mb8H} z+7?E}La@Jz!Rj&`bce@K!U1^i7r1Kz6o;cT$Sb1PD+VbIZ5alh#)I)dJQjNR z62VYcJI)8S6JRw^u*i(SqhMveqIV-p$x+$|UBkP8qnwE<(v7ex&4cl5LqA9Y{f(Xn zpY!vm7T}Q&z+WU8=HM)R68C3XPZX}aQbEwrw7{P;KO?gUdqDe4Y4pSX{fSTG- z3~dYE&CBUJVuP7g8T`C^VFs@NTQ>n_{|-7AG~$xLX}^P+HX6L!??QP~!S>LldZ(17bJ^mV_U&cUqmlS6ev0h? z8M3q+%=CDWl>~*A`M2wdSLb|K}#>d?%^a(5(O*SIdmCO7(L6-eR_|m z!ICAFrIi^5PS)$0=u-4UO{=ma(D(-Xc6!%P+&yNMz3JjMx&E3w@t9tbVD`q zD!d65riaNi%3=b3Gh1;DuxPu(?sf>6^;=N(8Q|vQKr)x;Na_Jx<_2Z(Zafhm!C_bj zf0&oFJ?xvBzL0!^T*|=i8_(7Pmh^Y%iM9xX|M&p<3+W9gPiH`7E5h173TieBN;nL= z*>{+)o9Hw$m-K`^d;(2HqwsHd92!aqIZC>LWQsy7`h&$&ofd=MJ_iz*OTAGYk#sdCE`;te1yB#L|peN?xwXhm3z~Cu>W`gaLA9nJ2 zq#z-BS&~7Ug0>TfTcIJa|F42kBfv~EylYe#Ey>Wj*`Q5~pnn5i@&j;^{eUy{fc0TK zo(g)>LcmMT!m2(2*7f}$+e@$?*g!U?V3%|Orw|Po+Mj?g7?ClfVAl~~%`Ohu!fHaDy!c>sf$3w^f^VrMd8U)T>3DSjxI1tbb)GAfB@;vx7h>|9QG z!wX||4EPK+25I~Zskv|@!n)oEd>LYKIm`l2sMB?zmwln#(MPC32--vc0&J%tJlO@t zk+Jt)h25(^=xw!OCe4OD)xc-ULvM_MzP`BdiA;*T6>&T~ zCseUJtW(T((;M*Z9D(+cWPPaSS6OYa#^~4d=_D`g04`b-_Ta&=o2|{&gT}(HYeDaz zHse6Iw9_-BA-SU$(tBy6)b2_w_@%ZAfM1?h_cZXFbvJicbPsojd!Bk0cz5_F1#I#h zEeoCEhg;5v%!^nY-7B_XT>ZF0u_dE#MidCM*uCa3QweSmmdQ8p0$y%>Kup?AWg zxS=uYBfEs%1}_M!u!R{)r)pQ^k-@kAB!4k~Xy9rvU7n=Xp#&_ty}~$gzqzetvZcIb zjJbw*QSfq~nA<3o4A8r4UjcnEYpt|7+9+UBYpQh>N!k^x7)bNo^Zw=e>Tcq`;Tq;j zb}evSca;P?xP)i0XNhOIx4OTn205bJ13IuE3a!T0hx5_U0kfF4-zrABqnC z9`lek(^rCb$PneBGF7bwJX1A@r%BL`DmhZ2;BtQ#Ul;FK&jGj3)xvefxzBmeS;ckJ zwbEV0bHL;DNS?>uLH^UyXZm48QnR%-cs zx#OI>9e+E&x;Ocz1ZBC8_BUyS*KzyB5POgC3sI|LhQwcNE@LXnBDLc~8ehL`<-(XL_qE{G;6+oQEAX zoK0L)-TOUHyqh3q=eD{Ng$XaM{;-Wv%VMs^%#L0Z*(khJsM9vj^1w8RTZATRcci4i zLtmOt473bJN^gR@19yC8?`F5)p6zPq8tVL!voGt{j6-SmwCQOt(|^sZoz*?-RYq1u z_v|=t8FJg)Dms|=_kyuSl}x3 zL`MPFH(yt^JQFL{vUx&IhP8?q5%pWl$yD4HP{obliiwCSsD!Z zkNax{qJmuTq2J;SbzRNAn{hF1Xe#~w`rGBN{lCupO1^aX7W4i7_pRTB)Qee zQ(lmT$EKU+=^-J}+v9sAZirhJ85T0lVzLyq)U*^9pRi`CgLg;^eFJzn?jiNnKZ4U? zY?bi`y#-zCGCO?F{9OIh(N9fNz=bWP`KQhwYJOb&IsMzT)a&UhoUi1i;+v>%`KK49 z#m|(PSaD<3iq&3Lyjr|v;?2Cxrwe z8bnTxxENkM>~L5%5GPNqqWFw=u~)dQ{5Ig|CD2$}VTK838l%$s0y#7=#XHko+i@wQ z+K;m-9X}WTeBtxQ&)Yt={ygzB^TqbvntCpEVQPWYraAH20DGU8@o7SuDu*H+-J=imbwx)znZQ#F2)ltZACTA9mAr+e+~%`c^uL!qILAl z@J03oqHdaC-fg*NZpeRN>vB}En6HX)JO$mN7H*0@X`h1|JU(Z4$Jxy0sSCcuecbfH z`JvG#{^Jsm(xcCZzl{I>S89vY7e6XxWy$l!l`$!CmGbQ>e6Z}w>Pqzs6?+wrD}?gZ zjGbz2q&r;ZoF6&Ya~5QoGCyQ*@NcH)1ixvrInG`n{B-2ou-~ksY!|GDtY2)Lc$zOM z95YupA2P2oe=)5!m$EIiv=NGOjd3{|rN5R&dOA4mj!~JFQsu7~KPRQsP1*73_Q&|o zrmtDwTl^@HdOmf3`kO3gYG=P+Yj6EErglupqFO>$*||v?xxYEs+N(K8m0k) zM|da_ORQxMFY>jy9?WriO&JrY<`ukE9kH3tAGf}sFKbioe>A<{`lcO_biFlt(Kv-U+nKfc7}Adt*|b!F0|dU@)j({if>IDgl)`j zdIJ!8MP3o8;J@eD;dVPlXFtlCoYgzMTE>fvz8Rm=wTy>p8#7m>%0E_pJ(ihFKIe1~ zT;tc;KH3*WAC9e;cX!E(`A5e)l0xz=5A)a}gcGH6ww?|kiinZ4dwAZw`GlcnV3cUW^SJLYBX&zzLH=*OVUf%I6;tw0anW{t9q zjBXH9Jh4-W=lOq5Y*=7W5+Bt+a)zagpbJrGq<6gHQfB*W1e(HL@)5C2aXp56Y3XTh zYfTPq8{&>QAAZI@#(pI12Y5i$6Q*+}W(>ZoHq&3|g|zBQ2YH(IDR@A~{u5Gy^vE|A zA`h-OEBe}acICA6Nsb=A+OBDyL%w>RyuRa}Kb==RpL3pNe@R~&Y^5~uxU_EUJo5lM z7g;F0TV7v*w8R4mq5113OpToxvBlEDyx9DXy5*f(Yvq}=Rhk_bDqSZD`UC9^o+u0# zTUcjXWqZGffgtJH_VTtC=2`q+VB>b;F?vUBq+~{ADeeyoNnjBO_U#i~E{Yswi z{^ZZ^FYh1VYwyjFe{&yI=6cu2?Sm(!Q_{jfZ$$?D|90SnzpJ0~?)OyjMX4PWPPvVW z@x#p*Z8>2jqb%{065`_hadO=0=%?XR>`CTt{1|4kZUs++*K(9RNeLEb-%8#X%awX}T z9xwN2I+E_(V>ZV6vpL${Go)+ShOi>x14FNd46*ODS7x^>?zE__RIfpp>5n?b~$T z%bGs>_i$PAL5S?Qq>o{?>N~lMdN-j3y5Qgvvxb=9bn51kqiH+GhTUR)ZUc(s60<@hHLEVCtZCTyxrvKZi=P zgP0rO?fWN0*e#*$`Q3yS_Gk-Dp_(dGBDL8G;IDF@8B8-uQ&GmX>|P+_eu_R2%p9!fMSPsghbm?G*1w3J-Z z7olu@xLzFh))q7C^}I}3I+<+6pGX(Fg&nKb70k*DE}x!Be_{72bxdRAhNgb5pkj%Z3&T|nEZMKe$IYU z_wWU^=~YIPIq_rgsZdg0$o17ap%bXH_6IveJ;Gj)_p%|{ zTl7Z1q`T30wKUgE>dp^QOw4obDsT+#^&1fVC8M4CH~dALfUA?gP#gU-eyq>LeTfU* zBO)qKj^j=G9k5@I>PZaIO0zxm!_0E+9=}2kHzlb}7(f1-Y-jd>rrXlg>y-^+Yx%aYLHnDr0IHo%-k_>vHsEt#2(ZrD zWp+-mqiM9SviK#?2wO=H*~*>sE#Za*uhG-`am9`Ds-?9NSPpJt(v?NzIw~ZU5x06? znMNy1)PkHz9)&lkCGdT@9uq0wVcSYKa2xO?bugV(fgb|Qo=!&y@xoWGy7ez%j(L=I zsW`(DYQARrQ(PcCF_q#cuv5hQgg3246PaDugg!HQ)m~gsc>r;In~@^xbb+!;J3&7M zrlKJ}8Rzl+p!a-B^wP?~U{jjy&d+vqQGCd|U7x5u^he_YUP)ghT?(F8{Qiq_@j$4r zLU4ntjlZ9i%|zgqY(ufMJv01Bls#%^So!Ex5mQ4?ny;H8m|HxdJ4vY4SBEG}y)ZkG zlwm`K+F~B_dGV5Yf~A0^nRrcz=Z5i5*}Y6&W;NaqSZq`L0GO56Xg>T;hF97Mt*q8v zo}yIu9|0GieZD>ZW1i691WyB>?7ijQBF%L!3H0<1acllFjsc!=*+;U==ESC#P+D`f z^v$Mow&D4BAmWQEws zrS5?_pR77PV=18S@qHzWOa1km3otW+^xuMNn_(yg|>=r8}obU zHd7utU!Fle;t$FpzotbBCCz=rN?@s%wYLb_CcZ}#!B=1`QDje`S@17q0{I(H;nwoH zIns94y2tWa3^yh6b=Yyxn=!Nt$)nfR%Yt{uEBz?=n10flX=lOWQ-X&AM*$P~-Cw{z z(Ko|iFW~bF0jEDtpjP0Wzl47x>{(s)gc z%omgfc&ZnW;f>&hToU{WqL_V56{a^n18B=&;7kSp#<7(80L#t-rY#Il!FzxmyGAR3 zRrN^U0QHeHUO%Qi)AHyYAfmG@+*zeh)(`6kp}zS@4Kj@^Cof1eEdw6^D*z!I4H#1^ zz`qXz=O(OZp0CE8S8%aHg2)l?104BTvVmW5Ax7lc}F!X8SS$XGa{Xeh9(<-sSfKOm1wpmuA3g*^ng{5jyI4gvCY6+G??9_x>gL48eZvB5E z7LET7bp^P(n-CBB1!5caPWWN`rV?-=wgJg<=KipHOe>m_Bw;?tt0$lk~niV1zGhh{OhHhzxb0ZcTSdX$1|2Jas5JW7N z`d<-?Om4*DI*3^0{-21&n13S{+y1YJ#iAtQ{}Zuz6}bCacsd=3Hs(ew=7aXGqb|}B zyiNN9`YodX$bZ8BidY;3b0;Da#A3|95sP_pBNj8z35Zy1g1Z3M+YcKNi$&P) z5V2SlU&C>*dM(F?b(n$wH)7FDn*al9L@bU({b05pfib>;PNK1>8_e2@Fvqi?zxRW0 zuM1X%#=wj;Kv{GrjOIEZyJf)Vz5zxr9_Hsz@B{ciJbeY26j#%A`^dWcE-dcu?iO5v zyAvR|g+PLPAQ0T$g1ZKHclUJ}m$v`Z%=`V@&&YQ7bl<*Gw{BIPQ|BRH+QAnP#a@Fy z;TXI}o8W7l0Iet#F=x?0M<=q`=*=;R^zMh=`vv#90$FlUy8vVsuO_P@Y8$1bx0dIs zH`2S+o#LtGT?~ZD5V^b8AwN_1Ao6+-Fr7|4hm*w%Qd{F(^P)ggkQh`k=uV&|Ai~@n z(t5YJmM;eRHyP-u%20p9J;A%Ps4{H!J4PM6=h&K8aXb=^6mci~%uCneYt_rS} zt`wlz$~#*)!X1Cx##ocB>6VL@7LFpG&)!Dx=w0BmzzJ|bY9Ly~HT*|*y&j@nQQFJ% zyf3tyOdi)(j0|WHbU$cNNX5XD=BvgiV|}g;{7RAfF6}(Lg2~KU?t@?x_Vb5kx*ts6GzfD?xj$q{)}${&F8VPA=#zj)`ubo|>L+?lwS+9dOU| zM7b|GTe?5EXS+MNS7_aYp%NRC0~}avaOtq9z}8ZX*bp%yLGaJ_R}bhv_+?<@cx>ox zh>^O2)96>msQ#f$RldqamBmUU<(0OGy$r9<3LxYg0s)<=ol`CWmsMIHj>zoC`cx*G zt<0tHg}7I|O$Z07u$AyPe~a7C59N*AQtlLD7dx_h*~^#-4x$%shL>OrYIZEJF2xlY zSeypn$qGaKR6lorkK%6NZs;EC8sr-4YUg6HUY_BKcGYxULA2T-_b^WpKHS(as9#XY z!1BReLe_+|H+<)hGZ(?g)fqV7uUc(>CODCXNGrw0(mClLk!Al@#>?f^Y&B7Fc>Br& zw5jYXwjK~XA^HTY=FTZg!SM79E0jR}ylU6#!b_V1s>!439qk{AWn$McX1=eqKA@5D zxWR7RZhCLLCXD1g`bcg(_b)3j#o5n@Ks?Tt#W??f6wA>BYqRBwK%<+!&u7N)) zN&d%M0O+Yw-eaEco=jkQte&CrOWm)GWQVmaPZ!-^FX-{m}TjVusL_^J=@4j>;0mQ1+L{c!w!otv`I) zClGZo71FhV9RQc& z*sCDD4?M$5nVX38oq>6z1=Etv#w>XSUh21OF#&y$`@vrm>WaUJf#MbZA^(YwJyoedKBqC~F>pL;;k3kH`ba)_dXq%xic10xG43sHGtENqa4?J97 zfasq);4GMk7%2x+1DtFn*`F}Va)A8p!X0L7a~ol|?#*T6zch9v*9!3&3*qN|hBf|u zXir-aQ8Z8&eOli}Z6U6?TU!q7#c6Pb#o+3BkY-ij&#%DQxfO`vd(UU^NBD7k1%45? znSBhsXBpxWI%u8Me#&iND^GhlZwXHs;F~4aTxXzjlS6P!0Z#mjt(@(%HPgD&nqj-` zsxHq}RINWBW@usF61*i$4?7UPH)4DEuFx7G@j;Kwk4)Q)qLj@uyqRmu)?kB~E9w$u z6?)k?#QHT?`pE0#$x0d+*49F^Zlqe&LE2g^7fT6o#hT%U$ zim{Y2&5&aFA|3?R=MQcsyN#Krx6vA_U6ir#Ooqe173dCj8Jv|J*X*6`Cv9VGwQXyy za7bIeS-M$H=U27x_H5TsZ-O#PpT)-*GR?1oXM|cqv%|`VUkeQnnH=CAS9 z@BbZ;k9)W++;?sR|3c^|))G_24#3%+5;urN#La?^Sl-64*-n8bir63E_7*4^sCz3g zRHxkwUEiE7osx3`nC7DF(`~%{U#ntuTh>_j=auw6QOjA9)EitNYYSQu{wefa*w%=d zVdu?j18W<@`Le=Bu|F69P6^k9*@i#On~WXBGGc^~!~Ct?R}vt3n|f}ztGfS_k7+mb z=G-K14f~NB$D6n~=9^X(eIQQFQJO-c3hXmrQ7`hHfGVEGzW};Co7v7jK-9$={Tefn zYt4Juvs_itAv6M0-FnP&r8y^a7igcK^y2zlZ3;LIW~(zXdl!|fDJoEdwY_`Yr`)mN z!a42U=XvJ|0G@WG_oQdKH&HI-8Q^&29>_H{-ZI1(oTep#KZ5F;Y9Q+BlJu82k?D)5 zt5?Es!%^`i_|=9;yto?nrg!>crkg%i36YDa?GgPE2<-bT{Q+WG6 zt?p2kBerL~c0wBf{)nq=GG^enz-BGbWkkQ8QHH5O>L}Rkugbs5Hcx5yH&+wqbG?mW z2HTulX4q-0ExzJkBL=4$Kb>{Rht=79b)kyTT=*4IaDmvEjng8rx(v{N0_OCErXeOn zh9n)q)!|-(r*A*=hCK@Hw>IwHj5)3?SNm(S{uc2Yxq4wXfq&1vMD$`0tSw(@)6`n( z1VrB~MJ&!wOoDXP5l5pVa?%POKm+WElOZ#EBbM(r zFkdZE_iG?iOwg?#VO?BS?~YzR7HiTM7$^Powt6LfH1yXPXr*tl0`(x0WrSW63_s%_ z$%Y_4tOb8y)$|?Ly9vonE2Ag4GO@T2 zQ|trGIv0RTI|-!OLB#dl!JTg-M(HJ5IzSnCn?iI7Sr=;XAAHsS$}g1${Lyu<@s80(7|YzC}2h5!AE!)KUpB}(`y4y7js zZMq&|unfL?P+f)Kx*@*!;22zwn3f666@q)xlLq2!VnjCMMT|ZwR;GUTW@31zJ^6T= zbUe=oyuP9SzN7zt#r6){YqZi?yl!Ac`xc*%ur75XruGR|Q;nDpxI!V6;4*6e2qK-n zWA2-V^$*WH#C&LhMIjr}Hfv#jn8&meMDC52%DTAD%o8n)8H$zVR;+$%YjME0x6-cb z^VpqWu4t>3Q_n)PS)tYdW@#?-1@Tz#!D}FEGM;`JTZ@ZDG!wiJjD#qk?|L32?=D2{ zoo2TS32aA=1LK+1rYd5c*(HbrO5%HRAJqr?P_8i-ue#Nm zXpN^>>6$2w`HJ4eY3{;Z1oB9s*cV?8< zUuChLZt49`yTKk?!#g*hD^B zpX*t!-!wiGEnJ{!cVK5zA#ooI941>wtLDDpDxw}%f599R$&EJlGRk6_c+}L{v`skA z4&fegCs2Z=+P~~4?hw0%4HiBMqq&2K&cCbI*EYx#y{lxCI!&pp>`>Cx6?#Lx8zj(f zlzXPWU)u;~-`ZGNC&R9HUT+Ay$Plf%W>Z&V8?O#j3q#@#R+~YS%~7f-FXWzbU->;& z3PZhd@Us>44)zT4c)`FB?V0Vm>Kx?~%zHwMN$aJHLHSW_!dmbznaSLBt}HiCp5i^M z{Q|baAaN5v(OBMWHN>$su+n@8F0?(+YevbjdVTgUtZXgZd;WLsocg@z;-+W7MvK! z-AVdZJke(LqdHrCrfdQhLsmMgrwDpD4#DNUNSzGIx?4K^aw;fmI0qf1V2-{ zBCQtQvSH9GsxhOLvhq_f?Y{M1@a8KIVXxhV@p_rv%dKTE>Xk8W+Um=(zDyzhU^axC z%k1F(5_*YSfrNU+JNXe@1|m(%aR;%&?uVYJ!OGMR5tRp-Oy-zALz@f>tfnqjiYXVM z!wm(;!&Y!Qgs8W{iBe2$34WAz$|0qv`X8Pp4Lv{y7TcgPV36(v`E?jFX)xxphlo{f zi3sA8h=Qx6Ok$dXWn~aoQLJtpAf4p@6k?E$t(RKi&m@u~zHVK0>WXRLa9Ktk2UFWRBxO<|*shaI;t&WOh^tK%~n`a>011qs(J zVD2Hl`EQtqzhS;4Ha6mZBa8Mc%sCFssW&j|zQLUH4YPF`=22o<&%lvv)Ri6fT?Teh z4VG21I&#olyqJZoI6D(F)Mwu;^%is37hK~D=H(37#B4Z5zqjH_He8XAE*4lq>3`yV zOG7z6V$OenS?wBTs^^&F?_qoFvwwf`X%R1=`F+G00jP-_%$$@Bzyu9Z#EeZSZn8X+ zrJ67+ad=Y7L0~|Q5kJ2H^Lre=(_Wh6X;vi5HX(DOV2?KXW?^FK=3(CjwIep(XYVF- z4)MvmeYNx+Pf09;PqDo~=^mn_&!LT6M_FG&_qhrE`2kEkKabdZO-_26EV2_X-2IdQ^MmJ50r@hp)jFJ&GG@M#sK zw*;Uy1)OETcX~$Bc1(D}0N*c3v!EvtP&*vvH#eSwu? zK5gzcJQFuj)_ai7ckt~7p6?0vUBVvvkE{R}@l4m?!#IQQ521ySMs^e5h?oBpTKzq) z^wD?S_h=>3{K#VNz$ZN~Wk;}~Rw?raaRO4QB;V5*d?h9=%H-3TD0hPi{{`cTB7M(J z8k~+EKzoe%=0wfeab@EFCks4b%AL46p{A^;*9`2jVqZS)OBgFF{-Wid-QoaNU{gAX((kbcsGVbip3_`g-9H=oW6>X&5(#ZLS zGJnHHqaYonCtaI#>s;(7%`pxCQO(n{W#Rn;-s#CHTZRMLw;fMMEkV8A&m%z3$fK;J zy%Ohx8JnM9G7e)W5=RJ`AB-0!tFv|^BYC14ez92Wk(CY0Z#IOgzTzH=#$NiiHRfnTL!Pcl9W<6AN| z!gfXDDTrm0GKoasMJv?S2b;`9>rSKCO|fMwAK1ptcW9-$J%{xz8%5Zbf;FIS+5-flV3NzG}Bc(!1Mu1 zs1Xn*uwmhOf`MIU;U}>JXSkD@0OqePY)K$Bt}#}vJ+uJo87;B8PD9Lvg8KSXs|i$6 zoaWWeGXlIK-I+3a7~2`EcQ2wqnsJTQN7`GqF4ij^t%{z5+P#7mPHkot8x8;T4d@eQ zrk%DOXp#$hTc#tJalSIQwbe{Kyk?Kk?dI=WI6y`X_x&!jH z7JQEXfF0F?mE#k=3VaW5;A?p6!(bglf7Ku}_UjuEzeAGzF|6ASu#U@z53v+H-~E8r zB-zPg?4&{d%BX{x=>PTMFHXg?nlQd-o`^@Q6vo}HC?zp&4#%-J@Jp|R&1M$vi9Ur9 zYXFL~G(3S{Fq&f^iE{8B1q6J0szNHKPrx zVYT~OPl31RF0>pAuvm|9WdrsnuugcrYXVu-ft?NsunK6hqd?eIMs4Nl3Baqx0*z8j zAL`RfUtx8z1lXu?c(VDh6R$+y`37`mL0qp8;+0d`cT8<{~IJ=kNqqs4VtwmA6GnxTIOLbB9= zHaZL_A|2SAQ$TAKVy*BWnb=%p=U4zcbR#@(U&Pl%LMKgy72AxSO;!O1;t2M_4l)|6 zq+fxpDS;d;2Z0INhkj;<#il(*N-%1CC-lL(z%X@$um4x9RT~3Ow-+ei_V}+0TBtaB z_#^l!KcN@y0@C#wWRiq-t_I0E0AqV7YP=b0v;%%$0g}HkdMat270?eG_6OG259r~|XFoWZ_lC4C_Q z?M*Wn%~nNGb2NLE#D6qT5vI5dYLHOH#LMH)&{Y<#RvCM$q1RW!$f}OBh=IC_Z(lXv znN=}^RKXe5aGcfzRq-F?cB+o80ote$-YJt5VUk;-<(r|EDZ3QCH^#W7jaC*-@qbfa z>RbzVD?uikJvVw`Y8`uM5QN~bTX~R?rHwRi`XhajzLTC5j=t@0=~#Rwp|vTZh;)^*sG(H6SHi0d z>a7~2b`^Y9$G5uJOIY~2|GzC-;9GNy&-Qq4fic$_Ft2pjm9BoBg5=s?|chZhh&}#Iah?b&^Xq3e&1g#Z^ z(kEjdVcL=_YE&4q+TBp3nb>HFl>9{lL)c#ch>HfJW2{D<`k$jw!jdGGEPQ8d$hO{mq?Us5B zJt>WO(nhIgP+#$LbZma4uK>2ntPMn^w=n6HhtxD3ck@ zVln@_3-u8i!NjpfFHG6)i;TKI$KVGP_Zv9L2~L!!J`&*9}qo<#DtV zHsW^p37<3qDaNjyPa-zKuUhz8sR_=mjZxMJM_b~Z#w2CiYl)e*wNK`f46TT*0@|=L z?oR|3j4NoUg4X{@C9#!DcM5+e$&ph=sd z)v?E?X;4l~8|sW!zocK#3Y2U+(h1{ww*iBxo=}X@wnW?b_aH!%kaLDC5y6doP{6m9QM$e z*Kv$KZ{c+Z=Mx*u16=VFeoxjgVtjdyD?Rny`vXez1?5Y__5(d31Lb*(GLmfnh~JRK zh1hvWvm!Z5ER5l3H}beqolq<$i~cF1XByF#WSt<{MJx3JXwj0W?G)5$S=4h8?5FWb z>w4lQEbo(@lo5mYWvW0*lBQA@kHH$NYcckttp0;o{S=1 z{gTQrB}vBl=TL|=pT0ubLP@Ko?6IWtkR|m8>Xqy~hZqsee4c{)fI+y^H=qc1&t{ zdcTQdZ+zEyBlak}dZNu6-Myx6qn*(cWZ#c!G`IX%y4So?_FVW2935p%zX<>50jc zq%uW6lckiTk>A=!txWR@?IBr4dOHuvMsqtwc1QZ!ub{78Xrz+HNo=h&o`_+U#ulx1 zs1>PA%3v#x_M!HmZ-@@WJ01VO)r@~lL+hYQzSb{~<1}0PuSNUm2>pWIsg>zE<D@m)N`GjT-vU8Ho>$i6L?YKyzftIDL&t%8UM_tf}qx`ni^Iv0o ziE;B9+gQcj35BLSmex&D; z<mnA=Daavxzu^>aHNJOOlwh4ANJtLLyd& z#H75$e(Bi(UaEeuK(vFl(+yGVKSTSe1F72z=Yd%Xa=0E|wb3?pv94?it*8O?pH?`# zDZVv_RQ?H?Q!Bhv9^=mVB)LqvkLzKqR`88h>Kmj<)5^A%PtKDZuZ0$`=POTHpG2lo zlgyzUyfi|oHprq+Qixica$+a@bABtI_wGT-%@>0-@t)X91 zFC@)GN5l}-7a>T(&>QG8(l>G_0~JY0>SMI-rZqFoczzv@R@d}D{hH*d-;YJI!oNxg z^YvGMe4*0kpeTICqp;9p48Bao$g(T@LOJBZhA>^qG2?Y=hMhyQj% z>K?_}Cwvn45I#@hj1&0fNwnr!d{QQ}fB(0itY;^DQvD>_^*XjoC;{~slEx44dWy1r z^tI-9l$ktuWCNk+CI1cCE=VUPsY)x#6rV0al8@H%^iGnnG``bpNUH{#WfO5W#V8fR zQOfXM*{APx!pNlT;T&jc8kfLt$PP&5qS6(`9$L%zeK>`1eahZV9BY)x zp6n-XJS+VXeKL_eVM@dB-W8DoydAw>=^(ibCgcrq-*qk-cZk8K)|EaMQnG6zR~hYfx{;(Px< zT-8>@$ZbKZ(y#BJtXTvVO1{>wRn+j|B zAk++!V{b9*p>N@qS); zq-coKjY3?`Kk5gS*D535;Cd}XGb4_tBjjFH_=!4#v$P{vMDHWNh9piB4~k|f2|T-N z#E#-E;U6Jd*vjW{i@9>#MW9eTK(!S{>+gomI|Q*5=QNwP8j(R@RYQdM2CakETKgH% z+zk+Co~qqbi)o(`mvcouqRv1>%@p-dF!t9_lMr(fs7iQGSL}*KQSc6eHIy_8@u_Wr z5sCoM-B$JhS6^6$2&Q(@bm<+~zSE?A;zOaGP+B<1C-UWxt7-r^R-Ne2Dj2Q=d)M`w%j!Dp?C3Hu9&QB}E_N_v8>+#?5n#@fyeLyqUg3^1iO4OS z4_`+wc&Y^U1e3-c;->@Y)rcL*ltO;EU)ledDZEK+Ak+{dkdbn+cvjjXcHx)t$E9#? zI5IZx1bfC$uYFUVCAOX02^0U>%t+?*uLiSP(RspW(jZn389-UiEg;?s`_~X{IAVy+RI#3<)S; z=wqrZomBpFW;k})cR7+=HJuGy$JsW4{X;Us_;5YESVX<>J?6>$6gH08q5kE)=qchk zDfd*P)wA+8FaRVgR?h@itYfn6t))V4US@1oW>&|n%*=9`eKMM6e9Evp1_VD1o?uqP zYb94qt(bZ(`LB?a;0vJ#4Q-u^t-Bm$97SD=-D^E_wCI40;N*ZC0ofskgWH)d2+cIk z+r^XOnq{qLO?OWBE>eEc4g4&_-k?JfJHmzp76~2{Y&G`eLlMb1R(qmL>QK3^zKb0S zmchkZA#IYfU+(Ui=~A4l9ZRfMi`TlxvL^q0{&36w{20rK+<&qcWNpm0IOZD;NfkL$ zh@NmMDJiyWd~i%s^vCeE#;?jr`Jr~t`8;p1ZMHm9`G%PC7{g_Av7prf&kaV?ZPR+b zD>%Ovs-?V9&flFgJa+FWC0l94K9tr4bPeclo*q;z=@=~gv@huY$a^7fZWQp_OXo5?~#Ah zY4#jvpL1u0m>_5P+sHnl_oBN;*NwOxST3-UX(Rtmf1=b^;=EtM=)4!voEO2Ana6ez z?~CEcGnyn;6pC>!=yZ}k28e?Hl=&E8rGRuAp?3tQv}hy_0-auLMzhscNIP<0j1Ayt7NjL?p&leNW&TI>r(V$I7bf$Bu$1lpstR9k|};x01j zxYRn}7d)Zeg7kZ=UD9^z$022&gWEJ8GQp$WN6z-=Kuz9c-hr($0a>*+3Cn~*!gC=^ z>?3&iAN&x0Iah)6u#4GJ;H(QqzOAwFCw>I0;4S>>BBbRaJWYAbEM?%|y#fuMWY8|i z^@o_DpTRqq4jqp)qHB<^SKx)40V%K&UcQ=;%0GdnxE{(@57KxnkjWho)i@P?^>+Bb z4j2v#;Kc&}m4!?lHYi((h}o|UnLYqm;_-+~TZ?P0#g$1TyaDaxIc6wg38u^u(U`$2 zL+||wn)FaeqA{2~e!;vl6q1J+jeFv~J!YB#n1{P#CLW48xGiSpc9?}oUnXlJt-0bc zgOg{e7-ry7(3l%wqvK66o6~x$D)!UtTn67MhO9JZvf`LKX$4NUK=RVi8joT%Xf;bV z35o!s6;K+qNwNccg$Dc%?=PU8KE`)sfP@}O^DSiwAuFzmXHtD@Me^YZnBi$ICr?ZS zG;-2Y$X-X*v{EQVX=oe7k4vj{(rf%)ixQY2Xx=A#IoW_xe6u`#`Yof;&?FL|VH$Bo zvICRGPx>as7m)>@ENXrvGp(;^9Y^c)FL)kWo!jsy3c&%7A7Sh#6!lp8FKml5fyz&wyE`s5A|c2v1QX z5y(qItNS=aM|Q@M)xh7@K&(L()bAohYH+}D@`wnCMbGMwn)(Dyrx!+*$V_1;!kPw_ zGQ>-Gz(dg$aUYFMjHvHuyV=mt%Hqs4;K{#32X$x}!0Yuu&;47kgRxIJb~SARBxHNU zyxf3x(3j~1wI@Tbfbr5DOz9d{9-DwZIfFQ&+jwd>B7kRr^L#sU?gk)6=^(V6W}wB{;~$7BxvU>X zWJ@+`bCOOuk6uG6K0y5i!?R!l+wVEV3OmpT2Sff&g^VhPKHe6Q_A}AX7XbS*1X|T_ z9Qze{!RmqQ)QTD#hdb7X&Q%i(t*?Q0nxSPv->iXn>;};F8ftYkFEYpN(pWIvE&|fB z2i8v;&;~z%Y|a2v{%y7rw~m|6E#__f&wK>Gj(^1)g;b#-|C)QomE&WBsS^U>fgw}m!V!pHo=F;2`V3B*@9ARPxF{v}l(jLh95RD(K9`2$Rnn&&-`u+=>A znC0g>Cpee6mbo4~_d1^0H#^3=!o5?Gr7B$MqtsK{sWX+g`e)B(w4T3@ zc<_T5GlO)7FKfs$cQN-gE)~|Wd(hhR^+m{7HH3-cP6(0WYhf^u$g_d_jpqCClL!Te znvI1f+6CB?HsHWms_jC&cVD>*SV6lWE5;#LefK%{4tHyJm}`e)w|%~&hbsl>WRutJ zNy6-ZT(}!FBjRSnf&i~j8slvqu>4gtukx6QHB1TK9_kG&A??&hDz9X>`~`9F*~%nl zjrhgb&9uhwg|EogV4kt9x#rwYd~@N9&{2#Qd-F}eBDa>aaSwQzL+p-TMQx6(c!9Ep z%x!h$M&1gZ#;yRzOxu2|YF%c{w=A*BwiL%^r`|G zAwQU11U%?lW2vy_5xs-D2`7~pk0ejgz%Q=7)8n~Jaku@u|kx&uhLXQ7qJ{~0G=;dKL)P$Bg#4Dl+r;FPgytaFt$0Z|2-}T?ZVIwz<|$)-*yjA(Rakk)zc)4w7#CR4JkRi6EG%^7 zlJ)b-PoCrM-{qNFZ?+;b)d_~arf~t^%_mHvA%TAaB#liS5B}XY-dV`+HbEY&gsCGG z6?tfyyNkN^IS$x%Sk%1Hd2Mn(=9bT&mtWqp&|1=V-&VuX-0{Tmoc$DXKPtLlV8N^L zRT38@?1^h0yF8+nG+Tb>=$K#4deb%9W0l)$Qo?N+t_Jc2Lwg)Z=y%?Gj+$k{HyxA~9?8pDmpD97gYj3d9S9=QVel<-}AIml6 zcHU#|!LF)~<+k$H(w5>DYkm#OKl#N`xZtzS%oLObr>Hlv!|h zN=mAj^f`WfA{SRBVrXD8f5Vw-J)B!HcccBYJ3>hWoBT#DSX^a{G&c@-A0Qcy@U`^P zK&R(BW>NSb*v98zq${x15HigoEe@J zQ7|#FHqtWl>kI{qE5!o* z26nbOS4{$%qXk!sj}^a4DbfyUoD^-?BE3P*$+FxgW`r`$`_0qYJ;GDKbKTw5UCXr) znCDT>PtLophVCz}m9Ap03CbnJ5<}x)a9-Utp$rPO?)oa2VYkg zaSQ)~%fh^S78&&x3U9?e(lA43siyQrY$w`;9AL}qGflMGN;&T`&s5|aYU}Qbpp|H6 zcgILaD~H!H)49zV>-x*N!dcV#k7I}9oFmsRIl}C}TeB^h_E7ILy}wxwSrqki!i~7d zge~!PqvNAzhu;i3Wj-M6*4lWBI4#ynwhlHK8Gri9k(z|4-l<$4zB=Dk=p)t?_llgj zn%~S{0qd0@v=^p|HKo^LsI*7?BwR+$VJGqdPGCaxf$D8!fDG}tT_s&To$=1y4%r^z zcxxZ#7~=?a{^vOFDCeAo@>O)qu`9NIw%*oFmIICoo-5idL-)WZ;d5d}$9|8q#(j%^ z5_K~oGx&R8jPVS6UYq2(2nJcj`o-47S=9aByGNa`ebX8CIrB3&m%q&q6=#4ObfS1n z7>bouj!;jGkoJq)#D9UZt|eUN|KKF<1tN%>XgiezIo!L--NlvTTcXFf?M0xw2PjP}Nji9Z|vd)(fb!%=^P zZ3^CDdda6SqrHt>2khUi18f8AQLYM}c;zKfgnwck*NR)l4;M;F)1)|qU^pYqk_t!# zrEg*p>8*H6Tq*M6Lg6(3gL5I9{bAtmTYi(<6{&$Ph@xhbKe>JoQcX3wClY|}dl@sg5PmWDOkW|;;ZN_u_ z743zmp=&OX@Ts=t_VF&+eOqn~F8@Ek0~5d%<|Q#k+9=I6ER}MRn^%x(Nvu>%$`D@z zv7Qc&sv-Ox?j9^)ImkTOQ+*?k@`|42u5HfqXkCMSfqkGY&{o6F+Pd1h+pF1j+0NRA zTK}|Evoy*Zo;$#H!@ghLEo?S5i6|R+BCb=ygoJ&G;R#pbszmpS7$5Y&(1+iuob%Lj zcCt0J53%iY^mn=4qp;e3r`%NAF)P@~e5PoUf(!!++Qnk5_- z3h*zv1zacgAT-bd+HlPI^E`dQHxlX`?3is=Z7poAY_j!}ZH4Wnt&M%Nt){)ZEf=ii zODtJ=k$K;3cO3(?{a|tX81{E~@z_3b!3iT1`y|FET#s=?MhEXSp6BzVnrfac6l($T>x@!_ln~YryW55gXK={lLWqF3|mH$SO9>mF4(^(w%g#uz#`^wCuE&Mds7@w%_s_=NHZGpSwRhH6oOx=IexS3u_s(DdxX;Z^DM8GAZw3{)uWActxnB&+z`|vAd@sAM$rs1%!bn=vBG% z;toS2jLb#cAhr?^T_PI>CJ6((j6Kbj5vm!Q8qbS^MB z;eO^$!gIcLY_@B*G}~lbXWKpNI?K_#ZFv`S+vU~Go0gZIb1(Z?R)wsPjEDC6{C&gA z=+vlpF{|POQVJ9vTv#c1Jo1l_{d}H2QhV)P4@TW9)?QZG}+}uWaUvg%G4g70X)tpt?-?JK}+pKoudxI-xMC8(_wgrn6 zZ&9KLOznq)?u7*fP7$8U_3Z`n9hOqcVRs4nwgQdl&LGdhzkhWCckQ-QV2(Ttl38dxrh0eY(B5<#Ya+ zyq$S}i_-qeyKYM2JBMrz`w%y+P?J(!ik3{wF7zyJ zS3>Kc#bSzky?WZ4ZjW_Uus(H{Qcv+ty}MY;aNSVFq>AIg{&bf63ax(~SR#;rL!2xQ z5w9BG8S9$on`@)Dg&7tIQ<%p3MLFGb+no;%@F3?2dqrC(t1Z8OJ_CO8xSV!5ZNQdp z$y}E8CcRG9&9tdm_OC~@&HNK}TJWLpI|WuGZz+}$d!hKD!a`E(@Y=zTjT4!#+$GC8 z&uLddZ(UnyWsGWLc8dvoY5u;HCtcF!AotIGSg*3##d<3t)et3&6~}|oI?K4)cvq@y zIB$5(J-~|ZiqeC!!#givC7@Z;@>b@r&z+SUm}AJ9pWQb5O;(!>E$dr)aMqO{FEd|! z3E`9FHSWZa9nmG?OU3fVE+$MZ)2Cpq#OcwK;>#JI!`e5~J4yZEtnMmrpR5PCcX_kf z4}4dBAU~EX&O8(ozVV1Zub-q7%Cc<3+2QZ@eKPA%rZT^1HBJD zubk~krdm?+cjdmxd7Ski=RSJ(xU41Fp)FD+Cy}3Dbm4LK!}m8^#S~egy~4Vl_zF0FI2i?z67J&Yg~z_CvPs zwp-RmmVs8qvI3dpwpjvg|Jv@@3Of_+vc0*prmdN?fhW&>RR&`N*v{k4SAr8m{|^5Y zc|P`Qq$e^Za(S31&}<%Tvhgdx6Z2Bt;{EL2?Tv<%yzH3|i~k&XEAXxB^n2jq4(E3Z zJ%mK5ufYcXpasTnhGkN=v5j$~)ZcK}&{MJ^cXC02R?W=2*=;ix=3T=q@zJ@JKgyf=L80#Owc$fzdL;{qJ>rTdJd3Rp zc`$f$P_DTf9|n8HKINU$;9lU#aBOlo+)3Wf?!n#}+OOc+>BUYLc7s#QXgDj@F=a_% zrY6XH9c2tKWtz4~HBIY{?F|*BK~jzohOD9^^(eGNA@?okEn5TF>^J1OvOZ^(%1Ovv zoKY^jUDnu)YuVMab2Ec1D?J4*x0H9LV0OPLJv=`uD777O{dIHrRJt~fuBvK z4Gwb$vo2LJG&JT&>3mTkQE)RJHCpSXY;xp->aL&*rV3?_ZF(+VUz#QWlQ&008<36dR zVTH6qc)>N}QrSf+a(;O4xTZtn(DT>kdLUzuWoD**PP3-}lNOPFCw);yv#gPhN{*H` z20X3rg;$~VV$VhGjozF(KXHG;^7uiqouf(yHx6iEG>VgywekTa(~)6QofTY(;CyZE zUG7=yZKVFIUx!_3vydjGiMI@9^JufxxYyh>;Hqi1sgbFeseoaWc2EACU`lKplNr4;bZg*TX`Ug7+3e|xOubj_!|loLQ_$l*?m%yAIa2`#HZz0! zou4bRhB?SI|HU-hT*$n_>@pQLzch|C7C}Az2_CFxTw!*uz6M-*yFB%sy^(KZM}EoN zV!655j*O_xVp$C`wq&f&+?F9^&&;mu8s-!oqYP!FUk&4fFU8D{E*dp58J-bqV*{uakprI#C=WTte?ep*P6=#LTWV!Fov98)l^c~nx^)8O{O)udWr z0K2KyhZRK!*ZCIL5?6KCMDJ7kTTl3`&iEzXwOo7x5}4eAj(KfF^|nTSSVcf;-l9te12>>(Y; z91cz$wTZghdsjBdqvbf|rS}VXq`ojNCWYH5C5bZ(jG=*XoOE4UC{cOO^LM#I>|=c; zSa{;JeEBWB#9L)f=_uDzibCgX;Q7;g+WBH_onjo<&8pn_gTYf*L?n-KGfUB*v+03 zFwqhk{GYXwsjEC%9bjl;Ul&l={hHmS7iAkN^`#JZYpJ$+S`Xq?&rstf*E@bX*UR0< zRNbA+hcGu}-c-sl(p=Z;Wws0NycZBiZe%(AS1wQfB+invxN%^+(z&@>3BHj!S7@ll z@J{Bs)`vT%C31V1`QV%`0KbtNHtU9ZB7axe%wJS00R?wd=`H-^Z7BY(j??RK_Z7+eiMBXQtFf?uDFfXO&1%@LV_A9IK40RkN1NdBMq0mmBTP5~IQ0 zqVeTDW;4<~1i0+C439LgT*2_b-B0+$Xeu~w)uw)z2fcewbU z(wMmqMw^a&1!V2Mr6;hnzQH+)}Lp`2O0kt$?mQ1n=S^R#!v#*~%8~ zvlh-wWY?(~Tx<0US3zyez14mK_Ryo=;f(4mz76ut{Lq5IOv-_owJ5v;^R;%Y9bSmC zK>h0K5%@ z_JRiV5OYTRomGG_?uTEkfq$eSVr3G6aExSDAzOG)jYVI4fcm_v{a^~fi?JCR(-fwc z{xdvenqHWBseORI@2FOg{Y`rf?^!4KEzW8y*=(&OGeTR#zEoSY;~@v0v1#fyZkH;s zNzCusa&C)q8S-JUR*&na)Z~t6!{E8l)t}fD__!V5MdI1M@D24xbmv(%UaQ64)*don zz=UmKs_Ms?f5C_E=Dw=W*=KqkZ6nuCvm-m_DX`4eMWoMjjNR$n7Vvj}V~jw9*Vjz! zeP)Fg%-OZs@J#p7SD|$#>LuAM?Kse)EZ9%WARFWfAdigd9frPm z4>jKdZ9Y}M#XeSVvFqTQ4n)qzquNmXW-I!aN%tc2Lnkg5ekT*+03K>Tv3qs1)|$U2 z@8dS;^R#dwM&8G7)6c-Y+fs3X*|Vg!0ur#7T3qO^r1DjmDEYRy&D)ZH&J35Q3Om&l zwlDXK94nmG#_NCZsq$B_1ie!$@<$T6Q~=pp+3CAg{ZN4Nxq+Lu;Z9;AW~dS&7-Cw@1&K zt`%b|vE7w5!Yt(?o5rkF%d-^QHX5GIzx47fP?358_(eAA3O7t?%2~m1H;XR;Nq?Lz zr+(s|XmR@Q+3{X|%y7L=f%-OZRVD64wqrWD@s9>w?Uf z`;d(STmaf*HVF}C$=r6$j-02Pz`wN+p2>ks5w?Y12Q4*Sug*=-CNn$O@9J>mDf&g* z!t_DES`4Ou3F>riHoST!zO;IR)!8%ZF0M8h;1_YV;5F>U-h$ulGo;`m^sru#H6t&H~j%)YCEF%%D{*C3h^30 za19T9-{ir5i5LzO_ERL~4b)OC_{m@6iZZ;S5`5zxMALr7e=NM;*C8)rm;;F6ssq0( zdH27=>t6wp7GL3GCDw~pkY8JH-w;G6Br+FKrV^0Bt?=7B;1&u;#00TE#3Fv7CGP4+ zL;i#_3EdV0UwkHfs6ehGs-YxeFk;~cZ-%2Lv_x6>{ma4U&*Df0T(K^^{&nF~Cxm}d z_(*k(?PmA|MNJy;yYe_jvFhN9z^5N2L3yqT8AdqaqPTkkjtAg;%JED%1wvgA{+^JE z6cZkX7sX#tWCvk1C=QsI-znyjVr&UzLTCyd$TXg|dmJMfKSKM1)*tRRFRBa8%L2|Rcw6p$C6R$PU!Eriu31{43UDIVUB z3iIP8@^GzeY=n0rCLRCT#Oy-9rak`q5PF6J*k3Zb@&<2p5c?MW<=go>u>wzDEL?{oxM4{eDaYues14S7T;+8&%eSr28=G~7d^G7YYP%p%G z;O9i3Z+;#mV*Mh-0F7(Hs`&Yk2pd310z%vpHv(aQ2!TsjABwvtqyXK;k9?=vrKcvW z6`?JNRfsS&6yZ-YlX^UHXVT~*B)K2+Pi6Ka0t_fOp>=7ar=VCf!o^Vxe_2G5H^O+K z{+JB;SQ$0%kFhF*Hl+OZ6eksf_XO0Zgjs>)kRKICcu0ywp|Vp17cn4Fx#^GO9U%&+ zX6c^)SAL2bqaIBNe?lV=dV#QeBmqb^_>o}Lo9H}$zw-a*-$U=Tm(HW7qUbYv9(sC; zVfV+4k))+DB%>}VuAerNfezoeq5nuq*?oJcb^K^bY9rzXrHwF0ew;kvjh^{N3H|>Z z$B5;X7{|V#RS8{2a+2!8k1g^uWRYx?eX^1I2em4pW2l9wjR>nsnK}HJpAr}yr7%(VQVOQ@H0wI z2*m3^wGi*?e#BgEMtuEdZ0isSzX5Ui>kx6j3i{a`L{BZm1`P-7v~%%VfNx7+@mP%G zeQ5VGV_rTW6hh*vwt)wINP=qD%Fmy)jC2=tj`w1~I)WNT7qZSB{N^z5Z zjyh_0no(&*LJSdv?xZ=0%HT#T6C>UawAT}qm15m)pxlJ^I|_Z}DxQO$WFKl`o9~_K zWDz);<{)lwEn-xU>jQj2Z@iBOI^i#EJ2EC;)n02Z@Eljf+J8ODS`jgF z1=y8rD7TW65VLfOm-$4YtWZ&i5p4W7m?M;iHslQqBJc z{uDe6`7}3&ZVgQdts0ULyd_XK4>4UZ#7T>U{`_$65?DY*_7ix3X5py|KrfxFN9gml z$7;CRRaquK@sqE=#J_(9TU(}uw9AyvYkMx2cdjT#zxD?B~)a&T1OAd@2fBb4Eqf<0}R zs)CU=RLxXZYxU9ZIsvKE3#0ZD)<$+jQTNrlAQyIh;46w~yq2ThQTMAGfTw5zX7N$V zdU?FJz9+>U>gw!#=IGnHXjqsfa#YNN z*fw!{V)LVqMka>GhA06=O)aJ2{7q(_)>k>_{pwlfIp^65BA-#}E3F0C+`qAn!P0w! zjYBR1D-bp>zzkawI`a^H5Bza1Wd-=`w<=e`9$Q#xDHrfQbdPa0a}I@v_o#iZeV)C8 zJ=*@r*4O5;PO-kV9JGwF7PAYkzvOWCg)~1fIDBdJytu9j6%wl_q{Q8eejL#>)Qt&X zy=3Rs>)jRAz0NrT{QG+yOI(rON6I<<4%bp_j~tO5%@56Y&2`N-W2~W!IGbN-EYAG- z`EuTiywiwO+3Yyv-OUU&R1BUS`7rM1q(Lch1->PpNURi}7Tq}F&yYU@u1ZVUnaba; zL|fDR5O{`9=-g_SllJ!DyH7`Uo!<Bwz0ma)DQYfvA?HOO8q0Pc-i>$t?8A@ zCZ{zjxiaCDxhq#BY;+ANT58>H-D%TwWi3}qvZM6Zgq#qhCLVk*T< zjuE4_TMG4=s-;w2X<6uL=!~dHCFCn&Eu^?*2lolV&0^#e@agKoYT2~ zY&K89Pq{nuC)ys1rSz@i%cpiPJG<<)vMb6SEWf|v z&lTg-Unf5|<%ffw!8V_@ldYH2=nNq*`;N1*zjnBgUl1`M=6p7+YTR?@-@}c$?fjtz`MHm0DEet6Qu0tF$F; zXQF6`rCS9kr^)tP;mQKJppLcBc_VO%I;*W@QAHob^)E7dZNvdftYwvPnr^%LFLo`v zlsl}stkvokYuoS>G?|(n{31SCeTo*v$G(ZKijI9Yt94<)&$+*3kIZs?ZI@F#uXg_H zyp)_%*?YcT&$*vlkoQM!kL)>_cQVW7H*u$E-^Cp-HMCr2`SlfBRUcVvUtO+7$Flok z|Kt7;PPthpZQpH8%{!2bTx9p$aJ1oTbglSzvF&3%MXil)8okBh&@W@tq@zNO(1!3l z^#H>GQ(4nY<7;E2IV<8+#0R5E!-aFO81Cu((LTiL%su#Z@|VA}O6S<~*B3r4sGHX( z`{u+j_OYUB_Yo*vKr>eiIn_IuA-t@}zi|6Y7 zVinH~d!edzyrqTBZ8gDhjJMY=jLc=f zR?GU|m-Sx`eaigs``cgMetuzmFJ!+Cm56>*@>JD~8tNZ5)E?BZL4$R5Z+<6{%3n{p_;aD{HfG8X|bu>k`KmgHFws_TrFv{>tTK%_jb`K-x{t% zipCbC<}tZLa`)uM<@PaM?DcVl+hb9s-l_e({_EO{YHg|0vi8WDgDR;Kdok&@ zF<&y@kN-R?|2O+tSI58tS*Oj4|0iuvMQ`~BCHh54szhadkn)yu>?u&?G|Q{#t;GEo zx2@dlDu*g=F5^hlM*e4frQ6KLiI<#vaw~k9{53IedeLm>K-VM3IOk>e5s&EU@19xM z;LDHim%e)Za?R_X-(7thdVS+rua{DG6K+Z|wsuC-^$qzt!)qL>`g@gzRpyua+1S(9 zFiZ35(`zB?XU8s~7X5*}q*)a)HpQ9VwDQ36Uz09rR|#M2*#*hgMMVv4M{FCtH?RqLxZ|CF*I6mmBVZV3g1e|@4O$+|0dP1g9& z>7ORPFaI{YR+><8d)Y;asrtFWPPs4M zU4Pd)(_XMHu!w%4E@ONdnGyd(iOXfimL6Hm6fuGf~V>c8xi6Db{y=v(oBwWI5FtW%}Nuu74Yj1||UwvL~nIqs>J6`yhW z{n9Uu?f(kvs2l2HdWUIpOod|iOU^5GwAkRt`rMPiA;%%jI`T}+{rFvRS&=pLeNZ9lCj1z3$@7?ix{-FS_9%Z>vqN*9zpO2# zyUXXJo_R#98l2^y?k^cA6KoZHfb6l?{+s@Vf!D!u!b+jLFg$1h*XCdUU0*8LHg&!G zyxV*(Ux7aX{F_IBy~74bWWTn`tI+`C%Ce zNaLk{=s(nURId@u)Z(8r|tqDX9(;*8JjQab&1m z@V!@Y{?C53Xl{|+Hp5=cao=&zzS(}r{?ul4)OYOjjAi~b6vhuKv$DjnVu>*W`7vxa z=!0eg*>A46#dcD(GK*&P1!hxJx#+jXhH7YKf^P3Y-$#GEpp|CHKTDS=JDtS6H%hVs)m*Mwdpg#_^5a)|;g?`{B&Jwzb zXT&t|MkqP>*jvG~!p(uTy2riL^}Bnu`?ULjcdD;C7T#*WAUlJ)@H_5LL+hv`QEwt@ zSx)OZXt(Q5^5wOs`2^Kj<^|PRsizpIN^}A9fE&&Y$9kzQ-4@=b=b&@0K%ay2?1bJ^_B(N#JMlbH(DsNi(lDuybW)0hGPu9|RQ?R6%wVkj zW-7ao6}DJ8uRK&ZRFel`{eK2EfPGknYN>uyF0~NZ-ucW?_BW10`jc5bO1%dh#|i2R z>VH+J`g7&DJ**i@md{B4I1cRf7Ift(3tOh+r)L7h|)naNRMP1u2Vd{UlbWqL)qpqy4t zz#I0llBKBN;Q9;Rw+y((5jY22!wNbJNQ57_VInXSqQv|a*g}6K{Y``a?QUpOpQ94% zgafk%nz2|o$CjYe>9XK)rb8K27F#^6r4>{ipHo+%v_Aqb*v)Xkora25XJ8m++W6-W3uzW*?e@-DP$1KPF*ZJdK6Fa`fE zL7SHV|5*#{U>nqJ|NGWv;j!Lj?^9qQv2P_Jq2woiFW<~%;smH zH@^bS=?XNbJGPG4+5yFAjemc|)(*#~EpEhR=7(@DAekQydD#EF9^YXuS_T_7F#y0y+V|Zt6Z1 zj_1H{_%D0_XH;L*yIauPFnU;chM%NF^utezq&%i-&}O`5x>7-Y20!&DbaVPJ(2RM2 zc~_ze+BLZ1Zd-h zsNix)-x-VLZA0LQe`3te!1h11p$qorJU9z0Ws`C#ybI~1snk%6+>N+eEkMfnSS24< zW?y(aF!`?GpMV;+M6dk@cEM)+PPn1(ybgtY2pK&#wi)!p;WYqA=a)pM5)d;r524#4-E$S$liWxXz zS6mZjDr4jv*#y?v44_#ts7t>`Sp_qiDN?l2`hvYAvb7(3gKDM8~6*#$O%HX&~a$F)`AhqDH-8f>`BdRz1^TU zbk?P6FZ1nqzxoq*fq~aO&V;j6A?;zVvG=%@synLQs*RkNoyc0j1Am7)ULTwRevF3S zmDBQVI7fs--9vMPrkI0m@y_(j@ciU`@9pE|JbstY_0=tTPD6iFKM_sxyk1?LStoA@{S^99su9kikFourUhRu>=2vAWQmE<(_x$C& zCTQfwxynJM@XR&RmF`~W`O{m?yV)BTDz14P+pNUAl=0Dhbw5Fi)mhbzJ}6cWl=KdE z)84V-Ax$_kJGM?_UEK!Gi?rH9;WeS(eLGx=qm-+PKOy`-zKto-Bxv2L!>YmBE{03G zTbv-B4JyJ^#m-*SWbi@FLFo8yGjZ$yrd{}eP|sWB`rGaG*70BUJ@A^n|9Sd)2D`hv zjyj(>s@c~Ty)G*4`M}(ZJ(9X0l}{LDtidnV^iY3fO38enzWbW9s=qc94YuTrm?q|Z z{3G^n@g82o zPg1|-Rzo<3;YGfpY}*!lf&Gwc zjl4WkNF87HZn2ld#6{NW>?l`;LIq zo+MmhM(Zk=%9{r1dU9FHU2%G7Z?Kg=J5ZC_pe<>NHEWGu_%W)Hj6~mOpR@lmzcLMw z#a4srDK`}#&jgEQM@WLtOaur*`8}c9sN$%C|9RIAvHwnHjXj) z)F$RBd_tPY`-4Aun|iwVFUlX(e_6`J&x|(eZnM{@`SePrD?O9$12>_C>Rswm%u{JV za8z)SXqRh-Q)E}LneR{cXxDrf?QCG*Y5Uo(a(;2{aCLS6>0Dxu^HgQWCu-87Q|6f$ za%-s8?0#-NwI;aQV-iQ|y2tL0_e8AYi{Oy-m>m&L_4^$qT(yM^_Oq_H{($B;94VTs z$7tmK{ypxy-cjOe=ztfg&Zr`Jhs76d(m!IJ%8TT&>;$OLzOa>PADgOf$quHvNGHW{ zz|tSdSs^-b%s11!1e%}m&aIANu2-&3uDyXTB+hsb7pr=QeL2qGftSo}+3s8C z^#;shOC-J?L~86reuQ?rI)*vN7V##{O-+LFqqYw-fvEz$`D*GA`g8+bhO=?6!ggdW zF9@;18NbQD-W!C9t&K-xzCWU0`T9C*%YbWOQ=%ymO_T=!_BK8k}|a=52_JMhRo)o-S)s!uG#mQnBIFQ`Y* z1>*W(NT?|a!dl@g@<7wT9v;WKbQ=9VjiPU^U!E5@p|d-L8CFgsm5JR3ofUokjL51-$F1*W^e50#h@3MDhS#U4uLJ-{gm; zI8}wS^NKpHzNGt| z9V6BbEt4C|TY@bE$zpf*{H1Ym2yF!1jaNAG3nBDoermsz?u$ z6GKhKPr?6uTixy5e>mi#q0TsKD4%lPw~qv>zs?owuIQ-ZtjaWrUv0=&-HzQ~LX3XL z9#W6cxw&#mVlYuI;6A9FG{fzQxE(c=|A$HA7iqUhqPKN$qxg?-+&3{;6pq3As}H@4 z`=H6?mZS8Ur7VzRg9n3+*~6+1d>3716BjkZ^g;J4`0b_De}ln!i7Fp%17-L^tQGIz zH?=;L>U*I2e(JvAsO6YuyHb!;6ot5?&DJT-45%Q>dNKk*U5;7izFM}YY)>qsYiBUW zl+w)&&sIKRR0SlvNU#jODcJn`L%IL=!3izR_Ld`MtQ08{{xN=fH81f;1{Zimb z;JCN3_qOjhPsrKT>2S_2dTXT|Y1R)|7EH1oaI~<0rpD=xQx^TWqzg$=CLyv(@)%23 z%}C8&O++{=cuH&~ErLUki~3phuco|qm3kn*McbRJN98LTWomGQzk!eutQ5Q+ER78B zi11kY7G@?MO-q(+Z_U0{cbjW~itQGSF>%z`h-Ti_!@)P(vm4FZ2LnT|bODf3(IrrG$ zqCm621o)msdyjb9xd*$o?v^f_n|F^QSyK)3g9K=q6KMy1lijLnqngORXZ~PQfd{ojUiWnAYba6dDWypFF%QqC z+NpM`GE|C&(e~lrXnOLO)OX^mi^I9a>`w5Xl1 zAXqt|2~P0W_X$vmPxQ5imZwsnjGywa43rCW4~!1B0^58(6{2$Z^|~9{n}(UDc=Hsq zWb9^0G^FV|t1EGzxQ9$L%zVFq0T~QeRIXB`nC)-|sftXf$>4TAfs@P=%uz?d^QSd< z-s|XcY(4l7cHx$AN4eRYg$u!nus+iiN8d->vlOg*U_d%TcEe4qt^9+u1nJms#W~Uj z$pTUO1L=;`L#E+1I2=x4d*KU~D_2!UA=~F1=JJD(T6_(Bj-P;j`~h~sI`D9307+>N z)<$=%zdE4}?eW|xB+{OsjrjGege?1p+#2ZESE){8?l?*nt-8kj%3Z`7F~rPdLi9AC zF6*%FJ_UD0ZTN~Z0!N{)QVrXW@E>f71js&MB5Xje)<4)DC|?u@a3UzpL}d?yuyt{-DIFeP2dwY1n3b-q`!ex9%1af01Dv7nwmH%6UWsc*2*MN zfpFLeo9+953V0-hsl$O?QUV+CO0Eusr6JbR#6h z(Qhk&{jJ1Vwg`Q@0IyjLH>suIDQyKZco=BmV_@DC812oW5YX%9hcEaX>J!@Cf%cSI z^(wH1GfQ2NfnFY~cu5w(Ag`}{VgI8=r7n{|(R|5JfSE|eV0HdZy2S9R491Gz7Z-RR zH$#=eU)iR>MEbCmeNVOdfdTN{j1b~<6?_G(F{GvEFm*$J(=U`V^aG_c6a`(W`pg;W zol=F_5#F!ZRf&8rVZY`wypv`#Cqt!}x?)L25x*!Ju4|~!Je}6?wRCF~O4TYfl`9^C z`?bgqLkEk;J_vKki189%otfC&}Tfy{}UdZ*> zS>TI5l6R}(!~|6(p}$HAJz{1l4?#4Z=<8}Y=Ke(`E0vWfHY;>gRX%Ky2B{~=L9s}G z(Y@PHG0>gA92`qKRa3k>4JW;g`3J%a)gZAp+nVkW9xiw1&%m*y|Q^czFxAC3sCoi@!>Rnv76y?oqI=W<}r$ze>0&9a0aFD^kP7yBb;OMOV;_^bFOE zq0+^@U`f5A#o%*|T3RTd;eLSkVr#gL)C-hQ#e`i*CsZ@b#hO%ibv6GX=9(%y@E_BY zz8kv99+GCTt-SrTpTmcJRr$V3n!JU%#2AGLZX)$SdM-bsPfMer{%II`$ZWw??S>pp zC9^T&Tegp2;(k*qQmvGgau4=`cvLkcc$?V;zmQVlALUH8P})Y{M830M)kH2Y&kNUK z!}4|DL0u%hIwIT#tQNRQQnSSQOpKIGU1I(xy1=>ri1)0gWO@vAXT_i%h@tD^obtl` ztuMwY$4$Y=eoY;qe*{`oljg$k!KKr~y}&lUM%4y}W``Q$ADrb^sd_knuHYAIBNR?n zrF!@XbxdvphpPgqq%vPB22`iF*eY~0G)HVAz6*^J)8Xl%uf=au^?dm#Rfy zhm+j7@L(khu4diERKXpv1TK63aJTi$biK28bG>(nV3>4t{^`^@+q-MKZo0esx_K0j z;9cuW_ty4mgSWiz{GaLVtcg8f_#=Kx91~x$RK?VpB}SL%pVBd2i7vFfSD&ZH)0HK! zuX?~IOcE-EMj<1*l}f8^s^4w6Yuau)V{k+7YSKi*v#LZ`CuhL7D^}?`ie({Hi zu_b(|+e$x9YM$6LcD-pjpG!R!#`!mScQ`HE~ncdjb+D%2dS4tuZ>BLteDuPj4gRe!qt?y#XONJ z<9*{I)m){rI3xJklLpV6s;-6Z?O@)G49rJn{gtqmQSo`YA#ibPVA*JTp>J&%WE!XI zt6r+Pt{_hnHf^#~0NQo-?o!QSrfW}bJhSjSCAk@Gi4 ze|v`WxT}J*m5cJW@Lm^Oa<`D0sh~ZhWB5?Sj|meZ`$jKL3?!Ym+==WJGu2dDJx5c6 zAF2E*0b7=C`WAu5^ai@)6M_Chj(p?6Zxftp@|o2^yqAP7wRWO4fsU*cq9eHQ>9qj%ma0WV6_G zE|I&(PG?I1MVt@sAtcx;#g)nOL)2xTiYLXn;&5@Pctkvf`m93~M3*RucJaM<0gr7K zmtb3j|6jqQ?W8Z#c6l*S`QwzIZpJR-u0jL9K@-nULhlUb;c}trqxr1vs6Gxiqw-u| zb~^JHeGv|XDdF*oOI|NGk*mwi7>@d{-Mkro+DR@txFcxM>gQecmAZda$M_M86m##=}rCemb^FRj5!i&14+)JJ) zZvi$W$Z5(SNR-S}%Am6K4o;F+;RJb|ZiOqvpR9`=!2Qj6xI|T&%A)dfm*Hqp0**`F z*%wR)xE8iXtLq^>v}?EsnUsCtjm?46YLko5!*NQw(hBU^S;`93Pmd~pqkei)*^PTs zz@=@flvE6gU(QFBH5aWgU>@E{nSkeSVYX^U)v{T*@3%_Z|1cZ4k9mV1^Ut#IcOUsJ zaq~T8rDEu+$haR&PobBh-m;0_LGJ`+zmlF0XX?H{bxNZ;V}qyTF(^!DfkFK%=6gw) z2NC8oVYL%ZG0B}FymgXQkc)ZA_y3a&4dT>(7dkJ(hdzRBFE)~;a2)qZPQq=>T3&yf z%M@US^t~oUa^}bkisTv)y#mQWCNm>4lL~#CACdgGLfjnR>UBg>L|Ew_%wUKDiX_;O zSr}1ZkWU~!uf%)yy5Z?E^oXq(bb#KJ7#Wa|0OM8@}mw~vN2AxQApLK zs7{JJU6pnE3;cta_3HGXQ+};a2>t7Qt+}fXhK$A`F?EDrq{oJUSSgsKwNptx2FlPm zp^D04x&oL0vw-xbE49L1SdD5w?PWi~+57^16Sbcw;cl4sv9dwxDP>9@#1r!0@?_~w zxRkOiJfB_^{+DV(JCH+M1&)+0p++7AKJ{az4w8g>QD+n#(+>*ZJi0!7ScyN$*06!u z1QlZnWuv<&b?FGWG2caf5wn!=RQiO{U+IfA<5|fK7w0QVzi=a^tkQz|D*YFJDUS~O zr`vz-1n%h8M4wqwUa)Iy)rWmuE z8AJ_X)-z?oe&#yPO$qf(8Ryd=`VQt8$G{JnOO;fx&Y>SFf6BQ)zWa(7Lgf@kXlT$C z`YQy3E@4w}t-q|087v>v2R8>!3+B+iPz`Z`{54#g&Sn)=s6}F!)}G;`BDu6TWfr7F zrPM>UXqs*Sn=Um8$c~eR>k4anHix!_#!}@?hhw9o&qUmc*&nrBSBfqnzVvT)-7JbO ztYzQn+aK~$l)i3E?F3K!(8LMxnKg2J7#>e`5hqA--R10{X@1X6#s~9eH+xMq4x!_bbn@N8(X8!T{)yE}Y z@7cP$*E%=*+VV4t%}l8mu_*3HsoBYS`h{#hP`7j9WlywIC)(A$)FZg(mYBq~vA;tb z@S4}KheNfUyRG$|$2_gwCf_9LqAtxi!?@kFA^LLcFQyIZ@@#)*YWQ)ex3E+a*);VF z&aXbGcj>pPOVCfG{{uME9 z52=-5+y-rtVWl}f%5Ax)Z>(RWZh##13gJQWWw|X|SCy%X<;U=L)kRLvR1(K{SGzhn z@~m?U1{D@!WK&m2WGUmA`-$-mlP=pKR@F8)K_ry$7GNht?_uC-T?i*Dp->4~-mL za!mZdJUm>(s<8h?|Y>xUoWD3eAAd!rpFOS%vDswgX`S$Y?tiW z?y=spK3n*s?q^FAb9YOf==8`}CN6aWOB3} zjl&~)L~o7Bi#cQdq`3)3-(cA!O@!O=*YH`kkedjEv_0FB$`+>vx_W8XVEg+-Z1E9bkK?cXPeqKK+PYNe!f(R2{`9x5w;!jQm_42dC>)B^SvGJAu1|yLJ2xr6D%{5TuIc& zggZwvy-5ae-Ea5EeUgPx0k~-m+$!Tn(wh}&)fM-x{V_muMXHl z4q%?*!UyxTF;_h4;6bnb-7Mpg~qv*ihcji|H1$71FYxf zLwiOXY|3MXe~LWjews1DwRb^QTp0D(z zMuykYbCHjdh?R7L@=WPNWyn3KU%)BO1q-!5e!kk+=30R$#KqaWBd`#*9Rpck(ldwjpB^ZQGNOM{hu=`qhPk4Xz)e9aEmI}RAIxyWd zLk+LZQ!GD6^@^Smc_|{ooU1FtPt^40o--D9GW`C_sEVnVs6HZr>X>ST>Mx+2Z1{|< z6P>}4!McGH{t35Tg(eA`O$si8d~0S z&*epe*HK7yfL0y0wkoP=|It<5z1Q=_Ro1!J`?GLO_c89@m>DsRV`nDX zlg!0#MF$xx)^#sJ*Mi;s&7jO;&(x{x{~=SuhFiONFeoa&2e0Xu_^rj|%ug(Lp! z?#~Xl{g&NdbfBnI<|^;9xRyEd?00P*TUqyHxq<#`WT%+>F{fg8#@|dVTWm(+ z*ofomT1rSr4bBVf4gBK2>-G3Us31I@2NKL;A^TL(`}T&VohO6aH~)h8X^89#)(_S6lsXm zN}4X-7S;wnzy-aE@2K}W_=RWT!0+}H!AIWamR()pmikzz#U9aZF`Y3FvFwWI80Ct2 z9`|?bnus&n>CAcAEUH8Ig};TX!T7*?|1zP5Qotmr7ib2+ulOJC5AF?SDNornT9m89 zS-Of475Z0fq|BrGF#qFdezLy4G0))8RpqOzrZ6|~`!x(a+9Gj&s9DGbhrSNdEhN&Z zF^3ulrAIGuX=sKp33(LV1Jwh)0s{kO0`vU`eLinZ?<&tV_g;5X-x#rwdB#80e>P}L zd(7h_>PD@IUK{-?BEnD?9(@y~WN~|FWoShx4LJn=gCk%L9Ie!5F-2#Q4bVku4)u7^i9WQd7h#LT_P6sD!vs%z%bPEB^p@F_CGbYN6hz zGH_Lygs8ISaYoJ(h&mT@KJu*oFSfUIGjPOzH~5EC4cUf=apu+wcjpcv&)}SH z2h!?ZD6Qm>lq5frR*JKPTLC#BhLrF))pc!egVT5gHHy~8=eiY|8eEWSiMq@k@s$`W zRe^e>1+q1I$a!)nr5CRIm!(SLIJjAR{T2PUeBFGMZ>P7bce(dBU%EfWzrdH`8{?hp z_BngGFAJqKC!?z;HHp7%@#<@s4AIl$!cnbs1H%mi?>%R{zXsjXIqEFkgnFiorixSx z40p|G#w7SM?+mpKT@`mqnWA3^1=0h52CGP8=yvKkdC-qJNH{pIsfE<&)*1+zj^NN zo|6~>|2R`@Sw(E1sn(Kox72~;HkQ-c<;INI2}$ATZR(7`C|u{ZdEN*;!#A0q*b{If zAI{y<%aP5Z!-gEHYG9!^GoV6#<3EDQ@9^#nl##En{j@a=ll9~I$w+~@Z+RKj$9#>u z8EO`=hmz^uTq{-#ZvygtG&~z4eQx-+STDHL|6{-roGLsHT=On*FLF2X27LivG4BM| zHTa5-a8`7lwpA@ymDk7fM1L!_Z>18c5f-Cnjj>eXkd$4KU6d?am;4PySG-@PG_DXF zu}rA1I%=y&y5puqz2e?_>)1XyLjJ07W_}Pb2lK=$^nT5218-?7=q9G)~VpNQG6A1v;+?aF&!u-KUymdfo;PnY z^@uDP^T?9N?r?Sa@;Gy6(On@x-DM7OYF&kh`f>4b1-fA&#ZlV%Jn&<9HCsxZ#G4IW z;H-Vs%&Th3RxGAy)pMp+c&2nIv`F|G{2KV+PY(aLEf`U0blvyvWqxNQ(V_gOX=SQud1f51dCd0JJW+?jN%9?_ zQftLS!RCPu-a+0KzOZ+;x1+C_*9U#Ds({bip0(ji?w3EZ@}+s{ZOZPBS{L_Qnm2WO z#5yL;Q`&aQKP>dc+1Nc-y*qwcT&Z=K2hZ(%SY}umFKUqZmObGSLi5I3mO8eVN2%;t`HUpy^u~- z&llq=?+9A;`Neae=B>`1lKYpR<0^1*>ZkFaQ#Qt*ia(wFIqs9`8efaqsMv%%9@#Y^ zs1YZI_;99Xqi(tGj-j0SgyD{+1#-M*(Mj@M;jO%c8V|&Ov#P!3i|UK!rgk^KR+Ysr zgD39-@mOHEzpKyW+T`c}Kax}Sv38ejkFBhIOi@#tyJ$qU;~y;?_27R!VZLxX~Sf~nH7a2}P#9D_5wR{Kno#s_rW)Qwp$GEI&Hqse0i z(?j8a*_|1{RAhqiluV+g$-a;oeSg{eAN)|RJ9gME7F8*#TQsJSFJi3a+zG)OQW+X~ zC6;j!|3+VrGbH$8)=JN78nw1<>A&|tO#zV!=g-a*u~Hwf{_YkTAU)l(K^yic}5+ohsO)^lDW+I-P0QcLecG|yL^?}3A$COm zKyvV};C8_o@=I&NI~j~THLZ!!{H`gf$yCkb!bp(&NE?{Sw41WfztAt4R`hYW`6$YI zpeD_bC0K=O#U5inQq{vbN~~g+kIBPA0e`IG>ZX3-brGGSyzvLn>@G1sW1 zZKn(94r?visr)cxSU=^~Gl@_n8p1b}Q_64hRB4&mA=E~w6MW#`;gh{FUdCf{J#toc zUUBqs#5z(PA03oysJocAzn>Q_id=XDV^S~B78q`tb0Y>sr9{_{-X8UPSwHH#qb{J-v0+qNk!2bdKStLRThVc`Qkt@dwa1KSE$`a15^4$ zy+CGPVF!!iY;mS%Rrq}V}xR6iSCJYsRMGjn? zP)?{PG(vXRKw*Ng9GZve!XLsAp{vkFC@=6>qiho@LMNg;pLZ4S3y*Uufh#1$ZIL0D0Dij< zE?x>)v6aKMfznJwCHxB#B3oiUastVaeoCS|&^TTOt9K-j858Q+&%u@2fLHzoE_NIE zg|!DqcRC)q4@|8Bbh>|mJ@JNefT>Xgru2L8erJIj8xOVNKhQt71Ix7jH{dV<9b9 zx^i224S%4DNQ-}o%K9tnH#&nJ%zQvf;WDVizG!gkf?LO+!uk*yhPcAv2+FBswj2weS5(RjsS;w7Ce0OkX>AYZU*IHSKNM~ z%i&W()Jy6NlI14?fvbR(F$+{N3!3Az@PRuFM!`BLqt}C_xf|?(S7>1oa8Kf3TNIUJIBdYS8GF6yn_nMMZEpdubnUlC zH{oyMVs{uU334MD%)9WOop|Rq=)Q@&-!^Dx*8?fs1or7Fymlw=nE9TJCvwh(SM!cO4kf~@)P!? zHZb<8cvod?srZC=V4TFwPy@`D@O1;NJr^=@cEUsM;yP;$mJWi3QkE`;tu&nkRP1k{mQ`^qB($aottEc9q#uYstQ}bT zJ)+4CPXpU%A%3k+;Ec*dy9hry8hgqDv(5t(;|4|zVcA>++WrFQxdi09BzmzSbn+cA zDjTBRrSL8f##{z)_kVCiwt zpP7p-1ARxhGvDODz}AhxkqNiPi=HKp0OZqi!1E!_0JnhkpT{R1!w4bVnSJ>8D8|YO zjQ9h1>=5?lEJnd4+#Z7IorT)LdmND*d=Bx%^x&JwMzWlV$1P#N6WpJ;gnsu3C61Ux z%gzATSD`P67b%A$Z^k|114{VxM)Xu9deeeuN%exbOdHU0lG{ui6-niVxGH{E>6b=5 zgfQGI;+PPB$f|g}2L2*m%{6iM5GH&rJYM$OUls67MZCTQ&dSpGobTHHQmCpB7XEkV z;0oWy!go*M1bj0YpTv!Tq(^`ECf1{EgojS*F{FM$nChhNLt2)K|ChqO(zsQ{JMdeK zGddYZGZBBsqIIS5J>=0E*wdyMF%#e}UV;5c4}^R8CvdFifWI;nBjhdWD$g-aE@1ow zpgwPpT0|C(Z%e#89oGbspdP3TgNf~__iUX%;qznDB#AN7ikP;>9cFI#t9->bqIy(M%b?Ui(C7iP(m zLhnM+p-BP-{zoJExPtSLGP2`T5$cD?G@PdDtXj;?fw%lzWv~278Yu1&Tu5}9j+y4c zz*hf0|7HIHWXz86<$Ig@jv`C*jwjRm+Ot>qmz%GPHN+X(MmC5#6Z10Cucx(bbc6U( zOzki)?+&kG/=CRa}5;>+=UR72@a%Ia_(rM9>wxJy_kwnp`3rjn-|rMt58n187C zI5$r)0(+M3$rY%x`RBR>-EQ8XU4ksy&fGg@GW`c?PTk>~pvG1GG_E$w;W?Qez9jz* zT=^tabBBE?-o>6U>ygD#RrW}=<#9?)I*oa&ey49>Xkc7w2Xp(C zSCmfFBKiz-jTSNP-zdCXU+gBl2i>j=JR`q&+k(X_dKY{1JVV{X-8Eb@oj%7;&Y_N> zE{`MDz0`R|D64L392PUo(loYOtRrrx9g!OWNh{TH?|M6Ae<^Gp}V2gVtwh7yn^F)EIkMbD%@LTU5_^L+~#q!XEe%z36GJt_P|ejxS^Z4$Ns8yguo55Lj%{sP}{ zAo~@3C!sfQ?=-tAJM8v>jtQ>a?v9@3K=>ci|7br)4zk>|c%y%f=@4C47pAl;2r49x0iFqI@{VGIsMK!SDNc}XfHQFZ;tM4 zsTJKcRvi~--pt3SZ-OU107>!Lpq){~nrEE#F_gn4M0gE2Cvu%nl`l zUJEaTGeXJWaDP8&uIo*$(ZoXrqxsu8?2EGyIy6cq5Aa7j0f17;Nur#=2oM8-)Gm*V7W;Nn1OfnD&Dc;BdMZ#mfTG@VglHftRE<69iPlK$9y~i?!3!%z4@hZ zJ__ar!!LU+#{Tn2=*g(0(o;(H#rT4}TirvUIlIE?bEMlxfE7xWN=3a(>J=vy1(on6 zjD1weAbTsv9nThNkiQl(8sF(U3zG~VjI)eBqrr5|w7}HZxXy4?s3SBIhUypUI`gBs zfxs#I=vnmN(5px$6M$z}34TyK#%$BUiTfM44NWhl0NP5e@I)U+{6^ly9i$!GllzLV zuiLNtPq$mw9?A<7xEkyy`Vn=2oI`x=4^ywnyQD+n1E1)v;GN((?#^*#IvY7}z(ezq zy}LcTbRDv11yCahE4f_!3CaZh?fabJp6z0&dYhcZKGY2|3f9#Db%OQ=B?cZ2s2U*I zB5eI|^R8rA3-RuG+%Wbc9SF9;8!%38%QT$GGo%^PCvlUwO|*+cq@ShE5{0gol7Vpf60YKh;QX8}(&CrC8Qx!z>+9g^?yTw1+Z&aRE}2<;x+t`0dtr;h z+C^1M=en}I8DblCD3!yd2}RZxfgOXMgiH*X9Qs$tkHIN{BWx2a4Na0@(I4fuGXGNB zffsnB43h7O3w`^&cf4V~t-e@sulTFfURmJ(mRwI=rJpm+xjTHau9{xdrRtJ(hjj+s zf85vXF1jIglK2am&QP(9_oBOn>yo3ToiD}JS^R5}Sa`3nUtzxjw!of$Hh*EE(SFMP zk2giE?XSvo)&Fcx2v{8SKKM?k8umP_c_$!oA32Kge&N-!v~Tw^eRXUd5sUhueMGQ&}n`TJk>{ zzp@Pod=q#oBr4*+2r9g1@cn=fwk9^hItLNB>r4%XWCCd;aYWuJekpUms^9-YePayPl|{0*Mt=FwkKzk`8LDCLTY?uCx- zF1~ba@$KTLxx;czdDTBA=Pb+${1B7*D!oBwn*w+@!83BFv4**Q(AeneQJcfh1h=+U z0s5@HWu|T`aJN;E*RgXDc?A6q9hPI2_1M0lc?Rg zM~1nOukWNc8*Z6bS~eMP2_pb(8e*{PHq!U}zbWIzhMo)d{KEZk1-zUqf7+i-W{u0F z)3>A>(!^AI+PKu`sn2sau*PsEG@wGy&@tidt2?9b2l|C~Yy!K%=rnWy`s@#bfPB+G z=BxBEA{H6)U*z_#xZ)+wY(Vallx%sOdWBBp75Z!BHEWQM*niP-XW7@nMceAYIkv^7 z+qy(x0jlYKro;Usfj#RgldjCd(**|$H$jo)$*22Sx(^T1YQE2UXMbyXUpH-FdUnn# zx40lp1O+oi(7B@s)5kuwUr2u=6$@)z^a@1hWh(PYdZ8gvoW$nIku+x0!-0_l-R)hXTVOwY5xW!=%y&(eEcy6%plZ zDz_8k9Q6wh7s&Zb3KkT+&OVpEF?HUX7H^W@itoZwC#8Q|_|V$D)~1*zm3IU+Hys8( zn5K%{Hs3`x$DA0E6VyH6UP$e5XXrnst71xFm(sKDnZEnJah_>%9pQEWZ|%mfR)>2t zd}q9@I9!fZv-A(G8-gc7V>aE$7(xwWcpDQ9boD?clW~(f&sP z5bO)|1?5^|iPFMJxt8J?UO0+i7Ey^yH!0RvhCph(E5Y@h{}{QPdy05jCDVIbnx&=? z%sr#8apMg!hDH1gCI=p0!E!tI_x7Eo2TNxI%{ZlS*2mkK?b2Sq=hJ>mo$+?x>%Q;u zGdF#FnEmkMeBKcqT$`?YCSoAp&3WJXw{C%Xl|?m6}oDE9O=84$@GS8>&e824Ny_DGJQ=VLYDm{&O8So;p zpsjUwbZW!k+NO#VgyYgha<=}3H6duUAzApF&(z%tT^jW~W@Y4KTN=~O{fnc%_c!>g zou|JbB{|i1RlZEN)zOAdd@eYZcRh#1d1Nm`g7sLyU)Ea2E&4^eP~jKjX5%sgtt+Kb z66KQI9NBQQC(wDTbYRKW;*#R_#c@T2`FC;$eQJ=iH#;qR&c~%6iH~1rH!KYcdG`0#X)(21wrEiK3SUC!YyA}k64low{+9k?Lbv$kx+{F$70-a z!&gmQEp`%XOFzpapjxOBwWzD4fo{tl&rPN)5gU|R z(tqA+?lF$(B|QqC!H3zAJ?le*jAN;FQ!l?A@OD#5bb5n=a|K(Ab`^GWkx~frPr$k` zbA?)!ypijwbgnwQaHSkWqh=5-sU1`mdKd=LJyM?ZiJ8{xT<8C)x_Fc^18;u6ej=kzuL6GT)ugd!ss6 z`dIa0l|Q0~N4X+SB3~I4VhX%v8lzv#Ec91|N2KD56K{BGxg(HmIO`DY-#9Z}?Ywnm zRvknlg%DeBaphETS!>BK6XsN75i)$8+3r-dzlO43^m!6o$rzuuEBdC8 zE%-I>MDF5GQcmNX;n|VdPqKupFFx$fJfGXLM7Dq7?%>;}M37H)vw}*(hDElFz8KXs z`d%eIdTC@*#K*9Npp&*q=5ay+cOUGh5II_0=Nsdl>S^fd;#vxSfgfExJ%!#FiBguT zjfoj#BGnNt++Xn}x(GoqL>ev%K|*ch*jDp{xhG62)sfujAE=@3%cj8s7ok91^d7MT@lXM1%fF$k*$*hm7sw?149sK?c<9ws zO&VWcp}-Q1QfsRX@VANDTczg1CGYauj)-q^ZHwajKN6PIsdxVYV=kZcGQ#cd0p44E2Xr1=YoE;4+?4lYmlBfx?EW^8QGFeQ*`E7=3^LD9kcu z`sW}DIScQmBlb8MXEokG7SWo~h(%6^`ri!H$8U%?A4lx!J|Y-di2iBrSuu!jx5TR( zV#4Dv+h2p&&>mzEPNUYYBMWhzIE&X#;tzP(Z3G^CCEPLRAo?^5QK)Hn{eahae42>& z6NoWo?lIjErEP_{atrKNQ$mfwQ`3yNnj6taEqeSOapI?lQa(m(^D^4uA|ejw5!XDA zSjiPc#}g4zeTA|(F@uVQ8s$T3r7n=(NE`&py&iEBSj;wxMOm(_RR4p%(>+95d$No8 zE0hJwE1RgU^ck`%IMNf5wXBaw21A?$B6o$qgqTeN^NTtzLj3(QJh-}o?Kl$=(s785 zFC+HDadH&qBf#vUBu1QXKlH6Jh>9E~_7O8tju9yR4~U=+=MEm(H}Vt`uYvMTyoYap8&BZ_t!HU9$fL9|wF2C-4@iyV_Hc3K)lo`{oGULvhVGg29vH!dYf*93GU^2Nm=dXcilvg_ zySWdX*)z&CFd2$uN@)Vk;(1``-c<&`M`ebzODyuW^d)#-cyyji?ikM{j}zKI{h^tr zy4QF+_@?+O_$GU&dCzzsB6{ z-O~o~pIe?S&>akM&vs2igz&BBwEQL0-uT9P%a&m6WbGIb9@H{0#IjY_pIV?a78zg^ zFNjIfOKFmPL8a+e{4OD0_)d3)EdnC)Yx0JFhq4+Gz5CvueMUtgn$d$96~XgObPT(g zZOs&bpHxM8ERB&O-&hhMlH5zvP4gtf z8eyTiC@49sN$3mPmxjkoj_MVgh*M>^8V`+*CbC7HNelW1hFoyxhp|7youwv4)7j9y za*J^Oz5lAdAiEcZsw0Z)oM-FeFK z+#X|3D4krgt#EtZu1~?)LdK@dl9GvhVR)TNTY>_O8*Qtj?!^v_5rc|YAKcOn(kfuU zx^S)d$$f-puO>F-?o^`Qrt=$%TCj2IW2c_-)RK?AQ;tKD2YzHfD$W zLQ?gAaSg&F>rJV9Cv<_|BVN|;4t$`GacAa*Invlf%LpSd@61M_DMm;wjlXbT6QPm^ z8fERglRdvXs@n721Bqw4EP>T?!Z@>HyKSv2_~@J2$e4ijTNR#!vkkB+|f<;72m&KLh$vY=!^@ehR$^V;Q_Ki$i&pI<@!$27-0gPTP6 zvaPC7qqZ@uCF1FGf-6+oXo`3Ilz+_UHpr%PYN)fe5^s(Q>1J+7&QSMpdklqaqS(c; z-#J`tEtmR6d1J(-ewp2`Hws35TQDP^2*dSl*(u~(Fc_AR$^OPlqWq0|7P+w1N-epL z+)_R%IuN(~+8gHybVWEfI0aWNXN+T|{S>5)juguU@%jDoV)NfSbEri?H=3xCd_eH* zNK?oTVXWay$oG*mg6yQ%HeDopXwg3bTLdZyXofQE%`b>z!b;oeB0eqRUb2m z3KcKA@5`&0FIXMXTzNp~_$1wBrVSZLx8%F&3Yih)dvXxtq1!`$Y_Ot&GlASb?p!@Y z(RaoZ?0(~J={@JE>Z<9u?%-TUogM70N^B(sC3z+Di@TQm?SfXD*h79#R@XUp{0J5?kBznm&5F&PePeqPd0kk=pmpc$|HKyH{QSzQ5S;GcmLf`q_sHm9|(CD>S3h|)jf96;WGMSlye*^+79r@9gP__wCn<``FPSP7Vf4vs-mA>Bo-ov8kZ0UUOI#3#AU+hpz zo+9?VvG`?4u)R|0R{ImjRo6iGdiNnuV`Ut&Q8o1?=GzvxwN=o60pYf{wjS0s#tcJ_ zZV}&|_i+1}rc5pN4qKJ|z???}E{GluZ01Dei97@|$gAEO-m{)P-lM)yk(E^Wi2B%X zCoIVJeIS=nHoBOZPKVRUPznrZQ`wrFkNaLXR`(0vi2o8J`rd3K<~(Jhj#5R)(k4S^ z;I(>Ct*EBKk*o$#@$G$ceXG5cw~c3?`z!ZkS5HLKYdUR?_m1U`oA!~Vv8C;cD;C`; zU1q;#k8qCkobU}6e~=z9g~EChWibU^3aJ|WXK-WNG|ND9fH98$o{QwhfSKAAUP|}4 zDadK{<|?v>nZ49tXk^`yj-wRA5V`N}?T9Q;vi!SpUiJFlL677P)W2gfwq8LQ>1r5T zA7Fl9Yq2t051D{Fx<7T(__O@4{BE#}2)YXuM+QMF-Az!?w`u@vdZKz>X(y+MiN1XA zXzx3Z-ZRoY%-zf#uyUHSVovw}|BFPhAel*iP)K@azF?}#y zFux91X3aKsF}@UJz05b{A2EO6DPM(si2KxhT9488BVwL^jk*o|(^nXqw!;W=A?{BU zR12fv&fS>$M1KuUmvCr69b>Ao-*8)y(`~}#Lh%10+lU>)yu{e>+`c^iBLZ>R&H&HtVrO&=u}F=N;+ObmFta0z0p zsEH)#5f5WWF?Z>CjKF+D52XX>6Y#44iKqje-8A_e?rH{UllY%6$Vd1tdslfbyPx8k zS?Ap6yzWS_cX7r+_sVQ1>{aX!p*!BrJ;Ude8!DsKHbCHbR0Gf(hlp|X6`fOGtgmKT zYQARLVY*`B%n`y$;b;9~{ug+E#IP~UA~p{gy*8L*#!@`_3OJQr$T@xOf1sqxGZYS` zX`sIFhf(QN8ktQk0aEK8T}-cF3h8+E3gngd(Ai8Qb~4?Xeo4=zPt)VU=Lsa^$k9ZK za!yW{oziKsxo8#{aV*@5+Cm5PsHcm&igTVL$?@23a=dh0E=BCNG^hAs$smW%H3_bA zcVx4_A9VPCRyRR~Wg_{GisL5>2MtS2JIpQ2Ljz`7ml=i%d-PfQX&lA<#~frza2M!< ztG^TNp_@>1i5|$tC#iLzX+KF0RjleU<-Gh%9+-0nLdobl595Jg#H&=oK>hQ)HU)guob)gqrv}fqTG`0(kl4Kbinn0+1J|l!DI8R zbkB7yac%{EyuQ;8-$1VPKZczZ zV;u;DIBlL|-rm0L@&NTManj#WO(I$&?{VHRXZ) zle7h@SCym~po-snS??ZCOV4TdPWKp$Z6e%N+_Gz@s~5&=_3ihZ@10Ld|8WkJZ2nj3 zXdo_|`(r5<`0&-_NqwoYw{gFbF}^TO2y|IG=tX8Uw_BIX=W}D2f9P)fNqrJ0P+8#O z_J_Wc!EccV%j5kY5NjYYj!lpmjJ#gUy`^*VLBE;oO>{)ef+lA$4)!H=8%)}0hGu&) zt?ByoH11#UU9U55sE@cm#?jTO>BL*&Ewz%KMy&*fC>;pQ0;nzSkuovD7$>b2(|q3` zTK3M{-22R9@P6SL=Pq@x@O1SY##o?-XBm81i=DF^k6mqi`(+Q51kU;AsF6^GZK?c8 z9@oz@?m-;BhiQT-!`#MNU2kCH*+jmzZWoutzGsqHLGR$<%1XROtdRjiy}KGNUsPgn zpY5T}luhz|xi+5e(aK8sd)#jrGLC5P-=cQ+-zHM2YK)5-L=B*mn4K)gUZ5S+e%i&n zVBXPd(JL22nQJzE1Zr1fk*|#>F9Bb49%!{5ei4zt)le@pfh`s+{RMrWgW^f?5wv|0 zyp6zAT<`wNor^ia5l@zTg6o6J5-AXOVlnd!}bB*uS}X^^-m^)Nt3@iRP9{KCPZ&$NUeMi zd>5cTeFs>sR!~g%m#7I&!Zh_)xJwOIZ;|Vm8@x^!DbzRI)+<~pyOy~M&yQT@E~2X` zTqC|Z*MU6^#L7{q1wVk^+kD`-HWHouQ?Yl8QWv9>D)3lsue`*JZUgl5?m?UBkys+? zBvmXF9pX`Or1*yzB&A^1{8Xwch5&O@Pn-l*`2NZ&WfGnp2T@=Dh(_-^&pmZ8-^ozb z^xhyFtC)Kj7YZrtF?gj6CC4z4{BtgX3uZSn6_LHIO!XlqAzJnh(YvwaU1A1izAu$W z(0Mz7UJ`^zZ(HIT*@H4tR+{Y!8Uorid5M<6UtQSay>%uJ>iGXUA(W8^eww4K77 zt0L8!`i|;NaZtarLP>5NB7X(M2gGbyIJfY?wyy!FvI~&WOlHE!gC7qRqf{mL7q(p%@6S<^~;xqBA)B?(gJ*3u%`}g!7c7Jpo zl2@~z46cCLA%|@5kQwX^uQ3Dt8#t)_$<1^&7p-3**mWXPN-hO%^&jF#vNd?!9e^T! z3H1Pzf4y>FS}om`ud6$VOmZak65Q3Q&PKc`M3+iZ^ilc%Mp!d;%oKJ$Syh2gE4e~y@ zvrNk0$|mIk+QA}!@ZI%P1fw+z+PQv1Dk4!^tksMzz8~9xIfzkJJiUwBPcqbKx{zte z?dDu;O=PS$0Lz&Loq-9&EB{_#Y6d~8vcB9xnV=4VUdCehojt+*rvurFTt;3Yx07D7 zDOE~VLxdon9>#c>25baIr5*4b^^lD)$H@YVfI&u~1<8@?fNS04FGOFir0&7U=PC3V znZ%%mT!jf^>_1QgKO?7cidav6jZA2FdJ(+W=g?#5+H@Y} zz-as|wFEiRiBu?hb`F_ICXt)S!N9FwAr1kFdjtM=JAl32QRX^$lDLay&!IGlaTziR zUjvbw1f2JF=)Q;JYF&@)z#lm8kE%<3hx6`;x#J^60qbkIdKAtA8R`k-jFx~6c3ypo zj8USx5FSw7!S2|PQTQLoTwPZqfw@}hpM>*12CVpgAmh&h7e5T>_~HHv;C@_1Zs8QuJ2Dbpc)gS$KKJZ*#=$@_zb9n~#5CuH*MC4BPAiHt`EgFQG*Eld$^nL-lqW_^K zjv|Zo3eI9R;l6lQDS>X%ZM73}SU;mRB-H**^*uB@BmK?%RWbK9Ad^=QI`e%|rd4RI zrpV*;ME0o!H8;=S2idY#$h?d|nS0~YP?Y#4aPxC9iu(Y@#5dp^3_(rz!X097+3PWJ z2|2GDXmgS90j6&xKS9wDu2~rE$Ur);M|!% zd2^IX)9eXB9?V?EV5nO5jizXygF5&d^^*jy!zpCZ4wN0yht}5Aimb@rwF8R2CY}>f z*dv9U=@sO#p5QpmaE{}U2^@;+a4Pa$U6JX6s|?nuTE>#;1*XgZ)aVrC4DZ6#@des= zH}NB`U$#tPQ~_rGCi>oXuv{*pj0Hf`KSNG32xnXo*SH-|Js6JTSQ*Hf{f$<-hMKy8 z%;jVJp2O#RSpRQqzrKv`GZ!`88yZMY`p85LYu<`CfMq|0-lVw@W`l$A4&08t z*lH^{6zB2nW7KXIelUk^D@&7q(_Uf+O)pm|3Ms83DLst)!W ziZxo`Qw&g>w9cS3JY*}ykMT|z<{D|JQ z0%g(|2W@da6;KiZ`>T)rXgwb}%B?L9D$7k)Y0du8dw5-M_sSG}e1xqycNe%Rs zX2=28FXO3HE#rDbVZVX+PHQc#o;4jU8ns|5+o$F_Va3vls3pzUvKIDH3;j*wTUEpr zsd-CO!QLuh{~=hW>85FX7Bkw@ggx=tpAnzTsA~p&Q}bugxFb3oLsJsdmT6jEnhLOt z7SPsUuta0@5GVy`ym+rUFlhCpxh-h@vAnHFtZPEaw7m&sM~*^itDq#&D38Xb(MqMA zTNug!*d$)s-Zf5(w!VOK(b`-oV>L1Oru?WHe+&o5T2`DlV8>-=s-2^zJEo!qo%q!> zi3@OzW~0?Vp|vy~Sq^^l(Q`Bw8B&4xt2sir%huQUXxd&icMr{zQ$(w4&K@L|sCcI_ z)-=}$?WHlDAPRt^xbR6Ut@fkUCXch$TrM=dx^n+ejq_$eJp`1sqvme$`Bh#wnrDas z%d~a0x-yith}J6Fr*ifbi?XuVKT}p8+8Jspb6VSI@3s2Y{+BN=JC(BK(#M=SrX{0Q1-?MM4m z{;Tc1{H(M!%WI{4o$^oRM=F1>m9+f3&+C?-mv#iLB<0^~wX9u@+7Yzgp#A^67i~MO zUCNK6{nbiZzE1g7U4Gq`*QmDc=hA4$F5k=N+Wx$qwzamNc0{dZ%J;3+99?#_@^7`} F{|~Sy#YX@D literal 0 HcmV?d00001 diff --git a/doc/dsm/tutorials/quizconnect/quizconnect.conf b/doc/dsm/tutorials/quizconnect/quizconnect.conf new file mode 100644 index 00000000..16cde995 --- /dev/null +++ b/doc/dsm/tutorials/quizconnect/quizconnect.conf @@ -0,0 +1,31 @@ +diag_path=/usr/local/lib/sems/dsm/quizconnect/ +load_diags=quizconnect_caller,quizconnect_callee +register_apps=quizconnect_caller,quizconnect_callee +mod_path=/usr/local/lib/sems/dsm/ +preload_mods=mod_mysql +run_invite_event=yes +set_param_variables=yes +#run_system_dsms= + +# some configuration parameters +# - can be used with e.g. $config.prompt_path +prompt_path=/usr/local/lib/sems/dsm/quizconnect/prompts/ +db_url=mysql://user:pwd@127.0.0.1/quizconnect +outbound_domain=192.168.5.106 + +# -------------------------------------------------------- +# this paths work when running in the source tree: +#diag_path=etc/quizconnect/ +#load_diags=quizconnect_caller,quizconnect_callee +#register_apps=quizconnect_caller,quizconnect_callee +#mod_path=../apps/dsm/mods/lib/ +#preload_mods= +#run_invite_event=yes +#set_param_variables=yes +#run_system_dsms= + +#prompt_path=etc/quizconnect/ +#db_url=mysql://user:pwd@127.0.0.1/quizconnect +#outbound_domain=192.168.5.106 + + diff --git a/doc/dsm/tutorials/quizconnect/quizconnect_callee.dsm b/doc/dsm/tutorials/quizconnect/quizconnect_callee.dsm new file mode 100644 index 00000000..7d316164 --- /dev/null +++ b/doc/dsm/tutorials/quizconnect/quizconnect_callee.dsm @@ -0,0 +1,66 @@ +import(mod_dlg); +import(mod_conference); + +initial state START; +transition "got INVITE in callee leg" START - invite -> RUN_INVITE; +transition "session starts in callee leg" START - sessionStart / { + sets($prompt_name=$(config.prompt_path)/welcome_callee.wav) + playFile($prompt_name); +} -> ENTER_PIN; + +state RUN_INVITE + enter { + logAll(3); + }; + +state ENTER_PIN; + +transition "got cancel from A leg" (START, RUN_INVITE, ENTER_PIN) - event(#a_status==CANCEL) / stop(true) -> END; + +transition "pressed a number" ENTER_PIN - key(#key<10) / { + closePlaylist(false); + append($entered_pin, #key); +} -> TEST_PIN; +transition "pressed hash or start" ENTER_PIN - key / closePlaylist(false) -> TEST_PIN_FINAL; + +state TEST_PIN + enter { + repost(); + }; +transition "pin matches" TEST_PIN - test($pin==$entered_pin) -> MATCHING_PIN; +transition "pin doesn't match" TEST_PIN - test($pin!=$entered_pin) -> ENTER_PIN; + +state TEST_PIN_FINAL + enter { + repost(); + }; +transition "pin matches" TEST_PIN_FINAL - test($pin==$entered_pin) -> MATCHING_PIN; +transition "pin doesn't match" TEST_PIN_FINAL - test($pin!=$entered_pin) / { + clear($entered_pin); + sets($prompt_name=$(config.prompt_path)/sorry_pin_wrong.wav) + playFile($prompt_name); +} -> ENTER_PIN; + +state MATCHING_PIN + enter { + set($b_status=MATCHED); + set($b_ltag=@local_tag); + postEvent($a_ltag, b_status;b_ltag); + conference.join($a_ltag); + repost(); + }; +transition "ok, connected" MATCHING_PIN --> CONNECTED; + +state CONNECTED; + +transition "BYE received" CONNECTED - hangup / { + set($b_status=BYE); + postEvent($a_ltag, b_status); + stop(false); +} -> END; + +transition "BYE in other leg" CONNECTED - event(#a_status==BYE) / { + stop(true); +} -> END; + +state END; \ No newline at end of file diff --git a/doc/dsm/tutorials/quizconnect/quizconnect_caller.dsm b/doc/dsm/tutorials/quizconnect/quizconnect_caller.dsm new file mode 100644 index 00000000..69f51ac9 --- /dev/null +++ b/doc/dsm/tutorials/quizconnect/quizconnect_caller.dsm @@ -0,0 +1,150 @@ +import(mod_dlg); +import(mod_mysql); +import(mod_conference); + +initial state START; +transition "got INVITE in caller leg" START - invite -> RUN_INVITE; +transition "got session start in caller leg" START - sessionStart -> WAIT_CALLEE; + +state RUN_INVITE enter { + log(2, "got invite!"); + set($connect_session=0); + mysql.connect(); + throwOnError() + -- reply with 183 and parse SDP + dlg.acceptInvite(183, Session Progress); + -- set input and output of the session (we have $connect_session=0) + setInOutPlaylist(); + -- play some welcome message + sets($prompt_name=$(config.prompt_path)/welcome_caller.wav) + playFile($prompt_name); + + set($query_key=@user); + mysql.query(select callee, pin from callees where caller=$query_key); + repost(); +}; + +transition "error opening file" RUN_INVITE - exception; test(#type==file) / { + log(0, "error opening file!"); + dlg.reply(500, Server Internal Error); + stop(false); +} -> END; + +transition "DB error when connecting" RUN_INVITE - exception; test(#type==connection) / { + log(0, "error connecting to DB!"); + logParams(0); + dlg.reply(500, Server Internal Error); + stop(false); +} -> END; + +transition "query failed" RUN_INVITE - test($errno!="") / { + log(1, "query failed!"); + logParams(0); + dlg.reply(500, Server Internal Error); + stop(false); +} -> END; + +transition "no results" RUN_INVITE - test($db.rows==0) / { + log(3, "no results"); + dlg.reply(404, Not found); + stop(false); +} -> END; + +transition "we have results" RUN_INVITE - test($db.rows!=0) / set($callee_counter=0) -> CREATE_CALLEE_LEGS; + +state CREATE_CALLEE_LEGS + enter { + repost(); + }; + +transition "create one more" CREATE_CALLEE_LEGS - test($callee_counter<$db.rows) / { + -- this will fill $callee, $pin from current row + mysql.getResult($callee_counter); + + set(b_leg_caller=quizconnect); + set(b_leg_callee=$callee); + set(b_leg_domain=$config.outbound_domain); + set(b_leg_app=quizconnect_callee); + + -- pass $pin to other leg + set(b_leg_var.pin=$pin); + + -- our ltag + set(b_leg_var.a_ltag=@local_tag); + + dlg.dialout(b_leg); + + -- if that worked, we have the ID of the other leg in $b_leg_ltag + log(3, $b_leg_ltag); + + -- save it + sets($var_name=b_ltags[$(callee_counter)]); + setVar($var_name=$b_leg_ltag); + + -- reset for new call + clear($b_leg_ltag); + + inc(callee_counter); +} -> CREATE_CALLEE_LEGS; + +transition "done creating callee legs" CREATE_CALLEE_LEGS - test($callee_counter==$db.rows) -> WAIT_CALLEE; + +state WAIT_CALLEE; + +transition "CANCEL received" WAIT_CALLEE - hangup / { + dlg.reply(487, Request Terminated); + set($callee_counter=0); +} -> CANCEL_CALLEES; + +state CANCEL_CALLEES + enter { + repost(); + }; + +transition "one more to cancel" CANCEL_CALLEES - test($callee_counter<$db.rows) / { + sets($var_name=b_ltags[$(callee_counter)]); + var(cancel_ltag=$var_name); + set(a_status=CANCEL); + postEvent($cancel_ltag, a_status); + inc(callee_counter); +} -> CANCEL_CALLEES; + +transition "canceled all" CANCEL_CALLEES - test($callee_counter==$db.rows) / stop(false) -> END; + +transition "callee got it" WAIT_CALLEE - test(#b_status==MATCHED) / { + set($b_ltag=#b_ltag); + set($callee_counter=0); +} -> CANCEL_OTHER_CALLEES; + +state CANCEL_OTHER_CALLEES + enter { + repost(); + }; + +transition "one more to cancel" CANCEL_OTHER_CALLEES - test($callee_counter<$db.rows) / { + sets($var_name=b_ltags[$(callee_counter)]); + var(cancel_ltag=$var_name); + set(a_status=CANCEL); + postEvent($cancel_ltag, a_status); + inc(callee_counter); +} -> CANCEL_OTHER_CALLEES; + +transition "canceled all" CANCEL_OTHER_CALLEES - test($callee_counter==$db.rows) / { + closePlaylist(false); + dlg.acceptInvite(200, OK); + conference.join(@local_tag); +} -> CONNECTED; + +state CONNECTED; + +transition "BYE received" CONNECTED - hangup / { + set($a_status=BYE); + postEvent($b_ltag, a_status); + stop(false); +} -> END; + +transition "BYE in other leg" CONNECTED - event(#b_status==BYE) / { + stop(true); +} -> END; + +state END; diff --git a/doc/dsm/tutorials/quizconnect/quizconnect_tutorial.pdf b/doc/dsm/tutorials/quizconnect/quizconnect_tutorial.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e803d6e568828f1922700c91c8e63eb48ba4fe6d GIT binary patch literal 45134 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�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 HXsF;1q)1_d literal 0 HcmV?d00001 diff --git a/doc/dsm/tutorials/quizconnect/quizconnect_tutorial.txt b/doc/dsm/tutorials/quizconnect/quizconnect_tutorial.txt new file mode 100644 index 00000000..577c4bc7 --- /dev/null +++ b/doc/dsm/tutorials/quizconnect/quizconnect_tutorial.txt @@ -0,0 +1,660 @@ +Subject: +Re: SEMS DTMF +From: +Stefan Sayer +Date: +Tue, 24 Aug 2010 01:54:37 +0200 +To: +"David J." +CC: +sems mailing list + +Hi, + +ok, time to continue here a little bit. + +Stefan Sayer wrote: +> Hi, +> +> it's raining, so seems like its good time for a second part of this small DSM tutorial. +> +> Stefan Sayer wrote: +>> David J. wrote: +>>> Hi Stefan, +>>> +>>> I am trying to accomplish a script that parallel forks to many callers and then the one who enters the right DTMF code gets the call. +>>> +>>> In order to do this, I am guessing, I need b2b_mode which sends RINGING back to the Caller, does the forking plays a WAV/MP3 announcement to the Callee's and some sort of DTMF detection that captures the dialed digits and verify's them via script, database or whatever. +>> +>> actually, in order to be able to prompt the callees and collect the DTMF from them, you will have to establish separate calls to them - so that b2b mode is not really suitable. Once the right callee leg is identified, though, you can connect audio from the caller and the callee leg by joining the same conference room. You can interact between the two legs (e.g. when one hangs up) by sending events back and forth, the only thing you need is to know in both legs is the id of the other leg (local-tag). +>> +>> But, to start from the beginning. We will need two DSM scripts, one for the caller, one for the callee leg. We call that application quizconnect, and we tell dsm to load DSM application configurations by setting in dsm.conf: +>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +>> conf_dir=/usr/local/etc/sems/dsm/ +>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +>> +>> Then we can create /usr/local/etc/sems/dsm/quizconnect.conf which loads the scripts and sets the settings for the quizconnect application: +>> /usr/local/etc/sems/dsm/quizconnect.conf: +>> ----------------------------------- +>> diag_path=/usr/local/lib/sems/dsm/quizconnect/ +>> load_diags=quizconnect_caller,quizconnect_callee +>> register_apps=quizconnect_caller,quizconnect_callee +>> mod_path=/usr/local/lib/sems/dsm/ +>> preload_mods=mod_mysql +>> run_invite_event=yes +>> set_param_variables=yes +>> #run_system_dsms= +>> +>> # some configuration parameters +>> # - can be used with e.g. $config.prompt_path +>> prompt_path=/usr/local/lib/sems/dsm/quizconnect/prompts/ +>> ----------------------------------- +>> +>> We have preloaded the mysql module, which needs this to be initialized and read its configuration (which contains the DB connection, for example). We also set run_invite_event=yes in the dsm config, that way we get an 'invite' event into the DSM scripts. Now we create two scripts, /usr/local/lib/sems/dsm/quizconnect/quizconnect_caller.dsm and /usr/local/lib/sems/dsm/quizconnect/quizconnect_callee.dsm . +>> +>> When that invite event comes, we tell dsm to not connect the session (i.e. reply with 200 and connect audio), but to reply 183 (early media) and play a file: +>> +>> /usr/local/lib/sems/dsm/quizconnect/quizconnect_caller.dsm: +>> ------------------------------------------------------- +>> import(mod_dlg); +>> initial state START; +>> transition "got INVITE in caller leg" START - invite -> RUN_INVITE; +>> +> apparently no-one tried this, because here we obviously have a c&p typo: +> +> +> - > initial state RUN_INVITE enter { +> + > state RUN_INVITE enter { +> +> we should only have one initial state ('START'). +> +>> log(2, "got invite!"); +>> set($connect_session=0); +>> -- reply with 183 and parse SDP +>> dlg.acceptInvite(183, Session Progress); +>> -- set input and output of the session (we have $connect_session=0) +>> setInOutPlaylist(); +>> -- play some welcome message +>> sets($prompt_name=$(config.prompt_path)/welcome_caller.wav) +>> playFile($prompt_name); +>> }; +>> ------------------------------------------------------- +>> +>> To run this, in sems.conf set application=quizconnect_caller . +>> +>> so, that's the first part. in the next part, we will see how we can read callee numbers from mysql DB, create some callee legs, and interact between caller and callee legs. +> +> now, first we want to handle the error that the file does not exist or can not be opened. For this, we create a special transition, an "exception transition". Once an exception is thrown (by some internal function or a module function), the current sequence of statements is interrupted, and only exception transitions are executed; all other transitions are ignored. +> +> quizconnect_caller.dsm: +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> transition "error opening file" RUN_INVITE - exception / { +> dlg.reply(500, Server Internal Error); +> stop(false); +> } -> END; +> +> state END; +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> using 'stop', we stop execution of this session. stop() or stop(true) sends a BYE, which we don't want here, and stop(false) just ends the session after the current event is processed. +> +> Now, a little improvement in the development environment is helpful: when we update the DSM script, we don't want to have to restart SEMS every time. So, what we do is we load the xmlrpc2di module +> +> sems.conf: +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> load_plugins=wav;session_timer;uac_auth;dsm;monitoring;xmlrpc2di +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> and we tell xmlrpc2di to export the functions from dsm module directly +> +> xmlrpc2di.conf: +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> export_di=yes +> direct_export=dsm;monitoring +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> then we can in another shell write that few python lines to reload the quizconnect config: +> $ python +> Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15) +> [GCC 4.4.1] on linux2 +> Type "help", "copyright", "credits" or "license" for more information. +> >>> from xmlrpclib import * +> >>> s = ServerProxy('http://localhost:8090') +> >>> s.calls() +> 0 +> >>> s.loadConfig('/usr/local/etc/sems/dsm/quizconnect.conf', 'quizconnect') +> [200, 'OK'] +> +> this way we can replace existing applications (the new set of scripts are executed for new calls only), and also load other new applications into the running server. +> +> So, every time we change the DSM scripts, we can simply run s.loadConfig(...). +> +> The next task should be to get the list of possible destinations (callees) from the database; we will use a mysql DB. For this, we create a table in mysql +> +> CREATE TABLE callees ( +> id int(10) unsigned NOT NULL auto_increment, +> caller varchar(128) NOT NULL, +> callee varchar(128) NOT NULL, +> pin varchar(32) NOT NULL, +> PRIMARY KEY (id) +> ); +> +> and insert some rows: +> insert into callees (caller,callee,pin) values ("35","john","12345"); +> insert into callees (caller,callee,pin) values ("35","anna","54321"); +> +> so, if the number '35' will be called, john and anna will be connected, and john should enter 12345, while anna should enter 54321. +> +> In the script we use the mod_mysql module: +> +> quizconnect_caller.dsm: +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> import(mod_mysql); +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> we can set the DB connection in our quizconnect.conf (or pass it to mysql.connect() action): +> +> quizconnect.conf: +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> db_url=mysql://user:pwd@localhost/quizconnect +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> btw, as we have seen above with prompt_path, all configuration keys from our quizconnect.conf are accessible with $config.key, so we could also write mysql.connect($config.db_url). +> +> With the beginning of processing the call, we connect to the database. +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> state RUN_INVITE enter { +> log(2, "got invite!"); +> set($connect_session=0); +> myslq.connect(); +> -- reply with 183 and parse SDP +> dlg.acceptInvite(183, Session Progress); +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> mysql.connect doesn't throw an exception if the connection fails ('Access denied', 'server has gone away'), instead it sets an error code ($errno) which is the old style of reporting errors. To throw an exception in that case, we can use throwOnError() and also handle that exception: +> +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> state RUN_INVITE enter { +> log(2, "got invite!"); +> set($connect_session=0); +> mysql.connect(); +> throwOnError() +> -- reply with 183 and parse SDP +> dlg.acceptInvite(183, Session Progress); +> -- set input and output of the session (we have $connect_session=0) +> setInOutPlaylist(); +> -- play some welcome message +> sets($prompt_name=$(config.prompt_path)/welcome_caller.wav) +> playFile($prompt_name); +> }; +> +> transition "error opening file" RUN_INVITE - exception; test(#type==file) / { +> log(0, "error opening file!"); +> dlg.reply(500, Server Internal Error); +> stop(false); +> } -> END; +> +> transition "DB error" RUN_INVITE - exception; test(#type==connection) / { +> log(0, "error connecting to DB!"); +> logParams(0); +> dlg.reply(500, Server Internal Error); +> stop(false); +> } -> END; +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> When an exception is processed, the parameters (#paramname) are those of the exception - thus if we do logParams(0), we can see the actual error from DB in the log. +> +> Now we can select the callees from the database: +> +> set($query_key=@user); +> mysql.query(select callee, pin from callees where caller=$query_key); +> +> which should give us $errno and $db.rows. +> +> We will now apply a small trick: We want to process the results of the DB query, and make some transitions depending on whether that worked or not. By doing a "repost()", the current event is evaluated once more. so we can do: +> +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> ... +> set($query_key=@user); +> mysql.query(select callee, pin from callees where caller=$query_key); +> repost(); +> }; +> +> transition "query failed" RUN_INVITE - test($errno!="") / { +> log(1, "query failed!"); +> logParams(0); +> dlg.reply(500, Server Internal Error); +> stop(false); +> } -> END; +> +> transition "no results" RUN_INVITE - test($db.rows==0) / { +> log(3, "no results"); +> dlg.reply(404, Not found); +> stop(false); +> } -> END; +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> to handle query error and empty destination set. If we have some results, we go to a new state CREATE_CALLEE_LEGS: +> +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> transition "we have results" RUN_INVITE - test($db.rows!=0) / set($callee_counter=0) -> CREATE_CALLEE_LEGS; +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> We will actually loop a few times into that state, for every row that we get from the database - thus we do repost() every time we enter the state, to make sure we don't stay there (its a 'transitional state'): +> +> +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> state CREATE_CALLEE_LEGS +> enter { +> repost(); +> }; +> +> transition "create one more" CREATE_CALLEE_LEGS - test($callee_counter<$db.rows) / { +> -- this will fill $callee, $pin from current row +> mysql.getResult($callee_counter); +> +> set(b_leg_caller=quizconnect); +> set(b_leg_callee=$callee); +> set(b_leg_domain=sip.domain.net); +> set(b_leg_app=quizconnect_callee); +> +> -- pass $pin to other leg +> set(b_leg_var.pin=$pin); +> +> dlg.dialout(b_leg); +> +> -- if that worked, we have the ID of the other leg in $b_leg_ltag +> log(3, $b_leg_ltag); +First, here a maybe not so obvious fix (but one gets it by reading the ERROR logs carefully): +if we are looping several times through this, $b_leg_ltag is still set, so dlg.dialout will try to create another call with the same local tag, which fails (error message is something like it can not be added to session container). so we need to add here: + -- reset for new call + clear($b_leg_ltag); + + +> +> inc(callee_counter); +> } -> CREATE_CALLEE_LEGS; +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> We use the dlg.dialout function to create an entirely new call, which will execute the quizconnect_callee application, and will be from quizconnect to callee@sip.domain.net. We also pass the pin to the other leg, this variable can be accessed as $pin in the other script. +> +> When all callee legs are created, we go to a new state. Here we also handle the BYE in the caller leg, at least we stop our own call: +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> transition "done creating callee legs" CREATE_CALLEE_LEGS - test($callee_counter==$db.rows) -> WAIT_CALLEE; +> +> state WAIT_CALLEE; +> +> transition "BYE received" WAIT_CALLEE - hangup / stop -> END; +> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> +> So, that's for the second part of that tutorial. In the third part, we are hopefully finally going to see how to interact between the call legs, and how to connect the legs into the same conference. Some hints: +> - postEvent() can post events with variables between DSM call legs +> - mod_conference is used to join audio of two calls to a conference +> + + +But now, if we look at in which state where the caller session actually is, we will see that after all that it actually is in the START state. Strange, why does this happen? The reason is that there's one event run for processing the INVITE message, the 'invite' event, and then, for the sessionStart event (which is executed because we do dlg.acceptInvite()) the DSM starts again at the initial state. So we need to add another transition to go to the right place: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +transition "got session start in caller leg" START - sessionStart -> WAIT_CALLEE; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If we try canceling the call, we see that there's another bugfix needed: "stop(true)" does not work here, because we have not yet really accepted the call (so bye() won't work) - to the CANCEL we should reply "487 Request Terminated": + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +transition "CANCEL received" WAIT_CALLEE - hangup / { + dlg.reply(487, Request Terminated); + stop(false); +} -> END; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +But, when the caller hangs up, we need to tell the callee legs to tear down. So, first we need to save the ltags of the callee legs, (using some variable names trickery) into $b_ltags[0] .. $b_ltags[n]: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + -- if that worked, we have the ID of the other leg in $b_leg_ltag + log(3, $b_leg_ltag); + + -- save it + sets($var_name=b_ltags[$(callee_counter)]); + setVar($var_name=$b_leg_ltag); + + -- reset for new call + clear($b_leg_ltag); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In the case that the A leg is canceled, we send an event to the B legs, looping the same way as we did with creating the calls: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +state WAIT_CALLEE; + +transition "CANCEL received" WAIT_CALLEE - hangup / { + dlg.reply(487, Request Terminated); + set($callee_counter=0); +} -> CANCEL_CALLEES; + +state CANCEL_CALLEES + enter { + repost(); + }; + +transition "one more to cancel" CANCEL_CALLEES - test($callee_counter<$db.rows) / { + sets($var_name=b_ltags[$(callee_counter)]); + var(cancel_ltag=$var_name); + set(a_status=CANCEL); + postEvent($cancel_ltag, a_status); + inc(callee_counter); +} -> CANCEL_CALLEES; + +transition "canceled all" CANCEL_CALLEES - test($callee_counter==$db.rows) / stop(false) -> END; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Now it's time to create the script for the callee legs. For the beginning, this will only play a prompt, and end the call if an event with a_status==CANCEL is received: + +quizconnect_callee.dsm: +-------------------------------------------------------- +import(mod_dlg); + +initial state START; +transition "got INVITE in callee leg" START - invite -> RUN_INVITE; +transition "session starts in callee leg" START - sessionStart / { + sets($prompt_name=$(config.prompt_path)/welcome_callee.wav) + playFile($prompt_name); +} -> ENTER_PIN; + +state RUN_INVITE + enter { + logAll(3); + }; + +state ENTER_PIN; + +transition "got cancel from A leg" ENTER_PIN - event(#a_status==CANCEL) / stop(true) -> END; + +state END; +-------------------------------------------------------- + +Time to try that out! I am actually replacing the hard-coded outbound domain with a config variable: + +quizconnect_caller.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + set(b_leg_callee=$callee); + set(b_leg_domain=$config.outbound_domain); + set(b_leg_app=quizconnect_callee); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +so that I can set the outbound domain in quizconnect.conf: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +db_url=mysql://user:pwd@127.0.0.1/quizconnect +outbound_domain=192.168.5.106:5080 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +and for testing, for the moment I'll start a sipp uas responder: +$ sipp -sn uas -i 192.168.5.106 -mi 192.168.5.106 -p 5080 + +If I cancel the test call, I can see the two calls in sipp, which were in after ACK, receive BYEs. Nice! + +So, now it would be nice to check what's actually going on with the calls, in which state they are etc, without always ahving to scroll through countless log lines. Fortunately, the 'monitoring' module helps, because if it is loaded, the core saves information about all running calls to the monitoring in-memory database, and if we enable two features in + +dsm.conf: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +monitoring_full_stategraph=yes +monitoring_full_transitions=yes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +DSM also saves the states that were visited and the transitions to monitoring. Lets check it out from the python console over xmlrpc (that's why we have set direct_export=dsm;monitoring in xmlrpc2di.conf): +------------------------------------------------------- +>>> s.list() +['24ECAEFD-4C72F33D000438F1-B6843B70', '0FA6BCB2-4C72F33D0004E577-B6843B70', '59FA4B10-4C72F33D0003C671-B6944B70'] +>>> s.get(s.list()[0]) +[{'from': '', 'ruri': 'sip:john@192.168.5.106:5080', 'app': 'quizconnect_callee', 'to': '', 'dsm_state': 'ENTER_PIN', 'dsm_stategraph': [0, 'quizconnect_callee/START', '> got INVITE in callee leg >', 'quizconnect_callee/RUN_INVITE', 'quizconnect_callee/START', '> session starts in callee leg >', 'quizconnect_callee/ENTER_PIN'], 'dsm_diag': 'quizconnect_callee', 'dir': 'out'}] +>>> s.get(s.list()[1]) +[{'from': '', 'ruri': 'sip:anna@192.168.5.106:5080', 'app': 'quizconnect_callee', 'to': '', 'dsm_state': 'ENTER_PIN', 'dsm_stategraph': [0, 'quizconnect_callee/START', '> got INVITE in callee leg >', 'quizconnect_callee/RUN_INVITE', 'quizconnect_callee/START', '> session starts in callee leg >', 'quizconnect_callee/ENTER_PIN'], 'dsm_diag': 'quizconnect_callee', 'dir': 'out'}] +>>> s.get(s.list()[2]) +[{'from': '"bee" ', 'ruri': 'sip:35@192.168.5.106', 'app': 'quizconnect_caller', 'to': '', 'dsm_state': 'WAIT_CALLEE', 'dsm_stategraph': [0, 'quizconnect_caller/START', '> got INVITE in caller leg >', 'quizconnect_caller/RUN_INVITE', '> we have results >', 'quizconnect_caller/CREATE_CALLEE_LEGS', '> create one more >', 'quizconnect_caller/CREATE_CALLEE_LEGS', '> create one more >', 'quizconnect_caller/CREATE_CALLEE_LEGS', '> done creating callee legs >', 'quizconnect_caller/WAIT_CALLEE', 'quizconnect_caller/START', '> got INVITE in caller leg >', 'quizconnect_caller/WAIT_CALLEE'], 'dsm_diag': 'quizconnect_caller', 'dir': 'in'}] +>>> +------------------------------------------------------- + +so we see two calls running the quizconnect_callee diagram in ENTER_PIN state, and one running the quizconnect_caller in WAIT_CALLEE. + +two simple scripts are also useful: +$ ./sems-sessions-states.py +calls: 3 +call id state +6ABC60BB-4C72F4BF0005C7FD-B6A45B70 WAIT_CALLEE +19D97994-4C72F4BF0006A862-B65D5B70 ENTER_PIN +3EC2A856-4C72F4BF00062B82-B65D5B70 ENTER_PIN +$ ./sems-get-session.py 6ABC60BB-4C72F4BF0005C7FD-B6A45B70 +calls: 3 +attrib val +from "bee" +ruri sip:35@192.168.5.106 +app quizconnect_caller +to +dsm_state WAIT_CALLEE +dsm_stategraph [0, 'quizconnect_caller/START', '> got INVITE in caller leg >', 'quizconnect_caller/RUN_INVITE', '> we have results >', 'quizconnect_caller/CREATE_CALLEE_LEGS', '> create one more >', 'quizconnect_caller/CREATE_CALLEE_LEGS', '> create one more >', 'quizconnect_caller/CREATE_CALLEE_LEGS', '> done creating callee legs >', 'quizconnect_caller/WAIT_CALLEE', 'quizconnect_caller/START', '> got INVITE in caller leg >', 'quizconnect_caller/WAIT_CALLEE'] +dsm_diag quizconnect_caller +dir in + + +------------------------------------------------------- +$ cat sems-sessions-states.py +#!/usr/bin/python +from xmlrpclib import * +s = ServerProxy("http://127.0.0.1:8090") +print "calls: %d" % s.calls() +calls_states = s.getAttributeActive("dsm_state") +print "call id state" +for state in calls_states: + print state[0] + " " + state[1] +------------------------------------------------------- + + +------------------------------------------------------- +$ cat sems-get-session.py +#!/usr/bin/python +import sys +from xmlrpclib import * + +if len(sys.argv) != 2: + print "usage: %s " % sys.argv[0] + sys.exit(1) + +s = ServerProxy("http://127.0.0.1:8090") +print "calls: %d" % s.calls() +calls_states = s.get(sys.argv[1]) +if len(calls_states)==0: + print "call not found" + sys.exit(1) +print "attrib val" +for state in calls_states[0].items(): + print str(state[0]).ljust(20) + str(state[1]) +------------------------------------------------------- + +so, what is next? entering the PIN number, of course. that should be simple: + +quizconnect_callee.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +state ENTER_PIN; + +transition "got cancel from A leg" ENTER_PIN - event(#a_status==CANCEL) / stop(true) -> END; + +transition "pressed a number" ENTER_PIN - key(#key<10) / append($entered_pin, #key) -> TEST_PIN; +transition "pressed hash or start" ENTER_PIN - key -> TEST_PIN_FINAL; + +state TEST_PIN + enter { + repost(); + }; +transition "pin matches" TEST_PIN - test($pin==$entered_pin) -> MATCHING_PIN; +transition "pin doesn't match" TEST_PIN - test($pin!=$entered_pin) -> ENTER_PIN; + +state TEST_PIN_FINAL + enter { + repost(); + }; +transition "pin matches" TEST_PIN_FINAL - test($pin==$entered_pin) -> MATCHING_PIN; +transition "pin doesn't match" TEST_PIN_FINAL - test($pin!=$entered_pin) / { + clear($entered_pin); + sets($prompt_name=$(config.prompt_path)/sorry_pin_wrong.wav) + playFile($prompt_name); +} -> ENTER_PIN; + +state MATCHING_PIN; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +That works, but we want to break the prompt when the user enters a key, so we add closePlaylist(false), which stops playback of currently playing items in the playlist, but doesn't generate an event: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +transition "pressed a number" ENTER_PIN - key(#key<10) / { + closePlaylist(false); + append($entered_pin, #key); +} -> TEST_PIN; +transition "pressed hash or start" ENTER_PIN - key / closePlaylist(false) -> TEST_PIN_FINAL; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Now I realize we need to pass the id of the caller leg to the callee leg as well, so we can post back events: + +quizconnect_caller.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + -- pass $pin to other leg + set(b_leg_var.pin=$pin); + + -- our ltag + set(b_leg_var.a_ltag=@local_tag); + + dlg.dialout(b_leg); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +in the MATCHING_PIN state, we let the A leg know that the callee found the solution, and we connect to the conference room named with the ltag of the caller leg: + +quizconnect_callee.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +state MATCHING_PIN + enter { + set($b_status=MATCHED); + postEvent($a_ltag, b_status); + conference.join($a_ltag); + repost(); + }; +transition "ok, connected" MATCHING_PIN --> CONNECTED; + +state CONNECTED; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +in the caller leg, we have to do three things if one of the callees knows the right pin: +1. cancel all the other calls +2. reply to caller with 200 OK +3. join the conference room named with the @local_tag + +quizconnect_caller.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +transition "callee got it" WAIT_CALLEE - test(#b_status==MATCHED) / set($callee_counter=0) -> CANCEL_OTHER_CALLEES; + +state CANCEL_OTHER_CALLEES + enter { + repost(); + }; + +transition "one more to cancel" CANCEL_OTHER_CALLEES - test($callee_counter<$db.rows) / { + sets($var_name=b_ltags[$(callee_counter)]); + var(cancel_ltag=$var_name); + set(a_status=CANCEL); + postEvent($cancel_ltag, a_status); + inc(callee_counter); +} -> CANCEL_OTHER_CALLEES; + +transition "canceled all" CANCEL_OTHER_CALLEES - test($callee_counter==$db.rows) / { + closePlaylist(false); + dlg.acceptInvite(200, OK); + conference.join(@local_tag); +} -> CONNECTED; + +state CONNECTED; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +what's left now is two things only: handling BYE in CONNECTED state for both sides, and handling CANCEL when the callee leg rings. For the first one, we need the ltag of the right callee leg, so we'll do this: + +quizconnect_callee.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +state MATCHING_PIN + enter { + set($b_status=MATCHED); + set($b_ltag=@local_tag); + postEvent($a_ltag, b_status;b_ltag); +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +and save it: + +quizconnect_caller.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +transition "callee got it" WAIT_CALLEE - test(#b_status==MATCHED) / { + set($b_ltag=#b_ltag); + set($callee_counter=0); +} -> CANCEL_OTHER_CALLEES; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +so we can use it: +quizconnect_caller.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +state CONNECTED; + +transition "BYE received" CONNECTED - hangup / { + set($a_status=BYE); + postEvent($b_ltag, a_status); + stop(false); +} -> END; + +transition "BYE in other leg" CONNECTED - event(#b_status==BYE) / { + stop(true); +} -> END; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +and vice versa: + +quizconnect_callee.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +state CONNECTED; + +transition "BYE received" CONNECTED - hangup / { + set($b_status=BYE); + postEvent($a_ltag, b_status); + stop(false); +} -> END; + +transition "BYE in other leg" CONNECTED - event(#a_status==BYE) / { + stop(true); +} -> END; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +For the second issue, we will simply add the START and RUN_INVITE states to the "got cancel from A leg" transition: + +quizconnect_callee.dsm: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +transition "got cancel from A leg" (START, RUN_INVITE, ENTER_PIN) - event(#a_status==CANCEL) / stop(true) -> END; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Attached you find the two scripts, which will (with this mail) be added soon to git in doc/dsm/tutorials. + +Stefan + + +> Attached is the full script that we have so far. I hope you have some fun trying it out, and I would be happy about some feedback. +> +> Best Regards +> Stefan +> + + +-- +Stefan Sayer +VoIP Services Consulting and Development + +Warschauer Str. 24 +10243 Berlin + +tel:+491621366449 +sip:sayer@iptel.org +email/xmpp:stefan.sayer@gmail.com + +