From d0858f21fb9e52364b4192a1c6bc77d60d781c23 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 16 Dec 2019 01:03:47 +0100 Subject: [PATCH] Added possibility to specify devices that cannot be discovered automatically. This implements #445 --- CHANGELOG | 7 + CMakeLists.txt | 2 +- debian/changelog | 9 +- devices/plutosdr/deviceplutosdrparams.cpp | 10 +- devices/plutosdr/deviceplutosdrparams.h | 1 + devices/plutosdr/deviceplutosdrscan.cpp | 12 -- doc/img/MainWindow_user_args.png | Bin 47328 -> 59540 bytes doc/img/MainWindow_user_args.xcf | Bin 165188 -> 197876 bytes fcdlib/fcdtraits.cpp | 4 +- .../channelrx/chanalyzer/chanalyzerplugin.cpp | 3 +- plugins/channelrx/demodam/amdemodplugin.cpp | 3 +- plugins/channelrx/demodatv/atvdemodplugin.cpp | 3 +- plugins/channelrx/demodbfm/bfmplugin.cpp | 3 +- .../channelrx/demoddatv/datvdemodplugin.cpp | 3 +- plugins/channelrx/demoddsd/dsddemodplugin.cpp | 3 +- .../channelrx/demodfreedv/freedvplugin.cpp | 3 +- plugins/channelrx/demodlora/loraplugin.cpp | 3 +- plugins/channelrx/demodnfm/nfmplugin.cpp | 3 +- plugins/channelrx/demodssb/ssbplugin.cpp | 3 +- plugins/channelrx/demodwfm/wfmplugin.cpp | 3 +- .../freqtracker/freqtrackerplugin.cpp | 3 +- .../channelrx/localsink/localsinkplugin.cpp | 3 +- .../channelrx/remotesink/remotesinkplugin.cpp | 3 +- plugins/channelrx/udpsink/udpsinkplugin.cpp | 3 +- .../channeltx/filesource/filesourceplugin.cpp | 3 +- .../localsource/localsourceplugin.cpp | 3 +- plugins/channeltx/modam/ammodplugin.cpp | 3 +- plugins/channeltx/modatv/atvmodplugin.cpp | 3 +- .../channeltx/modfreedv/freedvmodplugin.cpp | 3 +- plugins/channeltx/modnfm/nfmmodplugin.cpp | 3 +- plugins/channeltx/modssb/ssbmodplugin.cpp | 3 +- plugins/channeltx/modwfm/wfmmodplugin.cpp | 3 +- .../remotesource/remotesourceplugin.cpp | 3 +- .../channeltx/udpsource/udpsourceplugin.cpp | 3 +- plugins/samplemimo/testmi/testmiplugin.cpp | 3 +- .../bladerf1output/bladerf1outputplugin.cpp | 3 +- .../bladerf2output/bladerf2outputplugin.cpp | 3 +- .../samplesink/filesink/filesinkplugin.cpp | 3 +- .../hackrfoutput/hackrfoutputplugin.cpp | 3 +- .../limesdroutput/limesdroutputplugin.cpp | 3 +- .../localoutput/localoutputplugin.cpp | 3 +- .../plutosdroutput/plutosdroutput.cpp | 28 +++- .../plutosdroutput/plutosdroutputplugin.cpp | 3 +- .../plutosdroutput/plutosdroutputplugin.h | 2 + plugins/samplesink/plutosdroutput/readme.md | 2 + .../remoteoutput/remoteoutputplugin.cpp | 3 +- .../soapysdroutput/soapysdroutputplugin.cpp | 3 +- .../samplesink/testsink/testsinkplugin.cpp | 3 +- .../xtrxoutput/xtrxoutputplugin.cpp | 3 +- plugins/samplesource/airspy/airspyplugin.cpp | 3 +- .../samplesource/airspyhf/airspyhfplugin.cpp | 3 +- .../bladerf1input/bladerf1inputplugin.cpp | 3 +- .../bladerf2input/bladerf2inputplugin.cpp | 3 +- plugins/samplesource/fcdpro/fcdproplugin.cpp | 1 + .../fcdproplus/fcdproplusplugin.cpp | 1 + .../fileinput/fileinputplugin.cpp | 3 +- .../hackrfinput/hackrfinputplugin.cpp | 3 +- .../samplesource/kiwisdr/kiwisdrplugin.cpp | 3 +- .../limesdrinput/limesdrinputplugin.cpp | 3 +- .../localinput/localinputplugin.cpp | 3 +- .../samplesource/perseus/perseusplugin.cpp | 3 +- .../plutosdrinput/plutosdrinput.cpp | 28 +++- .../plutosdrinput/plutosdrinputplugin.cpp | 3 +- .../plutosdrinput/plutosdrinputplugin.h | 2 + plugins/samplesource/plutosdrinput/readme.md | 2 + .../remoteinput/remoteinputplugin.cpp | 3 +- plugins/samplesource/rtlsdr/rtlsdrplugin.cpp | 3 +- .../samplesource/sdrplay/sdrplayplugin.cpp | 3 +- .../soapysdrinput/soapysdrinputplugin.cpp | 3 +- .../testsource/testsourceplugin.cpp | 3 +- .../xtrxinput/xtrxinputplugin.cpp | 3 +- sdrbase/device/deviceenumerator.cpp | 150 ++++++++++++++++++ sdrbase/device/deviceenumerator.h | 7 + sdrbase/plugin/pluginapi.h | 4 +- sdrbase/plugin/plugininterface.h | 17 ++ sdrbase/plugin/pluginmanager.cpp | 32 +++- sdrbase/plugin/pluginmanager.h | 2 + sdrgui/deviceuserargs.md | 33 ++-- sdrgui/gui/deviceuserargsdialog.ui | 9 ++ sdrgui/gui/pluginsdialog.cpp | 20 ++- sdrgui/mainwindow.cpp | 3 +- 81 files changed, 448 insertions(+), 102 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b3850b025..569cc68d5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,10 @@ +sdrangel (4.12.3-1) unstable; urgency=medium + + * Added possibility to specify devices that cannot be discovered automatically + * Server: fixed sink device set creation and added MIMO creation + + -- Edouard Griffiths, F4EXB Sun, 15 Dec 2019 23:14:22 +0100 + sdrangel (4.12.2-1) unstable; urgency=medium * Refactoring of Rx channels code with better separation of concerns diff --git a/CMakeLists.txt b/CMakeLists.txt index 37da6ab1d..e5294b619 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ set(CMAKE_CXX_EXTENSIONS OFF) # configure version set(sdrangel_VERSION_MAJOR "4") set(sdrangel_VERSION_MINOR "12") -set(sdrangel_VERSION_PATCH "2") +set(sdrangel_VERSION_PATCH "3") set(sdrangel_VERSION_SUFFIX "") # SDRAngel cmake options diff --git a/debian/changelog b/debian/changelog index b3850b025..dcca21566 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +sdrangel (4.12.3-1) unstable; urgency=medium + + * Added possibility to specify devices that cannot be discovered automatically + * Server: fixed sink device set creation and added MIMO creation + + -- Edouard Griffiths, F4EXB Sun, 15 Dec 2019 23:14:22 +0100 + sdrangel (4.12.2-1) unstable; urgency=medium * Refactoring of Rx channels code with better separation of concerns @@ -6,7 +13,7 @@ sdrangel (4.12.2-1) unstable; urgency=medium * Remote Sink and Remote Output: refactoring of UDP blocks handling * NFMDemod: fixed setSelectedCtcssIndex method - -- Edouard Griffiths, F4EXB Fri, 14 Dec 2019 06:14:22 +0100 + -- Edouard Griffiths, F4EXB Sat, 14 Dec 2019 06:14:22 +0100 sdrangel (4.12.1-1) unstable; urgency=medium diff --git a/devices/plutosdr/deviceplutosdrparams.cpp b/devices/plutosdr/deviceplutosdrparams.cpp index 22cab0667..fc3f67249 100644 --- a/devices/plutosdr/deviceplutosdrparams.cpp +++ b/devices/plutosdr/deviceplutosdrparams.cpp @@ -31,11 +31,17 @@ DevicePlutoSDRParams::~DevicePlutoSDRParams() bool DevicePlutoSDRParams::open(const std::string& serial) { m_box = DevicePlutoSDR::instance().getDeviceFromSerial(serial); - return m_box != 0; + return m_box != nullptr; +} + +bool DevicePlutoSDRParams::openURI(const std::string& uri) +{ + m_box = DevicePlutoSDR::instance().getDeviceFromURI(uri); + return m_box != nullptr; } void DevicePlutoSDRParams::close() { delete m_box; - m_box = 0; + m_box = nullptr; } diff --git a/devices/plutosdr/deviceplutosdrparams.h b/devices/plutosdr/deviceplutosdrparams.h index 38ea10eae..90750d3ac 100644 --- a/devices/plutosdr/deviceplutosdrparams.h +++ b/devices/plutosdr/deviceplutosdrparams.h @@ -38,6 +38,7 @@ public: ~DevicePlutoSDRParams(); bool open(const std::string& serial); + bool openURI(const std::string& uri); void close(); DevicePlutoSDRBox *getBox() { return m_box; } diff --git a/devices/plutosdr/deviceplutosdrscan.cpp b/devices/plutosdr/deviceplutosdrscan.cpp index 5b9b07a43..79aa0aa6c 100644 --- a/devices/plutosdr/deviceplutosdrscan.cpp +++ b/devices/plutosdr/deviceplutosdrscan.cpp @@ -50,18 +50,6 @@ void DevicePlutoSDRScan::scan() m_scans.clear(); - if (num_contexts == 0) - { - struct iio_context *ctx = iio_create_network_context("pluto.local"); - if(!ctx) { - return; - } - m_scans.push_back({std::string("PlutoSDR"), std::string("networked"), std::string("ip:pluto.local")}); - m_serialMap[m_scans.back().m_serial] = &m_scans.back(); - m_urilMap[m_scans.back().m_uri] = &m_scans.back(); - iio_context_destroy(ctx); - } - for (i = 0; i < num_contexts; i++) { const char *description = iio_context_info_get_description(info[i]); diff --git a/doc/img/MainWindow_user_args.png b/doc/img/MainWindow_user_args.png index 1f32da7281602011c08c8265844b019d19438f0e..f8005bad252e09cdf3b10f7d3806f87e789301bd 100644 GIT binary patch literal 59540 zcmeFZWmr~gyEY0YA}XSQD2f4+N(%~tf;32jgwidbgh*q6iXaW5q_jwvv>?(-DF!JW zB3(-CbIkW$`&(;$YwsU>@1J`f$DB@y=Xu7s@B6yWy2cZwt5SQ&50jISknE9>zM?`x zvPB&KDwFNNS0tJ9cH@s7hH_F@@F)IR6)*L~AG>ZzYuS^K>^?yJOG@%0>JYxT(?Lc- zV&@>mK3b}ij+P~KBqYa4WUgFRyZhr;kCPhp*FQ6})A7<$%KJIU*iMpt+ikf`PTsIM zM~}Zv*Hw)#{EC7hRfy}CYXj;Bgldn;{n9Vjpp;X)vY%3!^%cu~*`2JTWu7xeH=cPJ z`d80uO>&qt#$0r5iFE!Hb1_fdYsZO)lwyy0WTkvBk>P)-D0UHFkmh2LRQ99wf*`JefS7&!*TrbtQA7AwG1;5o${XyK}Uau44KA|t% zS=FloB@==YRR8z)Q|`QfqCoo$KO3=Xxko5un*LcK#zQWb+lp-LxdpeJ5_fMLpM2G3 zUhftqE;e9v^Nsv?f3MiHa23O*@H0_@w+A*ocP%V%@$uEPw^K1QGYbm~v*=Z*Hu*% z25T69KC`yfhHCk^x^}c|PE-`VimIxNf&vo{Pw-$}0Iy*USyWV1?^q6d-SfL)HoavH zz2&Z?sj4Y^!`Re=#hmM!BYAgvrKzUK8c1_3OguQ@FDYLAU?<5njZ8n;B*PzZCAxd} zGP8|{xVT(M{bKosEo`(S=GfTSSiSe_&|}OD9xEpbEWZqFtpANVZ|_s;G#wliROL&} zzOvM1o0FgKX1zMrp0wM#t8n|JB$cpnBMu>)TH%|jRTWem8aR+chl0+O8OuEP~rZUZ13J3 z`faZy8m)6vQ(5*hh{#{LvTb~P{Q2|e`c_s=DX|{DX=xTu=2fEfJXXE&BYu8<&joB_ zc-*TW?iv~z(zms3dAREU$y=xCV}F;XPGMC(e^#TQph#6qqbjianyeTr(xQHjq$z?^ zb7}RZZG}PIv!hoeB=DBI|13}I8GE!u3q7i=6rG)&H8wVmQ%Os`mUB|!1>esH`$Uws zLOTSL=@KC9$s%jV6 ze0;><@fbVecXx4jiKCp>^jAGk^$k(mUg6;2U|F@SfvL*Ea&x7HFPeH5(FYp;EN05* zQyjf;$EQ3#OxZxy{Dx1mug` zCnhHw8XBq$lnGC|&gFNq_)9*}&M=)F_`rDj^efzDrT8rt78bbDr+=5HJFu@u*0Xo7x#7>R)t_2@%^Z%l<>3)@ zSzs|WHEqn9eKlNk>!;XfOaAlc&kMV)1eUult6-|BpmO;rly$=QO0q_9@`wsO1?e>%orHuCr^$SIPkAEvp&7OJ;-(L+{nO( zr*E#8hL4Sze~LOUjtfiE$~�p;7bU!+uK2OON&*4Sh%U?%TIRW@e*ebwQE|CxnDv zX6O{X(nwcMQ(GACc!V7m6c#3-q(nK~7{+9MoB~CgI8c?9`&9#vb1ch4?4xFS0Riw`7n}%V|@4SU43ioJwrW9+QoKEUo)={ zVizy`?m1#)G?sPatnV;Xjee0i^`uIK1?5Qw~>|qM(D7|tQN8yVX z&)@lV$a8&>R!d6@#g^;lH!gX3`D-N(thnV^0iNN}fr09{%MTtudGfPzb3My0ir=FB zp-jl>+rPeXmz9^39^y5naGdN^pP1HKWb+Nz`=rQg(VnOo<5A@`Y*NH+(avZhw7nym z&q5_K^DobSiZnGgk?EiBJe|5vtE#TB#?$+grfim6>FRW@Otlf=+8QSwEx0jjaAbI! z+fp_4dF9aR!J!747tEs{YHCx-`ptIwzyqSOG8uZI$gf=(o>o2tIovxH*_sPyP?HwJY=B;t0&z?OaahUGCzRSm#Jz&&=?$63#Ku%#{GFEJD z@v9!m+me#@xXW8fUTb8?%F9zcdGdtwx(CrjE?l_q?Z*$pn>XdrX!bFPTuEp{u~SM@ z(;mHa^ypD0B{z+7-^xnrQAZo2ftn{A*Rn57PUqg3Hc8%EkYr*a>DZwEVPmK9!Tpr0 z+f(Lmq^~94<~Q$`b=Vs|%K3A^IN-^XUDL(<;RhsGZRvdd{ngK285tQFo0tfG@#1x} z=S)B8zKyJT_seN%o10JGW1r?YP2b=W zVn&5RD*IMV49(4@mw)$sFLmPFwQJYP-@oilKYsk+x%2B=M5E&3#FyAeMSscnC}736 z2PJcwj7?0aWk(zGcaL=7g(J<3jjy1Bgz7wRA@_;lNMKga)TQ&6OmKYJ-rlaFb*?g2 z>CT-y@fSRM=hCm`yyCf7sV>CKobt`RKK4ei%bBM~Kgpe}jQuuAt`;Nj`Lo(v;;QHO zNhObxRT_?KO0V3BemeW+ncg}6*Su)~`_s$CAG_at;Jdlm#43_<;pLs!xXrrXZ#6#l ze?Gcr+5YA?yJK%}1FWt~1XJBA3i3tfgU|FC&N#pnE z(axSyC(nslGgDK^o)X7h`}Q$&aZ&Exy?gkTxsg$VXtNTifX}u!3I%0gV1NuSz{eMgznr~Mmb#dKU1m=8R;;6=W9(|Q zzn`DlmiRx5lO2_wp4hnGD?LS}p3y6}d*rsXg;>yX6xGyRF}dO5QbI*W-8_n(7ebr7 zwl>sc>+PI-uudWNW;qs0Tr2W*Mgq{kMEpg)Ft}k_OOP_RIdw>3z)w=nD zdSqPN2^s5;_pCIcgza;#bOp6^t+RfkI!I67{Nw=h%5a1pu5D+WZn2%iSSu;;6*fg! z%G*!TLQ?Ybe!-t`AHNq^(cZgvPkUUzs#9J@v{L+zN4k=72KixspTqo?EM2?y?D_EZ zYeZ=1L8=1>W|x!prbD8F)O$OXxt{jc^j`nYIPc=2^R`yn#_BLaJ| z&(SOLwSpvka>9<&r%xv)CEW(f zu<5J#h(#)};k-CCpq!mF2JEGemV=}Gb9gu@|Iqm4BzqC}JaNY^PVLl^*^>BG*<-ci z=FOX-Yc8&?gHu!f1qJ*uF)=M~G{^VO{Jzm8YxwJ1j<&_Kqe9^yp3+u^Tgz}Q>}BB6 zDO=AeO1l)|v)I>Fiyv2O1b3_K5wHS^J$ups9MN%-@bB}NFRi}hrKhte zNCnh>{i^9q>z9+m-PzfRl~*dVxt=k+xVUJ6s!V%Ux0T#Drjt%Hp{;*l;C@O9GxOD` z;{c-z3l4t%{y8~0Rp{IPlJmG-!8qdt^qRpoL%9b#YR}LS2j&~+nn57m$bD|#zQ=Oe8%;GCstNgD32VGL!Ad;y{xFHSgfGY zPV=HOLnlEaJ&Z=+$dMx=8!JY`C$YM(-T)Y}oxS9&&AiT>Qa&-)6l-c?B7wp>J3rr1 z!hfyZh1ye8QL#nS#oATdCCf!;`Y^Q;+mhQ%e^uiVKE2Lgj-;RplA2)>=T!hI#r;JB zn_3IMf3{CO)u(czmm5VVF)>joL2}RWti0Ku?;oAVDG6MboVhdgL+0`>Wii!cd4s7R z1?@Zwh0f~H&B9R*#SViz_VM~V`|aAnXp|Y@C-t8Eb3qoTZ6eLU(Sx+Kb+~K*jJj{% zp6BQD+1c57l}YvL6y9X*vp&(tf@^(9qj24#ZDG+yoNU%qJyq!*DwzG>C2KG=VtFmU zycQG^>c9~N9%b&cJ;8V=SYMh<*+u=$wV-=jcQ&qy|91r-iThCSrvO3>VCkp|%>S2I zaR0cpN{&B_NP;qufQe!cB`D*LfvP>GWR;6H`+|G(Q;f4j(-*XZQGx{D70{bY=* zzg9CC{S>X1s`N9dC_X*C2^ARK-1p$y|0T85Or|hP%vkbUetvxU!43mM!~2p61SO+C zZ@0}WNiM<;<=}$T@8%N6NkPYngAaD@OU6OO#=14rf0-#7bYr&5wsQaB!@lwHCyt!E zsgK%o*VT1vwtm%?b2i=eQ(Z-L{FVoCM#sj-Z*QzQmz9;Zn)CV5@%l73%j;gh4hUiJ z<+VECZELzFC#sW-oSYG830Rxl2WUfq`qE|ht3P)Pre{?c0+U3EdLEOKk}_?6Ugf=; zR$5-35ldxeW(IKE(AZf0@uNSE8!#!Oii*l1KJ&ofPF%&UJ9kd=@g0QtVAK8f-qWYM zdwYAIM@A|aSgPND@E{V@ugIon0OYp1x!F(RDb0Sgvhj|ThK7bJyr4x#@_q(}fP{oo z?;q_O1=}3KjU*a5euUR*f5&}U2aWOJ6ZTG^hZO=1PWI8m_UCaxz@&3z~FuY$!mY%2@ z8}+A8pJad7k2EXKg#-szFHU|<(=K2OTqaxllCJqAAYfwqt+j5UnbF@&z{AkP8nfLod50;jLT=kERrcnP=JWQg66_&_} zf&*+ZFgOUJ)_5k1nW3(QmWoOYiUGHPfK-x7TY;5k#wrlX!ci_a zlQbZ!*vtFr=ynbD+(}nWxth}@U{HazD1Pz+_}QmrOfN4wK%EI&siUK zadCkhlWq0&EM7Hf4!1j0i!DygfrbzS+waeD;Dg}Mu^fH+VII0w4bT=AM$Q10iEjAU zuV$1pxepcf);vV54Yl~UPWxZ0Qezy?Up}o3Im!=D!=h1Bl(nV*B@Z^{^L*z~%hWw@ z(R26mpFe-Vt2sD0?k4q zO#Oy`FWo;edxh(udgK|8XDURIlr7(Q7&fjiZ4*Ms)UV|K-BwIqbf0FwH#2jKbsN5% z6#U@9gKgq=heG9Fp0iG*?7d9QuEBWnS34DpIMkq^DKlllG5Qs97>PB{NOqsQbfk9Q^32~x8Vf|1ro_l$b zKu}VUl&od%>t*mcR#m#GRj0PA>m{^WUj26@9viD>Afvl! zIO4D|R0Ol?q4~&wC?`nz4|FJs4mWXDCPJ}vgJ_dw{W8z=<0~jj6vu=QadL9%>gqnf z=z0!{i|eVsZhsamJpPQQP@VZZo)T+lW3%_&bmitJ^oZfO{R2n&+*WR(?zMgSVp8*X zzshmN6KBM;s%Z7xs@DH5qm=I^u^;`!1XQ@WHY!TucZmBw1m_KKe8Z0Vj~|&JLg;y} zQ}goj?$}FT4?#HbmL92)kkFm!-i-W4VV8x+v7Q@rz_BEF6FNR~N*fy+qIT@xUzJt4 zA!}*L#unyl@ZP5_S>Xsk5;RYPg|W7~E-q9@j{I%57R7Bx@xkY3rs2FH4?W^rku3ua z4Gqy%AO*)~Wd&qqaiZ;B0?zI4f0wG90O3kfQ857ZFVFG|o1MM=ZAVAq+OA!@M#;d? z0;T%xovFivwf;aF4}A6#12`*I?&lcQsX!IO%77i6z2hqJ#Y$WIu!n~SpXFyV zFgxh1GP1IUpHr3nj$J$qh*5H9$`|MeK%WrVTSPabphFw!>wDp?@iB4u{n3qiZ}nfo z`hU!~=m=fQxBTMkx%s#6&9xjc_I)^Q0KoPGHM^1(Ue-e2J#^lVF+4mR4U5(bM=A&g zhE>K_;GkbqQ*@#p!l(-)_~34n#$Y7Bx{3k-*&1d~Gpv@yD_(|Z z#Wt7YjP?V(#zE^~LFZDepBl$mxt7~nYTOvX831{aiz^V9z6CoHco`B#U3YgBD*XXk z+D9O4RaI4J@CT2WQ-=lzql0m?g^|Pj37e(5%<&H00az_w;pI6(bp$JdCe4(gJkTa&l{o*->#;R@Ub)UZ}*2 zZGXXMQT=%TDW&u;C>?hF??_7=#_tyu3G6#2Oi0;RBqi!11go?gW5ZL3pd>U?0J{#X)+UPY8# z#90dkooxMkc0o^{JgMsKjY09*fAHW#Z}07ynVD*7D&BE%$FV-L-Fk_jIly?b#}~-A zGKz|duC1++WET{ew8mY=J8v2^Kj+59&wV$GZG*UD5)E{S-Uvlqb<2+W(hp0oAQd(O z_;K^|Z`U7bj%*ahYB3%9J5|&-_C1f;sP0)3&K|wc9Y21nPJJ7jtCp6pJ3WSXT6j@C zKgc9HvoLB~h19(oks3*@p3(w|W6j zDCHPR0E0XV3k#c*t4I`C>3<-mnE8a($iM(wY|qT%qI$A~lvExBJrp88Kz%HbK5nUm z2sJLo7qX^?3nu}d(RLsaNWc;x2|2BBlAAlHH5by%%^&$suyYKotv@>Txz|ZCxYq#h zlJEJejM`1Lc-_VBqP@L6AbU*7CtQ0$Cp#QMxt$MTTb>JywaJpv*FTQhdFb$ADikqD zFNC3oGO=yjHeq}BFj;TxUc6s5ip7QUaxvm2p&{VM*=QG!U38&5cI>LD>FJG)4Tq^8 z)Px&`jrU5}f`*=69(ppU8G-q*M@RoI#-}`b@L;Rx`oaNl)|Eeh;O|}5*N?L+Rltvw zI@$JmZn~ppXl3h@I!=5ho%8W_UKrbtI*v_ZfVJ>@`SrCryJ<_z^?|r-tvpkb&lx%q z*b}TpAF)AvZ!%o~ScIsgq0Q&IFn0OYtr^}2EGKGS5*`)DnKN<=`@zV6czb&rSXrg# zpB)lC3SHm>&RhNXa>hLgco-_|*-aZeilfZk$fg zixp6n=iEj+NZ@%@!-aF^lu}WlLiyPCuCI>)1ugvSby+l3oEDC@JC*C*7sg`#BMY#k zgZ_()diZb~Ht;ueLKLq{y=OX!vZtP|K}v}p2BQsK&;%;F{0qKaXejud2u{6`{;CI% zie}NMxlx?a=4GU%^=tj;07!*-MZae0rQp60br~Bu$GCxN_|W{~q6zjowuy{YG;R(W z^(S;lU)iLArKzs9xh76KrCqZ$pisAioR0cVo?>)=6l3m1A}jF(T^~&{km}6K(9nma zrLOT+ntw|lwe<}iCed-5%=yr=-wQy^@@wW9sV1TN_V!?qb+e^M&dMbvCBMGsNjXpa zaewFkA1U|}tDTXIZDM=VHLDs+ zcHU(nm7bnJa;@{l&hyC!?|*(t&n))1C>ZSF;QejlS+T+*9KhfAn0#n_fM^M<`=vBr5ENrYW|;lR<0dPHSsb4dmqTNfMNMrd4}S$Y9*jnTbPU&Wo-3t^jzuFY%( zyB>nZd$XrR-O3YK(i=Y%A0JONPl&H9^Dq~E0|NGGX5AQurKs(kpPj7_xq937?XdXX z?Gs&#^DEcr-q-@y-P}C|w>rjE@E8$LG5Lf}k&~DA{?n&tcwKI*P7cTdasa4@MBD^{ zZs5UXTX&s<2$H%sH9o%DoL}dEgm9e3QN>ZZ-WC^wLpGr70)487+uylUiXG`+1*lQV`os;chc&~tmN-39U>kagweh7d?9^nx6;75w}| z=&)!CrtOI`xHqKE55`Q5ja&0AR7KWi#1R@<846J(@$J#8KQe)^hf4YyYWPX!3s4cM zn8HFr-s3<$dHlHb&-TBskN_cyU#Rj|ULKz3=j~4ecCySV&p@B}312kZ;Qh)%hvIDq z2M(U=0E>6;3gSCS0OGdp#f3M&Qvv+}6}6f3>6SP=*}8MD@Uozht!fXA`d9P>>36Q_?tkQU|uM!1j^6Q0B`fD zs1O0wI|VylLpv41QmRhTS;&!SZDHr_M*^dx70`a!HQvPGty{YF&{*ML4jG@ut{pJZ z=E6buDKB4Vrz`NlH4tTZy5jFux+~|{*`KDSrlwRpS-^SRwsYs;@836u+|XPhB;lNn zpdh_g{b$gnF!;m?+fyZ2bAs+~WI!wga5ReJi<$Vj^1zklO&(|ZBgTkdJ< zNK<9T3nmS*3k#Pil?w?9&dmH22UmSv5CH2HjBAIEjt-<&91XU)yUss0!a4O~z`Kc~ zw`J>A5bXe->`cmmsS^R6l_ue5bdo9ZE#R%(y2T~#L-7-(fit=gs1OBrVY)ANb$(P8 z)dX+(0p$QD%H4?)kP7X=4n#ZDiWT(D%~RL3J!oswxX+zC4a{bx4MJ??$+zg(ITeEP za2Mrj^;cfYb3O|ysC1*)MsIYBgK=g=9eZHf5r(x+3e-G6$KhzMg#|+B0yx6L9n`4+ zQqt}~bVp9NqJ=F5n<*EUAto-)&Br%{asvS_LFocMcf9-GB@o5I;)$NdMqg|VF3$}& zLMB4_A`I@LjYLhIojcIgZ4fuEfvDW+EpJA)AqTdj1uY(VH5ZA zW?w}#Gy?XbZ8snyoSi|gg`lO{`R0H>$MKyMFiyqmEuEd=;Dzj-S@7i>Mu!?ga7=D? zznzUfGnr1B6)E12xav&=Q@Lq9SkP9io^GD17VO+h_q12i{FhQf9U zVnm=*6N_jc=(z|9_V#Ih{(^6FXAbE@3xo0|t6QPS&I~AwN>PJGg2S5#IUTft$LY7O zi95bS)TdYx_p!EwM?A;vWhQ#Qe4)lc!bR6%Lx(NGOnQ2K+T!oz=x80-8QLS_7LU&8 z6jD-COF+FCHfF{VdBq3~-5YiBpr=Z*QG8R)W7K$2Km&O1GLWn#As zYt)1k+V)*VZ9Kqy)s4B4pV+Ks7Lc2h76-4VcRhc8=tq%lmK)gk?95DS$y7vmcr9?v zdFMGsU|A1K7u2VIBtAYA3T9~K`Cv1cUo=?BpF?8r94yhtj~_>zO+g9&IW$xQ>IeZH z*PUxWdex)?xgj7}D389l8?5&z-{GSbG+s$kQO>$?F{$?mzhw>f;3^Q*_qVqba&;XX z@~IeUgm290ypAcX1c2$(=B#v_(kf!}M&9zt<^kYqBugUst-|NVW}Y^F`egbo+W-tz z)0y$dyLUulFfJh>!6Dy$?yD_0pH{B%EV|S;^mkEZOq8NKN)JHa{ z8hZ_DyfUmk4^UvkA|fAzoQ6!L$GUG6?DTV>Vcub3)DV8Zovc1sF(i z+|2=8hh!b$ObFgS3D#`7^y|A~&j^gu*`=kk3uGHzECK=%@#2r#%UzvN9#AOu5^Rfy zXAS`1mA0Cjo7=S+fN*c{~J z`5vb}WiUpu`OUR?MSQ?|Nc`uWe$zwY15B(8w!=mk(cAn(8|(3h73(wdIZYMt_zA0O zGRX|VWy_rHQGntXZ5W_HoIH8*xv(=2L?|NS5FqmBF+OZCYymJ4f(x(zS=62!7Cnh# z*@w;a9t8)P9zqwt*;P0d`M1>Y1NpOK7YUz%@Q3=}-J_rvR7(FKOE$Z#O8TNb`xJme zr;G291v=X;Cnrt^v5DzplAZxpBsXU>>S!v<>Kxy{e~*k+XoAG!lkkn%1L7kR^;(HK zKr29g;>I3eO@x3RR#bRA`HBjL;M?w=wq9kx2Y2Ij;;$&a5Iyu#XUoq+lo-Wkx+zWHReA|h%>fdwoj;!O6lpvLW{~Xs@n@WbY@|}81&1#SN4pf&eGhee@rzK zuu&p=2QiY*yp_ZYcO%;e{gWV*_y@}>>u@h>}wVS z5&rv@V+3F%ueF3UERI?bj$xi{p9t{R{iGx&61YmH@Tz3BA#4qx%}9)lniTvG*sK+2 zAg#-(%m$kH{dg5gT)9n8i2-t`xQu&c@s!7e?_NT6zwP8iWF{%-c(&CaITwd=MCh7u zOo&4dBDgy6l#__=!rpNhZ{O|(VK)px+FsY`iv&Ez{XPUm4i(P`pofrOJl6&pTDnay zBjN*17t6@BW8bl66hP^8jSOr`%`INQ8$6H$AsouOxe52V&3{yFic4K9<8XC#MU*p> ze+vCXdr(8Br{bj}I}vyf+d`~c7n3C#qGHw(hTY!F_pA6qH)SP8kT31o&zt`5Z z^Nm*21xH^3c0)w{-CMqUXis8fVBk#kc7wGFztEzT<)yVw$^QYetfvZ+8KsgKy3~+6C|8;F$#?>JS_W`o#jdx{EL!fop&DRWj62^egfRb0i&ULhI+~?JINzxU8$DZ^ za85{{a~W(YEG#4<=g2B{B+49kMt^>;d;A%LXbjpI(Qk;Xwz)ZrTsQ}5KTscnhj!36 z0blgKpCi2*EAo*59G)A(@I{Ou-I9RwA43sDs1rDBk6BBMM3M@1WNbv(%a=_El#ln8 z3xOzun><4N6HJxW@$a**8I&ernVDyy_tn(ZS-GQ)>kWa-J_90@t6FEEj$_>;#B+B> zUrbC)HvcBnCct^(Cl#jub9ok(IzC+}iwq3?8P0L!WC`UQ9a+vm8mn-F$ceOp3W;^h zGkCE4?n46{=r6-Ij(sdUx{Q{v;?PR2QNQu1&pp^9CjqH@se`7?faPWzO>( zoe`h;L3&ZGs16>yA}vjZ6IRpFp&B_2aTEC-=pgVQwnE-T>=62YbgmyzG;lSd?5wdk zy96GDo4gsmZs+Lup|0)`d>oWk3E;mZL{2HaA?)>b|{%`)oa%dK?FZ**Mrx4m5}hn*Z1Uw3oih` zpsL)bDyIX`@BP(Nx*Qgo2Qmfq!x*_O&ah8t*IG#Yk)S1;!91{QKS+p5qeXolr_P^` z1g7r)^-CUU0YX=WS-qw+XJl+#gZlNY!d=M!FhAk*a~suiVZ0)PcHY_9*}%-~5s`@S z*|W7DdLLe2iv1!qMbydcyu5_lgSAM8<{7--0q<{Fa#`+wYDfssNcU9KmQ11S-nelC zf8~OVQX9Y!keA1cVA0RzK2IsdtXs6TiXy8I34f~C-VBP3ETZK2kc`-P*wpY-o}~O9 z{kI$g$awa83BtW~5TK?7v^(Lj8{i%Q1E_)|Y6g$MCr#ZZDTbab8wS8-k4|jD^$FPC zXCFhRF4rCkij@}6jR*fylL$p}Qu7b6-Y3kAyuI~v3*4Md^UgPPBq)%`A`o|kpd_d; ztLTPp9UVsKS~y%c*cs5mM$ix9KqwB;(cOl<0j5f#nW-C(MTG>FrL+AI~%z)g^J%rIJ+U#t;=Q4o?0IVZt@z!CSYUf`1IEVu(MYeG^Sn*Hj z%5Y#|0z%o?f%kw^E}I?JcmFf=YOJ9onh&}Zk&8gTGt}3g>2^d=tqB45aZpMs^WlBM zyPXF+KGfE-4VDfgcY6{He-tM(>Y{5n`i!B8$@ZZ=cS`>&J}B@xMtVr_)^VXbzx1JN z5fClX280g^q6Q^wq07U95Xy(KFhtz~OI1RT%+NQ-qzKc6J4ClDR|T?t4~wcAH~1=0 zAt3Zm^p!>(F=UYBU_Fd|PCI}ag49%GpU2-lUa%YgVW#lNaBpg%b`p8h(A|-!N@zsH z7!09<6k2x?y%9ozEFfoSNa?+Mqy*Fl4j4qsCHkr8=2{4T9r4hu??6hW6%^bjDnMlS z@7ot(IQsJWb1rDtzk5pSPy~9-&v$io5h729g@A1@K|KGt_fu0-Fwr>GHdfErLxEG; zk?)?H3BAi7Ixm_O=bh?~HVg&)E$$>_H`reJHa&-tBtiWZ$LAush9gN>UFf}UOG`U) zP2`}7zIxLIFbx#|Ay^ZrOKxkkbxbz9uH$F%JFg(<0Y?a6tf#nsI0myH1S%XQaxZJ} zrTMHn{Q#s696sE5fBWw2!onSMHoU-Q&xjBb;mZ-n2fpks3W`MJni{>LaHA8@@wLZo zzvpiELMZEMl;CA7CsA6CANL~k!|@=9ZDXWMh*> z_*;GsiMR@->smTGgV0R7-S1%qq~KPMV;=xiLdAZF^*|(@8f~u*ZZ=^Z8XIQ=+_)@^ z#lI0UZ#|CVxa}QWB!a&{(svy>2hYO~tsWay>HfO`9~tK#Ij0`7&^foX>L7QYZPs!u zX}q_sEeLET+j-s;WL*($(s`!;Uas3lYCkAJVoD0{?SU)Z-Q9RY_)0XEnTl7hYHY*? z2aAFFh3y_k5SZvAuyMIPH&#<}b>Z$4Fc~)+@URVQi!vbLO->#2<6Z}pUN|ez1HvqT z*_oi5z_LMs^Fh_Y26G!6jtUR=2?|n<@ALy6O6w9(Dr!;Pz%+>Vy#Ns7`ufxwN1$OI zfOsfKMA86&mKy_1qpwSGU}0;%hn}ESc#{sDYp8U(LUm3(TYhn2A+&@T^+8%}80n~? zztfePBbsR{!;ufR=v=$Ta?h*++Awg`@X4(y1J9x#?PF+sqD}@c*$F16#3U`#C3K+q zk&g*D0*8(qvESTq&j>N_V7QO^d0PJYCG-PAF2U=Y%ndbo7b?$unFIh+yPA)B_2I`4 zY`-4_j2%v+g*@`3&^rAM!e;MLTd!4mxCa^aALP@2=Vj>GU}|PIKNuj&1COn8*l`Ak z&HI9!(E0QGX=qM6{@pRLgwm~D#Hh|j4LHu8yB7N<9XleS%^YG0i}H8)|A#^9q3=Dy zG$AmPrnVApcftL}ftX(%P^@~(BC&y?H6Os-!3we=Z(Wx&+j%-Lhek+Vpwpo`=7d*# z{_f0iyv6&rw*7cPdV2a)^>mu0r6pOtjJ3;FC#D;C>yL=;Z#{f~ZS&4($p3jDiDHX} zNhE!vK1)8MCmc*Tvw(@QM9|XQoa`MI2ucqz6LL*UYd?=U|(un4rYNCXbhd_0(nG>nXlh}kH(5+n;K4fVsYKR=qqx+mwqlelsPC>Yh1 z$n#?=hSh`*7QwJZ8Ppg{$JQMkE+Vj5aIwz4PFq8;2e z0@EW5qgCl~5xZT*CXE_t6E^q_pCG3Qx-M}**;G5$68k?<2Qd_Qurk@8fQ`Q^E3HMg zdU$DQ3Dr$aPtiU)5P!tDcKS_E^lD;|?cKXeL?#QU_6Cb>3(>rp61MOq8AyTh%EPmG z60RUCTiw%heKjm9tJ3w*`o&Dr><>l9bk^wal_mdiTGiA*m4u!ihgO3$+1q*(=y(nP z&hq3mk)?If8X(Jn;(~aw`|x@$bo@`lO%bSIk@OU=oP5gIyN|-5VGmzH~#W3?O(qZYevb zs+-p8``bfK8Z^k&!6Jwt1%4)`Y$ZO;&(FXA@IiuHW@4#8=IYh6=K?s{JO%fHMNt25 zx$BKPFeN!|ls(6N0`(!%a7g=osG#_*VE!YYRj0^?iG}4cK>=cfpQNOu@buw6LkWao zfVQy%t|c+wWfdol3IjkACY7J?>J{1U-9~8tFy9tzyNVEvy#;`z*%=@)Q8-q@FCc)( zCykz-UeX%^v0|wABTx*2&Sy8aB_+HEa&Eykz=(?>bZmsbSloTkk`G;UaR{39dH9ee zV2qZ45D|w%i@>+QPHE0x`-Q~cTl>*x8qP!ag#rZrBMTrpr7@HA+-4*V@MTat4 z05g5NP0=C=$ct4y4i18Ifo#Z{_D5o2K*o~1&wT*+h2m-0_ZS2^zorObf_LxM2=6;7VR4r&OTKCC=vG;K<;l_c>wbW z4;t!DL@GV@pC2M{1U;*(lbUqgk9JDXt#r*SI|`~1yN;@lVv@(4r~e9m0rfb zfi$5Du9|H+&ZT4YEbR0n%LuXuMMV)APTWSqrzc1a-S;&Gn25wIJK>N(JpPHjhFArh z*oSk5#cNM7e0dc9Nn^v>{~ZtVq1var%Jwnp`~l$0uS=a4XcwNRm0hS{p}C+}gV0UuAVoXRk5H3GVeBSf1a_)x`~ng4f}M@C zW(4aMgsK&hauii!fDAV{%S04Ek+pdGS7IU~TG?}cD;f~*I*>aQiy5E+cFx}%zAzZ! z0IBtUi)I*l@!~~0dSXUyBg4C|*tM|q5dd_Ca%<6Bw#v)7hU0egTlPJ|iiSG@V;E|o zeEji=ItI_rhh;}LbDTzQUo_cd@GP`Y4NYneBn#tE_Pg#Ac=ObEI-O>|$e=ToIakF^ zIUX3?49bvU5|^cVl27^Mrq;<5RNO2UrIn(YHtzXcynA@(%d_eRMMReETZ%_x?0ZLh z=S8NM|CaSp#{)hSCmz;BD+nS|svm*>Tie^kq@;Gj0D>BhgpV2AGpwzGVL0Z@TV6># zC8Dv#!sMp}cgzU|m9H4Q-g^Q?yh%bZz%7BtD^!_cW&zl8} zH~HZ~@&iO71dXb=Ilr}4$zs6%)-8P$2>{~2h=@9*&CyIfnOUn!<6yZ##gwQ)o zs6a6XBDID|)O&Cx@ioY!nq*gX9->7P+8QfG?Mnn@^f8Z=fAjmC;+NZiN<+iLgn@rn zuc8^}OZw{7TI4c8a(S$O@R6WkKSPbhIjidHiv^)2SVJ29&Ye4fYfqnl!6zWVxg7cW z_3NS0(TEEST>2y!pgt)ga_lnYw_#zC?U*RIv=H+fm-TXg|Z3PV@qz zi2*3!85rB(B9q^vxvr~A$mckUWp1lf*cMPU#o=a|_muF1K*k|N0j2?Z*O%?KYKMbe z-_jx_A>j?ri3dUhA0MBf-4GcP2{kP(0oaHLZAdFBN?pGm4F{bE$!P$8fOkTgB=!t; zsNLwNqW~VuorM_7$peeC>nJEFxPANfPc&b+KNZUrB2K@f zlSXR(IdwniTSPl_RyhNM6Cm(I5OX{u&mKE=3?nPt5H1%M76dU;4&e)_h*^AWVl)H# z(u3Ep*#P)WaOR+@NiTO{K-i@5AR;%3lpF<&K#!;r6o5B>R2_do{Xu6ok>%a8Wef2b z4N`>4J|Ja);NHwo!vR7M0)~g=24^kr?yMogv1rK2prP2(hSt{CW!ZlI{(TkR_X-&B z_iTd)e5;$tcbHpQg*<oS;G3j~_ z6dT%8BQ_|h^7T>}Ca|fIE4e5uW7EXOi%J0}%?Q~8s82{Ld%5yD5AVXh>e;)3G z%ELkhy^X;i;JdoW;*UXCV(h&L+Crp62zdcml!(xE9A9;+0Wm8B>qc0W;)1P)MY zz9Gkb^iUFFq!zvg3>(Oxm!KJ;tKk6%G)Pz=oSsCxn%5#?1anvL!i8L1U5v2veV}Vp zf=n)v&%mWPxXRaLkbIG25Cpk^i}*Mp!6>OF@=wa3XJnxXw>WkDP~vNtJBu>=L0k`> z{I2;BA=Xg4b6P6*c@3(!S*UMd!BIh_ApMYJ7ZsV|)|R;}`T|IBLskZZOL{y90igE% z`v-)V$rXfi9ZW8c8jF-ZQI@NtNYJOt)!Z>JErVwqr2P@OI}_Kug!^&nb--~l)DBtY z$*k+8#1J(|2QywgJUj#*!$QF4 z3k}{DF0l{BhDN4t14h|o+qgJ6_rd+b2OyvWAS|rz5HJea;0Az6nL$f12^<6>sV1^I zbf98oVE4Am{n%;w)?MMqNb@?3DG_6K$SxqS{{b5mE7giLK8ANtnav59XiBpF~ z#>Tb~iW#=qDqsMPg#kc%aN-*>WPpgb1>L>{#iZz26Tk`)z(hPvoh<`7F60B%UJar* z;zNcPQ%BNK(ZzeeWc$Q>=VrRo-a76QsZXN8bX42!p>(mnO@M$**o$~?giie-x3Rqu zd3qxp7Zem7?GKL<$TA^2n{v;dJ>HMIz3xl@0VWHsioss`_iQO5H4L~dtbJ$_-`?In zg)q<+b@ecSoNXwl#G^Jqh8nG(B5F=hm}?)kwY2cS4DS~&4&&f3v9Z0@-9P8KhsS!8 z9v=L`)7n^MK7Rhb^KS^=l^9nb!BR|R+mXBnff|S`L9wxl5Fn5?CAkD-oEzz!7eI>S z0PVKREYzK&=!ZlEB81I?189~X!>3Jjn5CW=L1+4g5CI8dF<=o|CCtDrh@t}I5Yi$0 z%@!Q0^Eft<7O)D?Fex!UZzo#IV{P(-Mn=H*&LL9bxhIz?-vYr3^=#rU920R%y>*cL zHXbE`Ml}eV1$B2ErL2aGTA`N7LM6{sVSBPMrZI4Wb3s|`VxhfN;|Q&SH8fG={<-?J z%BT(_pOluCmPzd(2D-ArYBaE@S}+!1(N&n?K+M2UQpN>NLs&A!=R}0+0T9sT3!8We zIsqGcw7WV4rSF{w8aUJO{41Iehzk`ht<=ABj}X!b^NhG%p?kv6jQO#?N>ONbY1z$a z(S#8p!{Y=s16^7I%#SoXKi?RV3$X2a^q~`!PGzt}XK?1_+*KifA|FCXZA6X|QD$-# zW;*l-jpualiw5;8j3{qUDjpb`o&J&nJLDjYnf!u+q+JAx!@w7j5rnA)Cn@~%Kgkhj zu?Tg*8Mp*r6S&vh!h)zAp~%*#9hC67E5Yg9=6fCiL9jeH&{fzai2>rMptB1LHMrg% zXAtkY4?hS!AZa2iG4Tpus8+cPKeR|wJXB@45SgebAZ0Gw-m=Xnv-^7z~Uab~<|3&ykT@XymBXmvwYrLjMbT{=6O? z6Sy^~9iLgyVT@8zQW70v20Kx%Yuwt}8c%5;Vh_mFwql+j?JO)K6GSe+>C~=`K-?Jb zF3zio!Z8X2%&^Dfo&XM^pSq-qIxcLIBimf zh9~h8r$K~>_5x5x0!jBFnmPn6qWz#Gg@lF@ei*gJBSKU|Pa{&S*g32pF?WD~V8gBb z#GFm@3;w6bl)eA~Arv*V{aw3vt7d!Nva<{JBgaf7>Fpzq+S=OQ);AC{KtwL}7IR~t z_p3j5#@oG7ID&BgkNEz`9uzKO4atw2x#-p7G^$%Wo z*pWX&SZ%_JKvoPRWQ(G@EdZl!nA9e`AEZeIY`TwQG8qLKk@$pclX79G6U2lsQ6TY} zy}iB2e})yGO2fwvwoJ!=VI@iv-jXp&E)k<85@B%f0Dd<=>3n%gOpN0@??D8lF_ebR zOE^BjH-S*kp+*of13dL2a6%=q#PRm+c=)fnWp|1A8bq09C_#iYiX;g!B?2TtY)Cw& z?Jk}br8B8|Ba+BlVnsnBagJx^<_sZUL1ftrc0BPls|AGWpc@nQ6eXUoK}bOV%6PJ%4!Ry0v>RH4@T+QHL7?XDj`P$Qd^4{8-y5 z?~FeZqbBQ}c;p!95KeFi&uAqu3=wHK-|cpQ0FXz&Rvz7)xRl|&BQmbzydtd)B_ zsnADovPlr&i`*YM#xwyFWvE-=Sw~*-oTPKVippkWbN8qAra6z0Q)On~c z%qtV=S&0sK_y{q`iE2*lMLhTf(h=J>I(|I3?aUbkgTEHYW?+B_#)EtIo$cGV-^Lgy zAt+0W~p07@wJmsDxwUyswh72tYY53>$qLmIGoUFB&M%y!E&2%YQ_T>nRDF z5fg#LLlguBuiX=2>LQ-bg-@kbY?m~&Jg#7FZl3Khu7a-+lcgASBFtNpkuMz`@0*(B z$V-GE$Dqv-Pv5~V1|beVBCUD-`cb?udh#Q0Z;3SSJBX`WbmRYFu-){&0F)3*q{DDT zLjnVdArYn5dX5eb(A?h)9b8m^VtWvqhLB0nLJ0B?T7Sk~7^oox8?U_Mgt)2CM$k3H zZlGl+z<~fTX+=C6jf}C9din@3C73N0C8Zb2D)uLaMhAz668kTG>gYHCuLU7;#!-8e zHDvEtLd^^eh*@knN5r%#f}juT7W8Sjy4nkA}9aBlf4=#2Iti|CMfV2eR~Q4hfqpDVy__XkvMb26b)xwrGI!lCb zVBOKxLcu1|6R>%=2Tbzt zG7d64Ky;f5lZbfg!NTPig128SaI63Cvf}vv7qa3(8k#M)epYXXRFbrEnF++G1-Wog zOD32G1QzeY%#|DwkAP&!l=XIcH&N^$Y@rj$q?eu)6$Iz<_#xu{hk%YaJo~rZ!wq|d z{pejnwr5Y+X{2R$V(3ayQgR0Y@qsa2UH=xzp6m62LX4c@L&zG)&JmO9kcMwz4F9xZ zOf&K5M)dh7m`s3}5b`@OKc5lK2rWV z8TRhOM~@=d%SpJsrjbyi9_T!O;R0KYDK8gSKeBYG>FK<1{}F&B^3a${!=ny(o#%#B zR@t@!2*SM3@x7~e?OHu5QFczwPaJQPUi;5jP{qv+y3IZ`?QrnraA`02EfH+GF-9ssZzmYn^VKdKE*E8wqn1=n8h=JzrmP zoTs(5`IdtR56-O28X=M?_r)Ik1sh{0bY7sRq(B0sV5?$oQ3yv14;hO9F(3{q;FGe7 ziXr+lE=v{M2a;LeYM{9L+N0<32VP3l`RQCQRL)vrr&ySKtmFCO?PALJbAQ__U!Q@L zMofGFx^-Z73Z<<9BPYVCCBTu;@o!pNgM#jc2u@RDx?8z~dj4<*GtEWLn5xuu6 z9tW8Ne#H~3wn9Mavl7L#^9JxJmTZ@E=tJkuX(Ug%##smL{CyIzG#bB+VJd49nlsvr z+qta&r9NstKaK~#G({iZWWgw$lDfJCdJhpqgX9c6B#v1OuozQVJye4!c*GI%U`f(r z5CM!Df|&^GEZSW67}0)!*l^);k>j$mvIxmg;9;CR4`OJ3qIw8>ZbYG`$b3cftp*!{@AJIw=e~c>@BZgG|GLhzE56^)=RJ<&wT`V2Ik1?g z>)m!3S~>0i0*{|aorx}3MrI9eKN7-=!U_dDY3Yb0bp>Y;sqFw%6WY{sbtUAa9*|(1 zZ&M(u!d&6|=0oo&!??~xF}s0bx!@q+KS0?2AR_Sb`yh3P$%Y9@P|A(j?u$1}O5JG7 zL6>Le=E_2hhjR&n9Dv6W`T^Y4&AVUwQKLlcMe9SL%zwji;IUa(l3O>*_M&l%+uDsqC(E8xB5|sO+HPNe=MwjBnMG zQ&UwQ{=!q_4$#9x2P}S}r_`MS+ujet7vvu-->-1Snh7+1>aL{T#69RR z+`{Rx`0FTG;eJAeo51Fb-GS~@*~`5CZ4B-7o_?ts2FGX`l}`t+{5sv~ z@kODRZPBM1JKB3UBO9AP^h>0vgckyUgSyTTsV4AE`Tf5HnH&Zd3096sRUi#C187Cp zca3qmB=l?vb4fbV5{Ta87M5rK__)yE&B;D0AaO)k4)^6DXu^pT;nQC&ln_u7DREi> zgJS_EO~hpIeS)P1*Rx`_{0+J^_#c|F$ygXpSaz1~>V!i#_sTbMyso-1XOQc>YKGWg z*0#3#uBU_Jrvi0-k>g=4VWh#D??mHXi}>h z8-Mxyvi@(RXeS8I$o%ohd>o5ENM;%q44Th~sBxUghizIzNCh0AKTm60HR_)S@#4vi4R75PdT~hYaD|gNBHb*L zX8@+iX@Yu)dyW!Sul|D&{q=ZP!~zI}nY{4f$w%M#HwM@QPOG^t$!~^3CszM!GrEFy(O~PwMeu*Fb`RR&EWtJfu zn@DNu{<}_mS(a}jRtrTz0x+VeCCP#$Z3-O}E<{d9#K5$y&Bh@|$WFJv2XVeZ`|m@X zZ`n3&`v|{4+|G!A1Umc{CkvjV%A0)zcm}qFsCMFk1N!xI9;_^}5uXbh#~;99xfNaH z5v&OXb#)~EGJyVMHa7+fM@V)cbfgSLF}Wd7PTm;>8^ei(ioZ^zuHe#&m2_dV!fHbqN$ zHUYf^3ML9-ojldm#j@4Cu+O$TuXUaoVZp~S2jggY#XSZ;ftX3Es_>EVcaD;!2H*k< z;w7kZQsMznjXY|{fwr9NEYOB@s96!kwEQU_x(kim+BEo(a0k$Mm!nqa?#cmFxtE3# z?-P%AGek!K*HBmxE`wB<*d_?_lLcl7bZq)O9IM@O%;N|CZv^bJ@5=u`!1T0&-#xG~`a(lXo6_Plwab`F@#IM}3yZy5 z7S@u0dmXX+o+3cSn19iPPL>6E7C#v?p1i;%Cts5wpRA;Q!=;kNCGVZ{1!g|I-a8?Z zDk@X11O*#EH~F$8KYiaKy;hhX;IOb@Ru$J_TT13SqVoYfCc-6Gv&wNY;6Ve;`~L#U z2GGcMMRk2~U)c!Af1D$W^el0orq#J7@ z?uRWsU^05WOVY2pmobX6h{}BNGJ8caN9?kf_08D>>0%oVIAqUp4%<{b2%oT|KC~Qk zg7F56Zm5hN?Z~j~=<9=tTiQJ@o7>ND{`tC2Po+iQm`Z@*+>N8wdaTid{(tOrw=WbO_KSnhUrnnEz zs<#W;yH%;VEFSOreW6g)Xh+ZS=5p)NIn`QsRx?ND^Hx4N90IvMKO6_fQ^@1{BUH_^ z>tLFo$LUvT{<}KQb$`!g&EIr$b>@B3mi@0yC4IE@W7F4N824JXN;YPxd9`_3{TD<1 zqKpUU+2&i8wdJlXPnX!$RK++w{_ND%6FRW?qTj5Hs`UrIu!`r=)|j^!y2_oH|6JzF zPnkB%PNo0FA9je}%D0sEw!)F`k43EYHb?G_C^b$l7&WngiY&+|*m_45E zrD0#P>q5oImhp&fucOyE$ekOyn!Uv4)>N7B?P{g`*{3+k2u$awRJ^I}P2gQdfBwl6 zF+p24OKV6LQppYL*-xcrQI|3Bg_kc~-yvERIFFUp*8STRwJTQ{ z6ED-mb6r&y+fl~*+cw!~Lumnjc)4@*ZPVt!`9FEz7fsCcHvN{ob70g=W0RQ2T8>hR zQP=Ej*7U&Js+-I%(kd)Oxof5IG1#mTa)@(!)M2DTWo@-vSm5JflWBYIje6YLxi8a& zBpQ7!H)nUpU6-U#*JHDws^9y)Y0IPw_q1C&|NX}GSzV&Byh}Z69?GN}7@yCVym&z6 z!R)@ugd2U%>mPq$d7ZgsG%nL{;R`pn=rhmF+>b{sIGrVuQ_7d*u5ufX)p|9WSsk^% zB;`WeMp=DG>kZ#$QQiYib1pPWw|y7lxekeJS1<~ozx}5pBu-T%ZrtinMwj^H&c8|q zZqyn{fgu7fJNu3&r|=!vx>PG2)bVhyj&NM9!owWb@U=Z0%vpo1{*LpRPLsz^Gc5|q zH1CTKWidN{@igmN`-1xLJRBd-FTK0y=gH`6SXuRL&nX8<^{06kZG-O8mIo_xt{mV} z^WlG4rEC|F;lD!(7!|8!QQrUr`rlx+6W+OKWC#l!gQ!{ArGat77! zpZoWAdeYXM_OZEatxf&f?$*u=Rly>+v}X#^e(ihZlYMdUMVT{q{!qVdi}dR9tiw)Y zwy&}hLOjeL-BL7r+Z4k7GRkO)Ej*!bpxZiem!)t@IyPHN+VoUxc>d#3NyG25Po&?i z^LlPdlb5`AqS54#U~gu5T|cGA^L6GgXg){M6;cJ+@TpKzQBj^bMtR(qer!8Gqr0lv zs=QZ4Bh{WqR2-69rc3L#h`H&N$3;rNWv8@ywa)h@{n#;~t8)R5hxQt;`Nb!jvJfGm za5``>JR&-5Z?>dLd3LIFiEUzA)Tgc1Mw$}M9^BcI3gwm3-z|(MI}2jyt{>gp{Ad^b z;Y@9}@!Hpvbu?dHb?tYi@z4(p(w`rqtMc5Nf6+BodV_k7XRrqdZ6mWqn?tLq{e5BVsAo2Kw{ZssGRk*dTvnG=DCla~M^_MgdxQPA@wkPv$)c>+f0Vys zpjqu(PJO3hKIf9$w|>j=x&H6wylULnPPX=TtC~e;NH3l6(w3wYG@xmqVRD{OQ`@A@ z#CDlGHf7(+t`3FWz0uNE`L_lYDPNRsJ=n4t>G4d3GbgpV`akO|ebm}A+^V&EHvd*m zsq|>yKqs+VYuuI@xNe6>thtQ3}x(yMF6f z6rvT&V{AUUaqHuc>JlAo%s)N(UyfZkKNK*dH@xe}L)!G@D^ruE66fF9=C0C&hMugk zc+58UFlf`sBRWEwg<@-4O^fx96)W89@XBtB2}(UO_mZUVE@5R#XR@- z&TAG7t9$ZBvh?(VqkY0tt%I)d>76YpuJbg$9xxtzC9LnJV`}+wPxb13!E^2mVotYW zRSy=r*h~K6`~D|@e3qZOA65oz@~u^MyPallB#F)Hh6c82s&D?~HAP>3W6Sk)q0}(G z1*tOcuY~JeWH!jem zqxILYlDGWPrQ{@&vl{n~>fU)h64;!ay1uL|-PuItCSU3nJ1g%e!spMISrt-Q+i`_& zbESI1E?wg=d}UA4v!b=zE#yBwOJ(}%N*TT@z~+Rgf6%U5_wL7L&JtJ=iao_zg`ae|J{6Imiy@fyXdiS z4~2!GzG=lXS^G`PbMElC2NrT_sO>cj=n(qqx3@#}YExZH#%8w}-^#rdh;)96USl~12GpWed#;PJjxJIY#mfgGU|i;{Kv#RadEoUhpJQ;9J@weJ3Y zdWJm4to?~WtqV{EuZl}MS%On<|KS|d<_f&eW#_~lwiMo!NIax7RDR<$54FwK$>M@N15aG>Ymt1%0s8B`rD6E zDwaA6{%U1(o=yE*>UYNO&-nJs@7;J)^Y~n6+oipNQ)$O`31!#iA{m0JD(Bxn zAg5u3`85iGdyKzqq(ir&NXS>{ST^P2lisiyPmf`NdGkgZdp}W;4{F*jY?-Zseh$;X6i}8BVXa7Z8Uu!AdaQAz= z%NuJain0ogZ=P$O>gudLdwAmMHnbh{^ZaZxY03KpY%f@c6h@_An~ybjUs>JB_?c0# zvu!txga>D5=;=?JTXeSky5(^Xss@&}qcP0Z7q~PEe>PK%j0Vi-n$nJm33l#a8I)(7 zIL?orTW5FQYw6mBKF?o#l(Ro5MSM;kfA%Ena_H|9EPu@l${(gt&QtZhiV8lt7`IU& z@z>_tvR>_KUN&BoM}^m&JsxKFrX}Oyt&g>oLBXNVJUG?O7FNuUCqCk(Ea0F&EW)$m zdHj@wll6gYUj5z6k)OLQH&ZT0(dlZ>Tg)aBZynDH~)sjt!Z4prYc{%eGG?2XnX z&%u~jXU`gXFaL{uE`29*JbrZ#??1xr6;VW4R$A7LAB}|1V1#Thv!?rXfI2#roORHZ^xD>%|O0# zQAf+|>|d;ue9=R(R%$68_Aqg#3Ew3&E7D%Zi)!FUO}$-X_%^>Sz9(i6s(O{j5|!uDvxaxo zYAJqIp7xB{I%MQX`Ki>ZH1%R&>BGKK-i#^dE&LeQHF$6mH_*iLjHA(B`~9KQcJaN1 z;p_|-^~OwJ;6!|tSK)a$U1DRDMqu7YEfyzQmyKIrYFyc$YC9%T{YKrkyw1bCvr2Sg zM)L3VXUY4Xb*;^mxD~yndQa}^6!7f@7=S!b#5#7tGO7Kp+i|4W>URA zs(cncIX2GSo6X72-f?^UW+46jGcwtES&s{56#L>|Snf=Cc0(hk{DM)nyvETjkGppM zxb2_sW|wNeedKMhdzG+AZh89FOV@bfDnp?$IWBWwU7vFG-N>PSJr~ANxz^57vyxYp@D6r@K)w<0>6X{mvvUmcKkLHRV~39zi$$AwyuRxx`6NR?N^lR=r>9F3juH;LC?DNY5q%P@ zcE^U(({tHfNZ%te?&v@ca&utXovSeQDvnb7SD5pF69yqdocsrZ==XUGlo;p|hP;$R z73?1zd;!T}x*3KuJ|96K5Cn=yPmtLF82mf%_>k5UCr&^&wh?3(0lZ-1fQmc-(!9`G zqEG$K*2rCS0nkS0GuB^ecAwY6S{z9x#L&())H~5 zpx_3_8L9kdzkwnX&U~Z`6cE@H`|HdlsTz+Dk`W_UiKzsx5JST!e<0p{35P;+jOp(} zAfy8bkK@8bEx_)F51%xcfh4a2VtvR`kSkCD)#Tsd=fMd#pFMqw;UeT~LLUOTK*GU% zZ*T8^rtWFR=*K>UY>$X$^jM+80pg`~#gve?|54QdafX7x5&|cnfBbj9fH_un*O~(Q zp4t8aIkh~zyb7g|Rv>vi;QRNo%v!`#LXiUoP3`f)HMj5$q3mIxKq4Uri+(0I3DR29^D z`oBwvcoDP-ghQ>MZ@?rY)rFk^`S=;*ugcom+Q116Ksf68x0?uI+%MYNLb*c?$hR7) z$e@3;kQfM;SuMC-_-n#fz_Ttqt4+l3gIwoP&6-`3?FU0rW zCVrg<8Vh1ELViN~$B)nfS9Eo4hm#tgWZUr@0tmx-4n*Gb^(tnos$*Y4msZ}?v=Mv` zgwSMU1a4}&hF^eo6D4_EAkZ|ZgUUHfX9gj={Xkj66sF^y$m}VYhzLg=0ClP0v0|BNBWmsg~>c;4nFnY9hKm;uy*rHu3Ww}QL>7`^UmP4w$iN1r zQH{9*;OKbTEkOM@#7Gg9D~t++kiBy!er?77KaZcxLRU@AdaNk8o6rB3%?}zG=q*?> z{d|2@w)i5V9Q$`aV!(=vCEz*=M53z^w*Zu54bdl}fb@SK9aV)k2i9}2e4&tFh4`GujeR=yZpmUfjFm+iOQm&P$LIyaYA;iG=+bJS}fzamb>Fert zaC+mp;d+*MMI0DfzhYlW;1~mfpYA)v3C^JD<%oVnH z0UB}%!l@$@xX^u36od)+iV%IVLw^Q>aYf4ow239OGjtu8gJj6*a2aA%9IKK2e=akw z^8(=r9is-A+MdobLiEA@3jO3d88b-1p+6vcapKa!f4~U}wgAVq7)(SGUUdyEp49)F zz-FNLtse!EYX2V+n+p)Gwbt1ndXItqFb$>-Vp=YlqmZ~M8S)@dV}uDqRAw7otH^iu zhcFJJI=15Oz*tBivB|%b+&qfJ6_Q>FB`>5GDF#{5e>mMR_4m$YWI-n3s|+UL2lr!a zD_#K!u^D&IfDQ)B5=wTW+J?p^=`!r|uniMUOkykaHC6by|MB;+QonnH^aI#04_`W+ zQ$K}2)j~)nq1F;%Ubzc(gi1e&`oHug_YO`PVYvRtY`nH4bF&gKctq-j^#i&8Ubsg< zZYnd_!q`c8TPQEMF(nv@k;<=|J3HC&6^Iqdb_`@cG3*hwU!DzFdgBSNaSl9(`kyek z;Bi(5?SGDsH-kx|AiJxk#utY*1=i0n!m}aFLr!rE)Y144T%Ms&=Jes?Z<4OruUxF&XY$mTZwup}Ir5 zCIbs>8sc@q`yloroLLZ|a)Z_nd2$X9FoeemOAd-#jBSDYjuL`J9N?<_F(imQbbNG_ zURpzABeoQYO2vdVjB644vKw47Mz+FtX#i?!2%@>Ym^zA>0DN^Z3=)7^!Y$2q6#7F< z?ud<#-(wtvsaUx8Kr52b8SJ8$V8VNzC+r%7NJ8QxqvJmTeSly7$jAuvK_Sp7g{Fl2 zBkTubo}XCvG(cnH6CSRA#}TGi@#YvQ)EJ7d^P#N(y(F}gTTfyBzq9}#ory7QX~_+O z5NZ;l1Rui#uAMNDK?A59<_deiB<39|hh!tF7F^$f6nV&`0zh_q@1DSO7T#YEITOiW zL=nQRFprBxFoGA3#}m-*Ky7S4{X?C^nBz{U4dV|RVll;OfG2Sc@vb%k^NWkqP?jAy zTUbs=IB570`0i8b4xTYw*8mCYA)z_{rzb9EdaqW7;SuoGi1v|*L>$XcxW<%MQH(HO za>M}vv8;X}IaCorj}1w43yv0ScNUKzBIbZfH?luZ;O;IdllU$udp|??3>8VJglL)S zDkbDXzL1L$N5s_hG<;P$Y#s8grwP*%RjqpAW;G65L z;G&_>0xyS)6SdeN1gOL~f&(HhJ^idLi{5RNSE_s5aRS3lyj~hM5HPqAQzg!m-e5ve zkTOCNjNoxT@a2{j-c&64)wn2e2=adJ$ATj+RuGgB@j&E1;*)L-6(I4Mfy#emv$)3k zIAqP(+WRsd@XKQA7G?kQgoN8kN&CR$vvkjax5o~_h5j&e8U9)v<5NbYlu&cNhsqwZeI{cVlTU)mNB#o|jdvW? z2e&J@jbbgxUO((1;{U<1#nK)RYW4!25qzM=6$f9#$LIC%!21VbmSuB)ex9PEqhr1s z)N{TtFu_P(&E{c-#)m^t=;+Mh=2q1S+ptaeq&X!&$)jWXhD7Or-886bRIhtPtU%&@ z9+eQ>{mSFy3lZyILXPlxt6?d^3#+Du?!lt{zl?RKRI;?6`{oHh!TUj#RfVe*@t^q7 zXGXSROdj8~4@!43Qw0SCT)@6Kl_=vi-k`#2h3S1B*DzvS?-#INK%C7}xKcwS!(r}6 znQiaja4NZNu@X`XLLQ^=g{r={uTK`=odlngYSIY5id0I6Hsi1wA~{gm{k)ZU71pf@ z0e{LM0>J%-=f$7iPfQ|^iYA!LGxS5~;_`PQ?l32Y#SncEf|~eu{zoBXmpBS_E|~V{ z$`X{gA-35PKafW%=kYWB{LRD!;kof1AP<;WF4kE|3pE+P&0OdJIMfoU{m4SkPFeKj`|$ znj9)*paPT>MdK$wES{~>s(TO_=XruuQkWW4HQ0eg4SDxNB$MB`Aqvp|Q6F_Kh-0uM z0$N-a{_vs*!XXVO-921ActMc4oT)Q99Ke!cjT@*5C3ZrX0$K`WfRQ8u9f~dpxcYwn z49LjH$TP&ts=$uIp{+AxpraE{BGEC>0Vkd64Z%Toe{^tf5k%R2Q|isX1~3~+qc=AM zk+Uh}bhALMt1c0@>t$rThA&9LyoZ8Msb&DLIO1+Cf!e+d2EyQ7Qv09`$A&|S+8X~^Uiss%{!wyEt}Z#)gk7<)nAUjX zs`2!%=j`v}0;v}6-~UGJE1~u0*^?tHEw5gcER*%Ydd$SaJm?VLp`44C%D%Fd1aPxI zV!Ii%VeG_dnZt3Xv-i>mUIei`iC^yQS5l~eaKkqi6C zKy4VI83v@PbvvacI61wbbr3^Z?<-+uw!rr^)9#AygoNfnIQfev{EE` zfQWGtv(BKhASqpV{Z(ks(U%Kf`6`yUs(lVW2su(4NhCPpSQ#hpo(m?W~nv09GIvS79(?sk9%#Qz879T|d~BF)W~%7(K}5mEZMoXJoP z73$Zhsn&05iaBr-#oBFOU+AS3v5L@{pTj{*0c#i~Vk00GA}%c)!f?ad9)3}ajgM4& z$gGH!5Zd>;*SMgFjSn4ns3ii1Frg;^`cq`_sG#)5>4qmM4D+Pro65Oi`kG-9wCMEv ztIOCCO{B5nQ>{K%yuxkAZ_=%Sf5!#SKjeW+6M`*GI7d;zX%^oz_}lRpPzd>}SZySu z5f`96sw5Jc4E>WPw0X#?I1g(Dsq<0)VfR--i5*k83MHgH60LB)A47nIsr!sxiuV)9 z?XWH1;X%L&Xn|Eql64`g4IOz+=ez$OO<&t}NcF4lzafn;3GDn(Rs&PvEy&%;#5p`E z6i^n>u0gW?U~KFXiA#oe8OwtUCMXp0B!+?*iXah9Mr0Y9sE*HeGTGaaQH1%gbvR3j zQWReYhO=9+3Wc4{M1>)Z!YKtS3LfkM9QCAdLWzSQnXC`-dS734zjjo89+q8>Hw%=2 zC*NVV2h9!o&3N;A8yjK+>G52B2G`t)L+*>1vjvGZjudvA&&b(AsxT_|Bw!e1*a$>i z2ciB-Il0Oy$oJ0eJtUTUAcxZJBI-0KrUnhJc}a3S{A1&OY*lXRg1acS7;j_9o$<+t zqkwf_iuXO*?fksTUITXudY0WN4?L1`v~CYvR>tKTs+bnj-Z5l@ll(4PQeuqaW$1fl zb?%(@m=6{Aw@ks)(U5kc$qmd{h1wsNvDU)wm1jXgL9Lv{#g76Eso?Y?alJTik*?*! zf1Ae-5yL^h#tj(%g#H=FsmC?>pzD0r34B(P;{dOVaOS-S#qJzfIi@2rBhd+F;`eh$ zlmt%7!vw1Y@m`8apAbe~u>%j{pUi0o>;)+^_d_nbm?&b~alYT2Y9@}{Egt$-VG{Q1 z-|^(%aCH_XG#a5UO)K4A;+VEcbl`iI5xicq2R8Ub2}*X%;zkzf)GAh-RGTD3@hSjF z!d8#M<%1`{h^+t#H(oX7I`+L%8%GU+q;eA51EV`RB0>se{pot4hOM5ZRZ&uUAf3Dp zA2g6n{Ce`#9O_p9e6C{+-xCiZA_(<33B3G(8O*7Bv$$$vdfeO z&yO7R_(%w25yx1?Dl8f#eIo2YWlEn$`#0ug2H=e1^YKo4@q$cTQ+~{(RIha`rML__ zO_-NSB0gL@b%mRtdhLauA3hZl08NS&xb{$CKF2A9qGfvAb9Fm4H8rdw#M>bp39kby zsgu!+tR*s5k_!r9A`TN|wr2{PPazfQFy92(?9X@1!Aym(@)AJapn+dW$qAIYT>lBo zo3>!Nw2FYIt7D%JA?72QfqOL`B0)?!KZ8pOGXs!M7|YTPU(sQd zj7p-;`cY;khA<;|G@j$QfaLihdMr}vlY}`6oUL^za;*`0il9|am3PQMDZK5LGEYyEwA}4Bt={cADu^dYq+}$a2d*AsL-UApK&Ij;KY%ayEMer< z`<^v#bb3X#}sdY$~gB-8WFE0`9`yM$_!MJ>J4=187Aa1}gm1+b%5$RDv!z#oEG!=s@dM98YGK>fRSJU9O6;~j(*V3eLf zLbKK}j0|iF!g zIGP}WiBbSL4JCdI)e~uM|Kz>P)OJ^%dW^f+v?v_j71&|p(?vu@J>p(=yhu#so%=u^ zBX>rVh0|rRZyKWv5-gLwF`=4-CD#e`04RC;{(S(RIB9kv;;q8CM@1avHh33gcvJ2s z_|UrD=Zx=tx{Z^UIL{#J2i#6w-q~sRrKYY<f`8w2EgDYYx`>R)5#DtJp zk9Ud-1HbejdOf5dkmMm0fPxGgGd~G+w`^jwSyZ7z} zlx#6N|Jg5)XH_)PssuRH#sQ}gN%EC{I^az4yc*Szs$|Sl(Q=W4fyICZn+#`BKuy~P zm}0-@t5ECCul6hr$=#a+uEeu5IVkGHX$+YDiGRDgaJ~ED2d@R__2ozI@!gZuTgkts z#}a9R1R3A{+LzHqYiD|Djc@M!&lu|BPuK*Z?Y6IKl!~$IE0HfBP(`1`zqDFbrb)wD z)#kZc+BBo?g&xZMLQI6Xf_GemEp9O6l4&YTF$<~1zv2%N%?x3Tugq-|_r4SGgW~m1 zg`cN&n-n^@iYiUZTnxAV)U%5Xi}n@&L}Px>YiZICV7!QnqeJsDMakl z+vw|Q@%@r+H${Ux9n}g)+7&J4)h+h^)_096hKtF)r~fqf*(&ivYQiU(jTD|gT~xuf zSif(Y$M99i;c&|bx9{+m`vmS{ShMZxNqQx*p2sKK^p~zThVp-yoG5Tjy6Wzr`R2Wd zQ*0A|yH}_9p|Mx#o?L7TM)D3{ivCv47HYG_Q*>X_zb>y{xX3W1J|5I>Ns9eb@(KAq`+O1%Fyq4!B^-ivNn zF{q&ro9psTw%C9GjUT_i6?XJ}SUB6I$ktwWN^%mR_Yrk`y;(_>@TtKZ8{@hQ$F$(g z^H}?>GXVwfV%R=?es_9-Gr;_tsIdOZ4W%~<{kPwS@Wg*Te&KxjI=L{qZzG3_?e6s+ zp{C$?sw&&_DYx>4y#Cw6+-$9FX$b-a?u-H7eCoMNg+xVXBkdlgj27(sd1O3@r$UQ1 zeaqXcfnOO0f<;1S7#6c{>y&AJytXc{Zj&!kBh+C|4xx?rU-vBOyMO2w?Q``r06(+8 zX9-7N@4KJ-jkM@1ne~DB)&2=h8b{8!zxqZw6n9B0%jE;do;|5@h+vvUYq`~0xw4jF% zH{)vU;OX%7_1v(-+S2ll-iatW<16$p~n+xb!1I+_2JpOHNsJRqG!cCd%tLur)&^=cs&|7U zRW+Dk_n6YH&_d$_+!tt2*ca{-u77Cw`O}0iV#}J6U#v6sY$0?JL*?%Uw1#dLbt3YK*BB?J_Ky^Ba8` z8Y@aR9bWWrbbRvQn=I?HpHs5i$4y=IMlJ6f1=?g!f1=W+o4q(iwf<{b>+S7Fx+Y_< zUC!l;w0QjRu4AA4h)K7Xea#7FF3zegrHavKskd$4E&};K77ihbQQNtV-KHi;ugbVez&ZOzcmn7Bt#dZJX?-kg(nL->!| z#}5{;*SD&rJ+v~scY4vuWv*HIapKqT+f1?&vj!g@jWD3g$E|V)t|Fk|aA}2vhwpRL zy0gi*b=+r_iRMe4BFDW#rW?_rBkKP19jgz|8T*}lap1G>FXwYFo+l<&W55Xz6i(!` z5%(2>qj@c}jtRaBw9S!eFSKW#_UlLv4U>IhuXo_Md&4vK@oO3StX~fZJi5))$MP{& zW-W`MGtF}=S*K>#I~i$7 zcq@?GkQ!mb$*(R0c%6g9!Y3xiy?8OV6vb1`pEb2?&F9z9cG@c3HR|ZwlEPE{#@A*T z>IcM7|1T|!W+B4X&|)4?{uvHax)fXe2igD(B-#ch6CEKY?}CxS-9!Eq zCsY{2)@B4KaHAcJm+@Iovd)lm37rr+;J#B}94V$sADhZWiT z(v|!o&$V3U8y-=uZ>f)02r5j9iC>)%)z_vreRoJuKp+`(n1}bskNqk6`J%}7 zMhyKl(u9QF1x!OV3&u`}EzUX*t}58r7d|tQo;hA?@@|r30itljNRc()F_2?73S00V z6bF&Ihe$yT#R5Gjce5Ugi&~7AyI5KkngxokxU1+jfFdA!h zGVS?Wzy&~V6!G){c;+B+VM(#(RUVs!^FcwwJo0M*=91=x5Y}LaPNnvD{Euz|tnshJ z7mXdJo*9!qzym?VW4#J=AdoCM)qgq+sd3bD{!wS{0 z$Sk*GXN0icqAKV%9V+D%Nr z;n}0w6XF;CO3UVF@q_+nQl19J33`K|#PiiV&f*vyKl8H*gxAyK(Vv>sx|C(=zJAHvI@O@912Z5MEhL{X0 zIYLsR&qr*32tL9C=#PQbet~mL*wGj1%rL0Ez$PG6C+IsK9~KUfJsc;Zuee4*{==~0 z$l?r6W2sr*j3MR?EGZ%g6af?dH_cJb$f!sU;J?9ntse9OdyJ2*Ah7;kApK&6QIv{n%$~;gr`~#eQ-4YER7!o!Y9(BZh7gXj6PfMkCO!Ktvb- zrvkG}1)Wj~&+YZkigz^VTxtE&ki}(m%)V>on=rjEAT$|_J*~-gnVvds_aY(TDiU_k zw#lJ`Cz(13s6l)h;pE^aLnIQ};ECcS@10Nxp>~sQ78I|ZAUa@h4Fy^olD-VCjO~Q$ z;eGq|F|ZxHg=md5*`|huD#&O+1LNz44K`0*w}TYpxq?mp75H_xY}+=k(;AIXJF4IN7yoO`@#%;mn>23`rXI6YTqYNiL%Cyc1+IRm5sCeEb z^lR-+nDJ5cVdf2JlpPfv9jsw0+&xzD3A>hH^y);AWqPHW^u3Rw&f z)EUnI78&@vRqez^=@$+nF&B61KH2{k)Crl#jvzBLyn#Bks;R?YMg^A|HT_c;?KmRE zAEccM*kQc(w^4g^t1@|fB#hN(Btw{Cq3K^k!5 z81Z;k7K3mvDua=^J(Z4TA2ylYV9#Xrym@YjY1_5{LU# zHJWG8Oa1snz&&yrtXj6li$!jWbVKGcbWeWx&KN|j`Y-2$fI9kH_zD)6E;Rt|^ID=+ zGRUYa`{jm~9ik;N{Em$Dz||JngfR}@uzr>d?AvY9Xz$x_Ic`R4c*gyMqk*P(k1VY( zA5-LgISKxVpo@o;i`37~I4K>;)QG;%;rnwgyNFfg+psa4C0FQsdk9Y+nMbfLsT`p3 z0CAU=SuX*i>!fJYImZuOy1+ka^Ru!u~) z2LEd3`aCDMlC}fAd8@+UKX`3lqMmGGmPnoJn+~saa*1Z=&!0r-28crmx4+qHvo-){ z3=KQ!cNMDovo26Q=Qlmn_ug_q{)9uCPKwHrrj~l10!?wN8yd3?X+FXUY~hd0-lc5# z^LXX6debq{Jr&9FDK{d{bq%L%w6nH;2V#>DKah7=UQ@=q!Gn7B&del!NhR+FcWa7f z4MCv=7zw^LzUGGNlh4}uVtQKNgzvPR0NlMfIZdQK1)O8#oc0O` zRMk|yC;q{Zi89;cI&GfG*w8m11Kx2Rkrx|JzCLz<)A-_|sub(q+M8^8Mf)T71a79i z6mg!h&(W-K)8{$!;4@UfY_{C!pP^IYX5(XKm~mOm{TJ2m{2}G?%bWA^`y1q!7B>ML zVLNv;ohE3WpHBnRMe6EO&l>wY%-Ou@w^S_dn2qCBY^w*^@K)xa@6j=N}_C{ z4oUL_P)erSqh5CB95R~VbL+-=I|OK#y(`o3RUkGg9OkD}-3>4_7kHrv3PL2|Otxmd z5@@Z#1w-O>00YLqc%cYs0VIb6;|HP}IzLHAE=iCnA^@pm<>X=(Uv*>{v7#JD#Sv&+ zhD;r@@lm4=$_eoaJkxF-e}C>{#HzZy9o+UoaH1?1EYE# zk@2pyTlQfZoKals^J3Fc15@{Ed_FP_6>0!n$swS@N!0s~=9pEt(g%*$NxmuJQGsm> zaj_x#WG7lN?)7q8_Nno_Jd<lcG*@3PKqpxd*qkJqjm#I* zY3)D$EJc@(nB~C=A3Sozvi#N>9LhssZ<0V$I-r^mwQJfnNoJIQW+$n)YoUr&#+Y!V zi15sHEI1)s2uE)eCXP{%tOZC-@V&GtBcKPpjS}=ZRB-r>yMN*4U_L1qdr~+{~G2TKsjFOcMRVNvPC`<>Szj_Yl5^4fM z??Bl17EHU0n_F>>2Le0TpmRk-g5O0n6W}AH0Vuj4-vb9uEkb0#B0xx?>gpBJk9>DN*r*0R&@zTZn*ggMD-ojr-0@b!7w#>-&1pkgP76#|bj9*_TvUFrx zLe8mz89^Yv$V^8xw`8g$7}Hbuof$-tM5RzhDdV5oBgd zkop{ePbjb(0revrlLw6n|Lnr_)D*cBxwsPEEqE_2K*$jGUEsihjbI7{1O>rDkhora zHxkne4qavGDb1v<$BT&EV)lXfMP&v<1zX*rhWGTzI(;hxBD;Z|^8%V7x(mb=fj-wt zokM)$Bvd&OTXzV6e8$;$QDBiwZv0NB0pXaWhN=OF8#L+(ScPOZ31stV&Q(u1f3Gk7 z^kTyU(3Ie#DabTUl3VG9ufwoQat97|BIUtg)zCSdmu5CL0od;~8L809NKHBuQ5A${ zMclMzxSw&Dhvj1V?zMb|>}7?XG=xA#zxj<1h6(hLzK}#9aNST|<@nU<{LG-iz>Ia6prQL>@#% zEmr*k?Z3Q7)1gEORhK;9Xk~>;MMf@;`CLe#_zW@|fV17r$oO?i>fE2)tXFw>*d#UW zpZS4f=%0z69-?(JHSBBn%?8e1$+jQhb%(vERxR1iq0 zZmU1kYKM@^Lq4gJ(ryggfJ%adltZ#JJs=c(?Rv(Yd%y;;pujIG;^ECQX(30cS0$PA}CblG)s6@tG zz$g!#5pI*!tnBqreQ7{Egt$kLjV#v}JUEonTy z7ER~WE`Imf6nOcZD@ywaA=4zX9zHE2MI1eOF5p1&3-HKM1DwhcgwS*B9P)JBFlh@5 z9x-&G(;ywu#Xb6W67Gi!X|EPEPGKDEKm3mhXS-P?P&YH^=p zO7OmEX?HtS^R1^r`5%_VE{}g(2B{m{o11c+ZxqR4;Y>_Sv<%CAsNEYPnK4b>*SU0I zd5^;*mZjVSLgyvZBO*j`O5^5MbQwuczyAW#xUa2wu*r0FMS(?I?U&(t8b55 zY@*egvIZ}5)DxY2v%0?8PHPJbIb@Py^;MU4;Cx1fpzkk?$#3-98Leqiq5H7BS20s?BnDxo)RPq1|U`u)%;PsL+5mkIr#_zOX`-qrOo z&7LxiwkB2FKl_|s3wL|mNVxD*>31MqKQ#X&Q>QN04+(M>2%r`Et%t;fUpk&1zi5zD z%fBhuZ*|#?KA3f{$=Oa!XZnC#eqpI@d}s*k+xQ>)l0b1x2hn+avPf_2LMsnziSN9o zl5KFn0d}4v9{w8regjMAK;&V)S(NBsiJ%vgU zPE5*;Jd65qz`euM{_xrj89i)Mm_iv{A2lE)_VB8n!{g1ysyvM^Ym@_&xlBJk^?jct z`8o7$^UaD-ImkWa#zmVvzbW6k@wWFIU;E{B)z;@K>Bn_{743MLQ2XN!MtC1hLVO@1 z-Ioi5T*c;XK4je6@ycex)S_>rrM-j2jhvf@>r>YaN4$9rlu0&l?O@(o#~0!As|UV> z@1psqO_4~u_C;8?%xa~~^QqT(>8<9Q-ibx52IezgT-(E!_h)clz^|dv<{QkleD}xG z;?0Kf4X6CPGgx$6^(L(vuP1GK-PF>Q6Y`RqpdlaPJo)l!Ndc z8Ky!XJ5m1c{3e{)NfP2Ke4ha@V{)v0&L~OA1=bMb(gW6-%y0r+x@UAf0~?tIj%pMo zuaQM@23|36GC9OzgQ5S&*Eh+ANo*vo3mRf z*e|8dJGnLTf!T24yLWY~1trI?@7iR=anM}ewA5%^Nk4z9k9gHN+sFJxMt1?Hli)Yh z-2nho;Vp{Cz9Pw?iBE&U4x*&B!nKCc56~@FqR2p5)}Fis&@}+kdsKArjIMhZ^B@m@ zi+$0--X5Y^GKLl8q8gqDh!xGJXFq{nNBtuL0SjtPHcVRXfuJX4ZOT*~L_m;9*e_iF zFmFdHQ$X#F&~p)yJt(BQ*gyc!v7L7Ncg^m zp}X*S;Upz>D!17J8GH!mAT;_2ljZ;jjswbM><}bG$|(ASHjD&5M?Hr(c|<|K14F^l z&0!c8LCcX2T!EoM$*}UcxsYL|X@j$?`^KVQZuHo6EA+Zj^QQ~r_S-$AtmL>)9MRZl z6Y{3o8R!%g{|5WI?!sUSgQ3d7gsiM)6t7uJOg)A6&lTt!Fq4r6?+G9ll$}$bjO^Bs zX+vnR?f{yHcB=|g+0Y}Bwg_V-KtYw%xRCr+K&o2-%l=0sHl;N3-y$*oYb$_hHkvgb>r(`g(f)v@(Sc%NWG_7qYdWva&Mauy_4{ z9En2*XkSqJMd)3yR`x>23D!FCNYj@u+u)_eoYYK-kzFu!A(0a9F{y>$(2t(UHj{Zc zh+`fNWF+Y@&?XYcD)4~NH9MX?dxq&WG!&3*@Q<}wB8IGH^Yv)=;= zAiL)3{~~Jh+TV0^|81V0I?I^2Ev&uu`}5AGeF*s~SOe(rF^QiG7lcLU0YpV;mcnL8 z0|j*zNgPMSAKBed?js$UpY$*|nn`9mP$beyLhns_YdmsvJ{TM#@u7J-o|o31!31QR|$vIb0xFo1PkUDu%Ho9c=77W;u40*)lC7fX55)^ zth51V1X{pHLcw%34QHs6b!!&4;I?~5x7@t+;$0Gh_i)tJ0cJM+y7>CzwAU{_l(xFR zb@S2lt?&8>IE>n~1ydie%L#%`Qg(4MkTD{l0&-AiSw8W@fckqlP%%B*l1N|Scy;;1 z4DoD8P9YJDK?nH(50&^P@f66=s07c|74j$8v1GTZ~xDqvsW-t6d<$ZZHmVLYSU3nTsPeme0 zAyb;D%p!!$WG0!(kfA|_N>NG5m?85#W-eoqGS8BP6bY3~nfZ?2^X|RYUfBrW30!Rm_DWqZ&O?*i45am5&gd&DqipE4T4V2S6yi*F0oQ~W~8 zJ@;dm0Vv{xxQ(&K8$5wTFiXoKrcr1GqA{-UMbKN3(Zpwtf@^ zhC{fgmp;At8$Q9rcmRhP5rIe-rEmXEChE17xv#WXL#ShF0Gu8y7HM6E_O`*o8`6%G z>bp-WS#lTcD9D)ROoN);PVOH|E}xR|!E|{sxXR!AbyYwk0VtA@~0^ z*w1ktwN3CW;Q8&?+Jkll3btC4>|}^W>ueLh=o%sskOU>rl!`R)e#nbfj3SY!MwXNy zlmT)2=~TM~taJ{g$Qn4?6VU=1MRlQF;*j>%@V25Yn-`~A*>!KHq0#d!hgW(RaNJQm z(O=Khf0^qXohM*JjA;>KO)$oS7DH;J`774wpnjjn%9SXtZENq{zmEV)ONb3&sI`E< zz^Z#If)`kK_jEHkfQbOo!AFYl4Elq=ksZT`E1=3&3Xhjod9E%RtxQF)l0}sXdHH#H zPN~9XTUgl`TnA7Ygh;&_G?;U&K1ls+mP58#D@5P@A<;7cVM(0K$<6%&)Mgld=meYe zT=gIVW_06}Ik>M1dMus7HV!N%3qg^Jm4cwgT|~1++!K1}sW|@%o*{JG3m0N0eS6Rl zL$P}wEhs!KD1)<_|AFBukd1qRuvGG4MF?k<7|asqSqPiNuH>pg-$87IQ2<0g<-=^3 zR2PsFa}LjBdoKIJl6N?O7WEQY-HsX+yCf1tLhLYFL(`I?lb1BfhDWS7h%$rDj|{l* zAD&DT|1BSIV;=M#iXbEqN*hR--utxg_DqvLTnVdYL=L(2rU6Yc^~(WCp+w0K6SUq z76H?~Y=$0pJRZ^wQpUihn#3%K7GMob)+yl%63`QVP)w$ z0gv$UZZ6#yV>vnMWQ<^9m74uC-e0V;t1A@nH@S%buW?uo|0#tN@x;uGSzQnpqt}Ex z)Lw`T)*^N8I3&Y9FjZP5z89)z0kX*q~fiC*k?Fc(u|<1S=pLa8#Xd)P+24bX5@ z(;PVkkq9y^o*q*`Egfl^3OZd_gMxpL&bNfVq!*OeJUpGtzz_^{6*&uBqNdDt{%*9YnlFjy*!;_`OzHTS( zZo~L-_*Grq=>5}gae+_@yn(0zUO^NGNarvqGe|Rm0r*Zdu-5N0j5GuD6uvDPWDrbA}`;&-x-)6o#D3v(Rk(y1olA5bjEU#vjX zLe)@5w#bpT0OjRMyz_tBb3S+|vy@9#r9)IHez^pF2b|TT7VeAU9g*i8HUj9ga5fOt z1yG<>W4|{V;ykF7*>6IRVop}y2n!Pjb}Xhd`tm{vS)KjpQPtf8-!9zycP@Z!$#cRN zgxUvH4sLTY%3JwY)5uRd(52y%SoW8bHHAR$OFx(Z3<$&sAk@0!`#W1IEplH8K|lxuh{0K*S^0j6`PW|HNk|a2~3lfVqZ|+k*@} zENy-(hALYbb1cxY_J~~D#=}GO#n-?3og}p{j*Pm;%jRdoT2`HxuUz?t>``aggtSfO ziqNp^6#m;99x6m=jOnCCmi~MWoeFq_s9?z;W|gxS|HC{i151)Ij>SbKI;*z*TJOOb zL~ed`Z1l=$i5~Q5hzLNK*W+e>g$Rpm48^6!Sn9*UUtP$`7>C3oonab4N^gj<_>c;# zk)*(!wBC~)BS1D0V?;DCK5k?hjUvtr%TG|71Vlun=bsT07A9B&I{)r`tH8F(UAuS7 zp|tT8tw3Rwd*Su%{q>EQ0z>#kmK=tKg^{)ezyO!JCvGN>*9~(sv&$g%06cjh`WEMa z7_pp{yFRJH$ZnesvkE9taLQ?5v_g1IkOLvPu^Xu&_^?G4-MhCDn`j$=Xhe;=qv6bl zYf$&*TZLD0DmoO<0#{)e20Ni|y;u8(kdeu*Orl@H0xwifKFG%=Zy&Dtj2Cre8AOmd zAQ~aF+*Z6s{Lc%RWD$BzPM0P~jp#YGeINb1}Sz_sgO zFvF_x;twz1BCz;U-9ax+?6L4_tw|o*N-2_{cB;ez>Y`+p(5(2n zgujVS45l>Lsr_A@`Kwi7CIqH9O&I1*C5CQby@Me*Gx)9^OB1r_D&9aRW;8l0dhIs_ z{|+MdsL^XEkBBEs-OgRjm9Q>B_4FL`;l$i&7*i}zRlj-Dl4T%_HnA4yl_2I+81E#G z27>-7<=3i=2%;ZFhL^!iV zb~e-=B#(9}1>+3jx&p?PLj1akub4LnJbijkKGF3{A&O*n#Ab}-^00FX)5Mqtt{L7m zjnuUgYH9(wyn=!{CWUi&U`S~uHurfQk@I0D{2J4)?`?_oJF?Rqe5J2ld!aU8WYa}+ z6RNH!;o%GZZ6cT{V?C0e8PE|Bxy$k$A4f(m`Oi)Ou=HC^#wx&5`5toM@R7rhcR}{T zLXb!n`tB85vMJ5N4E#54A`x=3b9#K7(n!@HGRFd4MNk(}Unb#61(fp~=py#nz#ELn z`~hhl11dZm@&~;kR&3j%QpD)qU!pWsL8*gXK>T zf5T1O-vi!+U$OQ0zIX<{B|uXBFV|70V`KBX z?b$rY(Vzz%0cc;C4#luc&KP{E&=PQ9YX=W+2K;uP z7|;SI&ZM#7qQ86n`W6BCSqyBTZbzUaxHERA5L|$8cM;5;YI~6Eo&*NQC)i^`Dc>+$ z8TIEx7`oOr!E(H599eFwl_ufwAnUW<1fCxs_s3u!pa{w4z<}WALu8>iNM=Y{aNDB0 zZjXFQ+S=%A58Mfm})xfP$s$*MIGrAR+)vQ4+eZKDEzx5~-6x2L3M>Zyk zMnmH6vATSfp!?|LF*2ZLI`I%STHUTdQjP550?>yyPoMf6-d(|$uWVjea31ZDi;uU} z(S`~EO)nWt;YslZSj2f~H%5M6kd2A)z^`9TguacbDS$h`Lzl676uTg)U*XliCnk*1 z31C6cHdrwbRDE^1f7ME)3~(m5*;2yom!w0V{ScA^WiGl5kP_VD9|lkJ{#V8KivA>a z!Udww%7Ne*x%Ui`jzC*c24Q0(B~3zFKr#>6$N@zk1>lZ&Rh;e8_y?gIDdX(fIh&Bh ze+m0{-)!`JZ{hUH$p5E|w6th@=3lIaNl5+^-4@ZJIYuGdzRZ{z8=wA1q`%JgACW$1 zPIN5BE0}Tyhp?iW|Bq$7WT`dk4A!C=d>Kr>|LvRTMi74q-?P4c zO#VbZBY)zY{eSn(xz#_vM8wh-S{CQ77B&Q!abEkf9A=TgfztuFh(MhXz6#8HA zO$nBLGTPbGm+XJh$kqOaO<7sy`-P744=n#GIRAHM;$NF{HBxyu-#L_9vpuANjrDkK z16x?w)Y9J@-?BaaYdSiPvs3h3oEy_L;YgqiZOy z<{uyF@MEg@eWBQG^;m3=G;A)D1auVR%xvkGeo)<8JR*tOe6n zN>=9x9I>%&K0 zp%x9|rT29!pL1)k|9J(f2jhhwdCkSny;NSO?^YRyHGcA?r5ODDM8ElN%En5SdX4kv z>qeZ@@~40Je?Jm-P994n8_m_(wm)eeR_CR+anz~k&j#m46EEwyJLaumLV2}1a3|L8 z&5?(BO;=y)7Y}$d4LY3C(9=u5+V8Ff8j{8y9NgF~2R6D3P=}r4Ff%tFeZZ5Y0`%w{ zN8lbB+2tklOFZ#DIY9iOI?7Sdum1pq-iw&9N=Y&7n6&s}cXK{Qhm2H| zo2LdATQaGo6w5B=JSFG>>fD;~*|BF=`*3C2foB$=VUdnkt-hGU(Pg{Iw>l0@z9j(r za4a|T!|B}9dVJ@>*B4YeJ3Al9#7{0RXXkFSP%Z}QQT*OkDO%A43=C2d63)zia`GqUXTH@tsn-i& zyA`sa?|LdcISyAEX9oGZ>YWyrLs#wW!kk{NEQ}QZPLS5 z68-bRWYV>)cxkd;0CO$T$(jS3sn&)cw|In8L|vug;Zcs?GhH_Bt}GxRz=(y3d=*QM z2t6@+UyteVRJC;Txd`mK8SdKOR&RmVdapnNF5dew{waOlGO!lR! zS9@JTQH`a6y?|tin^J;`I8RT~WPtLEWVj^+S%e7jtUx_W_3*(__!Nwsv@}r)fhq#-u2IeKLXU zX`SiRIvHLBX@DQYQAsQ?F2(Y-eAC+P2A<0^2n`^jVq@;H?Q|vKyj{= zy^UOjDOxEUP<&q0i$RU%f$bw5X#G3lWofUA?45zfkEW*PW}m7|8Yuuh0VnM29Z|eb zg-7nae`dOJ%VAD>U%3F0z5Z;exw&fiDWJXc`XPK9b9x{|%>YOn3sB&*x)O$G=R0Vb zKh>gun*$J5#?zbPCKinedImhD_^)v=lGIo5vHRCV_j6+}Sa!6Vk5_E+scN)4-iJ>) zjkh)gafy9@KC;#FNt=C-T z+)k0`GA`<2qOO)?sMH}r3`_(pEqqX)_g2YgV{&^cSO~!`1I4vXO?X?I?@HqG?%}1h z&?&8)PeMWV`<3f?R#2RvG@|=xg^T+&XdMeT_Hu;gdA;qLhr8xWf z*Ug`^1O7gjj7oty{)04w~9LsF1w|8~Wim>guX3Vf* zBZ-ol1?H4$L%JJ5nmGsU7RA2pj{6$LdYS3X#3i?n>^AphPh=mo>&a+LQDMuAGpM5_ zzi}(TvBIG({-M@|hqOA2jo#U=3TQP1XEC%DJ4PlC^anh$O?y0hm~LWAfcmK6PgM_6 z##{~w3hEej!OXwOrtI6?j_pk)yqQ|5cc>x)0)AZXxhN@Fknr&ew>WvnFYugY8os-9 z?BvV7C$|?}eze^P&;A^vysJVavG(UPdz~hq)UZi~fNnbVw%|@j>dfG36HfY&{RcDB z^h0At-3!f&x}t_QkdG&QoyP9_r@zkK<1$f7%t(D3<`A?`r}uBc^|Bf(2a|6{bF@4r zrB!&yRIP8_{9v_AyYisBx=+@^tz%dCes&C9eUuU`(5W(G?91Kfl2Z6)e_*@H7j}V3 zeXYzl6UGRDpKqHdZT=`D*Jqm>%Azqjk@;+qa*EC;T}(;k=jHUB$7@rLr91jbJ-I2z zk$(Rz6-B@0`)=!Xw+wf2MV?R*WLZvY4;9cb4K9(9XVi-S_?2F|)I98`cVuWsUHGM% zifS3Jwcpj2%4B&Si+Vq>l&Y=^vWu%@l{dvvo;+dD(w5h{V z!87ggngO0>x0hIi&h&5FW)#0+QGny5gmnIsei;kv=2wd;_fB*y?vQ)!k8(;kvnq4) z){bCDhq6lplUbLynVvBlGvAS)L(Vq4SwT|78YkGX(}`eUtvRp`zQ9g$Wuw@12q1~CSP1BKI(Nb zm_sw`YE8(FU>@=PdBVElv=VN%T=MU~#hG${v0)5kYWdE=C(5zQ{`{Y}p(!z^I72o{ zojU0mos*_C5})C>#WbLmz3!6Z2_vQU)QGzcN?hNP-ES2>f61wH*!{7=YI$Mdd2eIR zotsq!4}EqPGDAqV2oI;0N?z{i8CI(72_Ed_ zsJqA>Rb(L5EF^h_S?xdL~rd(8@*(15@B2N z`IbWS@|3n74*~`R_Fd6~t)=a;m(dVEcpGQ2Rnq-f??Tls_rX)&PEAGZ4Nup;n_d+j z;-u|wXxn!9yymkT&+a};Sa;$5e8C}OP91-x z!8Z&R;^@qSm$-FmcU0xlKCJn2l&wmo@u=@@rXQPaEvBuU4;z(Tnwg<1Izq*gJ7ugR3^)!S=U6=IQ&(S~@|=D%)snp8&)Cw2^ZMsMEyqs(3dHZVQr_+@ zwD!9zbBb4_>Mq9>%Sp)w4EpiOrr`c7qEoIRfS;jgm`fyzmG(K1eoPfWb2=~Nfh!n~L4wkTq>ODd2;{EvLs;`v%_!I6T;rZLC zUGzuw5~6=u&rhnegxal6gw5{taUK$F`&^%x%okia!BY0@NQdODA4j<#P5t>8=q_7E(UgXr0$B_}1roW{1qPj+0rutr6)r3Ovs$D2Mis zYr$9<M`0Q;lxITghL7m z8~Pq!dXyBZ*!aZGLo$sj97A)XsF-P#m5?yO?wy`hEDu>uwjszwR$ELoZUw%@jYAvNyF zJ#T8JSmAQ_&|^2uMl!pMY##GaOXc=3hcDL9PR~b)x-K?$^(1ZmQW%Sma1Vgg??bib zp?y&YZQauC!mn0Ludakn`%1N$^|MmD1SuGCes3E(?D0wJz*?igkv#|7PYa&z<~`c! z(WqdS39#FTCb-v5%h)&;CD__qH=)je)pNo^UktVgkm3z=1i)Xg-iO7-rJ-H)0{#v42C}I(d?c@oq z*K>>$+p3d!zVZ5ZRc0|~6?;C90>yP!C1ak}B3X*|CnF6t&(C%)`zD>O-L3YDsjK(c zO=?R1t0u4exjG4}FK$$5|xKEzcf+6#< zh{nllB6T%2kKcWL(tYVX+8yBa1ppOg#%LIhpnTUui)zDfkIv!aOQ&SEk&^!9ESNWE zpb`7N*uPp%9w_3JAF%()J>cWXSU0VsEIJdkvd~pw4c1XW0zB1wuk_fuez||p8AChL z_RjWd&GOF!%dJC88SAsR4LD;4BJ+qhlbvPBjuN)`tt%Ze)|vyf{DR{S6G!KHyyWX^ zRQm1>Flss6U&&diT3=7iaO&)d2t_9G?iS1CxVTn|Q`8r_&|!Ix%?L!q%!@V z{Z2ck5kK8EK4_PTZFJuuaQ_39(A&O-|RiMl3HEtoMNOTt07FoHWJpgI67g^ z@|aEYZpBL1So3g#ErU1khy)lH=ww=~=s{)Dg@_px7S=uJn(P%=KcuFqIpwdJ7-*3CyZ+({5qlJD4LpL%=XUR(Qd7~4wtF$zlBoL?tJ-mx@ur_*WV-&56I zvfXoUyZ*l}!n;#nTrB%;dmAY$JD=fCP*(AXb5f*GHZ;neIjy0|npZkBu{)=%z_?~? zrp`Q%i#6766^{rmG(a0X{M=kzsxVTCpMmFLI&2&boEimOF%w~GU;=VLED#{Lh2PhY+Zt^>;%)pLls~j`Gwpk5e6U`Altp0Di)BfIj*jkUTVVTn zQK`U#M(G7(D+JInN>yHw2)=lX>%akZ^pGw0jHRXr(t;J&Gs}Hky#B=6I!)kL?u2f| zpQ`m!>xXGH{r6gZRDJPNqkAi}$a5orGOjD#tMC1z7E&Lv@Vrk8u0I?Z6+5Zk-}6iG ztWaUeKxveh@*yX-UnN6Ptdu#%a;M(Q-8-n4okC^3Kd!Ec0nX)kY7Y`haP`GjzzqVn zANk?4p^y6pIxoJ(&118~`2c>FWs`M0;YUrp?OqPiBbwHZIFHuxWOsl=!=2rw*Wcs( zS;Anv3kga9vo66skDNk&g7xtp^U2`gVD`Y;1h^Yn0&_rzNsv5Pkn+m~)S9+|FUJqs zWMO)Wx-n;8_SRMHWE&1e4H+44Sdu1E`6!Hx>}C|X_E?6RC5~1rQ-y82)sp3U{UAiF3S}WGodah+yH!LZ?5(zUo&7{?t=$q!O(dRjV3S=j4u;lL?IpD%28B; zr+$9fgM`d*G56xQ))Ww;V-QzlFcuDGJ7iF-f$2^Dl1Bxo3K<9;-$~g55V0z7Sj*LW z^Oh|$A8oQn-igCc$2^a;`9`Y?U4TNGMQ0;P!b3%*8jufKv^J*MupbZMlQLf=T3gQmS^r}5dt*x z5%Zz&97^C~=a+_9{a{R9_pBsIABnZ>Vvutq~7U76X zVPcM`sax*$GOO&5E<~%}!5YZb%@lHbF%mcg?m|A&hxu&Ih1Y8jX+Mv7o!^;0rqpJ{ z>|+Vm7oe?@(f-4Fh3CM8u*sDrP>P+SC(t6d^syh2_4xy{@oR%UGIh!%zh;MXMl>cp z2s~J@Fz#uix=qM-D#_Ct|BrGB8}Id0j<*_npVd}ekp400_@StonGZr-SKX?twkX@K zzDg>7lE|L=l8yfHOW*5h)C#w& z6YIdG17|B{`(7&dVT3t#_wq%pVK>Sz9^ciDxS?O+6Mi(Qc`xR(d31}G!b5>y+`(Ap z*=W(kA7LxyXF@Z#Q}dkoc8o6r*^%+A z{_o<`(ztaFHAXiTK6`vSHYOmjcXBbcE5xBhbhG#Ek5_Kv2lqBT{d62ZfUwqz?9ZVg8iz!nYc-~m-8wYWGOjbBMGUtYJqc&UWC zM*&BIEXP@=DSvCz!=oAOh0LLa^s+NcA60nP)@r(B^WDRnOWrBsU{x}HyiZiMS9vIO zH0OH7(vdTo1&KNaB}IOC0dvZM8*#;65`P%t%=e55}K5#G>eQG%1kB697$#+GE;^!Yf?!vPh}Pol9@84kXgo1$UIc$ zkm>y$_gc^Uyzlco-?n|*_Wk>2h7?b)3hs@4sn3JufK9&~4hiiGqTHPWJp+ zRSF79Dg2|daRYvGjy018|Jq<6FLM_E#(x&1-n-*p)Hlv++EP%^(35}GP&^N3#1EdCBIY7WEe8*^95uF7J>|D*V*-b>~69=*Mi^{d|MAQfILGzi@VUpEoMX_uu+N zeacN@-`v6LgLUD;L*K&Y!iD)|)|+fQv+>{qw)mMNG!M4oe}3>Ke?C|zMgH8not7GZ zo;iQ~$p8PB|DPAZFY2^xyWiclRC1=9u&QZa{?3lEF#gTe%(aSWR=`hsPcRCYT<~lU z*}jw3G+Qevg4_e&E9c3bICJkH`SWoj1FfmR?qe$C{{(hjIj{BbUw5W~=E<}Cva;lD zq0bo&3}5-EC$o(CJ^%DlMlC%z+V#bCRc*PAJUl!~kzxz(l9X%LDkvzt&CHCm`u;A< zvNM>^sH$Mfj#IxVoa6EvHutfyG5H^lLyjIgbkEm!D}|Vt*xT&vAcbvb?#0C7(}SJ5 zubK?WHQT&-lfuErzG1cG#iwrN0QJP}3aRP=!NKRWw08UX`GpJJycZ+&NHy2$dz;qn z_-CFWBZIXses&k{zq9*<*@ZVc!j*x7HQ(}W*M#yJJu!T^PKrm8vC%C1NLTTeI}xc| z>_JbG)|ySVwH%K%7{7WY`q8<#4@Ejm5{|`OPEJlXvFtIk{oikQ$7^MqeS3e~hu^sF z#!wwIA3wilw%Ja7_vI6}Zrw`bWY&FuE8c#rmEx7!YgOF}8ylPB0s=05t;-3`w$wTD zLmn#uxGJiW5Pi1=o#`WtP9Mcm*V@}DaIOq}%=f!eB9+aY-%;`2>h+T=pWnAOzt+5; zEA}nQxv;lZ;;mYW#~nSXNgBapd3nwcBT(c<*Pw!!Apc6;&BnguTKx4?cfB zpOKOAHYX?H>c@w6BaQ2?UAsn+W7%1rbTN@4l=s?(lP6D77#bT-w_Miui-_<}PUbj# z?rBfS-L*P}PCM_g$Op6KR>sE03OUWNZQHiZ(9rOTm6cM<>q`s$0m^URzGb_m^(5oU z2THu;_=yunD@zMiGn0K4aq7u8Z{51SG(So4tMHEEB$Sktq?V-Wu|;ypH_Gj==gf@VUS{SX`VZ6nU#14C z$-+=vOjI)J%&|NxBXiB%T)w-=^`?!DL4BmSPTq|*hYufqE?|0Q?)P_lE3cySE3OLz zAr8*Y^h`{i9v=73i?{Xd&ANa(ucW+9~d%KbCW38!DabK=nxpD{B zXKvj(Nr9j8+=!2yTPy>TZHoDhWRaG_5W?+-4scGno7rR8c>iS6SZ*90MLd-uU$C)3;e!N4U7W=jR@``mr4)WHw;smP(#*4ExFXtmTV67}MRc8bkT zmNX-i#+S03I(ZkU?@X;qTDzHAp61;7;X*}DtH?u^FVDyo^8eceYDm6X(#0y}f9W#YbENK$1f zf5z+;7RI!TN6&Ei?<}^C?O+X)R<4zIT-@P5fBt-`sGw(LJiqwoS5V2ulA0RYUAsak zXU`|M_y+`h!~ttC5x{c(of(k|II8%$u5J)}k&%hXFCgIJ&n&U(Or;rWYU(2_ENdp( zjibIqpI%GxySrG~#Dq;Nl_6VexpXA`?b|C~-(C$ocJblN%*>&t#-(Nd1 zpVP)uyi__n)|P+c2W6r2TzO5+&!n-s%E})&xfG1Mck>y3-uhZCsT6lm*!hn|jD1Yr zhYKqULF|_dW`@7a&(BW`MY;P&L@1s;yY4>Kmhx}k!lT?*n6kA}o4tzz+~2%;L(6#l z&eyLRZcCFg@sauO-}B$>J?rA)^7Z{~9*Veg-m%wfpUW+XC+kT6n3`HJJ*pHw-`Ex< zd1c{!XQ zZ3+SN)~BwEf41$}BY)-$WpHqC)kSgd-6ziI>lZit`t<1&Tjx!C`%A6H1_rT9%uGxR zI;M_ax}T~imz9>Dp{6Y?EX;RX78$4xsi>^<4Cc~iI6pm|fO;e$BqBn2AwePRP?Kuh zIXZHhPMxB_#_t~-^bZeDc{z>sR7=&GO&WXV>3Q(*;k9?Le^FhSDV%18W7bJY4^&KN z(b|u9F=JcpK56k8i%Nax#fv?-RaDVuJT`qQFZT}&oXMRYCsjpR+2{48WP|J1&z(EB zVaqifW&; zt2J!-uxQAzed~g5ZBHtLqhjCghSDID6SszVerUBZ+1lE6O_?0Qf_Cxk*tIJ${BcT3 zN<&*4D;JkynEUFA>+jXoy19k;_~mZ;M~cq{uCA^un`CQo>lHlC&dzQuZBEh5Jfxhr zkbAMnW#LSSb61vFz4cM+;^`@@@q>NhPH){;-L})yPtMI<4o=m|X1`YcbU}Lr^|+D0 zDXGP5VPPmL|7PDgziPCYT^jWPV|7tV=H})`kx5C%@SUr;YK+%QDGz=Lu&}iJVwNqE zd+gWGpMgfxf2jxh`**NS57kQU*|W#UNiR7^E0x=3|5U=RL>>8SkEVM+kFoxFO&P@6 zR_rj@dnR%9`}Bn_r)jLvD~-jY9~$=bYBCqUR(td5lSD$w_dN>V;@Dr!7jq=8vuDX! za`Sil-r1vmFyKz7*6*a`9{YWHH$wPcJ7>M3j_5cMa`+7Orsvat%S-x-cHn$p9BfI| z-sOER&Xy*@vNH$Ar!Q%?zOm8&`3dvw3=HQkT-e&$+FB)>E*Hcu!rHvlU0WRS{`NS7 zR#cQAm&eNR>Z&I{E31qqx3IA0kf@_OFv;@-#TVO|nH61J#I9bw`ryHXt<21|WnR1N zBXc;EoTkPzi;7nG-80d{4{^LJwoxP+On_zYx=dScTqoWXZqhw4{58a`t$J| zJ}gE3U@CFiaca1d{-U1KRDX7k>PzI*rX*|m1Rl%+RXc4W?&*7De7 zeyPDMTkVaGX1mh)^Baqbie4rp;LJQIE|x@(;t339l{BgjzNDpw_HrS)Wv_%w-YKVy z%uL~%z3all!kS-S@@h@h=7@0nanrbGNU?r;MQ@sl{nBf-4=8d!e_9N9zK(qp7^UNb zN;)_=NTE~Y5@z1^#xF4N(|GZ!-tg@wFJz=G=QO!|9h>yjS9YHK-rTGfc5CsEB>>## z+FCC4{3_nwZu@X2&9UnJ8@-uD8B*1&abN5y<9EqMWzjBsrOijh%O1Y`T!7t)*;4yt zf@O6@6SwZ>tDR9BUhxi8)gIA05u$CxQU;_%qreZ`RB~rcAje$Z$AY3Fi9)AYgXzIq z!|T^GOuihdsjaQ7t!3fhpmA7w?6&fEXms@TH@C{Mt-pT%)-zmvS@3J-_xBgLwa1o) z3knN^jKU)#(laugerJg#oxZWMqWE4DDR2o4~aZo$|_}j{VlhoQ5K9f6X-B z(%#;lqF1P8%F8Dppk{S#&@~a=J&Puzcis84L#tB>my%SaWyet~+tDpHZ{GZLpZMRf z0ru}}y1vcj_ z@hP1VZI=Hzef|CP^z^{FGPTc7n6_uIsH>}s4E!7%EC=A7oSnVYwf@@m>kn~9v&~va zYZ9s6vwOE{v70NmPF^(qXR%cNH>mzCEkR%6WNfiL4;?;S`S~;Y_EYSPEBICQWLL6e zASDHJUC#51iviD{KS8Vi{?7i|!qfm70Q(59fWXU3$?CuY(>)*7Ha0b(M@Ji!JtG8qQ3SF4JF!|zs&>6bc~bnaZ4J?NlYC# zvK~{6qm=s;xn-}=1;_h?-6xEt4s2=JJe-`td&pZxOJ0DHGT)_DWl$26E;HsqYvG!tnH5LBg^-0;N5#~614K!Y?d07kRy-408iow08Ra=FeP zW67=D^d%*IPwnpF4$F-P_0lqos#Q_Qu)NY>0l33zuP&_FwQCmvR48*xMIIoV;F)JD zjjmmjLK_;G|8M-$pOIE}Nai2*Ir^XM^B>XRtSQ~Yzkhylu&{%Y7Hr_==4QFBKl4(^ z1B!ymbJ>4s2-N@Lt4A2O|95h`@qhfw*nU2?RME(Qfcxj-4svkFn|-i7&dYl`UiGS> z;gPU^sBw&-@K(N)Cll0DwL+gim*aBSj2fg<>=q&8vrqOE(Jt=A2nL;ti@^(q$HoFe zL)o%>gf%oZRo>sST=_f3Q%Q^WVL6lZlRq#h$OC;5|505Vc~MSoQ$j+5jkC&slSB%B z$o*uNsb~m7HY7DX8n_$92)QJjvYLBFf=sut!dNIla?KyPz2U!WSMMxA!t2_ zviy{hmlDv3mX=n?eMJnt;#_hIpII{-Na_t++rvUap(o5+8*(hQon}WpKyOfpIJI-0 z4iB3g6T&)er}Yf+4coB6WwLA+r)I_jurPwYuGfWEdeH1TFDG{hh#%YPoXHAFg2C+*t9dxX_lRw z1rQ*Yx$n0%w6rn|E4RPVE36u6N>oX1ad2=rZa=EFef#!T7ZW#2J*54SoL1EP=U1nI zWk;ZCQv$EW*W=A***l`K@u(ku%1qTrKQr{jM!azKebX!TWTulAjMyI(4<0_88vb&4 z@7}$*X3CzQ?U?{bYcG&`rB`s?%#5Al(U$##%X8h}cHFw}-d?NN{O#K}Lc;gE%^zeB z+JvuQ^xbx-?ouP_l$?Wu&`x$WihYul?!P)t;NmDu+TJkl;@0WGl~IICx<}SaEYd;P_`#HV!&=g#_gO1i^5a8TRA*-r5?xFg?UE&Sln=KnI{BjiL+GLwo(Xpd<^6 zv}Q+dWYuawKtPZYkA6`N^n-?`rjNC?-k=bTvC=dEvk$$zXaFkCCby{K#yI`? z>4{&<&(DWm;Rn`g6tR$N3iX^^A@_ z0pzCH#Z6GEbKy{gRK0jn_Wb!% z@v6si3nE?iN-E#Daol^4V0l&5rXV?w#Kgq9rReAbs50_5ZoJJXc=U)0=M$fB#njaE z?%g%0VkLc@RwuBTZJfa+5~RHt&=l5QF*dG%z~hPAz9SMUnyS3kL%moiMhyvyd)!tQ zjPbdXfBp>iR|Y)YFByqFv~zcObMj>$XfM8gejg&modG%^K&z zq^J3Xg*CpuzISqS1wl>^vaonS2gtDcF7j~8ekC0pox8tuQHXF_$(F^D16smPd-U`v z?J+SNrug7ZY}+EFH*DVfDl1w{9z6ng{gMcS*U&X%<40*}JVsT4el_HhtIEnez+gfi zyZUt+lH$qM^6x78e~Yz&XX5{uW)y@Rc(SWn6rT|L(l_`Y?J&?RKEvoU#3(I6JzpH_ z-QF8O1NKR{urVD%_0utR@Rmy|R16LXIDBGhz0vjSs;G_;G3T*U1H~M97J{z4T31z9 z7fip?~XH%{p;)M-ZcMAo?#*z=WNo^f2qg+cX5y1!RO1_Fral}Tia_-e5=PgJS@ z^9s+Q(ZI*%EsLl@toLHrv80*50>6cYdP@{|hQHnSH$xHoE&wnXMzCd#zcD)RfdzCIOSJ*aa004Zdh@+ZY)? zgOyj-)VPdvF8<2xKF-e%oyr%Q0#57QyLW$nO}`Ji+2+6HS4Vanpd=~U^*T8~P&)ZG z9)W>7AhF1!&Fwj9;ahd&(;gF0D+*M51-?FXvtj+~K#&C7`bhkJ+@5KSW~7Nm0tv&v z#!>dD;`6g0%|xsWP?op~H3;Y??8nDP#Tk}$&rf)v@9^K~Ii;SaM>I_wj}MRF=U;a>=--{RW78ab6%QN(lBWA|Cqw;Ns zv?Wa3`6Tc*1wMoSN(oW7j~_pN09rRuF0--()Yx~TlqO(_ zUdG3#TX##Gd$zX{aLv=p%Xu(ozqr#`6s2z0Ip*qMt~hkQy+SuAaF8C-?KubF3w8NZ zTU!XoKun8S(xqeutPYW;)~;P!7bRH_zKUC1hH?#Q+`!UO5zLuS9uQPto`Q=_S6DdUDJBaGVeJ z%|)%G+M1gA`97a0r!K$XgOdu%T`QkgS6QvSbP61Z&Yh*j1?f06EKDU{Zs&lrm6a8k z4THvIl`(Ob`Qwm&*zF=+B3Erkn~#-0Ws-sve#6Fw@_?{#7)Wz;i`htfCM$kPA@ulN zXo~dv_tyi&#o`g`rf4zngsQdva7!*rstF*T^ipt6r_4Phj-q;p1CPAyc z;7>p>_xuja^!E1NOH5?NcLmG3+5dSPYHl6K2=B?0<&~Ax{QUe0N)c5!AS2zylEtel zqPSa^8k^80uh)crK%=y4^nLNd3*C}cInr>nIjIJl76EH5hKHV$qzemvOxM|}NtcO|la|SN0iE5r=Qr^rc^o|FDXa{U6kcYy>2b~ApdwyxU{!3e11q%Gzx5sf@U+EQ! zpvwyh3Eh|-y#(d)32oMtyrN>g||X_OIYe%PhM9oZb%O9Ly*ivreN;bBd`gzjYzuQI`Db%=Ps4E-NdOHeO&IGsM|x&$mr% zjLo?{t|u|yvzC*K>x+qi&O19#6eWt-xVZGp%z(?Z8z;9A#D!YNHPOlQQ|QPM#=qL? zZ*(dlW7{QgL5vfwEGsYX{rOV?g*D%0fe$)RUVgqxk&7d@e$i7XR=3>!Htl5h4GcVT zw?UrP7pP-mdU|cNS<7o8uR?B!REawW3Ft#&l$%_!+j8JIXg`joH$cwz<0XCC7Cf(^ z8j3kgP+)~9+~$8!8AU=8+5VJE_gx@XFpBqD`4w|>FCU*R@CiOvRXsr!iCC_pX{2B| zeoUe3-83v4wh=ZtP;DAr_pZ(yem=fH$KBrNsQ-W*-HX}IE-qeJ;(6Ttt^e)h6u0HS z@IK%XeSEav?J;yx8y0+y#z`l)0KITMm_X6O;2x3NziXBk z=V)jbe+&<6q!h_3yVc{HG&eUVx((sDiga^aOsMJJywPK8Z}%zg?|Oa!Vx)HR@`7yK z#gVuGwN^)0mztK=WpM5i`%Y*M3gJS2IL_x2b3;skRLL#{)*N`*m1(S8T3Y(Ks;acR zd%v=>@>6f`H8*bGz8op=9^fCW7OM!vCyg2sIX?QavO!8jqAC%^PhegWA(JLaA`%L$SmM5wUlA`eSvq7jAOTBv&iGEDXEd6vXQ(auEj7x9H6A2IDd?Gkc<*Jdjqr z(hD?0EJmy$FKR5|X7GxDfX}9?OY)2V`0+!)wDAG%^EE@mPq0aXLll&R>d{R znxB{V7H4C-pL-)8Vf}$yA3l6orl+p;XvOD$V^l7wvLim(#rXpXEoSOUknNTJdAzp(w4 zn;$-WfHFl72USgNhoE&=|NLa%%&*S5?1VVrEjyG4jcTO`ksy5cRrAJ+I%tPPr0VIp zLP<$E+?41OXi0rco509nIziY+;o;%vp|MbiNNWOx`ttVb$F|^yfV9iWN*8!U#qkYO zbl(TVxBW3XS_POACTyE9)ysQKTh7wyAF}QaN2wMnrzgNKR)->xM?Vtu+T+e03W7-5 z^xadRZZ3jC0br)XtA0T#+|UA$%F`vuxU#?_A-mX?>X{jPNt zI6|FhO3~!MULUCljlMnCx|=^YED8c3Vea!k9;N6P@7uqBKfp!|r}OV`!bcTCOQ1iH z575)otC|-=3AzU6S@llDe)JRE@J)*K-7N)w7BOzOq=Q zzVRRs{Z(2zx{=n@J#}?;Rj+2jw+7LhvLNY0>}bHRZ=l<~?i8d4^c>@<{z?ZYC;zap z%5Y&@(rHJ~&WKqhdeiOi2rD#5$FbDh;jih30TQ3?5qyRcnttn-7Hl?$@xr;t{Msdw z8907C8aI%3uaNKUZr2c$RKgrtC``Hvgi$psnwkP0JXp7~*u5%oV#_A^`tAWVBnOAQ zx-4ieghw6g6fCg#SFyiR_GBlthwZy}%fa}AqIexrrOx|X-dOvlH@c#@w`lPP`S}B| z0h>@MdnS`xlp{o>0ktW>aG{G%L$?@MMS+Ee^(Dhd9t|-m+ywhgfk2LzLz_zW<0mdTgi?4fj!bxlo8ktReY^cUiiRCB;%#*d6M{S9Ff zwmE{9yMCXKq1Dx^chT7H@M&~G$5>6Hprbu6E32{+6&d+vDfNrVrX_uS{U}`e+8dzs zMqSu0ft|Y-b{fA>u3A+}K!uu_oef$YTGfN10?)wpmt%NjK@$&KuqL{-L4srDNVcK2#;Gt?HV_`8ETABMXHomV@cp*_T#w z($jyS0#&%4=2&>(JWFU~fE zmA5VnHWW(XLU*CAgmCMYHZ)AcThjO7mwtZB4}ca&3OEVXe9gN_Jo2C4--jUnaue)U zjr~&0$ijOYTib=7ne})(Ds=9e2+Z$?elGMiS6miG@DA&?CUGM%& zwSKIs_^*&tpxKl_n1iKOj>WOC19+>gt0MoZ=l_R5yej1E?2Oh#oIey@5D`B2l_mEX z7JJA=*FhzTqlB`GVq1o98nghJ^XSQw!LMGiS$)g98x^%5h@iBxQdScbLF7|e8B#Ct zF4!$VrL1_16`4QPAZf(k2AIX3bp1Qym*FaHWNu_6t)sIS_^)cwXR1qT$M)@|$aDpM zFr(QUJu@@ky}D8X88i<_6eX;pqhmKN6svL?v4X=g&p2n^|7VY|vlGBAH24xLUFO7p z3rxGc*nL&L(ij;GNRXeQI<2%ifhUv#V6V~0yKxZwCFp(v6xbj!`4Davh)pOKKYDx5 zw7t%4q12YttAcC>{Ue&`pxR^No6c}+}B^`fnml|*0JRqi9X5{eSu5HG(A`4I(Z4YyVKP6o) zhz+0Ghf`B^B^>WX%fxq9`0DOGd#0h+_5n%Z25aY7e94#FFX1AzX3ZL;jP6RV%-{b9 z{eiy16JipvW5a8H;7w{G#rJ@qlch$a$G$P$qMZ*qr8YuLyeCc!pk$f|>?Xk;LN}>4 z?`89K%hpna;!A&2p{FK{A5<>>vnv7Bu&M%)Wss4nXnRfo1bSG8+p-fH8t!y2-U#}N zRMnpoftG-_LN@&yA=2P@pm9AwyzS#hDe9alEnla(-?iwr=g*%Jovm#jP7ONdLkJlv z5DX%&m>@`2_F9xk>RoK;ESwr|@1X2ngrfw8>M+r>2BmH7zT%`jfDF6QW>0*l3G9M& zyAf52Z{NQ!^m_3Ows-a0|rdA?k+;uZ2cYlZ=?TkGtL2E3dIFo_lW4@T6*8cTko|u{W zTv_S(W}J4PSSXBVR3cB5ZxrVk>`w|#y@F7Xt)_SO<{eq4Qt;cL%K1)x2lMt13X+Cl z4qyExD07(=wJv%Mwr~uD=%u;hRj^iW5AM0FcZUhY^Pa91>^|=L*AC&gQUD`J=T}h- z!22nDtobdzzP$@Qh{A1o_A*WmC=%W2)29WjzG*P|HdRzS0)ZV#>8`G(xs#H@iD0KJ z_J!w@Cx?z7_bqZ=q-;pK$cn0)hed-*0h+qs+S(e*c{Qp%kpKc%mE8u{h#xyfjdByA zQj7ghO-DBXA?m@SM;8m7?1{>L>((FhT4M+)@P;;JU5EA~+g|iA!&QA{ad8naH=grF z2&*IhQtwp?j1)$&A=|n2@0{njAqT~xTmd3xqGMs7or8mG3P%KL*BNLF0A$ErLJ~@x z`o3oEhPOu53>5ps97>?r4Y#It^5>c&C5Y1m?<-{cI))PpRZXMMw#GX2i%YE@g71be z6F*Xf+Uf-8+PN{~G-A_Ac!CWuXIwrtrVu$%7a(WC31k6lz% z4J<}|Ou7(r&*l)b=q*linsBcyx{Gu*xsjxUnv!nT!VamPfIHxXSg>T}UnL{`{Ulxo za#fXuA`t)(0})+9LIQZq7JHyAvK~em{6_|p+VjfFAsMc8MvGz#1SiqYgSElv_tI78 zP)|9Psvf7B1oZp0ql00$(9TP@v4#hz)DJ?tttA>r1c%(6hK37+ z^-;<|RlNNCeGp|us6G}*tV7u(W(UA>!~5ITV&dXqVvaUj_wTy-9)CVi?Y}WU zan-EtjUst7ID{mQ0IrCD1&3?))P_`#3gyTTeUtQSB6wq_tZqw;nA*$0_iET<3{LZO z_lZrwr329?aWf#!!7%ATr-W2Q0qKGQGGsaUI~>DOqyvB^`1trBo?b&*cX(vvSoL7U zr>V_vA-?rACta*+nZrpWjT=FqM7}$g164tqg-$1MU8*9Et*=z>|iKW?xG|x)dY_z_~YK@53FmO@xTN);*-pTVb%EI#MFcgKr)x1no9Z0?}g?fsCLjre~k zv@%Lcn?b}7)Vk{Enu{M)pweEPHu9=vwm$Y4&GJ3X8{0UM**f!Vhc<(w zl%Wy=SG|Q!Z$uc%O*=b7c;!`DAXZZYA^KBLmC5@;vm}tleQA=4Shm4?MC@KoJqs&X zVMIx1;pYCGv?ylTAwVL8V$w73kTsbiq0l&)EwHIWMQ?M{vnn0o<5T^ocZ0W~d|v-i z>H$RFkZ)@&vG|jJAg2>*{BUzpfd3!Z47MN)2wEYveidDUCte2(U&!^Z08HiUedXR_ zF7p@iHu*FL8FnoMv7%7y%9m z|6A#|VLE8EcnFfvMmoB9&^Dez{Z`1)3y_&L(hWS+HmJOA@9czJBOD)}DFpZfNuVlq zn6=)$A}zbTzFv9gmZckj3nT(Pt%qkTub7y8#_DOjzm>Y~3}K=wqvwySRb`ttJ%r8( zjcDNe5!IZuW{|0%kYhzplY4MK*dl_UMvnW+jLF|c%e|0pP_!<-2EY$!0rO>7-VS;F?CJFubD2f_B9!|O)W9?Wb5 zbSIJrHIDua0b?t|ono=f(0%~*2?Ds;SHAkSh}gyGsKr@soT@npk_@%?-?QQTzUs`l}0f^YZe}P-cvkR-gfz6Qg$A-SqQ?h2XEp4^N9?fnWJ-rl|NsuYV0a!&uv{=)oBF$a{sTVK* z*#k}p9hMis$bha+8=@-GZ`3q2eP{x9_@xp)1_p+36fY1W29EtOxgSHk1(!8I{!Jv! z%j8=gFNC8$bOYogicaZTG`^(9n_Wepk$&S29}wi_n63jz`X0_g2Wn^iUs z;ut32S475aZ{GX>vk0UJQz<0ih$F%NrzD7{3F_x5FiHJ(?ZkKsnqW(iEKR`6;O}3G--(`KV*e>Fv6@9@X&iq5HlQBClDdw;jP;a>(8Gsa zfa%&O$DpXw;`_%TzDBGFe3?m$ay+CI#LKh z=VFlrBW4`f;m(b*3CdA#_ycR2NUU2n;OHd!Xaf*#FsEiIFd>k`M|cS+?U_Joqphjc z!0=%RnQ!Mr(mDby(FVKgP}_Ka|0nmA>8PRIV)OR<-y;f;hO3wr!i)&eSV^B!Eb=-k zN}(_kT~?RpfSvkK+KI;eh8DL(38;dULXgI2Tm%IfD#3AkxS1IcNSnM%rg43FNy(jK z7Zcth)Er?)l1cE`!MJ3Au!QY~efjK&e+mrWk4s$Nn5Ldgy=99rWO+ho@OwM*)8HSZ zXy-md5UY21c)nv=WW2T3>Zx`h=`c9KNezy;9(5%b_zTye*pUes+!)w`cxO&^ zj?*_$p?6}W3aw23%9R5EimDHXkHgakq9fu1;)ZY;WB7$EBZ1F|DQd*{l$GVk5fUVV z$vbhzbT5)fusL1+v>W5tO+eJM>ME#wKuu2)P^fR~u6($+9=^$a&<3Kx5-~&Dx-dQ^ z@%DHZsI#i$7eY9_z9ry%m}S2!=?4DpL8ZVchgnK)^KS3KBp#&*F-Ja-V3BJrnp#>& zx7(FBR}+67PR9bYEjZG|-9wZ`1!uTtva>1IqP-LvwJ`b>1~1k|8B4jGwhuL-s^KUM)lZ=9AhB>AKcgPBzq3zn>rrjc)6d^6&Xa5AcJxMv)mp#P$B}$hP|3lpu3`3!Hwx6%&LF}H!J`=q%|lb)c}?m zK%cfwYE|NYBB6IxuU5c&#zl`bC(*-u_yO}nbzj)6+qZ|jc#5KN9Ej0@VJJ4KqX-T_ zoJ4@M2M4(v8ZI~(5nKsd!TAV0>hk|cK;`&=$1cO%>kFYpFD zPcSb%XFdIQcCuA}_H%Y74y=M{3d6~y0J1?l;F!kYgUlO)j2*B65kAp10PXC4e%%H` z3~+o6Bg}5xgha%VaCA3-#*moM^fI;q@2#I2IF*U~8fI>gfnENNBrXBy@C25Fb@%-G zrE6kd4)76_fvFer#c)D`w@A$2ff9J^v^l0>pw91S6mvLEW~;!yKUG&JH|(0J#a@H> zMdmJu$BI&u1o08N$zfcz+?Zk{cnSmK7>_cdW5bQ{G&qc{VR|_hnrQIkRYUbr6~JR~ z{L`#M9xA9q5#?L zxTx(yVgNuyLMR4xGvsqI&GjYynv4imEqY+ww3zw!?YTpegrcJM30Qo+FmxEca@zt( z7xDbb6b5JuQCndtg4YJ_??p2Syn7Uv{$IFw{yl)$7}REwvAL-!$^#r6UVw&;5aodp zfS%OKPvPq50e>Lz)4_>>8SjIz7?j0N2W*!A z+5@zb8-Ulk9_v$(Z4VC5n4OzrWoO?+0Zz`MJY{HPH1gDNRlt!oe<^CoX94po8p0}) zF7v(+8jd-R0TZHblI#Z<6HeiyZns6np-=qiBY)?{>#>D{MgTqjWk*!u)^FUnu?M$Z zjz%exBuoKmrjPx!UjyRO2Wao{yBlHFpl!diwYZ4q_G%VLktCY$fXLX)46DQk^`dki zfOmn9WzZM`DX)e)3hQ+jwnp!Gg{68BaGfYwZ;W*NA3 zK4Uc^HF+W;BAA439DtO;bvzBnhj5R9`2uSPB?Se}1`)MpnSOJ+AkO(Y3{1eb=eRH0 znso6ICd2%34O4$QtugJGY&#n^cMX9C%sJktra#*AL zh+XXuIE^@rXnd%i*Sg1EN>U@LgtLYZbOrYNt%H^BEL~Zq7lD2}va?S>96}qQ-?3xe z9dB>%M&rRsu?@sU)=JGOk!1mn!~x=Pv|pOPnPc@`E4u8Lv{{j6NMc1;ktk$USMnUW9H6~P=NzwjA*j3{YF+RSGofhEG+FBy)c5JT&hA8q z;LMWd!s_E#FBR#{zj}iRG7rr)F6DD`X*WKY|LAM;lW8_-Z z{!D_ASB)RVY7)#u_RV=OZ*N7vF&9{NB+rD&L~8WNvhUv`09pD*Mv|Ty4P#OPY>ULB zQO4Y^JB}hU;4o=G0;y*nIcDVKz#vdxa981ahQyiNOJc{N8AOez;3(;>FOD_pMkl# zcJ!7Yz!iK?GFA!ckL|9Gf&wkHq?b5kkh6+)z%%jvY02o-l>kXs$K#E0FW!|8Y3S!F*&KCHArIHmO!zV91>uTklmU7qmcaA)`f= zdvFN@@me2tyzgLXi2&EZ=gA&FG&6bvxDt&4eBj%_Q8CnklJUbdIWZyi5L!u z;!80u(qW0ddg|1vyEDmZ?61{RtNdByUukA0G^WKLukhJFRO&&qH156{fGyAhQJ5xv z+Ck4)1!fXP_c1WP2_nv-e15hWf=bw+d?nLBhSI=2L3|<(69<4`k72M12R{R5_B;Er z1eaCltqRBuX5hI2h99*8p z$8+`b)vS!3UpHev_xo=C{Z0Ph5s={|I+hbjD7lDx|mnmw* z*+du;IdQtrK?XZ9Fb1QAoFZ)AtLEm__~MRz-hvb+U*8_YF*L-jhy3D;&4HN04Jf_G z1qBmfJdmyn?1qMrEdVJQNim#sBkVFV3HL&&8;Uw+B#8t9#fi}SjzZ!EKt=B9?Vb9> zS05#*4E886@Dg|q`rjkqBLKltWLKZUu0;yc<+|g!vuCeZTc^c^BDvm(=_B~hU@cqm zCNE(lK}6(*8)mv!nu%QkQ{MC#G9XP3P75N$VrUA7#l>|Oc{#y zS1J@K8tL~?*8d#~*2H)>o)>^^sGN9vcznDbO&Za+kDZ;`@||#pb8>P>Dz<~y-Q69t z!=Ir;5eEPpk0eU4P$t)H@8BSrDtSQWzB9TO`r-5^V~9&4;293R3W2+%TbD&dMTzkX zv@?%xC!OPQKpR{-wPrhu+*|WDZv0$etR2uJd-m>0t8YXA0JJ`IKOqJj!n0IKoqO<664*)^-x4Vf(2^iS}_y23A>h&k#PbSIHsUk?}L;NF)<;YNg>M% zOmGbkB5Rf(10^7b7NzkEvLVojNe{DYm8*JwaCBru7BM3b zMN&D>N=u73sczLAzXlEskFvpKDTC9?W1;&}c*EMj%Rf#-=zlpo5lI>tvaEGYcT;?9 z*SU5?Ue+I6wx6WULJEtoKK*;_8L(aQOb7VFp9O95k%7bN5!)&Dg_i}*4rCxLt0pu5 z{uSfEO>1H}vExCn0_I9d%LNn`xj38oXZmjzLK(0UJ1)%h{p#+rwFDAwX87h34zRX* zjmkQmmU>kaab<$G@eN})dRnYMz4ZxmEbUHP3{MI>P8|Us?|66e-seBk*hX(CY4-c> zd=`iHa>(TL)|C@{*+q;u`pW4dvM7V&Pzk z(hqM|t8b_r29)NcVB(YW+GY#p7QZK1zI z$*x*mnUnPUMdP1}$zf0cL~iw`nMQ#YPz#PAa*lg3DB2$nDvokNL|&9~0{9x^<;^9e zaCjH0xZz*Eh+P#zY+$`a%^v|KNxjP$Z6O(lnXxuy_;W>hT0)5=^^V^25YlxtU;~7t)?uVN!uo(NSTu>4VxmC_4a&Cg+T}MoU%D1iVU8ol9^w2(J#{z25<~cG0!2Vp zPhKtzX20|VTie7dRze91(!|6B5y*+Mg4=Q&mat1V)#<>PL$%71%b(y>nYO&%2}@xJ zX?Qa6(eZAlhc~o9z%q-DEKgKLm0~wniRGD#U~&nWcf#Q!fm~PA)hTJa)U~x;rm+eo z?UV2=Lb_4iN#{ppl{mqme){5TwPQd&75HWJeq$uIkQMvw@#glCj7x2-Hn(pl!lie? z+7c>`k)yufzw01=Og*)3$+gx8@jQ<vPzVYnKh5M6Y_B~P3+HjwB&OhA;7xU1 zeAZ?xA{t+)xbrRUfuqS1=FP88V-Rzst8kH?xd9!2T!%&!vhQiH*v+rgE`f$eieyfh zE@01^bQdktuk{=J1X_Rr3x2mH2Qo^4x>N_~fnE@=6keDz^ae2zvcPn^1sbS3{Q^Kf z$@5rH15KgE5)E1NFb6BttV6=WOgIh51uI~yjdbSnfbqf6(W5E$+l79Bhi?omrtEiL zO8?V^bXpLJ8N;Ac`~gJE%E?I!THfU{t=Q$z=dEM&6XG)TX!7U>8NF!khoirKDWY`Y zIL8BXxL^#vVDb0+B@7=>ENrOSd6tRYpNwDOcwp-M@~ti>5?sm9FfWn4-i1m+yswz6SK1|yJ^tL-7snfN&39J{I%cT^6^=} zl7hVxfAsZ9Vf|rAQ-1mK1&7)P^OrZkriqS0DoE=a-D(8!9UzuuPZO0I`T?Q z`4|UJ5|sT22;w+GKB%ydA|iAn7j{S=4YCs{Jm}^tp8{EtgnNYQu~t zo(5#tnV;BP$BalTpIO;f>4syT~}>pdJ(u*m0qcJavJDGH${}7ON*68+sxh zO~GG3gR?j7zB=drt=K(^gS)F+v0H;9CZW2W+^IVJJ($IhSOgVLUF0xZ+r3{?q!!ZsM04Dl71SFJ>%Xt>Aa)gBV+xLKuUdnOXPMtP37! zfTL^YR1dPeSH$kTq4vg%TCKaHUeG{^00b;RS%PhuO_6}=FbHTSLI->IdJ$c}BnuZ8 z9cDhDU=o1>mSP`bq_HBs3?vDXr+$~=Z{1-@K2*B%ibP98i!lq=|^gZQ+XrZaQa z)EhTOqu`RKhXLlOyt6ZF`relF~*)jfaPUO=ME>Y`>%uz#=qK!tHQ&=r3Px zqx9sTEg*?(++HLYT?oGLvpiV+$6K)L3ZxIj5uTtHQEc8Pb{++j0{31k!qCs(U-b&z ztyZ%F)Z{z6t&jq};AP=H*(+UZ&{E{;4Ar$g$8rw^F@NB-W^NW&ELZL&$&civ%}jg` z06C!^kc=X-9R@g=%DTVWFi(IZNZ9~s2;;CP%oX(Nkr?=h60_z6+nbn}A2igoyLav^ zdtqH9ixnmt4xoh;U1$d*{nbvtF&YH&`w5)aZpTmoc}fwyKAhyk^>26J!r{ga@2!3^ zJs0bs6NzV@AyB{q^*N(p!y& zCB0(V$e{)&K@MJuJfjO^L)kyVVdU71wQ@1@JGXABMJyL`GUAlAP_8udZp1vx-`hN^ zXY)rd!z~4H0LOsp4oPvN>X|K&JTTNQl*w|;X{BGQ04JMEEPwPGIDo)eUN3+;NO$CT zU=Gd?$lPYKw=6`x8@fAo_I-ebF(IcX7Bn(Bcw!UbWw^Wn^U3oH3eBcjh{oZWY+Ms> z_h}9o(J@`8v&UeqnZ2cv5wy2#22(K*A*`8+`m@B!d0Dk&b;XK%{g4NdUP4JA=_P3u zkeCRiP>+JI@N12`J1Dcg1z z&&7nN4A!;q5iqvZ@cI%5B(20+6Tq%SROSxyToiP^bPT*8HaGQYXkp^xmIV}~DU3bI z_u)|h1{g#YnNtfDFl&B{vPb3$Gck}&j@2#9=MlS&JYNKdSghLxB9lm63>xlPl^q~_ zYQy6IxU>YIdYg@O|6JHY4G7n2C+pKDFt1-pV!v z@{lsCM}Nzr$RSVq0S`exFuf>b-tyW5^S?kW`M>q?xGe-1Cvm^Xvk7X`Sa|;Y{$7o9 z7b;?J7SopL=}ApSpx_U!mxw!WxMoP*^D}(# zJFv72&^dUFOlCo(37in@cA>vu++T~Y3GgqD!Tt)gUlbY=vI^$beV#TR9?OORjJLAH z!UOCv$yo{LmPj7cB38sAA+h4oRt=aS2PiNC_}3QW4Mv+Cg2W4yqpVS_+_tk@ihU5s~?BxnNFDpb)T(!x9pap`naqjs?IP znDS*pLI&(IJZB+=i|05H3p0o5=_`hYXHjMeen8hS#`pUlWvh+`BXERv)O~LGPJBTD znNb*LWXzS!DniBc#sVRZ<>2Uu2P~b%vtP(lW;Un=#$3LSJ_$g220}Yzt+#`Q&m$x2 zd=E-d5S1Jhk7OH>W5RpXVpmZh+Or<68Ht!;gJod47;VI^ywe(ydL$>HPJOJe--4aM zWr^zsx}L&aGOvJ2g{Z(GVAZ1n0)coY#9Pot#0BE`J?w$dJDk}5Cw(dAV#jnW7y^o- zH_qp9%D_}?LcW)UJy|jo5?JYH6IZ&C5B~KnC2|@E4-X+CY8`w##7h^NuNGA783q0^ z)7IOZQ!j@}YcNMc1h63_Wn%0UVnIC$TBK~bCSk+~?qG6+7?T(#cl`SfNd`}Pf?e8n zEEPbCgsU~3BxSgs7`6LdXSMbPQj3zw6eu3H! z&F%$?&DheusgD?1cpvqj>Y8239f08G)?O{#GUz_h2;E`omxNJZw-GM@iJC7D?-xU_ zLXcS&wRuWsUukFO9v~RGK(-IqD^Oo=v+2Ie$~oDAe!hT^I5M1@C}7b9o}1B+rDEfm zqO3~acb*JbwhrjyS+$ww{gBUm=->#9xltkFtxoBk$gV7iacyv$P*N zj}3eylsdohcLyOiqD(dB-Mr>$#ht-*0ppKZ@idz{l&@hfmVi+_r%zMw;hA0ljDzCh z5rFrDL5}|nmSCQcME?z=Vo-yLe~-sqGIwXBEEh;1LxmxRwFj|xV;}y( z7LT1;P86B-GCI%3$H>IQi;y*jRnKnQ-oEMHfgPeCn1e#1qU0%5z&hFXmh1d}d0oNY zQPw%V5cMBQ({M-$Ax$2AY*mIHeV?CiW80y>>BL*vx~r)}1Jaw{i+hIFTkp8a+kI!j zNoQZ!<>$MWMy0nzSDarsy<Q z9%XCyai%D&zv5!bD4BlXci+*UzbQ(-svf@;8(CoIAzf;xAs!)jDzvlOC2i9^@wd)f zDoe`iP7TE_a{g+oOx83Ej461Vyji^SmZOU@isiNeQ|bUY4RhpZQG^K|MSDdXto=Fwp-BMNp-(BWO4kMii^k1J_&`1yLXCv zu8M^2K7CmQlvH97(bgl zvC%ZTGq=#ycC7rf=a=(!@3ndd-k#`ehWQWa8>*L!~U$T`c{!C8vd7 zDsTR_mHprnwRoPKWXkH96S{NFyEeLoy{|hzesulfm9?C*x>fU0yqT}U7dZDYhh(t2 z)|8aeSm|sj^q|sdh+J7Wy?4)BDc3JirbB(57Sl`XIj5&OUN!LeK7Uo%VeMCZGtNu6 z?2=_?*&REX4N1Y?&(0J_MoC`2t%WPEK{+_X!hNpZV@*roi4}wDqX{0FZcWAIuiw1Y z?CQ|e32m(tb>fQ=dUj9Vb$4&!EL#BkYL9b~Ze%qY& zx~o>R_?2hUwuf!hCzd*Wu5UESuDCF`ARWCif9z$Y^sp`46uUuKvO4|y$LEvIhJ|m? z&M}=c8(7|G!$l+YI-^RaH|X_OzWCxwUh(pcj~-RjWSGAREmL3!qPo+3Fzfg7$PSv0 zwPm0B+-YSslU}SD<2JpJBqZ42W>&w@sj%(vWv9HNZxgZUV+$vF7H_gA9ozI^(b#I}q+MGC78Cv>trm_9n*GmaYuan-)9!^j{nY{JQfZXgw+UIXK%PTns zrc=l2S_tfvdY85~%hLTEO@MTDx5XE#g^AAJw_1?5LOEPv4rNTXYuJ?^Ou`$Oxef{7O#xxGJi-qnUp?Vc<17w)~(bL`x3|Yyr0dk zyO!w8^~pOg^+m(khVyqX7B9}x&C;ymT@%tr)ql3p*)?^QhE;0e_v=s0+OAD=2tsLh!3dv>}77Krw}C)*ZTqatS8+Rc}*u8(PKmJk|t?eC>GOW!3n^LjU;E zrqHcPFT5VE>6%vc=Z(5t8djzEanPOGHSM%qPnqb@P4Yw4ppq=!ZR@1H z-u8A*->b9V@@jwF^8Pg~hH`E#ql^MAjL$rrOO&Ragib3yl<+!T%Pjh`d1%o6aNL2< ztZu9azV3Q|U+`W{(+^{_D8Jha++GeI!spHl1?<*)vs=HxW3$da#^^WJ2_=Q})T#Qq zY#DmTWSowf6}wZWE>rs)-g)(PvUr8+u|0Js%FDIXG_(ySBTKRmQ6CCszUH}e>WbF- z`~w$rCu`++c3!+#lM-$EXk6&7_QDj-NzSTG!x-4^j%GKZ_(5T zCa(xuAzi^ltwxFK&IMPftCNxzj?gl@Z$6n|VjP+7>CRM+{AlP&dV0TpDGMq`RVGHmxnSQnEB? zS*Mm2PHR-Tt4d3=tDM=3bDG(GDE`f76|=XgCDZS|IX#$SX30<1YE|Yo^;CTLg_={9 zX;+(W%U&Z?xrX4kZc7~@E(iwwFQc(>&14{FCMp>2yAW;5bmXZo40 zMN}{B7yI<9iT0l2>o3&)dn1e#(hF{fp$|+h(Hu)u;xE>JnIU7Kd8gReZb|##Pf<%< zkIfmXM_nFV-sF>d(3M9rnYuYHsX+T?${)L~v^UCk!sG_?*bnu;9q(7k%IS#O`pP}? z+^yPEj~tZ&-pvu^Tbt47xKCGn+-TAfynk*@PS6{YhK0O>}3+1 z=2QMu+)nQ$qa5_KLsRMQk@4S$4cdjjQ=hoG)j!*<;gs1$0k7_6=6PE!t9>SB`8g#W zGmTd})_bjbL>+f{aHiN+@OgfUoy?I)Z9XsFXy(dborc!tlew;{%{#hVwU#7z>)53v z+6~-OoR*+ICM0Y_t=I6!SnG}GYf}^BVl5N1hJ#+$2Y1@YN7r4*Q@pQ2Jvk#B6DRBx z;+nqq=m{@RAL=d7zLkZF=~#^yC@zgL54xq={mL$}U1C;e>ocj5G@)F`qjv9Sb{~#> znHtY&d+JQVb*(_Yr)8DmyLHu$yG+Op$_Wkqm>+aEx?Qq-l)Ci!*P)QDJEty12|avi zH=bVNvgxZNWAyO+=T@87OwW@N7o;i$zwS!5+c94;BmVh_nVSM7@0zT_)6L~Ur^mdh zzn3y|$|ntRbW!h0OwY#xv z-JNZNf3gyjYPAf#2erOOK1$KlHtTMsb3X9CJ~_$ur1SagRERtZAOt3tLU6$+|GHMUokPN}N&&vIo7`nz3DWU%WFpZ}4? zy||4gB75za-9Yc-7q$6oX{=K&|9WO8X*jKr7Zx+m&^x2x(wjX$x@Ev3o@-0&{F+$H zgYnFDNudW`O~tGX+a4$l=FqE(sS;|LOFN(ux97RxY8{=7+7nET0z0j9cXwoW)~89t z4fYr8n4T=n`gTe}g6q^i=G>=igFb!hHBgY&wK99<^6<%FJF&Tn5uMLx9QXbHa!LG) zPi~AVb1R`5GysB$w+-wN+22q1`C%nma|%yW4r( zI~2Ya9I8p`P(3T8D-t`ecaA?bG*)cEq~Wm*ryV z;tux>6@Mz6w(+iMTrF*plT^+u-GA21I^?bG%ha0lE;;hU2WHNSDA{koQ+4%p)!SaC zw&%<|-CvDe^PW)WFl02?3M5AKs_$I9s>LmNn4|EUyt3KxoVM4tu1`kuPR0$o@0Dqs zzbdG1wxZ%SGnib)dsfd{t!cmaJhf<&@YHqPeaw?RoC*Cqy&gGE9N#0U74j#pWX412 zgFw#uY`scZl`N)(g_R=Sr~jA z?6g78-jE^2&^vwN_JP1HUpf0z9O}|)qK#A1E*@fgOW*oc*Rq_#C~r-{$vZROYy?Ip z?UPotjF+YEtq#6itQtOebtJXDa^+MgyF^)5Nu9A=F0-WZprl_WeJNnG z>Q1A=*t(ale`bVp8r@i_yqJBM&Wev$J!okRthl9KRMX44E)aRnuv0z3d?Vx)hchwC+7&e>`h` zO&uRhr*YeQ%WeM;S*5Vz5oNnGuZ7~I`OMA-54-MJ%CLNzci^C|?9?o!&YnmMsgULK zkF4b^LPRWE7e~b}`MrIxI-&GL#=E3n-Or0JQAwUo*gW<&e>q`te8AO*I;r<+A6L@i zc}H#0ti7X_{b^!UdZNYls}{eUem%C|#q1Q_*PR>pwCl)hV=OScd|k@+srtqEcr%sE zXV*$YOBafgUOfMkWvZ?^dnI_VYGzjaa<#OeMD^WfS=fW zFsuGpQbVKCr~GY})2~!mYmW=gQu3=_)_$?H(YgNPa~rv6A9#1J7}Z-+sD2&F!z&tTby6M!yvAUNzI8UND|8o##q(`vVC368B_H9ty+!ln0G^RD8}sI7yKOWlh!k|Z zO9@)9snp8n;%2J>EO&!)fku;fH(5dmlsy_>6IY+^gmjZmqVrF;PAohq{cA9&mQ^9ykz+ z%;i-#p&%w{8sL?^GBWmnQY0b~dfvknB+r8Ii2ol7J`ifT)plUf85q94v;Z>y6OwKc z69sDEDQ+{QBq8zbCdefsj6VSDtD|jOZjuyGNCJrQ9T*}R&jgQpH28GlT!0FLSUU)= z4oU282??Rhd59&Y;aRKOe+~RAoN>bGqCeA_J%1httO*X;Def4ZMS>df(-GL4Q&uZF z^zFNMlSsTYgEq9oW91m4LF}$x-GNaiATIHAIRyFxh6i+BOAO79j(iXn0z8+16$XIq zEwK9FxzFM44S91xY(Y{y^>yI{lNUr~NRgwx2~|H-@694&!D1$HAc=s-{zM)#5PDXz zq+7)Rsg)qTzf&P(pu!;56;egpgoF6ciuK`;eVap;k31M=4~8(~WJ!!5hPUlXw$ z8S#Kn%uWO}L9C@CG)kXdqecH7=0NaA-FlzSZ89ufP#VOTLC*`VggBxq3ndt%5WLs9tsX)UAO?P?m^~bkb7sDBXO@j zJQkDy5Pqu*kT-j^9z`(k2SjxAhama`uFU`X{A}#(n4+=dCz5tA3Mw?wK!KphsA4d_ zpqWU%V1qQYd&o~Dp9H>4xUT%c{?*~$LMR`ROaq-Y^g+?)$JSF*pT)l?pfik!2c^=^ zn_ar}nxnS7{Gf@#f+J*u=Tf-zSWfNkxDsT65XjhAJ|sgEpUHt*GW!62EM2Q<=*Sa4 z{;W8q07>8f{+vTBL+lEY*2HfXvfqIpac;w{S@)sUq)75pL)Z(1LA;W@HI@!SlQcgV7G#fT>BMbx2dsJ$wA6&B}PZTTi-w*HEf5^My9tHk@ zxI)30uO753gY*x<7yU4Kor7RKK;#qy);HA2xE5>31+i(%^+&pS1_ELJl^f6fF5|)? z;(-YSOYnDtrot+5q!U8-5M8}v9(s!`M>`0%NT99Ewc$>1Dqwzl(^GoR^_2TVka!dN z6_Pjr{W@W^DL{3c!_5j1)V_^p0@l^2xz9}NaPcAB^&}PqSWW2I*{k5)hWH`9JlnSl z`)8L^T{rXHU|FlW?J!(L>>R`QfkL)PV|o9t|8blg4hkAQHT0l zaHb@l&Pn2*z6y%lMnz8Kw*9-WD`Fl8G-2}C#>$YI zg{(y)2ZqQ&P&-OFC7ns77;6spk%OD83_{I|4a12xa1|1+vSy3b|aEMT6Retoa4l2STZWG7u!2HG(6(t=O?Z>(Fr`8Ri_|p z!FEDCaG?0iEi3}#8*FO!>0mh!JyOTQ^pNUZ20qB!-ThO#;Up6kzsQ13bq7EHJ)8Tv zM34=d%o~}rr-ssnTee?V;Q7 zMv$+x)B=tbu>G4T{^NG|pWBbzjMQG6mYXOpQ14iL@TFHtsevq>P2${olK73duk8qt zgEpAtLj3nVc}XRhT5^YGtE4XqFUv}oe~3}!g;xbOmF>SRf2np&XWoA?qr_q2bQM=7d#XWv&#wM{fxs!Yvs>nA={Y%%lL*OPLkPz4AgqIQdj$HUAIPzg zAw~)kIoQz=fjvmx;TbW|q8eS9Z>LUrF3{E4Nv0sc3x-Wvu36EG=le>W4P|659R9)m zHoqVu()PrT7ybb!#OKAi$vF~Sj&xHzCD_X;Q2P`@{$?o@4HFvWmpW$M{d1V{f^Crs z6=NLqSEStj{Cxk3Fk_)~(YK_??uEgWcjwL{3*nd?1#NcB*$Hwmtw;G|iSrwyL!O|L zg5LQP7Q`w?sh@CE&U0E}WRy8rurp!o&(^Z{tb-6>tWEZ(_@U z2H+d4>(^XC4wKwlyfd+ru13c716U&YG;J*MZNa3|IgMo3n8IOwu%9^w{sbgR}eAr!A(;lz7o1I zWEdf)HIi5ysOE_71qB^Z6QaKEL3TBX_$A_DRJQOPaiWfd72GNk0iK8Ku15??@~ zoQ}`IN{bSydt~IrP%AXJT~H0<_&$99P9SSluvq`=oc6O&a}Zw`jv*LgLg0{v5;_V} z8j>3h4XE7jQ(R*GDx|`IQu?LCFtnUdTtUM6!9sZb?OjKMMEuontUDL-YCREgLGK*> za2i)R-J$bid0K{Bf)zmFzFJvFT_}=DH$L;hr()AOO7oUF`?+WLyeH@I26?M z)Z;n6hHE$cB zrNEjX?@^P6BZz!xE)$Es6w6B%#> zli<-djDbZaCeF-9a9|QW#@rl=zN0uTNN^mY;BeBQ^d#~7kUQmx@L^_y8J-&w=4){J zG~|WK*d2&o5_h)?nkh1e6nilAL7NT&fBOI!OEcv9Qq?+v> z;5LreLZ61%)`7d;=fQ#qTfU2OKle<1&j0<1eP#AJoFhG3R1C1$ z&021ga}I!%Fn^+U3oGl4(FmH;aff58QTjg)J{l0|@kzm6viev5Z`sXB*e?}FS5928 zjd54r;#?ui+0Az!4~T;O-O0roMzU$gXR(tLs-we1sF#vw^VgLph-dh!-{_5y+PQnD{yXg-H<%lf4@RfO!I{fbJAXlUw9jFG zNPJw}*-I}Hvz(%6Hsl3HUd*x5616^*pKttRvekG~|Dt*xH}lT*x3#u^V0qe~?|=QY zIZbMBbCcxK-e$(4lUw-7w^9lK9 z5SLMw9pd0^3MowY9la5V@+|p>V8;M2WNO6CVH#|?v`zl`d>djcIl~3t8EJcamT58Z z)$W`CWJ7#Md0)~C`>%(S=Vf@M=wn_1F-`(w2%4w27$~ZK+Qi1-`SY;rw{>ml_BSpx z=RA^8`Zg<0?>SyMz60_Yi-FjSgSDY1B1(#BC%kR8+JW;v%@|vAigGA-509_@@Jdc@ zmefjS0X?cC$?(0EsmfF=_ZXW$e>NGMuCD&vyH`M6JMEG!!7&7JKJWTExi&I^!LoCG zW20NfKy-+TPyVT{RInKcPaW9#eP8qJ@+Y12_?e(~z_m6XzEez8f2S zlglm)?*EO~FsVf1(gI|PijSX3O^FtyhTNS5gyK*o#UlMHQb}*X#WE=KVji#&cKl;- z$F%`LiB?||=%K6sP{#T>eFeEfur-kw8~TKQUr;N^&gFf^)ACjzt66jZ-AXMe>|koe zDVh8}#R(@Y4!w`6ivP4bf(Oc{Oh`q^u(nI#SZL&y=A=yixGUD22D*Hu@7Xdw7zmjt zs8!#WXFD&usDDrEkg!se5gs?<+@n;#v2@EQ@taD2i(B&6ww$EmETKzw?F#gz4|M;w zQYe5t^`A0a*q~dKdB3vxw%}an)^%HG^YpUixT0l>WaPNXAFzxwfYsHr+ZQUasM?oE~o4 zOEkPVAmVZRQNUBckzVrQ?*4AosQ=OeFv8GILg}1#H3O+v|m*1cxXO6ADtnv!w6k zt$!s;)#|RAeqoE@*h*Y%>9mS|Y<4?P)M7CJ| zdVV{J^A(i+nTsN&hDgIedrH4$O9jqOwd2R#FFwPjOCDY=Q{^T{zQ&e&y5_=*?-rj3 z7kp`4lW%XcyzzuL#pRB|*Qb2KV>SNmyagH5_HF*JM^STmP2K>#R944vYC{!NJjZ=uZ^p5b{WD<{now7ReelLRG{ z8q__Z2*!qCfF5C^|5-7)77aH~OK+kcaYmvFFIow-(s&H1V>EE`0*FOm_Ve|+|2{m| zoNe63VvTZ8c<9Xi`>B3Mzx3$|zsm9NSDCHVZc(~|i%@&#!+&;ka_a-qf1BCWO!gX^ z;9Loa?2pmm(LMgena%^JHwCP|=(}xgS6<%bb-Vk}OrI7Kh-?-y9waS- zV74H)#r+o&JLGXaaCMlhKS%^boOk`9A;r8J{Xhxo8lhM^@jZLHM_;@H;PNvtA6ssT z$A;H#$}SO+&+4Z42s_D5yR4zfFr`+F|dCaC#N(%q2XU8FpQY=%bUKTH^AN+(QU@ zWlucgQx7nO@1J;OAcZBKQdF!6?%WOqJd~oCasVKm)njGpdRk)tE7AKp_QnGRhwsX#uC9)Cc^Hv#hqRf{oTSP&=p&#NeiMXb zcrI?of~BTQ1HuCPAr*pjNTGz6QNgtF#&i`7=)1BVNdo0lv?spwyaUatTu{002b56n$uVLs71UjaGwX)vR;l~l)Mpsq0(GB!tp z+87wL0AR0r56=u>H%kyZb3rJeivdoM8C}5fh+B@tq<&172XR2AiNSWhioj^(Ga^~` znEe)UQwp@sFh`P63uuXyv58}gq~SOa08^L$Ka=f9=q$mUeDB_^m>Vq!(8>S+BAXv1_mHfA zic-06g#>3H2s?J}ybHXTOlKq0uaJs_=AaA_c2Gr=Ty9w6N{FEqSy4#(c!|Y|&0K8<|2`zwx1$7cj*`irg1au$D8N6Kf1gWO3xR17R-%??imh2!|3S6${IlAJ)8} zl2-za8?3qbpue_dWM;x418W=^g|-{xFp%<%nhsFRAt0_8?G%d{N$?Furlv;3uO6Sx zLJ%<-2Z?71hD8<`3oGyy=;a&G3!>!_myjT7=p<+YAD)DBfxc11_DX>((+$HSM#cGh zuXMD(C~Lmj@3GC}he*0@ddpooe}m`{9qSQw@7euo` z5oIthVOg7`4N2g^MNZB5`!%$7m_-K2^vv)=ZB-R7aCG#`%v+4#Y$C+k(+XwGCIO=L zskD?3K4e5a9;@BYG)Pqj^nm4^2oFz`_*H$9DvKUTcOVbzJ+!n645AgfWLR*!5rc(T zlzKcR@Q;!ldF1KD7S@@dHz6TtZd{(1nI99Pa?>WtmjGB~e}7%6Gc zwCDn0`fkHA(0ei$8*UKrHZRa|5}(e~$B(tnwT1O-KhMnUNZIftIM@e(?xU3gV;yz% zdrk(}UqF`6*WL3KqzQbD`BFSGO<|>#aM}=p3W(_osGl z1%kI`9gVn8WQWg_uzrA4_En}iXg=}SA@604SpN8GFo4}AEA#qk-R+6DZ}y;5-h2Yd z4=RScRg`=79teB&oFoEZo5rxOqxc$Vg`>a=!Xv}T$?5*RnVn`GG0MPvWL5XFSXAb8 z#~9%`uOqBk}KfhIB#^W0$wl9MuSZ{^TV&A*`N23>07rg0bt#3HkyO( zCfm#21*q`3A_y;NQJF&9G@V0!YEWPQanR2ksBp1Xo!G zdmtEzHH2_2oc+1c!5344x)oODXi+%z9k1hqOW8C{R0H3t8=#sjMpdYIkF=z%0Uj$q z*TeYa=~HZBn_%M>%C-=|Gk}yh@(er)3#-BjP+f&X<}yq^svw=BNrHc zB@(Pmp!W85V=i@i|0i3w-&}~&@5QMMfJCG*7Yj5Vh>6O=1=+_pBTu*wh>uK)cZ7+6 zSO&;vWt~Up-2KSAI+OD_-~+%J@aW-AeOu6UR@%6u_vtH*A?{B2nqhEjpH|^s8K?Sg zD(;g8Mv2VHgQGX=)?GDjLZD+8|2VpWH^kz@z`NL%=J~m~G*s;iQJW8F@Lvgr4W|Mn z#Ai3Jbu?`6!HfurtUrdhqWExU>hdw(MnpElSCtv1tgQaB^c>IiU$|aKvuby(FGV>6 zcI<>%6=8lR;91T9J3}%#5tB2E)t7}AF?o+3ca(cwz%%GNnRT_&e4bp>$vKkzK@utg zqr3@f2$HAq(+=!2y4mp7yyj{1acpvC_8)xJnSGdAY35*O5KFK0h~rY!*pbM~g}yI* zean|#cAnJ6->Lodmt>#~KI5a~mwoLHXiu zofs1K2VK7#)@C9kKs*%MS5XQds5gDCUoMadkFvWu~ zViE%}7$@w1KSxHEPTNiY?n3p3;SM3>5e7c#ee>o`9Z^-FTNs7Nk4!Fj#6vVWQfa_~ z-9W0^eU3k$*lopa+w&DIni_HjJTDxD>adSRMn;k( zi=6z9b{ziukYj^gMYz$$_QzW(;^9LT=oS7QI0h;;l4Dr3*ef>wlg@vEm&QrXw02Fy zVBPh^y-H1cySqNNXS#jdxX{{|>@fqx{6W1{3|J;WcDq4TV$@Y7ia6nOPQ$~)29T~0 zWEspj`D@4ouuk-?`ipQKk;n{Iuj`p*_^Jt8HDKZmiVc&0L!j8<(`(JK)x@X9l6p6? z$r`m7sT_eGe*!zzAMWx9+gsoPH9fud_V$0vZKf?atM-y)k8rm?r^uif1hdXX-9r&c zRtIPUbcIz|c*H@5N@wRac?2Ttz$VhN5L^JGJd)MFAjt@U3RQP#<*hbrAmO42t2736 z07j*;5_(1>L~B?UKJzk+!bV3KxLC6XnCe05-^4k*t^SpoyzDs1Vipz<&U9Y#{N9zUid z_HzWFBj02%+>#d}dr45#%50f}6=KF<-bT^;&2?}N5(*@6izBK)D18y9Gyra*lpqE~ zl8wU9VGXJfEWszxgn0Veoq4m~n1bH{IT{w+g;oH8%&*#-$S6cOOG%c48EAY2N43h@ zfCV4Md?(y@!k{@EJ#wf@1^hmCItx@=U?anP+;IMpNjm^vLu~o32!s72(^E0Bnx~Yo z6_90M1z==*S=-ir^z(qKp^FiZ806Zrg``WN*cZDdpIY!|E3q-^_c(zM0Au=@j2ys0 z2BWkYreyVP+=qfW{nB@73P7=VB*ft8{8(d-0!nseaWYn(zALNQ*c_|WtLD!TJc%fx zKq{I_JVQt;9qQe}k)=LmWg#~D%hgAa)S^e2V%$iC zB0rrg@xYA$IfV3Ql6pq&53Sr39fDU02aLH(C_F?RIzhg1p>gUXE>Fw`Bq6%k{l8!) zItAL8JiuzA9aSKfs`qXbeS{){fX--5kmW_`JENvM zxWc3dB&;#m=05D>=b>=`uz}ge9}#4B1GK!;K%@`WkZL5Px`-tNlN_$F^hL%pC=J&*sfY21H%T^$KJV`#4Or|bA3IIJPVw8T=N!1fW0Ax94IoML9*EXrLCaMb9X z&f!B7+N#;uWhC1t8x1G8o)eMQ2LJeeKcdtiTQ$l3#rq&sH!w-wPj+HGQRtP@D)hh* zOFG`(bWThnAi>hut0+y;GXV2y0Kq}*yI}8$ads6JsdPtIJ8F9f-bnrp1#&5^!q@e5 zC_5sbrmr^~Dk!WD70%dSCm5lzLiu8a(*ayCaLLW!z6gBuP#;eq+QLtm0b7n!W;9_l z-~}>f3u+CLmyl5_Uj;b41r@y_!w5YS zc5s@)k zlQ$rV>I6mFpX#wBjPI@yDtVV%$(u+7PZzS{90G}kPC`n76|rQPHi$U{|D@Brk$F4N zgL#&IxICs5o|>;TaF~9SkdpEq?>$5zb^>YGC1mVMfZM z>ao8fjf!#@IpUkKP)TLuJyJNOATi$>UN$)13qLjdiVj%{1G zMbLEAkAao73=^XXI)Vu0?O4xf3F(-abgeiMX41!@ibYZ_GlH&10%rhbnW_U%odaOA zxrdAY_xLz*H6L8=%Ep!m<<*z(;UD+FkgfQdr^wa`pv*c_&5#qCo4YHh;UY#J;r+~^ zy1_LdY9l;@14sY@w<0#_SdY9)EFmdG9G0Wj2O}-c6^<|{Lw}iltlQ3ttcQ|oSD#WC zChiC^t=~Ah!=z3^mrl_(8-ehd5s09G zk#w4}zt@5jr65C*&}&=)GlQfD6?`N#Ft{aqkRA>&_;WYQ+JM_H93$l2K6495Nd-dj zI*v4T)Z#@UrALUq8qgma{*RSH9x9TTS_5!quzWWuGZnAHXgx@Gcp-Rnui`LAXcheW zo#5KvUOKalgX0B zSYHkY!BdkQf zX=G*UF4gu^AcTVSl zNS(%oK6@F*K{DWi?1}&%&Z0IUKMYMxI>b@fE}iz_gTN0S1iIjh{u4emrT}iM`RiVMa9_tF_WzeD|lTeX(}OF z;KpNuClFY{`Q@W?B;B7#L%qGzffBMHnNwFcV9qAu_KVXfi3q9$jl@}q*!s)}&V{>n z4%JCtKe~S>Oyh9E7_t4pQ9wl!Wi5z*FYFl4%CIz^&&?mAFOfdjZ z7Xa))B62DOB1m{2xm^f-aYESy6q6RD=_jPP0NmjyAM4P2^MfT*;^T)8b=U>korgs6 zxkx14eU6+R7!)JBG}S;+m)E}jlNrJX#b{?te(vMpx#9uUbal~5{oM-+7^VOm?EckF zf}NN&0^0AZgzo4@%S#C-EuZQ!SzB8pgti7P1(T<;a!hODcuf7^h3laTgWgZCZxXSg zF=*Xlcgd_2jhX4#h3ZE0Uxr6}6Hs6iCu;^_vzh#mcZzy4ob0cvvD zc>dq7|Cd+be?DkB)dq=cW4i|jlX&nz3exClg1^zC$74Er04)(GfN1 z?xKGvU{9^o_=S&Z@pZ#*+W>>e`}FoTcYGZJ1p@fyuXcNmnYYSgVXU#-Zo#)>Cyn0e z<%bMTugdOHpYaZqNz^q%p0l!zlV% zRC2lf?(AOmq$#Q2Y7gEET#S|8Oz*#-5m0MRt)!#DcJH^TMFK4a1jit@5mWq7;#oE{ z+^8<#+*v)&rme?A!z=*$7nBe>mCSm4E3X$tfy~g?!qTGoF_+b>{OZfaxJv^!Z0`kt zgsV6gg^~hzyqP%LXbL|+BZP;f;0GQE0w8I49TPkI(bKA$pC~BUb{|nbqzmx(!iBf| zPXUWS0{IB92Vn#3?kvAdshR4HZ^u$CDW=xvURS9sFDK_FkxGUbNLz;PmyziPf&=A$ z($usVOco(m-J+cDcuvo7r3 zWV|xirz1ylu+Fmbq;Xh_-Z+@IYcApcmb{lplv!h6>v0>94xf@dR=%poPAqY4V@48F}2!K zw@AFFi@NOOop|=or&m2)Ig@w0ZmjfivFUpx8v1ZLuZLxeX5AWG{Jt&(=JJS%`Jti$ z*r)_yEDz}I zyRn)jB{_d6bvq67OgWe+@Cd+J9~|aI5zU8GI-H|vh^+*EOzzB|tXMN>9MC?%)Up92 zc(V`Asu&u*8&!2T6^c7A*Ui@_ohipN3ycTt+D9u%fb&Noh7&b{1kmUB@C!l^S z2LV2PgpS^Sf|YLlnZvhU?Ah`BmdVLt+6-=ijCpTv0higcTQ#0j1~UrJ%nK*-#mAfs zzujTGeCo@-oJ|kbtV55ajMw?@3=!}Wv5y0-S;7E*%^`PzW>g%g zDIAhu;fP!oRLt)$N5%Xx&KIgz{LAE$$G*O8?40dIOGV*aG#*r~G`CL`Y?p~HVM$h` zeOmo&tpb-<;Ax?i`FD+G>E9_|{&W``F-u2>L(&h?Wvo9)EO85eq&gTroRhEzM1hY$ zLAp9%&1F`SXCvnebVNeT5WTRc6yGV`0;b?R8}24z0E>+goBejMS7 z3`4okh19RY<$3E#2Rvo?s;zDQZ#y4vxe53Rvf8GN1>1N09hQv(o(x zCf^4SzEbHaD_3fI(=R)m@Cc#le7`lvK-}0*FuD@7Witc8dEA4+>zEU8OMg3z`{9ASR^72Zo+er2DRJ?+JNQi;p z`c)*4^dBP4s7DHY3Gepp6aYW40RYhPbuvJIQtjr8C!XZ<&)J26){xV$6)W14wY%^v zJ69(Es0d9UlPk7{H|go12Ug?7crIX0D`{$Cxl=sub3lt00lR2vcxp}FU3)k%U_QORY=vFzupj3!H0R*-h@uaPf!L1i%ghEaCB)@! zDX^H6!;`=@No-?JZ|^G1q*(nPumBN<06aH*hPv1`@9S;O+7e$67LIH4tm~Hz%m&VP zl}*z6=@FR*(TZFhHkeRUJ$xAUnLL+tSsc-(SiR^lyr4NCGow({Z~Vb{40kEqP>%Vh zrcxQb);mfAgOWh2mZGihi`SG~B zgF+=51!^XG|9cL+8>9;&RuVj!yw!`b*8)Vr76J*!JO^d?6WB~aNIF-s=P!3r6go=* z)hXP|{y0#Yo8CW3y`yVJoMxKl=9ccNYtA!IaQF}w4%0nw*alTdHhlR)=s_Uzdh&uS zZTCoByqTRnOfmSZHk**8-0BG~y+G)La9yD!39cykM6KwFHvu@K=e#BfBkh2TVH3mV zJaw0WK9O3+Ls%FDERc!I-;TG$3#_dX{Qm0)tyzMQqjzB-FzH_nCvHPfpNx>*CmwI} zHT{xUH)r*!_l>_mp|^sERAI_hn|St$bY_f=9e^k3{(>Xv_O0((&-j zbj`Rp#)|K_zN4ZcVuz*&v*KS`PoKVD)*vtAXYe6>2{aKRzJd>!`uy2emFXwpRgJ$~ zinjhJJ8h<>J{|dQ^^){d;%!QJiB_yhZFp;o3ch>ZMRsp=L|K3En;2(rZXk}Yov;=Y z3(d;Ee9^Hs#(Pt|(b|Cjpc48&evL7#S7B9A7E<%+JG|O3CV|evCbiz*p-Eaud4Gkh zwMx^s1z~wXn!CQbk8iT7a(eo?4cX10Ix^o)*Pw%~adk@Eu+Vl@I>-aO9xy#N~dX&Fl zI!SJlkO$iVJmg?^pzZ(;5Y1Cs`$DD+%OBc1aFOw(j$wXst?VQX5GJDILA6vLsYHd*Tz*)^SfsC~90m2N z=$Nm6?H|tDxPzbl_e7G){l04P-g8V_+uzxGc+;>Khw7O)OpPD9;&8?4*HD?chYLe$ ztE0hE^+Z^^^)k6Ncb}Sc_uOT4%^3`vI7QVs;1G|?r{h)n7NM~O|1R!A7%V>B%^LKp!}P(`@pDNPCUGf~cq3X!O>iAIR<8L&B$YXArkf02Q~I~XLd zJ+Ksffi3A}P^1IvE`Qghb)%f&nG@4pw>FP_%W?>F%6_@VZD4>#!F zj9qyBDR6v|oOgi4lbF>riIiXjB@0pzB^&^Mr=iz5WGE&|Btn(kBy$8Mw-V&esW(s` zQx+^RVX!yHoJym2TueqFZ0J+KS)Vh$1rL57-Z~l{KD&?=bu|9b@aFH@R?qp5g~7;O zz3isI>g0CyDih@6zc2Lq{3;reWH}imyVsuK?vV|z46<{L+8b;x_tK*LoJ1O# zLO=DZ6q*#GFvPJ!QV{Ae3W3bW8_5UWh^cG} zrN00^2RQ%!oJ2i9PBM=Sry&J03Q8&~sc{hrG>(En4K+X3G`Qe~R1*bw$*-0Y!GbHKCSY6s?9 zwfr)97xdsxwE6PH8V|Q&+nHC>huwf8#i)Bm-fngU1iEkkelv^d@6FDL0>Fxv!U6cP zFlGBb%tU+|YB(XvO5$Sy9)juzIY9EJ0Wn@Mu0cgJxiUF1fszQ{hYUP+bQmG+c6_=Exw{-1Fxy%N}M$Dxp<;CJu>ALpW1)Ajp7il^~OmrT7kHQpj z<(SoL>R(`7Ea^D$BPix_62RtQGS(X4d~ip?zbrEG7M%*}r%jyhvu4mT=vx_}#3uw3 zXlODNJ<3JUL-3s)SeY zU2VP$Vbl=~^$#IW)H&D5$`xSbzy|k1(Qj#&tkVurb$+d|N>7*gHDS89MDaS))~0+f zS}E(dj9ct`imEREZ2PtcQpt(m`LwfT-^c8GuZVolzN}qUcSa`yb&k+5jD6s_e!{4R zkO646NDMPbUG!|=yVz0AqwdTqx6a7On8UOKHaTZWpxvcEesJK(Lq<&vglV`o;yKbU zXIy zU~hN-k9Rk6HN`-_BUPki!A-yJ)>?xv2He%j8!$l$*5Sx?dEMIDAoh0xOSGS0H1W8beh*}ff!LXl*U zT=!y8#Tb%$l;EqZ>Z2%uSzBU06+Q_*=s}DjfGP_QBa6%r$o0_JBHF+b_ZxqNdDN${ z0;>^0u?is$KM_QaHj7YN0DEsh)(Xw4X#V8lnJO)`ro{9JAqfW5+=hBt9C9U`b;Q^J z!$m*1)-_}}44LioFt;U4x3E6y%k z(^$mRyK@WTI6~-yg+&WPNQfB=4oG`03{A_4JuJ6favpiJH-2jmmxQEu z3*DEdJNh1%kLc)}%@e&79nJW|c?#`D=umS?noIK|9m>ec&p&?L*?;DE-G$Lj&z&th z+XNbn8Uij6@8Dle+gWyvLF!6>E1~`b*5YVkCx(8#WBGC#$B1shR*z?A| zhX%&^N6WGwfS0Ky-+syMWb@!;-U-OX5=*F$tBCE~(Kbl^WvIEsy7JR>;fRk|MSoLL@}d;#l}Mvfj}>i<)eE@z4+6ob%d$xrMx%kA=B`zjgddQP&uqM>C}a7d8>WQ9p?5) zo*^~d=tGpu2VYU!mtAhtEqYS@!#_pmE-Cmdnj%%GIWA`?1hbiXvIa^Ka38xU2s7o3s>a?N7VDH{V>Bbm#A%Iv0gs?Q4EoBc!|~xqcs2Sj;x& zsORUx3s$1;{Qb)M={1J_jwj#k-6^**@E|Igf7yk^g(Qx8%nz~F#h)eFvKi*zu+OXQ zPK*zKD=PgU@m+} z9tXK~Gqer2uC#r-s_Paz@x_ZxS^0yF<-XzdV()&TiQ`<=nCuOzDByc$^Ys0u!+(p^ z-V3VxKF>xC$L%$Do!+QKaaZ+=n(TAq^9_?$);_B2E|*^Zb2WC*a2yx7cuMElv0AF@ zUXfQ~?(e$itCpB|p!ikrc4yI;5$}Yt&XNB2M;0z5mi#@_W52wS9-iH{wRvGAFX&+> zSNC?&HRs)8xBhrk`*d_xcGURi_=DvAi?c0TnAQK*+0mHfO{+-ts5pjp(xd6>tu(*) z)9gu_r+gJ2C-IQ0t!6Q$wXj$gyY|M765Fo+D?It}_a}l4zv>@RcGJrg)9yCgmFbqo zvO6p_S&jK1Ie~k!*Ev?N%tbU_q!glkNcHZ?74E0W{)k>6H%IrdD0}Zp8~x@nSz3Mf z%CUn59y=dwc{ShmFw{MJpUZcs+J~-&XecXRPVTfx+raz3miVRN{=D}$xb{^^ z?|FU5nmc5<{i2V`>z+J)QfL>^enP7YR8>CNcFFj2{kOL~hnF=Jm#?_VJ+DgI$mrqO zGn5v!_12$ z-ut=1weMPbcdKsQZ8539qIZk7rB(+xTt#0yf0i#Q-^0EuAu%)HcqV9AcjBv;M?S5d z6Hyo1x|4c_jp2%`PHpSg`wC3&N>^uC1#|;vEp#&C_w04gJ>z%J^W5-}W5;_< z8y4*qJ#tJGAw=2(ghN4pF93-Ie_jHvuPrBpg5S%)2{Zz=Eo$nn7TkN_T5~vpZ9Q^q z#PF!r!zYf6gb{(ggfyEpdHR?ruSw&^jErpV)+~DXuyJF?P4sHUUs_KbJ~YD1-`Ai2 zm7@r-ST%>&q2+iL?Y-`=pkAj<8XqxiWXy1{05L8YPA|{UV%GYDn30pcM#c;q5jBbW z9~T`xDQdDcfz!OsQIo5%rIi<&yDY*FJv=*^^V=+6y^>MAzssy6CsHtHHsBU~vej|3Sd zm2B*6E0DXzoTiIbpqjV}6=-tQw8^cP$1`L?e+9XXGuhjHwiPLGITe_d+oV#q~z=8yr+T z&ZMN+Wai8$IJ3ztHJb~mV-CfY#z{G|89K9xlW``qiUtmg;#9NQ01Fw>6`9SZ>w4;& zTA}33C^-{nq9s?rJF%LYxnf#IW==~BM09KB{t!${Y)tu3%$&i-2>!}(2-ETcEjIyW z(u&-gIVYMw302YjsrgKlT1f2*L@clRP#Bxh3be@v@Dio%x`z;1})h7#k#j#8-LHuvszao zCf>?8iJM7__oc$C_u6gXn$zOk!_~$`2-fQFFy~C|R&Z_Zu`~Tzg0PHnT<3eNjDO?J z_;=C$O)_jv>AQ@}}so*zo z1*i$3-Cxz3zzg_;ZXgV>U_6Kg%Rw^O22#Oq;0jO^Lc7drHGvoK2i-szV8M703zmaq zunnYw-@p~1CZsw6HGvoK2i-szV8M703zmaqunnYw-@p~1CZq-dHGvoK2kF3oF8EWh z5u|_<0E3L0cR>jThHiwsxCZ=;^6w8K!DKKGtO8$xUEl~f3vK`{A|eXJ^h`lgiNY2~ z`YLvRY|D&Uo{=6oE&I}EcsOoB5iRd3hIu7I~!yi+}I(w zGk1%v6dOp)v0Np%wp{2KB{kLw=E7*@l?Pm%grYmuaWF$gKZW>wV&XQgF7o_vqANOyXvv#Zp4>V=ghICmnxR=;DfRt+WXqK%1^0f z2`qCD#R7Qrt9?CDpx;CscK5%$f~=UCZT+gu32{7Jg%L~pe{&V8wtbc7p97i&zIHm} zN^3IJ3u-=lRBf%v7PnO%^R2UeCa7BB=8vJ`)DSeI<5K*V1B_ky-<$aRAB(yPuHF_kgm1jSlTMeMygGSN zV;8ChPgss7c^zrJpB$|L;&->CLzJV@f&KmDXa%Ait<$q3MzacS{e3&yOMoA@7_By@ zH~de$ow$8#jFl3QsT$Gh-aPx$%oD?Gn;d9uc@5Jq!Z*K7l|PEf!17dz1R%# zj$j}$n{%ir;<`oB19_KVVt~nYh!SWhh458;1->}F#l!@Gk(84_sw4<~5N|OAPlggR zSHwGUBL=nEoN7@+$RmiCAXrH?8*+4J#A2`{0YWNB4NQEB5sr}xu#Awr2ssjR=EwP^ zLB#_%$4|;mn)gs2X~^U8lWDRv)5$$FJm_^N(@vh)_zV7842&n!j?g@AJeg*1Vt~m; znnd_2g!^AokDN?P``Kb*LJ-br=3jU%WRoZK)beE7QQiOyRQbOubnbZrGF~|#+VU&1v zBKmskZkAkKQVk&qt*?xj>fNG(mSZl6OElB1=61GlZMKaYXJcsm%~+L|fvf(Mt?6k4 zH8r^EjjqUv7((G%Zd*pObj*k z1u`4GaUQqXCR&|rcjv0^v1U_y8$*cIPz}aeGY27M&mT0Zy|1CDgoKGDVSlA1202mf z`^t&@JJDz4DYbtzD*jiVoT$ENiDrz>;p%@Z-RTNMf~OQ30`$< z0I>Hs1`viv7SIz?-xbsa%|J)+CKw1tfN5YM_ylYK`@k`99%KPMA)c=m}}y3hIJppd)w_3;uQZd5{J4gfw&obwM-G5xfb`;oV;}m;x4nMDR7(1C9c` zz-n}hkS0;+I&T2Tetd8rd|n1kKs)d{=no>nWH1k`0$W& zxzNs9+4TZTCPBgtW(N#8S$N6kG*2X>eo3HYrpMH+*s+w4gGbN+giVbgY*) z4=K~B^x!-9glji_Jz2H@9$jyHj~imr-i;u9>pd)6h!xk{){lm1G<rKOdY{hT;JWw?apB8_c2Rw66roWUpB;IP zzi-=sHtjpL$FipmZ926JXahw+yN(^&wSC<3nr7djxaiMDUeoNLU?iF~OQ(9jFvv1^ zoQXapG%OVVakFJ%SVHl7mWOcrJe?Pc+=>k}5%Cpa9@l?E7$0F9wx^g^SsD5YUSjD^(40P5on zivt>m6HNzofYi%rA`u`>l9(xoGs65*pyP2S#vS`p_DlAg_fl6W$m7No=M?A=1a!K6 zDJi>>cf*Orz_>qUAI;`|!L@Gp{{6dGZV~N~&3*e*Bq_%I`}kF0DWU-)*eC|MHzj4y z&VBoAgWO3ox<7?pXsi~cB*nbjVp6yto;FfX|FxLVh@4W)`}k0i*Ilqn*}sp^g_t|! zHO0>dIvzM`=;MulO{gQxB~6XIeVlQnYF!f_pT=HZu%-dRzz73GB@yi#`uKP^X@oz# zJ@VDq+ehLf@fPl<5AJ6ZA1T$humnIuY|1oiVhvH^W2O=tqqh&e&^Ss>ye%eDAAM5~ z`0=S@F)%gr_Hptti?K?*4L;u9LI%WqA(uW65>C}tp4Z(z&=VOK#Ym>=nN*}R6sZ-B zbS!tgO{F?BxHC3}#u40Lq{VdSl8vFxQ+LeIrPfp~-fD>A?0A@yaK@Zil&B?47_v90 zp<&|-Rzs}53gHg5tz7p5(+@U=#w{47qIfp)7cou7RKfH+ycx8SfvrFQt_VQqW@Bn< zkVCUH-5MyQa_))ei}H^QvS!>~JQa)e$-;>EL1HRMEuLPpPvfG$@|u0x2a`YtzG-!hN{wt|Bo9b|$$z!BnK12h1BAP9tl z_rW-z0LwrU*a{AUbdU-107pnb4bTAifglhH-Us7=0xSbbU@JHX(m^K3102RpH9!O4 z2ZBH-cpr=d3a|_$fvw;mNC%l94{(IEtpOSUKM({$!TVqwP=IA132eoTXAsyi9dSQ+2kcC0S@Px6CQ{fa#6f`9% zNQn)y6r|({V;f(+6l+R+kP;hYK1j(E#x}lsK4MBB^k8BeQ;8kJSuescr8dlkp;6gM z{J&G58cTCzpHn{jLRmnFAR%E27t58eGrT&*VrIE}yqS;1%u3Hi|8QY8LC_4spLQC)r z@z}(*9lQvBF5qd1YkU8VxRya09!Xr=;aL*bTK82y;a#d--=X&nKO1pv*BHS_H0wHx z>gm!fzhub5cp$$_N_I(x1PVauOt)@ApqK1MH=M4sC?!c);FVmN7_r$C6@w}zNoHX~ zt1ESwOjm#d? z@@PWM=2YGosWW0}A5zCvqW<)}5((A8A5zCbNf#SZB@$}EkNaC;BDPr0qiN4V5=9}M zVDh=u1PLC?b+OT!&R#(B1?Na?7jBBJ_G?4w4o;-`W&KtpUvLcV6i#l{x)6ip(hZr7 z-q;IUIAP515Ji5rLdGg;A>6KK`~le$Y@vMNz&7YO4BYpquo;(lbCwrZE zC41T-ORh^~F#ES&?en8>x`_EYa*0Low#Yc-5@!F_t8HGqI5C$Hp4F$bP=3K*eL4@f zRndV^YHS_Lgj`$>R>v|xa_EJD;?pe;+xr1Q=sovLyrT-IKmS>4^(ej0zpaIH>h^rf zG1`040ip|d8gdLD$T4tkSh=%~+Ax14IY#?uM~?CIwh4yPQ?}^OMvf8MUN92PLVHqu zsdT`Fm^E~ppl}=%RvKYDpN#IoqcQ7Hfr==a=^9zDK%$v}?jKc0fno?x$_(|zW^Km{#WX`ff@F8{wV&&Nji!K&j zm{WQf6;?(y$fUP*8uBT0JIK^wF0Hex`;3uRGuUe(>2rvQ61}nhlU^_SjPJ^pJL&)0_@B(NE0zh{{ z28Mx|U;{Wy2t*@fP%AKykaw_}?479~j*uZMz~^8)I0R0Et3X4@P{=ceL7p)T@{Hlw z@IE{cya5IPY~&mM0hmw7XsoyzodmGrYRpoQ0&Wp9_CF0{)? zjqM0?q4RiBZ)-au2}p*7a0(es4zEt*)qL`7j%_Kme{S8naCpUT1+Vriv}+SdY?AKcpWzIeyk#gD083j+p=b|88l7IwsDe9Z&A#d2;`4<>(lbJgAj% zj7c105_)w1zwOC>-05|UNgmWv{8M|!n8YzAakMma*M*&=_L1cz_VP$Y)zpWSF4)Q+ zyQEQnRDAS!=j4JI(q25t%Pjfmq}>GRA&pv4Ta!Wc){S7L_MDBs=f>^BOj2!Si&U+s zO278=;HjOhJdvuYKYE)V*M#UnJ8Y`zA6UzIq2)u)=bwn%vNC@sRLf_G$F{>J(2L;b z0-nOk6sa59l3IwXy!G%nUE$GIrUX7aD^tX;2|oGnz)kob#YKNMD^n)?CK!ok6RuGG zJv(d?lbw_4rWm~aFI5^7u~i0ZGhk|?EJ{pHPQw4Cs2vs$PBx#2(=AU>Ef{^Tta9+-O!>6BpoRlnBA$t04HdE4K-ZSD|pOlo0udxY{-FNGanyy%& zpIxJiUd(nnqZ<2VEbC`Vl_n^qW|QfHEG7OkVrusgPl6} zm>6qv%WYPVl+hN|ku|B+wSTKzM*sa7{g>^dahbllCxsOaVCY59feGfLC*sEbJgX+?fYjTDWF z|CQHBy&zf=@&R39ho97DG06u*@tMvcU=)}F=GeQLVkTrN4(6Qd348&nY*_zS2AnTZ7+v#_#fR!{I2hz7{#tOXzud=2)1qaXv^0y?xo zE}%B>0qsFg@D_*$Q@{d{2)+h;z)_F^ZUG%3u`ZxC@B!^XPw*Cq22;QSkO;m8d%#hU z0d4^u?t=@c4SYa*&=b5x@68h#Jp7Y^3rV#f9Q~89o`hdV`u+X|`08Nug^&_VLTkk~r7LD?Aw8B0?Tk}nUxfMd z^p-@(k$q12?DJ(o+YK2uAt!gT;qljpd+V5Od{nJ)dPPVH2c4CFDr|fh|F-c_wU`no zx;v*M!ALE(^dfoAj>zap#2l5)DW83X6JCov3+>q7^>2>!{rmf=irinPZqKKHrkxkT z&jmaM0gVLXeMtwzRo>hOcjM6nH0_=x0nO7ov3l-%C@%W55zx$?AQ*{eb7xb1>50|Y zCK4VNCLH(-HIASb)Hwblls}*v(ugn@Qrs&vEW~039aN$YU(yOKkz2LclJYvvkG9d9 zLc<`ap<#PfjqSE_NFIF zQ)e!)G7wRRJm8#Xs}^}^#DDb2;uxYZZ+bShB_yP|sgJ7<#7V%7zv7@6(YAag5^gye z`vIp%-z?nc-foakQrMqf3JO1p;9~g@I9r5l}5$? z%4=AwiyygSMat=m&;@NnkEW0AGNe;4nA?u7d(X7R$g(pfP9*dVqdl7?=d+f&}md z*a;4UGvGQXAVetxFM-COEg?&>>u3db5v@1~(m^K31IXvf8lVC213@4Zybs0!1y}}> zz*cY&q=QV52RK3!YJdj74+Mcw@IDv^6kr)h0$agBkPb3I9^g>cH9!O42ZBH-cpr=d z3a|_$fvw;mNC%np&Nzfh6)XeCVEv!fnWtTTvag7HSQ9&*^!dYL`1bJ%q8p?p1*x&& zNuNP1hHo3EJ5IAjy{Bb^&fbL8 zZJbnXO^pw9R*;$}e2TUZzHOXTEvBX^6}Z(RO{u`mdTH{U3Ead5tF?%jGiz4GjMHLJ zIMu$lpLp7B|KAB^%CmE%@7{Y>UOC;*?B7;?PPCprJ3O|PQf<8G(B1_+1wkBX_BSh~ zu!`!@1aWPiB|+TNI*T~*7QJuy*$CniO9Ug)>|UDfzkix7L))|o2E zmT07lOYBy+TJTM7l+_U8zqdK1tya!OTD8cU?C|B%MN-I~>`S%3H5O#C^7fpz$gU6t zuCBW^x39Z_V1R>Z=udRB&Yh5TEx;?_KLBB@8wF;7 zMc`Ag5u|_<;7@QDlo0Zn8*m3Lz$@TC;2kgu%m9nPr(h#U0Vlwp;4Ua3WW5`32Q9!W z;6LCUFbd27i@>K~BO(7?2R4E4K^nLOa)6PLFRB6$&4 z1ag3pkT0tO56}v92Ekx37z1VkC0GYGf$u>YxCC;5k&v&d0uRs%bOym-Fc<@70wq`n zHi7R!8n^^p)}VVa&3c*LvEpeUaq!zYlIVlgj_>-)gac~jnt#^s|K7o)=oux+f;mQ z%aBSpkJYpEzKrGS&6i95ron>oF12qb9-# zD;WqWXhzMv8hN$-|0qn^fOq!%&qkQCp_jechPSD{?6$L_0iQw0L1iHpVG93sr_V4U zrqT`FXUR!xmwrmW*F+5I`P1?s^FhXyy%&7rjM^y!=rtZZt#cP58FD$#TTAMT_q|UE#gK?Ja8< zHapQaV(*(J9_&QBt1^i3SOq*{I!xHqW=&;9ge=nkY`UVm_-P|#PZVdEJJT%Yw?x#U zk*?#$;CiktHgKO<4IyM{#C>JeV#$}Y_kX#!tOhudc`(iL<)PM~Ek?$|1c;0*VZ&eL z*8k-atOnSRb~(qYLoCwkdaD-u(H2f`U8Q>aP252nLvu1su_nOAsHoPo6B_-6)n3-v zA64eUKLt;#^|Cx&<;q+vOM$49@32pc{-icCm+$fk*$27HKFBZjC4&FjyV<;ykj?AC z7J#*%n-Rw5zkmvu3E5H|cmiM074!i^Kn$1#mV)(Q3-}S70)GJ&FcY%1I`9O(peyJD zhJY9_3oHfe!4~i%I0gO!DqtpLTXo$*aMD&3~&qRQ2s8UHt+%MK~L}&hz3*Wy>ZA~Dp&?2)qd3Zza0IR z7x({%^vO1nmy%oBaqr$9EF^dWd&=zNRq#t*kQxrDvEga#DWh@N#`%(EU)d&t8SM+P zEvW$G1*FMx5kwc&VJ>v2;u3)8vb7r4oz8LsBM4uBZd%-Eu$qERe&lof)J zXqNIh)t7!+%bAoE5qB5^ZlhTi33A*CglP6A`6m&?^NhB@pQLoN8u+93l zEvpiVdid{IIgyg)AEt3PkUCMAV|JoNX=_p}%b4HpQmIKLVtT4Nl;IJ23(~9toO?|k zReTdbtJTwLGH6`%S6-9hELhRMKP(Z{w&I%~wi9vzd+IJkfeFC!%!qCdh7fWP`%Djx z1+Y7aFb;kOHiI9)ui!Gs1tvmLH-Ynn970oh$R7*_3&Aczei{ZQfw_bnML0(h&QXMO z6yY32I7boAQG|1%h!9j@auUyNdP9K1Oz#fDK?FcL(`OTMW-(X`z9Zx;meHI|1U~_Y zcK$#!`A1IxaZU#OXTX03{Aa*_2K;Bhf5r;%IoJ*kfz#kB&=7J?0$u+9u!a)R> z0A_;~;B&AY90I4oRiGi{yac=e8iD}O9fX4jFagX4E5PSqJ2(VRgR4M;`yc@?fQBFd zbO+(|{{8F3H`V5n&YaYa@+TTNpO(5!gIgQQKWtJs%a*#wobQ!b?C*@_UO_CDi!k-= z0P~7XeQ`KywOBf9344Xa8Z&*>|)Qj+TPJUXm(E?`Twl+8Qm@TcvlU z_MDBs=f>^d4K1lG&lW|s>3@40sXWgX>i(bH#s_`7r`k08<#q(O^fAoKA8QyiO}04F zSFw9!TXz43`|E_}MP20du?K-~Su0yA3 z?K-u6f6}mt<0ku#j~PxKx`3y#^q~#np;WTOhYNYxqQ-J;@%QHdL1oR0jF3M+Akv~j zBGpSkHGBJuvkAF9j*uKT?5)9)=;AaYk!&Ior)(l|2_zD?Z;8a?QzG$6Ad#NKUv%M{ZF_caUb9EHb)gROC}+W_7N*g2Jm;b-LU8w(s6~LaS@4GqYM}ZP6cVK8TEn7KI(|ZAbbgb3Gpljd zm@bZlP2nz$W^BZl8cohFO%sioRlBH7r$^xJ2T8!>9y-mE5B zX7+ZM+h+Dwms@7`W|y00_C}W*X7*Z_Yi9Opm#b#>N|!5UHn2-zMgLR|H2M4b`1`=0 zYoO7;!+X*G(Sq9dJ+`lZUtVqUiS8Tl_sXd7fN+c3`zb4j8^>{j!X@Fx;ao&`^>AZ< zZg{v`sjr8&zeN4d{_9TG>hSQ}U*s(5yCWy_V{UlXhv9>aN#WsF=8gD`=Emd`6>bfa z`WaBTAbh$hBK+E^x5MLehJ9+g$WJ+J2X!(kAUn3R9%p`571{3A+@{v5NfRVc~lCi3lejK z;?0SrPyXUKr#S6GJo#(m;ubAhxTy5WUkIDRy&BEJxQ%%7_gSC(-xtQo;))il)$wtQ zzqda5rb|mN_R>(Z{s`t?FWB7p0d64(cc3r?J+$1 zTho8tx9`NS)<^$RDr^dW)M&m>--Ad0p!Lx|lbS9|FWRM6r=;&VWPS9Fm$sium!|8s zsc=pIb?;vB(O0K#Ie2*2&fMJn+kQz;KlQ!!$^YqS`X=j>zx5!V{6p!R#3#RKZ~E~c zPNb*(Vtw#azT2Jp{gxjc55D8U=f^O@*g_m9{Cgh!AU22#G6$K0j6o$q#X2IT~02i*ji75mSA(u7q_KgFkIC0Buu&irZG5l2 zUtq&PrmvBG&ld{!zNToO@~+{gDBk=5S9Mm--oD`nc3#;XzWmzlOXD#B6+GsJ56N2` zzBfBMe7bf__=3Cv7&{6!l5pLLFT?lz6dt}m6{A;E)@-Yl_R@udufq21!Z@$+uH>#M ze>v`!#aEc_6s&fJg>By(R^4Kl7dA_?nKzuO9v&8T^c|~n{a>4w7bU>CB&=k`wOiL# zgt=M#xIgSQ)D+2=faS`B8v76J;M35@aU&czf<7_#c{2XrKM`(vb24UbC6QxhZ@idI>B@kg~pU3`XRW7J1j z7xwOKwfbrV``z~}ds?lAr`#hf`-NJjHXlK1-Bfw&SoQ~%DtiITeylphvPlq~6fakAa0OihF1o6|BsVp0PA@|N0cI4^Y+&@11Ay<-HoWin0 z+3%prfzP{l$FLDwul}{;FTqhxu!pMCL}1VA;LU6yJ(w*@(+f>2Zhd z;=rG<-XV##@Gt$1zMQe;@N20eY zh-Bw!wU<_mj~qQK8G60g`$36L@4|xUby_EF{*QCUMn+BjHc!iUZ_Wiq1v?5IUnYDP zXvVV<6QbD>wjCht_Qs+=g-AbtEgL-{ie*<9@I9P!KKzbG-$(uCUqaQ&&(GYOZ`%jL z@ANa*&Ozp%fAY`#{MJ#0cekeOvt==BRN?D^Kn|6bGbc67fMc)_X%|jn#PE%D@>E^Q0 zDpe-S&P89Rz4gmBbXxoQZq7wzpk1HJMWy+bWfxsjeaW&X_)g9__fi7OrrrG*zH+lR zU(U^igKajwU@q{|rzG-P1Uo0^I?G1IM6koo3SAuU zf_7nda$IsW*GIF%7EeTvc%1L#T(VW0Cq&LUHH@8;owau6s9|H{j%7=-HP&7*oA3K7 zW$V%uQ8CF#>amCH`5ZOIQDYo6#?i)H%6_tKj0^3R+Uv6D6pQa|w7Vxp&ABj|ou$#iFW#m*`y5c(+{?WYP5L=2i) zQ*<2c&tigBI$@(;qa#^5>7reaY7`rF{MIKdos0>+)mhqGqYj^ngk70V zYh~W=bnf*lIw&<}SqU1=ZG@oF2z?d}0q?0;_8e{gS86mLv17}2T^BSOp)ZoC4RG`& zI;^5-_9L}g=)CUoofm@0R;Qr{QLAIw5&Tq6BlKa}YPE{*n-b@@ zr-rg|=*(_gdpJ53&B{Io|Jm8_54*fF9bNX_N_TY^Pu;zH>vNXfc(>JE*DT!;HfmfX z?(5a8R#~pMi_R{J85TAD%d59r+lw#Dnf=i|&{01{0RyVGqki(kDM$Tuw4aXl^TF+> zlirZAY10jTpx&v-u#;ueivo+BbcP))drB9mE19^dKs$?dVvDlH`DaV5gf*rX@P=99 zw6bM^gjFrgS8u^|DKF1DV{Dn9JBppD(QIYelN#$}u$4v^!%kDHVR{0+r-`5GnH1UT z7HZu%cA83sP>!plD!pY&r)r_fhIwx8UY6Z*C)+w}%WaXXhj~s8IxY!YIIVP2)*{CU z3-mqt+a?ZWr&(uREz5f+R!*nlC=^Gbl=JqqoI(lG2Np?UD-{Lm@K+b8#b0e;0sa;+ z`L40m^DD>7@)-?O8mKgZYS^d)Rrsq4%*Ef_z#RN7|6T2KADbszpRQT;plen==$cgz zx@Ogbu37bjE|A8W3t}a)Rp<&-w|uAA zs&v6=6^%5u8eL%OriKY!Qd(IBhbrojE+ci#MHs-1t{rv7J#YeUbnU1IT`%fE*NA%1 zg`pmFVWOmKVdeDWT|C&EOwSAle3F|2P|G_PDl>Pti zNwJi@u!gqPkn)z(`joD$eS%8Y&}PkrR3H-9P;>K0pGZ4>s88uiUuxgSr;nZegY+Si z5L5n~5NU|%&Y}?45N$thOvulslA`P1M}@eA*acO_X#wwaYe?9r1KJTG&i8SfduP#s zuR=o3od^lpvBly8ksUiy)<>`;*pxpzSQ-o;@u!3PU%ed?ocUp2ZglX^TVQI6Eev)J zwo8v(A~)r0^Q3vX=J~2rlFKD7krpX4C)_Pxl5Tu`BY5b+o!i(G5Gih+YC&WO2zmvcJ>d{ z*J1KhCB?hN(YT-U@v7%8B_0L z&-?d`DtYZb_Ig#JMq~W#T?A5I@WnLx4Z9dwxwd+0>sv7BKAvgXB#d!xW`p}gZgJq5 zxwu>h6)nt)y063N#lm+fbKh(W-uWIoq0kFa=zcr@x{*+?%st7Y#ln~Q!Q^_4PRzW= z+EV0xTqlN!Nh@PrXen~0D|cOT-FW*#8GEf*=-ymw6uf~3XeU(q6bSoe;mUwEP&O~0e*x3=w$rr+pj`mw3cS|J=w|6`sDI7a=B zQNLr|;T$Ok&cu!X^VM#f~-zbUbo%q zs${r+b$CNq8>uTPqfJ)`LA`NvhQ*N+QyB8qUnK{FktE(p>QZJ`u|`vTbC$csNhL<_ zzf|8=urJJ<#s?8|qY>lDCs@iDJ;yYqlVkOJLSnT23>}1ceoe4ALe|r_`!ilM^8Kir zCPTAU@VP?LxmC?s1MQ>!SZ5@TAm zi>bw{>oTU{+e=NLc43Zw_1TtFzlZKfKiq_An{xT$7fnJ{1!(L5rSj#Y57c}Jp7-sl+YHpbUQ@<^_b_{cTGLt!mVTN6?^P9CE zH~DL%WOIBM&XZvVqOXPG8Z5QnkFZYx$nB{wzdV4QXH!jT2 zrO`5N_FuZRt|8Mi_l~D9<+k&?DD7ryE2hn_CsP!cc{fZe#+3OE)7j>)f}C|cQi9aQ z@kkA^R!_$x<#?nVy_BPu5_`vIpqC1=jQE@*O;h?u*5&`YM>=B%caPAz{9pG_=RT%k zul1?R|Mj|$+P#l+h-qkd$V>G@4(8@(?|Unxx@eGZEYV)xI3T39XmEP>fRG_)f3UhJ z!i%{6(=smi3#nysV$#e;P}%Pe2?^VL^Ug1WLi%jaxsqTU9>PaKU);g=?d(rNh8($h z_q#qJlP=!8vnwoQMrN>6uqmP&-l>)B%3U`$1PWF1pKk?kI~u$o_nqJ^+|Xd&R(Ru< zv-w!?ue(F~WvmH4yDGTvf$?t_euOt?CN>DK*lq>KAIZ}m7$U#ELM~@b;k)8r8ivxB)vxqQhv`Jt1O`pD&RH}Hy!dUuu=kNV}RJTLE#d|u^!>ely@zjNS%Jo!vt`A0kCi*g19ZxcjWf%pWl(s zy>cgOf4KaEs}}z+%ZvL6j=lI&xWC?A?%dlnq-*cG{9ku|a*@WA^h{IzH5S9+9PvGm z8Q@=J#S2R@2v@9UbcJBX2N?mOcyXOsm_=NT&Dx=4NKuh7=Q@x+U(p+|BA1H@tQVgD3Y-b=d@L{GN*&f^#8Z!P<%a7Da5qoLP({Ml7;Vv zq-+ZD4Kek5hib2n40(G%h)>7`^~K2{Dci5?gsbIe_MN_x81fUBwFFN4?YMFM*Qk*F zI}V<{@nJ~akPE?!^TKxD9U8pkeDD(UwBTst&|q#vaLRYVUuE>_pc z#~O>XyqR)&2se^iPRoLq`7RJdM?*Q6V31dS7ms zL?iyGjfZ=y7CK}%OCJMn#OZGuVt;2%fHvJhs*Ho*KZtqUv$}6Zi0)>Hh%*w zFPeU4a>kv(sS}uH;I&fW#SK__H^YqgOSyNq`7=$qKWEiTyqUefh5vcY9K0CNi1S4z z@WADZpJ6tb9j@xd)Eimy3VnT3zv~7~XJ*D}Oqp_h_a1=%Cd>yHd_BM0$}rmn|A>fR zwRw0s<8_?QCTFD67eTLhQvXow+e!UP8P(9cy!T_{878pAOYkmCG>b58%IU)}%c=WL z`8$TRfI@iXQ!+STh`ul&btmsXM~=jl=wGvmpPx^Cm*nAd3OOolzv{P=Gh_KzOHw8` znDdxn)MyHI>%4jII(~hqI#~2>S)s`IU(7GrjdMQC9*A4tWNbl{kp7!vvS|XCPP!fp zA3%06-oq7l7yTpqST)LcWGLJlZuXP-8JU6IXg2mFTJrz%HuJCuY3nUT;9&VCvt!8I|I@$W&JC9G7pAj1%-cNk z#xwQkbUxc7{-UNJeFR?tN^&;hZIf^VCge7!_s@Oht?cc16~x~^i+?(&>vJ;m%5J=d zGg3!*y#{-KdyRosAI6C>@RdhFEMU*YF*yivPsot!(GU!|k@bu_<@=9j*gzyAUVNAsHsfw-gj zb&P%;qhH79R~!mEM!$5i*mE%Yy?1Tqxdu%Ak8i7g!d!Xu<-Ak97$!JPePa&8wAh<{ z>*IQiFlA=m;4qIi-)3H9&c!qFzqj`M`Un%G33i`yqrQ)NBJ;X7oY}g?vvtM?;vBjE zUrcRAyPbLKb%q&uhgrH2Q&+>a0WIm0#+8{k&Gp@RMGhI{5AN?dwk{Y|FgBXurXnb^R${OarNN?V%YA)AQN~4AYgyQy8LR z#CfiaG5s+fK8kNM^)~PJqK=iDFa^%)%k;iA09sW8J<4s$&x~ba`)Vf`nl6lnpOO@2 z>QS1!!dLVA)QipZXn5sqWbf|A?Otszk7Fz|*|~qVsW)EZ3-<o6q)J8VaKS~xQiIfbJ43$Kfn}<4CY)aTr|EO?$ znM4vQ=_3g-21nT1^?3qzA(k*x?uk#u@^)dne)wT$pO6sSq!bBO-~RZ6C1 zHy>=)yBv2u<(M%JGuBZCCYEXIbZ`A*+Lm8mOW^$e&;HZ3Bdnv9ENvi4gys&dvZIxB zw37Gq6poh8@DEyhM=M$J(WqlA8R!^GmT8F{t``EP|IJydTVHx( zJMukNhm#sJ{=aN2$I6sDm`XES`Y~SXE?+#@sqBe!CF`?dd(?xIBISuj%<{Cd_Id6j zcHPx%2w*ZsGfZo)rQP{r^_YV0d(Sg>2SU!ub+fao&6xZ~LMW*510}XBgO**@OJ!FgZtYmmX&H zpyK+c_KxDVdpIgsoSYAifDWV|V;0VydZ4}zr@!^C`%4~C`J77`udsS;l$N{Ibx1i@ zrk8hf5>A_an=6X(Y1Zo!XBTT7u4FW`eJ_%y>$hPufhkcJn`CHY-zjgY5|TLb+lon4@HIVS_L0M zM{zrPXy#utAX54$?HY>*>gy==v)WX5tI=V;(xr@7ST%WNfpS)(cI8-^sti*~l-k(} z<-*RjYB!y(v~9SRb(AHqRu7rD7*2|Mdc`SUZ&21gZ}DK?YLx>&QZnx-m9b>Do%edm zg2}DwDyu~+m5az^JFD7Clj2>aRH>ar7Pt>mDivf-8GDtYl6<~0HqcYqt6`k7d*gdz zp3tJIYqbuulncAms?~C)y>$hPufmPb6K}g6T?S5tN1L7Jm}NL7b+jVr9dqb1a)mMj zAmT&px{T*t|LnHeH~}U2r)<@wc{bbMaL^)-SJeC*%rs$cG}6Y@V|v~hPj^=dyW8kt zgiNFOyar4SMjiXt%`+iPd*iHw8OimRAAsg4MGG zesEOZXWuZ#<}*=$FpPKX;ldkB8we3;v3adKr_tnddpaX=*$qGW?No*lUXWlM!8iUg zvr~a}KKlCo|6DKlD8z0x8jI(p8B9$kYsD{(89DWU1$zJenrTwlzrdGy?JXp#Wae*{ zIIusBPuF0qz^lRhvEdu0@ptBiZMc<8vzsHax$WxrI2chgq(0O6^lIuw*pepX-}J+G z@RRe}xr;}8Wn{MDrk}mF-h*NKa>G$x*~8QFw3&;s571aFY(o<~89SGR;~*Ae8_o-R z$&4NHyqGqEPKI+?_AFuA3OXrccsqBS7fxl7Ic}=sreYr|Ur!xR>NESKwqg_{gUdPk zdhM5*F66j=vPxB&v6ndR45=ikWUSHc7p@6+qp<4dChpg|>$!fDI73E6&GWD>;JCuM zFY37(oO+3O{eYjjOxdztz9S7E${{c-d3VxTX+Bk4&8MEETybcB-jjqgs>nI6I(PF} z)tlVB7Tk3*htv7|_o5SoS=CM(`~yGFgmV+`sbF_?A*O<<_4M$QX;yRGug>suo#Vz1 z<+{Xi-}!M|{*oS5JU`M45owPS;~7$;Ms*T?9*N7=O>EcRR|YRg@Q2~tdLOR;QclL{ z4L>%=nPW6*gV<~Bxz}4ikW^~nZ$EXLC!th~SL6sk?WpTeBfWwj%?JRM08!Du0 zca1E>@drDU)4nIsT_@8yRsF9yj&1lKj@wydhk-lab_(@kzC5JPHB0_Yz2AeMoZnkD z3rh2Ce4VWJ_ZV&DxKy$M<(2(y#}}(MnO#C}gmbMSSLux?fVuI!%OS27XS_~|I492d z*Na758$l=IjK$%zxVC~$${A8#9$3V+;&5C4Elsdv0N@w^&|O=OzJf1-XST0!jOw1l zp*lYRQ09#FuIg4xu2lL;om^@MPFE@?6DNt2(Y5hdWfSF%xJm;TD<@QYTj?95T=YR; z<*BfquT;jp>9$Z=L#YmVxn{jF${EtorpzmgUT+TZXGxo&$&&e0F>^lkBvlr-^yNKC zl*YMain6-$W=y47$~WsMKO()9akU0blR`9EY0@J1`U7Xcxrz5wFw9kmX@2(_3*jeo z@jRt+f((8>QYt&QS2p~Qa)`T9IX}ePrREz8g@{VVl0}n=tHjkvT1`djvg3m4dooh^ zL5g2*rF^@V(zlONrqnMQQRh{`OW~lZd^GX3!j(0ZSv?vpP{vRXD27h$mGfOjR8lA> z4M(aGNU zr?;y%(^3GYW^LgoXHwnTjmI-DeMI`Y*LZc2QaO?gMuBC&*TAjP%e~_1osd;+H&p*!`vaf(#e+Geiw7A|bX?|4 zKkF*OJj+THtFV|lv^gF2cA4dbRsk_}XFc_~E|YDuuFxtGrf#f9KEGsHV3l5z>f~>VP;_$t!V_G$->29FTO13{ugEO7z(gm1TUL@{ zgUL|*IgTK&SYe&So__wQfm)@-h3Y3BCx9c=#S%mHOFRo=Rx8y1_M!Mm@&firt)LVX&zj=KH%Ff(| zYs{HUn*6%?jXAT1>%y7yId85c#lL3b1nvc@lW_VwF@b&^rfNBNPM=j}C-tFS=`DV+$~S83TN0TeQC3pl-uU*!`rl)berq7mE&?e zbCC${Oe5-$2Kh^aZ-pS8x$N^%uXAkkW8a6v5_rD5 z4I;#x49~(hw?N~Ww`f2icgo^cf86aLcg1@poL;9+n}4k3awhlTR`e_47QDqxn#>iB zZ%~9_-MHe}W`^?aQ7Hy{9;qnU8T< zhD#M?NwjU%jGFt5&bhTfO?dmQ4eut)5>`SygFR#8&x`x?H+S zvZ^Gw$>5I?pvZfx-Lh5v+pe1K8MkU+t5pl?Dyt|B?@8R=r^%r%ZzqiG-q@?xf>pl5 zSFMV#yC^}qYSqko)FBOW>aaSXbJX45g~ z<~NNw2HkeEJJN`lTYIW#vdn_ z$Dg5o-<4>&Hm|q%W6Sw-=1e$ePRiUC&z9Rh=l%=RvTPTo(G-ZM&PkcGrAMeg%qq1D zSfxe-u$)21^z9^`JcmMjs3mLHuw;#fU^$hJ-iFds)UB)7>ItW%zsMN3&#}tKJnRg` zHEoy&@inT3^(^(Y`&GYuYxVP5YknOo=Im?V#Rt?r=4@Os^;O}zS751oOm7AONSLb+ zS@+as>mDi$A3({&);)FEx+jF-^l%kVUAE$hz8|XAsmsx z>wd=%34eq-r?WJ4YfU(JGcWqF*SY+z`3kax%lY-40KaaDSQFQiyrWnH0ZUdMo8s;t*ru7SAfg0A@{6L+TVx7_f#oZ;f+R+r&V z%W=AuzQr0SQUd=nf7MD4(U|J19@!=1$8y~0HS6B%^`T)g3-MV=%-joJTB^9Ir6FJ; zVdMxt1PS-M+Vc_(;*aATr}ezX$=7lHzvZ|ajr9m(1y|HSuCVL z{i~<(yl2anEj*(xBkMGEhL1d7{}XvPHO+u7uk|SefJ`oq;=b+1jabXCH$3{jmckVFkO4bJp{&U}&EM(xv zmf5`jpJ}R1JvYM9*|#=u+-2`#1Q5@uJ8t8+Nw2=oao@K*VBjvx7tjFAS0}W&X(_@B zL&ozVeA4|o_ltK1_sbRT+t;#+Mogl2;qx~;%*4XPUp#jp`0SmbzRkNXH_+SPC}6@( zdi!b4uU&3@jFy36LC2QeQ2MwD=J*Z)qano{y+%*hDqi!|bM-hQb@U=}o}ZW) z>+UJ>)HLigBXOy_FPq3VZ`5{5qAam+b>C**-Im1rHGD78E%Cw%uMw*gXL%1#?9n%I z)$HDl=EC2y#KaZvG+wzBit#@4R!25knJ7(EMfxsE==DZo;_L6d|Egbb!hkM#-BI#J zxWauYRV-M#`nB-Y($&R5udP-v)adsm%J;^-^a3>NfAMZXdmR^#YF-t9uN7 zd)2a*!{@lity=E+(MrEI(eqYGSDCtp;jemJgH^NYE?Ko|Nx1iNB^1(Cg-iSUC#;%0 zXI10rcqww-@;TwHHAnwpTXvff7t-QSs$kkGqVg3@DB{kVjg6Jb{}BtY<= z+rAg?KOx35j`u%lYJw!e)H)K5&bA+xkPusM83G7fxu{9>%9U^Uys~oTnEGRuuT=Pj zt_eY|8_r!hv-aYZl9d-a^;o$GszJ@?teoWj;mS#~R}O12e@W0AD_3?K^j@n* zy_c<6F|k%O-oa!K_xG&VwExl-UF$G)y?V@9vEsv8i(r0jR^3VQP%Z28f9-tT;stUjSQXKFH3=K;QwaAVc;8xSwe>{Ht*weyTk1)*p7n06R;{hI zT3Qtas~~cRgd@pr_Wx!#2?@m3_TS&P-}bxc%g)ZcH#<8!J3I4c-sknT9T=09H7qrHWJA!qUorz1r4#thHB9uO42ndcERh<<-sW-(D|y zz3BCV*K=N7y}Ee8Qth`-TfO=RtJN$}D>%igC@a1ZTzd7qv^y(GVQEP9^d5cC5M*8g&OL>-!Y6`_8#6XY}aROy2=&dBNT{YN<% zezu}`Liz{bftt1h&0rFmbgS(2F6IJwk&(^dO5_uR3^o=a^v*1FZih{utIH7b`3?=P z?4_44UWwdm82Jp4{|Xmz_?2x2;tNV6VX4yzgNDqwhS0uw2z@qPCq9&R22c=2ycopG z>zZVZ4?gH)AZ|V9tELlfW9f&yhYud#Mvl#m;C}nEPJS$y4xl_nzDiqs3)DOduH($y zJh(C&aNuZvdMHjzFM`{DV)JCoNZKBu`$;X;JgA4BK! zkoC%0=x!8@daAa+-&-{v3DrpmKw&)V7~yqo!ZrtsPt8(0L$!~&RQ}*g59EBLtnBCz ze_1aq>{r+8t$XM5FC-(;&z0vt*oz-4MkINMsdxB9K1_nA$v~OF3FBwI75iC7bri`b zHOt^StwVQIsHzWm!cq`^Rvl!pZ}nE}TOC2_zfkkQvXc`WM(?io(3X*pD&Qg>Up%PT zZi9M#SY5Hj7MowpFB!sk^;Uvgbykwxco+LFr!MR@l05r98dQ~lHePV(cXJs?M*iZ) zIuvik9@SY<>Kbke)XXQ0q^ycxb&pCyz2QlnT#ar63d{figz4P`zuy z@C8ffVXwSIlR zSq}Hww`7_2Ua|9ZZ3Pb~JvZLo<&!EGLs7Kp@vZDM*ciRNu5!B_uHe@jC$bd`Zqu=3 zXVf|bo@5pHQ%~o;%iICnb!iy5t*h1wISdtfcs z?S#hG*@F_xcQAhHk+oOp3O#3KY1nY}yi^~SihO_uR3)Pk^%IZ|$C|{VfIEFX9ZMqXiRDZ5k`1L{ zgW>IRqX(eZR4AzeE+N~UjdV6CTFLVp(GjIgrYv7>Z7kUjK!)s)Cy5p*;k~D-cEKID zVnY>Hu&HzrbIBQx`d~{Hrb3u2>g6Ku;5uTgFqB}n!rr99UpbE(1xnf*WyU$3Z>4vF;eh5-Sc1~VQB`z}D~)LC&R|$KyIRrrgW=^> zNnRdnD7sGS;gjP@?+scMGHDlV=9hc)9(TWW-slmLRq_EhXu7m-{e$q=MlPf9ieJWT zEM8-usiCJWrJDT;=;czXCCHO5>h(2!zt1DM_SY^nolmILk;~|rOKCbgo{n5W*SQ?Q z;>r0SUR7&5H&b`uYjFrIn^*a7}|eS;VkN^3?PyyK*%FGL85VcGNq zC#TCPd5}YEt-TBuQEMQ}=5dE;dN;_A#PZ{cwDP{INIE~1rZ+~ff0I`9Jw?-z*>p`+ zmFm5jxB{>|9q}%$*}R8d6iq7pAcH<<=^MQ(K>nJek{)${el(S!>0kPd_?~`bUrv8D zd^Ns-dxJpyCL{hNarEef8oDanWy%&0x`=pl{A-0!{jE)thFm%1F)`(u(|no^@`hry zt{gFC?SX-NAOp=|z(t{o2-=FKW^V?I5*&tw#&2Bf05Jv(9gfXz{C6X{H2NYeDW;oU zLai}Z6wP*pzR~Oh}Nm_ zJs|ru&Vu*x_5kP`wQqUp^5fU8xgh(z`wx!~M5$jK`2qJu0maqdi}3pa!qDp#FT}zU zO>Y=L+||A0w@=!lqdDl^>jL!tF_h3032&ssfW{D%0-r}ddtLi@_!OFfFgJ4HMlRgQ zg&VnWBbT<3#6NQ6!YoQz6M)>vof$K+e*Ym)Q3>EiO%<*)CbkMgOvd&8>H z)z!As`mI_!e((VQ+`No216)G~<|TN%;pr5Uw;F96U^8T8)|5el(Q7x@EzQeYX`AuR zYmNd@Zk~A_6*L(Zh_0^f8Jv?lN|^JWTU4%ibk2Jt2jnKA`ME2s-(A%+bAI34+%T7{ z?AL_36NS0CAzrz!5xML8rr`A;?=TRrTGw+$?wXz}b8{11bB83s0mL0)q3D-kiCXz= zSdfYsl{?QNGk0iO?t7WJxnn}G{OBlH)KRYOu|8*c4*^dg?>9K7&&-^h8G@VyXIS*P z>l*oPkN4*F$;nya?KFIVM^5&D#N`f|IdeRnhdTu440dpsKQ07vXvH~X^jHH6QO$#r za&lrpz8{t!l%SP&m1O0FdgSB;j`kPkWLT%=c;uD8?y!R*(--RXJ@al?z<>^<*O^RXZI$u&9kX= zyDWaz&DF2KdeA##1%ffFvfdr(FeI#RR-E%x$Nti+m9K1AKiF<=Lf=7S=h;up%5obB zi%PBHK0}B&>zFL_EKOq8D_K;WQwxCVGPeGFg!Cya&~jFhvwj;pRg5Jwe|S2ICMGFdXxec?1oLtm1yUFtb2P9f;A`e zV$i%OL$k9x4!0!;b~n53_OTY#$00OKt=?!o1g}R7LIqn8@~=XNWLW!HmxePabVh|v z$iVDOx%qvBGXO>Wmc38_<;X7z@NxtnHEYE;?|_w>2DcMcC*c2*HiNU~hvg3+w$|nj zodV^1u>IqK3v3XIedtKLAv98VZBg||VV>nKx@|zlH7{w9>8B zyZga)l)ZOVA1Tj(3n_<}(+;4Tf;BAog_JFz8rF;Y)=fq>$*NI|7S{b%9x#-@|HXhK zyBLy$iy|@alyyQAWsYU??{3iTlbB<&AFvx9TaWFz9fsA~D z+6RqS_iZoV0`i`XpG6LWELyR?+T(UIl(O>3!t_H(Ts(l0jemgsD~@U}%iQ&d-0xL4 z)8MX^GC6%@0Mt%>@sWjt<&GbvYlVNr6-|#Zkp3bAu14)Bf^s(YOOwYl_uYT>ykk>&Rz{o5fPxHo=yBkc#+sAkp;p%3 zmC3Ke!T~&VW#iXAa7U!`XVq8{35)>T#QdspLqWY5757`TdfYIdALvoE>O0Lx9%_0t zO^v#Uf2VE7zwvqaH+%>E8ck~4zotED)i=}!V@U|8y@v$+3^38BXsjzgkD5t}CdtRR z^ya9{`AALm?%t@^_IoAZtP(AMD7yh24U2okHZ=;KHCQ%IJYKIV%j<_`mB8&{9XtqM zDC{-l=6baDLNAnm0Yz1gvYsz<(BUI7?Gy`}BZaUz$D_CC+wTmeD`yTxDElD#Yz;y| zRp@mIcvzrEGB`>qz)>;~r!IelpV@%=Ht|lV$?k`FX!dslYzy{4qPp*UH*Mgk#PCXb zQ9h_~DL*KH*>0|1=lXT7U+4Pu|E7MOQ2?rk_H}zRe^kC|NnY&0+(qy^Kv|MRP(dK24-e^W~&FVYdf8hM94+!i;0Q{ktciOxJC$#wcBo&HEKU zE&yo;3U|W#qkA5H2dWhn=3=ZXj_dIE08Pxum zc%bs(Lz&_dt0Eb=XEVeqznhCNW~>EL;taeSKv&a5S48jJi8r_6n@~UzCiSjOM3HhQ zC}}m6fE`ayTJa<7OOsE<I=1m^Gh@W7iP~;=Hb%ld!Bz#{k>vGV7@Zb$VuwPtI zzC@>ggDjZs!O$>HVfBM@WU95(>8$-JlZWpd7ndCJ)?os?GLt9 zO@mq`>Cf>VL27CP79OuOAzZZzip413^qYeR&=WycJt*%-TM(nhGFKMYnGmK54?*?~ zpnB8q47OE9gIlH<}~D2HGH?d%{$e$ zc5@xk-a`&9_huT&*Fv?~zwzDIb~@!7vo-j^_V>|*rccK7_67He4cEXuB>g%XaJZ&? zBW&P=2ggU{IwKCe(Yq|Gw@w4c?haPK?qD?jL__OOi>+bvHw7Y~R)OD9NX;~yAy})6o zB)JlclwxHVvtv}N6w#vX*gslqJ(Y26i6wUJ!xHCre+$h~87X5xC13{`$bwQ3wv1|3 zB3hW8z=y!CK8O`ImZ-VTuW19osFV4J5QL>WePRfknJlIakoswT{IE*v5B}hOvIr-Ij+$} zel!;+HB~SFKXspGqE2Nd;&z*ed$&WJnUw4Gxi8*d{vKKrU*6OHH_hX?UjJ{}>sy=X z-Fljc>tQ19RTFWqn25775!cN`+`mo4y<{TpMH6u^n23AML|j)Baa~NrbvF_B-_+}C zr0$*FDM1|3nb0_b7p!_6R8BE#$77UigX9KYn~jom9&{CL&YIh$*XhA+*0DxFM(J>6 z9e#}iYZ_#fEI`Hu{j<+sMJ-23QllZsB3Q&Xz807o?AZypJ?&#<5UYbY5q@t}T!ffJ zEsDwI`KA)FC5#){`{0>&iAtPpbrtL?QOQR3&oGtxLn171n=H<%OMOu2HoNN+4aJaZx8RHTo?jbf3jS+V-86Pd`A|j)QM~ixh4EQyU(a%L|hDY~|Hi#VP zs6XjKP@`M~FAFG_QN+uJcc>oa8Jn8+VwyTN*3*-C$uNm@iAe}~IfP7zaWPJy1k*#h zg;3K49ioG~1)GRY3F;O^rF7s<4(t|4C7X!u6sQWieCt|5prxtwq<~HVs=zv0F+IRC zfJ*8hpXlGoUlmYGD^mO|{i#F~=@$OYvGeE4=;l@P6a39h@g(?J_%$!BS8HeuDPQSl z?nfnb$S2;{!nfJ){T6Tz)3n*o*W8zi@5m#ul(hP8QGufve`vubIXX#H0mtbRA;4-P zJ&yPnK}xfx5uLEwyM2Yn`gHT5Vmm~~h`WiYm}iZS7IhO*(e1cN=b$j*%R(|N$l3U! zq^Dbu^kpd-79g80<_KG-K`?!F?mRZ-jQZL^*Qb2<{s} z;IT9Jjc6O{aNh{-8^L`exNk&qAUBWDX;!#z1gMt=I+j`w0NWcCKx{nSW4FT4Yw}B| zy7%Vqzbhs|1gupukD*!j(BX721!%Pk0BZ-v3ZTirQ}WBGGVANUNQec%{$gh#>emz? zABM&Ufw_Qc+4ro3!q83aOX$blpP;_`G=L5MEN-|da8COYsu};&-Aj{;OI_$^@}@z8 zLt1bu&mgRWvDV0X2js$@0i1>Xu?@&o2YI3nu006Q>}HLqDPb^}d3{-32Y~NxNO5-z z(!1^)h7|XIDX=?4KbSs_>JN4c_uTp;*OT||?&^mQWPTS7cqx`)p4Nk9-wSX% zNh(Hrvk^)uK>##@w1!xKaASo^?Y>xsR3a29i?l#I3dc}MBg88=uHd7NoK0snGkyo^rWBR|w5nfy?fNI{F8!(z(tWQn*UDq?9j2C@ z1Fi;~mwx$(`9M?f*@W^eI)|B79|5MeWh4b&M$&zcfyu8NGaby(F~Mq5C)A?*_TtL6 zEn8;e+c-*BApN2e(tUAV$NuJLlza40$=svo-ukvB;{SoSzVhiayC;S-y8$qt(*j|F zHTSc)^n7A4%>&@Ten<<0X^tLOi@=~;>5UGpc>0{L(s0g)#kE+NFb%r($2^CdqemFi z($5pk`hBhyl`t8^B``;|ID;F@k#%-O^&yxWA6nsnu{`kf&<2s1ryC-1q;{70tnNI| z0bT+-ar8i~iWxR&(vw+$@JT)MT(JjIKl2>%RaElqGeh*u)4^Af22a|5YZ_>S9zXl^ z@6}(O{s{=mZIIv*?(u4m{)A=_?1+Jb;5QB=(YTV}6I4|O=s6UDbQ*DqQnfrh zlL*VkjIa@doMAXf_)R~pNFgkZIBKghP8AZwPu~#4;ZL=Ekn!b<9r@PZAc7xMN{G@o z+xS*A8Sp9U`SrD$jEEM$6=$x_iD>cH^N|Z^Uohm-6>X!GFRiV~Anq(Un7N~1%{PRe zk=oc`kRiTDC?K)-!~1dbzd7>00pHD2?f4!8-;$rp3BQ`ML>-?b;cR_uJHATb^J_ju z5Z_l2EFYyJWoP4bHTSgIXP*q^<^Y2fcyO-x!KL%wg84hw1r^vrw?rqxD6cy4TD_ul zJ>YMUN>vT`eABsI66h9}Y<}r*S7733hk=vx5zR{}U0+I<8=p!KT7 zjuO;OW563KctzFAataC>3V?udiz&r23`WM9_f~5$V)rKX` zj;R{&4u{uKT|ocrgyW7M;pD_p=xP!}*htO;Erac2iAfzmw#UN_}ZX@G^f&w2D z@Tz@Hir)JK;8{*-&L3&}`n5~C zOKZTNIq6Pg=Q6d$$mM8RDF7zgw5wm-%mJEuPOz=#B}p?&&eh}JkywwUbY zI7C1Va)Z6!LwiuYU5OWoVMsHGJqVuVU`aGf&(}8Ad>%p&XeiPMVBXz)<5(~uy>+%N zhLWuS`wR6nDdDGMQXQ=;m?^JX0ZQc<~Ognvt*rm^9&Q)1c{pV7`pN(N|$@pII4Gu+=gF77Y{ks$CyiAzV zbFG$ZwOp&^`dY59{lD*P)n8y`Azvv!11=@Ue7+E^-WHAFdKOREp)Aa}<|zeo2bG7=RSXm`e=K5c^pID@4cW|10vylFvt$JkY+6(dHXnt|s1 zHU}Z?umCN%?S@Aa%#yX*PA`J;tCnLCzyuyPjah?%Apr;jAh=LD25E-{-cK<6b~Ce@ z4GyF*Zn0tp+!PwC8lshMhbS!HcR@EO*g`=iC=<~5Z)A6v@Bi>&l(Qp1HMvXyyUDKc zE>kG5lkDQl904LtlLr=Lx)bW`9uz(N%&rxIF0oIn6)#S z!(g_EQ}HQvX19+8a~31!i8c9ROEFHurYCR&JH##`m&ssx*cJA#b!QeZUS$RjV6O%i zhvot+W-+5DGl;MtSaU;uniXE!u*M?_3xcsTG!KC&0ge)2gg3A-v}hj_Y!PhClM-YR zWE_(mXc5T70E9WaU!t2XLpG@iW|X?!693jEB?VXnSP?2n((jkhrzQIH{TsrhMdekO z!wJb}HD$SEGK^#}vwquzG4rkZJE6p(uZcCa(}+*$crCMj_k^A~!H@6P@Py7Gh&U?n z_(_6D&@=0IQRtcDefhrR53+igOE)(qe02aXRp_$TZ>MPEhKEi0t|QEe*5fC18RJ{m z?W-{0w2(C33L@S*LS)oTlN@F;h35eEhud8otp8~rNE|$t#-fUfpXU*N$Lq`Ube#Gp z77NX!3qksINWf;Uzb_$LWFdmb*w#X@F`~H;HzfzulNp~uv%!Xl=2B>Lu=ax6oIAFW z1S3Rq?IfA&NZ8p0*O3@^64SYkgzHGSj>MN6k+{M)jT@2Z2Ls%QsrK=JCDhZgK9il+L*PaVGx|+LMy6}b@;JE_$tFvkFSAbA<{uOxTKa|$O ze`qR+PKNMrn0yQ6xvsoH^`coYYpzlcqqR|4=F0@-zu7 z{nR|4UYC^AdGPatjjBC!9NP~i+ZTk^Vss*{QkhJyp(z<(ruoU2$AH7=(psdxzB8Z*5fBd( zHGqw2OOZ%Y<+LnZ3kK5`PY}}~J`84)7zU;--p3~e;zNBb8623lc(FL_+_z_ZV788d zV07^sDWDB$e8m517b|+6L4avv6F$d6zvyCKU;$rrr|d%psF${fOu$5p!DZJ-|6tId z5t&K3t`he_Tvw@Yx}@}vb*CLW#*Q%^JI0PN9XrO3G3`4>QrbR->ngdf@{jh92Hh&x zRkpb%;6{~ytYhpb)v;sj7}K$1>=@IrW9%5yzGLLNO5-6XH>v~|KYw^A`LwQ5kB5mt zqT&Q`M(2c}4XhBS`v?rdJb(KfmdD7(+dgn;y17n#5gXu~ju%@Q!g^{P8K%n3a8O{T zPsNgyQ;HH8?^SER?F$nt(q&wLC*M?d)TDc7!tRd?jvP|74*d+cp@XA~rZ-|Qtc zbLU{GWR(6-d(waM{cs(r9>ARKZn=*1fBN;|I#RA9W!)M4&W@JrNV$&G&>P0@Y(D?E z5iZw}avkZjcBJNU)PjIGk2rH!hMGWl5a4(tcD&DMgI^CHb6EEBhPgG>xB}L}s3+^h zoy7`&I#oYew>7~aXBc!7bsHm&+9&HyeJmFLbX6?=tVqkp&eeN}&0$Gx9L&+F##=0Zy91tUkQkwwf{8`46gpSm&=4!(4X!K~d{&zKRx zkEpF)E4(xJ(+ve%-@PK#GvbN6jh^pqnDEy=Su5PV{hoBrmBX71_+ajC%=Z}h7XDN& z^rcVoUv;3Jwp7YeUe2w6Vu1m2dp>}Z2u525)~Dst>pkEvj}Xm%AWyAD*= zReaPR*`fw5K#X>#>500c)(hMFBImF70`^Ru9%>Y3k}%Pfjm8jUwGl8$Du**CJsj35;SVU44Ad)h(Q0l~CkX02_zBK_)ZtrJY?SnF} zA)&$}D3!&k_w-$Em9h!b9%_5|HG2c^{VO zgs7oUK(5-iZZfh-R*gcC*hg~prUP1X1D>sV*l~E+z{ObQmPgcKAr?#1zML!>rA4S+ zavj_Ajk3qmVDu*_UxLNKPA~=@xK8?)$R};m$iE69Em*B*<7bhBaO(hR$R_V|_S&l9 z=kZgwL_a}18h&M)v9u1f7LCaLUUf4K?iNeSS6xO+NSUmuc`H2qPUs<6KQ})3ppUVv z4k-jshx?_;^_6$6 z%2h9046<72TCu#B4$L;cc)YbuV0{FZwSVKgukBb-vVWBuJPBM076?naeEZGG^n0jp zu}tFfc}dCE-pF?CU77rP67yhHWnjdJB|$4R8>L$SgfiD(GwN8bzvlXD)*YQ5Bb4i} zBTKmcn(MFmVs3oRjO)4awGR8A9ny2->kjT3xbZbCJc3gQZhWmBUw383*FBlvSK_)d zT9Ka2?<+)CMk~^j`E__o_!Xb7T2)7DJvfY7nuliF}X*vRNPaSdgExIIP%sR zZ7N@^mORP1piib`Z-c_6Iy_P=IZ*!O>rk=Jp_;NBGEoeQ7{0h>^(Eih2(kF&p|Zn1 zpH`J^AmhYfP|PY$R7YyJrinp=Qn%wykm%qg(W=@oQ4t*@0<{WXRC7IDbg)1qI$9MY zT2mb+{u~m7U9^gi3enoH>J_IVg%7iYLMi2Y^n_3tL&pdiHA_ugl}MOeE)pI-Clnq( zCKM(^N>@hGQm9P%`hl>%{t54iToLo-KCIx-ic$Mj3Z6nnEfF3*BotoQEfo4Qa!SZl z7_kl%Evo6Xf5{p!ROKCmtqt1i35kYy(Cx@JeaXmuepo0>WaREKa?J()!mv}fg*$Hg z3E%uoxUMEtbcns8a9s)HDGOJI;_JOv86-N&$g#SjUuIlsXsSOkO-SsosQ78N(C27< zd5%`_=5{DU;}6@g9C51p&MG=udw<=9N*|W#MWIqG6o%6Q9a3HpD(5sr33uItJ>d9S zhBB=?tE+A$3x!j=FlwEi%rzA^*V8>rp zQt-_zH0f5^>0L}-{c<1o0`-B~HoDdwQ28I)%c77E>ExsmqDXQU0(2ku8gE)AYow2j z#(W7>T`ai3X&GRHkX)R2AFj~w%dDZaGoXgy4DCynfDTG+D|(oSQT7*KyZ)`30Aw*9 zs=q#KEbV|$9&_CY*)Tk19vg#;xNQ$yx;eORB(iBHl1d;-Q8CMjc0y=BW(E%M*3${K zzR~QD-0v?1=E|A(Y^~pE4s%tDP@-xU0_QrObu2IAq^A>7&bTA1+-wKD)&0&t_&({w z+VS(tA8x-e3yFTNJpTbo=cOZ!Gaw>pP28c5Vg7A_G^fD1fZi7XRIQ*Nj;+Ej2lR&R zR!HVa+X3ivl8frC8dp~EFlN!4vs-Q!Q+;|T!t8wE!7{zhpJs6B}%yT~xyH)4pQLxsXGm`sl43WXnC5`MQsxXPGERJmE0(#Y^6-mI>? z9xKdg{kk2GaN)y8UmQ9m^c1Q@LgCR*g&soX)dRwanw1bzCH`1l`LWPW=%t;vY4*Tc zHR*Ceh8HB~-;-T=4cvZSYk0H*#@lL#Et=Qi&1n=A$!fB!k^8B8cenMzt9X0B-Iv<) z-g_A1Sr%CDZI}5I5;V*~uPc0EzNfymTFJ;2?dv`Kn~CT`CUUs47UYzBP~iu~+h9(l z9_}o{!p)mLLa0~E_`$Q_gu1o>q?@NAkVXTQLovWwjSqNUJp{6?d(ier?&y6y9XW!T z8F^~c$2eRY2OQ*Z1)e|FVrkz;tM1=@3!#16Z3W-Wf<*NmR8Ry{JXWkVKsL#4xpF$l zk{EBc6DuWEr(1hf0T{vEM%7U}t<+Yn6d!ho-+Q>GB!Wem{TD0Z*9tSr4|duXr(5?v z@CjSaf-T6noG|Gfq;zJ`WjnKCE))QAZP_t`?vGITW9^l;=*!n6Dt2+$a~!dlvXm4r z;ZjVUR-G=e^Q@X?Uq1`k>^zCy2ts=iT(2{#U#nEnO673toO;<2M-)vf`O04kuzw$4 zr4k@#lab>|*)Qn``FvAacGMYdIstRZ73?a0*WcX&C>tjz>>p?XwSb^K>(Z_Z#S0nV zL(kX@Dz(i3$)TnEQoEx-&)?q;R9LaVsWzf!3uNB;R zFpsHj6K&*S0d5MW+ejq5fmG_Z*d3w%H{HAyaosN0?c&zRb-P@*`)uui>vr3Hnz?S5 z8|`wVU6bP(ZnVpdcK;hkyP#+gdx_HdX4=W~mx!FBSPsjbO_Kmm9I=qo1Hh5Vp=--w zMk%*1{v}n9H!VQwspuSzZ_U{Pj#u?-asv?s(Uz#?jgmePuV08`scufa?KR%78RIw)wsdRDelYUPJ`4ggbc>=BlQeop7@V{Z>U zD&f0?tp>G{+brW##e@PfeT9CmeZ=LYSAtB=2P zdoYu7ufNgj%)S19=jN=Da^2DId4AmM-)^+Qz5c(a`Eak>-@CgplNux6{jbBgaQDx( z2M*Rq4{i02gK6U4Z|?o(-f!;x7Q{U(SQq!caPP}M`F%-$*$n*|^ddKHG+Z?Kdru3w zX+8J+e$V?1TEySO&NVNtd2#LKpYyrkUVm;&fYBN%*S-BOb#L4v!vCR?V4$Nu^Wkky zzy1TkE(A5oMes7?Ao=CCD|gnqp?^{9DETGBB+?}&A>?J&U$RjGC72%4DMS^THfKgy zh$Z7bxqW(Yr(jjgv9q5i2U{}Ul-s4J1o4AZ!D)NXe{qF(MfK(RPv-;&@fi2Y?HH2- z`GHhKQB|iZvikGLKwcn~EFetqkiqi~9Jf497A*-e&6E^i9-x@@u)0C@sI{@Ga!CL` zfJzb&|02k}iZ=;!!~3QLiT>vPikS~Sy;zg|=(|1Ti~RYFTjoxL+OI12tEX^(eD=vZ z55C@Rz}>XwYyaA51aa!KHn%jCAi>YvPcftHBVaH4x}bcaAD?mH+=*!V{%zvW4uUvV zWyl`yYwoK^EBolola*zcwmn+t%V&H#TM~-IDhZKVE+LM7VZ<*nmnc%pcAa^$0`o7B z@EK3f;4ryJ)x>L3Qg0GR4?lx|1ws1Dk_jH6eE$M*)aVZ4pavAv@g?3ayR`Mue1eZ% zFyl>R8TTNpj8aZB7KrsR_fe#j?fs&9{llvtmCy6x1Na*waO*?JOLcR*F@KEMT&$4( zRNbH~Z)vP9OU0o1;7z*SbB_T_d(As1EKg`Q0KW-_XpyBz;~!uVV99uyHWDYDgTjO_ zv(BcC6Fl95q%X5>rwtO|1@dslFAzANHh6*lv{zRnh;w1x0=jYT*93LAebQ z*a__5*t>^)4?99L2*7*cAoyK}hO#4)gH>f4$ppz~l@%q6uvHY!p&^b~S2Im=l8%3~ zGLU%tur8iQC_X<<5UF&0YI9x`o_Jtx9?|&KUV;dwGdeU(sd4#*za6O=2iv2@;f0%G%^Es&9IWsxbmKQGo{jZ-J)z9;Ya&R}OFs6##4XXH0eZq0C#A(=uBY0I{>CUas z{>kgJ+`DPel>d(JI`?kszbF5+wR-N|21a3j`=4>rp0q|v z_oXQ*{qd_GYowp_{ltqk0p)J;Z}oIdKS?i_^sZ*^UQ#dG3!dv=aK@kOPB}XXx(J55 ztDQY#Q`0)94R*|Na<9)mOGDk^Q3481!(TrtS;)pJUM#2PReY*H)rZd49 zaTl>>vo_dOjAf!lT}4pVp|Hr`MTiRxi~3!pF7A}mP`Doe(le}A?mquv&vTsnSb@eV zZFCxy8XGbuM3WFQHpDB~D~K92BG5dL95Kix&@GVkaB+vdLTYyxk4b?Rfy#`ZTU+kD z7ib$uojDlTIgmG@WyDDTks~HdNP(?GEji7bW2e2>v^l^gfI9POK<9v_*%K#v4Dpya zadtLr4 z>HFFg@MK6$dCk|tmt0Io_*(kbr(Z9*Eid#vcG%bV&3fOjitv`AG`fmcrKQ3Xhau{BC6ezxmK-}Qku0m1962qKgiH^mqkxGz zbwJWt(lo)>chUYuzP=O2Lfp@}s_n6%8xDvn!J8pGtgpe z1F(~!DKR~l@F8;36Q}#Q`H=gve8B6Y+9zw@X7PA&XL=x@W{wqV!lYxQnjpa#fo7+z#-8;EcyKmC2H09|GnqPAF#Rbb`OCl!@9-d^Lq!($V*C^{Yw%nvpCT5TC&2xFF6dj`Z>fjN`>Ag=56?K2D6|$5C7A<1FG7B}H-anwlRH z;^JA}`LR~9ib%a{1|yw%v{+=I@V~b=;pM2DWN`LOFxQ>?i5|StEFH@d{)EZ z=xBLnbo9GQMzc-P^P;;)x2Ek|x^NY+b&gi%l(Z_#wng)zDPZG8liOn1V$PMmB2}gC zK2Q)V?J0$wrpyDG6Xh1A3(t=18`*{K6iG$1X|txeO{0Q_;^%xLAtk~!f^uaZ`mS^F zGhAnAoN&u1ya6qv{ZMqAJKJm)W)->?vdu=laKr3Hi(M9L+fC-Ixe2Zb+ICa8Fu|=Y z9PbuSr7#63ToC6Lr)@cf^JDE}sR@Cx-C}hy^J45`Nbf;TG3GJKyt}Q+2RmbUF)dJs zG1DKgO{Z{Pv~9F{yz{vDXnu5UVN=1(>A4Ljnd(a_Imxz)!nsl#scM4j>uKAiJSmyn zx>?GX%2#O?NagRv7oU~txvZpAgrC%0s+>4-%FJD{m^p)rfe3iWQhCme3(-=x?G(<5 zvWgkCInc--wQ4pK{^sNUKOi1Toq#a_TtA zyq(dJ=8@z&3Lg~J+al#faiu3CwXCzISxsx&l@Q=Pabn=252e#ArjhY2Tc+`+$yZXd zr^z==o7wQ8mUU)?RYY^rp5zd5=#rgL5uGAxceHFtmTss&6cHic5E1dVw(S(o2=5-= znz(z({C7W$4DTGSeD6-Hvh@9MUN|MsfM4=`w(S7lE8(id!hKsJ!+VBn+e=|um|K`W z9NIS&+D@pp?G#QAaSPG5o%dqmgI$B!wxgc6IyyPUC53G~^EX2Kcv|D}n&9o~t!+GB z;*>daUFK>V&xGW(DAy=$IIK-H!Ln2>S?XED_NyLfd$} zXN22@lcNU?4L1*0X5NMurT}iY1#UV#zLae|z+xM&9y`n{Hk=<`yR+$o7iFz=`p-S%& zlhd|Ggz`ek)no)jD5|!G$~Rs=9~R0s9`Do;s}OROyC{SgqMY!WXm&w(2tS0%tqZXT zQQY1gBCo2t9u~qrW`qcT&JB z0jlVopKJ;a=oz4GFc9gc4=4Kf^@qmeuWdZu34U&V+Q#D@A@z0j)i$27lfvWTUE-O> zqZ#Y%=55$^dbn6(g_!N{_@S+6>gLDpSZ=x1a&p0?PoS^UNK>s+$wl*TGU4gnr&G&l zCYaJa#Y8Zi#NmfbJ5|%l!dm^=%4JLF?pcb*g`0nx4LN*xJ9lXo4!PxGx z)O;cohl7-KBlQ1ln3Ogzi|(d9c~wfyWqG5zM^SUwU}X15YBn33)_oc^iw#02 zK&B+zU!U!fNVzN&i5F7g`lkSqqpe zFYdNjy=eA^g-nSOtP;q%vohH*RM)~nCdgD58)T}B4Kme*gOv0Hd`_u(Y&3iY*&wbV z9Hl#Iq)bh*Tue=|L8hi~kdm&4s-kA%Fx2(J@NVJM43-DFM_n+idl;3*#)fte)dfSk zgXs_(3vU=1AM+k$qLHR_OHn6Bub#`C;Je;9_phjLZ!2$Vf){h;x!vZf=cI_oF(twu zsI=q>Y#5r+Y;PvWR1OV@_8Uzpdmn`fkZ$NK&e2> zfHHu#0__Jn4Rj5t1gHjxG~-jx1K9!%0U8Y?0*U}i1zHA_0kjopKhSBQYd|GHH9({p zU-LYWEzl64(Lf@g2%uD;Wk4A~TY>fiod&uFR0323M4IvG=Yed2h5(HQ5&=a3r2;Jj z$^hC5v>)g+&^4eEpc)_&>ic;hTc9C8qk%*~5kRRx%YZU~wgT-3I*p$V;Nut){g?MB;eK%J&xZNBal%Xf@u~5#^O9%Ia1ck&osLs=!;DVa za5^0EPz1;S+7RbO10Lvj;G@R;=|(G9l>Ia3Er5ZQt^_tmr=mVevpq)U4Kzo6TfIb5{ s26PhWEYO$uA;QQ6e{FxA*e~+0^WZ!xJ!Ae)Z_`yWju+2k^7C;{X5v delta 25387 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 cKn::displayedName = "FunCube Dongle Pro+"; const char *fcd_traits::pluginDisplayedName = "FunCube Pro Input"; const char *fcd_traits::pluginDisplayedName = "FunCube Pro+ Input"; -const char *fcd_traits::pluginVersion = "4.11.10"; -const char *fcd_traits::pluginVersion = "4.11.10"; +const char *fcd_traits::pluginVersion = "4.12.3"; +const char *fcd_traits::pluginVersion = "4.12.3"; const int64_t fcd_traits::loLowLimitFreq = 64000000L; const int64_t fcd_traits::loLowLimitFreq = 150000L; diff --git a/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp b/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp index 7bf9ffddc..016579548 100644 --- a/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp @@ -24,8 +24,9 @@ #include "chanalyzerwebapiadapter.h" const PluginDescriptor ChannelAnalyzerPlugin::m_pluginDescriptor = { + ChannelAnalyzer::m_channelId, QString("Channel Analyzer"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodam/amdemodplugin.cpp b/plugins/channelrx/demodam/amdemodplugin.cpp index 82ac29c4e..3cb5ff1fe 100644 --- a/plugins/channelrx/demodam/amdemodplugin.cpp +++ b/plugins/channelrx/demodam/amdemodplugin.cpp @@ -9,8 +9,9 @@ #include "amdemodplugin.h" const PluginDescriptor AMDemodPlugin::m_pluginDescriptor = { + AMDemod::m_channelId, QString("AM Demodulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodatv/atvdemodplugin.cpp b/plugins/channelrx/demodatv/atvdemodplugin.cpp index e725c980b..12737a75a 100644 --- a/plugins/channelrx/demodatv/atvdemodplugin.cpp +++ b/plugins/channelrx/demodatv/atvdemodplugin.cpp @@ -28,8 +28,9 @@ const PluginDescriptor ATVDemodPlugin::m_ptrPluginDescriptor = { + ATVDemod::m_channelId, QString("ATV Demodulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) F4HKW for F4EXB / SDRAngel"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodbfm/bfmplugin.cpp b/plugins/channelrx/demodbfm/bfmplugin.cpp index 2c65be199..1ce2b5845 100644 --- a/plugins/channelrx/demodbfm/bfmplugin.cpp +++ b/plugins/channelrx/demodbfm/bfmplugin.cpp @@ -29,8 +29,9 @@ #include "bfmplugin.h" const PluginDescriptor BFMPlugin::m_pluginDescriptor = { + BFMDemod::m_channelId, QString("Broadcast FM Demodulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demoddatv/datvdemodplugin.cpp b/plugins/channelrx/demoddatv/datvdemodplugin.cpp index 5071ceac2..3a352eb7f 100644 --- a/plugins/channelrx/demoddatv/datvdemodplugin.cpp +++ b/plugins/channelrx/demoddatv/datvdemodplugin.cpp @@ -28,8 +28,9 @@ const PluginDescriptor DATVDemodPlugin::m_ptrPluginDescriptor = { + DATVDemod::m_channelId, QString("DATV Demodulator"), - QString("4.11.6"), + QString("4.12.3"), QString("(c) F4HKW for SDRAngel using LeanSDR framework (c) F4DAV"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demoddsd/dsddemodplugin.cpp b/plugins/channelrx/demoddsd/dsddemodplugin.cpp index 2dcd1ef90..8998fa49b 100644 --- a/plugins/channelrx/demoddsd/dsddemodplugin.cpp +++ b/plugins/channelrx/demoddsd/dsddemodplugin.cpp @@ -28,8 +28,9 @@ #include "dsddemodplugin.h" const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = { + DSDDemod::m_channelId, QString("DSD Demodulator"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodfreedv/freedvplugin.cpp b/plugins/channelrx/demodfreedv/freedvplugin.cpp index d565da3f6..2bbb00470 100644 --- a/plugins/channelrx/demodfreedv/freedvplugin.cpp +++ b/plugins/channelrx/demodfreedv/freedvplugin.cpp @@ -26,8 +26,9 @@ #include "freedvplugin.h" const PluginDescriptor FreeDVPlugin::m_pluginDescriptor = { + FreeDVDemod::m_channelId, QString("FreeDV Demodulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodlora/loraplugin.cpp b/plugins/channelrx/demodlora/loraplugin.cpp index 7126b6d4d..48b55de80 100644 --- a/plugins/channelrx/demodlora/loraplugin.cpp +++ b/plugins/channelrx/demodlora/loraplugin.cpp @@ -6,8 +6,9 @@ #include "lorademod.h" const PluginDescriptor LoRaPlugin::m_pluginDescriptor = { + LoRaDemod::m_channelId, QString("LoRa Demodulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) 2015 John Greb"), QString("http://www.maintech.de"), true, diff --git a/plugins/channelrx/demodnfm/nfmplugin.cpp b/plugins/channelrx/demodnfm/nfmplugin.cpp index 50df6b86c..b163ce8b3 100644 --- a/plugins/channelrx/demodnfm/nfmplugin.cpp +++ b/plugins/channelrx/demodnfm/nfmplugin.cpp @@ -10,8 +10,9 @@ #include "nfmplugin.h" const PluginDescriptor NFMPlugin::m_pluginDescriptor = { + NFMDemod::m_channelId, QString("NFM Demodulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodssb/ssbplugin.cpp b/plugins/channelrx/demodssb/ssbplugin.cpp index 0473bfde8..e50883581 100644 --- a/plugins/channelrx/demodssb/ssbplugin.cpp +++ b/plugins/channelrx/demodssb/ssbplugin.cpp @@ -10,8 +10,9 @@ #include "ssbplugin.h" const PluginDescriptor SSBPlugin::m_pluginDescriptor = { + SSBDemod::m_channelId, QString("SSB Demodulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demodwfm/wfmplugin.cpp b/plugins/channelrx/demodwfm/wfmplugin.cpp index 52c65fafc..a4f1f8095 100644 --- a/plugins/channelrx/demodwfm/wfmplugin.cpp +++ b/plugins/channelrx/demodwfm/wfmplugin.cpp @@ -11,8 +11,9 @@ #include "wfmplugin.h" const PluginDescriptor WFMPlugin::m_pluginDescriptor = { + WFMDemod::m_channelId, QString("WFM Demodulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/freqtracker/freqtrackerplugin.cpp b/plugins/channelrx/freqtracker/freqtrackerplugin.cpp index 76232a53e..c546d1d1d 100644 --- a/plugins/channelrx/freqtracker/freqtrackerplugin.cpp +++ b/plugins/channelrx/freqtracker/freqtrackerplugin.cpp @@ -26,8 +26,9 @@ #include "freqtrackerplugin.h" const PluginDescriptor FreqTrackerPlugin::m_pluginDescriptor = { + FreqTracker::m_channelId, QString("Frequency Tracker"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/localsink/localsinkplugin.cpp b/plugins/channelrx/localsink/localsinkplugin.cpp index 61faa5329..b03f7abe5 100644 --- a/plugins/channelrx/localsink/localsinkplugin.cpp +++ b/plugins/channelrx/localsink/localsinkplugin.cpp @@ -28,8 +28,9 @@ #include "localsinkplugin.h" const PluginDescriptor LocalSinkPlugin::m_pluginDescriptor = { + LocalSink::m_channelId, QString("Local channel sink"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/remotesink/remotesinkplugin.cpp b/plugins/channelrx/remotesink/remotesinkplugin.cpp index e23bd951d..c2d267b71 100644 --- a/plugins/channelrx/remotesink/remotesinkplugin.cpp +++ b/plugins/channelrx/remotesink/remotesinkplugin.cpp @@ -28,8 +28,9 @@ #include "remotesinkplugin.h" const PluginDescriptor RemoteSinkPlugin::m_pluginDescriptor = { + RemoteSink::m_channelId, QString("Remote channel sink"), - QString("4.11.6"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/udpsink/udpsinkplugin.cpp b/plugins/channelrx/udpsink/udpsinkplugin.cpp index 108e1344e..e082a0d5a 100644 --- a/plugins/channelrx/udpsink/udpsinkplugin.cpp +++ b/plugins/channelrx/udpsink/udpsinkplugin.cpp @@ -27,8 +27,9 @@ #include "udpsinkplugin.h" const PluginDescriptor UDPSinkPlugin::m_pluginDescriptor = { + UDPSink::m_channelId, QString("UDP Channel Sink"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/filesource/filesourceplugin.cpp b/plugins/channeltx/filesource/filesourceplugin.cpp index 12210376f..f723f9dcb 100644 --- a/plugins/channeltx/filesource/filesourceplugin.cpp +++ b/plugins/channeltx/filesource/filesourceplugin.cpp @@ -26,8 +26,9 @@ #include "filesourceplugin.h" const PluginDescriptor FileSourcePlugin::m_pluginDescriptor = { + FileSource::m_channelId, QString("File channel source"), - QString("4.12.1"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/localsource/localsourceplugin.cpp b/plugins/channeltx/localsource/localsourceplugin.cpp index e62f6120f..147c23056 100644 --- a/plugins/channeltx/localsource/localsourceplugin.cpp +++ b/plugins/channeltx/localsource/localsourceplugin.cpp @@ -28,8 +28,9 @@ #include "localsourceplugin.h" const PluginDescriptor LocalSourcePlugin::m_pluginDescriptor = { + LocalSource::m_channelId, QString("Local channel source"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modam/ammodplugin.cpp b/plugins/channeltx/modam/ammodplugin.cpp index 7d1219cb0..ba39da21f 100644 --- a/plugins/channeltx/modam/ammodplugin.cpp +++ b/plugins/channeltx/modam/ammodplugin.cpp @@ -26,8 +26,9 @@ #include "ammodplugin.h" const PluginDescriptor AMModPlugin::m_pluginDescriptor = { + AMMod::m_channelId, QString("AM Modulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modatv/atvmodplugin.cpp b/plugins/channeltx/modatv/atvmodplugin.cpp index 1a1b3df86..7240c6d69 100644 --- a/plugins/channeltx/modatv/atvmodplugin.cpp +++ b/plugins/channeltx/modatv/atvmodplugin.cpp @@ -26,8 +26,9 @@ #include "atvmodplugin.h" const PluginDescriptor ATVModPlugin::m_pluginDescriptor = { + ATVMod::m_channelId, QString("ATV Modulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modfreedv/freedvmodplugin.cpp b/plugins/channeltx/modfreedv/freedvmodplugin.cpp index dbcbc57f2..f2073dd83 100644 --- a/plugins/channeltx/modfreedv/freedvmodplugin.cpp +++ b/plugins/channeltx/modfreedv/freedvmodplugin.cpp @@ -26,8 +26,9 @@ #include "freedvmodplugin.h" const PluginDescriptor FreeDVModPlugin::m_pluginDescriptor = { + FreeDVMod::m_channelId, QString("FreeDV Modulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modnfm/nfmmodplugin.cpp b/plugins/channeltx/modnfm/nfmmodplugin.cpp index 9fd1eb1d2..1970e007c 100644 --- a/plugins/channeltx/modnfm/nfmmodplugin.cpp +++ b/plugins/channeltx/modnfm/nfmmodplugin.cpp @@ -26,8 +26,9 @@ #include "nfmmodplugin.h" const PluginDescriptor NFMModPlugin::m_pluginDescriptor = { + NFMMod::m_channelId, QString("NFM Modulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modssb/ssbmodplugin.cpp b/plugins/channeltx/modssb/ssbmodplugin.cpp index 590bcfb5c..e853ea544 100644 --- a/plugins/channeltx/modssb/ssbmodplugin.cpp +++ b/plugins/channeltx/modssb/ssbmodplugin.cpp @@ -26,8 +26,9 @@ #include "ssbmodplugin.h" const PluginDescriptor SSBModPlugin::m_pluginDescriptor = { + SSBMod::m_channelId, QString("SSB Modulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modwfm/wfmmodplugin.cpp b/plugins/channeltx/modwfm/wfmmodplugin.cpp index 09cfd4b10..3a1429057 100644 --- a/plugins/channeltx/modwfm/wfmmodplugin.cpp +++ b/plugins/channeltx/modwfm/wfmmodplugin.cpp @@ -26,8 +26,9 @@ #include "wfmmodplugin.h" const PluginDescriptor WFMModPlugin::m_pluginDescriptor = { + WFMMod::m_channelId, QString("WFM Modulator"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/remotesource/remotesourceplugin.cpp b/plugins/channeltx/remotesource/remotesourceplugin.cpp index 00d0a1326..eef4a6511 100644 --- a/plugins/channeltx/remotesource/remotesourceplugin.cpp +++ b/plugins/channeltx/remotesource/remotesourceplugin.cpp @@ -26,8 +26,9 @@ #include "remotesourceplugin.h" const PluginDescriptor RemoteSourcePlugin::m_pluginDescriptor = { + RemoteSource::m_channelId, QString("Remote channel source"), - QString("4.12.1"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/udpsource/udpsourceplugin.cpp b/plugins/channeltx/udpsource/udpsourceplugin.cpp index 099055b29..fa04e3c84 100644 --- a/plugins/channeltx/udpsource/udpsourceplugin.cpp +++ b/plugins/channeltx/udpsource/udpsourceplugin.cpp @@ -29,8 +29,9 @@ #include "udpsourceplugin.h" const PluginDescriptor UDPSourcePlugin::m_pluginDescriptor = { + UDPSource::m_channelId, QString("UDP Channel Source"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplemimo/testmi/testmiplugin.cpp b/plugins/samplemimo/testmi/testmiplugin.cpp index 39c52de4f..882107000 100644 --- a/plugins/samplemimo/testmi/testmiplugin.cpp +++ b/plugins/samplemimo/testmi/testmiplugin.cpp @@ -29,8 +29,9 @@ #include "testmiwebapiadapter.h" const PluginDescriptor TestMIPlugin::m_pluginDescriptor = { + QString("TestMI"), QString("Test Multiple Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/bladerf1output/bladerf1outputplugin.cpp b/plugins/samplesink/bladerf1output/bladerf1outputplugin.cpp index ada25a971..8b053a3c2 100644 --- a/plugins/samplesink/bladerf1output/bladerf1outputplugin.cpp +++ b/plugins/samplesink/bladerf1output/bladerf1outputplugin.cpp @@ -30,8 +30,9 @@ #endif const PluginDescriptor Bladerf1OutputPlugin::m_pluginDescriptor = { + QString("BladeRF1"), QString("BladeRF1 Output"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/bladerf2output/bladerf2outputplugin.cpp b/plugins/samplesink/bladerf2output/bladerf2outputplugin.cpp index 99f6bfa2e..046b6cb1e 100644 --- a/plugins/samplesink/bladerf2output/bladerf2outputplugin.cpp +++ b/plugins/samplesink/bladerf2output/bladerf2outputplugin.cpp @@ -30,8 +30,9 @@ #endif const PluginDescriptor BladeRF2OutputPlugin::m_pluginDescriptor = { + QString("BladeRF2"), QString("BladeRF2 Output"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/filesink/filesinkplugin.cpp b/plugins/samplesink/filesink/filesinkplugin.cpp index 8c8a58eff..0be33b8be 100644 --- a/plugins/samplesink/filesink/filesinkplugin.cpp +++ b/plugins/samplesink/filesink/filesinkplugin.cpp @@ -28,8 +28,9 @@ #include "filesinkplugin.h" const PluginDescriptor FileSinkPlugin::m_pluginDescriptor = { + QString("FileSink"), QString("File sink output"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp index 45d559f08..56a275514 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutputplugin.cpp @@ -30,8 +30,9 @@ #include "hackrfoutputwebapiadapter.h" const PluginDescriptor HackRFOutputPlugin::m_pluginDescriptor = { + QString("HackRF"), QString("HackRF Output"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp index f94483ef1..bb3509202 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp @@ -33,8 +33,9 @@ #include "limesdroutputwebapiadapter.h" const PluginDescriptor LimeSDROutputPlugin::m_pluginDescriptor = { + QString("LimeSDR"), QString("LimeSDR Output"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/localoutput/localoutputplugin.cpp b/plugins/samplesink/localoutput/localoutputplugin.cpp index 89a5c5c5d..fb36dd2b6 100644 --- a/plugins/samplesink/localoutput/localoutputplugin.cpp +++ b/plugins/samplesink/localoutput/localoutputplugin.cpp @@ -29,8 +29,9 @@ #include "localoutputwebapiadapter.h" const PluginDescriptor LocalOutputPlugin::m_pluginDescriptor = { + QString("LocalOutput"), QString("Local device output"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/plutosdroutput/plutosdroutput.cpp b/plugins/samplesink/plutosdroutput/plutosdroutput.cpp index a46dd4939..d1e021e8c 100644 --- a/plugins/samplesink/plutosdroutput/plutosdroutput.cpp +++ b/plugins/samplesink/plutosdroutput/plutosdroutput.cpp @@ -259,11 +259,31 @@ bool PlutoSDROutput::openDevice() else { qDebug("PlutoSDROutput::openDevice: open device here"); - m_deviceShared.m_deviceParams = new DevicePlutoSDRParams(); - char serial[256]; - strcpy(serial, qPrintable(m_deviceAPI->getSamplingDeviceSerial())); - m_deviceShared.m_deviceParams->open(serial); + + if (m_deviceAPI->getHardwareUserArguments().size() != 0) + { + QStringList kv = m_deviceAPI->getHardwareUserArguments().split('='); // expecting "uri=xxx" + + if (kv.size() > 1) + { + if (kv.at(0) == "uri") { + m_deviceShared.m_deviceParams->openURI(kv.at(1).toStdString()); + } else { + return false; + } + } + else + { + return false; + } + } + else + { + char serial[256]; + strcpy(serial, qPrintable(m_deviceAPI->getSamplingDeviceSerial())); + m_deviceShared.m_deviceParams->open(serial); + } } m_deviceAPI->setBuddySharedPtr(&m_deviceShared); // propagate common parameters to API diff --git a/plugins/samplesink/plutosdroutput/plutosdroutputplugin.cpp b/plugins/samplesink/plutosdroutput/plutosdroutputplugin.cpp index 2008dd9dd..b15ad5019 100644 --- a/plugins/samplesink/plutosdroutput/plutosdroutputplugin.cpp +++ b/plugins/samplesink/plutosdroutput/plutosdroutputplugin.cpp @@ -29,8 +29,9 @@ #include "plutosdroutputwebapiadapter.h" const PluginDescriptor PlutoSDROutputPlugin::m_pluginDescriptor = { + QString("PlutoSDR"), QString("PlutoSDR Output"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/plutosdroutput/plutosdroutputplugin.h b/plugins/samplesink/plutosdroutput/plutosdroutputplugin.h index 5ddef64cb..eb24a876e 100644 --- a/plugins/samplesink/plutosdroutput/plutosdroutputplugin.h +++ b/plugins/samplesink/plutosdroutput/plutosdroutputplugin.h @@ -45,6 +45,8 @@ public: virtual DeviceSampleSink* createSampleSinkPluginInstance(const QString& sinkId, DeviceAPI *deviceAPI); virtual DeviceWebAPIAdapter* createDeviceWebAPIAdapter() const; + virtual QString getDeviceTypeId() const { return m_deviceTypeID; } + static const QString m_hardwareID; static const QString m_deviceTypeID; diff --git a/plugins/samplesink/plutosdroutput/readme.md b/plugins/samplesink/plutosdroutput/readme.md index c9e9025d6..fd2a6c223 100644 --- a/plugins/samplesink/plutosdroutput/readme.md +++ b/plugins/samplesink/plutosdroutput/readme.md @@ -6,6 +6,8 @@ This output sample sink plugin sends its samples to a [PlutoSDR device](https:// ☞ PlutoSDR is physically implemented as a 1x1 SISO device although the AD9363 chip does have a second Rx and a second Tx channel. Revision C of the board claims to have pads to allow hackers connecting the second ports externally however for now only the first Tx channel is supported by this plugin. +☞ When running the Pluto on Ethernet interface you have to create a non discoverable device reference in the [user arguments dialog](https://github.com/f4exb/sdrangel/blob/master/sdrgui/deviceuserargs.md) from the main window Preferences > Devices menu. You must use the `PlutoSDR` hardware ID then specify the device address with a `uri` parameter in the user arguments for example: `uri=ip:192.168.1.10`. Note that this will become effective once SDRangel is restarted. +

