Skip to content

Instantly share code, notes, and snippets.

@xDimGG
Created October 25, 2023 01:54
Show Gist options
  • Save xDimGG/cc5d80bb2512f2525dd9f52fe4749a32 to your computer and use it in GitHub Desktop.
Save xDimGG/cc5d80bb2512f2525dd9f52fe4749a32 to your computer and use it in GitHub Desktop.
Air Premia Cheapest Flights
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"import datetime\n",
"from threading import Thread\n",
"from dateutil.relativedelta import relativedelta\n",
"\n",
"d = datetime.date.today()\n",
"\n",
"dates = [d + relativedelta(months=i) for i in range(10)]\n",
"for i in range(2, len(dates), 2):\n",
" dates[i].replace(day=1)\n",
"for i in range(1, len(dates), 2):\n",
" dates[i] += relativedelta(day=31)\n",
"\n",
"def get_all(orig, dest, rt=False):\n",
" data_1 = []\n",
" data_2 = []\n",
"\n",
" def get(start, end):\n",
" nonlocal data_1, data_2\n",
"\n",
" res = requests.get(\n",
" f'https://www.airpremia.com/pssapi/lowfare?loyalty=MonetaryOnly&fareTypes=FI&currency=USD&useCache=true',\n",
" params={\n",
" 'tripType': 'RT' if rt else 'OW',\n",
" 'origin': orig,\n",
" 'destination': dest,\n",
" 'beginDate': str(start),\n",
" 'endDate': str(end),\n",
" },\n",
" headers={'x-context-id': 'fWPYW5bOyAradjqUrqhU_1693964986200'}\n",
" )\n",
" res.raise_for_status()\n",
" j = res.json()\n",
" data_1 += j['data'][f'{orig}-{dest}']\n",
"\n",
" if rt:\n",
" data_2 += j['data'][f'{dest}-{orig}']\n",
"\n",
" reqs = [Thread(target=get, args=(start, end)) for start, end in zip(dates[::2], dates[1::2])]\n",
" for r in reqs: r.start()\n",
" for r in reqs: r.join()\n",
"\n",
" if rt:\n",
" return data_1, data_2\n",
"\n",
" return data_1"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"ewr_icn_ow = get_all('EWR', 'ICN')\n",
"icn_ewr_ow = get_all('ICN', 'EWR')\n",
"ewr_icn_rt, icn_ewr_rt = get_all('EWR', 'ICN', True)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"from dateutil.parser import parse\n",
"\n",
"# c = 'E' or 'PE' (premium) economy\n",
"def clean_data(data, c='E'):\n",
" return [{\n",
" 'date': parse(d['date']),\n",
" 'available': d[c]['availableCount'],\n",
" 'fare': d[c]['fareAmount'],\n",
" 'fees': d[c]['taxesAndFeesAmount'],\n",
"\t} for d in data if d[c] is not None]\n",
"\n",
"df_ow = pd.DataFrame(clean_data(ewr_icn_ow)).sort_values('date')\n",
"df_rt = pd.DataFrame(clean_data(ewr_icn_rt)).sort_values('date')\n",
"\n",
"assert len(df_ow) == len(df_rt)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<BarContainer object of 107 artists>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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IDw8HHPmzEFycjKmTJmC4cOHQ6/XV1TpREREpIAKPfD4XubOnQsrKyv06NEDWVlZCA0NxaJFi7Tp1tbW2LRpE4YNG4agoCA4OjoiIiIC06dPN2HVREREZAl0IiKmLqKiZWRkwNXVFenp6Tw+h4iojHTTdJB3lf9VQWbofn9/87uriIiISEkMOURERKQkhhwiIiJSEkMOERERKYkhh4iIiJTEkENERERKYsghIiIiJTHkEBERkZIYcoiIiEhJDDlERESkJIYcIiIiUhJDDhERESmJIYeIiIiUxJBDRERESmLIISIiIiUx5BAREZGSGHKIqELopulKNVaaaebEUuqsKLppunuux0f9OSLzwZBDRERESmLIISIiIiUx5BAREZGSGHKIiIhISQw5REREpCSGHCIiIlISQw4REREpiSGHiIiIlMSQQ0REREpiyCEiIiIlMeQQERGRkhhyiIiISEkMOURERKQkhhwiIiJSEkMOERERKYkhh4iIiJTEkENERERKYsghIiIiJTHkEBERkZIYcoiIiEhJDDlERESkJIYcIiIiUhJDDhERESmJIYeIiIiUxJBDRERESmLIISIiIiUx5BAREZGSGHKIiIhISQw5REREpKQKDTmLFy9G48aN4eLiAhcXFwQFBWHLli3a9Nu3b2P48OGoXLkynJyc0KNHD6SkpBgtIyEhAWFhYahUqRK8vLwwfvx45ObmVmTZREREpIAKDTm+vr6YNWsWDh8+jEOHDqFjx4547rnnEBsbCwAYO3YsNm7ciDVr1mD37t1ISkpC9+7dtfvn5eUhLCwM2dnZ2LdvH1asWIHly5cjMjKyIssmIiIiBdhU5ML//e9/G/08c+ZMLF68GH/88Qd8fX2xbNkyrFq1Ch07dgQAfPnll2jYsCH++OMPtG7dGr/88gvi4uKwfft2eHt7o2nTppgxYwYmTpyIqVOnws7OriLLJyIiIgv20I7JycvLw+rVq5GZmYmgoCAcPnwYOTk5CAkJ0eZp0KABatasiejoaABAdHQ0AgMD4e3trc0TGhqKjIwMbW9QUbKyspCRkWF0IyIiokdLhYecmJgYODk5Qa/XY+jQofjxxx8REBCA5ORk2NnZwc3NzWh+b29vJCcnAwCSk5ONAo5humFacaKiouDq6qrdatSo8WCbIiIiIrNX4SHnsccew7Fjx7B//34MGzYMERER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GVMP6jFVVlyfd59tVtT3XJX3u1mKGn9QZ8Ld77Lp0cbtyrKUZb0Y3jcqcr2psk0oeXYVEREREUMOERERKYkhh4iIiJTEkENERERKYsghIiIiJTHkEBERkZIYcoiIiEhJDDlEZVTW6+AQ0aPJVNckKuraYKW9Jpdq71kMOURERKQkhhwiIiJSEkMOERERKYkhh4iIiJTEkENERERKYsghIiIiJTHkEBERkZIYcoiIiEhJDDlERESkJIYcIiIiUhJDDhERESmJIYeIiIiUxJBDRERESmLIISKzodo3IBORaTHkEBERkZIYcoiIiEhJDDlERESkJIYcIiIiUhJDDhERESmJIYeIiIiUxJBDRERESmLIISIiIiUx5BCRxSnLRQN5gUGiRxdDDhERESmJIYeIiIiUxJBDRERESmLIISIiIiUx5BAREZGSGHKIiIhISQw5REREpCSGHCJ65BS8do5umo7X0iFSFEMOERERKYkhh4iIiJTEkENERERKYsghIiIiJTHkEBERkZIYcoiIiEhJDDlERESkJIsJOQsXLkStWrVgb2+PJ554AgcOHDB1SURERGTGLCLkfPfddxg3bhzeffddHDlyBE2aNEFoaChSU1NNXRoRERGZKYsIOR9//DFee+01DBgwAAEBAViyZAkqVaqEL774wtSlERERkZky+5CTnZ2Nw4cPIyQkRBuzsrJCSEgIoqOji7xPVlYWMjIyjG5ERET0aNGJiJi6iJIkJSWhevXq2LdvH4KCgrTxCRMmYPfu3di/f3+h+0ydOhXTpk0rNJ6eng4XF5cKrZfokabTAXe/pRQ1ZhgHip5W1PS7l1PS9LLUQcW71zp62HUAxuu44M+kpIyMDLi6upb797fZ78kpj8mTJyM9PV27JSYmmrokIiIieshsTF3AvXh6esLa2hopKSlG4ykpKfDx8SnyPnq9Hnq9/mGUR0RERGbK7Pfk2NnZoUWLFtixY4c2lp+fjx07dhh9fEVERERUkNnvyQGAcePGISIiAi1btkSrVq0wb948ZGZmYsCAAaYujYiIiMyURYSc3r1749KlS4iMjERycjKaNm2KrVu3wtvb29SlERERkZky+7OrHoT7PTqbiEqJZ1epxVzOYOLZVY8snl1FREREVASGHCIiIlISQw4REREpiSGHiIiIlMSQQ0REREpiyCEiIiIlMeQQERGRkhhy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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.title('One way fare minus round trip fare for same day')\n",
"\n",
"ys = df_ow['fare'] - df_rt['fare']\n",
"plt.xticks(rotation=45)\n",
"plt.bar(df_ow['date'], ys, color=['green' if y > 0 else 'red' for y in ys])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<BarContainer object of 107 artists>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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BQUBAJ599lm4uLhgyJAhiI+Px7fffov58+dj3LhxFmuciIiIFFba05s2b94sAIpMAwcOFJGCU6mnTZsmAQEBotfrpX379pKQkGD2GlevXpU+ffqIh4eHeHp6SkxMjGRkZJiNOXTokLRs2VL0er088MAD8u6775aqTp5GTUREpJ6Sfn7rRESsmJ/KTXp6Ory8vGAwGO7J8TA6nflj+/yqEhERla+Sfn7bzVlIREREdP9ggCEiIiLlMMAQERGRchhgiIiISDkMMERERKQcBhgiIiJSDgMMERERKYcBhoiIiJTDAENERETKYYAhIiIi5TDAEBERkXIYYIiIiEg5DDBERESkHAYYIiIiUg4DDBERESmHAYaIiIiUwwBDREREymGAISIiIuUwwBAREZFyGGCIiIhIOQwwREREpBwGGCIiIlIOAwwREREphwGGiIiIlMMAQ0RERMphgCEiIiLlMMAQERGRchhgiIiISDkMMERERKQcBhgiIiJSDgMMERERKYcBhoiIiJTjZO0CiO4Vnc78sYh16iAion+PW2CIiIhIOQwwREREpBwGGCIiIlIOAwwREREphwGGiIiIlMMAQ0RERMphgCEiIiLlMMAQERGRchhgiIiISDkMMERERKQcBhgiIiJSDgMMERERKYcBhoiIiJTDAENERETKYYAhIiIi5TDAEBERkXIYYIiIiEg5DDBERESkHAYYIiIiUg4DDBERESmHAYaIiIiUY/EAk5+fj2nTpiE4OBhubm6oVasW3nzzTYiINkZEMH36dFSpUgVubm6IiopCYmKi2eukpqaib9++8PT0hLe3N4YMGYLMzExLl0tEREQKsniAmTVrFhYuXIiPP/4Yx48fx6xZszB79mx89NFH2pjZs2fjww8/xKJFi7B79264u7sjOjoa2dnZ2pi+ffsiPj4esbGxWLduHbZt24bhw4dbulwiIiJSkE5u3jRiAV26dEFAQAC++OILbV6PHj3g5uaGb775BiKCoKAgjB8/Hi+//DIAwGAwICAgAIsXL0bv3r1x/PhxhIaGYs+ePYiIiAAArF+/Hp06dcL58+cRFBR01zrS09Ph5eUFg8EAT09PS7ZYLJ3O/LFlv6pkCVxHRES2r6Sf3xbfAvPoo49i06ZNOHHiBADg0KFD2LFjBx5//HEAwKlTp5CUlISoqCjtOV5eXmjWrBni4uIAAHFx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r14dcXFxAIC4uDg0aNAAAQEB2pjo6Gikp6cjPj6+2PfLyclBenq62URERET2qVwO4l2xYgX279+PPXv2FFmWlJQEFxcXeHt7m80PCAhAUlKSNubm8FK4vHBZcWbOnIkZM2ZYoHoiIiKydRbfAnPu3Dm89NJLWLp0KVxdXS398rc1efJkGAwGbTp37tw9e28iIiK6tyweYPbt24eUlBQ0adIETk5OcHJywtatW/Hhhx/CyckJAQEBMBqNSEtLM3tecnIyAgMDAQCBgYFFzkoqfFw45lZ6vR6enp5mExEREdkniweY9u3b48iRIzh48KA2RUREoG/fvtr/nZ2dsWnTJu05CQkJOHv2LCIjIwEAkZGROHLkCFJSUrQxsbGx8PT0RGhoqKVLJiIiIsVY/BiYihUrIiwszGyeu7s7KlWqpM0fMmQIxo0bB19fX3h6euLFF19EZGQkmjdvDgDo0KEDQkND0b9/f8yePRtJSUmYOnUqRo4cCb1eb+mSiYiISDFWuRLv3Llz4eDggB49eiAnJwfR0dFYsGCBttzR0RHr1q3D888/j8jISLi7u2PgwIF44403rFEuERER2RhdwXVN7E96ejq8vLxgMBgsfjwML0NORET3u/JKDyX9/ObNHImIiEg5DDBERESkHAYYIiIiUg4DDBERESmHAYaIiIiUwwBDREREymGAISIiIuUwwBAREZFyGGCIiIhIOQwwREREpBwGGCIiIlIOAwwREREphwGGiIiIlMMAQ0RERMphgCEiIiLlMMAQERGRchhgiIiISDkMMERERKQcBhgiIiJSDgMMERERKYcBhoiIiJTDAENERETKYYAhIiIi5TDAEBERkXIYYIiIiEg5DDBERESkHAYYIiIiUg4DDBERESmHAYaIiIiUwwBDREREymGAISIiIuUwwBAREZFyGGCIiIhIOQwwREREpBwGGCIiIlIOAwwREREphwGGiIiIlMMAQ0RERMphgCEiIiLlMMAQERGRchhgiIiISDkMMERERKQcBhgiIiJSDgMMERERKYcBhoiIiJTDAENERETKYYAhIiIi5TDAEBERkXIYYIiIiEg5DDBERESkHAYYIiIiUg4DDBERESmHAYaIiIiUwwBDREREyrF4gJk5cyYefvhhVKxYEZUrV0a3bt2QkJBgNiY7OxsjR45EpUqV4OHhgR49eiA5OdlszNmz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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"\n",
"plt.title('Best prices for each day')\n",
"xs = np.arange(0, len(df_ow) * 2, 2)\n",
"\n",
"plt.xticks(xs[::13], [s.strftime('%m-%Y') for s in df_ow['date'][::13]], rotation=45)\n",
"plt.bar(xs, pd.DataFrame([df_ow['fare'], df_rt['fare']]).min(), color='b', width=2)\n",
"# plt.bar(xs + 1, df_ow['fare'], color='r')\n",
"# plt.bar(df_ow['date'], pd.DataFrame([df_ow['fare']]).min(), color='r')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<BarContainer object of 109 artists>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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MWljnDa2yW7WrFnQ6XTKzd/f39zlEBERkZUotgCTnp6O7t27Q0SwdOnS4upGMXnyZOj1euV29erVYu+TVE6jeXgr7H2Kuw8iIsqXQ3Gs1BheLl++jF27dpn8huXr64v4+HiT9hkZGUhISICvr6/SJi4uzqSNcdrYJjutVgutVmvOMoiIiMhKmX0LjDG8nD9/Hjt27ECpUqVMlgcHByMxMRFHjx5V5u3atQtZWVlo0KCB0iYiIgLp6elKm/DwcFSrVg2enp7mHjIRERGpTKEDTFJSEqKiohAVFQUAuHjxIqKionDlyhWkp6ejW7duOHLkCFatWoXMzEzExsYiNjYWaWlpAIAaNWqgTZs2GDJkCP744w/8/vvvGDlyJHr27Ak/Pz8AQO/eveHk5ISwsDBER0dj3bp1WLRoEcaOHWu+yomIiEi1Cn0Y9Z49e9CiRYsc8/v374/p06ejUqVKud5v9+7daN68OYCHJ7IbOXIkNm/eDDs7O3Tt2hWffvop3NzclPYnT57EiBEjcPjwYXh7e+Ott97CxIkTCzxOHkZN+TLum5LXYdNPelh1bn0QEdFjFfT7+4nOA2PNGGAoXwwwRERWx2rOA0NERERkbgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOg6WHgBRsdFoHv4PAgAQPJyGiNn7UNaZfZqIiIoFt8AQERGR6jDAEBERkeowwBAREZHqFDrAREREoGPHjvDz84NGo8HGjRtNlosIpk2bhrJly8LFxQUhISE4f/68SZuEhAT06dMH7u7u8PDwQFhYGJKSkkzanDx5Ek2aNIGzszP8/f0xZ86cwldHRERENqnQASY5ORm1a9fG4sWLc10+Z84cfPrpp1i2bBkOHToEV1dXhIaGIiUlRWnTp08fREdHIzw8HFu2bEFERASGDh2qLDcYDGjdujUqVKiAo0ePYu7cuZg+fTqWL19ehBKJiIjI5sgTACAbNmxQprOyssTX11fmzp2rzEtMTBStVitr1qwREZEzZ84IADl8+LDS5rfffhONRiPXr18XEZElS5aIp6enpKamKm0mTpwo1apVK/DY9Hq9ABC9Xl/U8kjtHh4LZPyf/PMP0+U57lPY6bzWmVsfRET0WAX9/jbrPjAXL15EbGwsQkJClHk6nQ4NGjRAZGQkACAyMhIeHh4ICgpS2oSEhMDOzg6HDh1S2jRt2hROTk5Km9DQUMTExODu3bvmHDIRERGpkFnPAxMbGwsA8PHxMZnv4+OjLIuNjUWZMmVMB+HgAC8vL5M2lSpVyrEO4zJPT88cfaempiI1NVWZNhgMT1gNERERWSubOQpp1qxZ0Ol0ys3f39/SQyIiIqJiYtYA4+vrCwCIi4szmR8XF6cs8/X1RXx8vMnyjIwMJCQkmLTJbR2P9pHd5MmTodfrldvVq1efvCAiIiKySmYNMJUqVYKvry927typzDMYDDh06BCCg4MBAMHBwUhMTMTRo0eVNrt27UJWVhYaNGigtImIiEB6errSJjw8HNWqVcv15yMA0Gq1cHd3N7kRERGRbSp0gElKSkJUVBSioqIAPNxxNyoqCleuXIFGo8Ho0aMxc+ZMbNq0CadOncLrr78OPz8/dO7cGQBQo0YNtGnTBkOGDMEff/yB33//HSNHjkTPnj3h5+cHAOjduzecnJwQFhaG6OhorFu3DosWLcLYsWPNVjgRERGpWGEPb9q9e7cAyHHr37+/iDw8lHrq1Kni4+MjWq1WWrVqJTExMSbruHPnjvTq1Uvc3NzE3d1dBg4cKPfu3TNpc+LECWncuLFotVp57rnn5OOPPy7UOHkYNfEwaiIi9Sno97dGxDYvm2swGKDT6aDX6/lz0rMqv6tR53blaI2m8NN5rZNXpyYiKpSCfn/bzFFIRERE9OxggCEiIiLVYYAhIiIi1WGAISIiItVhgCEiIiLVYYAhIiIi1WGAISIiItVhgCEiIiLVYYAhIiIi1WGAoadDo/nnrLTPMj4ORERmwQBDREREqsMAQ0RERKrDAENERESqwwBDREREqsMAQ0RERKrDAENERESqwwBDREREqsMAQ0RERKrDAENERESqwwBDREREqsMAQ0RERKrDAENERESqwwBDREREqsMAQ0RERKrDAENERESqwwBDREREqsMAQ0RERKrDAENERESqwwBDREREqsMAQ7ZDo3l4Uxs1jpmIbJdKPksZYIiIiEh1GGCIiIhIdRhgiIiISHXMHmAyMzMxdepUVKpUCS4uLqhcuTI++OADiIjSRkQwbdo0lC1bFi4uLggJCcH58+dN1pOQkIA+ffrA3d0dHh4eCAsLQ1JSkrmHS0RERCpk9gAze/ZsLF26FJ9//jnOnj2L2bNnY86cOfjss8+UNnPmzMGnn36KZcuW4dChQ3B1dUVoaChSUlKUNn369EF0dDTCw8OxZcsWREREYOjQoeYeLhEREamQRh7dNGIGHTp0gI+PD77++mtlXteuXeHi4oLvv/8eIgI/Pz+MGzcO//nPfwAAer0ePj4+WLFiBXr27ImzZ88iICAAhw8fRlBQEABg69ataNeuHa5duwY/P798x2EwGKDT6aDX6+Hu7m7OEqkojHu0m/fllncf/5vW4OG0IPflJmPSaAo/ndc685vObZ1ERJb0ND6v81DQ72+zb4F55ZVXsHPnTpw7dw4AcOLECezfvx9t27YFAFy8eBGxsbEICQlR7qPT6dCgQQNERkYCACIjI+Hh4aGEFwAICQmBnZ0dDh06lGu/qampMBgMJjciIiKyTQ7mXuGkSZNgMBhQvXp12NvbIzMzEx9++CH69OkDAIiNjQUA+Pj4mNzPx8dHWRYbG4syZcqYDtTBAV5eXkqb7GbNmoUZM2aYuxwiIiKyQmbfAvPDDz9g1apVWL16NY4dO4aVK1di3rx5WLlypbm7MjF58mTo9XrldvXq1WLtj4iIiCzH7Ftgxo8fj0mTJqFnz54AgFq1auHy5cuYNWsW+vfvD19fXwBAXFwcypYtq9wvLi4OderUAQD4+voiPj7eZL0ZGRlISEhQ7p+dVquFVqs1dzmkQsrPt5YdBhERFSOzb4G5f/8+7OxMV2tvb4+srCwAQKVKleDr64udO3cqyw0GAw4dOoTg4GAAQHBwMBITE3H06FGlza5du5CVlYUGDRqYe8hERESkMmbfAtOxY0d8+OGHKF++PGrWrInjx49j/vz5GDRoEABAo9Fg9OjRmDlzJqpWrYpKlSph6tSp8PPzQ+fOnQEANWrUQJs2bTBkyBAsW7YM6enpGDlyJHr27FmgI5CIiIjItpk9wHz22WeYOnUq3nzzTcTHx8PPzw/Dhg3DtGnTlDYTJkxAcnIyhg4disTERDRu3Bhbt26Fs7Oz0mbVqlUYOXIkWrVqBTs7O3Tt2hWffvqpuYdLREREKmT288BYC54Hxso8xfPAZD/vC88DQ0RUCM/qeWCIiIiIihsDDBEREakOAwwRERGpDgMMERERqQ4DDBEREakOA4y5GffetgEazSPl2FBdVi/7Y83HnoiehMmH+T/Tyuzsyx+3jrymLYABhoiIiFSHAYaIiIhUhwGGiIiIVIcBhoiIiFTH7NdCIiIiIvVRriBg2WEUGLfAEBERkeowwBAREZHqMMAQERGR6jDAEBERkeowwNAzL7eTUBZkOpcTWxZ5uiB9EhHRPxhgiIiISHUYYIiIiEh1GGCIiIhIdRhgiIiISHUYYIiIiEh1GGCIiIhIdRhgiIiISHUYYIiIiEh1GGCe1GPONqbMzu2MZURExelJP3PM8bmlxs89c5xx0txnvSxEn8pdn5HvHQYYIiIiUh0GGCIiIlIdBhgiIiJSHQdLD4CIiMiSjLuLiGWHQYXELTBERESkOgwwREREpDoMMGbyDByxViRP42i+Z+SIQSIiegQDDBEREalOsQSY69evo2/fvihVqhRcXFxQq1YtHDlyRFkuIpg2bRrKli0LFxcXhISE4Pz58ybrSEhIQJ8+feDu7g4PDw+EhYUhKSmpOIZLREREKmP2AHP37l00atQIjo6O+O2333DmzBl88skn8PT0VNrMmTMHn376KZYtW4ZDhw7B1dUVoaGhSElJUdr06dMH0dHRCA8Px5YtWxAREYGhQ4eae7hERESkQhoRMeuRY5MmTcLvv/+Offv25bpcRODn54dx48bhP//5DwBAr9fDx8cHK1asQM+ePXH27FkEBATg8OHDCAoKAgBs3boV7dq1w7Vr1+Dn55fvOAwGA3Q6HfR6Pdzd3c1XYHYaDSBi/F/u08D/JtTFZOhKQUVcB4rvccjeh+Z/B0M+bloZgybb8sc9f4+ZLkyfj50uRJ9EBfakrxlzfG6p6HX72M+p3B6H7HUVZDqvdeY3XYg+C1xH9s++/D4rCzIGMyro97fZt8Bs2rQJQUFBeO2111CmTBnUrVsXX375pbL84sWLiI2NRUhIiDJPp9OhQYMGiIyMBABERkbCw8NDCS8AEBISAjs7Oxw6dCjXflNTU2EwGExuREREZJvMHmD+/vtvLF26FFWrVsW2bdvwxhtvYNSoUVi5ciUAIDY2FgDg4+Njcj8fHx9lWWxsLMqUKWOy3MHBAV5eXkqb7GbNmgWdTqfc/P39zV0aERERWQmzB5isrCzUq1cPH330EerWrYuhQ4diyJAhWLZsmbm7MjF58mTo9XrldvXq1WLtj4iIiCzH7AGmbNmyCAgIMJlXo0YNXLlyBQDg6+sLAIiLizNpExcXpyzz9fVFfHy8yfKMjAwkJCQobbLTarVwd3c3uREREZFtMnuAadSoEWJiYkzmnTt3DhUqVAAAVKpUCb6+vti5c6ey3GAw4NChQwgODgYABAcHIzExEUePHlXa7Nq1C1lZWWjQoIG5h/x0/e+sa8rJ1wo4/bhVmf6jQF0/dp0F6bO4mXRt3NEsn+lnRWGfH2t4PtWqWB+77OvL3kd+fRa2/dPq00xjMOtj/8hnRq7r5HtD1cx+MccxY8bglVdewUcffYTu3bvjjz/+wPLly7F8+XIAgEajwejRozFz5kxUrVoVlSpVwtSpU+Hn54fOnTsDeLjFpk2bNspPT+np6Rg5ciR69uxZoCOQiIiIyMZJMdi8ebMEBgaKVquV6tWry/Lly02WZ2VlydSpU8XHx0e0Wq20atVKYmJiTNrcuXNHevXqJW5ubuLu7i4DBw6Ue/fuFXgMer1eAIherzdLTY/1v4dQeSRzm370Yf7ftDK7gNN5dP3Y5bm1z2udjx1DIfoobJ+Pbf9InwWZLtJjmUed5u6zII9tYfss8GNZwPb0j2J97LKv7zGvy/wHl0f7gkzntY7CThe0zwKMwayPfX7vnWL8jChsHwXpM7e6ClNnfmPK87HPr04zKuj3t9nPA2MtrPY8MAU8/j7P4/FNuy7w8fj5nZPlsec2KUQfhe3zse0f91g+ZjrXcdvYeWCK/FgW4zl4bFWxPnaFPU/IYweXR/uCnDckr3UUdrqgfRZgDAX57Cuw/N47+fX5BJ8R2evMr4+C9JlbXQX6jCji91BB+iwOFjsPDBEREVFxY4AhIiIi1WGAISIiItVhgCEiIiLVMfth1JS7f3auIqJn0ZPu85j9M+RpfKYUpc8C77tbiHU+bdY4JsqJW2CIiIhIdRhgiIiISHUYYIiIiEh1GGCIiIhIdRhgiIiISHUYYIiIiEh1GGCIiIhIdRhgVMR4boJ//pHHco3G+D/884+c7fNaXpAx5DZt7j6pYGzlsX/S13Fu7QvyujVdWeHHnF+fRWblz9dTk9vjkN/zWYhVmVt+fWRfXpAxFXbMRelDTRhgiIiISHUYYIiIiEh1GGCIiIhIdRhgiIiISHUYYIiIiEh1GGCIiIhIdRhgisiWDkV71tjaoYSkTtZwqO+T9mmJw5H5/iUjBhgiIiJSHQYYIiIiUh0GGCIiIlIdBhgiIiJSHQYYIiIiUh0GGCIiIlIdBhgiIiJSHQYYIiIiUh0HSw+Anm3GE1IJjGemEouNRW3M8dhpNIDIP//IPp1vn7m0edIxFKS9yRiewmsme5+a//XJ1y3ZugK+LS2CW2CIiIhIdRhgiIiISHUYYIiIiEh1ij3AfPzxx9BoNBg9erQyLyUlBSNGjECpUqXg5uaGrl27Ii4uzuR+V65cQfv27VGiRAmUKVMG48ePR0ZGRnEPl4iIiFSgWAPM4cOH8cUXX+DFF180mT9mzBhs3rwZ69evx969e3Hjxg28+uqryvLMzEy0b98eaWlpOHDgAFauXIkVK1Zg2rRpxTlcIiLVyu0qzQWZ5pWdSbWkmNy7d0+qVq0q4eHh0qxZM3n77bdFRCQxMVEcHR1l/fr1StuzZ88KAImMjBQRkV9//VXs7OwkNjZWabN06VJxd3eX1NTUAvWv1+sFgOj1evMV9QjlkfvfP/KcBoz/K/K0Jfp8pOtCjYF9WnmfhXhNZZfbOp5Ucb+OC1KnNfRp8oA8jdeUGeq06OuYfRZfn490nl+fxaGg39/FtgVmxIgRaN++PUJCQkzmHz16FOnp6Sbzq1evjvLlyyMyMhIAEBkZiVq1asHHx0dpExoaCoPBgOjo6Fz7S01NhcFgMLkRERGRbSqW88CsXbsWx44dw+HDh3Msi42NhZOTEzw8PEzm+/j4IDY2VmnzaHgxLjcuy82sWbMwY8YMM4yeiIiIrJ3Zt8BcvXoVb7/9NlatWgVnZ2dzr/6xJk+eDL1er9yuXr361PomIiKip8vsAebo0aOIj49HvXr14ODgAAcHB+zduxeffvopHBwc4OPjg7S0NCQmJprcLy4uDr6+vgAAX1/fHEclGaeNbbLTarVwd3c3uREREZFtMnuAadWqFU6dOoWoqCjlFhQUhD59+ij/dnR0xM6dO5X7xMTE4MqVKwgODgYABAcH49SpU4iPj1fahIeHw93dHQEBAeYeMhEREamM2feBKVmyJAIDA03mubq6olSpUsr8sLAwjB07Fl5eXnB3d8dbb72F4OBgNGzYEADQunVrBAQEoF+/fpgzZw5iY2MxZcoUjBgxAlqt1txDJiIiIpWxyMUcFyxYADs7O3Tt2hWpqakIDQ3FkiVLlOX29vbYsmUL3njjDQQHB8PV1RX9+/fH+++/b4nhEtFj5HeRwxwXPZT8LxhJRFQQmoeHc9seg8EAnU4HvV5fLPvD5HcVX5Np5P/BXpQP/uLuU5kuaJ//m2afVt5nIV5T2T3pGCzxOlZLn8rj/aRj4GcE+7TgZ4Q5FPT7m9dCIiIiItVhgCEiIiLVYYAhIiIi1WGAISIiItWxyFFIRERk6p8dMImoILgFhoiIiFSHAYaIiIhUhwGGiIiIVIcBhoiIiFSHAYaIiIhUhwGGiIiIVIcBhoiIiFSHAYaIHst4bhJoNI9MEBFZHgMMERERqQ4DDBEREakOAwwRERGpDgMMERERqQ4DDBEREakOAwwRERGpDgMMERERqQ4DDBEREakOAwwRERGpDgMMERERqQ4DDBEREakOAwwRERGpDgMMERERqQ4DDBEREakOAwwRERGpDgMMERERqQ4DDBEREakOAwwRERGpDgMMERERqQ4DDBEREamO2QPMrFmz8NJLL6FkyZIoU6YMOnfujJiYGJM2KSkpGDFiBEqVKgU3Nzd07doVcXFxJm2uXLmC9u3bo0SJEihTpgzGjx+PjIwMcw+XiIiIVMjsAWbv3r0YMWIEDh48iPDwcKSnp6N169ZITk5W2owZMwabN2/G+vXrsXfvXty4cQOvvvqqsjwzMxPt27dHWloaDhw4gJUrV2LFihWYNm2auYdLREREaiTFLD4+XgDI3r17RUQkMTFRHB0dZf369Uqbs2fPCgCJjIwUEZFff/1V7OzsJDY2VmmzdOlScXd3l9TU1AL1q9frBYDo9XozVvMP5ZH73z/ynAaM/yvytCX6fKTrQo2BfVp5nxZ8TbHP4uuz0K8pS/T56EPEPq23z0c6z6/P4lDQ7+9i3wdGr9cDALy8vAAAR48eRXp6OkJCQpQ21atXR/ny5REZGQkAiIyMRK1ateDj46O0CQ0NhcFgQHR0dK79pKamwmAwmNyIiIjINhVrgMnKysLo0aPRqFEjBAYGAgBiY2Ph5OQEDw8Pk7Y+Pj6IjY1V2jwaXozLjctyM2vWLOh0OuXm7+9v5mqIiIjIWhRrgBkxYgROnz6NtWvXFmc3AIDJkydDr9crt6tXrxZ7n0RERGQZDsW14pEjR2LLli2IiIhAuXLllPm+vr5IS0tDYmKiyVaYuLg4+Pr6Km3++OMPk/UZj1IytslOq9VCq9WauQoiIiKyRmbfAiMiGDlyJDZs2IBdu3ahUqVKJsvr168PR0dH7Ny5U5kXExODK1euIDg4GAAQHByMU6dOIT4+XmkTHh4Od3d3BAQEmHvIREREpDJm3wIzYsQIrF69Gj///DNKliyp7LOi0+ng4uICnU6HsLAwjB07Fl5eXnB3d8dbb72F4OBgNGzYEADQunVrBAQEoF+/fpgzZw5iY2MxZcoUjBgxgltZiIiIyPzHQQHI9fbtt98qbR48eCBvvvmmeHp6SokSJaRLly5y8+ZNk/VcunRJ2rZtKy4uLuLt7S3jxo2T9PT0Ao+Dh1HzEEn2aX2vKfZZfH0W+jVliT4ffYjYp/X2+Ujn+fVZHAr6/a15OA7bYzAYoNPpoNfr4e7ubvb1azQPn2HjP/KcBqDBw4dZULTpfPsohj6V6YL2+b9p9mnlfVrwNcU+i6/PQr+mLNGn2t87z0qfhXgdF4eCfn/zWkhERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDpWHWAWL16MihUrwtnZGQ0aNMAff/xh6SERERGRFbDaALNu3TqMHTsW7733Ho4dO4batWsjNDQU8fHxlh4aERERWZjVBpj58+djyJAhGDhwIAICArBs2TKUKFEC33zzjaWHRkRERBZmlQEmLS0NR48eRUhIiDLPzs4OISEhiIyMtODIiIiIyBo4WHoAubl9+zYyMzPh4+NjMt/Hxwd//vlnrvdJTU1FamqqMq3X6wEABoOh2MaprPp//3js9MOpR/5bhOn8+iiOPlHIPg3Z78k+rbJPZdICryn2WXx9FvY1ZYk+1f7eeVb6VCYL3qc5Gb+3RSTvhmKFrl+/LgDkwIEDJvPHjx8vL7/8cq73ee+99wQAb7zxxhtvvPFmA7erV6/mmRWscguMt7c37O3tERcXZzI/Li4Ovr6+ud5n8uTJGDt2rDKdlZWFhIQElCpVChqNxqzjMxgM8Pf3x9WrV+Hu7m7WdVsS61IX1qUetlgTwLrURi11iQju3bsHPz+/PNtZZYBxcnJC/fr1sXPnTnTu3BnAw0Cyc+dOjBw5Mtf7aLVaaLVak3keHh7FOk53d3erfhEUFetSF9alHrZYE8C61EYNdel0unzbWGWAAYCxY8eif//+CAoKwssvv4yFCxciOTkZAwcOtPTQiIiIyMKsNsD06NEDt27dwrRp0xAbG4s6depg69atOXbsJSIiomeP1QYYABg5cuRjfzKyJK1Wi/feey/HT1Zqx7rUhXWphy3WBLAutbG1ujQi+R2nRERERGRd7Cw9ACIiIqLCYoAhIiIi1WGAISIiItVhgCEiIiLVYYAhIiIi1WGAsRBbPfjLlupKSkrCgwcPLD0Ms7PVuh69mKstYV3qYot1WWtNDDBP0YMHD/DgwQOIiNmvz2RJSUlJuH37NpKTk22mrnPnzqFx48b44YcfbOrL3lbrOnPmDFq2bIn9+/dbeihmxbrUxRbrsuqazHDxaCqAM2fOSIcOHaRBgwYSGBgop06dEhGRrKwsC4/syURHR0uLFi2kTp064ufnJ5s3bxYR9dc1adIk0Wg08txzz8nq1aslJSXF0kMyC1uta+DAgaLRaKRy5co5rmKvZqxLXWyxLmuuyarPxGsrTp8+jWbNmqFHjx7o2LEjfvrpJ/To0QMnT56Evb29arfIGOvq27cvQkNDsXbtWoSFheHSpUtwcXFRbV0A0KJFC9jb2yMlJQUDBw5EZmYm+vbta+lhPTFbratJkyYoU6YMbt++jY4dO2LDhg1o0qSJpYf1xFiXuthiXdZcEwNMMbty5Qp69eqFwYMHY/bs2QCAChUq4JtvvkFycjKcnZ3h5ORk4VEW3o0bN9C/f38MHDgQ8+bNAwBUqVIFiYmJuH37Ntzc3ODs7AwXFxcLj7Tofv75Z5w6dQqJiYkYNmwYPDw88Msvv6BmzZpWeYmLgrLFukqUKIF9+/Zhx44diIuLQ7du3bBnzx6sXr0agYGB6NGjh6WHWCSsS11ssS6rrsnSm4Bs3c8//ywDBgyQ2NhYZd6ECROkVKlSEhgYKM8//7wsXLhQEhMTLTjKwtu7d6+MHj1arly5osx79913pUSJElKjRg2pUKGCjB49Wi5fvmzBURadXq+Xpk2byoMHD0REZNSoUeLg4CAeHh5y+PBhC4+u6Gy1rnPnzknz5s2V6R49eohWq5VSpUrJuXPnLDiyJ8O61MUW67LmmrgTbzHr1KkTxo8fr1xFe+nSpZg7dy4++OADfPvtt+jZsyemTZuGmJgYC4+0cJo2bYo333wT/v7+AIAvv/wSH330ET7//HP8/PPPmDBhAn788UccO3bMwiMtGnd3dyQnJ+PAgQMAgPv378PZ2RkpKSm4dOkSUlJSLDzCorG1urKysgAAVatWxd27d3Hu3DkAgL29PRwcHJCVlQW9Xm/JIRYJ61IXW6xLDTUxwDwFAQEBAB5+Wdjb22Pv3r144403EBQUhA8//BAlS5bEr7/+auFRFl7VqlUBAOnp6ShXrhz279+PgQMHomrVqnjzzTfh5uaGnTt3WniUeYuLi8ORI0ewZcsWZGZmAoDy/xdeeAGZmZkYNWoUfv31V5w+fRphYWHo3r07tmzZYslh58tW67p9+zZiYmLw+++/AwDs7OyQlpaGtLQ0eHp64t69exg1ahT27NmDXbt24V//+hcaNmyIP/74w8IjzxvrYl2WpsqaLLr9xwb9/fffsmDBAnnrrbdk48aNyqZ6o/T0dOXfmZmZcuPGDWnUqJFs2LDhKY+0cM6fPy/Tp0+XXr16yRdffJHjp6FHjzrKyMiQhIQEad26taxYseJpD7XATp48KYGBgRIYGCj29vbSuHFjuXbtmrJ89uzZotFopGzZsiY/r4wePVrOnj1riSEXiK3WderUKQkKCpLq1auLi4uLvPrqqybLJ0yYIC4uLuLn5ydHjx4VEZHU1FTp27evxMTEWGLIBcK6WJelqbUmBhgzOnnypPj7+0vLli0lODhYNBqNfPLJJyLyMKyI5Dy8eOrUqRIQEGCyL4m1OXXqlPj6+krHjh2lXbt24ubmJmPGjBGRx9c1bdo0eeGFF+TixYtPe7gFcu7cOfHx8ZEpU6bIuXPn5OrVq1KpUiUJCwtT2uzZs0cGDx4sx48fF5GHwcza2Wpdf/75p5QuXVreeecdOXjwoOzbt088PT3lnXfeUdp899130rFjR6UuNWBdrMvS1FwTA4yZXL58WapUqSITJ05UtrJ88cUX4uHhkWs42bNnj4wbN050Op3VvSgedfXqVQkICJAJEyYo8zZt2iRarVZOnz6do/3mzZtlzJgx4unpabV1JScny+DBg2Xo0KGSlpamhLBly5ZJ/fr1TbaSGQwGSw2z0Gy1rnv37kn37t1lxIgRJkF50qRJ0r59e5O2CQkJT3t4Rca6WJelqb0m7gNjBpmZmfjhhx8QGBiICRMmKDs4tWzZEp6enrh//75J+7t372L//v04cOAA9u3bhzp16lhm4PkQEWzfvh3VqlXDW2+9BRFBZmYmmjdvjipVquDu3bs57hMTE4Pjx48jIiLCautydHREWloaatasCUdHR9jZPXwb+Pv74/r160hOTkZ6ejoAoGTJkgDUcYkEW63Lzs4OmZmZCAwMNDmvUM2aNXHhwgWkpaUppzr39PS01DALjXWxLktTe008D4wZ2NvbIzAwELdv34aXlxeAhy+MChUqICMjA9evX8cLL7ygvEA8PT0xZswYDB8+HKVKlbLk0POk0WhQpUoV1KtXD+XKlQPwsNaSJUsiPT0d165dy3GfcePGISwsDB4eHk95tAXn6OiIJUuWwNXVFcDDve3t7OxQsmRJeHh4QKfTKW3/+usvVKxYEfb29pYaboHZal0lSpTA4sWLlSP5jHVptdoc51G6c+eOVb+nHsW6WJelqb0mBhgzadOmDUJDQwFAOQOtiMDB4eFDbAwv27dvR5UqVfD888+jRIkSFhtvQTVt2hSNGzcG8E9dWVlZ0Gq1Ju1+/PFHlCtXDg0bNrTK8HLnzh1cv34drq6u0Ol08Pb2BgBkZGQoz5GdnR1SU1ORlpYGJycnTJo0CcePH8ePP/6obLGwNrZal16vh16vh5ubG1xdXZUP2EfrcnBwQEZGhnKfCRMm4MqVK1i5cmWO16e1YF2sy9JsqiYL/nylahcvXpRvvvlGFi5cKLt371Z+P0xLSxORh0cbJScnS0BAgPzxxx8i8vB3RTc3N5MjQqzNhQsXZPbs2TJ16lRZsWKFsh+F8f/GHT4bN24sv/76q4g8rMvV1VX+/vtvyww6HydOnJCqVavKCy+8IN7e3hISEiLbtm0TEdOdj/ft2yfe3t6SkpIiU6ZMEScnJzl06JClhp0vW63r5MmTUqtWLalevbr4+PjI4MGDJTIyUkRM69q0aZM8//zzIiLyzjvvsC4LYV3qqcvWamKAKYJTp06Jl5eXtGjRQry9vaVWrVoSGhoqqampIvLPl/2DBw+kcuXKcvDgQXnvvffE1dVVCTPW6PTp06LT6aR9+/ZSo0YNqV69utSuXVsuXbpk0i4jI0Pq1KkjP//8s8yYMUNKlChhtWdxvXnzpvj7+8vYsWMlJiZG1qxZI/369RNHR0dZtWqViPzzfO3fv1/q1q0r48aNEycnJ+VwQWtkq3VdvXpVfHx85O2335bIyEj55JNPpG3btlKpUiX57bffROSfujZs2CDBwcEybdo01mUhrEs9ddliTQwwhZScnCxNmjSR4cOHS2Zmpty9e1fWr18vgYGBUrNmTbl3756IPEyzaWlpUqdOHWnQoIE4OTnJkSNHLDz6x0tNTZU2bdrIwIEDReRhnUeOHJFGjRpJ+fLl5cSJEyLysK7MzEx55ZVXpGrVquLs7GzVdR05ckRq165tstXr5s2bMmHCBNFoNPLjjz8q8/fu3SsajUZKly5ttW9YI1uta+vWrfLyyy+bHCV17NgxGTBggJQuXVp27NihzF+/fr1oNBopVaqUVb8GRViXCOuyNFusiQGmkO7evSsvvviiyRdEenq6HD9+XF588UWpV6+esikuLi5O3N3dxcXFRU6ePGmpIRdIWlqavPLKK7JkyRKT+Xfu3JFWrVrJ888/r7zw9Xq91K1bV3Q6ndXXtW/fPtFoNDkO6U5ISJDRo0eLj4+P8gbV6/USFBSkhDVrZqt1bdiwQZycnHJcY+XMmTPSr18/adCggbLsr7/+ktq1a1v9a1CEdYmwLkuzxZoYYAopKytL6tatK8OHD8+x7MCBAxIQECDjxo1T5q1atUqioqKe5hCLrHnz5tKxY0dl2rg58dq1a1K7dm3p1q2bsmzTpk0SHR391MdYUMYQeffuXWnVqpUMGzZMbt68adLmzJkz0qRJE1m0aJHS3liztbL1umJiYuSll16S2bNnK1szjXbs2CE1a9aUjRs3KvOyn+na2rAu1mVptliTEc8DU0gigq5duyIqKgqbN282WdagQQO0a9cOR48exYMHDwAAvXv3Ru3atS0x1EIbPHgwLl++jMWLFwN4ePRKVlYWnnvuOQwbNgznz59HbGwsAKBjx47KNZ6sSUpKCtLS0pCcnAwA8PDwQOvWrbFv3z6sWbMGCQkJStsaNWrA1dUVERERylFixnOnWBtbrSsjI8PkaIcXXngBwcHB+OyzzxAeHq6cgwIAWrVqBWdnZ5Prhjk7Oz/V8RYU62JdlmaLNWVnnZ9qVuTOnTs4ceIETp48iTt37sDOzg59+vSBg4MDPv/8c+zYsUNpa2dnh/r16ysnDbNmcXFx2LdvH3bs2IHr168DePgifvHFF7Fu3Tp88803AP754qtatSr0ej3S0tIsNub8nDlzBgMGDECDBg3Qt29ffP311wAeHgLYsmVLLFmyBMuWLcPNmzeV+3h5eaFixYrKlVetka3W9eeff2LEiBFo2rQpRo0apVxIctGiRQgKCsKwYcPw3//+1+SKt35+fqhUqZKlhlwgrIt1WZot1pQbjYgKTsVpIadOnUL//v1x//59JCcno06dOliwYAGqVKmCmJgY9OzZE6VLl0b37t0xePBgpKWlYdKkSThy5Ah+++035YRi1ubUqVPo1asXgIfnBNDpdFi7di0CAwNx6dIljB07Frdu3ULz5s3xwQcfQK/X4+OPP8b27duxc+dOqzzPy5kzZ9C4cWP06dMHvr6++Ouvv3D69GksWrQIwcHBAICJEydix44dsLOzQ5MmTRAfH49NmzYhMjISNWvWtHAFubPVuqKjo9GsWTN07twZJUqUwNmzZ+Hk5IRFixahSpUqAIC+ffvi0KFDqFu3LurUqYMrV65g7dq1OHjwIKpXr27hCnLHuliXpdliTY9l4Z+wrFZMTIyUKVNGxo8fL9HR0fLdd99Jq1atZPbs2cr+BOfPn5fXXntNqlWrJmXLlpXmzZtb9TWARP652N/EiRPl8uXLsnfvXuncubMMHTpU+c3z2rVrMnHiRKlUqZLodDoJCgqS0qVLy7Fjxyw8+tzFx8dL48aNTfY9OnfunFStWlW++uork7abN2+WCRMmSMuWLWXAgAFWvZOardYVGxsrL730kvznP/9R5h0+fFi8vb3ll19+MWm7dOlS6d+/v9SrV0+6dOli1fuTsS7WZWm2WFNeGGBykZSUJL179za5gq+ISFhYmLzyyisi8s+OUQkJCRIVFSUfffSRrFy5Us6fP//Ux1tQ9+/fl8GDB8vrr79uctKi6dOnS61atXK0vXnzpnz11VeyefNmq72qtMjDQ4o7d+4s+/btE5F/npu+ffvKxIkTRUSUc/QYpaenW/2OrbZa144dO6RLly5K0DfW1aZNG+UouOx13b9/P8c8a8O6/sG6LMMWa8oLLyWQi9TUVPj6+qJevXoAHl6s0d7eHl26dEF0dDTS09NhZ2cHOzs7eHp6wtPTUxU76mo0GpQvXx7e3t7KpQ40Gg06dOiANWvWIDExEW5ubrC3t4eLiwtcXFwQFhZm6WHny8fHB/369cv1kgeJiYkAYHJNDwDKKbOtma3WVbZsWXTo0CHHxT7T0tKUncSz1+Xi4vK0hldkrOsfrMsybLGmvFj/p50FeHl5oXfv3qhfvz6Af3ZkdXR0xP3795GVlQUHBwdoNBokJCQoF3C0ds7Ozujbt2+OHbU0Gg3S09Oh0Whgb28PjUaD+Ph4lClTxkIjLZxy5copF5sUEeX5KlGihMnVlt9//314e3vjzTfftMg4C8tW6woICFCOYDOGMgBwdXU1uSLuokWL4Ovrix49elhknIXFuliXpdliTXnhUUiPYQwvj74IkpKSkJSUpHzJT5kyBaGhoUhLSzP5QrFmj4YX41/zycnJSE1NhZOTEzQaDcaPH49atWohJSVFNXUBD6+katyyBAA6nU7ZIvHOO+/gww8/RMOGDS05xCKx1brkkYueAg8PDTf+NfjOO+9g0qRJVrsTcl5Yl7rYYl22WFNuGGAew3j4qUajQWZmJgDA3d0dzs7OcHBwwNSpUzF//nwsXbpU+eJXg0cPq83IyICdnR3c3Nzg4OAAJycnTJ06FV988QU2bdoEZ2dnVdRlfH6M/ze+ae/duwcHBwfMmTMH8+fPR2RkpPKzoBo8K3UZGQwGZGVlYdasWViwYAH279+PwMBASwyxSGylrux/tNhCXbn9Iab2umyxpkIr/t1s1Md4xeXbt2+bzN+3b580btxY3n77bau/tlFujHXFxcWZzI+OjpY6derIkCFDVFeXsaZLly7JK6+8YnLhyTfffFM0Go2ULFnSai82+Ti2Vlf2q5lfvnxZunfvLjdu3FDa9OjRQ7Rarbi6ulp1Xenp6Tnm2UJdd+/ezTHPFuq6dOmScrFCYz1qr8sWayoKboHJJi0tDfb29rh8+TJq1aqF7777Tll2584d/P777/jqq68QGRmp/MykBsYdkS9fvoxy5crh008/VZbdvn0bJ06cwJo1a3Dw4EGrrMv4F0X2E7MZa2rUqBFq1qyJ8uXLK8sqV64Mf39/HDhwAEFBQU91vAVlq3Vdv34d4eHhWLlypbKlLyMjQ6krODgYpUuXhq+vr3IfX19flCpVCgcPHrTaumJiYjBlyhRcuHBBmZeVlaX6uqKiotCxY0ecPHnSZL7a6zp9+jSqVKmC8ePHA3hYj9qfL1usqcgsnaAsJSYmRiZMmCADBgyQhQsXmlzg6uLFi+Ln5yfDhw83Odz41KlT0q5dO6u+BlBcXFyuf0mJiFy/fl18fX3ljTfeMDnUNjY2Vvr37y+nT59+SqMsnFOnTknz5s3lypUrImJ6XZ/79+9Ls2bN5I033jB5rkRE/vzzT7l+/fpTHWth2GpdJ0+elBdeeEHq1asnrq6uUq9ePUlLSxMRkXv37knVqlVl2LBhOeo6dOiQ1R6un5WVJffv35eXXnpJNBqNDB8+XHneRB5eMFONdYmIREVFiaOjo4wfPz7HssTERKlSpYoq6zp+/Li4urpK+/btpXLlyvJ///d/IvLwfZaUlKTK58sWa3oSz2SAiY6OFp1OJ23atJGuXbuKTqeTkJAQWb58uYiIfPjhhzJq1KgcLwKRh29oa3XmzBlxcnKSbt26iV6vV+Yb61iyZIlMnTo117qSk5Of2jgL4+LFi1KlShXRaDRStWpVuXr1qoiYftkfP34815qsma3WdfbsWfH29pYpU6bI5cuX5e+//xZvb2/ZsmWL0ubAgQMmdaqpxnfeeUcGDhwoLi4u0qtXL5MvhePHj5v8vKSGuk6fPi0uLi4ybdo0EXk45jt37sjff/+ttFHj8xUVFSUlSpSQqVOnSlpamjRs2FD69etn0mb//v0mtVh7XbZY05N65gJMamqq9O3bV4YMGaLMO3/+vPTo0UMaNmwoX3/9da73s/YXQmxsrLzyyivSsmVL8fb2ltdee80kxIhY/xWJs3vw4IFMmTJFunTpIjt37pSmTZtKhQoVlC/73PZFUANbrSsxMVHatWsno0ePNpkfGhoqX375pcydO1fOnj0r9+/ft9AIi8743nn77bdl8eLFEh0dLVqtVl5//XUxGAzyySefmOynpAa3b9+WKlWqSN26dZV5AwcOlPr160vZsmWlUaNGEhUVZfWffdmdP39eNBqNvPvuu8q89evXi1arld27d1tuYE/AFmsyh2duHxgnJyfExcUpR9eICKpUqYI5c+agevXq+Oabb5QLXz3K2o/GOX78OCpWrIjZs2fjl19+wc6dOzF48GAYDAYApucRMU5bO2dnZwQEBKBHjx5o2bIl/u///g/ly5dH48aNce3aNTg4OFj1xQofx1br0ul06NChA1577TVl3syZM7Fz506sXr0a33zzDZo3b65cxV0Nr8Hs2rRpg2PHjiEgIAD79u3DunXr8OKLL2L+/PnKc6aWukqVKoXWrVujRIkSmD59Ol5++WXcvHkTw4YNw5IlS5CVlYV///vf+OuvvwDk3E/LWjk7O2PJkiWYOXMmgIfPR3BwMIKCgrBp0yYA6qnFyBZrMgsLhqenLiMjQ9LS0mTgwIHSrVs3SUlJkaysLOWvq7/++kuCg4OlR48eFh5p4cXHx5sk8cjISPHy8pLXXnvN5GcvNfw1lZmZqewz8aisrCz566+/lC0W165dExGRlJQUOXbsmNX+DGZky3XldiryiIgIqVy5smzatEmpoVOnThIUFPS0h1gkmZmZypEdRtu3b5dq1aopW5Hatm0rdnZ20rZtW7l586YlhllomZmZkpKSoky/88474u3tLe3bt5fY2FiTtjVr1pT+/fs/5REWTUZGRo6tl49OT5s2TTw9PZWjS9XwWWiLNZnTMxFgsn8I7dmzR+zt7WXRokU52uzZs0fs7OysdofWR2Wvy8gYyA4ePKiEGL1eL2lpabJkyRLZvn370xxmoURHR0ufPn2kVatWMmzYMJN9J4xvzgsXLihf9n///beMGDFCgoKCHrvzsjV4Fuu6ePGi/PXXXyLyz4fu3LlzpUGDBrkGOWvyaF3Dhw+XLVu2SGZmpty7d0/atGkjIg9/bilXrpysWLFC3NzcpFOnTkr4tFaP1jV48GDZs2ePiIh88cUXsnbtWuW1aPxs6dq1q3Tr1s1i4y2o3J4vI2O4vnXrltSoUUMmTZqkii96W6zJ3Gw+wMTExMi8efNMjokXEZk3b57Y2dnJl19+aTL/6NGjUqNGDavfY/txdWV36NAh8fLyku7du8vAgQPF0dFRLly48JRGWTh//vmn6HQ66dmzp0yaNElq164tQUFBJvtUGN+kf/31lzRv3lw0Go24urrKH3/8Yalh5+tZq+vtt99W2mT/6zEsLEwGDRpk1fv5PK6ucePGSVpamnTs2FFKly4tPj4+yjk1IiIixMfHx6qPDsutrjp16sjkyZNzbZ+VlSXdunUz2cHXGhXk/ZWZmSnp6ekycOBACQ4OtvoAbYs1FQebDjDnz58XLy8v0Wg0MnnyZLl165ayLDk5WWbMmCEajUamTJkix44dkzt37sikSZOkSpUqEh8fb8GR5y2vunKzf/9+0Wg04uXlJUePHn1KoyycrKwseeedd6R79+7KPIPBIDNnzlROsveo1NRU6dmzp3h5eVn1Ye3Pal2DBw82+cJLS0uTKVOmiLe3t5w9e9YSQy6QvOqqVauWDBw4UN59911p3769Ei6NWysePHhgkTEXRF51vfjiizJkyBCT5ys9PV2mTJkiZcuWlfPnz1tiyAVS2PfX33//LRqNRr744ounPdQCs8WaiovNBpikpCQZNGiQDBgwQBYvXiwajUbGjx9vEkwyMzNl5cqV4uvrK88995xUr15d/Pz8rPZLXuTxdT0uxKSmpsrw4cOlZMmSVv2FKCIyYMAAadq0qck8g8Eg8+bNk6CgIPn4449F5OEb/NNPPxV7e3s5duyYJYZaKM96XTt27JCuXbtKuXLlVF3X3LlzpXnz5jJq1Khct7RY6xYKo4I+X+Hh4dKxY0fx9fVV9fOV2/vLYDDIW2+9ZXLeL2tkizUVB5s9CsnOzg7169dHmzZt8Oabb2Lt2rWYN28e5s6di1u3biltXn/9dURGRmL16tVYsGAB/vjjD6u+rszj6pozZw5u376do/2JEyewb98+7Ny5U7lKqbWR/x21Ua9ePWRmZiImJkZZVrJkSQwaNAh169bFpk2bkJSUBI1Gg4oVK+Ls2bOoW7eupYadL9a1CXq9HpUqVUKtWrWwY8cO1ddVpUoVHD9+HO7u7jnub61HKhb2+apYsSICAgKwe/du1T9fxrru3bsHjUaDkiVLYu7cuahataqlhp0nW6ypWFkwPBW7pKQkk+m1a9eKRqOR//znP8oWi/T0dLl8+bIlhldkedVl3Bs9MzNTOVNoQkLCUx9jUVy4cEG8vb1l0KBBcu/ePRH556/aK1euiEajkV9//dWSQyySZ7murVu3ioi6zkFUkLqM16FRk8I8X487QMAa2eLzZYs1FQebDjBGGRkZypO/Zs0a5WeX69evy5gxY+TVV1+VpKQkq98EnF1+dXXu3Fl1Jw3btWuXaLVaGTFihMnPYjdv3pTatWvLgQMHLDi6omNd6vKs1vX7779bcHRFZ4vPly3WZG7PRIAREZPzvaxdu1YcHR2lWrVq4uDgIMePH7fs4J5AXnWp4ffr3GzatEm0Wq28+uqrsnbtWjlz5oxMmjRJypYtq5ytVo1Yl7qwLnWxxbpssSZz0oio5LSRZmAsVaPRoFWrVoiKisKePXtQq1YtC4/sydhiXceOHcPYsWNx6dIlODg4wN7eHmvXrrXq3+QLgnWpC+tSF1usyxZrMpdnKsAAQGZmJsaPH4+FCxciKioKL774oqWHZBa2WJfBYEBCQgLu3buHsmXLwtvb29JDMgvWpS6sS11ssS5brMkcnskAs2LFCtSvXx916tSx9HDMxlbrIiIiys0zF2CAhz+5WOshj0/CVusiIiLK7pkMMERERKRuNnsiOyIiIrJdDDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6DDBERESkOgwwREREpDoMMERERKQ6/w+xWOF48BCHVwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"\n",
"df_ow = pd.DataFrame(clean_data(icn_ewr_ow)).sort_values('date')\n",
"df_rt = pd.DataFrame(clean_data(icn_ewr_rt)).sort_values('date')\n",
"\n",
"plt.title('Best prices for each day returning')\n",
"xs = np.arange(0, len(df_ow) * 2, 2)\n",
"\n",
"plt.xticks(xs[::13], [s.strftime('%m-%Y') for s in df_ow['date'][::13]], rotation=45)\n",
"plt.bar(xs, pd.DataFrame([df_ow['fare'], df_rt['fare']]).min(), color='b')\n",
"plt.bar(xs + 1, df_ow['fare'], color='r')\n",
"# plt.bar(df_ow['date'], pd.DataFrame([df_ow['fare']]).min(), color='r')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(1275, '2024-01-30', '2024-02-26', 27),\n",
" (1275, '2024-01-29', '2024-02-26', 28),\n",
" (1275, '2024-01-18', '2024-02-26', 39),\n",
" (1340, '2024-01-30', '2024-03-01', 31),\n",
" (1340, '2024-01-30', '2024-03-03', 33),\n",
" (1340, '2024-01-30', '2024-03-04', 34),\n",
" (1340, '2024-01-30', '2024-03-06', 36),\n",
" (1340, '2024-01-29', '2024-03-01', 32),\n",
" (1340, '2024-01-29', '2024-03-03', 34),\n",
" (1340, '2024-01-29', '2024-03-04', 35),\n",
" (1340, '2024-01-29', '2024-03-06', 37),\n",
" (1340, '2024-01-27', '2024-02-26', 30),\n",
" (1340, '2024-01-25', '2024-02-26', 32),\n",
" (1340, '2024-01-23', '2024-02-26', 34),\n",
" (1340, '2024-01-22', '2024-02-26', 35),\n",
" (1405, '2024-01-30', '2024-02-25', 26),\n",
" (1405, '2024-01-30', '2024-02-28', 29),\n",
" (1405, '2024-01-30', '2024-03-08', 38),\n",
" (1405, '2024-01-29', '2024-02-25', 27),\n",
" (1405, '2024-01-29', '2024-02-28', 30),\n",
" (1405, '2024-01-29', '2024-03-08', 39),\n",
" (1405, '2024-01-27', '2024-03-01', 34),\n",
" (1405, '2024-01-27', '2024-03-03', 36),\n",
" (1405, '2024-01-27', '2024-03-04', 37),\n",
" (1405, '2024-01-27', '2024-03-06', 39),\n",
" (1405, '2024-01-25', '2024-03-01', 36),\n",
" (1405, '2024-01-25', '2024-03-03', 38),\n",
" (1405, '2024-01-25', '2024-03-04', 39),\n",
" (1405, '2024-01-23', '2024-03-01', 38),\n",
" (1405, '2024-01-23', '2024-03-03', 40),\n",
" (1405, '2024-01-22', '2024-03-01', 39),\n",
" (1405, '2024-01-18', '2024-02-25', 38),\n",
" (1405, '2024-01-16', '2024-02-25', 40),\n",
" (1405, '2024-01-11', '2024-01-31', 20),\n",
" (1405, '2024-01-09', '2024-01-31', 22),\n",
" (1470, '2024-02-29', '2024-03-25', 25),\n",
" (1470, '2024-02-29', '2024-03-27', 27),\n",
" (1470, '2024-02-27', '2024-03-25', 27),\n",
" (1470, '2024-02-27', '2024-03-27', 29),\n",
" (1470, '2024-02-26', '2024-03-25', 28)]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def n_cheapest_trips(leaving, returning, start=1, end=270, n=10, c='E', after=None, before=None):\n",
"\t# l_map = {l['date']: 0 if l[c] is None else l[c]['fareAmount'] + l[c]['taxesAndFeesAmount'] for l in leaving}\n",
"\tr_map = {l['date']: l[c]['fareAmount'] + l[c]['taxesAndFeesAmount'] for l in returning if l[c] is not None}\n",
"\t# print(l_map, r_map)\n",
"\n",
"\tif after is not None:\n",
"\t\tafter = parse(after)\n",
"\telse:\n",
"\t\tafter = datetime.datetime(datetime.MINYEAR, 1, 1)\n",
"\tif before is not None:\n",
"\t\tbefore = parse(before)\n",
"\telse:\n",
"\t\tbefore = datetime.datetime(datetime.MAXYEAR, 12, 31)\n",
"\n",
"\tbest = []\n",
"\n",
"\tfor day in leaving:\n",
"\t\tif day[c] is None:\n",
"\t\t\tcontinue\n",
"\n",
"\t\tdate = parse(day['date'])\n",
"\t\tif after > date:\n",
"\t\t\tcontinue\n",
"\n",
"\t\tif before < date:\n",
"\t\t\tcontinue\n",
"\n",
"\t\tleaving_cost = day[c]['fareAmount'] + day[c]['taxesAndFeesAmount']\n",
"\n",
"\t\tfor days in range(start, end + 1):\n",
"\t\t\td = parse(day['date']) + relativedelta(days=days)\n",
"\t\t\treturn_date = (d).strftime('%Y-%m-%d')\n",
"\t\t\tif after > d:\n",
"\t\t\t\tcontinue\n",
"\n",
"\t\t\tif before < d:\n",
"\t\t\t\tcontinue\n",
"\n",
"\t\t\tif return_date not in r_map:\n",
"\t\t\t\tcontinue\n",
"\n",
"\t\t\ttotal_cost = leaving_cost + r_map[return_date]\n",
"\t\t\tbest += [(total_cost, day['date'], return_date, days)]\n",
"\t\t\tbest = sorted(best, key=lambda x: x[0])\n",
"\t\t\tbest = best[:n]\n",
"\n",
"\treturn best\n",
"\n",
"n_cheapest_trips(\n",
"\t# leaving flight\n",
"\tewr_icn_rt,\n",
"\t# returning flight\n",
"\ticn_ewr_rt,\n",
"\t20, 40,\n",
"\tn=40,\n",
"\tafter='2023-12-10',\n",
"\t# before='2024-08-28',\n",
"\t# 20 to 35 days.\n",
")"
]
}
],
"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.10.11"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment