@Rob , can I just get a step by step of what to do to upload my image to the database ? Like what folder i’d have to upload it in etc . Thanks
This topic isn’t that simple and it’s probably not going to be practical to provide a simple list for something complex. If you can’t answer this question yourself, you probably need to learn more about how web servers work, where your files are located, how to secure those folders and more.
But in a quest to be helpful. Your script exists in a folder. I don’t know where this is, which is what makes it hard to answer. But your script is using a relative path: uploads
Here is the relevant code:
move\_uploaded\_file($file\_tmp,"uploads/".$file\_name);
When you don’t have any characters like slashes, dots, double dots, etc. at the beginning of the path name, it means start in the folder I’m in, look for a folder named “uploads” and put the file there.
So wherever your script lives, there needs to be a folder named uploads and that folder has to be able to be written into by the web server. Without logging in to your server, looking at the folder with the script, looking to see if there is an uploads folder and that it has the write file permissions on it (and our forums are not the place to be teaching server file systems and permissions.
You are going to have to spend the time learning this part of your system if you’re going to be successful with this or partner up with someone who knows server-side processes who can manage your server’s for you.
Rob
I just tried this code and still no change in results .
if(isset($\_FILES['image'])){ $errors= array(); $\_FILES['image']; $file\_name = $\_FILES['image']['name']; $file\_size = $\_FILES['image']['size']; $file\_tmp = $\_FILES['image']['tmp\_name']; $file\_type = $\_FILES['image']['type']; $file\_ext=strtolower(end(explode('.',$\_FILES['image']['name']))); $extensions= array("jpeg","jpg","png"); if(in\_array($file\_ext,$extensions)=== false){ $errors[]="extension not allowed, please choose a JPEG or PNG file."; } if($file\_size \> 2097152) { $errors[]='File size must be 2 MB'; } if(empty($errors)==true) { move\_uploaded\_file($file\_tmp,"uploads/".$file\_name); $store = $mysqli-\>prepare($con,"UPDATE users SET userPic=? WHERE username=?"); $con-\>prepare($con,$store); echo "Success"; }else{ print\_r($errors); echo"it failed"; } }
I changed up my PHP code but nothing still isn’t happening . I looked in my system folder and there was still no picture . Do you think I should try to debug the PHP side or the Lua side first ?
You should debug your PHP side first, but I’m not convinced you’re looking in the right place or if you even have a folder in the right place.
What folder is your PHP script in on your server?
Look there. Is there a folder named “uploads” in that folder?
Does that folder have write permission for the script owner?
That’s where I would look first.
Rob
It’s in the hash folder
There’s an upload.php file
I don’t know how to do that
I would suggest that you look at the PHP side first. Put the image (as ASCII) in the body, then POST it to the server.
Try using Chrome-postman to POST the image-data to your PHP server, to see whether the PHP is able to capture it properly. If this works, then start looking into your lua code, to see whether it is POSTing the correct data.
Also try looking into the webserver (e.g. Apache) & PHP logs where it may give you a clue.
My Lua code to upload files (and images)
local filename = 'set your self' localDir = 'set your self' local siteURL = 'set your self' local networkListener = 'function, set your self' local mime = require "mime" local path if localDir ~= nil then path = system.pathForFile( filename , localDir ) else path = system.pathForFile( filename ) end local fileHandle = io.open( path, "rb" ) if fileHandle then local params = { headers = { ["Content-Type"] = "multipart/text", }, body = mime.b64( fileHandle:read( "\*a" ) ), progress = "upload", } io.close( fileHandle ) continue ... local downloadID = network.request( siteURL, "POST", networkListener, params) end
Sample PHP code (note base64 ):
\<?php $saveToFolderFullPath = '/public\_html/'; $newFilename = 'testImage\_' . date( 'his' ) . '.png'; // JPG, or some other extension // echo $newFilename; $imageData = file\_get\_contents('php://input'); $fullPath = $saveToFolderFullPath . $newFilename ; echo $fullPath; $img\_file = fopen ( $fullPath, 'wb'); var\_dump( $img\_file ); if( $img\_file ) { $result = fwrite ( $img\_file , base64\_decode( $imageData )); echo $result ; fclose ($img\_file); } ?\>
Postman :
I don’t know how to put the image in ASCII in the body and then post it to the server
I have added a simple PHP script to my post above.
You can try using the Lua code above to get your own text, or you can use this ASCII image-text below for your testing. Please note it has been base64, so you will need to process (using base64_decode ) it in your PHP
"\/9j\/4AAQSkZJRgABAgEBLAEsAAD\/4RE6RXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAcAAAAcgEyAAIAAAAUAAAAjodpAAQAAAABAAAApAAAANAALcbAAAAnEAAtxsAAACcQQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzADIwMTU6MDk6MTMgMDI6MDY6MTEAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABkKADAAQAAAABAAABkAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABAEAAAAAAAAAEgAAAABAAAASAAAAAH\/2P\/gABBKRklGAAECAABIAEgAAP\/tAAxBZG9iZV9DTQAB\/+4ADkFkb2JlAGSAAAAAAf\/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM\/8AAEQgAoACgAwEiAAIRAQMRAf\/dAAQACv\/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5\/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14\/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x\/\/aAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU\/\/0PVUkznNa0ucQ1rRJJ0AAWTkfWGlri3GrNsfnk7W\/wBnRz3JKbuZ1HGwwPVJL3atrbq4jx\/k\/wBpZzvrG+fbjiPN+v4MWU512ReXGbLrnfMk8NWrV9XXFgN1+155axsgf2nfSSUuz6xe79Ljw3uWOk\/5rms\/6pamLl0ZVfqUO3Dhw4IPg5v5qx8roFtVZfRZ6xbqayIcf6hH\/UrPxMqzFuF9WpiHNPDm\/uuSU9cksH\/nFkf6Bn+cf\/Ipf84sj\/QM\/wA4\/wDkUlO8ksH\/AJxZH+gZ\/nH\/AMil\/wA4sj\/QM\/zj\/wCRSU7ySwf+cWR\/oGf5x\/8AIpf84sj\/AEDP84\/+RSU7ySwf+cWR\/oGf5x\/8il\/ziyP9Az\/OP\/kUlO8ksH\/nFkf6Bn+cf\/Ipf84sj\/QM\/wA4\/wDkUlO8ksH\/AJxZH+gZ\/nH\/AMil\/wA4sj\/Qs\/zj\/ckp3klj0fWGsuAyajWP32HcP7TYa\/8A6tazHse0PY4Oa4S1wMgjySU\/\/9Huev5bi9uG0wwAPt8yfoMP3b1U6f0y3OJcHenU0wXkSSf3WNT9ZY5vUrS7h4a5vw27P+qY5LF6vk4tDaK2VlrZguBkyd3Zw8UlOridFpxcht4se9zAYDojUbZ0C0Vz\/wDzgzf3Kvud\/wCSUmfWHJDv0lTHN8GktP8A0t6SneWVZ0Ch9j7PVe3e4u2gNgbjuge1XMPPx8xhdUYc36dbtHD4qykpyP8Am7R\/p7Pub\/5FL\/m7R\/p7Pub\/AORQb+u5ld9tbWVltb3MEh0w0lv7yh\/zgzf3Kvud\/wCSSU2f+btH+ns+5v8A5FL\/AJu0f6ez7m\/+RROldTyM22xlrWNDGhw2g9yR+cXLTSU5H\/N2j\/T2fc3\/AMil\/wA3aP8AT2fc3\/yK10xIAkmAOSUlOT\/zdo\/09n3N\/wDIpf8AN2j\/AE9n3N\/8itA5uEDByKgf67f71Ou+m3+bsa\/+qQfyJKcz\/m7R\/p7Pub\/5FL\/m7R\/p7Pub\/wCRWukkpyP+btH+ns+5v\/kUv+btH+ns+5v\/AJFa6SSnmeodLtwgLA71aSY3xBaT9HeP5X76P0HLdXecRxmu2XMHg8e50f12rU6qAenZE6+wn5jVc\/04x1DHj9\/8oKSn\/9Lrur\/8p3\/2P+oYreB0bGycSu977A54JIaQBoSO7SqnV\/8AlO\/4t\/6hi2ujf8m0fA\/9U5JSD\/m9h\/6S372\/+QQcn6vtFZdi2OLxrssiHeQc0N2raSSU8hj5FmLc2+uQ6s+5vEj8+ty61j2vY17TLXAEHyK5TN\/puR\/xr\/yrpcD+g43\/ABTP+pCSmrZ0HEstfY6y0GxxeQC2Jcd2nsUf+b2H\/pLfvb\/5BaiSSmnhdMownvfU57i8Bp3kHjX81rVZttrprdba4MY0S5x4Cd72VsdY87WMBLnHgALmOodQszrZMtpaf0Vf\/ox\/\/Cf+e0lNvM69c8lmIPTZ\/pHCXH+qw+1n9tZlj7LnbrnusPi8l35VEAkgAEuJgACSSewAWnjdBybQHXuFDT+b9J\/z\/MZ\/00lOZA8E21szGviugH1ew41stJ8ZA\/IxCu+rrImi5wPhYA4fezYkpoY3VM7HI22Gxn7lnuHyd9Nq3MDqmPmDaP0dw1NTufiw\/ntXPZWJkYj9l7Ns\/RcNWu\/quQgS1wc0lrmmWuGhB8Qkp7JJUOldR+2VFlkDIr+mBpuHaxv\/AH5X0lNXqn\/J2R\/xbvyLnun\/ANPx\/wDjB+Qroeqf8nZH\/Fu\/Iue6f\/T8f\/jB+QpKf\/\/T67q\/\/Kd\/xb\/1DFtdG\/5No+B\/6pyxer\/8p3\/Fv\/UMW10b\/k2j4H\/qnJKbqSSSSnks7+m5H\/Gu\/KulwP6Bjf8AFM\/6kLms7+m5H\/Gu\/KulwP6Bjf8AFM\/6kJKbCSSSSnG+sGUQGYjT9L9Jb8Af0bf873f2FinRWOo2m3PveezywfBn6P8A76i9HoF+ezdq2oG0\/EQGf9N29JTq9K6Y3FYLrhOS8a99gP5jf+\/rRSXO9Y6g++5+NWdtFZ2uj89w+lu\/kM+jtSU7D+p9PrdtdkMnuAZ\/6lGqvpubupe2xvi0g\/kXLU4eVezfRS57B+cIA0\/d3Fu7+yoV2XY92+smq5hg6Qf6ljf++pKetupqvrdVa0PY4QWlcxn4T8LINRJdW73VPPceB\/ls\/OXRYOW3LxmXAQTo9vg4aOCr9bxxbgusj30H1AfIaWf9BJTg42Q\/FvZkN\/MPuHi0\/Tb\/AJq61rmvaHNMtcJB8QVxq6Xotps6dWCZNc1n+yfb\/wBDakpJ1T\/k7I\/4t35Fz3T\/AOn4\/wDxg\/IV0PVP+Tsj\/i3fkXPdP\/p+P\/xg\/IUlP\/\/U67q\/\/Kd\/xb\/1DFtdG\/5No+B\/6pyxer\/8p3\/Fv\/UMW10b\/k2j4H\/qnJKbqSSSSnks7+m5H\/Gu\/KulwP6Bjf8AFM\/6kLms7+m5H\/Gu\/KulwP6Bjf8AFM\/6kJKbCSSSSnj7p9e2efUfP+c5aX1dj7Rf47Gx97pVLqNZqz72Hu8vHwf+k\/78i9HvFOezdo20GsnzPuZ\/0m7ElPTLi3bodM7td3jM+5doud6x09+Pc\/JYJosO5xH5jj9Ld\/Ie73bklO\/T6XpM9GPS2j0442x7Y\/srB6\/6X21myPU2fpI+P6Of+kqlGdmUM2UXOYw\/m6ECf3d4dt\/sobGXZF2xgNtzzJ1kn+U937v8pJTtfV3d9nu\/d9TT47W7lfzo+xZE8ek\/\/qSmwMRuHjMpBlw1e7xcfpFV+t3irAcyfdcfTaPI\/T\/6CSnnBwt\/6vf0Oz\/jXf8AUsWAuk6LUa+nVkiDZNnycfb\/ANDakpL1T\/k7I\/4t35Fz3T\/6fj\/8YPyFdD1T\/k7I\/wCLd+Rc90\/+n4\/\/ABg\/IUlP\/9Xrur\/8p3\/Fv\/UMW10b\/k2j4H\/qnLF6v\/ynf8W\/9QxbXRv+TaPgf+qckpupJJJKeSzv6bkf8a78q6XA\/oGN\/wAUz\/qQuazf6bkf8a\/8q6XA\/oON\/wAUz\/qQkpsJJJJKcX6wYp9mY0cfo7fgT+jd\/nHb\/bWMuxsrZYx1dg3MeC1zT3BXL5+BZhXbTLqnH9FYe\/8AId\/wjf8AppKdrpXUm5dYqtIGSwe4cbgP8I3\/AL+tBcYCQQ5pLXNMtcDBB8QVqY3X8isBuQwXAfnj2u+f5jv\/AANJTqP6V057tzsdk\/yfb\/1G1Hpx6KG7aa21tPIaAJ+KoD6wYJGrbG+RaP8AvrnIV31iqA\/QUuc7xeQ0f9He5JTq22101uttcGMYJc4rmOoZrs3I9Qgtrb7amHsP3nfy3qGVmZOW4OvfIGrWDRo+Df8AvzkEAkhrQXOcYa0akk9gElJMbHflXsx2c2GCfBv57\/7LV1rWtY0MaIa0AAeACo9J6d9jrNlsfaLPpd9o\/wBG0\/8AVrQSU1eqf8nZH\/Fu\/Iue6f8A0\/H\/AOMH5Cuh6p\/ydkf8W78i57p\/9Px\/+MH5Ckp\/\/9brur\/8p3\/2f+oYrmB1jFxsOuixthewEEtAI1JP7yqdZe53UrQeGBrW\/Dbv\/wCqeljdIysqlt9Tq9jpgOLgdDtMwx3gkp0\/+cGF+5b\/AJo\/8kg5P1gYay3Frd6h4e8AAee2XblX\/YGf+9V\/nO\/9JqTPq9lk\/pLa2N7lsuP3EVpKc6iizJubQyS+w6uOsD8+xy65jGsY1jRDWgADyGir4XT8fCYRUCXu+nY76R\/8xVpJSkkkklKULaarq3VWtD2O0LSppJKcDM6DfWS7FPqs\/ccYePg4+16zLGvqdttaa3eDwWn\/AKS7JM5rXja4BwPYiQkp41MXNHJC6w4GCdTjVH+w3+5Erx8eozVUxh8WtA\/Ikp5nG6bm5JGyssYf8JZ7R\/5N3+at3A6VRh+\/+cuOhsI48mN\/MV1JJSkkkklNXqn\/ACdkf8W78i57p\/8AT8f\/AIwfkK6DqpA6dkTp7CPvXP8AThPUMeP3\/wCBSU\/\/1+46\/iObY3MaPY4Blp8CPoOP9adirdP6nbhSzb6lLjJZMEH95h\/76ulc1rmlrgHNcIIOoIPYrIyPq9W5xdjWGsfuOG4f2XSHtSUz\/wCcWL\/orfuZ\/wClEv8AnFi\/6K37mf8ApRVf+b2X\/pa\/+kl\/zezP9LX\/ANJJTa\/5xYv+it+5n\/pRL\/nFi\/6K37mf+lFV\/wCb2Z\/pa\/8ApJf83sz\/AEtf\/SSU2v8AnFi\/6K37mf8ApRL\/AJxYv+it+5n\/AKUVX\/m9mf6Wv\/pJf83sz\/S1\/wDSSU2v+cWL\/orfuZ\/6US\/5xYv+it+5n\/pRVf8Am9mf6Wv\/AKSX\/N7M\/wBLX\/0klNr\/AJxYv+it+5n\/AKUS\/wCcWL\/orfuZ\/wClFV\/5vZn+lr\/6SX\/N7M\/0tf8A0klNr\/nFi\/6K37mf+lEv+cWL\/orfuZ\/6UVX\/AJvZn+lr\/wCkl\/zezP8AS1\/9JJTa\/wCcWL\/orfuZ\/wClEv8AnFi\/6K37mf8ApRVf+b2Z\/pa\/+kl\/zezP9LX\/ANJJTa\/5xYv+it+5n\/pRL\/nFi\/6K37mf+lFV\/wCb2Z\/pa\/8ApJv+b2Z\/pa\/+kkpF1HqtmaBW1vpUgyWzJcRxv\/8AII3QcR1mQcpw\/R1S1h8Xn2uj+o1Go+rzQ4HJt3j9xg2g\/F87v83YtdlbK2CutoaxohrRoAElP\/\/Q9VSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU\/\/2f\/tF65QaG90b3Nob3AgMy4wADhCSU0EBAAAAAAABxwCAAACgLEAOEJJTQQlAAAAAAAQoZjeOSVIyAz84aqjF4ZGKDhCSU0D7QAAAAAAEAEsAAAAAQACASwAAAABAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAHg4QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA\/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA\/gAAAAAAHAAAP\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/8D6AAAAAD\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/A+gAAAAA\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/wPoAAAAAP\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/8D6AAAOEJJTQQAAAAAAAACACA4QklNBAIAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhCSU0EMAAAAAAAIgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE4QklNBC0AAAAAAAYAAQAAADY4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADPwAAAAYAAAAAAAAAAAAAAZAAAAGQAAAABQBJAGMAbwBuAHMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAZAAAAGQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAGQAAAAAFJnaHRsb25nAAABkAAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVyYXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBlAAAAAEltZyAAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABkAAAAABSZ2h0bG9uZwAAAZAAAAADdXJsVEVYVAAAAAEAAAAAAABudWxsVEVYVAAAAAEAAAAAAABNc2dlVEVYVAAAAAEAAAAAAAZhbHRUYWdURVhUAAAAAQAAAAAADmNlbGxUZXh0SXNIVE1MYm9vbAEAAAAIY2VsbFRleHRURVhUAAAAAQAAAAAACWhvcnpBbGlnbmVudW0AAAAPRVNsaWNlSG9yekFsaWduAAAAB2RlZmF1bHQAAAAJdmVydEFsaWduZW51bQAAAA9FU2xpY2VWZXJ0QWxpZ24AAAAHZGVmYXVsdAAAAAtiZ0NvbG9yVHlwZWVudW0AAAARRVNsaWNlQkdDb2xvclR5cGUAAAAATm9uZQAAAAl0b3BPdXRzZXRsb25nAAAAAAAAAApsZWZ0T3V0c2V0bG9uZwAAAAAAAAAMYm90dG9tT3V0c2V0bG9uZwAAAAAAAAALcmlnaHRPdXRzZXRsb25nAAAAAAA4QklNBCgAAAAAAAwAAAACP\/AAAAAAAAA4QklNBBQAAAAAAAQAAAA3OEJJTQQMAAAAABAgAAAAAQAAAKAAAACgAAAB4AABLAAAABAEABgAAf\/Y\/+AAEEpGSUYAAQIAAEgASAAA\/+0ADEFkb2JlX0NNAAH\/7gAOQWRvYmUAZIAAAAAB\/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz\/wAARCACgAKADASIAAhEBAxEB\/90ABAAK\/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14\/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH\/9oADAMBAAIRAxEAPwD1VJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT\/\/Q9VSTOc1rS5xDWtEknQABZOR9YaWuLcas2x+eTtb\/AGdHPckpu5nUcbDA9Ukvdq2turiPH+T\/AGlnO+sb59uOI836\/gxZTnXZF5cZsuud8yTw1atX1dcWA3X7XnlrGyB\/ad9JJS7PrF7v0uPDe5Y6T\/muaz\/qlqYuXRlV+pQ7cOHDgg+Dm\/mrHyugW1Vl9FnrFuprIhx\/qEf9Ss\/EyrMW4X1amIc08Ob+65JT1ySwf+cWR\/oGf5x\/8il\/ziyP9Az\/ADj\/AORSU7ySwf8AnFkf6Bn+cf8AyKX\/ADiyP9Az\/OP\/AJFJTvJLB\/5xZH+gZ\/nH\/wAil\/ziyP8AQM\/zj\/5FJTvJLB\/5xZH+gZ\/nH\/yKX\/OLI\/0DP84\/+RSU7ySwf+cWR\/oGf5x\/8il\/ziyP9Az\/ADj\/AORSU7ySwf8AnFkf6Bn+cf8AyKX\/ADiyP9Cz\/OP9ySneSWPR9Yay4DJqNY\/fYdw\/tNhr\/wDq1rMex7Q9jg5rhLXAyCPJJT\/\/0e56\/luL24bTDAA+3zJ+gw\/dvVTp\/TLc4lwd6dTTBeRJJ\/dY1P1ljm9StLuHhrm\/Dbs\/6pjksXq+Ti0NorZWWtmC4GTJ3dnDxSU6uJ0WnFyG3ix73MBgOiNRtnQLRXP\/APODN\/cq+53\/AJJSZ9YckO\/SVMc3waS0\/wDS3pKd5ZVnQKH2Ps9V7d7i7aA2BuO6B7Vcw8\/HzGF1Rhzfp1u0cPirKSnI\/wCbtH+ns+5v\/kUv+btH+ns+5v8A5FBv67mV321tZWW1vcwSHTDSW\/vKH\/ODN\/cq+53\/AJJJTZ\/5u0f6ez7m\/wDkUv8Am7R\/p7Pub\/5FE6V1PIzbbGWtY0MaHDaD3JH5xctNJTkf83aP9PZ9zf8AyKX\/ADdo\/wBPZ9zf\/IrXTEgCSYA5JSU5P\/N2j\/T2fc3\/AMil\/wA3aP8AT2fc3\/yK0Dm4QMHIqB\/rt\/vU676bf5uxr\/6pB\/IkpzP+btH+ns+5v\/kUv+btH+ns+5v\/AJFa6SSnI\/5u0f6ez7m\/+RS\/5u0f6ez7m\/8AkVrpJKeZ6h0u3CAsDvVpJjfEFpP0d4\/lfvo\/Qct1d5xHGa7ZcweDx7nR\/XatTqoB6dkTr7CfmNVz\/TjHUMeP3\/ygpKf\/0uu6v\/ynf\/Y\/6hit4HRsbJxK73vsDngkhpAGhI7tKqdX\/wCU7\/i3\/qGLa6N\/ybR8D\/1TklIP+b2H\/pLfvb\/5BByfq+0Vl2LY4vGuyyId5BzQ3atpJJTyGPkWYtzb65Dqz7m8SPz63LrWPa9jXtMtcAQfIrlM3+m5H\/Gv\/KulwP6Djf8AFM\/6kJKatnQcSy19jrLQbHF5ALYlx3aexR\/5vYf+kt+9v\/kFqJJKaeF0yjCe99TnuLwGneQeNfzWtVm22umt1trgxjRLnHgJ3vZWx1jztYwEuceAAuY6h1CzOtky2lp\/RV\/+jH\/8J\/57SU28zr1zyWYg9Nn+kcJcf6rD7Wf21mWPsuduue6w+LyXflUQCSAAS4mAAJJJ7ABaeN0HJtAde4UNP5v0n\/P8xn\/TSU5kDwTbWzMa+K6AfV7DjWy0nxkD8jEK76usiaLnA+FgDh97NiSmhjdUzscjbYbGfuWe4fJ302rcwOqY+YNo\/R3DU1O5+LD+e1c9lYmRiP2Xs2z9Fw1a7+q5CBLXBzSWuaZa4aEHxCSnsklQ6V1H7ZUWWQMiv6YGm4drG\/8AflfSU1eqf8nZH\/Fu\/Iue6f8A0\/H\/AOMH5Cuh6p\/ydkf8W78i57p\/9Px\/+MH5Ckp\/\/9Prur\/8p3\/Fv\/UMW10b\/k2j4H\/qnLF6v\/ynf8W\/9QxbXRv+TaPgf+qckpupJJJKeSzv6bkf8a78q6XA\/oGN\/wAUz\/qQuazv6bkf8a78q6XA\/oGN\/wAUz\/qQkpsJJJJKcb6wZRAZiNP0v0lvwB\/Rt\/zvd\/YWKdFY6jabc+957PLB8Gfo\/wDvqL0egX57N2ragbT8RAZ\/03b0lOr0rpjcVguuE5Lxr32A\/mN\/7+tFJc71jqD77n41Z20Vna6Pz3D6W7+Qz6O1JTsP6n0+t212Qye4Bn\/qUaq+m5u6l7bG+LSD+RctTh5V7N9FLnsH5wgDT93cW7v7KhXZdj3b6yarmGDpB\/qWN\/76kp626mq+t1VrQ9jhBaVzGfhPwsg1El1bvdU89x4H+Wz85dFg5bcvGZcBBOj2+Dho4Kv1vHFuC6yPfQfUB8hpZ\/0ElODjZD8W9mQ38w+4eLT9Nv8AmrrWua9oc0y1wkHxBXGrpei2mzp1YJk1zWf7J9v\/AENqSknVP+Tsj\/i3fkXPdP8A6fj\/APGD8hXQ9U\/5OyP+Ld+Rc90\/+n4\/\/GD8hSU\/\/9Trur\/8p3\/Fv\/UMW10b\/k2j4H\/qnLF6v\/ynf8W\/9QxbXRv+TaPgf+qckpupJJJKeSzv6bkf8a78q6XA\/oGN\/wAUz\/qQuazv6bkf8a78q6XA\/oGN\/wAUz\/qQkpsJJJJKePun17Z59R8\/5zlpfV2PtF\/jsbH3ulUuo1mrPvYe7y8fB\/6T\/vyL0e8U57N2jbQayfM+5n\/SbsSU9MuLduh0zu13eMz7l2i53rHT349z8lgmiw7nEfmOP0t38h7vduSU79Ppekz0Y9LaPTjjbHtj+ysHr\/pfbWbI9TZ+kj4\/o5\/6SqUZ2ZQzZRc5jD+boQJ\/d3h23+yhsZdkXbGA23PMnWSf5T3fu\/yklO19Xd32e7931NPjtbuV\/Oj7FkTx6T\/+pKbAxG4eMykGXDV7vFx+kVX63eKsBzJ91x9No8j9P\/oJKecHC3\/q9\/Q7P+Nd\/wBSxYC6TotRr6dWSINk2fJx9v8A0NqSkvVP+Tsj\/i3fkXPdP\/p+P\/xg\/IV0PVP+Tsj\/AIt35Fz3T\/6fj\/8AGD8hSU\/\/1eu6v\/ynf8W\/9QxbXRv+TaPgf+qcsXq\/\/Kd\/xb\/1DFtdG\/5No+B\/6pySm6kkkkp5LO\/puR\/xrvyrpcD+gY3\/ABTP+pC5rN\/puR\/xr\/yrpcD+g43\/ABTP+pCSmwkkkkpxfrBin2ZjRx+jt+BP6N3+cdv9tYy7GytljHV2Dcx4LXNPcFcvn4FmFdtMuqcf0Vh7\/wAh3\/CN\/wCmkp2uldSbl1iq0gZLB7hxuA\/wjf8Av60FxgJBDmktc0y1wMEHxBWpjdfyKwG5DBcB+ePa75\/mO\/8AA0lOo\/pXTnu3Ox2T\/J9v\/UbUenHoobtprbW08hoAn4qgPrBgkatsb5Fo\/wC+uchXfWKoD9BS5zvF5DR\/0d7klOrbbXTW621wYxglziuY6hmuzcj1CC2tvtqYew\/ed\/LeoZWZk5bg698gatYNGj4N\/wC\/OQQCSGtBc5xhrRqST2ASUkxsd+VezHZzYYJ8G\/nv\/stXWta1jQxohrQAB4AKj0np32Os2Wx9os+l32j\/AEbT\/wBWtBJTV6p\/ydkf8W78i57p\/wDT8f8A4wfkK6Hqn\/J2R\/xbvyLnun\/0\/H\/4wfkKSn\/\/1uu6v\/ynf\/Z\/6hiuYHWMXGw66LG2F7AQS0AjUk\/vKp1l7ndStB4YGtb8Nu\/\/AKp6WN0jKyqW31Or2OmA4uB0O0zDHeCSnT\/5wYX7lv8Amj\/ySDk\/WBhrLcWt3qHh7wAB57ZduVf9gZ\/71X+c7\/0mpM+r2WT+ktrY3uWy4\/cRWkpzqKLMm5tDJL7Dq46wPz7HLrmMaxjWNENaAAPIaKvhdPx8JhFQJe76djvpH\/zFWklKSSSSUpQtpqurdVa0PY7QtKmkkpwMzoN9ZLsU+qz9xxh4+Dj7XrMsa+p221prd4PBaf8ApLskzmteNrgHA9iJCSnjUxc0ckLrDgYJ1ONUf7Df7kSvHx6jNVTGHxa0D8iSnmcbpubkkbKyxh\/wlntH\/k3f5q3cDpVGH7\/5y46GwjjyY38xXUklKSSSSU1eqf8AJ2R\/xbvyLnun\/wBPx\/8AjB+QroOqkDp2ROnsI+9c\/wBOE9Qx4\/f\/AIFJT\/\/X7jr+I5tjcxo9jgGWnwI+g4\/1p2Kt0\/qduFLNvqUuMlkwQf3mH\/vq6VzWuaWuAc1wgg6gg9isjI+r1bnF2NYax+44bh\/ZdIe1JTP\/AJxYv+it+5n\/AKUS\/wCcWL\/orfuZ\/wClFV\/5vZf+lr\/6SX\/N7M\/0tf8A0klNr\/nFi\/6K37mf+lEv+cWL\/orfuZ\/6UVX\/AJvZn+lr\/wCkl\/zezP8AS1\/9JJTa\/wCcWL\/orfuZ\/wClEv8AnFi\/6K37mf8ApRVf+b2Z\/pa\/+kl\/zezP9LX\/ANJJTa\/5xYv+it+5n\/pRL\/nFi\/6K37mf+lFV\/wCb2Z\/pa\/8ApJf83sz\/AEtf\/SSU2v8AnFi\/6K37mf8ApRL\/AJxYv+it+5n\/AKUVX\/m9mf6Wv\/pJf83sz\/S1\/wDSSU2v+cWL\/orfuZ\/6US\/5xYv+it+5n\/pRVf8Am9mf6Wv\/AKSX\/N7M\/wBLX\/0klNr\/AJxYv+it+5n\/AKUS\/wCcWL\/orfuZ\/wClFV\/5vZn+lr\/6SX\/N7M\/0tf8A0klNr\/nFi\/6K37mf+lEv+cWL\/orfuZ\/6UVX\/AJvZn+lr\/wCkm\/5vZn+lr\/6SSkXUeq2ZoFbW+lSDJbMlxHG\/\/wAgjdBxHWZBynD9HVLWHxefa6P6jUaj6vNDgcm3eP3GDaD8Xzu\/zdi12VsrYK62hrGiGtGgASU\/\/9D1VJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT\/\/ZOEJJTQQhAAAAAABVAAAAAQEAAAAPAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwAAAAEwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAgAEMAUwA0AAAAAQA4QklND6AAAAAAAQhtYW5pSVJGUgAAAPw4QklNQW5EcwAAANwAAAAQAAAAAQAAAAAAAG51bGwAAAADAAAAAEFGU3Rsb25nAAAAAAAAAABGckluVmxMcwAAAAFPYmpjAAAAAQAAAAAAAG51bGwAAAACAAAAAEZySURsb25nb9XihQAAAABGckRsbG9uZwAAA+gAAAAARlN0c1ZsTHMAAAABT2JqYwAAAAEAAAAAAABudWxsAAAABAAAAABGc0lEbG9uZwAAAAAAAAAAQUZybWxvbmcAAAAAAAAAAEZzRnJWbExzAAAAAWxvbmdv1eKFAAAAAExDbnRsb25nAAAAAQAAOEJJTVJvbGwAAAAIAAAAAAAAAAA4QklND6EAAAAAABxtZnJpAAAAAgAAABAAAAABAAAAAAAAAAEAAAAAOEJJTQQGAAAAAAAHAAQAAAABAQD\/4RiBaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI\/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA0LjIuMi1jMDYzIDUzLjM1MjYyNCwgMjAwOC8wNy8zMC0xODoxMjoxOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNS0wOC0yOFQyMDoxMTo0NSswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxNS0wOS0xM1QwMjowNjoxMSswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTUtMDktMTNUMDI6MDY6MTErMDg6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFQkZCMkVGMzc4NTlFNTExOEFCMUIzMUZCMDNGOTYwRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1MjE2MURENzdENERFNTExQkQ2MDhFMkZFQjM1NzA0RCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjU2MTYxREQ3N0Q0REU1MTFCRDYwOEUyRkVCMzU3MDREIiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0aWZmOlhSZXNvbHV0aW9uPSIzMDAwMDAwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSIzMDAwMDAwLzEwMDAwIiB0aWZmOlJlc29sdXRpb25Vbml0PSIyIiB0aWZmOk5hdGl2ZURpZ2VzdD0iMjU2LDI1NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7RjkzOUNFNkNERDVFNjA4QjIyMEFDNkQ4RUZBNjNEQTgiIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSI0MDAiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSI0MDAiIGV4aWY6Q29sb3JTcGFjZT0iMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtBNDBFMkU1NjJCODg0OTYzODI0MEZGNjFBNkVFNENBQSIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NjE2MURENzdENERFNTExQkQ2MDhFMkZFQjM1NzA0RCIgc3RFdnQ6d2hlbj0iMjAxNS0wOC0yOFQyMDoxMTo0NSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1QjE2MURENzdENERFNTExQkQ2MDhFMkZFQjM1NzA0RCIgc3RFdnQ6d2hlbj0iMjAxNS0wOC0yOFQyMDoxNDo1MiswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1MTcyNkM3QjdGNERFNTExQkQ2MDhFMkZFQjM1NzA0RCIgc3RFdnQ6d2hlbj0iMjAxNS0wOC0yOFQyMDoyMjo1MiswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRUU4REI0QkI4NTNFNTExOERCQkQwRkI3NDMwOEUyRSIgc3RFdnQ6d2hlbj0iMjAxNS0wOS0wNVQxODoyNToyNyswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzJERENGOEI4NTNFNTExOERCQkQwRkI3NDMwOEUyRSIgc3RFdnQ6d2hlbj0iMjAxNS0wOS0wNVQyMzo0ODoxNyswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNjRBQjcyNTc5NTVFNTExOERDMkU1QTgyRjE4RjMxOSIgc3RFdnQ6d2hlbj0iMjAxNS0wOS0wN1QyMzo1NzozNSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2RDEwNzQ3QTQ0NTlFNTExOEFCMUIzMUZCMDNGOTYwRiIgc3RFdnQ6d2hlbj0iMjAxNS0wOS0xMlQxOTo1MDozNyswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQUZCMkVGMzc4NTlFNTExOEFCMUIzMUZCMDNGOTYwRiIgc3RFdnQ6d2hlbj0iMjAxNS0wOS0xM1QwMjowNjoxMSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9qcGVnIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL2pwZWciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOkVCRkIyRUYzNzg1OUU1MTE4QUIxQjMxRkIwM0Y5NjBGIiBzdEV2dDp3aGVuPSIyMDE1LTA5LTEzVDAyOjA2OjExKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ1M0IFdpbmRvd3MiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBRkIyRUYzNzg1OUU1MTE4QUIxQjMxRkIwM0Y5NjBGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjUyMTYxREQ3N0Q0REU1MTFCRDYwOEUyRkVCMzU3MDREIiBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NTYxNjFERDc3RDRERTUxMUJENjA4RTJGRUIzNTcwNEQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI\/Pv\/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA\/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE\/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC\/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw\/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx\/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy\/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl\/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA\/IT9hP6I\/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v\/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ\/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL\/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE\/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+\/er\/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7\/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j\/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO\/M8Fjw5fFy8f\/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65\/t3\/Af8mP0p\/br+S\/7c\/23\/\/\/\/uAA5BZG9iZQBkAAAAAAH\/2wCEAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBwcHDQwNGBAQGBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP\/AABEIAZABkAMBEQACEQEDEQH\/3QAEADL\/xAGiAAAABwEBAQEBAAAAAAAAAAAEBQMCBgEABwgJCgsBAAICAwEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAgEDAwIEAgYHAwQCBgJzAQIDEQQABSESMUFRBhNhInGBFDKRoQcVsUIjwVLR4TMWYvAkcoLxJUM0U5KismNzwjVEJ5OjszYXVGR0w9LiCCaDCQoYGYSURUaktFbTVSga8uPzxNTk9GV1hZWltcXV5fVmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9zhIWGh4iJiouMjY6PgpOUlZaXmJmam5ydnp+So6SlpqeoqaqrrK2ur6EQACAgECAwUFBAUGBAgDA20BAAIRAwQhEjFBBVETYSIGcYGRMqGx8BTB0eEjQhVSYnLxMyQ0Q4IWklMlomOywgdz0jXiRIMXVJMICQoYGSY2RRonZHRVN\/Kjs8MoKdPj84SUpLTE1OT0ZXWFlaW1xdXl9UZWZnaGlqa2xtbm9kdXZ3eHl6e3x9fn9zhIWGh4iJiouMjY6Pg5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6vr\/2gAMAwEAAhEDEQA\/APVOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV\/9D1TirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf\/R9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX\/0vVOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV\/9P1TirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf\/U9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX\/1fVOKuxV2KuxV2KuxVCalq1hp0XqXcoSv2U6s3yXFWJX\/n+6clbGBYk7SSfE33D4R\/w2KpNN5n16U1a9kHslE\/4iBiqn\/iDW\/wDlum\/4M4q7\/EGuf8t03\/BnFUZa+c9egI5TCdR+zKoP4ji344qyPS\/PNhcsI7xPqsh2515Rk\/PquKslVlZQykMpFQRuCMVbxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv8A\/9b1TirsVdirsVdiqS+ZPMcWkwhEAkvJB+7jPRR\/M3tirzq6u7m7nae5kMsr9Wb9Q8BiqjirsVdirsVdirsVTvy95nudLkEUhMtkx+OM7la90\/5pxV6PBPDcQpNC4eKQckYdCDiq\/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX\/9f1TirsVdiqlcXVtbRmS4lWKMftOQo\/HFUku\/O+hw8hEz3DDpwWgr8244qwG+vJ726kup25SSmp8B4AewxVQxVsAkgAVJ2AGKp1ZeTtculD+ksCHoZjxP8AwIBb\/hcVRf8Ayr\/Wf9\/W\/wDwT\/8ANGKtN5B1oKSJbdiP2Qz1P3oMVSbUNH1LT2pdwNGD9l+qH5MNsVQeKuxVkHlrzT+ikkguFaW2b4o1WlVbvSpGxxVPP+Vg6Z\/yzTf8J\/zVirv+Vg6Z\/wAs03\/Cf81Yq7\/lYOmf8s03\/Cf81Yq7\/lYOmf8ALNN\/wn\/NWKu\/5WDpn\/LNN\/wn\/NWKu\/5WDpn\/ACzTf8J\/zVirv+Vg6Z\/yzTf8J\/zVirv+Vg6Z\/wAs03\/Cf81Yq7\/lYOmf8s03\/Cf81Yq7\/lYOmf8ALNN\/wn\/NWKu\/5WDpn\/LNN\/wn\/NWKu\/5WDpn\/ACzTf8J\/zVirv+Vg6Z\/yzTf8J\/zVirv+Vg6Z\/wAs03\/Cf81Yq7\/lYOmf8s03\/Cf81Yq7\/lYOmf8ALNN\/wn\/NWKu\/5WDpn\/LNN\/wn\/NWKu\/5WDpn\/ACzTf8J\/zVirv+Vg6Z\/yzTf8J\/zVirv+Vg6Z\/wAs03\/Cf81Yq7\/lYOmf8s03\/Cf81Yq7\/lYOmf8ALNN\/wn\/NWKu\/5WDpn\/LNN\/wn\/NWKu\/5WDpn\/ACzTf8J\/zVirv+Vg6Z\/yzTf8J\/zVirv+Vg6Z\/wAs03\/Cf81Yq7\/lYOmf8s03\/Cf81Yq7\/lYOmf8ALNN\/wn\/NWKu\/5WDpn\/LNN\/wn\/NWKu\/5WDpn\/ACzTf8J\/zViqvb+e9EkIEglg8S6VH\/CFj+GKp1Z6hZXic7WdJlHXiakfMdRiqIxV2KuxV\/\/Q9U4q7FWMeYvOMVkzWtjSW6GzyHdEPh\/lNirB7u9u7uUy3MrSyH9pjWny8MVUcVdirsVeh+VfLUVjAl3coGvZBUAj+7B7D\/K\/mOKsixV2KuxVZNBDPE0UyCSNxRkYVBGKvN\/M+gHSbsGKrWk1TETuVI6qfliqS4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqvhmmhkWWF2jkXdXUkEfSMVZhoHnYsy22qEb7JdDYf7MD\/AIlirMgQQCDUHcEYq7FX\/9H1TirGPOPmFrKL6jatxupRWSQdUQ+H+U2KsBxV2KuxV2Kpl5ctUutcs4XFVL82B7hAXp\/wuKvU8VdirsVdirsVSXzhapPoNwSPih4yofAg0P8AwpOKvNMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVZh5L8wsrrpd01Uba1c9j\/J9P7OKs1xV\/9L1LdXEdtbS3EhpHEpdvkoriryS9u5ry7luZjWSVize1egHy6Yqo4qitN0261G6W2tl5O25J2CgdWY+GKs90vydpNmgM8Yu5\/2nkFV+hPs\/fiqcCxsgKC3iAHQBF\/piq5LW2RgyQorDoyqAfwxVUxV2KuxV2KuxVplV1KsAynqCKg4qpfUrP\/fEf\/AL\/TFXfUrP\/fEf\/AL\/AExV31Kz\/wB8R\/8AAL\/TFXfUrP8A3xH\/AMAv9MVd9Ss\/98R\/8Av9MVd9Ss\/98R\/8Av8ATFXfUrP\/AHxH\/wAAv9MVd9Ss\/wDfEf8AwC\/0xV31Kz\/3xH\/wC\/0xV31Kz\/3xH\/wC\/wBMVd9Ss\/8AfEf\/AAC\/0xV31Kz\/AN8R\/wDAL\/TFXfUrP\/fEf\/AL\/TFXfUrP\/fEf\/AL\/AExV31Kz\/wB8R\/8AAL\/TFXfUrP8A3xH\/AMAv9MVd9Ss\/98R\/8Av9MVd9Ss\/98R\/8Av8ATFXfUrP\/AHxH\/wAAv9MVd9Ss\/wDfEf8AwC\/0xV31Kz\/3xH\/wC\/0xV31Kz\/3xH\/wC\/wBMVd9Ss\/8AfEf\/AAC\/0xV31Kz\/AN8R\/wDAL\/TFXfUrP\/fEf\/AL\/TFXfUrP\/fEf\/AL\/AExV31Kz\/wB8R\/8AAL\/TFXfUrP8A3xH\/AMAv9MVd9Ss\/98R\/8Av9MVd9Ss\/98R\/8Av8ATFXfUrP\/AHxH\/wAAv9MVd9Ss\/wDfEf8AwC\/0xVLtR8qaNeof3Agl7SwgIa+4Hwn7sVYFrWiXelXPpTfFG28UwHwsP4EdxiqXYq2jsjq6EqykFWHUEdDir1bRNRGoaZBdftutJAOzrs344q\/\/0\/Rfna5MOguoNDO6R\/8AGx\/4jirzjFXYq9H8maWlppKTsP393+8Zu\/D9gfd8X+yxVPsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqX69piajpk1uRWUDnCe4ddx9\/2cVeVYq7FWcfl7clrW7tido3WRR\/rgg\/8QxV\/\/9T0D+YCsdKtyPsicV+lGpirAsVdirK7bz7JBbxQLZKViRUB9Q9FFP5cVVf+ViTf8sK\/8jD\/AM04q7\/lYk3\/ACwr\/wAjD\/zTirv+ViTf8sK\/8jD\/AM04q7\/lYk3\/ACwr\/wAjD\/zTiq6P8xDX97Y7eKyb\/cVxVNrHznol0QjyNbOegmFB\/wAEKr9+Kp4rKyhlIZTuGG4IxVvFXYq7FXYqxnXPOMmmajJZrarKECnmXIryAPShxVAf8rEm\/wCWFf8AkYf+acVd\/wArEm\/5YV\/5GH\/mnFXf8rEm\/wCWFf8AkYf+acVd\/wArEm\/5YV\/5GH\/mnFXf8rEm\/wCWFf8AkYf+acVT\/wAu62+r2ss7QiExvw4huVdga9B44qm2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvILwAXc4GwEjAD\/AGRxVRxVlv5eMfrV4vYxqfuJ\/rir\/9X0p5otYbjQ7pZWCemvqI57Mm4\/4L7OKvL8VdirsVdirsVdirsVdirsVTPR\/MOo6XIPSfnb1+O3c1U\/L+U\/LFXoukaxZ6pbCe3bcUEkR+0hPY\/wxVG4q7FXYq8386f8pDP\/AKsf\/EBiqRYq7FXYq7FXYqzz8vv+OZc\/8Zv+NFxVlOKuxV2KuxV2KuxV2Koa51TTraouLqKIjqrOAfurXFUvk84eXozT61yP+Sjn8aUxVR\/xxoP88n\/AHFW1876ATvK6+5Rv4VxVFQ+Z9AmNEvYx\/r1T\/iYXFUxinhmXlDIsi\/zIQw\/DFV+KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5Be\/72T\/APGR\/wDiRxVRxVln5e\/72Xf\/ABjX\/iWKv\/\/W9DefLho9GSNf93Sqrf6oBb9YGKvPcVdiqsLO8IqIJCD0PBv6Yq76lef74k\/4Bv6Yq76lef74k\/4Bv6Yq76lef74k\/wCAb+mKu+pXn++JP+Ab+mKqckUsZpIjIfBgR+vFVuKuxVG6Rqtzpl6lzCagbSR12de4P8MVep2l1Dd20dzCeUUqhlPz7H5Yqq4q7FXnfnG2uZNfnZIndSqUZVJH2B4Yqkn1K8\/3xJ\/wDf0xV31K8\/3xJ\/wDf0xV31K8\/wB8Sf8AAN\/TFXfUrz\/fEn\/AN\/TFXfUrz\/fEn\/AN\/TFWc+QopY9OuBIjITNUBgR+yPHFWTYq7FXYq7FUNfanYWEfqXcyxA9AftH5KNzirFdR\/MA1KafBt2lm\/ggP\/G2Kscvde1e8r6905U9Y1PFf+BWgxVAYq7FXYq7FXYqvillicPE7RuOjKSD94xVObHzlrdrQPKLmMfszCp\/4IUbFWT6Z530u6olzW0lP8+8Z\/wBmOn+yGKshVldQyEMrCoYGoIxVvFXYq7FXYq7FXYq7FXYq7FXkF7\/vZP8A8ZH\/AOJHFVHFWWfl7\/vZd\/8AGNf+JYq\/\/9f0B+YP\/HMtv+M3\/GjYqwPFXYq9fsv944P+Maf8RGKq2KuxV2KuxVZNBBPGY5o1ljPVHAYfccVYZ5l8nJDE97pqngnxS2\/Wg7sn\/NOKsQxV2Ks0\/L\/USVn09zXj++hHt0cf8RxVmOKuxV2KuxV2KuxV2KuxV2KuxV2KtO6Ihd2CooqzMaAAdyTirENc88hS0GlgMRsbpht\/sFPX\/WbFWHXFxPcSmWeRpZG6u5JP44qp4q7FXYq7FXYq7FXYq7FXYq7FUy0nX9S0xx9Xk5Q1+KB90P0dj\/q4qz3RPMthqqhFPpXQFWgY7\/NT+0MVTbFXYq7FXYq7FXYq7FXYq8gvf97J\/wDjI\/8AxI4qo4qyz8vf97Lv\/jGv\/EsVf\/\/Q9AfmD\/xzLb\/jN\/xo2KsDxV2KvX7L\/eOD\/jGn\/ERiqtirsVdirsVdirsVeXeZtPWw1meGMcYmIkiHgr70HyNRiqV4qm\/lS4MOv2hrs7GNh481I\/Xir07FXYq7FXYq7FXYq7FXYq7FXYqo3l5bWdu9xcuI4kFST+oeJxV515g8zXWqyGNKxWSn4Ih1and\/H5YqkuKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Krkd43V0Yq6mqsDQgjwOKs58s+bxclLLUGC3B+GKfoH9m8G\/4lirKsVdirsVdirsVdirsVeQXv8AvZP\/AMZH\/wCJHFVHFWWfl7\/vZd\/8Y1\/4lir\/AP\/R9AfmD\/xzLb\/jN\/xo2KsDxV2KvX7L\/eOD\/jGn\/ERiqtirsVdirsVdirsVYB5\/\/wCOzD\/zDr\/xN8VYziqYeX\/+O3Y\/8Zk\/Xir1XFXYq7FXYq7FXYq7FXYq7FVO5uYbaB552CRRjk7HsMVeZ+YNfuNWuqmqWsZPoQ+A\/mb\/ACjiqVYq7FXYq7FV0cckjhI1Lu2yqoJJ+QGKp3ZeS9cuQGeNbZD3lND\/AMCKt9+KpxB+XkYANxeEnusaAfiSf1Yqih+X+j03nuCe9GQf8aYqsk\/L7TCP3dxOp\/yuDfqVcVQF1+Xt2oJtrtJP8mRSn4jniqRX+g6tYVa5t2EY\/wB2L8Sf8EtafTiqX4q7FXYq7FXYqzryj5nNxx0++es4FIJT+2B+yx\/m8P5sVZXirsVdirsVdirsVeQXv+9k\/wDxkf8A4kcVUcVZZ+Xv+9l3\/wAY1\/4lir\/\/0vQH5g\/8cy2\/4zf8aNirA8Vdir1+y\/3jg\/4xp\/xEYqrYq7FXYq7FXYq7FWAfmB\/x2Yf+Ydf+JvirGcVTDy\/\/AMdux\/4zJ+vFXquKuxV2KuxV2KuxV2KuxV2KvPvOHmA31ybO3b\/RID8RHR3HU\/6q\/s4qxvFXYq7FXYqyTQ\/Jl3ehZ7wm2tjuq0\/eMPYH7I+eKs20\/StP0+PhaQrH\/M\/Vj82O+KovFXYq7FXYq7FXYqkWr+T9MvgXiUWtwd+cY+En\/KTp92KsF1XRr\/TJvTukoD9iVd0b5HFUDirsVdirasysGUlWU1UjYgjFXpflfXRqllSQgXcFFmH8w7OPniqc4q7FXYq7FXYq8gvf97J\/+Mj\/APEjiqjirLPy9\/3su\/8AjGv\/ABLFX\/\/T9AfmD\/xzLb\/jN\/xo2KsDxV2KvX7L\/eOD\/jGn\/ERiqtirsVdirsVdirsVYB+YH\/HZh\/5h1\/4m+KsZxVMPL\/8Ax27H\/jMn68Veq4q7FXYq7FXYq7FXYq7FUi836ydP070ompc3NUQjqq\/tN\/AYq83xV2KuxVsAkgAVJ2AGKs78seUktlS91BA1yfiihO4j8CR\/P\/xHFWU4q7FXYq7FXYq7FXYq7FXYqo3dpbXdu1vcxiSJxQqf1jwOKvOfMXl2fSZ+S1ks5D+6l8P8lvf\/AIliqTYq7FXYqjtG1SXTNQiuk3UGkqfzIeo\/pir1WGWOaJJYmDRyKGRh0IIqDiq7FXYq7FXYq8gvf97J\/wDjI\/8AxI4qo4qyz8vf97Lv\/jGv\/EsVf\/\/U9AfmD\/xzLb\/jN\/xo2KsDxV2KvX7L\/eOD\/jGn\/ERiqtirsVdirsVdirsVYB+YH\/HZh\/5h1\/4m+KsZxVMPL\/8Ax27H\/jMn68Veq4q7FXYq7FXYq7FXYq7FXlvmPUzqOrTTKawofTh\/1F7\/AOyPxYqlmKuxV2Ks08leXhxXVLpak\/7yoe3\/ABZ\/zT\/wWKsxxV2KuxV2KuxV2KuxV2KuxV2KuxVSurWC6t3t51DxSCjKcVeX65pE2lX7W71aM\/FDJ\/Mh6fSO+KpfirsVdirPPIeqetZSWEjVktzyjr\/vtj0\/2Lf8SxVlOKuxV2KuxV5Be\/72T\/8AGR\/+JHFVHFWWfl7\/AL2Xf\/GNf+JYq\/\/V9AfmD\/xzLb\/jN\/xo2KsDxV2KvX7L\/eOD\/jGn\/ERiqtirsVdirsVdirsVYB+YH\/HZh\/5h1\/4m+KsZxVMPL\/8Ax27H\/jMn68Veq4q7FXYq7FXYq7FXYqlXme\/NlotxIppJIPSj+b7bfJanFXl+KuxV2Kpl5f0o6nqcVua+kPjnI7IvX7\/s4q9SRFRFRAFRQAqjYADYDFW8VdirsVY7rnnKzsGaC1AubkbNQ\/u1PuR1PsuKsQvvM2t3jH1Llo0P+64jwX5bbn6cVSxndzydix8SanFVWC8u7c1gmeIjujFf1YqnumeeNUtiq3VLuHvy+FwPZh1\/2WKs20vV7HU4PVtXrT7cZ2dT4EYqjMVdirsVSfzVpA1HTH4LW5grJCR1NPtL\/sh\/w2KvMsVdirsVTTy1f\/Utat5SaRu3pS+HF9t\/kfixV6jirsVdirsVeQXv+9k\/\/GR\/+JHFVHFWWfl7\/vZd\/wDGNf8AiWKv\/9b0B+YP\/HMtv+M3\/GjYqwPFXYq9fsv944P+Maf8RGKq2KuxV2KuxV2KuxVgH5gf8dmH\/mHX\/ib4qxnFUw8v\/wDHbsf+MyfrxV6rirsVdirsVdirsVdirDPzCuj\/AKJaA7fFK4\/4Vf8AjbFWG4q7FXYqz\/yHp4h017xh+8um+E\/5CbD\/AIblirJsVdirsVYh5x8yvCW02ycrJ\/x8SqdxX9gHx\/mxVhOKuxV2KuxV2Koiwv7qxuVuLZyki\/cR4MO4xV6fo2rQapYrcxfC32ZY+pVx1H9MVR2KuxV2KvMPNOnCx1mdFFIpf30fyfqPobkMVSnFXYq7FXrelXX1vTba5rUyxqzf61Pi\/HFUVirsVdiryC9\/3sn\/AOMj\/wDEjiqjirLPy9\/3su\/+Ma\/8SxV\/\/9f0B+YP\/HMtv+M3\/GjYqwPFXYq9fsv944P+Maf8RGKq2KuxV2KuxV2KuxVgH5gf8dmH\/mHX\/ib4qxnFUw8v\/wDHbsf+MyfrxV6rirsVdirsVdirsVdirzjzvOZNfkT\/AHyiIPpHP\/jbFUhxV2KuAJNB1xV69p9sLWxt7Yf7pjVD8wKH8cVV8VdiqD1nUBp+mT3Z+1Gv7sHu52X8TiryiSR5JGkclnclmY9SSak4qtxVFafpt5qFwILWMyP1Y9Ao8WPbFWTwfl45QG4vQr91jSoH0kj\/AIjiqD1PyNqNrGZbVxdou5UDi9PZamv34qxogg0PXFXYqn3k3VGs9WSFmpBd0jcduX7B+\/4f9lir0fFXYq7FWH\/mFagxWl2BurNEx+Y5L+psVYVirsVdir0fyTOZNAjUmvou6fjy\/wCNsVT7FXYq7FXkF7\/vZP8A8ZH\/AOJHFVHFWWfl7\/vZd\/8AGNf+JYq\/\/9D0B+YP\/HMtv+M3\/GjYqwPFXYq9fsv944P+Maf8RGKq2KuxV2KuxV2KuxVgH5gf8dmH\/mHX\/ib4qxnFUw8v\/wDHbsf+MyfrxV6rirsVdirsVdirsVdiry3zM\/PXr01rSSn\/AAIA\/hiqWYq7FUTpkYl1K0iPR5o1P0uBir1zFXYq7FWK\/mDcFbC2gH+7ZCx+SD\/m7FWCYq7FXqXl3So9N0yKML++kAedu5cjp8l6DFUzxV2KsD89aTHb3Ud9CvFbmolA6eoN6\/7IYqxbFVyOyOrqaMpDKfAjcYq9gglEsEco6SKGH+yFcVX4q7FUg88Rh9Bdv99yIw+\/j\/xtirznFXYq7FWefl89dMuUr9mblT5oo\/hirKcVdirsVeQXv+9k\/wDxkf8A4kcVUcVZZ+Xv+9l3\/wAY1\/4lir\/\/0fQH5g\/8cy2\/4zf8aNirA8Vdir1+y\/3jg\/4xp\/xEYqrYq7FXYq7FXYq7FWAfmB\/x2Yf+Ydf+JvirGcVTDy\/\/AMdux\/4zJ+vFXquKuxV2KuxV2KuxV2KvK\/MKka5fA\/7+Y\/ea4ql2KuxVGaKQNYsCen1iL\/iYxV6zirsVdirDvzEQlLB+wMoPzPD+mKsLxVtTRgaVoa0OKvYoZUliSVDVJFDKfEMKjFV2KuxViv5gzILC1hNPUeUuPGiqQf8AiQxVgmKuxV67pyldPtVPVYYwfmFGKojFXYqkfnX\/AJR+f\/Wj\/wCJjFXm2KuxV2Ks6\/L0H6jdnsZQK\/JcVZXirsVdiryC9\/3sn\/4yP\/xI4qo4qyz8vf8Aey7\/AOMa\/wDEsVf\/0vQH5g\/8cy2\/4zf8aNirA8Vdir1+y\/3jg\/4xp\/xEYqrYq7FXYq7FXYq7FWAfmB\/x2Yf+Ydf+JvirGcVTDy\/\/AMdux\/4zJ+vFXquKuxV2KuxV2KuxV2KvMfNsXp+YbsdmKsP9kgOKpRirsVVLeUw3EUw6xur\/APAmuKvYQQwBBqDuDirsVdiqQed7I3GitIoq1s4k\/wBj9lv11xV5zirsVZh5S81QQQrp9+\/BE2gnPQA\/sse3+ScVZojq6hkIZTuGBqCMVQ2oapY6fCZbqUIKfCvVm9lXqcVea67rEuq37XDDjGo4wx\/yqP4nviqXYqitMs2vdQt7Vf8AdrhW9l6sfoXFXrYAAoNgOgxV2KuxVjXn6cJpEcX7Usw29lBJ\/GmKvP8AFXYq7FXoHkGLjo0jn\/dk7EfIKo\/XirJcVdirsVeQXv8AvZP\/AMZH\/wCJHFVHFWWfl7\/vZd\/8Y1\/4lir\/AP\/T9AfmD\/xzLb\/jN\/xo2KsDxV2KvX7L\/eOD\/jGn\/ERiqtirsVdirsVdirsVYB+YH\/HZh\/5h1\/4m+KsZxVMPL\/8Ax27H\/jMn68Veq4q7FXYq7FXYq7FXYqwDz9b8NWimA+GaIVP+UhIP4ccVYzirsVdir1Ly1ei70S1krV0T03\/1k+H8aVxVM8Vdiq2SNJI2jkAZHBVlPQgihGKvLNc0mXS9Qe3apjPxQv8AzIen0+OKpfirsVVYbu6hBEMzxg9QjFf1HFVN3d2LOxZj1JNTirWKuxVm\/kbRGjRtTnWjSDjbqf5e7fT0XFWXYq7FXYqwPz\/eiXUIbVTUW6cm\/wBaTf8A4iFxVi2KuxV2KvT\/ACrbmDQLRSKM6mQ\/7Mlh\/wAKRiqbYq7FXYq8gvf97J\/+Mj\/8SOKqOKss\/L3\/AHsu\/wDjGv8AxLFX\/9T0B+YP\/HMtv+M3\/GjYqwPFXYq9fsv944P+Maf8RGKq2KuxV2KuxV2KuxVgH5gf8dmH\/mHX\/ib4qxnFUw8v\/wDHbsf+MyfrxV6rirsVdirsVdirsVdirGfPtkZdLjuVFWtpPiPgkmx\/4YJirAMVdirsVZZ5C1MR3MunyGizfvIf9dR8Q+lf+I4qznFXYq7FUBrOjWuq2hgmFHWpilH2kb+niMVecatot9pc5juU+An93MN0Yex\/hiqAxV2KuxV2Ksp8t+T5rh0utRQx2w3SA7M\/zH7K4qztVVVCqAFAoANgAMVbxV2KqdxcRW8Ek8p4xxKXc+wFcVeS395JeXs11J9uZy1PAHoPoG2KqGKuxVVtbd7i5it0+3K6ovzY0xV69FEkUSRIKJGoVR7AUGKrsVdirsVeQXv+9k\/\/ABkf\/iRxVRxVln5e\/wC9l3\/xjX\/iWKv\/1fQH5g\/8cy2\/4zf8aNirA8Vdir1+y\/3jg\/4xp\/xEYqrYq7FXYq7FXYq7FWAfmB\/x2Yf+Ydf+JvirGcVTDy\/\/AMdux\/4zJ+vFXquKuxV2KuxV2KuxV2KqF\/aJeWc1q\/2ZkKV8CRsfoOKvJJ4ZIZnhkHGSNijjwINDiqzFXYqvgmlgmSaJuMkbBkYdiDUYq9U0bVYdTsI7mOgY\/DKn8rjqP6YqjsVdirsVWTQwzRtFMiyRtsyMAQfoOKsfvfIukTktAz2zHsp5L9zb\/wDDYqlj\/l5cA\/Beow\/ykK\/qLYqqQfl4tQbi9JHdY0p+JJ\/4jiqfab5a0jTyHhh5zDpNJ8TfR2H+xGKppirsVdirsVYZ551wGmlwNWhDXLDx6qn\/ABs2KsNxV2KuxVkvkXTjcao12w\/d2q1B\/wAt9h+HI4q9AxV2KuxV2KvIL3\/eyf8A4yP\/AMSOKqOKss\/L3\/ey7\/4xr\/xLFX\/\/1vQH5g\/8cy2\/4zf8aNirA8Vdir1+y\/3jg\/4xp\/xEYqrYq7FXYq7FXYq7FWAfmB\/x2Yf+Ydf+JvirGcVTDy\/\/AMdux\/4zJ+vFXquKuxV2KuxV2KuxV2KuxVgfnvSTDeJqEa\/urj4ZadBIB\/xsv\/EcVYtirsVdiqZ6Brk2k3gkFWt3oJ4vEeI\/yl7Yq9Ntbq3u7dLi3cSRSCqsMVVcVdirsVdirsVdirsVdirsVdiqR+ZvMcWlwGGEhr6QfAvXgD+23\/GuKvOHd5HZ3Ys7ElmO5JPUnFVuKuxVsAkgAVJ2AGKvUfLmlDTdLihYUmf95Of8tu3+xHw4qmeKuxV2KuxV5Be\/72T\/APGR\/wDiRxVRxVln5e\/72Xf\/ABjX\/iWKv\/\/X9AfmD\/xzLb\/jN\/xo2KsDxV2KvX7L\/eOD\/jGn\/ERiqtirsVdirsVdirsVYB+YH\/HZh\/5h1\/4m+KsZxVMPL\/8Ax27H\/jMn68Veq4q7FXYq7FXYq7FXYq7FUNqVhDf2UtpN9iQUB7g9Qw+RxV5VfWU9ldyWs68ZIjQ+B8CPYjFVDFXYq7FU00PzBeaTNWP95buf3sBOx9x4Nir0TStYsdTh9W1kqR9uI7Op9x\/HFUbirsVdirsVdirsVdirsVY15g8429mGt7ArPddGk6on\/NTYqwKaeaeVppnMkrmruxqScVWYq7FXYqyfyVoZurr6\/Mv+j25\/dg\/tSDp\/wHX\/AFsVZ9irsVdirsVdiryC9\/3sn\/4yP\/xI4qo4qyz8vf8Aey7\/AOMa\/wDEsVf\/0PQH5g\/8cy2\/4zf8aNirA8Vdir1+y\/3jg\/4xp\/xEYqrYq7FXYq7FXYq7FWAfmB\/x2Yf+Ydf+JvirGcVTDy\/\/AMdux\/4zJ+vFXquKuxV2KuxV2KuxV2KuxV2KpB5r8vfpK29e3X\/TYR8I\/nXrx+f8uKvOiCpIIoRsQeoOKtYq7FXYqqW9xPbyrNBI0Uq\/ZdTQ4qyrS\/P0yAR6jF6o\/wB\/R0DfSv2T9HHFWT2XmDR7wD0LpOR\/3W54N9zUxVMMVdirsVWSzwwpzmkWNP5nIUfecVSTUPOmjWoKxObqUdFi+z9Lnb\/geWKsS1fzZqmohow31e2P+6oz1H+U3Vv+I4qkuKuxV2KuxVMNE0e41W9WCPaMbzSdlX+vhir1C0tYLS2jtoF4RRDio\/ifc4qq4q7FXYq7FXYq8gvf97J\/+Mj\/APEjiqjirLPy9\/3su\/8AjGv\/ABLFX\/\/R9AfmD\/xzLb\/jN\/xo2KsDxV2KvX7L\/eOD\/jGn\/ERiqtirsVdirsVdirsVee+fJlk1wKvWKFEb5ks36mxVjmKpj5dUtrliBufWU\/QDU4q9UxV2KuxV2KuxV2KuxV2KuxV2KsW81+VTdlr6xUfWaVmhG3Oncf5f\/EsVYIQQSCKEbEHFWsVdirsVdirsVV4L++txSC4liH+Q7L+o4qi18x66ooL6X6Wr+vFVkmva1JXlfTUPUB2X9RGKoKSWWVuUjs7HqzEk\/ecVW4q7FXYq7FXYqjdK0m81O6EFstabySH7KL4nFXpek6Ta6ZaLbQCveSQ\/advE4qjcVdirsVdirsVdiryC9\/3sn\/4yP\/xI4qo4qyz8vf8Aey7\/AOMa\/wDEsVf\/0vQH5g\/8cy2\/4zf8aNirA8Vdir1+y\/3jg\/4xp\/xEYqrYq7FXYq7FXYqhdT1G206ze6uDRV+yvdm7KPniryq8u5bu7luZTWSVize1e30Yqo4qyHyPZmfWhNT4LZGcntVhxA\/EnFXomKuxV2KuxV2KuxV2KuxV2KuxV2KpB5h8p2+pcri3pDe92\/Zf\/Wp3\/wArFWAXljd2U5guozFIOx7jxB7jFVDFXYq7FXYq7FXYq7FXYq7FXYq7FXYqnOheWL3VGEhBhswfimYdfZB3\/wCI4q9D07TbTT7Zbe1Tgg6n9pj4se5xVE4q7FXYq7FXYq7FXYq8gvf97J\/+Mj\/8SOKqOKss\/L3\/AHsu\/wDjGv8AxLFX\/9P0B+YIP6Mtz29f\/jRsVYHirsVZ3b+fNIjt4o2huCyIqkhUpUCn8+Kqn\/KwNG\/3zcf8Cn\/NeKu\/5WBo3++bj\/gU\/wCa8Vd\/ysDRv983H\/Ap\/wA14q7\/AJWBo3++bj\/gU\/5rxVD3f5hW4Ui0tXZuzSkKB9C8q\/8ABYqxTU9WvtSn9a7k5EbIg2VR\/kjFUHirsVeleUdIOn6YGlXjc3NJJQeoH7K\/QMVTvFXYq7FXYq7FXYq7FXYq7FXYq7FXYqhtQ02y1CH0buISL+yejKfFSNxirC9W8i3sBaSwb6zF19M0Eg\/g2KsalhlhkMcqNHIv2kYEEfQcVWYq7FXYq7FXYq7FXYq7FUbp2j6lqD8bWBnXvIdkHzY7YqzHR\/I9nbFZb9hczDcRj+7H8X+n\/gcVZOAFAAFANgB0AxV2KuxV2KuxV2KuxV2KuxV5Be\/72T\/8ZH\/4kcVUcVZZ+Xv+9l3\/AMY1\/wCJYq\/\/1PSPm2x+t6HOB9uD98lf8jr\/AMLyxV5lirsVdirsVdirsVdirsVdirsVZb5R8rvK6ajepSFfighYbsezEfy+H82Ks4xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVD3mn2N6nC6gSZe3Ibj5HqPoxVj975B06SrWsz25PRW\/eL+NG\/4bFUmuPIesRn9y8U69qMVP3MKf8ADYql8vlfX4vtWTn\/AFeL\/wDEScVUG0PWQaGwuPoic\/qGKrk0DW36WM4\/1kZf1gYqi4fJ\/mCWn+jemD3d0H4Vr+GKpna\/l9dsQbq6SMd1jBc\/eeOKp7Y+TtEtCGaI3Eg\/amPIf8CKL+GKp0iKihUAVRsFAoAMVbxV2KuxV2KuxV2KuxV2KuxV2KvIL3\/eyf8A4yP\/AMSOKqOKss\/L3\/ey7\/4xr\/xLFX\/\/1fRPni7aDRDGpobiRYz\/AKu7H\/iOKvOsVdirsVdirsVdirsVdiqY2Pl\/WL4j0LZ+B\/3Y44JT5tSv0Yqy\/RfJVpZss16RczjcJT92p+R+19OKslxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvIL3\/AHsn\/wCMj\/8AEjiqjirLPy9\/3su\/+Ma\/8SxV\/9b0H5\/jLaRC4\/YnFfkVbFWAYq7FXp+jWumXWlWk\/wBVhYvEvImNPtAUbt\/MMVRv6L0z\/lkh\/wCRaf0xV36L0z\/lkh\/5Fp\/TFXfovTP+WSH\/AJFp\/TFXfovTP+WSH\/kWn9MVVIrO0iNYoI4z4qoX9QxVVxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVbJIkcbSOeKICzHwAFTirx+eT1ZpJKU5sWp8zXFVmKsw\/LuMmW+kpsFjUH5lj\/DFX\/\/X9LeZbI3mi3USirhfUTxqh5fjSmKvLcVdirK\/JnmGO1Y6ddNxhkasEh6Kx6qfZsVZ1irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYn5z8wxxQPpls\/KaTa4Yfsr\/L\/rN\/xHFWDYq7FXonkeyNvo3rMKNcuXH+qPhX9ROKv\/0PVOKvM\/NOjNpupMUX\/RZyXhPYV6r\/sT\/wALiqTYq7FU60vzbq+nosQcTwLsI5amg9mFGxVOF\/MRuI5WALdyJaD7uBxVv\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirv+Vi\/9q\/\/AJLf82Yq7\/lYv\/av\/wCS3\/NmKu\/5WL\/2r\/8Akt\/zZirR\/MU020\/ft++\/5sxVLdR866vdoY4uNrGevp150\/1j\/wAa8cVY+SSancnqcVdiqN0fS5dSv47WOoVjWVx+yg+0cVeqwxRwwpDGOMcahEUdgooBir\/\/0fVOKoPVdLttSs3tpxsd0cdVbswxV5nq2kXmmXJhuV2P93IPsuPEHFUFirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVV7Kxur24W3tozJK3YdAPEnsMVelaBoUGk2vBTzuJKGeXxPgP8kYqmmKv\/\/S9U4q7FVG8srW8gaC5jEsTdVbx8QexxVh+p+QZVYvp0odf98ymjD5MNj9OKseudC1i2JE1nKAP2gpZf8AglqMVQpgnBoY2BHUcTirXoTf77b7jirvQm\/3233HFXehN\/vtvuOKu9Cb\/fbfccVd6E3++2+44q70Jv8AfbfccVd6E3++2+44q70Jv99t9xxV3oTf77b7jirvQm\/3233HFXehN\/vtvuOKu9Cb\/fbfccVd6E3++2+44q70Jv8AfbfccVd6E3++2+44q70Jv99t9xxV3oTf77b7jirvQm\/3233HFXehN\/vtvuOKu9Cb\/fbfccVd6E3++2+44q70Jv8AfbfccVd6E3++2+44q70Jv99t9xxV3oTf77b7jirvQm\/3233HFXehN\/vtvuOKu9Cb\/fbfccVd6E3++2+44q70Jv8AfbfccVd6E3++2+44q70Jv99t9xxV3oTf77b7jirvQm\/3233HFXehN\/vtvuOKu9Cb\/fbfccVd6E3++2+44q70Jv8AfbfccVd6E3++2+44qiYNH1W4NIbSV\/fgwH3nbFU903yHfykPfSLbx90Wjv8Ah8I\/4bFWY6bpVjp0PpWkYQH7bndmP+UcVReKuxV\/\/9P1TirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf\/U9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX\/1fVOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV\/9b1TirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf\/X9U4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX\/0PVOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV\/9k="
At the risk of repeating myself. You have to learn how to manage your web server. I can’t advise you because each web hosting company as a different control panel so I can’t talk you through it.
You can have upload.php in a folder and also have a folder named “folder” in the same place. They would be two different files. You can ask your hosting company or look thru their help learn how to make that folder and set permissions on it.
Until you take these steps your script will not work and you’re going to have to make a folder to store the files under any circumstance.
Rob
Okay i’ll try to do this step by step . First thing I want to clear is, how do I change this code so that it’s not limited to letting a picture with the name gw.jpg be stored but any picture the user uploads can be stored .
local MultipartFormData = require("class\_MultipartFormData") local multipart = MultipartFormData.new() local path=system.pathForFile( "image.jpg", system.TemporaryDirectory ) multipart:addFile("Image", path, "image/jpg", "gw.jpg")
This is not as straightforward an answer as you would like. You have to make some decisions on how you want to do this. The simple way is to have one profile photo per account. You can let them change it, but if you want something like Facebook’s system where you’re storing multiple profile pictures and people can pick from previously uploaded photos, you’re going to need to do a lot more complex setup.
If it were me I would go for the most simple route. You should have a “username” or a unique identifier for each user. At a minimum, you should have their first/last name that you can use to make a file name specific to the user.
Once you know what you have available to use, create a variable called profilePhoto that holds your unique name. For instance if you have a variable named username that has your unique ID, you can do:
local profilePhoto = username .. ".jpg"
Then I suspect you can do:
multipart:addFile("Image", path, "image/jpg", profilePhoto )
Then you will have a unique name on your server to store.
Rob
Yeah the users have usernames
Someone on stack overflow told me :
You should clean up your sources. They are a mess. For example during that action you might notice that networkListener is actually not defined within uploadBinary and consequently your network.request will not have a callback, same for the first network.request which does not have listener defined.
is he right ?
You’re going to have to show us more code. We can’t guess at these things.
Rob
local MultipartFormData = require("class\_MultipartFormData") local profilePhoto = username .. ".jpg" local multipart = MultipartFormData.new() local path=system.pathForFile( "image.jpg", system.TemporaryDirectory ) multipart:addFile("Image", path, "image/jpg", profilePhoto ) local params = {} params.body = multipart:getBody() params.headers = multipart:getHeaders() -- Headers not valid until getBody() is called. network.request("http://hash.x10host.com/cgi-bin/hash/upload.php", "POST", listener, params) local image local mime = require "mime" local bkgd = display.newRect( 0, 0, display.contentWidth, display.contentHeight ) bkgd:setFillColor( 0, 0, 0 ) local myRoundedRect = display.newRoundedRect(10, 50, 80, 50, 12) myRoundedRect.strokeWidth = 3 myRoundedRect:setFillColor(140, 140, 140) myRoundedRect:setStrokeColor(180, 180, 180) local sessionComplete = function(event) image = event.target print( "Camera ", ( image and "returned an image" ) or "session was cancelled" ) print( "event name: " .. event.name ) print( "target: " .. tostring( image ) ) if image then -- center image on screen image.x = display.contentWidth/2 image.y = 59 local w = image.width local h = image.height image.xScale = 0.3 image.yScale = 0.3 print( "w,h = ".. w .."," .. h ) end end local listener = function( event ) if media.hasSource( media.Camera ) then media.show( media.Camera, sessionComplete ) else native.showAlert("Corona", "Camera not found.") end return true end myRoundedRect:addEventListener( "tap", listener ) local myRoundedRect1 = display.newRoundedRect(10, 400, 150, 50, 12) myRoundedRect1.strokeWidth = 3 myRoundedRect1:setFillColor(140, 140, 140) myRoundedRect1:setStrokeColor(180, 180, 180) local Name = "Imagename" function uploadBinary ( filename, url, onComplete ) -- local path = system.pathForFile( filename ) -- local fileHandle = io.open( path, "rb" ) -- if fileHandle then if image then local params = { body = "image\_file=" .. mime.b64(tostring( image )) .. "&image\_filename="..Name } -- io.close( fileHandle ) local function networkListener ( event ) if (onComplete) then onComplete(event); end return true; end network.request( url, "POST", networkListener, params) end end local function networkListener( event ) if ( event.isError ) then print( "Network error!") else -- print ( "RESPONSE: " .. event.response) print ("Working") end end local function Upload () uploadBinary ( image, "http://hash.x10host.com/cgi-bin/hash/upload.php", networkListener) end myRoundedRect1:addEventListener( "tap", Upload )
Yes, your code is not organized well. It’s hard to follow and needs to be reorganized. I doubt it will work as is. However, this isn’t something I can do for you through free forum support. Maybe a community member might be willing to tackle this for you.
Rob
Hi, in case anyone happened upon this forum thread while trying to research uploading images, perhaps consider Develephant’s “Amazon S3 Lite” plugin in the Corona Marketplace. https://marketplace.coronalabs.com/plugin/s3-lite
I ran into complications with PUTs and POSTs of multipart form data too for image uploads,and this plugin solved my problem. You’d have to learn a little about Amazon S3 and its permissions, but it’s worth it
Will this get any image to the uploads folder ?
-- Selection completion listener local function onComplete( event ) local photo = event.target if photo then print( "photo w,h = " .. photo.width .. "," .. photo.height ) local multipart = MultipartFormData.new() local path = system.pathForFile( userName .. ".jpg", system.TemporaryDirectory ) multipart:addFile("Image", path, "uploads/", userName .. ".jpg") local params = {} params.body = multipart:getBody() params.headers = multipart:getHeaders() -- Headers not valid until getBody() is called. end end local function pickPhoto( event ) media.selectPhoto( { mediaSource = media.SavedPhotosAlbum, listener = onComplete, origin = button.contentBounds, permittedArrowDirections = { "right" }, destination = { baseDir=system.TemporaryDirectory, filename= userName .. ".jpg" } }) end
I don’t see where you’re actually telling Corona to upload the file. It looks like you copied code from:
https://stackoverflow.com/questions/45580741/how-to-upload-an-image-using-corona-sdk-lua
There is a network.request() line in that post that’s missing from your code. At some point you have to call your server script to handle the upload.
Also, you’re only showing us the Corona side, not the PHP side. We have no idea of knowing if you even have an “uploads” folder in the same folder where the PHP script runs from and if you have permission to write files to that folder.
Rob
This thread is like me trying to build a house when the closest I’ve got to DIY was putting up a corner shelf badly and owning a box of nails.
It would just end with me limbless in a cement-laden swamp, next to a pile of bricks, wood and glass.
That’s why I don’t build houses, and if I was going to learn I’d probably start with a table rather than an 112-room mansion.