Build

The plugin will be built only if libiio is installed in your system. To build and install libiio from source do: diff --git a/plugins/samplesink/remoteoutput/remoteoutputplugin.cpp b/plugins/samplesink/remoteoutput/remoteoutputplugin.cpp index 446f222b1..27eb994d0 100644 --- a/plugins/samplesink/remoteoutput/remoteoutputplugin.cpp +++ b/plugins/samplesink/remoteoutput/remoteoutputplugin.cpp @@ -29,8 +29,9 @@ #include "remoteoutputwebapiadapter.h" const PluginDescriptor RemoteOutputPlugin::m_pluginDescriptor = { + QString("RemoteOutput"), QString("Remote device output"), - QString("4.12.2"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/soapysdroutput/soapysdroutputplugin.cpp b/plugins/samplesink/soapysdroutput/soapysdroutputplugin.cpp index dddcf4ed6..32b694480 100644 --- a/plugins/samplesink/soapysdroutput/soapysdroutputplugin.cpp +++ b/plugins/samplesink/soapysdroutput/soapysdroutputplugin.cpp @@ -31,8 +31,9 @@ #endif const PluginDescriptor SoapySDROutputPlugin::m_pluginDescriptor = { + QString("SoapySDR"), QString("SoapySDR Output"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/testsink/testsinkplugin.cpp b/plugins/samplesink/testsink/testsinkplugin.cpp index 6c3740d5a..4e2cc1605 100644 --- a/plugins/samplesink/testsink/testsinkplugin.cpp +++ b/plugins/samplesink/testsink/testsinkplugin.cpp @@ -28,8 +28,9 @@ #include "testsinkplugin.h" const PluginDescriptor TestSinkPlugin::m_pluginDescriptor = { + QString("TestSink"), QString("Test Sink Output"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesink/xtrxoutput/xtrxoutputplugin.cpp b/plugins/samplesink/xtrxoutput/xtrxoutputplugin.cpp index 3d4e1a181..3275035c6 100644 --- a/plugins/samplesink/xtrxoutput/xtrxoutputplugin.cpp +++ b/plugins/samplesink/xtrxoutput/xtrxoutputplugin.cpp @@ -34,8 +34,9 @@ #include "xtrxoutputwebapiadapter.h" const PluginDescriptor XTRXOutputPlugin::m_pluginDescriptor = { + QString("XTRX"), QString("XTRX Output"), - QString("4.12.0"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/airspy/airspyplugin.cpp b/plugins/samplesource/airspy/airspyplugin.cpp index 542d3f26a..c47a47c06 100644 --- a/plugins/samplesource/airspy/airspyplugin.cpp +++ b/plugins/samplesource/airspy/airspyplugin.cpp @@ -32,8 +32,9 @@ const int AirspyPlugin::m_maxDevices = 32; const PluginDescriptor AirspyPlugin::m_pluginDescriptor = { + QString("Airspy"), QString("Airspy Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/airspyhf/airspyhfplugin.cpp b/plugins/samplesource/airspyhf/airspyhfplugin.cpp index 9e59d8ff8..f066a8b27 100644 --- a/plugins/samplesource/airspyhf/airspyhfplugin.cpp +++ b/plugins/samplesource/airspyhf/airspyhfplugin.cpp @@ -30,8 +30,9 @@ const PluginDescriptor AirspyHFPlugin::m_pluginDescriptor = { + QString("AirspyHF"), QString("AirspyHF Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/bladerf1input/bladerf1inputplugin.cpp b/plugins/samplesource/bladerf1input/bladerf1inputplugin.cpp index 205de5710..bd65e5381 100644 --- a/plugins/samplesource/bladerf1input/bladerf1inputplugin.cpp +++ b/plugins/samplesource/bladerf1input/bladerf1inputplugin.cpp @@ -30,8 +30,9 @@ #endif const PluginDescriptor Blderf1InputPlugin::m_pluginDescriptor = { + QString("BladeRF1"), QString("BladeRF1 Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/bladerf2input/bladerf2inputplugin.cpp b/plugins/samplesource/bladerf2input/bladerf2inputplugin.cpp index d6e1e882b..ddd9bdb99 100644 --- a/plugins/samplesource/bladerf2input/bladerf2inputplugin.cpp +++ b/plugins/samplesource/bladerf2input/bladerf2inputplugin.cpp @@ -30,8 +30,9 @@ #endif const PluginDescriptor Blderf2InputPlugin::m_pluginDescriptor = { + QString("BladeRF2"), QString("BladeRF2 Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/fcdpro/fcdproplugin.cpp b/plugins/samplesource/fcdpro/fcdproplugin.cpp index cdb202949..835eb7a68 100644 --- a/plugins/samplesource/fcdpro/fcdproplugin.cpp +++ b/plugins/samplesource/fcdpro/fcdproplugin.cpp @@ -29,6 +29,7 @@ #include "fcdtraits.h" const PluginDescriptor FCDProPlugin::m_pluginDescriptor = { + QString("FCDPro"), QString(fcd_traits::pluginDisplayedName), QString(fcd_traits::pluginVersion), QString("(c) Edouard Griffiths, F4EXB"), diff --git a/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp b/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp index abc2eab1e..da2306984 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusplugin.cpp @@ -29,6 +29,7 @@ #include "fcdtraits.h" const PluginDescriptor FCDProPlusPlugin::m_pluginDescriptor = { + QString("FCDProPlus"), QString(fcd_traits::pluginDisplayedName), QString(fcd_traits::pluginVersion), QString("(c) Edouard Griffiths, F4EXB"), diff --git a/plugins/samplesource/fileinput/fileinputplugin.cpp b/plugins/samplesource/fileinput/fileinputplugin.cpp index 5d7523620..a1ccecf30 100644 --- a/plugins/samplesource/fileinput/fileinputplugin.cpp +++ b/plugins/samplesource/fileinput/fileinputplugin.cpp @@ -29,8 +29,9 @@ #include "fileinputwebapiadapter.h" const PluginDescriptor FileInputPlugin::m_pluginDescriptor = { + QString("FileInput"), QString("File device input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp b/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp index c16cfd48f..6b61bd8e4 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinputplugin.cpp @@ -31,8 +31,9 @@ #include "hackrfinputwebapiadapter.h" const PluginDescriptor HackRFInputPlugin::m_pluginDescriptor = { + QString("HackRF"), QString("HackRF Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/kiwisdr/kiwisdrplugin.cpp b/plugins/samplesource/kiwisdr/kiwisdrplugin.cpp index 17c6d4b9d..cf3ae0fc6 100644 --- a/plugins/samplesource/kiwisdr/kiwisdrplugin.cpp +++ b/plugins/samplesource/kiwisdr/kiwisdrplugin.cpp @@ -30,8 +30,9 @@ #include "kiwisdrwebapiadapter.h" const PluginDescriptor KiwiSDRPlugin::m_pluginDescriptor = { + QString("KiwiSDR"), QString("KiwiSDR input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Vort (c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp b/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp index aa094a3a6..a73bd5c9c 100644 --- a/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp @@ -33,8 +33,9 @@ #include "limesdrinputwebapiadapter.h" const PluginDescriptor LimeSDRInputPlugin::m_pluginDescriptor = { + QString("LimeSDR"), QString("LimeSDR Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/localinput/localinputplugin.cpp b/plugins/samplesource/localinput/localinputplugin.cpp index 718acd2ea..85b59803d 100644 --- a/plugins/samplesource/localinput/localinputplugin.cpp +++ b/plugins/samplesource/localinput/localinputplugin.cpp @@ -29,8 +29,9 @@ #include "localinputwebapiadapter.h" const PluginDescriptor LocalInputPlugin::m_pluginDescriptor = { + QString("LocalInput"), QString("Local device input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/perseus/perseusplugin.cpp b/plugins/samplesource/perseus/perseusplugin.cpp index 0a46f6f44..307b8fa3d 100644 --- a/plugins/samplesource/perseus/perseusplugin.cpp +++ b/plugins/samplesource/perseus/perseusplugin.cpp @@ -31,8 +31,9 @@ #endif const PluginDescriptor PerseusPlugin::m_pluginDescriptor = { + QString("Perseus"), QString("Perseus Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp index a3b8d7ec8..9a8f9a492 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp @@ -295,11 +295,31 @@ bool PlutoSDRInput::openDevice() else { qDebug("PlutoSDRInput::openDevice: open device here"); - m_deviceShared.m_deviceParams = new DevicePlutoSDRParams(); - char serial[256]; - strcpy(serial, qPrintable(m_deviceAPI->getSamplingDeviceSerial())); - m_deviceShared.m_deviceParams->open(serial); + + if (m_deviceAPI->getHardwareUserArguments().size() != 0) + { + QStringList kv = m_deviceAPI->getHardwareUserArguments().split('='); // expecting "uri=xxx" + + if (kv.size() > 1) + { + if (kv.at(0) == "uri") { + m_deviceShared.m_deviceParams->openURI(kv.at(1).toStdString()); + } else { + return false; + } + } + else + { + return false; + } + } + else + { + char serial[256]; + strcpy(serial, qPrintable(m_deviceAPI->getSamplingDeviceSerial())); + m_deviceShared.m_deviceParams->open(serial); + } } m_deviceAPI->setBuddySharedPtr(&m_deviceShared); // propagate common parameters to API diff --git a/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp b/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp index 5362be1bf..d2637af55 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp @@ -31,8 +31,9 @@ class DeviceAPI; const PluginDescriptor PlutoSDRInputPlugin::m_pluginDescriptor = { + QString("PlutoSDR"), QString("PlutoSDR Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/plutosdrinput/plutosdrinputplugin.h b/plugins/samplesource/plutosdrinput/plutosdrinputplugin.h index 2f2a61969..4f28c8d26 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinputplugin.h +++ b/plugins/samplesource/plutosdrinput/plutosdrinputplugin.h @@ -45,6 +45,8 @@ public: virtual DeviceSampleSource* createSampleSourcePluginInstance(const QString& sourceId, DeviceAPI *deviceAPI); virtual DeviceWebAPIAdapter* createDeviceWebAPIAdapter() const; + virtual QString getDeviceTypeId() const { return m_deviceTypeID; } + static const QString m_hardwareID; static const QString m_deviceTypeID; diff --git a/plugins/samplesource/plutosdrinput/readme.md b/plugins/samplesource/plutosdrinput/readme.md index 6acc81973..74206c379 100644 --- a/plugins/samplesource/plutosdrinput/readme.md +++ b/plugins/samplesource/plutosdrinput/readme.md @@ -6,6 +6,8 @@ This input sample source plugin gets its samples from a [PlutoSDR device](https: ☞ PlutoSDR is physically implemented as a 1x1 SISO device although the AD9363 chip does have a second Rx and a second Tx channel. Revision C of the board claims to have pads to allow hackers connecting the second ports externally however for now only the first Rx channel is supported by this plugin. +☞ When running the Pluto on Ethernet interface you have to create a non discoverable device reference in the [user arguments dialog](https://github.com/f4exb/sdrangel/blob/master/sdrgui/deviceuserargs.md) from the main window Preferences > Devices menu. You must use the `PlutoSDR` hardware ID then specify the device address with a `uri` parameter in the user arguments for example: `uri=ip:192.168.1.10`. Note that this will become effective once SDRangel is restarted. +

