From 33cd347759d6d999325ebf3c69b7ed5692c343b2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rog=C3=A9rio=20Brito?= Date: Tue, 6 Aug 2013 17:36:01 -0300 Subject: [PATCH] Imported Upstream version 2013.08.02 --- README.md | 4 +- README.txt | 4 +- devscripts/youtube_genalgo.py | 36 +- test/test_playlists.py | 38 ++ test/test_utils.py | 15 + test/test_youtube_sig.py | 38 +- youtube-dl | Bin 148725 -> 169216 bytes youtube-dl.1 | 4 +- youtube_dl/FileDownloader.py | 33 ++ youtube_dl/PostProcessor.py | 5 +- youtube_dl/YoutubeDL.py | 9 +- youtube_dl/__init__.py | 17 +- youtube_dl/extractor/__init__.py | 21 +- youtube_dl/extractor/archiveorg.py | 3 +- youtube_dl/extractor/arte.py | 5 +- youtube_dl/extractor/breakcom.py | 25 +- youtube_dl/extractor/brightcove.py | 66 +++- youtube_dl/extractor/c56.py | 36 ++ youtube_dl/extractor/canalplus.py | 46 +++ youtube_dl/extractor/collegehumor.py | 45 ++- youtube_dl/extractor/comedycentral.py | 7 +- youtube_dl/extractor/common.py | 36 +- youtube_dl/extractor/condenast.py | 106 +++++ youtube_dl/extractor/criterion.py | 40 ++ youtube_dl/extractor/cspan.py | 4 +- youtube_dl/extractor/dailymotion.py | 36 +- youtube_dl/extractor/dreisat.py | 3 +- youtube_dl/extractor/ehow.py | 46 +++ youtube_dl/extractor/escapist.py | 8 +- youtube_dl/extractor/exfm.py | 54 +++ youtube_dl/extractor/flickr.py | 15 +- youtube_dl/extractor/freesound.py | 36 ++ youtube_dl/extractor/funnyordie.py | 5 +- youtube_dl/extractor/gametrailers.py | 76 ++-- youtube_dl/extractor/generic.py | 41 +- youtube_dl/extractor/hotnewhiphop.py | 8 +- youtube_dl/extractor/ign.py | 91 +++++ youtube_dl/extractor/ina.py | 2 +- youtube_dl/extractor/instagram.py | 33 +- youtube_dl/extractor/kankan.py | 37 ++ youtube_dl/extractor/keek.py | 7 +- youtube_dl/extractor/liveleak.py | 6 +- youtube_dl/extractor/livestream.py | 52 +++ youtube_dl/extractor/metacafe.py | 82 ++-- youtube_dl/extractor/mtv.py | 151 ++++--- youtube_dl/extractor/nba.py | 3 +- youtube_dl/extractor/roxwel.py | 49 +++ youtube_dl/extractor/sina.py | 67 ++++ youtube_dl/extractor/soundcloud.py | 121 +++--- youtube_dl/extractor/statigram.py | 10 +- youtube_dl/extractor/steam.py | 6 +- youtube_dl/extractor/teamcoco.py | 17 +- youtube_dl/extractor/ted.py | 2 +- youtube_dl/extractor/tf1.py | 10 +- youtube_dl/extractor/thisav.py | 47 +++ youtube_dl/extractor/traileraddict.py | 31 +- youtube_dl/extractor/tutv.py | 4 +- youtube_dl/extractor/vevo.py | 4 +- youtube_dl/extractor/vimeo.py | 29 ++ youtube_dl/extractor/vine.py | 10 +- youtube_dl/extractor/wat.py | 19 +- youtube_dl/extractor/weibo.py | 48 +++ youtube_dl/extractor/worldstarhiphop.py | 7 + youtube_dl/extractor/youjizz.py | 16 +- youtube_dl/extractor/youku.py | 2 +- youtube_dl/extractor/youtube.py | 500 ++++++++++++++++-------- youtube_dl/utils.py | 23 +- youtube_dl/version.py | 2 +- 68 files changed, 1843 insertions(+), 616 deletions(-) create mode 100644 test/test_playlists.py mode change 100755 => 100644 test/test_youtube_sig.py create mode 100644 youtube_dl/extractor/c56.py create mode 100644 youtube_dl/extractor/canalplus.py create mode 100644 youtube_dl/extractor/condenast.py create mode 100644 youtube_dl/extractor/criterion.py create mode 100644 youtube_dl/extractor/ehow.py create mode 100644 youtube_dl/extractor/exfm.py create mode 100644 youtube_dl/extractor/freesound.py create mode 100644 youtube_dl/extractor/ign.py create mode 100644 youtube_dl/extractor/kankan.py create mode 100644 youtube_dl/extractor/livestream.py create mode 100644 youtube_dl/extractor/roxwel.py create mode 100644 youtube_dl/extractor/sina.py create mode 100644 youtube_dl/extractor/thisav.py create mode 100644 youtube_dl/extractor/weibo.py diff --git a/README.md b/README.md index b246d3c..560bcdc 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,9 @@ which means you can modify it, redistribute it or use it however you like. # OPTIONS -h, --help print this help text and exit --version print program version and exit - -U, --update update this program to latest version + -U, --update update this program to latest version. Make sure + that you have sufficient permissions (run with + sudo if needed) -i, --ignore-errors continue on download errors --dump-user-agent display the current browser identification --user-agent UA specify a custom user agent diff --git a/README.txt b/README.txt index 8f08dd2..b13711a 100644 --- a/README.txt +++ b/README.txt @@ -23,7 +23,9 @@ OPTIONS -h, --help print this help text and exit --version print program version and exit - -U, --update update this program to latest version + -U, --update update this program to latest version. Make sure + that you have sufficient permissions (run with + sudo if needed) -i, --ignore-errors continue on download errors --dump-user-agent display the current browser identification --user-agent UA specify a custom user agent diff --git a/devscripts/youtube_genalgo.py b/devscripts/youtube_genalgo.py index 150c88d..31d6ec9 100644 --- a/devscripts/youtube_genalgo.py +++ b/devscripts/youtube_genalgo.py @@ -5,27 +5,45 @@ import sys tests = [ + # 92 - vflQw-fB4 2013/07/17 + ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<'`~\"", + "mrtyuioplkjhgfdsazxcvbnq1234567890QWERTY}IOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]\"|:;"), + # 90 + ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<'`", + "mrtyuioplkjhgfdsazxcvbne1234567890QWER[YUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={`]}|"), # 88 ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<", "J:|}][{=+-_)(*&;%$#@>MNBVCXZASDFGH^KLPOIUYTREWQ0987654321mnbvcxzasdfghrklpoiuytej"), - # 87 + # 87 - vflART1Nf 2013/07/24 ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$^&*()_-+={[]}|:;?/>.<", - "!?;:|}][{=+-_)(*&^$#@/MNBVCXZASqFGHJKLPOIUYTREWQ0987654321mnbvcxzasdfghjklpoiuytr"), - # 86 - vfl_ymO4Z 2013/06/27 + "tyuioplkjhgfdsazxcv"), + # 86 - vflm_D8eE 2013/07/31 ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[|};?/>.<", - "ertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!/#$%^&*()_-+={[|};?@"), - # 85 + ">.1}|[{=+-_)(*&^%$#@!MNBVCXZASDFGHJK.<", - "{>/?;}[.=+-_)(*&^%$#@!MqBVCXZASDFwHJKLPOIUYTREWQ0987654321mnbvcxzasdfghjklpoiuytr"), + "ertyuiqplkjhgfdsazx$vbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#<%^&*()_-+={[};?/c"), # 84 ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[};?>.<", "<.>?;}[{=+-_)(*&^%$#@!MNBVCXZASDFGHJKLPOIUYTREWe098765432rmnbvcxzasdfghjklpoiuyt1"), - # 83 - vfl26ng3K 2013/07/10 + # 83 - vflTWC9KW 2013/08/01 ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!#$%^&*()_+={[};?/>.<", - "qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!#$%^&*()_+={[};?/>"), + "qwertyuioplkjhg>dsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!#$%^&*()_+={[};?/f"), # 82 ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKHGFDSAZXCVBNM!@#$%^&*(-+={[};?/>.<", "Q>/?;}[{=+-(*<^%$#@!MNBVCXZASDFGHKLPOIUY8REWT0q&7654321mnbvcxzasdfghjklpoiuytrew9"), + # 81 - vflLC8JvQ 2013/07/25 + ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKHGFDSAZXCVBNM!@#$%^&*(-+={[};?/>.", + "C>/?;}[{=+-(*&^%$#@!MNBVYXZASDFGHKLPOIU.TREWQ0q87659321mnbvcxzasdfghjkl4oiuytrewp"), + # 79 - vflLC8JvQ 2013/07/25 (sporadic) + ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKHGFDSAZXCVBNM!@#$%^&*(-+={[};?/", + "Z?;}[{=+-(*&^%$#@!MNBVCXRASDFGHKLPOIUYT/EWQ0q87659321mnbvcxzasdfghjkl4oiuytrewp"), +] + +tests_age_gate = [ + # 86 - vflqinMWD + ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[|};?/>.<", + "ertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!/#$%^&*()_-+={[|};?@"), ] def find_matching(wrong, right): @@ -78,6 +96,8 @@ def genall(tests): def main(): print(genall(tests)) + print(u' Age gate:') + print(genall(tests_age_gate)) if __name__ == '__main__': main() diff --git a/test/test_playlists.py b/test/test_playlists.py new file mode 100644 index 0000000..65de3a5 --- /dev/null +++ b/test/test_playlists.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python + +import sys +import unittest +import json + +# Allow direct execution +import os +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from youtube_dl.extractor import DailymotionPlaylistIE, VimeoChannelIE +from youtube_dl.utils import * + +from helper import FakeYDL + +class TestPlaylists(unittest.TestCase): + def assertIsPlaylist(self, info): + """Make sure the info has '_type' set to 'playlist'""" + self.assertEqual(info['_type'], 'playlist') + + def test_dailymotion_playlist(self): + dl = FakeYDL() + ie = DailymotionPlaylistIE(dl) + result = ie.extract('http://www.dailymotion.com/playlist/xv4bw_nqtv_sport/1#video=xl8v3q') + self.assertIsPlaylist(result) + self.assertEqual(result['title'], u'SPORT') + self.assertTrue(len(result['entries']) > 20) + + def test_vimeo_channel(self): + dl = FakeYDL() + ie = VimeoChannelIE(dl) + result = ie.extract('http://vimeo.com/channels/tributes') + self.assertIsPlaylist(result) + self.assertEqual(result['title'], u'Vimeo Tributes') + self.assertTrue(len(result['entries']) > 24) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_utils.py b/test/test_utils.py index c4b7136..be10691 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -4,6 +4,7 @@ import sys import unittest +import xml.etree.ElementTree # Allow direct execution import os @@ -16,6 +17,7 @@ from youtube_dl.utils import unescapeHTML from youtube_dl.utils import orderedSet from youtube_dl.utils import DateRange from youtube_dl.utils import unified_strdate +from youtube_dl.utils import find_xpath_attr if sys.version_info < (3, 0): _compat_str = lambda b: b.decode('unicode-escape') @@ -112,5 +114,18 @@ class TestUtil(unittest.TestCase): self.assertEqual(unified_strdate('Dec 14, 2012'), '20121214') self.assertEqual(unified_strdate('2012/10/11 01:56:38 +0000'), '20121011') + def test_find_xpath_attr(self): + testxml = u''' + + + + + ''' + doc = xml.etree.ElementTree.fromstring(testxml) + + self.assertEqual(find_xpath_attr(doc, './/fourohfour', 'n', 'v'), None) + self.assertEqual(find_xpath_attr(doc, './/node', 'x', 'a'), doc[1]) + self.assertEqual(find_xpath_attr(doc, './/node', 'y', 'c'), doc[2]) + if __name__ == '__main__': unittest.main() diff --git a/test/test_youtube_sig.py b/test/test_youtube_sig.py old mode 100755 new mode 100644 index e766042..d645c08 --- a/test/test_youtube_sig.py +++ b/test/test_youtube_sig.py @@ -10,12 +10,19 @@ sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from youtube_dl.extractor.youtube import YoutubeIE from helper import FakeYDL -sig = YoutubeIE(FakeYDL())._decrypt_signature +ie = YoutubeIE(FakeYDL()) +sig = ie._decrypt_signature +sig_age_gate = ie._decrypt_signature_age_gate class TestYoutubeSig(unittest.TestCase): - def test_43_43(self): - wrong = '5AEEAE0EC39677BC65FD9021CCD115F1F2DBD5A59E4.C0B243A3E2DED6769199AF3461781E75122AE135135' - right = '931EA22157E1871643FA9519676DED253A342B0C.4E95A5DBD2F1F511DCC1209DF56CB77693CE0EAE' + def test_92(self): + wrong = "F9F9B6E6FD47029957AB911A964CC20D95A181A5D37A2DBEFD67D403DB0E8BE4F4910053E4E8A79.0B70B.0B80B8" + right = "69B6E6FD47029957AB911A9F4CC20D95A181A5D3.A2DBEFD67D403DB0E8BE4F4910053E4E8A7980B7" + self.assertEqual(sig(wrong), right) + + def test_90(self): + wrong = "qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<'`" + right = "mrtyuioplkjhgfdsazxcvbne1234567890QWER[YUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={`]}|" self.assertEqual(sig(wrong), right) def test_88(self): @@ -25,17 +32,17 @@ class TestYoutubeSig(unittest.TestCase): def test_87(self): wrong = "qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$^&*()_-+={[]}|:;?/>.<" - right = "!?;:|}][{=+-_)(*&^$#@/MNBVCXZASqFGHJKLPOIUYTREWQ0987654321mnbvcxzasdfghjklpoiuytr" + right = "tyuioplkjhgfdsazxcv" self.assertEqual(sig(wrong), right) def test_86(self): wrong = "qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[|};?/>.<" - right = "ertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!/#$%^&*()_-+={[|};?@" + right = ">.1}|[{=+-_)(*&^%$#@!MNBVCXZASDFGHJK)6XNiwl*+qP}nmiX7t ziGm5NgiRzy)U*SLaq%6{xnO~S1nVa;QUTTee5m}d+`ZsHK*7(!KtTS_xZ&UO*pf`X zdykIq<^?fFEw!U!Tm3c58al&;OzIihRaKpjfKRYIq#A^jkb5o9ALHkP-pC^ zALb0x+iNmJAZ(-6%*F)FQ{yJzuIYUe!`X}dKvhqV#Gg8y`DK}36UG4r<@0#?qJXKoRCpdLR;TlPn z8mu9$|3tZz8Yx;yxEHz|3W2Hm6fAQafFMbo>DsB{QB4?m9!qCc{Z}NoqnWera-HGD z?opQLa`5Ekds?G9wzTv}y)?9J+R7}}%8~w1a*~fz{gdL z*kZ;6G*&vmfyxi|2bfVvymkICvaW-e48|}rWop`~qIQi7@tKs%RTM^CPX)gulGGRenk25_02JBxKDFPjrDq&zn{Z|Tz zc4mj59tGtj8%b$)jK&Uy#Hr>3mV?Lj#Z>w<&K{X11s+#((+JK+gj{mCFF*^6@?Ki$ zODFbgNqOngOtbADk+T^0Ghxm0xC3&cc@|7=SA; zb(4Xyo_Gv-aqfQ**W-xx86dW|H~)s?-&b^}_59`e{tep8G`r%&fF`Un@Vu7K@k+lz z_K&HsABc#=QOdv=T@E#HG$L}+0Cs9?Wg2y16U!JmkG=woft!&n^I~ zmb-zksTA>t|Brm|M9|vE6I)QR=RG<1FMRxYp_}ZL{hMVD)N5pJ779tbEW|o8qTRIp zj>bl@r$RYFr1V=!8GLHbS z1=9LfY{(zkC2)M}+>tK$2*qDhVVQtLDB?C&eJNEh3I=OUGU55#@GoQoIw3(fgaN1E z>?0;&xZzvyK*J!4v2@edjb&A?m7pG@x!fCZ=9!O+qrcdFkrx7Bj^^|b6qvU9Xzb(J zt3cK56b>jUHB>|NyN#ks%jibXaV~JVzf+tSLFPgP`cR?aVZM;LOxY#>K3T3}jH14fHD9ea##?NOx5X0zSp+2>UaB|L2ObCWTa?yyd?9e7<|*#776~^Gufsg!CQ{ zYxD@E{m^z?Q0gli#1rKMHBQVFy+nFEju)xQd%~OYs9p^Ey#E@X(BKd$goQR5c9T$1 z7mpg^616;bKcb*Q5)&JKMGSV13m6P2&3pU>@siLl5^NQ`g}TradBehybmpxbgpUrRQ1rs|HLgs+~Sb;@zr z>Q@T}YV8*;NzP-O10ySPfuV8+J5JubX3Z-UC*ApfXQ#g`;7oHl{RTTlA3rd;g;$AZNS=0J&d=4^fh;XSbuq{{@#vt_ zQxAq&CwJB++7Y%_Sd|nj`J3p!1UwMTBbEvk3unk&R71cSId_MLEQuIk_s5{Nl#NIy z9Fr?+{c;P;-+#TnyueGEi7wn$Aj*U>ae1D%Ea1|u$=KKt0UFh39)5KO-%Sq@M8c&m zpdabz8H)^R?T0_`0EKe<6IvfeD8UuBJn_=D`>BBbww#BbAax^Ox5O-=HSc;sRuTU1E$TsozjvEXQ?x_ofr`$(5RMW(pqSurOJq zT7zE4h|AJs3UHx&Pn6GD<0yx2E?}V7hL4C1X*!3nG9;}sLN?p%0dCN{=#=7{%#bQT zHEB@c2>p<@S2@x1fv)kwq2P`G1Ub1>COjA#?Z?ZNo$qIrY`sl`m=#4ix4hQT|3FQ> z{5uMMrQsGvupbYBwA6OQ>PU>)jQbQ4KVsckxnLmh4p=^Vr)9~6^P8$G{?Xx>i;Sc# zerw>&)LVH6t}Jca6C*)U`i|7n%s0+6i_4wuD1|#r`rLpVu0B{fACOhvqQnt>Ll#x( z!+c2#4J`}?bDB(xttxkp<2gA{0~@$6g0BL%7Rum^IjBXPn6vV?2fuTrLYn>y`d5b4 zb3THF60lHC4E?X{2|lghb0!#1_cEHn5dv4lKpn$GP}U$Zz&Eek z&fSOErwINmLVj5{KIIq_#7XSbdWc79oxf000fa6P1)&v>irkPB8CR_(YhVzq{=glq z318Q#6~a!!6FncWOEQyb*^EtCgP9Pw@)NphI6;_7#-iSA<(&j~(H+RL~ZDtuV|L_}rM z51a#gJ&B%UqVZSPj(Ir;ty$P|2W&^|=lNDrISpi0cgHm7EeJh40jx?)_A(63^YiA< zH}T>|UC8>QK<}QftJ;WWJKxFCqF7QYB#5$d)DOQlvOH^~NBZ}87=>puGjHhp-WFm@ z8)&C~E1YhWaNvL>TU}t8V9BZOg`1S%0-u*RjIe=0Q?l+yvMGMJhi00_6^4FGL&WB#qM50v2(t_8 zB3W2$*S3WO(#TrPWO2#`#;twUI@L|`%7W_9zV&>*pIkYDA(&!nOz;o;U@=hQ0Zk4U zks->Si-WyV@B?rQ{fvJFY5F5mnCWxjus{Yxk||NHyd2iW=*}$*;#H~-cl8eo5=}1K zuC#|xTR-O*iBer3;b0B~)5Z?z3$MBc6^G@SMQ>#0)b znWgK-HrpA(XWD6@Wp8HM+Cs;!1KYI7A?kRU29%1e|Ei@dHU7e_v2+$s86uy63z)W^ zsJpN56uudK4luLrY-X>srf+1?7r$=k-%Z`hM#$rsiqUi(SgKZeVZO(d$p&5YtOsyJ zu;bLUn>tE-X>)WL7{})0<^?hctJVIvr%}cv8!nVKpy?-pv__6-c99#G1M|cxbJ>se z6p{`pfB6nU%fz*^SQF>Ay(}w*&@lEVcT{j2%4H3+Mm~63j&$bnwu<|r-Rff(`d3J7 z5HEx^lnAWKduQ!M z*0D#aDc!r~HQQR}pXLxjyE$c$uby`suz}n5vRT%xt*YxrXkjL8Knw>gE9BU+La#Z8 z7dgk!Fbm`Kecftlt`DN7FTzT0lKj>#Y#Nbeu@86}Bi=}f+BjAg3&Uv=hhKEGaxOjhnY zLMdy21KA=Aftls~aUQ0X@WSCnE zZ3O#O**hfDd4YYB;5a^Q@N4RLG0^F^U8xOJR;vWPp9!~MiKYt6i7UGKa2?oI&APgB z4lU$xpm`7L0*;5MCicl;sRzn77w%O!Jm$1DA4P1WGaW8$yQe@?ydbW>;DvY$U*{2m z#Mo{P{^>1D+nPrJ!7!R9TsYitrk$C5Yo3LeThR`R=7Xw3>iJF*g8`^YY=}bPGt)l5 z(1O$|1H62YtrqwV!0)bbN|YqBY=U`wAkh{AD5NTAhOrFgdF4jRx$#xFB-VPXW$-t> zk?|ieoo1)9L$=8-(Bur(!6a!y>!%c+$DhbETgB@m+n=`t&Ha5M2JLmjjW$^53z_`$ zV!`t3*sEXA?6VY^Mz<@jw9OueLUACsG*pW1S({3Cw2{k{S%MF{TRaI1g^v8jNW0z| zm|pt#0wdNVwN1O$Q!}%Of{`!Z61kIn`N&(t|5bYFw&IfQ0 z0a#4vZ9%|XJ85^HM5dT0_&!fFk(yb<`98t-v5luA<45V(3 z#flmyV3nMIbziA%G&a(NxMtsDowS9{JcAis7On;7l0Rs~&%L)xlQY(VMrnwR%o0w~ zCKM6PZk-Wv7-;k=SLAAOjYjKKfhcaT9QMbcHe~qM8cWJ_Dl&RFr=dPd&zM3dNYC&# zx8h5(Q^UOiXJY$)7vMn$<>q4#WI$@qGYn6T?VaPVfSof`|WiHSniEPfrxWa1`DSY#)-oJfk*Za-M^^H@v>n974 z@!b2D$wdI#-FwlyZruq9WZWvv)=$M()T_KL}> zr1xT~nKiHcnm2^eLGjCmD{onD{j!udtAwq$f63rWnS%h@vgG|-;mZTl!`0Y=Gh`^l zyZ-_6vfR=*8u=>2Ag0^Mo`BnTc9>?b!033aw2~&88L3mo%nYUu_!f&Fz)7jmdv0B0 zeW<~qkt!nm&W1z-(H7qvqY6GUDc}O zH%{xQy})`$floaTbZ1ERZAzHGjB3U-)q3IWd{fl_qH;{DKSFnhl#g5Ok(=O!z0BR* zQ@-2s!OECIBuMlnYMg?fCg;0{j9Xt8mhdI3bNVDExK*fVu|T5uzQ0 zckTr;R;kYdF{lZyws-YlB_mol_@)@_X$%Og$~1W6ihKilQ_^(ODW9ux9JQvqXiAC_ z!4TSLH=JmOmaAtmp*HJGlw=K;!H5xPP1jYbnVGM<(wBK68y?MnJka(2G`^REebRk& zlOqPlczanAr;$EY`-%eT>s&bR>{j2ZgPBb;YmEtkHkAZZxO4`+D;+K;%8LIoZc(SP z?Dm*7KZ-R!qB}nrBn;P@`-ql#EUV6Cm&M$}*pvpujb%hg-McMg&!VSTK7t$Bv;PCe znQY8v5R@Y629qBOGH1>S!A@-!d719M?W!_Vmr$H?#|!L$p#j=wB|#& zC6d0T7-AhE{4dEDr9)lifcuZ+rzl}lLH%EnpW=@#4@@aPaN=f~n@*%kD5->3dzbB` z(!ZOOEfMu3J9}LiFKX}H)Vdr`-W=Cs`#G4?($cb?ZLxTh&GH=+)+pHgk}9U`>@oS< z(c4>ESN%18oq9YOKp=1CP-sEJw64gUYffq^*&v@2t@j|Wo|#k3!|aOO*a$Duo{ z+d3t64WynHF^BQ>M21*+#jXcivtxp*K-!;SK+-Q`cQ-s^FrF?RQ1zaL2Qu9UD_}{g zL(J*;>^Bel|v5xe--15LD?e2<-O2xSGLs$Z=55j=g^a{~hJrWa zEL(01t6E97UAfoTM(4mJ_Xvw2UY^979lzG^9`3ey zUvsBi;i?4Dwx<84QM1%UgmMg+1)__jftq1E#I&QuksA0R<2E=LvbHPOSW(v??45{4 zB(c2-CF;h?=lJU`oSyRqMHYUbA2z%t1<1P-B5GG`MiX~vl~50IP>#}Tdvic#VOx`_ zwRBvi^mYKv$0Ri3#)`lLovY#g45klR)fYYqzYZy_s;XIcm-U=>U}~`u0f}|_VmXLt z1IX=b!M-Eca-fNMfZ}!ni%S7Y7M@DCPZrlp-~qd2vS!1c!{(G1A(B@ zzD(0GOojpfwD2@Q*e7}YXKrGKS64DC4gcQLVi#l}ZSzVSfIH>;vmjc>!W-?S({cK5 z??td}YK#9ke_?;v0S%&J;nU)wfD$=$GaE=)(Js}1#9UhI(B7u{)veiBY9$%+V?!{O za=(0vh-ln}?FJC{co@llR-zpE+J&!tH%lJ{3$YET%%=Ry9s6LF_KF^xnpU_|i1KSqqzVJeKw^9e;E4Ao=`2L!47#ciAes;v zDj7eYFx3((FbO2_(%+$#U?%PQ@utdf_xtMOZpaEoI6@mDxRFzPvW6#g@&!w*!$?)h z;}E3D3X;_q)Pb+pVp}yIk$|%-|Q)>A4XqbWBsmp#HvyP`FcLHe1r( zqz8tF{{;bpcf6u@er{bYCA5a*CyHR^J$wyaV*k_cW7Vqg7oh~%tP7-Z+j=97CGugm z1|t8P)VkgUEND%htEI?G{9hdYTAue3jT4UZDeBY`&}P|Lk6{H7zJ|a4Z~`(v`Xut= zQ$$=zXoq+pKWbNsJ6woHm|-uBZZtEaA%Inp91|YOT$0apwL0BpsH+a>_i=jT*;dV1 zu97bX+rs9?dg^2NYqcv@V8E7G;PTjBf%_S!!%%us;r6z1B(-o0C2~+gaIDV>3S1z^ zIOE9;2-#E0e!K4)&-2>Xx^2pIZ4pf~xBez;`&`3o!Dj|Fec&cdOiNu&Ob~4Y8)g5M zT=|GE-y4G@iGFN7?dT}VqWoqjC)Ne4$=B0&qB#Mr*uCzMT&A0gvrGr_ZNxURlS`EZ zDJ_%XLEl#>lu)@TGr1E)YwNE=@vST=$GzeRR28LL2(?))R{KNA3#X}wH7~|&eORjZ zReOemG+jbS7@Q+6Gj2(Dl9XR!TFp;&(*wNe3?HSGI4(dY=8-hmqf z0m+dKQbmZGL-?RBgqlJ%H$S%aK798<>mS^1I>H|zNs;E5IFGMNbtT_-c@DD0lnJ5&r$pW7!u9-G8p zLD{sDRMBz~3_@Bh=ioVRur>ZvYBJA~HHRU~k`YBml;~ScJ^J<)eU3 zhWp19YGSs+i3Ieocgxp+_k>RYIkXY{uhlgBun1rDhZJCJ4oy+A2+UKP!UYx?I3$W( zK|}-Wx3vETP#UAJyu9g(Ec?OfZc3~*|yn@5A!-v^p6hsC)U<-*oDcMbS zhS7LfA?ZkEaCrbGWTsh>cby~aYdbCaWbG$MdEy#tpUKL*eox(?s`F#7r zkt?kaP40*3i|?W+q7SW`Y}0qdU9qf{?!RQ``|j}+~F zx!PJl9a`JFF)E_)HNm_F#>d;Re?FKt7lHAcHd&b+j=RCjTE zfs^-jdokallrHg-s`XaA@sica%VVn4>out9ZlKFuVDPhff#~0`qW{jR`(WPMnNm&;U7%*=M?&;C zw_aPP`*N7}X01|lrQY{vsA=-^+H8(XV#06*NkhkyXKiPvjEah?iuH>3b&n&_c*3wJ z?&?IzZ)J{A5!+8uN$CYolHtEaFcef+OfCjZ97ZFJw3bNr3#L_obG4@K^IPo{DGE|> zcbKl~6nhFh;w`(ZdMpCvruH+8DRP^<+TB^0pzV3qI&Uorfv&1csFZRFQlRY&2MBM( z1~Ps&rF@^rEHQpRD3ENFL&cPC;~w(3a1TB3IfEqYn$T*p6@Qr+iwt1!A|@r!GXTn) zSbWk3q1;N5T~L=VzB8DO_BsUF3uYJ{kDT&62Os2z4iZAk6!aMUXWdM{Ifu)c7aSkb%UY~BoM%`3ln@EL2f^>RZPt& zBKJ{61T-EdaopMdNyyNvmbJY-=dqR5@0!pfH~h14%m z_2m2SJjI1d3Un%^lZqPK&pc!Ye#;z!)CmPpW#H3(+^yRJ5j8cE@=nDL<~YKT!a~hR zf@MS5Y}c^#!%cxzV9Sbbr|k2HTVCM=;ZW6i(rqtt!juw7t&1s<@I1^{=wI)uv-i4B zA0%L}an|-ylkz}KMFWZ2s#G5WHMXJ$Hb!mV5C#KF?Xc#c4GXIusyy!~razFldX8P4 zzY>-rLc;>r)e78XxXasp`$9BXE$85i|TYgk^H3clI%XR?PF*u*rb?RH!QEPti*)UL3Dj613^IU31Ja;$-Od- zXrOY_UGXu*X!l_RA`*X9Pt#WNCw(JzM%fMQidcy$sRn}g)j1B=l{Nrr8cUhUYn2qo zY}QLhr#Bq?Rh<|uN^{|WGzYekKQWc(OYE4b7|;{@T7~b8C)99%r1Vb=QthpwdG zaTekZ{t(IyCtZlGYUZ0h7=ene%zA?@Al+jE@Z3U@qRtv@0&5`!y&uJSD3zKm2UpEK z@PzE5SHb}p*bW@RZ0C&AP>!GgsX6n~oO3ISVMIL(rYN!~Whbq_2FLs8>IU_66iTDZ z=Umc!A+196-ZHDk?DNc!f5V&kFTCWObY*@JzeQ_x1pXGa-g}E6Plso&+#Z|Z=yUb%5q8b#G#N$nJ zwCpozk+KlXfl#6JX@heXnktZz{IFtzAhqbHi?u}w=+Kj@>+A5+^Ua@FM#}_-4SS9a z|MVShKj^VFvFGzcS})ec%<(Jv;($ZJpHHRyqbC6N!8bh-0b^5`ejbk!>dj`UFsE^X z#T~~n6Iuz0d7Z*cgW~$Z^cJzO&b0K($vS#jv9Fr=W(he{#ny6}wY5RI&8#hnW&uG_~X^3jaO%+NEXPqIBVP@{hvhOlug{tU$MXT`D`(i*p8Z`6yH!z0JCGvo%W=)+^d!l!(bShe!9~k1i>uy*kU5=%#_; zGTe$&oOHzH%Eq&{#S+!}Tnto+ z1vM#q4BF~1Npc@-((K>#7RI%07&%@m=aufj!t~!ZBU|$(gwiu>{6Ig+zwCT`7%-{@dkr@FCo@`QkZ3{TB%Bd@~^Q?TR&ORPMB9OsDEF`YiCl%tpark{;&Coeln~6~YwZr( z^SOXmn41W_dgwy>D0ytp9Dl7setNavd%S^tE$;Vp#*U5<(AxxVgFrTAJaJlANFk(T zLeikvZmK~&zM6!A&kvLy4rP!xL!w^aGAa@k+=7IVGM$ZJfz3bNN{m#Zj$?L-Y73E5 z-zI>o0(wtM8<&vb-W`QuL?4^VGX(5u7B?`gxQc-}ZNS0FSY9O{Cv6R#DP@dJtZ+Z= zZ~=P0SK28V6Bkn<1_&EyBoH&<24!+3w<0^dYOkn!QAk;Q)vrHNQit0rr&2W3v?5s@ ze8ircrT(+%Ja2>pc{JT}{;TniiFaJga$EPI*>jDT;oa@sN&X}(vT}XKUnM(9o<9zL z1VQ*UoC^rgfH~$?_^zwoL&Xwe>F6$jf|fDcL-X2x!4GCiQ{eQ25imnE+=49a&C-m9 zSpB|pj(Q|j>Z9DK6PZR5EIXoI05(fM!zP`G|05d+*`BiC3sRtB$uc68I7?u4_1HB< z%Umly!n(!y6uUEX$MkGUmQ9u#e!dd}P32Md1@Sy|4e}bmN#w4EN6v2;`-Rq5Nd^l- z-Pt^j^{@l@1l|CeeLb|-kGeW?Q3CoRDDd7OjVhZhZQo?-hYQ6(J@;u-^%h!L%>)m? zdjGSrt--!00-S#9k27$<{_J2MMqR}0+^4q<#n{SL)@sI{Znc=BDccMFc_YM$=_b@PAnnL3X>o;_=+} z^rp=V@UL~mnJgNB6K?+2?1rbKsU#Xf4t|)t#wA`kw0M$#(1Lf3f(-QWf)p*V%2w`E zLmh$SZJWLSNE|eqC8#fiYV;;F72e@NKN?1hb^fm{WRf>Sa&UW7u~bfuR}qhG?r5H1wu1dU+y?Tl9ETygeAzMoO$%oRbu%>6O2To_N4oB6poz}@^N%<$shc)>QMImials!Ql(rWE;XzY| zgY9qBaO}HIVjBX?60?=)G2AI01nhmhfZ27!AuEG=T&E5{1`LTbC`e;sAq){(v7C!I zoCiUaFx!TO<9jpv+fQ3mi_}9%ckqXfXKUxhg>|x(n+0D`_aMS>)q&L?LV=uJ;Lt*T z{2zRW1luE&3XFY_ujebX8qwGV-^pIHwmWgF%4+vvdKC=v;L~+TtLOKQT3*AF4Fnm_*h*a07gNs*#^yCHUC5}~4S3NK z{_f8w&WEm)0?5N%ddv`BXoAW;(7L0Dp+Z1TidwXsS%7L4yshv`^qnaFtBIAQ7o-Bv z)_@J;X)+m7k48e&&>ZM;BD!KeqA_5)y-k&pfprypW+DgpwL*~_3|1th{+OP`0&7cL z8U(@i?e@}|b;avXJ9%fZy82zRP3!81ICVnIvCnov)g ztXw7c9Sk05lme4tQ?8I}_>P8ESFb7<2oYtDk+o#{|}auSVhtP7%K%y1w5*OoKoQX-DaqKk@+G1TdHaGxgSsp;7X$j=?-ETCv{!9d0TcryM&>jA*lshL`5D8`kssO;i z_c18o(eHxl-i}_5N=_UDX-39Z*(quNJegU*idedOx*e6)cZ;)o|Sleh2s7H>DQiY97Q z&uD9zEk8Oz#=c7;QZA^nSo<6w{oUDX1h1lJa&Hu(8%^p01XYD>_#?A!7lDYC*Y$8n zN9-X+_mvDO4p-_5YGq_og~!eJakOR#^|8=ARv<6U8&cW9)^H&1B~}x!XCRrUBK+(M z`VVeR+r@vWMiG6z={ZHxG$b^_m0!58-?Bl>nkguH3*_qXX@1zA8Yz~B=^}a*6YUJG zn;=Dubd!(`cyt9On4Ja@_b{N0C6v16PVfi#<=J@0-anDAv3+zoO1Bm6+K_a>aU5C4iUrn@Xz5A@t7EHIzf^-OeTT z8I;D2axNT!K?9iRtk%>W+%}7@%YDLuuI(X>iG4XIuwPKu!XvgmQ1lk}W=|IIK&551 zY%Hai)G#*)zd6Kb4$Z-2uW#p7?2@MyNY!O9Me7M>lJK>NmwDgbEgWfUGNgI6=ly<5nW z3BH&e%Qsrd_Lg3E41mP-cr!&-89X&9kZ@H63S>VhxbGc2gwA;5oBl3vc^2M=67@7x zHiqME{M{=S79V*dA=Q%IKf=W`vRN>hK^hQ|<~r&_;CwH@qBju*d<00U_k3#zN~Km zq;oDM9Nj<#UJRKo^NJ(V-XAgfCiI56AQ%DuWHyc&XWo z^5}`-t-y=EBT$?a+~*Jgxvku^Kv}2>Tadpl5KbAa8+WoWMvNj{edvkZ>5Hgpe`l?- zBKm#HjkChJ6*ex|45D#t2`F21mF0iqfvGvRWNw7RRpdS~W)62Cr4RK3CE`-2{Vw{bXY zA(s#FRfybQfm*ziGlK}SXz)b|hL;P90?vq(=afs79wi+m-!fYq`-WpGqB^qt*^-bV z7-eKN+f=@-y;9+WmA#&@J7PI+IPhg}f=!?ZWi{dCA?Do5kN}ycqMJ~mi~O4VS(NK0 z^uIh75cNz-kAB65HlXmWYL_p-Dr?wq-(Ps)Xtu>ziyiF~m2>B{D zDOQw}9ynHK7EK6h3OqakiwZGy5G!Z{2rFs@NdgdlkIXH^XYtOlxf^64F2&-r``=_; z<;H1OD#2BV@pxS2qnlhUuftT`e(ut6a78icSk$7@c`fFtgwoX3BK!xhT=~&}dFBAB zoLN?D!HDx$>hE~6bCt*8DUwXWCNL?Q`T~}=j?Pp-3?tQ{eYg8**(oQkk~9ErgP>Z9 zS{#xyN^i)t2$`}grFRga%eC`hu@^^oM>Qt}@7!TNlC&NGn(OH3wj2X#^6n(F+tkAd_hvV_liX>okeeX=dQtL>{?)X%88tye$Q{P zskW?M$3=}ODdXfm|Ifb$cWu)rVc#%9v3uX$5r_mQ75eqfHhYxWuk%YDO0pkMzB*b0 z`CkpSLUu-GJauEHov2PAE4Wv&x*#>QY!A$U+ycyzaRSG?i;dWL;(c?F$^-le`DyE% zFE-qWNOGNoBnef5D@S1ztu189B2!7yj8K}e0Gd6Z%H*DJP0V*>un&u+9IjqZ?Q8IKD+<8 z>($TnK50|@8x`s_`F>+$r@_}c;{o0dwdoDa7O&}SuH4K)q1CKFh@kpAtcl$5#bC{3 zC%C(t%dg!uvUnQTI{bv&tEhUUTHEFpZeEQjEkN0zl}}hEwTD8{9mI$(W&$!F7?VGB z=S=q@(xq%(sSI#aX4YTbX5TJ)(`u?MnyIl~}-(Yd+5$e@a_XFoI{jJ zQrdB3F}EChvI0dXec~65A2*8V&vTverwtD6E*(5e?N&UTV>ipoNtzTaaPB5&N?|@` z!_8X8qW_jABTTtV@y@2;{F2IK7(zn)m&7={n1}U7c|?^L<}@DeqErk=!PJ|j_5dkmk|9`;IOGj4PU_%IwW zaRH+qoSQEG?#B##znM;RqT%K-IA%XKr)%W-nO>jv>rHkipD$;Y6E|}1&4w#aTFStW zKpXhLQ`Ti5_kC&MJJH?VZMexAL>G_K zA5XkHi?akdx+IIIj?K=(ASNt= zkBcDu$xAsCAq0L4Ox2f#e&EhL5y`T2aZhV8tl zKQLtk2CP7e1BLM9LA~V3P8HI4rr0sQPfT7nylKTr zFD0PUut+J}Jda@pP|(hpUz>b$Q3WZqi4Sn1(9YQhSjTT5!Ty09zt*Nf@5qY+LJY)e zny_1$5`d`=aZT*U|A_H}P9BuKB&R$sYI-@c3BQ=+1gt=6qs@-(l?&k?pm#VS3rUeBTd$amzhDXsw#@?NFsv zF<4$%GeFI5He~S{SriJeLI!AWZoYTwYnqv(EP=Y17BX4pBI#r*oa8_fD25X!W>!)n z{6O-3;83gP$#bsxZg4n6AOOw%f2VrKB?LpzOHJ_L#o%g% z^;hm79QWssEIfT2*YLhyFvh(Klpv&~*|>}1cR>*!xt4!!dgZd37+)62j@DDDWls5k z)lpb55_pLbgUZ0Dq`=@o$B0A<1sEj&j3Bxxf&*~ez+Y(zH_JW^HEkX^JL;h2sOT|P zDKa7z<}D9ecmcph1GxQ<(g+%qoev>_>$GZKjl}Z-@!MZHx8i zT9bi$;VV)$s!6i&+K`e3o6_omC?lq4R28!^+f_JCJjxLX+k=47qla9T10X4Y!T{TN z50~s^AvNkhkdi(|{@FU1O0?{XC`CC*4Q9Xl5zIG4k)?wwZDvpnDzzxEr9Y^wtS_}G zk2q40RdLAPnNhlPUU5lGvUk(z|VJn$j6n!_qJUkp&^^unu5yFJbk^LE#({)`h|`eRvR z2($*)ea3l`>3DsilJQjlkV`O$v|hwR2<$5BY#U@~3<0yZT?~v#zY$8A3=*xZODGcM zRHP)qe5-R#(!1(b7JmZIg0)(O;UZ^a%7<@f2=*F70Tr?kjt8s4@fDkP_gZ-!wKGjm zm-{<0B&epi+twQ^vv+PxRnM8A$bZNnlxVy?=2(J@z;)j+a920S^3_0wD1{6mIy2<= zZx`bdgx$c=juK#@)6EuI;jV|_rF~o?EsLARn7M`2hYSAQ;K1bU#E7&>GaL@bf-sXjLin5#BURV@h9*2{t~Yx4d*Wh5qjXi zzw>IG;~;AR$CiXg)9P=|$$=8s08A@xzHLKODFl#K|AOp*;JeBnzQ4`ahVA&05x1+t zDIa`5AbzO&l1(_Q9-!>^onIZO0=vp(Sk~noyCIV)YOb0vS zXVyujz#gd7;dbBxv#Wi-jFz1AnDPmUdw`|LYsbhm3~3p4#XeM=gkp}e0E7_dk|;i#yzk#Ost>=bivcS_a<0KOjzoZHtRXyq+9RMAyPbIFlw1+mJU zag?2jhc1-dSz8s~*m6lTKnBWwQLZa#aOcSuLVrl$Y;CxaR4Z_C#4iw0WsS`PR+Qa7 z<<6aW(-KPLsu23-8Du$Jx-Cx+cdAzAg}r>;9)UrQcEP?hIrw`k(QP%KCmwrAhz*LEOH{!R@mR^!u zz3#@)l^BUsYf^O9G8`2)t>-XGrIg4OxN17arDmD5D78&)%wJD9E9i@rlb4Z)F7-G0 zz$F`;b`e%)`7{`9Af|J6PT$JMJ(K)E=R&_ZL*cxp>xAo0mB;Ii-GRPqeBZ9EM%Bdx zx^<(StQUQnTA0&nK&&;K(Yeys0v|uxKx^)3hD5ndJFI%eWGy$`Z z*-On&Aqlyp_LxkRru_Eua{vP=5jKV&bpZ~Btv&dxbUw^I%aa+R*@G~_gL>*h!I>}n z7#pZwvl7<*vaEt_$g4C}qbsJ*6lRBX2eoWrWc%a~M-tvSKod9SMfql7FhJ3OuK?z(F|a+}pV5(inC=b%h{C?6Wuy9y&w>#A)3!v`JjTqg5G!h*wox{B2E@ z9M{jBo1LSdoxFfEmm)w{f=2b)G_Fbg&f+exfrrvn=q);==w0(#S^wF2*|>-mL&aPW z<&JFACY0{}8wpA6 z3F9Q<*6^WyVAi0qGHmg5--C5p5_`|(pP*RoVYIpuFzL{VaP*O7;eAI|59>?1kbFBW z>A#WPULHPq;SbP+mSk{w4KT$J=Ln?6RBOBC0UP#l#hHIHgr)4B($Ebi%^$);3Wi+< zC~)HI;)a^Nd%u-}>1@DWg12Qmpc=Bd+kE*6WgjKrc6q$dnD?4OMuOoksAVvfAbHm2J^z%s=z%v1HxceNX%BSuByRBouvW5xM7Ro z?QD|}K>n3F{b3YoRC8*{4svDy`M)w-n>did>I9`mY*4-)-cD}xZA0pX2sxw6;sx^E z{lH47c?+K02}$^q3&6=qu101kK$Ym_KRM-~J<$|lC*JW=Nm(o;dd!$GK_dd zYW%5NXkHefW)>-o#P-z^ZoIGH(Z`8KMG-txCh=b2Dd=!yO<0K2sqpvIjvkJsz|M0C zaQSZx}?IA@c=#?n+L0~oxf0u&4l5<|4asN1#5V-u6@FoXTdO8b}@P)Jve z#cWWKe9H4KWpR9+&>#EPVpDuw1YH^{M|?amy5y$~>Pd(Q*gQk<811Taw=3C6qc-#h z8Kk&$=BMI>c}W1sdCC9E&^`8C>D@dQ9-<4xH<^apvmc?CNBI!QzO^EHFBb;FHcPMJ z!z9;H>JroCb^gn;&-86rTeKSVzP5_ibtbnN)Y13*>B$E6K$oW?Eb4~jC8-`6BZd2~ zmxjL?)r*#S8JnIQp^I!PSKfHAl;mxVS;@Vw3p zie&O5EH%(upep!sr*4O0V3Ad#PsVs0Wj8> zYpUDlSk9Op?aG^!ZKij%^lvb&7fyBTqe8aA9pA_u!L!ldL?{_&GIoI}qZwRZd`&{D zeHSR@%ek$$Su-Cd?#-usiPDV474saVqx2?2o+-whTI~mq-JYxFT}o5vE$^>eYJjbo z-&E%KO)?uON9)6I-(-Fn-OlAeetC_Y|w{ zSJJe3A8)->^0U$(;HG3eWop1ry?Gd8*KX@2_^R|4ua|&ZL0t&k8p=k~(AC7`_tuN+ z32kHEY^}dNQFRWGmV%bRacACYMX-L`FzokCIQ8@uBInm6&9SEpA*<;4)Lf_QM|`+d z^_(6nA;b8n_e`@>oquNR%FcVka-vY+lvlE`y9B*kA{Ln3$8`edu?*l|N@YPA`*IB0!{%=0WTa9hc-OG5cnox%ff)5}qAExw zYi^|p0$!Yv(EDK&evrvr^|F$5SGDoOFrF&Ip#+Z;;NggD`Ip*tRlUshxzt;<aE zc;%IE9PIAK1k>;iSTMW}Usp$=+&<9KXtuuHG<`=|ACO9z03$Q?3bH|2u|ikqO7XL1 z5{Fb6-s61`q_d>Z1J{}o!wGz!e*F9dl0xSBGn5#!OVCZaMaKW5EL~)7mo<_vqS9Pa z-PcEj0uMgCs|3`Sp{v!xwJ+4K#!`>Yy_bN)EUAPfu(pE3Z^CU(Zjs@a>XPMqVJ$Y+ zL*#Tu5$j^*J|@{GJBMhk?VcbGt+e^pQ{>>&#HXCMg+u&%C`9h)P80}hUxVfLZC7?W zn^(Ol<-X8`GXTezV*oem=ni4rHgt#kl@rKRU=Vpxvt9Bmw_LhzVz}vD(QLMo zsN~chfUP-j-)J&P^Vu92w5yyyTqWJ_TtksIF6`%w9c=vOD1+Wvo#|bov=}X zPSB^casd3y82>&V1bF1C^(dnS=A|E_SjU>XDc8D8Ue4Rq7sSgYA(o#G#DQ_b|JuXrz;<{&T_6+sZl*KkYX{(2#J~Xfk!Atg{2QOQ2zcRR z2YP)69p?5`u3Uo^)3O*ivr=MygF0`nnJY9rgMdF~_`Th>@pRdY9iCRVWub){H^3jC zGHfesk0&nNY8^+oJiM)B9^%e*he!?W;r)D z&cX4ja5k3=bv

{<&Z+-G#>)11GR{fKRvBYAs?HM|O7vnv)>$DeTU)cblods%eY6 z+5q23#YEK<{f(|ka6t3&d*!XD+)5q_w(T9+wLl%0UzN~$Fa#lWpM6q_RpttHs*YUr zYIE9gg%OETc6b^$E+ACZ0c}ALv)FNRk>(4z$083cLTdT0n3zdBhpj~xhQPQzTr^mF zpqP7hAu1_uQUd{AwkLE$A3eSaZ!Dx%7Vur{a6BnNGSGO;tvP09Pw9KV^7Dh_{lyjO zsk;w+XiE=C3%B~~aQn}Dt2OZblOKGIBq4^|e#yO`Vi{5IvPEc>Ofm~zOam*blvDUh zp#HC`|GEd^-8ku;Bo| z#00B={XdIJSVYT!!vh|4ahFg8RyOT`FR3p53qL9jk*HC+cd9BWjKTpqJ@8`!gT0Ru6sEH1|ugFaXnA10}0!Pzl$JhHPU2aZMD4kp^JGf8>fBTl3j& zqJwVfQ4PuWDnAc*Ep6hsMo^)NaQTC-e0%gS^46Y;YcFTc4;A}({CXBP|54QW#YHb% zJq>vr9W9KNn2GVRPZYxjz}Y8763|@2YWMeFu9CIvy6mI?eHa2qz<+3a&;aHsEI}QT zeEIe4mYo|I=UL<$ZPjIBma84^->L?dMEOo?SEH-wgF|7XoISn09tU88GW`dCA?IY# z=?~c#7m^F*H7>?IRZTA!^m{Zcd|pUbKy4+lSoC52US#kaJm4W3V5N zgCepwc<5`_--49Za43>;}*&5^{ zK~18oJFBLFit5^36x*AlZKy#8cDhQ>I!Gv$t>r@3Jvva$su6?Yjgz6GM3FED;F1#d zsp9C`eT^0T<#^(V$GR69L|zSLusiI>si5LN>1T33$jH3jgn&&LJe!ASWra3 zdt$UZA?H_g2~Eg_#{lT+Y)${Cm8qEdI~;D!g4x(LlVhWkO_k!zu@x}R%nH>RgQin& zn4*QdO6VBWITEw-B6(HBF$uR+-!ZFtFv!~GfqT@|b;s*sGdIEQam!CYwz1(OJlj4< zSk%k3gg?f0)I*A5oZLJ8W?hj7&NDP4%!$e;(@5H|BwHAt|I=_;V#(l*B6`FtYIo?%yrSpx}rYsBpv&ve$dkHgT3K zp7gL)zv2cxjSmnBIt%`jSem}{7oFxK>G}Msfp=rL>4Q>7t+?EAvrB>olRksaAjrC|&v+Z9-MZkmdruc=2whmqy zD6X9<#>L@rnov1mCbLwt1)E375!4AyQGH|1`b|h?oOy@&BZuYSI+2^M}mkdJu+5u zL^7bkH;3Ywtw2a#`fCCU%U=P*zD6_^1ba+vvhvXziPaX8;@2Sq z3L(949g2jJtrAg~8N!7T1}4zJMUxGQjyVz*j za$p+y0fr>s5pc4<}z-w{ELvo97*<#}jOhXCrK$@m?DK9XcxQ z{To##$zra5ul<`-zKv4zelO?yKl|r@a*rK^X5D*!rcOT-ZN`#6qhg`3CTD;ggO&Tt zIHj{ACkD>6;Lqu01k5Ze{&i}0n@s?5(g+E+m|m*+dg(;D#b@8~=URUL`RG*+-B^W= z_pM!vdI9560@#WNC-H=G@ocd*>yzhWi|bF;7EGXk6Z+PFGG>JQyxJb^o9wO^W#_6E z9WU?WMSX)0vQIIGx}#USYIJ-j^N+;}2@f&qZV8Cv{zI8kJFHP$%{Ihl-DUu%HLv<1 zh@98xrhQ>?60zsN=iidPZ-_ue(&Q61Q!bvTRd82Og0QrnUT3&f>k&=b(z-#*bmE=| z@Rl{JlT9VpZl3G;kX1T$_2)*$B!nShANj!a)6qX$7s62PLMfO*$SO#dJy=&};##wx zk7E1y&j*8&Ivbz9E^6AWd;x&@;>-TR1YRlcOY}a;BwS1#aOPk^&8vNW>SlbMdf0X> zQA8>^pr-h~Yw$6(H3+^4O z%#%`_*JEch=NB~u4Rgy-_>5!ylwb?ULDF;yRRbSd$Ayl?RNrt=21meb?bFty0FTAk zPugxV4ve|+66=2Bdh4q!r;rU%AQC4OC(@3vA4+?OcfQ?#U*VpzBme5i4Gw4^EcgfJ zJ_NSnlKJUoq;Fh2f!Giv(s^suk+Vz7xW)+b-zatX{2MJdz>HmJ+)T)2V2xDz8^ix` z?(1b6!lLHsa>O7oO-P2G(5P4?H^Tnq3JRhGKtNymKtQNKcAW((e1Ev4v z|6}ys&1>Va)tdC5&QbBRti(1lDVJR?b=)e8yN!!OuCZasZ@r3MObEp!N)>88zWMu( zhXqJ7paidLr-{E(^neKq?ljiOqYnp-gmC)MwSP&bwIi{b_U5|rM?YU|gI7MCRDE3R z7r@l&%KhM-e3JCQtHAPP^1-#6an^48O$ij|FW*Qh+y0RX{gje!cUWed;)V5~g{7Af zHYdePgQ*|xgo4H_KlwlsP2bMicUpMNtp6l0amrDQ5G=5xatsXwf!qCHq4RKQ=~QKm3KngI<<>z1XwphJv?w%+;ZH9YT=5_`ej(v2xzV8g?1Up zPOkXat#$}jq3a!QYUy$X-)C1XEBmGA%oO|C1bHi1HYiwBr;IhzP__@EoT4}WVQR)M zvF#e0w2t!;MbAlVS(EBl!Jf*1wSj3>ko)9I8}nklF`vcU0&YDLdY-sSR=whL1iXJd zr?1`FgSMQ2C1KsWl#S1*w(LfOI3FeLg{hz-DNVC`VK@;_Kj+5*{GJY8Y;cOsG=j@y z=*zvqaGS_<=S~kQa+ZRQd-hFn^ZsQ9xFl2?&N3{KNO@0pJ$8B^+mh?$UyE?ac@Xc> ze|~&K17g=NqMF3g$TrY5i7{X)0ENVpk2w;nIQ8a(Yk~`kqd-9kQ7PCaht+9ml>vd#wMc=Z=ddDK^&ujAa_ zeB#m?F+DjBDD{T=8cLB^#skZ|>;x=x)!g?CXN}`3d<7~kFr0`hSWx?3;vRs0zitp@IQjdEbL;S@}?HCSvE(wo_^R`xXC znZuM$1aVZ%kEG%ofpy0$fK=A{H5pDgQ~g(+k+S3A(I^q*$~RLWH!i+BNXwr+od=sM z(ds79JJEQ4Jh@ilu%S)lE%1rR#C91pSa)#c_XffEaOeVsLEMr!b>es3q_Y7G&%O{M zBs??uL#5E!0b)4yl7^5a6l^?AkYcOo@lGA0e}9;#jI20OvSoK(0T08>Rs(uzDp@7m z0TgVkR6>sH{K(7L4O4M}Kw>bskg|)kHxA@6Q0r4ANHnEEQFy6h@M%5p9++7SfuK1| zS+FtF*x-xcs>lwI!*sfc*Zbod@HH?uVmV=vEU$NlR#enFE2=O{l;^|0U@=YuALiUL zgU`m^k&qOl3`3�D_t56hA?`Ds5ayF9y5ltHAPL3+TLdN|a+@TQG`|8P!g*7%7X~ zND*a}L!gg`WX6B5Hg(mThz)vp8Lxlz+fb(PfZHc2;Ma8RlHYMPoZ`iz>)GgK&z6sq ziYFFol7O7H)XI$uH;tV`1MURN^kTdjK-3I(%k0T=uL3yfLpdRc!^-_hic z2)=QTbd^l^g9XO zx14z|Nw{id0Ot5{q$prDTK^DX^?`bQU6^-N>jdYd&ryMY<3j06^X{0isR&P0)N2+nt5XJIRR7)ik?%bP8!2nC1qL6T}pkB-j?|Xgb z`hOqjl$Qv#n14h|$@}sSg#!?3(w_w1iqyd}kQn4NcynBgC-$tI?m)q&zRzUty}Oa0 z{3rOw08%Ijz3^evzjeXEf3Dfi$86lc-xr=2I21Jfxwx?)hUh>4#M3tp9NZg1{UWSS zah^qAdk5s^8SCG9g_vITX&x}4JZt=M_>3n6eER(sNEp8yFL`45u5GF8-SXlwe6-*h zD(->u%N#}=_7AYNUK_0GtU(8U^tN#*0uinu0k~E{f)kh;B9X^QpvmiEeelbsNOYa? z#+Lkvy?Mz4_6GX}R+tOY3%*n5qLj!uV~mGa@a) z2k52f+@o-T_3h$k`h5ojX|5_7Yk);x>7WwIiJ3!`j>m~)^&jqq!62Caxs#BD1a$;% z0s7N|Veg*bkC$OnU~i5TS1ON-fmc2q|DhaB$I&g$uUr(+IFo|lmnj^%CN`8$1J-e^ zsW-Lpa}+LMb#|&SaN}_%4Hp9N=SRYOm5n@jQsq0{0u=*fCCNppAFeB%Buq{T zUwfPWyE0DvJ)^#>tSQWID*I6c#SqQS9HzgtUxFxt27!MIG8PzLyk0@!2!__B093RX z90BZl;mq0}9dBD&>%U*!zXHkM0MBOOH-un7#`S@vXel22SKz3~LH%4*ZWAFvK=gy4 zC+cIp%<)wkavRouuOFC_K+z`(nA$7|egKMX1{r_s9eYlwSODV@wl%D1!ZGN6OXzvX zRZ$#oSw;#*4a$T{W_Tr#=qf)l070`rxuU!bk&LQznn9(>`msoj7JF7KQ9Olh+H3eo zX4;1(Xc~ys99v0?+64{)&QcSI?dY$dSv1^VS8_%uyi!W@0zG(9ja+Nd(dhzw+NZzk z??|~9-N${4*VLtWqS}ACIK5sGVuA|>`mvi!7eQT95R|s;n4bwR(Q0&&0lx@KbIZo4 zu?IK_Wz$*a8-q{z=sSA9|2958eEVb;qmQ~EG_nftQ91OWa8++tHi<(<_^d^VOfzHx zUBgaldvMYVCqRiHaX+?b#D7Xm)q{7>$)BPBksTOC+E8gz%(aw&mZ#`1!-6*-vwry#07v!rVQz}fW?Li>NG@H$|~88yQEu_tL2MX=Ex zBl~lzu%#iN&YtnlIBpe_p>DUSYbuf0SvLpk!{(vI^VHJ(gsq%9k@>A`aJH{L zDPa{J8FJ1@sN2rgmO!8tX(Px{@#S`qQk>(cIxjaGQi)pBXG=BpC6z37rZ}HTkf$T)C5GY^lW}A(wm@w=D&n~dS zK zJUUD0dl|V~0jIpuRYKVrk7~zd8T4mpRYL>DK)D{|c6+80a!;!~hFdOer$$-ZSuz}m zh<&`ME%bVUZI#!fl>hi$xPaR`0gR1X2n}|J@?mMtKaR?fPK*uqhA-xpwp%q_Ad3PO zK!ZuJBkS5vD z>{4Kav%_9A$D?Jrl}Ph9f3yTD5866AJpLyGpq-gLO#5ZHA{*|?MNN`9cSrW9gK!RC z1)f^C^u!e#CM;yJqKFRRygFY|!ek4=#Q$Wd(F+5;Jx+=HACL`J3dG_b@Hbcnj;r=V zjrbb=W?v8VSQ@~Jq0`aEmggTlW*7O0B?#Vg619WG*>c}G(q=%2qjIEmd+B=6hc)1r-5cg-SMV?U29I@S z&y>6(A0?&ZeGz!s8|%7{c(RSkUUhB-;J}PLAG`nv94!<#4y`#(B|lR6RGX)A2#I(Y z>%oFw4O=L}Tn#N&p!~{q_J$YH%(Xte-3i-ZP=zh@aZ9ROSBVYtw3W#%iU8HjcaRgA z8yt*wat)Wt9vHJ;<5hHW5af^=8g`UR?~xhO^faaV$PIt5egodmtC_cEm`O&(MRUtJBi6QX-XiyCt*TzG({7G0>*vtj}9! zvu12JZyuCgqr80o{UaK4>`#xqjOz|n_IcRAvYulLAVGC7^~udW zas|`T_?&b4@B@z%tw%|zV=XdAUAJGhg|dSv*5og{d{ycFEQCV5IM3OCUp_;7O;1lf z(3F{jTcHY*QYJN8Pn&yRg)AxvL$TQ_sqyQ))tmW8cI~*>>ER3Fd{5Px;@f6(OVZrf z5ghk()HF$4WiiF|K)Hsr082CqXb)J3UkDbe&Q3V9y9r7yUpf$3eooiLF$*jkExwh3 z-9Fy|1VTcBw6<~1MYQllWL1wiSs|#kY-N!Q2p*x(Sm}+J8xM{Yny@=-*^@IA>|~x= ziWZ85n^4<~E7)r$Am{)Sk4Z1KY?JfjXacoeqe$@lY~=*a0G0}Wfa)^$f{PM^&1MAL zi@Pa8&MlOnZgtkgVi{#rhQ zKFU>_P!!WPH{n;q+p{GuZ@J(SNHoO`L!j@=OUIeV97W&nNBp1PpPDwA=Am66kOp|~ z=$%fKz9|s&n)ue_%^*X1UUegT`a`$LntNBp4g`+gDX{%rfU8Vmsj}6v$W@pJI2_`X zET5j|P6Z~l#sYTIqDUAQpXfY$#;xKBKevecMzn3uEOmD46Z4c;x9mnt6^&BY+lEu8 ztZ@T~(}=GkEo!d|Eb-LJ!WD-S+jdUTO_iq4=k1JCMi!giM2ImYWaP*M(FwmE zNuZ^=G}MhJ+{Y#! zw$*P9~zw!mQR!r?e$j(pi#~Tc$*wou@M^@BEZ$|wxF)# zc`d<6*9jG!hg4#0o^GNk6k4)_4Ek|5ja=aAt^jr2;2qVlJ1@m*l*Pyk0{;1}3}_fS zaFmQj!-b9cMNMbKw=2eeKTYuyVR#IP(A%d0-^VCS(+ejILRs3qbFrLE@nteToQ zB961GDUcEMn-*1BJG4(%P<<&SG0Q65%yv8jP|PbJmButqtZ)zO>o?}}WyND}J>koU zCxAm-fz(e~(q+e*zt8*m2=I4n_*kePbKNQ~jH^zvPL$Y6cPwZNLY8YBGR+AWSrK15 z0MGyN_5OEjT7~k!l{B$yXVbE3w1zCEjF#7*#gscY_i)V6Ft5K~?a+|mw9I&H=RgVx z2$`P4NpG#mz^oE;gOs8gv{`PN$H~d*_AkWo{rb55-dbv7*zL^|{yaGtviHLfzfma= zgVJ_~p&X0OrV_UrOe!D6<3kX^n&6RwVWS5Y_BXXaY>=AXoVD434UAn5S0AUmGIPX;eh; z4X51d!FdN(@MMp-m51vw3Pg@=V_*u)VPQIOo6pe=RS_pdt!neUDw(H_$j#CxJ?;YU zGwGWG3LuOje7|9&SX} z1_S=4)I-WkC*~$IJSM{%u3gFdjP>o%{BHwM{6bl-dMXjY;F3qe`1nYfXk zGmj@gl>zMV#(g=?!5K955z1zO^G`pdR4s@COsRI&QfsReG$Ia7w~%E)nusxQe?!Bb zKU%h&jrlXNRVhU}YCb?eJ5i^u#41dX?W`ZekFqm7v1 zmYfsqI1k)m#(Po7hVvHHq8a3vG!RW z+0IOm($r;T%CdWQQKck6ROpYNs&+NgO&~+4gm~O;iqDS@v9Xs(px2)m;t zrwzQPsP`8Sl&u6T2n9p`7NJo;?p%gl9+RP$acIqAA{ib5La7XJ?!QS_lS>_e!gzum z08v;8Qru}1r-QsdJK>ppy`Z_D@;z^e5aw6%PFU5WJBh_q0@8mh=#o$NyTH7F6Cv(# z-wXsQg*mq8WWu=;(+3rEO|8>no~R8#R3x4BEIr9P%L!2xPR`5iDPF zci-X)o4lL?aAb)ftXXE6%u6bTctUkzrMH+@1z(d==J_@*t-;4bu2D3EtZ1sWSlyTo zD)ujprOeEx#8z<0=0%X~jj}K=lipdUe%dl^zOA;Q4);DaGz-QN*2_9oXwdZv93^{_ zrSDv~D@*Z&DPGAJ$ldEvK~jG1a`&ctza;l>Rf0tU*E9U)7XQVW8~Z91Zl`(4rI+f$ zQP!R;hfQl_7S$5xYcx`zd8Z*Ot1;UUQ>0YQXrwdFV4@0&-^oZ4Jr&i9qPpun&Eyge zq#4v4%LAB1GjHM^8}UWnckh%l*PrH9rsf-bOjkGs=MK3QL1U+Z9Dz6}V)`2!$@SJ& z5M4lWnGNZBIz=)I=%qwY${C4R&X+y;ire7dDx-7_bjBzpAynPc7t<$_y2eR8YXa7k zm!s-K*Q&46hKs$KCSDo^%@Ls6Tv|-<#4FSB3yvh#n(0TZ&$2if(%tk2^zqOT;6xtf z5w6P9qTwa1@TPju%JT{JjTVxWD7&71Noc?-X{1od6-CK^Yp-3JVldcZxaBC7mg$2#;O=V~zKC+N+{FjhpDYpm$tJ)^ z-m!Y5>SLwkj&wDjnd;mUvyK;G6#DcDtsiZrKh@B|`59-jsj9hiL~7>vSpDCpL<-sn z)1Zlj2w!pGm>r*@=<0nTft07=>pv}nz`kKQu}hOTg&{&@=q7661*zGg`okmT5&*q# zudmmmOx%zmiVeu*o~w=AR}Nq~Qv?82h@)2vb)g(xEV#mgcLW>{u}KX*oXwNl8$m06 zc%Hx{hUMO>jzjyxCIY+Aanw4L<9A-Ib?&f8$J^Q?E0){M;6s5JH91?5apCi7ga%G{ z+clYuh_;C-aAgn#MS#4L^WJck@s+`&5y1k-Nw9G)YozFVL)N_bcyB4UHFvMzPPUmBO8kQ ztW|ey4Z_#8mFd}QsYrp#mNu|4)a%yTpd7D@AM+`(THvfX3gPg+2_o|7(wE$M!z{EK zLkEx3wZkY2k8d7}G9FM2KmxR`*98p!9Vm&2Cm!qe!@Q@wcP{3^gkEiihxEVT$c4w! ze>ie*sb3JWEJM%EwU^HD$!IeQrvXKeez&(4ifhYI`uo$BSWMchy%ETEKU_xqkFA@ z9q01<&jC}u`Mx_x#J=Y+E3TxwW(VeArFNK>G#ludZ7K@pA~9fUD_t3Li-@v zR`JEBa*gNJ`^+*pTooW-z%zHI@WZ3-NdIiJEwXxag=KJ?*k%;^GJ;$<=0j#KVJOKG&d zW|LH&-ativmk=&ofv~|pZpXm7O6?$Qy2L+DKo`X3S~>7$GQWWNI~QyGHrldA%pmSl zRQc%_rDqQmzAvnA5~j^J44N3@=?YE9bqw^;miaMpT^pAE#6^144^opt1NjE#=qXDuCs7vtnPzGgCUm zXztK0tZ_PP6e6H0L}&En8-uxBlU2*M)r};~4{~$={+ou(g&S!73qleBNh$`DESX1> zBYxFhw4MoZ^@29c$aTL3hW+)wHk!T|5HRJhSRLlvXMlQG!jT17I#7E-cDgibTC*gW zX;3=luEFyf&qfaaf5WEP2Fr{UMQ2YMWi~_K;@_^oz#!8uNm0!TGf1S?y z|5Wlf=~d}%bds?-*(MRwejN=OTAUF!ub=h)*ljF_ka?6srt9%W^VvcF*}Qb26C2X@ zQXnVXFU22!bw*@FkC}NGLY=h}{R@?Le`VVcROQe>jTK}ae45A?+`L1lz_WaW(gm>t z2GVLFISlZu!Kbbsg;3Cx#k9i`w+}0I(#SQ9i-%uX8Y?{z*42(r^(wN%zZovnyQcPJ zo`|al#)(v_8xl5C5H|kLbV2f#d*3lYfbph_Bsw?5jbAc2Dw6#*GNg)*!BrUk!*kiD zRF(Q2-SL2f=|w@!I@=&~J?kITVY$e;VE?@}S|On6lZ?5$LQGR#Nj!TpQnX-|9{rr> z6Kyi|6UmRKq;gBAhGamS@QdyGaPqkzgiRzAPCoc_xM9xIyFg6SAY)W-Gm-YP+;9tb zjDCy8D!`$~f3~>-5+AU8;GyJ|_@|Npq0y zJFP#Ot!Im`l{+p_XSK#HSa0K!mW_CQ`_E(Yfkh29nHy#b!x(DqB`yQ zFY{@VT9~ciHn0!|9o(9*RP!^KR#j3W9*7{7If(%JB*3#TAKC2aVjw&x*ZH6Z|4CVG zkc{LED?@9Fj#fh4tjaqaBV2M>R~0Uv6BLVCJH+C0-sY*4JHgNadJz4_>7k>PJ&r^N zy+K(K>I|P^h-qLsV+boWM9jB*xfc`jf2S$p(|;W#MqxWkts?iwiOwUEp*xYf&@{ZH zqjjkRSOh6En1RV1^uk&>n-U?F>JOExN7&3=>hxlae@pVU+y zw$j7d6&}rJP?3HRqnef7lj>8uj3LS>(W_lxBPOOFOkpJXQgi9gErO(oMoIa&_*o>s z=s%7@E|QDrF~`d<_mPoZIw(}Z$*|E#-a<74zN+35z{Ym(dqVScv56}g{XEvw%4X{= zoD~d?5W^*p@tSTRW0b}V4^I_ayq&;3Pc)cpD&Wvs2iuzAvWWg@4x>!BZXqNK;T7wy zWHh$nQ-J1Pukxrm1)-=I?QZ7@!}4_?Gii`H(1~i@-sj!YmrIJAVzpEk^Nk&Q5=Gep zq-D%5@$)VV|I8P8fG^Qvv67H{P%3o6H=|7(x)MaR0+e@bIpQgN#e{y+Mjf zO%E-+Uz|@35^5GPwWUXe=~+@Q4S)p4gw>I3G)kD~R)0?o$9FMs_DUV9u`Gqza|p@5 zH&XD#xSjIn*Fvg<8tS~Lx9A_TJ6*;CWE`_BM$d^_+#?t!a0Ha09oJ?xaAF{z4waFY z$C26KSL4uOcq%tcu~}hwk?1`@j8ZNSFGzZYY+VI&Nrr%lks@D(bNv7$AK zqdk|}($!DwLug5~i zdJ&}0n8@M@Fy8;jh`?MRvi)Q@?^O$L^R@MBLHVEGq1BJ0M0+b1;O0CAHfGc{?N8kIcwtc*=^rwX@!vkmlP2uv039D|5 zIFka%x&Q9_!fUj+mF9&)+w#T+Hkyyh(0611u3SMx`<+^WK;+gClhw~DXfj!&#^X?m`Equ+ow!U#WJCWOEG;Js-F`j{N zx`UY>*ME1fN%|7M!2buS-bPo#(!~ZLn*TwnB^(eCNwQHVR`N&;3g9ecS4ro4X9AWv1AXIaAJ7|-A4*UP; zddKcepk_@tX2-T|n;qLWJ66ZIqmFIcwr$(CZD;bFdC!_z=Uwxme!{L@b=3vAr!(R= z=Z{?wxn5&5_5|wtB=cho4s#syn-P?RHh+=q;p^(D{Ozi36e;(wKb$OPRpR}fom(Ml z;e&hp7m-T?&y+x7ikGkXKcdjPBfwSk?AC#3bd77ilY)|K=oYzzWV3aZ13!s5P;bR+M!G_ z;btY~4~hp`*DkquvhUaEEK`Otks${Cc4lU8Dk>EM3`5G=o2u6<%2RL~ixoXoYhT|qgMO(8Id`@O~z zZdoUmD_Qmn7_dS+;&m|Z>H#UqB0J8(t-d(qJ4#GQPI%IDVNB@C!kJ(@!p^Z22Sb=i zWWFrSzhhLWbF@$!_J~2%QT~KEZvT@OPQkK!S8JaV0eKoBq@mOx0bgdRGubpV?aK_9 zr$C(ZMSVqSw42Hx61E2~dm{I>uqfdu%`Jtc0pp0#_UNl@tSM1W%>jri;a}#(6b|_^ z3&tv_BV!vS6U8AIJh2w54F}feY!$gVb2T>uzm}Lq$}Kv{dAumn6{GH1N!{H^H>Cci5YSWyDFj6B-gJrye^x zYgu!+X4#sgtrD znkJ7OEWLD#Ds>U{tauMQ^e}w-$dmfN?m<=?9yqI7#d>8`w$bgz;p9*EMXJcAhB>ur zie4v5(-eEXO(y)r3gp=m{8(Il8`2J~LZfhWo@tWFZ$QKEOk2(FrgIna&ZeH{rLiro zf;ngnkVW`-{!3Y5+nO1lYBC|~dwy*x&ORFv&eaKpl2i0&f}2xT^Fda_M8Wvf#QpQt zMt#UiJ7NqIlRpY8CS1ZEmnGK4ztmMWIm=(zD==Ff)ZQ(^RXc4ms!{A(;WCxetBooPwqAo6|_bERpV*PhCxHmFmLuZATLjy>Xq(7m1k^^yA~vz*6NW; zQjyKPq|}-0GvxO?_V2eJ`FNE73aC0$a(y%7_q|hQb+U;oVN|flGn@3rjmm4~b~kMS zN_MtDr+t5WmX15Wb*v+Q!N`^d#((4d@8+BwMGk_VY-#|EQSTPV4fbClZynCXEz6KV zKvMDDNtFMuw2Dj(PrLOd^zZF#e+hL3OSINYJjRJX>EPjzZX;=Vw;l{Tm>@Qa?8R?^n;baUScZYKB&%XBpe>0w%GSFr}dfB!<^lsPvxJvNv+BU6^H zY9>U9-EgVsjEmeE@5J++#}bH>mF{2rtRDR@y9^(M$W)Sd{u6S@?f4{H+Vo5=R zDoG`YzEuzDu#DhDYB>nTYp@cqIRGIOPYDn!iKpBWZE;!+CwUr8WnUE4>_hYF<>kfE z?}ztdtGg(PGhLY`t!wiAS^%)+mh&U7CkDZG5$$$|{DD5x^R7F{H&xcKY1i(nJ}-)t zAMhBY4=Dis_Wfq?pB<)ClEeMMrfwj^2dt&@3vYYc)&~A!&Uv@r!_A<(v{=ic<{4wP zd3G@y@c|HkSHFY%+u`+YO2J!PJjj+kl3(YG9lR`#o9Jp%o}7res`+1}<^)QfRPHME z;TAXecM`L6s$cR!TLR+S$BrbvnM`%Fef@59(hLA>n%6i4k??|3fbgi~_TRO(Xjbg& z7Q_1>u-Sq!775>NTd)mVB|_Iz>bYqIanB@lBG`5sE|K zNNu>fr1J`wO1XU8MPGX#@225Og1ta+eStWmuCrOyF4p~>=#iy-sSuqcl8HLqJokh_ z#v}kl%U$We)jO~B9qRm-EFEVAv>wxL?$w~eLfGKtC$s>A(h%quXW=XwsVp32Piq^` zwQEMae4E^d8ECsTUal52K6sOb!W$>kLU%SXds%9OUNlLW^yf4`5sFq}pDPa_{M)?m4iNYyd zDna-@=tDpJpweScSb43-DKEd3V*N0PK)rdIZ{14oQ)(twGS9%#w== zN{fRpK+AbFaIX`5iiWDnm~_y+cp^c`>|8hmbeS>ImGjIkqC6@gSV#^_G$_AnUsc*d z)>d_lFu}R;7s#3hh;|}NZ`6Shh?*6KUX{B#9A8+tcNRKrRlA3{T0SHFY!v`OLu|vG z`21~z7Bh>rUFMCzG&YFWW=jL6h)KBMT=@lZmvLF|;C$v;&8F?Ox4V`}_iEVuM`%1i}+q^)~AQsrGLtW`-s?Oy)q>lcWs|Vw2*2648hx3q=75la=r4 zW4IHuE5bY5z*GV5VH1~yA*K6kozb*x)EX@x&-~c3ta5{)DAizLQYv|^G~{?nVBgUQ zH20L4S)R3ML_cT!;Rw;BjKhBifIneMZs(0v2Ll0nTO!feY{1ubvm)R-I+n(KETv6tWdj3cRfr zpL}lu3eq5;V9D|nAei+xS#rqm7>>`va~mKLIUqnl;o$!Tjdf7|Z)lAE@0H?z>VK#` zyj66q))`T~pQ{o5h}#=83uWtK6@{h7DFfk~8jML(V{Nz;t+a*W(v#-CyJ$um_Zf>I z0jC-HPSc4KVR#rY&}WSA50vhwoT)qDFerMc9U_ktHmSGi7-SN8EhR{Xg&On%hyW^8 z71W9XByYv2eNwJiWL;>fEL*z``0aE~D6t2|^ld%yXMv*=WatYy3hhFdc%SX`zI&f; z{eN4mOCU6tMc)%jWA9gY@&NB6Lz>!_pV#t~?mnO2mpF0@cGZY^5-4^cXxv?BT4P9@ z42%im_#_e_`$!#dzxy&?Jd61b3Gl!gFGZ@L=r`iH01EqSax^;l$3Av2VD`odJ>C#K zIzEClfO9;~ff;ug4>>?EFM$lEq|%dRSy|?=0Wz*r-vHHnUTl_D@ejP%th2o+d)>1A z7M>?tbAlPAzopYAcxDrgMb;~naH;Zg{?2XwR7McE;^>k=UlShsR*tM05JV8hdkmGjW{Av3$+B*Twd#1~W`3ilS zGUx?uaFdR3(egG%{cDF6Gyr|BMgfC(bLhZfgq@YIbKq#a)1XDRDMZh`uq z+i%_UFZ#yr9lF`dq#}^dV%$oa@3&jnt|e@is%86*d;@Pui=Oi;pB8aSp}loflXgd_^vJmOM2DET?eHnG_llQe( z*#84m{728!I^_h!{sUBiBK$W{F;$NY_g~x8!+MP|6G%*Br@Cz=_8Vp*pIo+yX%8bZYr}0zu zXRrK;z?k5O6J!N3sbu`oVmOJ#v>`tshb(Go0Qx#v{%(#iadP!SQ3XsQXVcwiOdrI? zeRA4_1S7nwmN~}U$jFhs8~o?E7@T}^zVkUpUTo1gt4TeYT3MNd?LMO`*No_BXzZ`s zGb0E5udiMI$&@=}W0$uJH*UD7CANorzJZ1199vPaw`^@-*PNl=*3CU#^>iur#dno^7Swe%Eu*R{D}d(s58#FB z8^-d1nQRQ}R9_Hs*8K@z_FoRDPIEmXfFU2hUy^x)UVSn@{>J+V7w{Rk+#JwVAmR7z zGDp1hl8Q0f5TLP08ho!on_-xae7Tc6u%o>F$WeMSa;knj6GgEb8luSF7B1t3A>soc zahAm3@ds0?zi`m2V2So)h|NXUsqaWav+f=#{t{R!FNS^M;^Hn$SJNTOZ=quS1~BHA z9W~Kl8Zo75WT);D_YY%x?yX=+rs1)o-gBQp7DsDL@h-|!D4Tn8Q|2#V9V0FE88ASo z#m($r|sI)Ywog{kUIvaa_QEU@%^smd@%dvWM+}w4oitp4v`*-IH;Rbfe7(d{emvsy^Mc8yjntR3d9e|H~Ut-}2 zuCs?GJ`Ysw(we$*WaI1+W?07p?4OWMNtB+0g)!C9R77OZ4nu^FWv!}r;T65qnWcN| zdu9K?@lo-a_J?;ZUak)6X6UJ#UU~B(q1Lguc9~x@2*f;p8>G^wCAB6g2?k#2d0zHu zSARhy@MPgUIaB*LRfEG94uJZvfGt^h@qA&qPKfkRG$K_Gn(VBo?9}>J8=*a1XF#LP zCbn8+QO(AU_C{o&S`}1LPuIB0;XjlKJKA&7T}ew0?3OTO+A+F~cbInJTCf7Y;lw#J4rsAxzK>p@IdjUJy%$WJGJ-~9~?nZmgFx>qQx!3Ky z|6U9)!{^$l9#uXjbq6I_p>g${ni045KJx-b%Zz+{W@&jfG()F%BXhV@`+mX1cDjz# zvz}-wE#E$i+&!OrCBOppL>Rl<1Iy}UUvqk~i%9@i7X;go^uaxdY*<*kU7Dwsn`2Ng zko#w|Q-04IF*3ApX3LVQo)n|O!Ly2lgRkALki}dYmbv?j_hW07s^zZrA$v#d-`L5i zlR0Bjnp1ua@WOu)$LZUTD%(x*KyA*lpb!Mb?C3(AMGiz(s zAH^Yz5E7TVC;?tm+Q^xM4m$5JWya?gS1LG-={D*mVb$9(ZmMOJ>D5wq)9T_Y_9PZ3!vJxT4Hn%%KvU>FQSK^+kHv8B+i}(7R7nC0^uRt9V3t^d^jgA-; zFve-%_Vzb!PGnwK44TnP3QD%;pdc}D0pIE9Eu#*)Z^R9?SXsoE%Zya2CSX`+{$oW} z`DU!F!MZ_Y=^PtzoNH~(!iL8V-bE0Uapl-6hW)%Kbmk8$H^IOamDyWuE=T29?Sm1q zaihhVEbHH?SYDTnmGO|;wxaWr*EcQ?iJ%~W&NIy~@+wu1@Ikm{C3=j0>?*C^AoIl=WGZA}0JqSA zlTfDTZqKJ1ow?p^v^{ggXIR2T6~WqD z1cUa0h#w^p4HlnRJ+Qy~{tj*tfZt{3sRrl>85oa@$r;oXc8+*lJ_zyL)VFn zjYuPv8Z9aBZ92_SBxW6j&q2M15r$DU>#LS>LsIfLh%zfnrK?J_fh)w5{a9uUGg8_I zv4gsO&JEtkK}SK2HqiBr1&K>2Mhjs@_#5s&JT_U22mJo3D%Yj3`?#?L0LdOYIL4Uk z!i`HKR+M2@Em(#Sl0Du*nm-K~0U1krKCW|$JB7x?y7I_J&;&29AEF}6z#IYaI+ z{MXsYRNo}trVS2YXlrO~Z|&^#-w)ycF^K$A)pg2e|IeU3^MeL80uMU}nVgx8q}iTw z%8`@5@3~<{1m@G}CyI2i@Vs7k3S<7>w|VpzI?nLC3N}ef1Wyi`2cGZlGA)%PD_(d| zN}JVzxbb9^a0A2=vHS;#Qv`jyFSzNF#2>8Nf$OUvl^#S=Jft;D2o!cimW&CVmwcj?{glX-n#ZIi_D5fFii%i;urEBrg_xC$dY+g#H!V@?dM-=mvRt|y z)a$wp8BkjX!9Uwg1EKp{$BeABPRaFD*EL`U4Dc^Q%tGR^0L#B<6iP@uEmWC?#zlXz zLy;xi|#PfuR+OM59`uGnskt; zTG}axr_m6%P+a^D>e2F5pu8_!EcVdTCMOE!NIR9Ax%iBb;Cv`-gA;TJ4(v~nf>hXA$^}RNjN^4&)&I}+7}729hTzI+#$9{o67Zz|Z#KVS7KZz{Yi|}K;p9azrz7SMc(F}8 zmV8t3lOy$RMBcTfiQQUXB)^Q}v70^==P-ABTYBCo&rJZubG>h{C>qvDY3dLeuG=eHHmrTxg+(76ut>F_W6;$+Qj=HZU z#*)x@H2FY+M9;2Tn~$TAHFFz?ut9dS@tH?^{s6JZ#t7L~-Eu)GRWkP(C7M!GG@h7d z0m?=LW_j7AmXRx%g_CGP83|hy%6G`i8WN1~(R7jxIIePWIAhr+M63$ig(#r>HSX$2 zkENtEdZty29u7&ZS1%$m93O_?%g4h{j-F{8#aKUiaHErkP!HV}&Yg!^+Pk~EO*0)X za+A={mWJkFuSG!4XiS_Wx`c}{q5$us0KCwH%?5xQH_wgvA#y%bpM=|R*R_{;=ltxC zmX|HW%f z;!i@zN{%H;DBxJwCFXc)-03H8>Nzgs`eE*zOkqe1Rjg#g0H>{kS`?)VNKN}T4h5y%C)eY~TCyJtuPzilL!0@GrVdu5ahw!| zo*uzfdtmO~S0V+Q6+4iX98G60A`uA$F^5m5YbXngS&}Kp%&CnUv}Bs14`a?}lW0e8 zpf1>h{*zGib>)Raw$YQ+qinoXC=zgas!Cnkusddg0xcJfLpR&6jzg#nuf=#(pmm|obJ7E`KUa!U>Teav3`YG+XwlsL>5!C;>Lq#R zzbXpvN~o15cbQ8Umk{Lu%hXk*^nZ#ALrv^xNY0&1T^P6N;fm&388Gf}c&aN3ptYeU z2mx(@Uxx_U>-`I|+VjRuhjw`9MKO^pz}G5f@NXUJR;) zD`YR|{>Wz=XSa~tnq(Ug1lyboHb>grn)X&Q(pz+Pjn>meVD?LZTk3#R|7r}}+XZAB z*^8xsZQf^fRYUn^>e4CN1^?!0?9-XTS0&zB!CoT$Bq0*-n0NQBxy@T)R;2sr%_8oG zj7)UhmhWSB#*qtxcF9|i#%~tenc~+4@4pjG#evD&<87TbU+I2<$zTszA{F;dqQX2> zFp*JRPpO!;&U^K`(zS9ReQvyJL(&xldbFsFMQSiYmo~@GjpyZVF zECbg{YZmbBw%-$kMI%@RPb}7-RrvnOG%T=R;Qt4jDA0Qp*2BG{R{Y_!B@@K!wJ`z$ ztIrkxQ~#sARBF20t#kg@ZO*G&=xKGkL;)nLsw)&v6fhkq{JFsZgIm2jDJ z>YDv5A+>Z!svQ9$lJxRI-?c9u_O6Hti(HSc-rdw?&Vs~ZCeL?NFSyZjt!9N3%wL;1 z^W5+IXKox|fF##UToeUmENfWo?}nkMKB+p!N8B#dkz7dREbB7A(GQpttJ`wMyRwmKqWFsyZi zOo-f2W+=)?Iit(>nRZX|gqh8zLVVX-ZpV#xF5iSqg!Sr?Jv~zQAe#Q#ro>*2@5XD{ z6#iaF&2{D){yo4j8sd4AOus&-UB)nF%Zf=>9W#00PbH{DdIG3_`v&%Q z2R1w)Dk{oTs6}lrxLB%#z+Y)J45rrzpSB%%o%Fi~;^u@&{Ec7%^XZ+U6I>chU%48G zz71c$N@R|QpAR?c$4f%LyQ{q;<w%c|Ciw*8S_&{DwU2ZZ*|DJ~%I$Amc>{ z)|;|4fsabILM>nRpjRY5&WUl1o1?c%zR4NT6^zbMIU#ncG?!1g@kYv5mmS+G!B?FQ zu8FXE7R>UV_;?ctf$3=;JtNT;bjYYG!i$G~=W8wv~q zpW4~>@_u(JnR>|q-|RirBp=NAdl<%vvIhw za$?fUMI*><&XK~4x*j=-_bk|vdCmh|u-%EA&0FGZ3^v5zcI_6fVqnNbYEbT>_9d0R zawiCXjDp|52Ga)P+D>w~OLY>lb({C7kaxRR~s5e{v@o{a#|Cb5+xQ6YvSV5JkIljPKJk6S;uPz%y)}}j`HBEf`vp6N4|~Q9 zczHSO1OZMgo7~@r5F_gh$fPea6~gLW_N)G+R2VH`Mf+rU7X#SjJK&n`;HO}ltV9V0 zpt*jqGZF<%DFBq>h#Ne})n3407zGg11#RxF63UL*drA@I=oT9pRYO2NK(_kpGyA+$ z)K?S{=8ou>295e(bfMp9nl-7=_vm=GYQ}k)$Z?<9q>Lf1MdpRg!XR5z21&MzHlo%Kfa--VGM8v z39*5-)xCt@UA^v5lv#kMYq54$=F*l%TY+%f8Wdk}QGBcl#tQS6n$&+{oM`Y>&we&P z*`c@EFdJGtOK2>PK#FY5nmXWiy!zIQc_36(Vv0dgzA$z(Jn8p3+ZRbE!JF;#WZ8ry z@V5g%NOIt z0N0{N1hc7pGPr7rF|7$5d{7PZwmz(b#xgrNVN1E>)WsNCPZPaFliaZwy(|h)+Rzlx zba(S;h-p3VZ*QpG@7SRQ`2=+gUi;GH)F5~MFRngde<2QwcZpT(QS5_04uNXV7febaZ460P9QPa*kAeNMr8-o<#OeocN zY^p~H7QMd5aPbt#&KLQm{Z8Bu=hh;|U;O$~tu@5cs2gw(d^}&(eQ;Iq8Tc$URW3sG zR!v(p8W0_5fGt5vD(s&Y+YAJ%PK_BLbCLyQO)Hi7r=4v*8d45NBl)rWa@+Z=x}rVP zYCgqyB^lZl(zU(CfAi=`9;;RJTTX33Rl~RSIf@%hnJz;J^AQ!dUzaA_(0&w(^p6xyYS$4-5RtaWNt)&2Fjit0oL{V9Gb}CmZ zmnqFZUgYFa4X?<&T)S4@^8h)v*1Opv-35?#N_sCjQ)OU}3A;!xj1-$8U2}?@5zf#| zBNS{BQO4y2BkHdi8=1MwbG^eu69+()xs?rVwYf%5z0ysZ;DQ%aD0eitexaY$ zf+~14EPg>nk-lt4pseMx?T%0}Kb%fcc=-M)GQ{F?>H z1LE@ols~vKUuH` zf=%ju7-t7dO;U{(|tz@#OZyI{HYphPI-e^E| zM$>kLYW9X1?|FV;Qhz^ncnB7`xTfxMga)V|kAV-fXiJ3RL;8-P38`CJ16?cbCax2y ziHXdY*r;Vm1XzaYB zht-c1o&NtOfSov2KZ=RFb^!Pk7DB0rS!U6^#bR3}gA1}e-Y^Q!@M$MS?D?a4_F&7$UxQy&}d z7=I4uwt7H)$v9hhUK3KQ$(w3R|4w|;Ikm-}>b#0W8mu0x^0T}4acjzON7cB;h3F)} zs`X)c1VV5zAcF#YNADP2@PIeKRQikGmK{xgW*8?l0_6xGpdkf}!~Wl|Mk z*c6C;UOT%NoKoeukp(z2B`4^k|FONXkV#RzC=lqm8oO8kj7{qCA)b;BRF=785qg;Q z(8jd<0L+IfD+tiJ#H((mr@^$yZrX3)SR#O#x5^stkP{0ytj|7?N)4q)Yz0@>(LXRl z+}k&h7|$fM&+jXE!7@Yf>s#CQR7C!@BLrm4+Pb?fdX-}SIko0*6fcfdD7hX_F>(*XeV zGtKnl22bDb0nR8tKgJ~5);UJ&j0W@qe66>#o%dGC2>y)awSh!OqkLXsks%=W%6M!> zSH%pnNahcD_+S0Sv>)L74Ep#4@?OlfE*(y>Th!ESZkyf>cg(Wf7CTP0YZ9^kIB6JL zMvX;d@o+O|8_##g<`@21vGA3*=Vkz1)62FwoiP_VpK>^PACs(7xU?kjmOmtDA3VL+ zdkxmGm!1q`JWX<8aG)TFdupRRQ&(~1x`v#m2cSu}kc_K2>(1IX;PmsC1y;a;miD(e zdmwtYa1-iL6#;tWDYANjw_&ilF$ML+Rp(Cdhz9T zlPpQT@<6j3|0JYCXkr$7Ol5zySs#-t$B+>wB<hC_z_W#7T26lV4sW^)P4NE1T;{y2M#Et zobx3=wwbqpZAt79(#r;Z&hYxHm)soVE-x=*=EoPH3F&(kr}Y|l$DxwgfriFs*;BP9 zn~Pb)Y=+}fQd2ITI%ynyflFJAkAse|s=9fHN4MrbXwu0EPd1IAY^Dw%*wfPW{*xy^ z4x&>iN+*87CeM|CIAV&?m3fH7Y_UXq^(S!k3XgKskhejfB5a;ugd`Exxnf+6b%%^s z#))eXZ^y|BtANmNOywxK0EC+-fRkwm+xQ>n%ylJNCSJ(f19XN9!>9&GL<%a^z~73-8bJjI zjIti`OgB~`QOZ=~u2hVuHVmI%n88Hr?^EV3#dn>4;LeFOqdt0?XDdnu-Up_CxgI(d zuNuVgej*!2LJ#YXGd?5t?!88FR8P6z?bBVU#64%gQu1 zO1ZcEvrI5H_~dFtu24Qg96}0$Ue6DFd`;1+(`Cg!9!U8GJly9nlyG3*sUNAsjA=Rd zUObwY(>H{NGQ{pgMMg&NKL)?s63v`2A;GJ zrWqOovYYE8c)e4q-q#Ww_?<0nZJfD-s6Hyi1hc{= zB&2Em<|qrfvaD75dt#utb?k1+3V&VCsVgsgFa(ecWV@9C&#I-ha+yLv{OK}9EBm53 z{+OUDoULCUL(q7jG{a-2U*mGAH4tIeAtw@j3k@Ygs;jb8zSLtV+I&05!0li$FnVKX z1(4W9DMS2TH!nM*>L|;N|5#T^F7ENUNstS8QeT>GcV~IG0!pMTOU8SV`gVjETlrgR zWsKf9$ijwWT6YsuL`PhXhszv^;|B3Oidp;k!7 z9JYiLuoTLPOj*D0VCR?+_`K!vBIf4_V@nZxHD32m7Vd;1Ew}0XGJ-b=IhMcyfnaeI zR0t4&M41u?g`a^9Bj^iKl1Vykpy3KN2suKU8mKl_cu8GGfZyk=>S_-x%tEz%KzqD! z`UaeFe#f|>1te2=7vylv^8i^&G7T7f*j!;l{n35h>`{con zhGMc}M8Tk7t-AhC0bNkNZpQ1cm-A#0?$TI*8#;L1DI%_Y^PqkkvT4L`xV6Hy=zEuo z33*vPh#_mD1#?(DFfT8n2F(0KMkdfqPJQ);`bUr;l15KWk20WGoC6aHeum_|`9C0} zCGS3t=7)}@6GjqzZl&g=D~u~#rvVHIU1u7-k-(4U={*0qIHy;h8Ww@YBr@LW%L3s5 zgo`t=5u);!HGMK&EXntf>eW&DlfFTqE148Ewoed#9Zd1|e;aK(n<#kwcb>!rLm5(p z;>zv~ygCLK#<8HA;Xs~F=(fQ|R=VGM2jebKgIPo_ki9QY6|Wb%&{Ly4H&L)Lw#xNE z&n#`y7a&~PPtquWmbNS0jCPsNiiLl2a<~yS?LkfORuoY!7rN14JD-qd^F14El%ozL zGpiOHQq)}j@f6S(>1u}c7N;LtH8K!J9|Ut!_+Go$B?Lout+iicbPV}IyipL#D6;Nr zICq&+HpVrv^#dH!lqk&1cK#L)WGxtB=?A3%*{j^`l9UbP+0Ih^l~uquIMOBs5ZhVV z21jTyKGBbA=as%i1b%uwyx|5rjEDu7x+*}G=bq-RKq1Gf2|A$34;mS3?$_WchR>D+ zeS~!?10>kmw5y{t^q$V2ow>eMRlB98cYD%ID&MJ9B9PIdz#rxesW?dM&^k#-euRiz zs140LRTnF%qY%u_c+k+K9G1L*Nhz#Z&B5&)CHk};^8jXI=V&{GEZ$cBm!naPbH389 zY9_wjch5l9bLa`0>sV=o2O*Bdl|3_KJ`dnk0iCjt@HUZ#GQJo>{29$Q(9tc%Ubg~J zCT^%1`!A!rUi=rged~8y-LjK033Z(HL=MW@zej_;obdANIe0>!aIg>n+gah9!xknq z2sQwU(w-PCrW}!3ws(`oQ#~*B`Jwr}3s+xGJ`&Gn;YkqW_jfR&YtS(-ekN6bTu6<2 z-0mmv5)g=^l@mJ+lbs;VA$aAzcC4S(GJeZf_nh=y^#h;{HY zmmr6|>u~G}vC?Is8EroRq~iT6qkJ9aFLNMG339I**ff+C8G;tUDp_t8N*`T=pvn- z?exwRz7*JK`1T>hwb;<4B|gx;=-AHh4digu`EB=qPKzC@gBN*MJsb{lP2) zPa0w!aiN+ux^5`s!Qw=34s?Up`hF70HPCY7pwm8`V**p%NQX0eDP~)udfesoFOk2_ z66XnKeUb+mV+oBalLgm58o3yIo5ksntdb#~7A$Zl*53x%2)#j`%U&u<3c{KD+ZdeR zO07hk45HUfQ=gqxWvaK1Hl5Y^z4<#pzA3jYueb=K`!Og(l?l>|41+$V~6>dcp7v4K=8_W;# z*WPKWd>)4c?!RrGFE{L^$ycQm_*OY6QA2E(S$>Pb%pgY1Jc^sb*we;mvDIYB4DrrF z1N-Xg;^yW_!(H^7=^nY{+*RRMPf=KcN|jCoM#_i8hZM%>5g_ zp*Sb569H4en9ySF(`kgl@=JDIPTMTMzoJJO(V$)#tlwMdG58<$Mn$%e>Ne}TfiR+K+Ir*nx+Hz-*pT`NV z6(ue|A|EWT8XWToR_~wCih?2fyqS3cEaWUI&kd^>yq|O-0CuLw;metKr<~BDDhhR) zPhkL7oVVu)e30k_`X_AV_f8Gq{k2RVdjc zw^h&A+t8-bLZ$8W2H{{PFLTiwTHh#!3iD$eQ2_|ALbMnBF1QSntUhc&oH`P2`Ff&zOUobRp-+G%{0VfI-%PkZbu(D+d0TJ{Jmz7bJNFE zY<=9?rB%XJMJ-Lt=J@dmT~%JF|rN=bpY!Yi!5+UFsFfY4EX$R|ItTx@`?iK(rj z)8GH*o4l7FDgLMa$C0T}*;mpGWujC& zau_6*-aYA}k6^Gzaq0Y6`+!clVw6G^DL3T!Akl=f$9SNSGE13(Vu)2} z^)FIU=PXcJD=j?s-rZ&fhl5w4zxE;D$qAg~e=zSQa?dvBjuJ&2 z4y{)N{$*Dl+Mm(}!&dEpYQbYz?P|rTmEibtu%PSyR;12EP8miKtK}y%g@L-1m=#n& zLitIqNI;zZAW`&vRW>3AZ1)v(u(e+7r~8L9?_XoKFCG3a=1-FEDU&c%Qb1~t>!}4P zkm;rCGYzTK=SP+?o!H1Reeo_vt6`G<*|l)iR_;lqQ3&jdy)|k^Gvrcf{=6~i7%Ke9 zCCn(L6=kE&)1+KU_}qoQ<38drpgyRk1zP-Twg8uXsZt8eS-JfwMJSZK)b*GlA$u7`C7GeoWhu2HEF^C0hU zkVh@|fHU`P8v0oMBQ&R`%Yz{6XIqdtlj`vgJZ38DoB^9$e<;yRm3C?h`+;-?NsbD9|kQO4~MLO`zAOr<}bxCw7O&-K5(+q4a$M242i<_? zhRx)77`Y)2U^KSyyT!$Yr!3JzXsE?KeY`@>Dam+yx}!bp7cV`{8a@tL<9djq^1~lQ z^Y7UFz1p{Dn&E#IjMo1)BuX>2i2fdQzjIen1v;b_zwKrf;*^6+ zJc*Nqp(K~$lqFE&6bt1JDQL_8*2c#Lq55%-vq6v=*X zx(BaxdrF@FosI5-33THn*#U9`84WohVh$o=CxLKN=NRaz5$oHEyE4DPyA7(#yAs3e zi;y?R0VHlxoiz%6tfi?{u<-t_#7L9#^!xLHhZLGz6(Y%ue;MiReTiGewTbfxxj%LG z>Mj2Al($1qKnH8jh7=1IjMlsFrMfVOIl|R;9II;39%-(S{pgn<~>d&ug>~l z7~xFSYuT#l@Om`!rj=~-eC9vfV5ycS*NG;A1#ro4I-L0XezF=;eO;*5k+h_)n6M;O zg+S^NLfbr()`mvaZ&pq`Ky!aoW05o~Rzm#02z$riNFOzQIJRxuo^WE@oFo(5R>!t& z+xEn^olI;y|NQpssomOoPrX(BeCtnLcR$yS3nG-*<6ZHs+fq(*={fc;*9HYw8m}RN zj}J|sih@tuOX!Z8_~x|3ldsj8ygH^bVY~L@6cf=yKPKQjONhiX>ihkxHxiOR*16orBG6~*+JaSlx`UEzUnpAx*kBO^6gRK1J&26U|sDZ%D+RI(U} zZd|8sUc9V+61|OyF;lXwLzE_lU8u9Be@7ApiGZ-t1CTR`DGwuW;F|6#=yt~g&^VKI z8lg%O+32I8Kv2L6umkO4(=kd~sb^sh*! zVLtV_b#7n%knV+SipljX#B)S!@fDyLi4l%Lw@W`yK?{GxSg}Z)qO|#!_gJt z#z-K){3UiqgXVP9>eoDZ67{i^k{+ms+57uPLClms7|fzLgDNgJ3=S!9cT{oQ*%U-62`39tWvYeENhSb^D3Ne>F$#zV~>C^9NEU%)&~6%9&*FB>*-le;zBqCW4dCO9a< zAC|2}tfNFt(5smqDqsSod@S_YRT$mFVo#8B;;|bHl`dowubd*hgj)JkDVv2+4J~mQ zv*OHh3vqg&2)7dMmHs|7u|9m65mXE`acV1>E(}GC2jn@~qt~suA4`V?%p3F41x+kM zVgPzYXR}Q1(t=Z&b291aEH4A1x_14vKpBR$CPfA}1ffseV=r7b_kx=v*Ojt1KH)Cm z8whP|lUgi-LdTLThehRc+oftF#o&{5np`_&mkpRQAKYh>Df@Bp*Kt<7({XxHcwm@+oSnKMx-lYxDfaU(gA zhcCLAgL^UBp(YjQ;Fbjv`ekgnn4SJ||C4XI_M8fxzkeAD1YgVYJ~gfM?QW<3i`A*q zjLxGTHTkAXV$oTyRy?L(>fPJ#sxDzmAb>BR(cJz<@f9 zrcY8dA(u*BDT0^6ltj)+Qm&Pvq*s*MXlq-4tEGh=5ZWKl7my>JmrEvPD%v^`UhenA z_Xb5w;s=rpp-{G;7%K+q-&Lu~LJLTUxDq41W+`?zaO@Q8rtwa&PRBc-1Eph5(yctG zw{!VcSku8^WVi*Pjj3i!VL&+d3U&$x%%f?MgCg6|Nb84Fy7^<-;E7s#i*gE9;B_#b z=yxsqDrn1yNZ@wHng?rW^Pca*9_R$`Y_Qj^%(4dwijM;raklm}!AgE^76G2%!Osvk z;LP7A+ZOE*q!pI^g}EZ_I^%6MPthgqWkxMM6GOa(j`^S5x^8m0P}cr7%CXv1;0C*| z)WbIiDeG7JHkr=^PvI0MnO}4f#~#ypmo6)oC9RH@@|F$nb|qb!X#{P}m;7kwVlTJu zTT>DqO`?KZ?ol2C;@ic0qXKvUOKr=&vOEG*;Wja(2(1$=M;;1ov7d7K8nvR>wQHxv z1Stppf|=gk{e3s!$nj45>`$4m!KA!%myR4W&@L&i071C_GMh2?`HSaB+<^$SQ^PDj z#>sgf6d=14KfW+1S#%hjZ$lYL(U3Q5Rs$aNC!P0#iQ+D;Y?7qT$1!Wk!pX$QLievV*AlUGg)5HxtImPzGTGAYM+;+N`BY%`d`#>fY zzG7+bL)+CA)zMldgOa>)MEqU{m zx_h5Ir+%(|{PBiL&RLz#k*RLQaUlYy$$BY3t7>vfBaVGZP@c%*aHRlliYm~Q+W znc=>{RcIWN%U06Uwt_ybu_!Ef4?bHkKt)GKhx9gX5cyjX|DR33QH*ESN68jFJoH&x zL&es6)sb1*yyW%E^E{YHv0Tt39>h^X&5_-GsrsoTK2$cVFQ5o(!C$PWzXT>J}xZW2KV zLpK1KNWZLAskb*`Rtw{h03Z8vA@h^n^kiuB!3)@<@C+>a$9mdPMVu~sTOVjVRM0W8 zgUVKAIH)ODdH4p3aKz<^K|l?3Je+ZKf$G@bbUTspIjZLd5AeP!=kuI206?8*QUBH+ z3&Jwr;hdWg`%N-zUT_L#7-$pd8Uo&AM2)uOV4@0_1hqMKlN^Rz&}HZFqaZZHw25qd zfa_1nls36$TB*OR<(^1WB_1piaEqwlD$T*67>xgm13YmX#nYvXYuE}88m>USjf^mE zCy|$nv-$LP^m)PRBJn#Rz<{lT+dqYL*~%@1&r78&o8Ln>4;6joK&yobisF|NUY-il zCyU?)SD z*tq|~zmK?Ul9acj{>YZ4?{}?H*aA#xYE$ zorOZd4~3%1IzS6;jki?gzB^<~ZP_#G!G;`*OxG7xL8&|&Fnh=TYw1M~7P5<>JfHY< znO(J%w&K(nS}x0;LK#>wLRiY7s8-e1oDu7C!yr4SBL=96vIZ2Jik{K8Ahg-IJZ(^Y zEU3c80)F@1$%|V6K(cx4XVhjQLxpOq1b2~$qBvK6`yxpoK$XrV)IW&?dDivxp^txg z>9wM`YtJ18+OUdK&iz*w_KomXOl-UpfkU9+b} z##^7{8fX_ZogOBOVictAAdt-FROh%BJCfR48xOYj*)*&jAi-81U`Qij=%nm`+8Jt* z5;w}mb}g0PFgN#*`%&(u&<4j9M;&s%2nin&%;cp4&c2%!rS7aM8{cUPkJBPRn^g@U zcc`Fd8*z4JX_qyxJ?rGYkIQ(Cu(4+bVMDK+cZ(C)26Dh}cNpF&&x|IDUk|uX zf#MfY88L+boL0R&8#mlgBy2f~>miuC9sK#28z0({FELHn8NcCAsOh`Eb9=pce!rKY zEo=S&dvA`(HN`V{)^x1LSu0XODyd;`MsTh8od5VBC*8@JbmVfbUYBuNgs8Dw31ou@ zSC~9};3!1NF05lXddG!(^-h;)B|kNOSa+AyBiu^^ycIw#SjKG<+6;cm*@Qmzrxj8Z z`1~+4j4Ib@HEy~^Q9YmbCK5WD0kTW_DX~(B9Jvt^{*-E>Cqw(_dgGd1LiNT;uvo1H{G5eCIF$KK!QUZ zWuD`Y=hxTMxwqX-_GsEuok*dohFSd`-JLs&CXeY2Si>nWI0K~kGo(uh7Ub*RdL~cX ziEBzZ@ONUPY|-~we0hL7m*>OW2V2$`w+ln}mrVF{$)B#fRobTnmh+2)Lk!YSo9**@ zmt>l?zJtp|FeZ*Si5=MeH^BA5`?+07kBbl}Hn1q;f?OT?gyC9d%wS#C&z}#|@`KmM z2RfOTZ+)vLigpgofQgqrJk#iCEuyg1`@nm4q2)-}C9P8^x+`0EBp?x9SE!GS3PjbN4B&rsK#R6IzdibE zTW-(yrHjMgLbc#a-oL`AB5H_zbU zaJ&YPuJaMu(?S+!Ul|swz|yHL=24~)ATbZeI^^!g!zCh^lWQbppCKO^&qM=(;dl|U6kG+a zo4UO8q$F@E=?4XB1e?Ub8X_gQ%%S0fXE`UFOPvuzgId84>CEVjm3s=|7(3z=r-#A7 z@Vto?q9?`d6Q_KekI;h*`=MXy-yxwMHi;(0+6`19SgO}?3`ihbWYV1*pTp}=Vb1SnV_63vl_XM6E)xCioWaz^sGfBbR|M z!_|$iGE)EB8e$__A_9GfIMq;n8%|-`3Q^JOWW$M}3*5S-hsw0YlgWGbt@a>pAqF}o zZ?ZLWMgLc#n!dDUR{{Mr3)3%~w_DBXy287pg}iyIIp)*8N;hC=q9c{GXxU9o+SUnY!5N;+Me;OMF~~@5kectXoeh1f*n!1awOlzu~G-ICDOZz0C zmd#4UVe{XF5!z}EqvTl>fgyfB&$Gn#(Q2+Z!3x_7TX49!!RHB$_ z#v?hVk-o+TNbyjji0oHaKpUMj4uOmDG}o{r7l*tfF}eg>q(nHHPKydJweOF&X5f2p zlF77NsWh^UCkF}uZ04~*D2(wK>;1JLwj8bCwTe;JfG9@T-+*{J1tFYZWU@*s{TD?Q zOleQj9iPQ_v_W z(+D}u0~EMyQjGyRv}T;H?01A4gAPdoHj^F_mye6myku!>IPnk}7`= z0lA_vm7i&@fi4mO@_nz)vbEIa+8WIyi#!;t;wcOuB_5K0H@qy>*kn7ZN9=Chg9k*O zMB2i38KMbRCLcOhUaMe9kLI1QiFmf?H9*5~qe>Eyl)cK-geG#Fbn$Z5;!#ioIBf z-;|b2q5xgV-T6=#w^q`Ajy9@^dW99%!U;(kp4O}OA*t-*StV2n;y81)Y2NnImi}&W zv)K?}ou1DZdE3&+q`(|NMw+c?nEvPUj=RuX|;wN>9VfC+#sr@1+d1VzimgK!v z50|D0G?UYb#?7oC!~XmCzXLo=M7G{suc(9NJStb~^vm|-htRMy%{$QdsBFNNxkAB2 zQBlLwmppq|e9;U-l4{$XdC4UNcdv?ODea=d1tb>Y6U*Z^E2Ii{27I`qP@<#o3XM2} z&L@0AHAA7TG9QsQhmEFHXZhZ5V)uP#LLi2(M6dAz{Nh|pFCL$=>GHbmNv2ne&wX+Vyw2TnwXrKnk>oe6Rm`W`NxO7*ktjnHY7{?$Huk34 zo-htsU}jWE!{xtWmq&|G1Auf>pedkO5Q9(OZbR|6{S!$u3Be~`);fBH&IeK&-Es}B#Y?G9nc$b%U->OIJnmw+Gq(?5v@rM(1j zljvQ48F}eGQ8)z26Wuv@Rr4T7pqyTtv*cPZ3A???jFwQ>p|!J#0{~$54YDewcK_Pi z$Y1Q)OyT1aTpoeT!2mZ901{k&RUex4gQqS2U7TuCHd`=0e&h5k#{5bt|MZ7;fWu2z zG?SL^Jqbq)0=|NWA(izFK96XWg1(RJvu{*1rN+k#+t!d9zb8}9HQ|bpa@I|Hcz*mO zuseN#o;cbZ%8&pX4Z!zuY4(AIugJ@)Q|zs>!B~k3zw{2bMcaKujSl)OJH#9zNTX2< znJ)I+9od$o-5U-CtbGPPa14TnxX@cLL7Y!r8xkoBp)>pYfXG<_h7~NB8E8fO%aoREfk$6aeg*9<~Wot2-vtOc}R6 z-5klRxF7;KjG9T)sbACfQjN5OQ*AtELf;zhFv)HGEg(qRQtmSpux53uhUT?BYm~K% zlJ%vkywtBT%62b2g?HFJd{tAMb#L;IFBusnF6@eGKq@_YA#rM&zS^y>qij@^%wW;3t ztdSSB{yCUYJS$-8j~mkq7urJ*{eu#%)PDF$He`(m2JpH8%kXZBm9z%1%+F2o$x?PR zAp~=OB~J-J>3s2;w6W(>GSauM$U&=vkQ_QK0rq^&Dka;dRWPa zu?Rc103JYL6+9_bOA6~kLXBG&`IX`t3`E}q*qMs5*rnS^6hUOC$v`45zBorD#B5;VQ_|!k*)@h+e5mMY0@x{bYX}7 zfrs&#lipExaH>8iQ>~=2zGLI@1@b>2O_usB^lH$k$NY`aN09%*Xg3q=mPMDK$;ttk0TDQ~Y|v z<3WgJYWTIS?=a=)^;0*ai0dC`xmt%O)!PYsgFfX0ab8*X;7a4TL9fqp09Z5{X7s)Y zbTZ1M-o6v_lf}^Ef?zGi-Sy|IP4v(F{-T{jH9gzI@wAUq^_)M9%PkQZ*Ee_c8i8lO zWOI_nN(5)R{Xf3#<=!r6U)v#we9>I}T3#tv-e;TdZ|CAuL$Y*(v_l87`fKGK(B#E118igpY z(JA>ZJF-6}8_?v@Lv4EGn+3C~=N0XJL&>I~!S>8~29;689c=vw05uvK9l~dLl|D<@ zUsdy56q5$uIU^`}DsW7qR);wo`v|vtnl0KY+A_lkwrY^u5K&a@FWPGKI2tUt@^uE<-xpViLh>6QM;A7$p1#2Q7n*OfK zIP{)l(1sV)Y_x$7K=k0mv7!89pCWUt-x|eC{xQ3Q=Os>8jV!H66HVQZEm(Z0Cs#KY za+A|1tIR3LT8x#{b5*)&gLfxv7Ae%~BPlVyJdnT^#slSHqKDq4)csL@#rdFInQywk zPpB6=_pwu@jmrY!d-$HUBYOD|?J^Ha)SIW80j+}6c|Sf2@QS6s?`z15KF_vs>@4t2 z=0c*~n8E3!af8gNTLa7WvG<;om==m!7++|78e^wfuZ#@l7?!Yazd- zl8H8^29++z{#4d~@Dh)&jmeaXS5c;%^&n{08%yv?hS-^GmoZUeANr};-Up=NyYYrV z_y@XeRaEBazM-28=D+kh023>7LraH$|LgukXB?#VOMagl$@{9N_EsR?T9SHvSuIhQ ztQ{n*OGtY4t@f9w+&P*8EkE<_d>2(%=`-p zWro|7RQd1`Lw3=&)G8K9U`o<<85+BPC&7}R{$}dpv87>P%40D(0PGzZG_AyZy)Gh7 zqG(_g5{l(`;hO&J$Po?&OlBY-|A>DxbUO`2LKG6^h{lCrDQVK$Md?3J(O{3iRHs{< z_HgrZaC&!la=Cr68yQQ^BO4r?A>{O987d2F926IIUg$$RSP_t8i6@9;lALQ`Jh*3) z?kN;sJ?7-<7l;1I1CZq=gBXm4HUeF!Vre);KF%>pvI&HY?gG^2v;5Kd(IY}ra@-wX zsY9ct5QyI1e~bJJc4`pDx(+%0s1d@qFf;<~9PGo!B1j~;kFg!#wOd(uELBfgj{l|a zFe()ce=~S3GP)Zh!UmHCCk~k&tO(35$mLl`1ncYS!^Y-`V1q!3x6So1ZqT6kZJDCH8Iyxo@@w%tMP{ zDVhMoXbyJ+1o*mHdQ$v~qVhiAp^ZFmhiFm5N3Kws-*X|hGeG2U5_gtWHv0L58 zv*;+C_Pdu+svC@qBcxONm&Ou|0ACtYxvz!9^)c0FaQLFyrJz232F*qi_bDdNs1Q z>lW~_fW`iuV=c;1{h(!IyTKHHg$_n5UmbL>lJd`&sC;mc-voH+5kO*x-2@p&!qz=@ z!LpR5zs{FBwykriM!!-xl3kA0lUDtfJF#K6K_Zu?+X!-3WbHZvdZ zZ|AqT?VTMNZh{Lr!33|bcAlQDTs^wD?|ubFo=ci0`29v7+KEmZCq)BrLmp3uh&W$) z1JH0L&voD9Ymhi zJyOPy;3qs(J)WC53E0oLkr&+>)rg^*zhWxwLQXfTcJxzDE4z;b{>sKBrfQPc7}Th5 z7j!guzk7(;&H{WMKL6KAdI0)H2o9|qE8v?(vH1^;;(u9PC0KnsU70u-8#~%M+Zg@( zHPk!*SMi_c|A2qee-G$Kv~;gP8AL0x^|Jnt`4W^+fl4iu-`8De6lg{^l=P~Hx>^7WJsa40EvA`0V zx-VQhAOZDqTIrBE5o}a`DR3Z9pW4@MywDaAa2pT9;N%sD1@kl8n_k`X6Z~fxTuI8% zhk>uwASX=R{@b%ptB!!zfE!bt#`}ixhL?LbyG{aiA?yXCsM+c9c|ShNyCE+J2j-~V zlXJ4}RPqLC-kiz(y9O@()a;%dc}O{xWoi;OwY7&>H|qv;RX8hI^AdE{CdSw?ph182B2!h{;Hf zKsOoJo*?VY>ncFcrBTd%+m%YCh7xyVkr^}}!*SVsd|i?zZhZLxXUS(^`9o^|bIu9-uo4!l?U->rK zpD2+3jif1d-=bJRAUIi3^Lb-*1GAT4c%d~ACN;;_c|ZbGBWHapZ5W8;A~VL@6~0oL zEo>qpiI}6?;Y1LcF?|wnP<9HnrcmZseIk13S(^$j12LvzJZT+ap59R9_g~{#B|U#Y+u}HJFotku@t0d3&~Tx;Pb`odo!e zHwI3rO<2?IA%FRlk4yA3lj*B`U9U&&85TwxLJX1Dnuc==e=+pFP#0W(5G2=5%AW@p zdOmJBzutcyq;%n>vHZ$vz;Sma*XsykD%F^Ep1E{Y(HfyS#tR%3@ne|EreHYhLoPnR zM2LrnOmPbWe5cOX)wVy^;urv!2F78x0Q{WOYVXIfxiAzug~8F6cMd;u3gnVX;lpmi zR&s2UB-jhNDwan2B&gCP9htcN6A1nY(|`5BD5>QKE@E7&b6cwv{N7rC6IwnLotii@ zc}rn>AsL=-t|+xG%g6f3B0Iqb3a6x5q=7r`FmFZ*pm|Q8ic>|>x=WxM%L(bu8!M!V za|Pl`ig!`7U!nR97gh%rdEdu=B3;B>x9yjp62%1GPS(?U$lH3@EB?am@4k-j)=1rN zxQ-7Hzs_0q*&JdH5Fw^Tu^MJs&@jT!Wp>Av?~rPHT}PlCs`f=dy*g?R^5ki)uoi-r z*%);LR2eCU`0WTb{;{%CZD2v8)b;LlN@$t? zuGLG>?uE_Y({Q{5mp`TJzVrE^)Yzpa&KUHo*|6XjVl;UtA6bV@rki>C2rizU`;mE5 z@fyh3!}Kk_+n<(={Halmj?-Lo6>#Z{`G%+e_5X0xITgY}YPkajz5+!M z|8*rKx?_op^*!;SL!?}T12cXzt@joGdH&CvKI;2T|4onZeo~j|f}&!idr4nm=AaH= zq6cYQG03?1N#-XIK^j&?1w&?B)N#?n$QaE?->mUdqH`jR^_#oMfKvuXb^hQ$4o=o@ zH*VljL z)IrY8Zf8_!-Nx-mNur-&Y5Lu;4QcY?%bVCw*v+TAg^>Lrjo-L*OCH2xJmJzF(EQ04 zbL7Ml%}BZL?iDv}$DAQg9j!@{{sOI43vfitHkIzw(4nJrigfZ@b^6(7%+b9u5zElv zWe>9F%%D8PYM2+|^(T!n!nG~iFTxwVM(5n_P52yG|2waH3yZ-L(NngKdb7yZ?C}M= zcO0c*nrPi_8z8C5>{g>-R};5`=1{hiRkO)ATiZMsKyBu#l?c&!jPLQ$FIZKp2N>gS zdFB?*g>Z@c$rFB|o$7P9t+(?;UoK}KAUH5XwVKPaG1eli&*21$Uo|NRLs*G%N#OB& z|H0#}Tux>1*noH+Lo<7UEa}h31+1OZPUUOvf zl}yYOn;&baoF^|yP`tG;#P$z>2;kAkh-sxm)l5s3|Aw5aM$<`zU80mZ-1hQ2a3s24 zU7`Yw&^kYDRa_SzobKQ-;Y>*ej9v4@I{rHt;;yU7HZ_qo!mf9~6d8GHq_6motZ)@X zHPN#{eFd$gW;;*lJL}!Si7#r<6RtqV0UE|L)+Tj-XBp*D2T=1{m=_xt2F!YdfrS-fou&P$v=pO`;mD$Ct#7q76$LDC?wI zBGay*q6q~fA0q1`7T`BYDCZiv1b#G>Xa13vVD$qk98pn@C1E#2)^9V)hu@bcFo?so z(~g}a%xOKKi;pqXjSd=fReR#`aU&G~IZ*G8bRB#A&@l5i!4g|p`&L6(BkbNQPB7II zjG#BXREMnY%5xk%!jPcF;-?53M&+gOgpXWmY!%;wb;CXx`N9GZqoHk6GDnZm>Lub2 zTGNCszV#BJSV}shI@28436!VFxO{I8%}lu|!Z>D0ICx1sAN1EuZaNAFS@Jf(-c1lu zE_ffPSRiE@6WZ`7Io_W6G0js}ZE(h}p_072#F_EH6S`gi{ z<*|-@In*9qpUgy0kRN@y>wL8U|6@B?4!dZy;~g`u^R;F^r^|%^MU>vfzTf#k-<=1Txg-reaw0FN zIWBqQbcSAz_ICcNUuUBg4G-uk55a|w2f}{7qbwsIMu4vO+T$85 zETb9H`m_bvyk!jW^~pp0&zAnonTuzOh1Uqg=KfZ!^U3w~bL*8$N;DrQ9s^=bbWGX$ z`jXp-ar-b@DvjI6kTZB*o-iIo8a-d+Hd9Q1ZBtI(d0z8dh!Q*(iV~?GP z&)35?e~^)+aE5QX#E2vSt)O|t_6wbCR?la*Z*IIB7DJEaDqTb%N~j&V=j$~GMsLkx z%~feSv%3o1A+^?!QAiRU@7P%+M0{r;1Tuj1t#%p#G0St?d|fVRCK+~e zeq)~rbLG!L{fJXXtHF3^bt-l0RdeWVdeG5vpuc> zQZ(C%P9lO0X(?QC-dBe-3d3E-yAOtEry;21r8D0iYIRcvuJ?8q{@zwk|8s6MG`DZx zmu6aDQ>ZcWFt}5qm+5fGP|KpGxJeor7v1V);&1nKjW49cNi=4_4~wdxbC?A0syU05 zfaUnpW}_4@;Gew!4Jd=@`mVzR`)2;prO<XM~mM~!|YPc4$+IR``CXcbwJBlhF6KmPV`{i&} zqPHEU2w%yO>hK2`u%GEcL-V5n^FzAMmKt6KqV6y!e;_ddrKYjtO@_WBK)<6K~B;qszoxlbs%3GV@ zfaPzrdd|=TM1F(IJA$>QR>7RAewBL6JbD$n91`o(%^=4rgcT!Cp?nV~1Dkp@!$@VK9Lj!I>si=L zDV2GM35u9et#S{Z>%(VH*rsnHD7<=?GC27Zj*ZV)o-4QusSqKq zFk~YO_;l92Ya+Pd&?b{$%!%x3uY%rngu93DZ#)2dFUDt8ZxcMY3LxO_?i{SM!J~F}HWr zZQduK(|B~vmAYufO(%q{|GvTaTvT|JB{S~imdT2paJsUne z@0v~hQT37FwU(pvC-IP30gtZd3i$j(F8q;{En$sB!=!3neI9Z;CndAEv4!Dkow$^Y zeo8H<0fM~xr=fnds<}=|^W)B5T4s}m!IWIf5V>kcc%?=~DrKA|b>bk2=JlBq0P#5E zjxSOvh%*H(#7@3?aTUK6TE;&zJOkPNF}m~dL^l0odYjLu2rVT80!@=S3^rIpZ%!jJ zlqJ}mrT!7{y&LwMUKv0zeFRTy-j!YzZ7i@mG3{q~p`{ zul{ZGxGVUU)A%9X!k3u?WID0{pagE3HJR+mOXjFmCzdzBsX||8&$Wc9D;+Wggqc9wN~D5G zBdLinX~2vCZea{ChtM#9Jei~phF4N|kTK^rr8IvKQD|$Dl8_~B!G!xLAPnfoQE;7` zoUuWKQ7Nyq_NkMC^C@*Pdd=bB{8(@p4lMEjw+`IT10>LZ=Cc)qyb8;E**_Wxp;4Y< ziFtoJl!gSW_?MC5fb#PJhGxjujEa7#P|%GuvZ8JsQZ^~2fNjyAR&`&C!!F=E1pABY zKp}b@-Q$3kqF$aFCZKni%M{ABFdZq{We~;x5HbF%m}H(+={b2d?rjm> z=&_)Kr78LB*iX(XO~*!iT;8+`VnWl_oXiAd_@0hCM{fMvF!y}`Alpw@^`cwO;5-lz z=k_N-(HODxgAUD2Ce5~poBBD{6|`Z?YYBJKcE1LqjEB*o^j#yLzSjTShD)~4J0@d5 zf1Z;a-%hgHZI4Iv#wj@V)R%t1t;IS!&>~y?6G(MZ`KU?=|2Kvmw0nh+O}Hyiq3o2O z{4I)#rvGYXyu9c$K>JwcM9TbGnO?NBQv&hj9v4fX`YXG9*N~(TW=?`#m*au9T=fY( z0|WhP5W~EaA#vMqfhLxam?qc0w+QJ*Y%>=4hhWld)HC`{?GV`n=;1qFTd^oaJTplp|Z{R4x#!E ziRi>C7f7CNQk=6;nrBy1m9^wC*P=AKCjU0&iKMP7|9o2IB%fis1I4;*JIZ#f@iPX; zM1ihNT@5M>d|9YB=wtmp6^^?_yVS`N+&wg)k;Ut1B%>D<(#^61Qd$)B8urpLGn(c> z+hAeK(BEHO8rt9pe717YQ8?r3HQ+*=fAPOUr*JJm)1v4eI|zRr%(^o8&|&jE$?Jf} zYKFs)f4pAmB6o7gd#JXeQ0wN7Z7CD541rJ??^tVMCF@G*@>1}Poo&#%cRz^Fk6Lkj z7{IIsAh=H`&7402@Z-@@H^7aYmIj7rIrI0Q&+ztULo|D70=k0j0hfzH^uE?1e zbA9V2$``tlC`_a&lxv&vXi0Irm-A<{P_#%8H)Amyr0W{z>p*)T|84_R&So1 zKq8L;*_g#S1VB=$m7Sc17m_={G(0D)(K?MgYTT!4FEE?C3^+o!c_EcWxx96aW!Dqb zaUpmX*)Y-o1k^}=pf`yC8z)JXsIm&csXhOwF+vCVtSpeKx%nG%M;#QZZ1+>k<>MES zI?JORqI){(D);jC2;|#iy^w__v(KA4{CxmaE70-1)jA41(WE+xdsRAA}OFT^|>X1!?cq zv`hRg9E8AukO==wXzHi>-Mim6w;Z^CrJI6764D}DT-XS;IwIVir-m7A=$_KugQ;qH9mnkh^y8`^f>ao)^b zr8W*5iez@PYr^~khb=1sZ_cLW?&=nB@JD-qShz0cAeovDMTccp6!mITMzrcK7jTfF;l8R zZE93|`?;$OfR2|UnI4+-b}Q%XIUvHi)A7M^7^q?joNg;ijLgU;vpqBW4}h~ocVaVR zJjQWn(ry=lfy3L?^Umi+@Zyx=i14bKF=dQy8~?FdbaPqzp^NkOMeLsIq6fM7v&hxH z<`D7f64P~j@FL2y#*9GO3qXT{lE+JEdJ$-)!Ke!`&OTS9=uD)HA69(Z@Fn6Y@iz91 z?%-OFQxE6jvkZ~9LHBsu@ba`z2kO%njqUW;MMq{lLX^I~Xlop|ONMv`>(+~2!+{h3 z=xgLpy%)sigA#u<=t&9F9qYDluCUJdodZdC)Zp!DQH32)6K5#D3|N}TmZ6wh`z5|C%?Uhv>_ia2a31&QH^Lxce0O8rD8kb^sGs^Osd zTo0zG7qBjslmphz@1(uHTpwT1n}<5>GNjDiTnx%mypN0xcO1x+p*UQ3vD#Y^_ilDF zy{G#+^58DwTrLn74AA%67UgMHlcKsb$kwFL*Q5$bsTk&JEs{-N9)`-QLbq6GTlMQ1BLyILG2u%MK-7mX>{^X3k%%?2Xn18ATo;KJ^kgSW~n(bqZ~ zt8Mu8(H1re?US)uwR)4BcX3lK)Nroyi6|E6G2nJCmpEw;eio27rX6_)pFvN7XlmJ} zZr}#EMe$YF*PPUXSsP=qO>2B@)A2BFePQZ`yp(PG0>=MB8j(&Bsj9b(kDs0WxhBM2 zwgmTE^dXdz0tj13adEO%CEXs-^c}~a3!RQ7@TeVZC$4~!<*LYYBq0Uf_%oHu(h%zM zSHbC_lku+Q?lA}uwJPH)k5Ez8_Lu+$Bn7fT7|3+__PpS05YS2sCYA~ASaelh)&zeF zFZ*h#t(4;A(nRJ@P-CFg_&j!+LI0%?r`wtH7d3ol0!Y10A@_D;5Z;I|;@=6|G}z%I z6R7l(VboIgLR65Luo~N`5U^f1>;UQru@*WdB}K4*?v2Da2((A7l<=^VlnIvMM5Qaw zGD+Vr{2?C$Lw#`ryRhf~8%k+M$p+vWw#tn(3)NIOJuIgP(?euv?L9wA&M|>6y-Ebo z^7xJP17Zv1|C#|?9zC~E`YwCnM`f+vyY)<`=vtjBXUGf@;5Ib<$k4Rv%!XezGmAQQ zrH9F#O8FUA|(kERQlmYEe9H$w+C7UcE09B=2GD?JYjFsXAsKzxa-t1pRLzU83BJ z&@QLzh4VMSfBq{7D&?IS1nM7MgZS!o$_)iD8K!kYqu@)PnRSzlcWSc@Be5_7M-**u zS_&N{uqt4Z;K=o6c{;`{lFX%eSF21G3+xi@vSX9sc9WV>0*tv&UM>wP^P~j1B;m!0 z`HrA{%g%il;*+cTIQz1P7kJ+Gu4o#=);L($4K!_9_BP$j$9?hQ>DwGWR!WJ?KV?hH z2%DPfPB%40!uq8yC}UXaui&zd2gQP31@E7%0x|&gbn56_?CVSMvj0J&Es_ya>xu5K z>bVNlE0(UJ(cE?1N1I@$R;^##@n>pCkobmUsNi`a#gWr$I>r+aQg6VgG0mF{9e(k% zA??s;tAyAr)~D)pB$yb?;kK z5m5nhOAvd66sv+bHtcra-=PjXmiW>PzZmMvG;y6h2>ncwP{}l%gPhowHg&dIO*`O-!h@P=@7belQRow98o_>0Q?K8+7$_ zM?NWXh`~50WmLe=Sb!4q{VE@(lUANJXCC6g?ux*;x-yY(Fw3(9E-*s<@;YTmNl;Yy z{h71z9D^!d+*~gZ@wj!`7DAaZdsz9k(ws_(ge8bOH}L_cp^BajWe?OvU-eHN0fVIw zv4CKuB$5DQruYoGjHxB=!N1^#20>-?R z|HTIXJ~o$+ScU8V?)Xu-SgxexT*TXCu3HWRzp~{FmWne^7XEt09&DGO#P55~bu@7^ zk$O}V3nOWvDHD$8UN+*WNVJum14ChxlN6`|ZLVn!p<0AU3vLSiaT9F}M+Vd(-F+dFb0vwOlK?*&@YQY9ko05`4k(yZvZzL%M(&qr`iDIKB*!pW$ zpOB)$x>eg|sn0}c@AZ^<7f?30(AN;Q>YN5mq%xGbqP4;xaM1Z~-C+iyqGP-uK){&? zLe5w^ESHx$LzC30qJuV6$??4kU#TZ2+xeW&=BIYTaEB>)?KmPcAKMUDw5 z+f1oH?bMA{WI%Z~k@^xOI@!@P&F=?|$#fOf$bEi|UGa4EKyz~bT(s^*dw#vI&hmmw zXUuR=REhJsL))aCb9*T2ISB+z{U6K`8ty_Hi%**=G#OTzV#@^c%AYpN3;krugmEg1 z^#c4Q1%XX1X1cp&I$}=}Ym40IM?V_qMM*QK)(pg!KCVXHUKu9huxAhy_kAR4XdgyJsLd17OZVef`v^tdrv{q)DJK zY{GFWSTSO5*e>|pb?1Q}IX!Aa(OpdnVm*MumwT){PV2h$aGsz{6NjqTxD*oJbAZ)i z{ShYYLG@~4SJ6-{S#H18S?ccG?==3evqC~ZN6tsEnFwe!!B|VTLoB_k3y&z{n*`ZP zxX!C2&(r69gwAc*n1`3ApRAXpiWZ_F7EFd$_0n%J)TvN+uw7gYMu!QmHShbj)`wt8 z5F$B+QXci?b<{B=^igGYw5o)r_ug@Xy+euL*fqDY+t{8}+e$JTA`O!Y-|d&C?s`1H z$YYTw@g1o|L<$zBX@tlaQe3t#Riu@aQ!T4JZlzQe?AC)AK0c8=YjDG&S%dbtX~&x5 z#dzY}?E%>Z{(VfUAQVfkET3f=Jny$zW4b_6CYeG^ah9YlX|ZZg#F>+G$woE0eVbNqils_;NUimyUYt8^`q z-$f}3{x6@cwW+D~|5T*T*3JJP7a~O2_B&n?;cu?~uBeclXlC*pnp%pR1WE;#@q)p- zkir2;+AvWB@d#nQ?U!%M{X81gROQ*rm1i#Z`;~3iz_#OvhAw?SVN^@#cM=h^; zy-%Wve28KTJfQ1sRkd^;S7YM(-W&^9Tc5Vr)4zGo>u^WUPgk-Xn%cnl@mk&edHzW| zZ?V#0NSP<86OPJw+&|Xn#GsByYD1uPr*_XDY;}8gm<0eXYnLOZ7X1vQ$ujp>zTd)& zD`sX;(T9x}GbuefK*j(^&d>?sxXhb`N`ExYf`Y^~tKum`HGv5Un7yR3qLJD50fMMp zLhv0t86*U1_Yl^T%#C-ZN{kp|2K^a|HsJ%YnDOmXVUokkG^HE_L#)D?HV$*&Uxkl{ zIIwY3j1VvpLW4_%lo>yDZ01ZP5W9AKyJGS85lt}K2ae>iprS)n2x~*4$6Nb56;##3 z!6cbs4#<21`DaVmnTao!q}Y)SM-?rek5!`SI2XLt%rDMLSte6)2QcdgRBRg7E~ zsh_ckDjEsMANa9&WzO0j$1D!Wz9CzItYF}4{>cFAD~tv%b?`^+Fw*;G@Ab}&lldo; zmRo589vQ68C98}24!cvzh|&4j--e*{Xe0OGe8jwk=w_-Q_(vo`gkwd90vYWdH&mVcZOSS%FK_d>!7NC)0iF?_ zya7_oExrlx1SXx5VB7d(+f{kh>a%6S<+Y7SYXJQ5($14=z&-myKH3k(TO8hUZGNmT zpnumh&_9lwKPgli znJ{m)-r;M>b>J`gZ5fM(iYfhk#wAmbU;{w*KW}&5zv9x!g{Vj<4TcwoCm@G&pg|ce z{pE@HeIYA}L_zorNvr%ZfFJ8j1=Z%t;y*__T z4N-Za>GIS<`+Hwe5`?zQdBps+`{V}!<)j0niumRD^ojTcIB#`2K5@=SYOL!4%7R}mXDfb9dBNfJ9D3FjS zVW$?j_Bdz5^J3#l98jW@6f51oN|Rs$4$VgxhEU3|oavcD?t+i|&*8vDh>*Y>&?C-R zlljFStMCb9;^`@O`D(fh%#y{~0$YN}t)ytw=t~I8k&#htScW~HrNHfHX(}NdYJVgs zv?^DV&=mcEV|C_{ZwYQf2*`|*V~UoenhMqCh90LF%4tUNwA%B+Zp{bREisV=0BbH` zMiNnOoLqlLYi-2*QG^R;TZ~4+w8GvKwga>$pnF`f4pu3#ueGE`-eUBjm9rr!6aEzCIjq$hvwDabJ4g2|6l;D>N_) z-@CFn55KY>T(tiYt_Hx;vA(X4eY3d|JlAqw{zy?dWD=A=^vsLt{ohLe$1Ya2`fqO;;QQy9I=eWT8vc7z;{UMF)To}@Eij<`%`2-1OGKtPH4RFMR4ibOkVF<@ z5Gb!AVt3OfCWmWjVkF$o*_U=+<3a$jmd0oPy@q)=l?@9Z&HTClt3mEGfk8^j zOE@Iu$n-I(w$AVv3fU0l?!n^c=fE-$1b3GSbCe&%L|ZwSD=3)9^%*WVykLG|z{6X( zf2z#HrGtBr97|SpYQn|qvFyC3&=P&O>2IACwt{IVB%y72fQ3FvG=bLr=`;@v1703X z!cqkI?Xfau!Gk#n7`ZV&$h!(^WF1ep*EyP>p()c~Zong;2Vy|dvWi0&Dk*rX5$rG| z8%{~Y9{L3_uuQa}luc0a*CZ?nLYGmw3hA>iTL`3PX8=0&)8!J1)?VVW!T+HTK2)&k3(~^ z)Vr_aGH4C06EAcaI7Ds)y8X?njzAj5=&q(oa%1Ck%KkA;`KCVhRBWsx()Lw5>#20R z(Fzs!+`6T5bU5>ER7EeX7DW(oqo>)?P){qJ#LD2Mqj?vrJB2js5&9lT*G3Q+Q2YQu z7#(MK5+i3Qw^=$0fvnsP=etZCJ zUi+Eu>#mZx(zy$I0Zo%XBJ8+qib!5%xR}>Fuzb2{MRR$RErHuGV=Mr2XSN=xKIj)t zH|p)VIzj90SuTkq{Qe^lR9x*=NJXefT=+ZBcMvrx{|Y;;QV19UbXe=?AMpYOu%)4G zzafV9P5ntXWhY!yrC5uk){Y=5j$K#H`c+$lp{;RcAOcrX;R(a}tH$$GloRx9y|Jw=)umx36(l5M^khau|$SnehSATB zVy%bB08hc42(I7b%kLe=pW7>LoV+n@LL$U;_P7bPxwExJ%j2%pKnG?IxQ=xIY&qBZ zo$G!L)&RQeY)NmnF7_TiH`c;VIVFBIvmhK~Ks*Q`HCY4+qkW^arrx$LK7G7mXZ(87 z`NubmB?Yd#ZE|Ea5>tG7#!fUMyspZiW)>(4U!Og-%=R1e+mZOQ_VTv<(gP3XYY!}k z?oWq4K;UZs#?S0g(ISBX(iN?PYpeAa64Ruublqc|fzaW0#WvRJ6~QeB^$qS4Y5|mT zfL(kqpPvNci^rVz4U<78K~bzGq-Gr2XfL7Q;Cdyz6N{j+iY24*haq#eL6N{W90q(p z=4;T`=V_!Q{Xqvp^5?lOp5@}#c(5*GiU|@2m zd%6Yqr?++UuK|BIa;yE({HB=_B9x49aAM%};p9dcfA&Jfj@HZn81enOVc;R^|KlJK zH+q|kV9GgF0;cdx0Bj~GtDNMM>Yj%>gYP}NG8E)+*XA2=}qAU&)b#9toVg-7B~ z1e;Z{5D)=JPW=-ENZJM7EW<<_nP5qc@!uDuj*M61R_f;Pel;P<0_v`@5k#LyJAgFa zMC2*O1aY2iHGty+b)Nlmy9&}Z3(-Vgz`^kp_Tz`3gA)!OZQ6+NUKshHpaTm|myf4J zFXk1n!`A7E8oCfRx-P~Cb$&@h`jMPqkpeq|qo6fc8jFQA08}SF{2^7O(OI=PaABVk z0+~`ad!A3-ghmr{vZZqgt|nb1oiv&msR6K{d#F!H8;AvRro1&$p!n;_{aWW!svvg` za!U(jhP_BEnDo?7W)niOlg&eh*+HAXlOPlfg1r0L65_tr)XQ`BddbETGkBZ-_`a#a z1Y)t%Ytt(cFeh3p;IQHX;#8N(Q?#7&RS*SA{J(vJq$SExqsh6LDTl9dIcwx}` zcd`yfz{&)T0Rv5Np{^O%Bb>42cXtJt<=; zkiTY)11h8-zDm#95UY{fXy9tc zr8Y0QS+AgLd`va%T*+w(t>)<}nt*K-B8d>g2{DChq7%32e9sJdA1d^9m{YOtYbqq4 z+=53Kyd-3$3rNqu*r(XfR#%Hd@Dyzcf&p;S{?^=uABXP{<-j zrh=)pmx;Gdni2;zryuz*(h7@9vqbr-x2)+YBu*SSkTtyHq{4^^9AYeg9M>NS7h2%f zwD07SrNr|RxG>A`rBIg15szej%3#9cg)7a@*XqHFiG5oHenF4Mxe&_`w+4$A*09I| zy!!Nq*h34`+h#Vhw;Vlo)@s`S6dT$Fg^P*8WU+a*uHz@!@l%swfD#XPRAx&Vs!uS# zz2`2cGIXh#svZ1Y1(~G<+IkZr=t1x&=O~JAHbid8LnuS5QWP@cYBAZ}5>nHI^s#Ouii0+|K>KsxBBt|v+X+tda!p4>Ku+60g?jXw9XqwhvSUY}+ z25E!Xs-Bw0(3m?tb$Iy@dzDAKs)u}p+Oa@wc2_9Ovgu=9>F7V!eWjISY>oN%*XnH; z$&M54DUayUc>M|5vL1Y@5Vbt>A6=z&$YPy)aUZQ{zOaR|f>d!fo!W<_o-|ko)SPr* z*weV_OLwpvoeUm%Q)=ixFLv6-^!YR#au3SybJs5?)>7dPS2U?xte;q!@Y?L_5jb_% z3qz_%`#m00$*Lnxo-7SajFUn|hBP^#$LIOT-Jyo$_%%Dw0Av$`#nf8u3}K#^rbqnS zV8g86k&br4?LclJ3Hgg|-N8B(;}IRYA1{2|40^^Wd^E$oPj9bUf50qKuG6`3qxf5k zDuH$j8-Za-#FXhOu45Beh4!Y%{beRmiBj4qP>5hy$0F6gKoGQJqpkZIM_De7*F#>lMsW0Pqyg+4{$IdArm`OT)-&``Wq*}`>C3NjTQTpm!MvXdKC`zM7eHAwp zUFuNBJ0#ke@!p9J^ZV^yd0q@M~(&aHace%9rC~ z_$=A0H&15Ss%Bhk@i?EUh&t{Sx)^5cd$nona+Gv%rEy{G@&OI}dWu+A{t;I6CW%$4$-fk|oaj3gbcJG@Pl>ZGq}DC(PBmN7 ztrMld%-8J(IIi!a6F>B##WD1%e;KVL6DXNpv{p0~%k+9rGa(z$lsb)Ll0GJqQVEa2 zS8w|mZT$qA2BXoCMFhEO8an9g(8BiF=xMY0_d4FvSYJQE_bO}m^yZ=&21dY{C}H{? zQQen+?-VD{ul)U`f(U4Ap;zcGZDZo=!#$h;Hzy`{=>E~d4Yp1=???aIS{Cse%qKtR6RSvB&KI=_ zxg~qW$55b=I!rx`uJhXm4HTJDSrcSbSG2MO$n-M*L!tECUCNpE1I#5E-0ZhQIwX&g zhzYOZK46I5MU^HrD0bYq!1jFeZ2LJZr3X-N8T>>uCz}C4aZb3ypcNLPJ;eY)u1d4e zsqgp=JhqRQg_;R9w80JfsMlJCtcTGg*+&CHrBj#nJkqgJ^mu!0? z#@0+k1No*6*^Y$}YDVaAsK1hjLC(LnyvHmVYhzi55Sdt(YC3HTi8>V+R8g#kxQ;1n z>0nRt$=L(^%#!7?LzrU|u`7orrIKtyG5^pok;g8W{wdDa1@rym^=iz8hqt$~WbmPQ zpg9{CD;H<^$BThZ$t6yLF#kBKKfT8f2YyCQ-2TLkX&BZiE>1oU!YmDmsQ8N3B}Ooe z#_@=W+G(SbCz#BhAU){GMTMjZrD&QUp8(Dq1(O#bf}BWj@4jE^C}tF|LgE8AjsOMS zfp!(S6Jwk2asm-%g&hqUt2qpi&D0=fNrgG^s*C{-i*%kKUIZW4hrH;Wd*C9bvey<5wuvmmn)$zhON;tJxVdt24n(m zT>mQnszzmLjMTd1EKZ4AXX{e3Ta(_JMg_9Ft;tb-FB~z1LlxYLFV(qep>LS)ew3pwM^4Hde zM#Nd`Vapwh+Kg1v6EC@YWHuMqdxahJMj3_pga-f(6lP)X!_-03)loEJ{<@R2Rn;a> zeZ{ZNf`^y-$uvxXO>a#cwQ>yga{Bi0RURBc{nGQ^?WTY#N%N8R%`HtKgcC`&GwcMUHT}4ZDwy_BnoX4Bg}S`AG(g)g^P|E~_o;E+T5wNtzE; z^*#$E0}{95sZ+Fcmf5s+JvH3E+3~l(K&J;@8%gImW~mN#O00Nb_Z+AhvSz7&bDmlj z(-Z|;71Zqq%>Dh?u#UHw*%s?F{xMiwQ`kx8{HOt+nuRLroG$-zl5iH28_Bx)r%fvlFh z>=f1-rM0WvN(M%+*%-)1DkC3ZX0+ymcoqYj2lfU^YR?Fm?iBBmcZC^T9K5-RQc-rf zHty6SWroNw)9>)~c@z`~dqeOCNYB7{B7T#I*_W&$~_be+jw1Dz^6j z#Ex9)3${^Hv_>AJ{bCH}5Q{QNpR2}i`6j5U4h_)UJy$f>)~v%!Oj$!hsh%O!zl6ZP$SVFXr}o>p+N) z9KFiiv4Fs^1bjuZ4X1nuI^`Ber&>QCsIcoIKk^|5lvG$Ei6%p*8(&YBj@~fabiszD zKgNz=p2*2z{jGyP|Lm~6-+RU?Sm=CC;rbzm}nO7hGrJK}?{Q)s2@aFHAw)P1aJlS@^A3ttff2E1F zKp0oI%9RM6CKf&{9@5*-85pZyM86O(hII^ZRMg^&i5OCl^0U2a5Y&BS$2OGZ?4e>D z`SD`P20xcPPJX*V=d*hh2nt}eR&w+}RGL7)hc@0?Nc@P~FM~J%tgoSvtTaHBCdyts zbqnkE*b-GaF?(a0BT!H{r}~RK>aBhd3;7CJR(+_O7}l!?a-~q#BQ-g_@9)ld4_rbv zEftZGR=B{ZraZX_4pB0fkz8K#lvWu0^p>AHUz(zQ6It0k3-thwO+IHh+`yhJt_WCm ziG_V;Hq+pH&pE^bXjQb-uGWE~8DJoC7@Fl+OFB4_D*eICz%OrwhG^=UD3c%fZh#lR z%#6bX&Ck|EJtLcTP02rM)p_x-4|6nc=?YWa#8aEvri-R{J6qI8n0bEvmTP@_##HVc zDEDpryH@Pbx@_ssv!0me_4Oa(RaEhY5Zp#NGv8AGG?`1uky@V3e!IaQiM0>nEFO~B|GS!ffSd*5F z7i_mrF}nipO;~lcORPndwCH4lD4cU0O)45P6{Cy|EEJ`4jU(mRA`6@Ihx@v{){EM@ zBYs2|S%TS>=-2XZ`N{C_00OCJO{{GV%@)Q?dUxoNbVccWjFNnA+@8&c!H-n- z^vCR*6uTt+Xw3NiFcT;crtSY`aMxZhCFzq=HWL7ppU>Ao-DS7T>2zv!4#8Vf`G~fZ zZz*2jl4?={qrGkPdJ4JG5+b$;1R5uxXZ{*U@MrgOmzclg>iV>q*ze@_7*{=G=H}$( z>ca)LaaSkbHoF$+(i+Y(xoMIq;rGQhLDvEc3DPx+&TNMwmr(Wl+=8q2liLQAcrLR!a_eD1(s?fEkmYHYO z@NYdSjnWB*mtoUN5tYeYDHc{!YtsnhnHK{5`jdofUOsv78-c@eEDQ&H%cDIWUHN^J zJL$^tkbO_gY*P##_bpE~F^-jZhF!r_xuQczD^p6dsJDAck}GUq%wD5$Vo^Tqw{m71 zZ9b@HozkUU&#fq@oXIWdjBRyyXuh?}2&Ee(CMaPMVjCRDW#^zXFG5800)l*MAM-3A zqCrKw>DWzMJT^6F6FR2m&-T9B+wOCd>58J33TKa#wZoe7;Zf2dQj(GOWafOG++^L3 z6jhsV4>Vd!8Pip={t})_?CRP~iTSBu-iQBLTMl!q8-vWgSe>~dnt$!&g^_q^klty@ z%7-oQsS;shTRI$e%L)yaZH4oT9EUT&{lP=NWuIadD>wCrgCQ*YD-KYb7mh#dv3VzV zw!C2V*HwJ+R;p8qGTm9YNe~;E;a-`}@>4t_#ny&ByOQAJa7>`^kc%;E@g7$iws+eN zR+bw1T9|s$k%z=tZFJ!ZZg~~)`mpgnpFi=(V{Jtv) zO5I)_zid{$j(Oa$z%<3!FHowuplJux%I2OvgfFZe0!w>|1jgk~i*Lq97=^WT@Y*ed<16;*>S<4Ri|*m@uVCk&wZnF`gJ39 zinEU6L{TZyZUTI^BWk1HKvN1LS(`2rc+K!Yw*Pr>raYV6*@5R>-3u~7qFw>WcbDXn z(amX;a?|iZjy)4tdm5Nf&LstgtOm)Lx*8_)cT%7{!~h!Z;{-(#Fv({ewJ>0zW86r( zs{NzX{+xUc|LJYi$-1NCz%5C2|Cj9^HQ7g#)Ut_n#b$b@b^Q{3y^Rr(_#iNYASFH6 zsI?RcJW7n%!;TSBtA^la5StyaDzsr<7QrZwmhX9SemI3U&-=W6`OApK`*C+s7FM>?#r<~Moum)I#QpMpx^(~IoVp*H~) zbR3Z_$cwJviP{wd%PCoF56Y$J~+8hmSTmYxo2VAziL&32>PvQUG}b2F2%sxD7O+M}zvw zV^E2ztnak)V))UB>4-g?6E1aioa79MrU zM2yTv5k6wJOPos`p%pFQGBlSoFS~pb*E+F|6!}Ya2xMh+=#AoE;y))bwrlN>qzs zJ#=R;MeN+PRK;Q7{gFJX;$XUOdeODy^Io_%2e!{FCMx;PxO@JIO8RN*dzk#Gs&E+b zQ*AA+1Pp&271KmAcfDg0SqIjdi8;-&Mm)_bY!)31y9tZuypsr`kYSYR59Xv?8!JIg zX3Us2Y3@S+PD2i0Up-yvcuH}ij3BtZmHyYOM_x6${ZvgxC|LP5sxzz)B-SG+^h@u$ zuI3P{?*=m~4p-V!0ei6{&_dluvcStUv|WB$MZ67Hi=pFgDMU?dzH(qIuOlZjaC03& zppYJo+aoYTh(R;IYMbMHnmnp-`uKVVCpeY$n8gwNE)6J8i@mv5G2LUmZ4ZkVMkIq< zW!W%T{DQ6SOQrm?Rju}aHWvSY{yO{rP&`8d0Y&0{&#}`I!hkW;pxl5FfBZM)FOAR* z7!}Zl_>UAR7$MT znQ6~(tMo<$zoK({Uemo8ppgomoRzN#$DZVoUbhHV5*dXPL5aYqS(({akl{B&`jHWD z4b44+ArBL&2HO9l4JmtSLB9>r$);(ILC^MCyPM zs%>=a^_S|#FW$MXDKll-2}pC;#iAi=Fl!3h_LR3wJiZl>-EZZAS6c~1alk>G|0tRO z@l4#IA9sLJ5Fo5zig(St6Ut|9h(z^<#{600UxXUM0UOMsiO`rHPy@#6 zzeJ_kL@FH+Dm0q_XJipV2p|m+ki;VufEa?HWmIejX3Qc?Er2V;D8yJrqT~RGxD&-P zYUPt2;uQTxLt9f_!VoQ4cDB;rPzb55NRG!(G>qM*RB&5kN_E^1X~m*{5Zn*xIFV9^ zd|(g3u+kku*#X2q1k9;o=OD#n7A^eIoAVoV&XhniAGJ;0<7c1z0?1-?dwTPAx8>&L z3DRgr^*ihuU2qjd1?BQP_^$Nh2|!XCuVZV6p4N46i6JNq98eYzN;#+Qf|u3!m*J*d zo+DN8C7QKI?@ojYVbY*RbdOocZV3{OxSul4elT=@9DOeRs=>jHg4GRAXB+n=Q3dyd z`woN;Xi*v;g!3{820%+RkLN0I(Xmn*b)sV7*{W(o8<7r8|HcW7oNr6fuA7JISkx}Z z8V(Q9vt{!fhOzEGGMHnIrC>s#8g(1f-7u{(z5z>*qkYg?nO+%vGw#ETVO9{Vv!YLZ zvE^aW$L6G0w!I{M#Qw;3=3AL_t>)35t7SkC5=_|EFnF%^0buWk4`lu14rH!1sPJ}* znHyfC9qM|@dNY~e(fXZ!>qJe{loJ0u?wG=>sX$LBlX=s_*`puaOQ#+Uo{(@|>ci zbEc=ek*ZDvws`1Vrj%Pb7VL>AdX7IgbtN>?MAL@?7QG2if-j&u>__z10z9Rb<+6I z02zGpUiFNwM*8-+*MPTgvlVN5aEYQ@)OY3B?5oi1{-cpPvtLFHcXrv-&{}CV6S>C% zL&7pu%}@O(;P~whs-AZ(i@iT(N>bUn5r&;a0>F;oD3Da$=?^?=k*`+b@w>}MJjtvi z#ctsBX;d>)FwH|5CgRP|EL@cv9_t~8&}H$n!Rjb0hu39x5mfV}^K*{KC8y`QP0t?Z z$p`w9;1oO;87|C(-WtllxwEcJ39G;N&vB<40UgQ1QIag!cA z4q$g^`$4-;BPc%0#IFFiV~+8L^5PeEy~m@9f&kX?bh+LluL09eI^y9tCP5FP;@s>OdWL~<8S>+m%f`S{Z+ z{G#6Z#N8h;xs?BRPwxTVqX8W*AThD;p7Av7lMgTE{i@=lf-NDO}>!5 zW{=Uwne6et0n+}{5Z1u&;Be9pjQnN{`12eZH2YKR*Yggr8L$zs6|T(9rG3=#4#0Re zVc;aG3nzEG{x~`xlp~znQ5f1HmS?5Nx9m7BC;u9OtFK@O|H}Lm{`Nvxp6N~0@ zL-_DGFo^NFjp556G_K!t7IH8#^{MYU{xu|g-5>C*4%eyAbaDmT?ltS-wz%ot)M`Jl zh2dq;$lGNeA9cWVO})}uQ0BNL+RpJ8rvBz_3tKb9nyg;m7Jt|7eV#%~Xpv=`b9f~) zf*p9bLoD}qG2_8VKF#|JM#bj{HO4fpPSQc8=9oE@QM=sCzpe#V)_EC5T3%C|_L@y= zc>Qm~PZgb7vWlDTe9mhXe2{tAUl9NN>-z?XgJ87g`T_6#*V6M->CbwOZ@cR$SXyit z@c+qMkNI9$$r3>DJ*HMuD+z%xG~UN5DwZoLO)TMIwba`~p{-w4p@~W@kz0D&;l41k zQ>v;pan9g0pU%c)Qgb3q$PZ0`o{mR$9`*=e`t;K;{IhA_$n$bx3T4J#x1G@qB#$`bVQvDhUT?;OKDE=Pwta zy|I3nf18&FDh=5C@IZ7zG+lY6T(Wy^>R_W+FsgrIknaZGcg;%c)zZPpgJFu>wR-uq2wa|C4X| zYBim+91_(4O$PAog?Flg-dsAmBx}Yr)qN zX#piPIH{+^WBz31QAJGOyqm$4A$^tHu=VR&IPvx82RKPwsa(iWI}k!>4$0^m6V82AY1Ii5)LQHP4hUwo=ctk z+^ZHJVi03AfUZ7rzh|!m!$of?q2dX(n>Ss4d~K`0(e31>O8pNew1B0FOgtq~NEr*)K3L$8jx`xBB7zSgsZm)Dz=iAqgdS4SgBk-etZBo+ z-X5|&lXTNlsdHA%T?o#xcHsSUi*wXHF$Il|*K*Tk=2!OY#}>gFom+ZP4R~%`I0Pnk zj+PyAxsb$vbxPM2)i&Z{(|&6sUdP2UR?y4U#wnvkrm@b|2SI^4%AJB2Wdb z8N`x{NZ|Ap;u(qo0t{wW!E;FB#dB3U>A5k-e*@+$W2KN?N9jL&Sy( z@7CA$acP}Fmdo_B7xa4vMJ2sYtp|+R&N_w$j)eWX^^F7pe*SUHA53TCaZw~_Rde(l za*W;y$i2w0PkC={xr>wSIf8g~rk9r39M)pf~SHGrc-(AD?g~q`-+UpeF zw1_!uf3T2Ht>=4NY^Wjd*}bm!5%rcS^yk}exa|-Z+v7ie^sMk}!9oPY@IQqguYHOc zL-X#wEhb?CmYi4rfT4OaF%Mvvp%m3Fi86;0N-qEDU|EXH)Wv!~(8MmZ!~Imt@MP`{ z!uFnhe~`6{?ZEgErn`CXwO#Pp5EUe9k3a(vwrwA( zd;$_qHxa6FS`y=;6kAf3E>NORy(rl%gC)?`gjO@L)|EDEE?O-@kro;cD23ZDzM*?l z)$&mUfF{)dL(K0PISBS{*OQNKH?`?RO@u(*48j5tITx#rKfFTNpG|-SGcXI2UI1=t z6yl>mMS^q?ATY;4I=By)&)Nj3zw4~AM%mnWHlRf<#RokZ&SOxb(Sg8~4;x-4S&fZ) z^0jNgE%SG90tnph{fCRHd5WSM5%g9x&nmk#;I5i^j8F-e!D^z9I?&gmv%&6CK03P* zkX$lMUe_mLHAs-s|5O@KXouq}KU;W^fYjW?DqMyBKM)IyDN{>^wSfD(0+XU>1JXiGhhNRvu|Mtu4@*7Z}jR_VkVE6A^U^W>&;XhCkb+fC@;mw;999_B>XYmgCF38}0}j8(*cs+C5Qsp+@| z!j7diQNpLRQX-^zr>|f2B+=mBB!F5CFmd~l<2l{ow!&(YDdv*;PEk}+PqDVa2z;90 zq&SSZybcmeqfmHOq9xy~j3X^P=I$q+tSN={+y)_~oHfGAe)?HcWBSQe{Q*C_R6G|YfgxNIe>q~eQ&1_EZr#n zbN-*3)A!%oDIA2VWViu|Y%yr85iP8lg{sQUt{Y)3!Vs_?;L*{NTC$(l%w!1pmoGpA z-`gq2olTaR%yj<9vM`*|{dby~jj$HoJ!3*GekeHafw#N^RN%6a5QY{6d1y^X*^bHp zY|G3e@-~V;p??<5`8KL!a#t;C!>?xG)w86ZM_Q>hfW#XRUN>8Ya$VHd8d_NhCfU?h z&`ITW1Vx2Xmv14LK-kZ(zftJwpQ`c^B(PJ5?)l4z(i)Oc4POkU83aDkV|F-*!^BM6 zG2M;f32O;3mO{z7_kM0n&GR4C=yE}Tiby%LZBLFYIWyo~BmV5%T+eBiY>w@*(*qwb zIWH0_>s^RN^hB@vS|cw3=)46Th163ejo!-10rK-Ga71JU$Vr%f=`Y|e@|S9xL3$WI zsU0#DST{yA>bBuVZW`iLy8(g#s$B)I1r?Cm5O6q-SYIpd*lnl0=C>L?V5ok;As9Jb z1-BIn36yMn$&P!Am(tN^#hX+$3Jkv*#`)|W)^?$#26Ayx-TX_}ai+0We1A6PH$X@` zdlsm89VZqVOx$-DVw&7yzs5;qv9Lcl-hx2^wtIi)lEihi5QcRu~emm zCq*7soRx;Gcn53uehfbbG6UaxsrQ!u7U|g#1T5uN93=FaB}}`-ylQZ^)l|OL8Hx3t z7!$hKCesbOus#Z7h3p%(-ELak7r!0RLv-U)_n*6{`lBYCKS^sg=2e^FnsO34CD7OD;il z<&yc&k9+6^q^91ZGx3Xjm{DY63EId0w(bTv%%iM=ef-?cE6%Q_=7FsZJA&aJ#mB469VyycE zj|1{G`J5pVt|jZD6C0V)vC}mVA2y;9_qq3%gU_|ovCg>{Sn=DoB9Q`^pzu&6l{_v) zG&K>C^aYvuWNjdufB;F3SjPOofD^j6n=9WJ!r!+qb}nu_k@Eb2XtC5VHwBWEXp2wq zBMZa5oRdn$VQAnJiWo)mJF=CXA4lq6pVi0YgicvvZ=xbbB+yj1xWsa!!DUzl*`%(T zsji|zLe~Yg82uWjg-0T2oMD`kFgM==cE?QNp$Y+XX?zuHj3OX_U!ZB5YU+oXO0%MT zji0Wb@0(M%3!(tvMx{_+Sq`GPNKlReCLGgK90BdRBWuzM+3HmkyBP^A{w0ftmT9E6 zY|5^ng-8QagA}oRoO}GQEv;laL3!1xQJAJ}>Ery>bU9YGm>lmVq{R;tECF-Gft-QA z;2i;XKb5Y^`O53(0@4Z21vJ>W1mq?P%M^51n@DU&L$4#8)z_9@`9LlG^VKxqjcDGGwun;g9M< zy!TDIh$r(or0!8r=$}tpJhz8kh*B0|HQ9|S^(@Uwu2Ear7>^T6m|v+hKT3Jl*;^pz z1n>CS9R+ZXUEym7nx_S^+JP7(7{8)EK|M znXC2Yn`Rmy9_%H6qeKNyk}H907`UCXyOkf~)hZC9Zg!jF_JzneaoN)I?WEsCQ)dO! zvnR%@^vD%AD-WihA4wmf&iz${~ z`D5-IYri<>EqEA^WAoC|MbE(JofKiMlV&>BD~fxG4Ey$C_t%W4Np)6Kxl0q`;^`dv zvZf(>uZ4UDy$bMG?mRQ9%*55kuY{4|>*a=(Cxyuyv2;rfpY~S|&$X8|mcAB=D~^N9 zHIb~!TEOx^FK;$n|L0jQ88*os!V~9V<0J9k<>lx5k6&SCg9)~UY3gTBZaaFfTSg)( zPj#d?I>?4QwcELywUg`;d3dncCu>_XiC#-A$G>5vcf4?iipR|3bUL|^x2WEQcHGA_ z!I@vs|97bT539gVhv#(kyHokTu+xkTfU%HV%ozV?sQllgf`9n+D1h~U$qHgB6*-U_ zn}iaIs-%`7$zhf44}>+w4DiKPxIfr1gvZAo!PcH~a;Q-viga(_f}vqIZB% zqs#804!G`yV<6<22w8b36YO$H*{~8&pk7o+A|whr@=6oh{FW0HXibU)jSEpWea~d- zwz_9ei-C_=vSg6~!8!#X-2xhjm*=D=jISZ{>~kQfd_G+ndLhsH_J2T%n`XJP!1@!J zQN~vkN8(KWFJgw1-A0&$uzqe3v-RC_oW;IzT*Rz;&_`rNghngdD!CI)q#t#h zd0IACf0f>>MFvdp`A`n|qkK@O8MNQ#psxQ0)H9uEZoB&D{rn)0d z#M!pl2uv>qxO_sN^CJMckq+;8)?TT&Nww>Jk_rB+zb5Cpg#ry)Rt!K_L`sn>PctcZoHO6wY5oIvI z2e(>lf7{JuU{%Q694YRnuB`;Aa*Pe*%5>27^ixNI8yKJg>}7J3sA|Uk8VA#|EUn?5 zmB|yuIvb=+-K-?a&NYgu4vv&Bj50J+P%4s0Aj6)Eu^?>j)hf-H`zw)Z=}ZzOf59x@ zHvSyf&nW+4z(;E0Z&}{cYc&9OQj?;s@hq_Y(RY8Er+)q4Iutub>ITb zEu0MgUub~E;7}n~_waw0?2XDjwsQiAoo_U%VzC!&wedxW+y#|kP>Ko&P?8KXRyMmE z?ljy{i)Tep4?=(d6i8X9F2AeN-~D=w?XI|Mlu+>JJ-6;#9Z#;Ni_xYMf6?!VM!_yx z(gt@;0KMS5B6E~-hQ?EI9J1&o&%SjzBhRY#JSfl%h_2-72~|i%!TR7Li1_v3HzSqi zR!Kz@#NPu-TH}+OmyzWPBn{!j{cM8lES{&WEYABt{r1KW3_G(8K>6ofJ0dI&2sT7=_&VuK2DbrmYU{4CCtbSaIcB&<3FBkY7N<7NP8k*<0@csCtUFSzGzb{j^8Sip z=g=cCLQajC3iR1#J?j*K75Y>*k1}f$K+<_$HuAU`QHG(ct&D9%?`E!t18duQtr&a< z&P5~UGmEnCz^^JGL%?RQr$@_{R>SL3wYUH*v-8Gj-eu-z7}2inQ}>rr!w&6nf) zc-McQwc7aYqr&14avs4cJ5=GeMK$?(lWB)yw|H+Z z`z!>`N>AMPZSp&W0*cpb!%pVp0YUyp>+|crQuycmuZ}fHMd#awi|X@K-EtkHD1_!A zyH3U$husrr0Q@TNtgAQsH%D}ImpqhOLIb+#^GP>uF}bPJNaB}HO5g-51VH64)gWj%xalZTf zbiF$oda{QL11mQ%m2S+K=tcXqOFMMJt%{(?i#o1f$TGNQe6x!Sr|u6$Pzzdz`K0&l zyzK+kSDNje4DP3?y82YlU*@+p&Q6=BrjYU`Xi#9ox8NG-8?R8zlYXY!n9E3#7+eDi zg@~X6Omd8d>m4SCx0Img+xKj?9H+zhekR$(J2UBJka>HJ9G$G}(#l|%9Z|KXM59Bm zcSp)VCO@vUFV928-%%;b^0(Y?7s*uf23t5c{C3EsRKOyVYQFXhRHo)24_%7s8esMqskcV+G?a7gkfx3fjU3S9j!`=}Z%fOxl zLQ9b~A21km$Zm!Bp(3k*U-~1LYVB@zJ`8k0wq%>Eptl@7?Z~UW-_KZDm_!;PgB(jd zf;uN;AKOB0hkx9^7^3i}@t@+2Ebq)`y(dGSpvYa8E&Hn_Ad^|BX$r`#)#8}7?g}dp zfVO1%A9Snoi8K8^}-fYf0`NKHxfsyn!; z0{hP`T5NM?i5SOlsIFQgYa}0fg?bD92IvOJ8JFunI%31acWVyD!jd;5RiMPSs}?KP z?T+$5c7Y&A4qM9v7znnF20;(ALK7TDf8c-q=Ivo+=%fo&436Zzr>zI86zxnR3+Uc`NWLs~Il!0hm=h zF-@_4@j0$y?0<8)!{IvJuQHEYM#~bB&R<33cECW!Q2p7c&6~MlhdTHhEXwg8DA0TE zAAwK~CS58;8z1B#g9k5%Ht$Eis*`nB-Z1u-{5zk%tnv-w+}|s!E|znP7DW9!mL^B4eJeH{0G=+=uOrqH_Wn&;*Yij1YPS z*Jyvieq0E9KU~xd`S@gb|BodtI99ttg2l-z2;Y*w9sSR{(8(5S+E}4Kz@Ab?7XE&u*{V)B6s_~AT zvwo(EA1a_uT+JRcd8CA`-22yaGiCpZwjPW-0V2(XU`iebxzB64iL7Wy#RNV$W;PcQ z%B>f3p5ZtZ0PsH9_-YqWvIUsd+M_*6#TF6;NH!!^$yLQ?%Ttqx%hGYPFzwHRU~G!A zgNKtr0z}|Qz4FU@hvN4Bo(0GfQyuFHM3C&g7W|a)Sm*N2f#oiPX;oIm1oy=84WR>P zJqMav4tLwqFM6?x)OuZ8yD{3hzRsYxmOR14<<#VVFmbT7fGzcZvxLow)TbE8Rd<1A zY!fVG^_5d*EHK2@9{v1EJ^G#894u}@lZ57L2{0;LZPq-a`r8Nl*Sk@`m;c5^ZGCPX zB%ZYG2n2sm+4`oscX#8_6(eRbf+jtRz!S?r9B5MkX&8ErqVbldqZe2|^kfZcxrn=Z zsZ$xjwTkb-nD#XiF2uGuQD>HhK^%m^yZU_Md-eQ+&efFC?D9v`yP$g``U6w1s#vZK z9hB?Qzg4H?7~bzWX;&Gr#*crY*Mg4_$+au(eJ|Ih11xq=B|MI*I*MtPn*8Q1#w zSYz6U(f92!3n`+lK_nAM2pq6rXsSuW3zbJWOvVa9_Y$8rB_2(Y=AOz3`{A2@#IuF1 zY@z=^oh2}g6_6m7C*s;Sqj?gb`Fmplu&+^rac&}^YcU~3^HlOPBiB0GSL+)PTT)D< zv$;8SHOm0l%%_@7iHU4nlZZQaZEu-LJTIAGmw3M%{K^M}s-cPQA4W$9e4uuRcU8I+ zg|8feBl5m6G*iPi?LnX0q1aK|$QUa3Fb_N?tLpshVd$ycPtN|8zjORy@BYvSKtzZV zUlMYh@{ITse$f&_z5ImF(lN<_r-xvX<%1c`8AS0B>!a_%Ho182Igf%I6P*yc9$j~JQG#9KwQbYuuUQrg3Hs4K+g9)4w9b5frJb#S>p#+6BM)A^h(Bo4sO=52lS4g3! zOExBV_l9NepB;r4r1T5>Rj|C(E4*;kK_+j~EZgJ=C1z>Hz*6n?{L;M%P#B%Tf=_^= z`h59)TjxiIn)Tw9!H#k?r6#EMN2H zrICOd1e_d&9LZW3Wm*p!e6{B(F8lC9R6%ygASCB6NRXbLHAQp_bM#!_KNnfNy81=J z8G!ob?-^U#(&*$J^`%&&!Fl%Bk4eem9;9*~FG#5Us=oRtIU$r+1wsg^U*NniqOObk z;XzCkHdOzdU+YdxWTA4H&h1v~$Vy`|3H{r~&*7dNX^Dcic~wXQyTcQ+>T~Ead7J;g zi^qQi1gGuj6J8h~paPQQ=@wv0z<*F)>nZSbHm6sPUX#Hr3I}`Umrk<3<Z#tP3)_0McqJ18O6I@}?aH*FQ!K6%;tU!1(?qLe4U{ zP?8GBpR_XGR(B2 zp|M_YutgHWd$QV_F$Vn+_nD>4T|IUh65J@l`s!$L4+tmnzsV^BjuXIhAH*hn7y8*XPEuuUK39ZKQU%;ES_`*0odBv zbsss{|7zuaS})bCCgl(8zI2W%k7i+d*SM<~9(W?uMGxgp`|xUTzw`}pxH>8=|NZ$& zZkQ1~8?Etr04o|8IhHF!dpO5v3TU0mQ!4C%3pXb(BBKbOG~L^=LWEYTKk0p2$^4vH z~~hS8GyKk<-Dy+1fZ-2<8?u$##(@Ji zExF+4^5x{?@O?R*#>bqeL01yho$!?KozD}`GZM9TyghxmHNlM1>&~l|1L#%`hWw)V zHKy-!>*;O(oQB_=f|=1wP%95&m7kGTAI38oFdPjcL5FCK2lCakv$KpH18*WCI;;_; zn@?HI4r?e7<0pP?jtmh%P0%*>Lxc8&F|5<$6(1rlLa7%!8wXL4N`twTDrpqm`@?YF zeqzpw%np=^h3Ibg`rtWb96)E-cgN)8A|z(a7jkryg1>Vwh#32FwRiJO$i;U#qjeSI zXb)28Mnnm4VdUfVbZAIdSLia^=JpWdgRC8PN41WZA~&*W76aJ8A6OVaJAa&^`JSHu z7Su%4`lIVvrSJszRItXL9qjonVy1ydh#u_(6)-XoOL+)@MIBzu0f3>(*5xo|Z}(s| z4M~d1P6uk3tVLl-++ryALhMM|P9S%#;Lxz=q~bo73fraqX6IB$E6p=ZljhRf9>?C& z1GofT&|Ca-x%3C)$Dkr8mU$GG?VZ7$N3|X` z;m2)AnLgUQN%nMd0I<@G7FLT%P6)rN3qE1Kr*|FfUsEWo7=4=hWjS=9(XARpgTnqY z3Mu(V2;YYfnL&tN2g0PM|5P5KM+YWnjn4cJ<0ar?|RX2dKDz;ct0N zb9*ypmWT?nhzzG|`1Xclx`E^GcRG%&#jDFE}oYU0HZ3i>>D0HE$<9jg;t$) zy}#s(p&xNZS57C@ICj-8^8*OfXQ(}cMI(#Zk+f&*z_AYSIXq*a5OR8I6C+k-8UyHJ zO28iiMg9WauepROEmJd_1O0}q03*bi`$Kz0s4*Yw=ODTt9JeDs1Ao@|Gtv0`3()_C z2D}!A-uIRr3y?ytrEDZqR-gjO`5qt4Yjp=zh@%EK<)jT|#Q-OR9O1#$HLdZ%CMe`F z&Vs5B35wI~`oFSSOZGrtq0}5mMMtemPC9uRx2SUeX&3sc0s~q0A~vwj(oES5Az1lKWb29m9*O1B)6SJi1D3MQeV z=#;V#3K5Dc{>D*q!3CXV6mKlvumynz4QABUB)uK>8U&wQZ2G(XGbpi=N1f)+UeN*? zsIYE~7-_I9j`VU|0+o620_d@>b2p76b{!f_Ct$O#WmP?it5dawF#)#Td0=rryW6M3 zG7h)fid#y;Su=GD1t>74p>|;231ux4kGAXv*bgib1ac_cSHc~9cV`6pS2Whkww1Wk z$|6ulr$lSaqM(BSLI>@zYE3lPnBDd~W8306#4SsM5NR=wfe@pOPZ}-J2eZUAMV%}i3%@$QnEo)Y>82SHWR!M1Bg=`9Ex&Tk?#kR|JRoE!@mQ&D6qj(ulQP8JWD zLWij)1~n05(r7BS7Q{KqdLEIe8NI-}kF}ZDIlYC8lA|V>ytFz+Wtbr?!ty95n$9hw zxve>UtY&%ee5gg}_Cuz1Osy?=uyUp#Ho&nKvs9#JxW)Uh@x;e6_1TRU@7S zpx8YIy`ZiZi-wTJvWV@eJ-=1)q)4Fhc6vZ`c7WkcEWopT+UIVF*hTB4bJNdP%dxK- zHCR{d*y&bU5>AHMOa)%6(nW_1S@-ly+SXiJbD78u$$;*f zi;b>;LgS^o2rF8BwPFP%7I4W8?hXmcd(eeRIXYvn@L@3$7zB{=DW$R0Ut3YWEyC}7 z)?L*XzH`bha3DLbHgm;A3beQ_@<5o~2;ALz4Td$DQRFW3sxP`VF4#cI@@UG)CAnVW zx8ydZ#`2ySI*u#hsXEN7GN=pZ9{}2ihEDg0uvME{ON2y60J{9zNc-mPfkx_%fl3eK zqtq^NuU%QtpW6`FE`dh~_fF7lxuxKUv*;_nI5J^jV-W@+Wd!XxbHSQUEN7_@hUgl> zzu{_b0y(0Sa@SAPU8TO=6##az-gK>mYq&6OYXUQv9Ha-OV6wE=n|uR*SU{2L}tp+C#VuPE@4g>1Z?Isu_&i0HV8`z zH}2#a%mpMsEZ6SM=^wn)`vWN>aG&4N+WSmz{=^fkdDt7d&=B?waIO<2HW&PtNfZL0 z=jI=hi$PM8!|q-r*uK;+#ejkdu(EM@4DJ-?ipSarw^|n2^&!`qi6Uz3)R!1gO6$^^ zr-9!cH0`j~Xpce2B809xwF$wQIdcgz!EL(0#r=40)0^&7tqj1A-Rn+Nb@_&Eqr=Il z_cXEAiD(wac8vvX8}*~f{I8wKODsN>%_#QuBJ%NWoV+r1 z)_DCINy6C#5I1sV)2dTY1;yy8Pi^;I2CV8<)B4^+`ki8|O&aJ0^^aO)=N%Mu!p;m5 zqfdr5N-h$kZ4+6}KU(peyEI+O56=o!u`tn=CCBg_Raz`%B9WVg!7ev9r31n6EL0?x z;?&_>|3rqB%*?jH&B4)b z?nHU(nPKa6tRb92hSgb?b zG<7`Ge5(3ZU6;plfS4}PL_=Y8G;Tc zFjS)(NWPASdkrI3Q zt=Dt+*DrjgMG8v`fz!g}KCDs^MM8qnX?Sf`NYneWM+GJ`;gLb?*`&|(R>F57;~G

)}$kzcCW}7xu1uf>h6Pw7jBw}|? zSR;>U3s;#n?csq{ZJfDZshX3psz7^6dMUE`e03w!tM+%~r0OJckQQ&I>!;ynrp3(> z0Y1Gt&x=6tVp1%UCi&_b`o%NqOgQ_xvh}tyCXRSzemEC8-a5I7rQ^T78P#aHe5^ix ztMvL-T(BEHYKOz)PuMe>#K}0q($>sSmwZg6b)u6ZBs&DVcBHd9<%OCd#;6dU+czA}%k z)J5TsiK2qdbHClZqH#cdzxqVUz`%_;izJLCthSPuD>j^VM0BU(?d8JDip1^E!3&Ix zqgDCdigl;%kd>uTd)k0p(aczQwoKILl&o)Pb_XuS^B*TI^nM%;ZW&*%hgVcx0FZ@q z+QI(C$%2;l`*}AHPe2TGk!g5(qQ3UTq9lfOTal;cL0(P-#5{T;KAcU-zbc=BZNvDYv;B{$c7)aMAbHnFt;3r}AmUdS5--mK3cYffuU8?so zsz4Y6I^U(3A1@DEaY8)?@NSKiKWvSPF;#m+{XD+7C!K+wq*7q+l1q5j0W>O(G?KPJ z;UQ2DKlE%S4Kit*cO`+X44k^zGBq(0Ec0y6eQxBw^m#yw7VG2_$hx4BlkbMFiPN`B zriqa%E|j0vfa9nwS{urJKzapiI6#STzPv5K9(if4V0uC5B7|_77VCgZJp7${K&&&ZsK5Vxm`Y!xCW3r(xiWob1}FIOHP83!Qj5qH-@?mq{rIDhY4en&Pz19$4Q@% zPFMt8=Rfktz^*r@v-cN?vn^K}Bc+!ivJor&?DA+kPLyoy5PnY^0+2OY;InF+Qxyx& zNqHp+l9ueC?rBw?QWMj?fLU17e_hn&tVr0=OD9J+EHP)CvJBB~+(yTe6WCZi#OCu3 zxkURC$4}xcj-3SR|0!T^wOE}zZSuY3YE`pRGMBd?aTRVesgp1uZ>ZJLk?%lpu=t)k zJW|6u4_)_#%UY_d0ua{9z$`+Yuws{741)G@o2amwc?No*sS*3PWr;C{CJbxBIk=$N zbMVe{kESE4$DTZI{14&ZM>ehxwcDVZIFW^}W(5jWMk7i7926gdWmq%$i`0rKo?8qv z2USya77F>|Tz(~Zqbv$<8yp&Hs%Y0yHhAqtj}FKqrHa5@0+=r{^PpU-dNf7-I~`Ko zn-NL3-n6XK&FyNakBf!$`x;cWLVyi|DpxZA;rghq+i-`n)jyWjuZj=pCxze>3glH6|F+gSc9>53LB1Acq(m?Ma)b&Z`v=Z+kW^@DFpjn zok92g8!>EYfGi@hN-*veUbfFypy+NR@IVLE;H3!P=5}0Ih?=PtwxACB{$jcB$XCzlG`}@ex|1n;Xg8TMGK3Yt;s(fqHyAc11Q~=yeEDY`b%WLx= z01lDg+Y7%5-ab>+HEgv7c~S$<*l2~=c>xko5NiT8GO;+^+o{vsoU(LOhWa zS+Ozh0T`b!v*gbh+T0fDe`AJ)afY5Uye=PZbi`^&rE!}SY~vPOrT|73w?>k6r;)+rO{W%dW?BC92ec3jCNVnoW8kqA^Hj=X z+YRG=RrlJpWdum_ht2@o;^t0J>FV`SzSeA-OJOCvr-)WUzL2MbnM-$@=XC`(8dB)J z`Py~$?vAD=-w&~rYX!Oh!E};dLr{b8`++QjqTgSy_m}s3M}X`hy-C@w%uL+u&M)uR zhqse8cK#?iHjZDNR13$s0`0FuHz7Yh&Me7^WCWWg!00`-mEsJ7lzgIKd5twh_SNk} zq0g^MGCmXcTxLd08U&%3rB|H_P%=!tZ4>Xt6#}wGyi=NIz8+p@Hn`;oD%W(AkIR>= zmjQj%+O6y!+kkC&Ir9KwQKo2fgC_x{EEXipoQ6&x#TEWK-F$;E86JD4o!(&jj!@(% z1Q*DFtb6<|-rJA*i#cD&v!E*nqjN4JcEgG$&^rQbL>F=>TU& z3TyWV$Hs%{Cc_MH++rV)F01^RtgCyiKatl6X;CgyYRX6J&yZexJrHk@;T2g+sLF;W~p5YVtq@yP@aj8NcC8kDHVE;cA%ZR(d@-&{KmV9-?A zR1T0-+yRfO40yB|$egig)$g1+hwlcoe=|Q+YvkzJRCk8j;@&1C^Cb7;u~?;*TE>t4 zQ5$sH%P%=1Bb+NJ(F6~Q0>|JYbKk=@a6yPA)wnKalao&s8r#ekGe&vd+i`hiH5nW+ zS+(F%dfQ+WGJ7LT+BiL!wqQ2?;-f)8l^u9>12Ze}9?0-*^Iw ze=UXrnFPl8Pf~W~|HY71={d|zOZG*~P?5S`=F~QLh7AI+EHy2kmH2eE3$guA;wZZH5OIKOQGG^RCk?IE&iUMjLnC;V%33U~pg#oh> zYzd+H<{U2#Axvz;E7_7pY7p&5YM@vYAV%WGXy5w zvLl@C_zB__lowygl?^{q_E+%`#n}D%vvq@Zk&&yf?@uoN4c46!Lurq^nHs5L&RK1( zr6=-lKD*sEc~E;q52#TzlK1;F`sR&FQR?p}X_^*#(c59l_3!b#cfcB)9P2n{uKh&( zkllI`;IrH)TlTJqHc0(v+|YQ^oEohhq+guvn5C)#^=NOvF{u@hftq!=O>SfdQ?a?i zZyKu8(I<`vkYZ8mSVIv*@mZ@J zC$5{me2Z&5ssu}~q) zBy%wmhT|3SA}b9|CFviHsxDPNQyk%&ln9&7ST(b|tE<_7oR=uj6nFA{qQ|WKb0@^X)_K^?Z=z|~E zd{lNJ>eGjsO+8r|)N<#V0DLWY-9g1e$zS&I1byCAPEBT#yU^6zs@C?W ztxK-W%S+0{JwnZR%Y|saF5$WhvCgxvZBQd;dRl!o90To&YsZF~iiQ4WXX`Phm{hfu zbT&i0F)f$ki|DN3`>p6&__K|HPB$S#*#Y4FYWLt^_1=K>zE($?v8HTRC%fgPK)z$J zNP-}k@dcL{$+ChVaLq|Gz%(fTTBlmG)4QJg{l)4-C(Azo<0oJ2e|NibnL7&qod4xl zN>s6Nn&bEf8<@-FW)xa92?J;2B*Q$8l=5@DXP=UJ8a3Le8t1{9hGYybVW)db(l<1- z0Q{Y3W-NbWp+4HxqYhaS2|5W)A{LPyQG!^pH~b--1$nMo^3@-?PNb!E*Flx2MD)5G zz@$VKbgn*LS3&q#AK{Jsg5wJSFcs2iSsPD!5a@Mux}WGwZpJaiPGWFj(Isk{#49w9 zk#nS1BOKDFd!xM2X{MfCx4H3v#k!pAf23mFUcaA)d-?obFO=Nn&*;4kIq4>tK6YcC z)BDH7D)wBhlN0#hd65*H?t0}9DJ2d_-0uN|eDn!^?Kc3t4XwE|gB$-0>5r@Yq3p5( zj2m8^?jxN0m*R%7xHUJ@C@-+Qb!Erk7!#%cCV&gY6u*e z)odK5xGtSNU-g0N7Z@VqEHM7ZoSaNk#9w#;ED85#3`pTxGJGwe)d7V)E$JNqRQvK^ zoH!o*T_m5`&RAkSg<|R7a{_!s)q=6Cw5p$QF#-iYK&#x!ADF0cgAFqWdl5Pv1M}8o zFKmV?G=*v9YFO;ohM=UwXI4pTjf?XnlagKXa1mu+K+ej zt;2@u&2$P1*7?O8gFY1frj1qs^f(|vK**211EXPc+eALW%PH*37Ki;=z;{>X+`)SJ zRlsPuA@Ir*SjjHwWX6@=nVy@b2=KS25|m73xtty^)_Axt3u$FqnxU5hzh|pBkClXJ zlcVKN6kdB{paNZJS7>bx`>boE;wjF}xpAlYL& ziFBoZ@Ec`t+t(=(W)ExvWbYpAuvSsZp~;M9++&@^SpL+H5D|*|ecjOY;xY#NKz-_R zFhA1E2TepbUSGcXP_?9p@UWcd7Xc=a$q(7rLqiG$S&e;@w?t>bdVzYoOzpufxkOdN z9Ror9du(N33xwMd95n7bjcQ2+jq z=2(}Go;^Yy<#@j7%T}NeFyWxZ(}^d>To~RplHVewc=ewmooHY6NXu%+)HoWScB?bM zf6EB}N)dfUw9I^`hyckuN5E8o|4<(%s;)V%ieYvgQMnE?#v#)>)Zq2aKNJjDSl}*6 zShGVjV*9JsG!>{c($qM$T)5bIuC#AHQoWM<1n>!c0mz7;?GX$i&_A{Sd>14?_vm4c zeB#9Iu1Zvm1pAF7Y{3xjoVJHWeWNk~(+54T1QT*`;0>yGhWLn1gMoe_r1`MI(b=0L z%c&ChW>Czr;~1Pm)kyA(DRUf$4)vzJAf zoaCg7_wk=Xqa}74gP~pTs4tVek&(3?(LV>x(+U}EYPV^^TV2Hn(r1Y4z?|p+!u+kz zh8)k1_tsaP^-sBtOX)mJ_qDAt{$C@SX@&<_nq|+o_Y-8Nqy!59?>JB7Hy0=q-g<-7 zQx!{?O1mk@ySL;(wamLQH5#(EP1=#`6uHEhACplT>P?zOM+`K_e|hEgr}A~Gg`e6X zLqc@i79G|SxHf#Ia`P)`lBSiZ(6J}Bj-6EC| zV^i`L%6O^`C!c`4;ked>cn6*O!99N8x4Yu4uh)m<>@%y!smA;EB43?TBrjQEoV;q7 zQ!fqO8|ar)nA$nq^f2tL*H_6j9$QsHNi%MWA>Q8g##2}(*3 zF;TBmOBSJsvN$sjLn##%V8>H)6s9x5J;!~LyecH=$}rn;z_=6w2A8F~JlknHH3rzA zKXKX+4$%b<`&1NEN3{J%6mF%FUZhV~jVi6<_7K=l!ROet^f&$5(w)67uVjG7?I)kDdpMP6Q^2f$yquf%rOm`0~j~eVV4{1S%+8e=vAIDMFABb0SzQ zoG%+NW|naa$u$@NTAaNPkz*Dq;Bo~oRE*0sz(PT2z@)I;hj$kv(zjw}g!G%P~kYCn(YO=($g)wLTay~&;%`*FEQV(mEWD9jE<$Y9|U zhlKVOFTzb6Ak`E)&)_XAr^>T=B1y#m=aC?(TXfy#=Bw5_jy&Pllh=03PchSzvj|(IolYgPDjo3BTiv7R%3txmRWOB+K~ zMrc&9ndMmJAr`@PYX5kaKj)1kn!+ranawBXlNp$euiv;GdKRxG+Xr^^56?1Hv*umb(`{Z*K{C^g$Ufm3SU=l>OY7%@X zskzA?Q_s9$PVM7N*oa+2a*SPGfQX*Zf|JVDK_am=fcRj3?|Sz2AUGEgqyvTMDsPz5 z;>|>N_HF!o_h{4hcj5D2928U_ARs89@Pg)}3t%lscvWi0$aZWBStZX(kB>YumUZzzAJ;46t&@f>7 zJohQJ%^GI$I(1`g;qSrk@#l48a^fm(pyohuVYeJlldU{l#49CLWmTVLZLb4#hA&Nf zbmXL=M{D_BPk;=S?GUCH#24Mym3#;DLOr20-!Sj9fWZ@XiXwyaH(TecO`dx-k>>Y> z(WgJ|-p3OkCoZ^Ys^=j#j?xp;n&>}7S$RY8*d@zZuaMk<%l}41n&3hPA8^fwuQ__? z2P3iai3RnNI_sF3PBVgegh5usoeGNcle17u{xRI{fdOb+dghFb9)Q7Mb8_$tC zb2a`4Jz|m8+e!vAL@fV?{GI_XJq}Bm@UFk!aOjEn=Tlz-TCPPU)UgKd-tog-pW0x1 z^DpCQb92Cj`R#M9g@*6$Ky26bN03yl9s$AJ^=$2NY_~m+%sj9AgSIkUeVdw^+ACc0 z(CG!k2Ja~^lsP6Rl5l248O(IDc=3`)FB%P`p)^{2`SIP`ct3RT~4DA%B32@Nb1r49db}$Od%gC6* zbu*qSHMYS_^h6T5o(%E}#l1N!62T(lcNRcEv=lLx;sGmAqqROwLPU5E|Z8#{mj+XtF-y(9ap<65ih+_I!U}X@K>-fd`eapsv)qeuX~* zg8&DCEQX6zXpDP=-5^#xm2C?i7M`@2PqM+Xp}zkSEh818+=_N)p^SIsVAaLz$Y=rp zLjgA$T3+S0E@D1O-DE=avH~5k!RJg_r7r%}Xr_W~YbdQHQhV#{^O7~PqVlA9CjMh4 zhhF3bwSnh`wI8;^F6btp(nq zmtps>mU&*bG`FevxPKVwnNcXGb5R9I4RWB6YKc(}k3NVVQwY|ty$W^a80bmS+2+To z#u@bqz(ysY**6`}E^{L(e>CnUhnl`1LU#PNjCos#T8^y;5;#w%^=C{fGHajT4)S7p z-VEeq%`HB`PZI2BGL^u6!zZwV!*u5b98CS?<4EaI-&CdispJ2Yk8Yu?G_4Py0EK>x zKE1(#4P-+sxRICWcY?J~q38naTnBGWiA4>)EqAA&$Fv}TRwDq;)y1`L9jfxD&FIbJRI=({pn zaTgm8yXIa&HFxii__O#)qdJ$=Q=&!^dmUj9z-=^BC_Q{D#FOfhY&dq?Xfx#WA5D)e zFr7WH*CosDY!wO;x~Bl%#5NmCG6@DO>D=33VXbheg|e!6kd4k|P=fwGfC?z=G|aEx zh+<{DNP1=8UZiQQe$-~4@bsb!3!7tcaRwGMjW4^@un&00r8KO8c3AzqO5=EK6*zM9 za+r|_6z-z4cST@jwwDp$>MSycOGjQ<#12~nw$0U!EU0iR8he1`3fU-)M97@!Mp~Rc zoKt1-+#Utch6v~^N-R(o2XnlVc7LWgXX>YV)#F0X}Hs=kpT8i};tPL_5b9%A2 zl~z9gI{(`0y1q1@+*;^~AT@FvxiaM6Wm%|HN>kc1a9esx3`%wm-CiI+J5y;|l%g0y z^rGj8L-|^L`6L8Da`v&M*o9n!OL(cmbBsf|06T?&0PU9dasmZ0f8`fkibYe` zia0UQOAo-5aT8>J6VV*^&xp-mnd~Ok)$sV2_ntwSu5~TB`rrW_Zw4=a6OkI?H2~=? zEDqY>%-+M3Wvm`)RJe#dIpc^MFt!?HegWvyFI==5DP9!Q%Uk+f$mxr5sJ@XXykn89yF(J-EH6cwOIhcM(2wbhpw)I{Xl=cXo>~O50o~X zOM>Oo)~mM9M9o`%V;th@BL1vxLbHy{I-kh7`VYvXl}(|$`y)vGQ0KL6s3ml3SO{yF zkY}e`CjWP$uAT8ZQQ4%9RO?U2vWH)cvD2^Z&j7~$uTK28j=s^AuO2@i)35dj-|3;R zhzx*&v&Ki2Wp8?S15-X8GoR6*!TR3A^IDW;Fv9{t?JG&uuaE_-hnHmfx84)M&Nn^%5s{AW&)WOgYhrc2c??jN*n+}8!%mo8<0F5O(c zrkieR!mNUD;cbF&qiho=ad#x)IPwIg<%3v;p~_MqfCbU!hdboQV<9@xm2*|m+3`#I zBi)pD2Zakcc0^4kd&5U7f-oF5Ei3@w9VQ3ho^D=(NS!`w_J&S9L(3CGm3Pjk;cF4r zr&=61`We#Ea#68nMS>2ZR2Bk;(<$2_X~I8fT|(yHx$hwNKp)=qx|*>skfU4o6emUU zW_yHb5?atLwnv#_Xdd0MYf+e0C4`S_Y}!c&(Wt(Id#nvZW@cXxS6?4;UpIj6uSbS2 z?Og^<)N3;M!NZAJhfG33hH-Emg>m=Z#zfd5(}#enuR5*izQ%kjE%njFnvd14L-mBa!G!|Tk! zhwHJ7F~v+m`8yweu~^5uS`FuCTU|egwF%-Ud`%SJaRVv>%z4W|<*JR+9O-fkhP&i4 z94+T-9Xq!)m4(O0$-_Z>g^(?)mu&|Yo7l;m>LSLy=su4%?l!(+&qE-GW-VsAYoK)zo7cb)js80*IDY}a((pAufQe{j0&>cOMUZcuL~^&{aL?8 zsUIWmJ;dI|&L72c{(6Yc4TEZaT-RVf2*186&0-KlKE}pfX&OMoidc@kY6r6bOBb99 z0GniBXvC@bYj;m>2Z5oe(BoTH6=yhn&p_PifpXyLjaA4UY1313?H=?@kb=Qu z)@_@1TH7ZZ`1;jlwl~Pp4}H7ZsR53dl(je7{F)-PnH!-u8kEs-agT_H{546>DUPo1 zIQd?cH#=$M=natV3XbtlpQ(#sKRvHH_z|Pt_w2ON>rK=+*fA4?Vw^555V)q?_})Ks z=jGk|PSLbgpLa8Rbo6R(Mk7f`lhxW_(W-#6^f~rRj_y=jQ99Y)YUsCr;uWpvu88%d zKbZoPsanWfZ>n+*61S9{_T69*DiYMsR?4{j;+W`ojYYtPLaJ?@>lb?g7dK*%%*@>f z_%1ZvrCk_mZ-nAu^Po|=Oz`W?GD!_rm(w8Bp#VA9w0<1er&jojN6NzxJ2w)Dr` zhVX2fEir(rb$GMPbH;AN=>b=0c*Y*v z2Ao&Ot(&yr3Jv{Ay=fetoq0{W=)f{YQ^+EFPkI3Zm>{?U&Rn7@nQf-9b^{gVgjdy? zj!vtAMemszk&6d$nU33^UWIFm0!k&)N&-UeojQOOvj~FaWbh4X?~&C;cbGjDd00r% z1$bT@gzCGGy>WwOUN~*df!SsXhOL_U#b$4}&fW-?J;S+_OlpSpw3<@1O)v+(NM!Vg zFwe~Gl;5+ZL&rV;r>v`himL0{FoYuA-JR0i4bt5yB}g~ONOwpLQYtCk-5?+>(kY;n zAgzRe|AkTC4}X>{*1dN>`|LhvmUH*Eea;u&+(-?-`e%&zGz)_u?e5 z%J0!CTvFgG{C3>n==E`I5Prh3!enGgkcVER%Y_?f7!mtJVd{7#IBfi_m_o)lae=V_ zAqsOW$*$6ckDaNzIJu&b{x-#wmGCwybKlN4rDi?7lFurnSai9d-RFK!cC@}P(_HZr zJvL53GNE=;bHXobYAdbNXt~g@$zvm(j{Z6mk?yWJCG)fSweN+CGGw~RUTj~EuzP8k zEx5J+A_w!TYH?9w8r*`=Quu!FlnyIgqAhHR2-V9K)r+QR?U{`Y=hlX=mqr%dm4r?@ z)BP@UmXdBEbM66TKPs{qnymghreIkfCiIUHTyq0cTgV$i&r^-Qls~rzpJ;2Ry2lO5 zT{{Y8G4v(*6WC(Q+g7eddn@cMT)s8MTCtV?=2W$`iW*1EYy+-}nPceg({L=Bo_`ZX zdS%pUTSQP(|9&8`z%Z#8_f3egFHXOs8IzopaMnN{|Ag@wrPhl$!KYQ0xLgEDS?8Hy z-qo5S^;3Of_etz1lr1kQkV$&FE46tq@Ki9DUfLPI4po;b=bhm4OwFg(FOm-ks}XE( z*i(@0{ps$5m9h>_{66=}|D@hCJE_p2Nh5<4SH-D=6YVJ9s8zzeKcOblu>Me4{FL21 zz`4n*gF9CtRA&s;5^uLu{j--pTiWT9)lwfj*%S}yk){=1Lz)CSyrb4&)5~M&{+BC!D}279QiVXv6r8~*UqXfn@`sypRaid8wo3G zW$F&7^iqeO)Q(cLey>-h-dBnq_}H4f*}Se(xJT)hT9LOV@~y>3x~S@0MjJPSNpZ$U zOO(7UBNA`agX@F!)I?>Pa_}K`hh9rSQ1Y{Yp{Ka?fy}*mbiqYcIqL8dbu_Q@AJ>-0 zZeMh#NBZ^2fk}p2zZI*x)Tv9E%+uHy`bXhms+OD{*FN%2w$t(FHeK!J&{a2hJ6wkl zI&HMY2PYTxga`$`)x*ALrtAeW1n(DGuFhQa@tGR^K~YZjTS?fyZvH3(e89R``Z}Bg0b`+&M&o$@OTtyn_wdkYE4pbiLBg$ ztn!zvr390t4HzbNSv>wMIwCy#O$5bpmS8z18klDOIOmdb`N$VcQ6t(EVgV`k_-o64#5-H$qQ*j5$um zAldv@=P<*)Bv*fhQ4Z_A?MJM}ZlPo^WYv^6yRE`l{;E!TA3Ctjj=dRlG=?I>eZMtk z8l{D-EBnXksPL%FY!YoM_H_tQ{(NwVN(Czo+YguEgU8Bt*q~2sh+XZ`&4z9yp%;IN zyWY_Wp6C;I5~?p;^?{^~$(NJ>-J6)+2THfl^)Zy6l@Y?u`$t#jr#)JF#?8nU@w!mg z8n({$L9UudHjDc7e#vw7uXKbB42gt<==c~z->C^4^Ic%~E&2UZfd3(lzB<$XF(i<} zA+@fQgE?&UQolt18Re@nKcOqn^2W!e@?}E`9^m;(t)Rg=bB#0Im&jL3Ehg>84RR{S z7D~*#?^Zv-P$Kkta6OL<%R<#IE~;bKip!;NZ{=@8raqu9pvmh|t&A!#G<5a|Q12D)b@-YQo2fn|+roNSlot>;qwurM{SF zA6mGL)7)V<-I>C_KGxQZSarJk66sI@dX-#Wt2huHnA;WXH*aETg~&tLr(o;LA}VeX z_(;uLh`m)IxHf{TBgconbBoKI_$7<$x!XtZyCcskBo>9P=I-?~RUgU+9{C{gdUJkk z^-^KV^^65G#Xik(R+NVilNo$8UQ3s$yskz}T!?@P zvB#+9l3?S9`!x|&9Zd=PW{f$4Xl=fs+1qnGEigy*X;mlGzb%FO&08WSm-TSdyk1YQ zETV(tovztmrfy^NOZ6_hr3_O6LjF}&F* zfnn6Iy8I->^)nzakEEe%AX3K6%M#~=w12+)r5eTU@umKAG1Wp5jpU|!N)DhXY5{+U}mc`*O@b$FCs2S=~`t!V{aD^ z#^c^ESCKxfp#0%zb1sVD={%k(X9Dhe{GL(J`uM4TqH;85RAtylDa*&pPB9;~$~QE) zJ6XsTn4arhim?^YI1KGuggh*q#-Ju(;AiTKZdK}=`|{-eTBkZU-A1=){DSja27KH> zScOZ66n8mgzwex~CRl-bddy!6q#UOX>&sJ(rMBuO^@4SJqsK@a&W!q#Cuq^D!Qk)g_U5(ZzOIn5*eTVp08_cxyPOJ(ohqdz=CDlPPr9i=Xbc(qXdK$~sR_WXn| zmhOA`Rk@;-%%=2*5zqWhtWQlN#mTWUaSDSx6VU;U`a}6WuRAPD*nhfwuYAup>Thdb z14h@Mzm&l43VHg;djK}%AfcZVytC%&%axVVB!C`o{AoAZG+>RFGBb2lK&x-+D&pwZ zQmvPtAyOGR1VVa-9)R7`*}*zIH5Hcl1AP==m;a)V5h!#19rcR!%^pam6IkQ3vbl<@D_#UZ2?G5j?cFD4zZPJ3t^U+ttS zK0RlL!#M2X5*Jk&@5izl3TRCV)}q+dl!iz~j={cyx!7>6&!uiCta%h29`e{9vb=HsD(UVv45myPCf*Jkut|L$6tFb&yc zFN-yKofE;V5b@FxlA9!(qU*D9Kaz;_^cjFt0`ir&%K6;Z8c% zTxc2#QRI7$NztBx3Rsu0EToBZ@1n7S_D-y(kp5g4__ceIqw(5uFmeg`m^SnZ~XUHp@xRjK~w-RbjO?s#+%O8&YRO5Shn$BvM#J#g; zhC4%k_S|lgR;ae=LQN(7Q;hy>t+n`59Za2z*t3v8*V)G|Ety8j<{hz7k>ywv3gl>0 zMm=b0Z@L+y9iuZ0&B6R;+T1nHiXR*hi#I6dnGq9N9lIprIW$0EOuxxJ9mJh2zHS1e zcP@He^2H0r>b?C6+?6>D`7NeAovN!mqSHB~6%GZ|B!;7k+(tcwz7UwAX#4B|TotYE zPqlibFinKagg8j0!VE&po*!L*Y|&%o`$F<(k4C1l?kt0?)e zF<6@)Yp8$N=Qf1Xz>$v2e!g?g$~YEcyQH3GYl>=McWzj!Q2q?odo(l>i8>*5tkChP zhxo-t$XrfyHHVAn3@{nX{Of{@+C9=k;%x3b>hj?gObI^^LGoq%W$`T%vL@1w-7ZZ3@R_d&s&*JmbN+LUU{yk=b_LI#U`-xta@>%I3go zv|r^*v}%oD2K$}scwaFD_zs+oCr!yyxJMc4>Vn*Gd8kN)aeZp^?L<0PSZh<*j&M0; z%B2p%*BW75#sXJH^u|(;73yAI^TwQcymWr*n-l1ZD{&4Up?T9OE{4#g8%^m~&9GHF zXwE~bW2!Do$o42zw3j|7BAyH>zx_nEJA6u4?!x<}snqt?b$w%dN~*o`%Qu69bh)uo z0blu;NDzLh^s2yuyO`1Dke>J6tE%Koo>5!H&1$cGxM0zoG8HIvcA!TZAn#7?o-ISK z{~cq=23V+`-ome$k3KOTQu@e;mr}C{DdFUdlcJRhLilo~ zH_zQbKV)y8`<^zwts;lGOXG<53I@@evUZta1@t`5QHEq0wv2i)1|?xZsp&US*E}Uc zUqVJ0Mk|Na^tE4d{UUnEak6FQ4qt>airq5+&xJV01~zWKcsI;Y+ijx|0_T(QRBwRk ztL^IcgA2y;NBgoTQhb63441FD&VQ^vYOVk1kV8gh)=>}^$3v-0*moHwh@AEASbnR( z$qXY^H}4^%6PnNkZ2@V>E=xdZCP1(6xTmdNa& z=a-`oGD!(fkR=cnEHX{X=BAnK*4Q3aSZnX)wq0u>vKF&@8nkqq)T}8M$rE+$ABgJB zH?-~P&mC0CH2g?J1uG+GzxhBy*3I#>@yk3@RQCH~u;KD$I*gonAO}}qY5R1<9530^#LPTevm%2eK1o}VONt#$o? zZPHoreFd4?+KWxX=XHIqWlWwfE$B~)zuP2tM_q%j&^Kk zXQ9N#wHj6RgKvv7o=qYQ>O7}CWh@{y#EA9}Z_0Hu#viCjkva2;V75e}^(Z@45@*LW zTMhf<-8qm}bvALm`4;z?;MwK&`DWutQs!5)+B3!<8A0Wx(|q5@ijW*?n=8#@sQqf? ze2Z1=g8v81KiZa;`en$2@b zes##KYvQ9^*qd=pj4arg>nZk-2yx*kCAyQkhpc9TXlwa}K`*bCr>6Xh8B|rCNMD^K zYhMVVlAnJJk5`K)wX4N^7`v99l&&|FjVhIz=hRgeB`P{81R}A3*-%yjjrX3`5bOsRUmjlDtDC#YzS? z-bq#3m)+D>?4B&vOUlF-@mKB&eqzhDt!X2DTT88(Y%s6$e@JgAMGEAn<=1?2OqO>p zyZ>P>8qGmLCp=K_{ngdgbF${?gCn;e96{FQvoej6EAR!4?X=j}l=>t4BdJfP2`^%1BiSZi)g5B5&W;6sFE}E+)PTbL(uY$_h zt1b_`^@S;l*!;Vtdqt&eUz2pKIpJ4XT7lz^855Sf3@1Gg!FX+{y94y((H!uytQ*g} z9lp5gJby}h#ZCFSCwJ`dgo37k6?Y35C-1abQ%u1)JYzHNMB)14*`pn#ZCm|`JRj>< zjbTawJH*<;5i30mRHNuftJ5db`xzrBjbG=H=5p%3m4n&M3fu$-69fY1q?tr|vB|*f zbzDrS!M>2iDgu2r{XQiHuR?P5lEAhs4vNGfews2$`?ZYAi1#m#cH@WX-KAVo{Sq(o z=fG(o=1Z!9mFj0HVoa1NkB|>?c(RNwMc=oMQxDXRudWFFu=>VRozVYHTYRouFLAp# z9Bzu#S}6B$H@h$y5wpIfBluAoE&(GrFPm?ZetY4wE_jI6`YE$*o(i^0&E zC9-ZOosl(~vM5E;TdZ3kmZZJC0H_X2tVqOFN^qx16{|`7YsdA_6{1;Hb2n zmU5BTLT$5lVGr*Yw01$HP!Yzub48<&$l3dkoAR{1(>wban~PdcUnL#F2gy2DSwLP7 z)vM*}74yIcbK*y6_EF&{J85Yut2dd88&dYzexI2Xo=jfs<+yr zTcy1X&ptgsbQ{Q$mQ*s;RBX8S$>3-G%LKH}6Bl>djf!qWRr7nulyco=hR)M#sIFb& zn+8W~bywC0`bjo4pgKzyJmu-yd4s)ZN&|QTG>XQS{`1d|i}d@*SPEtzNRs9&VTGtNW>L zm?#``;xL~_2p0F=8}661E~?FT&yrI5(ec-?o9vngRx})pru@_wa5$sk7zTG=bMT2sq&fU)K*?EG?!^)=u{66_eg| zIG{E5xNoI~+1oy83=0zVrmvwKNU5UBe$ChcKEE2JV39GeIh=ThP#Q&c+CgtFvGOGX z)Q+m?kYvG!)xQGSqJg(r^>kM`iT@B0@0DpUZtEqv$aqM$YdrA1`kieLnB!cieRh*& zx$}hYl*;9Lcz!CoYU=!J;1%+M21lPVrd!|(FeJ0n>{Q& zsXi-7DoP~onyHdwZ>G3Hy4ScpW}eGT6~EwsvOx8FmbNmgo=k59&(%S8DR<%sFRi9S z^+LK(84wLQFVvJvx0fStQh{hTsDtv z5wc)YXp?A2g zyf1mWtdXtMS{V0^82O|c@w>|LhUb=}BezF>rW7Fr1XqTZWcw4TB5QUrSnpc;p;3k@_FX>nVYs_3ncR3=lxs&rSZa2TIl|Oq2o;fqxel`NLgc&r|?H1UIZbqgQc@HmtD*a<;9RPjb|^kv&T0)k4Od$9?gKlbPsg~y;J?48iR2P{utzw{ z{bK1vatf|BTMZNK^2_Dg$j)c3ZXvA5*{ua~fok+8#TuI-#jzW2c$M{q7@`pkV!nH% zDU0O#FbiekXO0ieZj65bv4mGND5pNUR3M~de@V<|;%dkBdHXqGfGamKW%>c`C|#I5 z4y&$+h_xJ8vQD?l!hj{p!RRu5;lLY)f1^=}D1#+?QdfCQm>s|LzN}68o-@nI5TW%1 zN0Xkg(=YTVo*b{@3;1)N*^}mDQ?nxy>>o+!qC9=T$zm(u&YDG)wIXiK!stJ95K3-@ zO1%;EIi`PNN^w3gUk^7b)~VF!9>2Wpj|B7CquBLiFz0GcWRuiZn8PC8g`rSdqAaM2 zo$7uKR-D!O0hK8Yc0MiDI<{fFx~OZ_mr|Nqksk#ZIF2N?y%An1sFe5PyM$nsX6giA z%FB)Gkh%+;5;D8?;AN!hexz>&oijGxE7M@ua*l9S=8j#lwU$`inHn0-0lUm2oJ? ztN01!T5433pF!Izb$Lc73yCWBm`L};0v*?4UpW}0Oi2rQ`99X%!_REDnF~^KCdP_O ze|=7FUcR0vEl)+*mgi*}?K&x`s7$f06)c)=7Yf#$h+)9W+73k(*m_NHM*T?CwE-JV(}+K(d3+#D_tq zlbsxdizAj^w8{hk*$)hD1?;c;JBVr9<8@f=D3CR3I|A_xLbLf%xPQ zGHMVN`OR0^C7H3Nd4S%TK@2yOk_dqBy2HT00>62InGjQI5cOX?#SQg~ByE)(VqmD4 z9Wa*h4mBMOq>CC@;LmatH!n5&mL#G}P{6?G`oqBB-61Cwhmg^LNN*alK&3OF0g-`< z%^D^QgevU3_RTFcf!qvPD89 z7(n=tpR^#1zYCaE_D9T5QrZZl*Vs#hW%pqD~2 zl;Hp!i0RgjtsaGqGxvZ#*MOr)?(iv1gYsEOMY`eh$D9ytdVtT|Ybc)>dXO@RDDUQi zAW0zy1@em?Bo4Y)baO+R0^jvi^5Y^X<~0ZgCK?d-u5to3w=hT>0|*_C&3*4y%v&Qj zjk>|`0`zde(5$=4an(bY8mmFO5$dTBrh6S_b;<+zp`KmKzj4nk5hK zZHoy23A{r0-+BSs-@EL97ii-FLr~r^!chAy635cq(cHn=!Nctj{_o1%4d;@z`hkno zz^bM|_|n|L$9Lc2AyJGV960G0htM_iOukE+kQ_0o10ez-hk>EJgTd&(#U%MOW8LT& zQn3R?m1`YJdiYXN83R^u%g&NXbJEC1<%&S|$*Iu*d#a zIgi!f$~iecwsJIgbN{2<&yrg>$*nWEMy2*`0ka+e4!LWb+^yeuS37qrS34)iKls1K zx#`6y(KP(>Xl9^5Dj^iYQ?dXun|)37g@0I82KU|^{4pbqw+ ziqbKIu>a-+M2{JWO0VzGNAb)cb&&Qs^x~Wu#7YqYq|6?_pgldH#3_(6P% zvjCBJ_B&xHZiK&*P6;OhgzpDLxtkspAjs-N5I(wwK@<=ZRuB=a4rJvake2MnsE}+{pnlybe(%pa|UP2)IZP zWGV^0Yex=?0uko`%H|sx=$#TO*awg>f!{lh?pL$+RlsAffUvz=*5(v$>CxHpw0YL92;JF=C!~ii^)H}84ChpAHzQJ1naYqfzg18&MzZ`C1xDIxnR&MUDR_1>* z@lOPj%jq0SYDwnGNdXDmgZuBgZ4eHAAjF%wfxPcCfL2||HaB2F18=BA6g+^@Zluut z=ycx!VA2HC@w?u{54a^od+H7y*7Q38ZVN#z4~Pgf8w%yM$pd)9Eed+Ust3fK9`Eny zMF@izQwMZh1aj*x_wGa}y}udk{XeF;W&Md4U~QWUeTu~gQiFAaPznRuh}glRK_dBp zh<=+5eY(a6QUL|$KrfV?frWv`R1hzIK+*X;=I|v zYlYzy*rcL>I&s&{`IS%+?|Z`D)~UZ`R!#sg!C4dZsjmQFUH&%c#U}v}$8F60H?02O z^x5r(k`{%--X3QDR6mNlBgg;UHNm}57%+q!^=1M&RQJ1scK;2tkwHk85QqQ^2vAEW zOK6`hAWDDwt{5N(CSPB?B29@!j;Y|M=nuzCbu@FIFpvD4onjq@JK#dhyhThE=1}T7Y z*Ps_hc|dvnTecDY4s`i9V1zcH^bR6Gk^Eh@DIn=0fXjbuL47bH0=Rr?2YSIN3Q`1B z>_ac&s$h{I*`h#p-I(aVNgV$!Vtx#z2ZnRp9<%?Jx*OPk;{^T<0<2RgY^M?S_U!Zr zMtQT}{_cJXG(Y`!wE_@uY7qstB8;B@lKJK{8RgA#|I@7UA4kd|fRYZw@ou_TBLDR! zqFsI{zLL*65-1%aXw1@XyKiR`>6Jx^e)Y+wPuh7nz}$t4*kTZt~?;+U;+!Xz2f& zTkxDvO0+$oDBkS(ly_h2{#P1v0VqAPG$762&twA9zz5!b8|WivX^=dq!5-2q4Pr&J RhOvhEN)HrM2VmcW`9GlvDTV+5 delta 92514 zcmV)0K+eB_stWaq36LNTXOP-L&X96r_!a;FX;_giCx5~a%TdA*%TaZB3jhHG=mP)% z1n2_*0PQ?$bK6Fe-}Ngd@~HsIBuv>(_N=p z>~G)ho(Ewk2m8`fnM^H~&M?(L;>02SoXinEgw=H<0_yvN`pTgLV6npb;!^Rig6psCZW zQm+p8_V(f|sw(zvn(^1gb)FSb!b`uH{mkQfB;f4t@8fIMzGu`a*rV6l~ z&gvy+Mb0ajVYM#uDxE>wVy>H~`2yPzoG7lFD1T#DX~GLON1#!ju&QSE5gr}%TSQQqalnWT6C4xnC99Fepvq+Aa z6^pt69sns+w;zgy%OQBHLcTA2l zcAI2l*;HCl3FKADfv8|WY>TT55E&hu@B-{iu53ntqbnddKmhOo1^Bifhe|HOWl>xr zmgg6C3yr?`Atvx=;1OsNSj%OR=qZ6NgMx*`44=M@seq0ME&-8{673uOfPXP)%A9#W zK6>eyUCK8n#_{L_SxIVh$ z0Q6K0HD*WC$4`Uls2#Hc8zPe*ni=n#O%2V28ko zDKTQ(ba);4@U{fcl^54zFdB6Psuwq9iNv#}L+`fD<#;k_rve5J_8Jz(#14rVILQgEb2p6oIlI%zEzY6?IefZWP-9ZBJpw4_;$071JO z_Ct8B{P@r{1j7k(j=umc5W5oqeg&2sUyj*VQ%l`c2lj$Jd$tq7H1DU6lVkiMruPiI zm9Z3*SgdtT&>(YKOMh`s)*Kv7NqkYfXOF6$Dar;Q-w-U}FWaOCmi=^e9S|B8?iqN# zaF!MEWr#k==UKF_coL#V?UEwr*GOO>2lzKJ3Jmf%n1V?Q44zWE2<;iP_S?3HZQC(> zdi3n+lj+kD5K0CLRa34pOL)rOePhXoft03iA2m^2<=7)v+J6JU**6Vcouq>ms3t#5I> z0+Js5%OMQ0ygo=$yo4YD2v+id{_{)E|2iH0kN-J&=zo3uIe@>TuSfp*<-70BKD_zc zPZwX0{=<{P0)JSUl+oaZtRY1>T69FnudI^-5G=}~S^GzZ&s;TGovyQ#S__Yg4$Yfg zt`_y0|9a~MKm>l{!gxFaS9}fG=cu0(;4TthqH$=9q7(_aQ5Rtqmz?J^4m*T^4$RKs z;U)es7^9-7pzYzbwSiKgE`iDjei)i+WP!m@J*4n_BY!Ah`YEqfQ2z)VB#0)sEfL*| z*d9Y;+0zmdU@WO?8|VcKUi+SzNPs|m8$nz&>SMVH$*Cz&HZE!j0pgNn!6h$qo;`US ze8=loVu-&Imc9f00gJ=yco~)9+8=@GSuATpbjCq9vDkt62MqalIjO&cSULcr3F}&X5Fu^<}#jE5(Nv9AwLL=AFIy_|C&53#h^KtF$Z} zGeWd(x$b?QK6!F6{jY=S^K|+rbP5tO1Za?EguKX3&dSCT3lQv?7Kj}LR<_?Lt|iCf zPIw)aIaryU;X2*6fu{ujuE0g7ji4*g{}59>34fQoy5aJ4$Y`re#`&7!J2U$iMGY`- z#T8|ATzCVja#%`(k3)J4=BlGQx^4n`gZ8lFUu0KlM={tiF{KD(P}4AeIiW;3z%SpF zKyrw7jMH(Cs@3zJq{tacki^V8%otn(GGU7jFN}HG@CoY*$?sd>09k`Hhs<{;prcdK z#DCNVzFLQ9ccchlUXK6TEdNLo!#Z4Bzfdiy2Gyp}>alAmJDe7E5^WxllNuy&vGFDz zKKpD@06#w1hBYRV{3fmH%I7&+rf+3mU(aAfCKTX26Wa&w1X8?CW&outP0As|cD z9IvG-_|78Sfw({!O);J)6&56X1#TFh^MB(B{Ae3rY(mhqeYauB4UCE`301Q(1#Ue! zLN6N;^j1bkWS80XxWh6>G4KOCk(fB_Fd;*9?7X#5G<5fdiqZbt_ixbTjoJHC`T;Uf zVQsX>iC8AG@tT~f##C7qVhy8sBb#;&nGBnmW0pmbJE-bhxJ(>-DGQ%it3x%(tbbY_ zh4RJRQ6N`&IwK6lk#2ahtMm`T5|u@aFgv(dDZgyC3wk&*O<$N}SzGZXh>@!z)O09( zR*m$#2kh+v3)-xhU8O}+Wf<~bMOm6)rG;0$BW!gb9c=*m3b|+{!Z-ZOSi|nfs|^QJ zzCIPEIl19L0yKg+70Z=dEH|w@8Gp_DEwmF?HQu@M>=*2H+xeJzVD9u#9kf(ERN^Fy zUl7h4H81fW`8x5FiWF`drw~{1g@U|`Uy)6B3%%ovLr9vXISL|7{PWGx?EHI=VBc1O z$V5PSqPo8Ig-=nT`WG@($GRu@0B*wpRR9DJ;)q(fCTxkb5WWI|?5xHg z<EW5`SF^I>&06vKM8sIEiazQAO^}UZdO<j5JC@T^E6MZ(E^X}zk1|6yzE-qGUaPUM; z&B*P>*PNjiUg1{CdbLiP)w&a;HYKi*X3;G#L-9LW@K8SuF+?1*I>twCMWH9=XhQ%k z;;VI=5J;SL{^LXp_k6W~4s|J+kOfeYSb>0ONFivEdT ztbtZ4_D%Rz4*Cg=uD#J{EH?t281PQdUcdiz*3~DONQ{|GE&AB(q!J&`-hF6ADgpk+ zxBxk8YPPTN-A6N;C8{h}Ho0e))?@%kqNQJmT`XyR8;X@`Ab+$snaI5@Uaz34mpad; zU7&KA$)hZf7GLhGtf4O;e;vJL>5HA?v!yh%xX(9CsTq-FbJ&}6%s;MCS!TSH*PzJI-Sy5?2qCHRRf3x8<}T2{-V z)hvl5@&$)9jrjjAx%ar?$}#VKUU4Imlz|c#wTD4(3IX)PK(*RZkjnuBJ$F6Ro{rgrr8>m^2X2+j{Dk!4wx@$=p<&ucS?4ImGz9vtr#( z9b2Nk3HL4x(Z1B8Y>?=}Sx;%o-%BFYeog5U4N;ig4XnY>45GYC`{@IAT7WZ00^@2b z$Bj%#8y3wdFPUTM`Je3Bv*14u0`MNWSBr=yf`7O$EgDi)z`T#2phu~#iVW*+UnL8dj8QNfY&AoVx8VQ7UPe*O=&aD)>aA|Y@$%? zwtvFy0u6%kR21*ot$yo`u+S{*5`2pl>1O|PzTZO?Cj``X7b7KzdT5^^1xyEt$hA=> z1|q&q@%>5!5q;tP9}>0eh)N3^h*Fev(8 zs4F^l?%9Hg^#74$;oZAabbp&4&rUby37s9b<+EF+x1?VdxKL9w+Ua za}OSP7d_{nyRuF4c;KB#ff}T7=75R5sHq)!j+g7+Y+k#ES$loQd|NGKq(0~4A zTcb|;s|Y3!fOP?FP7ur8tGy?`AEZpq|9t>e zV*YP~D3W>wZnPUyr5zaJ>1tJZw5g-Z?CLJeRsoM4>a=L?7{I9JBJ8k^lZeU6t+#0& zXH6nb-Mpj|ZWAh{1G(wTZ5d=!6u zs(>L~#%gG@ByfKigXS0a%5Ge!6|kcu2?a3U`xxa52oyc?ttZn7=7v+x5`Wt_AZ@b@ zY?&@2s-*=GhDE(J(HS=KR-EGErWVWY8}4*{vITS6P6>lk+;M>d?p@EU6Fx?tFFN7a zj_z(lZr!_LX)Y4Fy|(k~Aep!;jV=&tvXL>_ewq!@jTQl|99^yl_HH~BuYf31x56dh zJU`JVGc62EfolujJJc5E3V%U7G=V_`hBQm~k?|p`pgy=L-HC`~_lr&s*}7kO;a^IC zrTm7`A@cNZ`cCq%?$)@ za>p5-EC#^Qthgds7ANkH$;eez!`XwQKYgh-1(f`XM;UI7Tt@YlK_DvsWi!GzPg}gXU6P$Q~3r`tUpYb45vsehrLWqcJIqr2z6S>nK zaoRQqxzoVnq1wdX&M8Uh;sB81suIVtQNCL8Z5c)0KY@(JpUbFBSW>1}d{|oUp9}Xw zx?A<97sS@|+JF7*mTq@?ZB4)3&u_!X_Z5HK&#+m;kFW#MJS7De28xc4joCF92Mg@u zA9(6xXC8Mp3Jp(cWBl9q>4qu~#D+2JnTWg|p0Fb~U>*+k+?j}dan5ctE8!9FUi5?O ztFbN8D>Nj{S}w31RI0Bmv57HEF#RQ8eVW{I&?4GZPJdePxbLiuc^18Yx!-_~?x#IX z{?KqdRu8;I!szA3;QQt+6ZWqzxmfpQC`i#HCf>zu3m8h96tVjQUcqp4~!fz9!K&&i94Y?!NOi zFZ2L-eSgz^vD0)7T((WOBk-X(s6ZH7hr%_)wm@Q?9fLfqS9aTT;eDB7d)baBZnQ9~ zO=u|lkDH0y5-qixPwJH#bs>|@(ixxQp@x2_nhu1sQhoHMeme`hxiB-E!QuH6;CKsl z)U)zKh;>Y_MP9JB4xBw_;*{@DF!FO#)f7dT=YKgQGO~o%dlUpe8%WR*9p z7=M}9Zw(aax)#a3z(Q#CL|Tint9l*X`=D;Pk_V{mI7JG}2jt$T{4xhK$qu}MlOwv-o3oeBCZ7Hv*f{-R&2-BpK3%;N=RhnN#?3hvtuzHp zI_*rtjTE}u*&16K?!O>z5vbe4UKiKyzJI4-YYU;FX_C8b@4C=wT!z?P>vXi@<$8^` z-RYC;T{0PG=mm2J7-ubn40y5oEzZAA#X2-t5{MjbMahq}z1n4OxwN@)R#avLVCUv^ zjACn^K!J-zhc8Z8e`rb7Hzw1Ov!Xa%s!gztvRNsHd-iKVAyy4p0nS0>C67@D7Z3Z^-&f^{c;cm@7tvVj-;xfg+*W807M&6zVHdb9cTNf>Qf1yhi@i=1JMFV;W zVkxSlGp-mD)ezW#(g40OB$-5iK|+I2mc6p7R+ynTG46DmH(6jxfTMD@paryFIPsI& z7vmGPhUY?rzhI*$3jhE%C;$K(034U`Z2}$&2>=82fZ0*?fZ3Dx7)*cLC5OYA;mk8L zd2DX$Xqi&@#m|nt2F0YvwNk@ykVuy+Sh5N(eEJ8;eRvXJ@!-rVxgbxKS3b>0%jOd4#J z=gjc;0$-qXVMJB%oTUdY3#Rr%;k6T|$e1=9#z}de%i_UqU)4n`6;lNhJU!sAASReU z#*nDe#_HzTU^{6fcH`AUeH4YUtPLsDSb$Z+)KvjB9(i6j%vgU}iASkwJ+-g5`OhG7 zI#>l^Xl+zkf{)zyrDEa{_HvtO_SVi+b_-EtmXqJnF_Rj!P)uYO&vvi!T%8za*T>q_ zP_PmYQk#k!sfugnkCAD4lsR{23=eoy?A5Ceph`{0D`_0e?YHfn@|~5}jb~!dwp+62 zb{lGu@8h07+!24BcU9{Pm`{eBx-T6+EliJS!nMZ`;{7C`_s9+R)|9Z>{e40jeB%D( zQEpQS%Tz~ez2UAu*3S3mT%d7->)z_?&eb3mXPHcCm{(_(OT+;2f~|DRAXR_?4Y%2y zhv%ac%Ul)t8C>>zQHdfI#MK= zqEM4VK$@0EYoLq~{Xj=->f^3)WX?=o<|4KVxwsR#uzJIvPX~$E%!E!Wx$7x=I)ICC z?yoBOAPEU*H>MA&hQtV?_o6f`l!-`Kp$wSh!a$~#iyaucN0=h#Hn{$Jtf~1go2VrW9L&|<0C(_ic1Y7?Rx=G=~Y$rq!AxdNRH(M00gE@ z6cT>zIS@bTJ68MIS=4Gb@I&^DTmo*&>)gaJizuC`NX<-UlfL1@If{gT0L zQbR*&ZTK!1I*i`sw{A0k{sd()gVDDBQ)zVXG!T9S9Gyq38(B9tcE*!lrOnV_F60-Zs`fl7 znL7rS?_SjfN~ZfgDEBJOuoDPP}Yi=hORs-SLch=h{^YHN$EJ^9f{lV@iGd;)R<` zRQ2$JY6buO1t9IcFfYD*`Q=}2Q~}T^>+~(RFA`feF~Vm@%|AbAnMf%e5X zq%kspeP6EF^l^V5&RAm+{m1oV?6ZG)B{Dj&bUgSg>Rf5gez;JSV-dTYoW>3rFC| zP8{G9%|Ki)AP3g=6+rmr2a7>*Qwz*T`Cw_!Gn&4ynIbSj7f$)iYtmvW*Qun06v&4{ zRe;n!V&0C`A|`zR3hZ`UI;wxWG5J&`x7x7>`TFIif$3otly^JXS$2o$bUT@IDef%S zz&dk(1B5yG_B7Oc7VFW^)$gBBvsfN6JHlw&Kd^q8E$e?n=>pjRSC>~KRBPaD&-gE|BMx41s@U)t899K)Zo}u*yRy=?C0I0$^VmW^h z(bI1uNHAEUHwnk^ojq#rE?hCz#EkWmG4NY39Fzs^irHgzn#?qVs36{b{o~s=Z@;@` zbwPzaT`H)Zp_?q%tJ1dKW$cYx1L;vGZ+nD8pOO28B--TKE?Z0~I*mXSF7i44g*zbV z*$l&+r!(j^rEwRPbIgCC|Jrhoy|9}praWWcE3MII>X_}29k7N|Q!gqQtRNeTY6^*M zy^*T&98BiL2O|pdH0ITtPz=mH+k%i*!D^@Xx7->T!HF-n`{U`BX9o2JfIrwwakuA5 zWC1b~mL1El=+C37c9L>;pvqcbHi^GP(GpJen~cy(G@+V3(y4z;6PpDqXA9UNm^58e zu3qbT#)IQh4-dh}q+{50M*8RdSIj!f34xhhFi$RbuzimF`Y}(z30?M-Sxpz}){Cjs zFO|OanJ$mm-`UHVf@dn$&1Db%we#O!gLpyMsb0&L|6~bvy$D*A09h<}A6!b7&)7Rb zn1Cc=>{X_N)i8fYfSiZbPkZ+NwP$)e@PXL-IBNqF0MUK3QF-hCcJbVGq9Sai8gJpY3UXw3jV=*dOa%^S1mL2o7ahM!-v)t+RcE^Y56C zE{U>;$(Ql?5=$Eum-!LN(=1Dry^4;ulOO1WOS(m+Mv{MOxTGr4O4%n1RAMO80TdJo zN+)*O_DUefLP<|Ygd90H1_ef@go~P!s@~IMDs`iDokm3n%6^TertE6!LY%g~{B*Lw zs~`-1w+eRBK4Wk8?9{!}p|em4AjqC$gJKdurjjISCS&(1o2epb-h8?#E%W@`*! z7=HcTE;m}TCuYL#`lvSZiEB>!1*cyJ*olA6_-=O9T<%%ITNlb3#EWTCA%VdoS-*w+ z6;f~|cxFpmBxJ)YgdKCcfq+tgN6|TXM#16TkW$~k>7FKVaMQrg4J`1@L}dDZw&(VL zNuDD~jj{s7oSJb#Xm;a|YUE&(#No+eGzifX!qSs3P}+}{?y^73IK$-?{kQgk+5Z?1 zP)h>@6aWAK2mlt6+(NZjw%@TE003)~QzRn?>$c5N>$c64eIy=Yu4&lbt<>g}a8r&g zZWd@*WL3T3@B*Y^;)z8k37<`V8kM$cyEt4aYktHV=D{@}5 zHDJZEDrfg?(POIu=u@-2=x$k)&m|&1b_u(v*tYI^w#qud3EyyFR6UeATN0wI0TLjT zrmb(l5#ySuv6XCi19H)C3P5_ykWF?6G-X>3YLJT&0k8VLqn_U203Aru@|yxE z+Y-*uS5TsEVa^HrVFTZRFGWX)N&07oKt2k9L6w(4dBIF>B<0226!|T>0~ElHo(i@?ANpbl-10RiO3YCbJt+qP zS#ik?IhN1ZrtVPScOa>RHmMqcv9u6{TK+P~OzYHY#T#H7E9)LP-((=992g{on;65Y zn#kK_V8^mvj7W+on6Lsp?Aw8;bYJuvP}G}Y%d5Uaaf4ZZuQ+fS#sY0y;Y_l22V)VK zy1@s)KmftBoCx1>{TNj~yUU7FuxQiP!_9`qCPXDO`o1leU{Kkbgp~(G4|H2F)sP@7 zJE2obCQ*z!Uancz`RWL=y4t|BriPFtK?OjJbJR%~6-`H1lm4JkXY6=8kWCUpw#3(C z$()yZo^tjpXW}`Ur3#pG#`Nctd_>q}1K?Bj#Y%`_GqfNl9Ly-09nhnD;G)&}y?peO z`X@&L!;?ZNC>VHcgWU|P|$BfUBQsn=oqY^)tQsYDKSyHwtv>@1S+kljoC_4mD0!p24Id2FXV?F*3k32)hvNgB`=yvr_rF#Z4O#pJR zGA#^eS;d#^H9Wk;lS?WZ0b7%1Dmi~MY2E-fOm=8+N*I97*>YH;uUq^JzN61bwtddF zMU|47qZixkv-JzKp`S~DEj<%J004Lo1qW{uJWa5a1JBDjj*1}_@PwX2NG(=o6;&Qd z{|DVfwqWldw4o;{K!V>_*Wy>x*uNB6Qy3E0C#PdIY*S^ER3I2SWh&xL=K@HNE$ zMOE}^8Vkw_gkXgLD-2qGxOM)qV-skFWuDj zZLmdv8qd8ZK27}hE@iH|U6%-pK4oU8E?>EJ2LxBnmw;G@sbQk7>w*Y~o z=Q7hybTl(!2QIUh#F0cOxGQ`wb8reOFW8lmCu3^#8>F2<+aH#^Bx_+BXcz;0Lt376 zyiaqN5gwM(vU}KeqN#(b{*E{Y;ye)3p{;~Xa}!n*GYJC6)vCbI-h&a(0s;^qGZMg= zAg&*&Tt74$nkK*o_8ywPS1qTx0I_IM1=s+ZuGj$Z^~W`AN|ov{=4p0da6 zOOQm2qILEN0g&gbZRIm#DjkFz^u?EiS7@o@hH_0Uc*~VYOvf|8NyIM}fsN=`lSs(F zj0M1l+OEr?+r*wMED@@%EIlkc(B)@}Nq~jKcgMv4zvA5CTr;yYpgaa?(yxopJWqQW z1P2W0tCN8(9e+O$v(q1cjFTsS{_#gxGUpQu<_tliH)M-PTMrN&xWci(M&JQ1>5Gf= zYcAB0TwfWC_1P_F_Z!NgYfl&~ECAjzG=N#Fwh{32nxjcXCm1tMYd^V%x$q^(0lJav z;$~=N@{W{61Mwnz6cMmZbCKMWDe!H!qa@`$uBiMorhiruW6O@9IU~d+6!fvz^-$$= z6>ON44_D-|rqVCxI0Nzo=af@4sWH9XV`q(%;2H-Yl&$~_L<$KXSl^5`D;2b1j105P z;6^Z>~i4+)%OAuxPhiD5*lbJ2cdUZR3EJy}= z2KFNO5`RVjz``WBD7?4^Q=oo>Nub1#-$egHjDrJ644x1Q$xn4r#hOovOnhlciNBa0 zVK$qZ9l&1I+XeuE7a4>e2Rd_DI>RXUON>o3pxOu)I!)FH(&>S5;a6x7oBne00(f9q zF{0KlA9exkRNRCo5E3h5<8Q}t^%7=0-P7q6W`DyZ9H(WQ6%bUYFy|a;5o^~?%gw_< z-3w!$y?|zF36Csw5^K3-uFQH)`#<+ZS>o0oE^fHIhl3w+skEv?B2zKqji_i*2(V{EUNm*rG2{XZqg0MWnlp> z#DDXzzPft;$FIKHs?o)htr=*{J{QDzmXfroTKXVngs2YU&Qlg!edi;4>nVu`XEx#? z>4xvnkC#}RY_CP6(II_s6HJ(1%;xlpeVxN;!OHW?%kM7FqWOp=;Be7SZLwgSD!v5r8Kb2s+0vL`BRxw+x0wM zfwKU9g6kuFC^32Ic{Z$TI1<03O$M1`>@o1&7H$lWkHzi_+8f`}>hv8jSU7VQtE{ea zc}K^{#uQ!l=PsRvPigr?_qf);925M@GIG4k8caYgsLfN08a589)t_LXWdBftB!3IG z1_Jf5Ls0fi0dhoki2uJKz9Wi!@)b*q^`*2Q*E_>g#WINP)m7>&j(6 zyX2zY2REQe1iU>DZaCXvAfIF@g0^mOB$Qxj|yz?j~XfJvG(y8Vu$bx`B(v)Zk|`0sSyLfW4c| zN8Qv03C|Z}|HQBAhynnLE-ms!e7gXDy8!K;JuK|;?Oe|Yzu&=5UJ8%_Bu4r2sGN14P-$euQZQ4~W zvvS~%8}*{g9*?+1Lh1x;YErG16Ti`-DZu@@rn?G#m}WKpVl0twdXEcG$s~ zJ*yrl7&@5O!HL`DME=aptgTj$pLTezG$CNK0PRlJo|8LUs@Sl^Kuppq=Lkhes?2{Q zY^HNvG7=!4E;0eQy0*k$Mb!{;&rJh7OccNw6ZkuLV%$zh$>0{>rI>If1C76C5SiB^ zDTq5udeqsGH=1KbwBoA7Atkkh;tp+T>SY!m+kxX=b$ZKpa(96GP>;pG|1*)mP+FeR z_O7f(w#$yufRpPb!h(BFRpBNRaj}19kwOBfPFwHB71NbAU1C{Ag_g)}&=P`$Dp^sf zJU+EycW69CF;<>y9}t$Wp|lLYJsn$)1T8!@L9rPh*N8>inU^k{+KqSHP$fvgjcFU_ zNkk*P^KT5L**b^EL0g763`LIxVli+$pt-8X=V+q)ecj&D0x|9yF3CW5U!H%yfGDOC zqM(XO#r92y#dA7V+h*-8*arOB*0;FN65c!TKSM<4OE5i&dr=uy>eGG?V61C1)Mw;y z3&N&C9MH;em0l-8joYrR=F075C+rP~U5B}>VX^}zrxEZmIY4#kEA0)hea{U zx`jm=nwb@GTi*dBJk}D;6Stg)QafC0YY=Y;(wjOH1u0hfz& zsVK5MFbD(rsR&XT>P&CUi1&#oT#Jn+hbL=u=iiesqZBu&BZ$wXPm7a|#vZ9|kKPNY z3-mCQ3by{w=;`zxjs|te01wblzrM2iUJJp!I8Wcb{KtR!)CwdPI#K45 zYB;u_=ygDSagmnZs4o4{9%)W0@KSECqIt(NTlW}*^Un=m^;ULIea23!6^!H@S2wQq zzx38uXtQgq3>r_h6O2xCc>nWf>~9@30mQ#wE*{<>e2jum%N=b=?O8fP5kiIOIk6_V z6Ay2e3o(32rixTnwI8aSGPN?nNcS5%;)S`B{<9u$IEMEV5KTs&=6 z4w}mP$a;&g&-MJR@fT{Ok;|a-5QkW$6C`0l$0o5L8CjQUdQY#lCfPye%W+uuG`6xR zqb`LxkUHU|XyHW%SVIqny!x%BRsjlvl6dqxVLxzjMpL?+ma8gj3I!1Kdsf*%>|{dB zJwVc*Ri`$CM74j7yW`(m#6u*nr`JN~qbPV_a~UgmqAZ?$UIbxaq3j+A@EZC* zeK8wF7!H61Gzk=D=y`?abmgAgatlo-Dm@+p&_ZxTb(iAump4aW9FDI}yK5tL(J6YN zuj;ZSPl=u8GE6SODUaN27 zlZV+39WFk%;Hz>HNlaCU$4hp)d5_M>T!Bb1PI232!sLcWQp zg<2iByo^4hIOpdA@)xeLF0vR1_{sHcz}L^&tgZ&US1Tl`|INK(8O&h zy^EPF>0!ne6Xz4W9g{;M+8#3Fs|S2IEejgs2P0VgP`bkLX{}+M*4Ky9*k55pg`kc< zYauF$B(jD5qteD2jPjhh9bU!8xw`0uZ;X)`)WlE`3qBF?j-h)tybLX+wC z&cvPytuP{gK+B76J~<89*n%GC*GG$2U|!;lKzPLsIg8WS{jZ?n{g}cy5dAXe)o( zuOkW7cASX&A#!~xp*!+1w&`H5$C$`iNqbMwLYnX}bc%Bx0~$IU0v7|*#{s5L_5jHG z761*O5=W7FzDIv138p(Af`U~_<{@Ff`59=~-48)T37dE%Y|i5t zs|=N+2jZF!y3&H`RnU>G^wlVI@@s!DI;!OaF22br)(%z16!ANZockQDXx#x4{U*r^ zx-KXd$IRX+mDiLU?433`Nj*PgS?rz&);mFZm?)bH~Q%6ff5tOKb#hQO&#V}fp zZD@P997c7%s;JiQM4Q<~ozxA*_YNmzAMl#)0e4kIvxw+2!e}P8MxaUI7g{*8FlRp> z*73cJ-M=-fxcVxqXnT~dE*X_9+x5jhv;a@zFjIBiuQ54zwlmn)zELHbNegKJIQEfV z+MbhccI~GDP3f_JgplqElaYV$HmkB5vFj|)33TH4M9J?maAGgcJ+M?+dY|odT;8ED z^yQA-;5~lglp$T;L4q?>GC5BdPr1MphOTR7P3h{n8-c`FJk15q@he`zLf>ZSUdVp_ z5UIS_CE!4L*TIa-JoR{oZTcU7z?&N79^eM035L<9D)nf`o;U{+bd!H+6T5)iQvamw z8t|{EMJK7^dVHMRo_3NR|`wWKDd!N~WhSOF)iedeJ*~{>pXghf#wprItFR*7 zv?}_{`(^5gpFM|Er__H^)9^P|&Cz5ZtDgAzzfn<(EDxzFejcf=J|TV$mBr7&j+;8B zGj$A@&d7`$G<}z<8Rst*CFvo?0?pcG>3)Yu8DoczwIAUBCGSv{^2D|mpPQG_XO zqz&aS3AdDn!gz8) z8;+@y77GaIUIm!vvuJkprS~kMXH$DG_8=4H%S9vlsks@439?bhkQrPE72A^8pu>E0 z@?p3GcuF^6+Baycn+q|k7}((RKCzq8Gy8phB4#WF!xq?%E?7@ib+f~s_4229psVn(%XqYDN~)8GhKhJxkCN=a z79r=JY|Lh(?CjWeux}OIb7g|x&%V9Xb&b5Fz+`qIU`~b=?G-E-R%ZP&FI+*Am%rf+ z2YQ;Zk%2(|SP%KA1cmyDwCkrz-*`#qHpMLr(_^@zPNsh}`E>bK4lLhp`o2k5B_5ec z{`&Fbd%b}(mlyvh{9*j|CsK4QDo^)<=~f#-;XI0-wtJ%5pWmyx>H+PKb^T!jBg=U` z9@CY81E|(mkK6)iRl$je7VxaKC|d4#dq>Y^bW{N^4Nwi|IAmf@_3WR~IOZhDdWR7kEJx+i8tjpiPd>kNwA-du4=C0C5v6SB7o}bnpeKI5UD!1`oCM7`X5`QWosn>Wz zwR<_G-1*XA*f;EjWF2a(duf%Q7$qh903<}aa;~qm2wXPh9z&ptg-YXoKqBwtqMttR zF={PqG8ch*w^6yiWN^?_9Oi0G>1`AoD6kcDNR5AtIDHPCi|w#gN0qJrTZ4;KJ>IiO zFq0_Y)KUGfer(qSj&7c@HkoamF=y1J=5SGk=blv`Dt%S4CGvDJS7lw6Iyzx3Z`BdU znYmZrNB8*DD-0mJayoquAba-c^cD77MBUMK4Dy_8a!H2Ov zX+tK)wT+9p!x{|B{{m1;0|XQR000O8U_|0V^DPlJ@E-sGEqed}762TVuWkYv2MGWJ zlyuTjmw|5r6O(^H4jIjaO-W9i%_>K8j%>-c63Nm^b~0I6+XrNmra&`)%;P;4FG#w~ z=SjTtgm_ z(~y03hAR7n#_^K8Ou~@QXlznnu=pd5cuc-e=5dzT^dD)q3_m#JN4gNp$-KBX89(tn z2?O$iie*@)UeO2kfB#8;u4pQfoSM|vOw3rgBxjLebCY$^f+~Aoq$b=lbCoIj$+2yGaiKrJLSYC*j+}@EV1V>Dq!`RR6c}n<{V1a~ZBu=2y1j`_| z8w}(FklVXjB6Kqe2@HA-wa#MLzC3?Yx;4tukmqhV1kH_!v{kJEfpe?`ZBT9zV+kD5k5vDw1{_hq#Uhc8WNjr?Q;^@%}=*WJo+ul|n8~ z-yQ#Wd=1n)I~6oq4mJrSsfrl+8O#8(_H3mM*@&jli-EgJd%J%(Xe%vD;@N+eg;~;O zSu^ebs z%$lin6!18Ab$$inil%2NR9SyoJTL+{`fi;p&zC5q3??w=Zb-5`0CRCvr98VjmFZv) zn(2eO?2CK|L|9Qe!qHH~;40)*{cZpU4n2Mbw+DC4(O++YoCg|ZprllzBl_q+@F1T< z?ceU(q&W*yKTR@@U8%BU-Vy%*bhTzzA6CJeA_oNR2{wr$(l*tYq^wrzWpJaMwIZQIz`y6?GPPSu&J`3F;j zuI?V+ig|kuCtj8QOvw)RP#aCWykSsmWXx_*`i3K?uweahZ?j44dd@2=3Ui}qA|MVD zWH*IaQ70hq^KV+X#H=dfr(mt(@4;jk)#uw~6A*i>ptJ|z)%izChD%xv3A9W^lkc* zN}5VRd0kYo!+FL}_xhz{QbPbzM%aNeM;%bRzh_04O-F2eH8|Te@et)i$V|2t?W=to zs?`J?qyY9fUS(6W{diypf#z>XYIji#FxMQDoOskmX(A(iCc<@t0~nZsF-3w2MT434 zNHTwL7~_7)E6*H?ZUETeBg=xU^D&JB9$^poTA?zr&{Zx(%qaOAgPeN>sLdXe<{eGd zvB445sPu#Pj9h3ThU$56Vvax=NJpbWm4IPq;D8Rax_^DJlyPKo>!C^+%u0%|Rf&@G_39C;gUp|*LKzg<$)yL zdcTd1wbpYavvw@yqm^hdB5-%ReLaB@KOH3Df0hm|AAmOaR6AxflrK9Fq{ti~DuTA5 zm{h$-x0m?9blh4lVvL~o+BpsGF)%HMBY+jrzMuMwLiPY?GYJOgWR(@sX}GvrDwx;D z_rdVFJ5PueufUd(nG7P>OlVC`V8~6?w?Jjfl~E&sbmaJoXzH5)2$(;bfpjx2yCXQ~ zZ5pL3)2X-ibBR2g3l-i; zH;dNs4ylvuL_6p zOo5USXF+!F_d{6r{Ipu)SlsWx1jr-?PBV*``5T3+PkpPWPCU`g=i&dQn?Il89A5Q` zR)@j@WdzEcGF9sKUW3HqoL%`~r<>t1N53M0ByV(LCKRnf#V>q0u=6q8nG&cM3Aj5= zI28dGYt*vRvi_YszF*%BS3$zotE&bkSVwJ|tom$MRpVti5Tec-kJwx20A7~wrl*xM zR;lRRbq}W9N2~v39-AzX36E!=A&_5-TK zfkp*TvnNNm;b(gdq%*F92jN6=9;zZdmLpp_gf)~WN3Tm+{H^U>7E&*Tkh%1dL79xo z$tKJkgOLuGD1faDhs@CpYF?-S`<(Jy7t{Gnl{>c{%P||s!6RGK+le>xdM>MXpL?d)n?dOPRF+)-1{Q)TN1u1!q$E3Irps!r_n11 z-cS98&LbxYm$Z*?7j*y{;OT;#Fj#YfF9zl-sY^CM>Fj8%*yPZ!3st+1Eh7o?&aT+o zhXvp3DoeCHSC)eW`hzYFF_t{p5gB4|>(T$KqGV8xsYT zUKlaYHVLr`tDMrR>?2O=$nb98pbY(em7{JpcaPaxa!*?6_n3BL2Al?04ELWiBS5J{ z-nDXb#O%Vl-*iJ9ohyNTPe*jL4hOz@T5;FA`UQDA+U(9KacL=KQCv)uR}G`baWOQ! zY_wN)B4zh{08y>F{=}%v+F102^o9QK<^~mc=-n+O&Vg--i*1C&Lx`iuG@IMaO`I(} z;So(iQy%j%`wA-lYZ0s4KVvRc-JSN@6OrB8xJQE)l&y^hk=4A!_gjd=46gaExTxNC zpvMuS1VFqhMV-C+iFXVch4~ZX4g02?7cH&T3NEg1K+fU=oj}V~`R|?)CD|k)jNB(D zclM6BAD7-f1QOCk8HjoD2xkZAB$Z{L#je0nR3=woGL&YF zUH(R=I7);wJ``{t2vH2@q7NWajJlt03P@S}%!3}t1THqtA zC6crSz}O9~(nZDnvR6#FTdD$70I4-_pv!NVgZrLm3Y4W?_$zd=AE=@o-r#8{+nCl< zXyDZK#tEuv+BUL_)xtBh2ImaDNZB5>!A95N8?t?tUoUEJx{g_SXXo1&yDm0%NO+Js z3Z~Mh)GrfeCB9gnb z{btw2)B17?k{B^{g;2y9>Xn`Zr%l`huQIR9(*Z3=rjmeSKQ!SSw>bq7Vjs+O3jW?9jKi#$sG2IGV;LvprF?End=((QwyOs7!- z6-&WVGzXi>N(oTJ1avBz+K?$z8FU3!{+hMocP}%8c5&+~CD+%^f)KVDt`a(}s_~p3 zD%87Skx_LGFDu#KK31*@fx1SB?}(gsnMSspgvJ|Y zNMGQVLZL(gn9+5h){-6RyE<2sk%}UGBR4kz%VV}_fZ~`*fgVm(od{v@Vh<2EFi8m4 z5glpQFN;q}bH)e_Dl6_|Vn!ieF_*GMM)fT%JdG{95$z83b9yd5&eu=auDQ6&CxFaH zeUPRbhmMHN?T3QXtG0Z(P>?y~%5a)Wio;}cEkRNOjDuU1>bb$b#-1*CTEWLh@Pq^; z*YLil$9Fp~8iP7LfYcDtQ8$98|7^|=tR@EqJ6u7+@`tD=9F&tna} z3-Eimzlz;M;H?acvZH=VVnoG8>-y=Y``eVNsBKZsp|3#XDxbzfI2j@%z0}Jdu}<68 zwBY9fFsPpz*TGQws~Z2Z`&cw^QG5wK3T`eo90uBd*blWXbY}lLG>B(z174G`t9M-O zJHu&tj6a8YpG~cOlIzGcs^ju1(vc5Js~Xr^&Rr&pwwvofw>B|poVO8e3DefkF>KKa zerZs?6^SwHTgB$Lz=6$nTYoqq)1bJPLf&x$_+6#xox_2|j?jRCs-Ld&78(WbXO|}{ zDEc|V74IFpsHwzNpD@3qGn(Cf^p>C=UGg`bB$E0RPZR3mt1^DDjk&H*RLxhhc`GJa zI8QH+?Yw2rtc-x1MkB2up{_FdBNlgv?vmMtkw8PO1?=e@6p}Cm zAa-NAg2#IgY^*zw%o_n0!DYXXOT2p#`zDz5NOt}j$Q#gOT)2~VNO!MOy0q1NhgBjt zEnzL%a1UMQ*&Bb4gH*7g=8_yWTEO%Q(<3t9_W@VFpWJ?5F!875-kHc#EJ>Z7(=UWO zN^dpg9cIq1Qh#%uYtLyppfZNs_H9}LXn-}PJuz6)w<-P3ZjRyU5^It>hxpMUH<@Dl z#3(Zy2lSS|DkWoP!a8{poteDw1^b!VdB(SbI?kS_p8Z^Z-My`M6 z3y^6Z0jWHuvPi9s!o~Ifh8Y(=SB=mEjP|at(Xax7q1h9A?i+^ur6H)Z9w`Du{hS#- zD)`p%UYsPwozB> z`%h-a-`75!E|@w>mRdqwi5iN5wH38QF8WHgOCk-r2OOU#52z>8Q1}7I!;am$NVud& zY3BN!pQEEK%Tl!2N{D7;Jr*172!E#}FC;&tFCumKTz1<3JACBy$)QBl1o_Aj-%tU5 z3+gTEP&_lxhmlQpL%}`l?*qdGP^^&7(LI zdVMalRiOW%vCclQ^KEVBI6H-nzG@HWXZmZX3<%_#Lry;T`nMXYF!*I#krR`Sc$RD> zN*)GIq#cQ+;D|=TLd_;MSn+_LqwdLK4rG?@^6%~nIUV&aHu$Meois{xFy7G+mZ|@S z%AlE&VTZKMhTXCSD>7346u*Crh>xw@nw;byF{> zOi0{kMUXJS+4fb{U=M`N(=eTL(nMssUmJciYx@U5+YYS%xo?RKU>RFhfoJ(yA54qpizv5Y%4=lF+e$bh%tIRP!iyL^e|kE8BB3$y-ay9!`O^k?Y=Ug9a*y5D z_kA%k+~x5Tb|R%`LO#@6RcZjO zvpqvyEBJ5rJQjBZ4$3~BDVax!w z1lK?QA>v1j_UpS6w+Vik`>w?Uo!9%(ysrr^1C5AuZ5^V*iVOj1VV_@R*>1RR_dMCv z5Vvu-gu2OmC0Zve*c@e;#Y?mt8(&MkjTUj_=*ahf8XUJ`ZxP#AQ=U0EU&t^*vPmc4 z&aP#(sYLv3EAcFx-Uilp1N09cHOBCBvGN9GI|_AO>T4;!H&}&I%Uaqn4e!;+F`m@Y zD_oWd?I{DQH)Q~7z%H?^>x#>-Q;ruo4jA9LJu!|Yg=AKS=HF#5HP-X>%gOjO7h6cAOYR6dSzda> zU+m0J7AC$L{4*~2Xq~K23B7o9L^`1?`In72Sh+<`FExO#FVM$VSJb=qzLM^BJw$En zT6)Fk_1tzf-2EcL?s%nJ(Gu^4+WU=RmH(ubZK!I+!JIpb)O;9HY#CBItR0wY|GYzH z-DlIKHu4UCcDI(lTAU&7UcNCl#m{Dux|=_*qW^to#k*W(NG0*pWnh zIO}{kbOtoZ+FIiC^Gjsv7*L2ijEP+o2}lhZNYepsajL93=1@uyt2HOb9X;czn~6kA ze%7|^8WH~%)j?7by7rp%7_nN9uRpDteFV6-n`^YkxYmyi(%d7RdA;15UjBU=-LlxO zZRV@p?xE}bt8XeIpgV!PC>H(!PT2UqcU1Si1-tIa9m#Fh3gZ=X`lO{T-W{w=S+co+ zHBSIeYKHOcPcG;_d$jj^^7CAaKB7}LjXgDqpYkrNn^|g`4W)X+gyY6n_8B9|S(t56Ypz_L5;<8nriaayuiUMNE ze_UGc_4#m;3Rv8H%(?IvVJ(Ok43?{NnydlbO(y|d3TK6l!Xdah>9Va8m_fxIdG{cB zvO4F<`_0YlmPlS4L84c*FhRMSi({}mju5!4Lj#oN%Xm?hV%HHE8Qh6O-&CIiS(`Z zts4Y?7F~-UlT-_&Jw-?_7V zYdoxU+9mJKWbb;^CwYd4BU$$B%1LHW5&9`EJqHuEkk24qk*`NEX4JI1fdk+x#(b3# z@m6z%7+%f+3v%eK!?D$K*oJ;kSlT#;6dYH4V_h#d5dzM&yK;h}D`!FUmE}HcO1E_K zKIt_@J%Mx&-;ezLs1Ki#PEH)&V7B0J6mCctOc`A8*BIz-ZyMM7X`Cb~3ALVwJ!Cp^ zTqR(Pc%?%&d(p()un7?$FbD9A^^(gM&smCGpXPh1ln4cvsU``;ywuQ1p6BX+`h<*p zzNh<*3~B{tE=1@^Z7mz0+$*>D7$ByG!cyvJu$h47+fq$`Y5(t#eLHiA1&phhu9HOS zo(B^h$H~f=X)}<#`H&T`gTZjWcBM4ULijz^T>p1p9L^;q288#NjR$bBWN%KZ&W@o} zU{E{a;b%IvW5+_-v);UI`FA3Q-IH#^DQBng&{5kYtEM5~S#k}6hll33dWns!<4j}q zxYXnWa1;)w5-GS97JZq6jdtIY4LFU2_oIPXa(*2VBIsr0-|CH6bG1`d3XS3{eZWrP z6woydVpM{^fa{3t&k9flcF~P&V`vvlY_N8s`FSls1nkBa)_DJB)LZrSbO;k1r2BcC z$UlS;Oi3VVk!*-rmU*ryM`|k@VhLa(bYx#^RUyDFAjMi;{vK&nU2kG%*;XRMyqqN4=vN zr~p`~eVK~L1b`;3+;Pc>C2iHaH-frd!e=E~IT@{vWAnchv*=uWJo}qLcVk>?GCHnB zd>K@{%>I4XAsd;dkLi&~91*t6`5T7Y-v)AI*aOhsUfGzD)D&OIa5BtWdu2mv5V|I) z`N98bQQS=tj#YUKjJ#b>at7M|Ad;}QKo=cgCjBPn4QMd6Ea-Dw}gE6PjmLuf| zg5U4bA;uM=UCa75(cWpWH~4YT!75XrVj$++QxC&$NT~xC_1meWd8Ai2>7hho#M2vL zvuiP}NCA5=PzuE>SAgQpLkL8Rm-L?FtF8En>TFmLvp~XEOSQdDweEOy&Q?6ZkuvSQ z8#PWzDc4rDZM(z$6`nuAQY(9xUHvty>!%K=cL51rWp@#~lK$Zz@s#a&&$qkx#o@D` z_>lHBINQVhWJVStT7C3Hxky@af|yO&q#eBa>HzkY`>Vy7XUF5`<5Q~EdrphNZEIcE zo;-R4=@_GGWUhrL&i>f&)4_(c2(fy(9fIKwD!XNi9KxhYoQR8=tu29j#nn*a7mAD~ zyJ=Ws*45+OY7_HxIya@pMgrQk7ij)GpJaWQ2FXyfR1tD;X3fgKi*p{3wS64%jP;NE=VF(glfGemOXxtp z5l^=%xi|h|^*0Vom~T>o?7S1{lFM9?KENQ3hrBizwdsHt^P&Z75wa-`+a`9}U$td~J zsHIbT^vKxs;d{aQXlFJ7g-e{X^S8OrDESxS9n6_%x_k3>J^=_wqF#!T4I!ZQ@&DU! z{9k|TZa!Pj&DQ_%w^sI5Q*9MrSIjAwO|{GBZsXxna51gu^0e2GOG+HdB*g%GB(wkd z$io347gmjT?XvVojT$gz#-73(+;)^Kqn3Oi$Gf{qws$z9o%QLmYv(dkA*5P&nUd|m z792_k7%=HL-ixvtpzAmU&;s_5kdCN&sr0P(Qy5BG0u;!R@hRHYl0yYL@I$> zyya0iSsu7#mI+a%wB|54nup9d(ZZKyOyRhBGIM78$MU);V4eh4Sh!ap%Sa9fdF9yi z>sa1>%1tW4P|A;Noi5v558a!^qU(wPC7b{VAR)Ae1|mSmD{n4VzWtc^Lt1TKj!&-N(1N*S+sGH2{yG6P+M$DU2i%JwoV?*=8irlK_H z=c36(ZD^+xso-Px-YB}j(W)aTS=tAa3*uX>FCO!7}3J1WEM`j=a2H#;G zZyA}5<3;d1zbI$h`RXnp>6cq`J6ie~*ffZy*ftwFJ=ZD0(#1AYCH&y2V4D8YKcLP? zay9w&b9P7W!Gwo`C#-);y0Cy8EY8AaBfzES_&$k-4@q}5hgdK7f|O)P_gctE>PH+_ z#rO@+KNHz;Pf{q@d7{P*LTG;jR+$-i?woBCLoU8Uh4bPP%7ZpiZt7lv?!`~*K{lAMB_0=aNUNY$T0D&RCkr4 zr+dgybj{)e)=~I~^kMTY5@y>B$X{q#SdHxXQ3~Y&FJ2~DwMUGTGzzK!BH{McI zy8@Vt*fsM};Xu}qIB-gxe1tYsNr)@+-_dERBIZF8#h{Zr;azak8GWEL*wc`bC$V7X z;MI|B;0KuX&>l`lH9?wj&!po6OE@1|jV{DLxw44(pVj4LZr%Y^I#^+DY6lDTI zY)nAetP}&~Bfd@stT>t`1wSkX;(38P8OntUTy6z_*^o@3=+(9WAO&~qgw4Lgh+U(f zxOF0b>n{7224_SlB#QQAfqRHC`~(N$9%*A3b77!dU^mfbS?m|@Q7cC(sSv1rHuW&klD`ujzsa}rUcmM`)QX!e;GzgXp&RP z%{ceDNk!&1Ofk3ssPPe={qwO6iRw~cjz&5nF7u@)h-B9Bs%jDlw$^3En$ieTk3af! z^8?Oxi2*;&Wf8rlY&l*)78~PdiF-W%G8wO!0a3SIseQpihk$TCyCu*!>5 z4><)b!`l-)7MPn=PcU>R7Lc?r)XTc{z<4T(0#GsBgM>_vRKU=Gc{eikLGhDYYR&yF z$ZhluAR+_^nly+A88lx;AXy;w`VK`;-tCJx%~=8t=OqMrdAa!m0TEZ`s<#pW0t1Rl zEDbO8qD=?|4Y%08-fL3Y1|yLE{y2Ma6aVpfw01%MWL{I-{l|~b^ajK?Ru%#gluL;` z=$q$gy)xv|U8MU8+B2YNS`Vv@7vg*0uk2V|AK=G3W z?hf_|EweZpbrC!AbE=+Q4(_b4zu{%L11K7T7PM~8Gd247q=;H!r^H)=jWS9x`G(^_ z8a(<=j0E@l(%jXpXF*6m5Fy4Ek$DEF;mnXJ8@#+oz(TP7`A|?q`?vb+jcWSKJbnCJ zE+7FDVb9K$7wY%(!59AA{!z{rvzXRr7f*8-9VkJFiU$(a+S{E zbhoQ9@e-gWjOGIg=7uABWsP5afr_2(LCS&h(iGyfP!*#K&kR%asY_ZqWpu%ppvP4q z?Rt)Z%y@({p!G;$-A#M@yiSx`qrZNMyFdblnENnzI%O!?jcrD@$0U#~+Mn%$NDF3# z5Z6eXTO|mw$^e)+7Jest;9?*hPC&P?p76QSjn#%jpc<{GZYFu1BIk@5iUrt_>2-q` zPMwi9gIh&8Qe~csM`D!@LbeSH`Ee(8b0n)AWP+DVRELUWB2M6lJUVQu>blX9Ff0HR zeQ1ILmfS&g9Bqu&>bJ^_2pEF6))6}?n#CMqx`cs)-|e3Jzl$54fHald>@-`%_`n`; zQ*m}|<|X~}6_B`d6xkt4DZEAYa$v{(4fB^g1Lrb!J*f3WFGLF@GUSi-`tDOhL4LvL zhd-||{w`Ph0)&0{Rw}BUa@HPD3oX3MhL>LI}jQA5!s8C zGRK-uVr{qWWr$3CHSy2tj1_ccnMw?Z4tXZko&qn5=^>m^+o(m{)~>KOaK%3 zVuOYqx;dm_ZETn3-1Bfw+@%Cw>tBalIQeFHM=E-hZ72PfP7-T9W$Wj&=@MaoyxoT6qD-D_Dw4+Ye zd?;)2gQ_)K-=h?=BOqzFc&ZUWH^Ns4lyNt5tq0Xj={LY;7g+%KEr(CK?i!;kS)syW ztTlOETO}R=_SbmoPk2V&$F}yeRqDL)mdqq1jtquY6)~>^ZCozgby+NW()FS=j}j~c zE?1%Tm3=YMYuGS3vW%Nne-g5BbV`Z1K(uRqD2k<`p*pZ%P~ePReW5 z^*WVD{}UH5r>9#dyEX#j&80kehUL!?YqX*LrOvX&oT5MaT+Og!w~bIRvz7|*h!uk? zqzbvc@Fi(LH*w4<)ka6AbU#MQk%44RUZ zJT^GRH*cEF_<>?U_KS0WeuC*tO)E8&7FJa#n*_Cnp_<>O>7%~LJ>)qmVbVJ1%V4ol zWlN%4xeEae28Hn>tqA4lsYsIt{It#lC2o(PoXnN*rGLTSe=&2MxgF>xIPkUrywTzr zeijVeoM(qT9(5T#q;Mx7xX&n-cj9Nd0_I6tK!5F*<}5kM{Q><_&*wZgmSpzN5T5;0 zGC>ka58A`P0vTu>3Wne1l<(qCWz*U-xpPaG%I5)~Sv&OZmsCm>t>5l^AAp2d?sT3P zbAu|nCC>JN|2c*9i)C&Nwz5T{nrq4Coc89nhWO#~f&JbQuI1eJU10Ie$Sd?wR^Ho_ zfR?{;ZhT3lmoFjburl^($|ZM4qmu z#svUoR=lUK`H{@s8Y9}Bv-Aek1j1Yjt(){zhLKK$SbD+<(aik@$T4^!A?PPo@n{@C zu^P3W#V3|P4`@}OM|gDaX`#(d)N2mY5O*8j5d04@fbyz=d%s4|WM@&SvX;>_Fohu* zYu4*myXey5nX-i95QIIjn`et@E+A%Peh_?D@ zxDvOEbKasMeyI&w~JNUB0>_AWnB9nbcM=A1LBoZ<1K zcPcBlFV$yk7>&w{6ZH~TSXS_;mQ?{hmL;P~BYdZ)fZV~|#fOI;8tSZt%`hd15Fdlq zhVW@3UbbcCt#%##x5(>en@^tqmhdDQcWnJ7w!a(JL;BD3HDxJ5Uf@5q_pEU&=J;V0 zXAq_$CCmyPy6VqZnKJXs=G4AQlH(=_e3^buXQc_V%qvYk)ge8Aw_E}NeqKPe1Fmx^ z4KXQM<-fAbVB~tPv~Xqwk6>85w5F`Ju;&Sk!GZUzPdyS-m(i!v8HlEyLtB_4xNMf=86c8lEt5tBB*DUG)P`ox<{`lPk{Dut=8|ByCQ*in8Y@8La{7e7DJaQQp#cPH2Scp=`Qg60I z$83PKpO4|qCkpD|TosLNjAz@uzOJa{^)gyrg=_sHCZKfE9ZDI}#MwYpFrnNj_A@BV zjA~>sc2te=k~A6Cse&x;T0|}h{gue@)CwG%zjKE+Cw3A-()*ar*IhZ~rtimYp2S8(Vb+)$`h)KhRiTwka z!AxLZg7bQk>MzCQ8yKl?w9eBmQE9%qFSRGucgUBZU!>5~SNY)uzCUWqoEjDoa~@q` z-4}2`8uce|MtJs=RLS_dP=Bm;%XZYWc_(I$eSl0uQBewjFlFdHJ78oCt91b;h_r-G zO{YZVsc!tNdr$u5N5&+UQV@8&eDi!z9uV6(y(b>n6n=}`QhkA4DT^Kx$KD+kz^t)P zpuyoE(a$Hmis2ETYn^IkJC;+#FCvx7I7F&)0}luq?)=%?D+Ds!81VOcI+Y6E7U!Nc z%}0hKJ zsgw2!v#xht*PiiQ@D)o(51?sll|H;d=6_OPn!@=B(4w$L{SNQGT%He1eA78x0Af5m z*HqpR(@1#5`C$GINl96q)d)!t+U)`OzCXWhuCf8F{_=P3I?fDK`a`wAh)m9a9RG)6 z4N@y;-!EmCj2cIV=$Pr9zTJH+uIIEl#eP2(}PJWV47k7W!HlI zv;e-0{=D8^eBH&Q!*+mMKPgha5qf5 z7Wra_5L*mh#2FRWWSseN=4H(DdixEWDXIi`c7nr$(G)z8z%h|{h-aK?H4=49G_t#O ztZRSFU^{be|0Cyyr*{aR^=~Xrzz!`sOAL0EYbd5$h)gblnnY0rwZ|O_ zfINm`(K13Qo0&t3Af|o57iL;;s*+u9qGk|rXuN=_3erSQfcxz0^U0{+axxRj!P79O zk@#Ex4D$KGF?}vtZh`1zed18SgJ3UlIast>(RfwW-tt;Ik)n+?XohXEOuFenY)k*o z?^o4kwRSleN~XkVFC3miUit>sn@0Exs&3c{ypgO=P2GA}xVwQ>ok3el4Oq>{Ns2)r zHXw<9QdB=aM@uU)LH!sIxO0x+1mgt%9L~E9;oy@L@`%fDCS8(qvR$q>6_gxpU5UQv znPXD*OISASvsb&UIHr5(b_hB`kpR7ic*Ce9pzn&$XLw*{-p%!vlaeE0nWZ35DM9Mb zQ>HTr!Agc==GYI16n;v9eBp`_4Vt`P5&)^%&$#g;Lr*Jz1Pay}!J+51GWXEF=bCxXg zDJhx&_O=*iUo|Gi!ISh(ofaKs4Qu1(H^Tv2SEvI4q<*2uE>0vHcLD<>grYw_t^fo| zWN;wQDK^`}Qenc}Y3Glm~;M^G=iWT>5*{@kb{!uY%RK)-t4ZAER8cGx0mOZ7t zsz#$SCVcJ)z0Xj`Kr|5*JXADrAF!Hh$%^<+%70jmioaV4^_&Bq`{&dt+?xjVB+XRl24SHt=B*7^6gF;@Y8pBS0k(~*?3xdczAI0Wn2*%VpOPMa3zTS zcqGj}+(#y^I z@nuHm+2t8hOIEF|!bPVd0|Zq0MN1ug^yOIy^7}TbDe{7hhjU1zRHRgUVCp%P@akR3qpT$G)|Q@i-LF z3-HWLla{ug=DEl=vQ9|Xb>xnM-4PZ}3crg8P+X@PC}kL)&Sjju0bHam9EYk^m1`Z! zmg8NjXPa3KeQ#nowvKE4YbyaXd$$)53W~HP4 zSSr~$W00On-3zju%3M1|W|ExlwOj~MnqZm;$ zuJUMrk4G}TIf;~!!%eH zMPscHVvI)eUyZoC-6)OO+tRg@kM~O935I4hNLWUar+zao0P2~0HfAk}tzU8syJ`Uy zNaFAi$f&N%wxr_d4nSURhSqEmMYNvaDNU$9Sw#ErFgbyDNcr20)dj=5+UjFfkMMYg zZ~FRBJzQ|#^ap-|@FdLEKhGuLL3B&1{wvpZk0*3+6_+BjYEZaJ&qEibdYBMe(b2x0 za?}$7{CeCL@D6Ssa|kOvjjI@a1mZK5(?%jDl8U$8A^oS^lpB7c5XY|XRTdwh8yt5- z+FU!7>$W(sFzAQt9?GiRTzOND_2?ysLvisphnx4ZEkqEJLcOxPTSKquvmnw~KnLz) zqQ1rGXikid%9bFM%^vBkmcSGL{g+rk`A*fFH-nxyKq4vo4B9m9KQ8%mCEVDrFMJ{* z0_$UMVBn6=i~xbcTNWanxO$gr0=v;!*TuX~6xsW-O6n~C&kUT9KR>y^pUtyWdWZT^HmDGDDcNap{XaDrue~a%cH_!g3vX}?~)GM_KH_4~&h?GwqT-4+DkzZH^>7%HInj$((3AAKI7t$ILo zEHRH6&sMe$>6tRtamn(IUk=0I>qB z1vJa3TNKz$@)!~dwD$7CjW*^9*lPe^7{h`^!I!i}x!q`)>$&k0j<;q)NKhk2&7o5r{m)@U?7| z@J4O{zzG_}xszL}6hI`OzxHMLbD`GavKi-Z09(DrG>R*awri;sfx?=VtEt+v0J@6o zIjI+0mh<;bKAdtnaiDw{lrje(u+9o#+AQ#Bu(rhJ;heoLJpIGJKFf4Tcd2$W@l0_X zsg?+Dx{t&azPb5hG!%IHzT%SiOYYemN{g0X2G%~RZ~elVX?So$Qiyt=MGhqtVNIIWhXBjQ z7afhSK1j-EF(@MBvmR$RP55ew5v~t+Nxqwf7_+*ydu*KgsI72^&YY*etq*QDN(xY2 zo%=a4wZhJq$WPF}1RA7u2%`@;qrkW|`7%lqf3u*a+7FcM(kpB@QCmZHAe*{wEGKk~ ziwLzPcqQ4|ofs^1V;u~ORSY>L5155;GZI(d%^XQvS0TP|?Dv?9+iulj1^IdU=9w(U zam)6W@{%|n&R2JX$)ib;(HN@|B@N79vcLYiW%?goG%U#fM7Z7sr0BAjKX1xqBqcN) z-L}eqnSvcfNyx>>!b}DGzY1zsy$ex8GHC@f2oMk=_>2a0FuaTyCoqJJJ91E5fWD@o z+94-0V79`^n?&A`)m16a`jili9D&_Q4d>ahZg7Y7SrCG0}IXxU$yXy3*O?qLPMTEJ1I-B8qyN?hxA75 zc3BhLH97rG>!z&gP0qflpmkhafM%wz#S)D0TFFL&h>HFz=hBH{H@zFkbMO$#`WjjE zVmn)Vs7;Mg27W9Y+a!Vx<(bCl-2Cnf>86cvnwC-!<%!JN`2S#-lKpJzrYK3>a~GXo zF}?9QzVWde>mD)bfzs@vzfY7QGg%{=ZpQ=r-Vk?L9+r5O&6;yL77kdO0fZ$amU?!; z9fWZ2gmGn=-odLGaMC{-7nKT>e`H-}{kT?>tJNESuSuH11HctQ3$Tso67ft;7yFV_ zsEx^`l%Qo+IxEH1fGx5{gn@5nO#^LnRSXFDxN_I2+^J189QiL{9xn%tiPNH7Nq2oX zWnS|l$q8|NV!gK@6jf`)fGujw`Ht^|P`#f>@=I-FZ3P#l!egzj5ZGR%@J&R?CU;ep zgdM1>t`@GV(7wf6B>ocRe!r?hDQM?kUN|rG>aou0hdS+-EI3De4Q?@}=k=pzh3)@} z6EDcv%Z96W2-J|syqVaFWOlqFn>I|+Z-As@`+={4mdPPbqi{VHAHj`L8Cn!-Qm?R9mD^abmYAsLw>6Q}mpNMi z{J{u#a_C4@bI_^unl0*cYFbb2xwa#JBzb2!*Byp`A>ScQClg|_!!;Go_8PQ(HGH+L zBGqDtgNph%`FDxr3%eYJq_zwtpR zh;UNk02og|dc1hXG@`%Rklq6RIojkw^=BJ(*(yC$0Rsr}p$13oiw(zXv`Zsf_UklDr>M|Kp^d4}Y- zRamb_ZI0tS20f=Gt0`DY+TaglcqRKL>=WYoeal~zJ73T-i%>g{mR`&2>o`-QtD*|p z2M<|i{C5S0-HiTVW4p%4KA6fjl4)#XU z_nr|sAuGE?4mac_k{Y8er~_wUF1&HrPdVH*1-YFcifZI|jOQ1x-9pdXWR3@K`oT0+ z-1DY=TTGvC$*Y(4Mg@N*FWH?|Mny&I&5;Hf8SJaJB7;_U{J&_va@94N*)x_YyhR3 zOoR_`THMT}>Gz`rFz2)i@6SEqWRaNy_Zt zOU7x+Zv76LEcAY%P@9J_)K^c>OrYlE@jc@|c+RnxF%U`3>#z`|2JiQiXFx*#&Z|U3 zV_S&xr<~=j+VGo&o4=U+-?ucbW__#qe~X*r#J@J%zXNtQcXtKO6yoD|@7ML_X0!J( zaNW+>tRsf6?338MX&7LGqU@!Bp~Qz^;HW5{+y&axgux01-tP;|ycRlK0`g6RgIZKQ zgylU)8XjJs)tdsm+#5pD6#xWMMV9PR{y*Zsa}2T_J21`&<^*_n!(FE^t_Fs?n%TJ3 zSjFO4MP5r~WURA}Q}whW!8|(gIMZuY*`rS2BJSV?>fvZZ42Z%9sM|AaXo7GWT|>K` zp(PxzLBvS9tz1{*_w+E>u*Y$tX%;z|8`n~2YAbq;#P1cItz~BYQ~=6gjfi*lt;Zc&R<@+lfQ-9?Bik zF67Ji;^~`mV}Y_RY*aFe_L`+zblmPYJwDc%j z!A|GDxD*GPT+E{pWdH$gF?twKWcMICq8c(*(%lh}g28Wx!LkHuGsQMJR~*9w?%)ga zl~asalEOSC0f8H6Zx`ggWAAA(UxFLt;kM+>dTxennYL4kH=4lIWG*KRDMJ;U|3}w5 zc4r!O+q$uBTNT?jDz?GzTr|BfHP!a!Y zt%bfKyo>DS?8r#bYcz!!yUoBvfHtz6Do8kD{~&#_y>XUW=wEzx1{QrAk-cJezQkJr zqi@;2x7rg3W%J1Ik^sD~=YgGLc!uY`tnY&c{V&7@Z@H(&1_lh_dYApuza4Qdh#l|W zK%!TQE9z-Ig-w8ml0i}Ln6GW>Z|x4B*ErtIak_^#ukyErV>9 ztVuqK8b~Q<{UTp}c@Jr{SVlMKCMeKch@54dLx{`ZQK-W&eL)SdARrHjBkecaaj4+k zlY9|>5`~bGNN(3+p(Nz?FyucQCVAzUCXetx(2%%5^;ukN{qa*4h?Y1^g zex?t3jzvKEL}-dmFUvJ6bPtDGjWx22{4PqFQu<4V0iJVIJ2VeG%y`RgqYQMOgFG#s zz@vgqSyb5biwCs^zpSQ|g11@qOR4+TRlXzTKXE0xhn2C_rt4M(f3%a;WLxnmrk}@?@0i8(pKTB$HOd5hVctaMB%#|&vNa@ zTdCxlz0qv%t6M|k9y*?2dD*%Z%cmMKNK zhU-@UTs_Y@)#$snu3{^vChC%J-Krb=Uc=OtQ z2RqSg<4iAv9l1P%@PuzL+(unemW&Yk{Yebn^YJUWgm@+K-XZf}^obV$;igEDBq}=i zf@C5xn{!?>7j1!(ZcPhwUNN`?qr8Hu3pwCVX@<1sXy0W@yChf~X^H71E28+9MUz~H z(xH|WKOkGS8=*^p$;RB={P@{tf}9fW>%vz^MRA->y;yRzDBM#>6k&%I@$umAb=hn+ z^n`Ix-Of#A_gyJirvE8`j&hTLN^l~F76{Enkqko$1oAkOEQBn(y0v)JQzK%38t6C& zC}H=3P-+r^8fa`ZH;HYcoPsts;#j(}u1K2o)71?i(D{z^`E-`5gCf;kIi_~8Wy1SZ zD>xZelWlx+e$bhGl=U3(L3+$zMR_ZK$4h??Kl8ntp#X!Xz<&!MtqH1l!?s07x0Li`D1V9+uT*3KzGxOaQ<)FO@KJ(kCeTEYC*>hWS! z`OYU5;m8svtO4YJs7h@SUr)$W5HZ)ZhCFIcq83UQtWh6rbA!L9GP@=O#2t1d@4kKP zN)ed-u5G<-*pmmO&T`IF&51!FxkVEqH7>0VJXaGjjDB1nBLuCNg0-W^Wp9e4)=eVg zMfr`U;x8cMr7WP0_nc-QL4{-xmfjb|yL;SUHUfd=z;Rdu^Jz z?dYvPt-ib41`8grL~AN+{75Jvp)gp1=2B12##QyUvGrZwVZ zmR8ZIV0>u`@+vggf??>(8QZ?p$j}* z9dbT(V@&mKe`v`@!zz^&ZYo%HKqAl8Ta5ISycgu zG3*H-c463#yYJij++ODWIonZ%vM5CLG@P0Ux2%9OshL0((hhDn4?~x^z{6hcUOMss zOR9e7*Fs5hMhDVP~5&z-XHL&i;8WoN@Og+iK#jyE$K8%0-LW11e|=PCWY4~agJ@( z7j`mv7@R4LQ1~ybB6^3;5je4mX}b;oZBA<7dehZ}iX+${@GBS{bT-r)j>XBGm`h?1 z>ROC);)dq7L{tD>S-=~(g}}O251uPykw#U$>o+2*(Y&~Z!YF$O9QT}pfC_BRKj0C7 zk6R|`u@&7A0y^I9)^GXy6dq&qt{5Qw8^8TWhnlkn93iM^qS~}CDexB4mhlY9_kq4g zBT`NFiN4A|B_Q^|q_Xo8UV(=*!}AJp1<}9ioYgnq<%#Hj>yxYN9f&8HlwM{849a{+ zF^~(aQ5Tzz)pwoJEnLIVk}`@I-$`r(P#Vi5Cvl7#wNX&j?+r*~$a3JC7#r7Tni^*o z*tI9+>vb3O)`B+=Ec`=?^KNQvfgfZG6M@WLsHwfuiCI#Z17(cX#m(xstoM- z9EDX8@ILnUWsOa5O`|M?SO{R*1upw4PInUb9oC&4b=fe?Dzuho5eD5zl`ZA!3=u@l zfJDqPul&+?!?%Q(X4!z`ReSRQ01=pponHTC9f^(%+x?w|@ea&8H^L;|h}?Y8_Bpf~ z355&gmSYE@1|4GyJ{PG=qjTu2#cC9 zl7GCKX?};=arp02Cx=dUj}cWJv4lwzmfZwrT91y(zZIm)kjplM{*oiwI6`LZcc-;1 z%A+ngivYT`v8~7z7zU=)PQfUBk|A&V+sicFWS-;n_5nhC`cfxT&s;uv&yF>zf=pM{ ziU1xFLg!NPMT?g*Npct<6QlO(F2U-C`NFnV=Hb3s><3Xx>prtw7u&8=VDn^CElU1L zEMdA6x;e71UT#C#6FMsUp_7 zUKW`wvQ)Yu!Y($v8i5;>z*JIc_1%pqk^`=4>kD*{!9g&?!pl%HFR3_UD1A&t!8~Ic z;L+Mcm%jNi3xi6Ra=CB<(@t@obcjikpCm zGnIic7eS*aWH zQ-?OA*+B-Eq&beInfS_#kLCzPHpV%p0Pu3PXH<8lD}znE#$=4#ZWW)So3nrvpYwGI zlTWd>&ds^D)WbHV3Rs8?cC&m(N2e7VIlxk8 z0eg^?=z2C2*hUS$(u3RHPn?NQ*IQs2A&+*NV@HuCESXKtw;SYTp*r#ow5nN21yI|S zZ8!S_T|Pno_uCVygM|7-oPa?(|4PHuw{&38uq1)QtALnY~H5x&BfF#;Mm(3Zg#o$Jol z*lc92S=k^Qu;VJ7B*@d-)Xsmh>0DFG+$=VOMAH1}eqw_zM$;5p62dmDc6oH%rM1=w z8CQ6VQB*cN!1V;a)bS9q)dzUh{D4XLO)5_L{`k88!TRp$+#iemZ~onjJEOR$i3RXV$5#mwi z!XbLC8nj^czf9+&N9YSx+mb5R5}15SdjIEMTv5g z-ZkN=d}9{Dp$NtyDJIanPwFh@3j#&KBfgPzWNmI)nbHT*lWtkCaD!}qTYViSqg&^1 z(DcFdMW3dO2oysHZgzv}CaJriSln8(BT*fd<)*bqc!E6`vqu>)x(c{YZ+8co$wzXm z+02*(|8_eb3&C>4O#~p+3dg3CQzelrZ2-2%hv$%v`(x5G#w}(5D_-CBsNkOu*GUi^ zbe>E3-?O;N02E)_hYy-i(D1kn;y@(5rh?e`0gi?go)o@lra zNzs5D=gRUfqW|ev6O!m&=~o{jl(YkQ1^1z+DYLL`e` z`|f$}7n$@SK1m6CkEOwQ_(@^G<`A~S2I;zThUHM(yqa@&PxZ;+zdO3#8|*xZMG-4$BF7OgB*0Gjf_LNSq$2~Z1YZ3u z3|!JZaA%Qht%{UdQK&!;U3$-~-l$#aX_bP2VPhS_$`fTFdMg5`jodIXwoNHkB06?- z-_qF1vTsf{O7UN|awytg_s@Fij}Hk2v>4o?^{yynFNNP(uu7A2gnkqk2eWmpVMx!I zE8g(m{pFzqe0aT1eC(V53+y_c7wmp{k2|?nAA3CFqPKoCXU%Dw$T&0Mjs3&f+1~!z zw{NL+V2}3&iP;6XlSl}_kyvmScu5%5qnDHK(I*)4o3dfFP}6{BSaZKa)w-V{8nJ2j zpa5qOi{*%d8~sT4h!!;osC-92K%noYL-xScb)aE1RM>$DgM-I04jZVF{vF9hUqr{p ziuzA_D_QC8ce3@ruPd H}uwZ-WWApea)n1gI`XczkI|!e=6h-YO|q7AxeEG&_?V(dZ$QJFvOpWS##fKSZqU+ShYIRssVQRd9^NP|D~BxM z5OM*9AvjcJ%pE}n1N)kq?Wr!7?N`nw(qnw%0r>v8AQcDQe<@%_=wpGw7cwhSV!v*h z=ALq(>JQ}JqJEcneD@QK>I8`pRz*<-Q}+m@e;vXCQUVt63LA8ivD26ftK?u}F#k;C zMisT^V;iu+5W;qdo;;`5Qwrdu(UmT`l$#wSPsk|^u#Sux;Sl_x(1`OZJCtM-|qk7;W3>#HE?8y_vmGP zzWB8Y;4d!iF!@SL86wouw4ME;Yl?@?O?LIX<2iaHZyKIw+|&xNk9fT|@)?%v^_uxy zcUIU7u*k=59kp!E$8zY{ti4|UQvB07a@@=ImA=TTgy^`D#FZ#d-A&o|C9k3n(A9UT zLQa?BNdHM`pxU19rZVgXqhV@oe@a)08for!a)mS(bNlUii|pJSaGaU%R-*_e#}bEJI;lK4j$!K_2p{)Y|> zsMh@dl?jK|_{H^qq;mT&%VXDU*LrofwUP}{pg#r{@^!Py6{+N_{4@7n?8L-Jr%dfC z5K&~Vk12<3lQzPTdLkxk$H$fFXB!Hm;meE>AB=GAm(C@v;R1OZ%7;%zqRaw2scT z5^%Cw<&qO`CfT9vDa-R7JQTL_jg?s{SObOA>ynKhSEr{)DH)sHO0yPSk#)y4W6)=J3ICyU@XKJe zs9(f=h=caDMk&1%F;jK{b(ox8>s;_!_8;)DF5h}giF607eUCjFp?;_mX`R}itRdr zH?yte5QN=SH@&V_zQxtiAA^u?Qf*8rv1oMjjf~9+YgDH+cLgw&T@_aMcChJZ%J(G* z^3Z)xX+fqN#P$0KIS#y0qZ{t_{NG2-4qqq0_VJqk`C7j`LeOEaKml`^82{R}+y{Tf zuqjUlYY1pE68;TP;?o?>C>?Y+Oe!rD^fJ4@`NG3(;K z0fA=q#q`u=a@2H6MHgzUVk94I7AH}?t&8@izd8a!T=oF#rO@3I5AIS=k5MSe+re<%;OPAyi+9>&UgdAQFwp!|5Tu0szTgKi}b z<`5bHJ-~q1H!%!@ya?CRao{vMsYIs$HCB9vGlP@`axB8|acd~bG8O0oup}0E9Sa^& zoWUpigJk3$iTEYODo>E3jcE`Z!e$`7mN>)6>`UK)wBJ0O?lh3-U_q$dqVu`k%%$3%&%k=d0;)) zdKAwPo|f0#U~B7aY0c`tcdJ}*Dt|Y-r)Qt?x{gdE~k3F(7OpD?>E$5Hr6NP-UXg!aa;>hAP}d8)+)CxjBeG-f$S z*6k7U)Tjbf?NqDXxM(R_`+n1Q3`qm=P#Kw!Z`9=$446S}@u?u`+<N++tXn^=^|IYd zR4r|DBtSn(z5yo7qCerO%&iQ6x;vfXesjn4*_Uql8AJbJV%L8H`ATj^A6GzX%Dsej z*euNo|JzDBjedJ~8PY>9&7)v+_av7RpEe>Llv3@)A8e-OCtZBg;VEHwQ9fBMjn@HC zev%RD$@I!K039gDVf!w*Mv)(e)cD%0%LnsO|56kr z<%d_AJq_BTHdmI%Q{!jdY`Umz)2?LvA~H(My~r_^DDH<2L`4opmFosFwb zVS&J207Y0$Po~~>GjGXr%Vrl$JLoSeIw0CNv|@74#W-}nR&^KsA= zk7agLP_aDsD{}Bvq%u1c<(@~8#PQd)os3A$clOD0Y%;Fh0&fGWG57X!#UB{b9`95$ z-+#Ys_itL7?H^?{Dk~rCQL@pq5g@9G>fuZA9(;qYW$~dhbehdOgfPZvCVHJSs@8$H zi$I3r+`QU!{gnaJJ4(;shrt1$Oy+rphhe>k*Lm}0SGWv$9KOfD;WxuwA35 zI&s`^FM*_n@|xurdno^S{^+HSUF@IdmMCu9Jd&GLTR!?NR0WBhfmi~b9n`pVxeV(L zY0x>$+Ci(ur^aD17Z>_L58~5*A$CTH~LR9V&JSFLOj)N*E`tQcWOv{Z-4 zQl*U?#>uBmb@b6I9I8huj2`N3CL*z7+7F(E)gh*%EZ?y|D0%6yvOdi=iJKpnKt7ni zMI_#MVJ%-jM4^YV?I54ck~0<}38t-9ri7kmoVlCG-cS?Cj^_{{0~3}Q&ZBRt-f&#W zmaEh>S3wWr!&84t>WiAc&NHTA)(R81lYSn%C@g${p75QUfRF0qU&MT#CVz9;>jh{g zsw$IJG{vcG=rQ!5%XWl7waNIetXpW%w7RP)`yCjITgVUCR{J`-LYF&GH9?(GvY{CtcQf!N?kY#*;>F z3QA2p);bNLKVKyIn@P}Y7DkFM0>DVm?~BE|i@X(F_~LH|=v zo7!DQM1hv z7p>OoB}|@}(ujlloF}i?Fp-4#;7r66po6lj&*u%@|6*%Mueb9|H6@G<_3Xq`Evr_q z@+N#l%{&KxRVF@ZPhD|nmOSe;18lY8f3Txl8`_Ji{eZ$UMUu41E|_O5pZN+6N@~4d z&9MtQw@R{GC$c#wMg;dAHRtu1Y~Rg$^8%#k{^yWf^3r{}hxq=Zo)9CcAHG%W);0Rs zz3Q%s6&3s|!4%%!mbsE+W=Dlq`k_l7n7I{WOgU>iJ0q>G2~>(H_%Py>q*DQ~{dB=5 zQd1dPjsW;^av%A{WV#_9y@ufKb}z2x*I|?w4+wdo z@ZZHRoaG#shUD|;Jz+`Ydm2Tn*o=~kxk0ki6@W12+QjG;oW}3y>I>>4aaB@~YMNg| zygPN1c*sZd=%NdnKyof}L$L7`W#gul@nZehWtbnq+OQ-n)wCd3R5;~T5NzwzGnJ6V zZAiQ`hxPna4aUcQeq?I9fD#lS4GA!CzsmqV%o1w^c+pVK>muf3OKJKAlPMN>Sib|} zML->uR|XoM{=HHlW2}cS@F-s;TSPXlWm65$BuBN=W7e;U7ZOXS5W6rHjn({!Jvts< z9VgeaJqoRSRprSEu!ewPk8vkpt!j*(ib2Q%wPIrh9KN;M_NspnLQmRpmw+ds@^@4c zS$-h?vd?~$M^8p!KKp;!g^(}uRR_L@@qxU(`|}?|&|gYa+>uVCv+h!*pp~n_6m`pa zY0$ihCGkkK&Dow?gbS7n-Zh}=W#3wW*EIbZ_E{Z^Uv;GGGMe>ZiOun0>+tQN1mGzH zVYZ37Uo2(u_67_PzEJTi=BB%hKqDa;7XplEs5;R-n~#iI*O1%t2sHH$(LkwSqq(33 zB+ZiaObw_2N9QB9&3}dAl#RPDyK&frDobe{jTzsyLub>NUR73ip#3%U3v5mm_QJr^A`@<1$n#;h+SDo#XEEv(~zO;w348P6Ux7_W(S0b;`%A za1AeiR@4P1>3hs0KxC(Jm#kphQgn!GX9B$C__=E?fVzJtnWGDmi29k6*vNIqmFaMP#ET(}t} zZH8^Gnh>YDMIk6{&o%;k*>rh51KKOs06*0&-+$9j_db?&2v zI;2-rmAw4uW=B}@MoC#xxgL8m}A(iM$|#XgNq zr8d+;={Y?H>C&P0Y!bjGsdEInWz;v2kP#t)l@XA$>F!`NW!-EUF*AJ-wV;0DOB_@0 z5IJ94$T=KJ8fzbiDA0YM{s#w3;Pw?~y)5>-tzrXNF3s*#uk>^;I}smDP`4HEIv=RA zzV(1ax)Kk=wSb-rFA{33BuGnor{tV1somJ>qZP{ydDI>R4+=4{E4sITx2ut}O&ZL`jbm{l(rJbq8EEdVFXC?pNn;X8_*+@6cd%9?QI z{(UAf^N5Te%r9KX<-;z7KP-CiMs5e!2W=h5L2l~aTFbnS;B$uxy!>$Dq@MzD@q>T4 zTQgxE!e#(L{|iXZ9~is(<1TlOrNOmKf3NR09{kIqfw+hidSjsw!quFk1gzqhJg@x_ zJvytYaz5dY!e@V5}6sSKLT*$q}AJjIZI%wnY zwsm0;fRFEoE)nJ~pZoOXM?(mJ|1PO44!!h25tpavUj!5hIFdHpZUv{!KJCZ54MbXK zs!wr${Eg}Gi{`o&D#8fUciT3e;@%Min3)b6VS2$mu=qB~ofk7|^#_ob-sSIR_*>G5 zC!>HBdgQ%K!WpfsDx$i>g^nJ8M+2}Dx(jWDpBA4g5AO)W+}xkIKs6PVA+SUk4CKqa zJRlX#1Oe4)zH>isq|^xS!vj|Yvz&a8XsIxmaZE_jLM$Q<@Vg!KA@3zddo%qDY4I_y zlqcgUvT#t4uv;@t-#6qD1jOxMgdwzDXz?xtTlRU9x5zW|+_;$Y4bnelZWT-W=uT%W zKG2g?KG7H}`N|g1`N$q|I>Jff8!5YL4%8d&{eT+rQRngvP*3v(M&L{YA?Ll-0kq{B zN~Xz3IB@ZbPlQmlL8CUdA=`2PUcUskqrkrx3Pf25{lM2O#&|fhE#bcDtt{p& zmNW#6%gtE6Ewe&>BbWo>OzXxdEQ|;LjARpR5g2vUu1wA{AVlrrlZaotv?Ak*pyTte zw*ZHFY7-^wQRI)ODQo-&G~2dBguadsC4K-AZ-^TAElbrEUe!z8M2@R%+WZETI`8er z3az|Z1orlS@X!czX@66#0v%p&VmEO}+%+su9cK}*5!#MGNY@X53H(>$j#6S_e_weZ z_bsD~)+~BU{$uu9zhby#=5^NebGd)Jd;~DfIsk3ZKrGiBZhTj3oHoaW6I{)@snd|lpSzUY3<9DX zReC zdJW$b;G(NR?G$%_P&Jarsjp%XVFu+qSG_}Sj#u=yfCxf+U`yx3h#1YvboZ7ZO_!x> z#^ytLS~yz*zdnhN!BD;_MUorD69-7)laW;W?=SPBN6C)hggJ=Pi5KC3Xv12n3mR5_ zA>A--@l4fUOi0zD(^b4Obl9$VAwVvZSzlRIGs#prDjUQic+V0iRG;Ew-z_p_iBS6W zp0MpRR!M==iQ_{-TTuRKBSk5LZiL46nLxm()SR#)|eH&EzZhsAVBwD?vekq}R5xA0Bvdky&J1F*K> zu{ggOUkwm_d{VE)9T$u zyS&EGh=^KSR+>>RLKOlh?y3|PZYxx;BI>eU%VmYT1<_Vl$L`RT-)SQ1hN0tD5!|^1 zJA>Rgk~ue&7RpxW2dC>lzq&2YPaB}*6(|E)(DZPZwFq=1`Bj=5y#ZN!e-jU?O$=|jWFcCXG+BtjMy)b&YeV>fn9BWX$!$Q19G9j^aLT`D>pik=-+}alDcSp<^ z%n{Xwir#CPg12f$Bro(}_eRFI0o%w?k1d6d@%;ovr2nAYVOrE7BUky27~)+I=NPmz z;~Pk-)v}#*BOnhS8vuU`p`(2^?o&x`fL3h7PNsPdsf-WfeJ}9lxm;*!$u{!V4%4sW zr!A*~lSbRi%B{-(80_4LM-lC+b7l79*U{@MM7vzaaRZQU?tr$2Lsk~m(;EBT zy2_R>f3KxIt3O{bygd_YbU!FsWgF;B*u=eC51y^BcSDV^u&z=3vV=CHv`os_)~I`V z`*=8Ci+TyW&l?m-CQTzqnT@yyasr}VJn+76+P67+ioKwn7lks*gr6zZ3x&20Dpy#jf~zLV(Fta?ris@ z*w^0V{vPG`kYB%h#;i?{xB+q)IbxhfGNi zoW4zlUJ;J^s$}%jod;q=Els1oLgoP8_^Rwf*~Se; z{!drPsmsUR$r3Apmm38{0P=49)jhR=;-6p$D6_?(0okQhG5*60P^L4tIys9NDzt`M z6ODxN7C?Z5;7@qzPeuatB~kXSaNCzXt;75uMa^5atEED8H=%ohoF^RPh6Aw@GjKRW z@I|UzOXKT z_yHyz_+Cj9fep@nD^m1u%@1&Y-V!qj znGdx%eKe|O-gizhrKT)=1LTfaxtX#ah@Y(w>SGg6#DuModN5WPPylo+e+@Cyrqdg) z;y!rkG&GRe^P|(|&2%BG6FDU84UHN3;rQ`u$N!pRWh;deFM9O4x;G~e)s2Kou61Fi zZjxr55YPQK5v*LjU;E<>*Xd~gR7Itf56pi9{2(_5)ilm$EheFT{lzlwvj zYWG+z4tCy0h)@ilAI&^4nQw^2J;@Vk?_Uo?e4>*-eR8Pj9UBn_oz47 z&X|sg4-mU-)+g-k`__jJTHHCWnI?`aWfwDi)GF;kle5TLq_{9t!Zf*`e@s^$== z6{>k72?4-uh6iMh6Njj!&?Y(mPHxOcm@Z3+EE7SLW9@F^K`GP2?+*|Ph7C)j{)?~5(<^#9Aha^rKd%Bsmik4%ZdW-kCHLucKu z8Tb)T4lSeD=QEYw$qbO0o(=u2ZvO|NwbWwU{F6@+EG+}ITyaih?gQ?Al7@M(`}Bqa zkL| z-JK4mKl7dIKQ>ujmNB(!_U{U!Mei}qiy6|v0phk6FG&0LRQ&;M_y^&mcVp>{G76Vi zNM=y~V?Y@P5ybcY8w5 zeSGBd<7sXEC5?#Chj&jzewK;cfhS$KVk9|=Zu-fmrJm3 zRS?lo!bYX@OgafA3GBga-`Y5kVa@dsamPFuL+>iMQE%mF1;||&B!;ALOnjX8hSMS; z!Hxhk(K>)fVA6ppoR}!i2=yb2lH%tAWe&RtNd>z|N;+e`)T>IZeuR<0-T?wk_oTBP zWeBhlm(?~^K&ud&OM4G#wL2wp8T#T}a{BH{w>0nA=JjQ5NBxV1nY_aBR5>aW``8kI zR#2H5EJTj2yT~M&lPO~{u+wM;kmVrx|oxrR$xP zwb`yBP}zK8=z&142_QXBER@B9X)^u>5T%FF0GUeV>RxA4h#EB=+sL;0V6WS7F@As} zDO083t=D`z9lWvmb6`1i?GjfM>eACD9<&DaHn3LwFG!M2>WLx-<}P2 z^YP%VnJ*1}aE+_Jt z9lZ#+tNaK#dg7=J;!O~w1Scvz@1t0xCXOfV ztsUP1bYtO=mvlp{=j3oDwdNW5e<0#>i^wQ)HDnt2fNRLg)3W!H%3VjT82H9E%!-b~ z1A@n$#h92h%^aIP@s!G5viXp*?tUSH&S6n_lSk%|q0mAvln*>CFg+mt__c&t(?nV% zVoEYsmJ_u>GXQ7l$Cbq-@qQlph0)w8LTouvOl3(!*1o3>53Ov;o_{$Sw>{k!B6qDc zM9N?$YK9|~{wK-dEEK(js)(%D$x3fWWvL`nBSeg{L2dRmz|_f{iuLalG7A;oMMx-; zpfaMpH=(7Lw&@se2r=+J&L5|t__D5wsjBb)G4wSiK6XPQG$Wr1U(p=+QTcY`Bqd0I(~M`JUG z8R%h(fB$7*m7f>DCBU@?_s-2XR_1 zE-@Thw7Mj=Z}^iA5yU^7GH~-{59ZK5W)#L0xV_e- z)HG9LbV1));m}4BrpoJ$a^w>N8ajduEI*zRI#Ey+BVrf8^$H{P^x*Ea(kiUO*t;@p zpPT3n<`@E&*iMkZfkZu!p!zgogZ_`5c@TfZyRX_%W4C%ZVEE!q{VxBiYb)&_5 zDG?0-tqGS*Ocp53HY2nUj^sWdS*#xyP5!-}5!#X=gc$AU$0HN(7-fJ(#r&{~o?s}! z>K*;%so1%58{#&rj@&7!9#M@Z%+dq&2U($)eU1_!RbkjwoL0guS1zo9y_J|K>Fd(y zYQn@4=QNlYvJf6A6o`t1XLUm8x}|5U5;ozHn_mby+U&Rh4O?gGiN=)-4}rtEEIFJm zO&#)90vle4UiecW9#WSK zqtzd9=5?yYoJgeFX46rVa%-at#qtZS0Wqe?M26f38%L{2Mv_M!X|+YgxH`Rqy$PX# zNhfy%^G*eVUE|JYGV3>Wm)g{JAKT_Du{=t62QbGQp<@o})S6M4%w|KIbXR{D$=G*( zj$&eFke#SLP%BdnYebNNXds*Wv83*2`p+XdUt(1DyD8{Rb#%xH`__5$(qR1YDnBq4 z-nMbqO;XFmKg=Lj*>^#RZtc2ob-q1A#|w5nvX`o4gD$=O)K}x5+r$T9REyucV@D9X;w&jJ6&f6^GT<9q1gR9 zg+PT%_M9txsoR7(m<+JVsxVETF(+|sM9ogqQf>WJceX8KUPcrCq_+-wpY2Tj^5djk zjcvr+qUA(nKdY5oJv|Lmn4WKT#(FGLgceR7*;yjovkz0G5Pd!{n*aJARU zEkgApE72{*zZi9q)!!J|vKq!gG9YW#;tAz}cnt2b^`~F3|0y9))6hIYkduT*Fw>+x zL6BNKAb^p;|Jy!Krmfk5`%_rn!u+>=9?I0&*wDe!*(J>Y8-x&$^HW3qOg#HN*K*!! zDM;I5>oqQ-o@3MO!_#-TXw3Jt#R|zZO~sO^CPpT~zu)jAn{1tvOuXd7&Rp@RCsLNr zWANjWdw0DoSFLPVr3fOGlPRK%e}-&Uyml|KHb|%837NGsN+8riwkc4TxYMG|EW|c-}D6E|Z+iT}F&c;d)jL52yS9wom6omIHoT+p%g4 zA3kvf>5=!<*w=J-T(Hx*2?GyPA8!!VUpe3HDabA{!7l(eDkM-4sE*}cX1iw_4-=fy zOl*p3Y+apb%0Z6IIf3>~cn0K+TX=NG(y3c@D{O4mD!X=r_BDy%Kr%jiXo@?;b{&_y z^O3YWiqfRJi7^xJug@V**6rE5Ln9|S{hSdx;#flQ5tx~3; zr#3Y>x#PI*q+hl60&JB!oKs<2b7hwuGg=&9Gdt5Km-OZh7RmQtdAk@hY>BrFpUBamPt@XsJ5bY>l}b6M!knInD1C z3j?M8Y6&8+eTJ|D)ff;qJ5L%?TO@GbABea47Ym#zI;(kMeu`g?lE*$PEb}Y5a;hhK z-VXTv)7$4#t94gmC3QD`;E0+yy-bQ7FZw#OY*eOiVd?LA_~Th>&VfrRo0lj2%{mJP zPtgz$ETC3Sgq?XFuN?PDpyGyIUIF~*w-I<4A=2YVXas|K`;=rqi6S~hXz6fC{eSOKj1|A+SWHb z0+nkeFQK)^O}HWk28rM+D7o~__fAOSjKQRg#S06(e(K#>J&Q^L`Lm>En-rbr>1j56 zP}hZ~L@edqtrCgnSwHHmNVGg!8>OPdOCx1Oeu%QS6nSSA;@}O%Z#@~3EQ}CSMQ?$g zl&B}$y9ww0saJ~$a8^=1O>BHo)YEUHJMi71;)*RAVy27~!n!a8Ybc@cGJ-}&CyEh& zxw<@lf@JAXV$q#xC80i2$rbHeCkc;aA5A`$N`S|olYr&w328HAgoy@eF6O$vKw&&O<0ho zlLWSNgDtd@a+krlux8`t<>vh0YG2*kFIAk(Y~#J@N^3hNO1O;H^tf;EJ& z!`o-CD*sfcfwBS~VC*yvBObjUHHQiwmL<6egC8^Otre4x=M>2NB&i7I1hE5CTv9CE zoiDAZH9&m=g@X969SJ&;Yl0Ll;RSiA~|; zcD1$^g=d44EL1sCvfSLd_bdS&8rVhu`oaWNuVV?pC;?1UzGe9mqpaPF?GveRUz?)m z>CjqN{<*3|opeybo;0Gi z!IKa=tb))MUvpggW99Rh&ZEO>u@N@7&WKpk+_t@q z<7j@+vz^PW_M(bJo^nR+IJn_(#0J(8i9r+K0Rb5C`@8Lx4I!oB#b|>*BQhWAS)l^X+(?_LJ176pgzOT);gE&-H zT`HuvWpBy}>clo*O{)s-LRXsIgEkc8yH$bXtKWEdCfF-IulN#hb@j2eGvCH-a>|K5xK86X6W8TG^aQn=N>{lkArtMUQ+{@?tdpQ_$Jmmk07 z+BT$blJa(|R`?dkZ$Htb)<77P>GU6W$iU?EwKm9pt}p$8A?3C!mlQ`1zhT z81D*El!HX4WlE@s3Ja-3VY;3H2BmwCax%ir@wvyd*;J4oZd&$)2M8mt>o*{C5&TTF zULCpH+hl+b<}jGi9dJziY z{9(R_nD^=LFnK|qS9;5I%+@$Kk(XNDRW+#QiJ+B>r4T2>wjzF~EDy)$Qxoso*KoZ@ zRx;%$RdE{A?iA1SL){`WuW2D4K}8yd@%(k?q&vKvJbpP<)d2vwERX?@3?G5<7Pj_V z(5$1|trdGe&@ng-)Aq*6Gq+|1NN&%P&LrR5-VyhE)i*R!THlIvm~-&MmzG=Y2di>T z!cPoEBsta@?7$=fpb7a05QU0bvCkUrJFS?F7H#@6`p=mZuLR`xlC6&+x0cbHsA?LT ztY7jFc@ZoVrBDE9MJ45`CbRa6lp}KAA{R39;78AqKYO1t+e)Rv7^58l6UB2E#in%$ zx;CW4C`d)$YhnawnquD=@IrpIPt8I;FQOmMqC*KpwPGE~x$TUFLMzC*z2O4^`hVPT z2hdO=$Q0_Vek&T~x&xcWe0p(qwRMft~&FCfN1vM;3 z3|IGbgc_O#ad4~A^p)gxB04Y5;LwInlb4VUO%Dy$uOVF)tNaWYvlxd0_+i8r-<+Oo zxxB?y%?NE}K7pV_*S&QZ7T@{9N{8VQhh`m_@(5_4R=VN15;ed}Y_8!aS&Yz_9xHuMaMs2O&fEi4ff z&j+ywunJZ!3P9kwdD>-z=Q3v);x=Kg9u&UTBm@bTjpJWgZkeRsHtNfSYI^<;_PEWW zc9%mDz27LQ908cul&$q-pr7D~Ltk$Z|M6l0+Sj)q1TL+I3X~BvF^xGC6brEK{58ks zx2%yrZu+CS*mNX<5oe5`b;*@)p95dwHtKRWeo$Ii1O*;M+X?^E2NQ%mp^&lr2FT(u zy*0&7Oj{k&of4{yPz4NR-SQcx_>$i(^QsB z&r%N_D(KL8HE%guZXEpjATFVYap!L=E7DnKFfXFagP(e-6$qq8;LkHHEQ^tMLWPab z%yYDxW(mE%(}Q_56aE#>Kgnn|g(7c$)E#gu1dUr=c(bBWj4 zU7*oGIB5y-euVhEoS6D@bBM>RnMZ?!th}3Rnx01tpsG{Vz|#n|J-C)UEkArg z3pifo2qDl>%9@^_C=5sr-O)aymb4HMVyIloq(r^VE3KcICdr|rEA2gP52~H@J%Vo| z>5ak*jR|D3g4Ag|O1bCjjZ&V1_Qp+YjZAEn%WH8U1{+@T05FJYc_y=V#4tBDhp-gl z*uyv>Pa=#i0tZ` za4~tBn0~%L`GAStP<$?UWfLne!QxV2As-0$!c4{B&tqtQ7j7KzncRSkS4@R#_<#x_ ziWHuL1InzTZGho*^wwq}PX7NG;-TK`AUO2}^;$4qCmr-0q^) za|S*w&(cht0JpaG(QeA4HP;dxX6Z^f-k05@m$b(D)6+>ezxTc1&8-cBxNo#T){y9% zA7qJ`6bCJ}9lwt1sr{!Ir{l+tAHsjI#M+HVu|(Mg%mVsGbDy{!}7u z;MeYrZAaHTG-)LL&J*;{+zG1!JUV%MJI!tcPfho(hUERBlK*Kb^s9xRKW~wN#gFNA zYFNvGkJQe{2ELWfy2BlQz?3&MVF`)>?h-Hd_JHb=7@swlwMNK0F*aG&RzsJvj$Hi5 z`w{iIof6>qXiZ5Xn5@l%kMc6(z4K4+3EOgrToJ0az6f#g*FSPH|I3TVRbB=)1+yH;HHouGbreke||A z?=YIu4Zfd?$*`G;k^aSS*i68n4F*e2-@M2mpkz@uvm zJpnJ^|Jck(;CsSEC_JD~Ul#Ky&cD)angSi@_cUsLP)tCx*7;Ya8RfI47pzEDdOU@C zRUSu2BZsm&XE38{_>r8oj0z_lf_#_^2$qljH23-L4thhq=CqznXp6G}`S`F7g-4E! z8R@thHIZf5txx4C%$G+AqY$AdC?n$kA_j9t%Rm>BR!Nl#8M01#1EL|mNP_8vM~^8B z%@B%D$O51tJAWZsao|p}UYXw>M^%^<57M8Gt4KcJmdOZzYgB0^UNJ0Oos!3-EW_+g zq#nbUkpkvyw2<4;njLOenY>38(DXXZ#PBxcwphV%@pN&EcJ>Yt14@?f;=FB0?--(;y) z3@|Q*nHD_SXXXW)44;jbl-3V4e@{G&%YCi@K+*-L4}fT+5op`4uoTfANn?bGIO9V` zGZyx}VC4Dt0&2X%$?3b#fn|wwuu|jbK)WunL%{dIIEpzP=0lzx_e1zGRva01UeG*x z0ovoxNH%E=`zsI)cn4FdcUpLITug{b01e775=|2^Tkom-4gDi*RD0|}5x=Fr&Pk*a zm=;@%JFX+#c+db;(ZJ_%ZF)1@VAZl&p248y(9;%I4PRnEpeC&KbY$bvftHg1^-}oW zL4oV&fO4?(38Z!>{b_1)Zw+=jYBuK2^28bEbK;01+E94W8X;u1JiI`j!Lme9K*qQj z?1{N2TOzwEOT<285wLxX+1}#l_F`F`DgQ4LQ&cc@-%pHgv7d411)qEOr&7Jk0yr4c z)ijKjID<%Fn>pV5CEbK-Ib4& zA7Wv}M}-;T+S$71|09X^yCWDP;Yo5Z&4VA}DYIH9vy6r{f>g7v5-0XK;CqKhE3tZ< zNzvI&Za-RTo;uBTR!Wp5ddbP=P^JvKSP~J9_W9M$7Vpt1`#~R5;qP=gMzN`uX7l*W z&K!D6i299LXG@6FTp+zD{2wlHocL;1_yOBGNX?al=3!n6Z`r%nod--w!KVSMdgQ&^ z=Tma=Z>5kEE?Agojnsyd06#YWsyIsR93bb$5aKF(Q~#YVGqg1u5I{yrSL{{AHV${E zBUguTXr#g4;}^7kI0M#&x?!Pw$4lN*S2mHg!@6{Di9}cBw6W*0NfVL@kkJvC>8Bhj&wB)b8Ao>+34XXB~Zi zW?_?QCA7t}8lda}*hEhnKDmssTUBUruRm|*K)uuKs>`vnNYgqs#Mv}ASmS~SgRT^I z+L2`i!q!Pb1C<-RN@Qjm_Pe0%!YB5iOJfpP(=V?kWoXFlGefD5GOQ}W86`mJ?iVFh z?;02dexrFQ>}OjEa_bs^szT>;C>@E3rbYaCrHV8$EMD@ChY~WvFjC!;9sT|NKu^{| zwx<2>&Bf&%t7q$h+~2!KL}LXOnzv@!Y$V%;o>F1?(Tk$_yv`9+hvP6H^VE(Crp?6# zYSkyxHueurfR)}HGbHI{af^m%)u0ZMw$-w-&d-w0-Z+oA zqY)x(*atOX_s7*8LQKSJtC;7z!1Rn81(@i$sTabW=i7s#jadhP&XJ5$ke@1638)eh z7;N#M3h3fo$6oTSX(amO0Ak`1AX|-nPbnLy%HyRvAW8O|Hvx7|YED9W-Nv_DJRP*; z{N0o96hu8rb{oZpKe)u$q1HFQt@ zGbk^Y*fqjUYah*3OpkKi+M)BXhU;{pqu}Q9*A_M$fL%<0$fDeHxFkB?ht(sqj(4{J ze?#K}E{WY6pPvpZ(X7UnJV+`?c!eyZgP0Zw_+vYVu{QtvYU?YICZ-)lYQo?*79iQR`&{hyO_eZJ zx{InZcCHyuK=r}0g){F`?#N?o8OWBqOupb$HG`=M1gT#`DZLAA2g!ro=ZR0W^(24- zxINg0D!xQgigmpTOsnuKop}cQ!Z^hhtYDnA?h5W&j_(}g)oqYr_#uDyO?EY(T4QXP z=No*0=^#ta(S~&ct zaBaCehaZPK#|d5@nVa21)J>tWW89gr01&)%pt1F`5#&o?O7PfkUN4{L`^8FeQ|zt1 z20SB_n_yuEnRD3na=LQZF&$x%2w)~v9A(k$&Pt9Sj*ta$RMFj(^tCPFAS`kb2-2eJ z!GH;$PpE%Xi!^vYFsvlA7R)p$Kd|qu8l0di(8&LY7&&V0QH@_P8}o1fu|%-aaQ(rM z0biIzim!y;n8C#Vo6rkU)l>MFYg1d-0995lwLC2(CX{5@gd#j2AUB^*LfKW#Az>D6&;}M>;;}hPMg-HtLKfc=x{~U+<%={tAV-u-fGkI1FTFr^$*anag`5( zIt|iRS-rGtVFV$tD6Eh7(|i0x%W**kB*S8*ZbNTti#qW5NU9cRnPk94wUc+;Z&(zh z1pbXZs&IUIG-lU+}&q8v(hAH_JI0vs!+9gXXV=oD_;9X$n@y<^o1>wvM^N*=iJR zVnV$n%BI8<;Rp}AvnUh)EJ0WpSjc!fh>wQ@Vw`*AlyqS1)x`EN)U+NO0F zFJVeM#68%2JyE#lBRoD18I^1%~&4jW7m#p3*MF*0qB~Zmo0XyxgMo`y|M!5R`K^K18?-$ zzLX2HYH!Z^ega!;I)pRU^rg(z!6yWssiW(*=&KXas#y^esn_C$z+j$?TslV>r`(zj zLZvEurM<+WUfexoA4*%b#(ZY6%lJDk$zIdA{jELjMxK$`E^qH9cr}?byl+LE^myk7 zVLfc_JGw<$pwV!Abp)yEp~MO8Bm_QsKW{p3$X+k~HE4Ac1`US#*KQDAjD&aos`(d) zw3|dw+_V}181%o&U7EK7C=#YsQj^egf%RpRtY3PIJtMIQB1a5uUqxDh0;n2bTVUdP z&%uCT214p$qQ6-=iwSxId&8qs@1T=aKOWjRFfW@0nX7TyM852g*fK6X<3^w02>Rmw z`?7@Lvt7^q>R$DPBeVn2UAvTS(u7aiCeV-x53+(xjKuS_S}ZjokmWkVD`Fuvjedhq zo#s2w(Hv{RhxQ@%6&|^i*RU)gHFRN`^Bse%3_OTvVAt)bp;eku<6YldB*~~%@XR3Y z#Im`ggIJ@Q2oYyEnG#m`yBv02b=!D4Lh>V2x!{_6=LL?mIN>>kqA9?5wCQI)Lb9PH zcm_wIwzuC_)tQxkatT#xv?+5X#ZfYy3~#;>zlNW4z4ua)v4AY67H&8IkZufR)wb9d zW6E5HR7m}CdFAl|u)5iI=&L!lpij>UX()tg$=!Zlf5 zSLgb8HelOLy~No?d4c^zZX%xCPzX>{+l@einpvNF`JcA4^+5^r0vzF=&hyYB{le<2 ziVl)yPVmxT)j^T}>pM$S?QGVW{$Vf?cm2FzSczyXt+v8}J=G*)T50gt3Qe%%R;s5{ zNL>!C|LkeZ{%cpvL?LN=p4;hjHJgJq9il3!JRn)TGa3PLOd?XXWndQJ>8X?`DlIt> zuB?n!r$yC}6kJPCMbP(%072{7Wl)<6T%NXJlR(jd1JtTs0Xl2C4Jnst;<7qZUFz%f zbUW<`dTjgl(>{KwN62It6XuS9h$!`F$VQmqEZD z(U+yz$8L}4UUl8mlRG^ahAY$9dhm4T&UnbiTEHEoQ{GuaS>$M(P!Tew0msNfTA2vn zq5Cw7odGFN2S`_h@-?Kxq7lr%tP=rnAA0=<*@S);lOb4EH>=ICVH3w6mwPq0LFds7 zRSZN#KH}^*g((f--cQr8D?-MN&#p=-9W50@^35|*^1?pyDAMIN{_5MYtRvbehhc?> zA0Bq8^~6C-9<}_gc5xE5h$_0LBabfBj>esG#>6=^1z1*+MT?M~m7SFP?bTX0Ii=-F zC2Xd-kDMH#Lt$-j$3#l^?!XZ(lG(dL^mN5nK+#UYE)1hYmIENN64D9HjIs{{TAHiYqHAgC{;@uX>!Z*6 z*MXQQ6ks5;?G8(>W#8hvLB&(rFkK)$tQaS6Hs+&tXnOABdB;ycrfwen2H$ zpCt#mTFJyr>j#<%#(?P)PsY&u#fVG=Tm?lz+|RG{&KA_ti{hL5XTkddZ@?-0ZM;+^ zv$(&;-6O%X{Tt~2IudlvtHO1HuvM+LnxIth|DJQK?{$NPUlp1F`7Z<+!p6+Z=AU>5 z5kS?>A?vF|r)qEFX((xbHp$H)9-5_OO3!xKYj^rlqq8_dR0bq4%T?Na`n7mj&6%%L zNA6y=caA)PO~MXC?ipe+TVOYcq?*x5G%eNMrPJp@P!QjFEUL?kMt%eHmCIAn9s zD`&PC=N%^#O{N9t$(XPo5dHJ*`rUL4eB0y^9$y3-`mS$xX| z40{0(D{Ia%R>!k)AO>el5i&K5gWwNJai}Dx?8#Zj6SA`XZct7n zG*bi?UB8iVJLg5kUgmo;gGv`47u?OYDQ;w~v$P+c>7!t^yA>n1Y~VtQ0H7AAF5k3l zi~G6POiYmOglsdTHfQTL!ssX9@Irmk~so(zNbzwN-Xi^(H7IqR_=Hs>p$4}uxdmKXHn{J;cUw?sAQ(+pi3bP?)vQap( z#Bj8FXTQv0V}D%tnnrcE zSpXTpxUAKCm7Di-_?Y-X!JPVDWg6Vq%^Kd&xaT9!t9BDaHayECZ9|XA6Z4v)t=IbB z;!}TrFJ_9VLeO>ir#l3Wm@Gr+*;>m|0yifwAz;zkNN7lb?+5GrRi7*dFVv32+>g7} zW&x3t=KE?=Znw<1Ie9ry-5-uK*AJnXlz_H*!*J}f(88G8MBABu^4W}^IlA{RyQlep zhWvwU_|T}fWlEzB!fbd(MumNMlpuz0$Z+VzJ>wkAyoFv=TBYfdc0?`Iu2~ex4zq!x zR3tiRa1jfUhn8Bl{MR{~LOy6>!;lf>Y|n4hsnK`yBI(AFDnae&?ZRT?Q8!*u!T=Iv z7!j^0)m67~hsrnh+VEkj_~e^_RDDP1@qNU=mLSSs$)a?*O~mDCNa!{2!#)qvFtxLE z45)?%9wa6HGF4=BWj=^*uzYgM!Hv+MS#hz>(XrA~Jgv@XqcaCv%8?{4j?K}yGYER7 zrc$6~fVO0l+nLlbMwN_QM+~ z___!nejYPW8$wux?O<6vP|CO;?*>4*^H#I-(Oy-~1|cI^wB4fV;N$z7DuDabe(j5Z z{e!8qp?kZAp7Xo=X5{5$;Y&;FQIbDX+cbdPGRu#%*V^JzY>%yh1jUA9*of<4E2nf;tPIDNT z+NSlQfx)G51%V+ze)VoXL231i0FA{ zT6gK>nu?A;++ud%$wM_dM!==%$3JiGEWJ;91^I6*k`b{Uy|1ux9UL4O`8;$R z^d+~p=rMp@$Jw8=oo`#!{(x@EmT!F7x%hb9*#rvmptBs7AP0-+Ct_R$w{vlpbkOJ6 zO9o{UjbjynyGL7hMu)gk;^%|IKfbc_T}X{)^5Qtwyras%1}=&V^xu)bs*e3^Z?1d2 zUS52l2mK7U(L1Z6Qg1rlV+uyQO!w6Fp(h(J{IsG@VpYHGFA2U5CcuqhldWaBUK1Lx zfWN}g^rXT3*3aAYDrG4DGRkqUh8uX4PF|t^jc2bTOX{8)@=_sfGDL z&w^C^O>r|b7F26(O{z=fz4Ax5HgX4gpy6+$0YIedJf(e5xgJiJId{6Uma#;SeGp>cIglv(7+RnFuIttg5~;%0#@&}e*2dnDMhOW{^cHhy&c zW-*6HRA)n6rx`GO4pL)dTw>xBUxI7~)4yEIqeuL=;Wr0Q=-WyMl#@^RMbD1q=yr+Z;FoK_tC0#{F z6QA@(foccW3dw3ps4=C&Gh+F^MO86$q9VcbNKTr(#y9{a6p}@!gf*$Y(Ma;KnvdlD zbk7JpGKz-9;w2OsYaFX@up5*P>tC+t<&BPT;#jzf!{!sxe>I#RbPUMt8uU5(R!mZMas>WLe>cxQNX zl#WVo!4J})a|30?rm!im+=YcBg$|$}d+k;}i6Q~w;x@)DBXtm~mUg8oC4^D3NM#8D zljcR}-{2(2565|bF-?28hc#<*__^WlEt^uK55mcsXg$jfUDav-i6L?rxpL1MvoUwb z>{7;&t*%%nB4KtgVwJANJn%bt#2|bXV0!71@-0JKVfSpt=pt?&LZBLg!PY{4!_QzO zlEwf8iYxa;+(kSL33%1fra_k7r;XXynt_=+f9jPeKZjlR+=DjTLVAWnwy34fH3h%G zO1E$=(105w&|CQ4b@}=c`vl!tX>>k@(jma`byIcQx$@U$IC*XLzSVXcR32n@Uf!*w z{t<|C0^z^jD}?f1?|%5puQ-;~6eoGx!LS2h@9f!YUiw0s9{;lIiEo6#X!@?a@F!Qm zCx49J`^El6ZFiZkkbVKdw|b{LzWj2MLA0sSVcQ`=pT~%Dk^lU-)}bWUHem=m;d@KNMkNl*T=eui%9{+uYzzQTb{0%%S6yft$)EVpYRhK7-AdQ{UynA;d=k% zWO?dKn}r7wJSk|GZuebm5x58esX)9Lh{F0ec3f&XHCQOwQoI=8lq=*T+xY-&ktO24 zq=RbUF}=%>AE7^HewhL&v~W}?Dt1m>W(1bS-L^EOp#@}qPBz;QkG(w^lFj}?fw{&g zuEY^tHj*8ckMzV&QvWod%X_aee)zcrj$FeGiz_s+{G1>L$2x!L?LiF znkScLEwEg}#vWj(-T;|j7{{LUg+@;$PazU*4O%n!eG~ph>~e!*M++HVImoLilhqVD zZyFeVC9VM|}v z74^XW+Sx*Z#yPvG@Yv0DP01w~E8_%>x4v&fYgE9Hj`EAq@Y6PJVBBnh9+Zhz%~Md4 zG&N5jCdjHToW~u!-{|12)y1XQtX>i}mGe|9QLYK{6-xtvbZ5LYXG{}YiB2xn+wcdbBVOTq zUw($!f#KK`wQMr9k|z)c0S@=H(*DxOTwI><3un{8;g;Q`3rC#a_k|X70pHJf>nu*M zIXN|sr?5=$RV#CO2Ev)-Zcf9NhU|dmE6(32<=N9KL7SrNIRi3t2nw&uH-BWvCIkd+ zV=e$Xl;l*1ZOMel*s>DI+ODW4C6;Z6 zYk_Iq4b7SVeTDVNU!5ykZey?SboRb`>3Q-EOcG-03$)HsG-pa*Wn)@L3G~rsG0P@` z-^=ICK33k1l`uI6t9%*6xK@$C&CM`#bYKS%e7B(kEn?9p=dNPePgf5L=&%`e3%K4J z9=@{~TcklCu}0eTXZH`Tri~+{%71YwBKDjTGHuFXiZ!r?-o1|P1fiU%vwywnf<MGsqEF+4gT+36d%e}JfD`#9Li%2|{ENKRt&F4Ub*s1a zDg^ZYKLNvT{)NuyD`80t_0JJSk!Fbvh6#xI5-yp$wW)g zR;zcg;vdF&lqf8jS*PaHwnwq8mh((=u#uF<)5iJ0z8G~1F|2pD>{#I62s&75=-NZL zgt5+UB|2the7d*s8(l*BE&|~E$_6$0VjbtngSXUF69u7Qm%)Y?zF^R(5nxZ@`WmzK z)&Q`PgspVn$Qj2moa{{i2{eo~;5AR2ocrupzfAowWKg%Ynuk*ixwdRPq?Tm#eB%Rn zvl8ZW?U01L&uyoZcrc{8d`=pEpjLwmY`i}Q)PFb`JgPP+bI06Rk(%hj9~L=a4tsrH zssh1>X5xXC*k|h7K4HO%0rWeC1Fk7B@3`AF`J><R~zsBDrz7j(+(2cg4F_cv46!X;Qfm|)T@?OSB-oKVkU#L$+Z|5AT zUryRSac$d)T2qYsk#ZyHC zO#2Xo^%@X*{));1#|FXMgo%xK@SNOjCldGSuZSxSbf1@tpH~UO;>M74aRufHWyI5= z5F;LjN&F$Y?{@7F{zeu1wr{AD)_;aGE!YD{rAh+IlZuRW2e7NVBN+x$5BbPX=t*kX z$!l%$5S9`s#G^7?09UmsRbPf;!wT@1sm+fdo^I7EQ3fp>LNo#%JPv>THgS4k+8A&`ehWSq2=T*{=@s!8LY!wuI$)Hjos0NOSB&jH^M;yZ1!qSz7J|+ zXj2GQ`?CRv1OsK?PKH;}Od|+w3~5$(MwjZI(7GA=n3QR>0D&w9=6>z5)`;<YR%)KpDd+f(pZSU|r32hqF+p){v?}Pyh}opdS+x3o zNX?L*mUJ?8Q)hzvl52G zVdRe~gL<>`#42heBFVs=Xz`+9>0g8HEU9z8@tRY}9!QK}jwhfx>Y2o& z*S)Nvl@+5uvFt`k6(Y$BNXYnD{9(btYdF~>VFf(NlpU|gv}(WBWYx1x%pxElK(b(; zc!meh&WWDd4@kt|RE&znZ}T};0&;tMe4AfBHf^{dS6?+gZR@4xxwv%z(c(d@Z_S(b z4lzKj%f9Nze1J=5cM0Y1w4h<~$n9+Um|ldbkGc6JMn-jq>22No(<%*}(d+6O#+sVj zscCY{WFZ4@xHokqq&`F&x=o_x4O~cJB}bGf`lKcERlg?`nCmj$N2>rf3FyurPYy1}4}ZU9=Ls0=q4=npF5$0+<582s+xZBVU_N42iEl zC!7S#W~GjZ2nn}P;;G69cj64FKgTxWzhXwn`H=u-&89^pn7pE|pIjc&2`o$MbCPE|w8TRB!oq#i7pODm%faERiODJHvA=niP4 z8tUTFQz*3oL?QjYr{9a&j5yS$aH^x&9nX$A?&eWY)lyz^+~zB?R8mmaX;Gi9^^dVz zAwvCAt&vKQvuX+5)ARCZR||~M=UbEuF0fJUU8{ZU=0l(=zuLOLiKqKMTp-}`g_;#? zPo#*E8Y69xB%LH~6(67QV^KaRkniP*iyT%mI=n~&%w(Js5I2D~4q2W@6TCN_G7_w5 zO4n`Ch9+)7t^X!zP?u2r0rMQc>esW5Y_F&|qUk~5)u~9ed2&;Av)a)x>@p-qdJ+Rw zcm}pcZzMR4LRa@Us77*4hl5Ef)tn_T>ycIcaG|iRCaG#taaN+~=1LkZ3~R`lRx402 z_1QxdAl%~6_$c}S|4@t1odf!O)qdz}w2YSh@g%v^%+9Tvt;YMQowAnz zvB;0%f$QhQi8yM~mxQL%lcmn^*`?9bP;)j3K>lebU(eri{EPMaDy_XL3ZEzPxyEdI zsmE-s#)^BtUC z;Eo@D`qv`;b0zAVgknc0<;#M$7fz1@9c3)LyZQcUf@bEG_mS-JVAB!mNVYM^u|Q6= z-E@wuo%AswYpRJ0Ps_)#NqgKYM9-el=#KYqKoB&q1c|L2rKudHr|>ZWY3ljvUv0Z* zj7D1*alPw#vA-HBuPM;w6AL;|5*D-kfd0Leyh5^~+4`Y;VAXN1A)Mf;4uDtK>tomC*(sVPV-}x;; z5gYz%p8lxB;uq^Zaf14MIj1YxMo^AyxeIsL;x0#;h>er=yqx^&#kRt}%ee&VfcKEw zrh3W@KSjPq$%X)ATTP)}!h!F?-&TqxZphPCY-BK;DKhkxDEFcWyIlq=`CVQr(u|lskogF?W7Zs6#m_&9GlvmE zvdpfQKe5*&7L7;LMiU`Iynh4p{Yvju&mGVBSkdiXQkVaXcly4ypX-?*0xBURg=}Sx zp7QFJs02*MwXb@4n;9awnL0lh*_P2CK{&6O5!CXYvcs<=sF)@38p9u-vVI;VH{N*~ zoSkH|rv0+W5#zzbb>~XGqs};TDEB5`b58tQ#!{7bO7y9$B4<8i)hL}dd4~hdQQC+vs`hnzk zOsigwGNWl|tGiAWt5Q*6O06K5nZ_js2hV~2yU?rxwfX%CF=}8)ty*2Ip?xBo)naDQq*M%>UdEZSLe?X&VKRnWvd%YV2c560 zcheVI0MJ2BO9Jn5d0hga^Bt*Q`s>Su*V59=fSXt?m!ZOSw2ygw+RuXX_CC4EFWg(% z`tmDU+B7uoiF6)$GoU+!Q@_K-$>!3ie_dQMZq z_+1AFoRRp8ta3)`oJg;d@pF9rpzUJKL;0fpfXtV88QeDNt%CjY3`0a143rHnf0e2+ zm<}7c>AubAVaW4u^AZvSrf3ooQvXK`sGz!JZ z3KGpLgL4W-;I+J## zULpTA<-Z&n5NHtGFVhAK?*nfCOK9tcPy6xo6*n3k0!09G`yYpQ#LNakSoxEY8Jzr#a9}*+(erZSqub(qI(BctJSTgAqOLOUt-)qN? zR~JiGS+uKDF^vIJv)x2onLOS@t<0(%R|Bhu_xal3tDu9@)$aR;tGSX1tI+qt-5qLv?3;ldOW)4q`6E zBX?>O66%i!17=rXi_738h}Sxscr)j|N{E+n*Ep9Dg@ppLQMFz?1v0QsHYpu*k3+x0~T_v7?2~^YFDZO4wE@H=Jp;>%2yuYgO>}-#*Wy`xewUOz1uM=fb~;IV9K7 z?`$mkjN8^JFp@6=+X$XDQfc|D5PKk=%x0Nxn}!zPaKwpb^WB^9vw0St={8?yPE8@y!RKk`+fU#wI9S_3IT_o&f5kx@3` z+NpJzmr1$vo3FwpPFS0W#g#K1FM^CClZWscq=Z;n2$B`U(Zfd<>LY8CNm&C3Y5V(i z#v}nt>Q}0YDpvwr9)epNyrByPT*xOp5mJ@13uX{u3}dD$$7Jx2^D)KF7(!$_ghk2b z838}-OzE`}YuxB{W~0?3lwu$VKvH<^k+Om|)T|zaF{Cx%NCmwj1|VMTdkQe^CpVla zNswrHagsqIXXQ1v;~Yc+xrN9uf(sDR3m^ez#v#5lsAMPyKci>3$Oq;T^Vu7r4R&2L zxv85Q&h9j5r4b>`MfHP}=X9a*6~7J6lP$%--hVpQ;Zl6=n+1TizCv~U(i^9uMGmnS zC&bA^K;TTkwso+qGu81~0uu1|DzicK^+6B}3=W*vaW=06%J<2IqH`k!oNq zaR~m~+etSIGld}wfVFiKOK4522!idA8jnJcyn~;Sob6j4AFUAYp$#79o7oy$&9~NA zvN#luC2369v8TO5e_WDCH5~f!cs6YS1~MzyqC2kBQH<)LH9-*7ubs=yw((j0jeZ}I zows&Y;W&ju?GJdCJT>If25~lVz)UlP7F*+91A;wUQ>u(#F#&r>!@*~d`enl2h51h! z&9Msto7GQIvhlSCsRn3qaBKe|=Wwp81$6Tp^(8TLE za>~YJHUdY4T0uho~o`T zw`NPW0-1);&TI~e-tCms}BAC%N2QC;QJZx{m1G)9#mux^_B>0rxbp3OoRgfbJuIW_RGkk)EaCs++O6Aht%=7#{i`55h>6X<#`hU4K~!(9rAeK0{aOQW+N{EcW4kBbHg?}2@NP!cz#4c$ro z=$rNOEMh0Ieryq})+_u9g$x$r#$_n6)RDYXakDHsjmDZ~dA%fRD^dDu{e`k90YWUp z!H;srobsUh8FZ;I5IDY4pfD%kDu`2qv>P=kmRbvw8f*r{ji%B$TUDYyBRD!{7HjR# z%KcuzWHK~7w*~j^o>f8PXvH5efh6RyU{`B=jy1NHO-!c@Z|u^s|BtSBV6Lof|FmP< zw(U;RvC&C7ww-kBq>~-nwr$(CZQFJx_x=2z_nn%lsoLuc>{@GG=lbC|EotYJq&f@j z6`@j)Mh7XvqByA^#TU2?sv72bGqeqdAS0aA7&Xdbw?|zi#lJdQ-<_=GDp215#nl9J z`JwKthnf9jFIF(g^fO?N9ilUIr6-zftCkv87Xo#qVJQ8IvKa2a^3;-eTa+SNs>>?I z1U*VE+O)<{*Xc(>sN5jBUXw^;Ph6a{F1C*SPTv4i??B{H(vShKORXBE4(Iod^Q%Zp zg_XUHx}ZuwKqkEqT#k>nR{4Kpeh2o^{v97`0yczd-+RhRzTtFri2w2F7$<>YK@sjI zljKi;(URmRfw=&aACLH<6zZwc_eByf-l=cta1eHx6vK#fWRhGoTe{br+Fo&72*#<1 z5Ps46#M2Y@b~TRNY%VMUw&1$_Iy!W|TU89EEmmuq)O91a&)3)0kK`eXQg6RmFSTU1 zq=oG!0coQ{;b7Q(QQ-_%%1%>|3x(0Z^ztYm;;DbCP>i3>fr_#Ow5jWCWn;USroiC-t);x) zQj$lPU-}I=GQiR&5b<{)F^;|^qQ3=t$0U}4?Fm6zEx%|`8jMG-xZ8K#r(BW4H$cg- zSf%2|MYXqg=OD<67{1ZI=i_q&IJ@6kv+?!G^ISs7ANT&l<(w&!^$$QtMm}VVV>`g0 zYV7VN!yCe?_w_kuc)h;#d?xO{dA4?R<_VSK4+n@P207PDe1p$#VaI2B`+v?T=Y^w# z)aS8@Welfj0SJ?IKc4C`v;2pxa859hLt?0k`(460iBU5x{OuFxjnx;?p`km1S`EMq z3&K)S)%WoZnHal+#6Uym@MvVgTh(5PG|HGku8%0y0>5d7He$-S4`>f(x2JPSX9Zyb z-~c)DSM~#=-#>Bo!Row|V_d-WZz|hH$~kg|8CQz~h`jr^_RV9soO!LBr7dZF6XeS{ zL6qIZSGp>=pi#k`z%`GV$|mY{RyVMf{pPMqitr&Wynlfn(+M>zE_Vt1_}wWuioXDv zVC_gmG0csW7=aKyS9?rdQTZn1%6`WiApxK{m1xLcQUK5Sv2cNm#XGcS)GRU!>3Pm>`S##imKhyGSwH1OZ?; zR19zA3W-3@04eTm2a_G*w`b>UUDTS{^JRuV91S`_nkwr1vzh#t$OZe{C*>rP%5$4; zK>l~5gmNbjHFACyU;v%uJZ>671EO^v-}RWw3Mq#(1ME1o*23=S}y zJi=uVc4)ha>i47hKq%Q==7&ln52IQaL>ddIb(tUTL}+GMEjT#RpZGkhPE$kbVy;Hl zn9IZkxq7oD{lqGqoh$V3)HUL;^Q%%N+7}soe!m=Bt*bgWFs)(BaDb|of`e%Ajs@ZX zo8GHEI4Ps-rjgpkJaj&RkAu?P?_+JnRb^=i5I0AS0xN7zUyoCU=;M=2mHMRR^!Z0f zQtMcM?ky|0?$?&1-FmK z=e@b*u0PxCC0IKa3kLCx38?SrlkR=9%%}b;%kIp}a{M|SezB*}oGyF<4;Yc6AKrRl zQ=ExUPW*`C;qYpbZEp-R2>j6t*SkA5F*G(dI92$#M$)nu-DHYtRobcn`}JrG;0Ajt z^GN*@JuIwdH)?z){$5dWb@XB`mj++d5JFKke{s>-aT_;KU3{)9%~?m$+o|2b+oGK^ z6~)Ju%o<(Src1`Yz;@I>E=kxCX)wEA7gVL45n`R-S$NgfT<(kg{=ZT2igGuEpz1WL zCcmeb$?sP)?spU~=`j`{OlIkGPcsS4+jL6FI_$r zI+lHCgBkNschgG198U}1e>?7sym||O<~pXQ?d@d0v^~gX<1iB`ZyrgebWfttPZzVL zrNCogS12zOdLUYg72SOWe##zm(n7!J{BKi=OzvFE1uKr4*`<}r6yZABcb;nsRLH3n zcUt%*@f-=pDM!S3;5<2YUo^KP)eJ_@2n+mwP`dvPEB};YxB(mw5Z2$8eFfC_5@XyX zqt)++;$Iv?!Z+Ff+qVCQ2ni)YofC=IXBUU%6rnfa4djW%!N_QCGQB%uKp6resR`fs z`IJE=oyhaU{6jCS_3HA?^(iJ%J*OT#!cVYV8A3n5_SXT?+0&C-`DLfZ1Zmm5-ggw= z8jg-ViTYHN*vRPW>Yacl8Qz<(END&ciBJ{r`3ZnN%ueY_CSSy;o1s#hc2G~u>eJId z6Iw@q)v}9vtP=a&)6FYt>Iv@tHrWP;FI4tkyzr}2&D@@bVmUwU%1-NyH8X0lKQ5_5 z=+EUJl40oYpr&3Ti+G|?{($^hF2S0^RlPmkcz$IW4;|Ct{9dcwfhV^qQ#4oRilQwZ zmjU8zy`qEQYpyZE78OShT$JB5PjcI@%jig|#z2JA%abb+->+u=#hu@}6xV~Jjo{JNw^Gb9 z+a->cdvvbgOVI$7jECwETE%nza=o^Lx0(4#{ktMRJDi4j-K>HB{Ra5=ZtFH~zAHdm zqL@XlWTDKnyU4z;ah$ly)0V(&4&EN0ygm%x>w(?lDwpv6`hvujzZA3FCL}VLm`Pk| z$w;txCZgZeb`uNc^lm&b+{q>6fJR|$-Ais5lz1G@g4hy1FUgpb^IbvteA==7Z3Eua zY(zo>z4+p8T`^64=?1A}J+|sFQxUM+QJ7~fUIg-!Yn3ozSHVl8-w%}-9KIi|q@FLW zZrkqt9>Cb#<_jkr+m30|;5y`_MmEqZ#mvu2kp41g(bb?n&G=F(iM#8ks1LO{#QW(5Ersc*q^Iu2&~vAQZ9d*x15q|wrZX`JpzR~TTD&Z>4| zk;~~s)Hy|dqXl<0ZE0mKmE9AzXeq-T#Zyal#A!_3kIuY zuR66s@i@%!%k?`*v;!pu)5fGh0DStE1KxbVoWH_bM!W$*DA+a>mYs2cd~G{X?H)IA z>;3k~_WWP5{2v`M2_qZ?xyfb|_#6^JAYwzPG@4T z5lJN!(8}_->=+ul&W)GK3sxD|R9pW`ZK7Th3rVU(lCS9_ZCgu;fZaKdLXCmaafdqx2Bjf3{M1e!X$K!}5B&ZCBx(Yb^%> zaMXc*x$<-(Q%*nN&IGOaQ2tUu`uaN+7j*HYUfpJ2t?%mg`s%xQEcdohj5rNu|MscSUNPtl&isw<7xZJ=sR^8S7`oULamc8H{w>QV7!?fdc#53i zk$x`;puhX0`@R357;8e<1g()av4{bLoVy@RdH5Joq5zA!II<2ycoHD4x6Rv%PPY$j z#1>*yWu(2DOu1a+J{==UzQNj!RVzXu%3zM-jLY%6m3JYf9lvpE)G;OqJ&$HmFO=7# zNqm*+uP&2}e2LLW{AWkzaEHx4$Qty7zmD9WTVh)Z#AV(Gu)S>z|0!cG?*yQf)tX;7 z^4bB0DeW8=l@}Ke_mzN~mEfCxJrkj{p&T6O1vdW>pSNDmZGzx97FxefATibA*--+v zgYc5pozJSvl5KSZOz4u8*1;(J#4yh#OG7@MN}zGfr$qvcPBuU6iT588`}8OfeaQ@s z&!#0e)*c-W5}1PxvPDgPq1!SNS0zyM{-C=G%j^i%pe-WshG1+4cNy%Q9ZHdv?sYiA zuYG<_Lu-eo)0iF00f~B;nV5Elcw5i&9nFpvlqr=70&9gu84rj}a3{b{F#lHFFd%@K zmA{XjCdhxQZb?~@|I-Ufnz#cd1w6~#OoXId#OG9gz5NLS6FQ*_MtyV3dU_fgi%^1~ zhH|}oR34*&f+3eiJF2BK4tV@=R~lUh2+wVav4{$`>vKMR+ zlXi{0!#=qYL1jb@%-OQJ!@G?TYp5;P8Hhu-4*<%FPUPbo1cvlJ0tUiz<}R7g`+rLm^qaVZEoK`VAM=rMzjw z{fhb|*HK1`N#p0Ue^h*Dcx{|XVKB+UOgvrzv?v=|{>)tdu-bL12$!v=BaZvyV!ltl zXKTJ8<@Msmh7-Ao7^KP%2e{b|uHOdXIb$Ya__0S&YP97sea#KZ-AORZ^TtE~+93Bz z`qq8>CmsFVeI9j}gOGZ!r6w1W|6Nr}f_0<9oVOpJx3h`}$>lw$e z85w@+sN>3vcm^NxUb3_rvl;M{Vk0-#``tIbEupzY5~ z!I$6a<8n+nDNvZM4o!*0Por)FbqFUe2x%V?t-%b-ohF5gn(A7(FJ$OAQ{xPWyL{(`=Jq4bI?Ld%r(cX7pn2#b2j!E;kU_TS7|zkv;d~LG|TuX zj@%}@=aRg&#m68f>Sc8#}k{K>^-X3NLS{wFPLBRXnI77~h=`P4LSDpKnykRe zy$ad2+aELio@&fr$h(4D4|{5u^!!W5F6utGIv_N&>0)NwqJTchDlW7G99c2SlAEMZ z6OiZ_vn$uVJlGj|m`=ek_H!gw?+A5fiWj1av%-Sh?PpUeCr|l_CK~0`nmR z3K^ir41Fhes~sBe$oBA{?J?Yi;E8k-y1f}Q8er_C+JOuWO9%8$poJL;>R%y01FN3W zGNQ`&C+eKSO1|Nv`hI4}m%MtIFywmeS}EaSud*u>M40_TJ)pnh)urx9Oc^Clu+W0) z3BZn{x#yTiEQ$W$HML<3{!2Y#ilOM`rvD?}r7$&b>1?Mu*mFQHtv;E8Nz6J1nSL82 zW#$I_hOg`8;uetcbh2jymh1~Zfl0(f!Y&iB8xA$b_qCU#WILd16EAh};>hVZd2vVm zzOk|4DNXv731fQ6edOMe{?7jHFnQGcI*rt~rEyJ{u=Q@1GB9cTc(t=za0frQku`-+ ze;=hQL}8ZQ9!&nDN}g?*lW&p@C8=Uo(@K|FP%tvKm;LD4GgBdatYrLb5A3OWg$AU64_V9X zga!h!#y{c{5JU_Hi4UQc>E`Lw1Y6u1EJn=vL5SiJSop@p?adv?BZbRGot%u^Sg>(% za;d$R#R2AKT~*1C1T~f(N)1Cw2FpGvp_`lgpbi!y_PYKDKg} z0O#~s{28Z&7bQ*!S%u(?YB~A@_m}cuzm8CnK?snh#f*;Kru>TQU?xZEcXXy(dF?s% zUd2ePjm)@fnYbJ)R>qTfW4h;s!e8haD|Ei)lZ(Jftk6OL5_)(${n@B!UxQBld<|FS zDg-Es=zuO|iHR51NY93HZNW*Ps{?Z74h)HW4lL^XCb}o=yEvx2T56nP-L{Fm>GA0& z-M(s6@wp*B7A?4kZcT&v1h&S$k}NOxzLE?``826L z|G^|ML%EJ#)uqRI`z3Cpza8j9@TETB<_!qneOzGyN+UKB@GY1y;MD}80*rz9C*YN3 z(hIKPK0iFPtZ%J(#hP~0za8yeiaS(z0B0^Cd<$t9(9?~Zw<3b4cv@RUXn5VXb8H4a zgXud-!1yTQXN!uf<<$&@V zjb}%b{6tvub+!JV(VmJy0?! z!40AvR-g|PZ3EN9NjM0g9SBN38dZNoS%ZWm?^lM^Z&CdJ%Vfy{{`at$23kW;SW5lpMaj>teoOKK>*zO@MvO2yq zJrkshhdD32P}p!Pu2U%DVnRU^bR>;>6@8 zFT&aKSKJX2EWnEk_wGQKg3ZZ6FU@!?Pyp6OAk@SaAzh22sk#SAH3P-LNW)}A6A!G| zr}yr)GjU5u zUGIILcxbCJFAIeK0v)SN0q8Cg>F8#7$-=2=&?sB{tup9QZ?qN)UDO#u>jgKfQU4&YjAV0k;m&#$E{ zDZBn7gPf9^cKk}pTTo(k*&wy0*6`aEnB@1SpkWO0*j$14kPggtLQcIiV#AB z)2@bggY-#zTPUp5I{Ig>;w;-8T@!r+e#CSBT5^ zio1+?5T$x(J=}t8JnTOP7n{I)zO5ek*TwQ8agQ+dO-jbreE=GM6GFd6)h3E|tdj&J zn{S^#?)j{H7=Aj1;JFC|>f@*yjt~<3Agp76IA?tUyQ}lXWPi}A(G81_b*)vELHnG^ zfKk&%`2MPNO5*t{oW$0H$;>6QsNwZ#{Ssw_Di6Lj)ZlU~?}b*SdyTn`Oq0~K?B{r` z^BYWJtkqOm2VfAy*%Jp`P&qrkqmPj}z$<(CMICWvlcaX0ItbEd;YfWdGe{S)^CxJ# zZ0T9Uf>mm6r6AFIrB&;EIXbK%B#ig!UH-#+DYD;$BO85QPI6l?ioG#ekv`n{}A72OvA)?Wfv1B5IOHvGs$xr7GhJKtC9fk%v&Anr6-nuD`@zYF2=He0&je$LzlEX+S!A%DX$dWF&sJ{ zNdc3J$9JIouacOnuLM5#<>H4K3>~_4IOPjfOr6HnvU!V*DVX_nhpOb~?M3jy^}4b9 zTLY`#@(NXI2(aE)i z4VafnDwRbN3LAPt-`@ioRubm^qa-9XGNsw*`&?)CQ24vNApIk7WUW@_iheLD_4!!IP2NRR=rN-P89o^lCtw z{DzcPDcaj~njTWw;g9=;`?-UIrYjpht*ssTAmqDvY$?d?koRIpl>22pgxx;L@#FpN zYu5*Np%F)vnv>IDF`J^dxjfHRQoChm3AcQo);Y7qa~3)BoL?&dq=iq3Tuny`<(|t6 zWE>*)C2H1c7w9N!^}`kV-5!h1!aO>$90M|V^}PngYBmDm>iwC!R_K;j<)4#0f{yW6 z;Y~loA*>s&;fsC+rh^oixLcBst@orGGz}>INr+>I^?|OYEFUtff@d=V&WjN+PFTqF zkAjt@JTESA$;VCw7&yIHxr`eh^7#BI#Br0U6$xXb!;+T=Nvv4O$h-cm5#Lm?gP9yd!ie7ZA6LXNIt+Sg`tC}Mlb)j@Z4&eu_W>PzU zJNid?RMb@VAp};xgk7}5gw*;S-du}PZ);OGwF_ImEWh^BvHcmEhP zV$kArV(j1U3^u}ljPq!45Lm$f!UHJx%esLCt;wUpEqz{v25+!^2yXWEb5+!?yr?(PYGBtQemIJLXq z`L6f;ectxsas?ws{WXE{12&V1OG7GwypLSD&tQ@@wHl89#Fn@LyEC03GAhsSUME8& z;mOC8>j2xK@aaj1;F2&MFVM|yK4v)1kg{4lO2OIQy*7#9l6Cah(R~~ta&Dh3r%3!w zygsj=Szo@_(66*ipp>;w=Hd=8**l0v`wS-B{E*!@)O5w~ia|T!f1-BNYfGK}2_KLS zjl-(93WPB~JnMfgJ|e*SUcru=N<6i_#;<*bnYCbQ_w=|iLB8JM4w(fZfJqm)g)Xz5 zi0juS9o+K#Xd_E(Xbbg3KE+}pRCcV|Bj)Y)_48K(8q|zit zMm}3T5uv)y9OEY6n(l2C97S3`nJJ7EL`%3t9Yo7Jg;lM#*g z0t{`eIs$bn)u9BkIFt#DnFwoDc%>b^*0uVAE|A0c z+!A6^{VK#@>A<;zj&=lyxL?XxvqP-NMmUdKa6`{P#f?iRPmhJ3G>cmuZZTN!Uz8k3 zxk0fgu;7uWQAV3G_qq0aor}9)UkEZZFxZFq!^i^d6k~@PO?(pdL{Xu@Q1le6Tfa3k$PkK2$s1km1|V3$y*D`n#3)!R>%KCN@|2WC?cSfl(Lh^aa#B*S)UmpQWcmHqK)$p z-k#(UnjIU8vj8q&S$nDzTQ%wHYyf^j`#Ef7Cxca=a(O%kNh1jdhTO1_Uhr3!3an-I z02s;u3Rign@eo>NrlVMkE6$~hR40rjYI9agGzK`T}P4Wa9Z%O}Me#VR%(%PafdGE>9CYL2*?SD6an%wjj9_d8&{UP8W<7)D%p zjD;NyyZ%#&?DrkgCEU7{0#j28-qWPrgm+Bh1g~Wyl69cnzLpZJNqB*j$8RSJhD-ez7a>#B@|x!QgejsUk5Iq-v(LWP`V-?{^phD&W1 znHm1|!ao&aHFN>yh84r(1jkl1QJv0Whw2p@Mg**V6-)l zMKo%NIcL2`s#mp3Z-`Bd2p}~e2xS>-LKpR*j}+fZtRQ64B@ze=fZ2Uq{-5jra>B3v zu>(IUyLJmbqtT%3!(An5`kA@uD*Wols`H^+-H^;;YMUi;#T4ZI8o%CT^J%4D1`rcP zJ3U;kHsssO1LlcR_KXzbkqUC@M8VfDvs6lHSWdH!c^j2my$+%%Fo_^!&G(NSHTbl`AL;g|V*O~LiIvQy* zcd~PD`=ytGe?cg-boOU3G77P9D5wu9l7S+=2nW=~emv%IwXpMKG-78Lg@Lts5__G+ z8MALF%4P?DYd=-eb*kPsOe)_cyw^ByX9=>|!mUt$1S$YFbMs^W@qP<{|8|y4X^c%4 z8$+Vsn9*qL4R)SrTqdwMm*E@;W?7Y(neQAb!Q|x4H9kxI zqn2wFN;D=Ws)_D9ZRBxGYP#$I?|Xrf`Ir-moN`#K-`Dv(tH{aaKZ{GkrH=XMV2vWM zlJJ5a#0A}TXZS>ry|^F1`tDsDh<*px4mopdGQqRGP#NqhVthJ7@@-a>-{M}?Mbx;~ zYt$*R;&}8>{bJb|9u*^{q>-1&`QVd;N}mAO@-n~%T{py5mwa~?AKuD;pQ|gWtb0Ud za5yY`WSrHy8Z~^?8Q7bv?0 zH`{{te_~|xw%h%Q#g_^B_scYUNo%U&&(XgsY!Y4!2v$=a8i*X~zlKMqx9&S<06pSxpMjaRJU8dM&(^G^n+1Sn*vg3D2g8hGb@T=6vc!%%w}8`vrsXxqfkZ=@bRA@fmYCSb?KCj#7G} z63p3R0|b~YF51iByLdFPx8+QZ`N;FD25>G%f$wgsyGQp}Bi|-A|yny~R?JrqS+QWt7A` zz!XoOS01RKn(U8G`J(Q;k^M2S_4pXhU-iPQZvZaP^)~sik~O1cCXq>A6wxFRrh>uwnuQ~)CNqrNV4YusS6u5Z*qm5G z7BpOpA`&~hHTo2f^BJu+x{or-avjDGss&}RFn%ar3vzM76}PLU+{?a9o!_$Imap#( z2*i)75*i!_V9ah^pfG|Il)IHZm3zMXP;pv3a%hgx-|9)LU0X=_rXE?}UQ(M1h zcnyUAbZ2DaKw$m>oS_E%2XL04vSFVlhSs^HcutiEjDme{$dy=FNm+5O60ye}azPQp z4(BVXfvW}+W<(yhrt?&o)Ny8&m1{Fgc}#kr4i0u)#BV01QM2_j`L*IH^yji#kAo=0 z7BSM2{V<3JWuNa*u=A0gd1@&JopW9HEAM;HOV*-=b-!os+WM25KrJ9ce*3mg99g|_ zTRw0awWpm^yqFzi3daFMl*eMRUZcXqLj^DHiN{Ss%+w-45?6xy?r~ti%xts0g^1E$ zB-EWd85S7otrWeI>XMm30Pf%R2%v_tUY(wC|$BJR|}wwc5q{Zu4l)quoP|wan z-^@WYmk`NMmw#C2M@BFCuc5T)G@=Fv2Jb%;nT9Fc-owYQjWZdhg#sI#)0g6m9 zR~Bz-O>nkbz6(GGMe#KLufON1H~rqotMYiAg)B_O=qhsR3zF-HES*LIGDH zYT^rXMJXLMD~?aqisV89jjlDc4a#iDjRAgX^93w`vlZBd)#vSK3j5SfIidNxGH@qW zFSfWmvv>zOjFV>sV%)1#*0v-vtdJU$gbwKt=nR532pkF^SCq=vx^35D7mLC=&SRCe zFq4Ce8ttPERsJF$f+0y5X=cZ!wU>D`h-)|%8Bj)Z7bb_R)EGaLg zXaexeONc|t6To+nArIPR_y8H58JhHA_)YN&sy$HJxWg8&CKiv5?Xx*jLj0!4*%g1` z14riWp=aAs zARM}N(h<9^p%YuBJDZ?o{$)IJl4O|;CW(bKNF0;-{o%LD%*C_vq zq=KZ+Ih`6vs;O4Ec>1>gP-ho%zj=jneF9pqRfMe&czxsuO~iz+(yu>jwirpKXAf}X z_vzn#zY)a z9jggqD9%JSwZpOr0vGbby;Q}tsm;MT%Oi}o*$oRxE)O}ac+OiAp};&JX8Yo#Ptrs@ zJZAhp={$kJdJ^r|)yUun7GVI_D3It!oT|(3V~Nwh;im5z4w^{sz$3LDZ36n-(!e2c ze;9lHRkGg%PvQyVr~L4#ijBLwU7W7&ROE`lGj!=~J3P}EY#X|On{Ze_Od$~*v`&Rk z6QN|zvkkBt3A4>|H)XIiCB0$!vooh@f!?_u{D1m>Wd$ z$=;Cf|N5msOz-NMu)$(#wjQQSTaVB$;oaii%Gr<6^Ajs?)IHFtk@2p%J>Q22$T?YQ zD{F6P^RD&V{xX?@AcHGx3)0m5v%{?;u=x^+4`?#q#=b#}8r=Fj)Lba|9tHrPhs7JZ zZE7sctRpJjp~Hxj$sH)o;~5$ zy#N;`|I^H5O?%_6@-5u{9_qtTfQL zS+;x_gEys>eHF7J8>K=<{yjiA?KSXn_KGnxV}Sn8XmQA~3~z9=9Z#J5JWo-#kfEjJ zSheF8B|n!wlI-z`q_%>FVfR~lrkR}VBw-veG`e>?ki>jfFQJ7^ z#}uKNAG0U;ObU<%=ge>Pl990;36=0#S>@&4{3z>u3v2XvFoPGCT=urhlgI$qwG*28 zBV?T{nPK6Z=iZjXx2pAS)mylq=t~>eh#inZk@I7|4fE4SK@NY+-g=Ds3;K|ic`O5; z|BE4WAB|75r`^HBqs-(Re9#m)ziC%;#7f8lW4XMUq7LX=I+C1&OA~m)xu131Tg7Y4 zGrvC{a4DK1g@Fd%VDf(GRyB=etpkg3INf0K%j9A;5%-Mh`Z@AQw*x0)GUp+aH4`Iq z<;uab9_G6DOFTI<>)q9-xL%b~Yj*6$?1<(>{yPK(3Blvj;rgKF;r#ymHg^P7Ap$nA zXJroo;s?MMl-QSqv@6{AEY_rJ#{77|%}{^s&&3Ip!WTM>)}q-EE|84B1peGQ+xyBu z`0AWmd->`h_?rB(ad_6j{5smk%bj>@Y8zDsr-$zyig#a~&tnr-{T*I>Wm^2iGT-KQ zy5QKNZ<)<+@wRP4wObWZLc9*dG@(_HV$Rb&7ywv{!$FkB@o6wHY%2Ho{zWNv6~qP1 zuhLp=Fj`$4Y4DpAaIEAiSwxo3S#CUNRM2rm{$azBw09Z9X$ij2xvKP>X0#|-v)Op? zsK_lu;I3$MKKkuGd!g)jV$b0bRMFP=fdby7d7bY$Z;rmOZiVkC(3s~Xze4Wl-zj|z z1xQG`p_|V<+BQrt>f_9}rQ;aT$5+GTvz zyufeB(Dh=nn81sqt}7OZ^-<`#g^7k!!O-lzloLy5xjxJu}G`(s=m>8*G;XLKIMA^2_ zMr4DXFDHk+j}%>9&fYjBl!cAF6z9<^FNom1=jSF)P}I8Wo)rM>>FL#;I51cZX!G&% zbSdik>EZD<_Lh|h=Lk{C1~v@J3&`UzqK1I>EX5uV(2~Df8DI39&eL55TFqGWD(mV6 zlI;m{yq&e1ff-J55VqSsRV;<1af6GrWWL?oBgEam9hfUBijs?(8cv&|q-3mIWQhrA z;ZLqdc#6pDQ?Y5Sl6w`OBM8s+n!h^5pUaN3=4&6#%eaN2t2D-hzBa`X1E^o(YKon0 zpU4$@=57&u?V*ef3smT1ryzB^ND+DW-69IW%~Pli%y@l;se%96sJMhFdk&gLBr59A z3xobX`KW!IwEP=o=x+mG(zD`zE*U_;-ts^z83#^ZIk}5Neh5oNT=pM3A-rZ-cWs^e zv3qmj#ov)(_x_wziM9>k2562^N&RH_5nV=Kqy1vq>Cv3sv(D`1Ct1{wsP3KOyixs5 zVNJt6n}M$;+u^JHvn_|SVkcHK2lzy2E4hFb;1i!}BLhFd(-OH$$tGg3r_8 z_LPxvQVxex#&0C{C{m^gMaC7)C52tO$cficFEOfBkt9IZ^?M>b@;o zEHAmjGg(4b*A}YKne*t{G-FFV+iR8xKl5SbAxdbanh`V^0C=aNxt@aR{-|FlHZ=J| z8ebN~!EGLkPk-96t|0ugt3VN}k-QMQ=9i(Le|Bf;N)aC6aZ=E$|6kd)gvUd0SXBf_ z7Rw@zeVXX7YtPYseQUcEAZ%tEPp6x6a=E{FeKm=!K|hC>#Ke{OCuF~H@0y^LX)*|4d8Sy@GN+-eZnuvl&NMP zW1BnZZeRe!HNVduy(avR)8MXeV!@WA=2PC{W423j{Uc)k)@Dz3Mz8Zgmb1sS%qmI# z#iVjCY=aR8BF*x-i@_jSU@Nrno4KX*`-%;st0wt3${U=XXl9}$=Z8e6a~blbDiO~y z^PwS#wraHfNfb0H;=y~4;|%!28;6?q4ndP$?*v?!^^9k`)%dsR5k8YB^n2h zVW&!QrUaMzcw2&{*V(|oLkV*uc1K4!kUrr z!OyU(5#V+_B&qytbLuPuf(kXt<;Ok?8W%*(@5uc6`_2+=u1%a@yLyFZTW8EL>Gv-V z19LT(=)onU)RIgr*LU>GeUqxEai-UjZ9Hl7i`hFr?eb^_ADV7~};4S8y<( zij344^7^I7%DCiCl&4Ran2d6+rkz2Q7J5pXHG+;=-AxK};B8QfZP9TRMnt>wL>1g6 zpq*lIRT?Z@;vD2X!bGLADORV6%1>zJs#uGsN&HKd1RNGg`~Z)K;J#dfYR|tv2T6NU zX92(JH6pN=4j)><^$R5FY!e{l4C#27V-+jUwMfFb@9L$9h1}n6G3&U~jQ~zidE}vmHa*>tF}N9x7>DWZLw;{`)i zyh3q8GVKqBe~U?;{X^XBq(BWbiwfcmBRs-Px!M@GQwbmt81&&LrZ-|Alvs6MM=u`|Q2=QQ z@`Xsi*RGslkM7mHLdRk7R612XAWAjXrUwfh>cQ-Oe-%eW^K)n|oOp(SzRESyLb1@J zz#f$J-D#?StD?}`b?yB8Bc=5NX%AVYi-Q8VvRv&dQ(uPQI%rhFF|9cFZ=^0~oQuKb zts6bnFKyi|$jX8(P{u$*IqXr*FJ*uy=j-ybhGY=g0|cT$3jZEtNmRx(%L|<^t3EVp zdebUsSKxX-%!CH{QP9hJwUo?VEdg@;x5uv!ex}jOtukF&tl1UWypVF_Z{4w>7JKNe ztQQ{7q#X#uL92>lM3zWFf(`PKVkZ|8(8Xs_%io?{!MYIB}&4)xm*@s~ygzLsg|skDAOIlhHv ztxQX;1d`8l|8v;>AHiTq;K=}ZF%w*+%@0d^VqDN#&z`Y;YvS^^NnaFsqe!1kqr!@9 zLG$iBw~9of2lO>t67NT3O?p)~+qwJMl z_6qg=DlDxnaLO;9kJO4<5!8ysUXi<}HRQu9t;|0nKprMyZ7(kQsU-jYYmyf%5b~1~ zD;)IQ;ibC^WT>q+Ql?uHzjV0hv}lsW#Jytm5RL-c`SDfhUq-w?SEh+}Z|}%4i2b)==e__x3(}VTmhrZCQJxg73<@<}vMF^?P?}Oc zdA7dU?)wEaTTu4c{(t0N0#~fDilf8~jvm_f>If~b&%~O9)@=i-{??)Yud=Q>tg2?~ zA2uM;DJXDgBn1QnB&3m$kXAYc>240)T?YY`?v#)&>5vAcB}BSKLi{$I``-KF_wew? z%>J!4t7gsSVb5A;f^K$pp3b*onW6X1e=Y}n;19hETiNbCv)d%Rhuqstq$eh$W@#1A zg|^n7Et)QA)8-p%F}SRlum6~}Qhat4lV#UtQ3j*(=@OAPq01`w2p?8s%#QxL-j5OL z8ed+Ec#hlTTC?fHy6<m)r!>hQ#b~K_HIB zCbg`o0>hxQPV*@f{O&?pw|G+9tp*hP>QUH-{5hTa!y1@8Ah^-Mv5YRU>zRz=bwpB0 zG}}s$&>dwJP9QX&M;eo&*x~iG%~-WY_m=f^NEIpc3yxsGpMHvZ@4bQd`=3ij=jWF^ zaghAP6QbWKMq;kjr#vC;DiE>7(Q8wXYqQPzCJ584mBS0wdctytz^~fQLAgF>Xl;p_ zcL=MsJ3`o3$|k>?7gJA9a88I0mw{+D^a)*WDb_QYpeVK5?7RMtpD9C+752xv?-_T^ z)&;Q=>x-qz3@HoCM|qdZaenrU=Oe1Op4YdBA37!aW_>$&@U&wb*=towC9EiRc-+hX zA$=;W-g}gMdSI`@Iw%lo&y*wrc$2&owOig&$Sa*h4z`aq*yI zE@o~yRJ^VuQgvUmv96)l*ka%I2^HboGcNMG2Yj`wV3XqZyy;(HIl$16)w6(c-}99O z-#lY3PuAdw**xQT?&j>g5SD>H-LJal+?DrWfB>2rjWYcrrSJ%D=4Qy?9h|%Um6k*N zn>4p6?LMol4!wxEKq44TJcdfWMov^$osBcFD=5%*drJ`#5@z~PSxz=3hp6Q2C{sH` zg^WPd)KEuffd50hW8}#ljv+ZkcK$#i|GR80#Zdtd5>-2RsOf`hwi@W!VDk;`bfwG@ zu%~vME}~9`bO=$){<}IHsV=p=z9nZV z*8Ooi=WGj4qrh>yqRRzW;*%dBUrpk={xUWn=0z$nX7HSSgQfk;uJIDdDPVrX)j7be8L#sf~IDKto4C zAA2g15DWYv=2FA3xl1mZBgsdS*4oz##N#R@QP}omo)L~B%8hjNLNoVmn51@w!@|3r zki!LsNq;q%cQhG9bO(ME+xkr^clIziUaz5j%4qMS!?4!t1F-i>c_UmF_V*iRqI@zPGVK3wL@Mm@OIw5D!i*G}40(DOAu85$kUXg{Iz z{i%2$*Vrp_*^`RbCFe3;Ud7Q$)91m#@99iRC1{r2Sxi}H1r#&f9+OXN+^OMCQYTXG zNk}DQCbG%FIW0JG-^1H=gKu#1t{cK$B*rP*ge^#Fu=h2xs+zV3dk*0X*EWegz-GyN z__0ydnb8-9uw-Cccjr{t#H>FYK1~NN6dBSpkoy zkJV-L(jf4or_w(*1d4i9>5TTnvpwIwv0F;atc$47+b48&Uptsl5>Jyec@y4T8DJJE zry&Ptj!QGN9BvRhpAIsh#V1tW=-Pc9b|8vNaC@#WbiO&e%VR2}Q37I4I5$=bho)6bH3g-T|FM!k%T1jX0VoidEbu z(PJygx4*5Weq-xN3sNy$A_n!lQ~CTy|9F;UWM0o z<;iwXY)z?##(IgUCtnU$BP469MN)VZYk!*33gG8sm=X+p>g)(QO)8gkmh*XaR-S*q z{Mp{=Yh2zmN6uH3ZWpf~jnG%_=Gj@gAs^^SZ>u27GEVAeFkr3!NfDU*&SSlNauJrw zI2y|-BjYUeb|hdVpJ%zy$ub&d;xawDH7Fz42j9y$kQO3XZ6RrJec;mxmLegQCzEpt z?gTWq*nS2k{lf0eQh)h4TYRnw=MED&4_+M9S&#P{BRYvXER1+p9`oYvOBIWfa|0)? zFx!nlswMkK53_6;jD)A$DxMjj)UTlJIZBu4cF?87A^5}bsTrd*ARt;+PdvVGP$fu`sexN3 zInVDPxl!qwn%0QF=eIQQ;IU|Sqa4%*Tg2X@eS0J+*c!ELGkM!M%}yD`ayS%Yfl8X8 zFFE7j;@$XH&v8vvw2F8im;lDhg8H17oWzvgjL*{zk>eg=WpOrLd}uYTV)}LJ%=CqR zkZ39M{U-%&%<|AqEbM1EYG1bU^!M&|6)Y*wmAe>;a+jE^azXQgS}pcdzvP%($1YeC z%cuDHRIN&MITUY&mIbN8dRHbCXNlt{T|XSGAHfOI$kGQ@-WEU&n_*S$M^n@t3rV-h zh8QFSY*LiasZw_OhthXj(C$d)etV@xUAta;hV7KF@6NQDW6K=o-D}2ptY?$s>1u>s z6%Fsq`Nd!NTU*zA5@~uoS#<6hHu7&Z&lZJ=i1W0X&nU%k$MT5A{P^w=mj0{X3Bg@|f%U zbw;oUVa?+%Mn*aWks3t{yCNOTW@|aND`0jTPW1QTae_?wi z)!UxPb^jZEfLPr-ma31T@I`tEqxHfu^qb|mH7frOi1q$r7$g$cAxAM97MN!4X( zHD;&`RNzOw4~-vkEx{5=HcQZWuXcisq|kx&EJwrOP@aUD9G1TOGdp5+C*Q(gKlp>0 z4W6}d>Jyg+qcx%ym3K~$J}zkZT4juM@Ofe2MKbioGn?aM5GflJR155EN6o}gC+me~ zIIZmQWahtSb25I;Jm~1ow31=37`<3P@3ul8_j={_z1^gHF`_eOs-kneFs{xF$=bkE zmcEz(!x!4K{>3n^!g8Mpp9f!qyn1v)DxNMbikk*W#c6nc!$i*zG<7wQ=aN+MCR4@s zque3IM6b9U4V52=@hqB2<-*))(`5Ix3yMn0S7r2>g&*2-e zn(VGU-`gNjn1!KTa=yD6q0b5}N`9I`9(n`em!_)twEhERc>QzSS(&NTRa{q*geUZi z5E;}BQ4;neW~Bq)5i9Q(M|ab0PbKW&L#263*^r3KAB*d4mHxsxB3ykh8AQ@c&$$!- zgu!jYxV3=7U1^C91_K6Xh1FB#KRKu?qTGAF&q|i(VZ*{4O>${^qiF2$`c@19<{k7T zm4$L2iu=)p1WtvmQBc=s{rhe$r=l;r#pz&6W?0{w;YSlo>u>Yrc>ap*Qd`m=uoS`~ zqY-^u%QMx>;+Ot~_dvV^&+tCv2m1Gryu5Bnisf;W<|ht|kM8}EvaC#mXrmZE_hG+l z+vT2k=?MGfFe>lOfA)C00O%yTg+Fj$lkh`#Y9?rUVw`br559^qi#onN|qVjJNqN} z^BNub_-vI=)!N)s3mca&-*sP-6HlMf@{ZRiEX~dgk`$gl)1f5$EfKiTlWM#PnXt0o zKeMmURqsSbF?hwnxnhf3c|L%3NUc}8_{MwB$KbqrZB~)t`_iD-#qk+6thFy=e};n+ zrL6-EMzC8--`e8wo5OW~Z{O&=Lzm*~pp-Ba>g*l$acldqZ0Y2H-|Nv%p;f8d1;?+Q zxy>p;_)ST9I~VVm9rm)m?`s!z{vmD0FY*IHYOqG6rUPPrUNtxu`LpU=W7lEo$Q-!^K~1 z98G#&PEGl;swTA$H|@e@*bd8VEi(UzJ4Z5TpUS>?KiH5l79fh^y%J$Y-xyfy^yR1c z$JAJROt8yrr(j=?XH|UJr*#}VOvPN&Pr^v|J8Uz^YB_*G9nA(D1^8QueBbK7>7F}B%GG+azd)8T8FQH zz_jI6E&~02tL$dFmQUvp{9F=sX|C-Md$LWa$~1$9ap4Q2bctmCBoSo6*pS$$lfmyB zxDkEW)az(hw4;ny|LTt|F7a$XbW*l|26p1VHMd^W=H~qK`|8*5FP`8TAy*fh$l%TDvNS?T*|3MJIG}yEo4+`qspk!NzkZ!*SaK}VD{+u>a2i_zcp;U z**Oul(+3>`tEiIwQFv%TYW`aZQb7eR6|VY{4?oYD%t%EU&gbLgxbsA{L6?z zGqHPa((gPm5~(9(<3A}e&C5+PQKVjKYC@v?VyjE3$X1!SpIPiE#KLi^wh;d26UDSr z*8?C-uf)?EH^YCFuF0ObOqrgpH3b{ir+Y%v{jxD2m@aeT;9Xo&oG1C8(at|A_P>2&*$j$j0li*oY^HJ#fT?v2F+ zVFA?^rEl`Lro&QZ?6JOG5(L+;JUwLITOCoV&WPj9k}xL@ZPdq!SZ>G}eXaZ+CJ>We zP|;M54!3+P$)l=wDXAB#nu!LvtY~{~lqn&jb@}=Qaj}@XEyjxsBFjF%GfaUS-L(T|=f z$w-(M^UPXQusAN~4<~3vwutlFgKey?2dmIcY+Y@X)5?|5@fCUdEwAiE%B}>XUY;`V$&WBw7~N`{YQdozvVy*OML|ydlaQ7GJP|w6 zUHVRteJ|>Ib-s)xM%H7Ys1Up+X&SVjmfKZRwW9iFby@Yz@P};d!W01?(`81U z(Q{f=vg3YYj3}(P6G*Xd@aSf0ixYCzTJ#zBwN+JVUA=#}7PGw|nHc$IFe^hpqPqPV zEpJ!v;?eo}qTVP^wjPYMQ^bVnu7cbat91EKpDnOH%1LBD+sc!6*#M1I`G<<%&3tfd zl;(@eBFOp%n%!@708qUYz!^}rvlD+HqlW+T;E1W3mmyfDRP&hf6 zZI4Za(-IO~8H1*NDxNC2!}?XcF?E9GFgBS(#bbP0`L&cCl1Pw$k2~P(5C2G?n6c@O zF5Bx>@1ENJoDX?oG!%ap9=Y196#3BBbM0}XeptXZo$HL+OIU`w`4Z7^N<3x;Q=S_1 z6fXp-e_t=RmfTPad_-CSw zPguk#M!E9@jZva10cH15Hy&-4B701np0%TVQ}fH7Sg!P?!KW@6QfI1dEIJOfWV-*= z(}Ycniow0Ou3!R|n6DsxE-x~(=`(^!L6$`lmQO(F_SPfV)kt%&8EFqqAsV;)1AEAe zv7u>(M>AnO>T@uGyN%q$m89KNM-=X;Mdz~RlUTZb8hFiZ2lo{eC!gk@5iulJ@|Jx# z#PxT{?0(g!TM^&b#FV62=EsViAjh1FF8z@QcKkL=wz#UaMEnD3hw?<1 zVy6w+%#I&3jTg`C<4(EnyqGF<#0OqhX~Hp;5yHG@K|jCbKXwkSg-aD3t65awJ@D?9 zkyC6S8IZLV)`F5eJ)?Hsi|v0*C~7hFvv4);`!Ck-Dp+D})8|~8?=nP49&TkoB(s9` z;YFQ>81%YRhcLCxVXkCp*}#B5UUkX=sydOf#P}g|6yecxCDlbfE~;NfmLF)Wtf*Ks zTR{{XmuNY97u6q{U=I+oZ<*#gl531Bb=M`a-|`E_;UP(2519Yes99|~i4oZKpm##F zALF^IV|s~9vsq}NG*Xp)W*5_%UVi$BHV*Gfu0mxd;~CbikmfEHJLga(luNXabFTn) zRGe2a(_)`v?2UdALm=jwa8fJa5pp|TKfKKYActF90Tf6I@JK5_oU%G-O)Q{AKZ^kq z0^wo2s@HiJtXK$vAc4QxzBKS%D}WaH*yrmtB^7bptXQ>X%|Znk1Y%(hwmrLnen$&` zZVgZ%Z`KSV;QA6vVuug#dG;tFkOv+R2=NVgx-h)d8h|1vIF2IZ+PETK)Puy&>EDBQ zxd1e9DH~8y3b=_4AV9T$`-fPPQ{~({C6i#agKmqnR z1hW@*05g>ZC{o#jNXAJt2!xdc0@g?U_quUO2xz?>fQ3BGd@UzAeAN!10Gi(+9+BGv z^1z>rtHE8kzdi5_*vh>cNWf!)02K1|{FfTo;PsaXP_LUhQB)vk2-N52MuI;Df& z-!UD^mI3kDpk6n13aq@w$9vV_T}P+XfJ z8!9I>4Vp_GbSv!*n!3sVNaq3&{?`C-Zx_%Vdou`jt;g4TiU6M%5LilA-~m-N{tvNj zmSt~7(5hP?Tgn@3^Oq5{uD`La6nKO(jo1N%ZXjc(bp#(-H-Ho2QaY^{^<8hhKs!N|bY+`$oU5DT!t-3gI!aQ+=tYX=CH?+KBx;UVte&bkhjT^@~^0FZAN zxcP5d*zNS10M*pe+{gm19}BROBSrRjk%NX+zx8*Vs9hqs7kdB%aEu^;5M@7} zA8`e@5RoUqPSpvzMrds!g9uy>0xowmX4+8^P;M_{fseyipjUI_-fDX7Fv5pc;7 z1Z3U-5!^f$poJ@Y1Ec^IC1N^X3|z}J7Pt@pcr|TEgP7j%23Qfc6q^XcvIjYzfePMC zqAB+g*ismPdA;r6UtplP226-)Tpxgy>Z(BO>Z{}}bCAOd7&6p1!bRo*0*axIgma|~ zE!;#C3IB$Nu{jWsNKH`ARUbeEh~Yxa;Aw+Cm-GF{=Ul(bJ2JslV!>5zrXC?d_`Wa5 z`$~Co4OE>!qaZ8^G}O(IdnAnDJM0Ibz^(njiWb+YgbKWpl*?6Fj|viCfE|8r5*diW zsr>;4WDoxVM5Mp+2Tjl_eKmU*{@x#8qq^C6`)?z9DO^JVM`w7O3&3z~b2w)J=n5GX z1QXK$Kn_^ZKn$9~kT9>^MgG4=xqq|d(nl!59tis7+T%KbAis4Z#B@v`padM5AqI`9 zpyknmK(jJgB4+f100jWW7BLve1g#D}rhy*^fqH4#Bc@q{!Ax+oP3Yfyr^N{Y1v`gc z9~@xgP=tZ5!WAAK0t#g5jes1s+~U&3}7*{lBQu2am9;{Rj5_!iRTy zf$9Ec%cZ~b+N&hm;{UpICys5bg)G{x*IycqCp42exdueU$>Qx;9+BoKXG$0^TP8qcf;$nQkBZ+TI6aF1WC4O~#Got!blA-ruz&B8!n|uJ?tiPo zg2IDUVgKbc(seLalp+BvAfgb#R(SoN-K|mHOOC|10D9w?rpZ2rO9G^FMp>W<|ok{hV2gz-yf#Vf_2}M6C0_nl*o~)76fk z1FP7eUkCfOucZE4O5|@Bhjb$FU~!Ra7ysif#NO420YjUh9{~xA0a&PRUXh1D7;fai zxwG12<6zcywP` zSAi11fX9G`4MO$*T^#=V#K~Ae5P(;Sv97&Db@K-1-zKhF`_BUL05*6b^WVaH$AiLl zZX=${bAtSu;sF|}n>T#^UZ3U|fd}vWV8NxLK!Mj@0R*`J-Wj}5Al@L97>;KK+(x`S wgRj$gq?rFQ; 0 and not re.search(r'^[#/;]', x)] + if opts.verbose: + sys.stderr.write(u'[debug] Batch file urls: ' + repr(batchurls) + u'\n') except IOError: sys.exit(u'ERROR: batch file could not be read') all_urls = batchurls + args @@ -580,7 +582,7 @@ def _real_main(argv=None): }) if opts.verbose: - ydl.to_screen(u'[debug] youtube-dl version ' + __version__) + sys.stderr.write(u'[debug] youtube-dl version ' + __version__ + u'\n') try: sp = subprocess.Popen( ['git', 'rev-parse', '--short', 'HEAD'], @@ -589,11 +591,14 @@ def _real_main(argv=None): out, err = sp.communicate() out = out.decode().strip() if re.match('[0-9a-f]+', out): - ydl.to_screen(u'[debug] Git HEAD: ' + out) + sys.stderr.write(u'[debug] Git HEAD: ' + out + u'\n') except: - sys.exc_clear() - ydl.to_screen(u'[debug] Python version %s - %s' %(platform.python_version(), platform.platform())) - ydl.to_screen(u'[debug] Proxy map: ' + str(proxy_handler.proxies)) + try: + sys.exc_clear() + except: + pass + sys.stderr.write(u'[debug] Python version %s - %s' %(platform.python_version(), platform.platform()) + u'\n') + sys.stderr.write(u'[debug] Proxy map: ' + str(proxy_handler.proxies) + u'\n') ydl.add_default_info_extractors() diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 934419c..c20172a 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -6,17 +6,23 @@ from .bandcamp import BandcampIE from .bliptv import BlipTVIE, BlipTVUserIE from .breakcom import BreakIE from .brightcove import BrightcoveIE +from .canalplus import CanalplusIE from .collegehumor import CollegeHumorIE from .comedycentral import ComedyCentralIE +from .condenast import CondeNastIE +from .criterion import CriterionIE from .cspan import CSpanIE -from .dailymotion import DailymotionIE +from .dailymotion import DailymotionIE, DailymotionPlaylistIE from .depositfiles import DepositFilesIE from .dotsub import DotsubIE from .dreisat import DreiSatIE +from .ehow import EHowIE from .eighttracks import EightTracksIE from .escapist import EscapistIE +from .exfm import ExfmIE from .facebook import FacebookIE from .flickr import FlickrIE +from .freesound import FreesoundIE from .funnyordie import FunnyOrDieIE from .gamespot import GameSpotIE from .gametrailers import GametrailersIE @@ -26,13 +32,16 @@ from .googlesearch import GoogleSearchIE from .hotnewhiphop import HotNewHipHopIE from .howcast import HowcastIE from .hypem import HypemIE +from .ign import IGNIE, OneUPIE from .ina import InaIE from .infoq import InfoQIE from .instagram import InstagramIE from .jukebox import JukeboxIE from .justintv import JustinTVIE +from .kankan import KankanIE from .keek import KeekIE from .liveleak import LiveLeakIE +from .livestream import LivestreamIE from .metacafe import MetacafeIE from .mixcloud import MixcloudIE from .mtv import MTVIE @@ -44,6 +53,8 @@ from .pornotube import PornotubeIE from .rbmaradio import RBMARadioIE from .redtube import RedTubeIE from .ringtv import RingTVIE +from .roxwel import RoxwelIE +from .sina import SinaIE from .soundcloud import SoundcloudIE, SoundcloudSetIE from .spiegel import SpiegelIE from .stanfordoc import StanfordOpenClassroomIE @@ -52,6 +63,7 @@ from .steam import SteamIE from .teamcoco import TeamcocoIE from .ted import TEDIE from .tf1 import TF1IE +from .thisav import ThisAVIE from .traileraddict import TrailerAddictIE from .tudou import TudouIE from .tumblr import TumblrIE @@ -60,9 +72,11 @@ from .ustream import UstreamIE from .vbox7 import Vbox7IE from .veoh import VeohIE from .vevo import VevoIE -from .vimeo import VimeoIE +from .vimeo import VimeoIE, VimeoChannelIE from .vine import VineIE +from .c56 import C56IE from .wat import WatIE +from .weibo import WeiboIE from .wimp import WimpIE from .worldstarhiphop import WorldStarHipHopIE from .xhamster import XHamsterIE @@ -80,6 +94,9 @@ from .youtube import ( YoutubeChannelIE, YoutubeShowIE, YoutubeSubscriptionsIE, + YoutubeRecommendedIE, + YoutubeWatchLaterIE, + YoutubeFavouritesIE, ) from .zdf import ZDFIE diff --git a/youtube_dl/extractor/archiveorg.py b/youtube_dl/extractor/archiveorg.py index 29cb9bd..7efd1d8 100644 --- a/youtube_dl/extractor/archiveorg.py +++ b/youtube_dl/extractor/archiveorg.py @@ -48,6 +48,7 @@ class ArchiveOrgIE(InfoExtractor): formats.sort(key=lambda fdata: fdata['file_size']) info = { + '_type': 'video', 'id': video_id, 'title': title, 'formats': formats, @@ -63,4 +64,4 @@ class ArchiveOrgIE(InfoExtractor): info['url'] = formats[-1]['url'] info['ext'] = determine_ext(formats[-1]['url']) - return self.video_result(info) \ No newline at end of file + return info \ No newline at end of file diff --git a/youtube_dl/extractor/arte.py b/youtube_dl/extractor/arte.py index e7a91a1..18d5916 100644 --- a/youtube_dl/extractor/arte.py +++ b/youtube_dl/extractor/arte.py @@ -5,6 +5,7 @@ import xml.etree.ElementTree from .common import InfoExtractor from ..utils import ( ExtractorError, + find_xpath_attr, unified_strdate, ) @@ -97,7 +98,7 @@ class ArteTvIE(InfoExtractor): l = 'F' elif lang == 'de': l = 'A' - regexes = [r'VO?%s' % l, r'V%s-ST.' % l] + regexes = [r'VO?%s' % l, r'VO?.-ST%s' % l] return any(re.match(r, f['versionCode']) for r in regexes) # Some formats may not be in the same language as the url formats = filter(_match_lang, formats) @@ -119,7 +120,7 @@ class ArteTvIE(InfoExtractor): ref_xml_url = ref_xml_url.replace('.html', ',view,asPlayerXml.xml') ref_xml = self._download_webpage(ref_xml_url, video_id, note=u'Downloading metadata') ref_xml_doc = xml.etree.ElementTree.fromstring(ref_xml) - config_node = ref_xml_doc.find('.//video[@lang="%s"]' % lang) + config_node = find_xpath_attr(ref_xml_doc, './/video', 'lang', lang) config_xml_url = config_node.attrib['ref'] config_xml = self._download_webpage(config_xml_url, video_id, note=u'Downloading configuration') diff --git a/youtube_dl/extractor/breakcom.py b/youtube_dl/extractor/breakcom.py index 34f555e..53a898d 100644 --- a/youtube_dl/extractor/breakcom.py +++ b/youtube_dl/extractor/breakcom.py @@ -1,6 +1,8 @@ import re +import json from .common import InfoExtractor +from ..utils import determine_ext class BreakIE(InfoExtractor): @@ -17,17 +19,20 @@ class BreakIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) video_id = mobj.group(1).split("-")[-1] - webpage = self._download_webpage(url, video_id) - video_url = re.search(r"videoPath: '(.+?)',",webpage).group(1) - key = re.search(r"icon: '(.+?)',",webpage).group(1) - final_url = str(video_url)+"?"+str(key) - thumbnail_url = re.search(r"thumbnailURL: '(.+?)'",webpage).group(1) - title = re.search(r"sVidTitle: '(.+)',",webpage).group(1) - ext = video_url.split('.')[-1] + embed_url = 'http://www.break.com/embed/%s' % video_id + webpage = self._download_webpage(embed_url, video_id) + info_json = self._search_regex(r'var embedVars = ({.*?});', webpage, + u'info json', flags=re.DOTALL) + info = json.loads(info_json) + video_url = info['videoUri'] + m_youtube = re.search(r'(https?://www\.youtube\.com/watch\?v=.*)', video_url) + if m_youtube is not None: + return self.url_result(m_youtube.group(1), 'Youtube') + final_url = video_url + '?' + info['AuthToken'] return [{ 'id': video_id, 'url': final_url, - 'ext': ext, - 'title': title, - 'thumbnail': thumbnail_url, + 'ext': determine_ext(final_url), + 'title': info['contentName'], + 'thumbnail': info['thumbUri'], }] diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index f85acbb..71e3c78 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -1,28 +1,82 @@ import re import json +import xml.etree.ElementTree from .common import InfoExtractor +from ..utils import ( + compat_urllib_parse, + find_xpath_attr, + compat_urlparse, +) class BrightcoveIE(InfoExtractor): - _VALID_URL = r'http://.*brightcove\.com/.*\?(?P.*videoPlayer=(?P\d*).*)' + _VALID_URL = r'https?://.*brightcove\.com/(services|viewer).*\?(?P.*)' + _FEDERATED_URL_TEMPLATE = 'http://c.brightcove.com/services/viewer/htmlFederated?%s' + _PLAYLIST_URL_TEMPLATE = 'http://c.brightcove.com/services/json/experience/runtime/?command=get_programming_for_experience&playerKey=%s' + + # There is a test for Brigtcove in GenericIE, that way we test both the download + # and the detection of videos, and we don't have to find an URL that is always valid + + @classmethod + def _build_brighcove_url(cls, object_str): + """ + Build a Brightcove url from a xml string containing + {params} + """ + object_doc = xml.etree.ElementTree.fromstring(object_str) + assert u'BrightcoveExperience' in object_doc.attrib['class'] + params = {'flashID': object_doc.attrib['id'], + 'playerID': find_xpath_attr(object_doc, './param', 'name', 'playerID').attrib['value'], + } + playerKey = find_xpath_attr(object_doc, './param', 'name', 'playerKey') + # Not all pages define this value + if playerKey is not None: + params['playerKey'] = playerKey.attrib['value'] + videoPlayer = find_xpath_attr(object_doc, './param', 'name', '@videoPlayer') + if videoPlayer is not None: + params['@videoPlayer'] = videoPlayer.attrib['value'] + data = compat_urllib_parse.urlencode(params) + return cls._FEDERATED_URL_TEMPLATE % data def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) - query = mobj.group('query') - video_id = mobj.group('id') + query_str = mobj.group('query') + query = compat_urlparse.parse_qs(query_str) + + videoPlayer = query.get('@videoPlayer') + if videoPlayer: + return self._get_video_info(videoPlayer[0], query_str) + else: + player_key = query['playerKey'] + return self._get_playlist_info(player_key[0]) - request_url = 'http://c.brightcove.com/services/viewer/htmlFederated?%s' % query + def _get_video_info(self, video_id, query): + request_url = self._FEDERATED_URL_TEMPLATE % query webpage = self._download_webpage(request_url, video_id) self.report_extraction(video_id) info = self._search_regex(r'var experienceJSON = ({.*?});', webpage, 'json') info = json.loads(info)['data'] video_info = info['programmedContent']['videoPlayer']['mediaDTO'] + + return self._extract_video_info(video_info) + + def _get_playlist_info(self, player_key): + playlist_info = self._download_webpage(self._PLAYLIST_URL_TEMPLATE % player_key, + player_key, u'Downloading playlist information') + + playlist_info = json.loads(playlist_info)['videoList'] + videos = [self._extract_video_info(video_info) for video_info in playlist_info['mediaCollectionDTO']['videoDTOs']] + + return self.playlist_result(videos, playlist_id=playlist_info['id'], + playlist_title=playlist_info['mediaCollectionDTO']['displayName']) + + def _extract_video_info(self, video_info): renditions = video_info['renditions'] renditions = sorted(renditions, key=lambda r: r['size']) best_format = renditions[-1] - - return {'id': video_id, + + return {'id': video_info['id'], 'title': video_info['displayName'], 'url': best_format['defaultURL'], 'ext': 'mp4', diff --git a/youtube_dl/extractor/c56.py b/youtube_dl/extractor/c56.py new file mode 100644 index 0000000..4c8a8af --- /dev/null +++ b/youtube_dl/extractor/c56.py @@ -0,0 +1,36 @@ +# coding: utf-8 + +import re +import json + +from .common import InfoExtractor +from ..utils import determine_ext + +class C56IE(InfoExtractor): + _VALID_URL = r'https?://((www|player)\.)?56\.com/(.+?/)?(v_|(play_album.+-))(?P.+?)\.(html|swf)' + IE_NAME = u'56.com' + + _TEST ={ + u'url': u'http://www.56.com/u39/v_OTM0NDA3MTY.html', + u'file': u'93440716.mp4', + u'md5': u'9dc07b5c8e978112a6441f9e75d2b59e', + u'info_dict': { + u'title': u'网事知多少 第32期:车怒', + }, + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url, flags=re.VERBOSE) + text_id = mobj.group('textid') + info_page = self._download_webpage('http://vxml.56.com/json/%s/' % text_id, + text_id, u'Downloading video info') + info = json.loads(info_page)['info'] + best_format = sorted(info['rfiles'], key=lambda f: int(f['filesize']))[-1] + video_url = best_format['url'] + + return {'id': info['vid'], + 'title': info['Subject'], + 'url': video_url, + 'ext': determine_ext(video_url), + 'thumbnail': info.get('bimg') or info.get('img'), + } diff --git a/youtube_dl/extractor/canalplus.py b/youtube_dl/extractor/canalplus.py new file mode 100644 index 0000000..3b1c888 --- /dev/null +++ b/youtube_dl/extractor/canalplus.py @@ -0,0 +1,46 @@ +import re +import xml.etree.ElementTree + +from .common import InfoExtractor +from ..utils import unified_strdate + +class CanalplusIE(InfoExtractor): + _VALID_URL = r'https?://www\.canalplus\.fr/.*?\?vid=(?P\d+)' + _VIDEO_INFO_TEMPLATE = 'http://service.canal-plus.com/video/rest/getVideosLiees/cplus/%s' + IE_NAME = u'canalplus.fr' + + _TEST = { + u'url': u'http://www.canalplus.fr/c-divertissement/pid3351-c-le-petit-journal.html?vid=889861', + u'file': u'889861.flv', + u'md5': u'590a888158b5f0d6832f84001fbf3e99', + u'info_dict': { + u'title': u'Le Petit Journal 20/06/13 - La guerre des drone', + u'upload_date': u'20130620', + }, + u'skip': u'Requires rtmpdump' + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + info_url = self._VIDEO_INFO_TEMPLATE % video_id + info_page = self._download_webpage(info_url,video_id, + u'Downloading video info') + + self.report_extraction(video_id) + doc = xml.etree.ElementTree.fromstring(info_page.encode('utf-8')) + video_info = [video for video in doc if video.find('ID').text == video_id][0] + infos = video_info.find('INFOS') + media = video_info.find('MEDIA') + formats = [media.find('VIDEOS/%s' % format) + for format in ['BAS_DEBIT', 'HAUT_DEBIT', 'HD']] + video_url = [format.text for format in formats if format is not None][-1] + + return {'id': video_id, + 'title': u'%s - %s' % (infos.find('TITRAGE/TITRE').text, + infos.find('TITRAGE/SOUS_TITRE').text), + 'url': video_url, + 'ext': 'flv', + 'upload_date': unified_strdate(infos.find('PUBLICATION/DATE').text), + 'thumbnail': media.find('IMAGES/GRAND').text, + } diff --git a/youtube_dl/extractor/collegehumor.py b/youtube_dl/extractor/collegehumor.py index 7ae0972..5badde0 100644 --- a/youtube_dl/extractor/collegehumor.py +++ b/youtube_dl/extractor/collegehumor.py @@ -1,26 +1,26 @@ import re -import socket import xml.etree.ElementTree from .common import InfoExtractor from ..utils import ( - compat_http_client, - compat_str, - compat_urllib_error, compat_urllib_parse_urlparse, - compat_urllib_request, ExtractorError, ) class CollegeHumorIE(InfoExtractor): - _WORKING = False - _VALID_URL = r'^(?:https?://)?(?:www\.)?collegehumor\.com/video/(?P[0-9]+)/(?P.*)$' + _VALID_URL = r'^(?:https?://)?(?:www\.)?collegehumor\.com/(video|embed|e)/(?P[0-9]+)/(?P.*)$' - def report_manifest(self, video_id): - """Report information extraction.""" - self.to_screen(u'%s: Downloading XML manifest' % video_id) + _TEST = { + u'url': u'http://www.collegehumor.com/video/6902724/comic-con-cosplay-catastrophe', + u'file': u'6902724.mp4', + u'md5': u'1264c12ad95dca142a9f0bf7968105a0', + u'info_dict': { + u'title': u'Comic-Con Cosplay Catastrophe', + u'description': u'Fans get creative this year at San Diego. Too creative. And yes, that\'s really Joss Whedon.', + }, + } def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) @@ -36,14 +36,16 @@ class CollegeHumorIE(InfoExtractor): self.report_extraction(video_id) xmlUrl = 'http://www.collegehumor.com/moogaloop/video/' + video_id - try: - metaXml = compat_urllib_request.urlopen(xmlUrl).read() - except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: - raise ExtractorError(u'Unable to download video info XML: %s' % compat_str(err)) + metaXml = self._download_webpage(xmlUrl, video_id, + u'Downloading info XML', + u'Unable to download video info XML') mdoc = xml.etree.ElementTree.fromstring(metaXml) try: videoNode = mdoc.findall('./video')[0] + youtubeIdNode = videoNode.find('./youtubeID') + if youtubeIdNode is not None: + return self.url_result(youtubeIdNode.text, 'Youtube') info['description'] = videoNode.findall('./description')[0].text info['title'] = videoNode.findall('./caption')[0].text info['thumbnail'] = videoNode.findall('./thumbnail')[0].text @@ -52,11 +54,9 @@ class CollegeHumorIE(InfoExtractor): raise ExtractorError(u'Invalid metadata XML file') manifest_url += '?hdcore=2.10.3' - self.report_manifest(video_id) - try: - manifestXml = compat_urllib_request.urlopen(manifest_url).read() - except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: - raise ExtractorError(u'Unable to download video info XML: %s' % compat_str(err)) + manifestXml = self._download_webpage(manifest_url, video_id, + u'Downloading XML manifest', + u'Unable to download video info XML') adoc = xml.etree.ElementTree.fromstring(manifestXml) try: @@ -66,9 +66,8 @@ class CollegeHumorIE(InfoExtractor): except IndexError as err: raise ExtractorError(u'Invalid manifest file') - url_pr = compat_urllib_parse_urlparse(manifest_url) - url = url_pr.scheme + '://' + url_pr.netloc + '/z' + video_id[:-2] + '/' + node_id + 'Seg1-Frag1' + url_pr = compat_urllib_parse_urlparse(info['thumbnail']) - info['url'] = url - info['ext'] = 'f4f' + info['url'] = url_pr.scheme + '://' + url_pr.netloc + video_id[:-2].replace('.csmil','').replace(',','') + info['ext'] = 'mp4' return [info] diff --git a/youtube_dl/extractor/comedycentral.py b/youtube_dl/extractor/comedycentral.py index 93d9e3d..bf8d711 100644 --- a/youtube_dl/extractor/comedycentral.py +++ b/youtube_dl/extractor/comedycentral.py @@ -24,7 +24,9 @@ class ComedyCentralIE(InfoExtractor): (full-episodes/(?P.*)| (?P (the-colbert-report-(videos|collections)/(?P[0-9]+)/[^/]*/(?P.*?)) - |(watch/(?P[^/]*)/(?P.*))))) + |(watch/(?P[^/]*)/(?P.*)))| + (?P + extended-interviews/(?P[0-9]+)/playlist_tds_extended_(?P.*?)/.*?))) $""" _TEST = { u'url': u'http://www.thedailyshow.com/watch/thu-december-13-2012/kristen-stewart', @@ -87,6 +89,9 @@ class ComedyCentralIE(InfoExtractor): else: epTitle = mobj.group('cntitle') dlNewest = False + elif mobj.group('interview'): + epTitle = mobj.group('interview_title') + dlNewest = False else: dlNewest = not mobj.group('episode') if dlNewest: diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 1d98222..da50abf 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -14,6 +14,7 @@ from ..utils import ( clean_html, compiled_regex_type, ExtractorError, + unescapeHTML, ) class InfoExtractor(object): @@ -125,6 +126,11 @@ class InfoExtractor(object): def _download_webpage_handle(self, url_or_request, video_id, note=None, errnote=None): """ Returns a tuple (page content as string, URL handle) """ + + # Strip hashes from the URL (#1038) + if isinstance(url_or_request, (compat_str, str)): + url_or_request = url_or_request.partition('#')[0] + urlh = self._request_webpage(url_or_request, video_id, note, errnote) content_type = urlh.headers.get('Content-Type', '') m = re.match(r'[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+\s*;\s*charset=(.+)', content_type) @@ -169,11 +175,6 @@ class InfoExtractor(object): self.to_screen(u'Logging in') #Methods for following #608 - #They set the correct value of the '_type' key - def video_result(self, video_info): - """Returns a video""" - video_info['_type'] = 'video' - return video_info def url_result(self, url, ie=None): """Returns a url that points to a page that should be processed""" #TODO: ie should be the class used for getting the info @@ -262,6 +263,31 @@ class InfoExtractor(object): return (username, password) + # Helper functions for extracting OpenGraph info + @staticmethod + def _og_regex(prop): + return r'%s).com/(?Pwatch|series|video)/(?P.+)' % '|'.join(_SITES.keys()) + IE_DESC = u'Condé Nast media group: %s' % ', '.join(sorted(_SITES.values())) + + _TEST = { + u'url': u'http://video.wired.com/watch/3d-printed-speakers-lit-with-led', + u'file': u'5171b343c2b4c00dd0c1ccb3.mp4', + u'md5': u'1921f713ed48aabd715691f774c451f7', + u'info_dict': { + u'title': u'3D Printed Speakers Lit With LED', + u'description': u'Check out these beautiful 3D printed LED speakers. You can\'t actually buy them, but LumiGeek is working on a board that will let you make you\'re own.', + } + } + + def _extract_series(self, url, webpage): + title = self._html_search_regex(r'

', + r'
(.+?)
', + ], + webpage, u'description', + fatal=False, flags=re.DOTALL) + params = self._search_regex(r'var params = {(.+?)}[;,]', webpage, + u'player params', flags=re.DOTALL) + video_id = self._search_regex(r'videoId: [\'"](.+?)[\'"]', params, u'video id') + player_id = self._search_regex(r'playerId: [\'"](.+?)[\'"]', params, u'player id') + target = self._search_regex(r'target: [\'"](.+?)[\'"]', params, u'target') + data = compat_urllib_parse.urlencode({'videoId': video_id, + 'playerId': player_id, + 'target': target, + }) + base_info_url = self._search_regex(r'url = [\'"](.+?)[\'"][,;]', + webpage, u'base info url', + default='http://player.cnevids.com/player/loader.js?') + info_url = base_info_url + data + info_page = self._download_webpage(info_url, video_id, + u'Downloading video info') + video_info = self._search_regex(r'var video = ({.+?});', info_page, u'video info') + video_info = json.loads(video_info) + + def _formats_sort_key(f): + type_ord = 1 if f['type'] == 'video/mp4' else 0 + quality_ord = 1 if f['quality'] == 'high' else 0 + return (quality_ord, type_ord) + best_format = sorted(video_info['sources'][0], key=_formats_sort_key)[-1] + + return {'id': video_id, + 'url': best_format['src'], + 'ext': best_format['type'].split('/')[-1], + 'title': video_info['title'], + 'thumbnail': video_info['poster_frame'], + 'description': description, + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + site = mobj.group('site') + url_type = mobj.group('type') + id = mobj.group('id') + + self.to_screen(u'Extracting from %s with the Condé Nast extractor' % self._SITES[site]) + webpage = self._download_webpage(url, id) + + if url_type == 'series': + return self._extract_series(url, webpage) + else: + return self._extract_video(webpage) diff --git a/youtube_dl/extractor/criterion.py b/youtube_dl/extractor/criterion.py new file mode 100644 index 0000000..31fe3d5 --- /dev/null +++ b/youtube_dl/extractor/criterion.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +import re + +from .common import InfoExtractor +from ..utils import determine_ext + +class CriterionIE(InfoExtractor): + _VALID_URL = r'https?://www\.criterion\.com/films/(\d*)-.+' + _TEST = { + u'url': u'http://www.criterion.com/films/184-le-samourai', + u'file': u'184.mp4', + u'md5': u'bc51beba55685509883a9a7830919ec3', + u'info_dict': { + u"title": u"Le Samouraï", + u"description" : u'md5:a2b4b116326558149bef81f76dcbb93f', + } + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group(1) + webpage = self._download_webpage(url, video_id) + + final_url = self._search_regex(r'so.addVariable\("videoURL", "(.+?)"\)\;', + webpage, 'video url') + title = self._html_search_regex(r'', + webpage, 'video title') + description = self._html_search_regex(r'', + webpage, 'video description') + thumbnail = self._search_regex(r'so.addVariable\("thumbnailURL", "(.+?)"\)\;', + webpage, 'thumbnail url') + + return {'id': video_id, + 'url' : final_url, + 'title': title, + 'ext': determine_ext(final_url), + 'description': description, + 'thumbnail': thumbnail, + } diff --git a/youtube_dl/extractor/cspan.py b/youtube_dl/extractor/cspan.py index a485327..7bf03c5 100644 --- a/youtube_dl/extractor/cspan.py +++ b/youtube_dl/extractor/cspan.py @@ -34,8 +34,6 @@ class CSpanIE(InfoExtractor): description = self._html_search_regex(r'(.*?)', video_info, 'video url') @@ -49,5 +47,5 @@ class CSpanIE(InfoExtractor): 'url': url, 'play_path': path, 'description': description, - 'thumbnail': thumbnail, + 'thumbnail': self._og_search_thumbnail(webpage), } diff --git a/youtube_dl/extractor/dailymotion.py b/youtube_dl/extractor/dailymotion.py index 5fd2221..fa8c630 100644 --- a/youtube_dl/extractor/dailymotion.py +++ b/youtube_dl/extractor/dailymotion.py @@ -1,9 +1,12 @@ import re import json +import itertools from .common import InfoExtractor from ..utils import ( compat_urllib_request, + get_element_by_attribute, + get_element_by_id, ExtractorError, ) @@ -39,9 +42,6 @@ class DailymotionIE(InfoExtractor): # Extract URL, uploader and title from webpage self.report_extraction(video_id) - video_title = self._html_search_regex(r'', - webpage, 'title') - video_uploader = self._search_regex([r'(?im)[^<]+?
]+?>([^<]+?)', # Looking for official user r'<(?:span|a) .*?rel="author".*?>([^<]+?).+?)/' + _MORE_PAGES_INDICATOR = r'' + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + playlist_id = mobj.group('id') + video_ids = [] + + for pagenum in itertools.count(1): + webpage = self._download_webpage('https://www.dailymotion.com/playlist/%s/%s' % (playlist_id, pagenum), + playlist_id, u'Downloading page %s' % pagenum) + + playlist_el = get_element_by_attribute(u'class', u'video_list', webpage) + video_ids.extend(re.findall(r'data-id="(.+?)" data-ext-id', playlist_el)) + + if re.search(self._MORE_PAGES_INDICATOR, webpage, re.DOTALL) is None: + break + + entries = [self.url_result('http://www.dailymotion.com/video/%s' % video_id, 'Dailymotion') + for video_id in video_ids] + return {'_type': 'playlist', + 'id': playlist_id, + 'title': get_element_by_id(u'playlist_name', webpage), + 'entries': entries, + } diff --git a/youtube_dl/extractor/dreisat.py b/youtube_dl/extractor/dreisat.py index 847f733..64b4658 100644 --- a/youtube_dl/extractor/dreisat.py +++ b/youtube_dl/extractor/dreisat.py @@ -67,6 +67,7 @@ class DreiSatIE(InfoExtractor): formats.sort(key=_sortkey) info = { + '_type': 'video', 'id': video_id, 'title': video_title, 'formats': formats, @@ -81,4 +82,4 @@ class DreiSatIE(InfoExtractor): info['url'] = formats[-1]['url'] info['ext'] = determine_ext(formats[-1]['url']) - return self.video_result(info) \ No newline at end of file + return info \ No newline at end of file diff --git a/youtube_dl/extractor/ehow.py b/youtube_dl/extractor/ehow.py new file mode 100644 index 0000000..2bb77ae --- /dev/null +++ b/youtube_dl/extractor/ehow.py @@ -0,0 +1,46 @@ +import re + +from ..utils import ( + compat_urllib_parse, + determine_ext +) +from .common import InfoExtractor + + +class EHowIE(InfoExtractor): + IE_NAME = u'eHow' + _VALID_URL = r'(?:https?://)?(?:www\.)?ehow\.com/[^/_?]*_(?P[0-9]+)' + _TEST = { + u'url': u'http://www.ehow.com/video_12245069_hardwood-flooring-basics.html', + u'file': u'12245069.flv', + u'md5': u'9809b4e3f115ae2088440bcb4efbf371', + u'info_dict': { + u"title": u"Hardwood Flooring Basics", + u"description": u"Hardwood flooring may be time consuming, but its ultimately a pretty straightforward concept. Learn about hardwood flooring basics with help from a hardware flooring business owner in this free video...", + u"uploader": u"Erick Nathan" + } + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + webpage = self._download_webpage(url, video_id) + video_url = self._search_regex(r'(?:file|source)=(http[^\'"&]*)', + webpage, u'video URL') + final_url = compat_urllib_parse.unquote(video_url) + uploader = self._search_regex(r'', + webpage, u'uploader') + title = self._og_search_title(webpage).replace(' | eHow', '') + ext = determine_ext(final_url) + + return { + '_type': 'video', + 'id': video_id, + 'url': final_url, + 'ext': ext, + 'title': title, + 'thumbnail': self._og_search_thumbnail(webpage), + 'description': self._og_search_description(webpage), + 'uploader': uploader, + } + diff --git a/youtube_dl/extractor/escapist.py b/youtube_dl/extractor/escapist.py index 794460e..3aa2da5 100644 --- a/youtube_dl/extractor/escapist.py +++ b/youtube_dl/extractor/escapist.py @@ -36,11 +36,7 @@ class EscapistIE(InfoExtractor): videoDesc = self._html_search_regex('[^/]+)' + _TEST = { + u'url': u'http://www.freesound.org/people/miklovan/sounds/194503/', + u'file': u'194503.mp3', + u'md5': u'12280ceb42c81f19a515c745eae07650', + u'info_dict': { + u"title": u"gulls in the city.wav", + u"uploader" : u"miklovan", + u'description': u'the sounds of seagulls in the city', + } + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + music_id = mobj.group('id') + webpage = self._download_webpage(url, music_id) + title = self._html_search_regex(r'
.*?(.+?)', + webpage, 'music title', flags=re.DOTALL) + music_url = self._og_search_property('audio', webpage, 'music url') + description = self._html_search_regex(r'
(.*?)
', + webpage, 'description', fatal=False, flags=re.DOTALL) + + return [{ + 'id': music_id, + 'title': title, + 'url': music_url, + 'uploader': self._og_search_property('audio:artist', webpage, 'music uploader'), + 'ext': determine_ext(music_url), + 'description': description, + }] diff --git a/youtube_dl/extractor/funnyordie.py b/youtube_dl/extractor/funnyordie.py index 388aacf..67a7e5f 100644 --- a/youtube_dl/extractor/funnyordie.py +++ b/youtube_dl/extractor/funnyordie.py @@ -27,14 +27,11 @@ class FunnyOrDieIE(InfoExtractor): title = self._html_search_regex((r"

(?P.*?)</h1>", r'<title>(?P<title>[^<]+?)'), webpage, 'title', flags=re.DOTALL) - video_description = self._html_search_regex(r'videos|reviews|full-episodes)/(?P.*?)/(?P.*)' _TEST = { u'url': u'http://www.gametrailers.com/videos/zbvr8i/mirror-s-edge-2-e3-2013--debut-trailer', - u'file': u'zbvr8i.flv', - u'md5': u'c3edbc995ab4081976e16779bd96a878', + u'file': u'70e9a5d7-cf25-4a10-9104-6f3e7342ae0d.mp4', + u'md5': u'4c8e67681a0ea7ec241e8c09b3ea8cf7', u'info_dict': { - u"title": u"E3 2013: Debut Trailer" + u'title': u'E3 2013: Debut Trailer', + u'description': u'Faith is back! Check out the World Premiere trailer for Mirror\'s Edge 2 straight from the EA Press Conference at E3 2013!', }, - u'skip': u'Requires rtmpdump' } + # Overwrite MTVIE properties we don't want + _TESTS = [] + + _FEED_URL = 'http://www.gametrailers.com/feeds/mrss' + + def _get_thumbnail_url(self, uri, itemdoc): + search_path = '%s/%s' % (_media_xml_tag('group'), _media_xml_tag('thumbnail')) + return itemdoc.find(search_path).attrib['url'] def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) - if mobj is None: - raise ExtractorError(u'Invalid URL: %s' % url) video_id = mobj.group('id') - video_type = mobj.group('type') webpage = self._download_webpage(url, video_id) - if video_type == 'full-episodes': - mgid_re = r'data-video="(?P<mgid>mgid:.*?)"' - else: - mgid_re = r'data-contentId=\'(?P<mgid>mgid:.*?)\'' - mgid = self._search_regex(mgid_re, webpage, u'mgid') - data = compat_urllib_parse.urlencode({'uri': mgid, 'acceptMethods': 'fms'}) - - info_page = self._download_webpage('http://www.gametrailers.com/feeds/mrss?' + data, - video_id, u'Downloading video info') - links_webpage = self._download_webpage('http://www.gametrailers.com/feeds/mediagen/?' + data, - video_id, u'Downloading video urls info') - - self.report_extraction(video_id) - info_re = r'''<title><!\[CDATA\[(?P<title>.*?)\]\]>.* - .*?)\]\]>.* - .* - (?P.*?).* - ''' - - m_info = re.search(info_re, info_page, re.VERBOSE|re.DOTALL) - if m_info is None: - raise ExtractorError(u'Unable to extract video info') - video_title = m_info.group('title') - video_description = m_info.group('description') - video_thumb = m_info.group('thumb') - - m_urls = list(re.finditer(r'(?P.*)', links_webpage)) - if m_urls is None or len(m_urls) == 0: - raise ExtractorError(u'Unable to extract video url') - # They are sorted from worst to best quality - video_url = m_urls[-1].group('url') - - return {'url': video_url, - 'id': video_id, - 'title': video_title, - # Videos are actually flv not mp4 - 'ext': 'flv', - 'thumbnail': video_thumb, - 'description': video_description, - } + mgid = self._search_regex([r'data-video="(?Pmgid:.*?)"', + r'data-contentId=\'(?Pmgid:.*?)\''], + webpage, u'mgid') + return self._get_videos_info(mgid) diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 20bc533..b633e89 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -1,3 +1,5 @@ +# encoding: utf-8 + import os import re @@ -9,20 +11,34 @@ from ..utils import ( ExtractorError, ) +from .brightcove import BrightcoveIE class GenericIE(InfoExtractor): IE_DESC = u'Generic downloader that works on some sites' _VALID_URL = r'.*' IE_NAME = u'generic' - _TEST = { - u'url': u'http://www.hodiho.fr/2013/02/regis-plante-sa-jeep.html', - u'file': u'13601338388002.mp4', - u'md5': u'85b90ccc9d73b4acd9138d3af4c27f89', - u'info_dict': { - u"uploader": u"www.hodiho.fr", - u"title": u"R\u00e9gis plante sa Jeep" - } - } + _TESTS = [ + { + u'url': u'http://www.hodiho.fr/2013/02/regis-plante-sa-jeep.html', + u'file': u'13601338388002.mp4', + u'md5': u'85b90ccc9d73b4acd9138d3af4c27f89', + u'info_dict': { + u"uploader": u"www.hodiho.fr", + u"title": u"R\u00e9gis plante sa Jeep" + } + }, + { + u'url': u'http://www.8tv.cat/8aldia/videos/xavier-sala-i-martin-aquesta-tarda-a-8-al-dia/', + u'file': u'2371591881001.mp4', + u'md5': u'9e80619e0a94663f0bdc849b4566af19', + u'note': u'Test Brightcove downloads and detection in GenericIE', + u'info_dict': { + u'title': u'Xavier Sala i Martín: “Un banc que no presta és un banc zombi que no serveix per a res”', + u'uploader': u'8TV', + u'description': u'md5:a950cc4285c43e44d763d036710cd9cd', + } + }, + ] def report_download_webpage(self, video_id): """Report webpage download.""" @@ -103,6 +119,13 @@ class GenericIE(InfoExtractor): raise ExtractorError(u'Invalid URL: %s' % url) self.report_extraction(video_id) + # Look for BrigthCove: + m_brightcove = re.search(r'', webpage, re.DOTALL) + if m_brightcove is not None: + self.to_screen(u'Brightcove video detected.') + bc_url = BrightcoveIE._build_brighcove_url(m_brightcove.group()) + return self.url_result(bc_url, 'Brightcove') + # Start with something easy: JW Player in SWFObject mobj = re.search(r'flashvars: [\'"](?:.*&)?file=(http[^\'"&]*)', webpage) if mobj is None: diff --git a/youtube_dl/extractor/hotnewhiphop.py b/youtube_dl/extractor/hotnewhiphop.py index ca3abb7..ccca1d7 100644 --- a/youtube_dl/extractor/hotnewhiphop.py +++ b/youtube_dl/extractor/hotnewhiphop.py @@ -33,16 +33,12 @@ class HotNewHipHopIE(InfoExtractor): video_title = self._html_search_regex(r"(.*)", webpage_src, u'title') - - # Getting thumbnail and if not thumbnail sets correct title for WSHH candy video. - thumbnail = self._html_search_regex(r'"og:image" content="(.*)"', - webpage_src, u'thumbnail', fatal=False) results = [{ 'id': video_id, 'url' : video_url, 'title' : video_title, - 'thumbnail' : thumbnail, + 'thumbnail' : self._og_search_thumbnail(webpage_src), 'ext' : 'mp3', }] - return results \ No newline at end of file + return results diff --git a/youtube_dl/extractor/ign.py b/youtube_dl/extractor/ign.py new file mode 100644 index 0000000..62abab6 --- /dev/null +++ b/youtube_dl/extractor/ign.py @@ -0,0 +1,91 @@ +import re +import json + +from .common import InfoExtractor +from ..utils import ( + determine_ext, +) + + +class IGNIE(InfoExtractor): + """ + Extractor for some of the IGN sites, like www.ign.com, es.ign.com de.ign.com. + Some videos of it.ign.com are also supported + """ + + _VALID_URL = r'https?://.+?\.ign\.com/(?:videos|show_videos)(/.+)?/(?P.+)' + IE_NAME = u'ign.com' + + _CONFIG_URL_TEMPLATE = 'http://www.ign.com/videos/configs/id/%s.config' + _DESCRIPTION_RE = [r'(.+?)', + r'id="my_show_video">.*?

(.*?)

', + ] + + _TEST = { + u'url': u'http://www.ign.com/videos/2013/06/05/the-last-of-us-review', + u'file': u'8f862beef863986b2785559b9e1aa599.mp4', + u'md5': u'eac8bdc1890980122c3b66f14bdd02e9', + u'info_dict': { + u'title': u'The Last of Us Review', + u'description': u'md5:c8946d4260a4d43a00d5ae8ed998870c', + } + } + + def _find_video_id(self, webpage): + res_id = [r'data-video-id="(.+?)"', + r'.+)' + IE_NAME = '1up.com' + + _DESCRIPTION_RE = r'
(.+?)
' + + _TEST = { + u'url': u'http://gamevideos.1up.com/video/id/34976', + u'file': u'34976.mp4', + u'md5': u'68a54ce4ebc772e4b71e3123d413163d', + u'info_dict': { + u'title': u'Sniper Elite V2 - Trailer', + u'description': u'md5:5d289b722f5a6d940ca3136e9dae89cf', + } + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + id = mobj.group('name_or_id') + result = super(OneUPIE, self)._real_extract(url) + result['id'] = id + return result diff --git a/youtube_dl/extractor/ina.py b/youtube_dl/extractor/ina.py index 962c592..652f19b 100644 --- a/youtube_dl/extractor/ina.py +++ b/youtube_dl/extractor/ina.py @@ -5,7 +5,7 @@ from .common import InfoExtractor class InaIE(InfoExtractor): """Information Extractor for Ina.fr""" - _VALID_URL = r'(?:http://)?(?:www\.)?ina\.fr/video/(?PI[0-9]+)/.*' + _VALID_URL = r'(?:http://)?(?:www\.)?ina\.fr/video/(?PI?[A-F0-9]+)/.*' _TEST = { u'url': u'www.ina.fr/video/I12055569/francois-hollande-je-crois-que-c-est-clair-video.html', u'file': u'I12055569.mp4', diff --git a/youtube_dl/extractor/instagram.py b/youtube_dl/extractor/instagram.py index 6ae704e..ddc4288 100644 --- a/youtube_dl/extractor/instagram.py +++ b/youtube_dl/extractor/instagram.py @@ -5,12 +5,13 @@ from .common import InfoExtractor class InstagramIE(InfoExtractor): _VALID_URL = r'(?:http://)?instagram.com/p/(.*?)/' _TEST = { - u'url': u'http://instagram.com/p/aye83DjauH/#', + u'url': u'http://instagram.com/p/aye83DjauH/?foo=bar#abc', u'file': u'aye83DjauH.mp4', u'md5': u'0d2da106a9d2631273e192b372806516', u'info_dict': { u"uploader_id": u"naomipq", - u"title": u"Video by naomipq" + u"title": u"Video by naomipq", + u'description': u'md5:1f17f0ab29bd6fe2bfad705f58de3cb8', } } @@ -18,25 +19,17 @@ class InstagramIE(InfoExtractor): mobj = re.match(self._VALID_URL, url) video_id = mobj.group(1) webpage = self._download_webpage(url, video_id) - video_url = self._html_search_regex( - r'', - webpage, u'thumbnail URL', fatal=False) - html_title = self._html_search_regex( - r'(.+?)', - webpage, u'title', flags=re.DOTALL) - title = re.sub(u'(?: *\(Videos?\))? \u2022 Instagram$', '', html_title).strip() - uploader_id = self._html_search_regex(r'content="(.*?)\'s video on Instagram', - webpage, u'uploader name', fatal=False) - ext = 'mp4' + uploader_id = self._search_regex(r'"owner":{"username":"(.+?)"', + webpage, u'uploader id', fatal=False) + desc = self._search_regex(r'"caption":"(.*?)"', webpage, u'description', + fatal=False) return [{ 'id': video_id, - 'url': video_url, - 'ext': ext, - 'title': title, - 'thumbnail': thumbnail_url, - 'uploader_id' : uploader_id + 'url': self._og_search_video_url(webpage), + 'ext': 'mp4', + 'title': u'Video by %s' % uploader_id, + 'thumbnail': self._og_search_thumbnail(webpage), + 'uploader_id' : uploader_id, + 'description': desc, }] diff --git a/youtube_dl/extractor/kankan.py b/youtube_dl/extractor/kankan.py new file mode 100644 index 0000000..8537ba5 --- /dev/null +++ b/youtube_dl/extractor/kankan.py @@ -0,0 +1,37 @@ +import re + +from .common import InfoExtractor +from ..utils import determine_ext + + +class KankanIE(InfoExtractor): + _VALID_URL = r'https?://(?:.*?\.)?kankan\.com/.+?/(?P\d+)\.shtml' + + _TEST = { + u'url': u'http://yinyue.kankan.com/vod/48/48863.shtml', + u'file': u'48863.flv', + u'md5': u'29aca1e47ae68fc28804aca89f29507e', + u'info_dict': { + u'title': u'Ready To Go', + }, + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + webpage = self._download_webpage(url, video_id) + + title = self._search_regex(r'G_TITLE=[\'"](.+?)[\'"]', webpage, u'video title') + gcid = self._search_regex(r'lurl:[\'"]http://.+?/.+?/(.+?)/', webpage, u'gcid') + + video_info_page = self._download_webpage('http://p2s.cl.kankan.com/getCdnresource_flv?gcid=%s' % gcid, + video_id, u'Downloading video url info') + ip = self._search_regex(r'ip:"(.+?)"', video_info_page, u'video url ip') + path = self._search_regex(r'path:"(.+?)"', video_info_page, u'video url path') + video_url = 'http://%s%s' % (ip, path) + + return {'id': video_id, + 'title': title, + 'url': video_url, + 'ext': determine_ext(video_url), + } diff --git a/youtube_dl/extractor/keek.py b/youtube_dl/extractor/keek.py index 72ad6a3..a7b88d2 100644 --- a/youtube_dl/extractor/keek.py +++ b/youtube_dl/extractor/keek.py @@ -4,10 +4,10 @@ from .common import InfoExtractor class KeekIE(InfoExtractor): - _VALID_URL = r'http://(?:www\.)?keek\.com/(?:!|\w+/keeks/)(?P\w+)' + _VALID_URL = r'https?://(?:www\.)?keek\.com/(?:!|\w+/keeks/)(?P\w+)' IE_NAME = u'keek' _TEST = { - u'url': u'http://www.keek.com/ytdl/keeks/NODfbab', + u'url': u'https://www.keek.com/ytdl/keeks/NODfbab', u'file': u'NODfbab.mp4', u'md5': u'9b0636f8c0f7614afa4ea5e4c6e57e83', u'info_dict': { @@ -24,8 +24,7 @@ class KeekIE(InfoExtractor): thumbnail = u'http://cdn.keek.com/keek/thumbnail/%s/w100/h75' % video_id webpage = self._download_webpage(url, video_id) - video_title = self._html_search_regex(r'[\S\s]+?

(?P.+?)

', webpage, u'uploader', fatal=False) diff --git a/youtube_dl/extractor/liveleak.py b/youtube_dl/extractor/liveleak.py index cf8a2c9..dd062a1 100644 --- a/youtube_dl/extractor/liveleak.py +++ b/youtube_dl/extractor/liveleak.py @@ -33,11 +33,9 @@ class LiveLeakIE(InfoExtractor): video_url = self._search_regex(r'file: "(.*?)",', webpage, u'video URL') - video_title = self._html_search_regex(r'', webpage, u'uploader', fatal=False) diff --git a/youtube_dl/extractor/livestream.py b/youtube_dl/extractor/livestream.py new file mode 100644 index 0000000..3099210 --- /dev/null +++ b/youtube_dl/extractor/livestream.py @@ -0,0 +1,52 @@ +import re +import json + +from .common import InfoExtractor +from ..utils import compat_urllib_parse_urlparse, compat_urlparse + + +class LivestreamIE(InfoExtractor): + _VALID_URL = r'http://new.livestream.com/.*?/(?P.*?)(/videos/(?P\d+))?/?$' + _TEST = { + u'url': u'http://new.livestream.com/CoheedandCambria/WebsterHall/videos/4719370', + u'file': u'4719370.mp4', + u'md5': u'0d2186e3187d185a04b3cdd02b828836', + u'info_dict': { + u'title': u'Live from Webster Hall NYC', + u'upload_date': u'20121012', + } + } + + def _extract_video_info(self, video_data): + video_url = video_data.get('progressive_url_hd') or video_data.get('progressive_url') + return {'id': video_data['id'], + 'url': video_url, + 'ext': 'mp4', + 'title': video_data['caption'], + 'thumbnail': video_data['thumbnail_url'], + 'upload_date': video_data['updated_at'].replace('-','')[:8], + } + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + event_name = mobj.group('event_name') + webpage = self._download_webpage(url, video_id or event_name) + + if video_id is None: + # This is an event page: + api_url = self._search_regex(r'event_design_eventId: \'(.+?)\'', + webpage, 'api url') + info = json.loads(self._download_webpage(api_url, event_name, + u'Downloading event info')) + videos = [self._extract_video_info(video_data['data']) + for video_data in info['feed']['data'] if video_data['type'] == u'video'] + return self.playlist_result(videos, info['id'], info['full_name']) + else: + og_video = self._og_search_video_url(webpage, name=u'player url') + query_str = compat_urllib_parse_urlparse(og_video).query + query = compat_urlparse.parse_qs(query_str) + api_url = query['play_url'][0].replace('.smil', '') + info = json.loads(self._download_webpage(api_url, video_id, + u'Downloading video info')) + return self._extract_video_info(info) diff --git a/youtube_dl/extractor/metacafe.py b/youtube_dl/extractor/metacafe.py index 4c3f81b..e38dc98 100644 --- a/youtube_dl/extractor/metacafe.py +++ b/youtube_dl/extractor/metacafe.py @@ -9,7 +9,7 @@ from ..utils import ( compat_urllib_parse, compat_urllib_request, compat_str, - + determine_ext, ExtractorError, ) @@ -20,7 +20,7 @@ class MetacafeIE(InfoExtractor): _DISCLAIMER = 'http://www.metacafe.com/family_filter/' _FILTER_POST = 'http://www.metacafe.com/f/index.php?inputType=filter&controllerGroup=user' IE_NAME = u'metacafe' - _TEST = { + _TESTS = [{ u"add_ie": ["Youtube"], u"url": u"http://metacafe.com/watch/yt-_aUehQsCQtM/the_electric_company_short_i_pbs_kids_go/", u"file": u"_aUehQsCQtM.flv", @@ -31,7 +31,16 @@ class MetacafeIE(InfoExtractor): u"uploader": u"PBS", u"uploader_id": u"PBS" } - } + }, + { + u"url": u"http://www.metacafe.com/watch/an-dVVXnuY7Jh77J/the_andromeda_strain_1971_stop_the_bomb_part_3/", + u"file": u"an-dVVXnuY7Jh77J.mp4", + u"info_dict": { + u"title": u"The Andromeda Strain (1971): Stop the Bomb Part 3", + u"uploader": u"anyclip", + u"description": u"md5:38c711dd98f5bb87acf973d573442e67" + } + }] def report_disclaimer(self): @@ -73,14 +82,16 @@ class MetacafeIE(InfoExtractor): return [self.url_result('http://www.youtube.com/watch?v=%s' % mobj2.group(1), 'Youtube')] # Retrieve video webpage to extract further information - webpage = self._download_webpage('http://www.metacafe.com/watch/%s/' % video_id, video_id) + req = compat_urllib_request.Request('http://www.metacafe.com/watch/%s/' % video_id) + req.headers['Cookie'] = 'flashVersion=0;' + webpage = self._download_webpage(req, video_id) # Extract URL, uploader and title from webpage self.report_extraction(video_id) mobj = re.search(r'(?m)&mediaURL=([^&]+)', webpage) if mobj is not None: mediaURL = compat_urllib_parse.unquote(mobj.group(1)) - video_extension = mediaURL[-3:] + video_ext = mediaURL[-3:] # Extract gdaKey if available mobj = re.search(r'(?m)&gdaKey=(.*?)&', webpage) @@ -90,34 +101,37 @@ class MetacafeIE(InfoExtractor): gdaKey = mobj.group(1) video_url = '%s?__gda__=%s' % (mediaURL, gdaKey) else: - mobj = re.search(r' name="flashvars" value="(.*?)"', webpage) - if mobj is None: - raise ExtractorError(u'Unable to extract media URL') - vardict = compat_parse_qs(mobj.group(1)) - if 'mediaData' not in vardict: - raise ExtractorError(u'Unable to extract media URL') - mobj = re.search(r'"mediaURL":"(?Phttp.*?)",(.*?)"key":"(?P.*?)"', vardict['mediaData'][0]) - if mobj is None: - raise ExtractorError(u'Unable to extract media URL') - mediaURL = mobj.group('mediaURL').replace('\\/', '/') - video_extension = mediaURL[-3:] - video_url = '%s?__gda__=%s' % (mediaURL, mobj.group('key')) - - mobj = re.search(r'(?im)(.*) - Video', webpage) - if mobj is None: - raise ExtractorError(u'Unable to extract title') - video_title = mobj.group(1).decode('utf-8') - - mobj = re.search(r'submitter=(.*?);', webpage) - if mobj is None: - raise ExtractorError(u'Unable to extract uploader nickname') - video_uploader = mobj.group(1) - - return [{ - 'id': video_id.decode('utf-8'), - 'url': video_url.decode('utf-8'), - 'uploader': video_uploader.decode('utf-8'), + mobj = re.search(r'