{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "oHr3GSij0k7_" }, "source": [ "# 🔍 Embeddings de Productos con Contrastive Learning — E-commerce en Español\n", "### Fine-tuning de Sentence-Transformers para búsqueda semántica y recomendación\n", "\n", "**Autor:** Mateo Rúa · [Hugging Face](https://huggingface.co/Mateo-Rua) · [LinkedIn](https://www.linkedin.com/in/mateo-londono-rua117)\n", "\n", "---\n", "\n", "## 💼 El problema de negocio\n", "\n", "En un marketplace con **millones de productos** (Mercado Libre, Amazon, Falabella...),\n", "una máquina no entiende que *\"iPhone 13\"* y *\"Samsung Galaxy S23\"* son ambos celulares:\n", "para ella son solo letras distintas. Esto rompe tres capacidades críticas del negocio:\n", "\n", "- 🔎 **Búsqueda semántica:** encontrar productos por significado, no solo por palabras exactas\n", "- 🛒 **Recomendación:** \"quien vio este producto, también podría querer estos otros\"\n", "- 🔗 **Detección de duplicados** y agrupación automática de catálogo\n", "\n", "## 🎯 La solución: embeddings con contrastive learning\n", "\n", "Entrenamos un modelo que convierte cada título de producto en un **vector de 384 números**\n", "que captura su significado, de forma que **productos similares queden cerca en el espacio\n", "vectorial**. El método —*contrastive learning*— le enseña al modelo con ejemplos de qué\n", "está cerca (productos de la misma categoría) y qué está lejos (categorías distintas).\n", "\n", "> **Conexión con la industria:** esta es exactamente la técnica que usan los equipos de\n", "> adquirencia/riesgo para generar *merchant embeddings* reutilizables. Aquí la aplicamos\n", "> a productos, pero el enfoque es idéntico.\n", "\n", "## 🧪 Diseño experimental\n", "\n", "Comparamos **dos modelos base** multilingües, cada uno antes y después del fine-tuning:\n", "\n", "| Modelo | Dimensiones |\n", "|---|---|\n", "| `paraphrase-multilingual-MiniLM-L12-v2` | 384 |\n", "| `intfloat/multilingual-e5-small` | 384 |\n", "\n", "Para cada uno medimos **recall@k y NDCG@k** sobre un test de retrieval, y comparamos\n", "contra el modelo **sin fine-tunear** (baseline). El de mejores métricas se publica y\n", "alimenta la demo.\n", "\n", "## 📦 Datos\n", "[MeLi Data Challenge 2019](https://www.kaggle.com/datasets/abugim/meli-data-challenge-2019) —\n", "títulos de productos reales de Mercado Libre con su categoría. Usamos **100.000 títulos\n", "en español**, filtrados por calidad de etiqueta.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "u58HQGCt0k8B" }, "source": [ "## Instalación y setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Z72N8H8k0k8B", "outputId": "6717c683-6e46-40a6-b376-70cb74bc6273" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GPU: Tesla T4\n" ] } ], "source": [ "!pip install -q sentence-transformers datasets matplotlib seaborn\n", "!pip uninstall -y -q torchvision # evita el conflicto conocido datasets<->torchvision\n", "\n", "import torch\n", "print(\"GPU:\", torch.cuda.get_device_name(0) if torch.cuda.is_available() else \"⚠️ SIN GPU - activa T4 en Colab\")" ] }, { "cell_type": "markdown", "metadata": { "id": "HOLVn3TV0k8C" }, "source": [ "## Descarga del dataset (Kaggle)\n", "\n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "inejoaNw0k8C", "outputId": "7d7daa8e-4a59-4190-b048-e933f55d954d" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Warning: Looks like you're using an outdated `kaggle` version (installed: 2.0.2), please consider upgrading to the latest version (2.2.2)\n", "Dataset URL: https://www.kaggle.com/datasets/abugim/meli-data-challenge-2019\n", "License(s): unknown\n", "meli-data-challenge-2019.zip: Skipping, found more recently modified local copy (use --force to force download)\n", "-rw-r--r-- 1 root root 1.7G Sep 5 2019 train.csv\n" ] } ], "source": [ "import os\n", "\n", "# TIENES QUE PONER AQUI TUS CREDENCAILES PARA DESCARGAR LOS DATOS DE KAGGLE\n", "os.environ[\"KAGGLE_USERNAME\"] = \"USSER\"\n", "os.environ[\"KAGGLE_KEY\"] = \"KEY_TOKEN\"\n", "\n", "!kaggle datasets download -d abugim/meli-data-challenge-2019\n", "!unzip -o -q meli-data-challenge-2019.zip\n", "!ls -lh *.csv" ] }, { "cell_type": "markdown", "metadata": { "id": "76en86jW0k8D" }, "source": [ "## Carga e inspección inicial\n", "\n", "**Primer punto de control:** verificamos que los nombres de columnas coincidan con los\n", "esperados (`title`, `category`, `language`, `label_quality`). Si difieren, ajústalos en\n", "la celda de configuración de abajo." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 225 }, "id": "zL73S9JQ0k8D", "outputId": "f42e705e-b478-4c5f-932c-e3b0a544ee94" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Columnas: ['title', 'label_quality', 'language', 'category']\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ " title label_quality \\\n", "0 Hidrolavadora Lavor One 120 Bar 1700w Bomba A... unreliable \n", "1 Placa De Sonido - Behringer Umc22 unreliable \n", "2 Maquina De Lavar Electrolux 12 Kilos unreliable \n", "3 Par Disco De Freio Diant Vent Gol 8v 08/ Frema... unreliable \n", "4 Flashes Led Pestañas Luminoso Falso Pestañas P... unreliable \n", "\n", " language category \n", "0 spanish ELECTRIC_PRESSURE_WASHERS \n", "1 spanish SOUND_CARDS \n", "2 portuguese WASHING_MACHINES \n", "3 portuguese VEHICLE_BRAKE_DISCS \n", "4 spanish FALSE_EYELASHES " ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
titlelabel_qualitylanguagecategory
0Hidrolavadora Lavor One 120 Bar 1700w Bomba A...unreliablespanishELECTRIC_PRESSURE_WASHERS
1Placa De Sonido - Behringer Umc22unreliablespanishSOUND_CARDS
2Maquina De Lavar Electrolux 12 KilosunreliableportugueseWASHING_MACHINES
3Par Disco De Freio Diant Vent Gol 8v 08/ Frema...unreliableportugueseVEHICLE_BRAKE_DISCS
4Flashes Led Pestañas Luminoso Falso Pestañas P...unreliablespanishFALSE_EYELASHES
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "variable_name": "df_peek", "summary": "{\n \"name\": \"df_peek\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Placa De Sonido - Behringer Umc22\",\n \"Flashes Led Pesta\\u00f1as Luminoso Falso Pesta\\u00f1as Para Partido \",\n \"Maquina De Lavar Electrolux 12 Kilos\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"label_quality\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"unreliable\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"language\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"portuguese\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"category\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"SOUND_CARDS\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" } }, "metadata": {}, "execution_count": 4 } ], "source": [ "#import pandas as pd\n", "\n", "# Cargamos solo una parte para inspeccionar rápido (el archivo completo son ~20M filas)\n", "df_peek = pd.read_csv(\"train.csv\", nrows=5)\n", "print(\"Columnas:\", list(df_peek.columns))\n", "df_peek" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "Xvsb2lbM0k8E" }, "outputs": [], "source": [ "# ⚙️ CONFIGURACIÓN — ajusta si los nombres de columna difieren de la inspección anterior\n", "COL_TITULO = \"title\"\n", "COL_CATEGORIA = \"category\"\n", "COL_IDIOMA = \"language\" # valores esperados: 'spanish' / 'portuguese'\n", "COL_CALIDAD = \"label_quality\" # valores esperados: 'reliable' / 'unreliable'\n", "VALOR_ESPANOL = \"spanish\"\n", "VALOR_FIABLE = \"reliable\"\n", "\n", "N_MUESTRA = 100_000 # títulos finales para entrenar" ] }, { "cell_type": "markdown", "metadata": { "id": "q1SAwCPM0k8E" }, "source": [ "## Carga filtrada (español + fiables)\n", "\n", "El archivo completo (~20M filas, varios GB) no cabe cómodo en memoria de Colab.\n", "Lo leemos **por chunks**, filtrando sobre la marcha: solo español y solo etiquetas fiables.\n", "Filtrar por `reliable` es una decisión de calidad de datos — las filas `unreliable` fueron\n", "etiquetadas por vendedores y tienen más ruido." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 225 }, "id": "wsZKPzqJ0k8E", "outputId": "80613305-5c72-466f-d242-a4cb357a6d19" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Filas cargadas (español + fiables): 403,010\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ " title category\n", "0 Play Station 2 + Volante Hooligans. GAME_CONSOLES\n", "1 Pilas Energizer Max Aa X1 - Tira X 20 Pilas CELL_BATTERIES\n", "2 Afeitadora Electrica Philips Hq6904 + Envio Gr... SHAVING_MACHINES\n", "3 Estufa Calefactor Volcan 2500 Kcal/h 42512v Si... HOME_HEATERS\n", "4 Reloj Pared Vox Tronic Blanco Numeros 23cm Gar... WALL_CLOCKS" ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
titlecategory
0Play Station 2 + Volante Hooligans.GAME_CONSOLES
1Pilas Energizer Max Aa X1 - Tira X 20 PilasCELL_BATTERIES
2Afeitadora Electrica Philips Hq6904 + Envio Gr...SHAVING_MACHINES
3Estufa Calefactor Volcan 2500 Kcal/h 42512v Si...HOME_HEATERS
4Reloj Pared Vox Tronic Blanco Numeros 23cm Gar...WALL_CLOCKS
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", "
\n" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "variable_name": "df" } }, "metadata": {}, "execution_count": 6 } ], "source": [ "chunks_filtrados = []\n", "acumulado = 0\n", "OBJETIVO_CARGA = 400_000 # cargamos de más para luego muestrear balanceado\n", "\n", "for chunk in pd.read_csv(\"train.csv\", chunksize=200_000):\n", " f = chunk[\n", " (chunk[COL_IDIOMA] == VALOR_ESPANOL) &\n", " (chunk[COL_CALIDAD] == VALOR_FIABLE)\n", " ][[COL_TITULO, COL_CATEGORIA]]\n", " chunks_filtrados.append(f)\n", " acumulado += len(f)\n", " if acumulado >= OBJETIVO_CARGA:\n", " break\n", "\n", "df = pd.concat(chunks_filtrados, ignore_index=True)\n", "print(f\"Filas cargadas (español + fiables): {len(df):,}\")\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": { "id": "HhnV-ZH40k8F" }, "source": [ "## Análisis exploratorio (EDA)\n", "\n", "Antes de limpiar, entendemos la forma de los datos: cuántas categorías hay, qué tan\n", "balanceadas están, y cómo son los títulos." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "b9Oz7wLV0k8F", "outputId": "e61fa71e-5c3e-4783-c187-0ea24ac64372" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Total de títulos: 403,010\n", "Categorías únicas: 1,056\n", "Títulos duplicados: 0\n", "Títulos nulos: 0\n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "sns.set_style(\"whitegrid\")\n", "\n", "print(f\"Total de títulos: {len(df):,}\")\n", "print(f\"Categorías únicas: {df[COL_CATEGORIA].nunique():,}\")\n", "print(f\"Títulos duplicados: {df[COL_TITULO].duplicated().sum():,}\")\n", "print(f\"Títulos nulos: {df[COL_TITULO].isna().sum():,}\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 573 }, "id": "4tJWIXzt0k8F", "outputId": "16d8b1f8-274c-4863-f369-4ff3b6594115" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAABQoAAAGGCAYAAAAzYLzoAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjbVJREFUeJzs3X1cVHX+//+nM4IXoaSA124ZCF4AgtUSNOZqtqZmG1JqiVc/SitN2zR1zVTUwMz6kOUnXTVLU9ENsSutz7ZrZgtWW5BoZahdeLXKYOEFKuMwvz/8ctYRBIaLAeFxv9283eSc1znndV4zwJvXnHPeDRwOh0MAAAAAAAAA6jVTTScAAAAAAAAAoObRKAQAAAAAAABAoxAAAAAAAAAAjUIAAAAAAAAAolEIAAAAAAAAQDQKAQAAAAAAAIhGIQAAAAAAAADRKAQAAAAAAAAgGoUA4JIPP/xQq1atUmFhYU2nAgAAgFqGsSKAax2NQgBOPv/8cwUFBenzzz93y/FGjhypkSNHVnj7oKAgvfLKK1WY0dVlZ2dr6tSp8vHxkclUNT8+K3v+FXXs2DGFhIToq6++cvux66Nff/1VYWFh2rFjR02nAgBApTBWvDrGiq6r6OuzefNmBQUFKSsrqxqych1jPdQlNAoBN6ttv9TK47333tMbb7xR02m4xbJly/Txxx8XW15YWKhnnnlG9913n+677z5J0rp167R582Y3Z1g1li5dqh49eujmm2+u6VQqZf/+/XrllVd0+PDhmk6lVC1atND999+vl19+uaZTAQDUcowVazfGiigJYz3UJTQKATi59dZbtXv3bt16663Gsvfff19r1qypwazcZ/ny5SUO/tasWaMLFy7o2WefNZZt2LBBqamp7kyvSpw8eVJbtmzR8OHDazqVStu/f79effVVHTlypKZTKdODDz6ovXv3Kj09vaZTAQCgwhgrMlZEyRjroa6gUQjAiclkUqNGjarsdom6YsyYMXrnnXfUqFGjmk6l0t59912ZzWb16dPHrcfNz8936/Eqozpy9ff3V2Bg4DX5BwMAAEUYK5aMseK1w+Fw6Pz581W+X8Z6qCv46Q7UUt9++60efvhh9ezZU+Hh4Ro9erQyMzOdYopuTfnqq6+UmJio2267TWFhYZowYYJOnjzpFFtYWKhXXnlFFotFPXr00MiRI7V//3717dtXM2bMMOKufO7MyJEj9cknn+jIkSMKCgpSUFCQ+vbt63T8K2/7vNqzazZu3Kh+/fopNDRU999/v/7973+Xux4FBQVKSEjQbbfdpvDwcD366KP6z3/+U2Ls8ePH9Ze//EVRUVEKDg7WoEGD9Pbbb5d5jKCgIOXn5ys1NdU416LaXHmuffv2VXZ2tr744gsjtuj5Ma+88oqCgoKK7f9q9bpSbm6uZs6cqaioKIWEhOjee+8tccDxwQcfaMiQIQoPD1fPnj01ePBgvfnmm2We58cff6zQ0FBdd911xdZ98803euSRR3TrrbcqLCys2D6///57zZgxQ3feeadCQkJ0++236y9/+Yt+/fVXp/0U1WD//v2aMmWKbr31Vj300EMu7UO69FrOnDlTFotFwcHB6tu3r+bMmaOCggJt3rxZkydPliSNGjXKeB0uf9/t2LFDDz30kMLCwhQeHq5x48YpOzvb6RgzZsxQeHi4fvnlFz3yyCMKDw/X1KlTJV36vnnjjTc0aNAghYSEKCoqSrNnz1ZeXp7TPrKyshQXF6eIiAiFhoaqb9+++stf/lLsfKKiorR9+3Y5HI5SXyMAAMrCWNEZY8XqHyuOHDlS99xzj/bs2aPhw4cbY54NGzY4xRUUFOjll1/WkCFDdPPNNyssLEwPPfSQdu3aVeaxjxw5orlz56p///4KDQ1VRESEJk2adNWanD9/XrNnz1ZERIR69uypadOmFRun9e3bV+PHj9fOnTs1ZMgQhYaGKjk5WZKUkpKiUaNGKTIyUsHBwRo4cKDWr19f7DiM9VCfNKzpBAAUl52drREjRui6667Tww8/rIYNG2rjxo0aOXKk3nrrLfXo0cMpfsGCBWrevLkmTpyoI0eO6M0339S8efOUlJRkxLz44otauXKl+vTpo169eun7779XXFycLly4UGoujz76qE6fPq3//Oc/xi/DkhpMZfnb3/6m2bNnGwPZQ4cO6bHHHpO3t7fatm1b5vbPPPOM3n33Xd1zzz3q2bOndu3apXHjxhWLs1qtGjp0qBo0aKARI0aoZcuW+vTTT/XMM8/ozJkzGjNmzFWPsWjRIs2aNUuhoaEaOnSoJOl3v/tdibEzZ87U/Pnz1bRpUz366KOSJF9f33JUonTnz5/XyJEj9csvv2jEiBHq0KGDPvzwQ82YMUOnTp3S6NGjJUn/+te/9NRTTykyMtJoah08eFBff/21EVMSm82mrKwsPfjgg8XW/etf/9L48ePVqlUrjRo1Sr6+vjpw4IA++eQTY59paWk6dOiQhgwZIj8/P2VnZ2vTpk3av3+/Nm3apAYNGjjtc/Lkybrhhhv05z//2RgwlXcfx48f1/3336/Tp09r6NChuummm3T8+HF99NFHOn/+vG699VaNHDlSa9eu1aOPPqqbbrpJ0qVPcyVpy5YtmjFjhiwWi6ZOnapz585pw4YNeuihh5SamqoOHToYeV68eFFxcXG6+eabNX36dDVu3FiSNHv2bKWmpmrIkCEaOXKkDh8+rHXr1unbb7/Vhg0b5OHhodzcXMXFxalFixYaN26cmjdvrsOHD+vvf/97sRp3795db7zxhrKzsxUYGFiOdwQAAMUxViyOsWL1jxUlKS8vT+PGjdOAAQM0aNAgbdu2TXPnzpWHh4fuv/9+SdKZM2f0t7/9Tffcc48eeOABnT17Vm+//bYefvhh/e1vf1PXrl2vevysrCxlZGRo0KBBatOmjY4cOaINGzZo1KhR+uCDD9SkSROn+Hnz5hnv7R9//FEbNmzQ0aNHtXbtWqdx6Y8//qgpU6Zo2LBhGjp0qDp16iTp0u3hnTt3Vt++fdWwYUNt375d8fHxcjgcGjFihCQx1kP94wDgVikpKY7AwEDH7t27rxrz+OOPO7p37+745ZdfjGXHjx93hIeHO0aMGFFsX2PGjHEUFhYayxMSEhxdu3Z1nDp1yuFwOBw5OTmObt26OR5//HGn47zyyiuOwMBAx/Tp041lu3btcgQGBjp27dplLBs3bpyjT58+Vz2XQ4cOOS2/ch8FBQWOyMhIx5/+9CfHhQsXjLiNGzc6AgMDHbGxsVethcPhcHz33XeOwMBAx9y5c52WP/XUU47AwEDHkiVLjGUzZ8503H777Y6TJ086xf75z3923HzzzY5z586VeqywsDCnepR2roMGDSox9yVLljgCAwPLtY/Y2FinfbzxxhuOwMBAxzvvvGMsKygocAwbNswRFhbmOH36tMPhcDgWLFjg6Nmzp+PixYulns+Vfv75Z0dgYKBj7dq1TssvXrzo6Nu3r6NPnz6OvLw8p3WXv7dKqt/777/vCAwMdHz55ZfGsqIaPPXUU8Xiy7uPadOmObp06VLi90pRTtu2bSv2fnU4HI4zZ844brnlFsesWbOclufk5Dhuvvlmp+XTp093BAYGOhYvXuwU++WXXzoCAwMd7777rtPyTz/91Gn53//+9zK/p4t8/fXXjsDAQMcHH3xQZiwAoH5irMhYsTaOFYtyCQwMdLz++uvGsgsXLjj+9Kc/OSIjIx0FBQUOh+PSuPLy19HhcDjy8vIcUVFRjr/85S9Oy698fUqqf0ZGhiMwMNCRmppqLCuqVXR0tHFch8PhWLFihSMwMNDx8ccfG8v69OnjCAwMdHz66afF9l3S8f6//+//c9x5553G14z1UN9w6zFQy9jtdv3rX/9Sv3791LFjR2N5q1atdM899+irr77SmTNnnLYp+lS0yC233CK73W5M8JCenq6LFy8at34WiY2NrcYz+a89e/YoNzdXw4cPl6enp7E8OjpazZo1K3P7HTt2SJJxu0aRKz8NdTgc+r//+z/17dtXDodDJ0+eNP5ZLBadPn1ae/furYIzqj6ffvqp/Pz8dM899xjLPDw8NHLkSOXn5+vLL7+UJDVv3lznzp3Tv/71L5f2/9tvvxnbX+7bb7/V4cOHNWrUqGLrLn9vFV1pJ0kXLlzQyZMnjasWSqptSQ/BLs8+CgsL9fHHH6tPnz4KCQkpto8rr1y8Ulpamk6dOqVBgwY5vQ9MJpN69OhR7FYnScU+Of/www/VrFkz3X777U776N69u5o2bWrso+g9/Mknn8hms5WaV1FtS7rNGgCA8mCsWBxjxeofKxZp2LChhg0bZnzt6empYcOGKTc316id2Ww2XsfCwkL99ttvunjxooKDg/Xtt9+WevzLx4k2m02//vqrfve736l58+Ylbjts2DB5eHgYXz/44INq2LCh8Z4o0qFDB/Xq1avU450+fVonT57U73//ex06dEinT5+WxFgP9Q+3HgO1zMmTJ3Xu3DnjcvjL+fv7q7CwUMeOHVPnzp2N5e3atXOKK/oFderUKUnS0aNHJRW/NeL666+Xt7d3leZfkqLj33DDDU7LPTw8nAa4V3PkyBGZTKZi+Rfdalrk5MmTOnXqlDZu3KiNGzeWuK8rn8dT2xw5ckQ33HBDsQeEF91OW1TLhx56SNu2bdMjjzyi1q1b6/bbb9eAAQN0xx13lOs4jiuem3Lo0CFJKvMWid9++02vvvqqtm7dqtzcXKd1RYOpy11+e68r+zh58qTOnDnj9D53xU8//SSp+B8IRby8vJy+btiwodq0aeO07Oeff9bp06cVGRlZ4j6Kcv/973+v/v3769VXX9Ubb7yh3//+9+rXr58GDx7s9MfO5cpqdAIAcDWMFYtjrFj9Y8UirVq1UtOmTZ2W3XjjjUZuYWFhkqTU1FS9/vrr+vHHH52aayWNDS93/vx5LV++XJs3b9bx48ed8ihprHnle+a6666Tn5+f0QQv67hfffWVXnnlFWVmZurcuXNO606fPq1mzZox1kO9Q6MQqAOuNuvc1X7BV5Wr/QIsLCys1uNeTdFx7733XkVHR5cYU9KDo6va1epit9ur7Bg+Pj7asmWLPvvsM3366af69NNPtXnzZt133316/vnnr7rd9ddfL+m/fxi46sknn1RGRobi4uLUtWtXNW3aVIWFhXr44YdLfL+VNPOfq/uoiKL9LFq0SH5+fsXWm81mp689PT2LfR8VFhbKx8dHixcvLvEYLVu2lHTp9V6yZIkyMzO1fft27dy5UzNnztTq1au1ceNGp+c0FT1cu0WLFhU/OQAAXMRY0fm4jBWrb6woSe+8845mzJihfv36KS4uTj4+PjKbzVq+fLnx4fTVzJ8/X5s3b9bo0aMVFhamZs2aqUGDBk7Pu66Iy68cLPLLL79ozJgxuummmzRjxgy1bdtWHh4e2rFjh9544w3j/cJYD/UNjUKglmnZsqWaNGmiH3/8sdi6gwcPymQyleuBzpcr+hT5l19+cfpU9tdffy02K1hJrjaYKfo0+spP9678BK/o+D///LPT1Vk2m02HDx9Wly5dSj1++/btVVhYqF9++cXpk+GDBw86xbVs2VLXXXedCgsLFRUVVcZZVV5ZdTl16pTTbRtFn/CWpn379tq3b58KCwudBvVF53r5FQGenp7q27ev+vbtq8LCQs2dO1cbN27U448/XuzT1SJt27ZV48aNi80cV/S++OGHH65au7y8PKWnp+uJJ57QxIkTjeVFV++VR3n30bJlS3l5eRWbofhKV3sNis7Hx8enwu+F3/3ud0pPT1fPnj1LHFxeKSwsTGFhYfrzn/+s9957T1OnTtXWrVv1wAMPGDFFdS/61B8AAFcxViyOsWL1jxWLnDhxQvn5+U5XFRaN49q3by9J+uijj9SxY0e9+uqrTjVYsmRJmef30Ucf6b777nOaafvChQslXk0oXXrP3HbbbcbXZ8+eVU5OTrmunPznP/+pgoICvfbaa051K+kRNRJjPdQfPKMQqGXMZrNuv/12/eMf/3D6BW21WvX+++/r5ptvLnbbZFkiIyPVsGFDbdiwwWn5unXryrV9kyZNSvzlXHR7R9GzUKRLn4Ru2rTJKS44OFgtW7ZUcnKyCgoKjOWpqanl+rSy6Bf92rVrnZa/+eabTl+bzWb1799fH330kX744Ydi+ynPrSRNmzYt9yeoTZo0KTG2pLrk5+dry5YtZe7zjjvuUE5OjrZu3Wosu3jxotauXaumTZvq1ltvlVT8uScmk8n4BPzyGl/Jw8NDwcHB2rNnj9Py7t27q0OHDlqzZk2xcyr69PbKq/CKXPk6lKa8+zCZTOrXr5+2b9+urKysYvFFORXNfHfl+7NXr17y8vLS8uXLS3yWTHneCwMGDJDdbtf//u//Flt38eJFo055eXnFPuEums3vytdi7969atasWYVvqQYAgLFicYwVq3+sePmxLr9tu6CgQBs3blTLli3VvXt3Sf8d710+Pvrmm2+UmZlZ5vmVNFZcu3btVa+23Lhxo9NYb8OGDbp48WK5GoUl5Xn69GmlpKQ4xTHWQ33DFYVADUlJSdHOnTuLLR81apSefPJJpaWl6aGHHtJDDz0ks9msjRs3qqCgQE8//bTLx/L19dWoUaP0+uuv69FHH1WvXr20b98+ffrpp2rRokWZz9Do3r27tm7dqsTERIWEhKhp06bq27evOnfurLCwML300kvKy8uTt7e3tm7dqosXLzpt7+HhoSeffFKzZ8/W6NGjNXDgQB0+fFibN28u13NnunbtqnvuuUfr16/X6dOnFR4erl27dunnn38uFjtlyhR9/vnnGjp0qB544AEFBAQoLy9Pe/fuVXp6ur744osyzzU9PV2rV69Wq1at1KFDB2OijZJiN2zYoP/93//VDTfcoJYtWyoyMlK333672rVrp2eeeUYHDx6U2WxWSkqKWrRoUeYnxcOGDdPGjRs1Y8YM7d27V+3bt9dHH32kr7/+WjNnzjQG/rNmzVJeXp5uu+02tW7dWkePHtVbb72lrl27lvkJ5p133qn/+Z//0ZkzZ4z9mUwmzZ07V4899pjuu+8+DRkyRH5+fjp48KD279+vVatWycvLS7feeqtWrlwpm82m1q1b61//+tdVP3EuiSv7eOqpp/Svf/1LI0eO1NChQ+Xv76+cnBx9+OGHWr9+vZo3b66uXbvKbDZrxYoVOn36tDw9PXXbbbfJx8dHc+fO1bRp0zRkyBANHDhQLVu21NGjR7Vjxw717NlTs2fPLjXX3//+9xo2bJiWL1+u7777Trfffrs8PDz0008/6cMPP9Qzzzyju+++W6mpqdqwYYP69eun3/3udzp79qw2bdokLy+vYoPUtLQ09enTh+fWAADKxFiRsWJJamqsWKRVq1ZasWKFjhw5ohtvvFFbt27Vd999p/nz5xuTivzhD3/Q//3f/2nChAn6wx/+oMOHDys5OVkBAQHKz88v9dh/+MMf9M4778jLy0sBAQHKzMxUWlqacUv0lWw2m8aMGaMBAwboxx9/1Pr163XzzTfrzjvvLPU4koyx3aOPPqrhw4fr7Nmz+tvf/iYfHx/l5OQYcYz1UN/QKARqyJWf2BYZMmSIOnfurHXr1unFF1/U8uXL5XA4FBoaqhdeeOGqA5GyTJ06VY0bN9bf/vY3paenKywsTKtWrdJDDz101YfwFnnooYf03XffafPmzXrjjTfUvn179e3bV5K0ePFizZ49W3/961/VvHlz3X///YqIiNDYsWOd9jFs2DDZ7XatWrVKixYtUmBgoF577TW9/PLL5co/ISFBLVq00Hvvvad//OMfioiI0F//+lf17t3bKc7X11d/+9vftHTpUv3973/Xhg0bdP311ysgIEBTp04t8zgzZszQ7NmzlZSUpPPnzys6OvqqNZ8wYYKOHj2qlStX6uzZs/r973+vyMhIeXh46NVXX1V8fLxefvll+fn5afTo0WrevLn+8pe/lHr8xo0ba+3atVq8eLFSU1N15swZderUSYmJiRoyZIgRd++992rTpk1av369Tp06JT8/Pw0YMEBPPPHEVZ9DVORPf/qTXnzxRf3jH//Qn/70J2N5r1699Oabb2rp0qV6/fXX5XA41LFjRw0dOtSIefHFFzV//nytX79eDodDt99+u1asWFHiLHJXU959tG7dWps2bdLLL7+s9957T2fOnFHr1q11xx13GLcC+/n5KT4+XsuXL9czzzwju92uNWvWyMfHR4MHD1arVq3017/+VatWrVJBQYFat26tW265xamWpZk3b56Cg4OVnJys//mf/5HZbFb79u117733qmfPnpIuNRSzsrK0detWWa1WNWvWTKGhoVq8eLHTHzcHDhzQDz/8oJkzZ5a7VgCA+ouxImPF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q1atWhkxubm56tKli6RLVwaePHnSaR8XL15UXl6esb2vr2+xKwOLvi66irCkmNzc3GJXGZYlJCREZrPZpW3qMrvdrqysLOpyFdSnbEU1CggI0M6dO6tsv4GBgWrbtm2Ftj127FityYX3UNmoUemoT+moT8mK6lIeNAoBAABQLj179tSPP/7otOynn35S+/btJUkdOnSQn5+f0tPT1bVrV0mXZjD+5ptv9OCDD0qSwsPDderUKe3Zs0fBwcGSpF27dqmwsFChoaGSpLCwMCUlJclms8nDw0OSlJaWpk6dOhkzLIeFhWnXrl0aM2aMkUtaWprCwsJcOiez2cwfEiWgLqWjPmUzmar2cfiVqXlVv1ZV8frzHiobNSod9Skd9ak4JjMBAABAuYwePVrffPONli1bpp9//lnvvfeeNm3apIceekiS1KBBA40aNUqvvfaa/vGPf2jfvn2aNm2aWrVqpX79+kmS/P391atXLz377LPavXu3vvrqK82fP1+DBg1S69atJUmDBw+Wh4eHnnnmGWVnZ2vr1q1as2aNxo4da+QyatQo7dy5U6+//roOHDigV155RXv27FFsbKz7CwMAAFBHcEUhAAAAyiU0NFSvvvqqXnrpJS1dulQdOnTQzJkzde+99xoxjzzyiM6dO6fZs2fr1KlTuvnmm7Vy5Uo1atTIiFm8eLHmz5+v0aNHy2Qy6Y9//KNmzZplrG/WrJlWrVqlefPmaciQIWrRooUef/xxDRs2zIjp2bOnFi9erKSkJL300ku68cYbtXTpUgUGBrqnGAAAAHUQjUIAAACUW58+fdSnT5+rrm/QoIEmT56syZMnXzXm+uuv14svvljqcbp06aL169eXGjNgwAANGDCg9IQBAABQbtx6DAAAAAAAAIBGIQAAAAAAAAAahQAAAAAAAADkYqOwb9++CgoKKvYvPj5eknThwgXFx8crIiJC4eHheuKJJ2S1Wp32cfToUY0bN049evRQZGSknn/+eV28eNEp5vPPP1d0dLSCg4N11113afPmzcVyWbdunfr27auQkBA98MAD2r17t6vnDgAAAAAAAOD/calR+Pbbb+uzzz4z/q1evVqSdPfdd0uSEhIStH37diUlJWnt2rU6ceKEJk6caGxvt9s1fvx42Ww2JScna+HChUpNTdWSJUuMmEOHDmn8+PGKiIjQO++8o9GjR2vW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evfuraioKKdG4bV8dwkAAAAucfnW48s1b95cN954o3755RdFRUXJZrPp1KlTTlcV5ubmys/PT9KlKwOvfH5M0XNrLo+58lk2VqtVXl5eaty4sUwmk8xmc7GJS3Jzc4tdiVheZrOZP4TcgDq7D7V2L+rtPtTavai3+xSNb2q7Dz74QN9++63efvvtYuuu1btLuMXeGY8eKF111qeq92m32yu8z9r4+tem86lMLlX5qInK5FGb8XOodNSndNSnZK7Uo1KNwrNnz+rQoUPy8/NTcHCwPDw8lJ6erv79+0uSDh48qKNHjyosLEySFBYWpmXLlik3N9cY3KWlpcnLy0sBAQFGzKeffup0nLS0NGMfnp6e6t69u9LT09WvXz9Jl37YpqenKzY2tjKnAwAAgKs4duyYnnvuOb3++utq1KhRTadTZbjFvmTUpXTVUZ+8vLwq3d8PP/yg48eP14pcqkJtOp/akktl8rgW8HOodNSndNSn4lxqFD7//PPq06eP2rVrpxMnTuiVV16RyWTSPffco2bNmikmJkYLFy6Ut7e3vLy8tGDBAoWHhxtNPovFooCAAE2bNk1PP/20cnJylJSUpBEjRsjT01OSNHz4cK1bt06LFi1STEyMdu3apW3btmn58uVGHmPHjtX06dMVHBys0NBQvfnmmzp37pyGDBlSdZUBAACAYe/evcrNzXUab9ntdn355Zdat26dVq1adU3eXcIt9s549EDpqrM+x44d086dO6tsf4GBgWrbtm2tyKUq1KbzqUwuR44cqbJcKpNHbcbPodJRn9JRn5K58ggalxqF//nPf/TUU0/pt99+U8uWLXXzzTdr06ZNatmypSRp5syZMplMmjRpkgoKCmSxWDRnzhxje7PZrGXLlmnu3LkaNmyYmjRpoujoaE2aNMmI6dixo5YvX67ExEStWbNGbdq00YIFC4yHV0vSwIEDdfLkSS1ZskQ5OTnq2rWrVq5cWeFbjwEAAFC62267Te+9957Tsr/85S+66aab9Mgjj6ht27bX5N0l3GJfMupSuuqoT3Xsr6L7rI2vfW06n8rkUpXPo63r36d1/fwqi/qUjvpUnEuNwv/5n/8pdX2jRo00Z84cp+bgldq3b68VK1aUup+IiAht2bKl1JjY2FhuNQYAAHATLy8vBQYGOi1r2rSprr/+emM5d5cAAABc2yr1jEIAAACg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moTc3FxMJhP+/v73XL5v3z6Sk5MpKCjg+vXr3L59GwcHB4t1DAaDRZIQ4Ny5cyQkJJCZmUlJSYl5ykhRURHdu3cnOzubZ555xpwkrIuff/6Z69ev4+fnZ1F+8+ZNi2nN/+xPXepNmTKFBQsWsGfPHvr168fLL79Mx44d69w3ERERkcamd+/eWFlZmV97e3uzZcsWKioqyM7ONt8q5s8//7SI9bp161atrYqKCjZs2MD+/fv5448/uHXrFiaTiebNm9d5mzY2NgB4eXlVa7+2mFWxnog8LCUKRaRJaNas2X2XnTp1ijlz5jBjxgwGDBiAo6Mje/fuNU8HvqtFixbV6r7zzju0b9+emJgYXF1dqaysJCAgwHyvmH8GhXVRXl6Oi4sL27dvr7bs7tTke/WnLvVmzJhBQEAA3377LYcOHSIhIYFVq1YxbNiwf91PERERkcbs77//JiQkhAEDBrB8+XJat25NUVERISEhFvcF/F9JSUkkJycTGRmJh4cHLVq0YMmSJfddvyb/jPXqErMq1hORh6VEoYg0CZ06daJ58+YcPXqUDh06WCw7deoUBoOBqVOnmssKCwtrbbOkpIS8vDxiYmLMU5iPHz9usY6HhwcpKSmUlpbe86pCW1tbKisrLco8PT25fPkyNjY2uLm51fUt1rle586d6dy5M2+88Qbh4eF89tlnCh5FRESkyTp9+rTF68zMTNzd3cnNzaW0tJQ5c+bQrl07ALKysmps6+TJkwwZMoRRo0YBdx6md+7cOfNU4Nq2efdqwnupa8yqWE9EHoaeeiwiTUKzZs0IDQ1l2bJl7N69m/z8fH744QdSUlJwd3enqKiIvXv3kp+fT3JyMgcPHqy1TScnJ1q1asWOHTs4f/48GRkZxMXFWazz6quv4uzsTFhYGCdOnKCgoID09HROnToFQPv27blw4QLZ2dlcvXoVk8lEv3798Pb2JiwsjMOHD3PhwgVOnjzJqlWranxqXW31bt68SXR0NMeOHeP333/nxIkTnDlzplrgKiIiItKUFBYWEhsbS25uLmlpaXz88ccEBQVhMBiwtbVl+/btFBQU8NVXX7Fu3boa23J3d+fIkSOcPHmS3377jaioKC5fvlznbdbWdk0xq2I9EakPuqJQRJqMadOmYWNjQ0JCAsXFxbi4uPD6668zfvx4goODiY6OxmQyMWjQIKZOnUpiYmKN7VlbW7Nq1SpiYmIICAigc+fOLFiwAKPRaF7Hzs6OzZs3s3TpUt566y0qKiro2rUrixYtAu48DOXAgQMEBQVRVlZGbGwsgYGBfPTRR8THxzNv3jxKSkpwdnamb9++ODs737c/VlZWNdaztramtLSUiIgILl++TOvWrXnppZeYOXNm/QywiIiIyBNo9OjR3Lx5k/Hjx2NjY0NQUBATJ07EysqKuLg4Vq5cyfbt2/H09CQiIsLiir5/mjp1KgUFBYSEhNCiRQsmTJjA0KFD+euvv+q0zZoMGTKkxphVsZ6I1Aerqrt3YxURERERERFpQoxGIz169GD+/PmPuysiIv8JmnosIiIiIiIiIiIiShSKiIiIiIiIiIiIph6LiIiIiIiIiIgIuqJQREREREREREREUKJQREREREREREREUKJQREREREREREREUKJQREREREREREREUKJQREREREREREREUKJQREREREREREREUKJQREREREREREREUKJQREREREREREREUKJQREREREREREREgP8DG08FRcZXD9cAAAAASUVORK5CYII=\n" }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ " n_chars n_words\n", "count 403010.000000 403010.000000\n", "mean 46.683018 7.525347\n", "std 12.580890 2.404941\n", "min 3.000000 1.000000\n", "25% 38.000000 6.000000\n", "50% 51.000000 8.000000\n", "75% 58.000000 9.000000\n", "max 60.000000 19.000000\n" ] } ], "source": [ "# DistribuciĂłn de longitud de tĂ­tulos (en caracteres y palabras)\n", "df[\"n_chars\"] = df[COL_TITULO].str.len()\n", "df[\"n_words\"] = df[COL_TITULO].str.split().str.len()\n", "\n", "fig, axes = plt.subplots(1, 2, figsize=(13, 4))\n", "axes[0].hist(df[\"n_chars\"], bins=50, color=\"#3483FA\", edgecolor=\"white\")\n", "axes[0].set_title(\"Longitud de tĂ­tulos (caracteres)\")\n", "axes[0].set_xlabel(\"caracteres\")\n", "axes[1].hist(df[\"n_words\"], bins=30, color=\"#FFE600\", edgecolor=\"gray\")\n", "axes[1].set_title(\"Longitud de tĂ­tulos (palabras)\")\n", "axes[1].set_xlabel(\"palabras\")\n", "plt.tight_layout(); plt.show()\n", "\n", "print(df[[\"n_chars\", \"n_words\"]].describe())" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 755 }, "id": "Bb1yFLFS0k8F", "outputId": "af37d152-48bb-4853-ce29-5665e321ca74" }, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/tmp/ipykernel_618/1515503213.py:4: FutureWarning: \n", "\n", "Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `y` variable to `hue` and set `legend=False` for the same effect.\n", "\n", " sns.barplot(x=top.values, y=top.index, palette=\"viridis\")\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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YfHixTAxMUFISAhOnjyJS5cuyfQt6mc9P4X9Dn2pcePGGDNmDHbv3o2zZ88iNzcXJ0+ehKamJkaOHInXr1/j6NGjOHLkCFq3bo2NGzcWOMHb50aPHg19fX1s374dISEhqFKlCvr06YPx48dLnzEuEong5OSE33//HS9evICGhgZEIhE2bNgAW1vbr45BRP8OgUQRs1sQERH9S0QiEby9vTFt2jRFh1LupaWloXnz5hg7dixGjBih6HC+SVBQEI4ePSpzWTwREVFZ4D3dREREJOfjx49ybXn38rZo0eLfDoeIiKjc4uXlREREJOfw4cPYt28fWrduDU1NTVy7dg0HDx6Ek5MTfvjhB0WHR0REVG6w6CYiIiI5IpFIes/z+/fvUa1aNfj6+mLs2LGKDo2IiKhc4T3dRERERERERGWE93QTERERERERlREW3URERERERERlhEU3ERERERERURnhRGpExZSbm4ucnByoqKhAIBAoOhwiIiIiIlIAiUSC3NxcVKpUCSoqBZ/PZtFNVEw5OTm4deuWosMgIiIiIiIlYGNjAzU1tQKXs+gmKqa8b7EaNmxY6C8XlS2xWIx79+6hXr16EAqFig7nu8U8KAfmQXkwF8qBeVAOzIPyYC7Khlgsxq1btwo9yw3wkWFExSYWixEXFwdbW1v+p0VERERE9C8Ri3MhFCrPtGRFrQt4ppuohJZM3IiH8U8UHQYRERERUYVnYlkLQSt+UnQYJcKim6iEkh48Q8LtREWHQURERERESkx5zs0TERERERERVTAsuomIiIiIiIjKCItuIiIiIiIiojLCoptKVVBQEEQikfRlb28Pf39/3L17V9pHLBYjLCwM3bp1g42NDZo3b46AgABcvXpVbnsfP37EihUr4OrqCmtra9jb2yMwMBD37t2T6RcaGoru3bvLtF25cgXNmjXD3LlzIZFIkJGRgcWLF6NDhw6wsbFBy5YtMWDAAJw4caJsDgYREREREX33WHRTqXN2dkZsbCxiY2MRFhaGSpUqYfjw4QAAiUSCcePGYdWqVfD19cXhw4exbds21KxZE76+vjIFcFZWFvz8/BAREYExY8bg6NGj2LBhA8RiMfr06YO4uLgCYzh9+jT8/f3h5+eHyZMnQyAQYPr06Th27BimTp2KI0eOYOPGjXB1dUVqamoZHxEiIiIiIvpecfZyKnVqamowNDQEABgaGmLIkCHw9vbG69evceHCBRw9ehRr1qyBi4uLdJ3Zs2cjNTUVkydPhoODAzQ1NREWFoa4uDhERUWhfv36AABjY2OEhobCy8sLkydPxsGDByEQCGTGj46ORnBwMIKCgjBgwABp+6lTpzB58mS0adMGAFC7dm1YW1uX9eEgIiIiIqLvGM90U5l6//49Dhw4AFNTU+jp6SE6OhpmZmYyBXeeQYMGITU1FX/++ScA4ODBg3B0dJQW3HlUVFTg5+eHhIQEmcvWAWDHjh0IDg7GvHnzZApuADAwMMCZM2eQnp5eyntJRERERESUP57pplJ3+vRp2NnZAQA+fPgAQ0NDrFu3DioqKkhMTETdunXzXS+v/eHDhwCAxMRE2Nvbf7VvgwYNAAD379/HrFmzMHfuXHh4eMitM3v2bEyYMAEtW7aESCTCDz/8AFdXV/zwww/ftsNEREREREQF4JluKnX29vaIiopCVFQU9u7dC2dnZwwZMgTJyckAPt3XXVTF6VujRg00atQIv/76K16+fCm3vHnz5jhx4gTCwsLg6uqKhIQEeHt7Y9WqVUUeg4iIiIiIqDhYdFOp09DQgKmpKUxNTdG4cWPMmTMHGRkZ+O2332BmZoYHDx7ku979+/cBAObm5gBQrL4AoKWlhc2bN0NDQwO+vr75Ft6qqqpo1qwZhg4dik2bNiEwMBBr1qxBVlbWN+0zERERERFRflh0U5kTCAQQCATIzMyEu7s7EhMTcerUKbl+mzdvhp6eHhwcHAAA7u7u+PPPP+Xu287NzUVYWBgsLS3l7veuUqUKwsLCoK2tDR8fH7x48aLQ2CwtLZGTk8Oim4iIiIiIygSLbip1WVlZSElJQUpKCu7fv4/Zs2fjw4cPaNeuHdzd3dGxY0cEBQVh7969SEpKwt27dzFt2jScOnUKc+fOhaamJgDAz88PjRs3xvDhw3HkyBE8ffoUN2/exOjRo/HgwQPMnTtXbuZyANDV1cXmzZtRpUoV+Pr6SgtvHx8f7N69G7dv30ZSUhLOnDmDJUuWwN7eHtra2v/qMSIiIiIiou8DJ1KjUnf27Fk4OTkB+HTJt4WFBZYvXy6dFG3ZsmXYsmULtmzZgpkzZ6Jy5cqwtbXF1q1bZSY1q1y5MrZs2YK1a9di6dKlePr0KbS0tGBvb489e/bAysqqwBh0dHSwadMmBAQEwMfHB9u2bYOTkxOioqKwdOlSZGRkoHr16mjbti1GjhxZtgeEiIiIiIi+WwJJcWaqIiKIxWLExcVh65xoxF9NUHQ4REREREQVnqW1GVYfnqPoMGTk1QW2trYQCoUF9uPl5URERERERERlhEU3ERERERERURlh0U1ERERERERURjiRGlEJ1baoiezMHEWHQURERERU4ZlY1lJ0CCXGopuohMb/N6DQCROIiIiIiKj0iMW5EArL38Xa5S9iIiUhFosVHcJ3TSwW486dO8yDgjEPyoF5UB7MhXJgHpQD86A8KkouymPBDbDoJqJyLCMjQ9EhEJgHZcE8KA/mQjkwD8qBeVAezIXisOgmIiIiIiIiKiMsuomo3NLQ0FB0CATmQVkwD8qDuVAOzINyYB6UB3OhOAKJRCJRdBBE5YlYLEZcXBxsbW05kRoRERERURnKFedCRUnv5S5qXcDZy4lKaNn0HUi891TRYRARERERVUh1zGtg4nw/RYfxzVh0E5VQ8qMXuB//RNFhEBERERGRElPO8/REREREREREFQCLbiIiIiIiIqIywqK7DOzatQt2dnbIycmRtr1//x6NGjWCj4+PTN+LFy9CJBLh8ePHcHFxgUgkgkgkQpMmTdCtWzfs3bs33/5paWnStt9++w0eHh6ws7NDs2bN4OnpiXXr1gGAzDbzewUFBaFPnz6YNm2a3D6IRCJERkbKtAcFBaF///4ybdOmTUODBg1w5MgRaVthY4pEIoSGhgIA7ty5g8DAQDg4OMDGxgadOnXClClT8PDhQwBAUlISRCIR4uPj5Y6zj48P5s6dK/M+v7E+37dLly7B19cXLVq0QJMmTdCpUydMmjQJWVlZctsnIiIiIiL6VrynuwzY29vjw4cPuH37NmxtbQEAV65cgYGBAW7cuIHMzExUrlwZwKciulatWjAxMQEABAYGok+fPvj48SOOHDmCKVOmoHr16mjTpk2+Y4WHh2PevHmYPHkyWrRogaysLPz111+4d++edLlYLAYAXL9+HaNHj0ZMTAy0tbUBAOrq6li/fj2OHz8us92LFy+iZs2auHTpEnr27Cltv3TpEjw9PaXvMzIycOjQIQQEBCAiIgJubm4AgNjYWGmfw4cPY8WKFYiJiZG2aWpq4vfff8fo0aPh5OSERYsWoU6dOnj9+jViYmKwfPlyLFu2rLiHHn369EFgYKBMW97jERISEhAQEIABAwZgypQpUFdXR2JiIo4dO4bc3Nxij0VERERERPQ1LLrLgIWFBQwNDXHp0iVp0X3p0iW0b98eFy5cQFxcHOzt7aXteT8DgJaWFgwNDQEAQ4cOxa+//oo///yzwKL71KlTcHNzg5eXl7StXr160p/19fWlP1epUgUAUK1aNejq6krb7e3tsX79eqSkpEjHvnz5Mn766Sf8+uuv0n5PnjxBcnKyTLwxMTGwtLTE0KFD4ezsjGfPnqFmzZrS7QCAjo4OBAKBTFtGRgaCg4PRpk0brFq1Stpep04dNGnSROZMfnGoq6vLjPO52NhYGBgYYOLEidI2ExMTtG7dukRjERERERERfQ0vLy8j9vb2uHjxovT9xYsX0aJFCzRv3lza/vHjR9y4cUOmiM2Tm5uLo0eP4u3bt1BVVS1wHAMDA8TFxSE5ObnEsTZt2hSqqqrSuBISEvDx40d4eXnhzZs3ePLkiXQfKleuDDs7O+m64eHh8PDwgI6ODlq3bi13OXpBYmNj8ebNGwQEBOS7/PMvBUqLoaEhUlJScPny5VLfNhERERERUX5YdJeRli1b4tq1a8jJyUF6ejri4+OlRfelS5cAfLrcOysrS6boXrRoEezs7GBjY4PAwEBUqVJF5iz2l0aNGgVdXV24uLjA1dUVQUFBOHz4cLEul9bU1ISNjY00rosXL+KHH36AmpoamjZtKm3PO3OvpqYGAEhMTMSNGzekl5R7eHggMjISEonkq2MmJiYC+HRVQFH07dsXdnZ2Mq8rV67I9cu7n/7z14EDBwAAnTt3RteuXTFgwAA4OTlh5MiR2L59O9LT04sUAxERERERUXGx6C4jLVq0wIcPH3Dr1i1cvXoVZmZm0NfXR/PmzaX3dV+6dAl16tRBrVq1pOv5+/sjKioKW7ZsQZMmTRAcHAxTU9MCx6levTr27NmD6Oho+Pr6IicnB0FBQQgICChW4d2iRQvpme5Lly6hRYsWACDzJcGXl8JHRETAyclJegl769atkZ6ejgsXLnx1vKIU5p9bunQpoqKiZF7W1tZy/bp16ybXz8XFBQAgFAoREhKCP/74AxMmTICRkRHWrl0Ld3d3vHz5sljxEBERERERFQXv6S4jpqamqFGjBi5evIi3b9+iefPmAAAjIyPUrFkT165dw8WLF9GyZUuZ9apWrQpTU1OYmppi+fLl6NatG6ytrWFpaVnoeFZWVrCysoK3tzeuXLkCb29vXLp0SW77BWnZsiXWrl2LFy9e4NKlS/D39wfwqejes2cPHj9+jGfPnkm3JxaLsW/fPrx69QoNGzaUbkcsFiM8PBytWrUqdDxzc3MAwIMHD2QuVy9IzZo15b58UFdXl+unra1d6JcUwKcceHp6wtPTE2PGjIGrqyt2794tNwEbERERERHRt+KZ7jJkb2+PS5cuyZw5BoBmzZrhjz/+wM2bN/O9nztPzZo10aVLFyxevLhY4+YV6BkZGUVex87ODqqqqti5cycyMzPRqFEjAICNjQ1ev36NiIgIaGpqonHjxgCAM2fO4P3793JnlZcsWYLjx49/dSI0R0dHVK1aFRs3bsx3eUknUiuuKlWqwNDQsFjHioiIiIiIqKh4prsM2dvbY9asWcjJyZEpulu0aIFZs2YhOzu70KIbAHx9fdG1a1fcunULNjY2csunT5+O6tWro2XLlqhRowZSUlKwZs0a6OvrS2dOLwp1dXXY2tpi27ZtaNq0KYRCIQBATU0NTZo0kbbnTeoWHh6Otm3bon79+jLbsbS0REhICKKjo+Ht7V3geJqampgzZw7Gjh2L4cOHw9fXFyYmJnjz5g2OHDmCZ8+eYenSpUWOP8/Hjx+RkpIi06ampoYqVapg9+7diI+PR8eOHWFiYoLMzExERUUhISEBU6dOLfZYREREREREX8Mz3WXI3t4eHz9+hImJCQwMDKTtzZs3x/v372Fubo7q1asXug1LS0s4OjpixYoV+S53cHDAjRs3pJdJjx49GpUrV0ZYWBiqVq1a7Hjfv38v8wUB8OlLgvfv30u/IHj16hXOnDmDTp06yW1DRUUFHTp0QHh4+FfH69ChA3bt2gVVVVX8/PPPcHNzw88//4z09HSMHTu2WLHn+e233+Dk5CTzGj9+PACgcePG+PDhA6ZPnw53d3cMGDAAN27cwKpVq+T2mYiIiIiIqDQIJMWd0YroOycWixEXF4cdy07h7o1ERYdDRERERFQh1W1QB6F7ghQdRoHy6gJbW1vplcL54ZluIiIiIiIiojLCopuIiIiIiIiojLDoJiIiIiIiIiojnL2cqISMTY2QnSVWdBhERERERBVSHfMaig6hVLDoJiqhsTO9C50wgYiIiIiIvk2uOBcqwvJ9gXb5jp5IgcRinuVWJLFYjDt37jAPCsY8KAfmQXkwF8qBeVAOzIPyKM+5KO8FN8Cim4jKsYyMDEWHQGAelAXzoDyYC+XAPCgH5kF5MBeKw6KbiIiIiIiIqIyw6CaicktDQ0PRIRCYB2XBPCgP5kI5MA/KgXlQHsyF4ggkEolE0UEQlSdisRhxcXGwtbXlRGpERERERF9RESZDy09R6wLOXk5UQivmhyPx/nNFh0FEREREpLTqmFbHhOn9FB2GQrHoJiqh5McpuP93sqLDICIiIiIiJVbxzvETERERERERKQkW3URERERERERlhEX3N7h+/ToaNGiAoUOHyi3LysrChg0b4OHhgSZNmsDe3h59+/ZFREQEsrOzIRKJCn2FhoYiKSkJIpEI8fHxMtvet28fevXqhSZNmsDOzg4DBgzA77//LtPn4sWLEIlEcHd3h1gsllnWrFkzREZGFmkfXVxc5GJr3bq1zPKwsDCZde7cuYOxY8fCyckJ1tbWaNeuHYYNG4ZTp04hb96+vPjS0tLyHfPzbX4+dtOmTdGrVy+cOHFCZp3IyMh8j6ONjY20z+vXrzF9+nS0bdsW1tbWcHR0hL+/P65evVqkY0FERERERFRcvKf7G4SHh2PAgAEIDw/HixcvYGRkBOBTwe3v74+//voLY8aMQdOmTaGtrY24uDhs2rQJDRs2RGxsrHQ7hw8fxooVKxATEyNt09TUxJs3b+TGXLBgAbZv346xY8eiQ4cOyMnJwYEDB/DTTz9h8uTJGDBggEz/J0+eICoqCr169SrxfgYGBqJPnz7S94XNzHfixAmMHTsWDg4OmD9/PkxNTZGVlYVr165h2bJlaNasGXR1dYsdQ0hICJydnZGeno6dO3dizJgx0kI7j7a2tswxBACBQCD9efTo0cjOzsb8+fNRp04d/PPPPzh//jxSU1OLHQ8REREREVFRsOguoffv3+Pw4cOIiIjAq1evsG/fPgwfPhwAsGXLFly5cgURERFo2LChdJ06deqgc+fOyM7OhqamprRdR0cHAoEAhoaGMmN8WXTnFe1TpkyBj4+PtH3cuHHIzMzE/Pnz0b59e9SsWVO6bMCAAQgNDUW3bt2gpqZWon3V0tKSiy0/Hz58wOTJk9G2bVusXLlSZlndunXh5eWFkj6hTldXF4aGhjA0NMSYMWOwdetW6dnyPPkdwzxpaWm4cuUKtm3bhhYtWgAAjI2N0bhx4xLFQ0REREREVBS8vLyEjhw5AgsLC1hYWMDDwwMRERHSgjI6OhoODg4yBXceVVVVmYK7OA4ePAhNTU38+OOPcssGDRqE7OxsHD16VKZ94MCByMnJwbZt20o0ZnGcO3cOqampCAgIKLDP52eeSyInJwfh4eEAPh3LotLU1ISmpiZOnDiBrKysb4qBiIiIiIioqFh0l1B4eDg8PDwAAM7Oznj37h0uXboEAHj06BHMzc1LfczExESYmJjke8bayMgI2traSExMlGnX0NDAqFGjsH79erx7965E4y5atAh2dnbS19atW/Pt9/DhQwCQ2febN2/KrPvlvedFNX78eNjZ2cHGxgYhISEwNjaGm5ubTJ93797JjGVnZyf9AqBSpUqYP38+oqKi0KxZM/Tt2xdLlizB3bt3SxQPERERERFRUfDy8hJ48OABbt26hVWrVgH4VNB16dIF4eHhsLe3L/El1EVRkm337t0bmzdvxoYNGzB+/Phir+/v74+ePXtK31etWrXI69avXx9RUVEAgE6dOslN6lZUwcHBcHBwwJMnTxASEoIpU6ZAT09Ppo+Wlhb27dsn06auri792dXVFW3btsWVK1cQFxeHs2fPYuPGjZgzZ47M/hEREREREZUWFt0lEB4ejpycHDg7O0vbJBIJ1NTUMG3aNJiZmUnP+pYmMzMzXL16FVlZWXJnu1+8eIH09HSYmZnJrVepUiWMHTsWwcHB8Pb2Lva4VatWhampaZHiAz6d8ba1tQUAqKmp5buutrY2gE9np7+cWC0tLQ06OjoybYaGhjA1NYWpqSlCQkIwZMgQHD58GNWqVZP2UVFR+WqclStXhqOjIxwdHTFy5EhMnjwZoaGhLLqJiIiIiKhM8PLyYsrJycH+/fsRFBSEqKgo6Wv//v2oXr06Dh48iK5du+LPP//EnTt35NbPzs7Ghw8fSjS2u7s7Pnz4gD179sgt27RpE1RVVeHq6prvum5ubrC0tJSenS8Ljo6O0NPTw4YNG77a19TUFCoqKvjf//4n0/7kyRO8e/cu3y8P8jRu3BjW1tZYs2bNt4YMS0vLEueDiIiIiIjoa3imu5hOnz6Nt2/fonfv3nJnYzt16oTw8HDs2rULZ86cgZ+fH8aMGYMffvgBWlpauHXrFjZu3Ii5c+eiQYMGxR7bzs4Ovr6++O9//4vs7Gx06NAB2dnZOHDgALZu3Yr//Oc/MjOXf+nnn38udJKzb6WlpYU5c+Zg3LhxGDp0KHx8fGBmZob379/j7NmzAD6djQY+nen28vLC/PnzIRQKYWVlhefPn2PRokWwtbVF06ZNCx3L19cXo0aNwpAhQ6SPapNIJEhJSZHrW61aNbx9+xZjxoxBr169IBKJoKWlhdu3b2Pjxo1o3759KR8JIiIiIiKiT1h0F1N4eDgcHBzkCm7g0z3DGzduxIMHD7B582aEhYVh9+7dWLBgATQ0NGBhYQEfHx/Uq1evxONPnjwZIpEIO3fuxLJlyyAUCtGwYUOsWrUKLi4uha7bqlUrtGzZUuYZ4aWtY8eO2LVrFzZs2IBJkybh7du30NbWhrW1NZYuXYp27drJ7Mv69euxaNEiPH36FAYGBnB0dMTYsWO/Ost569atUbt2baxZswYzZswAAKSnp8PJyUmub2xsLKpUqYImTZpgy5YtePz4MXJyclCjRg14eXlJH/VGRERERERU2gSSspz1i6gCEovFiIuLw67153H3f48VHQ4RERERkdKqa2WM5ZvGKDqMMpFXF9ja2kIoFBbYj/d0ExEREREREZURXl7+HTtw4ACmT5+e77JatWrh0KFD/3JEREREREREFQuL7u+Yi4sLmjRpku+ySpX40SAiIiIiIvpWrKy+Y9ra2tLnZVPxGZsYIjtbrOgwiIiIiIiUVh3T6ooOQeFYdBOVUGBQ70InTCAiIiIiIiBXnAsV4fc7ndj3u+dE30gs5lluRRKLxbhz5w7zoGDMg3JgHpQHc6EcmAflwDwoD0Xn4nsuuAEW3URUjmVkZCg6BALzoCyYB+XBXCgH5kE5MA/Kg7lQHBbdRERERERERGWERTcRlVsaGhqKDoHAPCgL5kF5MBfKgXlQDsyD8mAuFEcgkUgkig6CqDwRi8WIi4uDra0tJ1IjIiIiIspHbm4uVFQq9jneotYFnL2cqISWL4tCYuJLRYdBRERERKRU6tQxxC8Teys6DKXBopuohJKTX+H+/WeKDoOIiIiIiJRYxT7fT0RERERERKRALLqJiIiIiIiIygiLbiIiIiIiIqIyUiGK7qCgIPz0008ybevWrUODBg2wcePGfNdJSUnB7Nmz0b59e1hbW6NNmzYYPnw4zp8/L+3j4uKCsLAw6XuJRIIFCxagadOmuHjxorSPSCSSe61fvx6hoaH5Lvv8BQCvX7/G9OnT0bZtW1hbW8PR0RH+/v64evVqsY5DYfscGRkJkUgEf39/mfa0tDSIRCLp/gCQic/W1hadOnVCUFAQbt++Xax4JBIJ9uzZAy8vL9jZ2aFZs2bo2bMnwsLCkJGRIe2XmpqKuXPnol27drC2toaTkxOCg4Px9OnTIu9nQXnIewUFBQEALl26BF9fX7Ro0QJNmjRBp06dMGnSJGRlZRVr34iIiIiIiIqiwk6kFhERgYCAAOm/n0tKSkK/fv2gq6uLiRMnwsrKCjk5OYiNjcXMmTMRExMjtz2xWIwpU6bg9OnT2Lp1K6ytraXLAgMD0adPH5n+WlpakEgk6Nu3r7Std+/e6NOnj1zf0aNHIzs7G/Pnz0edOnXwzz//4Pz580hNTS21fQaASpUq4fz587hw4QJatmxZ6LZCQkLg7OyMzMxMJCYm4rfffkOfPn0wb948eHp6FimeX375BcePH8eIESMwdepU6Ovr4+7du9iyZQtq166NDh06IDU1FT/++CNUVVUxY8YM1KtXD8nJyVi2bBl69+6NPXv2oE6dOl/dz/DwcIjFYgDA9evXMXr0aMTExEBbWxsAoK6ujoSEBAQEBGDAgAGYMmUK1NXVkZiYiGPHjiE3N7dI+0RERERERFQcFbLovnTpEj5+/IjAwEBERUXh2rVraNq0qXT5zJkzIRAIsHfvXmhqakrb69Wrh169esltLysrC+PHj8ft27exY8cOWFhYyCzX0tKCoaFhvrFoaWlJfxYKhXJ909LScOXKFWzbtg0tWrQAABgbG6Nx48alus8AoKGhATc3NyxevBh79+4tdHu6urrSOGvXrg0nJydMmjQJs2bNQrt27VClSpVC1z98+DCio6OxatUqdOjQQdpeu3ZttG/fHunp6QCApUuX4uXLlzh27Jh0vFq1auHXX39Fp06dMHPmTJkz2gXtp76+vrRPXmzVqlWDrq6utD0iIgIGBgaYOHGitM3ExAStW7cudF+IiIiIiIhKqkJcXv6l8PBwuLu7Q1VVFV27dkV4eLh0WWpqKs6ePQtvb2+ZgjvP50UaAHz48AFDhw5FQkICdu3aJVdwfytNTU1oamrixIkT33SJc2H7/LlRo0bh77//zvds/tf4+fnh/fv3OHfu3Ff7RkdHw9zcXKbgziMQCKCjo4Pc3FwcPnwY3bp1k/vSQl1dHf3790dsbKzMGf+i7md+DA0NkZKSgsuXLxd5HSIiIiIiom9R4Yru9PR0HD16FN27dwcAeHh44MiRI3j//j0A4PHjx5BIJEUunlevXo34+Hjs3LkTNWvWzLfPokWLYGdnJ/O6cuVKkbZfqVIlzJ8/H1FRUWjWrBn69u2LJUuW4O7du0VaH/j6Pn/OyMgIvr6+WLp0KXJycoo8BgDpMUtOTv5q30ePHsHc3LzQPq9fv0ZaWlqBuahbty4kEgkeP34MoHj7mZ/OnTuja9euGDBgAJycnDBy5Ehs375detadiIiIiIiotFW4ovvgwYMwMTFB/fr1AQANGjSAsbExDh8+DODT5F7F4eTkhIyMDKxdu7bAPv7+/oiKipJ5fX7P99e4urri7NmzWLNmDZydnXHp0iX07NkTkZGRRVr/a/v8pSFDhuDNmzeIiIgocozA/x07gUBQ5L6lqbj7+SWhUIiQkBD88ccfmDBhAoyMjLB27Vq4u7vj5cuXpR4vERERERFRhSu6w8PDce/ePTRs2FD6SkhIkBaYpqamEAgEePDgQZG217JlS6xevRq7d+/GnDlz8u1TtWpVmJqayrzU1dWLFXflypXh6OiIkSNHYvfu3ejRowdCQ0OLtO7X9vlLurq6GDp0KFauXCkzi/jX3L9/H8Cn+7K/xszM7KvHWF9fH7q6utLt5jeeQCCAiYkJgOLvZ0GMjIzg6emJadOm4dChQ8jMzMTu3buLtQ0iIiIiIqKiqFATqf3111+4ffs2tm3bJjPR19u3b+Hj44P79++jbt26cHJywo4dO+Dj4yN3X3daWprcfd1OTk5Yu3YtRowYAQCYMmVKme+LpaUlTpw48dV+Rd3nL/n4+GDbtm3YunVrkWPasmULtLW14eDg8NW+3bp1w7hx43DixAm5+7olEgnS09Oho6MDNzc3REdHIzAwUOa+7o8fP2Lnzp1wcnKCnp5eiffza6pUqQJDQ8NifflARERERERUVBWq6A4PD0fjxo3RvHlzuWU2NjYIDw/HpEmTMH36dPTr1w9eXl4IDAyESCSCWCzGuXPnsGvXLhw5ckRufQcHB2nhnZubi2nTpkmXvX//HikpKTL9NTQ0pI+rKsybN28wZswY9OrVCyKRCFpaWrh9+zY2btyI9u3bl9o+f6ly5coYPXo0Zs2ale9209LSkJKSgqysLCQmJmLPnj04ceIEFixYIPelRH7c3Nxw/Phx/PzzzxgxYgQcHR2hr6+Pv//+G2FhYfDx8UGHDh0wbtw4nD9/HoMHD8aECRNgZWWFpKQkLFu2DDk5OZg+ffo37efndu/ejfj4eHTs2BEmJibIzMxEVFQUEhISMHXq1K/uExERERERUXFViKI7NzcXKioqOHDgAIYMGZJvn06dOmHz5s0YP3486tSpg8jISKxduxYLFizAy5cvoa+vj0aNGmHGjBkFjtOqVSusW7cOw4cPh0QikRbeK1aswIoVK2T6/vjjjwUWtJ/T0tJCkyZNsGXLFjx+/Bg5OTmoUaMGvLy8MHz48ELXzcrKKvI+56dHjx7YvHkzEhIS5JYFBwcD+FScGxkZ4YcffsDevXvRqFGjr+4T8Om+78WLF2PPnj2IiIjA2rVrIRQKYWpqCk9PTzg5OQH4dGn+nj17sHr1akyfPh2vXr1ClSpV0Lp1ayxcuBC1atUq1n6qqqoWGFPjxo1x9epVTJ8+HS9fvoSmpibq1auHVatWSR/XRkREREREVJoEkrKY8epf5u/vD1NTU5mzz0RlRSwWIy4uDjt3XMHdu1+fyZ2IiIiI6HtSt25NrAgdoegwylxeXWBrawuhUFhgv3I9kdrbt2/x+++/49KlS0W6z5iIiIiIiIjo31SuLy//z3/+g1u3bmHw4MFFuv+5PDpw4ID0vuYv1apVC4cOHfqXI/okICAAV69ezXfZsGHDvnppPBERERER0fegXBfdq1atUnQIZc7FxQVNmjTJd1mlSopL39y5c/Hx48d8l30+u3hFZmxsgOzsXEWHQURERESkVOrUMfx6p+9IuS66vwfa2tpFmgX932ZkZKToEBRuzFjPQu/dICIiIiL6XuVNdk3l/J5uIkUSi8WKDuG7JhaLcefOHeZBwZgH5cA8KA/mQjkwD8qBeVAeisgFC+7/wyNBROVWRkaGokMgMA/KgnlQHsyFcmAelAPzoDyYC8Vh0U1ERERERERURlh0E1G5paGhoegQCMyDsmAelAdzoRyYB+XAPCgP5kJxBBKJRKLoIIjKE7FYjLi4ONja2nIiNSIiIiL6rohzcyHk/doAil4XcPZyohJasuYAEh+9VHQYRERERET/ijq1DRE0pqeiwyh3WHQTlVBy8iskPHyu6DCIiIiIiEiJ8boAIiIiIiIiojLCopuIiIiIiIiojLDoJiIiIiIiIiojvKf7C0FBQdi3b59c+7Fjx2Bqaopnz55hxYoVOHv2LFJTU2FoaIj27dtj5MiRqFq1qsw69+7dw8qVK3Hx4kWkp6fD2NgYXbp0wdChQ6GhoYGLFy/C19e30Hi2bt2K5ORkBAcHS9s0NTVhbm6O4cOHo1OnTnLrHDx4EL/88gv69u2L6dOnyyzLG/Py5cvQ1dWVWzc0NBQnTpzA/v37C40rP0+ePMGyZctw8eJFvH37FlWrVkWjRo0wYcIE1K1bFwAgEomwatUqdOjQQWbdoKAgpKWlYfXq1QW+z8tLpUqVYGRkhM6dO2PMmDE4dOiQzPHJz8mTJ1GtWjWsXr0aR44cwYsXL6ClpQVLS0v4+fnJxUNERERERFQaWHTnw9nZGSEhITJt+vr6ePLkCX788UeYmZlhyZIlqF27Nu7du4eFCxfi7Nmz2LNnD/T09AAAcXFxGDRoEFq1aoX169ejWrVquHnzJhYsWIDz589j69atsLOzQ2xsrHSMuXPnIj09XWbsKlWqIDk5Gdra2oiJiQEAvH//HpGRkRg7diwOHjwICwsLmVjDw8MREBCAPXv2ICgoCJUrVy6jI/V/srOzMXjwYJibm2PlypUwNDTE8+fP8ccff+Ddu3elMkZeXnJycvC///0PkyZNgkAgwOjRo+Hs7CztN3r0aNSrVw+BgYHSNn19fQQHB+PGjRuYOnUq6tati9TUVFy/fh2pqamlEh8REREREdGXWHTnQ01NDYaGhnLtM2fOhKqqKjZt2gR1dXUAQK1atdCwYUN07NgRS5cuxcyZMyGRSDB58mRYWFhg5cqVUPn/z7EzNjaGubk5PD09ERYWhqFDh8qMo66ujqysrHzHFggE0nZDQ0OMHTsWmzZtwl9//SVTdD958gTXr19HaGgoLl68iGPHjqFbt26lenzyk5CQgMePHyMsLAzGxsYAPu3vDz/8UGpjfJ6XmjVrwsHBAX/++Sd++eUXaT4AQFVVFerq6nLH8dSpU5g8eTLatGkDAKhduzasra1LLT4iIiIiIqIv8Z7uIkpNTUVsbCz69+8vU+ABn4rgbt264ciRI5BIJIiPj0dCQgIGDRokLbjz1K9fHw4ODjh06FCJYxGLxdJLrRs1aiSzLDIyEm3atIGOjg48PDwQHh5e4nGKQ19fHyoqKjh69CjEYnGZj/f333/j+vXrUFVVLfI6BgYGOHPmDNLT08swMiIiIiIiov/DM935OH36NOzs7KTvnZ2d4e/vD4lEIr03+Ut169bF27dv8fr1ayQmJkrb8mNhYYGrV68WK6Z3795JY/r48SMqVaqEWbNmwcTERNonNzcX+/btw5QpUwAAXbp0wfz58/HkyRPUqVOnWOMVl5GREaZMmYKFCxdi5cqVsLa2hr29PTw8POTGHj9+PIRCoUxbVlaW9Ax0QfLykpOTg6ysLKioqGDq1KlFjnH27NmYMGECWrZsCZFIhB9++AGurq6lejaeiIiIiIjocyy682Fvb48ZM2ZI32toaODZs2cAAIlEUuTtFKfv12hpaUnPbmdkZOD8+fOYPn069PT04OLiAgA4d+4cMjIypMWrvr4+HB0dERERgbFjx5ZaLAXx9vZG9+7dcenSJdy4cQMxMTFYt24d1qxZA0dHR2m/4OBgODg4yKy7aNGir54hz8tLRkYGwsLCIBQK4erqWuT4mjdvjhMnTuDGjRu4du0aLly4gK1bt2L06NEYOXJk8XaWiIiIiIioCHh5eT40NDRgamoqfVWvXh0mJiYQCAS4f/9+vuvcv38fVapUgb6+PszMzKRt+Xnw4IG0T1GpqKhI46lfvz4GDRqEFi1aYMOGDdI+4eHhSE1NRZMmTdCwYUM0bNgQZ86cQVRUFHJzc4s1Xklpa2vDxcUF48aNw4EDB9CsWTOsWbNGpo+hoaHM8TU1NYWWltZXt52Xl/r162PevHm4efMm9u7dW6z4VFVV0axZMwwdOhSbNm1CYGAg1qxZg6ysrGJth4iIiIiIqChYdBdR1apV4ejoiJ07d+Ljx48yy1JSUhAdHQ03NzcIBAI0aNAAFhYWCAsLkyt27969iz///BPu7u7fHJNQKERmZiYA4M2bNzh58iSWLl2KqKgomdfbt29lZkn/twgEAlhYWODDhw+lvm0VFRUMGzYMy5cvl8tHcVhaWkovVyciIiIiIiptLLqLYerUqcjKyoK/vz8uX76MZ8+e4Y8//sDgwYNhZGSEcePGAfhUbM6dOxf379/H6NGjcfPmTTx9+hRHjhzB8OHDYWtrCz8/v2KNLZFIkJKSgpSUFDx58gR79uxBbGys9NLy/fv3Q09PD25ubrCyspK+6tevjzZt2shNqPb3338jPj5e+rp796502cePH2WWxcfH4/Hjx4XGFx8fjxEjRiAmJgYJCQl49OgR9u7di4iICLRv375Y+1pUnTt3hoqKCnbs2FGk/j4+Pti9ezdu376NpKQknDlzBkuWLIG9vT20tbXLJEYiIiIiIvq+8Z7uYjAzM0NERARCQ0MxduxYvH37FgYGBujQoQNGjhwpfUY3ADRt2hR79uzBqlWrMGTIELx//x41a9aEp6cnhg0bBjU1tWKNnZ6eDicnJwCfHp1Vq1YtBAYGYsiQIQCAiIgIdOzYEQKBQG7dTp06YeLEiXj9+rW0zdvbW6aPUCjEnTt3AACJiYnw9PSUWd6qVSuEhYUVGJ+RkRGMjY2xatUqJCUlQSAQwNjYGKNHjy72FwxFValSJQwYMAAbN25Ev379oKmpWWh/JycnREVFYenSpcjIyED16tXRtm1b3s9NRERERERlRiApzdm+iL4DYrEYcXFx2BZ+DfH3nio6HCIiIiKif4WleQ2sWjhM0WEojby6wNbWVu7pTJ/j5eVEREREREREZYSXl1ORXLlyRXope36uX7/+L0ZDRERERERUPrDopiKxtrZGVFSUosNQKsbGBsjO+XcexUZEREREpGh1ahsqOoRyiUU3FYm6ujpMTU0VHYZSGT/Co9B7N4iIiIiIKhpxbi6EKrxLuTh4tIhKSCwWKzqE75pYLMadO3eYBwVjHpQD86A8mAvlwDwoB+ZBeZRmLlhwFx+PGBGVWxkZGYoOgcA8KAvmQXkwF8qBeVAOzIPyYC4Uh0U3ERERERERURlh0U1E5ZaGhoaiQyAwD8qCeVAezIVyYB6UA/NAxInUiEqMk6gpllAoRMOGDRUdxnePeVAOzIPyYC6UA/OgHJgHJSIQQFVVVdFRfLdYdBOV0MKN0XiYlKLoMIiIiIiICmRSywCTR/RApUos/RSFR56ohJKe/4N7j54rOgwiIiIiIlJivKebiIiIiIiIqIyw6CYiIiIiIiIqIyy6iYiIiIiIiMoIi+4KKigoCD/99JNc+8WLFyESiZCWlibT3rlzZ1hbWyMlRX5iMB8fH4hEIhw6dEimPSwsDC4uLtL3kZGREIlEEIlEaNCgAZo3bw4vLy+sXLkS7969k4svr69IJIK9vT38/f1x9+7dfPdn2rRpaNCgAY4cOZLv8kePHiE4OBht27aFtbU1nJ2dMXDgQBw4cAA5OTnSfpcuXYKvry9atGiBJk2aoFOnTpg0aRKysrLy3S4REREREdG3YNFNuHLlCjIzM+Hq6op9+/bl26dy5cpYtmwZsrOzC92WtrY2YmNjcebMGezevRt9+vTB/v370b17d7x48UKmr7OzM2JjYxEbG4uwsDBUqlQJw4cPl9tmRkYGDh06hICAAERERMgtv3nzJnr06IEHDx5g2rRpOHjwILZt2wYvLy/s2rULCQkJAICEhAQEBATA2toa27dvR3R0NKZMmQJVVVXk5uYW9XAREREREREVGYtuQkREBLp27Yru3bvnW9QCgLu7O9LS0vDbb78Vui2BQABDQ0NUr14ddevWhZeXF3bv3o0PHz5g4cKFMn3V1NRgaGgIQ0NDNGjQAEOGDMGzZ8/w+vVrmX4xMTGwtLTE0KFDceXKFTx79ky6TCKRICgoCGZmZti1axdcXFxgZmYGMzMzdO3aFbt27YJIJAIAxMbGwsDAABMnToSVlRVMTEzQunVrzJkzB+rq6iU5dERERERERIVi0f2dS09PR0xMDDw8PODo6Ij09HRcuXJFrp+2tjZGjBiB1atX48OHD8Uao1q1aujWrRtOnToFsVicb5/379/jwIEDMDU1hZ6ensyy8PBweHh4QEdHB61bt0ZkZKR0WXx8PO7fvw9/f3+oqOT/cRYIBAAAQ0NDpKSk4PLly8WKn4iIiIiIqKRYdFdgp0+fhp2dncxryJAhMn0OHz4MU1NT1KtXD0KhEF26dEF4eHi+2+vfvz8qV66MzZs3FzsWCwsLvH//HqmpqfnG17RpU5w6dQpLly6VKZ4TExNx48YNuLm5AQA8PDwQGRkJiUQiXQ4A5ubm0nX++ecfmX3esWMHgE/3rXft2hUDBgyAk5MTRo4cie3btyM9Pb3Y+0NERERERFQULLorMHt7e0RFRcm85syZI9MnIiICHh4e0vceHh6IiYnJtxBVU1NDYGAgNm3aJHcJ+NfkFcl5Z52/jG/v3r1wdnbGkCFDkJycLBOfk5MT9PX1AQCtW7dGeno6Lly4UOBYenp60u3q6OhI70MXCoUICQnBH3/8gQkTJsDIyAhr166Fu7s7Xr58Waz9ISIiIiIiKgoW3RWYhoYGTE1NZV5GRkbS5QkJCYiLi8PChQvRsGFDNGzYED/++CMyMjJw+PDhfLfp4eGBWrVqYc2aNcWK5cGDB9DW1pa5dPzz+Bo3bow5c+YgIyNDet+4WCzGvn37cPr0aWl8tra2SE1NlZ6NNzU1BQA8fPhQul2hUCjdbqVKleRiMTIygqenJ6ZNm4ZDhw4hMzMTu3fvLtb+EBERERERFYV8RULfjfDwcDRv3hzTpk2TaY+MjER4eDj69Okjt46Kigp+/vlnjBo1Cv369SvSOP/88w+io6PRoUOHAu+7Bj6dBRcIBMjMzAQAnDlzBu/fv0dUVJTMevfu3UNwcDDS0tLQsGFDWFhY4Ndff4Wbm1uh289PlSpVYGhoiIyMjGKtR0REREREVBQsur9TOTk52L9/PwIDA2FlZSWzzMvLC5s3b8a9e/dQr149uXXbtm2LJk2aYM+ePTAwMJBZJpFIkJKSAolEgnfv3uH69etYt24ddHR08PPPP8v0zcrKkj4XPC0tDdu3b8eHDx/Qrl07AJ++FGjbti3q168vs56lpSVCQkIQHR0Nb29vhISEYNCgQejXrx+GDh2KunXrIicnB5cvX8br168hFAoBALt370Z8fDw6duwIExMTZGZmIioqCgkJCZg6deq3HVAiIiIiIqJ8sOj+Tl2+fBmpqano2LGj3LK6deuibt26CA8PR3BwcL7rT5gwAX379pVrT09Ph5OTEwQCAbS1tWFubg5PT08MHDgQ2traMn3Pnj0LJycnAICWlhYsLCywfPly2Nvb49WrVzhz5gwWLVokN4aKigo6dOiA8PBweHt7w9bWFpGRkVi3bh1mzZqFV69eQUNDA/Xr10dwcDB69eoFAGjcuDGuXr2K6dOn4+XLl9DU1ES9evWwatUqtGjRotjHkIiIiIiI6GsEkrwZroioSMRiMeLi4rD5YBzu3H+q6HCIiIiIiApUz7QG1s0egjt37kAkEkmvAqVvl1cX2NraFnpcOZEaERERERERURlh0U1ERERERERURnhPN1EJ1a5RDdk5uYoOg4iIiIioQCa1DL7eicoUi26iEvoloBvviSEiIiIipSfOzUVOTo6iw/hu8fJyohISi8WKDuG7JhaLcefOHeZBwZgH5cA8KA/mQjkwD8qBeVAiEgmys7MVHcV3i0U3EZVbGRkZig6BwDwoC+ZBeTAXyoF5UA7MAxGLbiIiIiIiIqIyw6KbiIiIiIiIqIyw6CaicktDQ0PRIRCYB2XBPCgP5kI5MA/KgXkg4uzlRCXGmcsVSygUomHDhooO47vHPCgH5kF5MBfKgXlQDsxD6RLn5kKownOm5RGLbqISWrA1GveTUxQdBhERERFVcKY1DTDNv4eiw6ASYtFNVEKPX/yDv588V3QYRERERESkxHh9AhEREREREVEZYdFNREREREREVEZYdJcTIpGo0FdoaCiSkpIKXB4XFwcAiIyMRLNmzQocJygoKN/1/f39kZWVBXt7e6xfvz7fdVetWgUHBwdkZ2fLjSMWi7F+/Xp07twZjRs3RosWLeDl5YW9e/fKjP3TTz/JbPPZs2cIDg6Gk5MTrK2t0a5dO8yZMwdv3ryR6efj4wORSIRDhw7JtIeFhcHFxaVYcRAREREREZUW3tNdTsTGxkp/Pnz4MFasWIGYmBhpm6amprQQDQsLg6Wlpcz6enp6RR7L2dkZISEhMm1qampQU1ODh4cHIiIiMHToUJnlEokE+/btQ/fu3aGqqiq3zZUrV2LPnj2YOnUqrK2t8f79e9y6dQtpaWkFxvHkyRP8+OOPMDMzw5IlS1C7dm3cu3cPCxcuxNmzZ7Fnzx6Z/apcuTKWLVuGTp065RtDSeMgIiIiIiIqKRbd5YShoaH0Zx0dHQgEApk2ANKiW09PT25ZcaipqRW4fu/evbF161ZcuXJF5kz2pUuX8OTJE/Tu3Tvf9U6dOoX+/fvDzc1N2la/fv1C45g5cyZUVVWxadMmqKurAwBq1aqFhg0bomPHjli6dClmzpwp7e/u7o5Tp07ht99+g7e3d6nFQUREREREVFK8vJyKRSQSwcbGBhERETLtkZGRsLOzQ926dfNdz8DAABcuXMDr16+LNE5qaipiY2PRv39/acGdx9DQEN26dcORI0cgkUik7dra2hgxYgRWr16NDx8+lEocRERERERE34JFdwXUt29f2NnZybyK4/Tp03Lrr127Vrq8d+/eiImJwfv37wEA6enpOHr0KHr16lXgNoODg/H69Ws4OjqiW7dumDZtGs6cOVNg/0ePHkEikRRYxNetWxdv376VK5779++PypUrY/PmzaUSBxERERER0bfg5eUV0NKlSwssVovC3t4eM2bMkGmrUqWK9OeuXbsiJCQER44cQe/evXHkyBEIBAJ06dKlwG1aWlri4MGDuH37Nq5du4YrV65gxIgR6NGjB+bOnVvgep+fyS4KNTU1BAYGYvbs2ejXr1+pxUFERERERFQSPNNdAdWsWROmpqYyr+LQ0NCQW//zCcu0tbXh6uqKyMhIAEBERATc3NygpaVV6HZVVFTQuHFj+Pn5YeXKlQgJCUF4eDiePHki19fExAQCgQD379/Pd1v3799HlSpVoK+vL7fMw8MDtWrVwpo1a745DiIiIiIiom/BoptKpHfv3rh69Sp+//13XL9+vcAJ1AqTN8N6RkaG3LKqVavC0dERO3fuxMePH2WWpaSkIDo6Gm5ubhAIBHLrqqio4Oeff8auXbuQnJz8TXEQERERERF9C15eXgGlpqYiJSVFpk1XVxeVK1cG8OlZ1fHx8TLL1dTUpJekZ2Vlya0vFAplzio3b94cpqammDRpEiwsLNC0adNCYwoMDETTpk1hZ2cHAwMDJCUlYcmSJTAzM4OFhUW+60ydOhV9+/aFv78/xo4dK/PIMCMjI4wbN67A8dq2bYsmTZpgz549MDAw+KY4iIiIiIiISopFdwXk5+cn17ZkyRK4u7sDAD58+ABPT0+Z5SYmJjh+/DgA4OzZs3BycpJZbm5uLvNccIFAgF69emHJkiVyz+zOj5OTEw4ePIh169bh3bt3MDQ0RMuWLTFq1ChUqpT/x9DMzAwREREIDQ3F2LFj8fbtWxgYGKBDhw4YOXLkV589PmHCBPTt2/eb4yAiIiIiIiopgaS4M1URfefEYjHi4uKw4Xgc/vfwqaLDISIiIqIKzqpODfw6ZUiJ18/7+9XW1hZCobAUI/u+FfW48p5uIiIiIiIiojLCopuIiIiIiIiojLDoJiIiIiIiIiojnDmKqIRMjKohOydX0WEQERERUQVnWtPg651IabHoJiqhSb7dOBEFEREREf0rxLm5EKrwQuXyiFkjKiGxWKzoEL5rYrEYd+7cYR4UjHlQDsyD8mAulAPzoByYh9LFgrv8YuaIqNzKyMhQdAgE5kFZMA/Kg7lQDsyDcmAeiFh0ExEREREREZUZFt1EVG5paGgoOgQC86AsmAflwVwoB+ZBOTAPRJxIjajEOImaYgmFQjRs2FDRYXz3mAflwDwoD+ZCOTAPyoF5+DacOK3iYNFNVELzdkUj4VmKosMgIiIiogrGzMgAM317KDoMKiUsuolK6PHLf/B30nNFh0FEREREREqM1ysQERERERERlREW3URERERERERlhEV3BRIUFASRSCR92dvbw9/fH3fv3pXrO23aNDRo0ABHjhzJd1uPHj1CcHAwWrduDWtra7i4uGD8+PG4deuWtI9IJMKJEyek77OzszF+/Hg4Ozvj77//lvbJe/3www/o27cvzp8/LzPW8+fPYW1tja5du+Ybi0QiwZ49e+Dl5QU7Ozs0a9YMPXv2RFhYmPTZj6GhoejevbvMeleuXEGzZs0wd+5cSCQSZGRkYPHixejQoQNsbGzQsmVLDBgwQGYfiIiIiIiIShOL7grG2dkZsbGxiI2NRVhYGCpVqoThw4fL9MnIyMChQ4cQEBCAiIgIuW3cunULPXv2xMOHDzFr1iwcPnwYq1atgoWFBRYsWJDvuBkZGRgxYgRu3bqFnTt3wsrKSrosJCQEsbGx2LVrF6pWrYrhw4fjyZMn0uWRkZHo3Lkz0tPTcePGDblt//LLL5g3bx7at2+PLVu2ICoqCj/99BNOnjyJc+fO5RvP6dOn4e/vDz8/P0yePBkCgQDTp0/HsWPHMHXqVBw5cgQbN26Eq6srUlNTi3JoiYiIiIiIio0TqVUwampqMDQ0BAAYGhpiyJAh8Pb2xuvXr6Gvrw8AiImJgaWlJYYOHQpnZ2c8e/YMNWvWBPDprHJwcDBMTU2xc+dOqHz2mIIGDRrA19dXbsy0tDQMHToUHz58wM6dO6Xj59HV1YWhoSEMDQ0xY8YMtG7dGufOnUPfvn0hkUgQGRmJ6dOno0aNGggPD0eTJk2k6x4+fBjR0dFYtWoVOnToIG2vXbs22rdvj/T0dLl4oqOjERwcjKCgIAwYMEDafurUKUyePBlt2rSRbsPa2rrYx5iIiIiIiKioeKa7Anv//j0OHDgAU1NT6OnpSdvDw8Ph4eEBHR0dtG7dGpGRkdJl8fHxuHfvHgYPHixTcOfR1dWVeZ+SkiItbLdv3y5XcH9JXV0dwKdL0QHgwoUL+PjxIxwcHODh4YFDhw7hw4cP0v7R0dEwNzeXKbjzCAQC6OjoyLTt2LEDwcHBmDdvnkzBDQAGBgY4c+ZMvoU6ERERERFRWWDRXcGcPn0adnZ2sLOzQ9OmTXHq1CksXbpUWkAnJibixo0bcHNzAwB4eHggMjISEolEuhwALCwsijTe3LlzkZ2djc2bN8sV5F/KyMjAsmXLIBQK0bx5cwCfvgDo0qULhEIhrKysUKdOHcTExEjXefToEczNzYsUy/379zFr1izMmDEDHh4ecstnz56N69evo2XLlujVqxfmzZuHq1evFmnbREREREREJcGiu4Kxt7dHVFQUoqKisHfvXjg7O2PIkCFITk4GAERERMDJyUl6qXnr1q2Rnp6OCxculGi8du3aITExEXv27Cmwz/jx46VfAhw7dgxz585F/fr1kZaWhuPHj8sUyB4eHggPD5e+z/syoChq1KiBRo0a4ddff8XLly/lljdv3hwnTpxAWFgYXF1dkZCQAG9vb6xatarIYxARERERERUH7+muYDQ0NGBqaip936hRIzRr1gy//fYbAgMDsW/fPrx69QoNGzaU9hGLxQgPD0erVq1gZmYGAHjw4IFMn4J0794dLi4u+M9//gOJRIJBgwbJ9QkODoaDgwN0dHSkxT7w6dLxzMxM9OnTR9omkUiQm5uLhw8fwtzcHGZmZnjw4EGR9l1LSwubN2/GoEGD4Ovri61bt6J69eoyfVRVVdGsWTM0a9YMQ4cOxerVq7F69WoMGTIEampqRRqHiIiIiIioqFh0V3ACgQACgQCZmZk4c+YM3r9/j6ioKJn7te/du4fg4GCkpaWhQYMGsLS0xKZNm9ClSxe5+7rT0tLkLiPv0aMHBAIB/vOf/yA3Nxf+/v4yyw0NDWW+CMgTERGBwYMHo0ePHjLtM2fOREREBCZMmIBu3bph3LhxOHHihNx93RKJBOnp6TL3dVepUgVhYWEYPHgwfHx8sHXrVhgZGRV4fCwtLZGTk4OsrCwW3UREREREVOp4eXkFk5WVhZSUFKSkpOD+/fuYPXs2Pnz4gHbt2iE8PBxt27ZF/fr1YWVlJX25ublBV1cX0dHREAgECAkJQWJiIvr3748zZ87gyZMnuHv3LtasWYOffvop33E9PT0xf/58LF68GBs3bvxqnPHx8fjf//6H3r17y8RiZWUFd3d3REVFIScnB25ubujSpQt+/vlnrF27Frdu3UJycjJ+//13+Pn54eLFi3Lb1tXVxebNm1GlShX4+vrixYsXAAAfHx/s3r0bt2/fRlJSEs6cOYMlS5bA3t4e2tra33bgiYiIiIiI8sEz3RXM2bNn4eTkBODT5dYWFhZYvnw56tatizNnzmDRokVy66ioqKBDhw4IDw+Ht7c3GjdujIiICKxduxZTpkzBmzdvUL16ddjZ2eE///lPgWN7eHhARUUFEydORG5uLoYOHVpg3/DwcFhaWqJu3bpyyzp27IjZs2fjzJkzaN++PRYvXow9e/ZIYxIKhTA1NYWnp6d0X7+ko6ODTZs2ISAgAD4+Pti2bRucnJwQFRWFpUuXIiMjA9WrV0fbtm0xcuTIrx1WIiIiIiKiEhFIijNTFRFBLBYjLi4Oa8/E4fajp4oOh4iIiIgqGKvaNbDllyGltr28v19tbW0hFApLbbvfu6IeV15eTkRERERERFRGWHQTERERERERlREW3URERERERERlhBOpEZWQSfVqyBLnKjoMIiIiIqpgzIwMFB0ClSIW3UQl9J9+3TgRBRERERGVCXFuLoQqvDC5ImAWiUpILBYrOoTvmlgsxp07d5gHBWMelAPzoDyYC+XAPCgH5uHbsOCuOJhJIiq3MjIyFB0CgXlQFsyD8mAulAPzoByYByIW3URERERERERlhkU3EZVbGhoaig6BwDwoC+ZBeTAXyoF5UA7MAxEnUiMqMU6iplhCoRANGzZUdBjfPeZBOTAPyoO5UA7Mg3L4HvPAyc8oPyy6iUpoTvgB3HueougwiIiIiEgJmFc3wOx+PRUdBikhFt1EJfQo5R/89fS5osMgIiIiIiIlxmsfiIiIiIiIiMoIi24iIiIiIiKiMsKim8pcUFAQRCIRRCIRrK2t0bFjR6xcuRI5OTnSPv7+/mjQoAFu3rxZ4Prr16+XaT9x4gREIpHcGPm9XFxcAABPnjzBzz//DCcnJ9jY2KB169YYMWIE7t+/X4ZHgIiIiIiIvle8p5v+Fc7OzggJCUFWVhbOnDmDWbNmQVVVFcOGDcPTp09x7do1eHt7IyIiAo0bN5Zbv3LlytiwYQN+/PFHVKlSRW755MmT8fPPP0vfOzk5ISQkBM7OzgA+zZ6ZnZ2NwYMHw9zcHCtXroShoSGeP3+OP/74A+/evSu7nSciIiIiou8Wz3TTv0JNTQ2GhoYwNjZG//794eDggFOnTgEAIiMj0a5dO/Tr1w+HDh3Cx48f5dZ3cHCAgYEB1q1bl+/2dXR0YGhoKH0BgK6urvS9vr4+EhIS8PjxY0yfPh22trYwNjbGDz/8gHHjxsHW1rbM9p2IiIiIiL5fLLpJISpXrozs7GxIJBJERkbCw8MDdevWhYmJCWJiYuT6q6ioYPz48di+fTuePy/ZjOH6+vpQUVHB0aNHIRaLv3UXiIiIiIiIvopFN/2rJBIJ/vzzT8TGxsLe3h5//vknMjIy4OTkBADw8PBAREREvut27NgRDRo0wIoVK0o0tpGREaZMmYIVK1agefPm8PX1xapVq/DkyZMS7w8REREREVFhWHTTv+L06dOws7ODjY0NhgwZgi5dumD06NGIiIhAly5dUKnSp+kFunbtimvXruHx48f5bmfChAmIiooq8cRn3t7eiI2NxaJFi2BnZ4eYmBi4u7vj3LlzJd43IiIiIiKignAiNfpX2NvbY8aMGVBVVUX16tVRqVIlpKam4vjx48jJycGuXbukfcViMSIiIjBu3Di57TRv3hxOTk5YvHgxevbsWaJYtLW14eLiAhcXF4wdOxb+/v5Ys2YNHB0dS7x/RERERERE+WHRTf8KDQ0NmJqayrRFR0ejRo0aWLVqlUz7uXPnsGnTJgQGBkIoFMpt6+eff4anpyfMzc2/OS6BQAALCwtcu3btm7dFRERERET0JRbdpDDh4eFwdXWFlZWVTHvNmjWxePFinD17Fm3btpVbTyQSoVu3bti2bVuxxouPj8eKFSvQvXt3WFpaQlVVFZcuXUJERAQCAgK+ZVeIiIiIiIjyxaKbFOL27du4e/cuZs+eLbdMR0cHrVq1Qnh4eL5FNwAEBgbi8OHDxRrTyMgIxsbGWLVqFZKSkiAQCGBsbIzRo0fDz8+vBHtBRERERERUOIFEIpEoOgii8kQsFiMuLg6rzl/HrSdPFR0OERERESkBUa0a2D5mqKLDyFfe36+2trb53r5JJVPU48rZy4mIiIiIiIjKCItuIiIiIiIiojLCopuIiIiIiIiojJRoIrUPHz5AU1OztGMhKldMDashS5yr6DCIiIiISAmYVzdQdAikpEpUdDs6OqJz587o1asXmjVrVtoxEZULU3p7cCIKIiIiIpIS5+ZCqMKLiUlWiT4RCxcuxNu3b+Hn5wdXV1esX78eL168KO3YiJSaWCxWdAjfNbFYjDt37jAPCsY8KAfmQXkwF8qBeVAO32MeWHBTfkp0prtDhw7o0KEDXr9+jf379yMyMhLLly+Hk5MTevXqBRcXF1SqxEeAE1HZysjIUHQIBOZBWTAPyoO5UA7Mg3JgHoi+cSI1fX19DBo0CNHR0QgKCsKff/6JwMBAODs7Y/ny5fwlIyIiIiIiou/aN52OfvXqFfbt24d9+/bh6dOncHV1Re/evfH8+XNs3LgRN27cwKZNm0orViIiGRoaGooOgcA8KAvmQXkwF8qBeVAOzANRCYvuY8eOITIyErGxsahbty769+8PDw8P6OrqSvs0bdoUXbp0KbVAiZQNJ1FTLKFQiIYNGyo6jO8e86AcmAflwVwoB+ZBOXxPeeAEalSYEhXdwcHBcHd3x86dO9G4ceN8+1SvXh3Dhw//puCIlNnMqAO4l/JS0WEQERERkQKZGxhiXu+eig6DlFixi+6cnByMHz8erq6uMDAo+Fl06urqGDVq1DcFR6TMHv3zCnefPVd0GEREREREpMSKfQ1EpUqV8N///heZmZllEQ8RERERERFRhVGiGw8aN26M+Pj40o6FiIiIiIiIqEIp0T3d/fr1w/z58/H8+XM0atRIblbC+vXrl0pwREREREREROVZic50jx8/HklJSZgzZw769esHT09P9OjRQ/ovASkpKZg9ezbat28Pa2trtGnTBsOHD8f58+cBAC4uLhCJRHKv9evXAwCSkpIgEomkVxR8+f5LkZGRaNasmcx7kUgEf39/mX5paWkQiUS4ePGiTPuFCxcwbNgwtGzZEjY2NujQoQPGjh2Ly5cvF2l/L168CJFIhLS0tHyXh4aGonv37jJt6enpWLZsGdzd3dG4cWPY29ujV69e2LBhA96+fSvt5+Pjg7lz5xa6zz4+Pvkez7yXj48PAODu3bsYPnw4WrVqBRsbG7i4uGDs2LH4559/irSfRERERERExVGiM90nT54s7TgqlKSkJPTr1w+6urqYOHEirKyskJOTg9jYWMycORMxMTEAgMDAQPTp00dmXS0trVKLo1KlSjh//jwuXLiAli1bFthvx44dmD17Nrp3746lS5fCxMQE7969w8WLFxESEoLIyMhSiylPamoq+vfvj/T0dIwZMwaNGjWCjo4OHj58iMjISBw8eBDe3t5F3l5oaCiys7MBAM+ePYOXlxfCwsJgaWkJAFBVVcXr168xcOBAtGvXDr/++it0dHSQnJyMU6dO4cOHD6hWrVqp7ycREREREX3fSlR0Gxsbl3YcFcrMmTMhEAiwd+9eaGpqStvr1auHXr16Sd9raWnB0NCwzOLQ0NCAm5sbFi9ejL179+bb5+nTpwgJCcHAgQMRHBwss6x+/frw9fUtk9iWLFmCZ8+eISYmBkZGRtJ2Y2NjODk5QSKRFGt7enp60p/zJvnT09OTOb4nTpxAeno65syZg0qVPn3069SpU+gXEkRERERERN+ixE9wf/z4MWbPng0/Pz/4+flhzpw5ePz4cWnGVi6lpqbi7Nmz8Pb2lim48+jq6v6r8YwaNQp///239Oz6l44dO4bs7GwEBATku1wgEJR6TLm5uThy5Ai6desmU3CX9bgGBgbIycnB8ePHi13UExERERERlUSJiu6zZ8+iS5cuuHnzpvSe2Rs3bsDd3R3nzp0r7RjLlcePH0MikcDCwuKrfRctWgQ7OzuZ15UrV0o1HiMjI/j6+mLp0qXIycmRW/7w4UNoa2vLnBE+evSoTEx//fVXqcb0+vVrpKWlyR2jnj17SsccP368zLJdu3bJHavp06cXa1xbW1sMHz4cEyZMQMuWLREQEICNGzfi1atX37xPRERERERE+SnR5eWLFy+Gn58fJkyYINO+aNEiLFq0CI6OjqUSXHlUnDOo/v7+6Nmzp0xbQWd+v8WQIUOwZ88eREREwM3NTW75l2eVnZycEBUVhRcvXsDHxwe5ubmlHlN+Vq5ciezsbCxatAgfP36UWdatWzcMHz5cpu3YsWNYt25dscYYN24c/Pz8cOHCBdy8eRO7d+/GunXrsH37dohEom/eByIiIiIios+V6Ez3/fv30bt3b7n2Xr16ISEh4ZuDKs9MTU0hEAjw4MGDr/atWrUqTE1NZV7q6uqlHpOuri6GDh2KlStXIiMjQ2aZmZkZ3r17h5SUFGmblpYWTE1NUatWrVKPBQD09fWhq6srd4xq1aoFU1PTfCeT09bWljtWJZ34rGrVqnBzc8OkSZNw+PBhVK9eHZs2bSrRtoiIiIiIiApToqJbX18/30dXxcfHf/czQOvp6cHJyQk7duzAhw8f5JYX9Eitsubj4wMVFRVs3bpVpt3V1RWqqqrYsGHDvxaLiooK3NzcEB0djRcvXvxr4+ZHTU0NderUkfsygoiIiIiIqDSU6PJyLy8vTJs2DU+ePEHTpk0BANeuXcOGDRvg5+dXmvGVS9OnT0e/fv3g5eWFwMBAiEQiiMVinDt3Drt27cKRI0cAAO/fv5c5wwx8mnFcW1u7wG0/fPhQri3vsViFqVy5MkaPHo1Zs2bJtNeqVQuTJk3C3Llz8fbtW/To0QO1a9fG27dvceDAAQCfiuSi+vvvv2XOVAsEAtSvX1+u37hx43Dx4kXpMbK2toampib++usvXL9+HVZWVkUes6h+//13HDp0CO7u7jAzM4NEIsHvv/+OP/74A/PmzSv18YiIiIiIiEpUdI8cORLa2trYtGkTlixZAgCoXr06Ro0aVWaPmCpP6tSpg8jISKxduxYLFizAy5cvoa+vj0aNGmHGjBnSfitWrMCKFStk1v3xxx/lCuPPjRs3Tq7tzJkzRYqrR48e2Lx5s9wtAD4+Pqhbty42b96MMWPGID09HXp6erC1tcXGjRuLda/zl8/WFgqFuHPnjly/qlWrIjw8HBs2bMCvv/6KpKQkqKiowNTUFF26dMHAgQOLPGZRWVpaQkNDA/Pnz8fz58+hpqYGU1NTzJkzB56enqU+HhERERERkUDyjc9OSk9PB4BCz84SVSRisRhxcXFYcfUabiY/VXQ4RERERKRA9WvWwK7hwxQdRqHy/n61tbWFUChUdDgVRlGPa4nOdH+OxTYRERERERFR/kpUdHt6eso9Zgr4dP9u3iW7PXr0QMuWLb85QFIOAQEBuHr1ar7Lhg0bJvc4LyIiIiIiIiph0e3s7Ixdu3bBysoKjRs3BgDcunULf/31F3r06IH79+9j0KBBCA0NRYcOHUo1YFKMuXPnyj07O0+VKlX+5WiUg2k1A2T9S88wJyIiIiLlZG5gqOgQSMmVqOh+8+YNBg0ahJEjR8q0r169Gk+fPsWmTZuwYsUKrF69mkV3BWFkZKToEJTOdE8P3hNDRERERBDn5kJYjCf+0PelRJ+MI0eOoGvXrnLt7u7u0sdhubu75/t4K6KKQiwWKzqE75pYLMadO3eYBwVjHpQD86A8mAvlwDwoh+8pDyy4qTAl+nRUrlwZ169fl2u/fv06KleuDACQSCTSn4mIykJGRoaiQyAwD8qCeVAezIVyYB6UA/NAVMLLywcMGIDp06fj9u3bsLGxAfDpnu7w8HAMG/ZpuvzY2Fg0aNCg9CIlIiIiIiIiKmdKVHT/9NNPqF27Nnbs2IEDBw4AAMzNzTF79mx069YNANC3b1/069ev9CIlIvqChoaGokMgMA/KgnlQHsyFcmAelAPzQAQIJBKJRNFBEJUnYrEYcXFxsLW15URqRERERBVMRZwUjX+/lo2iHtcSnekGgLS0NBw9ehRPnjzB4MGDoaenh//9738wMDDgTNf0XZhxeD/+fpWi6DCIiIiIqJRYVDNAiEcvRYdBFUyJiu67d+9i0KBB0NHRQXJyMry8vKCnp4djx47h2bNn+O9//1vacRIpncTX/+Dui2eKDoOIiIiIiJRYia6bmD9/Pnr06IFjx45BTU1N2t6mTRtcuXKl1IIjIiIiIiIiKs9KVHTfunULffv2lWs3MjJCSgovtyUiIiIiIiICSlh0q6mpIT09Xa49MTER+vr63xwUERERERERUUVQoqLbxcUFq1atQnZ2trTt6dOnWLRoETp16lRqwVH5FhQUBJFIBJFIhEaNGsHBwQGDBg1CeHg4cnNzZfpeu3YNQ4YMQfPmzWFjY4Nu3bph8+bNEIvFMv1EIhFOnDiR73gXL16ESCRCWlpavsszMjKwePFidOjQATY2NmjZsiUGDBhQ4PaIiIiIiIi+VYkmUgsKCkJgYCAcHByQmZkJHx8fvHr1Cra2thg3blxpx0jlmLOzM0JCQpCbm4tXr17h7NmzmDt3Lo4ePYo1a9agUqVKOH78OMaOHYuePXti69at0NHRwfnz57Fw4UJcv34dy5cvh0Ag+OZYpk+fjhs3bmDq1KmoW7cuUlNTcf36daSmpn77jhIREREREeWjREW3jo4ONm/ejKtXr+Lu3bv48OGD9Ewm0efU1NRgaGgI4NM9/40aNUKTJk3g5+eHffv2wd3dHVOmTIGLiwtmz54tXc/LywvVqlXDiBEjcOTIEXTp0uWbYzl16hQmT56MNm3aAABq164Na2vrb94uERERERFRQUp0eXlUVBSysrLwww8/wNvbG0OGDIGDgwOysrIQFRVVyiFSRdOqVSvUr18fx44dw7lz55CamorBgwfL9XNxcYGZmRkOHjxYKuMaGBjgzJkz+c5HQEREREREVBZKVHQHBwfj3bt3cu3v379HcHDwNwdFFZ+FhQWSk5Px8OFDAEDdunUL7JeYmFgqY86ePRvXr19Hy5Yt0atXL8ybNw9Xr14tlW0TERERERHlp0RFt0Qiyfce2xcvXkBHR+ebg6KK78vPkEQiKfMxmzdvjhMnTiAsLAyurq5ISEiAt7c3Vq1aVeZjExERERHR96lY93R7enpCIBBAIBBg4MCBqFTp/1YXi8VISkqCs7NzqQdJFc/9+/dRu3ZtmJubS983bdpUrt+DBw8KPAteEqqqqmjWrBmaNWuGoUOHYvXq1Vi9ejWGDBkCNTW1UhuHiIiIiIgIKGbR3aFDBwBAfHw8nJycoKWlJV2mqqoKY2NjPjKMvur8+fP4+++/4efnB0dHR+jp6WHz5s1yRffJkyeRmJiIMWPGlFkslpaWyMnJQVZWFotuIiIiIiIqdcUqukeNGgUAMDY2RpcuXVC5cuUyCYoqjqysLKSkpMg8MmzdunVo164dPD09IRQKMXPmTIwfPx5Tp06Ft7c3tLW1pY8Mc3V1hZubm8w2k5KSEB8fL9Nmamoq/fnvv/+W+UJIIBCgfv368PHxgbu7O6ytraGnp4f79+9jyZIlsLe3h7a2dtkeCCIiIiIi+i6V6JFhPXr0KO04qII6e/YsnJycUKlSJejq6qJ+/fqYMmUKevToARWVT1MKdO7cGQYGBlizZg28vb2RmZkJMzMzDB8+HAMHDpSbPyAkJERunB07dkh/9vb2llkmFApx584dODk5ISoqCkuXLkVGRgaqV6+Otm3bYuTIkWWw50RERERERIBAUoIZrMRiMcLCwnDkyBE8e/YM2dnZMssvXbpUagESKRuxWIy4uDgsu30NN58lKzocIiIiIiol9Y1qYs+gYYoOo9Tl/f1qa2sLoVCo6HAqjKIe1xLNXr5y5Ups3rwZXbp0wbt37+Dn54eOHTtCIBBIL0EnIiIiIiIi+t6V6PLy6OhozJkzB23btkVoaCi6du0KExMTiEQi3Lhxo7RjJCIiIiIiIiqXSlR0v3r1ClZWVgAALS0tvHv3DgDQrl07LF++vPSiI1JiZvrVkJWbq+gwiIiIiKiUWFQzUHQIVAGVqOg2MjJCSkoKatWqhTp16uDcuXNo1KgRbt26xccu0XdjRpfuvCeGiIiIqIIR5+ZCqFKiu3CJ8lWiT1PHjh1x/vx5AICPjw+WL1+OTp06YeLEiejVq1epBkikrMRisaJD+K6JxWLcuXOHeVAw5kE5MA/Kg7lQDsyDciiveWDBTaWtRGe6J0yYIP25S5cuqFWrFq5fvw5TU1O4uLiUWnBERIXJyMhQdAgE5kFZMA/Kg7lQDsyDcmAeiEp4pnvdunUIDw+Xvre1tcWgQYPw+vVrrF+/vtSCIyIiIiIiIirPSlR079mzBxYWFnLt9erVw+7du785KCKiotDQ0FB0CATmQVkwD8qDuVAOzINyYB6ISnh5eUpKCgwNDeXa9fX1kZKS8s1BEZUHnERNsYRCIRo2bKjoML57zINyYB6UB3OhHJgH5aDMeeBkafRvKlHRXbNmTVy7dg116tSRab969SqqV69eKoERKbuZJ6Pw9z/8komIiIioPLHQN8A8196KDoO+IyUqur28vDBv3jzk5OSgZcuWAIDz589j4cKFGDx4cKkGSKSsEt/8g7spzxQdBhERERERKbESFd0BAQFITU3FzJkzkZ2dDQCoXLkyAgICMGzYsFINkIiIiIiIiKi8KlHRLRAI8Msvv+Cnn37C/fv3oa6uDjMzM6ipqZV2fERERERERETlVomK7jxaWlpo3LhxacVCREREREREVKFwyr5yKigoCCKRSO656CdOnIBIJJK+F4vFCAsLQ7du3WBjY4PmzZsjICAAV69elfbx8fGBSCQq8OXj4wMAcHFxyXd5XgxJSUky7dbW1ujYsSNWr14NiUQiE+e9e/cwZswYtGzZEtbW1nB1dcXy5cuRkZEht6/Xrl3DkCFD0Lx5c9jY2KBbt27YvHkzxGKxTD+RSIQTJ05I32dnZ2P8+PFwdnbG33//DQC4dOkSfH190aJFCzRp0gSdOnXCpEmTkJWVVZI0EBERERERFeqbznSTYlWuXBkbNmzAjz/+iCpVqsgtl0gkGDduHM6fP4+JEyeiZcuWeP/+PXbs2AFfX18sX74cHTp0QGhoqPTe/GfPnsHLywthYWGwtLQEAKiqqkq3GRgYiD59+siMo6WlJfM+b92srCxcvXoVU6ZMgaGhIby8vAAAcXFxGDRoEFq1aoX169ejWrVquHnzJhYsWIDz589j69at0lsVjh8/jrFjx6Jnz57YunUrdHR0pJP2Xb9+HcuXL4dAIJDb94yMDIwePRqPHj3Czp07UadOHSQkJCAgIAADBgzAlClToK6ujsTERBw7dgy5ubnfkAkiIiIiIqL8seguxxwcHPDo0SOsW7cOEydOlFt+5MgRHD16FGvWrIGLi4u0ffbs2UhNTcXkyZPh4OAAPT096bLMzEwAgJ6eXr7PYtfS0sq3/XOfr2tsbIzIyEjcuXMHwKcvAiZPngwLCwusXLkSKv//+YjGxsYwNzeHp6cnwsLCMHToUHz48AFTpkyBi4sLZs+eLd2+l5cXqlWrhhEjRuDIkSPo0qWLzPhpaWnS9Xfu3CmNJTY2FgYGBjLHysTEBK1bty50f4iIiIiIiEqKl5eXYyoqKhg/fjy2b9+O58+fyy2Pjo6GmZmZTMGdZ9CgQUhNTcWff/5ZpjHeunUL//vf/9CkSRMAQHx8PBISEjBo0CBpwZ2nfv36cHBwwKFDhwAA586dQ2pqar6PoXNxcYGZmRkOHjwo056SkoIBAwYAALZv3y7zBYGhoSFSUlJw+fLlUt1HIiIiIiKigvBMdznXsWNHNGjQACtWrMC8efNkliUmJqJu3br5rpfX/vDhw2KNt2jRIixfvlymbcOGDWjWrJn0fd++faGiooLs7GxkZ2fjxx9/hKenpzSmz8f/koWFhfR+87zYCuubt708c+fORZ06dbB582ZoaGjILOvcuTNiY2MxYMAAGBoaokmTJmjVqhU8PT2hra1dpP0nIiIiIiIqDhbdFcCECRMwcOBA+Pv7yy37cgKzb+Xv74+ePXvKtBkZGcm8X7p0KerWrYucnBz8/fffmDNnDnR1dTFhwoQSxVWcvu3atcOJEyewZ88e+Pn5ySwTCoUICQnB2LFjcf78edy8eRNr167Fhg0bsHfvXlSvXr3I4xARERERERUFLy+vAJo3bw4nJycsXrxYpt3MzAwPHjzId5379+8DAMzNzYs1VtWqVWFqairzUldXl+lTs2ZNmJqaom7dunBzc8PAgQOxefNmZGZmwszMTGb8Lz148EDaJy+2ovTN0717d8ybNw8LFizA5s2b813PyMgInp6emDZtGg4dOoTMzEzs3r27iEeAiIiIiIio6Fh0VxA///wzfv/9d1y/fl3a5u7ujsTERJw6dUqu/+bNm6GnpwcHB4cyj01FRQU5OTnIzs5GgwYNYGFhgbCwMLkZw+/evYs///wT7u7uAABHR0fo6enlWzyfPHkSiYmJ6Nq1q9yyHj16ICQkBAsXLsSvv/5aaGxVqlSBoaFhvo8qIyIiIiIi+la8vLyCEIlE6NatG7Zt2yZtc3d3R0xMDIKCgvDLL7+gVatWSE9Px86dO3Hq1CksX74cmpqaxRrn/fv3SElJkWnT0NCQuSc6NTUVKSkpEIvF+Ouvv7B161bY29tL+8ydOxeDBw/G6NGjMWzYMBgYGODGjRtYsGABbG1tpZeFa2pqYubMmRg/fjymTp0Kb29vaGtrSx8Z5urqCjc3t3zj9PT0hIqKCoKCgiCRSBAQEIDdu3cjPj4eHTt2hImJCTIzMxEVFYWEhARMnTq1WMeBiIiIiIioKFh0VyCBgYE4fPiw9L1AIMCyZcuwZcsWbNmyBTNnzkTlypVha2uLrVu34ocffij2GCtWrMCKFStk2n788UfMmjVL+j6vaBYKhTA0NESbNm0wbtw46fKmTZtiz549WLVqFYYMGYL379+jZs2a8PT0xLBhw6TP6AY+TX5mYGCANWvWwNvbW3qJ+vDhwzFw4MB8n9Gdx8PDAyoqKpg4cSJyc3Ph5OSEq1evYvr06Xj58iU0NTVRr149rFq1Ci1atCj2sSAiIiIiIvoagaS0Z9oiquDEYjHi4uKwPOEqbr5IVnQ4RERERFQM9Q1rYne/4YoO41+V9/erra0thEKhosOpMIp6XHlPNxEREREREVEZYdFNREREREREVEZYdBMRERERERGVEU6kRlRCZlWrIeuLx54RERERkXKz0DdQdAj0nWHRTVRC09t7ciIKIiIionJInJsLoQov+qV/Bz9pRCUkFosVHcJ3TSwW486dO8yDgjEPyoF5UB7MhXJgHpSDMueBBTf9m/hpI6JyKyMjQ9EhEJgHZcE8KA/mQjkwD8qBeSBi0U1ERERERERUZlh0E1G5paGhoegQCMyDsmAelAdzoRyYB+XAPBBxIjWiEuMkaoolFArRsGFDRYfx3WMelAPzoDyYC+XAPCgHZc4DJ1KjfxOLbqISmnd2HxJSXyg6DCIiIiIqBjO96pjZ1kvRYdB3hEU3UQk9fvsKf/3zTNFhEBERERGREuM1FURERERERERlhEU3ERERERERURn5ri8vDwoKwr59++TanZyc8Ouvv8LFxQW+vr7w8/OT65OUlIT27dvnu909e/bA1tYWAJCVlYUtW7YgOjoajx49grq6OszNzeHl5QUPDw9YW1sXGuOoUaPQo0cPmbGqVKkCKysrjB07Fs2aNZO2h4aG4sSJE9i/f7+0LT09HRs2bMDRo0eRnJwMXV1d1KtXD/3790fHjh0hEAgKHR8AHj16hLVr1+L8+fN49eoVqlatCgsLC/Tq1QtdunRBpUqVpMcjKioKDRo0kFnfx8cH9evXx+TJkwFAelwbNGgAX1/fQsfeunUr7O3t8fz5c3To0AFmZmY4ePCgXD+RSCT9WUtLC+bm5hgxYgQ6dOggbReLxfj1118RGRmJp0+fQl1dHaampujTpw+8vHhfDxERERERlb7vuugGAGdnZ4SEhMi0qampFXn9sLAwWFpayrTp6ekB+FRw+/v746+//sKYMWPQtGlTaGtrIy4uDps2bULDhg0RGxsrXe/w4cNYsWIFYmJipG2ampp48+aNzFhv3rzB2rVrMWzYMBw9ehQGBgb5xpaWlob+/fvj3bt3GDt2LGxsbCAUCnH58mUsXLgQLVu2hK6ubqH7d/PmTfj5+aFevXqYNm0aLCwsAAC3b9/Gjh07YGVlhfr16xf5eH3Ozs5OZv/nzp2L9PR0mXxUqVIFABAZGYnOnTvjypUruHHjBpo0aSK3vZCQEDg7OyM9PR07d+7EmDFjEBkZKS3IV65ciT179mDq1KmwtrbG+/fvcevWLaSlpZUofiIiIiIioq/57otuNTU1GBoalnh9PT29AtffsmULrly5goiICJnHJdSpUwedO3dGdnY2NDU1pe06OjoQCARy28sruvPGMjQ0xLBhw3Do0CHcuHGjwDPuS5YsQXJyMmJiYmBkZCRtNzc3h7u7OypXrlzovkkkEgQFBcHMzAy7du2CymePVTAzM0PXrl0hkUgK3UZhvjz26urqyMrKktt/iUSCyMhITJ8+HTVq1EB4eHi+Rbeurq70+IwZMwZbt27FxYsXpUX3qVOn0L9/f7i5uUnXKekXBkREREREREXBe7rLUHR0NBwcHPJ9PqGqqqpMwV0cHz9+RFRUlHQ7+cnNzcXhw4fRrVs3mYI7j5aWFipVKvw7l/j4eNy/fx/+/v4yBffninJ5+re6cOECPn78CAcHB3h4eODQoUP48OFDgf1zcnIQHh4OQPb4GBgY4MKFC3j9+nWZx0xERERERATwTDdOnz4NOzs7mbZhw4Zh+PDhRVq/b9++cgXp9evXAXy6F7pFixalE+hnY2VkZEAikaBRo0Zo1apVvn3fvHmDt2/fSi8HL4nExEQAn86M5/nnn39k7pOeMGECvL29SzxGUYSHh6NLly4QCoWwsrJCnTp1EBMTg549e8r0Gz9+PIRCIT5+/Ijc3FwYGxvLnNUODg5GYGAgHB0dYWlpCTs7O7Rv3x5t2rQp0/iJiIiIiOj79d0X3fb29pgxY4ZMW959xEWxdOlS1K1bN99l33LpdUFjWVhY4N69e1i4cCHmz59f4Jnu0h47j56envQsu4+PD7Kzs8tknDxpaWk4fvw4du7cKW3z8PBAeHi4XNEdHBwMBwcHPHnyBCEhIZgyZYr0/noAsLS0xMGDB3H79m1cu3YNV65cwYgRI9CjRw/MnTu3TPeDiIiIiIi+T9990a2hoQFTU9MSr1+zZs0C1zczM8PDhw9LvO38xjIzM4OZmRlycnIwatQoHDx4MN+J3/T19aGrq4sHDx6UeLy8/Xr48KH0EnmhUCht//zydG1tbQDAu3fv5LaTlpYGHR2dEsUQHR2NzMxM9OnTR9omkUiQm5uLhw8fypyFNzQ0hKmpKUxN/197dx5XU/7/Afx1u0qbihZL0iJdkhZlq+y7rGPJF5lGzDDGNgwZ+zYYM/Yta1kGqWSELONr+1oSwihLiGLGJFLReju/Pzw6v7kqKl33xuv5eNzHuJ/zOZ/zPud9b9O7c87nWGLhwoUYMWIEDh06BGNjY7GPhoYGHB0d4ejoCF9fX+zfvx+TJ0/GyJEjYWFhUaYYiYiIiIiIisN7upWoe/fuOHfuHGJjYwsty83Nfed9ye/TpUsXSKVShTPA/6ahoYFu3brhwIEDePr0aaHlr169Ql5e3ju3YW9vDxsbG2zevBn5+fnv7GtkZISqVavi5s2bCu0ZGRl49OgRrKys3r1DxQgNDcWwYcMQHh4uvvbv3w83NzeEhoYWu56joyMcHBywbt26d45fMPN8ZmZmmeIjIiIiIiJ6l8++6M7JyUFycrLC698TbT19+hRxcXEKr5cvX4rLU1NTC62fnZ0NAPD19UXjxo3h6+uLnTt34tatW0hMTMShQ4fg7e2Nhw8fljluiUQCHx8fbNiwodiCccKECahRowYGDBiA8PBwxMfHIyEhASEhIejTp897i36JRIKFCxfiwYMH+M9//oM//vgDCQkJiI+Px65du/D8+XNIpVKx/1dffYX169fj999/x6NHj3D9+nVMmjQJVatWRadOnUq9j3Fxcbh58yb69esHOzs7hZeXlxfCw8Pf+YeDoUOHYs+ePeIfHcaOHYvAwEBcu3YNjx8/xsWLFzF37lxYWVl90L3vRERERERExfnsLy8/c+YMPD09Fdqsra3FZ2Vv2bIFW7ZsUVj+888/w9XVFcCbwvptS5cuhZeXF7S0tLB161YEBgZi9+7dWLx4MXR0dGBjYwMfHx/Uq1fvg2Lv06cPli9fjh07dmDEiBGFlhsZGSE4OBgbNmzAunXr8PjxYxgaGsLOzg6TJ08u0SXfzs7OCAsLQ0BAAObOnYtnz55BR0cH9evXx9SpU9G3b1+x7/Dhw6Grq4uNGzciMTERhoaGaNy4MbZt2wZtbe1S719ISAhsbW2LvGe+Y8eOmDdvHk6dOlXsI9NatWqF2rVrY926dZg9ezY8PT0RERGBgIAApKenw9TUFM2bN8d333333pnciYiIiIiIykIiKGvGLaJPlFwuR0xMDNYnXcKNZ0mqDoeIiIiISkFmXBNBvUerOoyPquD3V2dnZ4UrVenDlPS4fvaXlxMREREREREpC6+p/YxFR0cXeVl6gYLnjRMREREREVHZsOj+jDk4OIjP3CYiIiIiIqLyx6L7M6atrf1Bzyj/3NUxNEGOIFd1GERERERUClZGZqoOgT4zLLqJyujHln04EQURERFRBSTPz4dUg9Nb0cfBTxpRGcnlPMutSnK5HLGxscyDijEP6oF5UB/MhXpgHtSDOueBBTd9TPy0EVGFlZmZqeoQCMyDumAe1AdzoR6YB/XAPBCx6CYiIiIiIiJSGhbdRFRh6ejoqDoEAvOgLpgH9cFcqAfmQT0wD0ScSI2ozDiJmmpJpVLY29urOozPHvOgHpgH9cFcqAfmQT2oYx7kQj6kEp53pI+LRTdRGS2NCsWDtKeqDoOIiIiISqCOgRn8W3irOgz6DLHoJiqjpPRniH/xRNVhEBERERGRGuO1FURERERERERKwqKbiIiIiIiISElYdBMREREREREpCYtuNebv749vv/22yGXt2rVDYGCgQltsbCzGjx8PT09PODg4oG3btvjmm29w4sQJCIIAAEhKSoJMJkNcXFyhMX18fLBgwQKxz7teYWFh74z94sWLCv0dHR3h5eWFPXv2FLnNt4WFhcHNzU18v2rVKvTq1avY7fn4+Chsz93dHWPHjsXjx4/FPnK5HBs2bECXLl3g6OiIpk2bon///ti7d+8794WIiIiIiKisOJHaJ+L48eMYP3483N3dsWjRIlhaWiInJwdXrlzB8uXL4ebmBgMDgxKNVbNmTZw9e1Z8v2XLFpw5cwZbt24V26pUqVKisSIjI6Gvr4+srCz897//xezZs1GnTh20aNGidDtYAgMGDMDYsWMhCAKePHmCn376CT/88AN+++03AMDq1auxZ88ezJgxAw4ODnj16hVu3LiBtLS0co+FiIiIiIgIYNH9SXj9+jWmTZuGNm3aYPXq1QrL6tati/79+4tnuktCKpXC1NRUfK+rq1uoraSMjY3FYn/o0KHYvn07bt68qZSiW1tbW4zRzMwMgwcPxqxZs8TlJ06cwKBBg9C1a1exrX79+uUeBxERERERUQFeXv4J+N///ofU1FQMHz682D4SieQjRlSYIAg4ffo0/vrrLzg5OSl9e6mpqTh8+DAcHR3FNhMTE1y4cAHPnz9X+vaJiIiIiIgAnun+JDx48AAAYG1tLbZdv34dX375pfh+6dKlaNu2rfh+4MCB0NBQ/JtLVlZWuZ/5bd26NQAgJycH+fn5GDt2LJo0aVKu2yiwa9cuhISEQBAEZGZmwsrKCps3bxaXT506FWPHjoWHhwdsbW3h4uKC9u3bizESERERERGVNxbdn6j69esjPDwcANCpUyfI5XKF5cuWLUPdunUV2iZNmlTucezcuRN6enrIycnB9evXMW/ePBgaGmLQoEHlvq0ePXpg5MiRAIBnz54hICAAfn5+CA0Nhb6+PmxtbREREYE///wTV65cQXR0NEaNGoU+ffoUOZkbERERERHRh2LR/QmwsrIC8OaMt7OzMwBAS0sLlpaWxa5Ts2bNQsu1tbXLPbbatWuL93TXq1cP165dw/r168WiW09PDxkZGYXWS0tLK/FkbQX09fXFfbK0tMSCBQvg6emJw4cPo3///gAADQ0NODo6wtHREb6+vti/fz8mT56MkSNHwsLC4kN2lYiIiIiIqBDe0/0J8PDwgJGRETZu3KjqUN5LKpUiOztbfG9tbY2bN28W6hcbGyv+MeFDtgW8uWy+OLa2tgCAzMzMD9oWERERERFRUXimW82lp6cXeqa2kZGRwns9PT3Mnz8fEyZMwNdffw0fHx9YWVnh1atXOHPmDAAUun/7Y0lJSUF2drZ4efn+/fvRuXNncfmgQYOwc+dOzJ8/H/369YOWlhZOnTqFgwcPYt26dQpjZWVlFToWenp6qFOnjrg8OTlZ3O7atWtRuXJleHh4AADGjh2Lxo0bw8XFBSYmJkhKSsLSpUthZWUFGxsbZR4GIiIiIiL6TLHoVnNRUVHo3bu3Qlu/fv0K9evYsSN27dqFjRs3YsqUKXj58iX09fXh4OCAZcuWKUyi9jF16dIFAFCpUiXUqFED3t7eGDNmjLjcwsICO3bswPLly/HVV18hNzcXNjY2WLFiBVq1aqUwVkJCQqFj0aJFCwQGBgIAgoODERwcDAAwNDSETCbDhg0bxILa09MTERERCAgIQHp6OkxNTdG8eXN89913qFSJXwUiIiIiIip/EqE0D3AmIsjlcsTExGBbykXEPU9UdThEREREVAK2VWthbecx7+/4CSr4/dXZ2Vm8BZM+XEmPK+/pJiIiIiIiIlISXlNLZTJ8+HBcvny5yGXffPON+OguIiIiIiKizxmLbiqTBQsWFDsruKGh4UeORjVqVzFBriB/f0ciIiIiUrk6BmaqDoE+Uyy6qUyqV6+u6hBU7vumfXlPDBEREVEFIhfyIZXwDlv6uPiJIyojuZxnuVVJLpcjNjaWeVAx5kE9MA/qg7lQD8yDelDHPLDgJlXgp46IKqzMzExVh0BgHtQF86A+mAv1wDyoB+aBiEU3ERERERERkdKw6CaiCktHR0fVIRCYB3XBPKgP5kI9MA/qgXkg4kRqRGXGSdRUSyqVwt7eXtVhfPaYB/XAPKgP5kI9MA/qQZ3ykC/kQ4P3c5OKsOgmKqONMcF49OpvVYdBRERERO9grm+G0Y0HqzoM+oyx6CYqoyevkpHw8rGqwyAiIiIiIjXGayyIiIiIiIiIlIRFNxEREREREZGSsOgmIiIiIiIiUhIW3RXA8+fPMWvWLLRp0wYODg7w8PCAn58fLl++DACQyWQ4fvx4ofX8/f3x7bffiu99fHwgk8lw8OBBhX6BgYFo166dQltOTg42bdqEPn36wNnZGa6urujZsyeWLVuGp0+fFruN4vz9999wcHBA9+7di1weFRWFoUOHomnTpnByckKnTp0wZcoU5OTkiH2Cg4PRs2dPuLi4wM3NDb1790ZAQIC4fNWqVZDJZIVeXbp0EfskJiZi4sSJ8PT0RKNGjdCqVSuMGjUK9+7de+8+EBERERERlRYnUqsAxowZg9zcXCxatAgWFhZISUnB+fPnkZqaWuqxKleujOXLl6NTp07Q1NQssk9OTg6GDRuG27dvY8yYMWjcuDGqVauGpKQkREREYMeOHZg4cWKpthsWFoYuXbogOjoa165dg5OTk7gsPj4ew4cPx5AhQzB9+nRoa2sjISEBR48eRX5+PgAgJCQEP/30E6ZNm4amTZsiJycHt2/fxt27dxW2U69ePWzdulWhreDRXrm5uRg2bBisra2xevVqmJqa4u+//8bp06eRnp5eqv0hIiIiIiIqCRbdai4tLQ3R0dHYvn07mjZtCgAwNzeHo6Njmcbz8vLCiRMnEBwcjMGDi350QmBgIC5fvozQ0FCFZyvWqlULTZs2hSAIpdqmIAgICwvDrFmzUKNGDYSEhCgU3WfPnoWJiQkmT54sttWpUwetWrUS3584cQJdu3ZF//79xbZ69eoV2pZUKoWpqWmRccTHx+PRo0cIDAyEubk5gDfH0tXVtVT7Q0REREREVFK8vFzN6erqQldXF8ePH1e41Lqs9PX1MWrUKKxduxavX78usk9ERATc3d0VCu5/k0gkpdrmhQsXkJWVBXd3d/Ts2RMHDx5U2LapqSmSk5Nx6dKlYscwMTFBTEwMHj8u+yO6qlWrBg0NDRw5cgRyubzM4xAREREREZUUi241V6lSJSxatAjh4eFwc3PDwIEDsXTpUty6davMYw4aNAiVK1cudBl2gYSEBFhbWyu0jR49Gi4uLnBxccHAgQNLtb2QkBB069YNUqkUdnZ2sLCwQGRkpLi8S5cu6N69O4YMGQJPT0+MHj0aO3bsQEZGhtjnu+++g4GBAdq1a4fOnTvD398fhw4dEi8/L3Dnzh0xzoLXzJkzAQDVq1fH9OnTsXLlSjRp0gRDhw7FmjVrkJiYWKr9ISIiIiIiKikW3RVA586dcebMGaxbtw4tW7ZEVFQUvvjiC4SFhZVpPC0tLYwdOxZbtmzB8+fPS7TOrFmzEB4ejr59+yIzM7PE20pLS8OxY8fQs2dPsa1nz54ICQkR30ulUixcuBCnT5/GpEmTUL16daxfvx5eXl74559/AABmZmbYs2cPDhw4gKFDhyIvLw/+/v4YPny4QuFtbW2N8PBwhde4cePE5YMHD8bZs2fxyy+/wMXFBZGRkfDy8sL//ve/Eu8TERERERFRSbHoriAqV64MDw8PjB49Grt370afPn2watUqAICenl6RE4GlpaWhSpUqRY7Xs2dP1KpVC+vWrSu0zNLSEg8ePFBoMzMzg6WlJQwNDUsV94EDB5CdnY0BAwbA3t4e9vb2+OWXX3D58uVC26hevTp69+6NmTNn4uDBg8jOzsbu3bsV+tjZ2WHw4MH45ZdfsGXLFvzvf/9DVFSUuFxTUxOWlpYKL2NjY4Ux9PX10a5dO0yYMAG///473NzcijwOREREREREH4pFdwVla2sr3hdtbW2NmzdvKiyXy+W4desWrKysilxfQ0MDEydOxK5duwrdJ929e3ecO3cOsbGxHxxnaGgohg0bpnDmef/+/XBzc0NoaGix6xkaGsLU1PSdZ9VtbW0BoFRn3t8mkUhgY2NT7P3tREREREREH4Kzl6u5Fy9eYNy4cejbty9kMhn09PTw559/YtOmTWjfvj0A4KuvvsK0adNgbW0NDw8PZGZmYvv27UhLS1OY7fttbdq0gZOTE/bs2QMTExOx3dfXFydPnoSvry9Gjx4NNzc3GBgYICEhAadPnxYfwVUgPT0dcXFxCm1GRkZITU3FzZs3sWTJEtStW1dhuZeXF9auXYvx48cjJCQEcXFx6NixI+rUqYPs7GyEh4cjPj4eM2bMAPDm8nYzMzM0b94cNWrUQHJyMtatW4dq1arB2dlZHFculyM5OVlhWxKJBCYmJoiLi8PKlSvRq1cv2NraQlNTE1FRUQgNDcXw4cNLnhQiIiIiIqISYtGt5vT09ODk5ISgoCA8evQIeXl5qFGjBvr374+RI0cCeHNmWhAEbN26Fb/++it0dHTQsGFD7NixQ6GYLsqkSZMKTYxWuXJlBAUFITAwEGFhYVi6dCny8/NRu3ZttGrVCr6+vgr9o6Ki0Lt3b4W2fv36QVtbG7a2toUKbgDo2LEj5s2bh1OnTsHR0RGXL1/GrFmz8M8//0BXVxf16tXDmjVrxMekubu7IzQ0FLt27UJqaiqqVq0KFxcXBAYGomrVquK4d+/ehaenp8K2tLS0cOPGDVSvXh3m5uZYs2YNkpKSIJFIYG5ujjFjxhTaJyIiIiIiovIgEUr70GWiz5xcLkdMTAz2v/of4l8+UnU4RERERPQOVobm+KnVBFWHoVIFv786OzsXumqVyq6kx5X3dBMREREREREpCYtuIiIiIiIiIiXhPd1EZVRLzxR5kKs6DCIiIiJ6B3N9M1WHQJ85Ft1EZTTCeQDviSEiIiKqAPKFfGhIeJEvqQY/eURlJJfzLLcqyeVyxMbGMg8qxjyoB+ZBfTAX6oF5UA/qlAcW3KRK/PQRUYWVmZmp6hAIzIO6YB7UB3OhHpgH9cA8ELHoJiIiIiIiIlIaFt1EVGHp6OioOgQC86AumAf1wVyoB+ZBPTAPRJxIjajMOImaakmlUtjb26s6jM8e86AemAf1wVyoB+ZBPagiD5wwjdQRi26iMtpzayf+ev1E1WEQEREREYDqejUwxN5X1WEQFcKim6iM/nn9FI8zklQdBhERERERqTFee0FERERERESkJCy6iYiIiIiIiJSERTcRERERERGRkrDopnL3/PlzzJo1C23atIGDgwM8PDzg5+eHy5cvAwDatWuHwMDAQuutWrUKvXr1eud7mUwGmUyGBg0aoHXr1pgxYwZSU1Nx8eJFcVlxr4sXL0Iul2PDhg3o0qULHB0d0bRpU/Tv3x979+5V+nEhIiIiIqLPDydSo3I3ZswY5ObmYtGiRbCwsEBKSgrOnz+P1NTUDx67Xr162Lp1K/Lz83Hv3j38+OOPSE9Px88//4yzZ8+K/RYsWICMjAwsXLhQbDM0NMTq1auxZ88ezJgxAw4ODnj16hVu3LiBtLS0D46NiIiIiIjobSy6qVylpaUhOjoa27dvR9OmTQEA5ubmcHR0LJfxpVIpTE1NAQDVq1dHly5dEBYWBi0tLbEdALS1tZGTk6PQBgAnTpzAoEGD0LVrV7Gtfv365RIbERERERHR23h5OZUrXV1d6Orq4vjx48jJyVHqtpKSknD27FloamqWeB0TExNcuHABz58/V2JkREREREREb/BMN5WrSpUqYdGiRZgxYwZ2794Ne3t7NG3aFN26dVM4o/zLL79gxYoVCuvm5uaibt267xz/zp07cHFxgVwuR3Z2NgBg6tSpJY5v6tSpGDt2LDw8PGBrawsXFxe0b98erVu3LsVeEhERERERlQyLbip3nTt3Rps2bRAdHY2YmBicOXMGmzZtwvz58/HFF18AAPz8/MR/F9i+fTsuXbr0zrGtra2xbt06ZGdn4/fff0dcXByGDBlS4thsbW0RERGBP//8E1euXEF0dDRGjRqFPn36YMGCBaXfWSIiIiIionfg5eWkFJUrV4aHhwdGjx6N3bt3o0+fPli1apW4vGrVqrC0tFR4GRoavndcTU1NWFpaws7ODpMmTYJUKsXq1atLFZuGhgYcHR3h6+uL1atXY+HChQgJCUFiYmKp95OIiIiIiOhdWHTTR2Fra4vXr1+X+7ijRo3Cli1b8PTp0zKPYWtrCwDIzMwsr7CIiIiIiIgAsOimcvbixQsMHToU+/fvx61bt5CYmIjDhw9j06ZNaN++fblvz8XFBTKZDAEBASXqP3bsWAQGBuLatWt4/PgxLl68iLlz58LKygo2NjblHh8REREREX3eeE83lSs9PT04OTkhKCgIjx49Ql5eHmrUqIH+/ftj5MiRStmmr68v/P39MWLECNSsWfOdfT09PREREYGAgACkp6fD1NQUzZs3x3fffYdKlfh1ICIiIiKi8iURBEFQdRBEFYlcLn8zQVz+CTzKeKjqcIiIiIgIgLl+bUxs4q/qMNRSwe+vzs7OkEqlqg7nk1HS48rLy4mIiIiIiIiUhEU3ERERERERkZLwJlaiMjLTrQ455KoOg4iIiIgAVNeroeoQiIrEopuojLzrD+Y9MURERERqJF/Ih4aEF/OSeuEnkqiM5HKe5VYluVyO2NhY5kHFmAf1wDyoD+ZCPTAP6kEVeWDBTeqIn0oiqrAyMzNVHQKBeVAXzIP6YC7UA/OgHpgHIhbdRERERERERErDopuIKiwdHR1Vh0BgHtQF86A+mAv1wDyoB+aBiBOpEZUZJ1FTLalUCnt7e1WH8dljHtQD86A+mAv1wDyoh/LOAydJo4qKRTdRGR28swnJmUmqDoOIiIjok2eiWwu96o9SdRhEZcKim6iMUl7/jaevH6o6DCIiIiIiUmO8PoOIiIiIiIhISVh0ExERERERESkJi24iIiIiIiIiJVFp0e3v7w+ZTIaZM2cWWjZnzhzIZDL4+/uLbX/99RemTp0KT09PODg4oG3btpg/fz5evHgBAEhKSoJMJnvnKywsDAAgl8sRGBiIHj16oFGjRmjSpAmGDx+Oy5cvK8QRFhYmrlu/fn14enpi/PjxePLkiUK/jIwMLFu2DF26dEGjRo3g4eEBX19fHD16FPfv34eTkxMOHDigsE5+fj4GDhyIsWPHAgBycnKwceNG9OzZE05OTmjWrBkGDhyI0NBQ5Obmisfs22+/LfaYtmvXrsj93rBhw3vzUXD84uLiCi3z8fHBggULFN4XtZ1/51Imk+H48eNFbuvixYuQyWRo0qQJsrOzFZZdv35dHO/t/kW9kpOTi93vglfB5ygqKgpDhw5F06ZN4eTkhE6dOmHKlCnIycl57/EhIiIiIiIqLZVPpFazZk0cOnQIP/74I7S1tQEA2dnZiIiIQK1atcR+iYmJ8Pb2hpWVFZYuXYratWvj7t27WLJkCc6cOYM9e/agZs2aOHv2rLjOli1bcObMGWzdulVsq1KlCgRBwIQJE3D+/HlMnjwZzZs3x6tXr7Bz504MHToUK1asQIcOHcR19PX1ERkZCUEQkJSUhDlz5mDcuHHYu3cvACAtLQ2DBg1Ceno6xo8fj0aNGkEqleLSpUtYsmQJQkNDMXHiRMyfPx/NmjWDmZmZGF9iYiLWrl2LnJwc+Pn54fbt2xg3bhwaN24MfX19xMTEYMuWLbC3t0eDBg1KdEzHjh2LAQMGKLTp6emVMjPvN2DAAPEPBgVK+yxGPT09HDt2DN27dxfbQkJCUKtWrUJ/2ACAyMhI6OvrK7QZGxsjJCQEcrkcAHD16lWMGTNGoa+2tjbi4+MxfPhwDBkyBNOnT4e2tjYSEhJw9OhR5OfnlypuIiIiIiKiklB50W1vb4/ExEQcPXoUPXv2BAAcPXoUNWvWRO3atcV+c+bMgaamJrZs2SIW57Vq1YK9vT06duyIZcuWYc6cOTA1NRXX0dXVhVQqVWgDgEOHDuHIkSNYt24d2rVrJ7bPmzcPqampmDZtGtzd3aGrqwsAkEgk4hhmZmbo168f5s+fj4yMDOjr62Pp0qV4/PgxIiMjUb16dXE8a2treHl5oXLlyvDx8cHx48cxY8YMBAQE4N69e1i5ciWWLVuGatWqYePGjYiOjkZoaKjC8wwtLCzQpUsX8Ux3Sejp6RXaZ2XQ1tb+4O307t0boaGhYtGdlZWFQ4cOwcfHB2vXri3U39jYGAYGBoXaq1WrJv7b0NCwyL6hoaEwMTHB5MmTxbY6deqgVatWH7QPRERERERExVGLe7r79u0rXvYNvCmOvvjiC/F9amoqzp49i0GDBokFdwFTU1P06NEDhw8fhiAIJdregQMHYGVlpVBwF/jqq6+QmpqKc+fOFbluSkoKjh07BqlUCg0NDeTn5+PQoUPo0aOHQsFdQE9PD5UqVYJEIsHChQsRHR2N4OBgTJ06FV5eXmjfvr0Yk7u7u0LBXUBTU1P8A8CnplevXoiOjhbPah85cgTm5uZo2LBhuW/L1NQUycnJuHTpUrmPTUREREREVBSVn+kGgJ49e+LXX3/F48ePAQBXrlzB0qVLERUVBQB4+PAhBEFA3bp1i1y/bt26ePnyJZ4/fw5jY+P3bi8hIeGdYwHAgwcPxLb09HS4uLhAEARkZmYCeHNPs66uLlJSUvDy5UvY2Ni8d7vm5ub48ccfMX36dNSoUQNbtmwRlz18+BBNmzZ97xgl8csvv2DFihUKbRs3boSbm1uJ1h84cCA0NBT/HpOVlYX69esrtO3atQshISEKbXPmzBGvWCgJY2NjtGrVCmFhYfjuu+8QGhqKvn37Ftu/devWCu9r1aqFgwcPlmhbXbp0wdmzZzFkyBCYmprCyckJLVq0QO/evQtdsk5ERERERFQe1KLorlatGtq0aYN9+/ZBEAS0adNG4XLhAiU9k10SpRlLT08P+/btQ15eHk6fPo0DBw5gwoQJZYqpb9++WLFiBYYMGaJQ6JXnvvn5+SlcKQCgyLPwxVm2bFmhP0pMmjSpUL8ePXpg5MiRCm0l+aPH2/r27YsFCxagV69eiImJwYoVKwpNaFdg586dCvenV6pU8o+wVCrFwoULMX78eJw/fx7Xr1/H+vXrsXHjRuzdu1e8156IiIiIiKi8qEXRDbwpvObOnQsAmDVrlsKyOnXqQCKR4N69e+jYsWOhde/duwdDQ8MiC/WiWFlZ4f79+0Uuu3fvHoA392MX0NDQgKWlJYA3Z8IfPXqE2bNnY8mSJahWrRoMDAyKHa8olSpVglQqLRTTv8+uf4iqVauK8ZZFzZo1C63/9mX9wJsJ5j5kOwVatWqFmTNn4scff0Tbtm1RtWrVYvvWrl27yHu6S6N69ero3bs3evfujXHjxqFz587YvXt3oUnhiIiIiIiIPpRa3NMNAC1btkRubi7y8vLg6empsKxq1arw8PDAb7/9hqysLIVlycnJOHDgALp27QqJRFKibXl5eSEhIQEnTpwotGzr1q0wMjKCu7t7set//fXXOHz4MG7evAkNDQ1069YNBw4cwNOnTwv1ffXqFfLy8t4bU/fu3XHu3DnExsYWWpabm4vXr1+/d4yKqlKlSujVqxeioqLeeWm5MhgaGsLU1FS8bYCIiIiIiKg8qc2ZbqlUisOHD4v/ftuMGTMwcOBA+Pn5Yfz48QqPDKtevbp4uXdJeHl5ITIyEv7+/vjhhx/QokULZGRk4LfffsOJEyewYsWKd05cVrNmTXTo0AErV65EQEAAJkyYgKioKAwYMAATJkyAg4MDKlWqhOjoaGzYsAEhISHvPTvr6+uLU6dOwdfXF+PGjYOrqyv09PRw48YNbNq0CQsWLBAfGZaenl7oWdpGRkaoWbMmgDeFfnJyssJyHR2dcr9vOSsrq9B2tLS0xNnDgTfP/n471qLOjo8bNw5+fn7vPMsNvJnI7u3nehsZGUFTU/O98e7evRtxcXHo2LEj6tSpg+zsbISHhyM+Ph4zZsx47/pERERERESlpTZFN4B3FoVWVlYIDQ3FqlWrMH78eLx8+RImJibo0KEDRo8eDSMjoxJvRyKRYPny5QgKCkJQUBDmzJmDypUrw9nZGdu2bYOrq+t7x/D19YW3tzeuX78OR0dHBAcHY8OGDVi3bh0eP34MQ0ND2NnZYfLkyahSpcp7x9PS0sLWrVsRGBiI3bt3Y/HixdDR0YGNjQ18fHxQr149sW9UVBR69+6tsH6/fv2wYMECAMDKlSuxcuVKheXe3t7i5fvlJTg4GMHBwQptnp6e2Lx5s/h+4cKFhdbbuXNnoTYtLa0S3R7QpUuXQm179uyBs7Pze9d1dHTE5cuXMWvWLPzzzz/Q1dVFvXr1sGbNmnKbxI6IiIiIiOjfJEJ5zuBF9BmQy+WIiYnBdUTgr9f3VB0OERER0Sevup4l/BrPU3UYFVbB76/Ozs5FXlVMZVPS46o293QTERERERERfWrU6vJyUq6ZM2fiwIEDRS7r0aNHuV9+TkRERERE9Llj0f0ZKZisrCjlPckaERERERERsej+rBgbG8PY2FjVYXwyjHVrIF/y/sfBEREREdGHMdGtpeoQiMqMRTdRGXnZDedEFEREREQfSb6QDw0Jp6SiioefWqIyksvlqg7hsyaXyxEbG8s8qBjzoB6YB/XBXKgH5kE9lHceWHBTRcVPLhFVWJmZmaoOgcA8qAvmQX0wF+qBeVAPzAMRi24iIiIiIiIipWHRTUQVlo6OjqpDIDAP6oJ5UB/MhXpgHtQD80DEidSIyoyTqKmWVCqFvb29qsP47DEP6oF5UB/MhXpgHtRDafPAidLoU8Wim6iMTt1bhdSsBFWHQURERFThGelYoF29iaoOg0gpWHQTldHLzMdIeX1f1WEQEREREZEa4/UbRERERERERErCopuIiIiIiIhISVh0f0L8/f0hk8mwYcMGhfbjx49DJpMBAC5evAiZTFbkKzk5WVwnIyMDy5YtQ5cuXdCoUSN4eHjA19cXR48ehSAIAAAfHx8sWLBAYVtBQUFwcHDAwYMHi+1TlKtXr6JBgwb4+uuvi1yek5ODjRs3omfPnnByckKzZs0wcOBAhIaGIjc3V2H/3375+fmJ49y6dQsjR45EixYt0KhRI7Rr1w7jx49HSkrKe2MkIiIiIiIqLd7T/YmpXLkyNm7cCG9vbxgaGhbbLzIyEvr6+gptxsbGAIC0tDQMGjQI6enpGD9+PBo1agSpVIpLly5hyZIlaN68OQwMDAqNuXLlSmzZsgVr165Fq1atShV3SEgIhgwZgpCQEDx9+hTVq1cXl+Xk5MDPzw+3b9/GuHHj0LhxY+jr6yMmJgZbtmyBvb09GjRoAABo2bIlFi5cqDC2lpYWAOD58+f48ssv0bZtW2zevBlVqlTB48ePceLECbx+/VrcfyIiIiIiovLCovsT4+7ujocPHyIgIACTJ08utp+xsXGRhTMALF26FI8fP0ZkZKRC8WttbQ0vLy9UrlxZob8gCJg/fz5+//13bNmyBY0bNy5VzK9evcKhQ4cQGhqKZ8+eYd++fRg5cqS4PCgoCNHR0QgNDVV47ISFhQW6dOkinukG3hTYpqamRW7nypUryMjIwPz581GpUiVxjObNm5cqXiIiIiIiopLi5eWfGA0NDXz//ffYsWMH/v7771Kvn5+fj0OHDqFHjx4KBXcBPT09sWAFALlcjkmTJuHIkSPYvn17qQtuADh8+DBsbGxgY2ODnj17IjQ0VLyEHQAOHDgAd3f3Ip/zqKmpCV1d3RJtx8TEBHl5eTh27JjC+ERERERERMrCM92foI4dO6JBgwZYuXIlfvrppyL7tG7dWuF9rVq1cPDgQbx48QIvX76EjY1NibYVHBwMANi/fz/q1q1bpnhDQkLQs2dPAG8uD09PT0dUVBSaNWsGAHj48CGaNm1aorFOnjwJFxcXhbZvvvkGI0eOhLOzM0aOHIlJkyZh9uzZaNSoEZo3b47evXvDxMSkTLETERERERG9C4vuT9SkSZPw5ZdfKkwi9m87d+6Enp6e+L7g7HVpzwC7urri1q1bWLFiBZYuXapwFrwk7t+/jxs3bmDNmjViHN26dUNISIhYdJcmpmbNmmH27NkKbf++t33ChAnw9fXFhQsXcP36dezevRsBAQHYsWOHONkcERERERFReeHl5Z+oJk2awNPTE7/++muRy2vXrg1LS0vxZW5uDgCoVq0aDAwMcP/+/RJtx87ODoGBgbh48SImTJiAvLy8UsUZEhKCvLw8tGzZEvb29rC3t8euXbtw9OhRpKenAwCsrKzw4MGDEo2no6OjsF+WlpYwMjJS6FO1alV07doVU6ZMwaFDh2BmZoYtW7aUKm4iIiIiIqKSYNH9CZs4cSL++9//4urVqyVeR0NDA926dcOBAwfw9OnTQstfvXpVqLBu0KABgoKCcOnSJYwfP15hYrN3ycvLw/79++Hv74/w8HDxtX//fpiZmSEiIgIA0L17d5w7dw6xsbGFxsjNzcXr169LvH9v09LSgoWFBTIzM8s8BhERERERUXFYdH/CZDIZevToge3btxdalpKSguTkZIVXQbE8YcIE1KhRAwMGDEB4eDji4+ORkJCAkJAQ9OnTp8git379+ggKCsLly5cLFd7Pnz9HXFycwuvZs2c4efIkXr58iX79+sHOzk7h1alTJ4SEhAAAfH190bhxY/j6+mLnzp24desWEhMTcejQIXh7e+Phw4fitnJycgrt1/PnzwEA//3vfzFp0iT897//xYMHD3D//n1s3rwZp0+fRrt27cr12BMREREREQG8p/uTN3bsWBw6dKhQe5cuXQq17dmzB87OzjAyMkJwcDA2bNiAdevW4fHjxzA0NISdnR0mT56MKlWqFLktmUyGoKAg+Pr6Yty4cVi+fDkAICIiQjxrXWDcuHG4fv063N3dixyvc+fO2LRpE27duoX69etj69atCAwMxO7du7F48WLo6OjAxsYGPj4+qFevnrjemTNn4OnpqTCWtbU1IiMjYWtrCx0dHSxatAh///03tLS0YGlpifnz56N3797vO5RERERERESlJhH47CSiUpHL5YiJicGjSrvx7PVtVYdDREREVOEZ69ngC8flqg7jk1Xw+6uzszOkUqmqw/lklPS48vJyIiIiIiIiIiVh0U1ERERERESkJCy6iYiIiIiIiJSEE6kRlZGhjjkESckej0ZERERExTPSsVB1CERKw6KbqIxa1x3DiSiIiIiIykm+kA8NCS/EpU8PP9VEZSSXy1UdwmdNLpcjNjaWeVAx5kE9MA/qg7lQD8yDeihtHlhw06eKn2wiqrAyMzNVHQKBeVAXzIP6YC7UA/OgHpgHIhbdRERERERERErDopuIKiwdHR1Vh0BgHtQF86A+mAv1wDyoB+aBiBOpEZUZJ1FTLalUCnt7e1WH8dljHtQD86A+mAv1wDyoh9LmQRDkkEj4+xV9elh0E5VRzP3FSM+6p+owiIiIiCq8KjqWcLWdqeowiJSCRTdRGaVnPsLLzDuqDoOIiIiIiNQY7+kmIiIiIiIiUhIW3URERERERERKwqKbiIiIiIiISEl4T3cJ+fv7Y9++fQAATU1N1KxZE7169cLIkSPx+++/46effkJ0dHSh9WQyGdasWYMOHTogKSkJ7du3F5cZGhrCzs4O48ePh5ubm9i+atUqrF69utBY1tbWiIyMBAD4+PggKipKXGZsbAw3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\n" }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "Categoría más común: BOOKS (3,752 títulos)\n", "Categoría más rara: TORSION_BARS (1 títulos)\n", "Mediana por categoría: 78 títulos\n" ] } ], "source": [ "# Top 20 categorías más frecuentes\n", "top = df[COL_CATEGORIA].value_counts().head(20)\n", "plt.figure(figsize=(10, 6))\n", "sns.barplot(x=top.values, y=top.index, palette=\"viridis\")\n", "plt.title(\"Top 20 categorías por cantidad de títulos\")\n", "plt.xlabel(\"Cantidad\"); plt.tight_layout(); plt.show()\n", "\n", "# Estadística del balance de categorías\n", "conteo = df[COL_CATEGORIA].value_counts()\n", "print(f\"Categoría más común: {conteo.index[0]} ({conteo.iloc[0]:,} títulos)\")\n", "print(f\"Categoría más rara: {conteo.index[-1]} ({conteo.iloc[-1]:,} títulos)\")\n", "print(f\"Mediana por categoría: {conteo.median():.0f} títulos\")" ] }, { "cell_type": "markdown", "source": [ "## Conclusion:\n", "\n", "\n", "La distribución de categorías es fuertemente asimétrica: BOOKS lidera con 3,752 títulos mientras la mediana es de apenas 78, y la cola llega hasta categorías con 1 solo título (TORSION_BARS). Esto justificó dos decisiones de diseño: el tope por categoría en el muestreo (evita que BOOKS/WRISTWATCHES dominen el entrenamiento) y el umbral mínimo (elimina categorías anémicas). El resultado —745/682 categorías balanceadas— prioriza calidad de pares sobre cantidad bruta." ], "metadata": { "id": "pTEOmTm--KJh" } }, { "cell_type": "markdown", "metadata": { "id": "4MdvPWnE0k8G" }, "source": [ "## Limpieza de datos\n", "\n", "Pasos: quitar nulos y duplicados, descartar títulos demasiado cortos (poco informativos)\n", "o absurdamente largos, y quedarnos con categorías que tengan **suficientes ejemplos** para\n", "formar pares de contrastive learning (mínimo 2 por categoría, idealmente más)." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "bPRjGQmv0k8G", "outputId": "9435db5c-9c13-4b63-dd27-9667a418eb8f" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Antes: 400,162 → Después: 397,943\n", "Categorías tras limpieza: 682\n" ] } ], "source": [ "import re\n", "\n", "antes = len(df)\n", "\n", "# 1. Quitar nulos y duplicados\n", "df = df.dropna(subset=[COL_TITULO, COL_CATEGORIA])\n", "df = df.drop_duplicates(subset=[COL_TITULO])\n", "\n", "# 2. Normalización ligera: espacios y minúsculas (los títulos ya vienen bastante limpios)\n", "df[COL_TITULO] = df[COL_TITULO].str.strip().str.replace(r\"\\s+\", \" \", regex=True)\n", "\n", "# 3. Filtrar por longitud razonable (2-15 palabras es lo típico de un título de producto)\n", "df = df[(df[\"n_words\"] >= 2) & (df[\"n_words\"] <= 20)]\n", "\n", "# 4. Quedarnos con categorías con al menos MIN_POR_CAT ejemplos\n", "MIN_POR_CAT = 30\n", "cats_validas = df[COL_CATEGORIA].value_counts()\n", "cats_validas = cats_validas[cats_validas >= MIN_POR_CAT].index\n", "df = df[df[COL_CATEGORIA].isin(cats_validas)]\n", "\n", "print(f\"Antes: {antes:,} → Después: {len(df):,}\")\n", "print(f\"Categorías tras limpieza: {df[COL_CATEGORIA].nunique():,}\")" ] }, { "cell_type": "markdown", "metadata": { "id": "GKVwNK8c0k8G" }, "source": [ "## Muestreo balanceado a 100.000 títulos\n", "\n", "Muestreamos de forma **proporcional pero con tope por categoría**, para que las categorías\n", "gigantes no dominen y las pequeñas no desaparezcan. Esto mejora la calidad de los pares\n", "de contrastive learning." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 281 }, "id": "1hWXsdm-0k8G", "outputId": "cb5777a4-15df-4ccd-8f51-a1e9fc9640ca" }, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/tmp/ipykernel_618/1154713791.py:6: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", " .apply(lambda g: g.sample(min(len(g), TOPE_POR_CAT), random_state=42))\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Dataset final: 100,000 títulos en 745 categorías\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ " title category \\\n", "0 Dh 47 / 2 Colores / Formato 47x34 / Maquina Im... OFFSET_PRINTERS \n", "1 Luces De Emergencia Atomlux 20x20 De 60 Led EMERGENCY_LIGHTS \n", "2 Afeitadora Philips At884/14 Nueva SHAVING_MACHINES \n", "3 Puerta Plegadiza Pvc 070x 200 Linea H Economic... DOORS \n", "4 Timex Tw5k93500 + Envío Gratis- Timex Store SPORT_WATCHES \n", "\n", " n_chars n_words \n", "0 60 12 \n", "1 43 8 \n", "2 33 4 \n", "3 57 10 \n", "4 43 7 " ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
titlecategoryn_charsn_words
0Dh 47 / 2 Colores / Formato 47x34 / Maquina Im...OFFSET_PRINTERS6012
1Luces De Emergencia Atomlux 20x20 De 60 LedEMERGENCY_LIGHTS438
2Afeitadora Philips At884/14 NuevaSHAVING_MACHINES334
3Puerta Plegadiza Pvc 070x 200 Linea H Economic...DOORS5710
4Timex Tw5k93500 + EnvĂ­o Gratis- Timex StoreSPORT_WATCHES437
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", "
\n" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "variable_name": "df_bal", "summary": "{\n \"name\": \"df_bal\",\n \"rows\": 100000,\n \"fields\": [\n {\n \"column\": \"title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 99936,\n \"samples\": [\n \"Minitorno Dremel 3000 Y Accesorios\",\n \"Desmalezadora Usada Gamma\",\n \"Reloj Pared Dise\\u00f1o Vintage Secundero Silencioso\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"category\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 745,\n \"samples\": [\n \"UNIVERSAL_HOME_GYMS\",\n \"ANTIVIRUS_AND_INTERNET_SECURITY\",\n \"WATER_PURIFIERS_FILTERS\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"n_chars\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 12,\n \"min\": 6,\n \"max\": 60,\n \"num_unique_values\": 55,\n \"samples\": [\n 35,\n 36,\n 48\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"n_words\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2,\n \"min\": 2,\n \"max\": 18,\n \"num_unique_values\": 17,\n \"samples\": [\n 12,\n 8,\n 5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" } }, "metadata": {}, "execution_count": 11 } ], "source": [ "# Tope por categoría para evitar que unas pocas dominen\n", "TOPE_POR_CAT = 400\n", "\n", "df_bal = (\n", " df.groupby(COL_CATEGORIA, group_keys=False)\n", " .apply(lambda g: g.sample(min(len(g), TOPE_POR_CAT), random_state=42))\n", ")\n", "\n", "# Ajustar al tamaño objetivo\n", "if len(df_bal) > N_MUESTRA:\n", " df_bal = df_bal.sample(N_MUESTRA, random_state=42)\n", "\n", "df_bal = df_bal.reset_index(drop=True)\n", "print(f\"Dataset final: {len(df_bal):,} títulos en {df_bal[COL_CATEGORIA].nunique():,} categorías\")\n", "df_bal.head()" ] }, { "cell_type": "markdown", "metadata": { "id": "D4VgFcDa0k8H" }, "source": [ "## Construcción de pares para contrastive learning\n", "\n", "Con `MultipleNegativesRankingLoss` solo necesitamos **pares positivos** (dos títulos de la\n", "misma categoría). La loss se encarga de los negativos automáticamente: para cada par, usa\n", "los demás ejemplos del batch como negativos.\n", "\n", "Formamos pares `(título_A, título_B)` donde ambos pertenecen a la misma categoría." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xza-jZG60k8H", "outputId": "de9534a6-9bfd-441c-a34b-7334c9811a88" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Train: 85,000 | Test: 15,000\n" ] } ], "source": [ "import random\n", "random.seed(42)\n", "\n", "# Split train/test ANTES de formar pares (evita fuga entre conjuntos)\n", "from sklearn.model_selection import train_test_split\n", "train_df, test_df = train_test_split(\n", " df_bal, test_size=0.15, stratify=None, random_state=42\n", ")\n", "print(f\"Train: {len(train_df):,} | Test: {len(test_df):,}\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0m-x0Ok90k8H", "outputId": "7302c8ec-5a96-4bf2-db12-0c30061b623b" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Pares positivos de entrenamiento: 25,797\n", "Ejemplo: ('Depiladora No No Classic', 'Depiladora Laser Diodo Tipo Soprano Ice Platinum')\n" ] } ], "source": [ "from collections import defaultdict\n", "\n", "def construir_pares(dataframe, max_pares_por_cat=50):\n", " \"\"\"Forma pares positivos (dos títulos de la misma categoría).\"\"\"\n", " por_cat = defaultdict(list)\n", " for _, row in dataframe.iterrows():\n", " por_cat[row[COL_CATEGORIA]].append(row[COL_TITULO])\n", "\n", " pares = []\n", " for cat, titulos in por_cat.items():\n", " if len(titulos) < 2:\n", " continue\n", " random.shuffle(titulos)\n", " # Emparejamos consecutivos: (t0,t1), (t2,t3), ...\n", " n = min(len(titulos) - 1, max_pares_por_cat * 2)\n", " for i in range(0, n, 2):\n", " pares.append((titulos[i], titulos[i + 1]))\n", " random.shuffle(pares)\n", " return pares\n", "\n", "pares_train = construir_pares(train_df)\n", "print(f\"Pares positivos de entrenamiento: {len(pares_train):,}\")\n", "print(\"Ejemplo:\", pares_train[0])" ] }, { "cell_type": "markdown", "metadata": { "id": "nHG1jSqA0k8H" }, "source": [ "## Funciones de fine-tuning y evaluación\n", "\n", "Definimos dos funciones reutilizables para correr el **mismo experimento en los dos modelos**:\n", "\n", "- `entrenar_modelo(...)`: fine-tuning con `MultipleNegativesRankingLoss`\n", "- `evaluar_retrieval(...)`: calcula **recall@k y NDCG@k** — dado un título, ¿cuántos de sus\n", " vecinos más cercanos son de la misma categoría?" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XXbUyAtg0k8H", "outputId": "f87afef8-0a45-49f0-f2e5-735b9348e24c" }, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/tmp/ipykernel_618/482842731.py:1: DeprecationWarning: Importing from 'sentence_transformers.losses' is deprecated and will be removed in a future version. Please use 'sentence_transformers.sentence_transformer.losses' instead.\n", " from sentence_transformers import SentenceTransformer, InputExample, losses\n" ] } ], "source": [ "from sentence_transformers import SentenceTransformer, InputExample, losses\n", "from torch.utils.data import DataLoader\n", "\n", "def entrenar_modelo(nombre_base, pares, epochs=1, batch_size=64):\n", " modelo = SentenceTransformer(nombre_base)\n", " ejemplos = [InputExample(texts=[a, b]) for a, b in pares]\n", " loader = DataLoader(ejemplos, shuffle=True, batch_size=batch_size)\n", " loss = losses.MultipleNegativesRankingLoss(modelo)\n", "\n", " warmup = int(len(loader) * epochs * 0.1)\n", " modelo.fit(\n", " train_objectives=[(loader, loss)],\n", " epochs=epochs,\n", " warmup_steps=warmup,\n", " show_progress_bar=True,\n", " )\n", " return modelo" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "id": "OSxWspjU0k8I" }, "outputs": [], "source": [ "import numpy as np\n", "\n", "def evaluar_retrieval(modelo, dataframe, k_values=(1, 5, 10), muestra_consultas=1000):\n", " \"\"\"Para cada consulta, recupera los k títulos más cercanos y mide si comparten\n", " categoría. Reporta recall@k y NDCG@k.\"\"\"\n", " df_eval = dataframe.sample(min(len(dataframe), 5000), random_state=42).reset_index(drop=True)\n", " titulos = df_eval[COL_TITULO].tolist()\n", " cats = df_eval[COL_CATEGORIA].tolist()\n", "\n", " # Codificar todo el corpus\n", " emb = modelo.encode(titulos, batch_size=128, show_progress_bar=True,\n", " convert_to_numpy=True, normalize_embeddings=True)\n", "\n", " # Consultas = subconjunto\n", " idx_consultas = np.random.RandomState(42).choice(\n", " len(titulos), min(muestra_consultas, len(titulos)), replace=False)\n", "\n", " max_k = max(k_values)\n", " recalls = {k: [] for k in k_values}\n", " ndcgs = {k: [] for k in k_values}\n", "\n", " for qi in idx_consultas:\n", " sims = emb @ emb[qi] # similitud coseno (ya normalizado)\n", " sims[qi] = -1 # excluir el propio título\n", " top = np.argsort(-sims)[:max_k]\n", " relevantes = np.array([cats[j] == cats[qi] for j in top])\n", "\n", " for k in k_values:\n", " rel_k = relevantes[:k]\n", " recalls[k].append(rel_k.any()) # ¿al menos 1 correcto en top-k?\n", " # NDCG@k\n", " dcg = np.sum(rel_k / np.log2(np.arange(2, k + 2)))\n", " idcg = np.sum(np.ones(min(k, rel_k.sum() if rel_k.sum() > 0 else 1))\n", " / np.log2(np.arange(2, min(k, max(rel_k.sum(),1)) + 2)))\n", " ndcgs[k].append(dcg / idcg if idcg > 0 else 0)\n", "\n", " resultado = {}\n", " for k in k_values:\n", " resultado[f\"recall@{k}\"] = np.mean(recalls[k])\n", " resultado[f\"ndcg@{k}\"] = np.mean(ndcgs[k])\n", " return resultado" ] }, { "cell_type": "markdown", "metadata": { "id": "DtbLxRtp0k8I" }, "source": [ "## Experimento — Modelo 1: MiniLM\n", "\n", "Medimos primero el **baseline** (sin fine-tuning) y luego el modelo **fine-tuneado**,\n", "para cuantificar cuánto aporta el contrastive learning." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 539, "referenced_widgets": [ "dbad783b64f6434b8445842d38a4bfac", "0e93dd2618af41978951309398c57851", "05135efbda7045739f7387a62f105887", "3d4d7186de63478c8ebe7e64074c8628", "898b1264992f4294873cec5b190f3409", "ce5beee9bd5e423e91d39ec443a76cbf", "e6ad5dbc7c434a0d82853fe457341243", "7ed0d20c0ecd40d4b6fb5591f49bbf13", "ae908c89e55748f6be0b517cda19b529", "b03dfe23883b4c64aad8b1314d875b1e", "c377958302ed4fb6a5e6045d4730c828", "8a035400ae6646a68f77b491742721e8", "fcb44463a880463ba461430b1bf954f7", "4061102ed3c1443492e06505bb0a4764", "4e99052438b44101b99052bc03633051", "a660681507f94467ab0a98132b620ae1", "d1fa066faad24bf7af2433c3352e92c4", "a1e6cbed730c46d6bd888bc7472fa2d0", "0bc32850e2684f75ad0b19cff3d695be", "8251291b22f24fc6b962676a0635ab7d", "2f1d60eb73e143d39eeed226652bd709", "d9972520ac374791a52781e4a33cef76", "79da2a4792e94280959888ad418c3da9", "1ffa5a12550c43b98ae8cf1a0ec0097a", "192d344ee57746088dea2f784452a079", "c17232b21f3e41b2b517ed18df340369", "90b2cbc1f786453fbe8c929e87683e12", "b2a1fff38a65479fb562b4d9aa6e7e3f", "346cc7dadcde480caa820f41a9ad3232", "c49ca6f45f894cddb3f175e9e25082b6", "43086fa3077a48e4812c3d7039d80358", "9df45d1371b740af9040688f6ac26acb", "68b1461dfd614c84b52857e736e96d6d", "cef261d6228c433d873117614288b426", "fd9d814b65534b88879d06344eee3b00", "9cf2b97751284580b549f1326b154974", "c6c39963abd9473d9bc6e7e33e9dd6d3", "bdac1a541bf64912bf155b6e135f9e79", "8d0109e476634dbca9623d49f362293b", "d3ec2950acaa4fa187aba1c7f1aa25e7", "3ead44401d404a35897eb5096d172e9b", "2cbc9c2629364400838ad00ecaac4f17", "53f9eeb59cbc4d5891e560ab27dadd6c", "5ece88e420cc439ab2a74522fc25a513", "c2040d3f7bbb4e989762259c81239688", "aa4a89f7567242e2bf3086769fb9d809", "d3b30e2e4df142c685196d0b554e82c5", "888ee75bacaa431dbcf0af7a77a4a683", "818c0cacd9d646ac964dab1c8a5ad58c", "a881b25f759446479f77cf8f66b80412", "d5d5886435924692b01487a0d1034cf5", "6516968a1e6b4b74bb5b05c665f068fe", "416d814e9d2e4213a77a2cd88e8bd48e", "4e25f8192d9c4eeab2d52979ff40cce0", "a8e5bb97c7434e2d9e10631e035060bf", "40d274d2e03f4dae8b520155ed0cc237", "62e20fa7e778453bb586a7e64ee0d105", "9d55e6ca994d4e34985048af22143090", "f1c9a130e2e6493a878f62d59ddd9da2", "14b4c774cc694535bf92cbbccb816f64", "838486a3ba3b44c4a09fd996087a9916", "423b3c4df58b4ed2ad3ad4efaa79a8a8", "853f975fc860403d8e5fbdb286cf437f", "67362f43370043e4b267ec525d5ba0c5", "3745cac1468643c8b0e2aaa6f0870d38", "b54ef661629c4ebfb3c7cfa24a953784", "fcbe678c1be6407abf904e46e9bd1bc1", "07fd5cf70dff4f39b04968d4ca0ac9c7", "870992d6fbf6463eb6eeab0dff0d30ed", "6aa7ab6cb2d44449826c9f79e8e9b65c", "a8bd6ceeac4e4f62b53c02088bdf3216", "e24bf61443a74036a8e70bd253e29c13", "2c85be90e2134c01962e53e409f0a1c7", "5900468406384b97a905c8f92921c5aa", "c14a4475a31f46ceaab49d64053bfe4c", "fdd002c651bc4b199f85718ee973db67", "d4408eaf85d34b0fa858edbbcc3da8ff", "ee575c6c3cb3441192c03d1c337cf1cd", "718b82004ab244e088b011b69082ec12", "00746cf4a6374cf0a4383ab7b8479d19", "4afc0001e94045cc8bab9d37550f394d", "ba373e8c15df4e9ebc2638229d7dc4f9", "504a774bb70945f699250da0e9aa3b79", "ef3fcf0677864cf499bb449feb196d8f", "6bbd90f72e474a3b9b83140f7ed672a9", "a629d019f3bf4dec8f5119c8f9b3a078", "22b707ac23a2418eb2f460a3951dfea8", "c56d9289b7674cceb2a808c04cbd1116", "6fa098cd64764251a68e4a2c5e7700c0", "957d09529ebd4cadb914947ddc06b75b", "30f2d66d28e74c58b5c4baecd1bbdb5b", "bacf808c10e44349bcb75c63f894323e", "54afc74dce9845ecbc4b817307e4db06", "90e8040c7ee74555ba2e8b4fbc10f0e3", "a1474bd17df44d12a09ba7f31e24c1e6", "51bf9300fce94578adfa3abfba2e1f12", "c77ef09c80884962b7a9822b6b7d532a", "e5c7f70448474644ab6ca1f3e1e3da28", "2d99da78c7b0462bb1f7c8020d99db16", "9dcbafaf753241f181c1a0239399e39b", "28265599c6c4436baf52b93d9e1dcc7b", "34b76d7f100e490d9fd773c48135d738", "a3ce12d8bb914bd5b9072c897eee8510", "72a2fc45f4ae4f218fe75c677e37ad17", "e57d92398f604928821240197bb85fae", "32f2cdca6b6c404eaf55257aab15b1c7", "bcda342e442247a09c3e82e0dbaa516f", "468a7d9bf6984703a95b0e957b1399f5", "a5394354a69049dc8faa819c8028eeb9", "56d20f0c62224fb08dfbdb59de0732c4", "99d6b13810e547df899764b5cc322338", "58d5c1b993b949eb921da30f8a42177e", "aeeeffd647ab4a56af27170a3b79886c", "ffdedfdc63b749edbb642f3a405f8cc6", "660c91b3a3fd43fca257eb17536002bc", "70e42ca8332d4677a30cd4a1f370e906", "cf657c7d02364eb3af9d2ff0b2d09122", "5ca1861876f046dc9e91e6f848bbbbbe", "35fd6a72a14e447fbf4c2f05ad3178c1", "902d7541d92f49fca480a7c0b91b446c", "d1237a7cc6b14e03b489b1d32cd6a1bb", "9273930ae37842fe8bf5cbbc79a4b64a", "073ae615bcf444d7853f6c2453b173f3", "db7bc65764fd42a1b91e98fa36e12ac4", "f869bc8048d2422b962f6c369405890b", "69769d6e333f4c78aae0873401039c6a", "29be0938d91648a08ca43a95b0461857", "fcc9b93e021740f8a159973f4fcfe402", "0c0d0d37d837422889bd7505fd733100", "727c35afed81442b88dcc540e7756203", "573016d874864ad581aa8fa55d5c5322", "ed1af53f71ba4846a07a3a2529268b1a", "55220a3e46c746c492c77526be16d681", "f47d2570a431457496e4bd0b3fc5b193", "80a33e2f4655441abc2f6caf859965b7", "709ae7d650d246489929b894631e24e5", "31e9fcc15e5844eca7bc4e8cd49c2ddc", "c532ee1c212a49cc868cca6dbd42f7cf", "c71e78e55af94e188deee7eab37d6eaf", "e6304e45fc774c0c8b5d9eb529fba1be", "0c67b87517c140b2bf7c2a84ca9aa84e", "d859be8cc862465f94368814ee6a78c7", "b3f24b137a444be1867c74bbd6671677", "cce7fa8b26f243c486e31be9971065b0", "e603007f8b70451ca815c95a9bcd8ec1", "f2da744225d947b5a127d5699aae1aec", "004ec8283c2146fc9a630f862c67bddc", "a82a58d659494eff9da7c5e0a62dc81e", "9bf216627cf64c93b0fa6c78d54be89e", "a549d9e7d0e3461f9b11fc262e11c5c0", "9dd3f0dcf0d7465f9edb3ecb5fa82b3d", "76829e8a8ad8483aa05eb1ba51168f8f", "3c935d68344b45e1a0b23241cb310a1e", "baaa3bbe38a04919bffa7a8de48b98ec" ] }, "id": "Vp9fiT9c0k8I", "outputId": "0c3d98ba-50f4-40e8-9dbc-be23c31a6290" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "=== MiniLM BASELINE (sin fine-tuning) ===\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n", "WARNING:huggingface_hub.utils._http:Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "modules.json: 0%| | 0.00/229 [00:00" ], "text/html": [ "\n", "
\n", " \n", " \n", " [404/404 01:28, Epoch 1/1]\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StepTraining Loss

" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "Batches: 0%| | 0/40 [00:00" ], "text/html": [ "\n", "

\n", " \n", " \n", " [404/404 01:31, Epoch 1/1]\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StepTraining Loss

" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "Batches: 0%| | 0/40 [00:00\n", "

\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
recall@1ndcg@1recall@5ndcg@5recall@10ndcg@10
MiniLM base0.4010.4010.5660.47880.6410.4925
MiniLM fine-tuned0.7340.7340.8530.79430.8900.7961
E5 base0.5620.5620.7530.65490.8020.6558
E5 fine-tuned0.7950.7950.8930.84280.9210.8444
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "summary": "{\n \"name\": \"tabla\",\n \"rows\": 4,\n \"fields\": [\n {\n \"column\": \"recall@1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.17786699150395124,\n \"min\": 0.401,\n \"max\": 0.795,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.734,\n 0.795,\n 0.401\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ndcg@1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.17786699150395124,\n \"min\": 0.401,\n \"max\": 0.795,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.734,\n 0.795,\n 0.401\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"recall@5\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.14590721937816056,\n \"min\": 0.566,\n \"max\": 0.893,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.853,\n 0.893,\n 0.566\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ndcg@5\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.16333464625322658,\n \"min\": 0.4788,\n \"max\": 0.8428,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.7943,\n 0.8428,\n 0.4788\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"recall@10\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.12556140596005871,\n \"min\": 0.641,\n \"max\": 0.921,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.89,\n 0.921,\n 0.641\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ndcg@10\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.15818248954925448,\n \"min\": 0.4925,\n \"max\": 0.8444,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.7961,\n 0.8444,\n 0.4925\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" } }, "metadata": {}, "execution_count": 21 } ], "source": [ "tabla = pd.DataFrame({\n", " \"MiniLM base\": metricas_base_1,\n", " \"MiniLM fine-tuned\": metricas_ft_1,\n", " \"E5 base\": metricas_base_2,\n", " \"E5 fine-tuned\": metricas_ft_2,\n", "}).T\n", "\n", "print(tabla.round(4))\n", "tabla.round(4)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 507 }, "id": "uxLqP4zC0k8K", "outputId": "f93360bd-9a13-4117-b202-5718d81f447d" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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/foZej2Eh4fL09NTmzZtUps2bW75PLp06ZLhdo0aNbRkyZIcO26LFi30zjvvKDY2VoGBgZKu9QJxd3dXs2bNJEleXl6SpHXr1qlx48a3fNWgvHnz6tNPP82w7PreUlkpV66c8/mTJG9vb5UtWzbDULMVK1aoRo0aKliwYIZzj4yM1NSpU7V58+ZcuxpQhw4dMkzuev3QuNDQUO3du1dHjhxR3759de7cuQzb1qtXT999953sdrscDofWrVunZs2aqUSJEs51goOD1aBBA/3666+5cj4AgNxFCAIAuC+MHDlSZcuWVVJSkhYuXKjNmzdn+CIUGxsrh8Ohjz76SB999FGW+0hISJC/v79iY2P16KOP/usxo6Oj9fnnn+vw4cNKTU11Li9VqtQt1X706FFdvnxZtWrVkiTt2rVL+/bt05o1a1SyZElJ14YGXB/K+Pr6ymaz6fz58xkuA/zOO+/IarUqOjo62wHImTNnbqne6/n5+f3rOqGhoYqMjHTebtmypS5duqTx48erTZs28vb2liRt2bJFkyZN0vbt25WSkpJhH+khSO3atdW8eXNNnjxZX3zxhWrXrq1mzZqpTZs2zuf76NGjSkpKUr169bKsJyEh4ZbPM2/evM460xUqVCjDXB93etzHHntMY8eO1bJly9SnTx85HA6tWLFCjRo1coYfAQEBeuaZZzRz5kx9//33qlmzppo0aaK2bdtmayiMxWLJ8FxkR/HixTMty+rc9+/ff8NzTw9GEhMTM8yj4unpqfz5899SPf/m+sBC+r+Q5+LFi5Kuzaki6abz6iQlJclqterKlSsqXbp0pvvLli1LCAIADyhCEADAfaFy5crOq8M0a9ZMXbt21SuvvKIVK1Yof/78zskZn332WTVs2DDLfaT/+p4d3333nYYNG6ZmzZopKipKPj4+slgs+uyzzzJNxvpvzp8/L29vb2fPkmPHjsnb29sZgEjXvvwWKVLEefvkyZMym82ZfsVv2rSpli1bpqlTp+q9996T2fzvc5w3aNDgluq93v79+29ru7p16+rnn3/Wjh079NBDDyk2Nla9evVSUFCQhg0bpuLFiytPnjz69ddf9cUXXzifP5PJpIkTJ2r79u36+eeftXbtWr322muaOXOmvvnmG+dz7ePjo/fffz/LY/8zzMiO7Fw15U6P6+/vr5o1a2r58uXq06ePtm/frhMnTmjIkCEZ1hs2bJjat2+vNWvW6Pfff9dbb72lzz77TPPnz3f2fMpJ2T33+vXrZ5rPJF2ZMmUkSU888USGyV9ffPFFDRgw4LbqstlsWdZ2o795h8OR4f9Dhw694dw9np6eslqtt1UXAOD+RggCALjvWCwWDR48WE8//bTmzp2r559/XgEBAZKuTQL5b7+EBwYG6u+//77pOitXrlRAQIAmT57sHCIjSRMnTrzler28vHT58mXnbT8/P50/f14XL17M8Cv29b+8z58/X9WqVcs0HKJZs2Zq0KCBhg0bpvz582vUqFH/evyZM2fecs13Kr03QHJysiTpp59+ktVq1SeffJLhl/xNmzZluX3VqlVVtWpVDRo0SN9//72GDBmiZcuWqVOnTgoMDNSGDRtUvXr1DENs7racOG6LFi00atQoHTp0SMuWLZOHh4cefvjhTOulX0GlX79+2rp1q7p06aJ58+Zp0KBBd3oatyUwMFDJycn/2rbGjRunq1evOm+nt8vr29A/FSpUyNmL43onTpxwbn8r0rfx8vK6ab3e3t7Kly9flleWOXz48C0fFwBwf+ASuQCA+1L65VNnzZqlq1evysfHR7Vr19Y333yj06dPZ1r/+nkMHn30Ue3bty/TFUek//sVOf0X6PTb0rVLbm7fvv2Waw0ICFBaWpoOHDggSYqIiJCvr6+GDh2qv//+WwcPHtTQoUNlt9t16tQpffjhh5o1a5YGDx6c5f7atWun//73v/r66681bty4fz1+ZGTkbf93u3755RdJ177MS1k/nulDm6534cKFDOtIcv6an/7LfYsWLWSz2fTxxx9nOm5aWlqWX6hzQk4ct3nz5rJYLFq6dKlWrFihhx56SJ6ens77L126pLS0tAzbhIaGymw2u7TnQosWLbRt2zatXbs2030XL1501lyjRo0Mfz/pgUR6mJfVYxQQEKC//vorw/n9/PPPOnny5G3VWqlSJQUGBurzzz/PED6mS38tsFgsatCggVavXq0TJ04474+JidG6detu69gAgHsfPUEAAPetqKgoDRw4UIsWLVKXLl30xhtvqGvXrmrTpo2efPJJBQQE6OzZs9q+fbtOnTrlnOQyKipKK1eu1MCBA9WxY0eFh4frwoUL+umnnzRq1CiVL19eDz30kFatWqX+/fvroYce0rFjx/T111+rXLlyzt4N2eXh4aE6depowYIFGjFihPLly6d33nlHL7/8slq3bi1Jat26tapXr66PPvpIwcHBmjZtWobJKv+pe/fuunTpkj788EMVKFBAffr0uf0H8g79+eefzl//0x/HP/74Q61atVJwcLAkqX79+sqTJ4/69Omjp556SpcvX9aCBQvk4+OTYc6S6OhozZs3T82aNVNgYKAuX76s+fPny8vLS40aNZIk1a5dW507d9Znn32mvXv3Ovd95MgRrVixQiNGjNBjjz2W4+eZE8f18fFRnTp1NHPmTF2+fDnTJZA3btyo0aNH67HHHlOZMmVks9n03XffyWKxqHnz5jl+TtkVFRWln376SX369FH79u0VHh6ulJQUHThwQCtXrtSaNWtuOhwoMDBQBQsW1Ndff638+fPL09NTlStXVkBAgDp16qSVK1fqueeeU4sWLRQbG6vvv//+loavXc9sNuutt95S79691bp1a3Xo0EH+/v6Kj4/Xpk2b5OXl5Zw8dsCAAVq7dq26deumLl26yGaz6csvv1S5cuVueygYAODeRggCALhvPfroo85ffJ988kmVK1dOCxcu1OTJkxUdHe2ci6NixYrq37+/c7v8+fNr7ty5mjRpkn788UdFR0fLx8dH9erVc05C2qFDB509e1bffPON1q1bp3LlymncuHFasWKF/vjjj1uutXfv3oqKilKbNm1UuXJlNWjQQL/88ov27dsnX19flSlTRvv27VP+/PmzPQSgT58+SkpKcgYh3bp1u+W6csKcOXOc/86TJ48CAgI0aNAgRUVFOZcHBQVp4sSJmjBhgt599135+vqqS5cu8vb21muvveZcr3bt2tq5c6eWLVums2fPqkCBAqpcubLef//9DI/L6NGjValSJX399df68MMPZbFYVLJkSbVt21bVq1e/a+eaE8dt2bKl1q9fr/z586tx48YZ7gsLC1ODBg30888/Kz4+Xh4eHgoLC9O0adNUtWrVu3BG2ePh4aE5c+bos88+04oVK7R48WJ5eXmpTJkyGjBgwL9O2ponTx6NHTtWH3zwgd58802lpaVpzJgxCggIUMOGDTVs2DDNnDlT77zzjipVqqRPP/1U77777m3XW6dOHX3zzTf6+OOP9eWXXyo5OVl+fn6qXLmyOnfu7FyvfPnymjFjhsaMGaOJEyeqWLFiGjBggM6cOUMIAgAPKJPjn31OAQDA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NbePdzelpqZq0aJFWr58uWJiYmS32xUQEKBHHnlEXbt2lYeHR4b1V61apa+//lq7d+/W+fPntXjxYlWoUCHDOlevXtXYsWO1bNkyWa1WNWjQQG+88cYNL68MAAAAAAAhSDaZTBbZz78ipcXc/YO5BctcePwd7cJqtcrd3T2HCrp9cXFx6tevn0wmk7p06aKwsDB5enrq0KFDWrRokebOnasZM2aobNmyzm2Sk5NVvXp1tWjRQv/973+z3O8777yjX3/9VRMmTFCBAgX0v//9Ty+++KK+/vrr3Do1AAAAAMB9hhDkVqTFSGl7XF1Flnr06KGQkBBZLBYtWbJEoaGhev311/Xee+9py5Yt8vDwUP369TV8+HB5e3tLkux2u2bMmKH58+fr5MmT8vX1VefOndW3b19J0rhx47R69WqdOnVKvr6+atOmjfr37688efJkq6akpCRFRUWpVatWeumll2QymZz3lS9fXi1bttT8+fMVFRWl6OhoFSpUSJLUrl07SdKxY8duuN+FCxfq/fffV7169SRdC0Vatmyp7du3q2rVqrfzEAIAAAAAHnDMCfIAiY6OVp48eTRv3jwNGTJEPXv2VMWKFfXtt99q+vTpSkhI0Msvv+xcf/z48Zo2bZr69eunZcuW6f33388wnCR//vwaM2aMli5dqhEjRmjBggX64osvsl3P1KlTFR4eroEDByopKUmvvPKK6tevr6eeekqzZ8/Wc889pyeffFI1atTQrFmzsr3fXbt2KTU1VZGRkc5lwcHBKlGihLZv357t/QAAAAAAjIWeIA+QMmXKaOjQoZKkjz/+WBUrVtTgwYOd97/zzjtq3LixDh8+LD8/P82ePVsjR45U+/btJUmBgYGqWbOmc/3rJzktVaqUDh8+rKVLl6p3797Zque7777T9OnTJUljx47V8ePH9fHHHyshIUEjR450DoHp0KGDPvzwQ7300kvZ2u/Zs2eVJ08eFSxYMMNyHx8fnTlzJlv7AAAAAAAYDyHIAyQ8PNz573379mnTpk2qVq1apvViY2OVlJQkq9WqunXr3nB/y5Yt0+zZsxUXF6fk5GSlpaXJy8srW7WcP39ely9fVmhoqCTp559/1pQpU1SlShVJ0v79+7V+/XpJkp+fny5cuJDt8wQAAAAA4HYQgjxArr/KSnJysh5++GENGTIk03p+fn6Ki4u76b62bdumIUOGaMCAAWrQoIEKFCigpUuXaubMmdmqxWazKW/evM7bqamp8vT0dN6+/t+7d+9W6dKls7VfSfL19VVqaqouXryYoTdIQkKC/Pz8sr0fAAAAAICxMCfIAyo8PFx///23SpYsqdKlS2f4z9PTU2XKlFG+fPm0cePGLLfftm2bSpQoob59+yoiIkJlypTRiRMnsn38IkWKKDU1VWfPnpUk1ahRQ9OmTdOVK1cUHx+vBQsWSJK2bt2qCRMm6Jlnnsn2vitVqqQ8efJow4YNzmWHDh3SiRMnmBQVAAAAAHBDhCAPqK5du+rChQsaPHiwduzYodjYWK1du1bDhw939tLo3bu3xo0bp8WLFys2Nlbbt293hhOlS5fWyZMntXTpUsXGxmr27NlavXp1to9vNpvVpEkTffXVV5KkESNGaO/evapWrZratGmjyMhI/fHHH3rttdc0YsQI51VepGtDafbu3auYmGuXIz58+LD27t3rnO+jQIEC6tixo8aOHauNGzdq165deu2111StWjVCEAAAAADADTEc5la4Bd83x/H399e8efP0/vvvKyoqSlarVSVKlFDDhg1lNl/Lvvr16yeLxaKJEyfq9OnT8vPz01NPPSVJatq0qXr27KnRo0fLarXqoYceUt++fTV58uRs19C/f3916tRJVapUUePGjbVs2TKdOXNGhQoVkt1uV58+fZyX673eTz/9pOHDhztvDxo0SJL04osvasCAAZKk1157TWazWS+99JKsVqsaNGigN95447YfLwAA8OC5fqgwAACSZHI4HA5XF5GbbDabtm/frqpVq8pisWS478qVKzp8+LDKli2rfPnyZbjP4bDJZMq4/t2U28e7W9atW6fBgwerbdu26tSpk0JCQiRJBw4c0IwZM+Tt7Z0h8Librly5okOHDiklJSXL5x/AvaPNvDnafea0q8u4qbah5TXhsVayn20npe1xdTk35lZRZt/Frq4C+Fc2u10W8/3RSfmeb/cSbR/qW2OoDm477OoybujhLg302tyBvOfnJIO3+5t9178ePUGyKbcDiQchAJGkBg0aaOHChfr444/VrVs3JScnS5K8vb3Vvn17vfDCCy6uEAAA3AssZrMGrVyqg4mJri7lhh4qXUavRDZ0dRkAgDtACIK7LiAgQGPGjNHbb7+ts2fPymw2y9fX19VlAQCAe8zBxMR7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ymazafPmzapfv76CgoK0bds27d27N0MIkj9/fm3evFnVq1fXsGHD9MEHH2j48OHy8fHRvn375O3trW7dujknUHV3d6eXN+4IIQicbjax4b59+7Rq1SpJUnR0tJo3by5PT09JktVqVVBQkLPb21NPPZXl0JlatWo5h7ikBy5hYWGy2Ww6e/aspGszvru7u+vChQvy8PBQdHS0ihQpoh07dujgwYMqV66cOnToIIvFopo1a6pQoUJ36dEAjCur8f83CkO8vLz08MMPa+7cuRo/fryaN2/uvC8oKEiHDx/W8ePHnZewDQ8P165du3TgwAHnlWA+//xzHT9+3BmC1KlTR3PnztXu3btVpUoVde7cWc2aNdMPP/wgk8mk//3vfwoODs6FRwIwhs2bN2vx4sVau3atzp49qxIlSujJJ590Tixct25dnT59WsHBwbp06ZL27dunoKAg5xWbrpf+OlGzZk15enrqwoULzvu8vb0VGBio3377TdK11w+Hw6HY2FgVKFBAv/76qxwOh1JSUvTLL7+oTZs26ty5sy5cuKBKlSplOeEh834Ady69l8e/veebzWZVq1ZNf/zxh+rWras33njDuV6ZMmVkt9u1detWNWvWTNK13l/FixfXunXrVL9+fYWFhSlPnjzatWuXs1d46dKlVbx4cf3555964YUXVLNmTc2ePVtr1qzRqVOnNHToUFWqVCmXHgkYBSGIQVmtVk2ePFmPP/64goODZbfbNX36dFWtWjXLZLVcuXKqWbOmkpOT9eeff8pqtapz586KiYlRiRIlFBISosuXL2v9+vV66qmnsjxmvXr1NHbsWO3fv985Gaq3t7eOHTvmTIObNWumLVu2qGvXrkpISFCtWrX0n//8J8MvPYz1Be6u64e/7du3T6mpqc4hZ9K17vHXrzN8+HBt375dGzduVPPmzZ3zAlWrVk3btm1TTEyMMwSpUqWKPvroIx06dEjStdeFTz75REePHnX+whwWFiYvLy+lpaU5A9P0X4AB5Kzp06fr/fffV61atTRy5EhVrVrVOc4//VfhypUra+zYsWrbtq1sNpv8/Pzk7u6udu3aqUuXLlnOC1K1alXly5dPO3bsUIsWLSRd+6EjLi5OpUuX1pUrVxQZGanGjRtryJAhunDhggoXLqyRI0eqR48eqlChgqRrYQqAuyv9/TwmJkYnTpxQnTp1nENU//me3759ex04cEC7du3S4cOHFRQUJEkKDAyUv7+/Nm7c6AxBihcvLm9vb+3YsUPStWGw/v7+iomJcR67cOHCKlWqlOLi4nT58mXlz59fbm5uGX5UAXIaIYhBWSwWHTp0SCkpKZKufWhZsGCBDh8+nGUIUrRoUfn7++vcuXOqX7++3n//fT3++OPy9PTUjh07NHjwYJ0/f17ff/+9c///FBQUpBIlSmjKlClyd3dX9erV9d1338nhcDi/IDVo0EDFixfX1q1bVa5cuQzdaAHcOqvVKrPZnGmuHpvNJpPJlGUPMKvVqs8++0yzZ8+Wh4eHvL29Vbt2bT399NMqVapUhn0dPXpUpUuXVt26dfXjjz/q6tWrzg9OVapUkZubm/bu3ev8QHTu3DldvnxZBw8elNVqValSpWSz2bRz5061aNFC+fLlkyR98803Wc4vBCBnBQUFqXr16urSpYuaNWvmvOKD9H+9LGrUqKHatWurZs2aioyMVGJioqKjozVmzBjVqFFDoaGhGfaZHl5WrFhR0dHRCgkJUcuWLXX8+HFt27ZN3bp1c7b1d999V1u3blX+/Pm5khOQAxISEuTj45Nh2T+v5PJPP/zwgz744AMlJyfLz89PxYoV0zPPPKPIyMgM78XpvbIjIyO1cuVK54TEklSiRAkFBQVpy5YtzvWTk5MVExOjpKQknTt3TkWKFFGRIkW0ZcsWHTt2zDl8fcCAAbznI1fdePwDHjjpv+hI10KKyZMnZ+he1q5dO+3YsUNXr17NtG2hQoUUHh6uAwcOqGXLlgoODtaYMWOUkpIiu92uggULqlKlSkpOTtbu3bszHU+S8uTJo4ceekibN2/W/Pnz1aFDB40YMUJPPPGEatWq5VwvODhYnTp1IgABbtOWLVs0e/ZsnTx5UpUrV9bBgwczrWOxWGQ2m3Xp0iVdunQpw30rV67Ur7/+qvHjx+u3337Ta6+9pri4OE2ePFmSNH/+fHXq1Enh4eEaMWKEJKlx48Y6evSoTp06Jela+y9VqpSqVaumb7/9Vr/88osOHDigpUuXKjAwUEePHtXhw4clSZMmTdLLL7/s/FIkiQ9DQC4JCwuTh4eH873bbDZr7969mjx5sr799ltJUrFixdSvXz917NhRpUuXVrVq1TR69GgVL15c0dHRstlsGfaZ/v7/0EMP6fz58/ruu+/Uv39/tW3bVqGhoWrdurVz3cKFC6tJkyYEIMBt2rdvnz788ENdvnxZjz32mBYvXpypTZrNZpnNZlmtVsXHx2fafs6cOerZs6c2btyoL7/8UqGhoXr77beVkpKirVu36qmnnlL16tX14osv6tSpU6pRo4YcDoeOHj3qnFjZw8NDTZo00f79+zVp0iTt379f3377rUJCQmS1WrVx40ZJUs+ePTVt2rQM8/fxno/cxl/cAyC9G+revXvl4+OjokWLZggg0q/g8M+xfSdOnNCnn36qwYMHq3DhwmrQoIGmTJmSIdVNZ7FYVL58eSUnJ+vvv//WyJEjNWjQIL3xxhuqUaOGbDabSpYsKT8/P/3+++8KDw/Pcl6QChUqqFy5curdu7cOHjyoWrVqZTmmGMCtu3r1ql555RX98ccfeuihh9S+fXutW7cuwyXsHA6HTp8+rePHj2v48OE6e/as6tevr65du6pu3bpKTk7W5s2b1bRpUzVq1Ejx8fGKjY1VTEyMTp8+rdGjR+vcuXN69NFHNXr0aOdrRaVKleTl5aV169apW7duzuM988wzSkhI0KhRo3TmzBn16dNHb7/9try9veXv7y+Hw6HKlSvn+mMF4JqSJUuqZMmS+u2337R7927t27dPZrPZOflw+lwB18/Dk76sWrVqOnDggCwWS5ZDYsLDwxUSEqI+ffooNTVVo0aNYuJyIAdNmDBB3377rby9vdWzZ099+eWXzvf89HZ67NgxXb58We+99542btyoSpUqqXXr1urRo4ckaffu3cqbN6969uypxMREbd68WYcOHVJMTIy2b9+utLQ0NWjQQEOHDlVYWJjzSizpk5y2adNGhQoVUmpqqurVq6eXXnpJK1eu1KeffqrGjRurX79+eu2111SsWDE5HA4FBAS47PEC0pkc//y5HveFf05Y9OOPP2r27Nl6+eWXVaNGjUzrp6WladeuXfL19XV+ADl27JiaNWummTNnql69erp69aoaNmyooUOH6oknnsh0rKNHj2rAgAFq2rSpBg4cqAULFuj1119X7dq1NXv2bCUmJmrcuHE6ffq0ZsyYkeXVZtJfkAHcmvRfWm42gfHPP/+sDz74QG+88UaGcfTXX7XprbfeUnR0tLp166bg4GAVL15ckydP1qlTp/Tjjz/q8uXL6tSpk3x8fHTy5EklJiYqMDBQDRs2VL169VSvXr1MgWp6W0+fGyQ0NFRHjhxR586d1bVrV126dEmnT5/OFK4CuDfMnTtXn376qWrXrq1evXopMDDwXycej4mJUb9+/VStWjWNHTs2lyoFjOFmV2lJd/r0afXv319NmzZ1Xopekk6dOiWLxSI/Pz+tWbNG/fv3V8eOHRUcHKzIyEgtXbpU06ZN0+LFi1W+fHmNGTNGP/30k/LkyeO83HSdOnXUqFEj1atXL0MvTen/PssvWLBAX375pYoWLaqYmBjVrFlT7733nqxWqxISEuTr66s8efLcnQcIuEP0BLnH3Wh2ZpPJpPj4eJ0/f15hYWFq3LixHnnkkQzrHDp0SKmpqVq3bp2mTp0qs9msYsWKadiwYapTp45KlSqlcuXKaePGjapXr57y5s2rKlWqaO3atc4Q5PqMzMfHR5UrV9bvv/+ugQMHqkWLFgoODlbJkiUlSUWKFFFAQIDWr1/vvCTmPxGAALfn+ktY/tP1k4eazWbFxsY65+pISUlR7969nT1C6tatq7lz5+rixYtq3bq13Nzc5O3trbZt22rz5s2qVauWChYsqDNnzujFF19Uo0aNMvTWSv/wk9Vr0yuvvKKlS5dq3759eu6555yTGHt5eWW4jDWAe0tISIhKliyp6tWrKyIiQjabLdOXsIsXL2rnzp0qW7asDh06pCVLlqh48eIaPHiwK0sHHhhZXZntRuuZTCYVLFhQfn5+OnHihH744QclJSWpZcuWat68uYYNG6YuXbqoYcOGslgs2rt3rwYPHiwfHx+VL19eS5cu1dKlS1W+fHkVLFhQdrtdrVu31lNPPaWCBQs6h6ekzyWSVU+vxx9/XP7+/vr555/VpEkT50Sm7u7uXLYa9zzmBLnHZfUiaLPZNGHCBDVu3FgffvihbDab3N3dlZiYqI0bNzrH97/22mvq16+f9u3bp5kzZyo6OloeHh6aMmWK4uLiJF27bO369euVlpYm6dq4/q1btzr3cf0XLy8vL1WtWlVHjx6V1WqVl5eXqlev7uzSbjKZ1KVLF/34449ZBiAAbs7hcGQax5vu2LFjeueddzRnzhxJcrZZSc5xvu+++64OHTqk1157TV999ZVsNptCQ0Pl7u6uAwcOSJJCQ0OdExCmf8gpXbq0wsLC9OOPP0q6dlWHvHnzKiwszBmApKamatmyZVqwYEGm2tI/EPn6+qpnz54aM2aM2rRpo7x58+bQIwPgbipXrpyKFCmiXbt2SZLzS9j1n0GsVqvmzJmjjh07asiQITKZTPrPf/7jvLobgFvzz87411+BZfv27Zo8ebJWr16daV2TySSHw6FPPvlE69ev14IFCzRlyhRZrVYVKlRIQUFBOnHihC5duiR3d3cFBQUpKChIBQoUcO4jMjJSW7du1dWrVxUeHi5PT08VLFhQ3t7ezs8Gv//+uyZMmJCp7vTXBXd3dzVq1EhvvPGGunTpwvB23FcIQe5xW7Zs0a+//ur8wpOeEG/btk2FChWSyWRyXmryiy++0OjRo7Vnzx5J1yY6TZ/fo2LFiipWrJiGDBmi+Ph47dy5U9K10GP//v06c+aMpGuXqzxz5oxzwkJJunDhgjZs2KD4+HiVKVNGSUlJ2rp1q6TM3fWKFClCAALcpus/AEn/176sVqvmzp2r2bNna/78+ZIyTyLm7u6uGjVqKDg4WG3bttW8efNUp04d+fv7q3Tp0lq3bp0kyc/PTyEhIdq0aZPzGO7u7qpbt642bNggSercubNKlCihqKgoLViwQAsXLtTQoUM1e/ZsZ7fYm/1KBeD+4u3trcDAQJ09e1YXLlxQYmKiFixYoD59+qhevXratGmTfH191b9/fy1YsEAbN27Uu+++q/DwcFeXDtw30nt6pPeuuP59NC0tTcuWLdPTTz+typUrq1evXtqxY4dzfo/r103/4TEgIECtWrVSSEiIPvnkE/Xs2VPStTm69uzZ4/xsX79+fR04cEAXL1507qNJkyY6dOiQDh06pMjISLVs2VLvvPOO3nrrLS1evFgjRozQ+PHjlZyc7LyaHPAgIQS5h33++efq1q2b+vXrp82bN0v6v1+KixUr5hxfnz6je926deXp6ens5VG1alV5e3tn+JWmQoUKypcvn2JiYmS321W9enVJcv76ExQUpFKlSmnJkiWaO3eunnvuOT322GN65pln9MsvvygiIkKrV69W3bp1bzhUB8CNXX/5yX86ePCgXnrpJfXv319Sxl9bdu3apYYNG+ry5cvONn79L0NpaWkaNGiQHn30UR0/flx///2387769etrw4YNstls8vT0VN26dfX7779nOHbDhg0VFxenhIQElS1bVqNGjVLXrl21ZMkSTZs2TQULFtTQoUPVrl27nHooANxDgoOD9ddff6lRo0Zq0KCBpk+froCAAE2aNEl16tSRw+FQREQEE5sCtyn9svRms1kXL17U4sWLNW3aNEnXel999tlnOnPmjL744gtt375dU6dOVdWqVbPcj91u1xNPPKH27dsrX758zh8xpGvv+XFxcc6rtT3yyCM6dOiQ87Z07UdPh8Oh/fv3y93dXX379tW7776rc+fOacaMGbpy5YoGDhyoYcOGMZQdDyTmBLmHBQUFqXbt2oqJidG8efPk6+urkJAQHTlyRCkpKXrssce0Zs0axcTESLqW/Lq5uTlvp4/zO3HihHOODg8PD5UtW1YHDx7UmTNn5O/vr/DwcP3+++965JFHZDKZVL16dc2ZM0eBgYGqW7euoqKiVK9ePWddJUqUkMQvwcDtuNnEpvv27dOqVaskSdHR0WrevLk8PT0lXesNEhQUpOTkZP3+++966qmnMlyBKX2/1apV0w8//KCjR486f6Vt1KiRvvzyS506dUolS5ZUnTp1NH36dJ05c0Z+fn6Srs0JcOXKFW3atEktW7ZU0aJF9eKLL+r555+ndxdgADVq1NDzzz+voKAgNWjQIFO75z0fuDObN2/W4sWLtXbtWp09e1YlSpTQk08+qZSUFHl4eKhu3bo6ffq0goODdenSJe3bt09BQUFZDjNJb48lSpSQr6+vduzYoS5dukiS6tSpo6tXr+rIkSOqV6+eatSoITc3N+3fv9/5ucDDw0Oenp5av369Hn30UXl6eqpNmzZq3rw57/kwBHqC3MOCg4NVqFAh52VkJ0+eLOlat9Xff/9drVu3lp+fn2JjY3Xp0iUVLFhQpUqVUlxcnE6cOCFJqlixovbs2aPExETnfmvVqqUTJ04oNjZWkhQREaGffvpJVqtVkvTqq69qy5YtWrVqlUaPHp0hAAGQfVarVR988IEzmLTb7Zo6dar++OOPLNcvV66catasqYoVK+rPP//U999/L+naVRhKlCihkJAQFS9eXOvXr8+0bXoIUrVqVVksFh06dMjZUyQiIkLu7u7asWOHJDl7ka1Zs8a5vZ+fnz799FNFRkZm2C8fhgBjCA4O1nPPPacmTZrQ7oEcNn36dPXo0UOxsbEaOXKkfvvtN61evVrPP/+8c5hp5cqV9eeff6pt27Z67LHH9Pbbb6tv376aN2+epMzzgkhS8eLFFRgYqKNHjyolJUXStaHpJUuW1N9//61z585JkgIDA7Vq1SpduXLFue24ceM0cOBA548tEu/5MA5CkHtYQECAChcurMuXL6t79+7avHmzVq1apcTERJUuXVqpqamKiIjQmTNndPDgQUly3k6f06NevXo6duyYTp486dxv1apVdezYMR0/flyS1KdPHy1YsMD5wufj4+O8BjiA25ceRqR/MDGbzVqwYIGio6OzXL9o0aLy9/dX4cKFVb9+fX322We6cuWKPD09tWPHDjVu3FhlypTR/v37nfu/nsPhcPb2Onz4sM6ePStJKlCggMqWLatly5ZJuvYBqXv37hl+XTKZTHrooYdUuHDhnH4YAAAwtKCgIFWvXl1dunRRs2bNMr3/Std6Y9WuXVt9+vTR3LlzNXLkSIWFhWnMmDE6cOBApt5Y6cPSg4ODdeXKFeecgNK1QGXjxo3OH0V79eql2rVrZ5hPrEaNGs4rPAJGQwhyjytXrpwSExOVN29e9e/fXytXrtSECRNUrlw5eXl5KTQ0VKmpqc4vRdWqVVNaWpozBKlbt64OHTqU4YUxPDxc33zzjXNsv7e3t/z9/XP93IAH0fW/1FgsFk2ePFmVKlVyLmvXrp127Nihq1evZtq2UKFCCg8P14EDB9SyZUsFBwdrzJgxSklJkd1uV8GCBVWpUiUlJyc75wK6/njp841Ur15dMTExGSY4fvLJJ1WhQgXnRKjDhg1zXsIWAADcPWFhYfLw8HC+d5vNZu3du1eTJ0/Wt99+K0kqVqyY+vXrp44dO6p06dKqVq2aRo8ereLFiys6OvqGV48LCQmRm5tbhl6izZs3V9OmTVWsWDFJUocOHRQVFaU8efLc5TMF7g+EIPe48uXLO1/YunXrprCwMK1YsUIHDx6Ul5eXypUrpwIFCji/7FSsWFFpaWn666+/ZLVaFRAQoP/85z9q1KiRc58Oh0OBgYGuOiXgvpQeNuzdu1enT592Lkv/L6vZ3iXpxIkTGjlypM6fPy9JatCggQ4fPuzsiXU9i8Wi8uXLKzk5WX///bdGjhyp3bt364033lCNGjVks9lUsmRJ+fn5OSc2vX6i1et/TfLw8Mgw/0jnzp3Vr18/xvUDAJDLSpYsqZIlS+q3335Tr169nHPubdy4Ub6+vs6AIzg42NkzO31ZtWrVdODAAVksliyHxAQEBCg4ODjDsJZq1arplVdekY+PT26dInBfIQS5x4WEhMjb21vbt2+XJPXs2VOtWrVS586dJV3rPl+wYEFt375d8fHxcnNzU69evdSlSxflyZNHDodDvXr1UkBAgHOffAkCsuefHzZ+/PFHvfPOO86rs5hMJud/ZrNZaWlp2r59u44dO+bczm63a/78+dq7d6+ka8Gml5eX8zLT/zxWyZIlVapUKS1btkwBAQHq3LmzNm/erNOnT8vb21s+Pj4KCwtzXuL2+vacHnpERERo3rx5qlmz5l14VAAAwK0KCwvT+fPn5ePjo2nTpmn58uX68ssv9dBDD2V5BRaLxaKYmBht27bNOYl5Vp/hfXx8NGbMGEVFRd31cwAeFFwd5h7n7e2twMBAHTx4UGfPnpWvr6/Gjx8v6f/GArZt21Z2u905lp9LWAK35kaXezaZTIqPj9f58+cVFhamxo0b65FHHsmwzqFDh5Samqp169Zp6tSpMpvNKlasmIYNG6Y6deqoVKlSKleunDZu3Kh69eopb968qlKlitauXasnnnjCefx0Pj4+qly5sn7//XcNHDhQLVq0UHBwsHPcbpEiRRQQEKD169c7r/oEAADubSEhISpZsqSqV6+uiIgI2Ww25/t/+meQixcvaufOnSpbtqwOHTqkJUuWqHjx4ho8eLArSwceOPQEuQ8EBQUpNjbW2RvEZrPJbrc7XzCbNGmiZs2aKW/evC6sErh/ZRWA2Gw2TZgwQY0bN9aHH34om80md3d3JSYmauPGjbp06ZIk6bXXXlO/fv20b98+zZw5U9HR0fLw8NCUKVOcPUZq1aql9evXKy0tTZLUuHFjbd261bmP9N4kkuTl5aWqVavq6NGjslqt8vLyUvXq1eXv7+8Ma7p06aIff/yRAAQAgPtEuXLlVKRIEe3atUvStZ4e17//S9euKjdnzhx17NhRQ4YMkclk0n/+8x8VLVrUVWUDDyRCkPtA9erV9fTTTyssLEzStRfN68f6A7gzW7Zs0a+//uoMKex2uywWi7Zt26ZChQrJZDLp0KFDkqQvvvhCo0ePdk423K5dOx0/flxBQUGqWLGiihUrpiFDhig+Pl47d+6UdC302L9/v86cOSPp2lWbrr+KkyRduHBBGzZsUHx8vMqUKaOkpCTnkJl//lJUpEgRAhAAAO4j6b27z549qwsXLigxMVELFixQnz59VK9ePW3atEm+vr7q37+/FixYoI0bN+rdd99VeHi4q0sHHjgMh7kPhISEKCQkxNVlAA+kzz//XO+9954sFoumT5+uevXqyeFwyGazqVixYrJarZKk3bt3KyQkRHXr1tX69esVFxen2rVrq2rVqvL29s7wK02FChWUL18+xcTEyG63q3r16pKkXbt2qXjx4goKClKpUqW0ZMkS7dixQz///LN2796tc+fOadSoUWrXrp1Wr16tEiVK3HCoDgAAuL8EBwcrOjpajRo1UmpqqgICAtSoUSM999xzqlmzphwOhyIiIlxdJvDAIwQBYGhBQUGqXbu2YmJiNG/ePPn6+iokJERHjhxRSkqKHnvsMa1Zs0YxMTGSpEqVKsnNzc15u3z58ipYsKBOnDjhnKPDw8NDZcuW1cGDB3XmzBn5+/srPDxcv//+ux555BGZTCZVr15dc+bMUWBgoHOW+Hr16jnrKlGihCQmMgYA4EFRo0YNPf/88woKClKDBg0y9erkPR/IHYypAGBowcHBKlSokGrVqiVvb29NnjxZ0rVuq7///rtat24tPz8/xcbG6tKlSypYsKBKlSqluLg4nThxQtK1S1Pv2bNHiYmJzv3WqlVLJ06cUGxsrKRrV2z56aefnD1LXn31VW3ZskWrVq3S6NGjMwQgAADgwRMcHKznnntOTZo0YVgr4EKEIAAMLSAgQIULF9bly5fVvXt3bd68WatWrVJiYqJKly6t1NRURURE6MyZMzp48KAkOW+nz+lRr149HTt2TCdPnnTut2rVqjp27JiOHz8uSerTp48WLFjg/NDj4+Oj/Pnz5/LZAgAAAMZGCALA8MqVK6fExETlzZtX/fv318qVKzVhwgSVK1dOXl5eCg0NVWpqqvbv3y9JqlatmtLS0pwhSN26dXXo0CHnZKmSFB4erm+++cZ5yWpvb2/5+/vn+rkBAAAA+D+EIAAMr3z58nJzc9P69evVrVs3hYWFacWKFTp48KC8vP5fe/ePolYUxmH4F0RsMiIyaOWtRgRLC8spBmvb6dRNuIzZ251SsLITXIGod4qAEEiXBBPO8yzg8J325fz5npeXlzw9Pd2jx3Q6zeVyyefnZ87nc0ajUbbbbV5fX+9rNk2TqqoetSUAAOAXPIwKFG88Hqff76eu67y/v2e9Xme322U+nydJBoNBut1u6rrO8XjMcDjMZrNJVVVpt9tpmiabzeanNT1uBgAA/x4RBChev99PVVXZ7/c5nU55fn7Ox8dHkty/qF0ul7ndbun1eklyv+YCAAD8P1yHAciPr3IPh0Pquk6SXK/X3G63+4mOt7e3LBaLdDqdB04JAAD8DidBAJLMZrOsVqtMJpMkSavVevBEAADAn/ataZrm0UMAAAAA/G2uwwAAAABFEEEAAACAIoggAAAAQBFEEAAAAKAIIggAAABQBBEEAAAAKIIIAgAAABRBBAEAAACKIIIAAAAARRBBAAAAgCKIIAAAAEARRBAAAACgCF+7EqDxg2ldXQAAAABJRU5ErkJggg==\n" }, "metadata": {} } ], "source": [ "# Visualización comparativa de recall@k\n", "import numpy as np\n", "metricas_recall = [c for c in tabla.columns if c.startswith(\"recall\")]\n", "tabla[metricas_recall].plot(kind=\"bar\", figsize=(11, 5), colormap=\"viridis\")\n", "plt.title(\"Recall@k — Baseline vs Fine-tuned\")\n", "plt.ylabel(\"Recall\"); plt.xticks(rotation=15, ha=\"right\")\n", "plt.legend(title=\"k\"); plt.grid(axis=\"y\", alpha=0.3)\n", "plt.tight_layout(); plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "ATCU8uN10k8K" }, "source": [ "## Prueba cualitativa: búsqueda semántica\n", "\n", "Más allá de las métricas, probamos el mejor modelo con consultas reales para *ver* que\n", "los vecinos tienen sentido. **Cambia `mejor_modelo`** por el ganador según la tabla." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 492, "referenced_widgets": [ "89b41f7629064a04a27bf6ecf38b2ee8", "a5fa9571da5e43538a0404c9f37e585f", "d4a7c2de222544b7b5280dc904ac9e78", "9f288628c8294e5f8812b9c4b8d50336", "13a3ee202c0f4577906fe2d26dbbea56", "ace8e9e7a63b475d92beaf875dbbd3fa", "559cec3b5a28425484514633c09bacb0", "277ead047fe64e90845f2a79e4d7a920", "9175f72bbe094796ae6a738b336651d0", "d05b20f097c14c1ba7486c5b695e237f", "693b3081ac4540c48176e64f721f2f6b" ] }, "id": "AS2MtI3f0k8K", "outputId": "77fe7493-2246-42bf-be30-b027da27c85f" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "Batches: 0%| | 0/118 [00:00