From octave-maintainers-request at bevo dot che dot wisc dot edu Mon Dec 1 08:17:35 2003 Subject: More Load/Save stuff From: David Bateman To: octave-maintainers at bevo dot che dot wisc dot edu Date: Mon, 1 Dec 2003 15:00:54 +0100 --+ZmrHH5cGjskQnY1 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Dear All, Ok, I've bitten the bullet and have been working of distributing the HDF5 code into the classes so that they can also be used with user defined types. The idea being that the HDF5 format would become the default octave binary format. The attached patch, against 2.1.52, is where I'm upto, and includes all of the things from my previous e-mail, plus the changes for the HDF5 class and code for load/save of structures and lists in ascii format and cells in HDF5 which weren't present in the previous code. I had to make a major change to the HDF5 format. The problem is that in the current scheme the type of the variable is derived from the type of the saved variable in the HDF5 file. This is very limiting in that another user type might very well use the same format. Thus there needed to be a means of including the octave type in the HDF5 file. The way I attacked this is that can be seen in the following example. Consider saving a scalar value "a=1" with "save -hdf5 hdf5.mat a". An "h5ls -r -d" on the file will show that the original file has the format. /hdf5.mat/a Dataset {SCALAR} Data: (0) 1 I propose to change this to be /hdf5.mat/a Group /hdf5.mat/a/type Dataset {SCALAR} Data: (0) "scalar" /hdf5.mat/a/value Dataset {SCALAR} Data: (0) 1 Where the variable "a" in the HDF5 is now a group containing explicitly the octave type in the sub-variable "type" and its value in the sub-variable "value". This makes the probing code of the type much cleaner and makes it easy to include new types. However, there is a downside. Firstly, the proposed file format is incompatiable with the previous format. Secondly an advantage of the previous format was that HDF5 files generated by other software could be easily imported into octave. Without changes in these other packages this might no longer be the case. What I therefore propose it that we create two new oct-files "import" and "export" that are basically based on the existing load-save code. This then has the dual function of allowing forward/backward compatiability, as well as allowing the importation of foriegn HDF5 files. I'd also suggest moving the matlab file formats to these oct-files, leaving the core load-save functions much cleaner. Basically, the suplied patch is about three quarters of the work needed to arrive at the above. However, I've now come a long way on this code without any feedback, or indication whether this code is likely to be accepted. As I have no desire to see my work wasted, until there is at least some indication of whether this code will be accepted, or what needs to be changed to have it accepted, I won't work on it any further.... Cheers D. -- David Bateman David dot Bateman at motorola dot com Motorola CRM +33 1 69 35 48 04 (Ph) Parc Les Algorithmes, Commune de St Aubin +33 1 69 35 77 01 (Fax) 91193 Gif-Sur-Yvette FRANCE The information contained in this communication has been classified as: [x] General Business Information [ ] Motorola Internal Use Only [ ] Motorola Confidential Proprietary --+ZmrHH5cGjskQnY1 Content-Type: application/octet-stream Content-Disposition: attachment; filename="patch.gz" Content-Transfer-Encoding: base64 H4sICO1Byz8CA3BhdGNoAO19aXPbRrboZ+ZXtJWKLJoQTXCRLMp2yhM7Htdz7HmxnZtbiYuP IiERI5JQEZRk3Yz++zvn9N5ogOAiWc5VJhNJQHejl7NvPYyPj9nubMCSwbx/Ee0262G903yc zgaPx+nuaHjcqQ+cl7vj1Hn/3aNHjwoHqHw8j9i75II1O6yx3210uq191mw0Wt/t7u4uGr3y SzJlL6MBYyEL291mpxuGvPMj+x+aRvPJk6DVaDB6wOCfWTQ/n03xx0V/fAiPruH/3z1gjx+z j6OIHSfjcXIZT0/Y/DJh6fnRLDmfx9MoZYNZ1J9H7J8vf+5A77NZlEbTeX8eJ9OUJcdsDp0v +1d8pEv4PR6PWTpPZhF7Twtig2RyNo6+sP50yGb96UnE5ldnMPDOWT+epfR4PouhyRwH5AMd jxP4xPRk9yyJp3M2PZ8cRbM0gAmkZ9FgHl9E46tqnbF3n37pffzvf71icUozoVlC62gWD/hI +C02T9h5iouc0dT6MIedqH5SZ//sfOy9e/HxzW+vei/ff/rH21fYNMVZ91P2cJicH42jh9U6 H+pdAvswH/XnMOcrNo0GUZr2Z1ewwOkFzI52pA/rHsGSxtGQ9c/nyQSWMeiPx1fs6IpmV+fb nuIWDtgoHvbm8ATPuDfpn0Y9sVs9mvcOvccF0d9VaPkXnSZ/js968ZA9w3WIc9rBJf30/pd/ vf/07mXA0vh/IjilHb6UKgPIqB4SuEkIgd93l4OQLHTgKW4AQiy4gJ5+KFDHUXD2C46dD1Dy 8HPPnY+yyul/pWP3EYpWoxO0OnsZQiE+ouBg1wbZXWPuhNQ5M9+Fme+uN/MWAiyjUaBpPE2j 2ZztiKECtnXUT6OtgAGtczsHeiKH+f3H8SSewwDhqgPEU1jKBGAeBmkuHITGcTd5FzaZXgFA /QQAc9QfnLJhf96HXZ+dD6AxB+OzfpoiCtIrgFY6BNjHYW8afZn38HHAjiJA1Dofj3eXxzUQ Q1NDfTaZV2znIomHVXrLWJdN+xM4KFjJyTg56o/ZznF/nOLK5gN6PEzop2jPmAPNOVCewb+q MYQFVF5QK+weT84SPCU+UfaX3F9GPMEiZ8dxNB5y3E2jOWKq3lXaDOC76fkAsf74fCyOrusM RzskiN1Ffxb34eTpfTofdrtwCvglbHRodLwcRdB+xuI50jC+t/TuKEnG4u9D50NAm88zXwpY PJXEFMBkQh24PNHjHeYDc6A+ntj5RJJpJua38+7T27csPmbTZBpVM9OHPodldjGenp3PbejE fTS3TPKKh0Tn/RKCQTdMuAkM0PBtJnx3DsQZ0GHWB2I8G+ITAQ5bsDlRfDLdYgIBxFbz14SG NCTjTA8ORe8wwkaM7BGWQwvDIRD459F4nKrPA4PDPThHNP1ObLbgD7hUWvhlPB/B46PzkxNg C53X8TyaESmM61EdRooHI2AzJ2OQdIC1JXwYRWVo4+PpEDbsrD8DkJqLVSMYwrLZ+RQnCVAV TYBXIq8nIh8KXu/lAnt7QWu/KbkAfG43RLiPZrNkFtDBNOgbsFZzxvAI+B/waITJqTUL/Dwf ivNcAKt3L355BaJAivBHBAzxGDZsmEwfzmFnB8nJFGhn1ZGRYBKaW9rETjKcExBIzogaw3RS ABg4ePYI8S1gSMrYo+GFwUazBO8RMiX+QXgDIzz1NXoORP1CyE+tZiNoNfek/HQ3tuwO7pUX 3J7A3j0xhA5Y8gukJCweAoTHQExQM4B/Ye+G8UkMeJAmuO4BCJogFQ7ZOE7xIVC4IZBsOUjU n42hL1MSGaAcp4tigxhu6s4D/h2kjbDe7W2Y6u5zQSP+8x/xMk578Pme+PzOBe5QtVr9jjOY v8RP+uxx/IVjpZo9qipn4/4ASWM85d/BjU458p8D+s7SAVCjVI1DH4CdJUZHPXp6PPl9AXut dtBqG7L7V92/r74lXhA7CIN2I5QgRkMCFp5E815y9O94epywHY0JHPrDgG3jm+qhuVh8Uie8 e4Zy6+veyxcfX3x49RHhxtgGvQtKhCFNCqYfqvG0EI9IIkXhl8lZNHWnwychdwInIrs8ZQ38 WOUvDgttoO17TQkLm1zo61/ff/pX7jIzSwK9UH6IlvU6Z1kPdEf8rNmNlvYAlwb/MXbQaHPI X50kQDmBCkb097U5aO4GG6OA2I4r3Sqzyz7wajeeBPvtpgVejoY2GIOwrrQdPA96ojQHufnf w1f/+QKkWJQNem/efWz+/Pb9C9SJ3v326tcPb96/+2DtlzM4jY7dXr1+9StSL+97GlJt7fcR SMVqUMBWJOCwm1GKXGXnKppXYcvPiB4qPZar449BE49OAPsMvXfx9NzPT4fxMT9H+DhJK/Cf MeA5SJpfGOrrwE2ALSlRmnaqoiDtrD9QiuRL3Fp6og5Pbi12QG0MuoDQeErNP1DzGAXKHrBG BGyYzQTORY5q9MYF8Z7PBGRy2Be/yOmPxXy7+gVX/thwPjk71E9xPJgxrVhONsgaIvDRh96L t2+NX3CQSoWQ+1+9l69+fvHp7ceAK2rsUZVt45eqCoEqCnV2w0NO2lEu0TMREFCpAOcDLe6Z PdNr/gs20nvwHAQaIAb0+9NnrFm0H/wk9fP3P31EEH/7/qcXb3v/+PTzzwCrO+JsQH+E/Se5 /rR6WLbPpP/F6aZ7ek/ZPmT5UTGMMwCZm4BjTQd882bJJbdUDpLx+YQgXi+YK1poakrF+91J /98AxNtc3KcXMAJ/qrtOadvh4380PhvLns7gsdjwkP3IW4SfQQ0PjVa/cFSZsB0+T3PjBOw9 mhHvrIPSA7rQtHcRoZZ+K9A4i9YBxckCOHzGWgiISmbzAeI3BnA5n5bfBml7Nl92woPkfDr3 ThdNSbIdi2HHG4fw4yk1PWS1WswPjrazwvjX/4g/U0PxjAbnzzhYVq71+Pxl47MXvvnLUL0M zZcKVkil4Mfbm5yP5zG0NYBU7SoHxEpFGo1OzcPdDe33Yhv5xlhvPEBP0Fj1gaIH3C77symZ ULZQuu6inE36GWDWD8NdmFFd8FhYAFoSfki3ArGTxsyVgOTuRoMjTnoanx0KMV4O36rhgqMp cmJoKz6Q6mlLXgYwOhgngEgmoxOyk0bEfB7+4eOvb969NsUzybuFfUgx6+U49Rps+sESbLrP 0CQDZJHPtmsT+3QMAqIS1HAyppxmUUxqujxxk8jkxVnUgwCoA5pHVeIYehe4kRx3iyRzwtzp +Xi8O49mk3gKL4dVsSTdC0RjbgKazpOueCzOY67t78nZlbC+9z6E6qPwIFVbQM2dWfm5hmhZ wClYLrdIDWahDs5Fgcz+aqw00JIeSj6SSgjhy5LQP1eHqmmWl9EANIU50CRBPhrMzdOWYByN yVSnyP3hkqxiWw+wzUewoPBWAVaqB2LJ/dmsf5UKBx5/RmYCNDWAwq87pai7n42uUnSBMZjD CWj5O2+gUQwMKRB2zjg1eozjk9F8fIUGr3l0fD4O2NH5nCUjIHnjcV0fZjEOyb1DV4wE3DuL UbeGVIWIZKGPiX64qULUHIyAAWu4JKjaZXqZRYKF7GYIFwK+UJQYTerSq5ayGosf4dgBiwOY Px+9cm18RKK35eCA458EbD47j4wJXa+C/2twd4sqFPJ4ZlMTD18fAS5Es12Tt1vDp14xwVpP Wc4uva8Obx+MosEpHal00MCv3D/D/TmmlkzyGjnwycvXn8eogmgvKRya6cWp5iuPQ/W5fHOA KcwuJ2iYVHo1YUOSVVvgMMmlnL9hFIAXP4mnA6lo56K9s1ca7x20V1RB47/VQtGC33s/vfjw UXqk2SPgKjiL6sokQqKgXsu1zUEWWA18u6VNBpVl1bfK8robpwkraW10cCUMBJUVrQMVj2mg stguoEHMbxswQPDRLAJtKsc28DXBEue1PlROFoGk14BQLKHfIdhb1lZQWdZQgD1KmghcecFn KtBKv2kuMKX3HHtBJddYUFnDUlApMhNU/DaCSgb4rTfSTuCCnAVWK5sIKh77QGUVe0AlIyqY E86zD/jUoxLcXkdpFPJ6Lk9Ixt69s2xd0CiaLuxg+kfr80JqqbdgRRlefW0jsvyvtNUzWqJY RONzYCwptP5qfrZEe0lcZy76rgjz/OBJm2T/74f0IQbXEPwfx+PIgPwyMC90UtBCbXAqgvql AX85vYCWtHM+PZ0ml1OScYCgDJXaWbVVgyLDH6xZDiN7H9Iu1AuEfUOSLz1JY27WhEpNhk/B 8Alrhcs0S5hOR61fCPb0+u37f7x4y/pzEF9A8SdqoIBPhB4Kek99e9jSQLktaxzHtwsYKuaj SQf31F/TT0XbSrrBdx1vvyRoAMbkZKbwCwqzQAXGCOT0xgeIOLblnenshp3paDkVsd18WRht TSaUIa1wKgVcHah6dGX2HkbHfeDKMLV4OhBx1BQjPrsAwZcCPHDHZxMKRazyyKn+1BxCfIHv JUbZXcZpVDdnyaP40h418YCI7fmX0tCbDx+3bKj0BDINoa/VBh/UrUjWZ650cGg3NqJWn9l8 wWkoQpCeacnUnh1Fd4mDbOq+piGEb8E4nevXPICnN+mfcclYGxEH57MZhTrNo4mkjoKyjWJk 6DviWxwEVZyiG0+ybQ4kRSO1n2588jauFaT85zZ8Eu7xI1QCA6yj3j8DyEfOijukPTI5JNky CiUXuJe8X5bTJxd1CTI7XEapTNgf1ByXhTInNMH30sZkkmjF67J9LO5hmEhwYqPOidjG3tH5 iVqouYG1Gmfqxo7zoGNAOQypGmPMnQgAnSUYlxwNM3hLoow4PEkIFAXIQJDDMgrJbRaRNL01 l+uepd9sByfsO1FblXMYy2vJrjVWEyWU/i6DmD/ICdHCwKm9g6DdaFmBUyuG8ORFvzzIeM4M SpuNnyoj664j6jpzpc4PpKTrn1kZV0OOp8E/YIHpHsZUhnFmSwpL2OwzpnpriwuN9UpwyTPX Oxu4hMHeku+l5KfkfFhUNWffahlxStqviwQbY6I+tCPeg1y32x0nySlgEE+pwHlYnRXF2KFh 6ihBUvS7w1J9pI39yELWBRVlSdz0hdvtH3SCJzqaUzCW+DhFUWSyDfiAc7QfVkEgOMyLYR6q ZQ4115UsVxADALzfjDhYkoHOZnFC0fZhvVlvwrqHPJAfxT6DXl8Cq4ZFzuU4l8n5eKiyflT8 vkjj4AQdebCi59AgnSNs8SZEsNqdvaC919JRv5vbBJji77//zn5+8/svr+rszckUnXt8Ox48 eMBezE4oW4SlI1rIEXKkSXJBfAd7fxub6IOsJy2ArHZLQ5YREekG0PfH+OAK5z9F+RdwNMCv HYGueVU3gFzmikm8tMRFnUqmXhu2EpF/IuOshyRW1KPJ2fyKpBQHL/l72m0CkYP9oNNo5id6 HDRbQdgMD4xMD53bVGc86eX4fDqgvCAElxQ2NY3Gx5hscA4Hiam3RIApglykK5A3mBQCrSmk Th4HyujwoD808mdkTsI4GRgZCSap2mbzQYBxuCq1DFsYaUnbQgb1vBgmVldSEib9GQgyaY/L NwF/iGHw+JAiXFMj+UGwWTI9coNPNpVxNwxM1o1/6tjj3ZB3os/wx/BtUqSUvE3vbBOFiskG mgsdZH4WSalS4DUjFaEftCQnxI7ByhzvLTXCZz3ua7HEWmM48uyMJgC1YzneOtz4cgZoyY5n yUSzYzsT1GHFNgtWRkWYV42FjsghB7K4J5nDQAyL+tPzM1t54+Zl+O50pgeyJK8PfH1CmkIf CvmwODdrSLuxtI0D9264UpAcreyczEh1mRUrMYLQf4AQQJmWyiymdkV7CwwZw5mRFdOeM6Fy MhqsHPbjEewKPwwbOAgSEIQMhwHss3IXCPXCTCqc48o4uAH4IhJKYI+lXgAPBgggFBvAv10L MfEOXqitqR56VSDYUQ5+WkZTO1cspSnzHElpOqCCK5v+I5Uc4IHxU7veCZW5gdKHyYVAeBNw p3GwbILteqh3J8Cct1fdpE2c009afJYomrb/nmH8NzOVhTkdles6ZqRbAxhNQt6Eks7z2jR5 m3g6cKnvhkFaf7NaYtP88Bz1xz0RnnHzUM1uAsY8sb+bgzYXiOaTMw5s/G8fC/afcZmwfHXA WXcSpohYGSKrnLMIyPGds4o5oMXlyhcyaAFjD6S4IsSK9zmBEgE3RnpYOEkoGG1Bo8i0cjug giWzYSRi+coBpZwiRVk0u+ENUF5hjECp0xKE7APOZso5YqptO53U50nSAzwElAZGzFtJy2au 4wrH7LI0mYjSAphwnjAaxSyHwj8JesWWaQPNDNO/oBDRVEB7KjWwrUKPWv5GUN6Y4uzLZMrJ qFVhWAWdRaa3ycS2xelsrlWUY/CkT4AdMBB1e1Qqx7R6TuqYNCxGBcB0W+vjMFett/SZ8Xye CFsL2d3kY9+YeosotY49frRoo9ijx2sTTnMFN8ahZXDQhFNOX8jSDdPNyTp0U2r+t8YiVxT8 FpVm+VuIfqqLDIRT3FguvzQ7XlXksmPeMBLTDsRcEbwKOLMbFGit18Oo73n1Pa++59V3mFcv Jt/mdAsoN/sWNfZsRaj1WJk70pIcZGW5xPnumowEg6cnNif5S6Z9Sj+D88WqGfyTWahtSise JJc7GbEVNk8yIev1AshqrKl3O0b30DVnm36N/nDIov5gJBOWlHMJF0KlmrBQG45UHHzDmWwm dKTQUIqxLjJLrpqxmaKjhjvfLonvUnPcqd68f4JMFac37h9FlIWnEq5+5L2pxlP6R1MlYqfk w0I+FbCt3g/DrYApe6vhj8DAH8dhowAYl7kTV8kmvLWlAqKp4l7gulQONdV9IMdW1DUXAu0o AHTdiNppUx0kaIdz8fd8z0OzM/rU4TiA5Z3H6Yi8ETpkDfYPZp0wvxura4EfbQXuSU7wIY8q W1WewyAtH8LwMLz3TqjdreETK8QntjQ+6WBBP1KZIWvSonTmEc51u26Xu40BsWIix0fRSTy1 GouYthhjXiZ1iimrOiimnOD02+4ubhDhP8fLzOx5+HKcqgHQF6jQFG1msAniPGQw6NG/o8H8 x6VQzQ6ZQlF6OqcMV8C/qsK8Sf00uuIoCfjINoSIKsmvVrPKBWjwzQDrySwG5nA5S6YnnE+A hCrkzi2sGSrmZhxNEZboQALAOIQlrDYqk5FR/ZggZHWVyxReazqKrjvl1t/eRvRAz6LolIsj OIbyLEnMyJ8ovXTKfYk5w4zi+UNZ3TMgjPCSLxFElyVgJKlaXutMFMAimiQD9DDzqSFnZ62i a5d34yPLRVNLpTjwvzgyoVCD50CB5KLipwjgt7fUrjQmSc7zZ3pn//IQJUFlCD512F82HE4K /75QKAeMLBWQf78gC8CYs5QPzTn7YtzFdzzVtDFAo/OkGey1O0bVyBsPv/hfGnch/jLb+8It iBLxFxaV5W952LDjseYMiQbGLdjRcLIKG/aw4EJSbFJCZEak5biVhx+sGGJhSKBGrIXH4rdg itruI2Jcim2crMBu47PZLPq6ffCG8qopI1X/C0qqq+qMjF3AUnuOWqe3MV+nM4LjvcbmeXm+ o8HhXXJJxIKAgOqvKRoi7UIZ8FAYAP+tEyJy+4WOZXUFh2UZsfjCNhGEm2PJLipvmvfqZdwu F7YAzuY6FpfLxKKvwK1W5oo+Tu7n1DcvXeSw3eHiu11GxZevjBbc7DJa42KXkXWvS9gNn3Qb jfx7XcLGQRCGbR6+iYPTg06og4KBh3JIFCHAGIzS7fLsMc6xJ8mQx63OgQ+gYHQtIs03ePlA DccTlw/UfJcP1IDV1wovH6gtdfkAlfiv8Xj5TZX4t4fzlviveUv8647eEv81t8S//aFyJf5r vhL/eqByJf5rvhL/NQQIGgkzSQCb+JUftbLXldidSfwUfbMZ40KoA2lN/NZ0uouK5rW1K5p7 Z7WSUFxbXSiuLS8U07yZnLcx5HfMuYwA9QB4G8t8gDglKbzimQwSUT5T/OS25JALaCU83O2n gzguugzLbJRPN81Wlf8C3QWpZ3jAms0u/Ns6WEw9vSM091i41211up0CGtrcC1qqcvP38XQw Ph9G7Cls03F8Uh89x6e8QjFF8hst6Eie2734ljoPBwjpz2VUPn4wzI/J3w+Dg30jIB9vW+J3 HSERGEaDeNJXZdzFnUZAV6aKP9I2EFlGlU+E26N1+TeCpTNQHWP0lh2KBQ2j43gasZ9evX3b e/X2Y+/ji9ds6+kgGo93hZ3u+Za6juYTJlLQ57jbjb74ZnpMkmUyibCc2wlP6z0BEWaczKnI PIKmuIPm+/h4Cp/EsOLer//4zZiBeMJe/uNt75cXv7PHwM4a9Qa24Acg7+L4WYizKTEiHDu7 bn1FEeI8/EWvTV8coUAi0SNJbXrB6zR48FLfYuQzxfC07SRlT5+yre9J9O9KVrV1qFLL/e22 VOY3f0HzxAZ/TrfUrUDqSLkLn/6exUDwpsdT2Okdvgj+EoRUrkYj3O03gv39fLgLMRfkIFx0 R5zaViuQgN8tlJmF1YYmo/ZOJiroYAL9fOBGCMhtsYMXhKityxqJVjjGKVc2dwvC0ONaLZu3 rxr/mzf+NzYewE/eGKvsM7N6F84UOgTs3/R9YUv9Eqd8F6pV/lCobMSrYL2iqYCEipyCXbCZ 6jWT+rYzkIMbr6lkE9CCE/lat6CeMAc4DFRYMPcOfoi8BYllXbYrfq3C77PI+AINLfvHE+oP z4r6Y1FLewr8bE5xZ2A0uWEwD5BdJno9CNOVa7X/p2hXVuUP5H51jbuk+GUpZrUGhYynPIl8 15hBfRZxo8apDSMOcJs3bn04jc9Q5QCNkGfc8kJeE15FkgtPQDLYmw/qVi2TzmD5i55qnmHC GgWIziAAPfyz8ZCvR/ok0voJCKYCfGwAJSc11qJ4CP/7z38Y//3PufnH9CGB3aG9Gr4YmP9l /wrJNblEKAgE+ArdODMGKlxXX5LQeQRTP83sNyHK4aF/giDc4jUqfDo/GFP7/iHHiMxCsf0A XTFq9ozp+efOFmAJsxPxcQTc6IrYT4klXCte8gpvhhrMQUL+P6/++7/e//qSjht5K5ejpWuQ n3ggAIczuUhc6ZSmySCmGhi8D8jmfZjjpRCz69RM6GdAZBtP8qlwc28/aO63NP/nn2B//PD9 5z/Yn/PPj06jq8tkNuR/AKXapW/WH/059eXXRXx5PdHLIxRaXE80Q/Vivs1Xo+2wXB6F4c9T bV+hVT1pA+toaDP20pO+rdl6L+9oN4O91r6d80mQA+IysGA08PZPMuneHz79g2fyU8HMF7++ 6r36v2RLCTAtbC9gWzzIc8vyKlpx/0KZ4IonfwEoYTrl4lR54yhtW9/KYEZhSZsJr+hz3I/x xkkMAMCrfUSoKe1bfzrfyi3zvXhBPDzQXpBi5LLaqOLgDTu8KnO2eJpbyPzRfjMjCoDJddBR x1TBM38/IRxsEVWnrgNldXJD5vDrIm1PNHTLeQmBAk/FLZIIpOz5c+YU6RTHkj0Xt+BW4cmI KE3nZLyFCnGHn3Er83Rg1COjj4vZe65+UHM560/jAZXFS1OuaheG9eVNW5yFoY+4lS5XBa82 nimoHDcBXHSLxleFr5/w1jcXuszSinkSp69wW6E8a9dSti1CTfXVihGaEakSGbj/KlRItrPM WRNdpe4ZNzdwrYrbG3DjtClBWjHmTVE+sWp+nvZsgpBs6p1VPf5fZkE8E+cA6CdndZymkLsR /ZqHuvm1/FVBf3ZAG8Bp4Tx4Q0amYBWCcxAz8H5pgH1cksTPihGkgD05/aYRs7O4zlafdvp0 7bLfmyEt5lGuTFcIau8EVeFlp9UprUpkQqIyVjlmm97YiQAme5a9Ns+f7fmszaetNd4Kw16d nvrJqa3kZ3iyoAgWW85SCec0LLAtdRx+5nxn+GXYRAHTuIMhe8iqyv6iI5UNt/RlCXRE6uaE 5/n3qGRC5KYRX/oR6M0k6SYMVbxJ/4sIm7O6H0V4By9IxbSOqdTfzNps+XcONNxbMDC6nlen ahw61xs5/FLfQKC45l9GLW8YxBT3/NvGlwObhtWgcL/w02qrMmy7qNTV5IxGqYWmYCBBmobl ssUDgPs6LzIlA765JkRjVPlUXCGgWDvgIOTKoBiMyHXmzH0LmquqLyCO/gGf/qyMGQaX59MX R5PH4PXJqa1Xxz9RNhzrHpUe3QrRqPo4v3mHBG2u//KI62X4qsRlsWMigAGBS8oMPG66FlZ9 ZWW5r5v791ErjQw6VXh1xdokR0xYYfkaCiAfKktq5KGtji5l7mvLRZZ1cUWi6SqYUlTv2IcX Gxf1Fs1rBdixQHxVeOmgsIAVJbbcsOrvGUYhwAFg1QtRY1oaWNEHS3cQ8zilHRm2iJqIbVjV ghiv2qGZvSsbbEhQk/MskM/wiT2GLvnMu3GfDoawYOxz/8QOWrHL4n3n01WypyXRLAVdJT6+ 4nevkcInrrSl8padg6C1t28Ghiwycq1eJ1CWBuQeOX5SN7U4n0Vvb/8geLLXtq7j9YRzwn8x Ft2KYEKXQWFdHl0ihrwLxTViqPSLtwaMaMALv/hLwEg/D8nmZv0Xk6HsvHvzDigbjl9F/Q1/ URQJqCB/TYPTe/ot2yBGqRxe409CFB0MmFO847piRnGJbSuoTJZxv6LD1ZZgA9fTWlC6DD+4 uHaZkmBVSSm7Ipryv8qGXbaFT1Q/5XwtStXKCpOC1p1P0/gE6/Ry0cYpolYxvs9Jrfg6lU3V Hy5fIktleZjSg+XU5gnuWCmLm2xMXZYem3GZUl7Ddeer+klaF1Gv+WzWXq5cV05lrIUo6Acl zmsKYEixiQW4qw7F4lKAGTM6ZgscBFWhDVAmfJwO2qgE0meHZmVHkERhjSE42cgOYCwjZ/8X lHLKQWhuVfEeg0vZhuIgPLWP7OR5iiyY9qc9UJwxwsDNn5fu9qE3Y16ymGQ6vpLMI2EUmgKS wrv+OysxXgT+mbkAJa5+GBoO8yH5y4eF7vLhYaZGefb4rOtMHNxZfNGDqKlL8Rg9TPcHOoRO Wb1ZaPXTky5VbQAjfWAzYdNkzYFJ/4pNYSupCCxycdT6t2zN3JzCMyJOnproi7dhOfKxoEKV H3yFwawYfBWBQH4iaDYRFM5e5CRp0ryhMPYYbXVwi7kmt36WJlZFlTnycYT3tyNzkCofZoV5 D6gg+ehPr3qCv2ECFrTpgQJLA1li/bqAkgsk19mdF7J7/tmTpbj8oZPf6asfufIRCeEGvQRZ 5pQVRAy3ER6YFDCU/0gckE9wwfaqlIuUXQpvUOiJRCjbA2Pr4aDh/ao9S5RZjpeMCJe/bkcO +iNZNsN0JOGpJLxOhukdUqmtFrAELAP7OgfWiahteEwGD9iRugoXQ4KS1EecliE9JYo85QCi 7ZooBkkzBI2DV7Zm0WpsdPD12Kg38u1BceSbeaArRr49WDPyzbJXe6PdzBYWp1OOJQpAvVGO P7A4/uBucXz/PqyEd0tzfcdd9vVZQcYDZqP4vTCQIwwwuwZBceUB4i+y9IC0EqV1FR8PwDEe 6nD5qi6r3zgI2s2GdVVMSfOSGy7+oChcXEKLyi224MVZqxtKnunsgTVNpHHGdYMRE14sYrNL bFvZTJJRiQSPUZk8ktG6aSSjJbNIWkGrofPw4M92WwIIFj97wHMchrA7HFLGaQ9+E2LPCMMW ZRqEtwELeVJeNv2kJnL1fh4DQ1RxEiqMp1YywUMOs1aCR41P0U7wqC1M8KjJBI/83KbVIkOd NC+Z57WBMFMB+vl5WKY8mzf8uklYycUu2phy86/0+xyU0Q2snNW9bjvsdloL0MXobCatNrqt sNts56NKpxkGHUAqhSz0YM9IWvVnntS4xgA/BYbg1znFhV1UpMuX2MN31KFnmH5XsRLwPHxT JqbmsJLCmezg1ZkG/a2qjEyxQCEa12SuasH6TH9KNqVg+Vnq8ZaeJZIzRc1UrcKqmH/B8fCK AnZWpbfwx4qbfhRP+7Orje967rS9N/iteBSrzN0kmlgf8uWrn97+jjIGSYdIvnU0vOiPSQmJ rJIlpOTDMiRmVEwDRgsIjJ0T3+52DrrtsvRllCUvjU4BJ+40g2Zn3+DF+GDviSWuUR4wmSYQ zZP8ZECLRINQcxx/qfJX6j42E4SXoD+K/OSQHnX09L4Q/w8XIaY5ybJY6Pn+Uphw6EAo7PZF H2/xFUeA0IoxA+9/633873+9evOy9/Ondz99xAqnvRfvXvZevvj4YiFowsd3AZALOaBuUwCk utGKkGoMYIJrs9vpdIHZ5YJrux20DzSwwp+dphYchbC3BV+YRTT+aMt6cTbbTc7nZ+fihSkh btny7Jb7jhec2OKnM49AtcSiOPxKS5NMcULxFFf47uUL9NQ+F9LPy1c/v3kHJ8iDdV68xXCd j+9/VTIudhHdczz1YXs/CDtNo4BFpxG0QkMWEENJXEVxC+1CCQWB4chYuwLBlqSu9Go673/h ie4VdY2q7Ez3C46ji2gsAy4EC/BwAT31mxcufCYF15wgbn70WRR81gSBu5YJIWM2EI0MRdrm NlzvzmWU5haVk0/M2OMas0OPNZVSWqn8Pm+7ZA5Rja2c4lETVqMaK0rwqKG9g0o4eEOVa04o Uk2Z6GBHmKz98JcuArFsrlAt19Zak5a2mvgO7quY5JGcpZ5kYQaKGKsw6UTN5Mh0DFBmxo6b rIE3zNYl7FWYXNgz6ksTulb7XpimAC11X70+8wAMKym09oYw1JjcKfG5zOGvF9stR/GckXFE CuNEs1Wk7QzBWlrcztTZqzmXEY/sYnojVUivlimkZ6GucdmAhwatdbVAbY1rBcTszLWtfKdA zSqbNZIl1V2x3dxSVZV9lHeJgEH5smeWJVH51whoUrXe9QH+IYquDsjgMz4pWLq4NkBjR5mb A2pr3hpQ03OzdzX33oAac3Z+4dUB7rL5Xq56Z4CxP8tcG4DdOMpo/PUU898igNgKbBgNNKZI +caujVgzq8BJFMjsqVtDbhQPDTrpIoxFJBde/lMzC/A55RhHpa//qclch4L7f54LmYU+6ZTg 0yvKX6tj4rJkrCIRazVjhLfIqSZFNjTw4nAOLFSz3CDvanq5SIunLHc1vYJTdTH9UyC/IHvR 789Z0wdWOWewEKq8uQZi3pLa43fFeMXNAVmdHhIQsuu2ly0/JUbQfbnQHJBIRmm7jpghyV+S wyrZto8NUi+SvQX75Ksj6VzsMjA8xZq7TLB5xcttQUuiJjng/Ygpbr7gKRnLoSQzSqVlkZLh 3ZURx8lqVoDzyyRSL8sRi0tUA4IpLZaKPRLxJF8elslQjkhsgWsuoHtJii5dBjCCwfCHh4fs bTKADflN1BIENRK175KWltFiE8iohJ1ltKaZJWMUbKr+XjtD2AnCpuGgowetMM8oOOtf5qn6 WXODJKmbNAz+77EKJnNKsc/aBR2rUgkAXWQGXGgCROvdz7OY+43RhdVtH3Q7e+XgMmv6azQL LdXtVtB+Ypj+WoGu3GqZ/ng82Fcw/fEPk+lvGZtfnrEvDIMw3DORsB00G00LCWUUnpUSmZrG Oo8Z6uZNdEbIeiZcXZrRigKYa05A17KGtrIWNhFz+Eydh1tcyGU40iJV2u6RV1SolKzlX++S Zo47Z98otiA0NmAyKKmv5d5dvZzOxm5AaeMqmwd3bl5j275ljW0tVe3OamS2PvbANJSzDWhh ksAqkfdG1YXtob7Fd4OL0NQXxzdI7WKx3SSJmxTaFwjsi4T1dQR1n5DefFIkpDdAPuiY8gE8 aO7lB1qKEDU0nQEzNNyDXFDvS4wDPW1wL55v0mm/nHCOsYZFwrl4nw+KosFqwrnsbAJjq9vc B/m8QDjvBB1DX8Q/W0v45R2p/Qb98pg3VFY4x53IEc5bB+2gdWBEIrQO9oO9vY5dMWAaXWLZ VZRrrZx+6awqH2rqyLjY5Ft2tBvZW07mlmQc9Eu5rC1X+iqXu6WdPOVytqQHdkG+lnIgL5mr VVM3Gy1M18JyIQ1jRiotS7BxIzNL+JPU1tg6lfblllKsOND9rw5d8FSmlKdQJizACF9YZAvl X/QVpeSPaQOH55PJlZxCmSqVvJlTpFKqAzk1Ks3WdGUMftQuVKkmkFensqYqfNWYW6WSIN9f pLKmKk/VdJkf31irFqjUI/iiQgpLV9pzu3ajSDJlK01sNUNalPlah73IZVogs1QBS9HHH+py vWLYiFPgcrWAEYlrG61uWcsPGrneTLyIwXBvzZACqIcdTbtK1rrxOte60ci1V3htJhj+QXfd iWAG3PbHcstTkLgizFx5OCdBGG9IgiHxPig4IX5lZh3+2bx9x2Nbeb2quql3073VkHRlyV4M nfnNu4+lbUJq+FVsQquvCnnIjGoewexN5+EDw0Ak55ZdXJ51yG8amg2qeWEKUl+Xn7IWt/Gl 536x3ElrieDbOmw6aDH5+7PO/5qkaGWuUydWYt+kvlhFuUX1hLLq0j+aPOYAxTdSOhAIAZJ7 VEZzJ2Y1+Pwjc6BqRkWwLmwz0MERvgAJzEvQTZXRYXE+wTbniCv+M9Yi1HXWc/+6tAkwh1/f XAyQvDWP8+B8i7PCUNXBQKmCcEefRVvf1Mc5VTVPkiiwaa9g0NZdbXM2yyUMPuSWp6lWsQx/ m87KGrn9dK6EhRt1ykJqt6lF5dq2PZ6rzLk7odKlD33tw77Fsx7c/FkPvvZZm9TNGi/vWtdh en6k39O1noI6NQ2nK/EsN9YMN1Wm9gCpmxhGGdjiHCJIpVnsTs1DzlPpiikgQEo5wPcYxayY Zy5zNOwhi3miaQ0R/EWvGLZPzNij+WybM5emNe+Fu9u4r1Uj20R+4anUfslOymt7S2Zq2wsv 0E8Lo9T5FbKYo+FYMpIL3ZeMKQM4P7LDwRDCVppc1LkBXMkZjs20UnhcFfe8ajUe/WjsEwdS 1LJB6Bn3U9js6TD6gjFFqBRHQ/Gha8saltkQtRk25hpN/aY1ZUaYHObHGmrEKRejB8j96R3a U5DfB6w/OwHRJSBL+9buo102j75Qwir8/uf0zzJul1GxX2S0wOkyWq0ygOjr+P9a3XB/af/f /g0G6d07Am/ZEcgrGBX6AlWTAshUbZy71psd+LcEdOr+TrJuu9tqrBuxR6n/6dcL1xPlo0o7 BXnz3AzdThCantCw/SRoPjmQy7bKC4gvizRhSp7CEPA5MsMwYCFqYjTHgng+MZ2bdwaaBfSy xfPM3CvfGFk3i1k+T3P4UmXzpCxga5LZxCkxpr9MnvnKKZEnGe6K5fE4s16tNJ78tL8sniOB 5JSCq7ml4BztOid7a4V6ePmJckvUMKvl1zCzTlU7MResvsjVuYS3UyLWkpGk+ddgOSGkbLkY 0oKLr9aIJS3t/7DIzE26QIxEx7sYWmpMjzSKSf9U7Y7IQMzE3BmfUN03HzhaLubVm554A0Gu sAnirfxi2YXYt8r5WM2CGFi9xKxxwLIIaB+vNHrLmvycLzwKeDBs+WjYnDWvGyZr06I7kdRo 5SOT5YkDvyeCltpbKLIs7hh+DuqIbXkB0/6cu5r1mZvjVX0mHn5GO1a7ww1Esy4TWrzRuGK2 wiJteHQwd9UdePzY4VJdW3JcFKxsznYR8hpWPmXYs7EX79TYHmj8rS5OdRRODsnKB9mEQgvP fdubu7VfJxFRqm6jhcrdaLH+OFoxoFR1z8Q3F4WUHjwJwkZLa1L4d9jOWjeGkbhqhANClf0l T3D3GQvrjUNZD/HedHGbposviyqNqRYFgPdlrSpjurtjtggV3K4Vy/zVEg1lLLNlP1jSgLGg 0th+GIT7ZvLhPgY873vtGHyk7KUbimriDY7xwC7UTY/N4tq8gqDVZptNPCGlxs1UVmipVc7G kSZF3rqg+E70Jh/jVDtGFrgjcnwXOYGfMnTUsJ+YUcUVrzlExR2SswLWWxQaWGjiyL8JoMZM v/zqpo41bgKwp8DP5lS4TXzmj2y4AGOntZpRD0DuV1e9B7iax9PzyOuzOJURvnoG6v7UUxtG ikT1rN3gb1ANz1dXP7emfhkDYH5J/dra5fRdrFzLIFV0L4MDRCtWA3Sh5G5F1a8cVO+Tsosu KFdbbRb+s8yRqc86vOxV5Nz16gmGvs66Jx2ZP8dY+pXL3C1vubu9YndrGfBsYJkUU5z7Unj3 pfC+vVJ4jjfj2yqIV9YGbs01z/79DZm/b836nbWWruFtyAwjSYtjBHZCeHJ5+IJagkyb9jJG eXcqZex7lXzTPBr3Jty299RO0dNb737S8Bw76/cFHxeOcntOgEUy470z4Jt3Btx25cev4hu4 Lxu5TNlIVwy2NSZFjWcR2V2WKiC5jJOFlfOy4DSq5QtK5sWDXn8l/wou7DuWR2WLgifL2cBH iwzUo4UW8NFaBnDX8dJpqLA/r+23gZ4Ww/NCD5rlXC/iWHcN+11YBz3n3gmzjBNms4G7hlOn GGDHsFFFLhvxPh9cRYPV/ISys114pnHQDQuuR2sd4NWBRhmWoL3vddbQ6I6r5nx6GU+Hu1hV c01nzSKnC3696jhoCm7ysfqBzIU/tuTPHJdN+wDvxjEvx8GSNM0nvnqR5l1xPlETv7Oe6Xqh 2dpIoqDPsTH8/xnDXx0jj7Jwj6PpyXwkDNfQvM4f+GzXPg+O1eOQ1WpxVjoCDp+OkvPxkF0S k6dOWC2iN++fkJUczY39o2hMaRSysMaP2ttgZWsKM182YTM25KbiajG4LTsxT8r0bnalqEKM x9ggS8VYZWKWj4/kIFLebg07v66hmh8e7B78QiZnHDO/kAu9tZVDL9QV13CBUXKLuPhqsxhn apVnUfDlVmihaZgVWgTQZIu0rFugxYABWXjFSW3CfxDi+2eg88G2z5tVz/04bgkTmsozuZX5 XspC870kbaXu6fGVLyEAw/oltDIxJ16zxEGHm65YIg8Tc+L0sgpLlGymSolBtpe38Lua/21U HCmTn0/4kc3PL81Avk1+oFMdrax9U5MzOcPWlllCjCfu+4RUkw2ITxRk9a2Vgm8wiI0aqVZI kT3Mh5hFObLkLGI7OzeUelr1+0xNGiySS6uZa3TyckE3kAe6ZG6nzQA2lNu5TtgjF/aLNY3R AjVmxVRO0ddUYsJuo1V4q2XYaARhw0zlxAehXcpV6HuoEUoCVPIiVmx+X851E7ctACZ9lCwJ 2JPwMXMvaH0BTM7605PCy8dlg3y4lC1W069VbycastVtFaQZt8OgbcQB4p9PNhcNuZQSTQtY RYumjhjpgj9Rj+a2yzxNutk+CJqdtnknMqy62TCLuxZq07JKAjAPILjc5s9tyRMuGMIBcGRg bz7UrRhJMkbCX9C9p5oXqFYkX6CB+eGfjYcWy4rT+kk0lxGFWfWISvw9hP/95z+M//7n3Pxj +pC4yaG9Gr4YmP9l/wpln6PoJJ6SVx/wAdkbw4q39Yys7RcwSCw7PPRPEMQ9zD/k0/nBmNr3 D7lDPLNQbD/ApAg1e+Agav65swXx62SakP4UXUSzK5A0pyclluBXjAnIbj7u71f8DBOOhBP3 kgBhnMdoYWxRp1+cl+N4Es/pLf/NeR2T32JWx5+Z62+3vqexAz4IWiaEJVjlW+be74H9bMsO W9SFPrJkn1i5S1a9SEQcZDkTBwCZsyXUXaI8SvHA446ueHjMTlWUSrTR3EoTpZA4GmTN20fk RG44YVTwxuNkPE4uEZdAbgVtbQ5NU8Z1RvSocTfZLDqbRSmsGogeEBOh6gFN4QOBsnUZjxH+ k1kk2SxfB7l72Q4ixjhCUnrM43Pgi7tnCbnxSBFPq3VBit99+oV4BG4pfoUmAI2iGdBb8jTD TqFuh9QIv9iHz+xE9RM5QMYPbYY5PeRA9xA+9w7EBfhCH057egXkBcXp/uxKjGLEDbE+rGoE KI3H1D+fJxOk/aDNXCGE4PxspkDyC/ypHeUc57mbnEs3sCDuJ3M0enKGy2Apqbrjin56/8u/ 3n9695KXGU2OpUevyh6xlulU/RhP02g2F351UncQ0FHhh6ZO50BP5DC/P6EIDBCuOoCiNzBI c+EgFjzzMXLVVpN83+c525FHJtTdZzmvGuclNLBSDFy90uBkPKLQVYe5G6/Dzx7ubrxvfvYx +I3kVmdTq/V3v1I6dQ5n/yYDqAxEXA4/lwme0qMVhU4ZrTYdOHWT1SzL1TgsXmMxZVjzaif6 poX4OQE9enIrhfOo7yyZJS3J146eaONzYEw7tP5qfjbXT32B9uSH/mS2PH+7y0f+bNjKyA0q owUGl9Eie86KhkbZ2bY0okGnIKk63OsE4b5ZnwofPAnvLY13KulaIBdX/hYAYbQo0Vq1KADE aK1Ea909k2gdhgWmxYPAtLLhn3tZ06JjQdQvLiSulordoa7H7IGGgk8//fPFr71fXvxexXfi Lib1EHagg8/5KXnNhM1O0GwZuNRs7gdtx2qfZyIUml1hLvTGkqC/fvazcSFsQfLzsHzys5st LHOPh5R6PCzMPB4e3ukM4m8/c9hKGb5PFV4vVfhupgjf8sVbOdnDFSd1uGKX11sqACkvb3hh LJLnDqcVblcSK1z3fqW7lqlcNnTp1tKTlzO0GYnI9wnI9wnIf4sE5G809ZgtZQG2Zrzave43 cK17cf7sTd/sPrnFm93vXpLq3UzGvE+2/OrJljlZlhJlqTTWUimWZVB18TU1WIVrgymVN5w2 uYF0SXk1+CIz02ihHWu0lhnLU6cyLEqXDFtBGD4x7+GAB82DG7yH496oeouVLEVcY4GBVbXI B0zVZDXI1N1tA2sDQLO57gUcQJwvXNvql7Pk8sZv3uAUtmzdSnUVhh8J24CEByYS7gfN5t4q yY+idvGN298Mmyj/dSP3aQxv/j6NlcytBaF6w5u7tGJoXVoxvMVLK/zXVWSXvZnbKiTMrnFZ hZxanJoXyy4dbfh17qewcPbumI9uPk6rpDrsEUlXUYnZDejEXCP2UMCbV4i3b1EhtjB0NYX4 zuq9BcE0bHMRMcNF9wdsRu/aHhJUPN3wIhTN1ctYpHuZtHBTMSsyS2eRqDlaKMuO1hJlM0pW 2AVR9WZq0uyKj94Xofkq+tN8tihCRTcpgDrVZkW40/0dHeqg22kvlf92sESQytmc2xRutLoM JoHJArmwzlVS5JwhgJXwmC7MlsN3ublyYTNohvtGEEzYCdqdjs6VEx/gxg90NMymGLiRkGEQ vxdkzR54hSsqUjKVWXYe4h/j6CIaU6ULJJBFdyPaa1pDo6uU0efwc8KWOBhR6WLj+7ZggwZQ VSUCGzrhPCo0QzYSMReqj6Us+AJ2ZMucsJ3zaRqfINnhZVlwAoNknFqlPHPq7kAHR1Wxi5XM 4adeEx6srE0SB7IygTg4I8AmnfNUxkdcHMRB6rzggVO3gN7owj/PqRjMAv84rqUuBEhZvo5/ LUDxs8orymzw7kAX8MrHbqhzWyNaQ44BuCt/pegLBT3+GIzHj9nvv//Ofn7z+y+v6DfA5mnE VTtQgPskrCcMcy0n/S8CKszeR9ExpmsNE3KqTnUepVUNw0CRHTkjuz4L7gO6Dq2SQawsoEvt XhQdMsJCVqgq5EaQeF0luCoCJBqjFnoK7ohaRDg8FrWvc9E1HxZ5dZ6/hP5SrHBz7HLiVnIK 3leM28wrlWsjNEbYeNQ3EQ//gKl8NnKLKxVzNeKIqkrJ+kurW8b5yTOoSBCYqPg4ffyiuYSD io6uqfAuKgUMdznW7a6dUJwlSw/JKBixiYKuIJzJKjRUnkXPPxbHW7ZIkWOponn0MPgzssN/ YI2Gb34jNw+INSlqcJvhPH7We2fz6VTUnMWFl2To5Hp0OKm6F48bZnBWFBpBlGx6Ph7vgjw0 iafwElQVyUETxpnV8SyZdN10PEyRSM6uRBJn7wPAIz5LSVP/HyuDB2ZUY2FuYp7foKRCkqYi PaPYiCWi9n4EYbrLlrNo5SbcLF82/e9S/r2Av6QYf8kewY7zUy0uboUB296KViVFNZNYzGcD hLcUPhvzCdTwbnKSxAbYBSO1fDTkJvII70D6oF+8u32b3k3mxy2fmajsf8/ypMs+SwG4gGhw KOtaAl/KpQU4tZMMJXNUAGqaW/bfLfefd9yVXNhZyhtWjLGpVCwqS7MB1UkWioRdSrr8qYCC eS+PI6hN0WyBWtszyrGjipZ+22mx8TTV9zE4Epg+IBreFKLyz66I1FYKLbIVP7F1Klka4pdi 9TupHMCFLGviNwNwmXvvr+2EB4lgob9UIafeF9FgLsKhmEEDLGl7GE+sVNbiWC4Ci209wDYf wdHZvlUUlgG4Yvv6eJtmKmqP8GdUZqQ/piKPqk/an0TsbHSVYukOqTrsvMFCldPTKoV5D0ag 7OkO4/hkhPG9l/10Hh2fj4FBnM9ZMmKX0XhcN4GumKooRf6RRuc7SWPuyQz9nm/2IDzYZWo3 6bAkwnqtHEKoc9dt6sgkqD1KSZ/WqnIu5TPu4bwrtG45zeAGMvE36nITnofRQt/EaLH7Y7Se 9yOTLt5eENu4F4TN0Ayrgget5n1s49/GN3c+WOSa4y0KQZM3Wa0spe7uXPyw120X1aVsBG2j Yir+6alLmbnhYdX08aWdcypskZa3hEvO7sgdcfDLlv4txxXXae4FnZaBrJ3mQbC331opBpK+ dLNXQLyXkeNnIr/urNTFD5OCax/0kIDThD7AT2OK36fSj2poWToSg1Umdaqz7MkMpurx3IgB Q9YxD1wU6jOdRdYlAOS92sHWWGEO3ZRcXGc/4kA7DQyIxB2yeu1QkpRyipW8GYJM4ZP6aXTF y4Df3O0QugXPlF8hPlHA0zd2X4QJol/5mogBwuIduiZiwv6YTtBMbCwo/4oI3EGRl7Li/RAc gs5n0QYvieCzMg555yvdEuEs7hauirAI/N/nsgi1kZ4bIxbym78j9yhxj4TLR7a2VJyGEf2S J9AuuE+ikHWscL9EHk+5G1dMuPzi7t0sYUEOiOrPmLhfInOgyUU9Tvk9GSIRH0g+NcYqX0j5 oYXnui6TdmZ73OFbLAwedQeusBBq0WiR3jRaqJitWF9O9c5YDIqvstgPwrBpBurCg2brvsDc nbIXiGLd/TRNBnF/HmPFDDR7Y0o1ySuT/hTLYNs8FenLgmsu8gG2AFJtEA33uq0noP4vBNFs EPm+6ua9K7IVtIx0SPiznU2HfMpB7bn1DMncc2kkyDtn3ZzbB5471ECbEH7lpRtte0Q8/LLL PTf4xjf/vXYY7JnByHvtdrC35wTBx7P5ORAbwyoHAJ340rGZUNQ9eHY2gyV+oRJcptagUE9A p/zYOihYYCpQ6Uaa1J7tPje/k2RvRfQgs+YC1oQXKaPZT5s9EPUXS92+PVpC3M5ZPR9B9nVp R9Fyl5WTcvbAnoCXAmW4oX2dzv8HWb7hfjaEAQA= --+ZmrHH5cGjskQnY1--