diff --git a/Affinity Propagation.ipynb b/Affinity Propagation.ipynb index 5687d00..9549b95 100644 --- a/Affinity Propagation.ipynb +++ b/Affinity Propagation.ipynb @@ -1,5 +1,14 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook is written in R. The ggplot and apcluster were installed when Binder started - you can see how by examining the [repo for these notebooks](https://github.com/shawngraham/bindr-test-Identifying-Similar-Images-with-TensorFlow). \n", + "\n", + "Note that you'll get an error when you run the import script. That's because my code for writing the json in the other notebook used `'` rather than `\"`. " + ] + }, { "cell_type": "code", "execution_count": 1, @@ -15,19 +24,11 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, + "execution_count": 2, + "metadata": { + "collapsed": false + }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "also installing the dependencies ‘colorspace’, ‘assertthat’, ‘utf8’, ‘RColorBrewer’, ‘dichromat’, ‘munsell’, ‘labeling’, ‘viridisLite’, ‘cli’, ‘pillar’, ‘rlang’, ‘gtable’, ‘plyr’, ‘reshape2’, ‘scales’, ‘tibble’, ‘lazyeval’\n", - "\n", - "Updating HTML index of packages in '.Library'\n", - "Making 'packages.html' ... done\n" - ] - }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAYAAAD958/bAAAEGWlDQ1BrQ0dDb2xvclNwYWNl\nR2VuZXJpY1JHQgAAOI2NVV1oHFUUPrtzZyMkzlNsNIV0qD8NJQ2TVjShtLp/3d02bpZJNtoi\n6GT27s6Yyc44M7v9oU9FUHwx6psUxL+3gCAo9Q/bPrQvlQol2tQgKD60+INQ6Ium65k7M5lp\nurHeZe58853vnnvuuWfvBei5qliWkRQBFpquLRcy4nOHj4g9K5CEh6AXBqFXUR0rXalMAjZP\nC3e1W99Dwntf2dXd/p+tt0YdFSBxH2Kz5qgLiI8B8KdVy3YBevqRHz/qWh72Yui3MUDEL3q4\n4WPXw3M+fo1pZuQs4tOIBVVTaoiXEI/MxfhGDPsxsNZfoE1q66ro5aJim3XdoLFw72H+n23B\naIXzbcOnz5mfPoTvYVz7KzUl5+FRxEuqkp9G/Ajia219thzg25abkRE/BpDc3pqvphHvRFys\n2weqvp+krbWKIX7nhDbzLOItiM8358pTwdirqpPFnMF2xLc1WvLyOwTAibpbmvHHcvttU57y\n5+XqNZrLe3lE/Pq8eUj2fXKfOe3pfOjzhJYtB/yll5SDFcSDiH+hRkH25+L+sdxKEAMZahrl\nSX8ukqMOWy/jXW2m6M9LDBc31B9LFuv6gVKg/0Szi3KAr1kGq1GMjU/aLbnq6/lRxc4XfJ98\nhTargX++DbMJBSiYMIe9Ck1YAxFkKEAG3xbYaKmDDgYyFK0UGYpfoWYXG+fAPPI6tJnNwb7C\nlP7IyF+D+bjOtCpkhz6CFrIa/I6sFtNl8auFXGMTP34sNwI/JhkgEtmDz14ySfaRcTIBInmK\nPE32kxyyE2Tv+thKbEVePDfW/byMM1Kmm0XdObS7oGD/MypMXFPXrCwOtoYjyyn7BV29/MZf\nsVzpLDdRtuIZnbpXzvlf+ev8MvYr/Gqk4H/kV/G3csdazLuyTMPsbFhzd1UabQbjFvDRmcWJ\nxR3zcfHkVw9GfpbJmeev9F08WW8uDkaslwX6avlWGU6NRKz0g/SHtCy9J30o/ca9zX3Kfc19\nzn3BXQKRO8ud477hLnAfc1/G9mrzGlrfexZ5GLdn6ZZrrEohI2wVHhZywjbhUWEy8icMCGNC\nUdiBlq3r+xafL549HQ5jH+an+1y+LlYBifuxAvRN/lVVVOlwlCkdVm9NOL5BE4wkQ2SMlDZU\n97hX86EilU/lUmkQUztTE6mx1EEPh7OmdqBtAvv8HdWpbrJS6tJj3n0CWdM6busNzRV3S9KT\nYhqvNiqWmuroiKgYhshMjmhTh9ptWhsF7970j/SbMrsPE1suR5z7DMC+P/Hs+y7ijrQAlhyA\ngccjbhjPygfeBTjzhNqy28EdkUh8C+DU9+z2v/oyeH791OncxHOs5y2AtTc7nb/f73TWPkD/\nqwBnjX8BoJ98VQNcC+8AAEAASURBVHgB7N0JnCVVfSjg0zM9OzOyzLDLokAwyCYgCi6IkieG\n8ESCQhRBgyQCScSICnEJEMWnIuCSgAEhAjJAeIALS5CAGlFwwwVj8sIqO4zDMMww+331L7nN\nvd23+97uvnt95/fr6b61nDrnO9U99a8659RAKUtJIkCAAAECBAgQIECAAIE0hQEBAgQIECBA\ngAABAgQI/F5AgORMIECAAAECBAgQIECAwHMCAiSnAgECBAgQIECAAAECBJ4TECA5FQgQIECA\nAAECBAgQIPCcgADJqUCAAAECBAgQIECAAIHnBARITgUCBAgQIECAAAECBAg8JyBAcioQIECA\nAAECBAgQIEDgOQEBklOBAAECBAgQIECAAAECzwkMkqgvcMkll6QLLrig/oYVW9xyyy0Vn8b+\ncenSpekzn/lM+vGPf5zuvPPOtGzZsrTzzjunXXfdNf3Zn/1Z2nfffUdk8Od//ufpnnvuSX/6\np3+ajj/++BHrywuuvfbadPbZZ6c3v/nN6W/+5m/Ki/Off/GLXwx9HuuH//W//lf68Ic/PNYm\n6Qc/+EE65ZRTRmwzMDCQ5s6dm9Zff/308pe/PB1xxBFpww03rNrurLPOSl//+tfTxz72sfS6\n172uat14P9x3331pm222Ge9uDW8f58J5552Xt1XUa+HChWn//fevuf+VV16Z/vEf/zH90R/9\nUTr55JNrblO0heM911euXJne+MY3pvnz56fwbGaqlffixYvTW97ylrTVVlulf/mXf2nm4Yby\nivMnzpsPfOAD6Y//+I+HlscPzT5/3/e+96Wf//zn6d3vfnc68sgjq45V68Nf//Vfp1/+8pfp\nIx/5SHr9619fa5OmL2t2nZteQBkSIECAQPEESlJdgX/4h38oZWfGuL7qZvrcBv/1X/9VeslL\nXpLnPXXq1NLmm29eevGLX1yaMWNGvmxwcLD0xS9+cUR2WQCVr58+fXopu6AZsb684Etf+lK+\n3XHHHVdelH9/9atfnS9vpF5HHXVU1b61PmQBTkP5Rb2+9a1vVWXxl3/5l/m+2UVj1fLxfFiy\nZEnp8MMPL2XByHh2G9e2t912WynaKMy23HLL0u677176n//5n1HzOPPMM/NtswvTUbcp0oqJ\nnOvLly/PDbfYYoumU9XK+9FHH82Pt+OOOzb9eOUMP/jBD+bH+Od//ufyolKrzt/42xHn6x57\n7DF0rNF+eOihh/Lze86cOXl5RtuuWctbVedmlU8+BAgQIFBcAV3ssquHeinuqv72t7+t+rro\noovy3Xbbbbeq5eXt6uVZXn/QQQel//zP/0x/9Vd/lR577LGUXaSk7KI7ZRdv6dJLL03ZBXk6\n4YQT0mWXXVbeper7qlWr0tFHH53WrFlTtbzRD3E3u1zm0b7HE55GUxY0jMgvnnT9x3/8R3rV\nq16V4q59PEW69957G82yoe3uvvvu/K589qvc0PYT2ejf//3f09q1a1MWMOZ1/OlPf5qyYHYi\nWRVyn4mc69OmTUuf/OQn6z7BnAhoK/MeqzzxRCzqtOeeew5t1qrz9+1vf3uaOXNm+slPfpJ+\n85vfDB2v1g/xdDTO77e+9a1p3rx5tTZp6rJW1bmphZQZAQIECBRSQBe7Bpo9ulLFV2WKLj+R\nsic4KXuaULmq4Z8jMPp//+//pb333jt9/vOfr9pvypQpefe6733ve+ncc8/NuxdFYDE8rbfe\nevnFz6c+9am8W8zw9fU+Rz0mWv5aeWdPiGrmt+2226Zbb701vfSlL80v1L75zW/mQWGtPLp1\n2SOPPJIXbbLdALu1fq0s10TP9ewJasu6J7Yy77Es4/xp1zkUXVsPPfTQ/GZL3HA5/fTTRy1a\nuUvhMcccM+o2VhAgQIAAgSIICJA62Mp33XVXfvRZs2aNWooPfehD6Y477kjxZCS+YkxPZYrA\nKJ4+xYXP//7f/zsfu1S5vpt+jqdh8RQh7mTffvvtDQVI3/nOd9J3v/vdfLzV1ltvnd91j3Eb\nlQ4ReP3bv/1bXtUHH3wwDyhf9KIX5WN/6tX/qaeeyp88/frXv86fwsXYrze96U0pjlVODzzw\nQLruuuvysRmxLJ6GPfvss2mXXXZJ++yzT3mzhr6vXr06H88WAWOM7Yqyx3i1KMdrX/vafFnW\nxSl/0nb99dfn66PdY12MjamV4oljOIXrk08+maLuUY84HyqdyvtGfjHWLfKPJ5aveMUr8rFs\nMfYknor9yZ/8Scq6tJU3z7/HORjtEIHOC1/4wrTXXnvlTrXyr9rxuQ8TPdfjyej555+fwqQ8\nhqZZhrXyrlX28rJ4uhLnQZwr//3f/50/Zdl+++3TgQcemKI9yymekl544YX508V4SvTlL385\nb5eDDz44f4oa5374R5tm3WvzNq51/kado02y7nG5dzn/8vcnnngiXXXVVfkNifi9Gi3FeMUI\njsYKkGL8Y9TrD//wD2ue0zF2LMYzlsdIxvjI+D2JsVq1UjwBz7qkpnjqGufkDjvskN75znem\njTfeON88zvtadY7xeuXUyO9mbFvPO87RKE+M+4rxWDHGM9zjxlQ81ZYIECBAgMAIgexiSZqA\nQPYEJO/bn008MIG9f7/L448/Xsr+887zueaaa8aVT3kMUow/ygKkPI8YE5NdPFblU28MUnaB\nVbX9RD+UxyBlF9tjZnHSSSflZT322GOHtqs1BinGJ2QXlPm22UlbyrpDDf2c3X0v3X///UP7\nZxeAQ+ti2/jKJq8YWj/aD9mg/1L2BC3fPtqhPL4oxmD80z/909Bu5bYu513+fuKJJw5tU+uH\nWmOQsgvN/HjZpBmlbHKNEeXOLjpLsc0b3vCGEeve+973Vh1m3bp1pSxAHhqvlj11HDqfoozZ\n5B6lZ555pmqfFStWlKKNynWIMW7x88te9rJSdgGb//ztb397aJ8sECxlXTyH8i2PjYt9sq5i\npRiz00ia6Llea5xQswxr5T3aGKQs+CzF7/pwt/g8e/bs0te+9rUhhkWLFuXbHXLIIVXWm2yy\nSf77OXwM0mjnb/l3KruIH8q78odPf/rT+XHiHBgrxXmSBc35tt///vdrbhptHHWJc3Z4ym4I\nlLIAMF8fvycx7jG2zbrhlb761a8O37yUBVqlbCKWoe3L51j2tLv0jW98I99+tDqXM2v0dzO2\nr+edTQJRijFs5bar/Fvyrne9q5QFWOXD+k6AAAECBHKBeCohTUCgfNE8mQApDlsObuI/7+yJ\nRCl7YlSKC9S4eBsrVQZI2R3RfGKHyOPUU0+t2q1egJR1qyn97ne/G/OrKsNRPpQv5sYKkLI7\nwqXsjnN+oZKNfRrKqVaAFBcuUZ+YTCKCwOzufSkby1Q67LDD8uXZnfl8WWQSwVR2Nzpfnt2V\nL2Vd4UrZbGRD+df6IXsSUsqe3JWy8RmlbKa5UpQtzOPCrHxxl90xz3eNoCLyjMkqokzZE4H8\n89NPP10r66FlYwVIcZEWx8/GspUefvjh0uWXX17Knszk+W+22Wb5xXj2pCFvl4svvrgUF5lx\ncZp1yRzKPya7iPLEhBHxc9QhLvC/8pWvDOX1hS98YWj7+CEbr5bvk40zKWVjzvIL9ptuuinP\nI/KKr8oA6W//9m/zZRFsZbMeluJiO8qbdcPKl49nUoyJnOu1gphygDRZw1p5jxYgZU/M8vpm\nM0GWfvWrX+VuEThks8Ply6PNsvGAuXX5gj3OrQgishnh8kC2PNnK8ABptPM3bnZsuummebtn\nY/byvCv/ybqr5kF9TK5QL5UnmhkeZMd+ESBstNFGeeCTPZWqyiraOutenAfh55xzTh68x/Y3\n3HBDKeoc50tl0BVlid/xCKSzbsP572Z4ZOMY820jSIptRqtzHHw8v5uxfT3vuOkQ5Yy/jXFj\nJdope2pb2m677fLl8TsvESBAgACBSgEBUqXGOH5uVoAUh4w7wXEXunyBGt/jLm08KcnGH414\nKhT7VAZI8TnrYpVfSMVFY9YNJhblqV6AVHnM0X6uF6zFgcoBUszId/PNNw99xcV2XIBkg9KH\ngqOsu00pgo5yGh4gZd1vcou48I8nGMPTK1/5ynx9BCrllHUNy5cdcMAB5UVjft9vv/3y7csX\nrZUb33jjjfm6rJvd0EVvrI+LyzC64oorKjcf9eexAqTIJwKZylS+cI5zIesqWLkqfyIW+/zf\n//t/h5bH7HgRNEUANTxlU6bnZY2grpyyLnL5sjh3IuCsTFkXunxdHKMcIGXdyPInd3H3vVbA\nGUFqbB+/C42m8Z7rtYKYcoA0WcNaedcKkCIgimA2ZrYb/oQ2ntDFuihLOYgpX7DHsuz1ACNo\nyu1cOYvdaOdvNhV4nncEOJWpvH08xWskxfkUT0gjECoHcuX94pyKskbQPDyVA+rsNQTDV+Xt\nHvvFeVBO8WQ4lp122mnlRUPf46lurPvc5z6XLyvXYfjv7Hh/N+t5Z+Ow8r+vw9su/mZlXRNL\ncZNIIkCAAAEClQJmscv+x+50yrqdpexObYpZpKKffoz/iNnpsrucKQseUtbdKmVdlMYs5mte\n85p8TE92EZCyi5oU3xtJMYYixqCM9RUTRjSaYoxKvD+l/BVlz5765O9IirE82ROefCxDTOYw\nWooxPpHi/U4xA9fwFF6Rsicfw1c19DnGksR7m2Lijfe85z0j9olxEDG+KLvbnE+iMWKDJi2I\nMRyVKQv88o8xvmP4GKDyWI/K8yDr3pSPp4iZyipT9gs+9C6oLJgYWhXjiCJlgV4a3qYxpmj4\neKoYIxLnUQzyj8H+w9Pb3va2fNF42qEZ53plOSZrWJnXaD/vtNNOuXN2QZ9iYofKFD7Zk4h8\nUaV1eZsYdzSZlD1JzXePvw2VKdo+UhYAVy4e9ec4n2LMWxZMpOzpT9V25Rk5a03OkAW/+Ti2\neI/S8BS/JxtssEH+TrAYLxTpZz/7Wf49e61A/r3yn5gxM/4GxLuZRkuT/d2s5R2/y1kwnN7x\njnfk4zmzp6D54WOsXdblL/+bO1p5LCdAgACBYgpU/29fTIOW1TomWIgproen7KlFysYjVC1+\nwQtekOJCt3yxG4PAr7766nTGGWfkA/AjgInB+MMvbCsziW1jEHkMpP7EJz6R/v7v/75ydc2f\nY5KH0Qb/19yhzsIYhJ2NvajaasGCBfmkB3/wB3+Qsi5zVetqfYggK1JsXytld/LzxfWmLa61\nbyzL7vTnA7sj/5iFsFaKY8SLdOMYMXC92SkG4A8/B2JZpOHBUSzLnirFt3yijvyH5/7Jnl7k\ng+Fj4H958oCYECEuhCPFBWc5xQV+pPIFfXl5+XsMpI+B9eUUMyxGivMw60ZVXjz0vRwQlLcb\nWlHnh2ac63GIZhnWKW6+OntSl0/MkT1tSeEb50X2Xqf8e/mCu9I6doqgsjzbZSPHqLVNnHvx\nguUIbmOq7piwISaXyMY85fnHC6AbTTFZQ/x9iGArgoNIMdFDTNaxzTbb5DdiKvOKoCcmWIjJ\nVSonT6jcpnwjJs6BbBxbPqlEtG/2pKpys/zneEH08JdED99oMr+bo3nH38IInLJurPlXlC2C\nxTCI5eXfreFl8ZkAAQIEiisgQGph22ddlfJZwYYfIoKSuDiOp0bxRCDepTQ8xcVqBFhx1zMu\nkOLC4Uc/+lE+89Lwbcuf4z/6rNtW/pQm3rMynounch6T/R4zqMW05JNJ5acktZ5aRL7ld7SU\n71qP91j18m/GMeqVaawLxbGC4Mp8471ZcYFXfjIUF7Jx3sRTlQhUsy5+lZun8jTloz29G36h\nGPlHiu1rlSkuhOPJUzxFqJeafa7H8ZphWK/c5fVxU+PDH/5w/iSpfOx4MhFP0WJ2tHJQX94+\nvtcKEirXN/pzPEWKNo7AJgKkrAto/nfjL/7iL2o+YR0t3wgI4ryIpyYR3MYT1Ai0IsiJJ0QR\nBFamcvvHTYRa7R/bxmxwkeIJTfxeZV1nh2aqy1eM85/J/G6O5h0z1UVwmY01zJ9eRzAX9Y6v\nrBttfgMg3t8mESBAgACBskDjfafKe/jesEA2/iefyja6KlV+bb755nke0Q0t/mOO/7xHS/E0\noRzo1LqLP3y/eEITL7aNi57xdLUbnk8nP0eQFSleXFsrRTedSPFkaiKpXv6R52SPMZFyjXef\nbExHfuEc055Hd8xs0oj8KVJ0v4oL6UjR3a6cyi+1reda3j6eKkSKro5xgT7a1/DuX/lOw/5p\nxbk+7BAt+xg3OuJ3KgKIuMiOF5zGE7owz8Z6DT2lq7RuZmEOP/zwPBCKJyBxjPJLo+P3ezwp\nG5+YdyeLKerjSVikePdRBNblrnyV+UW3zqhzBMijtX15eXSdjZs+sW02jqvqvCvnGd2GI0gf\ny6lVv5sxDXs2jiqfnj3aL/42x42p6EZbnj6+XE7fCRAgQICAAKmF50B0i8sGII/4im5Rkcr9\n5ctjAEYrSrkrWTxJaiTF06PoRhXv/Dj77LMb2aWrtil3rYt3+9RK8Q6VSDFWZyIpmxksfwoV\nQVA8mRuesoH3Q0FrPCXoxhRdo2KsVjz1iXfhZAPbq7oKRXe7SJXdvuJpT6QYVzI8ZbOK5flV\nLi+3Q7zLplaK9+JE8BRd8OqlVp3r9Y7bjPVRv7iojye6MX6rfBEfecc7eOKCO1Kldb6gSf/E\nk9TothrBRdwkiW5y0Tbx92W8qTyWKJs4JR9fF2OGortZrZdFx9+pCJLiSW25e2bl8SLgibFG\nf/d3f5cHjPGUKf7uxPLo5js8ZRNWpLg5FOMsR0vN/t2M96LFk7+PfvSjQ4eM9otyx02r+P2p\n7JI6tJEfCBAgQKDQAgKkDjZ/DH6PO7TRfSe6y8Sd3coUYw3i4iPuVMfTkvIg/sptav0c/+nH\niyrjguW+++6rtUlXL4s7utFtK56E/PCHP6wqawQ0n/3sZ/O6VQ5QL0/mEIFDIymeCMQFbTaN\n9YgJLeKpQDwh2H///ateGNtIvu3aJi5CI8UFernrXPnYcTGbTe89tL68PLziQjibhW/oCUKs\ni7yy9+DkF8LlbeN7nJ/ZVM55l6wIhipTPCWIi+14ohLdq+qlVp3r9Y7bjPVl6+G/SxE0ZbO2\nDQVG0RYTTfXO3/ITnpjkIptRsOHJGYaXJ7rExWQc8VQsuuNGqjVRSXm/eAl1pPh9Gd7OMcYx\ne19Y+td//deh7o4RQEaKgCT+fpVTjNPKpvrOP5aD5dHq3MzfzegGmk1PnrJZAPPJJMrlie/R\nnS/+5saLj0frnle5vZ8JECBAoDgCxiB1sK3jiVB0dYmAIJuyOg9qYlB2fMWYjWx64fxCPS5S\nsxfJ5l1hGi1u9LvP3tkydFEy2n7xBCDujI+VIoiLSSPalWJgezYddH7xGV13IniM7jAxSUVc\nkMXTjrgbHevKKboiRkAYd66jO1dcBJ5++unl1SO+n3zyyXmgEE8HYttyN6Zs6t/8znJ0fYwL\nv25NUd94ghABZHTBjLFqsex73/tePhA97sSHU3kcSdQjuj+df/75KbrmRcASAXc8IYg8IrCM\n4CnuuJfHm8QYlbi4POKII/KJPCLAin3i6VQ8tcren5WyaabzcTj1nFp5rtc79mTXh1W4ZdOp\n5zYxM2MES9m7p/LZEOOJREzGUmk93mPWO3/jnI4L+WiraJ/JdAuLyRpiMo5suu0U50k21fWo\nxY1gJcbqxJOr+J2Ibn1xXkTdY/bCGJ8UQXL8jYgUv6txcybWR3ffGKMVAV3Yxc2NOFacf5FG\nq3MzfzejrO9///tTPFWPiSZifF6UK56cxZPUCHLj76REgAABAgSqBLL/IKQJCMS7XzLI/IWe\nE9i9apesK1wpG0cy9HLPyDe+souXUjbDXP5Cz6odsg/D34M0fH18zu74lrJpvPO8si4lVZtk\nFwn58vKxxvqeXZBV7VvrQ/k9SNlFe63VYy4b/h6k8sbxPqWsK9FQOeMdT1kwU8rGvJQ3qfoe\nL7KMF3NGXbIxB1Xran3IBqqX4tjZneyhY2RdgErZxWcpm71rxC7NfA9SvBR2eMq6/OTlqPU+\nmnjZaNQrCxCHdouXXsY7ZCrbLnvyVvo//+f/5O/rybo71XzJaLx4N164G0bZk8n8XTDxEtis\nq1We149//OOhY8QP2UV5KQtQ87zKx8pmkCvFO3riJcXjSeM91+McjmNmF9NDh4l2i2WTNayV\nd633IMWBsyCglHV1G7KO34n9sndpxTuS4nyM8mTBQ17G7Olj/jkb8zVU5sofar0HKdbXO3/L\n50B2oV+Z3bh/Dr94YWuUObs5Unf/eGdZ9uRqaJ/YL77i5bnZ0+0R+4drvBS4/H6o2DZ+d7NA\nJX/RbOUOo9V5PL+b9bzj5cbZzZKhF0CXy5/dHChdeumllcXxMwECBAgQyAUG4t/sPwypSwTi\nrn+MOYq7+XGHVUr5HegY5xHdg8pTYY/mEqfzQw89lE+vXO7CM9q25eXR1S6eTsVd8JgFrtdS\nPLmIJxoxviOeMoyWoptT+elQrW3iiVRMFx7WleNsytvG2Kw4N7OL6xSD3uOJ1GRSr53r0YUu\nnhRFt6w4F8tjCSdjMHzfsc7feCIa3T9jkoZ44tnuFGWL8yyeNm6TTeARM+KNleL3KmaMC7cY\nMzXa7+NYdW7m72ZMXBMTlETXunj/m251Y7WedQQIECi2gACp2O2v9gUSiO6D0b0qxrNEF8bK\nFOOW9t5773wsSYwvKneZqtzGz50TiEAhLupjpsK4ATDZ4LRzNXFkAgQIECDQ/QLGIHV/Gykh\ngaYI7LnnnimeAsXYk3j/y4EHHpjP5heTgMSA+xhUH+M/BEdN4W5KJjFjXUwSEdNxxxiej3/8\n44KjpsjKhAABAgQIjC7gCdLoNtYQ6DuB6J51zDHHjJiRLCr6iU98Ip1yyil9V+derlBMzlCe\nZj0mJYmpqWNiBIkAAQIECBBonYAAqXW2cibQlQLZBBT5DH4x1iheEhoz08X4o5gtUeougZhp\nLYKimEEuZtPLJiHprgIqDQECBAgQ6EMBAVIfNqoqESBAgAABAgQIECAwMQEvip2Ym70IECBA\ngAABAgQIEOhDAQFSHzaqKhEgQIAAAQIECBAgMDEBAdLE3OxFgAABAgQIECBAgEAfCgiQ+rBR\nVYkAAQIECBAgQIAAgYkJCJAm5mYvAgQIECBAgAABAgT6UECA1IeNqkoECBAgQIAAAQIECExM\nQIA0MTd7ESBAgAABAgQIECDQhwICpD5sVFUiQIAAAQIECBAgQGBiAgKkibnZiwABAgQIECBA\ngACBPhQY7MM6Nb1KS5YsSatXr256vt2a4ZQpU9K0adPSypUru7WIPV+umTNnpqlTp6Zly5b1\nfF26tQKDg4MpzuVVq1Z1axF7vlyzZs1KAwMDafny5T1fl26tQPwtLpVKac2aNd1axJ4v15w5\nc9K6devSs88+2/N16dYKTJ8+Pa1duzb/6tYy9nq54jwO4xUrVvR6VVpa/rj22mCDDeoeQ4BU\nlyjl/zEVKUCKP2RxAhWpzg2cBk3dZO7cuWnGjBnpqaeeamq+MnteoBwgOY+fN2n2T+uvv34e\nIMVNJKk1AvH3OJLzuDW+kWvcsIoA9Omnn27dQQqec9xMCWPncWtOhLgZGMYRHDEe2zhuhjSS\ndLFrRMk2BAgQIECAAAECBAgUQkCAVIhmVkkCBAgQIECAAAECBBoRECA1omQbAgQIECBAgAAB\nAgQKISBAKkQzqyQBAgQIECBAgAABAo0ICJAaUbINAQIECBAgQIAAAQKFEBAgFaKZVZIAAQIE\nCBAgQIAAgUYEBEiNKNmGAAECBAgQIECAAIFCCAiQCtHMKkmAAAECBAgQIECAQCMCAqRGlGxD\ngAABAgQIECBAgEAhBARIhWhmlSRAgAABAgQIECBAoBEBAVIjSrYhQIAAAQIECBAgQKAQAgKk\nQjSzShIgQIAAAQIECBAg0IiAAKkRJdsQIECAAAECBAgQIFAIAQFSIZpZJQkQIECAAAECBAgQ\naERAgNSIkm0IECBAgAABAgQIECiEgACpEM2skgQIECBAgAABAgQINCIgQGpEyTYECBAgQIAA\nAQIECBRCQIBUiGZWSQIECBAgQIAAAQIEGhEQIDWiZBsCBAgQIECAAAECBAohIEAqRDOrJAEC\nBAgQIECAAAECjQgIkBpRsg0BAgQIECBAgAABAoUQECAVoplVkgABAgQIECBAgACBRgQESI0o\n2YYAAQIECBAgQIAAgUIICJAK0cwqSYAAAQIECBAgQIBAIwICpEaUbEOAAAECBAgQIECAQCEE\nBEiFaGaVJECAAAECBAgQIECgEQEBUiNKtiFAgAABAgQIECBAoBACAqRCNLNKEiBAgAABAgQI\nECDQiMBgIxt1wzbr1q1Lv/zlL9Odd96ZNtlkk/S6170uzZgxo6poDzzwQLrtttvShhtumPbZ\nZ5+03nrrjWt91cY+ECBAgEDbBJYvX56uu+66dM8996Qtt9wyHXTQQWnevHltO74DESBAgACB\nssBAKUvlD936/cknn0zHHHNMHhDtuuuu6Qc/+EEe/Jx33nlD/4FefPHF6fzzz0+vfe1r08MP\nP5xWrlyZPv/5z6cNNtggr1a99WPVfdGiRWnVqlVjbdJX66ZPn55mzZqVlixZ0lf16qbKRBAf\nAf4jjzzSTcXqq7LEOTw4OJiWLl3aV/XqpsosWLAgDQwMpMcff3xSxfqf//mfdOihh+Z/c+K/\npClTpqSZM2emhQsXpvibX+Q0Z86cFCYRQEqtEdh0003TmjVrUlxrSK0RiJsdcV0WX1LzBeJv\nZjw8WLFiRVq8eHHzD9BHOU6dOjVtvPHGdWvUE13s/vVf/zVtvvnm6fLLL0+nnHJKuuKKK9JT\nTz2Vf44axpOjCy+8MJ1zzjnptNNOS+eee25+8RnbN7I+38g/BAgQINB2gbj4P/roo1P5RtTq\n1avzi6inn346HXnkkS6o2t4iDkiAAAECPREgzZ49O73zne8caq24M7zjjjvmT4pi4R133JEH\nULvttlu+Tdw1fuMb35huuumm/HO99flG/iFAgACBtgv86le/Svfdd1+KbtSVKQKneIod3aYl\nAgQIECDQToGeGINUGRwFzu9+97v0s5/9LB1//PG5VXRT2mKLLarc4olTPC6P/3TrrY9Hk+X0\ni1/8Il100UXlj/n3d7/73enFL35x1bJ+/hAe8Qhy/fXX7+dqdrRuEcRHYty6ZohzOLp/xXep\nNQLxtyKMJ3MeR5eQadOm1XxSFL8nsX4y+bem5u3LNQwiWIyuz1LrBPyf1zrbyDl+x+Ncjhvc\nUusEwrnIfy8bkV27dm0jm6WeCJAqaxJjgf7+7/8+bb311unNb35zvurRRx8dGotU3nbu3Ll5\ncBR3IOutL49Tin1j229961vlbPLv0Te+iL/U5Yv4KgwfmipQxPOqqYANZBb/YUitFZjMebzn\nnnuOOsYzgqNYP5n8W1tzufeLQAT6zrPWtqZritb6Ru4R6DuPx3ZudE6BngqQok/6ySefnOL7\nWWedld+RCIa4AIoBlpWp/Dm659VbX7nfq1/96nTzzTdXLsrvekx2EHJVhl3+IbxigLTB7a1r\nqLjDE3eEi3RetU6zds5xDsd/FsuWLau9gaWTFojJRuIp0mQGt8dF0xFHHJGuvPLKFOOPyin+\nDu23334pBtAX+fckLnbiCVIEi1JrBGKykbhmMLi9Nb6Ra8wqHBemjV6ctq4k/ZlzBPhxHsck\nGCbYGruN4/+s+fPnj71RtrZnAqT4D/h973tfihl9vvjFL6YXvOAFQ5WLikYf9soUQVQ8GYqZ\nwuqtr9wv/jOKKWYrU3nwcOWyfv45LirjP+RGH0P2s0Wr6ha+kRi3SjjlT5DjDyHj1hlHzs34\nW3HGGWfkf9svyro3R5AUf4Piyf0nPvGJwrdf+DbDuLVnQX/k7m9F69oxzuEY8sC4Ncbxf10k\nfyua5/v84Jvm5dn0nB577LF03HHHpRe+8IX51N2VwVEcbNttt02/+c1vqp4i3XXXXUPjkuqt\nb3qBZUiAAAECDQvE06JTTz01/dd//Vc+KUN8/9znPqerSMOCNiRAgACBZgr0RIB05pln5ncd\nDjvssDwQ+vnPf57i6957780t3vCGN+TfL7300vwORbxoMF44GFPERqq3Pt/IPwQIECDQUYHo\nFrnNNtuk6BotESBAgACBTgl0fRe7eOlrvBg20t/8zd9UOe29997ps5/9bN6N7vTTT8/vQEaQ\nFN3k3vKWt6R99tkn3z662Y21vipTHwgQIECAAAECBAgQKKxA1wdIMV339773vboNtPvuu6dr\nrrkmRXe8GKhW7o9Z3rHe+vJ2vhMgQIAAAQIECBAgUFyBrg+Qxts0m2yyyZi71Fs/5s5WEiBA\ngAABAgQIECDQ1wI9MQapr1tA5QgQIECAAAECBAgQ6BoBAVLXNIWCECBAgAABAgQIECDQaQEB\nUqdbwPEJECBAgAABAgQIEOgaAQFS1zSFghAgQIAAAQIECBAg0GkBAVKnW8DxCRAgQIAAAQIE\nCBDoGgEBUtc0hYIQIECAAAECBAgQINBpAQFSp1vA8QkQIECAAAECBAgQ6BoBAVLXNIWCECBA\ngAABAgQIECDQaQEBUqdbwPEJECBAgAABAgQIEOgaAQFS1zSFghAgQIAAAQIECBAg0GkBAVKn\nW8DxCRAgQIAAAQIECBDoGgEBUtc0hYIQIECAAAECBAgQINBpAQFSp1vA8QkQIECAAAECBAgQ\n6BoBAVLXNIWCECBAgAABAgQIECDQaQEBUqdbwPEJECBAgAABAgQIEOgaAQFS1zSFghAgQIAA\nAQIECBAg0GkBAVKnW8DxCRAgQIAAAQIECBDoGgEBUtc0hYIQIECAAAECBAgQINBpAQFSp1vA\n8QkQIECAAAECBAgQ6BoBAVLXNIWCECBAgAABAgQIECDQaQEBUqdbwPEJECBAgAABAgQIEOga\nAQFS1zSFghAgQIAAAQIECBAg0GkBAVKnW8DxCRAgQIAAAQIECBDoGgEBUtc0hYIQIECAAAEC\nBAgQINBpAQFSp1vA8QkQIECAAAECBAgQ6BoBAVLXNIWCECBAgAABAgQIECDQaQEBUqdbwPEJ\nECBAgAABAgQIEOgaAQFS1zSFghAgQIAAAQIECBAg0GkBAVKnW8DxCRAgQIAAAQIECBDoGoHB\nrimJghAg0PUCDz74YLriiivSb3/72/TiF784HX744Wn+/PldX24FJECAAAECBAg0KiBAalTK\ndgQKLnDrrbemo48+OldYtWpVmj59ejrnnHPSlVdemXbbbbeC66g+AQIECBAg0C8Cutj1S0uq\nB4EWCixbtiwde+yxKQKj+IoU35cvX57e/e53p7Vr17bw6LImQIAAAQIECLRPQIDUPmtHItCz\nAv/xH/8xFBhVVqJUKqXHH388/fKXv6xc7GcCBAgQIECAQM8KCJB6tukUnED7BJ555pk0ZUrt\nPxdTp05NTz/9dPsK40gECBAgQIAAgRYK1L7iaeEBZU2AQO8J7LrrrmnlypU1Cx7d61760pfW\nXGchAQIECBAgQKDXBARIvdZiykugAwLbbbddOuyww9K0adOqjh6fTzjhhLThhhtWLfeBAAEC\nBAgQINCrAmax69WWU24CbRY488wz0xZbbJHOP//8tHTp0rTBBhuk973vfek973lPm0vicAQI\nECBAgACB1gkIkFpnK2cCfSUQY41OOumk/GvFihVp5syZfVU/lSFAgAABAgQIhIAuds4DAgTG\nLSA4GjeZHQgQIECAAIEeERAg9UhDKSYBAgQIECBAgAABAq0XECC13tgRCBAgQIAAAQIECBDo\nEQEBUo80lGISIECAAAECBAgQINB6AQFS640dgQABAgQIECBAgACBHhEQIPVIQykmAQIECBAg\nQIAAAQKtFxAgtd7YEQgQIECAAAECBAgQ6BEBAVKPNJRiEiBAgAABAgQIECDQegEBUuuNHYEA\nAQIECBCYhMDy5cvTvffem+K7RIAAgVYLCJBaLSx/AgQIECBAYEICK1euTCeffHL6gz/4g7Tv\nvvvm3z/0oQ+lWC4RIECgVQKDrcpYvgQIECBAgACByQi8733vS9ddd11au3Ztnk18X7hwYXrq\nqafSeeedN5ms7UuAAIFRBTxBGpXGCgIECBAgQKBTAvfdd1+69tpr0+rVq6uKEJ+/8Y1vpHvu\nuadquQ8ECBBoloAAqVmS8iFAgAABAgSaJvCf//mfaebMmTXzi+WxXiJAgEArBARIrVCVJwEC\nBAgQIDApgfnz5494elTOcM2aNWmjjTYqf/SdAAECTRUQIDWVU2YECBAgQIBAMwRe9rKXpc02\n2yxNmVJ9qTIwMJA23njjtOeeezbjMPIgQIDACIHqvzojVltAgAABAgQIEGi/wNSpU9NXv/rV\ntMEGG6QZM2akadOm5d/jcywfHDTPVPtbxREJFEPAX5ditLNaEiBAgACBnhPYcccd0+23356+\n+c1vpvvvvz9ttdVW6aCDDkpz5szpubooMAECvSMgQOqdtlJSAgQIECBQOIHZs2ent771rYWr\n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\ndGnN5RYSIECAAAECBAgUQ0CAVIx2VssKgT322CMfe1SxaOjHHXfccehnPxAgQIAAAQIECBRP\nQIBUvDYvfI2POuqoNGfOnDRlSvXpH58/8pGPFN4HAAECBAgQIECgyALVV4hFllD3wghsuOGG\n6Zvf/GaKJ0nltPnmm6eLLroovepVryov8p0AAQIECBAgQKCAAqb5LmCjq3JK2267bbr22mtT\njDlasWJFWrBgARYCBAgQIECAAAECSYDkJCi0wNy5c1N8SQQIECBAgAABAgRCQBc75wEBAgQI\nECBAgAABAgSeExAgORUIECBAgAABAgQIECDwnIAAyalAgAABAgQIECBAgACB5wQESE4FAgQI\nECBAgAABAgQIPCcgQHIqECBAgAABAgQIECBA4DkBAZJTgQABAgQIECBAgAABAs8JCJCcCgQI\nECBAgAABAgQIEHhOQIDkVCBAgAABAgQIECBAgMBzAgIkpwIBAgQIECBAgAABAgSeExAgORUI\nECBAgAABAgQIECDwnIAAyalAgAABAgQIECBAgACB5wQESE4FAgQIECBAgAABAgQIPCcgQHIq\nECBAgAABAgQIECBA4DmBnguQHnrooXTllVfWbMAHHnggLVy4MP3bv/1beuaZZ0ZsU2/9iB0s\nIECAAAECBAgQIECgUAI9FSBF0PPhD3843XjjjSMa6eKLL05HHnlk+vWvf52uuOKK9N73vjct\nXrx4aLt664c29AMBAgQIECBAgAABAoUV6JkA6fbbb09HHXVUevjhh0c0VjwZuvDCC9M555yT\nTjvttHTuueemGTNmpMsvvzzftt76ERlaQIAAAQIECBAgQIBAIQV6IkBaunRpOuWUU9KBBx6Y\njjjiiBENdccdd6TNN9887bbbbvm6wcHB9MY3vjHddNNN+ed660dkaAEBAgQIECBAgAABAoUU\nGOyFWs+aNSvvNrfRRhuliy66aESRH3nkkbTFFltULY+A6cknn0zr1q1L9dZPmfJ8nPj444+n\nn//851V57bDDDmnu3LlVy/r5QwSYU6dOzZ/C9XM9O1m38jkXTzql1ghMmzYthTPj1vhGrgMD\nA/kX49YZx9/jUqnkPG4dcZ5znMvO49YhxzVF/E2WWiMQ528k/+fV9y1b1duyJwKk+A8igqPR\n0qOPPprmzZtXtToCmgiOlixZkuqt32CDDYb2vfPOO9Nf/dVfDX2OH77yla+kfffdt2pZET74\n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\ncZPZgQABAgQIECDQOwIxlffVV1+dDjjggDRlyu8v/RYsWJDPYnfooYf2TkWUlECbBEzz3SZo\nhyFAgAABAgQIdEogpvI+//zz81nsnnnmGd3qOtUQjtsTAgKknmgmhSRAgAABAgQITF5gxowZ\nKb4kAgRGF9DFbnQbawgQIECAAAECBAgQKJiAAKlgDa66BAgQIECAAAECBAiMLiBAGt3GGgIE\nCBAgQIAAAQIECiYgQCpYg6suAQIECBAgQIAAAQKjCwiQRrexhgABAgQIECBAgACBggkIkArW\n4KpLgAABAgQIECBAgMDoAgKk0W2sIUCAAAECBAgQIECgYAICpII1uOoSIECAAAECBAgQIDC6\ngABpdBtrCBAgQIAAAQIECBAomIAAqWANrroECBAgQIAAAQIECIwuIEAa3cYaAgQIECBAgAAB\nAgQKJiBAKliDqy4BAgQIECBAgAABAqMLCJBGt7GGAAECBAgQIECAAIGCCQiQCtbgqkuAAAEC\nBAgQIECAwOgCAqTRbawhQIAAAQIECBAgQKBgAgKkgjW46hIgQIAAAQIECBAgMLqAAGl0G2sI\nECBAgAABAgQIECiYgACpYA2uugQIECBAgAABAgQIjC4gQBrdxhoCBAgQIECAAAECBAomIEAq\nWIOrLgECBAgQIECAAAECowsIkEa3sYYAAQIECBAgQIAAgYIJCJAK1uCqS4AAAQIECBAgQIDA\n6ALjDpA+/elPp6OPPjrdcsstqVQqjZ6zNQQIECBAgAABAgQIEOgxgXEHSFtuuWW65ppr0v77\n759e9KIXpY9//OPpnnvu6bFqKy4BAgQIECBAgAABAgRGCow7QPqzP/uz9Oijj6aFCxemP/zD\nP0yf/OQn03bbbZde85rXpK985Stp6dKlI49iCQECBAgQIECAAAECBHpAYNwBUtRp5syZ6W1v\ne1v61re+lR588MF05plnptWrV6djjjkmbbrppumd73ynLng90PiKSIAAAQIECBAgQIBAtcCE\nAqTKLDbZZJN04oknpgsuuCCdcMIJaeXKleniiy/Ou+DtuOOO6eqrr67c3M8ECBAgQIAAAQIE\nCBDoWoFJBUgPPPBA+tSnPpVe+tKXpp122imdd9556ZBDDsmfLN1www1pm222SYceemi66KKL\nuhZAwQgQIECAAAECBAgQIFAWGCz/0Oj3JUuWpCuvvDJdcskl6bvf/W4+k93uu++ePv/5z6cY\nn7TRRhsNZXXAAQekeIoUY5Ni5juJAAECBAgQIECAAAEC3Sww7gDpc5/7XDrttNPS/Pnz01//\n9V+nd73rXWnXXXetWccpU6akzTbbLEU3PIkAAQIECBAgQIAAAQLdLjDuAGmPPfZIV111VTro\noIPS9OnT69bv1ltvTQMDA3W3swEBAgQIECBAgAABAgQ6LTDuAOnggw8eV5kFR+PisjEBAgQI\nECBAgAABAh0UmNQkDR0st0MTIECAAAECBAgQIECg6QICpKaTypAAAQIECBAgQIAAgV4VECD1\nasspNwECBAgQIECAAAECTRcQIDWdVIYECBAgQIAAAQIECPSqgACpV1tOuQkQIECAAAECBAgQ\naLqAAKnppDIkQIAAAQIECBAgQKBXBQRIvdpyyk2AAAECBAgQIECAQNMFBEhNJ5UhAQIECBAg\nQIAAAQK9KiBA6tWWU24CBAgQIECAAAECBJouIEBqOqkMCRAgQIAAAQIECBDoVQEBUq+2nHIT\nIECAAAECBAgQINB0AQFS00llSIAAAQIECBAgQIBArwoIkHq15ZSbAAECBAgQIECAAIGmCww2\nPUcZEiBAgAABAj0v8MMf/jBdddVV6cknn0x77LFHOvLII9MLXvCCnq+XChAgQKCegACpnpD1\nBAgQIECgYAJnnXVW+uxnP5sGBgbSunXr0i233JK+/OUvp+uuuy5tueWWBdNQXQIEiiagi13R\nWlx9CRAgQIDAGAK/+tWv8uCoVCrlwVFsumrVqrR48eL0/ve/f4w9rSJAgEB/CAiQ+qMd1YIA\nAQIECDRF4Prrr0/Tpk0bkdfatWvT97///bR8+fIR6ywgQIBAPwkIkPqpNdWFAAECBAhMUiAC\noAiGaqV4qrRy5cpaqywjQIBA3wgIkPqmKVWEAAECBAhMXmCvvfZKU6bUvjyI8UcbbLDB5A8i\nBwIECHSxQO2/gF1cYEUjQIAAAQIEWifwxje+Me26664jutlF0HTGGWe07sByJkCAQJcICJC6\npCEUgwABAgQIdINABEILFy5MRx99dD6t99SpU9NOO+2ULrvssvT617++G4qoDAQIEGipgGm+\nW8orcwIECBAg0HsCs2fPTqeeemr+1XulV2ICBAhMTqBQAdIDDzyQbrvttrThhhumffbZJ623\n3nqT07M3AQIECBAgQIAAAQJ9JVCYLnYXX3xx/hbwX//61+mKK65I733ve/N3OvRVa6oMAQIE\n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\nZgQIECBAgAABAgQIjFNAgDROMJsTIECAAAECBAgQINC/AgKk/m1bNSNAgAABAgQIECBAYJwC\nAqRxgtmcAAECBAgQIECAAIH+FRAg9W/bqhkBAgQIECBAgAABAuMUECCNE8zmBAgQIECAAAEC\nBAj0r4AAqX/bVs0IECBAgAABAgQIEBingABpnGA2J0CAAAECBAgQIECgfwUG+7dqakaAAAEC\nBAgQIECgvsDSpUvTRRddlL7//e+nuXPnpje/+c3pj//4j+vvaIu+FBAg9WWzqhQBAgQIECBA\ngEAjAo8//ng68MAD06JFi9KqVavyXW644YZ06KGHprPPPruRLGzTZwK62PVZg6oOAQIECBAg\nQIBA4wIf+9jH0hNPPDEUHMWea9euTVdddVX69re/3XhGtuwbAQFS3zSlihAgQIAAAQIECIxX\n4MYbb0xr1qwZsdu6devSddddN2K5Bf0vIEDq/zZWQwIECBAgQIAAgRoCpVKpZnAUm8a6FStW\n1NjLon4XECD1ewurHwECBAgQIECAQE2BgYGB9LKXvSzF9+Fp+vTpad999x2+2OcCCAiQCtDI\nqkiAAAECBAgQIFBb4PTTT0+Dg4NpypTnL4unTZuWtttuu3TYYYfV3snSvhZ4/kzo62qqHAEC\nBAgQIECAAIGRArvssks+1iieFs2ePTtttNFG6aijjkrXXnttiqdIUvEETPNdvDZXYwIECBAg\nQIAAgQqBnXbaKV1++eUVS/xYZAFPkIrc+upOgAABAgQIECBAgECVgACpisMHAgQIECBAgAAB\nAgSKLCBAKnLrqzsBAgQIECBAgAABAlUCAqQqDh8IECBAgAABAgQIECiygACpyK2v7gQIECBA\ngAABAgQIVAkIkKo4fCBAgAABAgQIECBAoMgCAqQit766EyBAgAABAgQIECBQJSBAquLwgQAB\nAgQIECBAgACBIgsIkIrc+upOgAABAgQIECBAgECVgACpisMHAgQIECBAgAABAgSKLCBAKnLr\nqzsBAgQIECBAgAABAlUCAqQqDh8IECBAgAABAgQIECiygACpyK2v7gQIECBAgAABAgQIVAkI\nkKo4fCBAgAABAgQIECBAoMgCAqQit766EyBAgAABAgQIECBQJSBAquLwgQABAgQIECBAgACB\nIgsIkIrc+upOgAABAgQIECBAgECVgACpisMHAgQIECBAgAABAgSKLCBAKnLrqzsBAgQIECBA\ngAABAlUCAqQqDh8IECBAgAABAgQIECiywGCRK98rdV++fHm68sor01133ZUWLFiQDjnkkLTd\ndtv1SvGVkwABAgQIECBAgEDPCAiQurypHnzwwXTwwQen3/3ud2nVqlVp+vTp6Zxzzklnn312\n+tM//dMuL73iESBAgAABAgQIEOgtAV3sury9TjjhhPTEE0/kwVEUNYKkdevWpRNPPDFF8CQR\nIECAAAECBAgQINA8AQFS8yybntOiRYvSHXfckdauXTsi72nTpqXrr79+xHILCBAgQIAAAQIE\nCBCYuIAAaeJ2Ld/zmWeeGfUY8RRp6dKlo663ggABAgQIECBAgACB8QsIkMZv1rY9ttxyyzR3\n7tyax4sAabfddqu5zkICBAgQIECAAAECBCYmIECamFtb9po6dWr62Mc+luJ7ZYrudREcve51\nr6tc7GcCBAgQIECAAAECBCYpIECaJGCrd3/729+ezjrrrLTxxhvnh4pZ7A477LB02WWXpYGB\ngVYfXv4ECBAgQIAAAQIECiVgmu8eaO6Yzju+li1blmbNmpWmTBHX9kCzKSIBAgQIECBAgEAP\nCgiQeqjR5syZ00OlVVQCBAgQIECAAAECvSfgUUTvtZkSEyBAgAABAgQIECDQIgEBUotgZUuA\nAAECBAgQIECAQO8JCJB6r82UmAABAgQIECBAgACBFgkIkFoEK1sCBAgQIECAAAECBHpPwCQN\nDbRZvIcoZo8rShocHEzxVaQ6t7tty++2Ytw6+XhfWNF+d1unWTvneNVAfDmPa/s0Y2mcx6VS\niXEzMMfIw3k8Bk4TVsU1RZzHZuFtAmaNLMqvffF/Xg2cYYviPGwkCZAaUIpf6CL9UscvWPyy\nxR80qTUC5T9mjFvjG7nGeRy/t4xbZxznsb8VrfONnOMcjv/QncetdXYet9Y3zuP4myy1RqB8\nTeE8ru+7bt26+htlW7gCboBp9erVadWqVQ1s2R+bxMto447w0qVL+6NCXViL8tMNxq1rnDiH\n46KSceuMZ86cmQdIjFtnHK93iABp+fLlrTtIwXMO47hoch637kSIC/eVK1fmX607SnFzjgA0\nzuM1a9Y4j+ucBhGoz5s3r85W2c2pulvYgAABAgQIECBAgAABAgURECAVpKFVkwABAgQIECBA\ngACB+gICpPpGtiBAgAABAgQIECBAoCACAqSCNLRqEiBAgAABAgQIECBQX0CAVN/IFgQIECBA\n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\nIECAAAECBAgQyF9AgpS/sRYIECBAgAABAgQIECiIgASpIAOlmwQIECBAgAABAgQI5C8gQcrf\nWAsECBAgQIAAAQIECBREQIJUkIHSTQIECBAgQIAAAQIE8heQIOVvrAUCBAgQIECAAAECBAoi\nIEEqyEDpJgECBAgQIECAAAEC+QtIkPI31gIBAgQIECBAgAABAgURkCAVZKB0kwABAgQIECBA\ngACB/AUkSPkba4EAAQIECBAgQIAAgYIISJAKMlC6SYAAAQIECBAgQIBA/gISpPyNtUCAAAEC\nBAgQIECAQEEEJEgFGSjdJECAAAECBAgQIEAgfwEJUv7GWiBAgAABAgQIECBAoCACEqSCDJRu\nEiBAgAABAgQIECCQv4AEKX9jLRAgQIAAAQIECBAgUBABCVJBBko3CRAgQIAAAQIECBDIX0CC\nlL+xFggQIECAAAECBAgQKIiABKkgA6WbBAgQIECAAAECBAjkLyBByt9YCwQIECBAgAABAgQI\nFERAglSQgdJNAgQIECBAgAABAgTyF5Ag5W+sBQIECBAgQIAAAQIECiIgQSrIQOkmAQIECBAg\nQIAAAQL5C0iQ8jfWAgECBAgQIECAAAECBRHoLEg/dZMAAQIECFROYOPGjfHwww9H+vcd73hH\ntLf7XrNyk0DABAg0XcA7bdPJNUiAAAECBGoL/OlPf4rZs2fH4YcfHh/96Edj7ty58be//a32\njrYgQIAAgREJSJBGxGdnAgQIECDQeIF77703zj333FizZk1s3rw5enp6YvXq1XHqqafGY489\n1vgG1UiAAAECfQISpD4KTwgQIECAQGsI/PCHP8wSo617kxKlK6+8cuvVXhMgQIBAAwUkSA3E\nVBUBAgQIEGiEwH/+858hq+nu7o7ly5cPWWYlAQIECDRGQILUGEe1ECBAgACBhglMnz59yLra\n2tpi1qxZQ5ZZSYAAAQKNEZAgNcZRLQQIECBAoGECZ555ZnR0dAyqLyVIn/nMZwatt4IAAQIE\nGicgQWqcpZoIECBAgEBDBE4++eQ444wzIiVE48ePj3HjxmUJ00UXXRSHHnpoQ9pQCQECBAgM\nLeB3kIZ2sZYAAQIECIyqQEqGvvCFL2S39k7XHh122GExc+bMUe2TxosrsHjx4rjtttvitdde\ni4MOOihOOumkLPEubkR6TiA/AQlSfrZqJkCAAAECIxJ4+9vfHnPmzIm1a9eOqB47V1vgkksu\n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\nCBAgQIAAAQIECBRFQIJUlJHSTwIECBAgQIAAAQIEcheQIOVOrAECBAgQIECAAAECBIoiIEEq\nykjpJwECBAgQIECAAAECuQtIkHIn1gABAgQIECBAgAABAkURkCAVZaT0kwABAgQIECBAgACB\n3AUkSLkTa4AAAQIECBAgQIAAgaIISJCKMlL6SYAAAQIECBAgQIBA7gISpNyJNUCAAAECBAgQ\nIECAQFEEJEhFGSn9JECAAAECBAgQIEAgdwEJUu7EGiBAgAABAgQIECBAoCgCEqSijJR+EiBA\ngAABAgQIECCQu4AEKXdiDRAgQIAAAQIECBAgUBQBCVJRRko/CRAgQIAAAQIECBDIXUCClDux\nBggQIECAAAECBAgQKIqABKkoI6WfBAgQIECAAAECBAjkLiBByp1YAwQIECBAgAABAgQIFEVA\nglSUkdJPAgQIECBAgAABAgRyF5Ag5U6sAQIECBAgQIAAAQIEiiIgQSrKSOknAQIECBAgQIAA\nAQK5C0iQcifWAAECBAgQIECAAAECRRGQIBVlpPSTAAECBAgQIECAAIHcBTpzb6EEDbS3t0d6\nVGnZvHlz5WJu5viuXr06enp6oqurq5nNVqqt5Gse5zvkq1atyhro7PSnJC/pNI/To2p/g/Ly\nHKre5557Ltra2sI8HkqnMevSe3FazOPGeG5dS3qPePbZZzPfjo6OrYu97idQ7xxs60Xt6bef\npwQINEHg1FNPjQceeCAeeuihGDNmTBNa1ASBxgscccQR8frrr8eSJUsaX7kaCTRJYP/994+9\n9947/vjHPzapRc0QaKzASy+9FAcffHAcfvjh8Ytf/KKxlVe0tmodFqnoIAubAAECBAgQIECA\nAIH6BCRI9TnZigABAgQIECBAgACBCghIkCowyEIkQIAAAQIECBAgQKA+AVfW1udkKwINFTjl\nlFPigx/8YLiYsqGsKmuywFlnnRUbNmxocquaI9BYga9+9asxZcqUxlaqNgJNFNhpp53i61//\neuy1115NbLXcTblJQ7nHV3QECBAgQIAAAQIECOyAgFPsdgDLpgQIECBAgAABAgQIlFtAglTu\n8RUdAQIECBAgQIAAAQI7INDx7d5lB7a3e9weRgAACVBJREFUKQECOyiQfoTwjjvuiP3222/A\nnt3d3fGPf/wj7rnnnuw6jpkzZ+5Q+YCNvSDQZIGnn346br/99lixYkVMnz7d73k12V9z9Quk\n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\nTkSuQmCC", @@ -49,15 +50,15 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, + "execution_count": 3, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Updating HTML index of packages in '.Library'\n", - "Making 'packages.html' ... done\n", "\n", "Attaching package: ‘apcluster’\n", "\n", @@ -78,8 +79,10 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, + "execution_count": 4, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stdout", @@ -96,8 +99,10 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, + "execution_count": 5, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { diff --git a/find-similar-images.ipynb b/find-similar-images.ipynb index a702467..91ec0d2 100644 --- a/find-similar-images.ipynb +++ b/find-similar-images.ipynb @@ -8,159 +8,17 @@ "\n", "Douglas Duhaime wrote an [excellent tutorial](http://douglasduhaime.com/posts/identifying-similar-images-with-tensorflow.html). This notebook is my experiment trying to follow his steps, using a github repo and a jupyter binder.\n", "\n", - "I think it works...\n", + "The repo is at [github](https://github.com/shawngraham/bindr-test-Identifying-Similar-Images-with-TensorFlow). The various python bits and pieces are called from the `requirements.txt` file, which saves us from having to `!pip install`.\n", "\n", - "ok, so: I have a bunch of images in \\images (we're pulling from [this repo](https://github.com/shawngraham/bindr-test-Identifying-Similar-Images-with-TensorFlow)). In Duhaime's tutorial, he had a folder with 2000 images. I'm just going with 25 here because a) I'm impatient and b) I don't know how many I can push into github.\n", + "I have a bunch of images in \\images. In Duhaime's tutorial, he had a folder with 2000 images. I'm just going with 25 here because a) I'm impatient and b) I don't know how many I can push into github.\n", "\n", - "The code below all runs, but I'm not sure where the output is hiding...\n", - "\n", - "So. Install the needful things, run the modified classify script (which pulls out the second but last layer), and write it to the new `image_vectors` dir. Then cluster, then project." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: psutil in ./duhaime/lib/python3.6/site-packages (5.4.5)\r\n" - ] - } - ], - "source": [ - "!pip install psutil" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: numpy in ./duhaime/lib/python3.6/site-packages (1.14.3)\r\n" - ] - } - ], - "source": [ - "!pip install numpy" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: tensorflow in ./duhaime/lib/python3.6/site-packages (1.8.0)\n", - "Requirement already satisfied: grpcio>=1.8.6 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (1.11.0)\n", - "Requirement already satisfied: termcolor>=1.1.0 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (1.1.0)\n", - "Requirement already satisfied: astor>=0.6.0 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (0.6.2)\n", - "Requirement already satisfied: six>=1.10.0 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (1.11.0)\n", - "Requirement already satisfied: wheel>=0.26 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (0.31.0)\n", - "Requirement already satisfied: absl-py>=0.1.6 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (0.2.0)\n", - "Requirement already satisfied: tensorboard<1.9.0,>=1.8.0 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (1.8.0)\n", - "Requirement already satisfied: numpy>=1.13.3 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (1.14.3)\n", - "Requirement already satisfied: gast>=0.2.0 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (0.2.0)\n", - "Requirement already satisfied: protobuf>=3.4.0 in ./duhaime/lib/python3.6/site-packages (from tensorflow) (3.5.2.post1)\n", - "Requirement already satisfied: markdown>=2.6.8 in ./duhaime/lib/python3.6/site-packages (from tensorboard<1.9.0,>=1.8.0->tensorflow) (2.6.11)\n", - "Requirement already satisfied: html5lib==0.9999999 in ./duhaime/lib/python3.6/site-packages (from tensorboard<1.9.0,>=1.8.0->tensorflow) (0.9999999)\n", - "Requirement already satisfied: bleach==1.5.0 in ./duhaime/lib/python3.6/site-packages (from tensorboard<1.9.0,>=1.8.0->tensorflow) (1.5.0)\n", - "Requirement already satisfied: werkzeug>=0.11.10 in ./duhaime/lib/python3.6/site-packages (from tensorboard<1.9.0,>=1.8.0->tensorflow) (0.14.1)\n", - "Requirement already satisfied: setuptools in ./duhaime/lib/python3.6/site-packages (from protobuf>=3.4.0->tensorflow) (39.1.0)\n" - ] - } - ], - "source": [ - "!pip install tensorflow" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: annoy in ./duhaime/lib/python3.6/site-packages (1.11.5)\r\n" - ] - } - ], - "source": [ - "!pip install annoy" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: scipy in ./duhaime/lib/python3.6/site-packages (1.0.1)\r\n", - "Requirement already satisfied: numpy>=1.8.2 in ./duhaime/lib/python3.6/site-packages (from scipy) (1.14.3)\r\n" - ] - } - ], - "source": [ - "!pip install scipy" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: nltk in ./duhaime/lib/python3.6/site-packages (3.2.5)\n", - "Requirement already satisfied: six in ./duhaime/lib/python3.6/site-packages (from nltk) (1.11.0)\n" - ] - } - ], - "source": [ - "!pip install nltk" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: sklearn in ./duhaime/lib/python3.6/site-packages (0.0)\r\n", - "Requirement already satisfied: scikit-learn in ./duhaime/lib/python3.6/site-packages (from sklearn) (0.19.1)\r\n" - ] - } - ], - "source": [ - "!pip install sklearn" + "Run the modified classify script (which pulls out the second but last layer), and write it to the new `image_vectors` dir. Then cluster, then project. Then run the affinity propagation notebook, which is written in R." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "ok. that's the last of the stuff you need to install.\n", - "\n", - "---\n", "\n", "## Now Let's Identify Similar Images" ] @@ -168,7 +26,9 @@ { "cell_type": "code", "execution_count": 8, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stdout", @@ -597,13 +457,7 @@ "\n", "\n", "parsing 19 images/3969609.jpg \n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "\n", "results for images/3969609.jpg\n", "stretcher (score = 0.25366)\n", "\n", @@ -770,7 +624,9 @@ { "cell_type": "code", "execution_count": 11, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stdout", @@ -850,7 +706,9 @@ { "cell_type": "code", "execution_count": 12, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "thefile = open('image_tsne_projections.json', 'w')\n", @@ -867,7 +725,9 @@ "source": [ "Now go view your work by clicking on the 'jupyter' button above! Outputs, folders, etc, all visible there.\n", "\n", - "Before you can work with that json file though, you need to add a `[` and a `]` to the front and end of the file, and a `,` at the end of each line (except the last one). Easily done in Regex; doing it in the code chunk is a bit beyond me still." + "Before you can work with that json file though, you need to add a `[` and a `]` to the front and end of the file, and a `,` at the end of each line (except the last one). Easily done in Regex; doing it in the code chunk is a bit beyond me still.\n", + "\n", + "If you don't do this, the import json in the affinity propagation notebook will throw and error." ] } ], @@ -887,7 +747,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.6.5" } }, "nbformat": 4,