Build

The plugin will be built only if libiio is installed in your system. To build and install libiio from source do: diff --git a/plugins/samplesource/remoteinput/remoteinputplugin.cpp b/plugins/samplesource/remoteinput/remoteinputplugin.cpp index 0390ad5e4..a60ab135c 100644 --- a/plugins/samplesource/remoteinput/remoteinputplugin.cpp +++ b/plugins/samplesource/remoteinput/remoteinputplugin.cpp @@ -29,8 +29,9 @@ #include "remoteinputwebapiadapter.h" const PluginDescriptor RemoteInputPlugin::m_pluginDescriptor = { + QString("RemoteInput"), QString("Remote device input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp index 33fda3928..8668ae297 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp @@ -13,8 +13,9 @@ #include "rtlsdrwebapiadapter.h" const PluginDescriptor RTLSDRPlugin::m_pluginDescriptor = { + QString("RTLSDR"), QString("RTL-SDR Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/sdrplay/sdrplayplugin.cpp b/plugins/samplesource/sdrplay/sdrplayplugin.cpp index 4eb235e5d..830dba206 100644 --- a/plugins/samplesource/sdrplay/sdrplayplugin.cpp +++ b/plugins/samplesource/sdrplay/sdrplayplugin.cpp @@ -29,8 +29,9 @@ #include "sdrplaywebapiadapter.h" const PluginDescriptor SDRPlayPlugin::m_pluginDescriptor = { + QString("SDRPlay"), QString("SDRPlay RSP1 Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/soapysdrinput/soapysdrinputplugin.cpp b/plugins/samplesource/soapysdrinput/soapysdrinputplugin.cpp index 7bc5e078e..88b9edebd 100644 --- a/plugins/samplesource/soapysdrinput/soapysdrinputplugin.cpp +++ b/plugins/samplesource/soapysdrinput/soapysdrinputplugin.cpp @@ -30,8 +30,9 @@ #endif const PluginDescriptor SoapySDRInputPlugin::m_pluginDescriptor = { + QString("SoapySDR"), QString("SoapySDR Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/testsource/testsourceplugin.cpp b/plugins/samplesource/testsource/testsourceplugin.cpp index 774ce048b..099ce90b8 100644 --- a/plugins/samplesource/testsource/testsourceplugin.cpp +++ b/plugins/samplesource/testsource/testsourceplugin.cpp @@ -29,8 +29,9 @@ #include "testsourcewebapiadapter.h" const PluginDescriptor TestSourcePlugin::m_pluginDescriptor = { + QString("TestSource"), QString("Test Source input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/xtrxinput/xtrxinputplugin.cpp b/plugins/samplesource/xtrxinput/xtrxinputplugin.cpp index ba47649b9..ab6acfe93 100644 --- a/plugins/samplesource/xtrxinput/xtrxinputplugin.cpp +++ b/plugins/samplesource/xtrxinput/xtrxinputplugin.cpp @@ -36,8 +36,9 @@ #endif const PluginDescriptor XTRXInputPlugin::m_pluginDescriptor = { + QString("XTRX"), QString("XTRX Input"), - QString("4.11.10"), + QString("4.12.3"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/sdrbase/device/deviceenumerator.cpp b/sdrbase/device/deviceenumerator.cpp index c34e79f2a..265315096 100644 --- a/sdrbase/device/deviceenumerator.cpp +++ b/sdrbase/device/deviceenumerator.cpp @@ -18,6 +18,8 @@ #include #include "plugin/pluginmanager.h" +#include "device/deviceuserargs.h" + #include "deviceenumerator.h" Q_GLOBAL_STATIC(DeviceEnumerator, deviceEnumerator) @@ -32,6 +34,154 @@ DeviceEnumerator::DeviceEnumerator() DeviceEnumerator::~DeviceEnumerator() {} +void DeviceEnumerator::addNonDiscoverableDevices(PluginManager *pluginManager, const DeviceUserArgs& deviceUserArgs) +{ + qDebug("DeviceEnumerator::addNonDiscoverableDevices: start"); + const QList& args = deviceUserArgs.getArgsByDevice(); + QList::const_iterator argsIt = args.begin(); + unsigned int rxIndex = m_rxEnumeration.size(); + unsigned int txIndex = m_txEnumeration.size(); + unsigned int mimoIndex = m_mimoEnumeration.size(); + + for (; argsIt != args.end(); ++argsIt) + { + if (!argsIt->m_nonDiscoverable) { // this process is for non discoverable devices only + continue; + } + + QString serial = QString("%1-%2").arg(argsIt->m_id).arg(argsIt->m_sequence); + + PluginInterface *rxPlugin = getRxRegisteredPlugin(pluginManager, argsIt->m_id); + + if (rxPlugin && !isRxEnumerated(argsIt->m_id, argsIt->m_sequence)) + { + int deviceNbItems = rxPlugin->getDefaultRxNbItems(); + QString deviceId = rxPlugin->getDeviceTypeId(); + + for (int deviceIndex = 0; deviceIndex < deviceNbItems; deviceIndex++) + { + QString description = QString("%1[%2:%3] user defined").arg(argsIt->m_id).arg(argsIt->m_sequence).arg(deviceIndex); + qDebug("DeviceEnumerator::addNonDiscoverableDevices: Rx: %s", qPrintable(description)); + PluginInterface::SamplingDevice ndDevice( + description, + argsIt->m_id, + deviceId, // id + serial, + argsIt->m_sequence, + rxPlugin->getSamplingDeviceType(), + PluginInterface::SamplingDevice::StreamSingleRx, + deviceNbItems, // deviceNbItems + deviceIndex // deviceItemIndex + ); + m_rxEnumeration.push_back( + DeviceEnumeration( + ndDevice, + rxPlugin, + rxIndex + ) + ); + rxIndex++; + } + } + + PluginInterface *txPlugin = getTxRegisteredPlugin(pluginManager, argsIt->m_id); + + if (txPlugin && !isTxEnumerated(argsIt->m_id, argsIt->m_sequence)) + { + int deviceNbItems = txPlugin->getDefaultTxNbItems(); + QString deviceId = txPlugin->getDeviceTypeId(); + + for (int deviceIndex = 0; deviceIndex < deviceNbItems; deviceIndex++) + { + QString description = QString("%1[%2:%3] user defined").arg(argsIt->m_id).arg(argsIt->m_sequence).arg(deviceIndex); + qDebug("DeviceEnumerator::addNonDiscoverableDevices: Tx: %s", qPrintable(description)); + PluginInterface::SamplingDevice ndDevice( + description, + argsIt->m_id, + deviceId, // id + serial, + argsIt->m_sequence, + rxPlugin->getSamplingDeviceType(), + PluginInterface::SamplingDevice::StreamSingleTx, + deviceNbItems, // deviceNbItems + deviceIndex // deviceItemIndex + ); + m_txEnumeration.push_back( + DeviceEnumeration( + ndDevice, + txPlugin, + txIndex + ) + ); + txIndex++; + } + } + } // loop through user args +} + +PluginInterface *DeviceEnumerator::getRxRegisteredPlugin(PluginManager *pluginManager, const QString& deviceHwId) +{ + PluginAPI::SamplingDeviceRegistrations& rxDeviceRegistrations = pluginManager->getSourceDeviceRegistrations(); + PluginInterface *rxPlugin = nullptr; + + for (int i = 0; i < rxDeviceRegistrations.count(); i++) + { + + if (deviceHwId == rxDeviceRegistrations[i].m_deviceHardwareId) + { + rxPlugin = rxDeviceRegistrations[i].m_plugin; + break; + } + } + + return rxPlugin; +} + +bool DeviceEnumerator::isRxEnumerated(const QString& deviceHwId, int deviceSequence) +{ + std::vector::const_iterator rxIt = m_rxEnumeration.begin(); + + for (; rxIt != m_rxEnumeration.end(); ++rxIt) + { + if ((rxIt->m_samplingDevice.hardwareId == deviceHwId) && (rxIt->m_samplingDevice.sequence == deviceSequence)) { + return true; + } + } + + return false; +} + +PluginInterface *DeviceEnumerator::getTxRegisteredPlugin(PluginManager *pluginManager, const QString& deviceHwId) +{ + PluginAPI::SamplingDeviceRegistrations& txDeviceRegistrations = pluginManager->getSinkDeviceRegistrations(); + PluginInterface *txPlugin = nullptr; + + for (int i = 0; i < txDeviceRegistrations.count(); i++) + { + if (deviceHwId == txDeviceRegistrations[i].m_deviceHardwareId) + { + txPlugin = txDeviceRegistrations[i].m_plugin; + break; + } + } + + return txPlugin; +} + +bool DeviceEnumerator::isTxEnumerated(const QString& deviceHwId, int deviceSequence) +{ + std::vector::const_iterator txIt = m_txEnumeration.begin(); + + for (; txIt != m_txEnumeration.end(); ++txIt) + { + if ((txIt->m_samplingDevice.hardwareId == deviceHwId) && (txIt->m_samplingDevice.sequence == deviceSequence)) { + return true; + } + } + + return false; +} + void DeviceEnumerator::enumerateRxDevices(PluginManager *pluginManager) { m_rxEnumeration.clear(); diff --git a/sdrbase/device/deviceenumerator.h b/sdrbase/device/deviceenumerator.h index 93166949f..feec94720 100644 --- a/sdrbase/device/deviceenumerator.h +++ b/sdrbase/device/deviceenumerator.h @@ -24,6 +24,7 @@ #include "export.h" class PluginManager; +class DeviceUserArgs; class SDRBASE_API DeviceEnumerator { @@ -36,6 +37,7 @@ public: void enumerateRxDevices(PluginManager *pluginManager); void enumerateTxDevices(PluginManager *pluginManager); void enumerateMIMODevices(PluginManager *pluginManager); + void addNonDiscoverableDevices(PluginManager *pluginManager, const DeviceUserArgs& deviceUserArgs); void listRxDeviceNames(QList& list, std::vector& indexes) const; void listTxDeviceNames(QList& list, std::vector& indexes) const; void listMIMODeviceNames(QList& list, std::vector& indexes) const; @@ -82,6 +84,11 @@ private: DevicesEnumeration m_mimoEnumeration; PluginInterface::OriginDevices m_originDevices; QStringList m_originDevicesHwIds; + + PluginInterface *getRxRegisteredPlugin(PluginManager *pluginManager, const QString& deviceHwId); + PluginInterface *getTxRegisteredPlugin(PluginManager *pluginManager, const QString& deviceHwId); + bool isRxEnumerated(const QString& deviceHwId, int deviceSequence); + bool isTxEnumerated(const QString& deviceHwId, int deviceSequence); }; #endif /* SDRBASE_DEVICE_DEVICEENUMERATOR_H_ */ diff --git a/sdrbase/plugin/pluginapi.h b/sdrbase/plugin/pluginapi.h index 3e6ccb13d..78f0c71ec 100644 --- a/sdrbase/plugin/pluginapi.h +++ b/sdrbase/plugin/pluginapi.h @@ -19,9 +19,11 @@ class SDRBASE_API PluginAPI : public QObject { public: struct SamplingDeviceRegistration //!< This is the device registration { + QString m_deviceHardwareId; QString m_deviceId; PluginInterface* m_plugin; - SamplingDeviceRegistration(const QString& deviceId, PluginInterface* plugin) : + SamplingDeviceRegistration(const QString& hardwareId, const QString& deviceId, PluginInterface* plugin) : + m_deviceHardwareId(hardwareId), m_deviceId(deviceId), m_plugin(plugin) { } diff --git a/sdrbase/plugin/plugininterface.h b/sdrbase/plugin/plugininterface.h index 5763ffe86..a3f4d3a0c 100644 --- a/sdrbase/plugin/plugininterface.h +++ b/sdrbase/plugin/plugininterface.h @@ -7,6 +7,7 @@ #include "export.h" struct SDRBASE_API PluginDescriptor { + const QString hardwareId; // general plugin description const QString displayedName; const QString version; @@ -202,6 +203,14 @@ public: (void) originDevices; } + virtual SamplingDevice::SamplingDeviceType getSamplingDeviceType() const { + return SamplingDevice::SamplingDeviceType::PhysicalDevice; + } + + virtual QString getDeviceTypeId() const { + return QString(""); + } + // device source plugins only virtual SamplingDevices enumSampleSources(const OriginDevices& originDevices) @@ -232,6 +241,10 @@ public: virtual void deleteSampleSourcePluginInstanceGUI(PluginInstanceGUI *ui); virtual void deleteSampleSourcePluginInstanceInput(DeviceSampleSource *source); + virtual int getDefaultRxNbItems() const { + return 1; + } + // device sink plugins only virtual SamplingDevices enumSampleSinks(const OriginDevices& originDevices) @@ -263,6 +276,10 @@ public: virtual void deleteSampleSinkPluginInstanceGUI(PluginInstanceGUI *ui); virtual void deleteSampleSinkPluginInstanceOutput(DeviceSampleSink *sink); + virtual int getDefaultTxNbItems() const { + return 1; + } + // device MIMO plugins only virtual SamplingDevices enumSampleMIMO(const OriginDevices& originDevices) diff --git a/sdrbase/plugin/pluginmanager.cpp b/sdrbase/plugin/pluginmanager.cpp index ceafcbe98..72651fd55 100644 --- a/sdrbase/plugin/pluginmanager.cpp +++ b/sdrbase/plugin/pluginmanager.cpp @@ -117,6 +117,11 @@ void PluginManager::loadPluginsFinal() DeviceEnumerator::instance()->enumerateMIMODevices(this); } +void PluginManager::loadPluginsNonDiscoverable(const DeviceUserArgs& deviceUserArgs) +{ + DeviceEnumerator::instance()->addNonDiscoverableDevices(this, deviceUserArgs); +} + void PluginManager::registerRxChannel(const QString& channelIdURI, const QString& channelId, PluginInterface* plugin) { qDebug() << "PluginManager::registerRxChannel " @@ -148,27 +153,42 @@ void PluginManager::registerSampleSource(const QString& sourceName, PluginInterf { qDebug() << "PluginManager::registerSampleSource " << plugin->getPluginDescriptor().displayedName.toStdString().c_str() - << " with source name " << sourceName.toStdString().c_str(); + << " with source name " << sourceName.toStdString().c_str() + << " and hardware id " << plugin->getPluginDescriptor().hardwareId; - m_sampleSourceRegistrations.append(PluginAPI::SamplingDeviceRegistration(sourceName, plugin)); + m_sampleSourceRegistrations.append(PluginAPI::SamplingDeviceRegistration( + plugin->getPluginDescriptor().hardwareId, + sourceName, + plugin + )); } void PluginManager::registerSampleSink(const QString& sinkName, PluginInterface* plugin) { qDebug() << "PluginManager::registerSampleSink " << plugin->getPluginDescriptor().displayedName.toStdString().c_str() - << " with sink name " << sinkName.toStdString().c_str(); + << " with sink name " << sinkName.toStdString().c_str() + << " and hardware id " << plugin->getPluginDescriptor().hardwareId; - m_sampleSinkRegistrations.append(PluginAPI::SamplingDeviceRegistration(sinkName, plugin)); + m_sampleSinkRegistrations.append(PluginAPI::SamplingDeviceRegistration( + plugin->getPluginDescriptor().hardwareId, + sinkName, + plugin + )); } void PluginManager::registerSampleMIMO(const QString& mimoName, PluginInterface* plugin) { qDebug() << "PluginManager::registerSampleMIMO " << plugin->getPluginDescriptor().displayedName.toStdString().c_str() - << " with MIMO name " << mimoName.toStdString().c_str(); + << " with MIMO name " << mimoName.toStdString().c_str() + << " and hardware id " << plugin->getPluginDescriptor().hardwareId; - m_sampleMIMORegistrations.append(PluginAPI::SamplingDeviceRegistration(mimoName, plugin)); + m_sampleMIMORegistrations.append(PluginAPI::SamplingDeviceRegistration( + plugin->getPluginDescriptor().hardwareId, + mimoName, + plugin + )); } void PluginManager::loadPluginsDir(const QDir& dir) diff --git a/sdrbase/plugin/pluginmanager.h b/sdrbase/plugin/pluginmanager.h index cb935e045..296a19f91 100644 --- a/sdrbase/plugin/pluginmanager.h +++ b/sdrbase/plugin/pluginmanager.h @@ -34,6 +34,7 @@ class Preset; class Message; class MessageQueue; class DeviceAPI; +class DeviceUserArgs; class SDRBASE_API PluginManager : public QObject { Q_OBJECT @@ -59,6 +60,7 @@ public: void loadPlugins(const QString& pluginsSubDir); void loadPluginsPart(const QString& pluginsSubDir); void loadPluginsFinal(); + void loadPluginsNonDiscoverable(const DeviceUserArgs& deviceUserArgs); const Plugins& getPlugins() const { return m_plugins; } // Callbacks from the plugins diff --git a/sdrgui/deviceuserargs.md b/sdrgui/deviceuserargs.md index 9777c55b7..e7b9ef549 100644 --- a/sdrgui/deviceuserargs.md +++ b/sdrgui/deviceuserargs.md @@ -18,28 +18,43 @@ This is the list of available devices reported by the initial enumeration. There

