From eb6bc91c22b6cc0876b8e265b87fcbdb69ab60b4 Mon Sep 17 00:00:00 2001 From: Kevin Mehall Date: Tue, 23 Jul 2013 15:50:29 -0400 Subject: [PATCH] New Relic integration (imported from commit a108f4c6e90d857263453036f6d5f09279302b7e) --- humbug/urls.py | 1 + templates/zephyr/integrations.html | 24 +++++++++++ zephyr/fixtures/newrelic/newrelic_alert.txt | 1 + .../fixtures/newrelic/newrelic_deployment.txt | 1 + .../images/integrations/newrelic/001.png | Bin 0 -> 15312 bytes .../images/integrations/newrelic/002.png | Bin 0 -> 19785 bytes zephyr/tests.py | 22 ++++++++++ zephyr/views.py | 39 ++++++++++++++++++ 8 files changed, 88 insertions(+) create mode 100644 zephyr/fixtures/newrelic/newrelic_alert.txt create mode 100644 zephyr/fixtures/newrelic/newrelic_deployment.txt create mode 100644 zephyr/static/images/integrations/newrelic/001.png create mode 100644 zephyr/static/images/integrations/newrelic/002.png diff --git a/humbug/urls.py b/humbug/urls.py index 910db8b874..288398641d 100644 --- a/humbug/urls.py +++ b/humbug/urls.py @@ -136,6 +136,7 @@ urlpatterns += patterns('zephyr.views', url(r'^api/v1/external/github$', 'api_github_landing'), url(r'^api/v1/external/jira$', 'api_jira_webhook'), url(r'^api/v1/external/pivotal$', 'api_pivotal_webhook'), + url(r'^api/v1/external/newrelic$', 'api_newrelic_webhook'), ) v1_api_and_json_patterns = patterns('zephyr.views', diff --git a/templates/zephyr/integrations.html b/templates/zephyr/integrations.html index 987d0a80dd..6ada2b9fc6 100644 --- a/templates/zephyr/integrations.html +++ b/templates/zephyr/integrations.html @@ -52,6 +52,7 @@
  • Jira (hosted or v5.2+)
  • Jira (locally installed)
  • Nagios
  • +
  • New Relic
  • Pivotal Tracker
  • Subversion
  • Trac
  • @@ -394,6 +395,29 @@ key=NAGIOS_BOT_API_KEY ^ Back to top

    +{#--------------------------------------------------------------------#} +
    +

    New Relic

    + +

    New Relic can send messages to a Zulip stream for alerts and deploys. + In your Account Settings page, click "Integrations", then + "Alerting notifications". On the "Webhook" tab, enter the following + webhook URL:

    + +

    https://api.humbughq.com/v1/external/newrelic?api_key=abcdefgh&stream=newrelic

    + +

    where api_key is the API key of the user you + want updates to be sent as, and stream is the stream name you want the notifications sent to. The stream must already exist.

    + + + +

    Congratulations! You're done!
    Your New Relic events will + appear in Zulip: + +

    + ^ Back to top +

    +
    {#--------------------------------------------------------------------#}

    Subversion

    diff --git a/zephyr/fixtures/newrelic/newrelic_alert.txt b/zephyr/fixtures/newrelic/newrelic_alert.txt new file mode 100644 index 0000000000..21a2ac3fb3 --- /dev/null +++ b/zephyr/fixtures/newrelic/newrelic_alert.txt @@ -0,0 +1 @@ +alert=%7B%22created_at%22%3A%222013-07-23T20%3A14%3A15%2B00%3A00%22%2C%22application_name%22%3A%22Application%20name%22%2C%22account_name%22%3A%22Account%20name%22%2C%22severity%22%3A%22critical%22%2C%22message%22%3A%22Apdex%20score%20fell%20below%20critical%20level%20of%200.90%22%2C%22short_description%22%3A%22%5Bapplication%20name%5D%20alert%20opened%22%2C%22long_description%22%3A%22Alert%20opened%20on%20%5Bapplication%20name%5D%3A%20Apdex%20score%20fell%20below%20critical%20level%20of%200.90%22%2C%22alert_url%22%3A%22https%3A%2F%2Frpm.newrelc.com%2Faccounts%2F%5Baccount_id%5D%2Fapplications%2F%5Bapplication_id%5D%2Fincidents%2F%5Bincident_id%5D%22%7D \ No newline at end of file diff --git a/zephyr/fixtures/newrelic/newrelic_deployment.txt b/zephyr/fixtures/newrelic/newrelic_deployment.txt new file mode 100644 index 0000000000..cfa343d7ae --- /dev/null +++ b/zephyr/fixtures/newrelic/newrelic_deployment.txt @@ -0,0 +1 @@ +deployment=%7B%22created_at%22%3A%222013-07-23T20%3A14%3A25Z%22%2C%22deployed_by%22%3A%22Zulip%20Test%22%2C%22revision%22%3A%221242%22%2C%22description%22%3A%22Description%20sent%20via%20curl%22%2C%22application_name%22%3A%22Test%20App%22%2C%22account_name%22%3A%22Zulip%20Test%22%2C%22changelog%22%3A%22Changelog%20string%22%2C%22deployment_url%22%3A%22https%3A%2F%2Frpm.newrelic.com%2Faccounts%2F382116%2Fapplications%2F2135922%2Fdeployments%2F679885%22%7D \ No newline at end of file diff --git a/zephyr/static/images/integrations/newrelic/001.png b/zephyr/static/images/integrations/newrelic/001.png new file mode 100644 index 0000000000000000000000000000000000000000..f34b95d2fbeeb2f2e4c6f4128212aea84382c5b3 GIT binary patch literal 15312 zcmbt*bzGF)+vgZ4VF02Ch@`Z1Nb5*W9Rd6m}g+_Irll&`POxw02wLayXg4n2n6D;sEB|Z0&%S!UXP$&hi4>P$0htg zvldacMIi3AUj4fkO?!_3fgnbR3cONqn%qh@){yTS>!3tK!xYW*zMh7A4dc_h4=9-2 z=(WXqV}hz!o1`&{vbxWSRhkoD+o0Fx%k%mvYncaDAjex#YJ+ zL3TEUuyDuD&W`l&cK_2Gh$iFMVQtTIMKQ7UpIwm_78YL1ZEbDUR&(quECg((IK3yv z%Ue^`tNp3QWhyhHq35Di+Qib_f;+>XEN9Jjep+9>vC0a#=g{@-P*w}J%avB;MkMG=) z;6NbeIIvSkpTtWX9UL6&?sC3eY_)1UZ(p{NPI^H?Ny*`P;r3PP)vM+j+f}W4mo}pc zygPms75gW!(#N_CCtg@s$dOKUc>8vDX9tr`T3VXl@wbMS)>B_(Syk25^>XT?iuF~$I_)NM zSYaaJNeESU$Y%9>G69EWRCM&N6VKhdArlqGVNZGSNqn|aZ{5DV#9ok}|2>5_F)3+! zdb%(()4Gqv{A)YM)B#g&z8NGdkAhpvgy(Y{@h z;^G)e5iv2@pFVvmDM?LCtg~6}4h#&8XEEmD=4OfSRV+|?h>NQ~A|@{G?(Sas`7;bn zDERT)t^_T|~>{_avoT}{o}uU{H4$>U}EJ9n?WyJQw? zJ2@QFj*N&1eZnaxFR!nsxA^PVhv@y&vrnIhnd6_};|I1y)6>&8o*$_@Ii0}g+NOd7 z0?NwE)v7I%KYwP`GBGt3%NQ6O9Hfv+`XHKLR`ym(>ifo6iT^#qK+*i@=!ZxuDk>3q zd6pM1RFKH)BnSKb{0!<H1a z@iG)IiO>B{x?oTWk2AAjH;%0STWjlIU5q8#jZg9Mxy(lCI5;?(!}m_lTKw-1tsTtI z>pXk*%;(4FH$z|R>uG6dO40S&({pnlV`X?~UOi?82ldR%5)%?8r>BE4Bch|*7P*7pF15o4m*|-u z-;sbzl4FYs3+H5K3-ziLYd6krF5p6o2ZpV<$}`^d=3$_fg$`Jg>u@4oAgO z1yHb8pYk}BrldU8`ml9?7DMb~XJ_|8Ku=XQ-pN}?NXU+>-mIpw(%#(s>h1yq#dLMk z>grryzkY3GL{UX3N)g%D*B2QXiG@r{OFMZ=DRCP%}KmaUXeSQ7>XJD69QJSM(vMT0t za;QYq=S1x0kHbYIBqc{iM=3B-{rvpy-o49VIjvJM0qgbJ?@o9`#5Y#6-_td4qsa+9 zJw5s));Ts$!~AhQY*gP^T55eZkp)192ZP3!AJj5!*IT6Shb*#Cd(he2+k3q|2g1?Q z*B1_b@>&38lad3RLy>B3P=IG7@ z)3USuFlp%MaOmjh=~s50fGRW(t7~iVJ)et>85kJAxQ7M@nORs44-cWzB_$;%%pJ6} zv|L=c94^IPzrH~tkTX<-A|oefYGTrK;MHZ|pmq-z7x#E$OuDyRxmV?LWo6r)2P6h2 zCNBVjxdF6TDqu8=j$MqUTv=IJUcOE^b6YCbKri-imx4i$01HRDy1IIMC3-8)Vb6+7 zOH+o6u(PxO{{1^gDp{?{Tvb+fVC?k16#@|vh>3)SyK`&l&*6sETtl1KiznX!wy}^I z!eKFykuBRzItdY}sdEo1Mn^~2*4EgwtxUs%~Dtq(*&^K6J9m1tm+2>6l!d?^P9c83ma>l~!X**!#)XXy?u z`umqE6-IsSAq1Z1hhtEmJ)NDc9UZuj9@W;?nwpvdMDG1adks8K#H4pKsErHeuhHY& ziAPJC{17M=_(DEgqFL-oRqY) z7fq}D=i~%-v+l*&DS$4}N>ETx3;#owM|3hFp`k`)Dn>>|IOxw}J|UNZ zsVV-02exa2&#u2O)orKN}2yz8DxmDdWRGe#pqnFYP+1 zLH(iH2Hl0X;54k7Zc3u!-vrT!(*eP=q`1hmmcW8<+iKeB@@{d6%+e;1dCh%3$fU!ML$oBs3aziQKer0Rbb zs8?6}uh;nJl5Q`s8ByjQ0q_9g^%=D&Am(Tdm{kEFrE@!I|R0TaJd-Ji2UN+~tF7g7bUZ%Zp7YFfHD{linK=g)thZjMQbtNb@~V`an;YJ%&&xw2`RsA- z;&_eSa{4hAR`aq=SpuNCComK43nMqg$?P>zK~xf6-ulHwy)z5Yd;tR8Jv}YrpqhYp z8`i{se0jUXZZ-QAbPcR9CnqPb%K;Sy#Y&HGUb0S^iU297jfkDBFYx6PtDZ}UZk zhyo{2Z66R&Z(pBrU&5iRGC66u$k~GBE~tC}v&+-fROH-|m|WNs&gc2!NHA}7X%!8$8(D7S6_%^I zvjzSBQyvvrS#SjlYip;!XX-$=nd1s6aJB=&dwY5L-NDCZ<0FhF19r_y@Yve9s^>$d0iLg-NnTPWCS3K zl!QcU@Xgz|%|NP(izmj%&wO=$K+DR^oWQ7ieRiNN2p2$so|<~%(89)MFOEqcc=pfH z*2emJ;MS|4^`bnHNwV z4-XHD9Y|(@U0+{cQbGb`iuG-QiB`S@W<#-5KKI9W+5yJN$;o#Pm6Yc&k&23nKw%kj zdHDGFAR3t1*y^npkU6h_2`|p}`{5qIG=RA)E-C4d?nJ?Obg(rQE0oa}&yrJIT&%qG zZPjz(n=im+M-ML#&m($`516%Xr#8;cr^(!owcjh|%RpLde6c185t3I>0LtP$Vn_p| z%$A`7_EkZFf|>KY)ZEd)9x46w>7|$$4L7%I>jx|hT>4hO2M-?_nwW@W$)V)Xb8?>6 z4Gzy*5;XSrm$+SgJ=1bOH#2D=V(9US~d04(_6m zk(&C=#%PfnA3u!gbZ?oBjZMYb-M!x5Usy>gCU+0^g<((3LmV9QxrXy^z8Fa1)rAEp z28`wi@IBx&3d_pEL6*aEOkCRRE((5KskPq#b;f^O|1#`v(HCxEeZ-iBcQxT z3RNpgZNN!piN`X>OEiy-$116-gHB59S$@jv5+#-u6BWhd{wE5VCLkaH#@Aw^Tu@9b zKP~P3Kl0xODA~yoNEnJybI#_)6QD8x5@Q2{=|)d&Ma7Z1xzzqusH)1!hjrJ+Tgr%i zK);rnf=&SjZRrsXd#VX~PE|FpxL7J@h=|XvbHUo-_jF!KAQhVgeOJSOSwEKpM_fL+(TcXuR4R9~l?-n2^xI#N-RGLE$t+D5Ik>9ZSwmP7pi5 zG&I|aDzt$1VUFi<+L;IYoRsv${6$q&l>|iv`0YOjYvaSZs}lG7_pQ8U8P3pr0&}Fz z28T{HEag?>+rPZ^A_6JQ=Xvo&JqL)3h{Qlg2NM^!W7$SrOw6b^?mea+b3AN)TIJ$a z^|vpQfVW_N$b9bHy}P@2?Z&OBm>9hhHdfXhl`k0?H%Jt;w2Ct`$r%{JqK|>rv>QEO zXNQ0Mh^ZE8u>@YTJT0wxc=*8EN?KQ!I;^9oxA%&kb{1N8X96x`V7s`l59gt#fv~wa znzBMA0WkwU^~ahWP^S;(1%6Q2+4*@$aB!(L1u5wwI1}J-17_!6Kho~p(uX~9=T=5# zWwcNRA&(R0_A}6E_4VKZ%QvPbC)L0dfwOrH{beGq1j$ zklSAH)B(V8bJP4$P*!H9Ptj+vc3cxz<`_JL*6MJcJd|LY-fC1-6cEiV@AuX9kYByK zcB7UMH(KmrlBck+FmwFbe6zP`Bt=$Ejy|`Q9))D-7JQ?Ptu469(xwVf{tqZ5cJ}u( zWT;3;NPuv`E8sF{Nk~aigo}8sM(6sWlCURkt*or9tp%XWpr!#->E$d=*VuAcO!}m< z@E>T=Xey75&z$>KbA%%Y5_#2iJ3mS}<|ZU01O^2GQA4!CC<;J%J+eyxRhKdZ_C$XE zI{0}Mf}^b|+y~uK{n9&5Jez`J7R2O#&?K20?|>%+IF?H0V$*9y-86V8ASVaw{Hipw ztPG15_bab&J&={h>7JpQ+N3gR9_-<944P=LrvZh782|vFRVu_BnxTAx(V&wfLsed0eqz=v-#I(`v}AjJ zp7_K`n^LR6?Tvwf&l)v_@uGWAcQ>H@x6jyhXF#6z3iXhmQAW>NHC4t8j6{CBWFCbC+qKD3B zrzj)yqtVk-*79I`t}#C!ea_td^1@wE&=>qvt_@G`=h9L}h#YI5m87MG$HY*m>_JHK z@Zm$cO>DKxC8D@gt*PGWb)y;r4`0~fuxD4lNpnFhV`&fx5t|4Qv2A#&_G z_uu|43p#Tjv;+||lQ>D9K0o^TFM}<<2nq}9lQ`d>I$9g*=_kTrS%i(-@8CTz(&cu+74GvM!7oLd4$yK^P>9j!N&^hy=<*vAP`}7bhSr44mQwk`Y|L$KKC?ygX_TO3bB|zC_rK`T6me*2O7SWqE%SV#bfzVF{5W3rYO8h&$ug@kAX z+OBXBf>n##_n&IW$)y(-nu8WIFlb${W;Y*y=i36h@e61hH@7p86p+AhPhbsU z){TE4y6*7(><5OY59a9{aq8Z-SY~70KiPO`2^|3TLrFUEj2Zlzeg4zEI3m0lIkU}%&T zj2r?TSWZLemW1YRkYyP#PfScWkK`*xQbNxjOPiHQmA-aQ9<`(#dAilh0P4)g)0<3k|=T!f9Ly@3q2f(o#8Z~y_IBrCgn ze9Xbb)cpHoY3ZA}R0GC!6gqOt~q5Z34!^3Cb4BY=5$SNqD0o*bjg9|eQ9vMq|@s`wKNPFii_9SMi z+inh(!*@4n$1}8@rNp^MKuV7uJtBH@6`M*)6@U5ixX$;a=JeZ)I}hj<_-%$z$hY(& zAD^4B$pH;gZfnC@!iw&%^m(%!@$>XI#@8z#P8xJ8CL$@NXREEW;d4etE8WqwFd3-) zh+7bhH2D)#QaSMq)UtQ(V#nq+$Q?u~D&0_v#lYl-eSOO3`up-+m_7)qF?K5cr>HEUVn!N@2hDfyh2m(Y=Aj z#m(goC@Q{^7>{J&Afr{N#o8Cvds_t5Xvb z18WDC+icLef^DLIqE7kG!$$^|6-EsWqvtQS;Y~1(kV;>9K+MT9{SGe_3``^>fuOg* z7%M9&wRgkM%e`fBNVwbEg&>kGDmn+XhW3EMz{m)?0nEI-GvB^>iJYzORY76{GRfy7 z7=k?c984rcHqhl$pivYQ%z`A>ItF$e#1xpw8@KO~W1>PTC4?FR4FzyKpnE{(&4i|d z=bWAO=!$rza$u^XBcrX&Fzy?N29enVN+~-Bhj!CNDQFjniikXhZZ9n@gW6|U!kUZ> zZ?UXz$9DlGtWVrLpsFDofb7p6#yUN%;qx&*egaHgnRFXRhn4i(nrU!KkS2u^aC`@4 zOGybW#aofe8V!(+#Ys>=-gkgQl37py^{nReG51g0JyM@egS`(}WGVcfmWGCh5Uzmz zVveWFkA@wn1$PMpe?J8RX=|>LANirnAU`ip*Ch~BPDVzD@iF9uz&UW&64KH+111p7 z0R~b^B{i`EQDSiv6c=CgmxX^cF*AF>f0YS48Jfr5a1H4LVMsztTW7uS?J86P^Rl{X zY;3Hb(S&7q)0G!GAjMjD3D|qb$DJVj0+s>+0ivTV4C4y(Adq_wHV1G4W)}GOHR>A^ z6I4I{MXay9Y&uQvAn$AM=pewu6BQMO_Nuusw(zT0?|YUP-=`3#uVa}0fem>7$qP82 z0*4xm`cs}~N6)KYfB)l+cKHUoAtl}O=R-q7FeYF>5ESteMz*%L(Dnumed)>Ichcpc z@4_4ivjgEW$!k9qRaMCZ)-}k-cv-!+lF&!QAfT>yJ%04?A&ih0XdFZzbf2LWx#NCA zhvBd#O)gKR$#;!9T1*qV^|wndKrfbdiYO~rmzT>)Nrg7U#NMHgbzN))lZgf-3ycaS zTId1!r8NI}>(Z{k2rjForRD6vKzLM?f|?p6r!q|Ss8!H2a)F%P)|Ta{s;sQ+>(?i= zaI7V6k=V!7%nT9}aCn%=aR*aK*8&32e31jAqYZDD{B*3(->h{}!NwEH7+|-UG_bNN zDJs$gAxBGwWIzB+eFzR79vFz{b9a%E`B+uuprP@^Z36LeILr_V8j|<%4G`ZfkAv^C z3+4<#w2Fy@MS~X3ct})XVIi0ph|;gWXM|ybi-h9~fEQqwAd$I!`!;DfRlY~gufg{A z6+i<}QaI>>5)58N5EFmXVFdUB_Jd17s^v4Y1ieuffUmrD~^Jw0qJtbxe71swFN13o8PB~J$K|^ z&m@87i;aw&g50snVhRq>lo|H~2rNQI4-^YclV980K#mOtUD$<1KmH^?hD;}@4Id63 zX$@M?Lgx*>22xHq@bf*9LmJvAxc5M=-|{X49sXRsDmOp>_e90*F=Dvcqaz2v5(zn= z1E~Kx!VBP8xaD1}!z4>#UD!QlW_7N|zkxErXn=rU0iXbgu4f+X5`{^FZV%wX6+*+= z4Di=piEW4-!q>l!*a!UIUYt2YrNd>@Qkmm>p^Cs@e1pCcg1pj|hL)Cy*9AOUZ80Y2 zlhCNBVc0%p!oKj^mvVLQ`;0i)*#p&PB1OpYLntmh&){RwoI)TxH0F=5e*W_x|M7(Q zr>FIC*oyUdSlDGxRO63W`v}|Jv9QSA^@>m&8!z|em%sB$r~-yMz8pxB=luEXW|3Fi zF!>t6+1zkj)OT9`GFtp&()!;Qp$HMvRha|fPTps%W-t?xK|wuWks;260t6(l28@FR zmRouS4O0do&IxA5ATnw!8F}YD1$oqY`+&8@*5>t*V zqy9|!vokHfSiwH?<*h!{60j9Cj#YtnFZT1&ySYj1=+a$qqLai-(CIcait&nF_&yg~ zv}G==i%Cj`Kvx@rCx3tcTxSP6JGY}vyo>vNa4-ehn_fa(cU2iNl&q3*6R5?5vC{lk zFo>@2QnLTN`Ij$ac$@Dy>ZDK-!k=c34J!yRfkA=IfzuzV%^u>`z^eL$3MzylBjp3c z-uoWTvb97LFZz#GUfsSX^s|7hav*xh$;pY!0C)7@$&;j*7$aR>Ss(#8;RC7KD{imX z(1Z3;EnVN(a9wtTvn^v1s)U4u$dC_QtlB4-#GPnI8KN|QuGvTj^iPt1Nr&3_-qZ6y zoBl&?nO!1fek4{Jb!q8##mODzMeg-UB?bKA;*--;=v6Q9W6>I=!1NzNuK+mt%a<<; zE&k%7q5=H6J9H}b_F4+rbZJ5Ygb568sF-le*Pb2L_47XCGkeew`3`f@`o#&pl0pq} zdi$V7O0L%C$%j7cXAK#}7Op9NJz!zMZF_ilfIRH5dGaB_7!CZfCPG><(i_f zh#fwCT2Pp5hR|I+=AW=L7gr~s^#`X8o4s!X3t}yi3yI z*N6(-BG99}{RgKer?ew+S3v~h5gh~?FFek^z*$3`-+7QrmrZOI*W_@GY~#oUbn`yT zewb1zDkVh^#*K{ZwVE1!Y&0Zo_#xRD8F08yUPcBqG+BcNrmQ~Jh(4I`ov+d$SK_dE zP)4r;B!NY!=29G$@rT7zJ!x@i_9)UVz;%LYGCQmq=_+M}wHcA1B3gq{6fI!gp0osPpYq5tLMFZJEnk}5xmDiftge@(N zEoZNG5+v604Cj{j!s4P0oNruNF=E=kI!6E`2&x;3V0mf1XdlU97{E-r!uog59|5r8 z3$P)5|LE+Eib~vkJss2XJ1Qt#FE1}RE9pY@8k9Z#8H59ufL@?*t|4z#zSxygl$YlDtA4W=|GUHrpQbqw3Gv2zqR+Hmn zw72Fg^l8?C=D_P3ULf3hfZV`wimR9jMQV!i%|E45bz0T`jPNpoCe9UI{f&p)?>tCj zz(&eY;dpvpf*Q7*sf|Xa1>>`cF&-;GZVY)7#J$jqy=g0LUo;oMq~8vl{H3O5;n_^p zH56f%x^PlNWM^oe^}(NVlizv1_gDMveda*g^#mOnz7!7|X8KVf zT8g{gc?iCzoge>fEnJQb1%|#u0`yA-Si$H?D3YH7I2D_x9!AiCA;gf1OXcK3}7N_(cc?3Odrxz%gMR z1bl8^VqbYGaWV^MK4`owd2AGd?mmyUhM? zmT@<=Q(Z7HnFmYRRHR@+Oi)Sk0n z8q`se(pUZ}B2BJ6rJRyYzfEd7jKp9OFF3wDrz`jzC_*00JUY#3d`B@Nm~)=sf}APr z*_5!UchAmU&*{d~MB3MRCAm*Y#8BRqB)}0Arg#ZRWkG`m2BH%Y5p6D5J`G!4UFC2& zFoDyxmLXs13SVFzx-A7`d0HfKb}QH(=EbeBvm-kKN=8X(3VxJSYpAJ9U|Hd5I79`zx#Hr<)qN#S?ATNwNT04G!@S@A; zWp8Lr`X+{bwtS0}hD(CINA&)A@_rEQhQ# z^>6a?&Q@#J{HH0%mn-P`JPyN_A2?1yC&V8=z{mQ=_ zG4K_AEce?*0qB#bj608w)4U>0V2=9R)m4~eJ|Z1D+P-2Ct%$2UnySJi=p`b6I*>`# z6DnAeqUX!Dn`9m!m@V&zcT=$bB`R;fyZlKNyTjOZL9T}+cGhb?XbrgB_L(%aud_rt zMP&c<3}Ns0_)g-k2kW#HUszd}$*zkFqN@HnBEv?F`E!niT=M(%v?hLdve{WtZe%~y z=TVjIi%7ZyWo}j7@NBf#HQ8kkA1r$XPWsp3b{>TzQSGh26iBxb`v}|(p?h@`&Pxdu ze0DP;7?e*J)?_GHkhv9-Z0(kxL9lO%8Hr)LFRH^F4?Gl?Lh1uZ{rHZMtZXr>D)7+(46uW2&9YvUsi>z2(jQIz#TlT~Yvb_w-E5 zo;=^Nq${Rc9-UddKr2?!n2}a9S^^7M(lfi3+o|Ugh*o=&mPh^LrQG|lcT)1NpTA}3 zF@rA&4HlNJVx=jksX-N;>Q7iSE)Wq$Wh=dx^wqXj?(LM2aE7a_?cxR&a*{0jQuo-> zeLm<2E7U)S2?q;#H|w_4EO*~#lLhUaC$4X9vE{rPc%_bAsgTmBxyslgayQNI3^(Yz z!gn1bsMi zQ5YH+5jDC!`o_h3k=){a0(SY(isVuCC$iy`IJvy+wwVV`lvUx(Cg!-SZ`7uEHjVSd zNqr{g42t+q$*Yc7q#B{Wa^Fl$o?ObAYq{JMdr#$fFbMgZJXL#(PLgCJxAUn6muzXa zoVKZjJT3Br0J+_46&YqHcIM?NU(gIMj$tb4tM&EXmy*l(Q~YNghAU;lrIHCTbuB)z zcMI%OCSLR85$OoFKILh?{IqKAyy)svuQ0!qTNG^espffdm1q6}qapg@a0dm>&nnWu zm{WXPxu4BL6k4(Djk0!$`7@1&Gh61N3BG~sNYt)-73pkW>76pzd#xhOrziL&zDhBO zrPcH?6Odc?ZOvOhdx#@@rud*lyn)UaB{Y*a@wJ2lFTE0zosz|u~HyrN6L?=GWLLLx#>c`OzQ-=eIYN(_H|B@$8m>4a-?a>K_=q3075g?E-O=c!fB z!HJoX7K!{ff{^yOJ267&H~fkTf4J!Mqeb=|+YIBG8r(yE$fj&{w!pBx9kpId(Q42a z{ppsV@p)K?DsZU^9VDqE{QF??)ztDcGWPq&0>+0JhBJC2g2J@%@~P=c32>?=RT~@6 z&JRe**nIaUDNqtVhXxjg2GYg$V4VELix28oQ z<}-?M843UKZ9I6fL7}T2qeJRxzSR%ywAwVhioyaK?Srb{?&91>N6xKnhSOyE0Fa(I}#tAo$zlzQhu51jmNLwQTfU1p3gc9^E&r0g#-a%DKXW$zy)Gw zpPz~pG@m;RhX*QIe?{Z1YFCjChev%>lrp{(b4j$nbvL?Nn}c-to2iNOv0wb`2N^Sr zAW6BXm2BfEHmb*W<%K?EGsOXxBb z;A6!qs*Z_d50d+Eol56~pB@sTvJJC;j?804i%4i7&F>8`d@HLz5$#%d%LkM65O>AR z)r?zE&?=_LkG+P1?&oB;PuNTy+kX>YI9qLr$dca^sQ)0*`P@w%_iv!8+PRjp;;cq> zs)y%kH03t=N^H)f`Wc6{@cg7Z?}-OLL^mXa=1+%;hixQIsd2riqvzMPbi!|&T)>XUM91ZG zUtObAv0b=T-NLk=s+@TG=esQL_0h&+MZ{D(J}Gmbym>iU@Oxsg!f3)(rBm0jNXC!} znH#Q%IcCZs8WbbIKK$l6cl+YtbCJOHspRs@Ov!5`!vo(hC{NB;d7_kl zual3q@v~tmMG8bxkVxHL5q%A3e+Wnf(rHoOHt>)*@LC+Gbx;qm{HQy-Gl#KD)VOne ze9Z51@Cy=|6F0si%!g^mbDCy1*tXZ$JGRM{hdJ`PyT620$C8_!QoHmew^1AT@VZ)hsk6pw7)GPUBm)am{$j(6Mhp{aHh zi`QLO?j|k!;mVJF3(tPmtGcex#|tF!D9nx72hWY! z_{6-(-TW`D2(b^9pOVqO;+M8l$w518(;^1bdAX>&V=riENNJLTG1oggbIr$?ZHE@y z4HX=SEjcT`zB2sLe}f7&{Bu$JMa`M#kzAd3Vx-)Tl;N+0S5&)~%IBygSAVA2*6NHv z5v48JiF?E-BrB)lT5C<|Yp2j^EOh`H7`(ndOz zIC8(|RLR&k6a<962fy-vr1%|`n#%Z*L1{>mI*VSshL4Q?tHBu8 za(`YA)pwYBV>7i$NiA!F+l0|s)uu&bVzF)ITo)Y$UYXCsp4@jnD@W9AdDIn(3YHYe zWK*KPwP_|JAsjLI`ofT{ZME8vFZUT!)?P9z_JZ5(z#bYcQzAlxFid1L=LT6f!2;cB z%$j&K&jOR7=g)op>PQglAxtA`+dO9ldzc<0ms2gRv_A`GoZ_l%@~0AAS&9|y-DX2Y z(A8*6*`o16G*I@tVzaAGe!D-O`%@-_GFE{=V0g~+3+aA}PZZmT_DSe3%=wURc;2xm z`+c39oW#s5i%L~pYZ`s%K3MA$kB=!|rrDa}2yn67;}0h;*Cd%t=5L>do=1P2QX3s2_pBV{bC^Gxu2 z8TL8&j$&67fge|1Jl1r?!n*bq^Y5Q1=4+%_SX5XtkHl2nMpnmNbyU>P_%|K7zf(Po zHM~jnU5a4&+-;(J@7})k92BrhwpuG1tkAMeKC&)f-zwL#Ca=oLc>Q)zY5(EVK>1(X z7jB%RrFA_yt+I^|q@D31OWtoETDY~&zdz=9eZIN+9-oGz95?1-u&}zWo{#_Y3sx`t zpP!GBfB&1V|L5m>#6SP}X)5%eKYNL~`sZ08$GmqoWrzKWYBtr;VrBX~gC*>NhJ=!0 z{@4U}AHBw>ZkQ)%wGVyPm!+6|PXWoBe4715s_B-N1F=-#4^idXI!M!;v(NTs_FciUj93rxc_$p4l**b1EJH%PV|?!^tiDVpCrpC zu^fi&(X51$%C(`+>Xn?tuEve1{*>f$Hza_`NnHPUt|)t8AQA#$^^< zVrMuRd`WEk z>ah&D7?-+dQBhHz`|IAvYn9|=Wb(FYPZ=oED#9v<`UDCWZZ0+K&h%gYGY{fkJu}?$ z$dO4O`NxlmMZDZ}b#W*N2N|`?FONcx@f*?H_m@Y=+ZFBTf$&min^p(bE2&pU=$7D%3|NHBS?N z_>>%}M95?K#sBl?&-)XeVW|um%GKswNhp-l+tj1|4N>=P6F-k1bK58sYOXz|P^0+E z#6$!7U^+)Fmy3%FU)=ax$kKT2K72TPOuNs?mbC80)YMcCTtS!B;Wsz$jf{+li;HI} zBvcr;Uh}JWGJU41T6cDOT;p=}$`#ETr=_oNZeG4lA>_Gd^EOrFWK)7S0lii^8ULX0 z%1wII>Ms@g$XmB=RoB*bB?=CWj*fnsU+dCki|JEnUD&ydOUz-_&%m3Y5JPnPwz`^{ z^Tvd*v~(-1P0|C$`Q?G!yWtkoUjp>>^p5C;1_z%{Hq?Lm)Y#Rfn60{OHQe33*{3Kv zUhf&xwb1(YYY2sKe4EMouhM&rjFv+Mx`Ts*qNfM5*(zDQb`vZ&-n=7w;PCrTIXy*Pc8vz;`w|}=ODJi{q z^F}(1V!$@}<3}=ld=Bfuypoa<)Ar~G{QPxbN&^D}LD$H8McKsgClSZC2m}HQ!N9;k zK>@FxtaZz-;gFu0IhgHas>x6K9a$3x3kwS_^@o_4AVXqr`_j@_o|$N=iz?`(fZEe-?iJShhNqtS6;r9dBR1{@&4HtM4mD?o_xjiPV4k z^!@wy93H4eScuk^mbjdSpK;vQR#u3E>7YI9`ntLUFOlFD99&!{SJ$CL@h}Qudihub zV`Imic?J5&H~10lbL;Etj`Kf@OG>zg<&g5%g8DM#Zr{6?rCs@4Qd%0;VO$m6fqeJ+ z_2N*W{^Q4wZES3uot-5m15TAjk_E?|W?RE3?^|?#U{v|i+^nLk?34l59!mD0#OLgE zZ*T9PfBr!&##dHWin(Y%efsp-Ga^b#MRVsHZ~P~8)epe%vYsT4fY15xfzTgb$M?2R zh>v%=9h1s%G!wskZ?hKXkHghJ99xO|iB8q;F8pOvA(hs|kylV~jk?UR`I1NHd*y6Z z20|f5kxX=k}4%;z5KcAYK+UW|IuG1?iIgY68Zc+)t1NJ-b zNJJP)iwd90KR!Ml71nz?wnSG@P=LCju08~wXMWzy!*#sDhFAN{8HN9Pdb>ZAU-uAG5g|$_%$51Ui1Bz38M1MT$m$AauxMS1%>iBOSVW()8n)T37 z5=w3zdig)q&=}r8o+ZV^+$O|4XrpB9#;U}wli&GZmvaGa>r@Ckgg~5*j!w76iPKsC z8GWSp;atq_?rty-4L#Mm^u;ks{Pd!*;+FLmCV3q4V_ZwW+M&fy_ z$HvC!72?y8w6E9h@vST@I6O>qb90-&eBr=N zyLub@0t($a>2oH`$H&LOz`()rlqpINiAZcQx_IG2Y#XEDH!Mu775AE3KnO?n6z&zC zKYzZ(XbZN_%^No^oD(xNq!wn+ft3cQT<5X7{JSkOF)?v%broFUb&u!oo0R0E8fUkD zw71VWJV>PM_Vx3FEwT7ZPKT|ss>*Gm&i&FZ?Box!88Aa{-@fH?W`lLSbLS3(^*s~{ z7YFA?aLeUuWK=TB>aS{DH|Xi;@W}YzKYvaUW?mFiS-D^5zGGu+%lCXtLq(<3bwdxV z?^;k~Qc~xfgP*VO$HYXK*o5$Kd)Uk1Zk{9x^hoo0=sD$sM|(#p`fm2%SE+fe)6&f9 zYMyeoleDGJdZ~HW-qx0kyu1kqad~<9($W&dEcf&+Ufkw$=gzIJt|E@tV7e;7@_c>I zF*7qC)f^lgbaPjNeR=lW-XAHqj=ZPnVsBquS_*OZ!%Yx!!og zHhT-nKI;n$l@R3>5_kvt`^zdSdR1!q$=<0l;o;(b7_#VwWTF0 zCZ;d)o6~5iMqZcbS)E)A8#q*9uY;oUavtF?>H3xHn(>{rh(aE4^t>HECs{uKwNN z(7|mZ!06j!*uyAAMX0H#!yVWKB9Bphita)akOr{n)jjsH@oivB_TJO9uwc-26Bqvi zX~|Ok$;ruLFexG7qpnM7?CTPxE`QuO_SQgWW6^xH*^aiC*Qw{L-0uF7eX>~sw|C#( zk&l8+oSiI)b`wI@*chChmzU=l)7f=0Pvh44=@%rJFJty?!qNLIA`y`<{Y%%R~{O@vAnLMb&T8)b} z#8aL!5Nc^?H17TxG+kfum2x&X)q?N2YzEpKmhnPneL;@;}7^Aa9# zU5&v~*{Y{@L7qv|V=zY$8w)Ax9i2|A>-v>L-jtVHJZiYMQi$+5TA{i3kr5Ki=QS^6^?obiGSM!_Cc|TzBf!22Trn zpolq*zScOe^jkSgyL`2;%g&Zzi;1MYqDuzX;g-Tc_!bNVtW}*G&BVe|=e{_R&0c63 zUye&J(U(ea_~0knJykLN-m9DPM1E9{!=A=eiz=e9?bWPDI4+r)GFR0WPJL^th1eM8 zl&4$kQeIXj6kO`I)4^wKY|KN_0S*{8$5^;7IE}844O=gE5Q2EKUZ^KmYf8Vsdm_$YU1SNggw}5PgaAe3O7Z2`uiV+4ShE$Ih)2B=9WQzkTrEzGTrB+ zK~^11eBB7VnwbAl@Il8f9=+aFc593+3v$?2`<6~&Um_m@iJERRlQ7&j)PIKOfyQG3@`^C;{h z@%gmJIqgNC7TfF&9=YN3H<@sA;7a)TkkSPj%JW9jK1S*py*e+7e)R5H#+;TtkL=o- zzJt&?9YHScf|L})rQVFIL@dMQ)-m8!>ofG;dBfgK?Bv^xVDV z7akc2zQNJK0qhc7Z_w-k`gk8)sJEBb$nDcXZMz07 zwwX^Ew6wJctemyA6SVRNlXci4+X!(kf@68XufwKJg^zvV-1wr5o*u=!*@=k>7Z;aH zJhU<;pFVx6uKqPKp~pgm#9xY$O3VIPc)A-|Do<3Z&^P~kiQ_CrMudRkf*4mUE^f2a zn;5n$#vFGph}Aeb#2@#4&F|ZbGJUp{S9O?edP^l2;=hEb(C25lG&D3|ryi@roa3y> zA3tRMyCK>rCJAL*o4$J34V4fiGO+$u_v5K00&RwirXi){;oRm>rb$+tdr^nqoPPaVsp5Lig_zQh!KJ zw&S?1!xY6th@;Z_#lEf@^SDDzd*hAMlDe}qkFe(Fsw!gY^yF7d5PtrFR1PvnrLL`| zNv{v>b9Cyt7hIxo>FKXIpG_U)HHzHurMiRrXh9EUEA3%?#3QMMdr9h)`{tx%hAMY# z$P9CoLvS}6#aAH13qn9bY9yVZ&LU844X z@{#|Q{G|Iym(S@=+r4Be|GkY#MW5{+i#FU#5-|$Pj;^lK*mLvqz3K$?e}ItrH;?X) z*RzL8rHSIu#I#>07wAV+v)ya&?7VjMYM=h%%1Ul6w^?9X8Vx!+|2Q0Bp2b}h7#O%$ zeOvtd$jH%_h}k}>ukhQqZ#ka3IrLF!Vdz!LR?nc?SrW2ld~u&Sy*1ZE>$}6E+*|kD z1FLfq1_t(*Vb2P>jX`M$u47q?RzP5+y?teGZ4_2jRz^m%@;Q0p$KF09L~LR*GN@_6 zGqUT|S^%!NkGWL1Cg_WY7flkl?92 z9xUh-PgaiwG^joRrF<-32Mm^H4=q%&D`vbT2|?Dj~|p?WM|yAqZW3HSQx6BR%I@J}I(YsDf? z7i$j03l0vxii=z4v;-L|gh^{8+*Nw|BcBU$qUU$uqInX=nwpvxcP8@l@=)AGkT3(Z zLh@U$raTPC`ne@9vZZyQ;bzsZc&%E26K_8{OG`^+XEld&v&EU-L{+pw$!VOmorpxg z?ZYYB$QFhMl?KnILK_o?f z)qB@F>KA{1n22aI!snkJA29wJLA>Y-AJ=G|TUPb~fuklP^QOLD_}%Qqix<~oR+Q;P zlI?OBRJz`9oSk6%adM!(&gzw!Z%@4utP9=XlLutrfZK1;6Wv9C!_HT!&Hk;|MT?%FYR6`Xj$zmWAt z&#=Hh+MtNIrb{TktDfQQUHgbOvu6uKYi*vuCHLr+~J! zwJmMUkC3_@@lnRfXQq9v5Gu7g4ndp7sX-`ed=oU`mF~zsvoU5pib6~B$tIrI;EDW& zNjE>k_)bo^czDjPu30Kq;Zdvs0HuwcogGJcyQ&_;jW$~#3>`)NKa9l2UsqIo| zwbJhmgR}4k-(9lQ{bnb2TK+Cw!^UjQ?`Vztx=@uaThVN7-~$ZImW9c78zZN-+>(-# z)+k>=#RQ&x=S-wAD;aSmKzxINFM`Vb+1Pg8vTfg9jQKO}Slozor^pq&8|=8vk0XpY z?$F(dvX)-^*`VBLU?8iRtFCxE_>(^-@`yUJ>aGs3D!>W#1YIm$xSv=B~QqhP=X$z}?;4ShGa|2#xo@jcr5W>;{3>1pUq*hXEg0)kY-c=#6jI!i zG>KXJ#>(@huX7q&-&f+d*@<=n>Sl90`_R+HYkd7V>>}z``r~J9^%=FimhT#*TMNDlaP*7Z~ zWI)GJ+O*@=NsRuCu(R9frr7@WP0E)_mFbrF!KZ<7cOi<%wzBf_TQ~t>=#VSbIwEeH zQv@_pEV?zQV&-b^V;5hl`L5)%9G3t96CncM^?w}kl_Lc4TiVLX>T+_PS*CZA>~Uq~ ziNmcY%DG2X!a?;RMg|t{W!84r|2YwbnV4GgK!mxM7ZtsL{p{f2u}qgN?8(cw?)2g>px`s~<(Yk3`Q76%`aZIuiIiA%r6QAYcPhYi?qqp{dEL zS62lUJ$4G<2^X&tt&Wrftn*`F0OJgs49G+gUXYv~?Yo+A{c@f3c3l}{WoFKmiKGuD z7mU`UprjOaTI^mKDr6?a34e^5i_sSV-15QT#|Ms2l10!{P3Hl$fX~99X(Jj;Q3&+z z5CAQZCPJDH81JPl<4jqpFr%a%0h`eZRz}7v%|(ETvTBz6uH9(h9uUbKnN&R{)}0s} zm0x=4<$bjamk=Q`p(n z*J{+ms8N~29_O>?uJuMpGo^Ufm>?^FE1 zuU&#%Gv_xWDxz6AKBcg~k?@jSQ^j{pMK0ciX{`B&(a_W4;3@q{9cq>7;4Za~UZ18o ziorBIv?~Bw$5_ zoI_&J7nYZo0c8Wo!^p@8W_cWO9%zZ9MVjl^!#;fY0JF`m-=LH7v^y7&y>k26Z>-uC zEZP-$c9RV^?>&)MP#EZ9Wq7Mq=T;2V4A38g1-i9>2mStSGCl$bRVXPRg@Dud@o{gk zmH9A$0JjI!^~puNs`b*hH5^Wxoej%es%bMf)tQfk}9)D}qx?S@{=Bj?jYs`pDAAfq@`#oRQh%ZeM(EU9v zU{C1TVXdLeR)k%l`q@XiK3gCD!mUk)$&ZzOXDoI}o;6MjPwm%N-=73lNL1rpQg5{| z=NPzL48SAd%a<<@#wsd!{kwr8nQ)s8ZC#;;g`q-o-GwTHmzSuy2<{we;JyvM zGmoL4?SR!K@YzxLHEnKfUAcO-{rmS%>I(7q+fIIBDis({GMLD|T8EM{8EO}p_{Wvt z3ZvWS?)p!7tmH$st3+rzud%hY6&)STLd49%0zk=6)fT`6;1SKD35lwZurSTtyA;{7 zYhl~(KYY<3_ZLr*N~`ud(625n{g@lixF!^R@#f0BRou`g-YNkpLBDJfd=t@@DIdR_9Hw$DVb^t?Bk2I~6gdJ4kA;ky znvtfaSDm-;#VIH#faY1_yNP{)|6OHS8F(jA)=nefR^xLt6cj@J{QTlt(XK_ZHEFTt zW!E}8J7MdM78|z);*rur#o)gE`<|r_dXE760=edd-W&10w~?Hew-+f*nREhFCnmV5B#8i(LlugZON^00)xSRuFX$A2JJBrs* z=Yq}YWN9~T#aJ)B!g1>GPoEoNyyvZ(cOwN%a=2rc&l3?5O;1ll{!9`|FC;Yfw;*64 zl4Btn9Ud0ayN*eumSR!>zJ}TcLPlg#6lTxG$6IagZOqJknSKFx@y#HXbeX$mu%#uV zp+PVIS)ZLVlt^rBY-@bXOiU#e6-01TLeX(=O-)T132}U>!PAgsHBB{i*>{wv*qS5wLGg zFK?e)tCsMxA*P?tIz!n+YyF27Af8<@*Rt*7tvu~7hDKTu9wAcg5jm?>@@SLx@gJ!* zlB20~tY@8-b$P5g3FY}(5uJ@Vqyu_`VJA&`moHyVOKg&-Ty;lA= zd)PGN7E15ly#qYpf>^g_&j}js?d=VuYOZoN&ef~?tH06`7T)0>&4!8oc5sLA8O^FK z6-F_>WxRxAhqQnA@FmdQ)6GEy;tth9tgQKHJ+mCt=a4~aX6BX3NkpGjISh`%ipt*O z>^qejZS8mPr4l(_EwvshSQ_f+cdFrTc3<(Ek#7}m^YMIssdSc6oo!Y()MFm#uxE>EU(ReA0s+dFJ(-9v)T6DrS%lYTCDQl-9BG@}X;+e{F@ zgDAiHL@Hfrdd`_^ni*n9`t)aEcBet+b<|=H4bXv~KQmBKJp^5WNy%uX9YlY;(<}fd zA0w0E`}_N0hJ7wkkBtKt4EYFwIDjmNr^g#hhWR|!gO4+MtE#GCf|B{|eLL^rhL8(Z zWM*ap>*eSfxE+6Amg$hv8cY?#+!=ztglpA~hS_(?zl;5s-5M9fAe zEskTg-p#rJ(gn;VVtn4!naR2r+vo9Qa$jR(_f}6tj#;RibtYs0?7z5JWq$2wFiPTV z4gQ3X-|S@@czgwKulGj(9FD1y@#ytRD{Jk|17pcA&UfI8GP&>}w)ep3t_H$*v2zvA z(z#UdjQfsH)uV&cU)y`OErv!to{lswlN$?`6T5x{`b z1|6&&^OXk&W3K1;v{kItgOFz)ygFW9C#jObsL1Qx;d|~fqpSwfgCoRYDGj_YOu<(O zsVXUjmj;(sPhYo4Yt1}npma;eye-r}7eJCJ##etOFjLjO31Q$_u&@+wj(PndFx-m& zgIrj`;A2==|1uAtu$g^~b7f^&U1JWA*DO9TeGemQg>z5Oe?T9Lh@MmuY! zusZEa+gwk9x6lQ4al9D)0UBt47yvmUHIevB<99z)%*?(MeKGFDe$cwg zO{ajJqR6HyFT<8unT+z>dU^g3wK5lzJD(N3bQ`h#D)sD@SFQ7%hEXm>5e|puV()2G zO4wZc>fNy8)gjQO>sC^uEid}(PGTFjHqcOGr2NH3kcFloS zyc!bB6@WoO6+vg}7GmMv|u=iO0ZT(=6oFkZX4 zGHd9ZBL6EevR?SYGoqiOvhl;XER9KWVY*8nnbi<43dRDPSC^O`VwYRA1ra?#f-@6u z{Zj=pCm5Y1%$REz)7oRe*TVJIJwtwy`dj5Ebt=MR#eeMSl>!G2mIrG(T zWxsEbUUPgI6LreVs^u^|?fbhJf!ZG6v%-C6o%7;6F0S7bOvUrkC*v|Z`ij9~{*wyI zkGYG>HcQ{n)Oqi)%^YJtpiC^Z7>MAP(PcVYX>Ymgp*>k(*^#5}d}|B6R#l!qvSa$= zpBbNVcblivB)-c`Gc^8)jx+N?q2O2L1nF^K@TxS6HwLq@amvx?L(HOJJv`d&C7reN zOp%xIneU^oG>mao2IHA+dq+|4d`k6*?DT0r2O;VB<6obZ~tB0c8fmwSd#kDdqOd# z3vK-~^8WZ4XH6owO0?p{5xMsM_<__Hy8gg=jVpM~_~)DZ`3I!l%i|iyyPamWp@OLx zd7k9hD@(i}wk6_k`}EmI_7lU~SBBV1bfNj!)Dhx@zyE0L-0F*oaVdg(K2u+`y%5tf zRYJ^S+-1%ehX^NBo;8V#@5U$k5TDi*M|jwkD2t;ce@W8tvuZ&qgMTEUjMyI<^W{+d z#Yn?uQ^tX+(D;WsCQbK6+S|t#V{q=>BC%x@Y?AUTB|eM4Clx_hK!;7Hj~;TRFv4!C zT)|8S))e-yGf_|0gaFMF#;;xx-xRkc#HLk$dLg)iUUDm${)<{`{Z(fafXGryZ9N=#9J zwRNHJ6>R-kV>ozt+JF1qW5Agv%%FZeYfW$$|BFoQ28QK*8S_Rw<$G6`owc=RrgRTJ z?GvR;`ftsSf55g)lI((l!IraIe^+a>#sZ)NOG`2AHj@%_VXQrYOnr!EF>JaXNkO%s zatL;mBISFo)8KU&N!Dp`r7K0vIfzQe0a$lNM#jzL7G_2R>1Pfp=cpekf4B1-oLCLK zoo=LfT6-SLEnH1aZAmYI5{m{~Jgp~IOHK*24<4&lMS8C?ftc_ESQuDPV4Wyy-$SIi zd4bdC)N3(bQP;_-tl)AaEhABI7}?Y zIFRY{4%OJy|FTa%4Gy8Qf)oy49Kdqajew%Z7Ow=<6Vg?v8m3=V=@dK!3hML- z`8faC!ra_6|N7dRE$GjlN<`3J#leYBNLX821CY@=9+CK85EjimX%U(T+B>*`%Gtkn z4h!WcTR2wlL~Rn&K~||blmH4RQS;7^*Vg$>zQ2EGQ(-j#LV{=1{!*bNWaLeBd@94Mha6@ zr#O8i@Ur!X^9ePq8Ok7I<8WpnYfbp`AP~PB{x}AqrmjBA{|=vtjZF%B$=sl3EcnUP zqq_uQt)9P;Li(>(oQ_aSAf1$@jeshXWc<@#v;ecBAa2}U8CnVeBUJBP*+A$kryIG6k%tn=fH0x7?&H;-B-ELP&U)fu=-#!6W7M0v%@!!3U5y zE(c09p!Y`KeGCV1qw0kr5`i`Yk`-VfG?PNIh%i(lUGwnah(n~Bv<3Xw3r(vfxC4OFO74L7{zAa&PYQ?6pK3I% zi!$T`6h)Qpj<^juw%03II%B7d5P6MlUB0%$O*>jzF&4fYQ_Ws$xHx@ozhi$U?ABa= zt~3QJ>R0rGZHp8Vz7yJr?4&a{WX>OWNB}HmUllu4%Gl6wt7{VBaF`+yG{SDq6-O&` z*Poy48d|({XlMwCyOhh$PEHtY;8}Rn0kbq%*K-RCi)2q~|GfPCC4#CUHgpaswsLZC zu3Q1y_<{G4(=i^y+oQ#_Fp%LWD=R-M)T{S8bkHTLgK`ECqvrrx!I$^(ULwD}5jZkf zX_RYWVIhW#1GN*Z2O3Z$B|^#Dz~TA;4w3A0`fF%N9jVO%SRbf6yYVD5)6=~`;v96H z^0}3jfc?w`-DD^$pxpfkV*-=~o&rN#V}pbi4Qq_j3kV1Ru@ve~F+W=rz^V5F(J9DYDZMtu;Hsc1-g`_({8&y7V+`Plf|^q%ZKU3j#l^?V z`c(09b4NB$U$}U&e3Fxf1|w0Hi)L}JyQ-_DRRd6(M9?+R`NGW~rHqmaw}QPk2VK8M zPmhs^k=%dXJRMtu%4CboZaez+dJiMYfQt~XlqAb)-0=hTe5;q3XfDwdxH?7Eh(_H+)vux$tE z^0s=ol+69aadZp0nmF`Hgr}3;`dLvSt9esgi4PAACLhgy!L^b2KB4cN1erUbI20En zI~sEvfpjf$4fT3x$7uOV^mN^~<}@$IiEF2&b?)m+y@?Vn)uj^Kq$Ahnc!_n$Rgi*V z=-i{v!WXa%-b$reT3N|Hc_QMzoi3gNbU!Mc&~HwMZD?R%cYo3cCbi}iPuAnH_T6w` zOJg6rjf{-U%E~&u@#-Ov2S7Ul-n>^GQ&_k$ix-DPEvbWj!0rt+1hq&EyZ-Yt#=yF| zI#9~F@5}=~3Q$;4QBg<;uE#*SOeBQ>jXBU^DJdzTp`oB&qK}052yX`%3?dM4DKv@GKiOeU7viG(DS^;t$J~BQ1 z>#tuAsHmnuO94oWpy24Idv}D>-~-@6Cl?Lc21UiL*RQcXj041#Kz{^kbb{>2A40pg)j66&=8#GASBImgNC4w`G-*+Gw~wwLL5 zns6ack5=^RJ>mppJ#4MT{5(wU_$~$dl2r-ova-i8LmtoTE1;DAiNWgAe)E}co^{J@ zv{HlP=h$|Sk7p6zE)H*L;QDv3cD`#1z(KcvR2ub2%Q0;=V5bgRvT0jiuyoGK!$T1Lbh@SV{oDzHfyg+O{L;Lu%-chyw{}axaUn}Ou|A!i;8+08XAzs zWMyPn-jCnhd;tyv;%A8lORzXG8& z-rzlIQ1|1L2#_BjjX1Rf&F)xBOMu=0>|pQ)QL;RyKL|yVkq~!YJv4Z+(9?hCKVZud z*Fq4$kb|5L@Ie54p($X=_=CYoeogwAx?|CO5zZ>=VmF#24OHpj+( zMs|Ps;+r&Z@EL$qr&gZke&_4|2jElBgF9x4Q^?R%ptq}|EaZ^Lco8qbQ&W3WBgFCM z$(=KbN{{A%WFe`D$?n0khkBocU0;XcHGefYEl%aXQ%491MxYfNF)**Jg9%wnA8jnr;~&|K`EPiEGqmzP{h8tNr^6i6`{u?I*FVm zroFGX*GXCkctnu*U^M9tbFxQv0n)5ulMw!I;Yb4Z3SyYq*;!{h1JLwC69?#OJ~i#x z+S=+vPZa2&rlvLv;~s*f060+z>|2C{iy|c1KJk|@g79h`Jy2;wtN`R#w9JlJxD`SN zbbBb|4hRSc^cst2ven16qljS(njKZgMOz|2QoZg1q!#Yw$l0;fXfj`gfY6HO^9zDW z>FeHqQ@uo3M3r_Zru$O*>y_moJ zYX{(}w$az|L~Dw1B`*j>zlI+-Rc{lq#?h&vk)%93wF1J+1Dpdpl*j6~ur_Hyo(J_= zL`;n9@!lF}_BIbsK)wRekRRfofPhxEYHuVvUi9S)7rIrNlvPxAv#^$)5@yuyx0rCj zBs!mEi=ei2k6fvfLE8bF`cnSt`a0W%tmqtElurrxtXoED=HDO&2KUAmQ3*IDY;|jn1t*1rrHs5$OD z2qIF_m8q$RVUckpX8$J~*dyxE-SGA~*vU>xpqj1sKCW1AQlIa7-D2c@hTaDNnM4$E zVxH_Rl@(G39Yc_r?Lq(th7&{p$AH*Vlwa_MzvhN&L&)91&FugzHceXuh;!hoE0YhR z;^UzoS!8Bxv`hawtnv>HWit3s*=Pb*{FJFuX^E5$Vi0Op+p2i%K z1U+$e4s$=C)&YZruC`;;lJRnHLbZI@j`f~N6lWhe2>D~sTm!w{-PO_)H#v};&ma%e4eI{Xl$<2|_u+kOQLu?>N@}s`E7h0%_yQsK;6IMwkC8vs*-g``g`egNs3Xn{A4($H;G3~d4TNL^BmtRYhK2*u=fB&jp2NSC*?IwZs1=*(kw~#xah@kXF z_4ElpQdaJT(i^-q?3sV?t^txH)K4?!wYu>OU8ow~s#|Uz8A?n1Tm%E9ViCK=^HJ_P z@P;(KER@8c?^teRVIL9phjnM`dZXEn9A$s{2O7B*k&9!wa$yDCFEDSy>JmabY&iw| zMSQ0YGxU$yDLok-*dxRdqosRhd_uurz$EEzGku!GynV_&U7wvQ**5MN)tguA%yb$r z$n;T%Vr`^VV)JhQi^I7bQ=ezzqL>S4WR5_z9FNl9`r#}}f9v~Y_fd_KJCVL?LX_wP z*JQS%rSNUua{_lTqv|E1tV57%*_UzfwuT%_B5~%@1h0fou!>tUi>x1-_H(k$Q+~D}+@XV)`B>!x828O6{2GTGpN4=V|!JMsGi% zJkn@52~FO(E)XkvY_hcHv{Wr7>ib6;N|e{dW*#T�l&fAm;O?G>UhBez@V`C!Z}F8fo=$rlcr%uH$Nr z!18Uq@jSGhekGp{%f4y5S>^{-*2TQDJnsMhqx#7F)0`UtnYZp4U;Eu7`a`t}CyQS` zFDz&vfXkHh$=)8mh9<`ugQXF75tb*LuuFzxf$CvXwFBw3(yUx8*rs%pTKwpd5#KB1 ze`te3o1WQm+Qvzt@_I8rOEe%%oPnf1vWhqlrF9nB?j_x zY{kq(Q>;j{>wBkto2tsh;cIN18jZu)$mRxWDns-i-1>pGJwL}= zx{0jhhi5f>E~@X&5$lqX+vH>cok1CqS5Ld~;5{=vhOLcuURCLM{Vx{_Z0 z-Gzr|KjY0gi+FwSt5p5N$GkT#a7!$u0x3#~`7oe1^*oGEY}r3BE_Df!n3(+!haG^A z3{yoE^9WNMrwV z7(nr2K8eb|Xr5@cnHPuW^kD(hb5+VHu6qal!ER^qZWI5>16n-7ycsJ|uhn|N{d1jd zwTO5U-q80)?3c<2FfTOjT=+}OH3o+x42g{lh`pX)$GkA56xWp|pQ(?FYs|^P>-P`k z@L%shYjer3rBPnk=ZE}JK$Sdwa)$v`zc07F-^Xjz^x`a+aNqr*5l+%%B;HmLCwELi z_J4yedI@!PwuF=P+UP{;(i34y>K_riUB;6G`~&h&wH}Ex{~3GHp|Jk2qf_WdVDo&5 z!aGEq*QS4Tdi=<1siJQ(&qHn3m-9kd;yqzNw?20> zzHmlJ>ig*QQ>{N&zIoKdVbWx>sewx!WZPk?WgmO)Dt%0g2?^;Lm*WnBeJrlYD-GOB zVI4)&B_r74>>XcXi39Ni@B{HBm0yehJtAO=r=^jD_xvnJoDT0dQ_gCZkY67P%b^?S^edMFiHX0N7@(|GD3wg&n6atp z17nH51uF9Yao9q1oBf`cH-oMH`SCAL17goVm;WDh>wl$h;DVOFOC>0xRa>I1?>stI zGiE(DB9>Aj{L?E5rw+_mQ`nOYSztOH+RXF6#T?8e{(`6W>;U zx)3)HB~*pYFL5PRYwHzgEm;~WbezCIdk~5@WVCLay1e>((g3BP5%D*((&WSb<1^dL z?A-GpP~YAL<+8gLT_JQCLmwaHYJFjV;E=OVLxVM7(3~}Updp8+6Yg6^NTs>E*lv^U z`Tl!yLA-~$_y6U|1tHJ50kQ|s#=jeS(V=@3deasB-`Cc9wps&epfIp-w7UWw_fWjL zu8%DZMYx^0`)kKt=0c;%S0$A&8yl7}ya9JN~n||?vEE$j! zfJ^5)6R*zx#2iI{O^}N4I!J6b=RAt~_z_x^h*&hJqGW+#cxgxsZTPTKnwr0Ws(=$3 zphDG$|3F`{|5F4)1k=nF)I1HyE|ovbAKi^BG3^-}lW!iSDvBI_?dd7@zLL4E5J8Is zLIqlYpiqHnfwH*(%?t41)!S^qdg&t$Gvw)44r1T;I5M)a!SdO`oP%%zdTb&4g~b68 z5VTXN=WFq}tZJY!3uVd$T`ABax8edt)zK+UJ@5bF=z*BN-NU_6yPcgKSlx5y&qFu< z&;Fg13~GOD--Dx-!qU=GP$!e!x)l{0>jwF&fA`CO&Z{!1Nl9Ju9)MZ|Zg*;f^xx)F zC21tFqA9AK3Un)>#GI)h&%E&_y`w7YD8WCdC>c zWs=P(fsx?-zkdBfX?wnS!J+F0<&s%P{4D~4@PvfXh6{cIi+Yf{BcYvyn%WSuP+*JR z1qXAhb-}2E{rx9^RFWf^%~3jw+6Vw$p^n<9+j$2_dsf!Hz*HFKxx(i z+PaAe5s)S3=d-f1D!6`l{rWWmeH7sD|MlCqXCQ@FRgKkrvZ40BPXSnn$D9JtVjq;OEz%y#e~Zi_Jx4W%pB_5)%?$KA)hXVX$ z&+0ly{d;cCw8&Ii>*u1lw898~sAO}T!>=p!`s^^wpuIKIlfK$9Z9k9l=NLD~#5vsr!wbR@Is*6<4o_DS=VlQkE; ze2FC}SPS409FdR@Vm3Ib1;q05!EsCqLlLkmL_|b@F2lW)1`1(eVeg-@z${h(6a%nK zX?b~uXbhImdA0j1oRsQ`E?I3QF%+qEE?DA}d` zZRn&N8POU~ltynWMB(4wKO3!0elJzP|8iD=tH+-t?$+&4x{4~EOCbZzge?U#)V@J? z%Owf5H|f{KZJ%5eV|*R-3}^R-5YM<8^ZmQNSuU)sM3y5jpSxz1J&77ukZrCIOOxrA zH%kwCMK+>Vveh-RjV439kBM`SoJ@F6xuX{`L=*nH!Gfi>o(dZf4_JOE#KFKJ`AlD+yft$hx-VTE~li~1J))W)sktO+t= z_#osPd%pkk=TB&jhL$8iE-R$NT1#tdN5{r&xZ>Qx2%w=cJXZRm+2hQJdv;r=m6W&D zUbhM#uMbovHQ!lUUw>|Cd547LM={#Qv#kfI{DORJu-}6 zqBR3$qmtO#6Vdh?CZ7ubMeR5&ObE36A9{Z$X(Mo;Z7=CsxGCAQvKs*ky6wWQCl3w} z^fdWoKsEOrC#c!Eus^ZrA6HC@$JTE-gs_a4x&ir}L*ct8+K2~a*GfQo@;<7~8@bf!g-(yt{a$PuN>MiuZ zg7 zUE@s%Re}rppnn+r=n*r%MJ?LvumX-Lr+F zIQ54q=2@2e0WnOc!J=~{!7YHH{xoysAP#9ULZi{V3AP>{@!B3(SUS9K9?krkSbxx3 zt{*U?9p)2aahE(~cZ<_QBhI4tK?&k~SC(wkt*VKL72