diff options
| author | bicker <bickerkards@gmail.com> | 2017-07-14 01:23:11 +0200 |
|---|---|---|
| committer | bicker <bickerkards@gmail.com> | 2017-07-14 01:23:11 +0200 |
| commit | 092af5e8fefe1dc0f7e5d02bb3050d05e22dd475 (patch) | |
| tree | ada870c384ac8ac559c74e697fddfbf5c0bc412a /data_visualisation.ipynb | |
| parent | 9a3b2702bbcbd67eab592b043b7dcd50b48afe3b (diff) | |
Diffstat (limited to 'data_visualisation.ipynb')
| -rw-r--r-- | data_visualisation.ipynb | 1761 |
1 files changed, 1761 insertions, 0 deletions
diff --git a/data_visualisation.ipynb b/data_visualisation.ipynb new file mode 100644 index 0000000..e301d83 --- /dev/null +++ b/data_visualisation.ipynb @@ -0,0 +1,1761 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Written by Constantijn Bicker Caarten\n", + "# Last updated: 07-07-2017\n", + "#\n", + "#\n", + "# This code contains example of how\n", + "# the gathered data can be visualised." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from socket import error as socket_error\n", + "from urllib.request import urlopen\n", + "from dns.query import udp, tcp\n", + "from bs4 import BeautifulSoup\n", + "from dns.resolver import dns\n", + "from uuid import uuid4\n", + "from tqdm import tqdm\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "import copy\n", + "import json\n", + "import csv\n", + "import os\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Constants" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "PIE = (6, 6)\n", + "\n", + "NEWLINE = '\\n'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Functions" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def write_list(fn, data):\n", + " '''Writes a list to a file with each value on a new line'''\n", + " with open(fn, 'w') as f:\n", + " for datum in data:\n", + " f.write(datum + NEWLINE)\n", + " \n", + "def append_list(fn, data):\n", + " '''Appends a list to a file with each value on a new line'''\n", + " with open(fn, 'a') as f:\n", + " for datum in data:\n", + " f.write(datum + NEWLINE)\n", + " \n", + "def read_list(fn):\n", + " '''Reads a file and '''\n", + " with open(fn, 'r') as f:\n", + " return [line.strip(NEWLINE) for line in f]\n", + " \n", + "def write_json(fn, data):\n", + " with open(fn, 'w') as f:\n", + " f.write(json.dumps(data))\n", + " \n", + "def read_json(fn):\n", + " '''Read a json file (fn) and returns it as a dictionary'''\n", + " with open(fn, 'r') as f:\n", + " return json.loads(f.read())" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def set_text(ax, title, x, y):\n", + " ax.set_title(title)\n", + " ax.set_xlabel(x)\n", + " ax.set_ylabel(y)\n", + " \n", + "def save_fig(ax, fn):\n", + " fig = ax.get_figure()\n", + " fig.savefig('imgs/{}.pdf'.format(fn))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Top-Level Domains" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "data_tlds = read_json('data/data_tlds.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c239eda0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_tlds = pd.DataFrame(data_tlds)\n", + "df_tlds['creation_date'] = pd.to_datetime(df_tlds['creation_date'])\n", + "ax = df_tlds.creation_date.value_counts().sort_index().cumsum().plot(grid=True)\n", + "set_text(ax, 'TLD growth', 'Year', 'Number of TLDs')" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "could not broadcast input array from shape (2) into shape (3)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-56-686090acab94>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mdf_orgs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minplace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mdf_orgs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0mrow\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mrows\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrow\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'tld'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morg\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0morg\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0morganisations\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mdf_orgs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrows\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdf_tlds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'tld'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36mapply\u001b[0;34m(self, func, axis, broadcast, raw, reduce, args, **kwds)\u001b[0m\n\u001b[1;32m 4150\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mreduce\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4151\u001b[0m \u001b[0mreduce\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4152\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_apply_standard\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreduce\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreduce\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4153\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4154\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_apply_broadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m_apply_standard\u001b[0;34m(self, func, axis, ignore_failures, reduce)\u001b[0m\n\u001b[1;32m 4263\u001b[0m \u001b[0mindex\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4264\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4265\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_constructor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mresults\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4266\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres_index\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4267\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, data, index, columns, dtype, copy)\u001b[0m\n\u001b[1;32m 264\u001b[0m dtype=dtype, copy=copy)\n\u001b[1;32m 265\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 266\u001b[0;31m \u001b[0mmgr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_init_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 267\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMaskedArray\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 268\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmrecords\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mmrecords\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m_init_dict\u001b[0;34m(self, data, index, columns, dtype)\u001b[0m\n\u001b[1;32m 400\u001b[0m \u001b[0marrays\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mkeys\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 401\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 402\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_arrays_to_mgr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata_names\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 403\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 404\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_init_ndarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m_arrays_to_mgr\u001b[0;34m(arrays, arr_names, index, columns, dtype)\u001b[0m\n\u001b[1;32m 5406\u001b[0m \u001b[0maxes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0m_ensure_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_ensure_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5407\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 5408\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mcreate_block_manager_from_arrays\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marr_names\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5409\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5410\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/internals.py\u001b[0m in \u001b[0;36mcreate_block_manager_from_arrays\u001b[0;34m(arrays, names, axes)\u001b[0m\n\u001b[1;32m 4265\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmgr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4266\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4267\u001b[0;31m \u001b[0mconstruction_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marrays\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4268\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4269\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/internals.py\u001b[0m in \u001b[0;36mconstruction_error\u001b[0;34m(tot_items, block_shape, axes, e)\u001b[0m\n\u001b[1;32m 4227\u001b[0m \u001b[0mimplied\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0max\u001b[0m \u001b[0;32min\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4228\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpassed\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mimplied\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0me\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4229\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4230\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mblock_shape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4231\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Empty data passed with indices specified.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/internals.py\u001b[0m in \u001b[0;36mcreate_block_manager_from_arrays\u001b[0;34m(arrays, names, axes)\u001b[0m\n\u001b[1;32m 4260\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4261\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4262\u001b[0;31m \u001b[0mblocks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mform_blocks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnames\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4263\u001b[0m \u001b[0mmgr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBlockManager\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mblocks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4264\u001b[0m \u001b[0mmgr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_consolidate_inplace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/internals.py\u001b[0m in \u001b[0;36mform_blocks\u001b[0;34m(arrays, names, axes)\u001b[0m\n\u001b[1;32m 4357\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4358\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobject_items\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4359\u001b[0;31m \u001b[0mobject_blocks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_simple_blockify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobject_items\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobject_\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4360\u001b[0m \u001b[0mblocks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobject_blocks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4361\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/internals.py\u001b[0m in \u001b[0;36m_simple_blockify\u001b[0;34m(tuples, dtype)\u001b[0m\n\u001b[1;32m 4387\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcoerce\u001b[0m \u001b[0mto\u001b[0m \u001b[0mthis\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4388\u001b[0m \"\"\"\n\u001b[0;32m-> 4389\u001b[0;31m \u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mplacement\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_stack_arrays\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtuples\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4390\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4391\u001b[0m \u001b[0;31m# CHECK DTYPE?\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/internals.py\u001b[0m in \u001b[0;36m_stack_arrays\u001b[0;34m(tuples, dtype)\u001b[0m\n\u001b[1;32m 4451\u001b[0m \u001b[0mstacked\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mempty\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4452\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marr\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4453\u001b[0;31m \u001b[0mstacked\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_asarray_compat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4454\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4455\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mstacked\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mplacement\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: could not broadcast input array from shape (2) into shape (3)" + ] + } + ], + "source": [ + "df_orgs = pd.DataFrame(data_tlds)\n", + "rows = []\n", + "\n", + "df_orgs.index = df_orgs.tld\n", + "del df_orgs['tld']\n", + "del df_orgs['creation_date']\n", + "\n", + "df_orgs.reset_index(inplace=True)\n", + "df_orgs.apply(lambda row: [rows.append([row['tld'], org]) for org in row.organisations], axis = 1)\n", + "df_orgs = pd.DataFrame(rows, columns=df_tlds.columns).set_index(['tld'])" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unhashable type: 'list'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-61-e1a6158bd15b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mmax_orgs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m32\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0max\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf_orgs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0morganisations\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmax_orgs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbarh\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfigsize\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmax_orgs\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_xlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Number of TLDs'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_ylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Organisation'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/base.py\u001b[0m in \u001b[0;36mvalue_counts\u001b[0;34m(self, normalize, sort, ascending, bins, dropna)\u001b[0m\n\u001b[1;32m 949\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0malgorithms\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mvalue_counts\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 950\u001b[0m result = value_counts(self, sort=sort, ascending=ascending,\n\u001b[0;32m--> 951\u001b[0;31m normalize=normalize, bins=bins, dropna=dropna)\n\u001b[0m\u001b[1;32m 952\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 953\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/algorithms.py\u001b[0m in \u001b[0;36mvalue_counts\u001b[0;34m(values, sort, ascending, normalize, bins, dropna)\u001b[0m\n\u001b[1;32m 376\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 377\u001b[0m \u001b[0;31m# ndarray path. pass original to handle DatetimeTzBlock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 378\u001b[0;31m \u001b[0mkeys\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcounts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_value_counts_arraylike\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdropna\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdropna\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 379\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 380\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mIndex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSeries\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.6/site-packages/pandas/core/algorithms.py\u001b[0m in \u001b[0;36m_value_counts_arraylike\u001b[0;34m(values, dropna)\u001b[0m\n\u001b[1;32m 444\u001b[0m \u001b[0mvalues\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_ensure_object\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 445\u001b[0m \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0misnull\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 446\u001b[0;31m \u001b[0mkeys\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcounts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhtable\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue_count_object\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 447\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mdropna\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0many\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 448\u001b[0m \u001b[0mkeys\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mNaN\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32mpandas/hashtable.pyx\u001b[0m in \u001b[0;36mpandas.hashtable.value_count_object (pandas/hashtable.c:21322)\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32mpandas/hashtable.pyx\u001b[0m in \u001b[0;36mpandas.hashtable.value_count_object (pandas/hashtable.c:21057)\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'" + ] + } + ], + "source": [ + "max_orgs = 32\n", + "\n", + "ax = df_orgs.organisations.value_counts().head(max_orgs).plot.barh(figsize = (6, int(max_orgs / 4)))\n", + "ax.set_xlabel('Number of TLDs')\n", + "ax.set_ylabel('Organisation')\n", + "fig = ax.get_figure()\n", + "fig.savefig(\"imgs/orgs.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# 2013-10-23 is the creation date of the first new gtld program tld\n", + "new_tlds = df_tlds[(df_tlds.creation_date >= '2013-10-23')].tld\n", + "old_tlds = df_tlds[(df_tlds.creation_date < '2013-10-23')].tld\n", + "cctlds = df_tlds.loc[df_tlds.type == 'country-code'].tld\n", + "gtlds = df_tlds.loc[df_tlds.type == 'generic'].tld" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [], + "source": [ + "tld_groups = {'old TLDs': old_tlds, \n", + " 'new TLDs': new_tlds, \n", + " 'gTLDs': gtlds, \n", + " 'ccTLDs': cctlds}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Name Servers" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "data_nss = read_json('data/data_ns.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_nss = pd.DataFrame(data_nss)\n", + "maxc = df_nss.tld.value_counts().max()\n", + "minc = df_nss.tld.value_counts().min()" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c294ac50>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_nss.tld.value_counts().hist(bins = maxc - minc, range = (minc, maxc), align = 'left')\n", + "set_text(ax, 'Frequency of number of name servers per TLD', 'Number of TLDs', 'Number of name servers per TLD')" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n8RkD/EHSTbz4mI9PtTYzs36VKT6fqSyFmZkNK2XG87m2yiBmZjZ8lOnhYAXp7N2A9JwAAAphSURB\nVDaAdYC1gaciYsMqgpmZWecqs+WzQW1akoApwJ5VhDIzs85WZjyfv4rkR8DbqmjPzMw6W5ndbu8q\nXFwLmAT8pXQiMzPreGXOdiuO67MKWEDa9TYgSd8FDgaWRMSOed7GwP+SesleALwnIpaVyGdmZm2q\nzDGfMuP6zAS+DlxQmDcduDoiZkiani9/osRtmJlZm2pkGO3T+rk6IuLzA7UREddJmlA3ewowOU/P\nArpx8TEz60iKiIGXKq4gndTL7PWBo4FXRcToQbYzAbi8sNvtiYgYk6cFLKtdrlvvWOBYgLFjx+42\ne/bsIeVf05YsXc6jz7Q6Rd/GjqKt88HwzDhx/EbVNQasXLmS0aMH9VZsGWcsrx3zdXV1zYuISQMt\n18gw2mfVpiVtAJwIfACYDZzV13pDvI2Q1GtVjIhzgXMBJk2aFJMnT67iJivztYvmcFZPmUNpa9ZJ\nE1e1dT4YnhkXHDG5srYAuru7abf3Rj1nLK/d8/WnoVOtJW0s6QvA70kFbNeI+ERElOlk9FFJ43L7\n43CHpWZmHWvIxUfSmcBNwApgYkScXtFZaXOBqXl6KjCngjbNzKwNNbLlcxKwKfAp4CFJT+a/FZKe\nHEwDkn4A/A7YTtIiSUcDM4C3SLoHOCBfNjOzDtTIMZ/SvSJExOF9XLV/2bbNzKz9VdK9jpmZ2VC0\n9ylFZsPEhIpHv5154PqVtmdWNW/5mJlZ07n4mJlZ07n4mJlZ07n4mJlZ07n4mJlZ07n4mJlZ07n4\nmJlZ07n4mJlZ07n4mJlZ07n4mJlZ07n4mJlZ07n4mJlZ07n4mJlZ07n4mJlZ07n4mJlZ07n4mJlZ\n03kwObMO1LN4OdMqHqBuwYyDKm3Phjdv+ZiZWdO5+JiZWdO5+JiZWdO5+JiZWdO5+JiZWdO5+JiZ\nWdMN61OtJ1R8KirASRMrb9KsLVT9fpl54PqVtmcvL2215SPpQEl3S/qTpOmtzmNmZmtG2xQfSSOA\nbwBvB3YADpe0Q2tTmZnZmtA2xQfYA/hTRNwXEc8Bs4EpLc5kZmZrgCKi1RkAkPRu4MCI+Od8+Sjg\nTRHx0brljgWOzRe3A+5uatCBbQL8udUh+tHu+cAZq9Du+cAZq9CO+baIiFcPtNDL7oSDiDgXOLfV\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14be812cf8>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(nrows=len(tld_groups))\n", + "\n", + "for i, group in enumerate(tld_groups):\n", + " ax = df_nss[df_nss.tld.isin(tld_groups[group])].tld.value_counts().hist(bins = maxc - minc,\n", + " range = (minc, maxc),\n", + " figsize = (6, 4 * len(tld_groups)),\n", + " ax = axes[i])\n", + " set_text(ax, \n", + " 'Frequency of number of name servers per TLD of {}'.format(group), \n", + " 'Number of TLDs', \n", + " 'Number of name servers per TLD')\n", + " \n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Network Diversity" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "data_asns = read_json('data/data_asns.json')\n", + "data_ips = read_json('data/data_ips.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_asns = pd.DataFrame(data_asns)" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "maxc = df_asns.groupby('tld').asn.nunique().max()\n", + "minc = df_asns.groupby('tld').asn.nunique().min()" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14be76e668>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_asns.groupby('tld').asn.nunique().hist(bins = maxc - minc, range = (minc, maxc), align='left')\n", + "set_text(ax, 'Spread of ASs over TLDs', 'Number of TLDs', 'Number of ASs per TLD')" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n+qmqa1CStgY+ARxHdkv4vhGxsp7BzMyss1VzDepM4EiyO+kmRcRg3VOZmVnHq+aLujOAHYBTgL8V\ndXe0qpKujszMzCpRzTWouvQ+YWZmVo6LjZmZ5ZILlJmZ5ZILlJmZ5VK+O1gzaxMTRtH/YqV9NS6Z\ndUgtkczanltQZmaWSy5QZmaWSy5QZmaWSy5QZmaWSy5QZmaWSy5QZmaWSy5QZmaWSy5QZmaWSy5Q\nZmaWSy5QZmaWSy5QZmaWSy5QZmaWSy5QZmaWSy5QZmaWSy5QZmaWSy0ZD0rSD4FDgYciYq80b2vg\nQmACsAQ4JiJWNjpLpeP4mJlZc7WqBXUu8LYh82YCCyJiIrAgPTczsw7VkgIVEdcAjw6ZfTgwJ03P\nAY5oaigzM8sVRURrXliaAFxedIrvsYgYm6YFrCw8H7LddGA6QHd395T+/v519j04OEhXV1dFORYv\ne7zK36B23WNgxVMte/mKtUPOdsgIo8s5adyWjQ1Txmj+D7VSO+Rsh4zQ3Jx9fX2LIqJnpPVacg1q\nJBERkkpWzoiYDcwG6Onpid7e3nXWGRgYoNT8Uqa18BrUjElrOGtxLt+CF2mHnO2QEUaXc8lxvY0N\nU8Zo/g+1UjvkbIeMkM+cebqLb4Wk7QHSz4danMfMzFooTwVqLjA1TU8FLmthFjMza7GWFChJFwB/\nAHaXtFTSCcAs4M2S7gbelJ6bmVmHaslJ+4h47zCLDmpqEDMzy608neIzMzN7nguUmZnlkguUmZnl\nkguUmZnlkguUmZnlkguUmZnlkguUmZnlkguUmZnlkguUmZnlkguUmZnlUv7HJzAz6xATGjD8z5JZ\nh9R9n83iFpSZmeWSC5SZmeWSC5SZmeWSC5SZmeWSC5SZmeWS7+IzM1uPVXpn4IxJa5hWwbrNvCvQ\nLSgzM8slFygzM8slFygzM8slX4Myy6l69yrQzj0KWGdyC8rMzHLJBcrMzHIpV6f4JL0N+DqwAfCD\niJjV4khmVka7dG7aLjntxXLTgpK0AfAt4GBgT+C9kvZsbSozM2uV3BQo4NXAPRFxX0Q8C/QDh7c4\nk5mZtYgiotUZAJB0FPC2iPj39Px44DUR8ZEh600HpqenuwN/KrG7bYGHGxi3XpyzftohIzhnvbVD\nznbICM3N+cqI2G6klXJ1DaoSETEbmF1uHUk3RkRPkyJVzTnrpx0ygnPWWzvkbIeMkM+ceTrFtwzY\nsej5+DTPzMw6UJ4K1A3AREk7SdoYeA8wt8WZzMysRXJzii8i1kj6CPD/yG4z/2FE3F7l7sqeAswR\n56yfdsgIzllv7ZCzHTJCDnPm5iYJMzOzYnk6xWdmZvY8FygzM8ul9a5ASXqbpD9JukfSzFbnKUXS\njpIWSrpD0u2STmp1puFI2kDSzZIub3WW4UgaK+liSXdJulPSa1udqRRJH0/v922SLpD00lZnApD0\nQ0kPSbqtaN7WkuZLujv93CqHGc9M7/mtkn4uaWwrM6ZM6+QsWjZDUkjathXZhmQpmVPSiemY3i7p\nf1qVr2C9KlBt1F3SGmBGROwJ7A98OKc5AU4C7mx1iBF8HbgyIvYA9iaHeSWNAz4K9ETEXmQ3Ar2n\ntamedy7wtiHzZgILImIisCA9b6VzWTfjfGCviPhn4M/Ap5odqoRzWTcnknYE3gL8tdmBhnEuQ3JK\n6iPrvWfviHgV8JUW5HqR9apA0SbdJUXE8oi4KU2vIvtAHdfaVOuSNB44BPhBq7MMR9KWwAHAOQAR\n8WxEPNbaVMPaEBgjaUNgU+BvLc4DQERcAzw6ZPbhwJw0PQc4oqmhhiiVMSKuiog16em1ZN+dbKlh\njiXA2cB/Abm4K22YnP8HmBURz6R1Hmp6sCHWtwI1Dnig6PlScvjBX0zSBGAf4LrWJinpa2T/qda2\nOkgZOwF/B36UTkX+QNJmrQ41VEQsI/uL9K/AcuDxiLiqtanK6o6I5Wn6QaC7lWEq8G/AL1sdohRJ\nhwPLIuKPrc4ygt2Af5F0naSrJe3X6kDrW4FqK5K6gJ8BH4uIJ1qdp5ikQ4GHImJRq7OMYENgX+A7\nEbEPsJrWn45aR7qGczhZQd0B2EzSv7Y2VWUi+y5KLv7yL0XSf5OdNj+/1VmGkrQp8Gng1FZnqcCG\nwNZklx0+CVwkSa0MtL4VqLbpLknSRmTF6fyIuKTVeUp4PXCYpCVkp0oPlPTj1kYqaSmwNCIKLdCL\nyQpW3rwJ+EtE/D0i/gFcAryuxZnKWSFpe4D0s+Wne0qRNA04FDgu8vmlzl3I/ij5Y/q/NB64SdLL\nW5qqtKXAJZG5nuzMSUtv6FjfClRbdJeU/io5B7gzIr7a6jylRMSnImJ8REwgO46/jojc/cUfEQ8C\nD0jaPc06CLijhZGG81dgf0mbpvf/IHJ4M0eRucDUND0VuKyFWUpKA5z+F3BYRDzZ6jylRMTiiHhZ\nRExI/5eWAvumf7d5cynQByBpN2BjWtwL+3pVoNIF00J3SXcCF9XQXVIjvR44nqxVckt6vL3VodrY\nicD5km59VZ6pAAAgAElEQVQFJgNfbnGedaQW3sXATcBisv97uehaRtIFwB+A3SUtlXQCMAt4s6S7\nyVp/LR3depiM3wQ2B+an/0PfbWVGGDZn7gyT84fAzunW835gaqtbpe7qyMzMcmm9akGZmdn6wwXK\nzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKOlbqWfqsouf/Kemzddr3uZKOqse+Rnido1MP7guL5k0q\n+vrCo5L+kqZ/JWnCMD1tn5vW+6OkP0s6L/XFaNYyLlDWyZ4BjszD8AfFUmeylToB+EBE9BVmpC+H\nTo6IyWRfuP1kev6mEfb1yYjYG9gduBn4dfrCu1lLuEBZJ1tD9mXZjw9dMLQFJGkw/exNHWleJuk+\nSbMkHSfpekmLJe1StJs3SboxtUgOTdtvkMYxuiGNY/TBov3+RtJcSvSEIem9af+3STojzTsVeANw\njqQz63VQUlc3Z5N1Entwynxueu3FktY5XmaNMJq/1MzWR98Cbh3l4Gx7A/9ENlzBfcAPIuLVygae\nPBH4WFpvAtkQMLsACyXtCryPrCfz/SRtAvxOUqFX833Jxjf6S/GLSdoBOAOYAqwErpJ0RER8XtKB\nwH9GxI2j/s1HdhOwB2lUgDSOFcrBwIDWGdyCso6WepE/j2wwwUrdkMb0ega4FygUmMVkRangoohY\nGxF3kxWyPcgGrXufpFvIhljZBpiY1r9+aHFK9gMGUkezhV67DxhF3moVerK+j6wLnP9N/d/lqud9\nW3+5QJll416dABSPI7WG9P9D0kvIOs4seKZoem3R87W8+KzE0H7EguxD/8TCNaKI2KloXKjVNf0W\n9bcPWYfGK8lajQPAf5DjASxt/eICZR0vIh4FLiIrUgVLyE6pARwGbFTFro+W9JJ0XWpn4E9kHRn/\nnzTcCpJ208gDLF4PvFHStpI2AN4LXF1Fnooo81Fge+DKdBPJSyLiZ8Ap5HM4E1sP+RqUWeYssp7w\nC74PXCbpj8CVVNe6+StZcdkC+I+IeFrSD8hOA96Uht34OyMMpx4RyyXNBBaStcDmRUQtw1/sLmlp\n0fPCTQ9nSvoM2XD01wJ9EfGspHFkIxYX/qD9VA2vbVYx92ZuZma55FN8ZmaWSy5QZmaWSy5QZmaW\n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\nar2Ue58gK0Sbkx3fUs+rMY6sZVj8KNzE8l+SVpEdp/OARcDrImJ1Wr4f2b/TQbLrpCdFxH01ZLEm\n0YtP25vVh6RpwL9HxBtancXM2pNbUGZmlksuUGZmlks+xWdmZrnkFpSZmeVSyzuKrMW2224bEyZM\nWGf+6tWr2Wyz/PcT6Zz10w4ZwTnrrR1ytkNGaG7ORYsWPRwR2424Yqu7sqjlMWXKlChl4cKFJefn\njXPWTztkjHDOemuHnO2QMaK5OYEbw10dmZlZu3KBMjOzXGpogZK0RNJiSbcojV8jaWtJ8yXdnX5u\nleZL0jck3SPpVkn7NjKbmZnlWzNaUH0RMTkietLzmcCCiJhINuxBoTfng8m6gZlI1rHkd5qQzczM\ncqoVp/gOB+ak6Tlk4/oU5p+XrqFdC4xNXfabmVkHaugXdSX9hRd6D/5eRMyW9FhEjE3LBayMiLGS\nLgdmxQtDYy8ATo6IoUNbTyeNAtrd3T2lv79/ndcdHBykq6trnfl545z10w4ZwTnrrR1ytkNGaG7O\nvr6+RUVn1YZXya1+1T6Acenny4A/ko18+tiQdVamn5cDbyiavwDoKbd/32beHO2Qsx0yRjhnvbVD\nznbIGNGBt5lHxLL08yHg52Rj9KwonLpLPx9Kqy8DdizafDwvDM5mZmYdpmEFStJmkjYvTANvIRsb\nZy4vDI89FbgsTc8F3pfu5tsfeDyywdHMzKwDNbKro27g52nQyw2Bn0TElZJuAC6SdAJwP3BMWv8K\n4O1kA609Cby/gdkaasLMeRWtN2PSGqZVsO6SWYfUGsnMrO00rEBFNmLl3iXmPwIcVGJ+AB9uVB4z\nM2sv7knCzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxy\nyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXK\nzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxy\nyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyyQXKzMxyqeEFStIGkm6WdHl6vpOk\n6yTdI+lCSRun+Zuk5/ek5RManc3MzPKrGS2ok4A7i56fAZwdEbsCK4ET0vwTgJVp/tlpPTMz61AN\nLVCSxgOHAD9IzwUcCFycVpkDHJGmD0/PScsPSuubmVkHUkQ0bufSxcDpwObAfwLTgGtTKwlJOwK/\njIi9JN0GvC0ilqZl9wKviYiHh+xzOjAdoLu7e0p/f/86rzs4OEhXV1fDfq+RLF72eEXrdY+BFU+N\nvN6kcVvWmKg2rT6elWiHjOCc9dYOOdshIzQ3Z19f36KI6BlpvQ0bFUDSocBDEbFIUm+99hsRs4HZ\nAD09PdHbu+6uBwYGKDW/WabNnFfRejMmreGsxSO/BUuO660xUW1afTwr0Q4ZwTnrrR1ytkNGyGfO\nhhUo4PXAYZLeDrwU2AL4OjBW0oYRsQYYDyxL6y8DdgSWStoQ2BJ4pIH5zMwsxxp2DSoiPhUR4yNi\nAvAe4NcRcRywEDgqrTYVuCxNz03PSct/HY08/2hmZrnWiu9BnQx8QtI9wDbAOWn+OcA2af4ngJkt\nyGZmZjnRyFN8z4uIAWAgTd8HvLrEOk8DRzcjj5mZ5V/ZAiVpG+BYYI80607ggojwtSEzM2uoYU/x\nSfon4DZgCvBn4G5gP2CxpD2G287MzKweyrWgvgCcFBEXFc+U9C7gS8C7GhnMzMw6W7mbJCYNLU4A\nEfEzYK/GRTIzMytfoFZXuczMzKxm5U7xvUzSJ0rMF7Bdg/KYmZkB5QvU98n60CvlBw3IYmZm9rxh\nC1REfG64ZZI+1pg4ZmZmmWp7kih16s/MzKxuqi1QHqfJzMwaqtoC5U5czcysoYa9BiVpFaULkYAx\nDUtkZmZG+bv4to6IfzQtiZmZWZFyp/iua1oKMzOzIcoVKN8IYWZmLVPuFN92w/QkAUBEfLUBeczM\nzIDyBWoDoAu3pMzMrAXKFajlEfH5piUxMzMrUq5AueVk66UJM+fVfZ9LZh1S932adbpyN0kc1LQU\nZmZmQwxboCLi0WYGMTMzK1ZtV0dmZmYNVbZASdpA0sJmhTEzMysoW6Ai4jlgraQtm5THzMwMKH8X\nX8EgsFjSfGB1YWZEfLRhqczMrONVUqAuSQ8zM7OmGbFARcQcSWOAV0TEn5qQyczMbOS7+CS9A7gF\nuDI9nyxpbqODmZlZZ6vkNvPPAq8GHgOIiFuAnRuYyczMrKIC9Y+IeHzIvLWNCGNmZlZQyU0St0s6\nFthA0kTgo8DvGxvLzMw6XSUtqBOBVwHPABcATwAfa2QoMzOzSu7iexL4b0lnZE9jVeNjmZlZp6vk\nLr79JC0GbiX7wu4fJU1pfDQzM+tklVyDOgf4UET8BkDSG4AfAf/cyGBmZtbZKrkG9VyhOAFExG+B\nNSNtJOmlkq5PLa7bJX0uzd9J0nWS7pF0oaSN0/xN0vN70vIJ1f1KZma2PqikQF0t6XuSeiW9UdK3\ngQFJ+0rat8x2zwAHRsTewGTgbZL2B84Azo6IXYGVwAlp/ROAlWn+2Wk9MzPrUJWc4ts7/TxtyPx9\ngAAOLLVRRARZR7MAG6VHYf1j0/w5ZF8E/g5weJoGuBj4piSl/ZiZWYdRIz//JW0ALAJ2Bb4FnAlc\nm1pJSNoR+GVE7CXpNuBtEbE0LbsXeE1EPDxkn9OB6QDd3d1T+vv713ndwcFBurq6GvZ7jWTxsqHf\nay6tewyseGrk9SaNa+1oJ60+npUYTcZK35/RqPQ9aodjCc5ZT+2QEZqbs6+vb1FE9Iy0XiUtqKql\n8aQmSxoL/BzYow77nA3MBujp6Yne3t511hkYGKDU/GaZNnNeRevNmLSGsxaP/BYsOa63xkS1afXx\nrMRoMlb6/oxGpe9ROxxLcM56aoeMkM+cTRnyPSIeAxYCrwXGSip8Ko8HlqXpZcCOAGn5lsAjzchn\nZmb507ACJWm71HIiDdfxZuBOskJ1VFptKnBZmp6bnpOW/9rXn8zMOlclX9Q9WtLmafoUSZeMcPde\nwfbAQkm3AjcA8yPicuBk4BOS7gG2IfueFennNmn+J4CZo/91zMxsfVHJNajPRMRP0xd030R2o8N3\ngNeU2ygibiW702/o/PvIhu8YOv9p4OhKQpuZ2fqvoi/qpp+HALMjYh6wceMimZmZVVaglkn6HvBu\n4ApJm1S4nZmZWdUqKTTHAP8PeGu6G29r4JMNTWVmZh1v2AIlaVNJG0XEkxFxCfASSR8HXhsRVzUv\nopmZdaJyLagrgQkAknYF/gDsDHxY0umNj2ZmZp2sXIHaKiLuTtNTgQsi4kTgYODQhiczM7OOVq5A\nFX9J9kBgPkBEPAusbWQoMzOzct+DulXSV8i6INoVuAqg0DuEmZlZI5VrQX0AeJjsOtRbIuLJNH9P\n4CsNzmVmZh1u2BZURDwFzCqx6AHg9Q1LZGZmRoVfuE0dv35I0m+AAaC7oanMzKzjDduCSh3EHkk2\n+u1uwCXAThExvknZzMysg5W7SeIh4HrgFOC3ERGS3tmcWGZm1unKneL7FLAJ8G3gU5J2aU4kMzOz\nMgUqIr4WEfsDh6dZlwI7SDpZ0m5NSWdmZh1rxJskIuK+iPhyREwCeoAtgCsanszMzDraqIbNiIjb\nIuK/I2LXRgUyMzMDj+tkZmY55QJlZma5VG48qAXp5xnNi2NmZpYp9z2o7SW9DjhMUj+g4oURcVND\nk5mZWUcrV6BOBT4DjAe+OmRZkA3BYWZm1hDlOou9GLhY0mci4gtNzGRmZla2BQVARHxB0mHAAWnW\nQERc3thYZmbW6Ua8i0/S6cBJwB3pcZKkLzc6mJmZdbYRW1DAIcDkiFgLIGkOcDPw6UYGMzOzzlbp\n96CKh3nfshFBzMzMilXSgjoduFnSQrJbzQ8AZjY0lZmZdbxKbpK4QNIAsF+adXJEPNjQVGZm1vEq\naUEREcuBuQ3OYmZm9jz3xWdmZrnkAmVmZrlUtkBJ2kDSXc0KY2ZmVlC2QEXEc8CfJL2iSXnMzMyA\nym6S2Aq4XdL1wOrCzIg4rGGpzMys41VSoD5TzY4l7QicB3ST9X4+OyK+Lmlr4EJgArAEOCYiVkoS\n8HXg7cCTwDQP6WFm1rlGvEkiIq4mKyQbpekbgEoKxxpgRkTsCewPfFjSnmRf8l0QEROBBbzwpd+D\ngYnpMR34zuh+FTMzW59U0lnsB4CLge+lWeOAS0faLiKWF1pAEbEKuDNtezgwJ602BzgiTR8OnBeZ\na4GxkrYfxe9iZmbrEUVE+RWkW4BXA9dFxD5p3uKImFTxi0gTgGuAvYC/RsTYNF/AyogYK+lyYFZE\n/DYtW0DWa8WNQ/Y1nayFRXd395T+/v51Xm9wcJCurq5K49Xd4mWPV7Re9xhY8dTI600a19ruD1t9\nPCsxmoyVvj+jUel71A7HEpyzntohIzQ3Z19f36KI6BlpvUquQT0TEc9mtQQkbUh2TakikrqAnwEf\ni4gnCvsBiIiQVPG+0jazgdkAPT090dvbu846AwMDlJrfLNNmzqtovRmT1nDW4pHfgiXH9daYqDat\nPp6VGE3GSt+f0aj0PWqHYwnOWU/tkBHymbOSL+peLenTwBhJbwZ+Cvyikp1L2oisOJ0fEZek2SsK\np+7Sz4fS/GXAjkWbj0/zzMysA1VSoGYCfwcWAx8ErgBOGWmjdPruHODOiPhq0aK5wNQ0PRW4rGj+\n+5TZH3g89QFoZmYdqJLezNemQQqvIzu196cY6cJV5vXA8cDidB0LskEOZwEXSToBuB84Ji27guwW\n83vIbjN//2h+ETMzW7+MWKAkHQJ8F7iXbDyonSR9MCJ+WW67dLODhll8UIn1A/jwiInNzKwjVHKT\nxFlAX0TcAyBpF2AeULZAmZmZ1aKSa1CrCsUpuQ9Y1aA8ZmZmQJkWlKQj0+SNkq4ALiK7BnU0WW8S\nZmZmDVPuFN87iqZXAG9M038HxjQskZmZGWUKVET4LjozM2uZSu7i2wk4kaz38efX93AbZmbWSJXc\nxXcp2RdufwGsbWwcMzOzTCUF6umI+EbDk5iZmRWppEB9XdJpwFXAM4WZHkzQzMwaqZICNYmsy6ID\neeEUX6TnZmZmDVFJgToa2Dkinm10GDMzs4JKepK4DRjb6CBmZmbFKmlBjQXuknQDL74G5dvMzcys\nYSopUKc1PIWZmTGhEaM9zzqk7vtslkrGg7q6GUHMzMyKVdKTxCqyu/YANgY2AlZHxBaNDGZmZp2t\nkhbU5oXpNIz74cD+jQxlZmZWyV18z4vMpcBbG5THzMwMqOwU35FFT18C9ABPNyyRmZkZld3FVzwu\n1BpgCdlpPjMzs4ap5BqUx4UyM7OmKzfk+6lltouI+EID8piZmQHlW1CrS8zbDDgB2AZwgTIzs4Yp\nN+T7WYVpSZsDJwHvB/qBs4bbzszMrB7KXoOStDXwCeA4YA6wb0SsbEYwMzPrbOWuQZ0JHAnMBiZF\nxGDTUpmZWccr90XdGcAOwCnA3yQ9kR6rJD3RnHhmZtapyl2DGlUvE2ZmZvXkImRmZrnkAmVmZrnk\nAmVmZrnkAmVmZrnkAmVmZrnkAmVmZrnkAmVmZrnUsAIl6YeSHpJ0W9G8rSXNl3R3+rlVmi9J35B0\nj6RbJe3bqFxmZtYeKhmwsFrnAt8EziuaNxNYEBGzJM1Mz08GDgYmpsdrgO+knwZMmDmv7vtcMuuQ\nuu/TzKyeGtaCiohrgEeHzD6crNNZ0s8jiuafF5lrgbGStm9UNjMzyz9FRON2Lk0ALo+IvdLzx+L/\ns3fncXKUdR7HP18TQCBAgOAISSQIAQSyHAmIymoGXJdLYBUQREx20ewhhxqV6HqvR1hEZL0jKLAi\nEREhS5AFMVFx5QpXQEAQAiSGO0CGO/DbP56nsZnpmemZ6e6qnvm+X69+TXVVdfW3q5P+dT1V/TwR\nY/O0gFURMVbSxcDciLgyL7sCODEirquxzVnALICOjo6p8+fP7/G8XV1djBkzpjkvqg5LVzxR13od\n68KDzzQ5TC+mjN+o7nWL3p/1GEjGet+fgah3f7bDvgTnbCT/2+yps7NzSURM62+9Zjbx9SkiQtKA\nq2NEzCP1sM60adNi+vTpPdZZvHgxtea3ysw6m+RmT1nDKUuLeQuWHTW97nWL3p/1GEjGet+fgah3\nf7bDvgTnbCT/2xy8Vl/F92Cl6S7/fSjPXwFMrFpvQp5nZmYjVKsL1AJgRp6eAVxUNf/9+Wq+PYEn\nImJli7OZmVmJNK19SdK5wHRgnKTlwOeAucB5ko4B7gUOz6tfAuwP3AU8TRpa3szMRrCmFaiIOLKX\nRfvUWDeADzUri5mZtR/3JGFmZqXkAmVmZqXkAmVmZqXkAmVmZqVU2A91rVgD6d9v9pQ1df2A0P37\nmVkj+QjKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxK\nyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXK\nzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKyQXKzMxKaXTRAWz4mDRnYcO3uWzuAQ3f\nppm1Bx9BmZlZKblAmZlZKblAmZlZKfkclJVavee1Zk9Zw8wmnAMzs+KUqkBJ2hc4DRgFnB4RcwuO\nZFaXZhRSXyBiI11pmvgkjQK+DewH7AAcKWmHYlOZmVlRSlOggD2AuyLi7oh4HpgPHFxwJjMzK4gi\nougMAEg6FNg3Ij6Q7x8NvDEiju223ixgVr67HXBHjc2NAx5pYtxGcc7GaYeM4JyN1g452yEjtDbn\nlhGxWX8rleocVD0iYh4wr691JF0XEdNaFGnQnLNx2iEjOGejtUPOdsgI5cxZpia+FcDEqvsT8jwz\nMxuBylSgrgUmS9pK0trAEcCCgjOZmVlBStPEFxFrJB0L/C/pMvMfRsStg9xcn02AJeKcjdMOGcE5\nG60dcrZDRihhztJcJGFmZlatTE18ZmZmL3OBMjOzUhp2BUrSvpLukHSXpDlF56lF0kRJiyT9UdKt\nkk4oOlNvJI2SdIOki4vO0htJYyWdL+l2SbdJelPRmWqR9JH8ft8i6VxJry46E4CkH0p6SNItVfM2\nkXS5pDvz341LmPHk/J7fLOkXksYWmTFn6pGzatlsSSFpXBHZumWpmVPScXmf3irpP4vKVzGsClQb\n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\nyOMqYKykzWttwMzMhr+m9iQh6R5SFygBfD8i5kl6PCLG5uUCVkXEWEkXA3Mj4sq87ArgxIi4rts2\nZ5GHnu7o6Jg6f/78Hs/b1dXFmDFjeswvG+dsnHbICM7ZaO2Qsx0yQmtzdnZ2LqlqVetdPdeiD/YG\njM9/XwPcBLwVeLzbOqvy34uBvarmXwFM62v7/h1Ua7RDznbIGOGcjdYOOdshY8QI/B1URKzIfx8i\n9XC8B/Bgpeku/30or76CV47GOYG/jghqZmYjTNO6OspDL78qIlbn6XcAXwQWkAZrm5v/XpQfsgA4\nVtJ80uB2T0QaObXtTJqzsK71Zk9Zw8w61l0294ChRjIzazvN7IuvA/hFOs3EaOAnEXGppGuB8yQd\nA9wLHJ7XvwTYnzS659PAPzYxm5mZlVzTClRE3A3sXGP+o8A+NeYH8KFm5TEzs/biniTMzKyUXKDM\nzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyU\nXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDM\nzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyU\nXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUXKDMzKyUml6gJI2SdIOki/P9rSRdLekuST+VtHaev06+\nf1dePqnZ2czMrLxacQR1AnBb1f2TgFMjYhtgFXBMnn8MsCrPPzWvZ2ZmI1RTC5SkCcABwOn5voC9\ngfPzKmcBh+Tpg/N98vJ98vpmZjYCKSKat3HpfOCrwAbAx4CZwFX5KAlJE4FfRsROkm4B9o2I5XnZ\nn4E3RsQj3bY5C5gF0NHRMXX+/Pk9nrerq4sxY8Y07XX1Z+mKJ+par2NdePCZ/tebMn6jISYamqL3\nZz3aISM4Z6O1Q852yAitzdnZ2bkkIqb1t97oZgWQdCDwUEQskTS9UduNiHnAPIBp06bF9Ok9N714\n8WJqzW+VmXMW1rXe7ClrOGVp/2/BsqOmDzHR0BS9P+vRDhnBORutHXK2Q0YoZ86mFSjgLcBBkvYH\nXg1sCJwGjJU0OiLWABOAFXn9FcBEYLmk0cBGwKNNzGdmZiXWtHNQEfHJiJgQEZOAI4BfR8RRwCLg\n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\nxObCU5mZWcdrpQW1gGz08i8CX8gGkQCyEcrDQx1ZJxrNLMofaHLfZmfpNZuoWrkGVciCgbdZAAAK\nNUlEQVToE2ZmZsNxsTEzs0pygTIzs0pygTIzs0pygTIzs0pygTIzs0pygTIzs0pygTIzs0pygTIz\ns0pygTIzs0pygTIzs0pygTIzs0pygTIzs0pygTIzs0pqacLCvCRdBZwMbIyIA9O23YDvAN3AGuCM\n8ZgEsdlpEszMbHyV1YJaApwwYNtC4M6ImAXcmdbNzKxDlVKgIuIe4LkBm+eSTR9P+nzquIYyM7NK\nUUSU88JSN3BL3Sm+5yNialoWsKm2PuB584H5AF1dXYf19fUNOvbmzZuZMmVKUzlWrnuhxa8gv67J\nsOHl0l6+ae2Qsx0ywuhyzp6+y9iGGcZo3kNlaoec7ZARxjdnb2/vQxHRM9J+pVyDGklEhKSGlTMi\nLgcuB+jp6Yk5c+YM2qe/v59G2xtpdvrtsbBg9lYWr6zkj+BV2iFnO2SE0eVcc/acsQ0zjNG8h8rU\nDjnbISNUM2eVevFtkDQNIH3eWHIeMzMrUZUK1M3AvLQ8D7ipxCxmZlayUgqUpOuAe4H9JK2VdC6w\nCDhe0mrguLRuZmYdqpST9hFx1hAPHTuuQczMrLKqdIrPzMxsOxcoMzOrJBcoMzOrJBcoMzOrJBco\nMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOr\nJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBco\nMzOrpB3LDmBmjXUvvLXQ461ZdFKhx7PiFf0zh/b+ubsFZWZmleQCZWZmleQCZWZmleRrUGbWsna5\nZtIuOe3VKtWCknSCpCcl/VzSwrLzmJlZeSpToCRNAr4FnAgcAJwl6YByU5mZWVkqU6CAI4CfR8RT\nEfEK0AfMLTmTmZmVRBFRdgYAJL0XOCEi/iKtnwO8LSI+OWC/+cD8tLof8GSDw+0B/HoM4xbFOYvT\nDhnBOYvWDjnbISOMb863RsSbRtqp7TpJRMTlwOXD7SNpeUT0jFOkljlncdohIzhn0dohZztkhGrm\nrNIpvnXAnnXrM9I2MzPrQFUqUA8CsyTNlPQa4Ezg5pIzmZlZSSpzii8itkr6JPADYBJwVUQ83uLh\n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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14bed3c978>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(nrows=len(tld_groups))\n", + "\n", + "for i, group in enumerate(tld_groups):\n", + " ax = df_asns[df_asns.tld.isin(tld_groups[group])].groupby('tld').asn.nunique().hist(bins = maxc - minc, \n", + " range = (minc, maxc), \n", + " align='left',\n", + " figsize = (6, 4 * len(tld_groups)),\n", + " ax = axes[i])\n", + " \n", + " set_text(ax, 'Spread of ASs over {}'.format(group), 'Number of TLDs', 'Number of ASs per TLD')\n", + " \n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "maxc = df_asns.groupby('asn').tld.nunique().max()\n", + "minc = df_asns.groupby('asn').tld.nunique().min()" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nAElFTkSuQmCC\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c2ec1fd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_asns.groupby('asn').tld.nunique().hist(bins = int((maxc - minc) / 4), range=(minc, maxc))\n", + "ax.set_yscale('log')\n", + "set_text(ax, 'Spread of TLDs over ASs', 'Number of ASs', 'Number of TLDs per AS')" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\nwDW1F0XES8BhpIv7z5J6sK1d3otLSB0qfgI8SPoy+2gf77e2r2dI11tOI12E/3/AuyPi6V5W/wZw\nI3A3cGcfmZpxFPB84VHsZThH0ipSS+bTpNbHCYXlxwAr8unRD5NOv/Wm4bHJ15uuAf6WVDxq81eR\nOiocSWqFPQ6cC/xJEa3jONI1qkUR8XjtAfw78O7cOSWA/yJ9nh4F9gem5mtlm5OO9+9IpyWfAc5r\nct9WIfINC61sko4HPhQR+7Q7i5l1DregzMysklygzMysknyKz8zMKsktKDMzq6SOHup/q622ivHj\nxw/49atXr2bTTTcdukAt0ImZwblbqRMzQ2fm7sTM0P7cd9xxx9MR8bq+1uvoAjV+/Hhuv/32Ab9+\n/vz5TJ48eegCtUAnZgbnbqVOzAydmbsTM0P7c0tqaiQVn+IzM7NKcoEyM7NKcoEyM7NK6sgCJWma\npFldXV3tjmJmZiXpyAIVEXMiYvqYMWPaHcXMzErSkQXKzMyGPxcoMzOrJBcoMzOrJBcoMzOrpI4e\nSWIojJ8xd+3zFedMbWMSMzMr6sgWlLuZm5kNfx1ZoNzN3Mxs+OvIAmVmZsOfC5SZmVWSC5SZmVWS\nC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVVSRxYojyRhZjb8dWSB8kgSZmbDX0cWKDMzG/5c\noMzMrJJcoMzMrJJcoMzMrJJcoMzMrJJcoMzMrJJcoMzMrJJcoMzMrJJcoMzMrJJcoMzMrJJcoMzM\nrJJcoMzMrJI6skB5NHMzs+GvIwuURzM3Mxv+OrJAmZnZ8OcCZWZmleQCZWZmleQCZWZmleQCZWZm\nleQCZWZmleQCZWZmleQCZWZmleQCZWZmleQCZWZmleQCZWZmleQCZWZmleQCZWZmleQCZWZmleQC\nZWZmleQCZWZmleQCZWZmleQCZWZmlbR+uwMUSXoPMBXYHLg4Im5qcyQzM2uT0ltQki6R9KSkxT3m\nHyhpqaRlkmYARMS1EXES8GHg/WVnMzOz6qpboCTtKenPC9PHSvqBpPMlbdmPfVwKHNhj26OAC4GD\ngJ2BoyTtXFjl9LzczMxGqEYtqK8DLwFI2hc4B7gc6AJmNbuDiPgJ8GyP2W8DlkXE8oh4CZgNHKrk\nXOCGiLiz+bdhZmbDjSKi9wXS3RHxV/n5hcBTEXFmnr4rInZreifSeOD6iNglTx8OHBgRH8rTxwB7\n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\nldSRBcojSZiZDX8dWaA8koSZ2fDXkQXKzMyGPxcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOr\nJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrpPXbHWAgJE0Dpk2cOLHdUdYaP2Nu\n0+uuOGdqiUnMzIaHjmxBeTRzM7PhryMLlJmZDX8uUGZmVkkuUGZmVkkuUGZmVkkuUGZmVkkuUGZm\nVkkuUGZmVkkuUGZmVkkuUGZmVkkuUGZmVkkuUGZmVkkuUGZmVkkuUGZmVkkuUGZmVkkuUGZmVkku\nUGZmVkkuUGZmVkkuUGZmVknrtztAjaRNgf8EXgLmR8QVbY5kZmZtVGoLStIlkp6UtLjH/AMlLZW0\nTNKMPPsw4OqIOAk4pMxcZmZWfWWf4rsUOLA4Q9Io4ELgIGBn4ChJOwPbAg/n1V4pOZeZmVVcqQUq\nIn4CPNtj9tuAZRGxPCJeAmYDhwKPkIpU6bnMzKz6FBHl7kAaD1wfEbvk6cOBAyPiQ3n6GGAv4BPA\nBcALwM/qXYOSNB2YDjB27Ni3zp49e8DZuru7ebBrYI21XceNWWd60cquAb+2P9sZuwk88Xzf26ma\n7u5uRo8e3ZZ9F49pf49ZO3MPVCdmhs7M3YmZof25p0yZckdETOprvcp0koiI1cAJTaw3C5gFMGnS\npJg8efKA9zl//nxm/mz1gF674uh193v8jLkDfm1/tnPari8zc9H6fW6naubPn89gflaDUTym/T1m\n7cw9UJ2YGTozdydmhs7J3Y5TaSuB7QrT2+Z5ZmZma7WjQC0EdpK0g6QNgSOB6/qzAUnTJM3q6mr+\ntJqZmXWWsruZXwn8EniTpEcknRgRLwOnADcC9wFXRcSS/mw3IuZExPQxYzrnGoyZmfVPqdegIuKo\nOvPnAfPK3LeZmXU2d+c2M7NK6sgC5WtQZmbDX0cWKF+DMjMb/jqyQJmZ2fBX+kgSZZL0FPDQIDax\nFfD0EMVplU7MDM7dSp2YGTozdydmhvbn3j4iXtfXSh1doAZL0u3NDLdRJZ2YGZy7lToxM3Rm7k7M\nDJ2T26f4zMysklygzMyskkZ6gZrV7gAD0ImZwblbqRMzQ2fm7sTM0CG5R/Q1KDMzq66R3oIyM7OK\ncoEyM7NKGpEFStKBkpZKWiZpRrvzNCJphaRFku6SdHuet6WkH0p6IP/7mgrkvETSk5IWF+b1mlPJ\n+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\n4vzSk5iZmRU0U6D+XdIZwE3Ai7WZEXFnaanMzGzEa6ZA7QocA+zHq6f4Ik+bmZmVopkCdQSwY0S8\nVHYYMzOzmmZGklgMbFF2EDMzs6JmWlBbAPdLWsi616Da1s3czMyGv2YK1BmlpzAzM+uhmftBLWhF\nEDMzs6JmRpJYReq1B7AhsAGwOiI2LzOYmZmNbM20oDarPZck4FBg7zJDmZmZNdOLb61IrgXeVVIe\nMzMzoLlTfIcVJtcDJgEvlJbIzMyM5nrxFe8L9TKwgnSar23KGs18MDxiuZnZ0GrmGlTl7gvl0czN\nzIa/Rrd8/2yD10VEfKGEPGZmZkDjFtTqXuZtCpwIvBZwgTIzs9I0uuX7zNpzSZsBpwInALOBmfVe\nZ2ZmNhQaXoOStCXwf4GjgcuAPSLid60IZmZmI1uja1DnAYcBs4BdI6K7ZanMzGzEa/SHuqcB2wCn\nA49Kei4/Vkl6rjXxzMxspGp0Dapfo0yYmZkNJRchMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOr\nJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrJBcoMzOrpD5v+V5FkqYB0yZOnFjqfsbPmFvq\n9s3sVYtWdnF84f/cinOmtjGNVUFHtqAiYk5ETB8zZky7o5iZWUk6skCZmdnw5wJlZmaV5AJlZmaV\n5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJl\nZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV\n5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaVtH67A9RI2hT4T+AlYH5EXNHmSGZm\n1kaltqAkXSLpSUmLe8w/UNJSScskzcizDwOujoiTgEPKzGVmZtVX9im+S4EDizMkjQIuBA4CdgaO\nkrQzsC3wcF7tlZJzmZlZxSkiyt2BNB64PiJ2ydNvB86MiHfl6U/mVR8BfhcR10uaHRFH1tnedGA6\nwNixY986e/bsAWfr7u7mwa7218Jdx41Z+3zRyq66ywCefLaLJ57vfVmVdXd3M3r06HbH6Ldi7r5+\nNq3QTIayj3VZx6H42R7K7Zapkz7XxZ/b2E3g9Vu27/hOmTLljoiY1Nd67bgGNY5XW0qQCtNewPnA\nBZKmAnPqvTgiZgGzACZNmhSTJ08ecJD58+cz82erB/z6obLi6Mlrnx8/Y27dZQD/ccUPmLlo/V6X\nVdn8+fMZzM+qXYq5+/rZtEIzGco+1mUdh+Jneyi3W6ZO+lwXf26n7foyf9cBuSvTSSIiVgMntDuH\nmZlVQzu6ma8EtitMb5vnmZmZrdWOArUQ2EnSDpI2BI4ErmtDDjMzq7Cyu5lfCfwSeJOkRySdGBEv\nA6cANwL3AVdFxJJ+bneapFldXV19r2xmZh2p1GtQEXFUnfnzgHmD2O4cYM6kSZNOGug2zMys2jzU\nkZmZVZILlJmZVZILlJmZVVLpI0mUSdJTwEOD2MRWwNNDFKdVOjEzOHcrdWJm6MzcnZgZ2p97+4h4\nXV8rdWSBkjQNmAbMyR0mBrqd25sZbqNKOjEzOHcrdWJm6MzcnZgZOid3ZUaS6I9aL7525zAzs/L4\nGpSZmVXSSC9Qs9odYAA6MTM4dyt1YmbozNydmBk6JHdHXoMyM7Phb6S3oMzMrKJcoMzMrJJGZIGS\ndKCkpZKWSZrR7jyNSFohaZGkuyTdnudtKemHkh7I/76mAjkvkfSkpMWFeb3mVHJ+Pv73SNqjQpnP\nlLQyH++7JB1cWPbJnHmppHe1KfN2km6RdK+kJZJOzfOrfqzr5a768d5Y0m2S7s65P5fn7yDp1pzv\nO/nODEjaKE8vy8vHVyjzpZIeLBzr3fL8SnxGehURI+oBjAJ+C+wIbAjcDezc7lwN8q4Atuox71+B\nGfn5DODcCuTcF9gDWNxXTuBg4AZAwN7ArRXKfCbwz72su3P+rGwE7JA/Q6PakHlrYI/8fDPgNzlb\n1Y91vdxVP94CRufnGwC35uN4FXBknn8R8A/5+T8CF+XnRwLfqVDmS4HDe1m/Ep+R3h4jsQX1NmBZ\nRCyPiJeA2cChbc7UX4cCl+XnlwHvaWMWACLiJ8CzPWbXy3kocHkkvwK2kLR1a5K+qk7meg4FZkfE\nixHxILCM9FlqqYh4LCLuzM9XkW5ZM47qH+t6ueupyvGOiOjOkxvkRwD7AVfn+T2Pd+3ncDXwTklq\nUVygYeZ6KvEZ6c1ILFDjgIcL04/Q+D9KuwVwk6Q7JE3P88ZGxGP5+ePA2PZE61O9nFX/GZyST3Vc\nUjh9WrnM+fTR7qTfkDvmWPfIDRU/3pJGSboLeBL4Iak19/tI97brmW1t7ry8C3htaxP/aeaIqB3r\ns/Kx/oqkjXpmztr+GakZiQWq0+wTEXsABwEfkbRvcWGkNnrl/1agU3ICXwMmALsBjwEz2xund5JG\nA98DPh4RzxWXVflY95K78sc7Il6JiN2AbUmtuDe3OVKfemaWtAvwSVL2PYEtgU+0MWJTRmKBWgls\nV5jeNs+rpIhYmf99Evg+6T/IE7UmeP73yfYlbKhezsr+DCLiifyfew3wDV49rVSZzJI2IH3JXxER\n1+TZlT/WveXuhONdExG/B24B3k46DVYbKq6YbW3uvHwM8EyLo65VyHxgPs0aEfEi8F9U+FjXjMQC\ntRDYKffC2ZB0IfO6NmfqlaRNJW1Wew4cACwm5T0ur3Yc8IP2JOxTvZzXAcfm3kN7A12F01Nt1ePc\n+3tJxxtS5iNzL60dgJ2A29qQT8DFwH0R8eXCokof63q5O+B4v07SFvn5JsD+pOtntwCH59V6Hu/a\nz+Fw4Obcom2ZOpnvL/wCI9I1s+KxbvtnpFft7qXRjgep18pvSOeSP93uPA1y7kjqyXQ3sKSWlXRO\n+8fAA8CPgC0rkPVK0imaP5LOYZ9YLyept9CF+fgvAiZVKPO3cqZ7SP9xty6s/+mceSlwUJsy70M6\nfXcPcFd+HNwBx7pe7qof778Efp3zLQY+m+fvSCqYy4DvAhvl+Rvn6WV5+Y4VynxzPtaLgW/zak+/\nSnxGent4qCMzM6ukkXiKz8zMOoALlJmZVZILlJmZVZILlJmZVZILlJmZVZILlBkgKSTNLEz/s6Qz\nh2jbl0o6vO81B72fIyTdJ+mWOss/LukFSWMK8/5M0hVKI+YvlvSzPNqDWdu5QJklLwKHSdqq3UGK\nCqMVNONE4KSImFJn+VGkP1Q/rDDvVOCJiNg1InbJ2/jjgMKaDTEXKLPkZWAW8E89F/RsAUnqzv9O\nlrRA0g8kLZd0jqSj8714FkmaUNjM30q6XdJvJL07v36UpPMkLcwDeJ5c2O5PJV0H3NtLnqMKLZ5z\n87zPkv4Y9mJJ5/XymgnAaOB0UqGq2ZrCsDYRsTQiXsyjmMxVuqfQYknvb/pImg2R/vx2ZjbcXQjc\nI+lf+/GavwLeQrptx3LgmxHxNqUb8n0U+Hhebzxp7LMJwC2SJgLHkoaV2TOPLP1zSTfl9fcAdol0\nq4m1JG0DnAu8FfgdaaT790TE5yXtR7q30u295DySdGuZnwJvkjQ2Ip4ALsnbOJw0EsVlEfEAcCDw\n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\nZmZDX6NzUGt0lwkzM7PB5CJkZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV\n1Ex/UJUjaRowbeLEiaU+z/iZV5e6fess/jyUa8Gybo4r7OOl5xzSxjRWBR3ZgoqIeRExY9SoUe2O\nYmZmJenIAmVmZkOfC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZ\nmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWS\nC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZmVWSC5SZ\nmVWSC5SZmVWSC5SZmVWSC5SZmVXSuu0OUCNpY+C/geeBroi4pM2RzMysjUptQUm6UNJjkhb2mn6g\npMWSlkiamScfDsyNiBOBQ8vMZWZm1Vf2Ib6LgAOLEySNAL4KHATsDEyXtDMwDngoL/ZiybnMzKzi\nFBHlPoE0HrgqInbJ428BzoyIA/L4aXnRh4E/RcRVkuZExFF1tjcDmAEwZsyYN82ZM2fA2Xp6enig\nu5xaOGnsqNXDC5Z1D9qyYzaCR//yyvWqrqenh5EjR7Y7xhor5m703rTrvShmqmUoe1/33g+D9dof\ne6p79Wd7MLdbpk7+XBe/+1q9r6dOnXprREzub7l2nIMay0stJUiFaQ/gPOArkg4B5tVbOSJmA7MB\nJk+eHFOmTBlwkK6uLmb9cuWA129k6dFTVg8fN/PqQVv2I5NeYNaCdV+xXtV1dXWxNu9VuxRzN3pv\n2vVeFDPVMpS9r3vvh8F67f91yQ9Xf7YHc7tl6uTPdfG7r6r7ujIXSUTESuD4ducwM7NqaMdl5suA\nbQvj4/I0MzOz1dpRoOYDO0qaIGl94CjgyjbkMDOzCiv7MvNLgd8AO0l6WNIJEfECcDJwLXA3cFlE\nLCozh5mZdZ5Sz0FFxPQ6068BrhnodiVNA6ZNnDhxoJswM7OK68hbHUXEvIiYMWpU9S9DNTOzgenI\nAmVmZkOfC5SZmVWSC5SZmVVS6bc6KpOkx4EH12ITo4EnBilOq3RiZnDuVurEzNCZuTsxM7Q/93YR\nsWV/C3V0gVpbkm5p5n5QVdKJmcG5W6kTM0Nn5u7EzNA5uX2Iz8zMKskFyszMKmm4F6jZ7Q4wAJ2Y\n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\n+ibpMOBtuQuEx3mp6/A+RcRySTNJ3T0IuDoi+utu5ShSS6joB3n6cuBr+fnXAa4mHQLcH/h8blH9\nFXh/sy/UbLD4buZmZlZJPsRnZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV\n5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlZmaV5AJlw1Luxv2sAa77LkkPSeqR9MbBzmZmiQuU\nlUbSXpJ+Lalb0lOSfiVp93bnGgT/CZwcESMj4va12ZCk1+RCV3uEpJWF8bc1Kqa9ln9S0vWS3r02\nmdpJUpekP0naoNf0cZK+L+mJ/HlaKOm4NsW0FnGBslJI2hS4CvgvUlfiY4FP8vIeaJvdlnJPtlWx\nHbBoMDYUEX/IhW5kRIzMk99QmPaLJjbzhrzuTsBFwFckfWIw8g22Ru+lpPHA20i9DR/aa/a3gYdI\n+34L4D3Ao6UFtUqo0n96G1peCxARl0bEixHxl4i4LiLuApB0XG5RfSX/RXyPpH1rK+e/pM+W9Cvg\nz8D2kkZJukDScknLJJ2Ve5VF0g6SfpZbEU9IukTSZoXtvVHSbZJWSPousGG94Lnn2zMkPSjpMUnf\nys+9gaQeYARwp6T76qz/t5J+kluNj0o6PU8fIel0SfflHLdK2nat93QWEU9ExLdJnQueJmmL/LzH\nSbo/P+cDko6uk3sDSV+S9Mf8+FKtJSPpbknvKCy7rqTHlbqFR9KeubX8tKQ7lbqtry37iveyzks4\nBvgtqcge22ve7sBFEbEyIl6IiNsj4kd5+xtK+k5+75+WNF/SmDXdf1ZBEeGHH4P+IPUc+yRwMXAQ\n8Ope848DXgA+TOpC/d1AN7B5nt9F6oX2b0k9P69H6gX268DGwFakHmpPystPBPYDNgC2BH4OfCnP\nWx94sPBcR5B6iT2rTvb3AktIX6QjgcuBbxfmBzCxzrqbkHqp/QipCG4C7JHn/TuwgNTSEfAGYIte\n679i26Qv7HpZ+1p+vbxvD8r76hlgpzxva+Bv62zrU6QCsVXeh78GPp3nfRy4pLDsIcDdeXhsfq8P\nJv3Ru18e37Lee1nn+ZcAHwDelN+fMYV5PwV+ReoF+DW91jsJmAe8ivTHw5uATdv9f8CPtX+0PYAf\nQ/cBvD5/uT6cvzCvrH3pkArUH8m9OudpNwPvycNdwKcK88aQDg9uVJg2HbihznO/E7g9D+/dx3P9\n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\nzKySXKDMzKySXKDMzKySXKDMzKySXKDMzKySOrJASZomaXZ3d3e7o5iZWUk6skD5buZmZkNfRxYo\nMzMb+lygzMysklygzMysklygzMysklygzMysklygzMysklygzMysklygzMysklygzMysklygzMys\nklygzMysklygzMysklygzMysklygzMysklygzMysklygzMysklygzMysklygzMysktZtd4AaSRsD\n/w08D3RFxCVtjmRmZm1UagtK0oWSHpO0sNf0AyUtlrRE0sw8+XBgbkScCBxaZi4zM6u+sg/xXQQc\nWJwgaQTwVeAgYGdguqSdgXHAQ3mxF0vOZWZmFaeIKPcJpPHAVRGxSx5/C3BmRByQx0/Liz4M/Cki\nrpI0JyKOqrO9GcAMgDFjxrxpzpw5A87W09PDA93N18JJY0fVnbdgWfeAcxS32992xmwEj/6l/zxV\n09PTw8iRI0vZdu99Npj7pczcZenEzNCZuTsxM7Q/99SpU2+NiMn9LdeOc1BjeamlBKkw7QGcB3xF\n0iHAvHorR8RsYDbA5MmTY8qUKQMO0tXVxaxfrmx6+aVH13+u42ZePeAcxe32t52PTHqBWQvW7TdP\n1XR1dbE271UjvffZYO6XMnOXpRMzQ2fm7sTM0Dm5K3ORRESsBI5vdw4zM6uGdlxmvgzYtjA+Lk8z\nMzNbrR0Faj6wo6QJktYHjgKuXJMNSJomaXZ398DP+5iZWbWVfZn5pcBvgJ0kPSzphIh4ATgZuBa4\nG7gsIhatyXYjYl5EzBg1qnMuEjAzszVT6jmoiJheZ/o1wDVlPreZmXU23+rIzMwqqSMLlM9BmZkN\nfR1ZoHwOysxs6OvIAmVmZkNf6bc6KpOkx4EH12ITo4EnBilOq3RiZnDuVurEzNCZuTsxM7Q/93YR\nsWV/C3V0gVpbkm5p5n5QVdKJmcG5W6kTM0Nn5u7EzNA5uX2Iz8zMKskFyszMKmm4F6jZ7Q4wAJ2Y\nGZy7lToxM3Rm7k7MDB2Se1ifgzIzs+oa7i0oMzOrKBcoMzOrpGFZoCQdKGmxpCWSZrY7TyOSlkpa\nIOkOSbfkaZtL+omke/O/r65AzgslPSZpYWFanzmVnJf3/12SdqtQ5jMlLcv7+w5JBxfmnZYzL5Z0\nQJsybyvpBkm/k7RI0ql5etX3db3cVd/fG0q6WdKdOfcn8/QJkm7K+b6buw5C0gZ5fEmeP75CmS+S\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14bfd89f98>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(nrows=len(tld_groups))\n", + "\n", + "for i, group in enumerate(tld_groups): \n", + " ax = df_asns[df_asns.tld.isin(tld_groups[group])].groupby('asn').tld.nunique().hist(bins = int((maxc - minc) / 4), \n", + " range=(minc, maxc),\n", + " figsize = (6, 4 * len(tld_groups)),\n", + " ax = axes[i])\n", + " \n", + " ax.set_yscale('log')\n", + " set_text(ax, 'Spread of {} over ASs'.format(group), 'Number of ASs', 'Number of TLDs per AS')\n", + " \n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Reachability" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "data_reach = read_json('data/data_reach.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_reach = pd.DataFrame(data_reach)" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def xyz(df, x, y, z, columns, index):\n", + " data = [df.loc[df[x] == p].loc[df[y] == q][z].count()\n", + " for p in [True, False] for q in [True, False]]\n", + "\n", + " df_new = pd.DataFrame(data,\n", + " columns = columns,\n", + " index = index)\n", + " \n", + " return df_new" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x = 'tcp'\n", + "y = 'udp'\n", + "z = 'ns'\n", + "columns = ['protocols']\n", + "index = ['tcp + udp', 'tcp', 'udp', 'none']\n", + "\n", + "df_reach_all = xyz(df_reach, x, y, z, columns, index)\n", + "df_reach_ipv4 = xyz(df_reach.loc[df_reach.ip.str.contains('\\.')], x, y, z, columns, index)\n", + "df_reach_ipv6 = xyz(df_reach.loc[df_reach.ip.str.contains(':')], x, y, z, columns, index)\n", + "df_reach_old = xyz(df_reach[df_reach.tld.isin(old_tlds)], x, y, z, columns, index)\n", + "df_reach_new = xyz(df_reach[df_reach.tld.isin(new_tlds)], x, y, z, columns, index)\n", + "df_reach_cctlds = xyz(df_reach[df_reach.tld.isin(cctlds)], x, y, z, columns, index)\n", + "df_reach_gtlds = xyz(df_reach[df_reach.tld.isin(gtlds)], x, y, z, columns, index)" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nFrsSbp+3mNHHXNbsMMxsNTR34u7NDqEyfAVlZmaV5ARlZmaV5ARlZmaV5ARlZmaV5ARlZmaV5ARl\nZmaV5ARlZmaV5ARlZmaV5ARlZmaV5ARlZmaV5ARlZmaV5ARlZmaV1GMTlKTRkuZI+r2kOyVdIam/\npDGSbpR0m6SLJQ3L9adJOkHSdEn3SnpvXt9b0k8lzcjbHNHcV2ZmZtCDE1S2KfCbiNgCWATsA5wN\nfDMitgZuB75bqN8nIrYHvlxYfxiwOCK2A7YDPiNpo/oDSTpc0kxJM5e+sLi8V2RmZkDPT1APRcTs\nPD8L2AQYGhHX5nVnAeML9S8q1B2d53cBPiFpNnATMIKU+JYTEadGxNiIGNt7wJCufRVmZvYGPf15\nUC8X5pcCQxusv5Rlr13AkRFxeRfHZmZmq6CnX0HVWww8U7u/BBwMXNtBfYDLgc9J6gsg6W2SBpYY\no5mZNaCnX0G15ZPAyZIGAA8Ch3ZS/zRSc9/NkgQ8BexdaoRmZtapHpugImIusGVh+WeF4h3bqD+h\nMP80+R5URLwGfCtPZmZWEatbE5+Zma0mnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDM\nzKySnKDMzKySeuwXdZtpq3WHMHPi7s0Ow8xsteYrKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMz\nqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQn\nKDMzq6ROnwclaSzwXmAU8CJwB3BlRDxTcmxmZtbC2r2CknSopJuBY4H+wD3Ak8A44H8lnSVpg+4J\n08zMWk1HV1ADgPdExIttFUoaA2wKPFJGYGZm1traTVAR8ZuONoyI2V0fjpmZWdJpJwlJJ0oaLKmv\npKskPSXpoO4IzszMWlcjvfh2iYglwB7AXOCtwNfLDMrMzKyRBFVrBtwd+FNELC4xHjMzM6CBbubA\nVEl3k7qYf07S2sBL5YZlZmatrtMrqIg4Bng3MDYiXgFeAPYqOzAzM2ttHX0PalxtPiIWRsTSPP98\nRMzPHSe27I4gzcys9XTUxLePpBOBvwGzgKeAfqROEu8HNgS+VnqEZmbWkhQR7RdKw4F9gPcA65Du\nQ80BLouI67slwgpac51N4+XH72t2GGZmPZKkWRExtrN6HXaSiIiFwO/zZGZm1m3aTVCSvtrRhhFx\n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\npZeG33EBrgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14be987978>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_reach_all.protocols.plot.barh()\n", + "ax.set_xlabel('Number of name servers')\n", + "ax.set_ylabel('Supported protocol(s)')\n", + "ax.set_title('Supported protocols of TLD name servers')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/reachability.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nSR0DFpDe+z+vbsARsQzYk/TaPkU6n2uddOr1AL6Syy0i/cM9Nu/nyrzdb/P7cDepA1J7fkNqGvtN\nIablpHNmNOl9qiWEwS3tIPt34J78Gp8JHBwRL7dS9mzSObO6Wor5pYiYX3uQkvcrEfFcYbtD8rEr\no9bbw9YikqaSLoCe28K6UaQPVe8O/GZeGkkXkDphnNzsWMw6Q66R30HqaPR0Jx3zI6Rehq124W+G\ntf2HjWZmXUpEvEpqZu7MY14NXN2Zx2yEm/jMzKyS3MRnZmaV5BqUmZlVkq9BrYYRI0bEqFGjmh2G\nmVmXNHPmzAURsV575ZygVsOoUaOYMWNGs8MwM+uSJNWP3tIiN/GZmVklOUGZmVklOUGZmVklOUGZ\nmVklOUGZmVklOUGZmVklOUGZmVklOUGZmVklOUGZmVklOUGZmVklOUGZmVklOUGZmVklOUGthrvm\nLWHU+GsYNf6aZodiZrbWcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NK\ncoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NK6rIJStIoSXMk/UrSPZKul9RP0mhJt0qaLelK\nSUNz+amSTpM0TdIDkt6Xl/eU9CNJ0/M2xzT3mZmZGXThBJVtAfwiIrYGFgMHABcBX4+I7YC7gG8V\nyveKiJ2AEwrLjwKWRMSOwI7AZyVtWn8gSUdLmiFpxvKXlpT3jMzMDOj6CerRiJiVp2cCmwNDIuKm\nvOxCYGyh/B8KZUfl6T2BT0qaBdwGDCclvpVExDkRMSYixvTsP7hjn4WZmb1Fr2YHsIZeLUwvB4Y0\nWH45K567gOMi4roOjs3MzNZAV69B1VsCPF+7vgQcDtzURnmA64BjJfUGkPROSQNKjNHMzBrQ1WtQ\nLfkUcJak/sAjwJHtlD+X1Nx3uyQBzwEfLTVCMzNrV5dNUBExF9imMP/jwupdWig/rjC9gHwNKiLe\nAL6RH2ZmVhFrWxOfmZmtJZygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMys\nkrrsD3WbadsNBjNjwj7NDsPMbK3mGpSZmVWSE5SZmVWSE5SZmVWSE5SZmVWSE5SZmVWSE5SZmVWS\nE5SZmVWSE5SZmVWSE5SZmVWSE5SZmVWSE5SZmVWSE5SZmVWSE5SZmVWSE5SZmVWSE5SZmVVSu/eD\n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\npQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14bfe75b00>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_reach_ipv4.protocols.plot.barh()\n", + "ax.set_xlabel('Number of name servers')\n", + "ax.set_ylabel('Supported protocol(s)')\n", + "ax.set_title('Supported protocols of TLD name servers (IPv4)')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/reachability_ipv4.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nU5CuN96ZP4fHgNN6em+B/8nzPlY1fSzpgGJ2/mxvZnFHo9ffi0L5c0g9M18g/VRgtxrv7ZeA31V9\ndt324luGmAcAv83vzWwK/9t5/uXALo34TlveV6W3h61EJE0h/YOc2sW8caRusQOi947MG0bSGaSk\neESrYzFrhnxGfjupo9GTTdrmFsBJEdHd9dGWWNl/2Ghm1lYiNbFt1uRtziC1LpSKr0GZmVkpuYnP\nzMxKyWdQZmZWSr4GtRxGjx4d48aNa3UYZmZtadq0ac9ExJieyjlBLYdx48bR2dnZ6jDMzNqSpOq7\nt3TJTXxmZlZKTlBmZlZKTlBmZlZKTlBmZlZKTlBmZlZKTlBmZlZKTlBmZlZKTlBmZlZKTlBmZlZK\nTlBmZlZKTlBmZlZKTlBmZlZKvlnscrjziQWMO+zyVodhZtYSs475cFO24zMoMzMrJScoMzMrJSco\nMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMr\npbZNUJLGSZop6RRJd0u6UtJqksZLulnSDEkXSxqRy0+RdKykqZLul/TuPL2fpJ9KujUvc1Bra2Zm\nZtDGCSrbGDghIt4KzAd2B84Cvh0RWwB3At8rlO8fEdsAXy1MPwBYEBFbA1sDn5O0fvWGJB0oqVNS\n58KXFjSuRmZmBrR/gno4Iqbn4WnAhsDwiLguTzsTmFgof1Gh7Lg8/EHgU5KmA7cAo0iJbwkRcXJE\ndERER7/Vh/VuLczMbCnt/jyofxeGFwLD6yy/kMV1F3BwRFzRy7GZmdkKaPczqGoLgGcr15eAfYHr\napQHuAL4gqQBAJLeLGlwA2M0M7M6tPsZVFc+DZwoaXXgIWD/HsqfSmruu02SgDnAbg2N0MzMetS2\nCSoiZgGbF8Z/Vpi9XRflJxWGnyFfg4qIRcB38svMzEpiZWviMzOzlYQTlJmZlZITlJmZlZITlJmZ\nlZITlJmZlZITlJmZlZITlJmZlZITlJmZlVLb/lC3ld621jA6j/lwq8MwM1up+QzKzMxKyQnKzMxK\nyQnKzMxKyQnKzMxKyQnKzMxKyQnKzMxKyQnKzMxKyQnKzMxKyQnKzMxKyQnKzMxKyQnKzMxKyQnK\nzMxKyQnKzMxKyQnKzMxKyQnKzMxKqcfnQUnqAN4NjAVeBu4CroqIZxscm5mZ9WHdnkFJ2l/SbcDh\n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\nJyhb6UkKST8vjB8q6aheWvcZkvboueQKb+dj+c7U1zZ6W2Zl4QRlfcG/gY9KGt3qQIoKd12oxwHA\n5yLivY1yDetUAAAEgUlEQVSKp5mWse69vry1Byco6wteA04GvlY9o/oMSNIL+e8kSddJukTSQ5KO\nkbS30vOc7pS0YWE1O0jqlHR/vk9d5aawP5V0a37OzkGF9f5d0qWkX/hXx7NXXv9dko7N044k/WD5\n95J+WlV+kqQpWvz8n3Pz3TeQdGTe/l2STi5MnyLp/+WYZ0raWtJFSs/9Obqw7n1yfadLOklSvy7i\nPUbpWV0zJP0sTxsj6cK87VslvStPP0rS2ZJuBM6WdLOktxbWNUVSR76zw2l527dL2jXP30/SpZKu\nAa6WtKak63N8d0l6d/e7gLWlVvw62C+/mvkCXgCGkh6pMAw4FDgqzzsD2KNYNv+dBMwnPXpgIOk+\nZN/P8w4BflFY/m+kg72NSXfuGAQcCByRywwk/bJ//bzeF4H1u4hzLPAoMIZ0089rgN3yvCkUfuVf\nWGYS6e7ga+cY/kG68SnkuwXk4bOBjxTWdWyhLv8q1PNx0l0H3gJcBgzI5X4LfKpq26NId4Co/OB/\neP77v4UY1iXdpgrgKGAasFoe/1rhPS0+AuLHwD6VdZLu3DIY2C/HV7kLwjdYfNeHfsCQVu9rfvXu\ny6fJ1idExHOSzgK+Arxc52K3Rn5EgaQHgSvz9DuBYlPbHyNiEfBPSQ+R7lD+QWCLwtnZMFIC+w8w\nNSIe7mJ7WwNTImJO3ua5pIdP/rmHOKdGxON5memkZ4HdALxX0rdIz54aSbqNz2V5mco9JO8E7i7U\n8yHSTUInAO8Abs0nXqux+AajFQuAV0hndpNJz4UC2AHYLC8HMFTpbvQAl0ZE5f3/I+k9/R7wcdKN\nTSG9d7tIOjSPDyIlOoCrImJeHr4VOE3pZsJ/jojpPbxP1macoKwv+QXpIYGnF6a9Rm7qlrQK6Qmk\nFf8uDC8qjC9iyf+d6vuFBekeZwdHxBI32JQ0iXQG1ZuKcS4E+ksaRDrr6YiIx3KnkEFdLLOIpevZ\nnxT/mRFxeHcbjYjXJG1DuiHpHsCXSXc2XwXYLiJeKZbPCevFwvJPSJoraQtgT+DzlaLA7hFxX9Xy\n21Ytf73SYzE+DJwh6fiIOKu7eK39+BqU9Rn5yPuPpA4HFbNIZwoAu5Aexb6sPiZplXxdagNSs9cV\nwBfy0T2S3qx0p+xapgLvkTQ6X+/ZC7huOeKBxcnomXz2sqw9Da8G9pD0BgBJIyWtVyyQ1zssIv5C\naq57e551JXBwodz4Gts5n/Tgw2ERMSNPuwI4uHDNbMuuFszxPBURpwCnkh4rYSsRn0FZX/Nz0pF+\nxSnAJZLuIF1LWp6zm0dJyWUo8PmIeEXSqaSmttvyF+0cYLdaK4mIJyUdRnpshYDLI+KSWsvUWNd8\nSaeQ7po+m9QctizL3yPpCNJTZlch3Rn/S8AjhWJDSO/doBzv1/P0rwAnSJpB+o65nsVnR9UuID1L\n6oeFaT8kne3OyNt+GNi5i2UnAd+U9CrpOuOnlqWOVn6+m7mZmZWSm/jMzKyUnKDMzKyUnKDMzKyU\nnKDMzKyUnKDMzKyUnKDMzKyUnKDMzKyU/j9m/kpwx4JtvgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c1f962e8>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_reach_ipv6.protocols.plot.barh()\n", + "ax.set_xlabel('Number of name servers')\n", + "ax.set_ylabel('Supported protocol(s)')\n", + "ax.set_title('Supported protocols of TLD name servers (IPv6)')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/reachability_ipv6.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nSU5QZmZWSU5QZmZWSU5QZmZWSR4sdjXMX7SMcZOvbHUYZtYkC6fs1eoQDLegzMysopygzMyskpyg\nzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMys\nkto2QUkaJ2mBpDMk3SFphqShksZLulHSPEmXSVo/158l6XuSZkv6k6R35eUDJX1f0s15nSNbu2dm\nZgZtnKCybYCfRsRbgaeA/YBzgS9HxPbAfOBrhfrrRMQ7gGMLyz8OLIuInYCdgE9K2rL+iSQdIalL\nUteK55Y1b4/MzAxo/wR1f0TMzdNzgK2B0RFxbV52DjCxUP/SQt1xefr9wKGS5gI3AWNIie8VIuL0\niJgQERMGDhvVt3thZmav0u73g/prYXoFMLpk/RWs3HcBR0fEVX0cm5mZrYF2b0HVWwY8WTu/BBwC\nXNtDfYCrgE9JGgQg6Q2ShjcxRjMzK6HdW1CNfBT4maRhwH3A4b3UP5PU3XeLJAGPAx9oaoRmZtar\ntk1QEbEQ2LYw/4NC8S4N6k8qTC8hn4OKiJeBr+SHmZlVxNrWxWdmZmsJJygzM6skJygzM6skJygz\nM6skJygzM6skJygzM6skJygzM6skJygzM6uktv2hbittt8kouqbs1eowzMzWam5BmZlZJTlBmZlZ\nJTlBmZlZJTlBmZlZJTlBmZlZJTlBmZlZJTlBmZlZJTlBmZlZJTlBmZlZJTlBmZlZJTlBmZlZJTlB\nmZlZJTlBmZlZJTlBmZlZJTlBmZlZJfV6PyhJE4B3ARsDzwO3AzMj4skmx2ZmZh2s2xaUpMMl3QIc\nDwwF7gYeA3YD/kfSOZI2758wzcys0/TUghoGvDMinm9UKGk8sA3wYDMCMzOzztZtgoqIn/a0YkTM\n7ftwzMzMkl4vkpB0sqSRkgZJulrS45IO7o/gzMysc5W5iu/9EfE0sDewEHg98KVmBmVmZlYmQdW6\nAfcCfhURy5oYj5mZGVDiMnPgCkl3kS4x/5SkDYEXmhuWmZl1ul5bUBExGfgHYEJEvAg8B+zb7MDM\nzKyz9fQ7qN1q0xHxRESsyNPPRsTifOHEtv0RpJmZdZ6euvj2k3Qy8HtgDvA4MIR0kcR7gC2ALzY9\nQjMz60iKiO4LpQ2A/YB3AhuRzkMtAK6MiOv7JcIKGrzRNvHXR/7c6jDMzNqSpDkRMaG3ej1eJBER\n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\nr6lpa28AAAAASUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c1dd26a0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_reach_old.protocols.plot.barh()\n", + "ax.set_xlabel('Number of name servers')\n", + "ax.set_ylabel('Supported protocol(s)')\n", + "ax.set_title('Supported protocols of old TLD name servers')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/reachability_old.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nc9vFeRmmAVu24/us0Zdy4LaGkzSNdBHFL2rUjSddcjowembPvKkknUX6IB/X7ljMrHncxWdmZqXk\nBGVmZqXkLj4zMyslH0GZmVkprek30myKMWPGxPjx49sdhplZrzRz5swnImJsV+2coFbB+PHj6ejo\naHcYZma9kqTqO7XU5C4+MzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJSco\nMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJd8sdhXMnreY8VOubHcYZtaHzZ26T7tDaDofQZmZ\nWSk5QZmZWSk5QZmZWSk5QZmZWSk5QZmZWSk5QZmZWSk5QZmZWSk5QZmZWSk5QZmZWSk5QZmZWSk5\nQZmZWSk5QZmZWSn12gQlabykOZJOl3SXpKslrS1pW0k3SbpD0qWSRub20yR9W9IMSf+Q9OZc3l/S\nyZJuye85or1LZmZm0IsTVLY5cEpEbAUsAg4AzgG+GBHbALOBrxTaD4iInYCjC+UfARZHxI7AjsDH\nJG1cPSNJh0vqkNSx7NnFzVsiMzMDen+C+ldEzMrDM4FNgRERMT2XnQ1MKrS/pNB2fB7eAzhY0izg\nZmA0KfGtJCJOi4gJETGh/+DhPbsUZmb2Mr39eVAvFIaXASMabL+MFcsu4MiIuKqHYzMzs9XQ24+g\nqi0GnqycXwI+BEyv0x7gKuATkgYCSNpC0pAmxmhmZg3o7UdQtRwCnCppMHA/cFgX7X9B6u67VZKA\nx4F3NjVCMzPrUq9NUBExF9i6MP6dQvUuNdpPLgw/QT4HFRHLgS/ll5mZlcSa1sVnZmZrCCcoMzMr\nJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrpV77Q912ev244XRM3afdYZiZrdF8\nBGVmZqXkBGVmZqXkBGVmZqXkBGVmZqXkBGVmZqXkBGVmZqXkBGVmZqXkBGVmZqXkBGVmZqXkBGVm\nZqXkBGVmZqXkBGVmZqXkBGVmZqXkBGVmZqXkBGVmZqXU5fOgJE0A3gysBzwH3AlcExFPNjk2MzPr\nwzo9gpJ0mKRbgWOBtYF7gMeAicD/STpb0oatCdPMzPqaekdQg4E3RcRztSolbQtsDjzYjMDMzKxv\n6zRBRcQp9d4YEbN6PhwzM7Oky4skJJ0kaZikgZKulfS4pINaEZyZmfVdjVzFt0dELAH2BeYCmwFf\n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\nBwyTNKL6zZIOl9QhqWPZs76buZlZszVyBPUt4DZJfyHdTWIS6chkTRJdjBMRpwGnAay17uYvqzcz\ns57VyFV8F5DuZH4JcBGwa0T8ptmB9ZCngKF5+BrgsPwIe6q6+N6XyyYCiyPCh0hmZm3W0FV8pMe9\nTyQdWQwALm1aRD0oIhZIukHSncAfgcuBDkkvAn8AvpSbPi/pNmAg8OH2RGtmZkWNXMX3U2Az8nka\n4AhJu0fEp5oaWQ+JiA9WFU2t0ey8iDi6FfGYmVljGjmC2g14XURUHvl+NnBXU6MyM7M+r5EEdS+w\nIfBAHt8gl60RImJyu2MwM7OXayRBDQXmSKr8eHVH0nmcywEiYr9mBWdmZn1XIwnq+KZHYWZmVqXL\nBBUR0yW9GtiJdBXfLRHxSNMjMzOzPq3L30FJ+igwg/TgwvcAN0nypdhmZtZUjXTxfQHYLiIWAEga\nDdxIumedmZlZUzRyL74FpDsyVDyVy8zMzJqm0cvMb5Z0Gekc1P7AHZI+BxAR32tifKX0+nG99X65\nZma9RyMJ6r78qrgs/x1ao62ZmVmPaOQqvq+2IhAzM7OiRu7F9xdqP35it6ZEZGZmRmNdfMcUhgcB\nBwBLmxOOmZlZ0kgX38yqohsKtz0yMzNrika6+IoP9usH7EDvfey7mZn1Eo108c0knYMSqWvvX8BH\nmhmUmZlZI118G7ciEDMzs6JO7yQhacd8k9jK+MGSLpP0o6puPzMzsx5X71ZHPwdeBJA0ifSo9HOA\nxcBpzQ/NzMz6snpdfP0jYmEefh9wWkRcDFwsaVbzQzMzs76s3hFUf0mVBPY24M+FukYurjAzM1tl\n9RLNBcB0SU8AzwF/BZC0Gambz8zMrGk6TVAR8Q1J1wLrAldHROV2R/2AI1sRnJmZ9V11u+oi4qYa\nZf9oXjhmZmZJIw8sNDMzazknKDMzKyUnKDMzKyUnKDMzKyUnKDMzKyUnKDMzKyUnKDMzKyUnKDMz\nKyUnKDMzKyUnKDMzKyUnKDMzKyUnKDMzKyU/12kVzJ63mPFTrmx3GGZmbTF36j4tmY+PoMzMrJSc\noMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJScoMzMrJSakqAkjZD0yWZM\nu6dImitpTLvjMDOz2pp1BDUC6PEEJekESYf29HTNzKx8mpWgpgKbSpol6WQASV+UNFvS7ZKm5rJp\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c1d1bfd0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_reach_new.protocols.plot.barh()\n", + "ax.set_xlabel('Number of name servers')\n", + "ax.set_ylabel('Supported protocol(s)')\n", + "ax.set_title('Supported protocols of new TLD name servers')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/reachability_new.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\ncoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIy\nM7NKcoIyM7NK8mCxy2HW3IWMmnB5q8MwsxUwZ+LurQ7BuuAjKDMzqyQnKDMzqyQnKDMzqyQnKDMz\nqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzq6S2TVCSRkma\nLenXku6UdJWk1SWNlnSzpNslXSRpzVx/iqSTJU2V9E9J78rL+0r6gaRpeZ0jWtsyMzODNk5Q2SbA\nzyNic2ABsA9wDvDViNgKmAWcWKi/SkRsB3yhsPwwYGFEbAtsC3xS0ob1TyTpcEnTJU1f/MLC5rXI\nzMyA9k9QD0TEzDw9A9gIGBoR1+dlZwPjCvUvLNQdlaffD3xU0kzgFmA4KfG9RkScHhFjImJM3wFD\nurcVZmb2Ou1+P6iXC9OLgaEl6y9madsFHBkRV3ZzbGZmtgLa/Qiq3kLg6dr5JeBg4PoG9QGuBD4t\nqR+ApLdIGtjEGM3MrIR2P4LqyMeAX0kaANwPHNpF/TNI3X23ShLwJLB3UyM0M7MutW2Ciog5wBaF\n+R8WinfooP74wvRT5HNQEbEEOC4/zMysIla2Lj4zM1tJOEGZmVklOUGZmVklOUGZmVklOUGZmVkl\nOUGZmVklOUGZmVklOUGZmVklte0PdVtpy3WGMH3i7q0Ow8xspeYjKDMzqyQnKDMzqyQnKDMzqyQn\nKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMz\nqyQnKDMzqyQnKDMzq6Qu7wclaQzwLmAk8CJwB3B1RDzd5NjMzKwX6/QIStKhkm4FjgVWB+4BngDG\nAv8r6WxJ6/dMmGZm1ts0OoIaAOwUES92VChpNLAJ8FAzAjMzs96t0wQVET9vtGJEzOz+cMzMzJIu\nL5KQ9H1JgyX1k3SNpCclHdQTwZmZWe9V5iq+90fEM8AewBxgY+CYZgZlZmZWJkHVugF3B/4YEQub\nGI+ZmRlQ4jJz4DJJd5MuMf+0pLWAl5oblpmZ9XZdHkFFxATgncCYiHgVeAHYq9mBmZlZ79bod1Bj\na9MRMT8iFufp5yPisXzhxBY9EaSZmfU+jbr49pH0feAKYAbwJNCfdJHEe4ANgC83PUIzM+uVFBGd\n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\naRF1o4iYJ+kmSXcAfwEuAaZLegX4M3BcrvqSpNuAfsDHWxOtmZkVlbmK7xfAxuTzNMARknaJiM82\nNbJuEhEH1C2a2EG1yRHxhZ6Ix8zMyilzBLUz8LaIqN3y/WzgzqZGZWZmvV6ZBHUvsD7wYJ5fLy9b\nKUTE+FbHYGZmr1cmQQ0CZkuq/Xh1W9J5nEsAImLPZgVnZma9V5kEdULTozAzM6vTZYKKiOslvQnY\njnQV37SIeKzpkZmZWa/W5e+gJH0CmEq6ceG+wM2SfCm2mZk1VZkuvmOAbSJiHoCk4cDfSGPWmZmZ\nNUWZsfjmkUZkqHk2LzMzM2uaspeZ3yLpYtI5qL2A2yV9CSAiTmlifJW05TpDmD5x91aHYWa2UiuT\noO7Lj5qL899BHdQ1MzPrFmWu4vtGTwRiZmZWVGYsvuvo+PYTOzclIjMzM8p18R1dmO4P7AMsak44\nZmZmSZkuvhl1i24qDHtkZmbWFGW6+Io39usDvIP2ve27mZm1iTJdfDNI56BE6tp7ADismUGZmZmV\n6eLbsCcCMTMzK+p0JAlJ2+ZBYmvzH5V0saSf1nX7mZmZdbtGQx2dBrwCIGkc6Vbp5wALgdObH5qZ\nmfVmjbr4+kbE/Dy9H3B6RFwAXCBpZvNDMzOz3qzREVRfSbUE9l7g2kJZmYsrzMzMllujRHMecL2k\np4AXgb8CSNqY1M1nZmbWNJ0mqIj4jqRrgLWBqyKiNtxRH+DIngjOzMx6r4ZddRFxcwfL/tm8cMzM\nzJIyNyw0MzPrcU5QZmZWSU5QZmZWSU5QZmZWSU5QZmZWSU5QZmZWSU5QZmZWSU5QZmZWSU5QZmZW\nSU5QZmZWSU5QZmZWSU5QZmZWSb6v03KYNXchoyZc3uowzMxaYs7E3XvkeXwEZWZmleQEZWZmleQE\nZWZmleQEZWZmleQEZWZmleQEZWZmleQEZWZmleQEZWZmleQEZWZmldSUBCVpqKTPNGPb3UXSHEkj\nWh2HmZl1rFlHUEOBbk9Qkk6SdEh3b9fMzKqnWQlqIrCRpJmSfgAg6auSZkn6h6SJedkUSafmendI\n2m5Fn7h4ZCRpjKQpeXq4pKsk3SnpDEB5+ShJd0s6V9JsSedLGrCicZiZ2YppVoKaANwXEaMj4hhJ\nuwJ7AdtHxNbA9wt1B0TEaNIR15lNigfgRODGiNgcuAhYv1D2VuAXEfE24Bk6OPqTdLik6ZKmL35h\nYRPDNDMz6LmLJHYBzoqIFwAiYn6h7Ly87AZgsKShxRUlbZmPsGYCnwK+WZuXNHwZYhgHTM7PdTnw\ndKHs4Yi4KU9PBsbWrxwRp0fEmIgY03fAkGV4WjMzWx5VuN1GNJqPiFnAaEjnoIA5ETGpwfYWsTTx\n9u+OGMzMrOc16wjqWWBQYf5q4NDauR1Jwwpl++VlY4GFEbGi/WdzgHfk6X0Ky28ADsjPtSuwZqFs\nfUk75ukDgBtXMAYzM1tBTUlQETEPuClf+PCDiLgCuASYnrvqji5Uf0nSbcCvgMO64em/AZwqaTqw\nuG75OEl3Ah8CHiqU3QN8VtJsUuL6ZTfEYWZmK6BpXXwRcUDd/ETS1X31JkfEF0pu86QSdf4KvKWD\n5fOA99cvl7QGsCgiDioTg5mZ9QyPJGFmZpXU0oskImJ8K58/xzAH2KLVcZiZ2Wv5CMrMzCrJCcrM\nzCrJCcrMzCrJCcrMzCrJCcrMzCrJCcrMzCqpCmPxtZ0t1xnC9Im7tzoMM7OVmo+gzMyskpygzMys\nkpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpygzMyskpyg\nzMyskpygzMyskhQRrY6h7Uh6Frin1XF0oxHAU60Oopu4LdXktlRTq9qyQUSs1VUl325j+dwTEWNa\nHUR3kTR9ZWmP21JNbks1Vb0t7uIzM7NKcoIyM7NKcoJaPqe3OoButjK1x22pJrelmirdFl8kYWZm\nleQjKDMzqyQnKDMzqyQnqGUk6YOS7pF0r6QJrY6nK5LOlPSEpDsKy4ZJulrSv/LfNfNySfppbtvt\nkt7eushfT9J6kq6TdJekOyUdlZe3XXsk9Zc0VdI/clu+kZdvKOmWHPPvJa2al6+W5+/N5aNaGX9H\nJPWVdJuky/J8W7ZF0hxJsyTNlDQ9L2u7fQxA0lBJ50u6W9JsSTu2U1ucoJaBpL7Az4Fdgc2A/SVt\n1tqoujQJ+GDdsgnANRGxCXBNnofUrk3y43Dglz0UY1mLgC9HxGbADsBn8+vfju15Gdg5IrYGRgMf\nlLQDcDLw44jYGHgaOCzXPwx4Oi//ca5XNUcBswvz7dyW90TE6MJvhNpxHwM4FbgiIjYFtia9P+3T\nlojwo+QD2BG4sjB/LHBsq+MqEfco4I7C/D3A2nl6bdIPjwFOA/bvqF4VH8DFwPvavT3AAOBWYHvS\n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\nSUVORK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c1a1b9b0>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_reach_cctlds.protocols.plot.barh()\n", + "ax.set_xlabel('Number of name servers')\n", + "ax.set_ylabel('Supported protocol(s)')\n", + "ax.set_title('Supported protocols of ccTLD name servers')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/reachability_cctlds.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nvQwfPjxGjRrV7DDMzHql6dOnPxURa3VVzwlqBYwaNYq2trZmh2Fm1itJqh59pV3u4jMzs1JygjIz\ns1JygjIzs1JygjIzs1JygjIzs1JygjIzs1JygjIzs1JygjIzs1JygjIzs1JygjIzs1JygjIzs1Jy\ngjIzs1LyYLErYNbchYw67ppmh2FmLW7OhN2bHUJduQVlZmal5ARlZmal5ARlZmal5ARlZmal5ARl\nZmal5ARlZmal5ARlZmal5ARlZmal5ARlZmal5ARlZmal5ARlZmal5ARlZmal1GsTlKRRku6WdLak\n2ZImS1pV0paSbpE0U9KVkobl+lMlfU/SNEn/kvSeXN5X0vcl3ZbXOaK5e2ZmZtCLE1S2MfCziHgH\n8CywL3AB8NWI2AKYBXyzUL9fRGwHHFMo/wSwMCK2BbYFPiVpg+o3knS4pDZJbUtfWFi/PTIzM6D3\nJ6iHImJGnp4ObAQMjYgbctn5wJhC/d8V6o7K07sAh0iaAdwKrElKfMuJiLMiYnREjO47cEjP7oWZ\nmb1Gb38e1H8K00uBoTXWX8qyfRdwVERc28OxmZnZ69DbW1DVFgLPVK4vAQcDN3RSH+Ba4DOS+gNI\n2kTSanWM0czMatDbW1Dt+ThwpqSBwIPAuC7q/4rU3Xe7JAFPAnvXNUIzM+tSr01QETEH2Kww/4PC\n4h3aqT+2MP0U+RpURLwKfC2/zMysJFa2Lj4zM1tJOEGZmVkpOUGZmVkpOUGZmVkpOUGZmVkpOUGZ\nmVkpOUGZmVkpOUGZmVkp9dof6jbT5iOH0DZh92aHYWa2UnMLyszMSskJyszMSskJyszMSskJyszM\nSskJyszMSskJyszMSskJyszMSskJyszMSskJyszMSskJyszMSskJyszMSskJyszMSskJyszMSskJ\nyszMSskJyszMSqnL50FJGg28BxgBvAjcBUyJiGfqHJuZmbWwDltQksZJuh04HlgVuBd4AtgJ+Iuk\n8yWt15gwzcys1XTWghoIvDsiXmxvoaQtgY2BR+oRmJmZtbYOE1RE/KyzFSNiRs+HY2ZmlnR5k4Sk\nUyUNltRf0nWSnpR0UCOCMzOz1lXLXXy7RMQiYA9gDvAW4Mv1DMrMzKyWBFXpBtwd+G1ELKxjPGZm\nZkANt5kDV0u6h3SL+WckrQW8VN+wzMys1XXZgoqI44B3AaMj4hXgBWCvegdmZmatrbPfQe1UmY6I\n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\n8E3g7xHxDuBKYL3CsrcCP4+ItwOLaKf1J+lwSW2S2pa+sLCOYZqZGTTuJomdgXMj4gWAiHi6sGxi\nLrsRGCxpaHFFSZvnFtYM4NPAyZV5SWt2I4YxwEX5va4BniksezQibsrTFwE7Va8cEWdFxOiIGN13\n4JBuvK2Zma2IMjxuIzqbj4hZwJaQrkEBcyLivE62t4RliXdAT8RgZmaNV68W1GJgUGF+CjCucm1H\n0hqFZfvnsp2AhRHxevvP5gDb5Ol9C+U3Ah/L77UrMKywbD1JO+bpjwF/f50xmJnZ61SXBBURC4Cb\n8o0P34+IPwOTgLbcVXdsofpLku4AzgQ+0QNvfxJwuqQ2YGlV+RhJs4F9gEcKy+4FjpR0Nylx/aIH\n4jAzs9ehbl18EfGxqvkJpLv7ql0UEcfUuM3xNdT5G7BJO+ULgF2qyyWtDiyJiINqicHMzBrDI0mY\nmVkpNfUmiYgY28z3zzHMATZrdhxmZrY8t6DMzKyUnKDMzKyUnKDMzKyUnKDMzKyUnKDMzKyUnKDM\nzKyUyjAWX6+z+cghtE3YvdlhmJmt1NyCMjOzUnKCMjOzUnKCMjOzUnKCMjOzUnKCMjOzUnKCMjOz\nUnKCMjOzUnKCMjOzUnKCMjOzUnKCMjOzUnKCMjOzUnKCMjOzUnKCMjOzUlJENDuGXkfSYuDeZsfR\nTcOBp5odxArojXE75sZwzI1Rj5jXj4i1uqrkx22smHsjYnSzg+gOSW29LWbonXE75sZwzI3RzJjd\nxWdmZqXkBGVmZqXkBLVizmp2ACugN8YMvTNux9wYjrkxmhazb5IwM7NScgvKzMxKyQnKzMxKyQmq\nmyR9SNK9ku6XdFyz46mQtK6k6yX9U9JsSUfn8vGS5kqakV+7FdY5Pu/HvZI+2KS450ialWNry2Vr\nSJoi6b7877BcLkk/yTHPlLR1E+J9a+FYzpC0SNIxZTvOks6R9ISkuwpl3T6ukj6e698n6eNNiPn7\nku7JcV0paWguHyXpxcLxPrOwzjb5nLo/75caHHO3z4VGfq50EPNlhXjnSJqRy5t7nCPCrxpfQF/g\nAWBD4A3AncCmzY4rx7Y2sHWeHgT8C9gUGA8c2079TXP8qwAb5P3q24S45wDDq8pOBY7L08cB38vT\nuwF/AgTsANxagvPhcWD9sh1nYAywNXDXih5XYA3gwfzvsDw9rMEx7wL0y9PfK8Q8qlivajvT8n4o\n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\nRK5CYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c19e4208>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_reach_gtlds.protocols.plot.barh()\n", + "ax.set_xlabel('Number of name servers')\n", + "ax.set_ylabel('Supported protocol(s)')\n", + "ax.set_title('Supported protocols of gTLD name servers')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/reachability_gtlds.pdf\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Credibility" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "data_cred = read_json('data/data_cred.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2017-07-12 20:35:45-- https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers-1.csv\n", + "Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'\n", + "Resolving www.iana.org... 192.0.32.8, 2620:0:2d0:200::8\n", + "Connecting to www.iana.org|192.0.32.8|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: unspecified [text/csv]\n", + "Saving to: ‘data/lists/dnssec_algorithm_numbers.csv’\n", + "\n", + "data/lists/dnssec_a [ <=> ] 1.52K --.-KB/s in 0s \n", + "\n", + "2017-07-12 20:35:46 (7.25 MB/s) - ‘data/lists/dnssec_algorithm_numbers.csv’ saved [1559]\n", + "\n" + ] + } + ], + "source": [ + "# Downloads and loads file with algorithm numbers from IANA\n", + "!wget https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers-1.csv -O data/lists/dnssec_algorithm_numbers.csv\n", + "reader = csv.reader(open('data/lists/dnssec_algorithm_numbers.csv', 'r'))" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_cred = pd.DataFrame(data_cred)" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "algorithms = {}\n", + "\n", + "for row in reader:\n", + " k, _, v, _, _, _ = row\n", + " algorithms[k] = v" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "for algorithm_number in algorithms:\n", + " df_cred['algorithm'] = df_cred['algorithm'].replace(algorithm_number, algorithms[algorithm_number])" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'pie' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-129-2631ccf72e92>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0max\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf_cred\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0malgorithm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpie\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfigsize\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpie\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mautopct\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'%.2f'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_ylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_xlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_title\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Distribution of DNSSEC algorithms'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_figure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'pie' is not defined" + ] + } + ], + "source": [ + "ax = df_cred.algorithm.value_counts().plot.pie(figsize = pie, autopct='%.2f')\n", + "ax.set_ylabel('')\n", + "ax.set_xlabel('')\n", + "ax.set_title('Distribution of DNSSEC algorithms')\n", + "fig = ax.get_figure()\n", + "# fig.tight_layout()\n", + "fig.savefig(\"imgs/dnssec_algs.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dnssec_record_counts = [df_cred.loc[df_cred.dnskey == x].loc[df_cred.ds == y].count().tld \n", + " for x in [True, False] for y in [True, False]]\n", + "\n", + "df_cred2 = pd.DataFrame(dnssec_record_counts, \n", + " columns = ['dnssec_record_counts'],\n", + " index = ['ds + dnskey', 'ds', 'dnskey', 'none'])" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\ndhhmZk0n6bnatXyLz8zMKsoJyszMKskJyszMKskJyszMKskJyszMKskJyszMKskJyszMKskJyszM\nKskJyszMKskJyszMKskJyszMKskJyszMKsmDxTbI9Bdn0zbuxqYdf+bJuzXt2GZmi8ItKDMzqyQn\nKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMzqyQnKDMz\nqyQnKDMzq6SWSlCS2iQ9JulcSY9IulXSYEmjJP1F0kOSrpG0Qq5/t6RTJE2S9ISkbXJ5f0mnSbo/\nb3N4c8/MzGzJ01IJKlsfODMiPg68CewLXAT8ICI+CUwHTizUHxARWwLHFMq/AcyOiC2ALYBDJa3d\n8UCSDpM0WdLkBW/PLu+MzMyWQK2YoJ6NiGl5fgqwLjAsIu7JZRcC2xbqX12o25bndwLGSJoG3Aes\nREp8HxIR50TE6IgY3X+Zob17FmZmS7hWfB/U/ML8AmBYnfUX8MH1EnBURNzSy7GZmVnWii2ojmYD\nb7Q/XwK+BtzTTX2AW4AjJQ0EkLSBpGVLjNHMrOW0YguqM2OBsyQtAzwDHFKj/nmk231TJQl4Fdi7\n1AjNzFpMSyWoiJgJfKKw/NPC6q06qf/Zwvxr5GdQEfE+8MM8mZlZCXyLz8zMKskJyszMKskJyszM\nKskJyszMKskJyszMKskJyszMKskJyszMKskJyszMKqmlvqjbTBuvNpTJJ+/W7DDMzPoMt6DMzKyS\nnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDM\nzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKySnKDMzKyS\nnKDMzKySnKDMzKySBtRTSdJoYBtgVeAfwMPAbRHxRomxmZlZC+u2BSXpEElTgfHAYGAG8AqwNXC7\npAslrVl+mGZm1mpqtaCWAT4TEf/obKWkUcD6wPO9HZiZmbW2bhNURJxZY/203g3HzMwsqauThKRT\nJS0vaaCkOyS9KumrZQdnZmatq95efDtFxBxgd2AmsB7w/bKCMjMzqzdBtd8K3A24MiJmlxSPmZkZ\nUGc3c+AGSY+TupgfKWll4J/lhWVmZq2urhZURIwD/gUYHRHvAm8De5UZmJmZtbZa34Paun0+Il6P\n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\nAOdAet1G40M0M+u7uu1mHhEv55/PdTY1JsSmuxfYW9JgSUNICakfsEZE3AX8ABiKvxdmZtar6h2L\nbyvgDOBjwFJAf2BeRCxfYmyVEBFTJV0OPEjqJHE/6XbnxZKGAgJ+FRFvNjFMM7MlTr0jSfya1FHg\nSmA0MAbYoKygqiYifgL8pEPxac2IxcysVdQ7kgQR8RTQPyIWRMQFwC7lhWVmZq2u3hbU25KWAqZJ\nOhV4mR4kNzMzs56qN8l8Ldf9FjAPWAPYt6ygzMzM6m1BbQ7cGBFzgB+VGI+ZmRlQfwtqD+AJSb+T\ntLukehObmZnZIqkrQUXEIcB6pF58BwJPSzqvzMDMzKy11d0Sioh3Jd1E+g7QYGBv4JtlBWZmZq2t\nrhaUpC9Imgg8SeoccR7w0RLjMjOzFldvC2oMcDlweETMLzGeJdbGqw1l8sm7NTsMM7M+o9436h5Y\nXJa0NXBgRPxbKVGZmVnLq/sZlKRNga8AXwKeBa4uKygzM7Na74PagNRr70DgNdJtPkXE5xoQm5mZ\ntbBaLajHgT8Cu+ex+JB0bOlRmZlZy6vVi28f0rh7d0k6V9L2pNdLmJmZlarWCwuvjYgDgA2Bu4Bj\ngI9I+o2knRoRoJmZtaZ6R5KYFxGXRsQewOrAA6Q3yZqZmZWix6/MiIg3IuKciNi+jIDMzMzA73Qy\nM7OKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NK\ncoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKcoIyM7NKGtDs\nAFrF9Bdn0zbuxmaHYWbWK2aevFvpx3ALyszMKskJyszMKskJyszMKskJyszMKskJyszMKskJyszM\nKskJyszMKskJyszMKskJyszMKqkhCUrSBEnfa8BxPivphkXcdqak4b0dk5mZLZpKt6ByYju42XGY\nmVnjlZagJB0n6QlJfwJGFsqPlvSopIck/b4XjrOLpMclTQX2KZRPkHS+pLslPSPp6Fy+rKQbJT0o\n6WFJX+6wv8GSbpJ0aF7+qqRJkqZJOltSf0lfl3R6YZtDJf1icc/FzMw+UEqCkrQ5cAAwCtgV2KKw\nehywaUR8EjhiMY+zNHAusAewOfDRDlU2BHYGtgROlDQQ2AV4KSI2iYhPADcX6i8H/BdwWUScK+lj\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c1959978>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_cred2.dnssec_record_counts.plot.barh()\n", + "ax.set_ylabel('Available record(s)')\n", + "ax.set_xlabel('Number of TLDs')\n", + "ax.set_title('Avaliable records of TLDs')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/dnssec.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dnssec_record_counts = [df_cred[df_cred.tld.isin(new_tlds)].loc[df_cred.dnskey == x].loc[df_cred.ds == y].count().tld \n", + " for x in [True, False] for y in [True, False]]\n", + "\n", + "df_cred2 = pd.DataFrame(dnssec_record_counts, \n", + " columns = ['dnssec_record_counts'],\n", + " index = ['ds + dnskey', 'ds', 'dnskey', 'none'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_cred[df_cred.tld.isin(new_tlds)].loc[df_cred.dnskey == False]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_cred2.dnssec_record_counts.plot.barh()\n", + "ax.set_ylabel('Available record(s)')\n", + "ax.set_xlabel('Number of TLDs')\n", + "ax.set_title('Avaliable records of new TLDs')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/dnssec_new.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dnssec_record_counts = [df_cred[df_cred.tld.isin(old_tlds)].loc[df_cred.dnskey == x].loc[df_cred.ds == y].count().tld \n", + " for x in [True, False] for y in [True, False]]\n", + "\n", + "df_cred2 = pd.DataFrame(dnssec_record_counts, \n", + " columns = ['dnssec_record_counts'],\n", + " index = ['ds + dnskey', 'ds', 'dnskey', 'none'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_cred2.dnssec_record_counts.plot.barh()\n", + "ax.set_ylabel('Available record(s)')\n", + "ax.set_xlabel('Number of TLDs')\n", + "ax.set_title('Avaliable records of old TLDs')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/dnssec_old.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dnssec_record_counts = [df_cred[df_cred.tld.isin(cctlds)].loc[df_cred.dnskey == x].loc[df_cred.ds == y].count().tld \n", + " for x in [True, False] for y in [True, False]]\n", + "\n", + "df_cred2 = pd.DataFrame(dnssec_record_counts, \n", + " columns = ['dnssec_record_counts'],\n", + " index = ['ds + dnskey', 'ds', 'dnskey', 'none'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_cred2.dnssec_record_counts.plot.barh()\n", + "ax.set_ylabel('Available record(s)')\n", + "ax.set_xlabel('Number of TLDs')\n", + "ax.set_title('Avaliable records of ccTLDs')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/dnssec_cctlds.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dnssec_record_counts = [df_cred[df_cred.tld.isin(gtlds)].loc[df_cred.dnskey == x].loc[df_cred.ds == y].count().tld \n", + " for x in [True, False] for y in [True, False]]\n", + "\n", + "df_cred2 = pd.DataFrame(dnssec_record_counts, \n", + " columns = ['dnssec_record_counts'],\n", + " index = ['ds + dnskey', 'ds', 'dnskey', 'none'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_cred2.dnssec_record_counts.plot.barh()\n", + "ax.set_ylabel('Available record(s)')\n", + "ax.set_xlabel('Number of TLDs')\n", + "ax.set_title('Avaliable records of gTLDs')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/dnssec_gtlds.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_cred.loc[df_cred.dnskey == False].loc[df_cred.ds]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Performance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "data_perf = read_json('data/data_perf.json')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_perf = pd.DataFrame(data_perf)\n", + "maxc = int(df_perf.rt.max())\n", + "minc = int(df_perf.rt.min())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_perf.rt.hist(bins = 153, range = (0, 1400))\n", + "ax.set_title(\"Mean response times of all TLDs\")\n", + "ax.set_xlabel(\"Response time (ms)\")\n", + "ax.set_ylabel(\"Number of TLDs\")\n", + "fig = ax.get_figure()\n", + "fig.savefig(\"imgs/perf.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_perf[df_perf.tld.isin(new_tlds)].rt.hist(bins = 153, range = (0, 1400))\n", + "ax.set_title(\"Mean response times of new TLDs\")\n", + "ax.set_xlabel(\"Response time (ms)\")\n", + "ax.set_ylabel(\"Number of TLDs\")\n", + "fig = ax.get_figure()\n", + "fig.savefig(\"imgs/perf_new.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_perf[df_perf.tld.isin(old_tlds)].rt.hist(bins = 153, range = (0, 1400))\n", + "ax.set_title(\"Mean response times of old TLDs\")\n", + "ax.set_xlabel(\"Response time (ms)\")\n", + "ax.set_ylabel(\"Number of TLDs\")\n", + "fig = ax.get_figure()\n", + "fig.savefig(\"imgs/perf_old.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_perf[df_perf.tld.isin(gtlds)].rt.hist(bins = 153, range = (0, 1400))\n", + "ax.set_title(\"Mean response times of gTLDs\")\n", + "ax.set_xlabel(\"Response time (ms)\")\n", + "ax.set_ylabel(\"Number of TLDs\")\n", + "fig = ax.get_figure()\n", + "fig.savefig(\"imgs/perf_gtlds.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_perf[df_perf.tld.isin(cctlds)].rt.hist(bins = 153, range = (0, 1400))\n", + "ax.set_title(\"Mean response times of ccTLDs\")\n", + "ax.set_xlabel(\"Response time (ms)\")\n", + "ax.set_ylabel(\"Number of TLDs\")\n", + "fig = ax.get_figure()\n", + "fig.savefig(\"imgs/perf_cctlds.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "maxc = df_perf.timeouts.max()\n", + "minc = df_perf.timeouts.min()\n", + "\n", + "ax = df_perf.timeouts.hist(bins = maxc - minc + 1, \n", + " range = (minc, maxc + 1), \n", + " align = 'left')\n", + "\n", + "ax.set_xlabel(\"Number of timeouts\")\n", + "ax.set_ylabel(\"Number of TLDs\")\n", + "fig = ax.get_figure()\n", + "fig.savefig(\"imgs/perf_timeouts.pdf\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Anycast" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "data_ac = read_json('data/data_ac.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "for datum in data_ac:\n", + " for probe in datum['probes']:\n", + " if datum['probes'][probe]:\n", + " datum['probes'][probe] = np.mean(datum['probes'][probe])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_ac = pd.DataFrame([datum['probes'] for datum in data_ac], index = [datum['ns'] for datum in data_ac]).transpose()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "anycast_probes = [\n", + " # North America\n", + " {'id': 22447, 'country-code': 'US', 'city': 'San Francisco'},\n", + " {'id': 14233, 'country-code': 'US', 'city': 'Denver'},\n", + " {'id': 25081, 'country-code': 'US', 'city': 'Washington'},\n", + " # South America\n", + " {'id': 31450, 'country-code': 'CR', 'city': 'San Jose'},\n", + " {'id': 30185, 'country-code': 'BR', 'city': 'Sao Paulo'},\n", + " {'id': 30123, 'country-code': 'CL', 'city': 'Santiago'},\n", + " # Europe\n", + " {'id': 32669, 'country-code': 'GR', 'city': 'Athens'},\n", + " {'id': 31479, 'country-code': 'RU', 'city': 'Moscow'},\n", + " {'id': 29762, 'country-code': 'ES', 'city': 'Madrid'},\n", + " {'id': 26610, 'country-code': 'NL', 'city': 'Utrecht'},\n", + " # Africa\n", + " {'id': 22458, 'country-code': 'ZA', 'city': 'Cape Town'},\n", + " {'id': 13258, 'country-code': 'AE', 'city': 'Dubai'},\n", + " {'id': 28493, 'country-code': 'SN', 'city': 'Dakar'},\n", + " # Asia\n", + " {'id': 28819, 'country-code': 'JP', 'city': 'Tokyo'},\n", + " {'id': 28964, 'country-code': 'KR', 'city': 'Seoul'},\n", + " {'id': 6107, 'country-code': 'IN', 'city': 'Mumbai'},\n", + " {'id': 25047, 'country-code': 'HK', 'city': 'Hong Kong'},\n", + " {'id': 26378, 'country-code': 'KG', 'city': 'Bishkek'},\n", + " # Oceania\n", + " {'id': 25208, 'country-code': 'AU', 'city': 'Sydney'},\n", + " {'id': 28226, 'country-code': 'NZ', 'city': 'Welington'}\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_ac['cc'] = df_ac.index\n", + "\n", + "for probe in anycast_probes:\n", + " df_ac['cc'] = df_ac['cc'].replace(str(probe['id']), '{} ({})'.format(probe['city'], probe['country-code']))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nww7jT3/6U9X7Tz/9FIDjjjuO+++/n+nTp3PKKacAsHLlSrbZZhu22GILFi9ezEsvvVS13pgxYxg+\nfDhXXHEF55xzTtHTecQRR3DTTTdVDX367rvv8uGHH2YcolREREqv8d+BN9BmX+PGjWPUqFHsscce\nNG3alPHjx3P88cezzTbb0KNHD15//XUGDgxVBY488kgmT55Mjx492H333dl3330BePrpp5kzZw7P\nP/88TZs2ZcaMGdx8882ceeaZRRve8/DDD+eNN95g0KBBQKicdtttt7Hrrruy//77s8cee3DUUUdx\n1VVX0a9fv4zF+CIiUjwaTlQajDoZTrTFadUXaKAXeMVW23ZoaIOZlKoIPdN26J0yGllD2A6yadJw\noiJZSB4DWidsEY2LXk6UgYuIbGIylshoXPSyoQxcRMqK7hBFAtVCFxERKUPKwEVERMqQMnAREZEy\n1Oifgac+LytUsZ+3zZo1i2OPPZbOnTsDocvTn/3sZ7WuM2nSJB588MGipiWhsrKSoUOHsmjRopLE\nFxGRwjX6DLwcHHjggSXLjEVEpHFSEXoJVFZW0qNHD8455xx69erF4Ycfzpdffsk111xDz5496dOn\nT1U3qdl65JFH6N69O3vttVe1wUgmTJjAd77zHQYPHkyXLl245pprgDAa2NFHH03fvn3ZY489uPPO\nOzeKmWkIURERadhqvQM3s+2B/YEOwJfAImCuu68vcdrK2pIlS5g+fTpTp07lpJNOYsaMGUycOJG3\n336b5s2bs2LFiqplX3zxRfr27UuHDh2YNGkSvXr1qhZrzZo1nHPOOTz55JPstttunHzyydXmL168\nmKeeeopVq1ax++67c/755/PII4/QoUMHZs4M7T1Xrkzf41i6IURFRKThq/EO3MwONrNHgZnAUUB7\noCcwDlhoZpeb2VZ1k8zy07lzZ/r16weE4TQrKyvp06cPw4cP57bbbmOzzcK101577cU777zDK6+8\nwve//32GDRu2UazFixfTuXNnunbtipkxYsSIavOPPvpomjdvzrbbbsv222/PBx98QO/evXn88ccZ\nM2YMzz77LFtvvXXadKYbQlRERBq+TEXoQ4Bz3H2Au5/r7uPc/UfufgzQF3gZOKxOUlmGkofmTAyn\nOXPmTEaNGsX8+fMZMGAA69atY6uttqJVq1YADBkyhLVr1/Lxxx8X/FndunVj/vz59O7dm3HjxnHF\n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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f14c57203c8>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = df_ac.plot.bar(figsize = (7, 5))\n", + "ax.set_xticklabels(list(df_ac.cc), rotation=90)\n", + "ax.set_title('Mean response time of name servers from different locations')\n", + "ax.set_xlabel('Location')\n", + "ax.set_ylabel('Mean response time (ms)')\n", + "fig = ax.get_figure()\n", + "fig.tight_layout()\n", + "fig.savefig(\"imgs/anycast.pdf\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Multi indexed table" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "# Multi indexed pandas table of network diversity data\n", + "data_asns = read_json('data/data_asns.json')\n", + "\n", + "tlds, nss, ips, asns = [], [], [], []\n", + "\n", + "for datum in data_asns:\n", + " tlds.append(datum['tld'])\n", + " nss.append(datum['ns'])\n", + " ips.append(datum['ip'])\n", + " asns.append(datum['asn'])\n", + " \n", + "ix = pd.MultiIndex.from_arrays([tlds, nss, ips], names=['tld', 'ns', 'ip'])\n", + "df_asns = pd.DataFrame({'asn': asns}, index = ix)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th></th>\n", + " <th></th>\n", + " <th>asn</th>\n", + " </tr>\n", + " <tr>\n", + " <th>tld</th>\n", + " <th>ns</th>\n", + " <th>ip</th>\n", + " <th></th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th rowspan=\"12\" valign=\"top\">AAA</th>\n", + " <th rowspan=\"2\" valign=\"top\">ns3.dns.nic.aaa</th>\n", + " <th>156.154.159.2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2610:a1:1073::2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">ns4.dns.nic.aaa</th>\n", + " <th>156.154.156.2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2610:a1:1074::2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">ns5.dns.nic.aaa</th>\n", + " <th>156.154.157.2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2610:a1:1075::2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">ns2.dns.nic.aaa</th>\n", + " <th>156.154.145.2</th>\n", + " <td>19911</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2610:a1:1072::2</th>\n", + " <td>19911</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">ns1.dns.nic.aaa</th>\n", + " <th>156.154.144.2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2610:a1:1071::2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">ns6.dns.nic.aaa</th>\n", + " <th>156.154.158.2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2610:a1:1076::2</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"18\" valign=\"top\">AARP</th>\n", + " <th rowspan=\"7\" valign=\"top\">ac1.nstld.com</th>\n", + " <th>192.42.173.30</th>\n", + " <td>36618</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.173.30</th>\n", + " <td>36619</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.173.30</th>\n", + " <td>36620</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.173.30</th>\n", + " <td>36623</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.173.30</th>\n", + " <td>36624</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.173.30</th>\n", + " <td>36625</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2001:500:120::30</th>\n", + " <td>36625</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"10\" valign=\"top\">ac4.nstld.com</th>\n", + " <th>192.42.176.30</th>\n", + " <td>36617</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.176.30</th>\n", + " <td>36619</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.176.30</th>\n", + " <td>36620</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.176.30</th>\n", + " <td>36621</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.176.30</th>\n", + " <td>36622</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.176.30</th>\n", + " <td>36623</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.176.30</th>\n", + " <td>36625</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.176.30</th>\n", + " <td>36628</td>\n", + " </tr>\n", + " <tr>\n", + " <th>192.42.176.30</th>\n", + " <td>36632</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2001:500:123::30</th>\n", + " <td>36625</td>\n", + " </tr>\n", + " <tr>\n", + " <th>ac3.nstld.com</th>\n", + " <th>192.42.175.30</th>\n", + " <td>36616</td>\n", + " </tr>\n", + " <tr>\n", + " <th>...</th>\n", + " <th>...</th>\n", + " <th>...</th>\n", + " <td>...</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"9\" valign=\"top\">MD</th>\n", + " <th rowspan=\"2\" valign=\"top\">dns-md.rotld.ro</th>\n", + " <th>192.162.16.19</th>\n", + " <td>3233</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2a03:5e80:0:4:192:162:16:19</th>\n", + " <td>3233</td>\n", + " </tr>\n", + " <tr>\n", + " <th>ns-int.dns.md</th>\n", + " <th>217.26.144.5</th>\n", + " <td>28990</td>\n", + " </tr>\n", + " <tr>\n", + " <th>nsb.dns.md</th>\n", + " <th>217.26.144.15</th>\n", + " <td>28990</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">md.cctld.authdns.ripe.net</th>\n", + " <th>193.0.9.93</th>\n", + " <td>197000</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2001:67c:e0::93</th>\n", + " <td>197000</td>\n", + " </tr>\n", + " <tr>\n", + " <th>nsf.dns.md</th>\n", + " <th>86.106.212.21</th>\n", + " <td>8926</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">ns-ext.isc.org</th>\n", + " <th>204.152.184.64</th>\n", + " <td>1280</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2001:4f8:0:2::13</th>\n", + " <td>1280</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"8\" valign=\"top\">MG</th>\n", + " <th>censvrns0001.ird.fr</th>\n", + " <th>91.203.32.147</th>\n", + " <td>44850</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">b.mg.dyntld.net</th>\n", + " <th>199.19.6.24</th>\n", + " <td>15135</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2001:500:96::24</th>\n", + " <td>15135</td>\n", + " </tr>\n", + " <tr>\n", + " <th>ns.dts.mg</th>\n", + " <th>196.192.32.2</th>\n", + " <td>37054</td>\n", + " </tr>\n", + " <tr>\n", + " <th>ns-mg.malagasy.com</th>\n", + " <th>87.98.132.231</th>\n", + " <td>16276</td>\n", + " </tr>\n", + " <tr>\n", + " <th>ns.nic.mg</th>\n", + " <th>196.192.42.153</th>\n", + " <td>37054</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">a.mg.dyntld.net</th>\n", + " <th>199.19.5.24</th>\n", + " <td>15135</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2001:500:92::24</th>\n", + " <td>15135</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"5\" valign=\"top\">MR</th>\n", + " <th>ns1.nic.mr</th>\n", + " <th>41.188.65.193</th>\n", + " <td>29544</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">ns3.nic.fr</th>\n", + " <th>192.134.0.49</th>\n", + " <td>2486</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2001:660:3006:1::1:1</th>\n", + " <td>2486</td>\n", + " </tr>\n", + " <tr>\n", + " <th>censvrns0001.ird.fr</th>\n", + " <th>91.203.32.147</th>\n", + " <td>44850</td>\n", + " </tr>\n", + " <tr>\n", + " <th>ns.univ-nkc.mr</th>\n", + " <th>82.151.64.1</th>\n", + " <td>29544</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"8\" valign=\"top\">MX</th>\n", + " <th>i.mx-ns.mx</th>\n", + " <th>207.248.68.1</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">m.mx-ns.mx</th>\n", + " <th>200.94.176.1</th>\n", + " <td>28498</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2001:13c7:7000::1</th>\n", + " <td>28498</td>\n", + " </tr>\n", + " <tr>\n", + " <th rowspan=\"2\" valign=\"top\">c.mx-ns.mx</th>\n", + " <th>192.100.224.1</th>\n", + " <td>28499</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2001:1258::1</th>\n", + " <td>28499</td>\n", + " </tr>\n", + " <tr>\n", + " <th>o.mx-ns.mx</th>\n", + " <th>200.23.1.1</th>\n", + " <td>28498</td>\n", + " </tr>\n", + " <tr>\n", + " <th>e.mx-ns.mx</th>\n", + " <th>189.201.244.1</th>\n", + " <td>42</td>\n", + " </tr>\n", + " <tr>\n", + " <th>x.mx-ns.mx</th>\n", + " <th>201.131.252.1</th>\n", + " <td>12008</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "<p>21933 rows × 1 columns</p>\n", + "</div>" + ], + "text/plain": [ + " asn\n", + "tld ns ip \n", + "AAA ns3.dns.nic.aaa 156.154.159.2 12008\n", + " 2610:a1:1073::2 12008\n", + " ns4.dns.nic.aaa 156.154.156.2 12008\n", + " 2610:a1:1074::2 12008\n", + " ns5.dns.nic.aaa 156.154.157.2 12008\n", + " 2610:a1:1075::2 12008\n", + " ns2.dns.nic.aaa 156.154.145.2 19911\n", + " 2610:a1:1072::2 19911\n", + " ns1.dns.nic.aaa 156.154.144.2 12008\n", + " 2610:a1:1071::2 12008\n", + " ns6.dns.nic.aaa 156.154.158.2 12008\n", + " 2610:a1:1076::2 12008\n", + "AARP ac1.nstld.com 192.42.173.30 36618\n", + " 192.42.173.30 36619\n", + " 192.42.173.30 36620\n", + " 192.42.173.30 36623\n", + " 192.42.173.30 36624\n", + " 192.42.173.30 36625\n", + " 2001:500:120::30 36625\n", + " ac4.nstld.com 192.42.176.30 36617\n", + " 192.42.176.30 36619\n", + " 192.42.176.30 36620\n", + " 192.42.176.30 36621\n", + " 192.42.176.30 36622\n", + " 192.42.176.30 36623\n", + " 192.42.176.30 36625\n", + " 192.42.176.30 36628\n", + " 192.42.176.30 36632\n", + " 2001:500:123::30 36625\n", + " ac3.nstld.com 192.42.175.30 36616\n", + "... ...\n", + "MD dns-md.rotld.ro 192.162.16.19 3233\n", + " 2a03:5e80:0:4:192:162:16:19 3233\n", + " ns-int.dns.md 217.26.144.5 28990\n", + " nsb.dns.md 217.26.144.15 28990\n", + " md.cctld.authdns.ripe.net 193.0.9.93 197000\n", + " 2001:67c:e0::93 197000\n", + " nsf.dns.md 86.106.212.21 8926\n", + " ns-ext.isc.org 204.152.184.64 1280\n", + " 2001:4f8:0:2::13 1280\n", + "MG censvrns0001.ird.fr 91.203.32.147 44850\n", + " b.mg.dyntld.net 199.19.6.24 15135\n", + " 2001:500:96::24 15135\n", + " ns.dts.mg 196.192.32.2 37054\n", + " ns-mg.malagasy.com 87.98.132.231 16276\n", + " ns.nic.mg 196.192.42.153 37054\n", + " a.mg.dyntld.net 199.19.5.24 15135\n", + " 2001:500:92::24 15135\n", + "MR ns1.nic.mr 41.188.65.193 29544\n", + " ns3.nic.fr 192.134.0.49 2486\n", + " 2001:660:3006:1::1:1 2486\n", + " censvrns0001.ird.fr 91.203.32.147 44850\n", + " ns.univ-nkc.mr 82.151.64.1 29544\n", + "MX i.mx-ns.mx 207.248.68.1 12008\n", + " m.mx-ns.mx 200.94.176.1 28498\n", + " 2001:13c7:7000::1 28498\n", + " c.mx-ns.mx 192.100.224.1 28499\n", + " 2001:1258::1 28499\n", + " o.mx-ns.mx 200.23.1.1 28498\n", + " e.mx-ns.mx 189.201.244.1 42\n", + " x.mx-ns.mx 201.131.252.1 12008\n", + "\n", + "[21933 rows x 1 columns]" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_asns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} |