2 Import device button

-Use this button to import the selected device in the panel above (1) to the panel below (3) that lists the user arguments by device and sequence. You can only import a device which hardware ID and sequence is not already in the panel below. +Use this button to import the selected device in the panel above (1) to the panel below (6) that lists the user arguments by device and sequence. You can only import a device which hardware ID and sequence is not already in the panel below. -

3 User arguments

+

3 Non discoverable device hardware ID

-This is the list of arguments given by the user and attached to a specific device given its hardware ID and sequence. There are 3 columns: +Some devices cannot be discovered automatically. This is the case for networked devices in particular the PlutoSDR. In conjuctions with (4) and (5) you can define devices that can be added to the list of available devices for selection. Note that you will need to restart SDRangel for this to be effective. +Once the device is defined user arguments like the IP address can be specified for it. + +

4 Non discoverable device sequence

+ +In case more than one device with the same hardware ID is used in the system you can differentiate the, with an arbitrary sequence number. + +

5 Add non discoverable device definition

+ +Once defined with controls (3) and (4) use this button to add the device to the list of available devices. This will make it appear immediately in the + +

6 User arguments

+ +This is the list of arguments given by the user and attached to a specific device given its hardware ID and sequence. There are 4 columns: + + - **ND**: This is the non discoverable device indicator. When tagged with "ND" it means that the line refers to a non discoverable device specified by the user - **HwID**: This is the "hardware ID". It represents a type of device like `HackRF` or `TestSource` - **Seq**: The device sequence in enumeration starting at 0. You may have more that one device of the same type in the system - **Arg string**: The user argument string. It can be of any form and not necessarily in the `key1=value1, key2=value2` form. It is up to the corresponding plugin to interpret the string and to make use of its information. -

