summaryrefslogtreecommitdiff
path: root/2004/i/nono/src
diff options
context:
space:
mode:
authorgaillaro2004-08-08 11:29:43 +0000
committergaillaro2004-08-08 11:29:43 +0000
commitc2fc583752a443cb6adc8b918d1c3f442137885a (patch)
tree3a981d5e5b88c1adb68f484e0d38c424b321e1e8 /2004/i/nono/src
parent71416a4de8daaf0d36bce016c5f34b3fc6576ea5 (diff)
Changement de la prise en charge des differents mode de couleur
Diffstat (limited to '2004/i/nono/src')
-rw-r--r--2004/i/nono/src/ovision/comm.cc15
-rw-r--r--2004/i/nono/src/ovision/convertImg.cc47
-rw-r--r--2004/i/nono/src/ovision/convertImg.h8
-rw-r--r--2004/i/nono/src/ovision/imagelist1
-rw-r--r--2004/i/nono/src/ovision/img.cc23
-rw-r--r--2004/i/nono/src/ovision/img.h2
-rw-r--r--2004/i/nono/src/ovision/imgFile.cc3
-rw-r--r--2004/i/nono/src/ovision/imgFile.h2
-rw-r--r--2004/i/nono/src/ovision/oconfig.cc30
-rw-r--r--2004/i/nono/src/ovision/oconfig.h2
-rw-r--r--2004/i/nono/src/ovision/ovision.cc54
-rw-r--r--2004/i/nono/src/ovision/ovision.h3
-rw-r--r--2004/i/nono/src/ovision/segmNN.cc4
-rw-r--r--2004/i/nono/src/ovision/segmTable.cc7
-rw-r--r--2004/i/nono/src/ovision/space.cc2
-rw-r--r--2004/i/nono/src/ovision/test.rgb2
-rw-r--r--2004/i/nono/src/ovision/test_ovision.cc22
17 files changed, 161 insertions, 66 deletions
diff --git a/2004/i/nono/src/ovision/comm.cc b/2004/i/nono/src/ovision/comm.cc
index 415d477..c312e70 100644
--- a/2004/i/nono/src/ovision/comm.cc
+++ b/2004/i/nono/src/ovision/comm.cc
@@ -69,10 +69,18 @@ Comm::Comm(char *filename)
group = new Group(&img, segm);
SegmAndGroup();
- // Affichage de l'image pilote en RGB et YUV
+ // Affichage de l'image pilote avec la couleur d'aquisition et en RGB
tex[1] = LoadImage(img.width, img.height, data[0], tex[1]);
- tex[4] = LoadImage(img.width, img.height, data[1], tex[4]);
-
+
+ if (img.colorMode != RGB)
+ {
+ ConvertImg conv;
+ conv.ConvertToRGB (img);
+ tex[4] = LoadImage(img.width, img.height, data[1], tex[4]);
+ img.LoadRGB(filename, 0, 360, 296);
+ }
+
+
yuvSwitch = 0;
imgLeft[1] = NULL;
}
@@ -403,7 +411,6 @@ Comm::ExecuteUiCmds(char *buffer)
yuvSwitch++;
- cout << img.yuv << endl;
// Conversion en YUV et stockage
img.LoadRGB(fname, 0, 360, 296);
if (yuvSwitch%3 == 1)
diff --git a/2004/i/nono/src/ovision/convertImg.cc b/2004/i/nono/src/ovision/convertImg.cc
index 111e4a8..d5c6f21 100644
--- a/2004/i/nono/src/ovision/convertImg.cc
+++ b/2004/i/nono/src/ovision/convertImg.cc
@@ -16,8 +16,6 @@ ConvertImg::RGBtoYUV (Img &img)
{
unsigned char r,g,b;
- img.yuv = true;
-
// Parcours du tableau et conversion des valeurs RGB en YUV
for (unsigned long i=0; i<img.nbPixels; i++) {
r = img.tabData[i*3];
@@ -28,6 +26,8 @@ ConvertImg::RGBtoYUV (Img &img)
img.tabData[i*3+1] = (unsigned char)(0-0.147*r - 0.289*g + 0.437*b + 0.5); // U
img.tabData[i*3+2] = (unsigned char)(00.615*r - 0.515*g - 0.100*b + 0.5); // V
}
+
+ img.colorMode = YUV;
}
/// Convertit un tableau de donnees RGB en YUV
@@ -36,7 +36,6 @@ ConvertImg::RGBtoHSI (Img &img)
{
unsigned char r,g,b;
- img.hsi = true;
// Parcours du tableau et conversion des valeurs RGB en HSI
for (unsigned long i=0; i<img.nbPixels; i++) {
@@ -48,6 +47,8 @@ ConvertImg::RGBtoHSI (Img &img)
img.tabData[i*3+1] = (unsigned char)(1-min(min(r,g),b)); // S
img.tabData[i*3+2] = (unsigned char)(0.33f*(r+g+b)); // I
}
+
+ img.colorMode = HSI;
}
@@ -57,7 +58,6 @@ ConvertImg::YUVtoRGB (Img &img)
{
unsigned char y,u,v;
- img.yuv = false;
// Parcours du tableau et conversion des valeurs YUV en RGB
for (unsigned long i=0; i<img.nbPixels; i++) {
@@ -69,5 +69,44 @@ ConvertImg::YUVtoRGB (Img &img)
img.tabData[i*3+1] = (unsigned char)(y + ((0.3455 * (u - 128)) - (0.7169 * (v - 128))));
img.tabData[i*3+2] = (unsigned char)(y + (1.7790 * (u - 128)));
}
+
+ img.colorMode = RGB;
+}
+
+/// Convertit une image de BGR en RGB
+void
+ConvertImg::BGRtoRGB (Img &img)
+{
+ unsigned char b;
+ unsigned char *tab;
+
+ tab = img.tabData;
+
+ // Parcours du tableau et conversion des valeurs BGR en RGB
+ for (unsigned long i=0; i<img.nbPixels; i++)
+ {
+ b = *tab;
+ *tab = *(++(++tab));
+ *tab = b;
+ ++tab;
+ }
+
+ img.colorMode = RGB;
}
+
+/// Convertit une image en RGB
+void
+ConvertImg::ConvertToRGB (Img &img)
+{
+ switch (img.colorMode)
+ {
+ case BGR:
+ BGRtoRGB (img);
+ break;
+
+ case YUV:
+ YUVtoRGB (img);
+ break;
+ }
+}
diff --git a/2004/i/nono/src/ovision/convertImg.h b/2004/i/nono/src/ovision/convertImg.h
index 22dd569..711c934 100644
--- a/2004/i/nono/src/ovision/convertImg.h
+++ b/2004/i/nono/src/ovision/convertImg.h
@@ -31,12 +31,18 @@ class ConvertImg
public:
/// Conversion en YUV
void RGBtoYUV (Img &img);
-
+
/// Conversion en HSI
void RGBtoHSI (Img &img);
/// Conversion de YUV en RGB
void YUVtoRGB (Img &img);
+
+ /// Convertit une image de BGR en RGB
+ void BGRtoRGB (Img &img);
+
+ /// Convertit une image en RGB
+ void ConvertToRGB (Img &img);
};
#endif // convertImg_h
diff --git a/2004/i/nono/src/ovision/imagelist b/2004/i/nono/src/ovision/imagelist
index e69de29..e1c10f9 100644
--- a/2004/i/nono/src/ovision/imagelist
+++ b/2004/i/nono/src/ovision/imagelist
@@ -0,0 +1 @@
+palet.jpg
diff --git a/2004/i/nono/src/ovision/img.cc b/2004/i/nono/src/ovision/img.cc
index e239922..2e5bc87 100644
--- a/2004/i/nono/src/ovision/img.cc
+++ b/2004/i/nono/src/ovision/img.cc
@@ -19,8 +19,6 @@ Img::Img (void)
tabData = NULL;
tabSegm = NULL;
- yuv = hsi = false;
-
}
@@ -37,6 +35,8 @@ void
Img::WriteRGB (char *filename)
{
FILE *file;
+ colorMode = RGB;
+
file = fopen(filename, "w+");
fwrite(tabData, 3, width*height, file);
@@ -54,7 +54,6 @@ Img::LoadRGB (char *filename, int mode, int width, int height)
nbPixels = width * height;
delete[] tabData;
tabData = new unsigned char[nbPixels*3];
- yuv = mode;
FILE *file;
file = fopen(filename, "r");
@@ -62,6 +61,7 @@ Img::LoadRGB (char *filename, int mode, int width, int height)
fread(tabData, 3, width*height, file);
fclose(file);
+ colorMode = RGB;
}
@@ -74,6 +74,21 @@ Img::load (ImageLoader &loader)
nbPixels = width * height;
tabData = new unsigned char[loader.getBufSize ()];
loader.read (tabData, loader.getBufSize ());
- yuv = loader.getColorSpace () == ImageLoader::yuv;
+
+ switch (loader.getColorSpace ())
+ {
+ case ImageLoader::yuv:
+ colorMode = YUV;
+ break;
+ case ImageLoader::rgb:
+ colorMode = RGB;
+ break;
+ case ImageLoader::bgr:
+ colorMode = BGR;
+ break;
+ case ImageLoader::yuv422:
+ ///XXX XXX XXX
+ break;
+ }
}
diff --git a/2004/i/nono/src/ovision/img.h b/2004/i/nono/src/ovision/img.h
index c5c06cb..d1fd4a3 100644
--- a/2004/i/nono/src/ovision/img.h
+++ b/2004/i/nono/src/ovision/img.h
@@ -46,7 +46,7 @@ class Img
unsigned char *tabData;
/// mode de l'espace de couleurs
- bool yuv,hsi;
+ char colorMode;
/// Constructeur
Img (void);
diff --git a/2004/i/nono/src/ovision/imgFile.cc b/2004/i/nono/src/ovision/imgFile.cc
index e1ba25c..3ac34af 100644
--- a/2004/i/nono/src/ovision/imgFile.cc
+++ b/2004/i/nono/src/ovision/imgFile.cc
@@ -41,9 +41,10 @@ ImgFile::~ImgFile(void)
/// Ouvre un fichier
-int ImgFile::ReadRaw (char *filename)
+int ImgFile::ReadRaw (char *filename, int color)
{
ILuint ImgFileId;
+ colorMode = color;
// Supprime l'id d'une image dans DevIL
if (tabData) {
diff --git a/2004/i/nono/src/ovision/imgFile.h b/2004/i/nono/src/ovision/imgFile.h
index 63ac4ae..bb8502b 100644
--- a/2004/i/nono/src/ovision/imgFile.h
+++ b/2004/i/nono/src/ovision/imgFile.h
@@ -19,7 +19,7 @@ class ImgFile : public Img
virtual ~ImgFile (void);
/// Lis une image en utilisant le peripherique adequate (fichier, cam usb, cam)
- virtual int ReadRaw(char *sourcePath);
+ virtual int ReadRaw(char *sourcePath, int color = RGB);
/// Transformation d'un tableau de valeurs segmentees en RGB
void DoImg(unsigned char *tabIn, unsigned char *tabOut);
diff --git a/2004/i/nono/src/ovision/oconfig.cc b/2004/i/nono/src/ovision/oconfig.cc
index 98f8ad9..c91215c 100644
--- a/2004/i/nono/src/ovision/oconfig.cc
+++ b/2004/i/nono/src/ovision/oconfig.cc
@@ -47,6 +47,15 @@ OConfig::Parse(char *var, char *arg)
strcpy(argu, arg);
+ if (!strcmp (var, "Cam_color"))
+ {
+ if (!strcmp (argu, "RGB")) colorAcquisition = RGB;
+ else if (!strcmp (argu, "BGR")) colorAcquisition = BGR;
+ else if (!strcmp (argu, "YUV")) colorAcquisition = YUV;
+ else if (!strcmp (argu, "HSI")) colorAcquisition = HSI;
+ return;
+ }
+
// Verifie si l'argument est un nombre ou un nom de fichier
if (((argu[0]>'9') || (argu[0] < '0'))
&& strcmp(var, "Source") && strcmp(var, "imgPath"))
@@ -168,22 +177,8 @@ OConfig::LoadNNFile (char *filePath)
// Parcours des lignes et analyse
numNode=0;
- // Recherche mode de couleur
rewind(file);
- if (fgets(ligne, 50, file)) {
- switch (ligne[0]) {
- case 'Y': colorMode = YUV;
- break;
-
- case 'R': colorMode = RGB;
- break;
-
- case 'H': colorMode = HSI;
- break;
- }
- }
-
// Recherche couleur des balles
if (fgets(ligne, 50, file)) {
cut[0] = strtok(ligne, " \t\n");
@@ -236,14 +231,7 @@ OConfig::CreateNNFile (const char *filename, int mode, int nbOutput)
FILE *file;
file = fopen(filename, "w+");
- // Espace de couleur (RGB, YUV, HSI)
char buf[50];
- if (colorMode == RGB) strcpy(buf, "RGB\n");
- else if (colorMode == YUV) strcpy(buf, "YUV\n");
- else if (colorMode == HSI) strcpy(buf, "HSI\n");
-
- fprintf(file, buf);
-
// Couleur des balles
sprintf(buf, "%i // Index de la couleur des balles\n", groupColor);
fprintf(file, buf);
diff --git a/2004/i/nono/src/ovision/oconfig.h b/2004/i/nono/src/ovision/oconfig.h
index 1fe43cd..cccc156 100644
--- a/2004/i/nono/src/ovision/oconfig.h
+++ b/2004/i/nono/src/ovision/oconfig.h
@@ -30,6 +30,7 @@
#define RGB 0
#define YUV 1
#define HSI 2
+#define BGR 3
/// Constantes pour les sources d'acquisition
@@ -49,6 +50,7 @@ class OConfig {
int colorMode;
+ int colorAcquisition;
/////////////////////////////// RESEAU DE NEURONES ///////////////////////////////////////////////////
diff --git a/2004/i/nono/src/ovision/ovision.cc b/2004/i/nono/src/ovision/ovision.cc
index a80d62f..63c55e7 100644
--- a/2004/i/nono/src/ovision/ovision.cc
+++ b/2004/i/nono/src/ovision/ovision.cc
@@ -4,13 +4,49 @@
/// Constructeur
OVision::OVision ()
{
+ oconfig = NULL;
+ img = NULL;
+ segm = NULL;
+ group = NULL;
+ map = NULL;
+}
+
+/// Destructeur
+OVision::~OVision ()
+{
+ delete oconfig;
+ delete img;
+ delete segm;
+ delete group;
+ delete map;
+}
+
+/// Iniialisatoin de toutes les classes
+void
+OVision::Init ()
+{
// Initialisation des classes
oconfig = new OConfig;
img = new Img;
// Initialisation camra
Video4Linux::ColorSpace cs;
- cs = Video4Linux::rgb;
+
+ switch (oconfig->colorAcquisition)
+ {
+ case RGB:
+ cs = Video4Linux::rgb;
+ break;
+
+ case BGR:
+ cs = Video4Linux::bgr;
+ break;
+
+ case YUV:
+ cs = Video4Linux::yuv;
+ break;
+ }
+
v4l = new Video4Linux ("/dev/video", cs, 60000);
v4l->calibrate ();
@@ -27,9 +63,6 @@ OVision::OVision ()
segm->BuildNN (oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
// Calibration des longueurs
-
-
-
space->AddSetupPoint (314, 6, 100, 400);
space->AddSetupPoint (237, 224, 100, 900);
space->AddSetupPoint (275, 113, 100, 550);
@@ -42,21 +75,12 @@ OVision::OVision ()
segm->CreateColorTableFile ();
}
-
-
step = 0;
-}
-/// Destructeur
-OVision::~OVision ()
-{
- delete oconfig;
- delete img;
- delete segm;
- delete group;
- delete map;
+ std::cout << "Chargement OVision ................ OK" << std:endl;
}
+
/// Prends une image avec la camra
void
OVision::TakeShoot ()
diff --git a/2004/i/nono/src/ovision/ovision.h b/2004/i/nono/src/ovision/ovision.h
index 84ffc23..306abd3 100644
--- a/2004/i/nono/src/ovision/ovision.h
+++ b/2004/i/nono/src/ovision/ovision.h
@@ -52,6 +52,9 @@ class OVision
/// Destructeur
~OVision (void);
+
+ /// Iniialisatoin de toutes les classes
+ void Init ();
/// Prends une image avec la camra
void TakeShoot ();
diff --git a/2004/i/nono/src/ovision/segmNN.cc b/2004/i/nono/src/ovision/segmNN.cc
index 5667e75..05c8564 100644
--- a/2004/i/nono/src/ovision/segmNN.cc
+++ b/2004/i/nono/src/ovision/segmNN.cc
@@ -67,7 +67,7 @@ SegmNN::WinnerOutput (unsigned char *x)
tmp = node[j*3+k]-x[k];
// Si on est en yuv ou hsi et que c'est la composante de luminosite on ajoute un poids sur son influence
- if ((img->yuv && k==0) || (img->hsi && k==2))
+ if (((img->colorMode == YUV) && k==0) || ((img->colorMode == HSI) && k==2))
output[j] += (int) oconfig->nn_influ_lum * tmp * tmp;
// Sinon calcul normal
else
@@ -146,7 +146,7 @@ SegmNN::FindColorNN (unsigned char *x, bool testOutputMax)
tmp = node[j*3+k]-x[k];
// Si on est en yuv ou hsi et que c'est la composante de luminosite, on ajoute un poids pour affecter son influence
- if ((img->yuv && k==0) || (img->hsi && k==2))
+ if (((img->colorMode == YUV) && k==0) || ((img->colorMode == HSI) && k==2))
output[j] += (int) oconfig->nn_influ_lum * tmp * tmp;
// Sinon calcul normal
else
diff --git a/2004/i/nono/src/ovision/segmTable.cc b/2004/i/nono/src/ovision/segmTable.cc
index aa252c2..706cad1 100644
--- a/2004/i/nono/src/ovision/segmTable.cc
+++ b/2004/i/nono/src/ovision/segmTable.cc
@@ -38,6 +38,8 @@ SegmTable::~SegmTable ()
void
SegmTable::DoColorTable (bool testOutputMax, char colorMode)
{
+ std::cout << "SegmTable:: Creation de la table" << std::endl;
+
unsigned char x[3];
delete [] colorTable;
@@ -79,8 +81,9 @@ SegmTable::GiveColor (unsigned char *x, bool testOutputMax, bool indexProcess)
void
SegmTable::CreateColorTableFile (char *filename)
{
+ std::cout << "SegmTable:: Ecriture de la table" << std::endl;
+
std::ofstream file;
-
file.open (filename);
if (file)
@@ -101,6 +104,8 @@ SegmTable::LoadColorTableFile (char *filename)
delete [] colorTable;
colorTable = new unsigned char[COLOR_TAB_SIZE_TOTAL];
+ std::cout << "SegmTable:: Chargement de la table" << std::endl;
+
std::ifstream file;
file.open (filename);
diff --git a/2004/i/nono/src/ovision/space.cc b/2004/i/nono/src/ovision/space.cc
index dbcc50b..92b4e2b 100644
--- a/2004/i/nono/src/ovision/space.cc
+++ b/2004/i/nono/src/ovision/space.cc
@@ -117,8 +117,6 @@ Space::Setup(double a, double b, double c)
FindCoeffLine (65, 9, 118, 180, a1, b1);
FindCoeffLine (198, 10, 192, 180, a2, b2);
- cout << a1 << " " << b1 << " " << a2 << " " << b2 << endl;
-
// Allocation de la mmoire
delete []tabY;
tabY = new double[imgHeight];
diff --git a/2004/i/nono/src/ovision/test.rgb b/2004/i/nono/src/ovision/test.rgb
index d90c62e..509a0bb 100644
--- a/2004/i/nono/src/ovision/test.rgb
+++ b/2004/i/nono/src/ovision/test.rgb
@@ -1 +1 @@
-z~zv{~{wsuxz}|||zy{~~~xxz~zv{~{wsuxz}|||zy{~~~xx}}y|~{vm|etbp~~~`lyz|amy|cny}bmy|bmy{~^jw{Zgu{^ky~cp}}an|_m|}~^lz}^kx~_mzao}ao}~zzbp~|zznnar}vll`t|zrjj[l~~~{rjjVeu|}{~z}sjj\iu|~|~{skkclv|~~~}}}~~yrllly~}{skkv{}sjj|~{}sjj~{}|~tjj~~}}rhh~{}qffw}rhhju~}~tjjeq}~~tjj`mz}~tjjbmy~zrkkdnyvqllbp~{riiar~~tgg_p}||~~}rgg^n~}y~z{|zyphh_p}z|~~}yungg`r~}|{z~xrlggao~|z~|wskbbbmy~~~z~ywui^^amz~||zxmbban{}{qgg`m{~~~zvnff_m{}~}~~~~~xrlff^m}}ytnhh]n{}{vpjj_n~~ytpkkan|}~~}xspmmao}~~ytnhhap~~}z~zulcc`o~~}}ytldd`o~~|xtmff_o~~~}|{z}{wslee^p~}}|zyxxxywu{}{vrkdd]p}||||}~{yvsw{}~}wqjdd\p|||~zvrsu{wpjee]o|vpp_o||_n|`ly^m{]m~\jx|[gsw|`my}fsl{r{{~xspmhdba``][\^]]`ciou{woljihc_^^\ZXVWXYZ[]afjnv~ojfb^_aaabd_Z[\XTRQQRUXWWZ]_bfkhejpށwoheabbegfdcb]WXYUQONOPQSRRV[]_acbafkryta\X]b_]bgjnkhda[UVWRNMLMNNONMSYZ\\\]^bgdaeju{kaWVV[aaafklnkic^XRQQPPMKKLMNNOSVZ^^^bfgifdddjo~aXPONQTZacfjoooljb[UOMLORNKJJKMORSTZa``gomkigc___diy}gQNKKKOTW[^adfgifc^YUPMJLNMLJIKNNORVY\_afllljiea\X]clvԀgOzHBzDGGHNUUUY]]^`c_\ZXURMIIJKMJHKOMLRYXX]cfikmlkgcZQW]_bktz^ߐS{IzCׂ>|A܅DބEFKQRSVYZ\^`_^ZVROLJJJHGHIIJKLOSUW[`bdbaaa]YUPRUX[`f{oUۄ<r?tCq>v:q>zBvCۂDކHMORSUX[\]_aZTPMLKJJFBFJ}HFILMNRVZ^^_ZUVWSPPPNMPTVXak|tT{Er7p9t<p:v8t;|?y?~@ڄEߐJKLOSUXXYZ\XUPKڅI܊GޅF݄E݁CރB߀E߃H~FEHKLMPSUXXXTQQQONMLKJLOOPW^jwl}Sv:g6l2j3k5g6n7p9v<u<{=~BӅHكGۊG݉LߒQSUUUVWVVފPلJxF~C~B|A{A|BzD{FsE݀DGJKLNPQSRQONLKLMJHGGHJIIMQX`qxߏSwDl6g4m3h2g2g3m4o8w<t;|;{@ȄFDуCԇHӕMӍL֓LِMەNݒMܑL܈KׅJҁGЀEwBz@w@t?v?{?w@|BxAց?@ցBցD݉GHJKLMOMKHFFEDCDDFGGFHKOTbpՅޘ_:g6f2_3e4b2e0b1h2i7l<j:p9o>uDsBx@|DȁI~F́D~FЂHЀEB{@{>u?t@k?q>q>p>n=q<m=q?p=v;u:v:u>yBvCE}EEINKHEBw@}>>?z@B|CE{DDDEGIS^u޾cKn4f2i1c1h2c1i0d2k4f5f6h6m6l:q>o=q=q?uBtAu@s?v?t=s<t;x:r;r=l<n;m9p8m8q9l:k;l:r8o7p7o:q>q@vBvA|@zB}EyCwBy@{?v>y=x<y;x=?z?>|?@ABDFNUeuoПBf8d.Z/`1^0`0Z0]1]3b6a3b0e1e3e5i8h9h:d:j;j<l=f9k6h6k6j6m6k8j;f9h8e5h2e4i7j7g8f7g6e5h4f7h;i=m?i=o;n<q=n<p<q<r=o<q<o9p7p:s=p:u8p:{=~>?ADHMU^}zzܶap<g4e-^-_.\.a.Y/W0X1_2]0^/]0]1_2f4c5e6b6e7e7k8e7i5e4i4e5h6e7f9d7i5d3g1c2g4e5d6b4b3b3e4b5c6g8m:f8i6j9k<j;m;j9m8l8p8l8i8l7p6o6v6r8z:x<{=}>>CIOUl|vvpʀSo7c1a,],[,S,X-R.T/P.X.X.X.T/V0U0\0[1]3\3]3]3^4[4^5\3^2Y4`6]7^8[5`3\1_0Z0_1`3_5]2^0\2^4\2_1c3b5Z3`2g6f;e;e;_7e3d3h4i6h9g4k0i2k4h6m8m:t<x:}9}?EIM[izvssۻ^Hj3c0b-\+`*X*[+U+Y+V+Z+W+V+T+U,U-Z-X/Z2Y0V.W.X/X/Z0X/Z/[1c2\3Z3Z1b/^.`-Y/[1Z0]0[/`/\/[0[.]-^/_0Z0Y/]2c4`5c5_2f/a0d2d2j2g0l/g1h4f3e3j5s6u7{8{;ك?߉BEOZ~|uoo~ڳLu>i0^/\.T+Z(U)V*Q)U(U(W)T(W(T(T)Q*V+R.X1X-V*R*X*V*W+S,W-X.[/W/W/Q-Y+Z+Y+R.U1Q.W,U-Z.[-Z,Z+Y*Y+X,W,W-S-Y.U/Z0U-]+Y.\1Y.`,b-c.b1e4e1d/d0l1p4r7s8z:{;=DLk~~~tkk}ؠL|=j.b,]*Z(_&X'Z)V(W'U(Z*V*^*V)W'U)\+W,].Y-Z,W+b*Y+\+W+W+W,Z-W-Z-U-Y-W+X)U+W-T,Z+V,Y-W,Z+V+V,V+T+V,[,W-[-X-^-Z,c+Y,[-Z,],\,^-`.f/c/c.e/l0k2l4o6w8y8ڄ9@Ga{|zrkk|׭Lr<k-c*]'X&X%S&V(W'V&P)R,M,R-Q)S&P(U+R+V,V-U/P-X+S+W,W*U)V*V+S+V,R-T/Q+U(T(T)P)T*S+T,O+T+Q,S.V,V+U+V,T,X-U,X+T+W+P*Y*Y+Z,V,[,[+`+`,`.c/f0e1g2f4o6n6|6ق<CWk~{vpkk}ףN?m0d.]+W(W%T&T(U([(Q)Q+N*M)P(U(Q)W*S*T*S)W)T*\,T+W*R)S)R)V(S+[-T.V.T+W(T'X'S'T'S)W+S+Y,S+Q*U*[*V+W,V+]+X*[*W*W*X*a+Z+]+Z+_+]*_*^,]/a/f/c0h0k2s3s3|4΁;ߓBTg~wohhڿQBt4d2^0R*V%T'T)P)R*K*O+N(P%O'P*K)P)O(P(L&P$P(R-L*Q(J)M*I(N&J*P/M.R.T+R)M'R%P%Q%O(Q+P,R-S*R'U(V*R+T-P+T)S)X*X)X)X*X,R+X*Y*\*^*^*^-^0`/_/Z/f/k0n1p1u2t9܌ARdyoeeaJz4l1h.^+](Z)[*U)U(R(U)S(W'Q&R&O&Q&P'R)O'P&O(Q+P*W*P)Q(N(R(N*P,M+S*Q)P)Q'U%Q%S%R(Q*O*M+P)R'S'X(T)X*R)S(V']'X'['W)V+W*Z*Z+],\,]-]-^-_-_-b-k,j-l/n0v2z:؇AP_~wnffq̍S}5j1h-a,^,\+X+T(U&S'U(S)R*N&O"P"P#N&P*Q)O(N(N)M+Q-O*N'L(N*M*M*F(L&M(O*R'P%M%Q&W(P*N)N)P(P(P'R&P'R(P'S'U%U$Q%V&T(W*Z*Y*Z,Z/Y/Z0[-]+a+a,d+e*f+i-i0s3x:׈BN[|}~|{~|unhhf†;v5m/d,a*])V(U'X'U)Y,S)R'N%O#O$R%P'Q(O'P&M'L(N(S)O&L$K'O)M)Q)K(K'L(N)N'L&L%N$P&M)N'M&N&Q&O%P%P'P)P(T&S&T&T&Z&V'Z(X(W(Y*X-X.Z/Z,]*_,a.b.`.f-l-n0v2z8փ>O_~~xqkkyγB}9q1a-d)a'[%S'X)S,V0P*Q$K$N%M&O(O'O'K&N%L&M'M&P%N#K"F%J)J(N(M(L(K(L(M'M'J%O#N%P(R%N#K#M$K$P%R(P+L(S&R'S(R'U'P'W'X&Y&[(Y+V,Y.Y,]*_-d0f1e2f0k.m0w2x6ێ;Od{uoo[G|3p/m,f)e'_(d*\+]-W)Z%R%S%O&O'Q'T'Q'T(Q'R&P$S#N#N"I%I'K&S$M&N'L'M&M'T'O%V$O&S(P&N$N$O%N%U&R'R)R(['U'V(U([)X)[)Y(]'[)^+[+^,\+_)a-j1g0h0i/n/r2ā4Ȇ:?[w{skku٧U5v2p/g,f)a*b,^+\*X(V&Q%T%P%R&S&T'T)U+U(S%N#O"K"K#I$J&H#M!H$L'K&J%G&N(K&M%H&O(M'O&R&O&J&P'R'R(Q(V(T(U(S)Y+[+[+W)Z(Y)\+\+]+[*^)\-e2f0i.h/o1n4Ȁ7ҍ=Dg~~}|qgglӔK>y1n-l*f*g*a)_(\'W%W$]"T#W%V&V'V)Y*U'Z$Q$P$M$M$L$N%N$S"N$R%M%L$J%R'M%M#M$U%P&R&P&Q&O&R'R'V'T&Y&V'Z'X(])[*a+\)^&\'^)])b*_*c*c-i0l/q-q/z1{5̆9ݥEQ~{xxyyzwuutuwtqtwtrnjlnopqrtwtrpne]]aJ4m/n+f*f)`(b'b&\%W"W L"T$X&U(U)T*O'T$O%P&N%M%N%N%O$P$K$N$K$K$E%M&M#N!M"Q#M%P'N&Q&R&R'Q&T&Q%V%S&Y'X'Y(V*\,\(^%\&^'[(^)^*d,g-l/p.q-r/z16ؚ;L^}{|}zwsomllmjgdaabeid_chfd]VX[_cbbeigeb`YSSaB~8{/o,l)g)i*b)b(\%\#V#X#V%S&U&V'T&Y%R%T%P%N%P$P$P$U%P$R#O#R#L$R&N%R%Q$X#R$U%Q%T%Q&U'T'Y'U'\&Y'a'[)[+Z*]*_(e'a)c+_*`)b+h.j.q.r/q0u25˒?Hhzuuvxz{|zyxwuswzxvusuwvvsponnomlkijkmpmjmqnlighjmqppsvtromd[[wPB~4r/n*g+g-\,_,[)[&X$Y#W$W%W$V$S%T&L%R%S%S&V$Q#N$Q&O$P"N"N#I$M&I(N*N'Q$Q$R$O$R$L%Q'Q(S)N(V(U([(Y+\.[+](^(a)a,a/^,b*d-g0h/p.w0v3u6Ԋ:HV}{ywusqppmjt|ytopromoqppooliijgdefdccdfijlllkjhgjmmnmlnqsusqpppqqrrrsuvwvuwzwtvyyy|~}zodd}aE9s.n-p-d,f,`)_'[&`&[&^&Z&Y%U(Z,S(U%R%U%T&R(P(S(P&R$O#O#N%S'N)P+O(M&R%T$S&Y(R'S'T(V)T)Y*X)^)\)b*\)a(`(c)b*e,c-h-h-j-k.p/u2|4̇;C]w܂|zxyyuqonjgqzzyz|~}{|{zzz{}{zz{|}|{zyyyxxy{|}|||}~{|}|||||||}~~|~{|}~~~|rhhVĊD3q0l-`,c,a*](W(\)W(\(['Y'P,U2R,T&N%R$T(T-P+R*N(R&P$P#O%Q(N*Q-Q*R(V&U$R(U,P)T'V(V)U*X,U+Z+Z([&R'])_)b)`)d*c-i1k-l*l-t1t3҉6ߔALruvxxxz}}}||}zvzxquyz|||zx{~xrolhemvxzvmmw`ɓI=r1i.f+b)_(](c)^(c(_(a)W*X+V([&U%T$U'])U(W'T(X)S&U$R%U'T(U)T(V&U&Y&V(Z+W)Y(X(Z([)`*\*^+])a(\(e(c(i)f*j,i-p/n.o-u0ā3ʌ;ޡDZq}zukk|`ՕK6o0j*e)b)[)_)[(_(`)]+U'W$T%X'X&U%R%U&P%T%T)T-R)R%O&T'Y&W&U%T%R&U(T)X*Z*Y*W)Z(^(_(`)`+^*_*Z)b(b(e)f+j.h.o.n/s1z3ь6DRtuiiweԱSDp6m/j)e*f+`*^*]*^+Y([%X&[(X&Y%W'U(T'W%T'T)T'U%T%V&X&['U&T&S&V&V'[(Z(\(X'[%\(^,a*f)_*e+a*j)e)f*h+p-m/v2r3v4Ƈ9ޛ>Oaz~rffqYBu6t*i+h-d,`,[,[,W)Z'Y([)V'Y&\(X+U(W&T&W&V&V&V%U%V'X)Q(S'R%U$U%X'W'Y'U%[#\)^0b,_(V*^,]+d+c+f+e,h-g1p6q6Ʌ7֑>F[q}}~|occ}vgXJ<z6m0h.f+`+_+\+]*])c)[)Z)Y)Z)X'^&Y'^(Y'Y&U%T%V'^)W(U'U'Z'W'Y'Y(\(Z'`&\)^-_+_)\)c*`*f*d+k+e-f.l1u5>ҜHR[hu}}ynbb~z{|un^OËA4j/g+c+`+^,^.[+])Z*Z,V*W(U'Y&W(Z+W)W'S&S%P'X*X)X(S)V*T)X(Y)Y*X)[)Y)[*]*\+[)\(Z)]*\+b,a.j0o2ē4שGZequz~~{wlbb{uh[NB:i2f.`*^+c,])\'Z(^(Y(Z'X(](X(\)W'Y&V&X%U'])Y(`&Y'Y)V(['X'Z'Y'^(Y)[*Z)\'X'Y'Y)[+]+b,l2r8<@MZdnsx}~~~{pee{|qg\QE9n1h)Y)\*[(X&V%Y%Y&W'W)V+R)V'P&T&T&S&O'T)Q'V%X&U(R'U'S&V%V&V'R)T+T'T$S%V&W)Z,],m,|6@FMT[clqvx{~~{}tii~yof[QɷG>7{0l.Y-Y*T&U&Z'U&T&S&T'T&[&S&U'Q%Q#P%T'Q%R#Q$S%Q%U&V%W#S#T#Q'R*P&P"P#}W%zW'|Y*~g-{18?E¼KPU]flrx~~}~~tjj~zvnf[QJC=74m1|],xX'tS(sR)sO'xO%}N$}Q#}P$R%N&~O({M$}N O"~P%|P#}M!~J!}N"}M$|Q&{Y$zQ"yK!xM wM%tM*rK%pL!nG"pS$qU&v^)zm/x6:>CILOW`gnw}~}tllztkcZQIA<63}z0sf+m^'hU&eM&bL$lK"vM!sR!qL"sO#uJ#rM$oJ"rK vI!sM#qJ"rJ!sI pQ mJ kL!iK!gL!eHdKdI!bJ%`L#^O"\P#bY%iY&p](wk.w469>D¶GIR[dmyzsll{ri`YRI@;6~t2vm/nd+i^'eY%aP$]K!aKeJaH ^A!`E"a@!_E ]F `D!c@!`D!^C!]D!]B ]E\?[BZ<[C \?[G[C\J!]M"_Q#bR$hZ&n\'se(yn-z334:@BȼDMWal{}xrmm|skc\VME=~6vr2pe.jc+f`(bY&]Q$XQ#VN"TK"PF"LE!MD!ND!MA"LC N?PA M@ KC IB HC!JB!LB KAKDOF!SJ SP SN"VO$ZS%aX&i\%nd%sg)wn-|u/147=BEȸIR\gs~{rii~umf`ZRK@6r2wl.nc,ka*h\'f[%e]%`X&\P%ZO$XL"WL!VK"TK$SG!THUFSG RH RI SG"TJ$VF"WL!YP![S"]U#_W$bV%eZ'h[(ob)ve'ym%}n,v3v1/5;@õEзINWamz~rff|smg`YTNG@:~y5st0qh+of*pe)re)ke)e]'d]%dW%aV$^U$\Z%[U#[V![R"ZQ"YR$[T&^T&_Y%`V$dY#h\#ha$ha%lb&qe)ti,wl,}s,u,,1678>EJPTX`gqz~tjj{qmiaYURNKC<4,p,v-m-xm-qe*od'm_'k_(jZ'i`&h`%g^%g\%f]%f^)i^-l\*la'ma&pd%sg&tl'vm'{o(t,y1z0/}147:>ŻBHOU[_chnt{~voo|tnic^[XURLGC?=;98~4zr1vt/vp.wq/vn0un.ti+sk+si,sl-vl/zm/zq/zr.|q-~w/|0~0y/5;<>@CĿEHLQV\_cgkqw|sjj~wpifc`^\ZVRRRMIFD?;858;6223~22}47668:87>EIMPSTV[aeijkosyzpff|vpnmjfb^]\[[VRRQOLKJMPKFILLLNOOOQSSSW\`cdfghmquz|~~{qgg|wwxsoicdfed`\]_^^^_be_Z_efgghhhjmnoqtwzyyz{~}|rhh|vqqpoonmmnnnopppnmqvtruxwvvwxy}~zrjj}{zz|~~~~~~{}}xrmm~{~xqjj}yphhzqii|sjjzpff|~~|xmcczpff|sjj}ss}}rkyds|ap^m}`n}bo}]kz~Xgw|[k|^o}^o~_o}{}_n|~`ly_m{~~_n}||||}\jxy{Zfsvz|Zfrx~ZfrzZfsx}Zgtvx}Wgxyz|~~}Uh||}|{{|~~}Vfvy{{|zx|}{~~z~Wdquz{}xty}|zx{{x|Veux|{{ywz}~~}|}~|z{{}~Vgy{~|zz{{|~}}}zw{~||}~Ufwz~zwy|{z}~~}{{{|~}|~Uevz~yuy}{y|~}~}z|~}}}}|}Vetx{wtwzz{}|y{}zxz|}~}Xesvyvsuwz~{vxzxvwy}~Vcotyxvvwwwz|yuwyxwxy|U`lszzzxwtquywuvxxxxy{~~}||}~~~~U`kpuvxxwusw|ywvvwyyzzzz{|}|{|||}|{zz}V`kmpswwxvuz|ywuwz{|yvutw{zz{}||ywwwy{{z}Xbmoqqrtwvux{yxwvvvx{yxvux|{{zzz{yxz}}~~||}~{y|Zepqromqvuuvxwwwwtrvzzzxvy}}}zwy{zy~~{|}}~{yxxxy|~Xdppooprtvwxxxwwxtquxy{zyz{{|{z{|||}}~|xyzyx{Vcqompsssvzyyxxxyuqtwy||}{yz|}~}}~|z}|xz}zx{Uboopqsssvyyyyxxxvux||}~}{{|{{{{zzyy{}|{|}~|{{{{}Uampsstssvyyzyyxwxz}}||zyyywvwxyzxwwx|}z|~~~~T`lossstuvwwwxxvtvx{~|{|~|{{{|}{zyxz||{zyyz{}~}|~~}~}T`losssuwvvuuvxtqtwy{yxy{zzzz}~{{{~}|{|}{y{~~~|~~{}S_kmprsssstuwvvuswzyyz{ywy{zzz{yxy{|}{yyy{|{yz|~~~~~~~~~S^jlnqtqopruywuuvz~zw{ysw|{zxvuux{zzxvwxz|{zzzz}~}||Q^klnpsqoqsuwusuwwwxxxywuwz{|ywvuwxyzyxyzzz{|||~}{{|~}z~P^lmnprqpruuusquyuquzvsuwxy|{xwvvvxzzz{}zx{~~}}||zy~~y~Q`nnnqsqoqstvtruyuqtxusvyxxyzzzxwwxyyyyyzz{}~}}}~|y}~Sbqporuqnoqtwusvzuqtwusw{yxwvy|zxy{zyxxxx{~~||}~z|~R_lnprtqoprtvutvxuruywuvxyzxvxzzzz{ywwvww{~~}||{{|}|{|~Q\hlqrsrqrstvuuuvtsw{ywvvy|ywwxz|{{xvuuvw{}{{|zyyy{}}~~~}M[jnrqqrtssstttvywuuvwywuwyxwwxz|zxwvvwwx{~|{{{zyyyz{{|~}~J[losqoswusssssw|ywtqv{wtuwwwwxz}yvvwxyyz{}||{zyyyzyyz{}||}~~M[jotsrsusqrsstuwvtsruywvxyyzyxyzzzxwxzzz{|}}}|{yyyyzzz{||}|{|}}~Q\hnuuuttrpqstutsrrrsuwxyz||}zxxx{~zwy|{z{|}|zyxy{zywvy}|{{{|~~~}||S]hmsrpqrqqqrrrrsrqrtuvuuvwwxwwxyyyxxyzyxyz{||}{zzzyyyywvxzz{zz|~}}~~~U^hmrolnpqsrqpoqtrpruuvsqqrrstvxzwuwyxxwwwxyzz{{{{|zxyzxvvwy{zy|}{~S]hlqnlmopqrrqopprsrqstttrqrsuwvuwyxxxxyzyxxyyx{~{yxxvuvwwxz|{{{{{{|~Q\hlqnlmooprtrpnmrwrnpsuwtqrsuxtqw}zxxy{~{xxywv{|wwxtquyyy{}}}zxz|{{~~Q]ilpnmnpooprqqpoqtrpqrsuuusqsusruywvxzyyxxxxyyz{xvwxvsuxwwuty~{y|~~Q]jmponprpnoqqrqqqrrrqqrsvzupqrrstuttw{wtvxxxz}yvuuwywvvwvuplu}{~N\ikmlknqqqpoqsrrrrrrstsqrtrpqssstvwxwvwxxxyz|zvvvvvvuuuttrqz}~LZiijiimqrtqnqtssrrrruxtponopruttuwy|vqw}zxz|~|wwwuttuttssuw~}}}N\jhfhjkmmnnnopqrqprtuwusqnpqsutsuvwx{zzyxz|{zxvvwwwwwvuxz~}~|z}~Q^lgcgkjjihknmmoqonrvvvvwsoqstvtstvutyz|xtvxz}yvxzyyyzyx{~}y}|wz~~~~NZfgijljikmmnnnopooruttvxsnqtuvutuvutvwxwvvvwyxxy{zyxxxxz}~~}|{~}y{~~~LVahonnkhmspnopoopqsusruysnrvvwvvvwutssssstvxvttuwz{|zywvwxz|{zzz|~|}~~~KWdhlllkjlnmmmmnoooqsqoswrnpstvtrrssttttutstutsttwy{|{zywz~|{|}|z{|~{{z{}~JYhijjkkljikmkjlonnpromqvrnopruqnoprttuvwtrrrrsstvy{}||zy~z}~{{{}}{ywy|||~~~L[iklkkjjlnopnmpsqoprporuqnprtusqqqsuuuuvutuvutuuuuwzyyz{}|z{}{z|~zzzz{{|}}|}O]kmomkjintssrqtxtqqrqqsuqnquuvuutsuwvuuuuvxzxvvwtqtxwvy}{zzzyyyy~z{}|{{|zyyz}}}}OZfhklmljnrpmprstqnoppqqqpooorvvvuttusrrruwxxvtttrqtxxwy|zyxwxyz|~~zwy{zyyy{|{z|OXadhlpnlnqlhntrpmklnprpnopmjpvwxwvtsqooptyxwusrqqquyyyz{zywuwy|~}zxvtwzxwww{}z|~}NXcehkonnnnlknqonmlmnnomkmomjnqrssstusrqquyurrrrrstvx{}}|yuuuwy{}||ywvuwyxxxy{~~~~~MYefhknopmklnnomlmnnnmmkilomklmnoopswvutsvysmoqrtvxxx}~xrtvxzz{{{ywwwwxxyz{{|~LXdgiknmmmllknppponnnnonmnpnllkmopprtturpsvtqrtsrtuwz{|||xttux{zzz{yxxyyyxxy{|~LXdgklnlklnkimrstqonnoqqrqqonljmppqqqsuqnqtuvvwtqrsw|ywy{xvuux|{zz{zzz{{{ywy|~OZeimllkkkkklnqrsqonnqtrpqsqponopqrqqsttssttutsssuwyzzy|zuvvy|{z{}{z{|{z{|{z}S]gkoljkljilopqqrpoooswrnqutsrrqqrsrrstvyvtttrpsvy|zyz||uvxz}|{}}{|}{z~}y|R\gjnljlomknpnmnooooosvsqrsrqrsrrrssrssuxxxyzwtvxz}{yyx|zvxz||y{}zxz|zx}}Q\gjmkjnspnprmikmnpppsvutrqpprutsstssssuwy|~|xy{|~|zwux{ywy|~|wy{xux|yw}MYfhkjjjkmpqspmnoprstsrpmopoorutsrprsstvyz{zzxvvvxywtwyxxwvwy||xyzyxyzxw}IWegiijfcjrstrqqqsuvxsokgkponrvutpmpttux|{zwuttsrsurov~yuuuvw{|yyz{|zyxw|}{yz|}}KXdhkjjgejprtqooooortrpnlnpooprrspmpsuvwwwwwwvuttttsrtwvvvvwwxzzzzz{|{yyxz}}~}}~~NYdinljihknqtqnnnljmqqqqrqqppooprpnpsuxustuwyxwvvuttusqtwwxxxvux|{z{}{zzzyx{~z}~}NXcgllljikmoppoqrolnqrrqppoopppooooqttuuuvxz|xuvvvvtsrqsvx{xvxz{{{{}~{xz}||~}~~}}~~}}NXbfklnljkmmmoqtwrnprstqonnopqrolnprutsuwy{}ytuwxyuqqqsuy~yuz}{|}~{v{~~|}~~|~{{MWbdfilllmnoppprsolosturonnoppqolorsttuuuvx|ystutsrrrrstvywvy|zxz{}|y|~}~{|}}}~}|}}MWbbbfjlnnoqsqpppmjouvwsooooppqomptttuwuttu{yrrspnpsssssstvxxywvxz|~}|}|z}|yz{}||}LU_bdeghiijlmmnnojflsturpnmnoqspmorstttsrsux{wstvsqrsssrrqpsvxzxvy||||{|}zw{|yz{{{}}|}~||KT]bgedddefghjlmnhcjqrsrqnkmoruqnoprusrqpsvvvuuwyvtttssrqomqux{ywz~|{{{{{wty|yz|zxyz{}~~~zzLV`cfedeghihhkomljhloopnlmnooqssrqpsvuttsvyxwusvywvvwvuttroqsuwxy{}|zzzyyvsyzux{zyz{|}}}~~~NXcdeddgkkljhmrnklnnnmmjhmrqpqrtwspswwwwwz}zxtquyyyyzxwwxurrrstw{|}{zyyxxusyxrvzz{|}}}|{~~~~~{MWaehgfhklmjhknmllmmmllkjlmnnqstutsuwwwvvz|ywuwyyywtttuwustvutvxz|{z{|ywutwyvtwzyxz|||||}}|~~LV`fljhiklnkhiklmmmmmlklmkikmqutsuwwxxxvu{~{zzzzzztoprtvutw{xuuux|{z|zvvvutuvxzxvy|{{|}}~|z~}}~{{{{{MWafjiiijkljiklmmmlllmomlkklmorqqsvvwwwusvzxvvvvvxzuqrsssttuwvvvwy{zy{}yvvwwxyz{|zxz|{{|~}||}~~~~}}NXcfiijjjjjjklnnnmlkkosollmmnnoopruvwvvsqrsrqqrrsvzvstusqsutsuxxyz{yxz|yvwxz|}~~|z{}|{}|z}zJWcccdehkkkjiklmnljjklnmlmnnooopqqqqprtrpqqqqqqqrstttuvutuutsuxxxxyxxyyvstuz{xyzyy{~~~|zz{~~GUda^_afllmjhiklnkhikjijlmoopppqspnljnsqppppqqqqqporuvwwxwvutvxwwwwxyxwspqrzyqsvwy|{vy|DSa_^`ceghjhgggikjhiijlpuroooopppnlllorpnnnprpnoqomorrruwvusruyxxvuvxy{vrrqw}xttuvxz|}~|z{|~~~~~~BP_^^aecbdgffdcfiiihhkowwponoponlklnprolllptplnqnkmponrwutrquzyyvtuw{zusquyxwutuwxyz{}~}}}{z|~~}|~~}}EQ^]]aedcccefedefeefgikrzuqponnnnmlmmnpnlnopppooomlnpompttttsvywutruxxxvuuvvuuutsuwwxz{zzzz|}||||~}{{|}~~{{HR]]]aeeeb`cgffedbacfghnusrqpnmnonnmmmnmmpspmpspmmmoqomoqsuuvwxurqquzvrsux|wrrsssuwwxz|xuvx{~~~|z{}~}zyy{~~~~~~|zy|~|zzHS^_`ceeecbcddcegdbdghintrpoomlkjklmnoppoopmkmnmmmmnoqsrrrrtuvwuttuvwwwwxxyursuttvwxy|~|yxwz|}~}}}~~~~~|{zz|~~~}}~}}||}}HT`bdefeeddcbaafkgcehijnspnnomkhfhkmpqsrromkjjjkmmnmmsyvtrpruuvvvwyvtx}|{ywtrtwvvwxy{~~zwy{|~~|}zwz~~}~|~}|{}IT`acegecegffedeffffghilpmklmlljijjkknponmklnmlmomjmpsvspooqstuutuvvvwyyzywtrtvvwvuwz{}||zxz||}||}~|{|~|yxwz~}}~~~|~~}}~~~~}|~~}||JU`acehebfkjjhgdbfjhfghjmjhiklmmmkjhgjnlkjjnrpnprlgmtttplmopqsutsssuxvuwzyxurtvwxusvyyyyzzz{}||zy{}{zzzxvwx{~}|{z|}||}|{}~}||}~}}~~~|~yyIT_`bbcdeeeefc`abdfffffhjiijllmlljiiiknmlmnnnljlnkintrqonnnnoruuutsuwustuwyuqstttttwzyxwwwwy||{zyzz|}|zzzyy{}||{z|~}|}~}}~~|}}{{|}~}}~||IT_`a_^chd`ab^Z^cbbdgfefgiklmmmlkihiklnnnpsokhfhjklptqnopnmmmqvwxustvtrqquzuqrsrqsux{ywvuttx|{{zzyx|~{|~|z{||}{z|~}}~~|}xy{|}|||GPZ]a`_adcabda_bedcehhhhhikkllljigfjomlllnplhhgjmmnoqonopnmnosvuttutssrqorurprsqpsvwxxwvvvvwxxyz{zz{|zyz|yvwy{}{y{~}|}~|z}~|z|}{yyy||x~~FMU[ba``abcdfeefgedgjkljijkklkkihfdksokjjkmifgimqppoonnoqomortwtqtwtqrspnoppprtqoswvvwxwwwxvtvxz|||ywwxyzvrtvy}zx{}||}yvzz{}~{vvvy|xu||}~~GOW\bbbbccdefdcfhecfihhhhijiiknmligkpnlkkklkjjjlooonnnnmmmmnptxvtuvutssrqrssrsusqsvvvwxwvxzxwxz{|||zyxwyzxuwzyyyx{~~}zx}||}~|zyxz}{y}}IQY]bcddeeeefdbfjfbehfefhhihglqppmjkmmnmlllmomklnnnnnnnkikmnotzxwvuvwuttuvwvuuvtstvvvwywvy}{z{||}||||ywy{zy{~zvwy{}}|{~}}}~~~|{|~~~~{{JT^_abbceefggecfigfghfeefhigfimmmkjlnmllllmnonmmmmnnonnlkmpqsx}yvvvuuuuuuuuwyxwvuuvvwwxwwz~|{|~}{{{}|yyyyyz|zxxwy{~}|{~}}~}~~~}{~zzLWcbaaacefhhifdfiijihfeeegjgegijkjjmpmkklmnnoopnlmooponnnpsuw{zuvxustvvvtsx~{yxwwwwxwwxy|}|~}zzz~|zxyzzzz{xvxz{}}~}|}|~}|y~yyJU`abcddcegikhfeefgikigedfihghijkihknljlnmlnponljklmnnnoprstvwyvttusqsutsttx{yvvuwyxxxwwwz}||}xyz||zxvxzyyyzxwy{zyz|}}~~|~||HS^adfhebdgjmjhdabdinkifdfhijjjjkigjmkimqnknroljiijkmmnpssttusrrsrrqprtrqsvwyvtttw{zyxxwvy|||~wxz{|zywux{yxxyxxz|xux{}~{~~~}~DP]_abca_befgeca`abfjgeeeeefhgfghhhijhgjmkjlmjhggfehlllmnpspnprrrolnpppooruuurpqqtxwvvuutwzyx{{xxxusssrqsutsuwutvyxwxzz{|}yux{zzz{{{{|zxxyz{{|zy|@N]]^^_^]`dcb`^_```cfdbdfdcdfdcdegjhgfegiijiifddecafkjjiimrlglrqqlglqommmqusqomnoruttssssvyvtvyyywvpklmmmnponqusqsvwyyzxwxytpruuvuuuuuuroqsuwy{wsw{@KWY\[[[\_b`_\Y[\\[_b`^`ca__```aba`beb_`bcedbaa_]]^adcbbcgkfafkihfdgjhggghijjihhiknnnmmnpqrrrrrqpqrnjjjjjkllkmomknqsutsqoprpnnoprqqqpqrpnnnnnprqprtw{zzAIQUZXWY[]`^\XUWYXW[_\Z]`][[[\^_`[W]c^YZ[^a^\]^YUX[\^\Z[]`d_[_db``abcbbbb`^adddccegghggjmllnpnljhknljhggghiiiijgehlnqnligilllkjlnnnmlnpnmkigegikmmmor|uu<DKNPPPQRSURPPPQRRRSUSQSTTTTTUVVWSPTYUQRRUXVTSSQORUVWURTWXYVSX][YYYYZZ[[ZZZ\^\Y[]]\]^]]_a`_bdca``aba`_^^_______^^`cfieaaaaaab`^`bccbbbcbb`^]]_`abbcfix~{zztnn8?FFGHIIJJJGEHKKKLMLKJIIIKMMMMNNNKILOLJJJLOMLJIIILOPQNKNQPOMKQWTRQQQQSUTSTVWYTOSXURSUTSTUTSVYXWWXWVVVVVVWVUUUTTUWY[^a[VX[XVWYVSUWXYXXWVVWUSTVWXWWXY\`n}||||~|}}||~~{|}}~}}|~~~}zwxyxxy{|}xssszyrqponopkgg \ No newline at end of file
+Q[fhjjjihjmoqkfjojffgjmllmonnnnlkjjmqnlmnquqnlklnrwtruxsnrvwxxxwvy|||yvwy~~}y|~{xy{yw~~~~~|{~~~}}}}}|yvwywutstvwywvwxvuvxvtqoqspmmmqv}~{}}}|{rjjQ[fhjjjihjmoqkfjojffgjmllmonnnnlkjjmqnlmnquqnlklnrwtruxsnrvwxxxwvy|||yvwy~~}y|~{xy{yw~~~~~|{~~~}}}}}|yvwywutstvwywvwxvuvxvtqoqspmmmqv}~{}}}|{rjjS]gikmpliknmmkimqmjiintqopqponmmmoppqppqrtvtrolmmquvwwwtruyyz{|yvy{|}zwxz~~~|xyz{|~}||}{yvtwz{{ywxywvvwvvroqtrqqrssy}wrrU^hjlqvpjmplijlosqomks{wsssqpnmnpswtqrtuvvwvvrnmmpsx}yvvvy}||~{wy{}{xy{~}}yyz}~}}yvz~~{yyzxwvvwxtpruuuvxtqv{}{{V`kjjqwsooonmoqqrrrqptyurtutsqpqstvusuvwywvxyvsssuwz~zwy{{{|~~z{}~}||}~}}}~}{zy{~}{{z|ysstuuwxusvy}~zzXcnkiqyvtqoprtvsqsuuvvwtruxwvutuvvvvvwyz|yvy}{yyz{|}{x|}z}}~}}||~z~~|xxy~~vutuvwywuvxxxyyVcomkpurpooqsrqqqrstvuutsstwzwuvwusuwwvxyxwz}{y{}||||{{}|y}{~}~~}{z{{}}{{{}xustux|ywuttux|~wwUcqomorolnpruplnqqqtwusturpw~zvwyuquyvtuwwx{~|z}~|{z|~~|y}y~~}{zzz{}}~}}zwwx{}{vrsty|ytpqrrry|uuR`nnnqsrprtuvsqrsrptwutsrstvyvtvxvtvywvvvxz{}|{|~}}{yz{|}{y|~{~~|~~}}|{yxz|}~zvx{}}{wtuwvux{}ttP]kmpruuuwyxwvvvvsptxvurptxvtssuwwwxyyywuy}|||}|{|~{yyyz{zz|~}~~|~~~~~|yyz~~{~}{yz|zxwv{~ttT`lmnqutstuuttsturoqtuvtrtvvvuuxzxvy{zxz{|}~}{|}|{zyz|{z{}~~~}}}}~}{|}|}}}~}}{z|~}{yxy{|}xxYcmllpusqqrrrqqsuroopswuttuvxxx{~zvz~{x}}~z||yyz||y}~|||~~|}~~~~{yyz{}|{~|zxwvuvx}}Yblmnoqpnooopooopppqstuttrqrtuvz~xsw|}~~~|z~}x{|z{}}z|}~~|}|ywxyyzxw{~}{|}yuvxxy}~~Yblnponmllmmnmmllortvutttqnopruy~wpu{{yx||w{}{~|{z}|{{~~z|~}{xuvxwwutx|zx|ztw{{{zz|T]fjoqssssspnnonmqusrrsqonmnoswxywux|}~}}|z|}{y|~||}}{}~~~}|z}}~~|yxwwvwxy{zz{|yuuuuuwy{|PXagnsxyzyysnoqposxsoprnklmmnsyvtwz{}zw{~}{z{|~~{y||}~{|}~~}zxy{{~~zwvvy|{z{|zyxwspootyyzU^glqtwvvtsqprtqosxtqqqonnoqstuuvwyz{yxz}~~}{y{|||{{}~|}{|}}|~~}|{}~|zyyy|~}}yvvwtqrsrqsuvvz}vvZdnqtuvtrompsuxsosxusrqqqqruxtqtxxxxyyzzz~|wxyz{|}~z}~~~|{|~{y}|||~zz{|}xpsvqlqvtsrrrsstvy~xllU`lmoprpoprrruwsnrwusssssrrvzuqtwxzzzz{zz}~{zzz{{{~~|~~}{zy|}|~~}|{{|~~|zxz||{|}yvvwsprutsqpqrrrux{}zrrQ]jjjlomlrxurtwrnrvtstvvvtrw|vqsvy|||||{{|}}{{|{z}~~|w{|yxx|~}}}~|zxv{~yux|yvxz{|zxvttuttqnprqptxwwz~{yyO\hjkkjlmpsrqqqppruuvvvvwvuwyuqsux|{yzz{{|}|||}{zyyyz}~}x}~y{~}{|~~~~}|{z{|}~zvxzyxxxwuutttttssrqrsqotyursuqmmNZgjmifjonnopnlorsuwywvwyxxwvtrstx}zwxyz||}zwy{zywvxzz~~~yy~{vz~~~{x{~zwxyyzxwsopqrtsssstuuurotzsmmmgaaP\hikkjmqonnnnoopppruuuuuwyxwwwwv{{vy{{z{|{zz{|}}}|{}}|~|yz{~~}||ywxzyywutsstuvuttuuvvwusuxsnmmgaaR]iijloqspnmlorpomlnqrtsrvzyy{}{y}|vz~{yz|}~|{~|}{}~|zy}~{ywy|zxvtuwwwwxvuvwwwxzyxwvspnmgaaS_lkjpwwwvuqmnoooopruvwvvx{}~~zw{{xz|{{{|~~}~~~~}zx|~}|{yxyzz{wstvxyyyyzyyvtrojeeTaolju}{{|uomlnprtwzzzzz{}zvy|{zz{|}||~|||{~|z~~z|~~~wqsvy|zyz|||zyurmii^o|x~||{zz~}~~ummi|}qqhywwhu}}jv{{mwzzlz{{l|}}l}zzm}wwm|wwn{wwn|xxn}zzn|zzo{{{n{||n|~~r}}v||q~|zw{l|zspmkilorv|j|{wqlhea^][]`dilouz}i|zpha[VVWSPONOQW]]]dkqxn|zpg_[WޟUSRRPNRUTTW[ZY]aeis~}}s}o]UNMMOQOMMMU]ZWXZXVVWY[ep}{{q}{rcTԞQۜNOQPONMNPTYZ\\]ZXXXVS[dmvzzp}qcWߖL֏MݔORUQNNNPSTV[a``]ZZZSLRX]bvzzp}|pbߛUѐOԍI؍KߖNPSQPNLQVVW^fca_\YWPJLOTZgt}}p}paْT֊GӁFׇF܄IMOQQRNKRYYYbkgca_YTNHێG܏FݕLRX_so}fPŅHzAՀCڋEJOQSRQNKORTW_gggdaWNJޏFԉGևHٌIۑKݢQXhyn{]Պ?l=u<z@؇DKRSURPNL~LLPU\cgkgcUHF܈E׃HՅKӆGՉD׋JQ^kpxhӝQu:q<v=}A֊EKQW]VPMJKLOSY^^^[WMCچEڇFۃGԆG̓FυEҊHڒLWbxrjUrEp6m:w?|CՉGݔLQ[f[P}L߂IކJLORVZVROLEڃ?}CHFҀD~E̓F͆FԐG۞PZptx`ٕIv@m7p<~A~CԋFۏIޓMSܑY׋SهM܁JۅHۄHۄI܉LPRUۍQݑNLۃJDх?{B|E{A}>}@̆CȅB΋B՘JRexwypWҏ>g;k8i=uCvDσFԊGَIޏKڍM׃K׃J{IH؁GډFܑJߎOO݋PׁMօJւI|HtCy?q@wBw=x8t<|AÀ?Dž=̉CߠJYi}}}tynUz=n:q7n<zAyCʃF΅FՍF܏HٔK׈JՈIԀH}FւIَKܐNސQOڋNԃKЂI|FwDw@}=w={=x>{>w@vB{A?ĆBԏESax}}rylΝT|<h9i6g:r?sBzFzDЅC׌F֌JՂIՂIՁGցEKڋQܓRޔTP܈LׁJ|HuDvAt>v;v:u9u?xEyDuDuC|B}AϋAܘMZs}}qvfQs<j8f5i8u<r?zC|C̄DҋHґLӆKKցH؈FۃJیMܒOߟQOކM}IxDu@x;s:s:r8p7t;y>u?r?vA|B@ʊ>ԠJVnqs`Nz<j8f5c7i9h<u@yB́EՋIԑNԈMӂM}JHzIևJًLْNىN؄OxHvAq;r6o7p9q7s6u7u8r9t;u?zC~?NJ<ЙGSiqo\ÙLv<k8h5d6f7k;y?xB|F؋H֢KՍJцI}G}F}GьG׌IӗKЇLҊM{Ew=r;r:o9p9r9w:s9v8u9w;v=|?>ĉ=͛FOf~rlYJv<f8g5b5d5f9q>tC{HΆHЎH҇F́EwEyEtEE˅GɂIuJyKuBq9o;p>k<o:s<t>m;t8x9t;p;x<{=Ɖ?ϛELd}t~kXK{>m:m6d5e4i6t9r=xA}CʉFЁDʀBvA~@wAxAyByCrAr?o<k9m:t<o<p=r<z;r8v5r8s<t={?~>Ȇ=љFOcxv}jWKw@h<g8\6c4f4j4i7o:n?wDuBr@e>n<s=p>n>n>k9n4k7g:h:m:m=nAk<n8k5n3j8q=r?zB}>LJ;ϔGScsn~lYǘJx<m9m7f7h7f6h6g7n8m<qAo=o:h;e;i:i9h:h:i8p6f6a7c8k:k;q<j9k6j4n3l6u9v;~==Ň=͘GRex|uugto[ǑIz8i7j6g8c:b9c8`7e7g:k>g9i5j8f;d8b5a6c7a8c9]6_4Z7b;d9h8a6f4g3h3e4p6s7y9{<ɇ@ҔHQg~~|}{qhh`m{{gǦOx6n6l6e6]6_4d2^1b0c4n7e7d6c7e8_6]3^3d4^4^5^3e1^3b6c6l5c5e4g5f5i4s4s6z8}<͉@؜HPi~~|z{{}ysleeYgu{~{zy}tϜT5l5i6d4_2[/[-U+Z*X-_1]4]8Y7]6Y4Y2W1\1V1Z1Y/\.Y0^2]2b3\4e5m6k8i5n2n5x8x<̌AٟHOl~~yz|zyxxy{|~{yrlgccYdpv|zywvy}}}~]<o8j4e1b/].Z-W+Y*V,Y.X1Z4Y4]5Z1Y.W/`1Y0]/Z-[+[.`1]0d0_1f3j4r6l5o4t68<˓AۯKV{yz{{|{zz{}}|uoiccYblqwwwutvyz{{{{{|}{yz|{gϛDi;k3e/c,`-[.V,Y*Q+T,Q.U0U2Y4\/W+O.U1R/W.W+Z)[,Z0V/].X/a1e2j4h5p6u78<њAO]~~~|~}z~zz{}}|{{~xrjcc^gquxwuuuy}}~~~~}~|z}qנK~?u4i1f/_.\.\-d,Y,V,T.W/T0W0X-X*R+T-T,W,Y,\,Y-W/Z/b/_/d/f2i6m5v5x79Ď?נEUe}~{|}}|||}~}{xtkaacmwxzwtuw|~~|{S}Dv5g4f3]0^.[._.[-X-R.T/P.T-U+S*P)S)S)V*[-Z0X/Y.Z/`0`.d-g2m8n6s4t7:ƑBݪJ[m~||||}}}||zxwwk``^jvy|ywwx|~}}~oëT:s6o3c0e,`-c-]-^,W,Y,T-V-S+R)R+V-T+V(X+Z/Y.\.\.f/d0h0m5w:r7v4}8<țENf}~{}~}}}}}zwvvnffZhvz~|zyy||z{}}~~eǐ?w9o4^/c+_,_-Z,[,T+W*Q,R.R+S)P-T2S,X'W*Z.Y.\.V.`/b1h4o8q=n9x5}:Ï?ќISp}~|{}}}~{wvupll\gsw|yvwx{~|{|}~~q؛MA{6n1k,e,c,`-c.],a*W,R-W+Z(W*Z,[,c-].a0`0e0_/d.e1j5l5s4t68;Ǖ>۳LZw~~}}}}|{||||||xtmff^gquzvsuxz}}}}~~{~}\J8t2p-h,e,c.b0]-^+X,Z-a*\(Z'\&^-`4[3_2c2c3^0d-d2i7d1o,p3~;<ѡ>Pb~~|~{wxz{|{z}ztj``Yfrvzyxz|}~~~}|}~kVB8|/o/i/f/e0`-b*\*_*_*^*])`)`,e0_/`/b/i/d.l.i0r2n2w2y7<ŗBܵH_u|y~}|zzz|~{y{}yuk``Udtwz|~}{|~}|}{cͬL>z1o1m2j1f1^-^)W(^(^*_-\,`,^,`,\,],\+e+`-h0e/m.m3v9y;=ǠHSn~~~~~zw}{|~|{}|yyzxwlaaUdtwzz{~~|}~}zz{{||kZH7v5r3o2l1e0c.`/d/a.f-b.g.b-b,`,_-c-q-j0o3j1p0q4{9<?ʴLZk}~~~}||{z}~|{y{|~|{xukaaUeuwzyy||yz|~vxzzz~}~}rhֳRœ=y9v5t3o2h3g4d5a7\2`._/c1b.c,d-a.b.g/j2j6f4l2o6x:>BùQair~||}}}{z|~~~}}{z|~yuy~|xtkbbXftvyyyz|}~}|{{{~|~~{}~}~ysl^QG|>w9t4k3o2c2a3^/a*a,f.b-g-c-b-^-a-e1i6h3m0n6y=ADQ]iu~}}}}}zxxy{}|{zyyyvtx}|{|}|{wsjaa\htvxxyxx}}~|{}}z|~|~}}ywvsqkeVªGz?t7d3g0[0^0\+^'`)^,Z-^._-]-T,]+`1d7f2j.f7ADGPZixzy}|{{|~~~~~~}}}}yvuuy}{yyyvtttx|wrtwxzvriaaZfrtvwxyz|~{y|~~}}~}}|}~~}{~}zxvtqonn^OC8o2p-b,`,[)^'[)[*W)Y(\(_)Z)a)^-a1h0r0w6=@CLVet~~~~}|}~|yvvwxzzzyywuuuwyvtx|||wsjaaYdpruvwz}{ywvxzzz}|x{~~~~y~{yxxuromrwgXH9i2e+~_)}Z({U(}W(V(~U)~Q&|V#z\$zW%{V&|Z(}X)z`+wi/|r3~69<?ISap~~|z~|ywxyxwy|zyxwwwvvvw|ytkbbZfsstttvxyzyy{|{y{~~~|{zz{}}}}~xxxvurponcYK=tp5n]-h[+gW*gU*jU*mQ(mR%mO%jT$gR%fN&fS(fY+g[+ha,jh/rq3z7;>@ISct}z}~~|zyywvxzzzxwxz{|{{~yskcc\ivtsrqrsw{|}~|yz|{{}zvy|yw}{wxyxxvtle`[NBo9rb0fY.cV,aS,aQ-bI'aM"aH$`O&_K&aQ'dQ*fZ.i]-ng-th0|v38>@BƵJSex|~~{|}~~}{ywuwyz{ywz~ysleeYfstvxzyyyz{||}|{{|}~}{yxyzxwz~}||{zywspjd^YMB:wc3d_0_W-[V,YU+WR(VQ%VR&VU'WV)][*c],gb/kj/uw0w3|6<BFJT]o}~}y|}zyyyx{~|zzz{|}~}}~xrkddVcpuz|yz|{{|}}}}xyzyxwwwx{~}~|ywqlgc]XMB<6~l2sc.i[+f^)cZ)d\)e[)g_)j`+nh.si/vo0zs247:@FLS]hy}|{|}|w|~{|~{x|~zvvvz~{y{}wqjccUanrvz~|zzzzzyyyz}}zzyxxwvy||}}~yrkgd]VNGB=9q5wt2so0ol0qm/tk/xl/}r0|1z2479<>GOW_hr||}~z}}{}}{||zy{}}yxwy|zy{}yvnffT`mpsvywvx{yxwwww}}}}{yxxwv{~}}~|sjhf]TPLHE@<:8z7}6z5~54469<?ACNYblt|~{}|~}}zxy{{|{{zzzz|zxy{zy{~|{riiXertvxzyx|~{zz|}~}yvy}{z{|}~~~}|~}vrne][YTOIDEFCA><@EEEHKNR[cksz~}|{zz}|zzz{}}}}}zwxz{||{zzrjj]jwxyz{zz~~~~xsz|y|}{{|~~|vnfff_YRLPTPMHCLVTRTW\bhnt{~~~|z~~yz{}{vz~zwxy||yyyrllYftwz{{{z}|z~~}}~xqpniea]`b`^ZW^fdcfjnrz~}~~{}|zz{}zuxzzyzz}}{xuoiiUcqv|||{{}}}~z}zwtqpopqpomkpvutx}|~~|{}|{{{{{|}~yuvwy|||~~xrlffXftvxy{{|}~~}~~|}|z{|yvtsw|}~}}|{|{z{||||{zyyz|~}|}}{ywumff\iwvuwz{}{y{~{yz{~~~|{~}}~}|{}{z{}}}{y{}}~}|{xuvxoffYgvwxxxz|}~xz|~~}|z{{{{|}{yyz|~}|}~}|{{xumeeWfux|ywy{xz}}~~||}||zxz}{z|~|zxw{{x|~}yrkddXgwy|zxxy~~~~|zy{~}||}||zxz{|~}|}~{ulddYiyz|zyxx}~~}{z|~~}}}~|zyx~~y|}yndd]htvyyyxx{~~~}|{{{}}{{{zyyxz||}~~zvnffahpsvwyxxxy{}~~}~}xyz{|}|yyywuvw|~}}}xsnii\htssuxyzzz{|~{{|{z~~|||zxyyz{|~}|}}{ywumeeXhxtpswz}|{{|}}~~~~{y~~|||xuvwxy{~yuvxlaaWgwvuvxz}}}|{}~~}~~}|zy|}|{zzy{|xsuxxxyzxvtskddWgwy{zy{}~}{~~{}~~}~z}~~~~~}}~|{zyyzzzwuvwz}wruyxxwvvwrnjgg\iwvvwx{}~~~{{{{|~}~|}~~||||}|{{{{{ywwwxyxxyzxvxzyysniddblwtqtx{~}}vx{zy~||}}||}|~~|{z|~}|||}{zxwvvz~|{xuy~|{tngaa^itssvy{|~}uy~|z}~}~|}~}|{{}~|||zx{~yuttwzyyurw}|{tmf``[frsux{{{|tz~|}~{{{{|}}|||~~{|}xt{{ssstvvwspv|{{slf``[huttx|}~~~}|z|}|{}~}~z|~~~|z|~{yz{ywy{xvtsvzyyvsvy{~umgbb[ixusx}}yxw|}zz{}~}||zx}~~|~z}}yz|ywxzzzvsvyvty~|{xvvv|xniee^hsuvxyz{yxxx{}|{{|~~{}~}||}~}}|{zyyxvuwywtx|ywy{yxy{xulddahotzxvuuvwxzzz{|}~~~|}~|zvvw}~|yxwwwxzwuwzwtz}zwuy}pccZdosxwuvvwyyzyxwwz~}}}}{}}}|yvwwz}{yxvwxvuwxwurptxvtvyz{wstukaaTaoswvuvxy{{{ywtrx~ytwz{||{|}}}||{zxwwxxxvuqmrwutwzuqnkpvuusqw}wqomf__KWcehhilonnnnnopqsuqnnoopsvtrv{yvvwy{}~~xxyyzyx|zusrtwvvsqppqspnquttuuqloqqqqponqtoknqlhijklllifffgihhfeeehkkllmjgdbgllmkjlnljfc]WWBLWXZ[]afcaabdgkpnljifddegihhlqmjjkpvtrsutstjaabbbaabc_[[[`eddb`[WZ^ZW]db```]Z^c`]ZXY[ZZXVWXVUVWY[\]XSTUX[YXWVY]^`bdba_][Y]bdfdca`ac^YTOODNXZ\]_aca`cgghknkihfgggffefhjlkjnrsurpruuv}xtuvusuxtpoosvuuttpmpspnqtrqsvtstvtrollllljhijiijllmmmiehjiihhhijklnmllmieeehkmnljlmmlf`[VVGPZ\_`aaa`_eljijligedgkihebehhhijqyvtqoruwy}}~|z{}}}~}zx|{wxyz|{z{|xtvysnoqsuvwtrv{xvngb^^LZggfhijkklptssvyvspnprrrrqstttvy|}{zx|}}|~|y{~zwxyuqqqtwy|ywz}|{vqh__Rcuqnprtvwy{}}}|yyz{}~y|}zyywusquy}}~~{naaTanpsstuwvuwyyx~|{zz{|}{~|xy{xvvwz~~~}|~|ymaaW_gpywvwyurtvut}}}~|zz{|~~}}~~{vy}zxz}|{{~~zwlbbYbls{ywy{ywz}{y~|||{{~~}}~}}|~}y}}y{~~{|~}|}~zvmdd[frw}zxz}}}~}{zz{|~}{|~~}}~|z{~}{}|z~}x{zumffYfsvywvwyz{~}||{zzz|~}}~}~y|~z|~|zzz~y}|xoggXfttuuuuuwz{||}zxxyz{~}~|xz}|y{}yvxz{~|rhhWdqsuvxwvxyz{{{|}{z{|~}~~~~~}zwxz|qffWbnqux|zxxyyzzz~|}~~~~}y{~~~~{xyz}pddXeruwxzyyzzyyxw{~~}{}~}}~~~{xz{~}}}|}~~~{umffYhwxzyxy{{|zxvux|~}y}~{|~|{yxxy~}xz}|w}~vnkhh\grw{zxz{{zzzxwy{{|||{|}|||}}~~~}}~|zzz{}}|{y|ytlee`gnu}{yz|zy{}{yyzyx{{{||}~~~}yz{{|ywxzxwy||}~}zncc\fquzywvtvxxyyyyxyz|~}{{|}~~}}~}{{|||{{zywvx{}|yoeeXftvxwvqmrxvuwzxwy|}~|{{|||}}~|||~~|~~~}}||~|xvux{|ypgg[fquywusptwwwy{ywwxz}}}||}|~{}~|||~{wwxz}}~~~zvmdd^fou{xuttuwxy{}zwvux|}}||{|~|{{{~zvy|}|z{|xtkbb]fosxvtvxvuvxxxyzwux{~~|~}~~~{xz||}~}{{|ywz|{zzzwulcc]foruttx|xtuwutx}yvx{~}}~~z~~zvz~{xz|zx}zsvzzzyxwvmdd`hpruuvwxyyzzxvy}|{}~~~zwz}~|wz}zwz}|{yxvumeecjrsuvxvuz~~{xz}~~~~{xz}~vwxz|~~|zxvungg]hstuvxvtz|y}}~}~|y{|}~|yyxy{}~|zxtqjccWetuvwxvtz{u}~}{{{}zu{}zyxz}{yyz}~|zysmf__Xftwyzzwuz|x~}}~}~~|wy{{|}~|zzyzzzz{||{zxtph``Yguy}}}yvz~}|}~~}}y~zwuvx}}yvy|{zyyz{yxusjbbZfsw|{{|}}}||~}~~}}yz{}}zyxz{{|zxyzyxtqjcc[fqv{zz||}}}~~}{y~~~~~~zwy{{{|~{xxyyytoiddXcoswxx}|zy}~|}~~}}|{~}~~}yvxyz{zxwvx{ywtqiaaUamptuw|}yuz~|z}~x|~}~~~|y||y|~|yvwxz|wsstx}yutsh^^Xeqsux||}||{{|}}}||~}|~}||||{{{{{{{{yxyzxwwxwvvux|zxwwl``\ivvv{}yz{~}z{}}~}}~~|~}zx{{wz~zwwwutyzvuuwzxwy{{{{|occ[huwz{|||{{}~{}~||}~}|||{|}|{|}~~~}{ynddZgty~{x|}{}~}{|}{}zvmeebq|ttk|z~~~}}~~x{{xusvyyz{|}~|{wtx}|x|}{{{}|z{|{zzyz{zzzz{{{{zz|~|}{yxxxy{}{z{}~~|zyyyyz{~}{|~~}}yxvtrrstvwyz{|}||{{ywxy{||||||~{xvutpllmnotyyyz{zz{|xuwz|~zw}|{~xustvusqopqqrtwy|zyz{zzzz|~{y~vvvsptyz{vqrsokpvy}{yz{}|z|~|{~vwwuty~}}yvtrposx{}{zzz{{yxz||}~wxyxx}}{vrrsw{|~|{zzyxwvx{}~{~|~{tuvxy|}|zxxwxxy{|~~~~}{yw{~~|z|~{vrstw{{{zywvy}}~|{}|y~}wrz~vuuuuy}}~}}|||zxyy}~{yx|yqtxwvz|{{xvut{y{~~~}wruxyzzy|~|ywvu|{~~|xvtvy|ytw{|}~}{yxw}}~{~z~vuswz{{yvx{{{{{y{~zwz~}}~{~s{xutsw|zxxyz{zzxw|{u|}wxy{~|x|wywuuux{}{x{~~~zw{~~~|{{|}~}~~{xvuvwy{x}|wz}}}}}}}}~z~~y|yxwvuy|}~zw{}|}~~~}wyyzzzwty~zwvvy|||}}~~{}z{}z|vwxz|zxz||{zyzz|}~~}~~}}xsuw{~}|{}~}{y|~~|{~~~}|{wsvxy{{{zy{|}~{xy{~}~}{~yvtwzxwxzyxxy|{wwx~~~~~}x}{zxwy{ywz~{xwwz~zwy{~vwy{{{|}zw|}ywuy}zx{~~}y||yxxxxyyvsx|{yyy|}{}}}~|yvx{xvvvvvspswxz|~~}zz{~{w||||tsrsuvxwuxzxvvwxy|~~~~~~~}}|~mnooou{xuz}|ywxy|~}|~}y|airqquxxw{|ywvz~}}~~~~}~~|~~~}}}~}{}Ueuttuvxz|zvvv||}~z}{v|}{yxxy{{{{||}~z|~Tcrsuvxww{zvvw{{xz}~~}z~}xz}{zyyyx|~|~Saorvxzwty{wwxy{wtx|}~}}|{{yxwwxzyy~|~~Saosxxywvy|{zz{zyxxxxz|{zyy|~}{yv{}{{{~}Taotzyxxyyy{}~{wy|xuwzxwwxyz{|xu~}}~}}}~~S`lsyvtvywvxz{||}{yz{zzxwy|{z{{{|}~~}~~S^jqytptyvtvxyz~}w|}zxw|~{{{~{x}|||}T`lpurpruuvxzxvz~yuy}{xxwz|||{{}~{}~|zzz{}}}{z|~Uanprqppqtxz|wruyvsvzxwwxxxz}|{|~zw{|zxwvvy|zx{{x{~T`kosrqporuvvspqsssstttvyyyxwwwxzyxz{zzwtwyyxxw|~||}~~T^ioutspnpsrqponmpsqoprvzzzuqrsuwxzyxyzvrw}yuvw|~|~z}|}U^hlppqpopqsurpnmoqqrolptturpqssttuwxyywvwxwwxz|~|z{|~}V^gikmpppppuzuqomnprumfjoopooqsrqqquyyyyzvsvy{~|{wtx}Yaiijkmnpooqtsrolmnruqmnoqtttsrsusrw|{zxwvuwz{|{zwuwz}|}~\ckjjjjmponnoqsoklmqvutqosxxyuquyvsy~|xtuwy{zzyywvwx{|w|x|~~|{|~Vamkijllmoqqqrspnmmpsstttuvvwusuwxxyz{|zwy|}~|zzzwtw{|~~}zw|}~~{Q`okhknljotssssrqomnprtwzwtuvvvvvz~ytx}|{~~{{|wsx~~~{yxx|}~~{|~}wy|Uamkjnqmjpwvuttrppqsvuuwzxvwxxxwuxzwtwzz{|~|}}zxz}|{|~|z|~~}|{|}Ybklmquojrzxwvurorvy|yvxzyxyzz{xuvwvuvwy|{{~~~}}}zx}}}}{|}{}Ycnoqppppruuuuuroruvwusuwxzyyyyxwwwxxz{zy{|}~}|~}|{{{}}{}~}~}~Zeqsupkpvsqrtuvsprtsrqqrtx}zxwwxyxxz|~{wz~{yz{~~|z|~}}{y}}}~{~Wdqqpoopqqqrstusquyuqtwtqw}zxvtuvwxyzzzywy|{z{|~{{{}}|||}~~|||~}|}Ucrolospmorrrsusrx~wpv}vov}{yurstvyyywuvxyz{||}}xz}~}{}}||~|~yyy}}z}~Q_mllnponoqonprrrstsqtwtqv|{zwttuvwxzxwyzyxy{{|||zyzz}}{}~~~~~|z}~|z~||N[hjmmnnopqmjloqsokosrrrsw{{{xvvwvux{zz{}yvxz{|xux{yx|~|~|~}~}}z~|}~{{{~y}}zN\kklmnlklmllmoqtokpuspsvwwwwvuvwwwxxxxy{ywz}zwxy}{vz~~}}}{y{}}}}~}{}~}|O^nlklnkhijlnnoruplrxsotzwtsstuvxyzxvvvxzyx|zsx}}tx|~|z~~|xwvy|~|}~}|}P^llmnomkmoppporuroswsorvutrqsvvwxzxwvvwxyz{}yvxy{}{yz|{|}~~{zz|~~}|{zz}~Q^kmooponqutsqprutsuwspqrsuroswwwxzyxwwwwz}{yyzxvuty~}}}x|~||}}~~|~~~~|{zzxw}}O\iknnmnnopqsrrsttsstsrqpqrpnpsvyxvuuvxwvwxxxyzxwvux{{{~}yz{|}{y{}}}~~}{}~|||||{z}}{|~}}MZgjnlkmomlosstttttrqsuroopnmnou|wsrrvzwuttvxyzyywvwxxy}~{xvx{xvz~}|}~~~~|~~|yz{{{~~z|~~~~~}|zyz{yx}}MYdinmmmnlimprsrpomnnprqqrsqooosxusqosxurtuvwy{{{ywxywvxyyzxvwywvy|||{{|}~}}{{{|}|{~|wxyyy{}{zzzz{yw||NXbhnnonnjgjnpspmjgilnpqstvtrqprtttplqwspswwwy||}{yyzwtsruywvwxwvx{{|zxz}~||}~~{|}~}{wz~~|{ttuttx|zyz|{{ywy|||QZdhmlklljgjmnomlighjmponpqqqqpsurppquxurrrtvvwwxvtvxwvtrsuuuuvwxy{{|}~~~}}~}~~{}~|z{}}~|z|~ysrrsuvwxzzzyxwwy|}}T]fimjhikihjmlkkkighilpmjkmoqqqtwqlqwxzwuqnrvtrstrpswwxusrqrtttw{{{{|~{}|}x}~}|}~}|||zyz{wsqoswtrw|zywuvxz|S[cfjgehjigikjihhijihjmnonmmmoqpopqrtuvuuqnqtsrsuroprqqrtqoprtvwwyzzz~~~~~~}|{|}|}}y}~}|~~|{{yxwvustux|xuwzxvvwvux|||SZadgecfjhghjhgffimjhijouqnljmqlgnvsqqrsuqnpsrrtwrnnnljouqmoquyvtwzyy|~}~}|}}{{{wstu{}xz}}}~~}z}|~~{~~}}}{zyxurstx|~}yxxvtvyurw|yyPZdegfehljijkjjiikmmlkjlnoqnklmkjnrqorusrpmpttusrpopqpoqtqonmszz{zzz{|}}}}~}z{|||zxxwutx|}}{xz}~~~~}|~{{|}~~~~~{y{|zxwwvuy}~~{wwwwwxyvtuv~{{NZgghggjnlkklmnmlmnoqmjhgnupljiknnonnsxtpnmquvxsnopruuutsrqmir|~{|}{z{}||~}yyyyywvuttu|~yyy{}}~~~|}~~zyx|~{~}zxvz|yz|yw{}|yvvvx{zywvsqv|~~LXdefffimlkkjkllkkkmnnnjfkplijklmnnoppqqrqprsvxsnoppqpppponmmv~}{zyxw{}|}~}|{yyxwwwwvuz|zywz}~~}}}}}{|~~}{|}{xz|zxxywvy|zyxwwxxxxwvvutwz}}JUabdefillljijkkkjijloslfilifjnmmmnprnjotttsruysnopnmlllmllnqz{{|yvuu{|{{}}zyxxxyzwuwz{|yvy}}~{y}~}|}}}}~}|zy|{zyxwwwvuwyxwxyyzxvvvvvvwwx}}LXdbadghihhhiijiiiilooolijkjjklllllmorrsrrtwtqrrrqonoqpoty}~z{{xusrx}|{zz{}}zxvy{xvy|zxwvz~~}||{|~|y{}}~{xyyxwxyxwxyxwxyxxtqrrstqoty~~~N[hc^chgfedgjiihhijnrollmkjlomkklkkklqqrrrtvuuuuuvsprusrz}zz{wtrptyyzyyz{}yuy}zw{ytuvz}~~|}~|{~x|}zzzyywvxzxwy{zzzzxwxywvqmnoprlgpz|~KXfedgjhfhjjkjihfgiloljkmkiknmmnoljlmoooprqpqqrtuwuttutswz{|zy{}zwsptwy{zy{~~|ywxywuy}{z|~~}}}~~|~}y{~|{{{zzyxz}{yxvvvwywuwywuqnopppnlpuz~~HVehkklifkqnlkjgefhjljikmjhjmnoprnjlomllmmmornklnpsuxxywuuutsuxxx|}zuqsvy|zy}~z{|zywvtsw{~}|}~|u~z~~|}~}}}|{{{|}||{{zz}~|wrrruxusvzwtqoprpopqqqy~~HUbdfghgghihgggfefgijigilifhjlnlkighjjikmnopqnlmoqtuwxyvtw{wtx}zwy|zxvsstx|zy}~yyy{}{yvtvy|~}~|{}|x}}~~|}}~{w{~|zxz||}{zvstux{xvxzwtrprtsrsutsvy||HS_`abdfiebbbcddefghigfhkhefgjnidddeffgjnoqppnmnpsvvvwyvtz{u||vwxwwvvtrw|zy~~ywv{}yuvxz|~|y{~~~}|}}~|~~|||}~|s{|xuz|yxxvtvy||yyzwtrqtwvvwywvtrz{{HUccddefgfeeeefgihhhhhiknjegijljigfhjhghjosrqppppqqrsssssvyvtw{yvxzxwvuuuwzzy|~|yyz{}}~{xy{}~|yz|}~~}|~}||ywz|z}}zwux{|}zxtqsvxyyxyyvrrstvvwxyvtrpv}zzIXgggffffghhhhikmkjhgilorlfilkjlnkhkokgggnvtsssrqomnponprrrrsstuwy|zxvtvxxyyzzzzz|~{y|}|}~|}~~{}}}z}}zzz|~~{{|}~~{~}xz|wsw{~|zxwvvw||xsnqtttvxxyuqsuuuvxxyvspnsxyyJVacfgigfghfegjjkighijlmnjgikmppqnkmolihhovtsqpppomnpqrqqppsvvvy|{zwuuvwxwvwxyzz{zz{{{|ywy|~}|}~{x~|}}{yx|~~|y{}yvxz}~|{{xvwyz|xutstuvwvuwxvuvwutttvxusqnrvwwLT\`ehlifgiebfkjigehklmlkihijpvutqnnomkjipwuspnoponopsvspootyyy}|xuruxxxvtuwxz{|ywz~{yurvz~}zz{xv|~~}|yw|{}~|z|~|zzzyy}}}~zvx{yxuruxwwxzvsuxxyyyvtrqtwutqoru}vvHR]_bfjighigdfihgggikjjihjlkjlooponmmmmkjospmkilooponprpnoqtwxyz|xtsstvvwvuwyz{{|zy{~|zxvx{{||||}||{{xvwx|~}z|~~|y|{}|{~~{zyyy|~}}}zwy|zxy{zxwvwywuttvxwuuvutttrponqtzvvDQ^^_diiiijhgggfegijkigffkqnkihjlmnmlmomlnplhfdinpromnomlostvxzxwspruttuvvvx{{|||{{}}|{z{|yvwxwwwxz|wrv{|}}}}~}||}yuy~~{|~{~||}|zyyz|~~~}}zxz}zx~ywvwxwwsptxuruxwwtrommnpsuxvvGTaaaejjjhgedfihhhhijhfggkomjigkonnljkmlklmmmljlmkiknmllkmoopswutsrrrsuttttvyz{zyyyz|}}|{ywxxy{ywxyyzzyzzzz}~|||~|w|~{||~||}|{{|}~}|yvwxxxyzyxyyz|zx{{wutuvuusqtwtqsusrqpmjmpoorv~uuKXeddgkkkgdcbfkklighigfgiknljhglrpnkhjlkjjkosrqomgaholjjkklkjotsrstrpsvtrrrtwxzxwwwxz|~}xsw{|~zwxzyy}}zyx}{{|y~}|{{{|}|~}yxxyz{|zxz|wsuwtrtvutw{{{zyyywvtrstttsrtvsqqrpnnokhmrolpt{ttNYddcdfghecdehkklifgijjhfjmlkkknqnkkjkklnnopqonmmjhjljiklmomlqusrtvsqsuplptuvwxxyxvz~{yxwvvy||{zxz{yw{|z{{~{z~~|}}|~}{xz}|{yxyzyxxwwvxzxwxzywvtvxxxtprtuvsqrtsrpoppomlknqnlnq{zzQZdccbacedcfijklmiegjloidhmmmnooplikmlknrrsqomllmnoliiiknprposwtruxurstmgnvuuuvy|yv|{trquy{~{yyz{}yuy}|{}{{~~~~{}}y|}{yxxx{~{xy{|~|zzzwtrptxyztoruwytpqssspmpsolmoopnmmnt{MWacffffgedgjhgfefgikklkjjjjkmnpqommnmlmoprqqolllmomljiknopruttrqsvspqrnkotuvwyz{ywz|xttsuw{|zzzyyxwz}}}~~||}~~~}|{~~}|{yxy{xvwx{~zwy{ywvtuwvutsssvzuqqpsvqlmnmkmoqtqnmmqv}}IS^djjkjigehlgc`]cjklkjmpkghjlnpsrqppnmmmoqrtpmlkmoopliknnnu|vqpprtqnopooqsuwy|{{zyxwvuuvuuz~|{zxvxz{}~~~{y}~{|~}z{|~~}~~z|}~~~{xxxvuuuy~ytx}|{zywvsqtwtqv{wspntzslkjjkmotytomlnq}zzHR\^adgdbehijihebgllkjijjihhikmnonnnnmlnpqrqqomkijlmnnooopqrtsrpnpqqrqppqtwutuvx{zzxuvvtstvy{zxxxxx{~}|}~~yz|}~}||~~|~}|||}~}~}|~|z{|}~|{yxwvwxwvwyxxwwvtttuwtqtxussssspnmklmnoqtsqomnpz~wwHQ[YX]c_\ckjiknkhkomkjigegiiijlllkkklkkosssqonnkhhijlpusqrtpmpspmnorvspqsw|vqqqv{{|xtvxtptxwwvuvwy{~~{|}~~|~ty}|}|z~}z}{|~|{zzxw}~|~|}|{|}}}yuwy~~}|zxuruxwvuuuvtsuxwwtqsutsuxrlnqomnooooprtqnopw~}uuHR\]^ada_chhhhihfgghhiiihikjijkjjjkkklnnopqppooljhgikmnpsrrpnnnnnoprusqqqsvtrsuuvwxwwvusrtvuuwyxwxz}}{zyz|~~{|~|z||z~~}}{ywusry~}{|}}}}~zwxy}|||{{wtvxxxwwwwurstttttsrrqqqommmmmmmnonmpsolllqw|uuIS^addedcdefgfeeeb`cfhjkllmkjjkihikkknqnlmoprqpnlifhkihnusqppmjloprstsrqpppqsvyuqrtw{vrstttssx~zwxy{~}|xuwy{}||}{y|}{~}~~~|ywspnmu~}~}~~~~~~|z|~}~|zzz|}{{|}~zvwxy{zyyyurqqqrtwspppmjlnkiknlkmpmknrnjiilp{uuKRZ_eeeddefeefghjgdgjkmljjikllljijkkknpomnnprommnljkmkjnrqqomoprtsrsuroprsttutsrrrsuxvuuvvvwxz}{yyyz{zywvwy{}{z|~~{yz|}}||}}}}yvtrposw}}z{|~~}|~}z{}{z|~zwz}}||{{{||xuwyz{ywy{wrqqsuttssqponnmmmnppopqnjlnljjknrwwMRW^feeeefgedfiloliknoqmigfjonmkjjkklnpoonnprnjmponopnlnppqnkqwxyvstvqlptvxwwrmpssstuvxxxxx{~}|||zyxxwvwxxy{}{y|}z{}~|yyz~|vz~|{}|~zvutsrqpz|~|~~|}~xxx~~zz{~~{{{yxz}xtz}z{|{{{{wtwzz{xvz~xsrqtxtqtwspqspmoqrsstssnjjjjjkmpt}yyMT[^`bdfhhhiihghjhfhklmiefgjnnmkhiijlmonmnprtplnqnklmmmnopqonqtssrqsusprsssvxtpruuvvwwvwxvuwyxwxywuwyxwxxz|||||~}}}}}zxyz|~{x|}{}~|}xstusqx~~~}}{|}|z~}zz{~|zyzzzzxwxzzzzyyyxxwvvuuvtrtwusqnqtsstusqqqomqusqqrrsnjkmnnkhlpxxxNW`][_dgkjjlojeefdcfiijeadhknnnjgghjlmnlknrtvrnprmhijlonnoqqqqqonnoruuutsqotzwtuwxyyzwuwyurstsstvtrvzyyyy|}{}}{zyxy{zzz{~|}~~~~~}}}|suxurv{{|~|z|}~z|}x{~{s{}~~|{{{}zxz}zwxzwtw{ywwwvvwyuqqqonoprtplnqsutsssqonmsytppprtojmqrskchmsyxxLT\]^addeddgjhffgdaejiigfeehlmokhiikmmmmlnopqnlnpnllklljijlmnpqppqrstrqrtplpusqsvuuvwwwwwusttuuuuvwxzxvwwz|zyz|}~~~~}{zy{}|{~}}}~~|vy}xsvz|~}|y~}~~~~~z}|x{|z{}|{yx{~zwxywvxzvsuxwwxywuwzupqrrrqpqqpoprtusqqrqppprutsrrqpmjotpmjfilpt}uuJQX\abda_^^bffghid`ekjijkgcfjmpmjjklnmmmnmmllkklnoqomkjgdfhjlorrrtvtspmqvoilpoorusqrtwzxvuuuuvxvux|{zwtuvxzxwwxz|{zy|yt}}|{}~|~~}z~{twz}~~|}x|~|~{{{}~}~}}|{yxyzyxvu|zvuuuuwzvstuvwy{wtw{uoqstvsqpoprstuvropqqrrsrrtwutplkjpwohijjkmoz|rrJS\]_`ba`aaceeeddcbdfgihhhhijlnnokhjlmnmklnnnkilonmnpnmjgffilmoopsvtsqoqsoknqomqvuuuuvwutuuttvxuruyz{wrssuwvuvwxz}}{zx{yt{{{|}~~}~{{{}~~||~}{}~~|zyyxxxy|yttttuvwusuwwwwwutuwsprusqpnnnooppqrqpqsqprusqqqsuqnljoupklmllmnv~ttJU`_^_`abceddcca_becbeigeinlkklpumegjmplilooplhlpmjnsqpmjgehlllmorvtsrqppnmornkqxxywvutsstvtsuxsoswz}wqqqrtttuvwy|~{xz|zx{ytz}z{}~{{{~}}}||~~}}~}~|~|zxxxz}}}~yssstuuutsvyxwusstttrqtxrmllmnmmmmnoprsuqnrwspmkpvspmjotqnoponnnrvwwIS]_bbbbcegdba`bdefdceggfhihgjmnpliiikniejpnmkiloljkmmmmmiekqnklnruspqrponlmomlpttsssrrtuuutsvzwtuvy}wrrrstvxtqrty}~}{zyyyyy||xz|zyz||{zz}}~|}}~|}}}~~|~}~~z|~}}||yvy|xtwz|~~~}{yxxxyzvsstuvwwvtuuutsruyupnmlklnopnmnpqrpopqonmlnqnklmnoooljkllmpsuuHQ[`feddegid`^]cihgedefghfeddinmllmkijlfaiqnkkklnljhghjmqkfnvpjlnquqnpsqomlllmnoqonoppqtxvutsw|zywuy}xssttuy}tlnpu{{|zxyzxwy{~~|zxxxz|zxvuwyyy{{||{yxyz}||}~~zwz~|~|}~}{}}}vxzyxwwtqxxpsw{~}zxz}}}~xrsuttvxwvvwvutsw{wtqnkhlpqsolmnnopqnklmmnmlifkpmkmpjegjkmoq~|ssLS[`eedcbceca``cfffedfhfeddddgjjjklllkjfcfjiihhijklhdhlmmkhjmmmoqrsqooonmnpoopqrtrpppqsuwustuwywvwxy{zzyxyyyxsmoquzyxwvx{xux||}{yxxxxxyyyz{{|zy|~{}}~}|}~}{z~~~{xz}~}~~}}~~{~|xxywutsuv{zttux|{zyx{~{yyyvtvyuqrtttuvvuutuvspmjkmoromlklmnpnmmmnpnllmlklmkiklhefhiilpz|ttPV\`eeeb_`bbbcddddeddgjfcccdeefghjlmokhfedcegfffgjngaholjjkgdjprtsrqpnlllptsrsuvwusqpruuvsqtwwwusw{zz}}}~ytqoprvzwtttx}xtx}{yxwwxxywvx{~|yyy}}~~}}z|~}|}~~~~}|~zw{~}||}~|z{|}~~}z|z~|z{}{zyyvsqpv|}|yvsvyxxxy|zuttuvz~vnopqstvvvvvtroliflrstmghjkmoqmjloqtojlnoqnkihhigefgffjow{vvLRY]aaaaacdbabcccdedcccbabdefecfijkihijfcccegggfegigfimllkkiglrqqponnmmljmpswtqqqqrqpsusqqpsvuurpsvwy|~}|zxvusqrtuvvwwxy{xuy}zwxzzzyxwwz}|z{{yxww|~|||||}~~}}||}~}}}~~}~}{~}~~|{{}}}}}}||||{zzywusqrtvyxxyzzyz{zyz{ywvuuux{tnprrrstttsrqpnlkjnrqpkfhklmlkklmnoqolllkklnkijlighiiikmpt}uuHOVY]]^adegc`acbbcecb_\^`befhdafkkkfaflgbbceghifddehkkklnlkjjotqnmlllmolijlt}umllnqqqsvqmnprutspmoquyz|||wrtwusuwusvz{}{ywvz~yuy~}|ywwx|ztvxwwvu{}y}~{zy{}~~}z|~{~~}~~{w~~|zyz|||||{z{|}~|{{{zzxwusolosuw|~z|~|zyxyzxwvuwysnqtsrrsssqonnmlmoqspmieimmniejonmnoooljhfkqnkmoljjkklkkjj|ttDOYZ[^`acccbaa``abca`__acdefgfefhggebglgbcdfhgffeeehkkklnmllmorrromllnpliijouronnmmmnprrrqpqrqponoqrtvyyytpswvuvxwwwxz|ywwxz|zy{}{zxwy{{|zyyyyzxw{~|{{{|}||}~~|~~|z}}~|yv{~zzzzyzz{{|}{zzz{}|{zyxwvvtrpnquvx{~|z{}{zyxxyvrrruxtqrsssssqpoonnnnopppmkjilomlifjnoqnloqnjkmnomlmomkjjkmlljiy{rrAO][Z^cbba`ac`^_`ab`^`bdfffffhjgeddddhlgbcegjgdegffhkkklnnnopppsvrnmlnqmihhknprqplijklnsxtqponmnppqppsvvvrnsxwwxyz{xvy|xuwzzz{}}}zxxx{~{y{~|z{}{z{||}yvz}{~~}~~~|~{zy{~}}~~ywvy|}zuwyyzyyz{|~|{yxz}||zxvtuvtrqqtwxyyzzz{|{zyxxysnnoswvusrsuttpmnponopqromkikmoqnkihknquojotokotpmmmnpnlkjlnnnkhvxqqCO\\]afdca`aca`abbbbaabdgffgihhijhgedgkhdfhfefgfefghjjklmnopqppqromnpppmklnnooonnmmmnopqrqpqrpnprrrstuuuuttuwvuwzyyxwy{ywz}|z{{}}{{|~|y{}{z{||}|{}~|~~~}~~~~}}~}{zyyz|~}}}}~|{zyz|yuvwvuuvutvyxwwx{}}}}~{yxvsqrstuutsqqrrsqpqsqoppqrolkimpppooljnrsurppqomnokhiikmlkjiiikmkiuzppFP[^aeifdb`bdcbcdccdecbehgfiligkoljgdgkigike`ekgcfiiijllmoqqrqponmlptqonmptrpnlllorqqrspmnorurprtssvywuuuwzxvtsw{yxxyz{zz}~{zz~~~z{}{zz{}}z~~}~~~zzz}|~yuy}xsvzwuwzyxy{xuvw|~~{wtttvxvtttrqpoqssstvsqqqqrolkjotqoqtplqvuuuvroopmjgdefhkkkjigeimlks||ppFQ\_bcedda_`baadgecdedcehgfimkiijihhhjmkjiigfghgfhjhgjnnooopqpooonnoppppoprrrrsqoqssttuuvsqsusrrrssuvwxwwxyz{wtx}{zyyz{zyz{}~}}}~|z{|zxyz}}z{}~~~}{~~~y|~}}}}||}~}}~~|xuz{vxzwtwzzzz{{{{{}~~~}{ywvuuvvvuuutturprutruxsnoppponnoqsqnquropqqrstqnoplhfdddfhiijkjhikklsz|rrFR^`cbbcda__```ejgddeddfhggjnlkheefilmonmjgjmifhjjkhfkpqromoqonoppqomorrrqprtwzvrsuvwwx{ystuttrqrtttw{zzyy|{vz~}{yz|zywu|~xz}}}}}{zz{xvxz~~{ywz}|||||}~{~~~~~}w|~|ztx}zx|~{yz{}|zxv|~zzzwtwz{|{{~~|}zutsuwwxvtuwvuwyuqtxurvzslmonnoprtsspnrvtrolnpqrpnoqlgfecbdfghknmljiknsy|uuJT__`bdcbceeecadgffedfhijhfhjihgfeefhikjjigjmkhjlhehknqomlklmllllmooopqqrqqrstuttsrsutsvzvrsutsqpppqqsutsux||xz|{zzy{}}}yv{~{{||||}}}~|z{|}|||zyxwz}~}|~~~~~~~}}}yz{{|{z{{ywz|}~|{zzxwz}{y{}{yyy{~}}}}{z{|}}yutsstuvsooprtttsrtwvtttojloljnqqrrspnqusqqqrromllnpkfeddcbacfhjjjklllos{{rrNWa_]bgc`flkjfcdefhechmmmifffeefhfdddegghhhknlklng`hpqsmhijjjjjiikmorqqqrrsssqpswspqspnqusqsvtsqonmnooomlrx{}{zyxxyz||x{~~}||||}~~~{ywusx}}}}}|}~z~|z}ztvywvz~}|ywy{yxxxxx|~{y||ywuy}||yvutrqsupkjinsqpqsuwwwsolilokgmsqpqspnqurpswvunhikmojfedde`\`eefgilomklmv{ooKU^]\_aaaceeecacecbcdfgijhgggfefgdbcdfhijlnmmjhikfbjqpnkiiihghjklllnqpopqrrrqqqsusprtrpppppqrrrrrpnqtqonmptwz{|zyxxwwy{}|yyz{}||||||{z~~|zzyxxy{{{{|~~~~~}~~~}~zuvvvvy|{{zz{|ywxzxwz~~~~}|~}{zxyyyzxwvurpppooljlnprstuuvvtqolnpmjlooppqppqsqpsvvwrmllnpnlifghfefghhfdgkklkkqxrrIR\\\\\_ca__```bea]afdbehhhhigffgc`bdgjkmquplifghfelsnjjjiifdgkmomknqomoqqrqpqsstrqsvtsolmoooprsurptytponopruy}{zyxvuvx{|zxvwyyz{}}}zx}~~}{z{||}{yyzz{}~~~z{{{}~z~{wutuwxzz{|}}}yvy}yvx{~~y|~}|yvwxxywvspnlosolkjotuvutuvutrpqromlkmpppqrqqppruwyurpnoqqrmhikmoljjke_chjmkimq|vvJRZ]```ab_]_aaacfb_cfffgghhijihfdccehhihhlpmigdgkjinsojlmkijjkklmlknqnlnoqrpnprrsrrstrqomoqpoprvzvstvrooponnnsyz{zywuvwxzz{{zxuy|}~|zyx|~|}~~~}{zz{{{~~|}~~~~~~~}}~|zxwwwwxxyz{{zxwy|yux{|~}z|~}}{yxwwvvwvuttsrrrpnnmqtvyvttuttttqoqtqnnoopqrstqoprsusqpoppomlkjjkmjfjniddehkjhlq{xxKQX^eddba^\_cccegdbdgikighijlkjfbdfiljhfdhligechnmmptoknqmjmqnlkkklnqnlmnpspmoqqrrsrrqponqtqoqsy{vutqnpromjhnuy}|{xvvwvuy}~xrx{xxy{}|{~~{~|xxy{~}}~}~~}|||~z}~|x}}}~|zyxwvvwxzyxxxz|xux|{{|}|{{||}zwxywuuuuuvxxyurqqqqsux|xutttuwyrlt|wrpnopqrtwrnoppqqqqqppliknkijlgcjqmiebfjihlqz{{JS\_cdecbaacecacedcdfghgggggghigeeegjkligjmlkihknmmnpmkkljimqpooomlorqpoorvropqrsqpqrsurpsvtrsuy}zwwwtrqqqqppsuvxz|{{zywv{~}yty}{zzyx{}|z|~~~}~~~}{}~}~~}}}~}}~}{}|ywvtsvyxxwwwvvuz}z{}~~}}}zvvwvuuuuvvwwwwvtrrrtwxzwuuvtsuwsosxsomklnoqrtsrommmoqsuromlllkjhgffilkjhgghhhjkt}xxJU`abdgecegggc`bdddefeefgffdbeiiifdfhlpmkmoopnmmnnnmlllighimqqrrspmptttrptyuqqrsuqmpsvzvsvywuvwy{zyyzxvspruwywvtsx}~{yx}|yw{{xz|zx{~|zz{~}||~~~}~~|{|~~~}}zxvsptyxxwwtqsv}z{}~~zvuuuuuvvwvvvvx{wsssvzyxwvwxurtvtrstpmkijlnqqqsvpkjjmquztnnoljjkfbeihhikklifgigfnw~uuJT_adcabbdgffc`digfeedcddfgfefhggffhjlnlkmprupllmmmmmnplhjkortvtrsttuvwusuwwvusttqmpsuxvtvxvtvxyyzz|}yvtrsuvxxywvxy}~zz{{|~|xz}{yyzyxy{{{|~~~}~~~||{|}}}~~~{yvtruyxxvuuvvw{zuy}~{uuvuuuvxyyxyyxwvuvxwwxywux{ywxzvstvtrrrrqqpqstvrooopqsvtrnkklllhdfhijjkigkokhhhnt~ssKT^bga\_bdgffc`gnkhfdcbbbeiiihgfefhjlllkknrvzrkkllmnoqtojlnqtwzuqv{xvx{xvvvy|xuttqnpsuwvuvwutwzyxz|~{vuttuvwy|{zxv|~z|~zv}~yz|{{yxxxxyz|~~~z~~|zyxwxz{||zyz||||}zwutvyxxusw{yxy{upw~}||}|tuwvuvwy|{{|}xtuwz}yux{xuz~}}~ytvxxxz|ywspruuvutttrqqrtvohknnnjgghjlkkfbmxogiknrrrJS]bgdabdefghecgjgefgdbbbcefgghgffehljhkmlkotqnlkkjklorqooopqsusrtvuuvvutvwy{vrqprsssttsrsutsx}yvx{|~|zxvvuvwy|{zyy|{xz}zwz~|{zyz|zyyyyxz}~zvrtw{|y|~}||{{|~}|zyzzzzzzwtwzxwz~yty}zx}}wwwvuxz{{{{|~xsvyyzwuvxxy|}{ywvux{xtw{xurnqssrtwutrqqqstrpooprmhjmkijkhejokghhkn{~rrJS\agffffffhjhgggdbfjfcbbaacegjihecglhejpjeinoqnkihijmqsusqonoprtrqsusrrsvyyzupnmsyvtsrpoqtsryztw{{{|~{ywvvwz}|{{|||ywy|zxxy{}yvy}|{{{yx{~~~{}~~}|xrlqw~~wy|}|z}}{{|~~||}yvxzxv|}y{}xt{ywvvz~|{{{}ysw|ywvuuuy}}zupsw{xquzwtpmorpotzwusqqqrsuxtqsvoimrlgiljhggghgfhju|ssGR]_bcdccefedcba__^bfc`aaaabdefedccfhfdgkihijiihhgfhkklmnnolilopqnlorqppprttspmllpttsrqnkorpotzwuvxwvxyxwtqrsuxwwxyyyyyz|zxvuwyursuvxvuuuvw{~}z||zz{zz|~|~~~|}}{{{wtpmt|~~|||||{{zz|~}||||||}||zxyzwuwywtuwtrz}yxwtrstvxwvwxz{zxxxvuttuuwxwuwzwtrqsvsqrrqpnmnonmnpqrpoprqpqrolmoljmokgikhefhgfedefr~zrrER_^]_baadgc_^^[XY[_c`^_aaabdcca`bddedcdfiligdaceddhligghjmhdionnkhkonnnnopnmlkkkmpqsqplhlqnlpuuvvvtrsuuuqmnpqssstvvwy{{|zxursuqnmmquroprqqsvy}yvwywvtruyyyz||}}|{|}||{{zzzz|~|{~~|{{|}yuuvspoox~}{yxwxz{|}~}|zx{~}|{zzzwtrqpppqqquztoqspnpsrrrrtvwx{~yutsstuvutojrzyxrllmornkkllmmmllifjonmpspnmmjgghjllmjhikgcfigecbbco{xrrFOYZ[ZY]`bea]ZXWVWX\`\Y[\]^^^^^^]\[]`][]_cgdb`^_`abbcbaaadhebfkhfdbfiihggfefgfedcfhikjihhjmlkmoooprqppqonmmmloqpnnnpssrqqrsqpoonnmlmooonnopnmpsqoqsqonmorstssuwxyxwwwvuttuutttuvwwxz|{zxwxy{|zxvtvxxyyzwtturoprpomlqvvwwxvtsrrrsttuvwvvsprtttsrrrrrolmnmmnooonnnonmnonmmmmnoqsuronnnomlkjgejomljhgghjgefhijiihggfhihgffghggebaabcdfcabccbcddca_^]enu}}vooGMSVYUQX`ac_\WRSTUVY]YUVXZ\ZXYZZ[VRV[WSUX]c`]\\[[]`][[\[[_ca`dhc^]]`dcca`][^a``^\^abcbbeiiiijiihhknnnmmjgjnkilpmjhfkpmjhfjnnnkiknlkjiloljloidfiiiknkihhikmoljmqqrpnprpomlmonmoqrtrqsvvvutrqsvsqmjmpqruxrmmnljlnnnljjknqpomllllmmnnooppplhijklkkkknqlhjljikmhdinlklmlljiiigfhjkmkiijjjfba```beb`becabca_adfhfedcegedba]Y]bbb`^\ZZZ]`]Z[\_ba`ab_\ZX\airux~~~{sllAFLORPNRUWZVRPNOPPQRSQNPSSTRQQQRTPLPTQMOQUYVSSSSTUVVVUTUVXZYW[_[XWVWYYZYYYYYZYYXXYZYYYY\`_]_aa`_^`cbaaa`_adbaabaa`_did`__`abcb`ceeda^acbbaa_]_a``aba``abccbccegffeefhgfedfggfghijihknnnkigehkjjeaeihhjlheddfhfddcbbbcegggfecbbbdfedccehd`__acbaaadheabccccca_accccccc`^_```aaaa``__`a_^][[\[[[[ZZZZ[[YVY[]`]Z[]^`^\\\YWY[YWUTTTTSWZVSSSTUUUUVTRRRUX_fmsuvwxyywtvwwwspicc;@FHKKLKKNQLHIJKLLMKJIHKNMLKJIIKMJGJNKHIJMPMJJJKMLLNQOMORRRPORVTRPONNOQQRTWUTSRSTSSQPPPTXURUYXXVUVXVUUVWXYZYYWUVXXY^c\VWXVUWYXXZ]]^YTVXYZVSTVXZXWVVVWY[[\YVY]]^\Z[]]^^^]]^```__`a``cfffb^\Z]`bd^X]b`__`^][Z`f`[ZYYZZ[\^^_^^[YXW[_\ZXV[`\XVTW[YXWW[`][ZZ\^[YZ[ZYZ\[ZZZWTVXY[ZYWUVXVTVXY[YWWXTQSVSPRTTTQNPSUXSOSWXYWUVXVUUUPLKKMONMQUPLKKJIJKJJIIJLMOU[eokhgfmunhlqnkhf`ZZ \ No newline at end of file
diff --git a/2004/i/nono/src/ovision/test_ovision.cc b/2004/i/nono/src/ovision/test_ovision.cc
index 05647fa..8d517b0 100644
--- a/2004/i/nono/src/ovision/test_ovision.cc
+++ b/2004/i/nono/src/ovision/test_ovision.cc
@@ -1,23 +1,29 @@
#include "ovision.h"
#include <iostream>
+#include <stdlib.h>
int
main()
{
OVision ovision;
- ovision.TakeShoot ();
+ while (1)
+ {
+ ovision.TakeShoot ();
- /// Analyse une image
- ovision.Update ();
+ /// Analyse une image
+ ovision.Update ();
- /// Affiche d'info sur l'update
- ovision.ShowInfo ();
+ /// Affiche d'info sur l'update
+ // ovision.ShowInfo ();
- double x, y;
- if (ovision.GetBall (x, y))
- std::cout << x <<"----" << y << std::endl;
+ double x, y;
+ if (ovision.GetBall (x, y))
+ std::cout << x <<"----" << y << std::endl;
+
+ sleep (1);
+ }
return 0;
}