{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting psycopg2-binary\n",
      "  Using cached https://files.pythonhosted.org/packages/13/c3/050b8da85b02886f2c649da42cf195a4dc8cc5770a5524cd5b34c36c03a7/psycopg2_binary-2.8.4-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl\n",
      "Installing collected packages: psycopg2-binary\n",
      "Successfully installed psycopg2-binary-2.8.4\n"
     ]
    }
   ],
   "source": [
    "!pip install psycopg2-binary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "cellView": "form",
    "colab": {},
    "colab_type": "code",
    "id": "pNm1tc6WbvsP"
   },
   "outputs": [],
   "source": [
    "#@title Similar Artist Finder\n",
    "#@markdown Enter an artist and return to get 100 most similar artists.\n",
    "\n",
    "Artist = 'AJ Mitchell'  #@param {type: \"string\"}\n",
    "\n",
    "#@markdown ---\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 439
    },
    "colab_type": "code",
    "id": "9jdmAcPXvE1Z",
    "outputId": "bf0b7230-5d6f-420d-96c0-8f878720e77c"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    AJ+Mitchell\n",
       "Name: artist_name, dtype: object"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt \n",
    "import matplotlib.markers as markers\n",
    "import matplotlib.axes as axes\n",
    "import psycopg2\n",
    "import os\n",
    "#con=psycopg2.connect(dbname= 'smaredshiftdb', host='reporting-db.smeanalyticsapps.com', port= '5439', user=os.environ.get('<env user>'), password=os.environ.get('<env key>'))\n",
    "#cur = con.cursor()\n",
    "#os.environ.get('<env user>')os.environ.get('<env key>')\n",
    "\n",
    "artist_name=[Artist]\n",
    "artist_frame = pd.DataFrame(artist_name,columns=['artist_name'])\n",
    "artist_frame['artist_name'] = artist_frame['artist_name'].str.replace(' ','+')\n",
    "for x in range(1):\n",
    "  artist_frame['artist_name'].iloc[x] = artist_frame['artist_name'].iloc[x].replace('é','e')\n",
    "  artist_frame['artist_name'].iloc[x] = artist_frame['artist_name'].iloc[x].replace('Ø','o')\n",
    "artist_frame['artist_name'].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "-wbReQQFjDHh"
   },
   "outputs": [],
   "source": [
    "import json\n",
    "from urllib.request import urlopen\n",
    "\n",
    "artist_frame['artist_list']=''\n",
    "for i in range(1):\n",
    "  url = \"http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=\"+artist_frame['artist_name'].iloc[i]+\"&api_key=b44f3df9ff5702f634cad9ad4f401cfb&format=json\"\n",
    "  response = urlopen(url)\n",
    "  data = response.read()\n",
    "  values = json.loads(data)\n",
    "  artist_frame['artist_list'][i]=values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "e_Lharm8jJKt"
   },
   "outputs": [],
   "source": [
    "artist_frame['similar_artists']=''\n",
    "for n in range(1):\n",
    "  alist=[]\n",
    "  for i,cycle in enumerate(artist_frame['artist_list'][n]['similarartists']['artist']):\n",
    "      alist.append(artist_frame['artist_list'][n]['similarartists']['artist'][i]['name'].encode())\n",
    "      artist_frame['similar_artists'][n]=alist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "9UyTd_c-n5pp"
   },
   "outputs": [],
   "source": [
    "artist_frame.drop(columns=['artist_list'], inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 80
    },
    "colab_type": "code",
    "id": "MvpeZyzSJDqf",
    "outputId": "6f91f350-3231-464e-aa9c-9da57fee208b"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>artist_name</th>\n",
       "      <th>similar_artists</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>AJ+Mitchell</td>\n",
       "      <td>[b\"why don't we\", b'Greyson Chance', b'Austin ...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   artist_name                                    similar_artists\n",
       "0  AJ+Mitchell  [b\"why don't we\", b'Greyson Chance', b'Austin ..."
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "artist_frame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 54
    },
    "colab_type": "code",
    "id": "WDruBZ3Hg4jl",
    "outputId": "7f6bd42e-7b92-412e-8486-5036f753a63b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"'AJ Mitchell', 'why don''t we', 'Greyson Chance', 'Austin Mahone', 'Jacob Whitesides', 'Cody Simpson', 'Hailee Steinfeld', 'Jesse McCartney', 'Lia Marie Johnson', 'Tainy', 'Katelyn Tarver', 'Aaron Carpenter', 'Big Time Rush', 'Trevor Daniel', 'Rebecca Black', 'Ruel', 'In Real Life', 'PRETTYMUCH', 'HRVY', 'Alex Aiono', 'Jack & Jack', 'Ava Max', 'New Hope Club', 'Alec Benjamin', 'Anna Clendening', 'Stephen Puth', 'Tate McRae', 'Diplo & Jonas Brothers', 'Shy Martin', 'Lauv', 'Rhys Lewis', 'The Chainsmokers & Illenium', 'NOTD', 'Fletcher', 'The Chainsmokers & Bebe Rexha', 'loote', 'Carlie Hanson', 'Conor Maynard', 'The Vamps', 'Drax Project', 'Louis Tomlinson', 'Alexander Stewart', 'Jake Miller', 'Charlotte Lawrence', 'Liam Payne', 'Why Don''t We & Macklemore', 'James Tw', 'Dan + Shay & Justin Bieber', 'Zedd & Kehlani', 'olivia o''brien', 'Spencer Sutherland', 'Ali Gatie', 'FINNEAS', 'bazzi', 'Julia Michaels', 'Maggie Lindemann', 'Daya', 'Sasha Sloan', 'Mabel', 'Dean Lewis', 'Hearts & Colors', 'Jeremy Zucker', 'Ed Sheeran & Justin Bieber', 'Joel Adams', 'Clara Mae', 'Max', 'Camila Cabello', 'Sabrina Carpenter', 'Ant Saunders', 'Marshmello & Kane Brown', 'Mokita', 'Cameron Dallas', 'Dan + Shay', 'Shaed', 'Madison Beer', 'JP Saxe', 'Shawn Mendes', 'MKTO', 'Boy In Space', 'Shawn Mendes & Camila Cabello', 'The Chainsmokers & 5 Seconds of Summer', 'Lennon Stella', 'Ally Brooke', 'Ariana Grande & Social House', 'NOW UNITED', 'Loren Gray', 'James Arthur', 'Ariana Grande, Miley Cyrus & Lana Del Rey', 'Ellie Goulding & Juice WRLD', 'JOHN.k', 'Regard', 'Gryffin', 'Astrid S', 'Anson Seabra', 'Lost Kings', 'Ilira', 'Alexander 23', 'Illenium & Jon Bellion', 'Quinn Lewis', 'Blake Rose', 'Bryce Vine\""
      ]
     },
     "execution_count": 168,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "similar_artists = [i.decode() for i in artist_frame.similar_artists.values[0]]\n",
    "old=\"'\"\n",
    "new=\"''\"\n",
    "similar_artists_test = [str(i).replace(old,new) for i in similar_artists]\n",
    "artist_string = \"', '\".join(similar_artists_test)\n",
    "artist_string = \"'\"+artist_name[0]+\"', '\"+artist_string\n",
    "#similar_artists = list(similar_artists)\n",
    "#similar_artists = similar_artists.append(Artist)\n",
    "similar_artists = tuple(similar_artists)\n",
    "similar_artists_test\n",
    "artist_string"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "colab_type": "code",
    "id": "qnMEK9emrmau",
    "outputId": "a65e15d4-acfe-4f69-e1a4-c899285a2923"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The 100 most similar artists to AJ Mitchell, are: \n",
      "\n",
      "why don't we\n",
      "Greyson Chance\n",
      "Austin Mahone\n",
      "Jacob Whitesides\n",
      "Cody Simpson\n",
      "Hailee Steinfeld\n",
      "Jesse McCartney\n",
      "Lia Marie Johnson\n",
      "Tainy\n",
      "Katelyn Tarver\n",
      "Aaron Carpenter\n",
      "Big Time Rush\n",
      "Trevor Daniel\n",
      "Rebecca Black\n",
      "Ruel\n",
      "In Real Life\n",
      "PRETTYMUCH\n",
      "HRVY\n",
      "Alex Aiono\n",
      "Jack & Jack\n",
      "Ava Max\n",
      "New Hope Club\n",
      "Alec Benjamin\n",
      "Anna Clendening\n",
      "Stephen Puth\n",
      "Tate McRae\n",
      "Diplo & Jonas Brothers\n",
      "Shy Martin\n",
      "Lauv\n",
      "Rhys Lewis\n",
      "The Chainsmokers & Illenium\n",
      "NOTD\n",
      "Fletcher\n",
      "The Chainsmokers & Bebe Rexha\n",
      "loote\n",
      "Carlie Hanson\n",
      "Conor Maynard\n",
      "The Vamps\n",
      "Drax Project\n",
      "Louis Tomlinson\n",
      "Alexander Stewart\n",
      "Jake Miller\n",
      "Charlotte Lawrence\n",
      "Liam Payne\n",
      "Why Don't We & Macklemore\n",
      "James Tw\n",
      "Dan + Shay & Justin Bieber\n",
      "Zedd & Kehlani\n",
      "olivia o'brien\n",
      "Spencer Sutherland\n",
      "Ali Gatie\n",
      "FINNEAS\n",
      "bazzi\n",
      "Julia Michaels\n",
      "Maggie Lindemann\n",
      "Daya\n",
      "Sasha Sloan\n",
      "Mabel\n",
      "Dean Lewis\n",
      "Hearts & Colors\n",
      "Jeremy Zucker\n",
      "Ed Sheeran & Justin Bieber\n",
      "Joel Adams\n",
      "Clara Mae\n",
      "Max\n",
      "Camila Cabello\n",
      "Sabrina Carpenter\n",
      "Ant Saunders\n",
      "Marshmello & Kane Brown\n",
      "Mokita\n",
      "Cameron Dallas\n",
      "Dan + Shay\n",
      "Shaed\n",
      "Madison Beer\n",
      "JP Saxe\n",
      "Shawn Mendes\n",
      "MKTO\n",
      "Boy In Space\n",
      "Shawn Mendes & Camila Cabello\n",
      "The Chainsmokers & 5 Seconds of Summer\n",
      "Lennon Stella\n",
      "Ally Brooke\n",
      "Ariana Grande & Social House\n",
      "NOW UNITED\n",
      "Loren Gray\n",
      "James Arthur\n",
      "Ariana Grande, Miley Cyrus & Lana Del Rey\n",
      "Ellie Goulding & Juice WRLD\n",
      "JOHN.k\n",
      "Regard\n",
      "Gryffin\n",
      "Astrid S\n",
      "Anson Seabra\n",
      "Lost Kings\n",
      "Ilira\n",
      "Alexander 23\n",
      "Illenium & Jon Bellion\n",
      "Quinn Lewis\n",
      "Blake Rose\n",
      "Bryce Vine\n"
     ]
    }
   ],
   "source": [
    "print(\"\"\"The 100 most similar artists to {}, are: \n",
    "\"\"\".format(Artist))\n",
    "for item in list(artist_frame.similar_artists)[0]:\n",
    "  print(item.decode())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 54
    },
    "colab_type": "code",
    "id": "tgUWUzzUphER",
    "outputId": "c2d8405a-5127-4319-b22e-5654f22e6503"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b\"\\nSELECT f.report_date,\\n      pi.track_album_artist,\\n      pi.track_name,\\n      pi.track_isrc,\\n      a.min_report_date,\\n      p.fin_label_name,\\n      f.country_code,\\n      sum(f.num_streams) as streams,\\n      datediff(day,a.min_report_date,f.report_date)\\nFROM spotify.fact_streams f\\nJOIN common.dim_products p on f.product_key = p.product_key\\nJOIN spotify.dim_partner_info pi ON f.partner_info_key = pi.partner_info_key\\nJOIN (SELECT pi.track_album_artist,\\n          pi.track_isrc,\\n          min(f.report_date) as min_report_date\\n   FROM spotify.fact_streams f\\n   JOIN spotify.dim_partner_info pi ON f.partner_info_key = pi.partner_info_key\\n   WHERE f.country_code='US'\\n   AND pi.track_album_artist IN ('AJ Mitchell', 'why don''t we', 'Greyson Chance', 'Austin Mahone', 'Jacob Whitesides', 'Cody Simpson', 'Hailee Steinfeld', 'Jesse McCartney', 'Lia Marie Johnson', 'Tainy', 'Katelyn Tarver', 'Aaron Carpenter', 'Big Time Rush', 'Trevor Daniel', 'Rebecca Black', 'Ruel', 'In Real Life', 'PRETTYMUCH', 'HRVY', 'Alex Aiono', 'Jack & Jack', 'Ava Max', 'New Hope Club', 'Alec Benjamin', 'Anna Clendening', 'Stephen Puth', 'Tate McRae', 'Diplo & Jonas Brothers', 'Shy Martin', 'Lauv', 'Rhys Lewis', 'The Chainsmokers & Illenium', 'NOTD', 'Fletcher', 'The Chainsmokers & Bebe Rexha', 'loote', 'Carlie Hanson', 'Conor Maynard', 'The Vamps', 'Drax Project', 'Louis Tomlinson', 'Alexander Stewart', 'Jake Miller', 'Charlotte Lawrence', 'Liam Payne', 'Why Don''t We & Macklemore', 'James Tw', 'Dan + Shay & Justin Bieber', 'Zedd & Kehlani', 'olivia o''brien', 'Spencer Sutherland', 'Ali Gatie', 'FINNEAS', 'bazzi', 'Julia Michaels', 'Maggie Lindemann', 'Daya', 'Sasha Sloan', 'Mabel', 'Dean Lewis', 'Hearts & Colors', 'Jeremy Zucker', 'Ed Sheeran & Justin Bieber', 'Joel Adams', 'Clara Mae', 'Max', 'Camila Cabello', 'Sabrina Carpenter', 'Ant Saunders', 'Marshmello & Kane Brown', 'Mokita', 'Cameron Dallas', 'Dan + Shay', 'Shaed', 'Madison Beer', 'JP Saxe', 'Shawn Mendes', 'MKTO', 'Boy In Space', 'Shawn Mendes & Camila Cabello', 'The Chainsmokers & 5 Seconds of Summer', 'Lennon Stella', 'Ally Brooke', 'Ariana Grande & Social House', 'NOW UNITED', 'Loren Gray', 'James Arthur', 'Ariana Grande, Miley Cyrus & Lana Del Rey', 'Ellie Goulding & Juice WRLD', 'JOHN.k', 'Regard', 'Gryffin', 'Astrid S', 'Anson Seabra', 'Lost Kings', 'Ilira', 'Alexander 23', 'Illenium & Jon Bellion', 'Quinn Lewis', 'Blake Rose', 'Bryce Vine')\\n   AND pi.track_isrc !=''\\n   AND f.media_duration>30\\n   GROUP BY 1,2\\n   HAVING min(f.report_date)>'2018-10-01'::date) a ON a.track_isrc = pi.track_isrc\\nWHERE f.report_date BETWEEN a.min_report_date AND DATEADD(day,90,a.min_report_date)\\n   AND f.country_code='US'\\n   AND (p.fin_label_name LIKE '%Epic%' OR p.fin_label_name LIKE '%Columbia%' OR p.fin_label_name LIKE '%RCA%')\\n   AND p.fin_label_name NOT LIKE '%Legacy%'\\n   AND p.fin_label_name NOT LIKE '%Cat%'\\n   AND pi.track_album_artist IN ('AJ Mitchell', 'why don''t we', 'Greyson Chance', 'Austin Mahone', 'Jacob Whitesides', 'Cody Simpson', 'Hailee Steinfeld', 'Jesse McCartney', 'Lia Marie Johnson', 'Tainy', 'Katelyn Tarver', 'Aaron Carpenter', 'Big Time Rush', 'Trevor Daniel', 'Rebecca Black', 'Ruel', 'In Real Life', 'PRETTYMUCH', 'HRVY', 'Alex Aiono', 'Jack & Jack', 'Ava Max', 'New Hope Club', 'Alec Benjamin', 'Anna Clendening', 'Stephen Puth', 'Tate McRae', 'Diplo & Jonas Brothers', 'Shy Martin', 'Lauv', 'Rhys Lewis', 'The Chainsmokers & Illenium', 'NOTD', 'Fletcher', 'The Chainsmokers & Bebe Rexha', 'loote', 'Carlie Hanson', 'Conor Maynard', 'The Vamps', 'Drax Project', 'Louis Tomlinson', 'Alexander Stewart', 'Jake Miller', 'Charlotte Lawrence', 'Liam Payne', 'Why Don''t We & Macklemore', 'James Tw', 'Dan + Shay & Justin Bieber', 'Zedd & Kehlani', 'olivia o''brien', 'Spencer Sutherland', 'Ali Gatie', 'FINNEAS', 'bazzi', 'Julia Michaels', 'Maggie Lindemann', 'Daya', 'Sasha Sloan', 'Mabel', 'Dean Lewis', 'Hearts & Colors', 'Jeremy Zucker', 'Ed Sheeran & Justin Bieber', 'Joel Adams', 'Clara Mae', 'Max', 'Camila Cabello', 'Sabrina Carpenter', 'Ant Saunders', 'Marshmello & Kane Brown', 'Mokita', 'Cameron Dallas', 'Dan + Shay', 'Shaed', 'Madison Beer', 'JP Saxe', 'Shawn Mendes', 'MKTO', 'Boy In Space', 'Shawn Mendes & Camila Cabello', 'The Chainsmokers & 5 Seconds of Summer', 'Lennon Stella', 'Ally Brooke', 'Ariana Grande & Social House', 'NOW UNITED', 'Loren Gray', 'James Arthur', 'Ariana Grande, Miley Cyrus & Lana Del Rey', 'Ellie Goulding & Juice WRLD', 'JOHN.k', 'Regard', 'Gryffin', 'Astrid S', 'Anson Seabra', 'Lost Kings', 'Ilira', 'Alexander 23', 'Illenium & Jon Bellion', 'Quinn Lewis', 'Blake Rose', 'Bryce Vine')\\nGROUP BY f.report_date, 2,3,4,5,6,7\\nORDER BY 2,3,1 \\n\""
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query_string = '''\n",
    "SELECT f.report_date,\n",
    "      pi.track_album_artist,\n",
    "      pi.track_name,\n",
    "      pi.track_isrc,\n",
    "      a.min_report_date,\n",
    "      p.fin_label_name,\n",
    "      f.country_code,\n",
    "      sum(f.num_streams) as streams,\n",
    "      datediff(day,a.min_report_date,f.report_date)\n",
    "FROM spotify.fact_streams f\n",
    "JOIN common.dim_products p on f.product_key = p.product_key\n",
    "JOIN spotify.dim_partner_info pi ON f.partner_info_key = pi.partner_info_key\n",
    "JOIN (SELECT pi.track_album_artist,\n",
    "          pi.track_isrc,\n",
    "          min(f.report_date) as min_report_date\n",
    "   FROM spotify.fact_streams f\n",
    "   JOIN spotify.dim_partner_info pi ON f.partner_info_key = pi.partner_info_key\n",
    "   WHERE f.country_code='US'\n",
    "   AND pi.track_album_artist IN ({0}')\n",
    "   AND pi.track_isrc !=''\n",
    "   AND f.media_duration>30\n",
    "   GROUP BY 1,2\n",
    "   HAVING min(f.report_date)>'2018-10-01'::date) a ON a.track_isrc = pi.track_isrc\n",
    "WHERE f.report_date BETWEEN a.min_report_date AND DATEADD(day,90,a.min_report_date)\n",
    "   AND f.country_code='US'\n",
    "   AND (p.fin_label_name LIKE '%Epic%' OR p.fin_label_name LIKE '%Columbia%' OR p.fin_label_name LIKE '%RCA%')\n",
    "   AND p.fin_label_name NOT LIKE '%Legacy%'\n",
    "   AND p.fin_label_name NOT LIKE '%Cat%'\n",
    "   AND pi.track_album_artist IN ({0}')\n",
    "GROUP BY f.report_date, 2,3,4,5,6,7\n",
    "ORDER BY 2,3,1 \n",
    "'''\n",
    "\n",
    "query_string = query_string.format(artist_string)\n",
    "test = cur.mogrify(query_string)\n",
    "test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 232
    },
    "colab_type": "code",
    "id": "VY5dE2SMUWKl",
    "outputId": "41f36251-dd74-451d-88f1-c5fcd004c4a1"
   },
   "outputs": [],
   "source": [
    "#Query you would like to run\n",
    "con=psycopg2.connect(dbname= 'smaredshiftdb', host='reporting-db.smeanalyticsapps.com', port= '5439', user=os.environ.get('<env user>') , password=os.environ.get('<env key>'))\n",
    "cur = con.cursor()\n",
    "import time\n",
    "\n",
    "t0 = time.time()\n",
    "cur.execute(test)\n",
    "#Save query result to a Dataframe\n",
    "col_names = []\n",
    "for elt in cur.description:\n",
    "    col_names.append(elt[0])\n",
    "df=pd.DataFrame(cur.fetchall(),columns=col_names)\n",
    "cur.close() \n",
    "con.close()\n",
    "t1 = time.time()\n",
    "\n",
    "total = t1-t0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>report_date</th>\n",
       "      <th>track_album_artist</th>\n",
       "      <th>track_name</th>\n",
       "      <th>track_isrc</th>\n",
       "      <th>min_report_date</th>\n",
       "      <th>fin_label_name</th>\n",
       "      <th>country_code</th>\n",
       "      <th>streams</th>\n",
       "      <th>date_diff</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>21846</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2019-03-27</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>22685</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2019-03-28</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>20390</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2019-03-29</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>19369</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2019-03-30</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>19417</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  report_date track_album_artist      track_name    track_isrc  \\\n",
       "0  2019-03-26        AJ Mitchell  All My Friends  USSM11901049   \n",
       "1  2019-03-27        AJ Mitchell  All My Friends  USSM11901049   \n",
       "2  2019-03-28        AJ Mitchell  All My Friends  USSM11901049   \n",
       "3  2019-03-29        AJ Mitchell  All My Friends  USSM11901049   \n",
       "4  2019-03-30        AJ Mitchell  All My Friends  USSM11901049   \n",
       "\n",
       "  min_report_date     fin_label_name country_code  streams  date_diff  \n",
       "0      2019-03-26  Epic/AJ Mitchelll           US    21846          0  \n",
       "1      2019-03-26  Epic/AJ Mitchelll           US    22685          1  \n",
       "2      2019-03-26  Epic/AJ Mitchelll           US    20390          2  \n",
       "3      2019-03-26  Epic/AJ Mitchelll           US    19369          3  \n",
       "4      2019-03-26  Epic/AJ Mitchelll           US    19417          4  "
      ]
     },
     "execution_count": 171,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 181
    },
    "colab_type": "code",
    "id": "SrPkyN5GvvI9",
    "outputId": "fe6a5e68-b969-4a7b-8681-80409862a71e"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>report_date</th>\n",
       "      <th>track_album_artist</th>\n",
       "      <th>track_name</th>\n",
       "      <th>track_isrc</th>\n",
       "      <th>min_report_date</th>\n",
       "      <th>fin_label_name</th>\n",
       "      <th>country_code</th>\n",
       "      <th>streams</th>\n",
       "      <th>date_diff</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>21846</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2019-03-27</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>22685</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2019-03-28</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>20390</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2019-03-29</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>19369</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2019-03-30</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>19417</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>86</th>\n",
       "      <td>2019-06-20</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>31677</td>\n",
       "      <td>86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>87</th>\n",
       "      <td>2019-06-21</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>30355</td>\n",
       "      <td>87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>88</th>\n",
       "      <td>2019-06-22</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>26642</td>\n",
       "      <td>88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89</th>\n",
       "      <td>2019-06-23</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>28172</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>90</th>\n",
       "      <td>2019-06-24</td>\n",
       "      <td>AJ Mitchell</td>\n",
       "      <td>All My Friends</td>\n",
       "      <td>USSM11901049</td>\n",
       "      <td>2019-03-26</td>\n",
       "      <td>Epic/AJ Mitchelll</td>\n",
       "      <td>US</td>\n",
       "      <td>34037</td>\n",
       "      <td>90</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>91 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   report_date track_album_artist      track_name    track_isrc  \\\n",
       "0   2019-03-26        AJ Mitchell  All My Friends  USSM11901049   \n",
       "1   2019-03-27        AJ Mitchell  All My Friends  USSM11901049   \n",
       "2   2019-03-28        AJ Mitchell  All My Friends  USSM11901049   \n",
       "3   2019-03-29        AJ Mitchell  All My Friends  USSM11901049   \n",
       "4   2019-03-30        AJ Mitchell  All My Friends  USSM11901049   \n",
       "..         ...                ...             ...           ...   \n",
       "86  2019-06-20        AJ Mitchell  All My Friends  USSM11901049   \n",
       "87  2019-06-21        AJ Mitchell  All My Friends  USSM11901049   \n",
       "88  2019-06-22        AJ Mitchell  All My Friends  USSM11901049   \n",
       "89  2019-06-23        AJ Mitchell  All My Friends  USSM11901049   \n",
       "90  2019-06-24        AJ Mitchell  All My Friends  USSM11901049   \n",
       "\n",
       "   min_report_date     fin_label_name country_code  streams  date_diff  \n",
       "0       2019-03-26  Epic/AJ Mitchelll           US    21846          0  \n",
       "1       2019-03-26  Epic/AJ Mitchelll           US    22685          1  \n",
       "2       2019-03-26  Epic/AJ Mitchelll           US    20390          2  \n",
       "3       2019-03-26  Epic/AJ Mitchelll           US    19369          3  \n",
       "4       2019-03-26  Epic/AJ Mitchelll           US    19417          4  \n",
       "..             ...                ...          ...      ...        ...  \n",
       "86      2019-03-26  Epic/AJ Mitchelll           US    31677         86  \n",
       "87      2019-03-26  Epic/AJ Mitchelll           US    30355         87  \n",
       "88      2019-03-26  Epic/AJ Mitchelll           US    26642         88  \n",
       "89      2019-03-26  Epic/AJ Mitchelll           US    28172         89  \n",
       "90      2019-03-26  Epic/AJ Mitchelll           US    34037         90  \n",
       "\n",
       "[91 rows x 9 columns]"
      ]
     },
     "execution_count": 181,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample = df[df['track_isrc']==\"USSM11901049\"]\n",
    "no_samp = df[df['track_isrc']!=\"USSM11901049\"]\n",
    "sample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [],
   "source": [
    "del no_samp['report_date']\n",
    "del no_samp['track_album_artist']\n",
    "del no_samp['track_name']\n",
    "del no_samp['track_isrc']\n",
    "del no_samp['min_report_date']\n",
    "del no_samp['fin_label_name']\n",
    "del no_samp['country_code']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "aE3sDJ0bwCIk"
   },
   "outputs": [],
   "source": [
    "df1 = no_samp.groupby('date_diff').quantile(.5)\n",
    "df2 = no_samp.groupby('date_diff').quantile(.75)\n",
    "df3 = no_samp.groupby('date_diff').quantile(1)\n",
    "sample = sample.set_index('date_diff')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a266e3510>"
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7sAAAJQCAYAAABPbnMDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXhU5f3+8ffJnkAy2cNiWQSBAAkhBoWyuIILoigqUamCUBS3iv7q3iJSbd1qa/kWtSi41IBVUXBBAW0V3NjCFpBFURBIIMuQkHWS8/tjyJCQQCZkMlvu13XNNZkzz5x5ZkDN7edznscwTRMRERERERERfxLg6QmIiIiIiIiIuJrCroiIiIiIiPgdhV0RERERERHxOwq7IiIiIiIi4ncUdkVERERERMTvKOyKiIiIiIiI32m1sGsYxiuGYeQZhrG5zrFYwzCWGYax4+h9zNHjhmEYzxuGsdMwjI2GYaQfPd7NMAzTMIxZdc4RbxhGlWEYs1tr7iIiIiIiIuLbWrOyOx+4+LhjDwArTNM8A1hx9DHAJcAZR29TgTl1XvMDcFmdx9cAW1phviIiIiIiIuInWi3smqb5BVBw3OErgFeP/vwqMLbO8ddMu2+AaMMwOh59rgzYahhGxtHH44G3WmveIiIiIiIi4vuC3Px+SaZp7gcwTXO/YRiJR493BvbUGbf36LFDRx8vADINwzgAVAP7gE4nehPDMKZirxDTrl27M/v06ePSDyEiIiIiIiLeYe3atYdM00w4/ri7w+6JGI0cM+v8vBSYBeQCC5s6mWmaLwEvAWRkZJhr1qxxxRxFRERERETEyxiG8VNjx929GnNubXvy0fu8o8f3Ar+qM+407NVbAEzTrATWAvcC77hnqiIiIiIiIuKr3B12FwM3Hf35JuD9OsdvPLoq82DAWtvuXMezwP2maea7Z6oiIiIiIiLiq1qtjdkwjCzgXCDeMIy9wAzgL8BbhmFMBn7GvrIywEfApcBOoBSYdPz5TNPcQjNWYTYMYwwwpmfPni34FCIiIiIiIuKLDNM0mx7lwxq7Zreqqoq9e/dSXl7uoVlJc4WFhXHaaacRHBzs6amIiIiIiIgXMQxjrWmaGccf95YFqtxq7969REZG0q1bNwyjsbWxxJuYpkl+fj579+6le/funp6OiIiIiIj4AHdfs+sVysvLiYuLU9D1EYZhEBcXp0q8iIiIiIg4rU2GXUBB18foz0tERERERJrDb8OuYRhjDMN4yWq1enoqIiIiIiIi4mZ+G3ZN01ximuZUi8XikvP9UmBjxoIifimwueR8AIsWLcIwDLZt2+ayc37wwQcMHDiQAQMG0LdvX1588UUAHn30UQzDYOfOnY6xzz33HIZhULuAV7du3UhJSSEtLY20tDTuuuuueud+/PHHHc8FBgY6fn7++edbPO/TTjuNoqKiFp9HREREREQE2ugCVc1VUWXy/AclFJbU8I8PS5iZaSE0uOVttVlZWQwbNowFCxbw6KOPtvh8VVVVTJ06le+++47TTjuNiooKdu/e7Xg+JSWFBQsW8MgjjwDw9ttv07dv33rn+Pzzz4mPj2/0/A8//DAPP/wwAO3btyc7O7vRcTabjaAg/dUSERERERHP8dvKrivN/6yE4rIaTOBwaQ3zPz/S4nOWlJSwatUqXn75ZRYsWOA4Pn78eD766CPH44kTJ/LOO+9QWlrKtddeS2pqKuPHj+fss8/m+C2ViouLsdlsxMXFARAaGkrv3r0dz48dO5b3338fgB9++AGLxUJCQkKLPwvAhAkTuPfeeznvvPN46KGH+OabbxgyZAgDBw5k6NCh7NixA7AH4enTp9O/f39SU1P55z//We88paWljBo1innz5rlkXiIiIiIi0jap/NaElVvL2fhTFVXV9sdV1bBxdyUrt5YzLDnslM/73nvvcfHFF9OrVy9iY2NZt24d6enpZGZmsnDhQi699FIqKytZsWIFc+bM4f/+7/+IiYlh48aNbN68mbS0tAbnjI2N5fLLL6dr165ccMEFXHbZZVx33XUEBNj/n0ZUVBS/+tWv2Lx5M++//z7jx49vECrPO+88AgMDAbjpppuYPn26059p165drFixgoCAAKxWKytXriQwMJClS5fyyCOPsHDhQubMmcO+ffvYsGEDgYGBFBQUOF5fXFzMTTfdxOTJk7nhhhtO5WsVEREREREB/DjsGoYxBhjTs2fPFp3n3W/KqDzuMt1Km/14S8JuVlYWd999NwCZmZlkZWWRnp7OJZdcwl133UVFRQVLly5lxIgRhIeHs3LlSn73u98BOKqijZk7dy6bNm1i+fLlPPPMMyxbtoz58+c7ns/MzGTBggV88sknrFixokHYPVkbc1OuueYaR7AuKirixhtvZNeuXfXGLF++nLvvvtsRqGNjYx3PXXbZZTz00EOMHz/+lN5fRERERESklt+2MbtqgaqrBocTctz/EggJgnGDw0/5nPn5+Xz22WdMmTKFbt268fTTT7Nw4UJM0yQsLIxzzz2XTz75hIULF5KZmQmAaZpOnz8lJYXp06ezbNky3nnnnXrPjRkzhtdff50uXboQFRV1yp+hMe3atXP8/PDDD3PRRRexefNm3nvvPcceuaZpnnAboaFDh/Lxxx8367OKiIiIiIg0xm/DrqsMSw4jtWswwfZCJMGBkNothKEtqOq+/fbb3Hjjjfz000/s3r2bPXv20L17d1auXAnYq6/z5s3jyy+/5KKLLrLPY9gw3nrrLQBycnLYtGlTg/OWlJTw3//+1/E4Ozubrl271hsTHh7Ok08+6VhoqrVYrVY6d+4MUK+yPGrUKObMmUN1tb0vvG4b8xNPPEG7du0arAItIiIiIiLSXAq7Tph4fnsiw49e9xoRwMTz2jXxipPLysriyiuvrHds3LhxvPnmm4A9EH7xxRdceOGFhISEAHDbbbdx8OBBUlNTefLJJ0lNTeX4qrVpmjz11FP07t2btLQ0ZsyYUS9o1srMzCQ9Pb3RuZ133nmOLYVuvPHGU/6M999/P7///e8ZOnRoveO33HILHTp0IDU1lQEDBjgCfK3Zs2djtVp56KGHTvm9RUREREREDH9vGc3IyDCPX7V469atJCcnN+s8vxTYeOnTEqaOak/nWPdf6lxdXU1VVRVhYWHs2rWLCy64gO3btzvCcFtwKn9uIiIiIiLi3wzDWGuaZsbxx/12gSpX6xwbxMzMaI+9f2lpKeeddx5VVVWYpsmcOXPaVNAVERERERFpDr8Nu65ajdlbREZGNthXV0RERERERBrnt9fsumo1ZhEREREREfE9fht2RUREREREpO1S2BURERERERG/o7ArIiIiIiIifkdh10lbtkD//vZ7V/j+++8d+9mmpaURFRXF3/72Nx599FE6d+7sOP7RRx8BsGrVKlJTUxk0aBA7d+4EoKioiIsuugh/3z5KRERERESkuRR2nXDkCFx6KeTkwOjR9sct1bt3b7Kzs8nOzmbt2rVERERw5ZVXAjB9+nTHc5deeikAzz77LO+88w5PPPEEc+bMAWDWrFk89NBDGIbR8gmJiIiIiIj4Eb8Nu4ZhjDEM4yWr1dric918M+TlgWlCbi5MnuyCCdaxYsUKevToQdeuXU84Jjg4mLKyMkpLSwkODmbXrl388ssvnHPOOa6djIiIiIiIiB/w27Drqq2HXnkFPvwQysvtj8vLYckS+3FXWbBgAdddd53j8ezZs0lNTeXmm2+msLAQgAcffJCpU6fyt7/9jTvuuIOHH36YWbNmuW4SIiIiIiIifsRvw66rPPhgw7bl0lL7cVeorKxk8eLFXHPNNQBMmzaNXbt2kZ2dTceOHbn33nsBSEtL45tvvuHzzz/nhx9+oFOnTpimyfjx45kwYQK5ubmumZCIiIiIiIgfUNhtwp//DO3a1T8WEQF/+Ytrzv/xxx+Tnp5OUlISAElJSQQGBhIQEMBvf/tbvvvuu3rjTdPkT3/6E3/4wx+YOXMmM2fOZMKECTz//POumZCIiIiIiIgfUNhtws032xelCguzPw4LgzFjYNIk15w/KyurXgvz/v37HT8vWrSI/v371xv/6quvMnr0aGJiYigtLSUgIICAgABKS0tdMyERERERERE/oLDrhFdegcREMAxISoKXX3bNeUtLS1m2bBlXXXWV49h9991HSkoKqampfP755zz33HP1xr/66qvcdtttANxzzz2MGzeOBx98kGnTprlmUiIiIiIi4tO25xYz6rn/sT23uNXHeDOFXSe0awcffQR9+9oXqzq+rflURUREkJ+fT91FtF5//XU2bdrExo0bWbx4MR07dqw3/vPPPyc4OBiA4cOHs2nTJtauXUuvXr1cMykREREREXEpVwbLpsaVVtqYNO87duSVMGneakorba02xtsp7DqpXz/YvNl+LyIiIiIivs1d1U9XBktnxv3+7Y0cKqnENOFQSQX3vb2x1cZ4O4VdERERERHxCr4WQN0ZPp0Z99bqPXy2NY8KWw0AFbYaVmzN463Ve1w+xhf4bdg1DGOMYRgvWa1WT09FRERERMQnufPaT18MoO4Kn86Oe3LpNsqqquu9rqyqmieXbnP5GF/gt2HXNM0lpmlOrXs9rIiIiIhIW+Br1U/wvQDqzvDp7Lj7L+5DeHBgvTHhwYE8cEkfl4/xBX4bdkVEREREvImvtei689pPXwyg7gyfzo67dtCvOD85kdAge8wLDQrgguRErsn4lcvH+AKFXRERERGRE/DFFXJ9rfoJvhlA3Rk+mzPu6atTiW8fggHEtw/lqatTOZ6rxng7hV0nuXKPqfz8fNLS0khLS6NDhw507tzZ8biysvKUz7tq1SrOPvts0tLSSE5OZtasWQDMnTsXwzD43//+5xj7n//8B8MweO+99wAYNmwYvXv3dsxj/Pjx9c49d+5cx3MhISGkpKSQlpbGww8/fMrzrTV48GA2b97c4vOIiIiI1HJXhdTZcb7Wouvuaz99MYC6O3w6Oy4iJIh5k87ijKT2zJs0iIiQoFYb4+0Udp3g6j2m4uLiyM7OJjs7m1tvvZXp06c7HoeEhJzyeW+66SZefvllsrOz2bx5M+PGjXM8l5KSQlZWluPxggULGDBgQL3XL1y40DGPhQsX1ntuypQpjucSExP58ssvyc7O5vHHH683zmbzvf23RERExD38sY3XmXG+2KLr7ms/fTWAujN8Nmdcr6RIPp1+Dr2SIht93pVjvJnCrhPcucfUU089Rf/+/enfvz//+Mc/ANi5cyf9+vXjN7/5DSkpKVx77bWUlZU1eO3Bgwfp0KEDAIGBgfTt29fx3LnnnstXX32FzWbj8OHD/Pzzz/Tv398lc37ggQeYNm0aF154IVOmTGHHjh0MHz6c9PR0MjIyWL16tWPsrFmz6N+/PwMGDGDGjBn1zmOz2bjuuusaBGgRERHxLG8KoN7UxuvsOF9s0fXEtZ++GEDdHT6bM04Udpvkzj2mvvvuO/7973/z3Xff8fXXX/PPf/6TjRvt/+LNycnh9ttvZ9OmTYSFhfHiiy82eP3dd9/NGWecwVVXXcW//vUvKioqHM8FBARw7rnnsnz5chYtWsTYsWMbvH78+PGOVuUHHnigWXPPzs7mww8/ZP78+XTq1Inly5ezbt065s+fz9133w3AokWLWLFiBWvWrGHDhg387ne/c7y+qqqKzMxMMjIyXNIaLSIi0tZ523Yw/tjG6+w4X2zRBfdf++mrAVTh03sp7DbBnXtMffnll4wbN46IiAgiIyMZO3YsK1euBKB79+4MHjwYgAkTJjiO1zVz5kxWr17NhRdeyGuvvcbo0aPrPZ+ZmcmCBQtYsGABmZmZDV5ft435L3/5S7PmPnbsWEJDQwEoLy9n0qRJpKSkMGHCBLZs2QLA8uXLmTx5MmFhYQDExsY6Xj9x4kSGDBnCvffe26z3FRER8TfeVEUF7wqg3tbG6+w4X23R9cS1nwqg4koKu01w5x5Tpmme8DnDME76uFbPnj257bbb+Oyzz/juu++wWq2O54YMGcK6des4fPgwPXr0cM2kj2rXrp3j56effpru3buzceNGvv76a0eF2TTNE8576NChLF++vEULdImIiHg7b7rW1J3bwfhrG29zxvliiy4ofIpvU9htgjv3mBoxYgSLFi2irKyMkpIS3n//fYYPHw7Ajz/+6Lj2NSsri2HDhjV4/YcffugIzNu3byc0NJTIyGP/QjEMgz//+c888cQTLp97XVarlU6dOmEYBvPnz3ccHzVqFHPnzqW8vByAgoICx3O33XYbw4cP5/rrr6e6uvr4U4qIiHiUu6qt3lRFBe8LoN7YxuvsOF9t0RXxZQq7TnDXHlNnnXUW1113HYMGDWLw4MFMmzaNlJQUAPr168e//vUvUlNTOXLkCFOnTm3w+vnz5zu2D5o4cSJvvvkmAQH1/4hHjx7NOeec0+j7171m96KLLjrlz3HnnXcyZ84cBg8ezIEDBwgMtP9HaezYsZx//vmkp6eTlpbmWICr1kMPPUTPnj2ZPHnySavcIiIiruQt1VZvq6KC9wVQb2zjbc44VUlF3Mvw11BhGMYYYEzPnj1/u2PHjnrPbd26leTk5Gadb3tuMXe8uY7Z16e7/V8sO3fu5OqrryY7O9ut7+ttTuXPTURE/JMz/112ZkxppY2Rf/0f+6zldLKEs+yeEQ2Cyu1vrmN5Ti4VthpCgwIY2TeJ2denN2vMW6v3MGPxlnoBMzw4kJmX9+PaQfagduasZeQfaXg5T1y7ENb+YaTTY070Xo9d0c8RCp0Z48rPX++7LiqnU3Tj37WrxoDr/o6IiPczDGOtaZoZxx/328quaZpLTNOcarFYXHI+/R80ERER9/CmxZfcWW31tipqLW+7jlRtvCLiLL8Nu/6kZ8+ebb6qKyIi3s+XrmsF71vZ1xvbeME7A6hCqog4Q2FXREREmuRv17WC91VbwfuqqLUUQEXEFynsioiI+DFfqrZ64+JL7q62emMVVUTEVynsioiI+Ch/q7a6s9IK3lltBYVUERFXUdgVERFxI1dUWsE/q63euviSu6utIiLiGgq7HrRo0SIMw2DbtmP/od+9ezf9+/cH4L///S+XXXZZg9f997//xTAMXn75Zcex9evXYxgGzzzzjNPvP3HiRLp37+7YW/f5559vdNyUKVPIyclx+rwn061bNw4dOuSSc4mIeButInyML1zXCqq2ioj4M4VdD8rKymLYsGEsWLCg2a9NSUlh4cKFjscLFixgwIABzT7P008/TXZ2NtnZ2dx1110Nnq+urmbu3Ln07du32ecWEfEn3nJdK/h3tdVbF18SERHfo7DrISUlJaxatYqXX375lMJuly5dKC8vJzc3F9M0Wbp0KZdccgkAu3btIj392EbuO3bs4Mwzz3T63O3bt+ePf/wjZ599Nl9//TXnnnsua9asAeDTTz9lyJAhpKenc80111BSUgLYK7YzZswgPT2dlJQUR7U6Pz+fUaNGMXDgQG655RZM0wTgyJEjjB49mgEDBtC/f/96wV1ExN3cEWS1irCuaxUREfdq82HXMIxWuTXlvffe4+KLL6ZXr17Exsaybt26Zs/96quv5j//+Q9fffUV6enphIaGAtCjRw8sFotjb9558+YxceLERs/x+9//3tHGvGnTJsAeRPv378+3337LsGHDHGMPHTrEn/70J5YvX866devIyMjgr3/9q+P5+Ph41q1bx7Rp0xzt1DNnzmTYsGGsX7+eyy+/nJ9//hmApUuX0qlTJzZs2MDmzZu5+OKLm/35RUS8ZaVhrSKs61pFRMT7tPmw6ylZWVlkZmYCkJmZSVZWVrPPce211/Kf//yHrKwsrrvuunrPTZkyhXnz5lFdXc3ChQu5/vrrGz1H3TbmlJQUAAIDAxk3blyDsd988w05OTkMHTqUtLQ0Xn31VX766SfH81dddRUAZ555Jrt37wbgiy++YMKECQCMHj2amJgYwN6GvXz5cu6//36+/PJLLBZLsz+/iPg3X1ppWKsI26naKiIi3qTNh13TNFvldjL5+fl89tlnTJkyhW7duvH000+zcOHCJl93vA4dOhAcHMyyZcu44IIL6j03btw4Pv74Yz744APOPPNM4uLinD5vWFgYgYGBDY6bpsnIkSMd4TgnJ6feIlm1leXAwEBstmO/UDZW6e7Vqxdr164lJSWFBx98kMcee8zp+YmIb/PHlYa1irCIiIj3afNh1xPefvttbrzxRn766Sd2797Nnj176N69OytXrmz2uR577DGefPLJBuE0LCyMiy66iGnTpjFp0iSXzHvw4MGsWrWKnTt3AlBaWsr27dtP+poRI0bw73//G4CPP/6YwsJCAPbt20dERAQTJkzg//2//3dKbdwi4l7uahkG31tpWKsIi4iIeB+FXQ/IysriyiuvrHds3LhxvPnmm80+169//WvGjh3b6HM33HADhmEwatSoU5rn8RISEpg/fz7XXXcdqampDB48uN62SY2ZMWMGX3zxBenp6Xz66ad06dIFgE2bNnHWWWeRlpbG448/ziOPPOKSOYrIqfGWlmHwzZWGQasIi4iIeBujua2zviYjI8OsXUm41tatW0lOTvbQjNznmWeewWq1MmvWLE9PxSXayp+biKttzy3mjjfXMfv69EZDUWmljZF//R/7rOV0soSz7J4RDQLW7W+uY3lOLhW2GkKDAhjZN4nZ16c3a8xbq/cwY/GWegE0PDiQmZf349pBx4LjmbOWkX+kssE849qFsPYPI096rseu6OcIoc6McfazOb6jonI6RTf+HTnzXYuIiIjrGYax1jTNjOOP+21l1zCMMYZhvGS1Wj09FY+48soree211/jd737n6amISCvylpWGXVWNBd9daRhUaRUREfEmfht2TdNcYprm1La6yu+iRYvYuHEj8fHxnp6KiJwibwmy7mwZBt9eaVhERES8h9+G3ab4e/u2v9Gfl/gbXwqyrtoyRysNi4iIiDu1ybAbFhZGfn6+ApSPME2T/Px8wsLCPD0VEaf4W5B1d8swaKVhERERabk2uUBVVVUVe/fupby83EOzkuYKCwvjtNNOIzg42NNTkTbMmcWHXLHYkzMLOblqESdn5lPvc51kgSYt4iQiIiKecKIFqtpk2BUROZ4rViwG/w2yznxHzo4RERERcaU2txqziEgtd7QVg/e1FoP7F2hSy7CIiIh4C4VdEfFp3nJ9LPh/kBURERHxJQq7IuK1vCXIunt/WFCQFREREWkphV0R8QhfCrKe2B9WQVZERESkZRR2RcTtfC3IemJ/WFCQFREREWkJhV0Rcbmmqra+GGQ9sT+siIiIiJw6hV0RaZaWth/7apB1NsSCgqyIiIiIN1DYFRGnuaL92JeDrEKsiIiIiO9Q2BURoOmKLbim/VhBVkRERETcQWFXpA1wxcrHrmo/VpAVEREREXdQ2BXxc65oPQbXbtGjICsiIiIirU1hV8THuWPlY3Bt+7GCrIiIiIi0NoVdES/mLSsfg+u36FGQFREREZHWpLAr4qW8aeXjWq7eokdEREREpLUo7Ip4iDvaj13ZegxqPxYRERER36GwK+IB7mo/dnXrMSjIioiIiIhvUNgVaQUtrdp668rHIiIiIiK+QmFXxMVcUbXVysciIiIiIi3jkbBrGMYrhmHkGYaxuc6xWMMwlhmGsePofczR4xMNwzANw7igztgrjx672hPzl7bNHVVbrXwsIiIiItIynqrszgcuPu7YA8AK0zTPAFYcfVxrE3BdnceZwIbWnKBIY9xVtQW1H4uIiIiItIRHwq5pml8ABccdvgJ49ejPrwJj6zz3JXCWYRjBhmG0B3oC2a0+UWlzvKlqq/ZjEREREZFT503X7CaZprkf4Oh9Yp3nTGA5cBH2ULz4ZCcyDGOqYRhrDMNYc/Dgwdaar/gZb6vagoKsiIiIiMip8qaw25QF2NuXM4Gskw00TfMl0zQzTNPMSEhIcMvkxPd5Y9VWREREREROjTeF3VzDMDoCHL3Pq/ukaZrfAf2BeNM0t3tgfuLDmmpPVtVWRERERMS/eFPYXQzcdPTnm4D3GxnzIPCQ22YkfqGp9mRQ1VZERERExN94auuhLOBroLdhGHsNw5gM/AUYaRjGDmDk0cf1mKb5sWmanzv5HmMMw3jJarW6curig5pqTwZVbUVERERE/I2nVmO+zjTNjqZpBpumeZppmi+bpplvmuYFpmmecfS+4OjY+aZp3tHIOSaapvn2Sd5jiWmaUy0WS2t+FPECJ2tRdqY9GVS1FRERERHxN97UxizSbE21KDvTnlxLVVsREREREf+hsCs+rakWZWfbk0FVWxERERERf6KwKz7LmRZlZ9uTa6lqKyIiIiLiH/w27GqBKv/nbIuys+3JIiIiIiLiP/w27GqBKv9wssWnnG1RVnuyiIiIiEjb47dhV3xfU4tPNadFWe3JIiIiIiJti8KueC1n9sdVi7KIiIiIiDRGYVe8krP746pFWUREREREGuO3YVcLVHm/k12P25z9cdWiLCIiIiIix/PbsKsFqrxbU9fjNmd/XBERERERkeP5bdgV79bU9bjN3R9XRERERESkLoVdcTtnr8fV4lMiIiIiInKqFHbF7Zy9HleLT4mIiIiIyKlS2JVWcbLFp5pzPa4WnxIRERERkVPht2FXqzF7TlOLT+l6XBERERERaW1+G3a1GrPnNLX4FOh6XBERERERaV1+G3bFM5xdfErX44qIiIiISGtS2BWXcnbxKdD1uCIiIiIi0noUdqXZXLX4lIiIiIiISGtR2JVm0eJTIiIiIiLiCxR2pVm0+JSIiIiIiPgCvw272nrI9bT4lIiIiIiI+ArDNE1Pz6FVZWRkmGvWrPH0NPzCmbOWkX+kssHxuHYhrP3DSA/MSERERERE2jrDMNaapplx/HG/reyK62nxKRERERER8RUKu+I0LT4lIiIiIiK+QmFXmkWLT4mIiIiIiC9Q2JV6TraHLmjxKRERERER8Q0Ku+LQ1B66tXolRfLp9HPolRTp5hmKiIiIiIg4R2FXHJzZQ1dERERERMQXKOwK4PweuiIiIiIiIr7Ab8OuYRhjDMN4yWq1enoqPuHJpdsoq4RqMlYAACAASURBVKqud6ysqponl27z0IxEREREREROnd+GXdM0l5imOdVisXh6Kj5Be+iKiIiIiIg/8duwK82jPXRFRERERMSfKOy2IU1tK6Q9dEVERERExF8o7LYRzmwrpD10RURERETEXyjsthHObiukPXRFRERERMQfKOy2AdpWSERERERE2hqF3TZA2wqJiIiIiEhbo7DbBmhbIRERERERaWsUdtsAbSskIiIiIiJtjcJuG6FthUREREREpC3x27BrGMYYwzBeslqtnp6KV9C2QiIiIiIi0pb4bdg1TXOJaZpTLRaLp6fiFttzixn13P/Ynlt8wjHaVkhERERERNoKvw27bUlppY1J875jR14Jk+atprTS5ukpiYiIiIiIeJTCrh/4/dsbOVRSiWnCoZIK7nt7o6enJCIiIiIi4lEKuz7urdV7+GxrHhW2GgAqbDWs2JrHW6v3eHhmIiIiIiIinqOw6+OeXLqNsqrqesfKqqp5cuk2D81IRERERETE8xR2fdz9F/chPDiw3rHw4EAeuKSPh2YkIiIiIiLieQq7Pu7aQb/i/OREQoPsf5ShQQFckJzINRm/8vDMREREREREPEdh1w88fXUq8e1DMID49qE8dXWqp6ckIiIiIiI+zDRNSkpKyM3N9fRUTlmQpycgLRcREsS8SWdxx5vrmH19OhEh+mMVEREREWmrqqurKSkpobi4mMOHDzvu6/68c2cxb75ZxLnnFmEYRRQVHbsVFhZSVFREdXU1QUGdyc7eS79+nv5UzWeYpunpObSqjIwMc82aNZ6exinbnlvsCLG9kiI9PR0REREREWkFW7bANddU8uKLVjp2tGK1Nn774YfDLF58mMGDiwkIKKa4+NitNuAe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AXJzczlwwH7/6qsH+PHHXGpqcjEM+yJOVVWHG07gBAzDIC4uztESHBqayLffxpOZGU/fvvHExcURH1///scfIxRSRUTErynsiojICXnLAk3gXW3Ddef9/vsmFRX5hIQcYMiQ/dx8834OHDjA/v32+7179/PNNwew2Q4Azu/1GhQURGLisUWakpKSCAhI5OOPk/jd75I488xjxxMSEggKCnL63CIiIm2BT4RdwzBeAS4D8kzT7H/02HzgWiDJNM3io8f+DtwFJJimeehk51TYFZG2zpcWaILWbxs+Pshec001S5bkU1FxgODgfaSl7eeKK/axb98+9u/fz759+9i3bz979uwHqhpOrBFBQcF06HBsUaYOHTo47isrk/i//0vi739PYtiwJGJiYhq0DIuIiIjzfCXsjgBKgNeOC7vpwFOmab5hGEYAkA3EAmkKuyLSlnlLkHVVpfVk73eytuG687bZbOTn55OXl8eddx7kq68OUlV1kMDAg3Trlkda2kEOHrTf8vLyKCgocPo62ICAaLp160i3bh3p0KEDHTp0oGPHjvXuO3ToQGxsrAKsiIiIm5wo7HpVL5Rpml8YhtGtkaeygPHAG8C5wCrgErdNTETEA5wJspdeag+yo0c3HmRvvtkeME3THignT24YZD/80B4YwX6/ZIn9eG2QffDB+sEToLTUfrx2zJ//3HhA/ctfjj12ZkztnD/5pH6QHT26ipEjc1m9ej/799tvPXseIChoP5CHaR5k3bqDxMUdpKCgoNHvs7oadu2y344XHR1HWVkSAwd2olevTnTs2JFOnY7dd+rUiQ4dOhAeHt7ouUVERMT7eFVlF+Bo2P3guMruB8D/wx5wn8Ieel8FMhqr7BqGMRWYCtClS5czf/rpJ3dMXUTEab5UkW1ppfVkc77ssnKeemq/o124Nsj+/PM+3nlnP+Xl+wkI2E9NzUmbeOoxDIPY2FgSEhKObouTwNq1iYwfn0C/fomO47Xb5sTFxek6WBERER/mE23McNKwezpQDEwD0oAfOEHYrUttzCLibm01yB7/uTZvNqmoKGD37t38+OOP7N69m+3bf+T113dTXv4TAQH7qKkpbPoLBQICAkhMTKRjx46OW23LcO3CTbW3uLg4AgMDnTqviIiI+D5/CLvfAeuAV03TvNcwjN0o7IqIG7lrf1hfCLJ1P9fhw4fZunUr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KZTMkuFkjsu22dZ0LweWsrexEgAAyByEXXyroU7LUu40n/r00091yy23qFevXjriiCM0adIkffXVVzr00EN166236tNPP9Vzzz2nn/70p2rTpk3c5aIJNFUX4XQF2dCbL9FYCQAA7Khgw66ZDTWz4vLy8rhLyRrJdFoOufnUunXrNGPGDA0aNEj77LOPxo0bp2XLlqlTp076xS9+oXfffVfvvPOOrrrqKnXu3DnuctEI6VoynMxx2Trbmu7lwBIhFQAA7Jhgw667l7h7UUFBQdylZIVkOy1LYTWfqqio0COPPKIzzzxTHTt21HnnnafZs2erefPmOuOMM/T000+rtLRUEyZM0CGHHBJ3udgO6ZppTfa4bJ1tZTkwAADINsGGXTROYzotZ7tvvvlGM2bM0Omnn66OHTtq2LBhevzxx1VZWan+/fvrzjvv1OrVq79tRsV1uJmtoVnbdM20JntcNs+2MtMKAACyCWEXksLvtFxRUaGHHnpIp512mjp16qTzzjtPf/nLX7RhwwYdddRRmjhxoj7++GO9/vrruuKKK9ShQ4e4S4Z2fPlxOmdakz2O2VYAAID0IOxCUpidlquqqvTCCy9oxIgR2n333XX++efrySef1MaNGzVgwADdeuut+uSTT/Tqq6/q5z//ufbee++4S84p6biONt0zrekOshKzrQAAANtC2M0h9W0rJIXTafn999/XNddco27duum4447T9OnTtW7dOh155JG6/fbbVVpaqldeeUVXXXWV9tprr7jLDVKmbL2T7pnWZI9jthUAACD1CLs5IplthbK50/KaNWt01113qX///jrooIN044036pNPPlHXrl117bXXavny5Xrttdc0ZswY7bHHHnGXm9UyJcgmM2sbx0wrQRYAACAzEHZzRDLbCknZ12n5gw8+0MiRI9WlSxddfvnlmjdvntq2batRo0bpxRdf1EcffaTf/va36t69e9ylZryGQqyUWUE22eto45hpJcgCAADEj7CbAxqzrVC2WLRokc4991z17NlT06ZN05YtW3TCCSfowQcf1L/+9S9NnjxZxxxzjJo14yWejGRCrJRZQTbZWVtmWgEAAHITSSAHhLSt0FtvvaVTTz1Vffr00cMPP6zmzZvr4osv1gcffKDZs2frvPPOU+vWreMuM+Ps6PY8UmYG2WSvoyXIAgAA5B7Cbg4IYVuhV155RYMGDVK/fv301FNPKT8/X2PGjNGHH36o4uJi7b///nGXGJt0bM8jZWaQTXbWFgAAALmHsJsDsnVbIXfX7Nmzdcwxx2jgwIGaPXu2dt55Z40dO1YrV67U7bffnvPbBaVrex4pc4Mss7YAAACoC2E3R2TTtkKbN2/W/fffr0MPPVSDBg3Syy+/rHbt2um6667TqlWrdMstt6hz585xl5kWO7r8uKm255EIsgAAAMguhN1ANLSHbjZsK7R27Vr9+c9/1n777acLL7xQCxcu1O67766bbrpJK1eu1Pjx49WhQ4e4y2wy6Vh+3JTb80gEWQAAAGQPwm4AktlDV8rcbYU+++wz/frXv9bee++t//qv/1Jpaal69uypyZMna+XKlRo3bpwKCgriLrNJpWv5cVNuzyMRZAEAAJA9CLsBSHYP3Uzzj3/8QyNHjlS3bt30hz/8QWvXrtUxxxyjkpISLV68WKNGjdJOO+0Ud5nbJVOWHzf19jwSQRYAAADZIdiwa2ZDzay4vLw87lJSKhv30P3f//1fjRkzRr1799a0adO0detWnXnmmZo3b55efPFFDRkyJKv3x8205cdszwMAAIBclL2JogHuXuLuRaEtf60tm/bQ3bRpkyZOnKju3bvrzjvvlLt/u0fuzJkz1a9fv7hLTMqOztqme/kx2/MAAAAgFwUbdnNFNuyh6+4qKSlR79699ctf/lJff/21jj/+eL333ntZt0duU8zaxrH8mFlbAAAA5BrCbpbL9D10Fy5cqOOPP14nn3yyli9frgMPPFCzZs3S7Nmz1bt377jL+550zNqy/BgAAABIPcJuADJxD92ysjJdcsklOuywwzRnzhztuuuuuu2227Ro0SINHjxYZpm3lDZds7YSy48BAACAVCPsBiCT9tB1d02bNk0HHnigiouLZWa68sortWLFCl155ZXKy8uLpa6GZmyl9M7asvwYAAAASC3CbiAyYQ/dVatW6cQTT9TIkSP19ddf6yc/+YkWLVqk2267Te3bt4+trmT2tE33rK1EkAUAAABSibCb4ZYskXr3TtxmqqqqKt11113q3bu3Zs+erV133VX33XefnnvuOfXs2TPlz7+j19lK8czaAgAAAEgdwm4GW7dOOukkaenSRBOq2lsMZYIVK1bo2GOP1eWXX66KigqdfvrpWrp0qS644IK0XJfbFNfZSszaAgAAAKEh7GawUaOksjLJXfr8c2n06Lgr+retW7dqwoQJ6tOnj1566SV16tRJM2fO1OOPP67dd989bXU0xXW2ErO2AAAAQGiSCrtmdpWZ7WIJk83sbTM7IdXF5bIpUxLNpjZEE5AbNkglJYnxuC1dulRHH320fvWrX6myslLnn3++lixZojPPPLPJn6u+JcpNeZ2txKwtAAAAEJJkZ3ZHuftaSSdI6ihppKSbU1YVdPXV31+2vH59Yjwu7q577rlHffv21bx587THHnuopKREDzzwgHbbbbcmf76Glig35XW2ErO2AAAAQEiSDbvVn/pPkjTV3d+rMYYUuOmm728h1Lq1dHNM/8VQUVGhCy+8UEVFRdq4caNGjBihJUuWaMiQISl7zoaWKDf1dbYSs7YAAABAKJINuwvM7G9KhN3ZZtZWUlXqysKoUYmmVPnRBGR+vjR0qDRyZPprWbJkifr166cHHnhArVu31n333aepU6eqXbt2O/S4O7pEmetsAQAAAGxLsmF3tKRxkn7g7usltVRiKTNSaMoUqVMnyUzq3FmaPDn9Ndx3333q16+fli1bpp49e+qtt97SBRdcsMOP2xRLlCWuswUAAABQt6TCrrtXSdoiaaCZnS7pGEndU1kYEsuYn31WOvjgRLOq2suaU6myslIXXXSRhg8frvXr1+uCCy7QW2+9pYMPPrhJHr+pligzawsAAACgLklNc5nZFEl9JC3Rv5cvu6QnUlQXIr16SYsXp/c5P/jgA5111llauHCh8vPzdccdd2j06NGN2jf30zVbVPy3ChWd0OZ7s6n1LVEeEC1BHtAzX0s+3qz3ViaOq6+xVPWsLQAAAABUS3YZc393L3T34e4+MvoaldLKEItHH31UhYWFWrhwobp376433nhDF110UaOCbrqXKAMAAABAbcmG3dfNrGnWryIjbdiwQVdccYXOOeccffPNNzrrrLO0YMECHXLIIY1+LJYoAwAAAIhbst16pisReP8laaMS2w65u/dJWWVImxUrVujss8/WO++8o5YtW+pPf/qTfvaznzVqNrcaS5QBAAAAZIJkZ3anSLpA0iBJQyUNiW6R5R599FH17dtX77zzjvbdd1+9+uqrGjNmzHYFXYklygAAAAAyQ7Jh92N3f9rd/+nuq6q/UloZUqr2suUzzjhDb7/9tgoLCxs8t779cVmiDAAA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\n",
      "text/plain": [
       "<Figure size 1152x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "fig = plt.figure(figsize=[16,10]); ax = fig.add_subplot(1, 1, 1)\n",
    "#plt.plot(df0.cumsum()[1:], label='25%', linestyle='None', marker='d', color='#87CEEB')\n",
    "plt.plot(df1.cumsum()[1:], label='Avg SME Track', linestyle='None', marker='d', color='#6495ED')\n",
    "plt.plot(df2.cumsum()[1:], label='75%', linestyle='None', marker='d', color='#0000FF')\n",
    "#plt.plot(df3, label='98%')\n",
    "#plt.plot(df4, label='99%')\n",
    "plt.plot(df3.cumsum()[1:], label='Top SME Track', linestyle='None', marker='d')\n",
    "plt.plot(sample['streams'].cumsum()[1:], label=sample.track_name[0], color='black', linewidth=2, linestyle='-')\n",
    "plt.yscale('log')\n",
    "plt.Axes.set_xticks(ax, ticks=[0,15,30,45,60,75,90], minor=False)\n",
    "plt.Axes.set_yticks(ax, ticks=[100,1000,10000,100000,1000000,10000000,100000000], minor=False)\n",
    "plt.Axes.set_yticklabels(ax,labels=[100,'1k','10K','100K','1M','10M','100M'])\n",
    "plt.xlabel('Days After Release')\n",
    "plt.ylabel('Streams')\n",
    "plt.legend(loc='best')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "name": "Artist vs Similar Artists.ipynb",
   "provenance": []
  },
  "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.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
