{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# HuBMAP - Hacking the Human Vasculature \n## 📊🎯🎭Extended EDA and focus on Datasets and Annotations \n![hubmap-long.jpg](attachment:67dac8f0-993c-4c28-b740-34f240f358c7.jpg)","metadata":{},"attachments":{"67dac8f0-993c-4c28-b740-34f240f358c7.jpg":{"image/jpeg":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAESBLADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD771+If2vdEf3z/Ks5W2nP4Vo69ITq11/vn+VZ4G6tvQ3i9LFe/uEAVW5JrlNZ0uynjd7raVOfvV1d/aB03g/MvSvIvGOr3Mc7xFmCZ6162Eequz1cNZvU+Yv2kPCdjJLcyWqoAOeBXkfgS907Qm3XGxSPWvd/ivALq0uWyGOM8c18geMr5rK/aKN9o54r6eDSPRUIp3PpeP4m6ddoIYHXI44q9aaZa6uRKuGZ+TXxvZ+IrrTrnesnfPWvavhx8XYxLDBPMA/TmupWaPYo4vlXKj37Slh8O8HAq83iRZXJQZrmriT/AISC0WaAg7u4qqsc+nREvnNQ0diXPqb2teNIrLT5QwzJ6Yrk/AK3mueIBcuCkSndzU2k2A1nUW+1cxDP3jxV3Ubw6G7xaWmOMfJW9k1qbRpp7m3491UzFoI3YhRjArxvW74yxMj/AChe5r0axsrmeE3N4Dl+oNcF4800JA/kDJbsK0w1NKWp0RtDY4yxlNveCdRuAPFeh2Pidrq0SLnHTFed+Grae7uvszISQa9H8O+DrqW7UeU23IxXZXaS0CU00dx4GJmuNjJkt7V9JeCfCzXNpvZdoK+leQ+EfBs9hNHK0TALya918G+JolcWZ+VsY6V8vWquL0PKqyufOfxt8Pi1v7hR68V8/wAti0F3u7Zr7p+JXwkm8SSSTxL5hfkYrw/V/wBnfVkmP+iyHn0NaUMa4bmVLEez3PDJ7h5FVctgVFYaNPfXQBUsh74r3LTv2bNYupQDayHn7u016nof7Nx02wR57YiUAdq73mUUtzZ43zPm208DlYlITBxWpa+DrkDCJlj7V9Ff8KidZNqQnArXtfhZcW6bktWY/wC7XBVzCL0Rk8XfqfO+n/DR7ht118ox901LrPhay8PWEzkKCF4Jr6OtfhLdXUpnnjaKJBnkHFfPf7S2t6doEEljazoZAApAPOQMGunCVvaPUmOIcnY+dPEuqNqWrGKMZXd2rQhzZQKMckVzFpcGGY3Djk1u2M1xrMi+Wp2r7V7UnZHr4d3Og07TGvTvk5U12emWUFrENiDPsKzNC8P6hcRoFibZ9K7iw8Py2kIMqtkdq43LU9BtWOduFcuSwIHvUQ1N7dSq557V0V7aFuCuFqneaZEqrtGaLmTmjDiMt3ITk81bh8NTXg3MePer8Fk0Ch1XpVo3kz/JCCT0qXKxzyrW2Oek0OLT3JbbxTZlWZAIYhmuoXw3cXa+ZOpCmq9zpTWIJhjLAe1ZuoR7a6KOi+EpNQdS4HPbFeg6Joo0yELsUbTwa8yg8X6rZ6ksMcLYB6ha9J0TU73UIUM6Fe/SsZz5lY43K7O6sLuSONSR8tGp3CvCwBBJrKuNTW1t1XcAQKwb3xC0eck4Fcvs7swcWyxNG8Um4Hg1o2s6fZSXwCB3NcneeLo1g3FhnpjvXMaj4+wjKj4+hrpp0kdFOkupqeM76KGGSRCPwNeOXevXd1eeXGWIY9q39V1S51S1fDMRmqXhvS0iu1aRQxz6138iSO2yWx0Gg6NcTWolZcvWxJ4bu5UGFwK7HwzpaPbqVTIraltio2iIgfSsJyZDbOP8P6WmnHM7AH3rp7b7JcSKh28+9Y2r2ZRgWYqAaNMBklVk5xxkGuSXvHNORr67YrbxhIhgN6VzbeEZ57oFAdp5rtJCsqKWOSo71a0+/hjlUbQcDFRZIxTOU0vwM9vdLJIBgHvXRaloMC22/CggV00lxC8W9RiuZ1u/PkOi85qozZV2cPcpF55VcZq3pdv9qmEbDgVgXbSWl4ZG+7W1pGporhwQT3rqOiKZpajhJVt0GBnFLe+ELdbMTkjeRSXzrdATQ8uKyLvUtRuJFi52Ci5otHdlWO3jgYgnAXpmnvqkt3/o8RyOnFVdYgnG3YCW9q6DwjoDW4FxOvvzU3VyG7O5zF3pV5HMU5Bbnmnab4Su9WuhG+WBNdxqEK3t6nkqSenFemfDXwI9xKJpIc9+RXLXrKmtGeXiMRyLcxPCPwIia3SWaFckeles6F8I9MsFiYwR71/2a9G03TYbOzRCoBUYxTsxruAxXz9XFy6M+dq4ttlG28OWNpbbFjX8BWPq/hGO6QsiAYrde/2yEU/7U0sZAGa4HWnIxVdvU4OHwQCCQoqSHwqtqcsBtFdVqF99gtyxGDXJz+JTcFlDVvTc2bwlKTKeorFYsSOBXE+JpLbUkKnk1peI9cCJs3fMR61wclxI05YnINepRp9z1KNJ7s5+50KKG9LKMc1cubSO4twmcmn3MM88jFe9NisbkHoa9aKstD2IWiiK38KrOBjpUd94L8qInit2xkmtsCQEelX72+zb5x+FSqjTLVVrY8d1rw3LEWKjgVhrpb85UZ6V61dwLehwQOe9cpfeHGguMiQbevWu2NU6YVGzB0/TplPI4qPWbJZkdQPmx2rpxDHFFgTLkehrn9QnCXBAOSe9VzXN+bmMHRr2XSLxVckLnvXoVzq1vc6cpyORXn2uWEzASquBUuiytdW/lM2ccUciZLhc7DQdYjhuGCDdu9K77Q4kvyFkQfN3rzPQtLktrlW27ga6eXXbvTMNEhAX2rjqRseVWjY7LUvhg02bmMAk88U3StPfT8ibjZUHh74qT3EAt5ck4x0qPxDrNw4JiRhu9K55HPynVvPBNbBAcn0FUYrWJJNzEjnNeeWniLVba72tFIyA+ldVD4kFxDh4yr49KySFynb22o2MKEbwSBWbqviezMTRqQT0ripb5kkOCQGolsxKofdziqjG7BR11KesXzKkzo2FweM1m+EtRR7wMx6GqfiRbkLIkIYg8cVW8KaTeRAtKGXHOa61TVjd00lc9L8Taql7YCFH5xjg1z/h7QUtZxcO3Wue1bxZY6Tcbbm4RR6Macfido8tovlXac/7QpciOdtJnVa/rNvbkgMDWFF4kWeQKi5x6VgXmoxaqodJA+fSotKu47K4zIByetPkN4M7uDXbuUBPLOz6Ump3yG0kDrg7TmtKx1O1m07KxjfjriuL1W7urq4mjVSEPei2p0owra5tU1LfxnNeseG7y3vYliAHQV46dJaK73PxzXofhSdbIIzHHc06m2hMkd1fQx2yBV4GKs6fIjwlXalspbPUcM0i9Ko6rLBay7I3GPavPe+p58yW4VV3hCMD3rlCLi8uZEySoJxWxJOrpwQePWl0u6s4JgJGAJ9amzZiosdoUHkygPgYBpdY8Stany1IOKm1a7s9PiM3mKoxzg1xdtr2h3d9m4v4Rk85etoU0yk0ty9eeLJr2BlPG0cVzmleMbt52ibOAT/OtXWtW8M27rHFqMBZzjhxWroXgzRyFn+1REv8x+f1ro9kkWmjmdb1+SNcsMgVX0H4j6ZZXarclQfeuq1fw5o91I1uLqJSePvivPPEnwV/eC5tZw4PoamxrGZ6bL4y0y9tw1syhj6VVGpfaUY7NyjvivO9J8D6rpcigB3X613MazWFoqvE2cc5osbKTMjxBdOxyuap6dqnlA7hhq07y6t2IV8Bj2pbTw2L3Mir8tFiuW5bh13ybAybiCaw5tIm8V3Qcncuc5NR+I7F7JVhQ/J3rpvA6pBY7iecYosLlRp+HPDlppkPlSMN2MYNLe2UpmfyOV9hVPy7u91YLGxK+1d7pFlFFbHzwC2O9c83rYwnvoeay6TLNMQQfypY9FFk5MgxmuxvmgiuiE249awPEE3mjMWMD0NOAoogbS0MfmIRmoY43mUhucVDplzcHMbE4rUNlMMjHJrVyaNouxkSTLZyYxWtpLR3MqswyKyr7SJJJSzDitPSFWJdnfpzWTk2TN66HR3ulR3WmOwIIA6V4x4n01YXkCDBB616La3t+Wlj58rPaua8Xaabi3YwrmQ9a6acrFQnYreAmMybJCOPU12E3hiK9BKqvSvH/D+rXOjaj5MhKgtg163B4mWCCMh85ABrqlNtaGzqOxS07RX0zV0zyhrovFKRtZghcnHYVnz6iIik8nAxmpv7ds9TtijON3TFcUrs55NnKwSydFBxmtppZ5bLYuRxURiijkGwgr611+g6XHd27HAzipsNHAJfXOmSHllxV+18R/bAUfqaXxfZm3uWVVzz2rAjtJgUMSktT5UVod1o+nmebLDKn1rox4Yt5AGjVQ3tXGadrF1YRr5gI98Gun0zxI7IS2c+9J7GcrWHnwlIbobT8melba+HFtLfzGXJArCPi+VLsAZ610Fvr32uJUfoetcczzpp3M6QQw/O4xj1qrO8OoKVUAj2pPFbuLY+Up5rO8OWF68e8o2KcNmaQLC2strE3lRnFT2Mct3A4kOM101jastq3mxE++KammK8TFBj2FZtu4mjB0q3/syRiRu3dK2xdwwAOw21RuVELLj5j39qztRZ7s7UH5VN2BV8V65Lsk+zucY7UvgiVZU8y65OO5p39lRfZyHOWfoDVe0tmt28pAVzxnFO5orpG9fa3G12I4OCPSrct46W6AD52HNZ+m+GJTcicg465rUkktlmMZPzpxiok2c89B9np1xMhlbODS3WniOLOOT6Vp6Ve/aMQKPbpXQf2LGEQygAE965pTORzZ53ZaZKkpkZODzWvDpY1NGURgMOhrp9SFnDGIogrN0rkdX16XwxbySiI8DIAFaxnoSpu4lzYS2VrJFcAhCDya+YPjb8PUvZDd243ZY5Ar13xJ8e7W7sHhePZPyMEc143P8AFuyuL6SC/OIycjdXtYN63O2nUP0Y8QAf2tdf75/lWarFelaOujOsXX/XQ/yqiVwK+FifLRSQSpvAya5vxX4NttWsWZFHmnuK6JmBzToZgBtPT0rphJxWh1Qly7HhF78FPt1tdefk/KccV8AftH+Dl8I+KZEEZC4ODiv1/wDKjaJhxyPSviz9sj4Iy688d5aJukZD0HvXr0MRK2rOn2kn1PzekmeSYqRxWnocj2+qR4wp3cGvTx+zrrXJeLYSeOa9P8E/sd65q4trgx/KPmzzXpU8WtmaU6jUtz0X4Lo8vhSN5lLjb1xVjxbNHZ20m0h2P3cdq9K0f4eT+BfCP2SRF3qpHSvLPEOlytIdxyGPT0r0KNeEnY+koV+hznhvVxaLKJm3MScA1vaHBJdTPKVJU857Vy9t4TvLjVFVM7M16dbWy+H9KCsoL4xXVOcdkeh7QxJbuV5GgK/KO1cb4gtHyzldwFdtaK+pzNJ5eD9KyrzTZfOYOMilCrZm6mrHlfhdHj8T7mUhC3Svqzw9pVm+kQzooEm3rXz8NOjt9VDbNrbute3+HLl00eNQcrjoKqpKU1uZayZ1+japskaIjcDwKsWnmWOrC4HGcnrXM6bKZbgbeCDzmtWXUyt4kZ56ivDqUpN3OWpTPW9G8co9zBBKQeQM13txZ2t3EsiorZGa+X7/AFmTTtTt2DfxjofavozwZeHVPD6TZydo715NeMoHz+KcobG3HZQQxq0aANTrgo6hWBJ/SqjFymOcDtQF3R5JrynKo2eP9anew2O1i8zhK0obeNI+FAHfNZrTx2qs7sBjvXI+LfiPbaHZyEONxB7130KM5s9Cj7SpqS/Fz4hWPhPw3cFZ0EuCMbhX5ZfEjx4/i7xdeSM+U81sYOe9elftJfFy9vbqaJJSY2Y8bia+ctFie+ufO6MzE8j1r6/A0HB6np0Kb5tTtNJxqEyRkfJmvc/A/hO1t7USlAQQOK8v8H+HzIiOFyfYV7X4bsrhbbYcgCvSqztofU0o8q0Ox0W1tlRQuI+Kk1ryLaPIlVj9a4vXPFMeiQeUG/eg9jzWFBdahrqF1dih9c1xpdSJydzo7vVElOwgADoRVIF5WB2kqOlV4NFulChwcd+K6XS7OIIA2M+9ZuVjnbl3KttEZVClTz2re0jQ0eVD5QVvU1esNNiaRTgcdxXQSeTa7THgkVjKdzlnNonXwwJbTHasC+0QWhZGXK+uK6iHXvKjHtWJd6oLm6IcYjPvWSuzNSbJvD/hDR7pfMliXzR3JqLXJbXRpXWJQEHSq95q1tYIVik5PoawtVkN7bNJI2VHTNaxg7m0Its5nxJ4mZrkeW2F+tO067hvLZmmcZIrmtRWO5vxEhB59a7nRfABurONjKFVlGSTW/JY6lA4+WyF1qCxRkshPYZr1HSPhZps2i/aJ1USY/ipdN8M6boc6PI4eRfQ5rT8TeJIodNxDJtXB4HFJNpmijY8U8cx2eiO9tbIoJOOK4Rby5t3LnIGc1v67N/aeslmPy5NOu9OimtNq43Y7V1xu0dKptq50/gbxudqQvJ3xzXo+oawtvCkhIKkZ61852tlPZ3KmNiMNwBXd3mq3b2Ecb5IA61EqbZlKmzubrV7HWF8suoftz1rX8CWET+YHwwBOM14Ja6u9tqI3OQd2Otet+DtWnihDgErjOawdOxyVabNnxnfjSpikY61meHb4zgySevejxFdJq8uWxkVnWFxHayiNWBFZ8gRpaHX3OqtFGFXpWfeXZ+yPKBub0qrc3KGPk/kajj1COK3cyDKYpxppD9nYwdRkWZS8v61g29273PlxDjParupXJ1WfyoAcVu+GvCQt5FkkXnr0reyRspJGjo6ARhmJU45Bp95qFvbvgjJpL0pbyOqcc1a0zwqdakDcn8K56k1Ewq1UkVbeeCeQMVyPcVriV74JDbqwXpgV0uj/CqWTnBA9xXpvg/4Qx2pSaXr15ryquIa0R5dXEO1kct4A+Gj3U0U80bEZzyK940TRYdJg2KgjPSm2ptdCjWFVXI9KjvteTyy4Iz7141apOelz52vOdRluYtHMTuyM1BIBHDLLntxWVba0LyTaTxUl3qcSwtEWHSuRUpM5FQlJmZbai0l8wbpWzc3aRxbg4XiuKvdTjspi4bpXOeIPHmV2ofXoa7qOHbep6FPDdzZ8U+KC6tGsvQ1yKa4EY8jPvWBNqL3rsxY8+9Zl1cmK44ORXr06KS2PWp0EraGjrFy91MXJzWYpZ5MD86S4vlWPJPJ96hspy7bu1dMYHc48iLLzfZ3A3DnrmtSGe2MQLTKrehOK8h+KHxMtPCMUjFmMg4rwTWP2g766ug9s7iPPY11JHNLEKOh9r3+xoNyYZgOCDXPIt5dzMoDbfWvnfwx+0u8QSG7bOeM56V9C/D34g2HiWyiaLa0jqM4rKUUghWTLi2zwRlSDv8AXFYGsaXczA7GYenFemR2KXLAuAoNVNR0uOHJGD9KhM7oVLnirRXGmyEy5dfcVOtnb6gFfcEbuK7jVtLiulKEAH6V5trdnc6Vdkxk7Pat1JnTCWpo6tBHa2hQvvGK463l8i8Ijyqk10USSX9rukyeD1rBuTFaXKjI611xdzsTujtNO1U28KZ64ro7YNqlsSBnj0riLa7ilgB4ziu68GarCqLGzH8qxnE4qsblC0s/st+FMez6136W1ubVGOGOO5rI1LTFu5jJGwz9BWc09xaShCcr9a4uU5bEut38dh5jKijFczpvic3t95ZQYJ5NdVJpf9qxndyTVG08JxWU5fG1/pS5RWNhLOOeOM7fMJHbtVwadthJJ4qDSj9muCpOV9KuanebLc7eM+laqPYnldzDnji3lXIJqK+mFjYyMi4AXrWDqOout6pY/LnmodW8RiSBrVOSwxnGa1VzaUG0fMvxf8VzS655aysTubgEetUdC1RxbR+Y5zjvXYeP/hjJPcnUT3JIFeXalHLYS+WmcCr5Ty505qVz2vwr4sihZUdwR/vV6bYT2utQrsKjbyea+RLa8vI3Vhux616r4K8T3UULZdsGtowujtoxfU+iLLUxap5YAYe1Q3OrpHONw2hjzXE6H4mjfaJH5/OtHVLxLqMuj5OO9S6R6kKaNzU7dbtfNhIOOeK1dBvFitikkYLYxmuA0/xN9jfy5WJBPc16H4fvtOvIhudVJx3FS6VxTp3VkWrTWTAdm7bzWhDLFcMZJJRj61yHie6t7OYmJwVz1FZEXiyGOF1aTH41i6Fzk9hdnV6/rtvZkrDLyB615r4q+KcegqXLAyL05qlq3iK3a5Z9+7IxjdXhfxS1F7lyEJ2j0NT7Gxz1vdVrGl4w+P8Aq+qu0MUxEbcHBrgZPGOtNdKYruV888c1lWVkGKlxkswr1nwL4S04ES3LDb15ojGzPK9nObOV0zV9f1S7jLvOSDkEivfPBU+vzrAJLucKQByKjtj4esCoUICPYV3WleJdMWxHlgbh06cV0qN0ehTwsras2otBujCs7TuZfqK6TRtVeCLybk7hn+LiuAfx0UcxI/H1qCTxBNcOhBwM8nNZumdCo2PZotRV0ASIY9RVPVozLFnHWuf0fxBFb2yZbJx9aL/xSJF54HvWbgyuQoahojSyiRQePQ10uh3MNraNGzBWxWXY67avbFWIDVz+ras0LM8RO31Ao5SrM1deSK5kKF9zHmprJ/7OslCgjNcpoWsxalqgWVjuGetelvpttc2ihOTjuazcWZSg3sXPB5EimdsAqepqe61eVrkoBhcnkVnabFPaKY1+7jPpUizLK7xqo8zsa5JxdzBprRk14Y7iMKrgydODWRLphtiS75NVpLC+sL1pWz5fUc1JdXbTSAM5XjvVwRUditNOLNty/pU+l6jNqUvUgCq8sSSOqsQR9a6nQtJt7WHcpBytdCSsWkzOuVPALZPvSyacz2+6MfNjqKZrd0qXRVeQKuWmswQ2wRiNxHSsnZCaHeHGEMhWbBB45rZvtBt7lGZVUAiuXuLzY/mqMLmt3StVa9i2qST7Gs+bXQi1jyDxZ4WGn6rJMmWG7Iq5Zq5txJwcds133iPw9/aUTsfvAV5ldi702ZrUA4J4NdsJXRvBpnd6FfW3iG3kgnIjMfGeBWZJ4ZW1vzJHPuQc4Brk5LPUdNPmRkjzRnArW8LNfXl3ickp3yamYVEjqobiNUZTF071t+FLt7dZmlkwnOAas6Vo0FxEyths98dKg1awGmjy4+Aa5OZ3MU2jI1W9t9QmkRnG4muXmlbSbkOHLLmrd5pjx3e8MfmPrVm5037QiBzijmYcx0+g6/Y6xbrFJCoc9zUmq6D9kAlgfcpGcCuft9Fa0QSRHp6Gui0S/km3RT5Yepp30E3oc1BHNNqYU5UA966ma8bToUKIWJ6mqXiFV06YSxjJyDxW54cEWs2n70DjoCKwlqcktRLNF1uFS5AP90mtayujpw8kQ5HYisC50u607UBJFlYQenStZPEVmiDzcb171UKbeg4xbN6TUoo7BhI6qx7E1g6fqBS6bMi+Wx6ZrxP4pfFB7C9kW3chQexrz5vjNqSRqyE8Ht3rrWDlJHbChdXPr6/jjmgKqq726EGnQaJDZab59xIobrgtXz34H+NUt0uLx+QO5rm/it+0rJalrK2Y+nBprBvqS6ai7HsvivxdZ2d4gR0IU9d1XfBfj7Sta1NLOZowx/j3Cvil/ipc6zuaWQj6msuy+Jl3pupLJbSMrA9QTWqwZ0ShFqx+qerWEFhpCy20iupA5Uj0rya8vm/tKVtoJz96vnjQv2rb0aSlhdMzHGM5roNE+Lg1MkM2c981nPAto4alK+x9OeDdRgkf5gvmA8HNdbew3F0owDsHcV8qaL8TZLHU12udu4cA19MfDz4hw+IIBbgAuAMk15FbCSpnnVKDSLQ06OJw0pJf3FZmuaNDqyMsgLDGAMV1/iO1ksLUXW0spGeK5az8RW9wj712sM9a44xaZyKDTPi/486T/wAI/qbGJTECTlhXzfrGtObwM7ZxX13+0RpMuv3bPbpnOegr5d174baiI2kaIjn0Ne7hpKJ0K6P2Q1wbdYuv+uh/lVInNXte/wCQxdf9dD/KqFfFI+e0GFVB6UvlgnIoanr92tYjcrArnoOM1k634dg1wItxGsoQYAatPk4APNMXfHL1zWynY1jPQ8s8W/DRbueM2kCwop6KM16D4Q0waFpEEboCwXB4961twlkAZV+tFzKkaMCwXFEKjlIcG3IxPFOhRapp8vALkGvmvxZ8P76G+YrF8meK9/8AEXjGHSEdQyuemDzXkXjD4lsMHYAPXaOa9/DRekj6PCxehwE2gXWhW/2p0AwRWWbxtauFDnagPNbGu+L317SjGnBJGcVh6Lp5WF9zgMelev8AEe24nUaToA+9AVZfQVkeINOktGJMZz7Crvh+XUNOuQu0vETya9I1SwsL7SfMdR5uKybcWTzNHzLrihZtwBVs9cV2vhPxD9lsEjb5h6mrfinwpFeROIV+demK891JLzQI9hQgAd664PmSOmnPQ9l0y8hnVpYZQrjqM1n6lrL21yJnOFU14hD8Sr3R2YqevvUOsfE641KxIHU9SK19mt7GsrW1Pbb3X7bU7m3xcDeXAAr6h+HEyad4NRnn3Fl459q/M+Lx1PZSpO0xDRtkZNfQHw9/aFl1LR47QzZVVxXm4jC+02R49enGejPq/VfiBZaawQzZLHk5rVfXrcaKt8JxtYZ/SvkjX/iDFPKm6XHfrXd2fxF/tLwpFbRODgYry1gve2OKnlfM7nU+KfizHHHLFFJnr3rwjx149eeOR5JTt54zT/EN8lqJZGcZIrwv4geKjIrRow5r3cNhlA9+GDjSgef/ABD1sa3qbgEuAxrN0sYMSRJg8dqdCsUjPJI2XPQV658DfhQ/jHVY5ZoSbYZ9cYzXpuUYLQ5oxtI1fh2kaxRiTI+or1O41m102yOzG7FX/FngvSPCUJFtjco7YrwzxP4nn88xo2EziueX7zVHrRlaJualbjWb9pmbKdetdRoWs22mWwiRASK4zwtZXWo2xGck+9dVo/g+d5GLEnFZtqOhi3c7HS9SXUIXzEB6VBLpsm/fvKDrV3RdJawRvOXai9DVfVtRLAxw8npxXJPUwZbsL4RZQSbmq0t3K7AnJrG0GyYytJPkfWtk6nbWKtvxUxRi4ObNL7QPKwwK8daq3UEctplJgD9ea5PXPFwyVixj2FYR8S3eNwJC+ldUIXLjQ5Tr5LOK1gaWeQcD1rzTxZ488hntoJeAcDFJ4n8TXtxbvGHIU1xOneH21W5Ek0nfPWuxU7K52xjY6Pwh5+o33nuxIznmvQdc8fTaVZLBFMUYALx9a5OGGHw/YExP84HrXn+o6vNquosGfChifrUuJqo+R7HoXiZ7vElzcM+T/FxSeJvEkbR+Wjbh65ryq31d7chEbgVrpI15Hudsk1m4FqIyaYPKWQ8mrCO8UQZnPSoYLHc5OcfWrk0HmIEUkn2rog7Kx1xaSKlvftNcqAmBu+8a7lbq0W0VJMM2K4swSQIVWPL9jiqUt/MlyqyEqPetVZmbaKXi6VbLURJEMgsDwa9p8AajFeeHUyoDFfWvBvE8/nTIiHcxI6V6Z4Ru20jRINzEHFYVEkYTsza1BZYb9xuO1j2rIl1AWV2FLZOeCKmfV0vrkANk1XfTBJIzsC53HmufRisktDSa9MvljcdrHk5qzqUqWlkQJBIGHQHpWPqrLHp2UOHX0qn4atr3XbhYTkrmlJpLQ5akrK50XhCw+2Xe4rgfSvRFAgGwLnA4xR4L8Ii2GHQg+9da/h63gcMT+Brl9qmcUZ3PPIdKknumMiEITnpXo3gWG3trhFZQRnmqerLbW8X7sKCO4qjo+oskjMGHFc9RORz1IuR71Ld2ttFEYgoyOa1rDWYzbZDBQK8T/wCExxaMXflOgrR0Xxc13EQj9vWvMnQk3c8+dGTO31bVw18BvODWZqetxRptMn61w2qa7NBdAls1hX+tyybpHY7evNZxw13sRDC3ep6JF4rgsELbtxHSuYvPiDNNeyHlU7V59feJhJJsD/rUE98ZVGwjJ7iu2OHS6Hoxwqj0O11LxUbhPvEn2rnJ783D5PH1rPiVkjLMfzqsLtpZCoxxXSqcYu9jZUUuhvxXCpHywArPvL8O2F5NNitpJxjnFK2lCLMjnGPeui6SOiNolC4WaTbkYH1ro9KsozZg7wWxXNC7N1di3TnnGRXXadoFxawKzEhSOmanmRlVakfHf7R5lGqXMTKTHu684rw8JFHCFRs9+nev0G+IHwXsfGlhOWQGf6147F+ymqK5O7gnA3YqXVseHVpNnyxC53bcNvzwcV9WfsuW179oieVXMO09RxVjT/2WraOZJZgSF5Iya978B+EdK8HaZGkW1ZFUDtRfmRNKlK50GrXTQKpj+UiqSaqk6FZG+b3qDUdSE8jAYI7YrBaZVuMs2BWS3PXpwaLd2wa54PynvUGreHba9s9+4FsdKdPIswAh+97UwySIDGx5ra51rRmF/YipbNGPQ1534k0oQTAlsc16ygkk3ADiuM8Y6erRBj17110nc7Yao5DTrttu0HNdRod49u6gsUrm9CVGu2Q9K6YRLHIuPu960miZo6KXWbqBA0UrP7VWXXrm45kTBHrWTLr0MdytugzzjNdTBo4urEScLkVyNHHymp4e18DG4A47E1PqGuLLLtUKue+a5SLQ5YZmZZDtPvViLw9NcOG80jHvRYOU6KwnYzBshweozWrq93aQ2O55VQgdK4O+uptAHD7v1rlda16+1JCgYhfrVxjc2UNLlvxDqaXNwwhkzz1FW9EtozCss+HYeprz661ePSg7TyYYe9clqvxcmtpRHBJlc9q6Ix0M1JXseueMElvLJ1RAEHbNeHa14deWd2eLAz6V2+lfEY3+n4mZS2B1rl9b8T+ZIyRgHPcCr5bGrgpK5lxaXaxxYfAIpUmwphtHwR3WsS+vLl8tggelc3ceILjTJgYzyeuah1FA4Z1PZM9Hsru701/Me4Yjrirlz46uCu1Zm49K8puvF93MnLYzVjQ9cjlYeewzmiOIiyoY2Ox6WniNpVEjPyKs2fji6hB8u5ZOa56wkt73CIQ2a6K08IxSqDyM9q1U0zthXUhNR8dXU6Ye5Z6zz4iMsBJuDupl94XljuMAN5eeuK2NL8ALewkndwKtcrNedMyLTU4ncGVy6+vrVXxFYprUREFuOR1rom8NW1lOsL+uea7TSbTSIYVDKpPTnFYTOepyy3Png+B9T8wFIn2qcjArpbJLqxi8qVjGwHevp/RPC+j31iz7UHyE549K8X8c6BHLfSG2GAM9K5nJJnE+WOxxCiUzBmnP4mux0CCeROJW/HmvMNYuryxvkiVSMnHSvSfCl59ns0M74LDmtYzRUa9tzM8Sa3eaVfkRyuee1a2leIr+6tAxDAj2q/c2GlX9wJJGUmuu0Wx0j7N5QKj8K0TTOhVYyMLTPGV7a/6wMVHtWqPHE2pYjjjII680a5Z2KRbYCM+2Ky9EtorOZnkAw3rVpI0Tudfp2qq8QaRjE3fJrpbDU7C7tir4OPevOPEEwttPeWI4GCa4nTviH9l81Gk6Vk43M5y5T2uytrGPVzKkoUc8CuztdViRlEc+4DtXzLoXj46hqTKswHJ6/WvQNB1q6a+Vt26PrWUoipyUj6Dt7kX9uEjyJPWsti9jcszkrg9TXL23j+PT54wTtOOcitiHxBF4kcBSOT2rmlC5NWndmxLrxuU8vbvHrXJeItSuYZw0UR2967+z8P20NtvyC2PWsDWVtXWRMDdis+Wxio8piaeft0W5pQrgdK3bPUntoxGznpjNeSat4iudG1hIoslXbFelaUxvdMimkB3kdMUSdkDmkW9QjM8ZmDZOM1z1rNc3OqpFhtpNdZp9q8se1lO0961tM0G1W6WXb8wrmbM3NEN3okjaSpAw2KPB1u1rOVf5vrXXXUcbWewDIxWFbKIJyBxWfN2MnNGhrKiKEuCMY6V5pqth/aV2JEXBQ+lehajcrPCVbjArEitIl3MvJrppSCE7s52+Ro7VfMQ5QYrFsNaS3uSoGw12TSxXc5t5lzk4HFc14t8PQaaTJEAGNdEjeR1/hnXMSBCd+fSt/wAQLFeQrJnBUc1454fu7q1ukkIygruU1175NhOBXO9DB3K10TPKG2nC9KluLSSSNGHFalnaxyDqCfeqzyN9q8vHANTcRPp8DPbHcDRa3KWszgnBzxW9a2flWZY8cVzUscMl4WZsY6Chg3cuaiY75MPwD61e8LzxWV7FGzBUzzVSPTpL0jZylZWvs2jEENhhSSuTGDbPRPGes2lrZbkK9OxrwTxf4xjigkaOXYR71F4y8bzmxKb+ceteHeItburyKQAnBzXqYeknqj0qWHMvxt42S8u3RZDIxNZtnqTz2meVPbNYVnpJuNV3TEnLc13U+iw21grjt1r078iO+MElY5lteutPDSeYVHpXM3hGvX73MkvA7VY8YalGieWnB71zOn6j5SuxJ6VxVK6R5FeahI2CLeKcr5uwCp2lsYB8jgt61x93dPdM7qxFMBYwZJORXOsUrnGsTd2O2gjjuv8AVSfvezCt2HU73R7VQkzlx3zXMfDsNc34DrkZ716zf6Dai3VmIGeorpVdtHp0rTWpz2j+L9QSUSNI+SeMkV7n8I/jHdaNdkvK65x1Irw+7sYoD+79a0tDkCTZ8zaawqJ1dGKdJSdj77svjomraVHBNJuBHeudu/E0dxdA28vyOcFRXgvht5bizTZK2QOOa9A8HaTdz3KSSsWVWySa8urheV3scc8LbZHqp8J2+p2QnnRXOM/NXPeIPh/p9zpbFLWPcD6Vvya19itlh38dOKuaYBfwkFgVNYK8WccqTTPdde/5DF1/10P8qoVf1/8A5DF3/wBdD/KqFfLWPkLiMM0o4XFFFVqJjQCDkHmnRxl3YkigqWHGM02NSobLcmjdWKjoP8ss+VOcVieK9MuBpss0LgvtzgVsxv8AZYHeTjvk14P8T/2jI/DU89hEASp2Z7mvQwdDnkd+Hg5SPN/GnivUbPXWgkhdwDgg1geKdeS90tFdDHIB+daem60/izUl1GaNdj888/zo+IXiLw/Y2cSyeWr4wcAV9TTpuOh9bQhypM82sNYkghbjIJ9K0BrN7EY2VWC578Vnt410S7g8i22+YT1Arp/D3wx1PxxBG1rLgHoAa7eWMI3Z3SfKrnQWHj23sNKYzLmbHTIzWFB8ZUFyySnCZ9am1f8AZq8Tw7jlmXHZjXF3n7P+tQXGZlYfia4HVg3Zs5HWjc9LtvHmmtF9oeZQSM7c1wfjbxraavIUt491bfhf9nHUtWKBnZU9Mmuxk/ZZm0+IyFiWA7041oqVkyY11zHzbqiRSR5kTaDU+meGBqOlObYeY23OBXdfEX4X3GlWcmFOUB7Vwvwv8RnTNQltJycAEV7UJc0Lo6nNyWh5H45Fxplw8bKUKnoRWb4Q8dzaJeYL4T613fxsjhubyWWNSc+grxIQgOy9PeuCVWSloeNiJ1FUVj3rTfH5124CKc475r37wTcv/Y0O1CRivjr4aSN/bCxk5BYV9h2l4ml+HIvLBVgtb005as+gwc5SS5jm/iFqjxLIpBX8a8O1u4TUJtpcg12vjHU57+ebexxnpmuJsLB7rUwACy11tWVj0Jvm0NLwL4APiPXIId3yMQelfffgz4fWfw28IxSxKGcxAnBA6jNfNvwtlsPD7pdXCqHUegNdN8TPj7Lf2Z0/T2bhQuVPtgVxSg29ThnS5dTL+KPjGH7ZNG0uHJ6A5rxXU1nv7wMkTFT3ArqtM8Cah4uuftVzIXyc9a7608ER6VAPMXdtHcVCbjohxl0M74Z6VOFHmZRcd69GtlFhIfmRj7VytprCWs3kwqAQcV1+lW6vC1zO6YAzzUSTerCVSEdGGp6sk9mYkUK4rmtPuokuWDMvB55rnfHPjK0hvWginVSO6Gubn8XabZWrTG5Jlx2NZ6HHKvBbHrVxej/lngD6YrkPFGrSAYj+b6Gvn3xN8Z7uO8kS1lk2A8YNc6/xg1NnBcuy+5NbRUUYLGRiz6Bh1EkEyRnP1qjqPiFoFYIn6149a/F03CbXyp+tOi8VzazdeXCWfd6GuuKSO6niVUZ1194knv7oQxqWYntzXXaVpzxaWJZJPLlPY8VN8NPh69yq3t0nP3ssKh+I2qDTJjbxbRhc8cc1p7SzO3n5Y3Ob1nU50lMJbg1RstMeWcNkljVvwH4Q1bxzqO9YmeMHqAa+hNJ+Bk9raLNJEAQPSuepXS2IWJjc8Ak04wHJzmr1jMwYLyPwr1zWvh8sLN+7Bx7Vy02gw2E/KAVEKnMbxqpkGj+HLjUIiwz0qpcwT6RebZIywB9K73R9QjsohtIHFNvVtNSl3uAatuzNVK7MzS0j1GMMISOO4rmvGGheT+9XggV2y3C2oEcIAHtXNeMLstbHJycVpFlSWh5HG8smq7CCVB4OK9ItYLi70+NOR+dc94d0g3t8WxnnvXtPhzRo0t08xR8oqKr0OZuxw+j+H7hLpWY4TvXWrbxJG6feIHHFb8rW1uCiICfYU2x01ZkaVk2rn0ricmiJTsjgYdPlvr14ShVWOBxXrPw48BLp7rPIAGPPNV7XRrY3sTIBkGuvvtQ/sqwTy+GArBzkzjm+ZWNy5tYbKPcuAfauS1jXGJZQ4H40XOvPPa7nYg1wep6k0tyQGPJqY03c54QaOjiunvlZSenep7Q+RHISQDiuf/ty2sLdV3jewGeaxtW8ZLAMKetdKgdSjc23vmmmdNwGTW7pOppo8XzOM/WvNLbUJL2cSRNn8amup7pHzK/yemafItg9mup6VJra6hOGJG0dyawPHPiy20+yEUbIZDwcGuL1HxUbfTmSEkSnjiuKkW61KUyXMhPpk0Kmi40YrY7HS783aGQj5jzXQQ3LQxq7kAemelcjoEcsBHBK+taLGa4mK7vlJxWklodDOjGtNKPLUZzUQmlglUhDg9TT9D0GRQJHNXteuoNPthDGQZm4rPlvuYNdTUsdSXywD97FZuu6lcJE4RetU/DNznK3CndzyatX1youPLPO7pRKmrGMkanw50EXc7XE52n0Ndvd3ckV0IQCYx0Ncn4avXsZCmzk9q6K71B2IIQGuOSOOasTXry2zJ5XIfrimLbzXjBR8i+pqRZjJCuRk1cUN5QHQ1yS0Ofn1MW8tHt1KK4ZjWHcwywEs74H1rorq1kMu8ZrF1i1kIG7IFdEJaG0WkZcVynmhTJyabc6cZ33KxC0waePNVwM7etay3arBgqMe9bpI6IzTMmx/wCJfNuZt2PWq2u61FZbpsryOgpniF28ktAPm+tcJNK15P5Uz4Oe5rfkTOmEU2dZonjSG5kMbsFPvU2tW9vqMD7ZVyfeuJXwzKl75kDcegp8sN7Yl/Ncgema1haJ1KyM5LB7HUG28j610cAM0IDDqO1cXfaw8VwcZJroPD3iaMsiyLnBxzXVZNA7Gtpnh1JLrzGBBznmuyMgijjgEgVe9Ys2qo6ZhX8q5TUL28nuuJCBnnmuRrUxcD02zeAsYmcN/tZp9zdR2edg7etebxz3QhHluxfHrUU+rT2tu5uJW6HgmhQbJtY2PEmuW/G7HHXmvP8AxH40tdNt2IdQ3oCK878b+OXFw8cMp3ZPQ15dqWq32pTEu7FSemTW6jZHLUrSjojp/FPjOXVrhljfAJrP03Tmn+eRsnrWdZ6FNdFZAMY65NdXp9l9kizIcH0pc1jlg23dmhpVjPKwVTtSukg8ORABnII9aoeHFNw+MgitjU5GtxsHOPSnzNo9Wm9DO1jTIY7VtmOleNa7uW8Zc8V6xczSzwspY81weraCz3AJG4k1w1U5Hi4uLkzklcudrPxTihjYFGzW9L4Ouiu6OMkfSqsOkXkUojeA5JwDg1xJNOx48ac+Y6z4eK1xdorNzmvbYYvs8aEjAArzn4deEZYZ0mkBB64xXqN3GxZIycriu+LaWp7lKLURNZms7TQRcuQX968/0n4mC31BrcEeWTjNanxLZrXR/LXOwCvCDMwmLxt8wPXNXztGNWtKB9KC3GtbLiL5z7U+fQZJJkRBtNeW/Dj4hNp90Le5kwmR9419LeFZdP1qIXKurNgHk1PO2ZUqzqPUx9Ihu7Oy8lGJJQiuL1K3mtrthMduT1Ir0u6vItP1HC4KCrN/oVtr9oZwqkgelTy3PXjSUldnjN34Mg1Dbc7lLg5rifGDT2AKRPtC17XfaWLaCSNCAF6V454zj2mUv8xzVcljgrxUdjgF8R3duxLS/hWvpPxBuxIqE7QT1rmL6JHLetWdFtf3ykqGXNF7HLRlK+p7H4av21RlZ5ck+tdFq00VrFH+9UHPIzXIeGdqRgxgBgK4Dxtr1/Hq7IJSFB6ZOKPatHfOs6cdD3K8eLUNIMaygkjHWua074WnUoppFOTjgDmvL9I8e3MLLE7k4969n+G/xEt4pFhmcDce9axrXRzQxHtHZnkGvaHe+CNWaTkrknoa9Q+FvxChu9i3g29uWxXu8/ww034iaf5yIkjlAegrw7x58OJfAeoNDHDhQeoFNSuejTstUeh+IrizvLf7Ra88dAc10/w0t4pAWlmUMo3AMcV454W1WVY1Ro+PeuwspbhdzwOY/wAcU+RM9CFprU9mk1e5iuTEAfL7EVQvrCa5Vpl3Et2xXkMviPU4Jsec7Y/2zW/oXjq9jIMobaPXms3TVtDkqxtsdZp3gI6zfrNcxFdvQkV6DHoMFhBGp4QCsvwX48s9SdIG27zwa7rW9Elnt1lhw0bAYrhqpnm1Uzn2nhEXlwJvb2FMsPNWXLoUOe9WNNjGnSkyx4INbNwLe/jLJ8retcqTOX3iVGjFsdzAHHrWAjK94wHIqHVZjajbvz+NU9Lu8ybhzRyFKN9zR1KykdSEU4NZwiawjBlGDXTQanA8DZGGA4zWFNcx3bOsnQdK1hozWKSOaTVY11VGZeMntW5eaP8A8JC6HHy4FZS6Yj6kpVdyg11r3y6bbqqAE8CtpSsXzmYfBUVpCUUAn1rFvdLk05WKKTj0ru7eZrywdzw2Otczeaqts8iSgPmsk+Ya1OW0vXZxe+UVbr3roZ7gJIr7DnrmsF7qA3nmKNnOa0LjxJZvGIiRvHGafKVynUx6ys9oUVhgCuXvo2a4yjc+gqrBcSbGaI5Bo0y4Zrxt4JINEkTax2+iTtbaWWC7pAvevPvFusJLPIbhwhHQZr0iyja5sSIxztr59+Mgn0y9kkLEYGfrToR5p2ZtSd5GH4mf7UwEZyD71xGr2/2S3JK1kL48me58vkgHtVr+3f7SbyZFyD3xX01OkoRuj34rljc41NWVNUcfdGec12Z1yzuNOMZlXOO5rz3xppx0+4kkiON1chJqN1CgO84+tcdWqePicU6bOr8VWdnLudZAWPoawdP0hWiJkwqHuaoS3Mk8O9iSR71uWUEl9peFOSo7V5M6nMzwalV1dTGvLAW0h2EFD3zTbeONpAgHB61FetIjtG5xtPGajlJhAZDg5rCyRyw0Z654E0iG3KSEA8V0PiKUru2ttX0rl/AlzKbASSn5QKxvGniKT7TIkcny+1dEKlj16VZwR1MU1sYDumG70zUdtKv2jKyAKOmD1ryQ6zcOeGJPoDXWeD7a+1O4/eMdgwc110Zc0rs3p4m8j2fw740XS5Yo2cEfWvW9M+KkFnbIoZVZu+6vn258PRrGjJJ++A9ea4bxjrV/o0qKsrYUZHJrsqpSO6pUfLdH3DF4g/tOyEySBiOdwINdx8NtUa/3xl/u57+9fCPwq+K10z/ZriVsEgfMa+nfAWvy2i+cj/I69c15U6SueanzyPufX/8AkMXf/XQ/yqhV7XmB1i65/wCWh/lWczehr4U+HsPopkb/ADHNTJEZSMHAoCwirvOM4FNkjSJS7NgCqOsa1HY/u9vORzVHVL3OhSz+bjCk81vTpObRdOm5MseJdctE0WQCVVbBHJxXwL8RrIan4yuJJboCIy5wxrS+O3x51XTL37HY3DKN59K8fiu7/XHF3d3DFnOSeK+wwWGVNczPrMFhOp7Va3FvbWUVtb3sYJGCQ4FZGt/DeHxFGHmvlfHOBIK8wmFzCQUunQD3FXLLXpYF2vqTq3pxXv8As4WufQKEYKwsHgpNI18wxybwCcZ+tfSPwq8St4Umto2YBQRxXifheW0e9FzPcea/qRXommTw3l7AIzyWGDivOxllB2OXEu0HY+1/C2vW3iS0y6IcgDNQa34Lsr3kQqDisT4S2Sw6MN0uG4wCa7KR2LEKS1fCVJ1OdpM+Qq15qWhneHdDstMQZRQwrRvFt7m3lJjzhTUCQyq5bGD9adh4oJAynkGsPa1YSu2TTrzvdnzl8WYbe8mmt0iUFsjmvmHXPhlNY3st1ChGc9K+rPixoF4J/tNtGzEknABrxu4vr+3maO8tWKE9wa+zwOM5oan0+Grp2ufPXi3w49wrrMpPbmvL9S8CXRk3RKeT2FfU3iHSrW7DM4EZPYiuRmsrKwBDEMe1ejGUZM7ZwpzkmcB8MvAklhdC7uUxt55r2PW/E9ulj5cbAbRiuXm1JYLRhGBt+tclc39xezGNE2r6ivQp8tj0qUIxWhLrFxNqM7CMZBNbHhrw69vmd15+lVdMtAjIDkv6V2lk7xWuGGwe9Ny1LekrmTeTy7fKjBUk44rV0DwFNc4llQsW55qsb20t59zBWPucVrp8RZLG3zHAGC9ACah2Y5JSR2ug2EmiW3zYAHaqes+OrWHdFK43Hjg15tqnxY1XVCYo7QQKeMjNcreLd6hcrJPOy5PPAFZciZ584NPQ7TXPFFrp5+1JMqknOCa5LX/jtdR6fJBb3YA6cGuT8W6JcXimKC6d/piuYs/hvqM7ZeNip74NZTjoedUpTkzN1HxRqmr3nntcM4briqV7d6o8YAkdlPXrXqvh74RlI9wjZpP7tdz4e+Bt54gu44jbMiZxkDoK4ZJnBPD1GfNEWk3c6Z8h2c9wCa07LwXrN6dsVlI2f9k198aL+zh4c8NaYs2pyr5iru2scVltf+FtGZlt7OL5TgOTUrmHSy+c9WfJHhz4B65qEqyXNpLEnXlMV7j4D+B2naIY57vbuHXOK6XxH8RYrZCLdEVPavO9Q+KVxPKY0kJOegr0ad7anr08HKmez614l03w7pLW9kVUquBXh19HP408QJGFL7mA4Ge9SSTX+uRq0aNk16N8JPCT6ZfLeXqBgpz89TVT5dDrnCThyn0/8BfhHpvhTw8lxdQJ5jKDzj0rt9Y1rSIWNogT0615f/wtxrOxW1G0AfKOegrhda8cSy3XnAkc9q8WSm2cCw80el+JdEsZYnZQpJ54rwXx5pa285MQ/Ku8svFrXm0O5OaxfFdoL91K8561vT5oHXGlJLU8qaa5hTAyamga8cBiGx9OK9F0rwLHdBWdhj0Nb1x4X0+ysiOMgV6Ebs6YvlPLbO4Zchx82O9c34j86+coAetdjq+mizvTIjbk9M0lrosV8wfHNVzWN3PQ57wno8lm+9lr0PSmlmiKopGfanaboqIoXYTXSabaQ2K72AUD1rGpNnFOZS0fw3Nc3G6UFl9xW9rltBpWneUi4c4qxa+LtPtvl3ru6VynjfxXFOcx4PuKwirmPM2JY3DW1wHcnbnNT694njaAZYHHbNcmuvD7I7McsBxXCatrN3fXZCkiId63UEhxjc6XWfHTpmKFvbis2xvLy9kD8nNZPh/Smu73dOd6j2r0Ai2sYF2KFIFapJHSopHMX2n3s0isxbjHFMm0KW82g5yK2HuXnnwDnJrSttNmO1wx+lPRMptIztK0O4scEKTx2o1W1u7qQRqpx6gV3+kRIUCuMsO5qy82nwy4kjXdXM5e8YOV2efw+CVNkZpxgqM81zeo6fHJMsVuwyp7GvS/E1yLi1eK3O0txgVi6L4aitlaacjfjPSqTLTMizhNpZiEr+89afptu804HQg5NGs6lFBckREcccVHo96UuC5P3utarU03OykvksbMqGw2K5AvLqGpglt2DkVNruoJIgCuFYdhRoUgtczSrkgcH1qXoRLYv69qkWk2qgDbPgY/KtPwboV54iVbycEKOhIrEj8L3fi7WFuXJW3B/lXqEepw+H9NSygXHqRWcpaWMJDI9CFrJ5jTKCPelN7aK+1p0/76Fc1qM17fylYnZFPoKrf8I3dqu+SQsa5mrnFUPQbS/tjtAYHHpWkkiuMDpXmdnfNZXKRsxODXo2mTQ3FmGDhW9TWDgYRjqJc/ulLHH41gatL9tiKp94elbF463KMokHHSuaufMtJWK8j2rNRaeho4MyrQvDd7JM4Jq/q+1bb90MNVi38mch5MKwHU1JEIpZyr4KV1QTHCLPM9S1K8st5dTtHTNcRLeyXmqb0O0k8ivX/GFlby4SPB+leX3mm/Yb9pdu1Qc5rrSZ3xTR2Xhe3dpF8wc1r61okNzkOMZqPwnf2d3aja6+aKt63eJGyDOT3NS20aXZxl54BSKJ5iNwxXP2OkN9s2onAPpXq9oFvoNgkDD0qGW2s9NVm8pd3rXRCTeg43uZFpp/2WxLuuK5TUHMkxERxzXT6v4phSzKkrt9M15brfjBLRmZABk9q1UDq0SO/s5LawsBLcON+OQTXlPjrxUL24eGCXAPHBrE1LxdeXquBIxU/wimaB4TuNfm8yRipJ710JRRk7HMyeHhfyBy25zWxoXw3dpBLMn7k8812i+DW0p1bYXx3xVv8AtGZY/IEZHasptHNOEWcxe+H7ay4gCjHpWPe6BPdcxcV2zaTPJl9pweelTW2iyCMt90CuGT1OW1mc/wCG9ElskJbrWlPpctxISVOD3q0iukm1Tmt+xjP2Zt4zgVUZaHZTehzUXheORPmOKSPwNaedvkwQO1acwnVn2DcPas+1kvJ7kK25ee4obRjVUWzd03w1asBH5QZfpVm48F6dGwZ7cBjznFdf4atbS1tVebazY65qTUprO53YKgLyBurJxVzGMIXOXs9Mt7BQV2qBSvcWskhywBxRfXEE26NGA7dawptMdW8zccdapnUlG2hD4/01dX0dlj5OOMV846rpVxpF0ytnBPcV9M+aTbKjVy3iXwTDrERljUF6zkediaaaPEdN0m6vGEkeRjoa97+HMGt2ellyz+UB3FY3hrwBPasu5fk3dK90061t9P0QQ7AMqBSjY82nDlZyyaorQsZziTpVrTPGwsrOSF+/SsPW7MCRmHyrmuT1PVEtwRnJrdM9JVmkdjqXim2YOWcD8a8w8WKmoxyPEQRngisPXL+6uH/dMVWptJlnNskTgkn1q2zPm9o9TkJ/DlzJJkKT9BW94c0KSCdBMhKk46V3kOnQwxI0mAfeh76zhnRSAB1rnkDio7GxpfhtraPzFjIBHpXj3xQsTa6izjjJ54r6g8GJF4i0/YjA8Vw/xT+FqXwkZBlga55HPUvNHzJbYaUHofpWxpN1cpq0flSMvI6V1CfC+8nvBFAr5zjOBXU6N8EtQsJ47ibfgHPOKhSZxQhKLPoT4D+LLjT7eJZ5NybR1rQ+K93Z+Ib9mVVJJrmPCoTSYY4s7SowatavcRXUpKMCc1tGbPYpTtuczJa22nhQkXzjsK0NPkS6QrnYazb9XN0pzk1dsoCBkLzWqm7nX7RrYy9VspoJt0ZyM9qlTUXjtShjwwHpVy6vxaEh0DD3otEW8YS+UCh9TXZHbU1T5jnNI8Q6jo2rrNHuC5z0r2uz/aKubWwhhuOQAOSK4Q3GkGQRmJA4471Pqfhyx1LTvMi4KisXTUi3TUkev6L8UtN1q0EkrKC3XmtKDxbp1yDFBOu48Y3Cvmez1OLSXNtzkHFadrqdzaTC4iYnvisnRRzOij6D1O18+38wPuOM8Vm6Sdk+3sDXn2nfEnOIp5NvYg122i38OrxA2sq+YfQ1jKkZOlbY3tUvIbRQ6uFwOaz7W4TVMmEhivvVDWtJvntpUxuJHBBrF8GR3+j3rrcAeW3rWLptGEoHV3QeyAKj5qS0uLi+lCspK+9XtZjaURyRkAEZOKn0jVLSzTY0Q3+tYtNmMotGnbB4bfy/ujHeuP8AENswuSY1313MMi30bP8Aw1yd1cLHqRjdhjJq4RcSo6GNbaJ9sAaQFDWdqvhNlbMBJPqtdsWjTHA21Tv5hwI+Aa2OiOpxqTXOlx+XIK0tBuzJcY25JpdY01pSGaQH8aSORNPhV0wJBTSui0j1Lw+Ut4w0mAu3vXz5+0XeW0sz7CCT6V1+qfEsWNqkbOFPfNeUfEbUYPEEPnK4ZvY1rQhaZdJLnR41plrGbzLL39K6iaxgs0E+3tWdDYCJ93StdbNtThMYcYxjFfRS0gfQ2XIeYeLb9dSunTPyqa5u4tkeIgHp2rU8Z2Umi38wbIJPWuVN5JINwPFfPVZO9j4zMG+YmLbD5frXp3wk8OPrzPAIy2Q2OPauO8JaDH4h1GGJjsJNfWvwn+GMHhV4J2ckMuSeO9ckI8zOPDU3PQ+WPiR4FvND1hl8tgp5+7XKfZmQAOCAD3FfaPxj0zR/7QiZokkyOeTXhHjTQ7CSMrZwLGx7rmqnSZ0SwzizK0G6Mml+RFwxGOKwfEfh+eNGlkJ59a6Dwxpr6T+8m5FZvjXxUlwHgjx+FSoOJk046HGWdiiz5Y8A16Xoms2FnaFY2US4x1rzOGY7TvPWlhmeGTdu+UmumErMcZcrPQrLWppdYG+T92T61t+NvDtvqel/aVILKtcVoo+0FXDfMO9d3ZB7+ya3c5RuMV2puSPcpLngeSabFJaarD5DEZYAj8a+y/hXexzabBbTPmQqv8q8E0vwfbWuo73XzMHIr3bwBY+XeQusRChR1rCasZxp8sj9CddkxrV2P+mh/lVZCCKta/bZ1u7bdxvP8qqplVwetfnr90+C0GkEEcUfaGjkGBnNShg3B606OHZMMjcv8qcXz6FLUy9W0mO5TzZiQvU15h8VPH9j4e8Py20UuZGUjAIrf+M/xBsvCWi3I+0hZsYC18SeI/Fl34tvJ3EzvECe4xX0OX4fmd2exg6HM7nH+OTHreorO5DsW6Vtaf4NuLnTYpUUBCM15treui31fZ5mdh+7XsHhn4nWQ0iKB0UOFxivsJQ5YaH2uHpKMSTSvAa3ymORgGPFY+o/ByRtQHzEKT1HSrcfxCS01lHUHyy3SvaPD/irSNRso3niXdjlj2rik520IrRe6Jfhj+znaXljHJJMA20H5jXfj4N2egSB0cMUOetcs/xPtdEjCWVzk/3Frq/BviC88WTxtIWMbnnNebXlPlszya82lZnpHgeB4oggyF9a2PEvjay8KwGSZl3AdCa1tA0YWliW4OBxXz98fJyFkzIQOeBXj0qKnPU8R0faSN4/tHWE+omGMfKGxXqfhXx5p3iW0j5Adh618HeGZrN9Td7lvKUN98mvbfhfrtuNWigtrnzkzjit8VhYqFyZ0ORH0veaXZ3gyyK47Z5ri9f+Fmm6wxKRKrewrvIIi1hE0fzsRyKLeCSElmzj+VeVSqOnpE54VZRdkfO/jL9m179GNq2DjpivHPEP7LuuOxKHJHTivtbWvFtlogcyXKbhztJH5VwmofGPS7ctJNOgC+wr3MNKq1qe3QnN6s+H9f8AgV4j0rKbWKn/AGTWVYfCzU9OVnuRgD14r6a+Iv7ROghCIQkrjjASvBte+LUmuTv5S+XCx9K+gpcyWp7lKq1uc49jb6VcF5GBZe1UtQ124vj5VspC9MgVDqcn9o3K+WxYuecV6F4I8CvLa+dJET9RWkqtnqdzmpI4LTfCOp6jMHYMF68iu4s/DEOnW+bgBmA6GvRLLT0sUZWjVNorl9aeS9umjiXjNT7QKTuzjtQ8hP8AVwj8BWY+gSamuQpUV6RB4XRofMnYADtirUP2K1iaMRKx9RWymdE4ps8w0rwaiXeZDkk969P0vwPDJaKdoAA9KwNWkSDdJHHhqoQeOr6yjKfPs+orNyu7E8iPRLLw5aaSRIMNk1d1HxvH4Ut/NhQbiPavOn8cGa1BJYEetcR4l8UyXilXmwuaapX1IdNM3/GfxRv/ABdKU85o1z61hQkGPcWycZrk7adLmUhSSc9u9dVpNnIcBkO2jkSHBOOxh6r9ovpfLj3EH2pumeCwkwln+8OSK7P7JHCcooLUkmnXMx87GB6VurJGvN3LFnqMGk2wREBZenFaFr8QLmOLy0XaPpWVDYqx/eNg1HcwNCchTt7cVOjeoXjuzXPiu6kfPJzWraXU+qJluFAzXMadMJ2+4Tj2qeTVpbV9qAxjGMUOnTM3OLPQdFureEqWYAj3q/qfiO1jYAEHHoa8ytb+dx91snvVgQvOdzyke1c8qa6HLKTex2T+OGgZdhIUe9ZmsfETzImCuTntmsG8g2WjZz7GuVi0S7u7rMe+RaOXQySd7mxceL3kkO4MVrZ8HeJvtt5sLYXPesybR7eCxIl+SXHSsjTUexld0JUDocVhJM2lex7ZL4ls9LUF3XPuRWNr3j22mhKwEcjsa8V1y41PUropHK+3PY1peG9MuWkUXLMwHrUqN9zktdndaW02osZdxAzUmqzCKPYx3OasWeyxiCqR07VPHYx3DefIdxHQU+SxcY2Mm3sZZbfcwIXGaiXT43geMLmQnriu1EMV1ZFAvl8d+1YcVv8AZbgxovmc9qrU2VkQ6Xp4s1ycAnvT9RgZ4jtNbMuhXE0IcNsI7VnXlpNFFtOfrScmRKTIPD2ntNLucZIrq7ZvKkEZHFReFdPDR/vCE461rXFpHEx8tg5rJybMHKTLCyQ28W4kZI6Vxep3Ej6iX+bywcg10S2M88g3ghRV3UtHtZLL5CN+OeKz1JVzmw/2iSLZlmPXFaN9ZzNZ9wcVL4fgtdOuQ07B8dq0de1eCaIrAAlaK5stEeYy6BIbhnc8ZrG1zUV8PbmznnpXW32qJbbt7Ak1594phfUZSf4Cciumm9TWLLGkXEmv3SyhsLnpXptjpiyRRR7eB1IrgfBGkyRyIqHjPpXuGm6alpZBnUHI605a3FIk08Jp9jtRRnHXFYNxeiS5aI8uelbb3UMtsyI4QjNcojhb84HmODgc1yNamEjrNLt/s0BZ8bqJtRaWTaelUYluXi3kso9DVaYXIOQhPvUNWOWULmgfD8c8nn5Azz9Kranqf9kRiNHIH1qWO+fygjEhgK53xFwcu5P0pJXHCPKaFtrcsg3KxOKsnX4NhE3De9c3pt1DbIS79e1Q6zH/AGnCzW7fMB2rRUzqUOZF6/1jdL+5bCk81saXOslm0hb5q8xS5ksAyzNhs96t2+tzCE4lO2uqNOyNY07HSzStPfkM3y59a5Pxm6yrLHD97oMGqF74kmRyE5b2NGnxXOo3EbyI3zdc1vFLY6Gkiv4IW8025YysQmeM139wragh29h1rEvLP7EEyQvTiugsZI4dOMmRnFZShcUYXIdOLWchLP096zvFXiWOOCVVbnHauR8ReLWtbuRIycZride8U7onLNlyOma0hTsKUVEr+IvGhify9xIrDhnm1l9qoSD6msOCxu/EmrARwsyk4zX0z8N/hlFpNqlzeWoaMqDlu1aTkonO5nlHh3wLMsqzTr8rdiK7rTNH+zSDygAB2rvNVFjJcyx2sKhV4AWuaijkW9Kg7RmuSVW5i5Fu7SNLYK6jfiuUltY2vlGMAnvXS6tHIoUkZWuduUJuQwbbg+lSp8wnPQ6I2EaW6fKCOKytSszjZFz9BV4LcTQKq5+tdDpekR29mZbhhv8AQ1lJdTFbnAQ6IIm8yVtvH8RqDXdQWztXFuAx9uag+JerzW8bG2UqoJ6VyPgrxLBczJDfOGZjtKNWMqltDRvlR1Xg3URLDK90uBkn5q5PxR8QLXTbwiEAEHtXpfiDT7K20VprUgEp0FfLHikSjVmDhtue9NTujz6tRnpsXxgeaPywxAqle/EudW+VjzXlb5hAKE5NTRvIVH3mJoUrPU41iGnY9d8P+LJr+dfmJya9Vss3VouV5xXkXwx0Zrlkd1x7V7vYaX5UAxzxV89z0aVbuc3caYzYVQetX9P0kxR5cgird5KsJIUbn9BTIhLJy2UX3qb3N5VIyRLDcxQSBCnfritRma8CKoPtUOjaUup3ax43MOSa9e8NeBrfZHJIg4Gea55z5djhdjwXxhpM1vZF1UnI45rze38M3mpXAEiNyfSvujVPAOn61aLGIkBVcjg9a429+GkVhOHEAGOcYpRr30M+bU+W77wCbGESyJtX3Fc/e/Z7FgV25U44r6z8X+AH1fRH+zxBSozXx54o8OajpmsTwThlUMcdPWuqMrlO61Ip/EQublIecZ7UzXfJhjSQMd57VPoWiJLdK0i5arniHwpLeuvkqcCk2VJtxPVP2fZlkhO88bRXeeK4Y3d8nO73rz/4Q2j6BbHzxjCir/ivxhDPcmCM/NnGRWTKow7mvo+iJaHz9gJByBXQGR9WjEMcWO2cVl/Da0v/ABLcrbRwvKmeXxXpFwtl4LDLeKok64f1pLU0qKK2PG/FFs/h/wAzzTtkIzgnFcRpniQ3upeWGJG7FaHxk8ZDxBqUhtRtC8cV5X4W1Ge111VZCctWyjZGEZansV5J5dwhbjir1nfhELE1xvia4uYo0kRW5Gc1zaeNGt4SsjEHOKuO5v7SzsdN4t1olyqc59K6nwVc+Zo6rL94iuF02yHiGPzUlDseQBVyVr7RMIHYKvbFdsdjtg09Tdn0wtqDvv4zxg1uW2rxadatHI5IrmtL1drojehDetdto/gP/hJbGV0lG5RkCstmbc1jynVdZin1xjGMDdXVWk7PEgBG0juaytY8Byabqku9D8veqsck0cmwSYC9630epcfe1NyTT4pGZ5HCt9etTaH4zn8NXYMUhKKa5S91N2bYZDkd6ytRvhDFgNyarlRo4RPo60+LsOpWiIjgykYNa2jTT6sTJI4AHIr5m8NSma4TYWRs9PWvd/BUc960aTXX2YcDmuepBM53BNnoUOpLHG6MwYKMVhS3haclThc109/4Bms7FZ4p/O3jtXOXFodOt3kuBgLXE1Y5pwSYyb4lQ6DGUkPT1NSaPqdr4mlNzHMM43ADvXzt8XvEturyCG6Cv6CvNvh78UdT0vxRDH9qcws2Nue2aTVzz6krS0Pue+LxjaM7BVeGV7s7c4I6Gte0uoNV8Ew3igecyZOfpXORs8iDYShHeo2N6buiXUdMvHbK/d9qaujs9pI8xACjv1rX0zUdkLLMwIA715/8TviDbaFpkxiuFDEEYFVGVjWcoxieLfGvxlDo11NDC+50PY1w3g3xlN4gBiYknPGa4LxdrL+I9ZubiSQlWJOM11/wf0x7rUo1iTILda3pVEpGNCsuY9Im0thal884rK0rUWsbshmzzXpGteH5LKxJPUjpXld9bSJcsx7HtXsufNGyPpoPnjoYnxTsjqUPnRrzjnFeTAm3UqR+GK+gLSzTXInt2wCRjJrjNb+FVxFekx/Op54ryp0pNnhYzCyqPQ5LwVfva6tDInDA9BX1v4f8RXN5oUbBiDsr5Tg8N3Xh/V1kmiZY1Oa+gvB3jnTG0uOGXEThcEGrpUbCwlH2UrMpeKdQm1G6PmMcr0zXMalaFIw7YIrpdfRdRmMtucr6iuX1O6MkX2ZmCN0ya73TVj2pUoyVxl9Es+jHyvvY7da8a1fNvfyeYDkHuK9t0HSrq6byApZCM+Z2rj/H/gVrS9mcNnnsK4qtNHgYihroeYzTs5UKOPpV+TJtMdTirx0fyISSQGqOGxcAbjwfeuD2buedKjLoXfC96yNsOa9O8MjCM8hwD3rzrS7dLedSp3HNek6XEZtP4+Q+nevUox01PewqcY2Z0mkRJd3gCHPPYZNe0+G9Pa2t1wuMAYzXnnwd8Ni4v99yeAcjNet+L72DRkjS1IdsYwtZ1lY1m0mfa2vKP7Yuv+uh/lVDHGaua/n+17r/AK6H+VZ+4gV+ZyVz8yYSRgDOamil3fK3GeKi2bxzSMCNvtVUVZ6lU9zwf9pj4Z3WsWFxexMzKik4B9K+MReS+H3ntpIiAc8kV+m3jWJL7QLhH/eAoQR+FfEHxV8P2S3Um2HY2DzivrMBUSdj67LrHzvJ4YGtaiZ4yck5x6VpW3h6SzmwWPHvXSaLo72UrzA/JnvUF9eoblh719V8UT7KhTi0VZNMVdspJ3Cuh0bWGtINjylRWHPe7UzjcKqzNJeWz7FIpqKcbGs6Ksaev69NayiS3mLnP3Qc17F8JPjOum2KR3LhJAOp4r500eyna8Jn3MoP8VdLPpUk5C2jbZDwAtc1eguU8DE0FJn6G/Df4rWut2Ijlu4iT2LDNeX/ALQVoDbPOkgYHPINfIVv4l8V+A5RKvm+SOcjNdFrHx8vPEmlfZJyHlAxg5rx6OG9/Q44YZIo6CLnU9aa2aQKhcjr719k/s/fCuC0SK9kJfkncfpXwnpOq3enX632Cqbtxr67+GP7SNro3gxo3AEqI3U+1Xi6EuWxli6VoH07r/jDRfDSFLi7jiZR0LAV5v4n+PmgQaZP5N/F5gHGGFfnx8df2j9U8Ra9OlrMRFk/dJxXik3jnWLk/PcvgnkEmvGo4ZKpdnzNuWR9R+PfjTrOueIZVsrtnh8zhQxrJvtf1nUbcpI7LuHXJryDwT4he3PmzoznOctXo0Hih9Ttv3CguBX00aSilY+iw0ly6mLcaJcT3O6eYnnua3fD3hU6tcxwRElc9jXmvizxLqljcFT8gPSvQfgNq1xqOswB33ZPNbSnZHV7WKZ9CeCv2fYWiS6nRmA5r0f/AIRyx0WzaCOLBA61s6FrAsdKjR8AFfWsnXdctW34dQxFeXKpKUrHVCpdaHIXdmty0iLx9K5Ka0g024d5eo9a3ZNZ8iZ245PrXH69LLqUshXgGumCaO+jqQ6p4nSY+XF+lY01+YkLsce1Vm0uSKYtyRVHVJmcCMLXWkegaUBOpLkuAM0280SFUOcGs/TfNtkAY7Vqa61IkMCwOPSrULai0Me9e2tUdWOBXnuu3YuZ2jhBYk8YrpdeuvPLIuQak8F+DTqmoBpUJGc5xVTqW2OScrD/AIe+CptQlV3ibB5yRXqEfhdLNQsg2AeortPD2j2WgWiYVdwXvxVTXo11CF2jYLXL7RshVWjjLvSbeJiyuCfrWTdaulsDCADVh7a5ku/KV9wz2rYh+FtzqaCckgYz0oc2Eql2YGkLHfXK54Ga7u60LT30ngAyY7Cubl0D/hHJiHbkVrW2qw/Z9vmBmx90GlzslSu9TBsNOWK4KpFkZ9K0m8Pw3EpZ49p+lXNI1m1t7j9+m3nqa07/AF2yJLIRz71LqWHLkRnWGhWsfDgKD61Bqum2luxZHH4GtKMJeRFy6qOo5rkteaQyGK3lEzZxhcml7WxyzrxjsSyG3uo9kkoRR61c0vVtI0ohTtc1gab8MfEviWYGO2liiP8AFtPSuxX9nm9s7MSzTMZMcqc1arx2OZYtc1ilqk2m6kPNiZS390Gsm/itIoMIF3Vi654U1jw5ct5MMjqM9Aa5iJvEF7eFHt5VGeCVNaKcJHdGtGS3Ox0+CBJCzhTRcyRo5MZCc9ql8P8AgLW9R2l9yIepIrsG+DFzGiuZwcjnNRKUVsTeJwQvZ2mA34Fd/wCFoBexKJJBj3rnNW+Hl1ay/un3EUsdjqWi2u4BuOealVEPmR6NrGnwWFgzo4zjsa4EeIIrScyFstnpWZN4gv79PJlbaPeo7Kxson867uF/3c1d4kOSNqfx5I6YRSR9Kz5fGayZEnUeorSF3pUVuTFD5h9qr6VocOt3hH2VlU98VV6Zk6ljOl+LUdgjRqdoHANN0/4vJNJ80oyPWu0/4UTa6sh/hY+1ZN3+zTNbMXiYkewqOencxdaxY034s2sqsjsvPepNJ8cRajNOrSgjnHNcB4m+EupaHC0kaOzDnABrzO38Q6l4bvWSeN4xuxlga6YKjJBCqmfRGm6lJe6s0Qf5Ceua2NSsJREfKbdx2NeOeG/Gw+WZWBfvg13Wl/EWNoyrMrMffpWMqd17p6VO0ipqOjXlxISd3rWXNbOkipKhAXua7rT/ABFFqDDAXn0pnibRVNm00Y525qadOS1ZryJGZol7Bp6BkwSK6e38ayXkJjB+70ryq3uTayOHY/StnQNSWWcjIHPrVtWIkjqv7Ru8Owzg5/nVfw5qE0msL5i9W5retUgNjliMkVS0S0Qanv4CjnNYyRzyiejQ2vm2u8DAqo0qREpgMfpVO/8AF8Vhbi3jYMx7CqWmXz3txmRNuenFcs5HK5WNKd7YIzD7/oK569t/t8uNpxWjcWckUzPgnPbFXtHWKWQCVdvuRUweoKVzmL7wuGtWZCQwFcb/AMJEdCuXilHGcc17hqWmpDbMyMGUjJr5u+JkoTU2WP8Av9q7oanfBaF7U7k6zNvi5B54ot4WVPLbIqv4SbFurORn3rVlKyXfy/pXS9iyJNEijPmycir1vqSWbBYkDGtZtLe5sgMbTjrWXa6WsFwd3zAVgtGUo8zI9Wmu7xFkKkKKzr7xR/Zti0ZfJArZ1nVlt4DEkWRivK/ElwWikZnwT2rpijofuowNa1xrq8lYMCM1nJpU+tTgZ4NULSYSXLrKwVfWr8PiNNMb9yQxHAwaqU7I8WviLOx698OvDGn6Vs87Y0o9SK9xTXlfS/saRDZjAYCvj3SfGV5/aiO7EJkHGa+pfC3iaxuNASSQjzAg4rzqkjlVTmM37IlpeSPKRjOeTWTdTw/bMxEDntWL4x8Wbrmby2AGeOa5XTvE58/LHJz61zxVxudj1Xy47+IRnk47Vj32jrBPuZSF61T0XxQsVwpfiuo1W+hv7RTGBnFa8ttSFNSZDa3VrFbbNo3AYFZ+pajI0ZRWwKsaXpaXIy7bfrSapoE0h/dfMPahy6G60POvF2lS6jaERDcTmvKtK8K6lZ66rGNwA2c4r6Qi8PTQKfMjLYpo0m1DAvGN+e9cE1rcUnfQxrFVutPS3n64xzXDeN/hraTL50a/vD6Cu91CEw3yrGp2+xFSXun3F7tURsQfVa3px0OaUEeG2Xw3WZyrJW/pXwrhEy+ZH8qnNemR+Frm1lVzCQh6nFaE9l9mt2ZBlgvSqmjB0FuM8J+E7DTIAUUAit26ZVRhGQK5m21KRVKFSDWppdpc6gxABOaxuzTlS0LtlpUUhWWUgk+taN7o32qJVt4+fYVa0zw1dNOiSAhT61614b8FWlvZrM7gsB0JpczQrI8w8J+ErvT5hO8TBTxyK9ZguRaafz8pArTkjtFt/LVV+T3rltYvkYmMHan1rGfvGEtDc0XxPBHIwlYDHqaytf8AiBY2t0UlkUqfeuel0K4nieWDcwI6ivH/ABnZajbamTKXKj61nGGpMNWfSGjeKtL1axkhj2FmHc14n4/8A2WoatI7Kp3HOQBXKaN4sn0qQLuK8Y5NdZY6hLrcYldyzGu+1kehypozrD4SWEdoZV5bFZV34PMEhCRdOnFegaZdeVJ5MkmB6E1Nq1s0S+ci7wBnjmo5iGrKx55P4avYbAmFSmR2rG8F/Ce/17Ww1yXKl88mu9uvFQjQxmPGOOeKg0vx/wD2TcExgA9qTloZ31se3+FPDWmfCqyafarybNx3YznFfOPxm+JH9ta64QkKSflFdF4g+I93qFq4diwbrzXmeo2trqEnnSMN2elVTQ5bHIeUtzOXYElvWnWfhoS6tC0SZy3aupg0GG5nQRnAr0Lwj4MSW6gZV3nNbydjONrnGeM9Cey8NCVojkLXzbq0d3PLIV3ADJ6V+iHjfwBHe+FzEUO4rjgV8reMfAv9hxSkRnJyPu1kp2ZVRdTjPhH4nFjdCC5bHOPmNeqeJGhvirxlSCvUV83Xj3GkX7yqjLtYkcGt2y+KU5eOBw2BxXZGehVOs07Hpb6itgQoxXaeBfHN1Yz+WrfIwrym1vP7UVZXJQHnmu38JWS3MyrC4Le1ZuZ3p3Vzt/Fuq/aw0hAywry/WNQS0c/Nhj2ru/HMR0yzQscfKM14V4m10z3gVOh604zaD2nKjo45ftb7t1ZmvAxR5DDI965r/hJ3sFPWsjUvFsl7x60nWsziqY2zPSPCOr29nIk0jjMZzjNe3eGfGdtrsB8kiKVR8uO5r41g1O4s5QxLMjcmvWfhZ4qEmpQIgKncOK2U+ZG1PEcx9HQfFnWrKdNPuGxFuwhOeRXQ+ObuR/BT3hbDMmTiuS8WaUl9Y2V7Ft81BkjpTr/WZNT8HSWMjBX2YC5rGcbms5tq58g+NNTk1HWZd0hIz0zW18M/BLa7rMTIrZUZ/WtS7+GtzPrZYxSEE9dvFe6fCrwCugqJgoL46EVg7o8xxcnc9X8NH7DoEOnSNkhQOa3YLO1NkVUAOB1zXF6lcz258zawPpitbRDe6mgCxMFxWV7nXBcqKGpRzwRysHyoBwBXyv8AGC51S4unQLIV3HGAa+yLrQWtYyZXyPSuC8S+C9M1idA0Y31o0rCqRU0fDKeHr65YKsT5Y85Br6R/Z6+Hc8UkE00ZHPcV6pZfAyzws0cQHGc12Hh/QE8NgJHzjoAKwTszlpx5GY/jvw35VoxUZwO1fP2pW4F08bAA7u9fVmq2c+pQHzUKxkdcV4b478AyW0zXMGWB54FetRqH0FCvZWPMo5X0fUFdTla6L+3orpg7BeBWY2jSXjHzOMcYIrNv9LuLBmxnZjr2FdUp6XOz2l02yv438RWCoAUTd+debTeKnt5C0LALn1pviOWa5v2XORnGM1DH4YuLyIbM5PtURm7ngVK7jO6Oy8K/EaR1WCX5s96NbnmvdTUwglCc8Vh6D4Mura4R5GIXPpXqGjeGhNtbbvx7V03uj1KU5Sidv4aNlpfh1Z5gBNs5zXnPjTxVZXzyqhBYmtHxjcXVhphhRWC46AV5TFpk97MzuSPrXHKTvYzqKTLEukSapkwnGfSrWneDpXBS4PPQYos7i50+VUiRnBPPFd94biN5IGuEI9sVaikrs54R11Oc0/wD9ncSt5m3rXQ29utttijYhvU16rpnhuC/tEVYmHHapF+GcE752sr/AIUvbQid3NCKKvw/u/sUm0uAa7C+s5dUvFdsuufrWr4K+Cs91IJA7BevIr1Wy+GkGnBQ7BmArhrYiL2OGrWjsj6H1/8A5C93/wBdD/KswnNaXiD/AJC13/10P8qza+CsfnjFWg/e9qB0NB+6KdrFQ3IL63F3bPEejDFfOHx0+G1xDay3cKAqEPTNfS/JHHU4xVDxjZwap4ZuoZ0UvsP8q9DCVWpo9zC1vZyR+Zras9nHNDJ94HGK5ws91ckheprr/iNpsen+KLiNeFLdPxrBguLazPzEbhX3tCXNA+9wVbmiaFroZuIQSMVJdQw6VCd5AzS2/iOOSMrGR04rj/Fmo3Nz8qk4FdF7I7Z1DattRgckIATntVu0uJ4LuOVP4TkYNc94NtxO/wC8OTXZx2jrdRhU+XNFSV4nJyKerPStLvdO17SUgv0BfGPmUGuM8UeANH0eUXUSIB14UV6F4f8ACsd9pqzDhwOgrz/4ozXFkvkHO31rhoSSkYyios5q4urS4tJYo1AG3AwBXF6zfXllaSwWpYliQAD/AIVd0+bzHVAcknnNe/8AwG+H2j+LNUjGoCMpk5DV04mcXGx52KipRPjRfBOs6tOXMDbmPXFe0/Cv4CC4Im1WMCPbySmf519cfETSvAHw8lhjSOAyHqBg1wurfFfRI7GSO1jVR2wteFGPNLQ+djh7yPEviNoWgeGLeSKzVQ444RR/WvJ9N8TPp8zmMEJnvXoXjq+h1+9kdQzIxrzbxBZC3hYQrjPFeryuKPRdBxjoZfibX21u4A4J9hXuP7PHhqSOa3uSAvQ14X4R8MXl9qW+WNtnXp719T/DwroVrAPu4Ue1c07mEMPOUj3K+82GxRd/AXsa4PVL91nxvyT71sTeIftdptD84rkdTyreYTWcKXvXPo6GEcY3Y9kliBkkf5T71mXmrw4IjY8daq3WsvKPKZvlqhJpXmHETZDdTXdyWO6FPlJJddEnyqufoKr+SLg7tp3V0Oi+H7WBc3OAcd6i1g21ocwkEdOKd7MmdWxymp74UIzj2rnDPO85UZAJrs5NOm1Mb1XKn2q9pHgGaaUSFDge1VOorHOq99DA8M+A5ddvR5j4Tjk1714X8F6foFluZVZtvXZXJppcukQjygUYdwKZeeKLy0gKuWbA9K478zKs5HQaykN1MyxyeWB07V594hku4Lj7NbyMcnGdxrC1jxXd+cSrsuDT9J8Qm6vkkkO7Bq1AylCxraVol5YsJ7hiPqxr0jT/ABQllpe1nOAPWuU1TWIprMYIAArgr3xBI9x5Mb5XPaq5AUbmp4+8SrdTO0PLZIFcx4Sa/vdVDFP3Z9a6ddAju7ATPgnOea3PC9lDEoEYUOO9HIXyC3/h2a/tx5MS7+nSmaR8KfEF+4HlZQ/7R/wrqRqC2SBlZdwrovCPxSNlOI5yoAHesJQMp02yro/wT1NkSN3HPqc4r0zwb8BNK0lhcai0fmHk5XP86zLT4ltbt5zSfL1Fc34s+Keo6zIVspCAPSuSabPMqYeZ9E6d/YmkRiGMKVUYBCisvWdPstSZmjKhT7V82H4mXVnGsc8h83pzWlZfFaWGHMk20e5rFUZvU51hnuz1O/8ACGlyMfNKn2KCqFv8PNF1U7IIoxKO+wV5DqXxXS7mIW8wfrWfN8aovC0RuBfKX9M1SUolyXIj2+7+H8+lArEF8v2NYN34Z1OYFVYsCcY3GvE2/bEVrgpNdjZn1rYt/wBrvTLPZIs6v64NO8jlWIaZ1mp/D3xA5JRCq56hjXN6n8P/ABBcqY/mZenWu58E/teaH4kdbWRlyTjpXr1t4v0a7tRNHsYMAe1ZSqtGn1mR8nJ8Fddk5G4Mf9s10Ojfs5X04826+ZD1DDNfVWla3pFyg3BPrxWtHf6WFI3p5foCKweIkNYhs+ZrX4Jw2ahfLH5V1Oh/DpNPZTgdf7tet399pKvw6fmKfZ3WlT4Hmpx7iuadWZlOrIwNG8GRsQzKPxrq08KWrQgMBn/dFWE1G2jXCMpA6HNQnVUkmAVwa454iocFSvJGLqXw1sNQBEiRsvugNeV/EX9lLSddtZZYYoxJ94DygK9/S62hVzknvT7SY+cUk5B9aqni6qaJp4iVz8xPiB8FdV8DX0vlKGthk4rz6PVfsUjqxZD04Ffpp8b/AArYXnh+7dkRiEr5W079nW18a/apLZF3oDgDrX1OExafxH0GHxL6nj3hHxwulktId49ete16H460zXNJdJMByhwCBXgXir4Z6l4H8RzWksL+WGODVSPUb3RLxNzMkWQOle06sZqyPXp1PaHZeKLyI6k6x/Kp71BoMdxFdFlO5W5HNQajFHqtglxE3z9/WneF9TWKRldgxTisWjoaO5utfaztVDsV7YqPStbvLyVUgBbce1cX4jvpdQvo44vu5HSvUvhzpaWtvDJMmW461z1EYTWh1fhjwHNfzJcXXHQ4Jrr5tGh0y5QBcgdxV5bp0tIzENo46Uy6YzoHf71eVUep5VZ2M+Ropp9hOKo6siWMZkX0qW7gMLiQHis/VrlZoNrHilB6kUndmdN4xf7O0JzjpXj3juFJZ2uE5JOa9C1KBFjcoa4LWYGlV9/SvSpM9eOxl+G7nICtwBWlb6qF1pYlUlc1maXbfMVUd639F0uBb8STHketdfQo9D1SeO10KN0wr4riLDV3mlYMCQSea29fuft0SW9ucgVLpfhlYNMDOvzYzXP1Ljozh/EOrrGxUeleZeKdSLxcHrXe+MrRYrxiDgAV5xqWy9njhTk5rtgtBVJ6HMNaySWskuMcetYFgJp74oTwpr0zW9PGmaK2FxkCvNbCR4rmV+2c1xVpWZ8viW7m00bxXKsjfrXtHgvU5ZrER7z90d68KXUA0q/NXrvwrf7fciMHsK45O6IpSLXi62ljZ8A5rE0OEh90jfnXo/j3SfsSOzCvKr2/a3J8virpourJpHYRSsZMqxxnrXdeGt16qpvJ+tePaXqzzAAtzXqvw6SWWZCTxW8loZUZO52D6ZNZjIJxjNa3h+9jlkEUp+b3FS6pMsUIDEdK4+C8eHVgwb5c1xN+8eonoeg381vayhD0PsKwdasrdyrxsOfark1p/a6xspOQB0rVsvCMsmzfnb70pIw5tTmLNLGKVXuIlOPVRUHizx/pWjRKYIVLD1UVqeN9Oi0yLI6ivAfHd0s42KcYremtCJTses6Z8aNL1CBop4kB6cgVz+ofEvT0upB5arGe/FfOd8L6GYvA5Cjrg1Smu9Qu/kDHd3qmtTB19bH0nF4q06/UtFjP0Fdp4A163e+CMBjPcV8yeDLmW1IWU8k9zXr/AIdu2t2SVDg0ezTR0Q95XPpzV1t1sY7iFh93t1rmJ/GNxFE0SMQOnWuGt/GlzdotuScAYxV6G3nlIYAkmuaVMqx0thr15LkOxwfUmn6hcbYQ7tkn3qPStGurrIEZGBTfEdj9gtR5zbSKz5DOVO56d8P5ba503E0mBj+LFc/4+8OaTeCQiUeZjgACvKNT8cy6JpEjW0xG0djXgHiL47ar/apzcv5YNOMdTk+BnrXijw7b2TswkxjOMVB4M1fyboW+crnrmvA/FfxYv9Q2COVsHrzW74A8cbpY/Nf566pRVjojVPo7UoyJFmT9K6TR9VENkxuQCmMYrK+G1i/jTy40G/Nb/jvwzN4WtwrRkA85xXLY05uY8y8U38M1y/lxbRntXJXEMjMW5xXSXskCzEsOpqhq9xbR2jFSOlPlDl6nM6nry2ELJuOcdDXB6p4xMEvDGszxj4kC3kkYauO1C4a5GQetawRzzk0eh2HxDkhdWU/L9a9s+FPxHBuYPMfknvXyhZBiQvJr034eTPHf26cg5FKbMoz1P0h8L21t4s0UFjg4rwb4y+D47aZgQChbPSvQvhZrbWWiIjORwDk1yvxW1m3v12mUM+TxWMU27nXH3tD521fwLpd3E+EUsR/dFebz/B4yaoZYgPLz0HFeyXKmzLO/zKTxVW11NY5SGxzXbGOhp7DqeX+I/Dk2g2CrHkNitr4ET3NxryRXGcHPXOK67WdLTWpkGMiu7+HXw7t7G4julCqQKzcNTaN1oVPi/pUDWW1T8zKOB9K+XPEXhu9humeNDt9ea+uvHOj/AG+/C5BQECsibwNps9rh1TfjHWjlFON0fFuqQSwDE3X3rMRlycKM/SvdfiZ8PI0dmtxnntXi2o6VcabKQYuM9a46lzxK0HcglDPGAmCScc16r8GfCtw0xumGNpzkmvMtHgee9iRl4LDg19MeEEGi+Hm2RgMy9a2oSbdmdOHTTNPxF4zktTFbB8qgwai0DxPBcXKLMR97pXm+s3Fzd3s8rE4yTWHperSjWI0L4+avUcVY9lRTifW+mQ6QbQTybW78gV6T4M0Kz1GDzocbMZwAK+bra+eTRQiudxHrXcfDT4oSaAxtp5CU6ZNckoXM3TtE9a1rQ4r26MEaDg9xitMWkfhrTlOBvx3FU/DHjTT9S1FZFZSW61qeK9TtdSPlqQD0wK8+d4s43JpnGz3M2qs5QcVx2qJdWFwZHU8GvZ/Duiww2pcqDkd65vxXpsM0nlhMk+lTGbY1LuTeB9WXUNL/AHi5wtQylJNWVQON3SpvDmlvpth8q4BBqldPLa3pmCdDUSfYhu+x0+uAQ6co2fKB2FcjcyaTcWTxT4D+4FbUniX7bYmKRMHFefalo73N27K5Ck54renUaOim2UNR+HlvKGuoSPLblcCvFviTc/2MrwjkYPQV9L6HC09o1rvztGK8n+K3w2lu/MkEZICk9K7vaNo6lUb0PkG71IXN62Ew2TXV+FXmlnTevyVW1HwXPbakyrCR8x7V12jeE72K2Dxwt09K3pas4o0nOodJD5HlxkgEfSuv0C8tLaHJAx7iuQ8P2zPfw210NoY45r0i68BbrFjafNx0FdbdnY+np01TijMv73RtUfy5UVv+A1zGu+HNMtyWg2gN0G2sXWfD+qaPesWjbaTwcVWso7y/ulSQtwabgrXMajSNi18O28cQlCA/UV2ngbwk2s34Hk/KMc4rQ8KeGHu444/LLDjrXtnhnw1HolsZVhCHHcV5uIqWXKjz5SXQ6Lwz8NrO10uJ2iUtt/uir8Xg6zDEmNVxk8KKt+H/ABnaKRbykDHFHirxJHaWsj2rZO3tXjvnZ51SUuhLp+t2+hy+SFAH14rYl8Q6e2JGbn6V82634+u/tuG3YJ962tC1K51jALkDHehUZTOXklI+ytdGdXu/9/8AoKz2TgYrQ13/AJC93/vn+VUK+XPlBmynbaWijoAR8NUepwpfWU0eDuKkDFOdivSnod3IPStacuR3N4ytqfnz+0F8PNU0nX5LuOB3hJJyK8Hntp7uYgs6P/cIxg1+s3iPwlpfiu2MV3GrH3r5j+KP7L8emyXep2IwpO8Ko/Cvq8BjdLM+ry3FrZnyRpdjNZg+ZGTUWrQy43FcA12d/wCH9Vt9Va0MROGx92tHV/BcyaS00kR3Bc/dr6CNaMnc+pdWL1PPvD062chbdz6Guph18D5yRheea87hu5U1RoChGGI6e9dG1rcS2xVYmy3oKqdSNjOWIie8/Dnxpa3lssTTKDnFVviZ4ej1OLzQd+f7teM+Gra+0q5U/MvfkYr09vEUzWW2XJGO9ee6sIu5w1MTE8b1TQ7+xumFrG5IPGBX0N8DdL1K00VruWN4pMMcsMDpUPgu00/XruJXhy5PPFex+I9vhPwa0aR+WNh56ZyKUq8avunDGqpyPnr4iwvr2sZeV5pFPOGOPyrj208xXIicnZk8V2GgQHWNcnl3ElmrdvPADyXyPyAfanBKD5jvUYpXPK7jS4kbAJIPQGqLeAHv8yBTt617Nc/DdRiTBJAzjFVrqyfS7ZwIiBj0rq9vCSsZurFM8x0rS4NGlEbYB6V3+nC2nhQiVVI7ZrzTXJppdSHBUZzWhafak27GODipUIvU66c4I9GbUYNPIHnBh7mor3Wre9gIVxkVy0el3V9EGYHP51Xj0u5hlwVfH0NTzxg7HU8So7G0Fjmf73FacbRW8Y2sCfeqek6NLMQMEZ9q6rT/AIfz3zIApINRPEJI5Z4yxyc+qXUsoRQzZ9BmtfQ/B95q06tIjeXnoQcV7b4K+CCzsklxH+Yr1/T/AIWWlpbhY4lBry6mMtoeDicd0R4BZ+DLaysUjSAtL3wK27HwzLBbFzEVUDPIxXss3hfTtDxJdYznoa0rrw5Ya/ortZFQwX1rjjiJSZyUMROUrs+c9WktYk2Oo3etcRq0aKju3+rrf+JNm+gai0ckmMc9eK4O/wBfhns2jMg3Yx16172GXMj6iniPdOL8RTRXE7pCQpzWj4N8NyXShnyDXGapfG11IuDlc9q9B8H+LoFtAv3WxXZVjZF8zmWdf0uWytyglz1GBXL6LpclzcsHRmOetbOr+I/Ov1VuU9K6Dw/NZmdSoAYjms0tC7WM+6jnsbfYZD5eOmKy7DxQ2lXXI+U8cjFdtrEMFzhQwA+tYl1omnmEcjeD61Ldiio2vG5G84UdeprMuPEMcMwIcAk+tX9VSG3tcQ9SMVxLaHc39yTztHStoWZqrI9GuvGscWlbfMXcF45rJ8OeOzFIzMwIz3NcLqunXNuh3E7R6iuG1vxU2ixsiE7/AGqJRjucGIqKJ654t+IthC5lLr5gPTNeQ+JPjreO7Q2zqq+tee3epX/iCdsI53H0NWtO+HGq3jiQwH5ueVrklNHiuq27Ivx/EjVHl8w3P4YFZuteKNT1ZPnmYp14Ndponwiv5ZFM8bbe/FdVdfCkQ2ZxHzj0rnbTOafNI+fZHZ2IZmz9atWk0isqhm9Otd3e/Cu8kumCRNjP92tTQ/hDeGVS8TcH0ojC+5yRpSbG/DbSLv7fFPG7qoOT1r658O+MlsNKjhklG9QByea8w8F+BpNHtSGjYE+orTuvDWoyyExZC+mKtUIs9ejSjbU9Xi8eyeViKap4fHequm1JTXjcUGp6cwDoSB3wa1LXxVNaOFlQqK0WHgeiqMDvLzxvrHm8uadD8RdTtAT5gDV5/N4jEr7uMe9U77WVmjwrAGoeFiyvq0Get6T8ZdUMuySQFc+tdfYfFi5LBuM+tfNmn3SpMGMgB+tdPBqqRw5EnP1qP7PjLUxeApyPoeL41SW8iCV0x/tGuw0f4r2d6qszxhvUNXyBceIV3YL7vfNTw+JZuPJkYVjLAcuxn9QjHY+qfiB4itNY8O3iRzo0jLgANXN/ALEGoXQlIw1eBr4l1EYLMTEDzyea6jwF8SX0S/Y7SAT1rB0XAzeHcdj0v4yfDOHXdYkuY7fqTyK+b/ip8NjptqZPJYFQDnHvX2b4d8Z2PiixVpSob/aNecfHPTtPm0aQoV3Fe2K6sNzcxpSjKmz5A0XTZvsEiAkYrFhlW0vpIwcOxxXU3OqQ6QJoww5z3ri9OjfUdZaY/cznNe7CF9z3Kc9DstM053uElYcepr1Hw5cnfDD0wRXBpqMFtFGg5fpXdeDoJLmWKUJ8vXNYVNEzCu7o9htrmOPTwGwCAKoz3JlQ7ay7q5ZVCLn3p0ExWMZryXBSPJlDmJr25V4AjEAjvWHqDQx2zMWyR71d1mHFrvRuSK8+1TUZoNyu2R9aFDlOilHlZX1HV98jhQQorn9TuRJAxyBUst8jrIAMk1jziS4Uxqp+Y+ldUNDvb0JdEV5Ji0YyPatPUrWYRNIreU3vWt4L8PG2tmlmU4AzyKw/FepPc6gbS2zjPQV1c2ljDmOs8DWDXFs00xLso+tTeIfED2cTRRsFxxiup8CaE2meHPNuTyVPXjtXlvjG6EmoTADKgnGKwXxHXF6HE+MNbLhy55xXD6Hi91QEdj2q548vPs/bHsar+BAWmMu3pzXpwlZHFUeptePbWWPSQu45IHavHPPktmdXGST6V7l4oulv1SInPSuRv/BKXQDKoDGuCqrs86tC6OB0uykupSdpx2r6I/Z/8KSS3xllRggGQa4zw54IWFsFQQK+lPhPptvYWLKm3zNuMDrXPLY4IU2mcB8br82cs0KLgL3r5+utRmctmvePjLBd3Op3K+WcZ4OCa8k/4RW6n5MZXPtTidMqV0VfC/m3N0qn17V9G+C7SLTbOOSQhSVryzwf4Peyl82Vcj3ruL68kihCREhVqnqVTpWRf8b+LxZ52EYFeYX/AI8uzIssWAAecCmeMtYZj5ed7e1YcLBrMZX86hRCaa0R7L4A+KZk8uO4Vd3A5Ne96Z4jt73TFdSqvjtXw7BqBsLlGj7V758OvEj3enorN1FKUTKKdy/8RtTmllYM+VPavEPENjLckuynB717L4ohN1cDIODWJq/hmP8As1GA+YnFXFaG7hdHiC2QVWUqT9axlVLS9fKY56kV6Ve6L9m3ttyPpXAa+PLuCApOfas5aM4J0bO5JZET3C+WcHPYV6v4OikcBZXKjAxkVwXw38PPquooCrYJ9K+im8AJYackgbDY71Snoa07rQwzZiG8V4D2zkV2mj6vDZxobgg4rloJEtf3b/MwPrUsyJdxnDYNLmO1bHpSfErTdFsmlwjE8cn2rw3x18Vp/EF9JHbuqpuIAU0a9ZSGIxqxI964yx8MzG9DleAae5UY3R1s2nzXnh5mmP3l/OvnHx1psdlfOVOfxr6g1ZHtvDjKOoXAr5c8dCX7c2/PJ9M1LRxVoaHLvOrMAWxx3rtfA9o0lxGRkr61581nJczKEDCvX/hbo8kckfn42e/FB5cLqR9m/svqtiYZZW3AdzXpfxmkTWrbCICF7rXmngHWtG8O+HQfPXzgOm4Zq7bfEK31maWEurR565rlldu530zxDxZHLaXJUAqua5vUZJJbMgntXqXxD0Q3RaaMcdQRXlV6HjLRscY9a0jsd8NjyLxbo5adpApJrk53aPCdK9w1DRI74c4yRXCa34Gfz90Y4zVnLXptnLaOkk7qqsd2fSvZfh7oTi4hkcNuyOa53wj4HlF0m5SMeor2jw3oLW4jG08Gkc1Kk7notnrNxpOjkxyAEDFeD+MfiVepqW13yNx5xXsmpSC101lc9fevGNZ8PRazfHaMnP1rSOx6SjynYeGp4/E2kK0xBcjr0psPg0zytKJgEB9as6B4Rm0rSMqdi4zWXqniGTSy0CPz3INaKVjVOx0Vjp9rFKFLg7eDzXT2+uiy2w27ggDtXkEetDzNzS4Ldea67w3q1oZl82ZScdzUzloJzSNnxPqcu1nU4b6VxkWuXsl0EebAJ6YrutW+zahBiIgk+hrgNUsWsL3cATz1xWcWXGSZ0GoeGTqtl5rKWJ9BXn+vfDa3lSQyRZOa9p8I3q3lkIWxnHete68CnU0YqR8341MtTGcUz5Oh+HaR6tEYYiCrDpXo0sMun2YhZSMe1erad8NhbaiWkHA56VzXxDsYtPkO0cdauLWxjGNmeH+Jbs2u5V4Zvauf8LaU93rMckpJ5z6V1V+kWq32G4CnvV2xsoLW4Qx9c1unzHTFnoNjaRQ26jOfxrL14W+ngOrhD9au6aElgXfJjvya4T4iagiMI4pcnPrVWsbqS2Z6h4E8QLZMsvnjp613Fj4yjvtRTdICM9q+Z9G1Z7azH7z5sdK6Lw/43W3uBvPzL3JrOVLmK9nGR90aRf2TaUp81Vb3asy5sYbp2lBVyO4NfL8HxcmkmWCOXCZ9a9W8LeMjLpzgyAsw9a45YexyToanp13qFtBapGrIGBGRmsPW9ZtLeJcqrEjkiuDiTUdY1YrCxcMcnFa+o6Fc/Y2Eyncq9xWLpNEKiP0nXbK4nmWRlXk4yelbVu2ly2crlk3jpzXgervcaZfOEJG454p8GoakyMgZhmumnFI6IxsewabrmnaPcyyGRTz/AHqzvE3j3TtWSSFAhJXGRXj15/aDEhmbJ9qqLpt7bfvOc9eRXUo3OuEUybxLpFtFObjaADz1qxY+J9NsdKdWMe8LjkiuX8X6pcC0WJzyeOK81uoLyVHOSFP1rqhA7Y04pXOsn8YRPqvmRSKSG4xXsfgDx0ZdqzMrqeua+ZtH0hmmDux69+1e3/C+zhdyWZSQO5qpxaehrz2PSvHAsdWaFYLdQzYzg+1ZGkfDrbcJc+QRGeetPvNVgs7vklgprrrXx3ZnSI1G0MBjrWU+exyVVzI7TwXomn2kKgxgSD1NdLrt7DYWRGVOR615Tonij7VOVjcYz61qaxezXMIUnNeTOEm9TyKkGjBvdZmg1FzE+0E8Gus0bUpdTtsTSbs1yiaObmQvjJFb2mBNOtXDHbjvVxiiYw7nNeOLW3s33Km44zmue8P+MZrOX90Qccba3fFurWt3btGPnfoCDXMeC/C8smqmVxmI84NdEbIJRsfodrp/4nF1/wBdD/KqO6r2vf8AIXu/+uhrPr4A+DWo7Oe1LSLS0DEYgDmo0DIePu+lSN0pg6mpY29BTFuIYZB+tYvjTVIrHQLo3AyoTjP1reBCgZzwK8V+MviJ5oJrGN8dq7cKpJ3R3YFy5rnkcMcOteJZJ0jUx7/T3r0S88IWOqaSIfKUM64rj/ClvFp4G/5pmNeteD9HuNUKs6fKpyK9z6y6Z9M8RyxsfNOsfAiHStWa5kWMoWLciu38M/DjTLmNB9nRiPQV6p8T/DdzNEqW0RL5xkCtj4TeBJo7cNephsd6yljHI8+WKZ4R4p+FSLcbre3Cr6AVHp3wvl1dVtzbbW6ZxX1pfeErAyfPEG59BUuneHdOspQwhQH6VyzxTZxSxTbPHPhz8DodElhldAW6nNYn7Tu7StCaCIYATH0FfSNzNFbcxqM+1eLfHXwvL4m0qcqhY7MYA9K0wtVud2dFCtdnx58NbphqnMhDF+hr6HtzG/k+aASR1xXgGkeEr3RPEZzGyqrcDFfTvhLwzJrtpbyPGdwA4xXt1avuHoyr2R0WkeBo9ShicoMMO9TeIfg7DPYvtiXO2u20+ePSNL/fAI0S/wAVcTqvxqhtrt4WlQp0wDXkQqTcrowVTmZ8teP/AIavpGpE+UAMmneD/CK6nOkbLs+td98S/GdrrFyrRBW+grc+F9pZSRJNNGgfHGRXqxryUTpU5I1fB/wghvWjRo1VcZzXW33wEsoV3sIwAOuBXd+CbyFQ5ZFjhRThu3SvJfjT8b5tJ1I6fps46clK5eacplQqOUrMjm8BaXpUhBePcp6V1PhCx0l3jXzIwQfSvnuHxjqupytLdXLqDzljWjpXjl7KdRHdHdn1rWpCT0N6kUfZWki3ggHlgEetSarrlvpts0m/BA6ZrxLwP8TpJwttPKS7eprd8XatvtwpnxuHrXnyw83qefLCObuc98Q/H0eobh5hXGehrjLL44TeGrGaGLfMSMZzXJeObhYnkVZ8kn1rzu71K3t7WYyyZ46E130sK7anbHDxprUofFL4lXfie+Zlcgt1FedQvqs7E4Ygc9a5Dxx4wNvqzfZZRke9a3g74lB8Rz4Zule1RXIdNOcNjprTTZrqUCZeSe9dnpfhUwKJVOABnFV9FxqzxyxRZzzXf2mj3dzDsWIg464rSpO+h6MZxtoc3JpNtP8AeOCBU9nAtnL6Ljg5rauPDFxb8uCDVOTRpZUySQq9Kxc1YmVRIz7zUJXlxtIj/vVHDp19qE4ECtInqK6LQNNOuXC6esJYk7d2OK9i8PfDFtChzJEoBGeRXN7VOVjH22p4Fqej3dhCPNgckdqzrK9it2BdPL29c17X43sIYEkyqV4P4hH225aK2BBLdAK3UtDZVbovanFHrkRW25J44riJPgpfaxqXzICpOeRXq/w40IWc0f2pAQTn5hXs8ekWQ2yQonSuapVaPKxMmzyLwV+zhZwxI01qrOADvwK39Z+HtrocojjSPg46V61DqjWqlEQDA7VyWvq17fbickmuLnb1OCCbIfDHgezubffJGgGOuKvN4Gsb6QxrFGBmtHTjKmnrFGauWkv2dvmb5qXPY6dkZ9v8IdKi+do4zx6VnXXgSwtZCYokwD0AFdtHeuASW4x61nxSI0rmRh8xqZVn0MrpHKyaDBtCqgFTWuixwEfuwT9K6m4sIQhkXBFZzHchMQywpKtMuNRJmTd6PYzRnzIVBrjdW8H291OFjjG32FegRp9pYpLhfrWRqMrWF18q7ox3FbRrTZ2xqXRweqfDTy7cMgxxXm/iXRl0EPJI5O3tmvf5vE8VzH5JUV87ftB3strYyvDkZPauyFSZlOvKLOYt/FlpeXHlo5Ug4zmtxL5kQYJcHvmvnWx1qW3vldpSMkZya9l8LeJ7a9tUjLhn6da74VGaUcS2zsYJ49u4k59zVrT7srL8vTNYGrEwwBw2M88VJpepxwW+92+bHrXakpLU9uDUkeh2epxlFicDB71vafbWEaFmcKa8207XYJEyzjINbsGr20sfMwB9zXLUpJlciZ6DB4pOiQnyJyV9jXA+Pvibc3lu6NKSoXGM1VvrtPIbZITkdq838VrLK0mGzn3qaVPkdzKdJbnMatq0urXoCsQCe1dToYSytgz9ccmsLR9JTJeStS4uIQBAsgBbjriuyU1FGMqkae5raTcS6nrUaIN0eeTX1Z4J0m1tvDaEqPOArx34O+AbO7McssyeY3PLivfINBlsLIwwIXXsa8atXSucFXGQ2OauFCSlywxk8VUvr4FcRjJFbN5pE4IDxkN9K5/WbG70mJpfJJHriuKlVU2Y06sZMyPEHiQ2ViwbgivOZdTl1iYhASvSqnxA8YEO0bZQ7sEVufDW3gvIRPKoOT3r0HG6O5dxmmeG5ZXy6HB65rprDw1BDOhZAcV0/mWMMThQAccVjQ3GLo5GVzxU25TSTdjcmW3jsfJjUKxHSuE0nw9u8TebKny7utbWsy3QIlhPTsKqaJcXj3ivIh5NLnszG+p13jLxLFY6atpF8mOOK8p1C2NzDJMee+a7zxVpHmwCeUfLjNcdNdwDT5o0I4GK3grs7IvQ8S+Jao53AAHpWh8OtLkuNLllRM4HasL4gSmS4ZQPl3f1r1/4HaXDc6DMjAbitdV7I4pO7PNdSvEgvhESTID0ratoXliRyQKzPFvhS9tfGMr7D5ILHNRy6u9rc+V2XA/SsJailE7K2lFnbly6kmu3+FGtSHUyZG/d56E15baXhvIcZwPeut8KX62DlgQGrmkZxij3LxbYaVqgdyq7vXivKNdgs7GTaigAHsKluvFctwrL5uT6Zrmr+6N0WZ37d6URTaNdb+HyMKQOKwdT1VY1ZFJJNczqXiUWLFTJj8a5geKftNzgsMZ65qzJVUtDt7Lw62rBppOR15pL/SYobZkGNwqz4c8WQQxJE5Hz8Hmtm6t7a+fKDIbk4oHdSPIL6GeK9C4JTNewfDe/FvDEDxSxeErG65aMFqtWWkf2bOqxgKg6cVDuJQtqdnqc6ThWA6VjX+oF4lQg4Bq8UZrbcap/Z0uI5ASOBxW0VodCSSMa8tY72AhB83pXGXfg77Zc5dMYNdINUTT7xldhtB7mrM/iGxMTuCu5VJ61nNHHVa2N7wPo1l4eiScoGcV1Ou+JvtluBENqgdM14LffE2WO4MMD4QGun8NeKpNU4k6d657MwgdfpMIvb3Mnc10Wp6Umn23mhgOK5fStXhjuAExkGug1W9F5YEBu3Snys61scvfzxzAkMCRS2MKTQkjk+1YMxljuWUHg1qadObGHcxArSN+prB2K+uahPcx/ZVTAHevNfE3hD7VOHMYIPU16Z/aENzK5wM1TvNkls7Mv6USZnVSa1PFrjw5aaZKrNgEHoatR628BVLYfKOOKg8YxTS3rbDhcmqmnKLSDfIw3emai55LSUja/4SDVkTHnuin3NdB4X8X3dnNta4JORXA3niHJ2qMr7Uun66kk6qnyvn0q1G5tDc+s9H1t/EGjeWV3OF615B4vt7q31KUKeAa734a6qkemDzeSVHWuf8aX1u19IQoOTUuNj0ILQ4OTUpoHXK5rY06T7aFLQ/nU8Gkw34VwuQK0reOKzPlhRmpNWkzT8P2oN1u2YUV3ujPG86xgc5xXNaAYIk8yXAU1vaWUkvVe1OVDUIlRSJvGOmzJAGQFwe1cz4X8PObgyypt5713+u61aWtuFuCPMx0NcqfE9uq4h2r+FaLYUndjPF+vmx097eFdpA65rxLWNVaRJGdtz816P4hmk1FXYc5ryTxVIdLuGjcHae5FZt2MpuyOQv8AxTdQzkEsADxTLHxpeW9wG89sfWsXxNdxyMrRkZrINwNgwecVk530PInXtKx9I/Dbx2dQuIo5ZCecc16rrelpdWQuVGeM18h/D/XZbTVIctgbq+yfBrr4g0IKWBYiqizrpVUznNNvpNOm+UZ9hXqXhzXJDbozgoMd680u7F9J1LMg+TPU10dtqouLdUhB3Y7USZ0ylc7+bVEuYneHGQDmvF/HusRTyyLJ97mu40rUWsY5hcZwwPX6V438RroT6i21sKR1FOMW9SkcjJCkjzPFxk1f8MaHLc3ke+TAJpthGkEBJGc10fh3b50ZRe9dcHbQ1VjJ8e3r+GLXKSZOO1eDXHia51LUi8rsVBzXsXxsMgtsk84NfPockNjhqyqVLM86tUcZHqXh66TUpFiVsn2ro9S0IafCZFB3EZrzr4Y3brrCiTleK9k8a31vZaYrHoUrWFVW1OmliLLU4rTb0x3HJw31rvvD/im7slyrkgDpXg9/4jkiui8bHFdB4b8fDlJjnNX7RSdjp9vFn1Z8GvitaDxGIb8qOSMmvaNe8U6fqLMkDKwcda+D7CeWK6W/tZCueciup074rX9jInmTsxB9TS5LnbTtJH0Pd+CoNTvRJ5iL/smtg+C4bcAoqvivNvAXxHOrTqLiUdupr26HWLJ7RXDAtt9RXNKnZimrbHIHwpayyl3UIF9RXAfEHV7TSAIIEDSHjiuo8beKJ7RZBASqt3rymSOXW7sSzMXAOea3hKwqbszLg0i41+dGkQBCc810l18OYRYHbs3YrVmaLTLNPJQbsdqwF8UambllZW8r6V2xmkdybZ5v4m0mTQmmUIRjocVD4G8UyaTOWkzhscZrsvE11FqSskkYMh4rmLvwuYrQSogXjNaXTYuVs7BdTGo75DJw3PrVM35h3p55G3oM0vhO3t/seJmwR6mn6loqzF5IcYPvWkldFctkb3gHxIf7QCO27Lda9mik+2lQDjNeJeBvDU01zmNQCpzmvTP7SfTSEeUKV6815lWJy1Iqx28EEdihMjDkVy2t6qZjJDDk59Ko2PiGXW7xbZJS/biulsPCLRv5so3cZ5FcTVjgk1E4WPRWAMkxJI5ANb+hTyoQI48Ad8Vd1iz2yBVXao7YrV0K1jSHAQFqzczn50z6917/AJC93/10NZ9aGvf8he7/AOuhrPr4o+FQoOKXIptFAxxximoOc0N92hDlTnioDluP38HvXjPxc8KSeY13GpYMd3Ar18HDVDqenx6xaNC+OB3FdtOv7NWR2Ua3stEeBeBvBk2qX0TyAiNTk5Fe96Tp8OlIsURGMYJFU9J0KLRo2UYJJ7CtaOJEQsOSampWc9SpYiUiO6tIppAXUN9as28otAFQAD2qMjNDnC1gmzm9o2PaQtJyePWq2oXawfODwKkcF4jWfeW4eFg3b1qU3cyu7lebVwRuJ5rJ1HVhdW0iOmVIPJpkfly3JjB6GtdtBS6tirKORXfCfIro7qUuVHz14utLKDUhOqgkHJr2b4K6jbatCcIFCJnFZHiX4OHVV/cbVLe1dR8LPAkngyOQzOMFNvpXTGvKeh2RnzaM4H4/eOzpcktnajYT8uRxXzYReahc+a8p5Oa9q/aKt4mvpniIJzwc14PY38sbmJm6n1r0qCSV7HdS5EdNHYxMVM7jI610Wj+LLbTZYoF2hF75xXDvb3U+Ci7gfeor7TXtbSSWZNhUfxGvRjy9TrbVtD0D4oftIR+FvDTWtgVe5ZQPlPPWvB/DHijVfGV/Nf3ETyHBINZ0Hgq58feKobWNN0JfByPxr7V+G/7P2n+GPDCtcRp5jDkFKic4Q1RzOpyu58SfEL4h32gQeWqMmOOa43wr8YZn1CPz32/NySa+l/2gPg3b33mGzgDnJPCY/lXxn4m8Danod2yi14D8HFKnXjJamMsXqfW3hT4lwSSxTrOu5ecbq6Txf8XxPYblnBZF4ANfHvhTR/EaqHSFwp56mvVfCvw28QeJTteNhu9TXdGdO2p10sXZGJ4s+Ld/c3UjAMevQ1k2et33iSF0UNkjtXq17+ylrpt2kkjx36GsLTvhnqPg26ZJINyit/aQtoVKrOotDwPxR4Xu4L4sxYFvWuk+HPw/nvLwM6sBnOTXfeKdIN5cq8kIBHqKsaZr8Xh2LaijOO3FTF3Ko4ecndnsfgXw/baTBD5nYDOa9Dj8Q6ZpykM0Y9uK+ddP+KE0x2lW2f71aMnjWwunU3A256560pRuz1FTcT1+91yHWLwJDgg+lbNv4Pku4lIU7CM5ry/w34n0lZUMTANXs2heMIzaRhTvTFc9SLsRKLZs+D9C03Qp1lkRfNB6kVc8X+OBGrxQuuFHrWBqut+bEdgx71594h1ZLaN3kOWJx1rkhSfNc53FoxvFviya7d42YFie1VfAfhk6hqInuYzsOTkj2rLW2Gr6ijDOOvSvXdM0w2OkRiMZOByBW85coudoiutCSJ08jGB6Vp2EV1tCZIptgJIR+9Hf0rXtJBvz2+tcMnzMyk+bcswW/kp8+SSOtc5qyObzKNnmupubpBb4GMVjRLHcSnuai/Qz5rFvRiwiw3HpmmXcEhnDKe9XJIGit90Y5xVGKSWSTD5rNq5Mnc0BDI1uAG5rPnR0cbvlxWk+6JBtqhqcu1B5nSpjAycbl6CQTQbN4qO38vT5GDsGz2rItrrAygp00xkcO5AxWiWpKg7lbWLxzd5iBUZqpeX3mW2woWf1rVW2W6yc5zUb2ccOd3bua6YnfT91HFSWDq5k2kd68w+JujNrkLRFOOlet674ltbB/JYAt7Vyd7cR6odyKDXXCVzaUYzPkrxH8MbizZ5EVwBzwK5m1v7nw3dAENwa+sPEWnhbeTfGDnPQV4r4h8GJqd2xXjJ9MV2wSZEKVnoGh+MX19FhJ5A/Gt+W2lSPaSQT0rI8PeB/7CuBOSTxXT3V4HYcdPauuOh7dCOhkoJrUhSSAe9XWvHReJdp7jNPnc3cYCcMPaoYtKeVSS43Gr0OrlsSHxMbePaW3dutYOqa9Jcb2CnFaKeFZZrjBPy+1b8XhO1e1aNlBcj0qJyS2Oaq5W0PKNR8ZyWiMicH61yt14uvLmUyAlSnTNepa18Hbi/kaS2iBX2rjb34VazbblEGRXm1KrPmsWqjJPC/xh13w7cRSJPmNe26v0C/Zf8AjVZeNrK1t9SC+c5ALE1+eQ+FGsPDkR7frXsfwCsNZ8Ka7aNJuWNWBOCfWvJqpyTPFVKpKWp+nWpeE9Mu2E0YUD2xXOeMvC2nf2OVRVZsHpiuf0PxuZNMy8h3Y9aydU8fbY2VzuHua56EXFnq0aUonx58d9H/ALL1O5kWM7d+elU/hv4zW3s1iJxzXofxijh8SQ3TgfN1Ga+btPuZ9G1oQnITd15xX0lLVHsQk9j6LbWpJpYsfdY12enaeJ7ESk4bFef+D5ItZto+RuTGMmvTtKhZVSEkBT71lW91HXJe6RadaebL5bJuya277R4dOthMQFwO9V7mxk06VJImwM5ql4n1h5bPY7bjjGK4INtnEm7ia/dJf6Gyxjdx2rxy4ja2iuEYEZz1r0GTXYtO0kg8HHeuIdhrhmMZ554r16UTvgro8Y8WgPIc8ndXpfwZ1n+z02FsbgMivMfHFpc22pyRgDap4xV3wbrslhOAeMcGt3C5hONnc+gPHVtaPYG6G3zWxk14lc2UdxdudwGT1rs9T8TG/wBPCSMSnFcHfXkUUxKNxmuScrESqXNaCxNugCHcvqK2Ibcw2+8MTkdKz9BuEu4Bg5+tddYWcLqFc8kd6z0aMlZmFpZlnuGDA03VpWtlf5sDHeups9CZLh3QDbjgisbxDpTSBtwxxSUUYVEeEeLtWaS72h8c1h2175bhi+a67xf4UO8uo59K4Ce3ltJSrZABqWzx6rknodfYa1J50RzhQa9b8La0lzEoL8njk187nUpIgAq5ruvAV/cyyJlTjPqanmNqFWV7M+kNKiUxA5GfrUd/diGZcYJBrG027lihUkdhVS8uJZrjcM4NUnc9hP3TuReB9NzkZxXKzau1sZc5GRWjpqzTWoU02bwy92rFsA1akO90ec6kZL2ViM8muavp5bScxGTG/iu68Q6TPpEbtGMn2rzO6+16nesxXDLyOO9KT0PPqoux2Eds7SyHe56DNelfCXSxq0syyAx5HBPSvOtI8J6jrV4ishXHTrivZND0HUPDNlvUFML261kpmcHY0E8MtYXbkt8ucjNWSzlhGpytZNxquo3Ue93Iwe5NJaai9vku+TWqaO+LTRdu9OC/vAOfSsa7E0jCIIQtaa6pJcSdMj1p095Eo+YAN70m0aJIx4tKNqC5OOe9a0OnpdafJkAms7ULx7ghVYYJHSte1ia2tchwQR60uVMTinuzxvxppzWtw7bCRk9q86mivLuYhMhM9MGvofWIbS73CbBFc5HoFj5mYlHJ9KjlRzulBnllhokgULJEzE+1b+heDWa/SVYm/KvQB4bVF3KgA9qnt9StdHkXcwLA10x2NI0kup0GiaXcWlkAI2HHpWVqugy3UpZ1IOa7XTfF1tc2S7FB4qzpl3Z6vOY2QZJxXLUepTaWhxVlpMmnw5wcEVk37NDMCflr1fxHogsLHcMbcZGK8x1SEzSDPGD3FTDUtal7Tjc6nbLGiMoP8Xau68K2UuhQb5/mGM5rL8HtH5EcRlCnPQivUotBjm0reZAQV9K0cUOyZ4z4ynm1TUt0bYjFY627223PT6V32o29nBdmPd830FV7/SYZLXerA/hQtELlVzN0uGO7hwQM471yXjnwLHqsckit8wHAxXRWd4LGcr6GtWCB9ZvFWHPlt14rJq+hlUjeLPkfxT4RuLORh5bfKTg4rC07Qp55gpRuPavsX4i+AYI9PVkA83HJArxqPww9hd7nUAZxUKmmzwalBylocvpHhBrWSGTaQQc19YfAbTXvFigLdSBk15Db20AijLAA969Z+EviK10q+jVTjkd60lGx00KDR6Z8T/h19h09Z1+ZvpXmWj3sGi/64YI9a9o+IPjJL3R0QcnHfntXzz4gaW6mbHc9qzSud/I0Hjn4hW1omEZVyK8p1PxbBfzKd4cnin/EHSpZoixztUV5fbz7pfLU/MDiuhSsaHrluovLZTGQ3sDXofgfw+fLWV1KhRnLCvO/hijTTr9pciIEda911a+stP0FhZvmTbjA+lWtRRbufPnx8vIku/IjYMB1x0rwZo1ikJJGO3vXpXxLvJtRv5I3UmQ98VxP9hNcRKG+8K4aqfNoediE5SRrfD6EyaxHtU/Wu0+JlxMtosZJAC96vfDTwTOkS3rLhFXqRWH8Tr2S4uJIiOF4quR2EqbseXzzBV6ZJ9aLZ8MpXJY9hRe4jj27cmtHwrppvL9OCR9KzjJxmckZSVSx6l4clCeHo9xIbHQikmFvPICcAip9StxpujqcYwvQVxCazI0rZ6CvUjUPcpVnDQ9I0HUDaXCiCTHPrXqGneMZ7eBd0nHua+edE14JcgscfWu5j1OW7jXY2OKHaR6Smpo9YvvFEWrxrCxUsfeuw8NfD5b6w+0KcA5/lXgH+kW+2YNzj1r1Lwx8VrnSNMWEuwGTzk46Vk4WYJWOs1bwwunoTJnA/KsNbe2kt5AkO4gVpt45t9f01g7fPjoTWDbarb2PmAtweM1pG+x0Keh5tri7PECrtKxk85rZutTtXi+zApnGBzT/ABBa2+pXXmwP85rltQ0C9hdbgMTjPFdSdjaEhdeim0u3LxKcHnisfRfFd7NMLYggk45q5feJXk2286nA46VTm+z6e63ceARXZHVFN3PZvCFve2Fk0/mBCw71maraX93cyP5+cnpXDad8T7y4jFqjkDOMgmum0jUry7kG5m/E1zVI3I5VJ2O2+EmlFNfBmmBwTnP0r3PVtWs4k8uORC4UZAIr5tjlvNIMlzBJhsHvjtWJonxDv/7Vma7ZmxwATmuKVJHBXoqx9EQRxatebSdpz1rr7Hw9DYqrkhiRXlXw08RDWrssUwoNeg69r62E0ah8JjnmvPnS1PN9nZn07r3/ACF7v/roaz60ddH/ABNrv/fP8qoAcV8UfDobRSkYpKCmI33TSr900jDNKOBQUR4+bHap8BIWIPNMxTgoK/WgBsUfnQkk80Iu1MU9RsGAeKY2RQAUjruXFJk0F9oye1BA8fJH81U9QiMkLFOtWvME68Dik9VHSmgOVsdKcXpkbPWuqjCpEMcVUdCsnpU3lO0eR+VNyZXM0WY3aR+COKzfGOpyWOlO8bbWAp9jI6XRRiADVfxpYNLo0wByCDXbQ3OiE2fDHxz+MaWt5cwyyZdDjBr5nvvjHeNqAkhdgoOa2f2lra7t/GV4j52GQ4GK8daJoUUr365r6Wily6nR7SSeh9qfs8fFLTvEmoLa6gyE5Aw1e0/HjTdOttE8yxKASgfd+lfnf8PtZuNJ12BrN2SXIz+dfdPh1b7x7olhDcB5/lXOM+lTVlyrQ64VXY7L9mL4ZJK6apcwhiG3An6V9RX1nHcW5hQBFHHFcl8OdBXwx4Zjg2+U2OhFdHG0hQbTuJPNeFUqyuZ1ajsYSeBrO/dxcQrIPcZrx74k/CPSrzUlSPT4gu7rsr6BS7aA4wQSao6rDZupmmUMw55rFV5I4FJtnkdn8GfD+h6HG72sQkK8gitLw54d03Tp42ht49uR/DWheXk2s6oLcPutRxtFa9xZW+mogUbVA7muqGInJWPSoxbRt+K7qwsdH3mGMHHcCvnvxRqmk3Us5eGPPP8ADWv8YPialjpzW6zjzBngV81aj4+N2k58zD9jXtYSnKWrPoMNSWjkO8e3lgHby40BPHFebx6QdVu8BflJ7VHq+sza5eCFHzJntXp3gLwbcywiWSFn4yOK92UIwjueu5Uqa0Kuj+BLcW6EooJHJqHVvhdHfKxtwQ3sa9Ts/Dk0C7XjKp9Knj0h7RiQvyY7158al5bnPCrFs+bLjwLq+h32Y2k2g8YNekeHdY1jTrBBJGxVR1Irf8V6/bae4EiLu9azrL4h6ZLa/Z5PLOeO1dTs0KVWFzpdM8ewvZlJ8B+mGrltQkl8Q6v5MT7oiQeK5nxLdJPJ5llwCc/Ka6L4e3sVrMs11w+f4qhxSi2gfLOOh6V4a8FCONHZeRxXptrp8FrZqJQNo7GuV0vxNZPCER0Vu1QarrN7FhmbdCTgEelebO7OGcGtTb1gwy/6nbx6Gs63do0wetV4rxGTIPJHTNPiV2fcfyrnceU5mmaUYL2DFjznjNGk2e6bdTGRjDtBxxWhoyiIAs2CetZsxuXNSmjtLXAPzYrnzct5m8DC1rX9t58nXKD3qncRR/ZW2/e6UgFh1ZXUqxGRVW+ZtRkAXpUNjok91uZc+ua0bSNLUFWO5xxQKTsEWlpHbcferDu1kgufLbODzXXWcEkqO7A4rkvEmqQ2t4GlwNvHFaI1jHqTR3JhQk8Vla3qjtbt5ZJPtUq6pDqEW2LBJ96o3M8VrCxl5xWqNL2OaPhKfW5hLICfxres/DUGmKA+0HvmtnRb23aPcSFWquo3kFzMUjkAOa3joaQbvqZuo6La3ls4KrjB5rxrxXpMFneMIsA5r3+TTkFif3oyRjrXm+pfDs6rqBdZCeegrsjOx2wt1PO7G1WWLbNye2abNo9uMA4DGu+1D4Z3toUdUZowOoFcdqOk3SXgj2tkNit1UPQhNIo/2LHDCzgZrJhspjc5UnZmvQbDwzc3FqBIpGa2tL+HJlycEfWq9odTmrHnkUPkdetXra3kDq5GQa6LXPBklrMVRSfpUEFjPAFDxkAeoqXJWMVNI7HwTHC8WJYg2fUVu6rplngYtY2Le1crpHiKLSlG8L/31Vm6+I8Hmjaq4Hqa4pWZw1eST1J7jRoihxaqPwqPTfCoV/MWJUA79K2NO8U2+qwjaFB+tW2nlEDqq4yO1Q4po4uSFyW0lmsosCY7fSqOqal5gKhiTWOursl15UrZGfWtWKCKeXcvOaiFNJnRCETi9d0q5unPVo26iuI8U+BIvIFwiASKOTXuVzbqsTYXnHpXE65DJIHyMCvSptRO2MInmHhLXG0e8EbuVAbGK9u0jWF1C3ikibLAV4fruhhbgyRAqQc8Guj8C629m/lSSbR/tUTipmk43Vj2NtaGVWdwMe9adlotrrwz5qn2zXnkrnUZlWN9xPcGtrSo77RpVCzEDrya5FT5WcTp6mb8UfDT6XZlICT9K8i0m+u9ElkabIU8817R4419wiCQeZn2riNV02HWLLdGmCR9K7oSsdMfdR5z4gvLfU5mlO0tiuUeRbC5yOAa7bU/DQtW2sMGsPXfCUzxJJGM10XuiJx5tjP1nxAU0792cEAdK46w1O4u7hi5YjPetS+sJ4FZJT8tUba2KEbVIrimmzy6iaPQ/Cd+kMWG7e9dHYax9ovljjYnmuA0ayumxtzszXr/AMO/h1cahcLPsc8ZxtrB3QoNnqPhOxgfSojIFLkd6q+JdDt2jYqqnIpl1etoF2bNl2qhwC3FWJtQjngDSEbfrWTkzaSXU8q1rwktwxOwEV57rvgFJ5PkjANfRd5daVFaMzlBx3YV494k8V2tvdSeQQcHihM5Jwi0cDbfDFmkG5B1rtvDXgYaeynYBg9qqWPjCSaUZHeul0vxjB5ypI6ZY8jNM5oqMZaG/FprLHt254pYNLDSgEVrx3SSW4ljGVIB4qO3Z3kEmMLn0q4npRd0TyIumWm7biuY1PxyljGQMfnWv4ov8WTqOwrwnXNSka5ZGbK1ZnOfLodxc+NrW/8Almxz6mrugWOnaldL5aodxFeNBnkm7gV2/wAPr6eLU4U3fLmk9jklLmPozwx4Sgj2PHApPsK6e/8AC811DsSDOR2FN8CS77ZWfk4r1LQI1nf5lB49K8+c+VnO5cp41efCqd9O3qm0ntivMPFXhG90d2bacD0r7Q1CyjMPlhMYHFef+JvAa6nbyu8IZME1Ma5pCsfMelX62lrI84xgcZrz3xX49aO5dLfOM9q9J+Jmgy6YZIIAUXnHFeK/2VvuH80fMMjmuhS5jWVVrYozfE67tSQ2c1asvi3fGEiSRiPes6/8OpJcdivqKxtcs7bS4CDjJFW5NI5J1pm7dfFOWUEBmzTdL+KEkLLvLHmvOI3MrMw6etTQlViEhIwD0rCNR3MoVptn0n4Z8bQ6zY4wAxFc7r8Ekt6Crkg84rhvh/qc090scQIT6V6LqkE3yFf9Zj0rsi20ejByZ0PhGcJEsTnJ6c10ySHSZ0mU4UntXnumXU1nIGfrXbaY8+upHERlR3FZSjI05ZXPWISPE2hKyjOFxXm+u6YIZ/KC/MTivSNAvLXwvoBinkAcgnBNcTq8keo3PnxSdTmtIROjVIq6Z4cuUKSBynfFdFda1faXYeUXYgDFUdNuZ2uo42fK+uK6HWtKSbT8kjcRRJ2M3Nnm91eXF85lDEsDU0WuyRJ5MrHFa1rZQ24YMQGz3NZ+qaVCJFdCKyuCmxkenm+l3Djd3r07wFokbQqFUNKDiuM0+0UWQ2thgOK6zwNqzaCC8zA855NS2wc7qx1niDwrHJYyG4UZxwK+f/E+hhbmUKvAY4xXq3jH4kNfyGOFgF9q8/1GU3rg5XLHnmrpvUKVOLd2eaXcMsIwTjmtXw5qD2EySq5yOa1NV0cMCSB+dYTvFpsLZ6j3q5tHpxpwR6bc+Jpr62jUszdKfaWDXUgLAkGuJ8L+LbKeQJMUPOMZr1eKSGPR2vkUKgUEHPHSsuZHNVcYanmPxCSxsY3SdlGRjrivNdN8LWFxcGaMqQTnrWF8a/Gc2q6rLHBN8qN2rh7HxtfWESrHKQRWXtdTxpYuKdkfSNnb2Gl2eWmWI/Wo9N8V21xfG2FyJATjGa+eNV8balexIpnI+lT+C21KfWrd4ndtzZPGa6oTuVDExZ9B654LtNVvEnEajPGagtvg+rXKSBcRk5roriYado0U9w43qu4jOOa5G5+Ny2zeSsqDBwPmFWkpPU2U4zZ71onhTS9M8NC2CxrLtxXzb8WPD6W17cFVGSetdBp3xXurmdWklDJ7EYqfW7238Tofl3OfSqkkzpUU1ofPMnh6a9mAVDjPpXpXgfwX9mXzJIwGx1rSfRE06YZUKM9663SXjMaqrjGOgrhnC2pzfV/euYXi7SDNpzog6CvGdRX+zZ3jZcE+tfRt9AJwyAZB9a8s8cfD64vJ/Nt0IpqbLlC2x5lNfNCQytj6V3XhLXHMK7sn61lWHw7vvPCzKSgrrZPDkei2YKjY2O9axky6cpI259WQW6FiACOa24ZrW60glXAfnj8K88knFxbEbuV4q34cu2n3xFjsXmu2FpHapO2p12iStbud8rBc8Z716tovgSXxRobTQEk7S2B16V886trbxz+VDLgqa+hP2dvFlwFW1uLhfLKlcH0xVO0NROdjz3UdCvND1Ro5i5CnvWjcarFFaKJCuPevpu5+D1h4ueW6RDISO1eM/Ej4QNozMqIVUZ7GoVRNmkKup4t4l8i6IeBAX9q5ie1u5VEbAhDXQX1nNpl6Ub7gbFdDLpi3WmwyxDkjmu+nLQ7Oa6PNoCdEnV3HGc16B4c117tVeMYFcj4j09pnCbRke1dB4baKzsBCi4nI60qslFXZhKsoamp4g8SXPywW+S7nGFGaz08P39pEt1cKyl+eleyfBD4MyeLdViuLyJpIyc5xXrnxX+Dtvp1gFjtztjTIA+lebLERehyzrxkeW/DNxa6WXQYbHJ71mePfFsmxkWQiQGul0fS5NLs3VIyi4x0ry3x1ZSm/kcggZ79KcVGZELN3P081wf8AE3uh/tn+VUKva6f+Jxd/75/lWeTX52fnaHbc0bPajzMUbt3SgoRlxTakIOKZigq4lOHSkxS5xQMWmt1pcik6mgVxKbIu9SKdSO21SaCRI2WBdp4z6mkQgtxyK5vUtVc3YQAgVv6fueBSwpoaEuHCEmqw1yKM+WcbjxU17CxRyOa811e8mttWG4sF3VvyprQtRPTREJAJlPTmodVvVms3RyMH1NQaJqCX+nKqMN54rz/4m+Kn0JBBgl9x5BropJrY6IRsfNH7S3wVPiGea8tF3sTn5VzXynJ8Htaju2gMb4z02Gv0u8G6xaeJbdo71AD1+emz/DzT7jWllgto5I2POFBr1I1OTRnV7qep8J/Df4E6kNSSaaJ8D1Wvtn4Y/wBn+DbCD7WUQqMHccV6FL4P0/w/pjTNbqh28DaBXxl+0h4+vdEMosXeKMMfunFbc/OdHu2Pr3XPirbFCbaRSijgKRWT4a+Ls02qiGRT5bHGeor88PCvx/u4JY4ruV3UsASSa+3/ANn+2sfiRpUN3bTIJEILDvXFWpJK5wVKivY+mI7iLULGOZRg7c1ynidZmt32k4xXTraLptokIIIHy1S1jbImwqBkeleWrX1MqdnI8v0bVGs79t4z9ai8eeNo4LJ9pwwHHNamueH2ilknQYUDtXgPxJmuGnYCU+WueK93CUoz3PoMNBHm/j7XpdWupJZHO0t615b4i1tYoRFaLvlY7fl5q3408SCzjdN24gnvW3+zd8L7j4keL7aScAwGTODX0c7UaV0erVmqcNDr/gX8CtQ8YTx3k6uuTnDKRX274W+D1noumxxyBdwXHIrufBvgjT/BWiwwRQxq4HUKKsX18zSBQeAe1fKYnMJXtFnzc8ZLmPO/Efw6hW2ZoQAfpXlXiHwxPaq+FbA9q+lGPnKA3P1rM1rw/aXdlMxjUFVOSQPSufD4qTlqzaGK0Pzm+Nkv9lqWfKsAa+Zr7xxPDP5kbHAavpT9rO8t7TVpLVH+b5ulfH8iiUuCSeeBXvqr7tzneKk5Hu/w98eRahBGLornvuNeo6Pq1rNcRxoVCnuDXyZoEd5JIotdwOegr3f4aaNeSvG1y7A5A5rsozUlZnuYSrKbSZ7jfyf2bapcwSHgdKdZfElLu2+zzAEgYz6mq1zpVw1kLfJYEcGvLtd0270HUQX3bN+a1dOJ7E4qx714RvjqMwydoJ6V0+oXUljMqqPlPPSvIPh74xhguoVd8AnBya9/gs7TxBYLPGykgc47VxVYNnBOK2M2C8M8qL0JHIrW+wS7A6ZAIrnbqdLPUlEZDBTg4ro/7cxZKAuCK4XFo4ZRaHrC0cTM7A4HSsiG2lmduoXNU5NbmnlIBIGa6LTb2O3tFDAF261D0M20i3EGsLHCck8VVi0l0/fuc7+cVq2jJcRMSegzimGf7RGylgoXpQmmQ3cyr3xEllA0KLz0zXm3iK0l1WVmBPJzxXZataLNMQn51SSBID8+CavY64NJHNaLpkmmjc2TWsdHGqxsG4BrZNi1zD8igA+1MXdp9swYHPrWqZN7s5S6tzYgxK+38ap2Wmu1wX8zirupHzpC3NVLG9kS427eM1urHYivrM15Ygr5hxjiuf0pdUj1Dz2Y+WDnb2r0XWtLbUreOTy8YQHp1rIZZIoWhEQxjrirWppdnUWPiWHUNLaFghkAx0Ned6npJbVWl2fJnIp1rZ3VvfkxsdhPQ1sapeMsSgRHeBjOK05rDU5FjT1jWNFYAcVoQ3qqSqNj6Vxf22eFiWOAKv2FvPK4ZWyp560OdjR1TpEtoZ5d8pyffmsbXLUTziGCPhuMgV0sGllrZXY9ulWNO0tBdRyOBgHvWUqhzyrHM2vw2ku7USy8cdxUM/w1iAYsDx04r11rgNCsUQGPpU8Wkfbo9vANc7qHK53Z4xa6UuiKxUFse1TyeJYoLaTMYJA4r1DUPBcNtEzTMDntXEal4Cj1CQxwOvNONS7HGaTOJstNbxDdm4TKgGtpFOmzBC2cGukt9AXwzZOpK7yK4xJJ7nVWaTPl5zW6kdMampt/2kjqd/8A9eszUNOW8gcrzkVY1DTyFDoetO0oFEKu4J9K052dkah5dqmiSxzyE52jtXJ6yxtVYwArIO44r36bRUv1kLxgKR1xXEeIvBEMgfy8Bj6V2wkranfGaaOB8H+Mms50jnyXzjk16DqPjEoiuemM153c+CZ7K480IeDmrV/OfsflvwwFW0mtCHY9CstRtvErIsmCafrWlLpMGU+4BkA1x/w4uIl1NRLJgD1PFeleMBbT2QKzKRjoDWaTMJvax5DrPnXczSYNUrq8ZYEjcce9dLNeQQKRtDe+K5TxDMCqNGvGa6Y+Z002mtTndS0g6g5YdPaorfQobUjzcA571vaZdIInZl59K4Pxd4mkhvyqKQoPOKmSOWsonomkS2kWUCrxXoHw68eix1dbYfc6V4Bomvrc8ZKP713Hh25Sxu/tOQzHpg1DgmjiSj0PevH9o985u7ZN2454rnLVZmsSkylSPUV0/gfxtpmoWsUF467gMHcas+J5dNeJzbOuCP4a5Z0yKibWh45461hLKxCrKSfrivK4Il1O7JDZBNdH8TXE0xjTOM9R0rkfDhWxn3vLgehNY8tjy6jnE6dNEeKFtmTxxxXI3ttfWF6H565r0CHxXZKuwuvT1rlNe8R299fLFHjk9qDmjJ3PVfAGsS3mlhJFJ4ArsROkVkCvU81w3guJrbS1YMMkA110bLHpSyyHPFUnY9mjJ21OY8U37eRJjOMV4rdXyz6oyOOa9u1dotRspQi5wK8T1HQ7mHUjOI2I9KvmMKurLY8pGUAcmus8Bad5+rwEKTz1ArlrTS7i6kRtjKB617D8KtNjS4hMqgEVLasc6iz3nwVpbJapjPT0r1Tw9aGDk56Vy/hCOJYkUYxiusOqw2bhByfUV4mIbuc1WMmjZnAdgTzTNS8tLB1yBxVRL3fg5GOtcp4y8XR2ERQuAenWuWkpSkZUoSueZ+OfCH9qXEjjnrXz947+Hk9gXliYgHsK+oLHWItUic71PB5NeU/ES4AZhuTaM8V71Km7HpKDZ8xpDdwTukmTzxkVzfi/RLqVx8xIPoK9Y1GS1mmJ3IGB7VmFYLu4xJtYZrf2bktC/q7keMWei3RzGFbnvtrXsPAt5IwV92xuTxXr4s9NhAKxjd6kCrRuLVYcIFB+lRGhK5pTwlmVfAPhS10aJXcL5gHeug1EJLcrsxgVjjUvLU7ePYVk3usSqdykjHeu2MOU9Snh1FXZ1sWmC464HvW1Ya7F4dXHBP1rziPxq8EG1jjA61yuq+NzNcMrSHGemaqUUKU4Rdme3a54obXIwY5CB9ap6ZqpSVIy+Rn1rznw3rf2y3C7yMnqa6vT0LkMG59ayehPuz2Pc9PtLc6UtyGXzAPWud1Pxg6Mbc8YOAc1zVr4iuLWMRby0YHIzWbqExvrjzFODnpXNMynT0L2palPMxKEgdeKzNQ8XGxtwHOTV4XaRW2GXcxrI1PQDqMQcxkKazjtqcsk0Tad42kuiqISBW5Z+KppgQxyB71xdrpP9nhivWqVrrbrcPCwIycVZyPmuddrvimK1U4K7652Dxy8jk5IArj/ABtDfRsJVLMh54rm7fWTbQssp+aoaSNPaOJ6hP8AEESSeUzDOfWqOp6wk6nLDketeQz3s0l/5ik7c+taS6hc3MiruIA96ybbKWJZ6H4M0K61XWVEQJUnPGa9k+JviD/hEPAf2NmC3BToT3xWj+zf4etL61lvpcDyUzlu/SvGv2pPEJ1bxLNbWcmIY3ICqcDrWeqJnNzR4Xd3zXl1NNIcszE4JqkgDEsF5BrU0rw1d6nMNiE5PYV32hfBvUb5g7xGKPgkkVgoyb0PIlhpN3RwGj6fNrF+lskZ+bpxXvXgXwRB4YgW6umGVXODirumeGtJ8EQGa72vOq8dK888afEw3Mk0Vu+2LBAAruhdbmsaLj8Ra+JvxT+1XD2dsP3a8cGvLI7p5rwSt0zUMqvdSSzHMjsehqzDp0yxhyu1R61M6ltgnKUdYnaWHiGO0tgGGMV3PgrxBa3Eq7nGT714nc3KtAY1++Ks6DrLaZdIxcgD3qoVLnZh8Qnoz6B8XQrNF5kR/KsTQ9QaC4AZ+9S6P4jttb03aCGbFYGpXA06ZmDc9a7ZQTjc96NnHmR6xbTRTIH3DP1pl1fIeMFvwry7SfGLzSeVuNdZbairqpY9a5vZtHM7GluUsTsGTXKeMPMeMhT+VdNLdRRR7u1c5ql/HeMVAq7WHHlRzHh7Rri9mZMMQT6Vp61AnhaNipAZl59a7/wJBa29rJLKFDDnmvIvinrYvdbMUTfLnHFbRdhuS6GBa3z3lxNNIec8V7V8J791jWSNtrgHAz7V41Y2saKAQecdK9U+HMb2V5bMQfJY4x9TipqybVkc7u9j7I+BOuajepJHNkoOhNZ3xtvHiuH3Ad66DwDe2fhnQ47lgql1zg15D8avHtvqk7GF+STwK5qalccVJM8Z1u1bU78hRklieKswM+n2/wBnk+XAxzW/8PNGk1q9MzodvJyR71R+I8H2XWzbwqclscCvVpy5VqeiqijHU4LWLgxzsSv0xXRfC/wpdeJ9cB2uEyOcZFSX/ga8vRbssTfNjJxX1v8As4fDizsbZWuYVEm0HJFcWNrxUDxcXiEtj1f4R+Bl8OaNbSL97Znkd66HxvbW19p06zH5ymMGunSGK0sVWMgIg4FeOfE7xN5EzqrHgdq+UVWUneJ5tOcpnKavoFpDZswIBwe9fPPxOEEayImN5boK9W1PxDPPZOysSMV4/ceHdQ8U6vJsVigPU9K9zDVGtz2KUnFan6Oa9/yGLr/rof5VRBq/rvOsXX/XQ/yqhjnFfGHww10J706MYppfHanI27p+tAEpYYpmc0u0EdcGk6elABTKfTT1oASiignFABSSDK9KXNBwaAMOXTvOvd2OK2lXyYwB0pqR5lyeKe/LgdhQPYWJvMJVhkVw/jLR/Mcui4PsK7gOEbiq93p6Xg+YgU1Np6mikeUWfiKbwxKokZtpOBWL44kXxA6XLLvTnNema38PIdbQcjKHPBqle+AEh00xYLkkV1RrNG6kebaJZLPGEshtk6fLXsPgLRZNOsg92Nzdt1V/DXgq10iNZNpLnrmutKZRVHAXoBRUrXYpO7OZ+Jcc02iyGEbRg1+cn7RlvfXCToynYGPNfpV4pWSfT3gCk5Havmz4o/A9fE+lz7R+8OTgda66FU05rI/MIQvFcuoflW59q/QH/gnz4gSC7a2mud2442k+9fJ3xD+DWqeEtauR9klZC2QQM17t+xV4a1XTvFCTvHIsW4E54716FSScLHC9ZH6T6wTBMpHK9a5q71aO9bAIDqSMfSo/EvjGOKYQq6s2MY/CvPLXVJjcTyMdvLEAn1NeTTpObPSw1LmkdJ4j1Z/sckGfmwa+VfirqE1gLjcTk5Ir3fW9exazXEpCYU9TXyd8U/Ek2s6k8aElBkZH1r6fCUeU+vwtCy1PBdcluNT1FgzMyl6+zv2Tr6w8KRW00gVJOCGNfMeleFjdXm4oTg5zivTtH1GTQBB5TkBSMjPSvVxMVKlYWIpqx+ltpraazYJNCwZSccGqkwIbNeI/B34jPfaPHDvDYP1r2azuDeRgsK/PsVS5Hoj5CvTSbJUclvaotbSaTTZ1hBLFCBjvTydpwOtTIyQw7nYE4PBNcdFvmOVOyPy4/a58E65Frz3jrIIsMea+WuIpX3j5umAK/U79qbTbPxLZrAip5jKRgda+V9A/ZLl1+6ado3VCd2ea+kjU5Y2FHWVzyv4TaMLmdZZEygOa948K6VNJqarFFthHcDit3QPgbB4UuVtlbLZxgmvdfDPwzttM0FrgoDKVOPXpXZTrWjzI+hw0+SzOMKwQRwhl+YcVheN/CMGq6WbhEUnbnNdJNoFzc3T/ACPtUkg4NT6/BJp3h2TfGVAA5NdVKvzux7Kre0sj5jNpPpNztQkMHNfQfwj8Ui30R47uRtxHG7vXiupTC71dtoyN9dVFdGxs1Kt5Yx9K71BtHSoX1PWtLiW/mmuC25d5xW8pSeNUHBri/hjqQ1O2aIyDg/1rtrqwFpKGVs49DXl1VaVjhrK2hY0/w/FK/wA2BV7UdMi0+DeD0qO1lxFuDgGoLxp79DGSStczi2eW4tsZperiZ2iT8adevIMiPv1pmjaJ9luc5znrVrVUNk5bGV65ojFI2jCyKaRhISZDzWVLAZJCQeM0mqasRH8pFUdP1UTDG4E5rSxoonX6ftjtemeKy9TlWWN1IwK1LI5s9wGeKwNUulDMpGKLAk0ZlvaR3E5UjirUmlWlqQ5C596saMIC5JIBHrXP+MNbFpxGcgHtTUjaMmdHc3jC0CqBtAwKwZ52VXJjHSs7S/FTahGIsA446VvWNkNQJRvlz61rGRsps5OHU2N2dy45rUurmOaIswBOK07/AMELbP5g4B75rA1vTXt49qt+NaMq+hmSxPfziKMfePau98O+FnjtwHXn6VjeCNGMk4lcZ+teoPPDZ2fJCkDuaykYyKCaJuiMYIGPSsfVFbT1wuARQ3jAwXLBTuXNYfibxIJIHckZx2rNK5i1c6LQb9513E5xXU6bqZQt0GBXl3gLXhdOY2x1rqb/AFL7FOAh4bqKlwsTyHQa5qL3a7VzS6Hp6oRLKuSPaqmmatbeT5kxXj1rA1/4nDTbgw2sJf3ValRszPl1F+IYQMDEdvtXI6ewwfNjwPU1HqXi46pOjTDYM9CK6y1jstQ0sBAAxHaumJvBGFe3Nt9nb5ucdK4S51ie11DMe4pmuw1jQWiyVY7T71RtdEhdD5mC1bRO2KLR8ViWxVUAV8YNcnfatIJGdnyCfWrut6YbXaIT16kVm/8ACNz31uzBiT6ZroRupWI5ZZb60kdF3ACuPk0xry5w52jPc12+mwy6bbywyKeema5DWIrt73ESEA+1aqVjWLuW4fCTQ4ktZcN/sMKztWs9bJKI8jr06itSxh1S0QPtZvYrU58YSWORcW5BHcjit4O5pocktrqMEZNwjYHrWTqepovyEAkdq7q88VW2pW7BUCkivMdbhZLpmCkgmuhJGsUmWrB4/tALsAD2rH8Z+HEuW86FNwHJxSSJKIvMGRjtU2meI1WTyLrG0nuKlpM5a0bnOabp6E527COK1ItRfTZdu/IrVu59Pa7KQsuD6VmappYLqyng9MGsJRkcPLY6rQ7l5gsyTMhPbNdXbatNGux5yQfU15xplxLYxqojLY7gVY1DWZ/KyAVIHWsGpFxa6mz4mtkvQ5yG4ryHXUuNOldlZsZ6Ct248VXWcFvlz602K7i1JMSqD65qOVvc56kFLc4WHUL67m2pvJJx0NdV4X8L315fJJKrMQc5NbmlRadaSZMQLZ9q6S18W2emcKihqfIcqoxUjt9GtGs7RY244FdXDai700Q5AGPWvHJPiepmAUDGauS/FKaCE7OoHFNUzuSSWh6fBo1rp1nJ5sikn1NZlpoOn6nIFCIQT6V5He/Ei8vYm3PjPbNXPDfje6ikjwcnNV7NGLV2eoa54cstJVdgRc+lT6RLFp/kvGQuWHSuQ8TeIrq8tUkGTgZrGtvGLQwqJWC7ecE0lSTZahofWvhrxTbWtgrPKFfHc1ftPGVpc3B3XScHu1fF+r/Fy9X9xbMWHQEVjQ+NPEs8waBpcN1rCpg7q5i4XP0AuvHNjZWhIuI2OP7wrxL4geMp9aumED/ID2NfP8HiPxXd5WRpNnvV+0u/EjPt8p3U99tRSwygyoU0tbHpU/xAl8N6S2ZsSnng14f4r+Keq6xfPGjOysTyBXZr4O1fWZWN6rLHtwARir2gfCu3e6JZd5HtXpRjGK1O2MDyW2i1O7lDvvXPqK3bSxmjnXcSPrXu1v8ACaGQAKoFUNX+FEttIGVW2+opJxR0RjY8uubRwgO41Xgidm5avQ5/h1PKCqBmx6Ult8L5ghZgQ3oa1VRdDfY4eSPoFOTVltAlurUlVzXcw/DKb72CcVYuPDN1YxFY0JOO4zWblc6IvmVmeQap4emjjIMWDXGP4daS6cPCc5617e2h31xMRMmBn+7SyeDOd+wZ9BWbuzzq2G5tTyvRLKSzdVGV5r0PS8RwgsccdKLjwuLefcybKZd2zwLtjUke1TYmlT5DotLWO5iOeWzVi40ho0LoK5vS9UewG3BJFbp8bxJF5cowenIpqkmdckrGa168dwImUkDvit6bU0+wiML81YVzrVjMwkDKDVmK7gnjDIytQ6KOXki9yrJI6kll4NYctluuPNVOc9q6iWeF1CuQg98U2RbWJMqyn8aXsUS6MWY+r2yT6S26MM6rXhOowSG/kV2ZF3HjFfQlzdwNAyZXmuRvPDOl6lKzysFYnPFROjoctaglHQ8i+0Rx/Lkls+lamj2s93dphWZSR2rtH8D6ZBOHOWXPUV3XhGy0G0ljD7QQe9c/sWeU6TPV/h7G3h/wNMygxO69B9K+W/Ga3ureMZy4Zg0h6/WvsGDV9Hu9LS2jmiWMjn8q8U8YaBplprzTwyI4LZ4o9izrpQsS/DXwtp9rAk11GgIGea3vE/jeGyU2tjEq54yK5WbWwsJihYLgckVkwSebMSw3nsc1EY2Z2pIz/Ey3upQu88hGeQDXAL4biklZncE+9eh+IpXNudxxgcAV51e6g6O/pWsonNWgpF2z0/T7adfMKmr/AIhgsRph8gKGx2rjzePJJu5OK17d2vIAhJFc3srnCoczscZtk+0t2FBtWuXCqec11svhIzDcjHJqey8FSW8iyMCalQcTaOD5dTo/Aejz29ruZjgDuKreKp0M2zfznnmt2G8/sfS3UsE4715Vrusy3N3IwbIB45610OryxCpiXSXKjr9AEKXAbeB+Ndkt/BtCo4J+teIw6tPCchjitHT/ABBcC6Q7y3PQGop1ubcilWcz2K5vZDb7QxP0FY674mLueKuaJN9ss/MkwOO9UdTudwMaYxXfCCauetTgpo0n1x4tPkWByHx2ry25W4udWZ5QWJPU13GjWzSO28EKadfaOguMqu4+wpuKNJUkjEsYpMjMZI47V7R8LI4dR1G1heIYUjrXnNpbuZAiR5/CvTPAmlXdlOs8fD9qyaJUbHvHxA1OPSdCgggIVgmODXhS2Ums6h+8cutd7c2WpeIGH2olIl9TVnStBsNPlJklQEk/eNXFWR0ciSOk8G6ZZ6TpXCKrbazfCngRPH3jiUNGHVJP4vrVnUNSisNOYxMGXGAQa9L/AGXtNW61CbUCvLNuz2rzsTiJU1oeXialup10HwSsrVIle2TgehruPDfhyHRlZVTYAOK6W5ukknbkACoBOsqHHavmK2JnVbiz5ytJye5LcypDp7ux6LXzf8U9XSWS7KPgqpPWvb/Gesx6V4euGLgNtPBr428YeOTeXl9GxB3KRXo4OjoelhIkekeJH1O7ayjO7LYr0ixs4PC+kvcTxKrvyM15T8PrZLC8e/nARQ2QWqf4nfGeF4DbQujKnHy+1e+sP7p9FGjFxP0B10f8Te6x/wA9D/KqNX9dH/E2uuf+Wh/lVHoK/Pz82GNSYxSt1pKAFpKKKAFzSUUUAFI3WlooAbj2oUnIyKfg0j5AoGhepqNs5zShzmnqocc0CYxF4p2c0pGKTpS5epld3Ho5UjrzSu7A+v1phbB60B1bmjY2jITeQ+ABgUpkYODTgygZxSM4c8CpabNVK5JcQLcwj1xXNXuiSLIW6p6V0ay7aGbzflwM1pGbiQ5s4bXfg5pXiiPzLlUDcdVFT6B8MdN8JWzf2eAspHVUrsmmZF2jpUUqBo2YHBArpjiG9GKnrI8Y8TaHfWmqm5aU7Qc5NcpqniZLac5lHHB5rsfjVrcllo8hib5umRXzNA13qgnuJZGKgH+I+te9goqWrPpsJBXudx468X2UuhSoJwJSOma+ebhxdzsS/OSQTUHi3U5JNaECPI0e7BGTipfsFzcXdultA77wOQDX0kYRhG59JGahE39Othp+ntMTyQa4i+8Ty/anjEZcluMGvpXQfglqOvaPGxtmXI6YpYf2dE0u8R7m3U4OTuFefUxKb5Tya+ITudb+yppj3+nRvLER838Wa+rJ9NW0jQKcA+gr540f4j6J8LNL8hESOWPJwoHNeI/Ej9uKePVFitZCI1fHBrxq9H2mp87VlzM+75LcJmTO4AZ615l45+I0GhXTI5wM464xXk3wO/akt/GMqW95cAMwIwTWN+0tfbrY3Vm5+b5sqa5Y4Xldzk5T0K00W1+I9+lxuyF7E+tetW/gODRtKMUOAwTtXzn+yDqV3qYcXBLAMvU/WvrS4hLyY3/JjpSrvl0KWh81694UvJfFHmKW2h/SvXPDvhuWfTESQ4XGMVP4his7KfzflDA963/D16t3ZgxkYz2rkjXk4tHRzyS0KkfgC0WzPQNj0ryL486HFonhGcAqDgfzr3jU9Sj0y1Mkr4AHevjD9pv4vrqYn0y2lJIbHHfmvWwHNJ6nrYNyk9TwzSZAdWcv93ea6DxZrlpDZqkY+fGOK4LS9WkSUtIOSc9K1IrR9YvkAyykivq9on06fLHU9C+C1zd3LSsgO3t19a9jxevORJkL71T+Euh6foGmgzKqSEA4IFdLq+q2wkkMZUDtivGqu8zy6zuznJddj0+4MMz47VYXW5pVBtyNprl9U0JtevDJE5GD2NdFBYf2RZqrHcwGOtQlc5VG7NXTtTuIzukNP1vXPPtH5ycVxGt6xNaQswJAHTmsfRdXudVyDuI3EVXIjblJrjVJ5rgxkHbWt4fsv3ylhjvTrfT0WXMg+b3rStttvMAvemHKblxqpsLby1GaxJy14pkbrVoOk8wEhz9TVfWLlLKPEeMe1HLcOUowwyRuWBIHtWDrFqt45Un8zWnBqnnkqK53WvtCykqD9atU0aKAumLFo027G7mu003xBZLGH3Ycdq8/jilmgLMGziudknvrfUAPmCZrZU0bKB7NqvjBruIRoPl9axruZrwJ8pNYH212tE2Dccc4FdPpyyRaek8q44zyKmURNWLFlrA0lVjxhjV/U9Ta+tePSuWnlOpX8bKMKvpWoLlFxHng8VzyRhIo28bs5+Un60mpWUUto4friu50bw4lxAHC9RnpSaj4P86NtgOR6VCaRlzWOO8A6QsNwSuQM10PixFtkDD7/NXNF0r+ycgj5ql1DTTfbmk6DpTcrg5HG6Lc3N/KY2yFzXaad4VtZCC+13PrWSsC6eD5YG72FXbKe7KGRNxK9BULVmV7syPGHgKNHWWIjj0FZ+lCayiEe7GK6SfV7i7PlTqcn2pl5oJjtPNzjIrdG0Tl77UZpnMZcnFUYJirlS3NajeXEzlkLMO9Y15dwQzk7SPoK1R2xJ9Ytc2ZZHycVxGi+L5bLVzaSt8hOOa6251CK5jVQdg7iuWufCceo6iJ4nG7PY10rY35NLndTx2E1ss7uCSOmRWNepa/62NckdMVj3ug3tu8aiVinoGNdJpvhueazDFSR9KhysQ3ymFBqNzK5QRnaOhyKXU9GGp22LmPaPWu70fwu8qYWHLD2q1rPhWaxsmlmVVQD7opxqWM/b6nzzqvh1YrzZZSBhnoBityw+Gt3qFmJJ4sNjg4q99pH9uERWzsA33ivFeu6RqCGxRJEXgdAOa3VXzOqFZNHgN14EdJzG64XPeuY8TfDX58xcP24r6H8SwxFt0cYDH0FYn/AAjV1eRiXys/8Bo9qKVRM+V9V8IanpMjS4Y46cVmRa9ewTGOZGI6V9df8K2n1YYkt8r7rVLVfgNaywFvIUSY9KpYhdTmdmeA6Z420+1sgk8Q3gYNY+s+O7G4hkEUfXpXo+vfA1lndUjzmqEf7Od49k0wtiQOa0VWDMm0ePfalvkDqMZqS3n+yqSa9Xsfg/NHH5bQ7MVDf/CSQQtheRT5oyKjDnR51Y3YlBJ6gZqK5lS5lBxXUx+BnsZGVlIzxTZvA023MaHPtU+6DoM5pbKMEMSBUt2yIgAYE/Wuji+F+s36/uImYY7Zq3Y/AzXbl1MsTgZ6HNDa7mXK4s46C1glj3OwFaljqVlphVzhzXpEf7OeqNbAiNunqataZ+ztcySBZ16Hoam6BK7OEufHaXMAihi5PFUE0O81uRWClA59K+lNF/Z5sLK0E0salwO4rJ1DwodMujHawDYpzkLTUkjrjHQ8/wDDnwYeeFZpD056V3Oi+CIdPOw4J6dK6/RJpILTYUxng8VftbVfN82RcDrQ62g4QTZzUuiRWhBMYx1PFb2jXGmIgUqgk9xVy81iyUGEqrds4rAbTBd3KvASBnPFZOqkdPs0jX1OwN8D5ABBGeBUWgeHjBKzPwR1Brf04LYWpDfM2O9c9ca1JDdkAYXNYzqOWxi3Y6q1WOKT5jwKl1W4jurUxoQTXPC+e4jLKxyRVANdRv8ALuIrKKnIfOzRt/K0sNJNjb71j3Xjaxe88tAMVR16W6uIDHyAfeuUsPDha63M5znua3UHApSbPQ5PEMcNv5kYypqsmv2jRNPcEBQcCobO1tZbcWzEb+lZHijwxcGzCQZ+9nAq1I3UuUnvL+2vX/crx14FJBHC4+YYNRaBpRsICZwdwHesbVb+X7YywA7R6Vas9zTmubd/o0V/FhcZPFaGh/CGa/t3mdwEAzyK5/Rdcz8smQ4PGa2W8V6skRghJVG7jIpPTqYS01Mq/wDAltbX7QpIGkBxXOa/8MCwMhIHfoa9E8L6LPLcG7u5GLH1PrXRavpIvkVI8FaSqWMXJs+YL7wddRy+XAN/PYGrkHhTWbGJfKjbJ9c19W+F/Amm2tobm6RGcc4IBqhf6voyXRiWGIFSQPlFX7W5Fm9j5jm8Ha/dRl5AygDPpWc2j6pbgoWYnpX0zq8K6rAUs4l5/uisOHwITLm4QAnqMU/aFqEjwmx8LatqJwuTn2pdU+HGsWMTSktxX0DPptloKgqFz9BVGfV11RfI8tWB9qtVV1LdJtHzzY6Bq18TAEJOcd61rL4OeIrxwIg4J7819B6FoNnYy+fJCo5zgqK0tY8dW2ixgW0Kbh/sij2kTklSR823nw68UaHERIXP0rzrXf7bsLpjIGbn1r6wvfFTa2P3sYA69KktPhpp/iZPMkjQsRnmk6isONNHyVY69cgASxkN3JNbUHiNoQMqQB619I3PwItJhIIrdCFBwQBXGal8JI1uPs6wruPGMVgkm7lxo3Z5HqWvpqUPC4I4rBk04XIZ2XGfavfJf2friCITGDah+ap4vhJFLH5YRdw4q5pWJqUD52gsIEYptBNbNjpsYHIx+Fe0yfA1Yo2l8obvrXPXngQWUmwr3rGKTZjGiou5zml2FqSN7DimeIdbsbFPLiGXFblx4OuI03JkCqH/AAqqbWFL5O+ulUotHU2rWPMvEetS6pCVR9o9q5CS1cDnk/SverD4L/vGWXGPc1o2fwIsbmchrhEx6k1yVaCaPn8TQcnc+dI7eTgFMiur8L+Ho5D5rRZI6DFe8zfBDR9PtPMkuITgetWfDvh7QNMnAmniMYPTIrCFNQMqMFA80bzooRHDCQOlFvodxMvmOh/GvouyuPBZKovk5+grtNJ8NeEr2AMWiCn2rsjUsj3KVRJHyzpXhq/nG2KAkHvXW+Gvhxf39yFniOCecqeK+qfD+h+GLTaEjhfHTCDmttYtGs5t8cMePZRXM6zbLdRyPDbH4GQW0K3DgdMnIqnfXWmeFZdpxvXjFeufEPx/p2jaLIiFVcjt9K+QtW1e58X+I2EbOyFzwOlaKXcUXrqel3/xIF4PKto+W4yK4/WJ9Skcsqtgc4BrvvBvgi1hs0eZAZB0yK9U8DfDD/hIb4GS2VoWIydvasp4qNNWIq1uRbng3g1tU8UzLp3kMOcZNfb3wO8FN4N8LxecNku3nIrS0D4RaH4YmjuYraIygAkbK6q7uBIqwxLsT0HFfO4nFqbPmsTiLvQo5aV5W5AJrQ0+0VrcE9+tMEISPYeCas3MyaZpksrfdUZFefSXtJnnU7ykeC/HjxdFYxzWaPg9MZr5GvbnzdbzIP3bthifSuz+KXjZte+IdxaLKSiyNxnPavJ/H3iZNDupl3AOqAgH6V9bhoKKPpsLaO52PiXxegt1sbI7QRXGaro9vp9st3eOX3dfxrhtE8S/2vfRs8u3n1rrviPaTN4dSTeSvy9D7V6jnpY9X2y7n63a8catdD/pof5VRyfWr2vf8hi6/wCuh/lVCvzM/OUFPCZHWmjrUg6UFEZGKXbQ1LQAm2kwPWnUwnFACgZ70lJuxTl+Y0AKGNK4G3rSkYpjHg0AMUc04nacUifeof71ADh8wpdtInSnVVxWRG6ZpUjGOafwKUnNSMbgbcU1V25xSbTuzTx0oAAOKFGDnvS0UAB5pjqNrZyc0+nIQUbNQ9Ai7O55L8WPCsuracywoWOegFfPOs+GL3RLCWLy2UtnnGK+1ZStzGVeIEVw/j/wVDqemyPHFhwOAK+hwOIUT6PB1l1Pi7Tvhob+5M0w+Yckk17p8JPAGlX16iyRLM8ZA7Vyet6be+HDOJQypzziuv8A2dNQjl1mcmTMhbhWNepVxD5dGenWrLl0PqW0sLLR4I444QqAdK5nxNZw6pI6pCATW9c3EvmhZOhNF15McW9V+fFeAqknM+cqVW2fGv7QngJ7KCW6jVg5B4FfAPi9JrfU5vNyr7iFJr9bviB4efxXM9rMv7orgcV+fv7SXwgm8Pan5lshKFiThfrXpwqaHPzXPIPh34n1Dwxq1tPDOyHd2r7X0W5m+IPhOOS+O8FMAmvhvwrpV7f67b2ohbIfGNp9a/QPwL4KvNP+H1s5UxhUzkDmtOa6NoQ5zvf2ffCE/h+QvbpthJHAFe961dS2EW/a2cdq8f8Ah34yXw5oTR7Q0ox1rVvPjZaSqYrtE3HsSRiuSdJ1HqdEMO5M5jx74qvJ70xpuALYJ5r1f4XzKPD4mncZXOcnHavEfGPj7RpIZJUERcc8HrXmmpftH3GjWclpbAbSDwGrell/N0PVp4G62PXf2gPjENLie2s7gK3IwDXx7dzyeJNSknuCWcnOc1R8ReO73xVqRlmwQTnBJqfR/PMgAXah6nFe9QwkaK2PWoYZUyxdWES4CpufpgV23gPwpMxWdoyqjnkVc8PaLpcKrPczqWPJViK0NR8eW9kfsdgq+mVrom+iN6s1FWOxF/GjhDJtCjbwatK8M0X+vHSuM0G0u9SkHmZYPzkV3kXhOK0gEskhzjoTXnSpt62OHk5tTOgnk0+UMmcH0q2949ypZwx/CmRata2U+yaJWQd+acfGmnszRrCuKxUZXGqRhahcwXrmGWMkA8VqaDp0Gn27Mluynrms291/T4rjzPKGc0ap428vT2EMS9O1b8j7GipNly81NBI2AQ1V7TUpJ3Yry4OBXC6Vr1xq18Q6bQT716BoNrHFcIzsNp6k1Frbop01FalZv7UE3mANs69Kranq8kiiByRIeua9ZvNR0Ww0N5H8suqHuK+Rfih8ZbXTtadbQAkE96SkcM6iiz3PS7OOODzCAWx2NU7qaGWUqU4Br580j9pNoyI5UUZ9zXpPhrxqvifa0W3L9lOa1vYUcSmzvjHAsY24rI1KK35I25+tallo0s8BdmIFNTwwLuUqzt+VL2h2wq3OWGupYyBAQFru9N1qLVNNEXmqVxWPqPw6iFuzlyG+lUdI0CWz3bZW25rSL5gd2zVmlTTyfLIJpdKSXUbkNg8H0rKvdyysqnc1Hh3X7qyvCnk7uevNZVIaGco6Hs2k6qNOtUifg471uWVzHcRM4dSWGcZrx++1i/mlDrEQPxxW5oni2ewjHnxZGOuDXmzvc45JpnT3k8a3WGIAqHU9Qgt7fCkHI6CsG48WJfudsQBx1xWLqWrTTSqqRirgn1Ek2O/4SCNb9hICUzXVWXifToLcEMoPfNczp/hlL/8AeTfL+lY2u6YLa+FvFI2CewrpjGyLUDrbvxFZyXYfAKnoR0rRuNVhvrIIGAXHTNY1j4ahbTcFt0gHUnFUDo94zNHGxA9cVWxqtCaea3hlOXUp3FYOoPaTT7kUbKH8L3xmkWSUkMasXnhUw6UcOfM7ZquaxvGVjndTt4pAfs7c+1ZGmzy2V0QWOc1t6fo9xakmQk5PcVoWPhiO5vlaQ4Hc10RmrHbzqxlTahO80bSMdgNepaDr2m2+iAyqGPrXB+LNJhtYgsLg49DVCC7ii0wwsfm+tS7M5J+8eraL4xsJGdbbCtXWw6E3iOyJnwY2Ga+bvDN55GpEhiAa958NeKZZbSO3iO3jk1zVItbHDKLuY+o+CtN02V/3S7j361xOp2raZcM8U4CjtXo2u6lbq+2aT5yMYBFYlt4Xt9YEs0shMeM4FZw5upceZHHaPfG5vt1z+9iHOMV2uj63pc7SQoVVlHyqT1NYWpS2OhZiSPcDxmqunaHax3Ed8kjLzvwOa6lsaXZ1DatcWlyVBxGT/dNI11NqVwqL9zqflrjfF3jO1sbjaCAPUnGK53VPjRp/h6wMyuhkHv1rnkjnnUcdz3KHwNb3cSu8O5/pU76fb2EH2cwgp0r5x0b9sCAFYyikepava/AHxCsPHtuJSybyOmawbmnozBVuYtX3hHTpIS/kqrYzXFat4RimDpBhSe2a7fVtUAuGtgdoPGaXSvCcl1mfecYzW0azjuztpVeVWZ4dd/C2ea7DPymfStWz+FwWZN8RIr03VYfsdxgEttNaWjol2RuGDTddvY19vcl8EfDqwtbZWlgXGB1pPFOh2thKxt9iIO3FdLealHpOmFVJD44FeZ61Le6w5EbkZNJTkQ5qRt2EyfZwrSI34VZlhshEhj2+Znk1zVj4Uv4od0krY9DWHrt9daSoCsxarUpMqFz0SWW3ltvL3qv41z15pljEkshKltprzS48TaiGyC2abFrepXgIfcFPWtotnXFGrqF7Fas4XGPasa98UBYiofn61namZ2YjJOe1YU2myvMCQSM10pI6ErLQ1bbW7eWf9/zz1JrqrDUrVIQ0LhT9a5I+FhPCG6MRVKbS7zTs4dttOyKud3P4jjjHMoY+1Y99q8ch3BgTXH+fJG/zsfxq/oto+p3AG7AzS5RJXOp0zxIsIw4z+FSXvjq2szjYanXw9BawZfBcDiub1XTI5ZMMo571tFpFezQ4+ModTuQhIUZ+la4tYgBMky8jpmvMde06SyffBkH2qhBruorGA7yAelXN8y0GopbHr+laest+HD7seldhOqJEMrnA714Hp3xAm0eUM+WA9a7Ky+KCavb+Wo2ueMk1z8jHynSanqVr5vkqRuJ5qOXSLP7MZVUFyPWuRe2nlmM+85PNWI727yqF/lFHK2O1i7F4fje7DhT9Kv3khsWQFPlFR2Wq/Z2UuV496fquu2kwydpI9xS9k2Oye5dn1lvsg8k7CMc1QPja6sE+Zg1ZNxr9stsYwwB+tYdx4lso1IkAf8atUWYuMUeq6T4tudR09sS7c9q5SXTbqbU/MdyVBzXHW/jiOxbdHxGO1QX/AMVgM+WPmNP2DQlJR0PZLbVodGtwUlRX6daWXxVBId0ky7m64NfO1148vb1+4UdDWdL4p1KSYLllU9wDQqdmP2sT2zxN4hs7k7VmGfrUnhG4sYXDzzpn3NeNLvuAHllYMe1WYHu2YLE8mT6U5KI/apn0Tq2u6aLcLFIu88cGuYktbPUBuZ1Zs+teeaZpWr3EieY8gTPUgV6bonhBWsjIZ280DpWSsZO0ild6YWVTa4IXrirvh+/1S0ugoyIR7Vz9v4iPh/UHguMsrE9a9G8Pa5p+oWQICCQjp3qJRuQ1Y6rRPEtutu6ygeYQRzXB6xqP2TXBcSFfKzmpr2zleffC2BnoK5rxJpF9dsqgtz1xRTumEZNM9M1Hx9YX2lxRRlRgYPNVPCNnb6xejy2Xk9K4HT/Cs8NsFlZgW9RXReC7afQ9WTExI3d6urJ20FUkzvPE3hx9OiJwNhGTivLr3w8dTumCRliOa9n1zUxdWBDtuYr0rzGz1c2GrMBGpB46+9cam1uc6mzEufCU0WEeM4+ldh4a+H8X2LzTEQcd6vXt49y3mGIAetWLfxZJBbeQkY3dOtX7aXciUmeTePPDmqW7y/2fE5OP4UNfPuvav4t0e+cOkygnrtNfcui3O5y93bqynuwrnPG+iaTq6/LZJvPcKazdaUupyVW2fD15408SSB0nnl2emDXPDxBqnmSb5pMk8Dmvqy8+FNi9+pniKRuw5IxVvX/2cdEFrHewy4bGdvHNJTl3PP8AevofNGhQardzJIXkjXjk9DX0B4Y8N6xPpCvFO0hx0BrrfBvwGtfEEa28c/luvQKBmuvh+HOp/DmYxeaZ4scbiMU7s7qTfUwfCUGoWeBcliy9jXSNr8wd4t2DjqagVLuS9WQx4U9etReI7J7OI3Ma5+U5x9KmEU5andGy3PEfi/4vuHvPs3nFQWxWl8Efh7ceJbyOSFWZmJOcZ7VynxF08apKblvldTkfWvrX9iLQbeexWV8M6KcZ+lddZxp020c9Wooao6nw78ELqDyTcp8owa9j8PaDb+HLTbEgBxjpWxqt3iZ4UG0KMCqwlURYY54r4mtiHKTufPVsQ31GyS/aGJVcGolR2lO4YZehNWYZAq5jXNMmZplGOGHWuJT5mebzubGhnMwDDOentXHfHjxQ3hbwPJKsmyR0OPriuru/EWn6FbM90VLjnrXzF+0n8RLbxJpItIJBsBPQ17OCpXnzWPSw1LU+ZfDE7av4p1DUrkF33sd34V5V8atVW71xgjYJUA17r4X06C00G6kQjewNfNfxDt5n8QzuQdueDivpZe78J7MouMNDC0DVP7PvA0jYAPFeuya1N4h8PiMHzEABx1rxO8hPlLt+8PSvbPhHFDLokvnfMQBVQbe5yU5ScrM/YPXR/wATi7/66H+VUMVoa9/yF7r/AK6H+VUa+BPmrDRnNOoooGIRQelBOBQBuFACjmmFOafjaKM5FAEe2nL8tAPNKQTQArNmmEZFO2GjaR1oARVwaCtOoPSgBitjinE4FRkYbNKzZoAM7uO9OVsmkT5RRH96gCQ8UlD0h6CgBpk2+9SBdy5zUflZFKG2jFAA529f0pqSEggcU/G6myR91qZK4WuGAYCO9Y9/PJHGVIzWsg7GqWoIHBJHStaLcDopTcHY828ZeGoPE9nPEQEk2nGa8P8ADVrdfDnxkoKt5LnJI+te9a15kV+HU4U9q5bxvpsF9YCSONROB1r26cueOp6sZuotT3HS9Yh17S4LuIh2ZRkDrWT4x19NGgDP8q7eT6V5B8HPHj6LfjTL6UlRgLvru/jXY3Wq+E7l9PBaUxZXyyP61k6PvXOarTMf/hYmnXF7GElDMpGfWuV+J3hS08Z2wkWASjqciviTX/E3jDwN4pK3X2mNA+fnI6Zr7U/Zu+IkXj3Tkgnj8yVVH3xW1mkckYNs838Dfs8R2viT+0JoEjVWLAEe9fQF+kVpogtMoqBcdK7fW9OstJid5ikG1c4OK+eviR8R7TTmlCXKqFzjmuqjBzPXw8Lbmtq9xp+laPNIJAJFGQOOtfM/ifxTdXmpTyo5C7uBmszxx8aBNM0aXmY+65rz0+JZteusWTFyx5AFezSoW1Z7dJRR0Wq+I7yX5fMPPbNYo0bUbqUTMcRnmu98LfDm4vLVbu+fYmMnfWb448R2Hh63NtayI8q/3Dmu5SVNaHZKtGEdCLRdAV5FDuqsO/StjV7u10WxkCsC+DyuK8E1j4nanBN+6ZlHsRxWVceO9V1NCJJHbI9RWUq/MefPGvodLqnxDv1v3RJ38vdjGa1rD4ix2ih5CzS465ryyK1udUmJEbq2eo5resPA2r3pUQQS3H0rNVI9TzKmJqSeh9E+A/juI4Np6L0zXQa3+0GphKKWJ9q8e8FfArxXqjK0Wnzxqe3H+NesaV+yX4l1DY01rMqnrnFOWIpndRxHu2kcld/GKe6Y4ztNT2XxVhtoy8oYt/vV6rZfsg3sAXz4Gz6GtaL9jSa4XJhYLXMsRTudH1mJ4NefGSC4mISM8HjmtTRvirbyjyp42wfWvU9S/Y+ezJaOAlgOK8s8SfCS78MagyS27qFPUivRpVqcup0UcQmzstB8aaM0ucbW9+K15/G1rO3l28m059a8E1a2ltLnbFvXPU4IqzpH2iKYbpGZz05FXKNOZ0yameu+INWvb/TZo0kJDDrmvk/4kaPdQ6tJIeWz1617vLqGoW0IBJKVj3Gjw6/ITcRBmbqTXHKhFanl16Enqj5xjsXyrYO4V9B/ArUJYLmJHyB7mrC/CSKT95HBxXSeFvAU+mTKYY8Y9K5mrnHTw0kz6PtLiBNLUhssy81z/wDb8NheYZhyawdP+12cQSeRsdOWFZmp23nXayeaSAc1n7JvY9anSaPT31OPUbIlOc+tcxqNvNBE8gcBc561DaazBYWgTzVOeuT0rnvFfixfsrpFIS3tXRCLibqNmPhvCt0ZpHyAeRmuy0S80+dgx2Bvevn9dZvp52UM+0nj3rd0+71K3IcM4Ue4rZxujf2SaPpmC5sBbgnYcCoNQ1bTJIhGAPwrw1vF92tsFMrZqXT/ABRvKq8h3GuJ0rs5alHsevreafawk4DMaxZr+P7Tv6L2Fcj/AGlvdT5mFFb8c1lParIZVDKOh71p7NIyVKx0Q1IPbblIRPeuP1vWLeCV5NxklXpiszWPFkXlvAswQZxmsfT7WO9uA7Sh1PvVcppyrZGx4Z+IpXVRFOSEc9T9a9ffV7cBZI13g85FfOnjSxSwnga04fuV5716V4R13do0azkmTb3rJwZn7Nnaz3yS3ascBfSprwwXLoqYZcDivMdQ8UOdUSJSQM12un3wit1mbqBWTiyXFkmu2qRmMIpBPpXM6xLPYQkocV01jrdvrF/sbHynvWf4zsmnmWK3TK+tQrozbaOM0/7ZrU22U4B71uf8IBKV8wuGWuk0Xwr9l00O6hXIqSXUxYQGI/MTWylYvmOQh0CGxnJC9K1LPXxprOquBj3qxJGLpTJjaK5jVtOjHmSCTGeDVuXMF0xdVvZtY1IP9oBGRwDXc6X4hi03TzEwJZgBnFeZeHbPzr5tshfaeMV2roFEYlXAHqKyloJtIh16RtThPlqQ3Hakskni04pKc7RW7potL5RGuC3sa0hoqoQrKNp9axdToQ5HjPiTwxPrsTyRnafpXzN8RvD+pWN80crMYsmv0P8A7As4LNtsasfavE/HnwpHiK7YxwDBNPnOKsnJaHw79gaBhsyW9K+kv2btU1K3uI4yHCFu+fSul0n9mb7RfKzxA89K9Q8NfDePwbNGq24Ujvis3qcdOLT1O8sLBNVvUDn5zjNekXFgNK0kKnORXn3h+F4NREsnyA9M12WraoFs03yAgDPWuWabehu229DAfTFuZJHlXJPamQQx6Y+9hgCopvEcUQZ1YNjsDXJaz4sl1KbZCpAz2renHubRTZp+JNTN9N+7O0D3qnZ61Bp6/vGAYVnkvFb+bKxHHcVyd7dPf3TRxk7T3rrUUdEYNHd3XjmOUFUeub1DU7e9wGTcT3rnJ9HmtjvaRselQtcyEBUB/KtYwO6ETQltYkcucbeuKhNzGHHlrn6VUuIrll5LAU6wZYQxc5IHFbKNjrURslvLc3qkJwa2RoyKqtt59KqWOqqZuYzx0q/caoYyrMMKOcU0yi5IttBp4ynz1lJbR3pZccntT21SG7BHeqFvctbXYI6E007gc/4n0KSNgI4iSe+KZ4X0+7sbpTIuFNejzz2s9urMiM3TmsHUtTis5QCgQDoRT5kiZVOUseIbwQWAkA5Arz6TU7m+mBU4UHHFejf2RP4nswtpE8jN/dFdp8Ov2fL2SEzahbsoznDjFcVTEKByzxaiedaD8PrjxHb7lUM2AelU/EPwtl05CXg2kd8V9TaN4XsvDMnlRRITjGADW3c+GrDXk8qeGMM3fBrljj7PU5/r6XU/PXXvCnmB0WHbJXFNpuo6JcKyqQoPrX6TXf7P2l3RMqwoCfrWLqn7N+k3EOPsiEg9Rmuj68u4/ry7nxAvim9SxUBGJA9aot4q1Ob5I7aRm9RX2+v7OOlRKAbFMfQ11fhr9nrw5GCZLCEvjqQ1L6/EX15dz86bzU/EU5CpazDccA1s2HgrxbewCbyJChGeQa+2PGvgjw/4Z1mG1awhEZIO7BxXpmneG/D0Hh2OS3s4XYqOg6Vm8wE8d5n5xSfDrxI2MQuCevBrZ0j4Ha9qi7p1wCOhFfcU3hiyy0htY1UnjK1Qv47WyAEaov0ApPMWuphLGrufGmofs6eImhYQx7l9hXN2HwK1e31AJdxHg9wcV+h3hHUrSZ1hnhSQNwcip/GXhjS5FE0VrEjn8Kj+0W+pg8Vd7nxGvwQm8qMLDn8K7LS/2Y7/AFS3R1iABHUivouz0W18kHykOK9E8LTQnTtogUbcjoazlj2xPE+Z8bP+y1f2sw81kKj0rptN+Atrp8SuyAuK+lbwpPK4KBTmsaTTJJN2E3D2FQsY3uL61bdnzf4j8DXVohFrHhV6Vl6Lpd3aPunQkdxjivqGPwwl7GRJAC3vVC/+H8PlnEKjPtWixSN6eJufH/jTw+L+48xIirg9a5WC8v8AQrlSuVQV9VeJfh3DGR8i5J9a8y8f/DcRWDSxRgNjsa9OlVU0ehGrzI4zRfiD9pnWABjKTiu50i5a6nBnIUHnk14tpOlz6PrAlkUlVbNd/qOpT3EKS2wKqF5211WsdUFfU7bxBdRJEXQb9gwMc1xGn67K+qqxDBQepHFT+GdVl1BnglO89Durf1XQbe3hARlWQ46dazlqTURvC7fVhGsL54qpceHntLtJpSMH3qt4ZDaaA0rfma0vEerJdLFHGwDHArmkjlsal7r2n22nLEw+fvisPw5d2+sasI1XgN1NTnwVLqFmsm4881DY2EfhqfceGz1rJoykd94rWHSrFQrLnHrWH4cls9UmWOUgkmsfUrmbxEyqjswrY0Xw0+noJiDkc1k9DCTRs+KfB1vqMMfkAErzx7VxXiDw1ezxRwQSbVX1rvLDV23OhBIXv61j3epebfYI+UnmhSsRGKZz2gRN4OT7RLNhh2FX5PHDeIrlImJIJwCaTUrBNaVo1BGDziuV1uP+wruCGHiTditOcu/Ket3ulQWXhtpSm+QrkY5rhtPLavpl1DPGUbDEE/Suj8NXuo31kkVyjPGcAEirXijSP7M0qSSJAjlW6fSs4VLzsXGXMfHvxFQx6m9qjYCv2r6T/Y81saRdRWjkjeD39q+bvFdhLP4iZ3+bcxz+devfAnUmsPGFhDH8pyBXZiIt0jkxCbR93atbo02/sQDVCaKMLwQcir98XazhLcF0H8qzYYXL7VBavh5Um5M+dnSbYLM6LsjHNRzR3C7SrZkPpVwxR2jbp5kiH+0QKwfEnxP8O+FraSWW9heRAeK1oYWTlc1o0bM5rx34alv7ZxM5iJQ9a+JvjXC3h12TzRIMnha7z4y/tRz6pqEkGlSEooIygx396+ftV1rVPGV9GLwO+4/xYr63DUVCJ7+HpKLudn4JWfUdHdtrbSOlcX4+8HCYSSKuDjvX1H8M/hxFD4PWQxgkpnmvL/ipaQ6fHcRBAGUHHNdVujPYdNSifKh8ITyzeWGAJ969Y8DeGn0jS5N7jBUd64vybiW9Zo8ivRvDjSR2BE+Tle1aRgcEMP75+rut86vdf9dD/KqNFFfnZ8QIOlLRRQAyX7tPhoooAHpq/dFFFACr1p46UUUAGKRqKKAEooooAY3emL1oooAk7UiffoooAfJ0ooooAenaoJP9ZRRQA9OtP/hoopoqO5D/AMtKrXfIOaKK0RS+I4TxCB9pHFc7rvFrxxxRRXqYfY9egeV23y+LlI4O9eRX1BooEujQBxvBTo3NFFdj3LrHxb+1Jawx+IxtiRcx84UCvRf2Po0jZiqqp2dQMUUU5bHNHc9a+M08nmXQ8x8YPG418Q/F6aQNJ87dfWiiu3BnowPmnW3YySZY/nXffBaNW1MZUH6iiivcex209j6G8ZyPD4XxG7INv8JxXyJ4lnkk1qYtIzHd3JNFFctUzq7GHN8xbPP1p9oB6DoKKK54nDI9H+H1vE8ibo0bkdVBr6o+EunWhuIv9Fh/79iiiuSruRA+qvCGn2qIm22hX6RgV6Za28Qh4jQfRRRRXmzCWxWu4YxOh2Ln6VKVAj4AFFFc6EjCv1B3EgHANfPPxMhjfVJ9yK3zdxRRXqYY66G54H4ytIE3lYYwcdQorzyEAahwMfMf50UV69M9+iXb928tBuOM+tbXhxFa3BKgn1IoorslsdM9jv7RFFkflH5VZsVG7oKKK4VuYw3KXiV2ULhiOexrFjdmByxP1NFFdUdjpiY2pyOqNhmHHY1zjSO0hyxPPc0UUmZ/aNLSlBmjJAJrtQo+xdB0oorRbHStjnroDeaLJR50fAoorDqZM6yVQLYcDpWZcOyhQGIGegNFFEjnZxXit2VSQxBz2NX/AAJNI0UeZGPI6k0UUI54/Eb2s/NdJnnp1rsNJAFmmABxRRVHSY2oAf2vHx3rvTxpq/SiiuSRjIoeG+NTOOOa7e8UFlOBnHWiisehyyF1KRljQBiBjoDXLapzcJn1oorLqZlxgBYjAxXGa9/x7S0UVpHcEJ8L1DXwyAfm7ivRfFUSLApCKD7CiipmTIxvAgzqgB5HNek6soESkAA0UVxPcgS3UG3PA/KsC+4Y445ooqhdCx4eYm7j5PX1ra1uNTKhKgn6UUVSMepQ1YbNhX5fpWdrUjm0xubGPWiipW4o7nEq7eYfmPX1rU0aNPNB2Ln6UUVtA6Ikfi/5bUgcDHQVzOhopOSoJ9cUUV1I60T6997HaqNui7Adoz9KKK3idECW+AEB4rn0ObkD3oorU60adoo8xeB+VS6sP3dFFZie5jWH+vrTjAMiZGaKKSF0HXbENEMnG7pUWvqrRw5AP1FFFYzOKse4/AW3iNuMxIcDjKivoSFQtiwAAHoKKK8TEbnjVjz3WRjURjjmtayA86GiivIfxHjyOqTiGOpIuaKKoCeVRjoKdbDA4oooBHhnx74uo2H3gBz3rc+GDtLoKh2LjHRjmiirNuhu62oGnSYAGGrzPUWPnNyetFFYyMJbnTeCQPta8dq0vG0jrb4DEAZ6GiipiXE5/R5XMJy7H6mvQ/CPFo+OKKK6UBj6xI66gwDEDPY1uaB88PzfN9aKKtkyNMACQYGKh1I/IfpRRULc66J5H42kdbkAMQA3Y1x3ipi2mnJJ47miivfwmyPapHi2sRqPMO0Z+lXbIf8AElkoor22etT2IPBfGpyf71bHiORxq6Dc2OOM0UVnIKhdndvKT5j+dZ0zsb2H5j19aKK5pHGes6I7HTYvmP51znjEDa3HeiisWZSHeC1HmdB+Veluo+y9B09KKKxlsckjLs0UCQ7RnB7Vzcij+0X4H3qKKxKgaugxoZn+Vfyrz/4kqF8S2+AB+9HQUUVRMz2bwxGv9gWLbRuK9cc1n/EBiNIl5P3W/lRRUU/jHSPkDWiTrXJzyf513vwb48fWP+8P50UV7Vb+Ea1tj751Rj9lt+T90fyqppXzTNnnjvRRXx7+Nnhz3POfjBcyxIQkroM/wsRXxl8TNQupPtO65mbnvITRRXq4Y1p7nk2hASXblxuO7q3Ndjo6r/akAwMbh2oor2I7Hr0z7D8IfL4TUDgCPoK+avjaSdTn57UUVfU9OGx4lb/8fP4V6N4SRZLch1DDaPvDNFFbIqn8R//Z"}}},{"cell_type":"markdown","source":"## Competition and structure of this notebook\nThe goal of this competition is to segment instances of microvascular structures, including capillaries, arterioles, and venules. We will have to create a model trained on 2D PAS-stained histology images from healthy human kidney tissue slides. The model will be able to locate microvasculature structures (blood vessels) within human kidney histology slides.\n\nFor more detailed information check: [HuBMAP - Hacking the Human Vasculature](https://www.kaggle.com/competitions/hubmap-hacking-the-human-vasculature/overview)\n\n<small>Note: Some of the code for the polygon annotation and display of images and masks was modified from [ezmgszi's notebook](https://www.kaggle.com/code/ezmgszi/data-import-and-binary-mask-generation). Many thanks!</small>","metadata":{}},{"cell_type":"markdown","source":"### Contents\n- [Datasets and annotations](#Datasets-and-annotations)\n    - [Decyphering datasets and WSIs](#Decyphering-datasets-and-WSIs)\n    - [Training datasets](#Training-datasets)\n    - [Annotations](#Annotations)\n    - [Display tiles and annotations](#Display-tiles-and-annotations)\n    - [Test dataset](#Test-set)\n","metadata":{}},{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport matplotlib.ticker as ticker\nimport seaborn as sns\nimport cv2\nfrom scipy.ndimage import label\nfrom scipy.ndimage import find_objects","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","tags":[],"execution":{"iopub.status.busy":"2023-06-12T08:51:17.060967Z","iopub.execute_input":"2023-06-12T08:51:17.061417Z","iopub.status.idle":"2023-06-12T08:51:17.068497Z","shell.execute_reply.started":"2023-06-12T08:51:17.061385Z","shell.execute_reply":"2023-06-12T08:51:17.067194Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.style.use(\"seaborn-v0_8\")\nINPUT_PATH = '/kaggle/input/hubmap-hacking-the-human-vasculature'\ntrain_images_path = os.path.join(INPUT_PATH, 'train')\ntest_images_path = os.path.join(INPUT_PATH,'test')","metadata":{"tags":[],"execution":{"iopub.status.busy":"2023-06-12T08:51:17.071585Z","iopub.execute_input":"2023-06-12T08:51:17.072043Z","iopub.status.idle":"2023-06-12T08:51:17.086665Z","shell.execute_reply.started":"2023-06-12T08:51:17.071984Z","shell.execute_reply":"2023-06-12T08:51:17.084669Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Datasets and annotations\nAll the images provided to us are tiles taken from quite large human kidney histology slides. The tiles are of size 512x512. There are three kinds of annotations in the images: `{'blood_vessel', 'glomerulus', 'unsure'}`\n\nLet's take a deeper look at the images and their annotations.","metadata":{}},{"cell_type":"code","source":"IMG_SIZE = 512\nannotation_types = ['blood_vessel', 'glomerulus', 'unsure']\nimages = {}\nmasks = {}","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:51:17.089888Z","iopub.execute_input":"2023-06-12T08:51:17.090472Z","iopub.status.idle":"2023-06-12T08:51:17.282177Z","shell.execute_reply.started":"2023-06-12T08:51:17.090427Z","shell.execute_reply":"2023-06-12T08:51:17.280648Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def create_mask(image_id, shape, polygons):\n    \"\"\"\n    Function to load all masks (annotations) of an image into the masks dictionary.\n    It also records several statistics categorized per annotation type like:\n    number of annotations, total area and sum of squared areas (used for std calculation later on)\n    \"\"\"\n    \n    masks[image_id] = {annotation_type: {'count': 0, 'area': 0, 'sum_sq_area': 0, \n                                         'image':np.zeros(shape, dtype=np.uint8)} \n                                           for annotation_type in annotation_types}\n    # For each polygon\n    for polygon in polygons:\n        annotation_type = polygon['type']\n        lines = np.array(polygon['coordinates'])\n        lines = lines.reshape(-1, 1, 2)\n        # Draw the polygon on the mask\n        mask = masks[image_id][annotation_type]['image']\n        cv2.fillPoly(mask, [lines], 1)\n        \n    for t in annotation_types:\n        mask = masks[image_id][t]['image']\n        # Calculate the areas of the mask\n        labels, n_labels = label(mask)\n        f = find_objects(labels)\n        total_area = 0\n        instances = []\n        for i in range(n_labels):\n            instance_area = np.sum(labels[f[i]]//(i+1))\n            instances.append(instance_area)\n            total_area += instance_area\n\n        masks[image_id][t]['count'] = n_labels # number of instances per type\n        masks[image_id][t]['area'] = total_area # total area of all instances\n        masks[image_id][t]['sum_sq_area'] = np.sum(np.array(instances)**2) # sum of squared areas","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:51:17.285118Z","iopub.execute_input":"2023-06-12T08:51:17.285527Z","iopub.status.idle":"2023-06-12T08:51:17.299623Z","shell.execute_reply.started":"2023-06-12T08:51:17.285496Z","shell.execute_reply":"2023-06-12T08:51:17.298275Z"},"_kg_hide-input":true,"_kg_hide-output":false,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import json\n\n# Open the JSON file and read all images in RBG format + create masks\nwith open(os.path.join(INPUT_PATH, 'polygons.jsonl'), 'r') as file:\n    for line in file:\n        json_data = json.loads(line)\n        image_id = json_data['id']\n        # Load image\n        fn = os.path.join(train_images_path, image_id + '.tif')\n        assert(os.path.exists(fn))\n        img = cv2.imread(fn, cv2.IMREAD_UNCHANGED)\n        images[image_id] = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n        shape = img.shape[:2]\n        assert(shape==(IMG_SIZE, IMG_SIZE))\n        del img\n        # Create masks\n        create_mask(image_id, shape, json_data['annotations'])","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:51:17.301253Z","iopub.execute_input":"2023-06-12T08:51:17.301667Z","iopub.status.idle":"2023-06-12T08:52:02.899260Z","shell.execute_reply.started":"2023-06-12T08:51:17.301627Z","shell.execute_reply":"2023-06-12T08:52:02.897543Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"All images are indeed rectangular of size 512x512 and they all open correctly. Additionally all images indicated in the `JSON` file, exist in the `train` directory.","metadata":{}},{"cell_type":"code","source":"annotated_images = list(images.keys())\n# Inspect internal structure of masks\n# masks[annotated_images[0]]","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:02.902302Z","iopub.execute_input":"2023-06-12T08:52:02.902675Z","iopub.status.idle":"2023-06-12T08:52:02.909470Z","shell.execute_reply.started":"2023-06-12T08:52:02.902648Z","shell.execute_reply":"2023-06-12T08:52:02.907983Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Decyphering datasets and WSIs\nFirstly, we are going to explore the meta-data of the datasets provided by the competition with `tile_meta.csv` and `wsi_meta.csv` files. ","metadata":{}},{"cell_type":"code","source":"df_meta = pd.read_csv(os.path.join(INPUT_PATH, 'tile_meta.csv'))\ndf_meta['annotated'] = False\ndf_meta.loc[df_meta['id'].isin(annotated_images), 'annotated'] = True\ndf_meta.sample(5)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:02.910970Z","iopub.execute_input":"2023-06-12T08:52:02.911922Z","iopub.status.idle":"2023-06-12T08:52:02.990413Z","shell.execute_reply.started":"2023-06-12T08:52:02.911884Z","shell.execute_reply":"2023-06-12T08:52:02.989141Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_wsi = pd.read_csv(os.path.join(INPUT_PATH, 'wsi_meta.csv'))\ndf_wsi","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:02.992380Z","iopub.execute_input":"2023-06-12T08:52:02.993150Z","iopub.status.idle":"2023-06-12T08:52:03.017548Z","shell.execute_reply.started":"2023-06-12T08:52:02.993108Z","shell.execute_reply":"2023-06-12T08:52:03.016218Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Each tile belongs to a dataset and comes from a source_wsi. In the training set we have in total 4 WSI's which are annotated (1-4). The rest of WSIs are *NOT* annotated. Let's see the proportion of annotated vs. non-annotated tiles.","metadata":{}},{"cell_type":"code","source":"import glob\ntrain_images = glob.glob(os.path.join(train_images_path, '*.tif'))\nprint(f'Total train images: {len(train_images)}')\nprint(f'Annotated train images: {len(annotated_images)} ({(len(annotated_images)/len(train_images) * 100):.2f}%)')\ndt_ann = df_meta['annotated'].value_counts()\nax = dt_ann.plot(kind='bar', title='Annotated and non-annotated images', xlabel='Annotation', ylabel='Count')\n# Adjust the rotation angle of the x-axis labels\nax.set_xticklabels(dt_ann.index, rotation=0)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:03.019695Z","iopub.execute_input":"2023-06-12T08:52:03.020251Z","iopub.status.idle":"2023-06-12T08:52:03.563686Z","shell.execute_reply.started":"2023-06-12T08:52:03.020204Z","shell.execute_reply":"2023-06-12T08:52:03.562220Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### More detailed information on datasets\nThe competition gives us the following information about the datasets:\n\n>The competition data comprises tiles extracted from five Whole Slide Images (WSI) split into two datasets. Tiles from Dataset 1 have annotations that have been expert reviewed. Dataset 2 comprises the remaining tiles from these same WSIs and contain sparse annotations that have not been expert reviewed.\n\n>- All of the test set tiles are from Dataset 1.\n>- Two of the WSIs make up the training set, two WSIs make up the public test set, and one WSI makes up the private test set.\n>- The training data includes Dataset 2 tiles from the public test WSI, but not from the private test WSI.\n\n>We also include, as Dataset 3, tiles extracted from an additional nine WSIs. These tiles have not been annotated. You may wish to apply semi- or self-supervised learning techniques on this data to support your predictions.\n\nThe actual test sets are hidden. Some tiles of the **public** test set's WSIs are included in the training dataset. The final **private** test set contains about 650 tiles which all come from an unknown WSI (probably `WSI-5`).\n\nWe are also informed that:\n> This leaderboard is calculated with approximately 28% of the test data. The final results will be based on the other 72%.\n\nLet's see some statistics on the training datasets.","metadata":{}},{"cell_type":"markdown","source":"## Training datasets","metadata":{}},{"cell_type":"code","source":"dt_prc = df_meta['dataset'].value_counts(normalize=True) * 100\ncolor_palette = ['tab:orange', 'tab:green', 'tab:blue']\nax = dt_prc.plot(kind='bar', title='Number of images per dataset', \n                xlabel='Dataset', ylabel='% of total images', color=color_palette)\nax.set_xticklabels(dt_prc.index, rotation=0)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:03.565525Z","iopub.execute_input":"2023-06-12T08:52:03.565935Z","iopub.status.idle":"2023-06-12T08:52:03.866804Z","shell.execute_reply.started":"2023-06-12T08:52:03.565904Z","shell.execute_reply":"2023-06-12T08:52:03.865600Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.histplot(x='dataset', hue='annotated', multiple=\"stack\", \n             data=df_meta, binwidth=0.25).set_title(\"Annotated per dataset\")\nformatter = ticker.StrMethodFormatter('{x:,.0f}')\nplt.gca().xaxis.set_major_formatter(formatter)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:03.868792Z","iopub.execute_input":"2023-06-12T08:52:03.869256Z","iopub.status.idle":"2023-06-12T08:52:04.302962Z","shell.execute_reply.started":"2023-06-12T08:52:03.869216Z","shell.execute_reply":"2023-06-12T08:52:04.301495Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ds3 = pd.Series(df_meta[['dataset', 'source_wsi']].value_counts()[3], name='tiles')\nprint(f\"\\nDataset 3 WSI sources. Total number of tiles: {ds3.sum()}.\")\npd.DataFrame(ds3).T","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:04.310744Z","iopub.execute_input":"2023-06-12T08:52:04.311316Z","iopub.status.idle":"2023-06-12T08:52:04.337273Z","shell.execute_reply.started":"2023-06-12T08:52:04.311277Z","shell.execute_reply":"2023-06-12T08:52:04.335575Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Dataset 3** contains only non-annotated images and the source of tiles are from slides `WSI 6` to `WSI 14`. We have no extra meta-data on these WSIs' other than that each WSI is comprised of 600 tiles. We will not do any further analysis on this dataset as it can be used for Semi Supervised or Unsupervised Learning techniques.\n\nThe same applies for `WSI 5`, which is missing from our datasets completely and it is most probably the WSI used in the *private* testset. ","metadata":{}},{"cell_type":"markdown","source":"### Datasets for supervised learning\nThe training dataset for supervised learning is comprised of 1663 annotated images belonging to either **Dataset&nbsp;1** or **Dataset&nbsp;2**. Dataset 1 contains images from `WSI 1` and `WSI 2`. Dataset 2 contains images from `WSI 1` - `WSI 4`.","metadata":{}},{"cell_type":"code","source":"sds12 = pd.Series(df_meta[['dataset', 'source_wsi']].value_counts().sort_index(), name='tiles')\ndds12 = pd.DataFrame(sds12).loc[pd.IndexSlice['1':'2', :]]\nprint(f\"Dataset 1 has in total {dds12.xs(1, level=0)['tiles'].sum()} expert reviewed and annotated tiles.\")\nprint(f\"Dataset 2 has in total {dds12.xs(2, level=0)['tiles'].sum()} sparsely annotated tiles.\")\ndds12","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:04.338924Z","iopub.execute_input":"2023-06-12T08:52:04.339302Z","iopub.status.idle":"2023-06-12T08:52:04.367444Z","shell.execute_reply.started":"2023-06-12T08:52:04.339273Z","shell.execute_reply":"2023-06-12T08:52:04.365968Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dds12.plot(kind='bar', title='Number of images per dataset', \n            xlabel='Datasets & WSIs', ylabel='Total images')\ncurrent_labels = [item.get_text() for item in plt.xticks()[1]]\n# Replacing the x-axis labels (ds,wsi) format to readable text\nfor i, label in enumerate(current_labels):\n    ds, wsi = label.replace('(', '').replace(')', '').split(',')\n    current_labels[i] = f\"dataset {ds},wsi-{wsi}\"\nplt.gca().set_xticklabels(current_labels, rotation=45)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:04.368984Z","iopub.execute_input":"2023-06-12T08:52:04.369379Z","iopub.status.idle":"2023-06-12T08:52:04.756794Z","shell.execute_reply.started":"2023-06-12T08:52:04.369347Z","shell.execute_reply":"2023-06-12T08:52:04.755296Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Let's now have an overview of the positions of the tiles at each WSI.","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(14, 8))\nfor i in range(1,3):\n    plt.subplot(1,2,i)\n    sns.scatterplot(x='i', y='j', hue='source_wsi', palette=sns.color_palette()[:i*2], marker='D',\n                    data=df_meta[df_meta.dataset==i]).set_title(f'Dataset {i}')\n    plt.xlabel('i-th position (from upper-left corner)')\n    plt.ylabel('j-th position (from upper-left corner)')\n    plt.ylim(50000, 0)\n\nplt.subplots_adjust(wspace=0.25)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:04.758901Z","iopub.execute_input":"2023-06-12T08:52:04.759274Z","iopub.status.idle":"2023-06-12T08:52:05.593797Z","shell.execute_reply.started":"2023-06-12T08:52:04.759239Z","shell.execute_reply":"2023-06-12T08:52:05.592332Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Finally the table below shows an overview of the WSIs with their repective features of the individuals they were taken from, with the added distribution of the WSIs in the two datasets.","metadata":{}},{"cell_type":"code","source":"df_wsi['dataset1'] = df_wsi['source_wsi'].map(dds12.xs(1, level=0)['tiles']).fillna(0).astype(int)\ndf_wsi['dataset2'] = df_wsi['source_wsi'].map(dds12.xs(2, level=0)['tiles']).fillna(0).astype(int)\ndf_wsi","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:05.595819Z","iopub.execute_input":"2023-06-12T08:52:05.596667Z","iopub.status.idle":"2023-06-12T08:52:05.623441Z","shell.execute_reply.started":"2023-06-12T08:52:05.596622Z","shell.execute_reply":"2023-06-12T08:52:05.621560Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Annotations\nWe accumulate all statistics of every annotation type *per tile image* to a DataFrame.\n\nThen we plot graphs for every annotation type category on:\n- Number of annotations\n- Total area size of annotations\n- Mean area size of annotation","metadata":{}},{"cell_type":"code","source":"image_area = IMG_SIZE**2\n\n# Create a dataframe with all the masks statistics per type\ndf = pd.DataFrame.from_dict({(i,j): masks[i][j] \n                               for i in masks.keys() \n                                   for j in masks[i].keys()}, orient='index')\ndel df['image']\ndf['mean_area'] = np.where(df['count'] == 0, 0, df['area'] / df['count'])\ndf['percent_image'] = df['area'] / image_area * 100.0\ndf.index.names = ['image_id', 'annotation_type']\ndf[[\"count\", \"area\",\"mean_area\", \"percent_image\"]].head(6)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:05.625844Z","iopub.execute_input":"2023-06-12T08:52:05.626638Z","iopub.status.idle":"2023-06-12T08:52:05.707211Z","shell.execute_reply.started":"2023-06-12T08:52:05.626590Z","shell.execute_reply":"2023-06-12T08:52:05.706061Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def plot_counts(df, n_bins, title, x_label):\n    \"\"\"\n    Plot annotation counts excluding zeros \n    \n    \"\"\"\n    colors = [('steelblue', 'lightblue'),('mediumpurple', 'plum'),('gray', 'lightgray')]\n    plt.figure(figsize=(8,15))\n    # fig.suptitle(title)\n    for i, t in enumerate(annotation_types):\n        plt.subplot(3,1, i+1)\n        df_at = df.iloc[:,i]\n        zeros = len(df_at[df_at == 0])\n        plt.hist(df_at[df_at != 0], bins=n_bins[i], color=colors[i][0], ec=colors[i][1])\n        plt.title(t)\n        plt.xlabel(x_label)\n        plt.ylabel('Number of images')\n        formatter = ticker.StrMethodFormatter('{x:,.0f}')\n        plt.gca().xaxis.set_major_formatter(formatter)\n        # Display the proportion of images having zero annotations\n        title_text = plt.gca().title\n        x, y = title_text.get_position()\n        plt.text(x,y-.02, f'[Number of images having no \"{t}\" annotations: {zeros} ({zeros/len(df_at)*100:.1f}%)]', \n                 transform=plt.gca().transAxes, ha='center', va='center', fontsize=9)\n    plt.subplots_adjust(hspace=0.3)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:05.708687Z","iopub.execute_input":"2023-06-12T08:52:05.709052Z","iopub.status.idle":"2023-06-12T08:52:05.719462Z","shell.execute_reply.started":"2023-06-12T08:52:05.708999Z","shell.execute_reply":"2023-06-12T08:52:05.718288Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Number of annotations per tile image","metadata":{}},{"cell_type":"code","source":"df_count = df.unstack(level=-1)['count']\nn_bins = [20, 5, 10]\nplot_counts(df_count, n_bins, \"Counts\", 'Number of annotations per tile image')","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:05.721161Z","iopub.execute_input":"2023-06-12T08:52:05.721907Z","iopub.status.idle":"2023-06-12T08:52:06.710564Z","shell.execute_reply.started":"2023-06-12T08:52:05.721876Z","shell.execute_reply":"2023-06-12T08:52:06.709439Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Total area size of annotations per tile image","metadata":{}},{"cell_type":"code","source":"df_area = df.unstack(level=-1)['percent_image']\nn_bins = [50, 20, 20]\nplot_counts(df_area, n_bins, \"Area\", 'Proportion of area size of all annotations per tile image (%)')","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:06.712033Z","iopub.execute_input":"2023-06-12T08:52:06.712972Z","iopub.status.idle":"2023-06-12T08:52:08.098504Z","shell.execute_reply.started":"2023-06-12T08:52:06.712934Z","shell.execute_reply":"2023-06-12T08:52:08.097092Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Mean area of annotations per tile image","metadata":{}},{"cell_type":"code","source":"print(f\"The total area of every image is {image_area:,} pixels\")\ndf_mean_area = df.unstack(level=-1)['mean_area']\nn_bins = [120, 30, 20]\nplot_counts(df_mean_area, n_bins, \"Mean Area Size\", 'Mean area size of an annotation in an image (in pixels)')","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:08.099951Z","iopub.execute_input":"2023-06-12T08:52:08.100318Z","iopub.status.idle":"2023-06-12T08:52:09.385316Z","shell.execute_reply.started":"2023-06-12T08:52:08.100289Z","shell.execute_reply":"2023-06-12T08:52:09.384027Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"The main bulk of blood vessels have a mean size between 0-10K pixels, so let's zoom in to have a more clear picture on that.","metadata":{}},{"cell_type":"code","source":"mean_cnd = df_mean_area.iloc[:,0].values\nnr_mcnd = (mean_cnd<10000).sum()\nprint(f'Number of images with a mean blood vessel area size < 10K pixels: {nr_mcnd} ({nr_mcnd/len(mean_cnd)*100:.2f}%)')\nmean_data = mean_cnd[(mean_cnd > 0) & (mean_cnd<10000)] \nplt.figure(figsize=(6,5))\nplt.hist(mean_data, bins=30, ec='lightblue')\nplt.title('Images with mean area size of blood vessels < 10K pixels')\nplt.xlabel(\"Mean area size of blood vessel's annotation in an image (in pixels)\")\nplt.ylabel('Number of images')\nplt.xticks(np.arange(0, 11000, 1000))\nformatter = ticker.StrMethodFormatter('{x:,.0f}')\nplt.gca().xaxis.set_major_formatter(formatter)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:09.387116Z","iopub.execute_input":"2023-06-12T08:52:09.387575Z","iopub.status.idle":"2023-06-12T08:52:09.845744Z","shell.execute_reply.started":"2023-06-12T08:52:09.387541Z","shell.execute_reply":"2023-06-12T08:52:09.844514Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Conclusions\n- A lot of tiles (~73-78%) do not have either a `glomerulus` or an `unsure` annotation\n- The `glomerulus` annotations are usually one per tile with a relatively large mean area size\n- Most tiles that have an `unsure` annotation, they have 1-4 annotations with a mean  area size a little larger than the `blood_vessel`\n- There are very few (<0.1%) tiles with no `blood_vessel`s\n- Most tiles have between 1-16 `blood_vessel`s\n- The `blood_vessel`s are quite small as their mean area size is mostly less than 3,000 pixels (an equivalent of ~55x55 pixels square area). Almost 99% of all the `blood_vessel`s have a mean area size less than 10,000 pixels (an equivalent of 100x100 pixels square area)\n- The total area of all `blood_vessel`s in a tile, is mostly less than 10% of area of the tile","metadata":{}},{"cell_type":"markdown","source":"### Statistics of Dataset 1 vs Dataset 2\nWe calculate the mean and standard deviation per dataset for the following:\n- Number of annotations per tile\n- Area size of annotation per tile\n\nThese statistics will give us a rough idea of the distribution of the annotations in the two datasets. We have to keep in mind that **dataset 1** has expert annotated and reviewed tiles, while **dataset 2** have sparsely annotated tiles thar are not expert reviewed, so that might cause some ambiguity in the models' precision if dataset 2 is included in the training.\n\nFurthermore, these statistics could be used for a pure statistically random constructed submission to the competition to get a bare minimum baseline.","metadata":{}},{"cell_type":"code","source":"ext_df = df.unstack(level=-1)\next_df.head(3)[[\"count\", \"area\",\"mean_area\", \"percent_image\"]]","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:09.848071Z","iopub.execute_input":"2023-06-12T08:52:09.848510Z","iopub.status.idle":"2023-06-12T08:52:09.876972Z","shell.execute_reply.started":"2023-06-12T08:52:09.848471Z","shell.execute_reply":"2023-06-12T08:52:09.875749Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ext_df1 = ext_df.loc[df_meta[df_meta.dataset==1].id]\next_df2 = ext_df.loc[df_meta[df_meta.dataset==2].id]\n\nprint(f\"Tiles in dataset 1: {len(ext_df1)} and in dataset 2: {len(ext_df2)}\") ","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:09.878834Z","iopub.execute_input":"2023-06-12T08:52:09.879271Z","iopub.status.idle":"2023-06-12T08:52:09.895113Z","shell.execute_reply.started":"2023-06-12T08:52:09.879230Z","shell.execute_reply":"2023-06-12T08:52:09.893708Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Number of annotations per tile","metadata":{}},{"cell_type":"code","source":"# Average number of instances of annotations\nprint('Dataset 1 mean number of annotations')\nmean_cnt_df1 = ext_df1['count'].mean() \nprint(mean_cnt_df1)\nprint('\\nDataset 2 mean number of annotations')\nmean_cnt_df2 = ext_df2['count'].mean() \nprint(mean_cnt_df2)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:09.897162Z","iopub.execute_input":"2023-06-12T08:52:09.897624Z","iopub.status.idle":"2023-06-12T08:52:09.915926Z","shell.execute_reply.started":"2023-06-12T08:52:09.897591Z","shell.execute_reply":"2023-06-12T08:52:09.912658Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Standard deviation of number of instances of annotations\nprint('Dataset 1 standard deviation of number of annotations')\nstd_cnt_df1 = ext_df1['count'].std() \nprint(std_cnt_df1)\nprint('\\nDataset 2 standard deviation of number of annotations')\nstd_cnt_df2 = ext_df2['count'].std() \nprint(std_cnt_df2)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:09.917813Z","iopub.execute_input":"2023-06-12T08:52:09.918249Z","iopub.status.idle":"2023-06-12T08:52:09.933079Z","shell.execute_reply.started":"2023-06-12T08:52:09.918217Z","shell.execute_reply":"2023-06-12T08:52:09.931735Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Area size of annotation ","metadata":{}},{"cell_type":"code","source":"# Average area size per annotation type\nprint('Dataset 1 mean area size of annotation in pixels')\nmean_area_df1 = ext_df1['area'].sum()/ext_df1['count'].sum()\nprint(mean_area_df1)\nprint('\\nDataset 2 mean area size of annotation in pixels')\nmean_area_df2 = ext_df2['area'].sum()/ext_df2['count'].sum()\nprint(mean_area_df2)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:09.935245Z","iopub.execute_input":"2023-06-12T08:52:09.936505Z","iopub.status.idle":"2023-06-12T08:52:09.957698Z","shell.execute_reply.started":"2023-06-12T08:52:09.936459Z","shell.execute_reply":"2023-06-12T08:52:09.956132Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Standard deviation of area size per annotation type\nprint('Dataset 1 standard deviation of area size of annotation in pixels')\nstd_area_df1 = np.sqrt(ext_df1['sum_sq_area'].sum()/ext_df1['count'].sum() - mean_area_df1**2)\nprint(std_area_df1)\nstd_area_df2 = np.sqrt(ext_df2['sum_sq_area'].sum()/ext_df2['count'].sum() - mean_area_df2**2)\nprint('\\nDataset 2 standard deviation of area size of annotation in pixels')\nprint(std_area_df2)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:09.959313Z","iopub.execute_input":"2023-06-12T08:52:09.959676Z","iopub.status.idle":"2023-06-12T08:52:09.979486Z","shell.execute_reply.started":"2023-06-12T08:52:09.959646Z","shell.execute_reply":"2023-06-12T08:52:09.977961Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Graphical representation of the statistics","metadata":{}},{"cell_type":"code","source":"df_cnt = pd.DataFrame()\ndf_cnt['Mean count ds-1'] = mean_cnt_df1\ndf_cnt['Std count ds-1'] = std_cnt_df1\ndf_cnt['Mean area ds-1'] = mean_area_df1\ndf_cnt['Std area ds-1'] = std_area_df1\n\ndf_cnt['Mean count ds-2'] = mean_cnt_df2\ndf_cnt['Std count ds-2'] = std_cnt_df2\ndf_cnt['Mean area ds-2'] = mean_area_df2\ndf_cnt['Std area ds-2'] = std_area_df2\n\ndf_cnt","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:09.981848Z","iopub.execute_input":"2023-06-12T08:52:09.982540Z","iopub.status.idle":"2023-06-12T08:52:10.008992Z","shell.execute_reply.started":"2023-06-12T08:52:09.982506Z","shell.execute_reply":"2023-06-12T08:52:10.007386Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig, axs = plt.subplots(1, 2, figsize=(14, 7))\n\ndf_cnt[['Mean count ds-1','Mean count ds-2','Std count ds-1','Std count ds-2']].plot.bar(ax=axs[0])\naxs[0].set_title('Number of annotations')\naxs[0].set_ylabel('Count')\n\ndf_cnt[['Mean area ds-1','Mean area ds-2','Std area ds-1','Std area ds-2']].plot.bar(ax=axs[1])\naxs[1].set_title('Area of annotation')\naxs[1].set_ylabel('Area in pixels')\n\nplt.subplots_adjust(wspace=0.3)\nfor ax in axs:\n    ax.set_xticklabels(ax.get_xticklabels(), rotation=0)\n    ax.set_xlabel('Annotation type')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:10.015432Z","iopub.execute_input":"2023-06-12T08:52:10.015861Z","iopub.status.idle":"2023-06-12T08:52:10.665581Z","shell.execute_reply.started":"2023-06-12T08:52:10.015831Z","shell.execute_reply":"2023-06-12T08:52:10.664440Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Display tiles and annotations\nSome sample tiles and their respective annotations are displayed for dataset 1 and datatset2","metadata":{}},{"cell_type":"code","source":"import matplotlib.patches as mpatches\n\ndef display_image_and_masks(image_id):\n    \"\"\"\n    Given an image_id as input, the image is displayed in RGB, \n    the mask of all annotations with different shades of gray \n    and a final image with its overlayed mask\n    \"\"\"\n    if image_id not in images.keys():\n        return\n    \n    image = images[image_id]\n    mask = masks[image_id]\n    combined_mask = np.zeros(image.shape[:2])\n    overlay = image.copy()\n    # Colors for blood vessels, glomerulus and unsure respectively\n    colors = [(255, 0, 0), (0, 0, 255), (0, 206, 209)]  \n    colorsRBG = [tuple(c / 255 for c in tup) for tup in colors] \n    \n    # Initialize dictionary to hold annotation counts\n    annotation_counts = {}\n    for i, a_t in enumerate(mask.keys()):\n        annotation_counts[a_t] = mask[a_t]['count']\n        # update overlay\n        overlay[mask[a_t]['image'] > 0] = colors[i]\n        combined_mask += mask[a_t]['image'] * (i+1)\n        \n    # print annotation counts\n    print(f\"Annotation counts for image {image_id}: {annotation_counts}\")\n\n    # prepare for subplot\n    plt.figure(figsize=(25,25))\n\n    # plot the original image\n    plt.subplot(1,3,1)\n    plt.imshow(image)\n    plt.title('Image' + f\" {image_id}\")\n    plt.axis('off')\n    # plot the mask\n    plt.subplot(1,3,2)\n    plt.imshow(combined_mask, cmap='bone')\n    plt.title('All annotations mask')\n    plt.axis('off')\n    # plot the overlay\n    plt.subplot(1,3,3)\n    plt.imshow(image)  # Use RGB image\n    plt.imshow(overlay, alpha=0.4)  # change alpha to adjust transparency\n\n    # Create a list of Patch objects representing the colors\n    patches = [mpatches.Patch(color=color, label=label) \n               for color, label in zip(colorsRBG, list(annotation_counts.keys()))]\n    legend = plt.legend(handles=patches)\n    \n    plt.title('Overlay')\n    plt.axis('off')\n    plt.show()\n","metadata":{"jupyter":{"source_hidden":true},"execution":{"iopub.status.busy":"2023-06-12T08:52:10.667182Z","iopub.execute_input":"2023-06-12T08:52:10.667637Z","iopub.status.idle":"2023-06-12T08:52:10.684279Z","shell.execute_reply.started":"2023-06-12T08:52:10.667600Z","shell.execute_reply":"2023-06-12T08:52:10.682750Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Dataset 1","metadata":{}},{"cell_type":"code","source":"image_ids = ['097dd2ed6c14', '0754412b2917', '00656c6f2690', '06b972c417e7']\nfor im_id in image_ids: \n    display_image_and_masks(im_id)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:10.686634Z","iopub.execute_input":"2023-06-12T08:52:10.687179Z","iopub.status.idle":"2023-06-12T08:52:14.698184Z","shell.execute_reply.started":"2023-06-12T08:52:10.687126Z","shell.execute_reply":"2023-06-12T08:52:14.697212Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Dataset 2","metadata":{}},{"cell_type":"code","source":"image_ids = ['00da8fdf2391', '014b60dfe193', 'fa207406c405', '5e568e50245f']\nfor im_id in image_ids:\n    display_image_and_masks(im_id)","metadata":{"execution":{"iopub.status.busy":"2023-06-12T08:52:14.699488Z","iopub.execute_input":"2023-06-12T08:52:14.700001Z","iopub.status.idle":"2023-06-12T08:52:18.916163Z","shell.execute_reply.started":"2023-06-12T08:52:14.699971Z","shell.execute_reply":"2023-06-12T08:52:18.914486Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Test dataset\nThe test data set is comprised by only one image. This will be replaced during submission, by ~28% of the test set for scoring the results in the leaderboard. After the competition closes, it will be replaced by ~72% of the test set and this will define the final scoring in the leaderboard. There are about 650 tiles in the full test set.","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(10, 10))\nfn = os.path.join(test_images_path, '72e40acccadf.tif')\nimg = cv2.imread(fn, cv2.IMREAD_UNCHANGED)\nimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\nplt.imshow(img)\nplt.axis('off');","metadata":{"jupyter":{"source_hidden":true},"execution":{"iopub.status.busy":"2023-06-12T08:52:18.918076Z","iopub.execute_input":"2023-06-12T08:52:18.918459Z","iopub.status.idle":"2023-06-12T08:52:19.658371Z","shell.execute_reply.started":"2023-06-12T08:52:18.918429Z","shell.execute_reply":"2023-06-12T08:52:19.656874Z"},"trusted":true},"execution_count":null,"outputs":[]}]}