4 Delete button

+

7 Delete button

-Use this button to delete the arguments currently selected in the above panel (3) +Use this button to delete the arguments currently selected in the above panel (6) -

5 Edit arguments

+

8 Edit arguments

-Use this line editor to change the arguments currently selected in the above panel (3). The text will be committed when the focus is lost. +Use this line editor to change the arguments currently selected in the above panel (6). The text will be committed when the focus is lost. -

6 Cancel button

+

9 Cancel button

The changes made to the argument list are temporary. You can use this button to dismiss the changes and close the dialog. -

7 OK (confirmation) button

+

10 OK (confirmation) button

The changes made to the argument list are only temporary. You can use this button to commit the changes and close the dialog. diff --git a/sdrgui/gui/deviceuserargsdialog.ui b/sdrgui/gui/deviceuserargsdialog.ui index 9fce99a83..95a6479cf 100644 --- a/sdrgui/gui/deviceuserargsdialog.ui +++ b/sdrgui/gui/deviceuserargsdialog.ui @@ -76,16 +76,25 @@ HwID + + Hardware ID + Seq + + Sequence + Description + + Description + diff --git a/sdrgui/gui/pluginsdialog.cpp b/sdrgui/gui/pluginsdialog.cpp index cb8a26fec..9aa33db4d 100644 --- a/sdrgui/gui/pluginsdialog.cpp +++ b/sdrgui/gui/pluginsdialog.cpp @@ -7,16 +7,21 @@ PluginsDialog::PluginsDialog(PluginManager* pluginManager, QWidget* parent) : ui(new Ui::PluginsDialog) { ui->setupUi(this); - const PluginManager::Plugins& plugins = pluginManager->getPlugins(); - for(PluginManager::Plugins::const_iterator it = plugins.constBegin(); it != plugins.constEnd(); ++it) { + + for (PluginManager::Plugins::const_iterator it = plugins.constBegin(); it != plugins.constEnd(); ++it) + { QStringList sl; const PluginDescriptor& desc = it->pluginInterface->getPluginDescriptor(); sl.append(desc.displayedName); sl.append(desc.version); - if(desc.licenseIsGPL) + + if (desc.licenseIsGPL) { sl.append(tr("YES")); - else sl.append("no"); + } else { + sl.append("no"); + } + QTreeWidgetItem* pluginItem = new QTreeWidgetItem(ui->tree, sl); sl.clear(); sl.append(tr("Copyright: %1").arg(desc.copyright)); @@ -30,8 +35,13 @@ PluginsDialog::PluginsDialog(PluginManager* pluginManager, QWidget* parent) : sl.append(tr("Source Code: %1").arg(desc.sourceCodeURL)); item = new QTreeWidgetItem(pluginItem, sl); item->setFirstColumnSpanned(true); + sl.clear(); + sl.append(tr("Hardware ID: %1").arg(desc.hardwareId)); + item = new QTreeWidgetItem(pluginItem, sl); + item->setFirstColumnSpanned(true); } - ui->tree->resizeColumnToContents(0); + + ui->tree->resizeColumnToContents(0); ui->tree->resizeColumnToContents(1); ui->tree->resizeColumnToContents(2); } diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index cced30614..797bb3a27 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -193,6 +193,7 @@ MainWindow::MainWindow(qtwebapp::LoggerWithFile *logger, const MainParser& parse m_pluginManager = new PluginManager(this); m_pluginManager->loadPlugins(QString("plugins")); + m_pluginManager->loadPluginsNonDiscoverable(m_settings.getDeviceUserArgs()); splash->showStatusMessage("load file input...", Qt::white); qDebug() << "MainWindow::MainWindow: select SampleSource from settings or default (file input)..."; @@ -1693,7 +1694,7 @@ void MainWindow::sampleSourceChanged() deviceUI->m_deviceAPI->stopDeviceEngine(); // deletes old UI and input object - deviceUI->m_deviceAPI->getSampleSource()->setMessageQueueToGUI(0); // have source stop sending messages to the GUI + deviceUI->m_deviceAPI->getSampleSource()->setMessageQueueToGUI(nullptr); // have source stop sending messages to the GUI deviceUI->m_deviceAPI->getPluginInterface()->deleteSampleSourcePluginInstanceGUI( deviceUI->m_deviceAPI->getSamplingDevicePluginInstanceGUI()); deviceUI->m_deviceAPI->resetSamplingDeviceId();