From fc034da8bd77bc4adadeaa97a2a372af22822a2a Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:23:20 +0100 Subject: [PATCH 01/11] Add files via upload --- .../travel_itinerary_preferences_dataset.csv | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 examples/data/travel_itinerary_preferences_dataset.csv diff --git a/examples/data/travel_itinerary_preferences_dataset.csv b/examples/data/travel_itinerary_preferences_dataset.csv new file mode 100644 index 0000000000..f3bf32a56d --- /dev/null +++ b/examples/data/travel_itinerary_preferences_dataset.csv @@ -0,0 +1,101 @@ +Location,Duration,Preferences +Vancouver,5 days,"nature, cultural experiences, adventure" +San Francisco,1 week,"family-friendly, shopping, photography" +Tokyo,1 week,"shopping, relaxation" +Marrakech,1 week,"local cuisine, beach, adventure, relaxation" +San Francisco,3 days,"budget-friendly, adventure" +Marrakech,5 days,"relaxation, wildlife, nature" +Prague,3 days,"beach, outdoor activities, photography" +Sydney,5 days,"budget-friendly, shopping, cultural experiences, luxury" +Amsterdam,4 days,"relaxation, local cuisine, nature" +Reykjavik,1 week,"budget-friendly, art, photography" +Marrakech,1 week,"nature, photography, art" +Cape Town,1 week,"outdoor activities, shopping, wildlife" +Tokyo,5 days,"wildlife, art, photography" +Bangkok,4 days,"wildlife, nature, art" +San Francisco,4 days,"relaxation, shopping, cultural experiences" +Kyoto,5 days,"budget-friendly, art, local cuisine" +Amsterdam,4 days,"budget-friendly, wildlife" +Vancouver,5 days,"history, family-friendly, local cuisine, adventure" +Vancouver,5 days,"art, nightlife" +Rio de Janeiro,5 days,"adventure, local cuisine" +Reykjavik,2 days,"shopping, beach, family-friendly, adventure" +Tokyo,1 week,"luxury, nature, beach, history" +Cape Town,3 days,"cultural experiences, history, outdoor activities" +Rome,4 days,"shopping, nature, wildlife, photography" +Bangkok,3 days,"adventure, budget-friendly, nature" +Cape Town,2 days,"relaxation, luxury" +Prague,1 week,"beach, outdoor activities, budget-friendly, history" +Prague,2 days,"wildlife, relaxation" +Vancouver,5 days,"photography, nature" +San Francisco,5 days,"adventure, nature, outdoor activities, wildlife" +Rome,2 days,"family-friendly, beach, local cuisine, cultural experiences" +Amsterdam,1 week,"adventure, wildlife, shopping" +New York,3 days,"beach, wildlife" +San Francisco,5 days,"art, shopping" +Cape Town,1 week,"history, art, nightlife, nature" +Prague,3 days,"shopping, relaxation, wildlife" +Reykjavik,2 days,"luxury, wildlife" +Marrakech,3 days,"family-friendly, luxury, budget-friendly" +Paris,4 days,"adventure, cultural experiences, wildlife, family-friendly" +Dubai,3 days,"luxury, wildlife" +Amsterdam,2 days,"beach, relaxation, luxury" +Bangkok,5 days,"photography, local cuisine, cultural experiences, wildlife" +Kyoto,5 days,"nightlife, local cuisine, adventure, wildlife" +Barcelona,3 days,"wildlife, budget-friendly, luxury, shopping" +Dubai,2 days,"family-friendly, outdoor activities" +Reykjavik,2 days,"family-friendly, local cuisine, adventure" +Marrakech,1 week,"cultural experiences, art" +Cape Town,1 week,"family-friendly, budget-friendly, outdoor activities, wildlife" +San Francisco,4 days,"art, adventure, local cuisine" +Bali,1 week,"nature, family-friendly" +San Francisco,5 days,"history, relaxation, nightlife, family-friendly" +Reykjavik,5 days,"family-friendly, nightlife, photography, shopping" +Marrakech,1 week,"shopping, budget-friendly, art, luxury" +Paris,1 week,"wildlife, local cuisine, nature, history" +Barcelona,2 days,"cultural experiences, shopping, beach, wildlife" +Tokyo,2 days,"nature, adventure, budget-friendly, shopping" +Sydney,5 days,"outdoor activities, relaxation" +Cape Town,1 week,"adventure, nightlife" +New York,4 days,"family-friendly, wildlife, nightlife" +Bali,1 week,"nature, history, wildlife, budget-friendly" +Prague,5 days,"beach, budget-friendly, shopping, history" +Lisbon,4 days,"local cuisine, history, outdoor activities, luxury" +Amsterdam,3 days,"adventure, shopping" +Kyoto,1 week,"photography, local cuisine, adventure" +Sydney,2 days,"nature, wildlife, local cuisine" +Rome,3 days,"art, luxury, history" +Dubai,5 days,"nature, wildlife, photography, outdoor activities" +Bali,4 days,"shopping, wildlife" +Rome,4 days,"photography, nightlife, shopping" +Lisbon,3 days,"budget-friendly, outdoor activities" +Bangkok,2 days,"beach, history, nature, local cuisine" +Paris,3 days,"wildlife, shopping, family-friendly" +Bangkok,2 days,"budget-friendly, luxury" +Rio de Janeiro,5 days,"local cuisine, art, history" +Rio de Janeiro,1 week,"nightlife, outdoor activities, beach, luxury" +Vancouver,5 days,"local cuisine, photography" +Barcelona,5 days,"family-friendly, outdoor activities, local cuisine, wildlife" +Barcelona,3 days,"nightlife, photography, cultural experiences, shopping" +Vancouver,2 days,"family-friendly, adventure, budget-friendly" +Reykjavik,1 week,"local cuisine, luxury, relaxation, budget-friendly" +Reykjavik,3 days,"family-friendly, cultural experiences, photography, nightlife" +Rome,3 days,"outdoor activities, budget-friendly, art" +Bali,5 days,"beach, budget-friendly, local cuisine" +New York,5 days,"nature, wildlife" +Bangkok,4 days,"cultural experiences, relaxation, art" +Paris,5 days,"luxury, adventure" +Lisbon,4 days,"beach, family-friendly, photography, outdoor activities" +Bangkok,3 days,"family-friendly, nightlife, cultural experiences" +Tokyo,5 days,"local cuisine, nightlife, photography" +Paris,3 days,"relaxation, adventure" +Sydney,5 days,"wildlife, luxury, photography, family-friendly" +Amsterdam,5 days,"relaxation, art, shopping, outdoor activities" +Amsterdam,3 days,"art, luxury, relaxation" +Marrakech,4 days,"photography, luxury, outdoor activities" +Kyoto,2 days,"photography, cultural experiences, budget-friendly" +Prague,1 week,"beach, family-friendly" +Vancouver,1 week,"shopping, art, budget-friendly, photography" +Vancouver,3 days,"history, shopping, local cuisine, adventure" +Kyoto,1 week,"outdoor activities, relaxation" +Rome,5 days,"luxury, local cuisine, art, history" From 9ca0715f38ef0351234b3a4a5bc9b7ebfe7ea3a6 Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:23:41 +0100 Subject: [PATCH 02/11] Add files via upload --- ...ance your prompts with Metaprompting.ipynb | 686 ++++++++++++++++++ 1 file changed, 686 insertions(+) create mode 100644 examples/Enhance your prompts with Metaprompting.ipynb diff --git a/examples/Enhance your prompts with Metaprompting.ipynb b/examples/Enhance your prompts with Metaprompting.ipynb new file mode 100644 index 0000000000..f9eb74732f --- /dev/null +++ b/examples/Enhance your prompts with Metaprompting.ipynb @@ -0,0 +1,686 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# From Simple to Sophisticated: Enhancing Prompts with Metaprompting\n", + "\n", + "Welcome to this cookbook on metaprompting! In this guide, we'll walk through the process of taking a basic prompt and refining it to improve the quality of outputs from a language model. We'll use the example of generating travel itineraries based on user preferences.\n", + "\n", + "\n", + "Metaprompting is the technique of iteratively refining prompts to get more accurate and detailed outputs from a language model. In this example, we'll start with a simple travel itinerary prompt and then enhance it to see how the outputs improve. We'll also evaluate these outputs systematically." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import openai \n", + "from concurrent.futures import ThreadPoolExecutor, as_completed\n", + "from tqdm import tqdm\n", + "from pydantic import BaseModel\n", + "\n", + "client = openai.Client()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Importing the Data\n", + "\n", + "First, we need a dataset of travel preferences. We generated 100 examples with the following fields:\n", + "- **Location**: Travel destination (e.g., Paris, Tokyo)\n", + "- **Duration**: Length of the trip (e.g., 3 days, 1 week)\n", + "- **Preferences**: Traveler's interests (e.g., art, local cuisine)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "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", + "
LocationDurationPreferences
0Vancouver5 daysnature, cultural experiences, adventure
1San Francisco1 weekfamily-friendly, shopping, photography
2Tokyo1 weekshopping, relaxation
3Marrakech1 weeklocal cuisine, beach, adventure, relaxation
4San Francisco3 daysbudget-friendly, adventure
\n", + "
" + ], + "text/plain": [ + " Location Duration Preferences\n", + "0 Vancouver 5 days nature, cultural experiences, adventure\n", + "1 San Francisco 1 week family-friendly, shopping, photography\n", + "2 Tokyo 1 week shopping, relaxation\n", + "3 Marrakech 1 week local cuisine, beach, adventure, relaxation\n", + "4 San Francisco 3 days budget-friendly, adventure" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load the dataset\n", + "df = pd.read_csv('data/travel_itinerary_preferences_dataset.csv')\n", + "\n", + "# Display the first few rows\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Iterating on Prompts\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start with a simple prompt and then used the O1 model to enhance it for better results." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "simple_prompt = \"Create a {Duration} itinerary for {Location} focusing on {Preferences}.\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To improve the prompt, we provided the O1 model with the context and goals we wanted to achieve. We asked it to generate a more detailed prompt that would produce richer and more complete itineraries." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "metaprompt = \"\"\"\n", + "Improve the following prompt to generate a more detailed travel itinerary:\n", + "\n", + "{simple_prompt}\n", + "\n", + "These are my evaluation criteria: \n", + " 1. Relevance to Preferences\n", + " 2. Detail and Completeness\n", + " 3. Diversity of Activities\n", + " 4. Feasibility and Practicality\n", + " 5. Creativity and Uniqueness\n", + "\n", + "Only return the prompt.\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Create a detailed and comprehensive {Duration} itinerary for {Location} focusing on {Preferences}. The itinerary should include a diverse range of activities that are highly relevant to your preferences. For each day, provide specific details such as activity descriptions, locations, timings, and any necessary travel information. Ensure the plan is feasible and practical by considering factors like operating hours and travel times between destinations. Additionally, incorporate creative and unique experiences that offer a distinctive perspective on {Location}.'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_model_response(messages, model=\"o1-preview\"):\n", + " response = client.chat.completions.create(\n", + " messages=messages,\n", + " model=model,\n", + " )\n", + " return response.choices[0].message.content\n", + "\n", + "\n", + "complex_prompt = get_model_response([{\"role\": \"user\", \"content\": metaprompt.format(simple_prompt=simple_prompt)}])\n", + "complex_prompt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generating the Itineraries\n", + "\n", + "For each entry in our dataset, we'll generate itineraries using both the simple and complex prompts." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_resonse(prompt): \n", + " messages = [{\"role\": \"user\", \"content\": prompt}]\n", + " response = get_model_response(messages, model=\"gpt-4o-mini\")\n", + " return response\n", + "\n", + "def generate_itineraries(row):\n", + " simple_itinerary = generate_resonse(simple_prompt.format(Duration=row['Duration'], Location=row['Location'], Preferences=row['Preferences']))\n", + " complex_itinerary = generate_resonse(complex_prompt.format(Duration=row['Duration'], Location=row['Location'], Preferences=row['Preferences']))\n", + " return simple_itinerary, complex_itinerary" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating Itineraries: 100%|██████████| 100/100 [04:17<00:00, 2.57s/it]\n" + ] + }, + { + "data": { + "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", + " \n", + " \n", + " \n", + " \n", + "
LocationDurationPreferencesSimple_ItineraryComplex_Itinerary
0Vancouver5 daysnature, cultural experiences, adventureSure! Here’s a 5-day itinerary for Vancouver, ...## 5-Day Itinerary for Nature, Culture, and Ad...
1San Francisco1 weekfamily-friendly, shopping, photographyHere's a one-week itinerary for a family-frien...### One-Week Family-Friendly Itinerary for San...
2Tokyo1 weekshopping, relaxationHere's a 1-week itinerary for Tokyo that focus...Here’s a comprehensive one-week itinerary for ...
3Marrakech1 weeklocal cuisine, beach, adventure, relaxation### 1-Week Itinerary for Marrakech: Focus on L...### One-Week Itinerary for Marrakech\\n\\n#### O...
4San Francisco3 daysbudget-friendly, adventureCertainly! Here’s a 3-day budget-friendly adve...### 3-Day Budget-Friendly Adventure Itinerary ...
\n", + "
" + ], + "text/plain": [ + " Location Duration Preferences \\\n", + "0 Vancouver 5 days nature, cultural experiences, adventure \n", + "1 San Francisco 1 week family-friendly, shopping, photography \n", + "2 Tokyo 1 week shopping, relaxation \n", + "3 Marrakech 1 week local cuisine, beach, adventure, relaxation \n", + "4 San Francisco 3 days budget-friendly, adventure \n", + "\n", + " Simple_Itinerary \\\n", + "0 Sure! Here’s a 5-day itinerary for Vancouver, ... \n", + "1 Here's a one-week itinerary for a family-frien... \n", + "2 Here's a 1-week itinerary for Tokyo that focus... \n", + "3 ### 1-Week Itinerary for Marrakech: Focus on L... \n", + "4 Certainly! Here’s a 3-day budget-friendly adve... \n", + "\n", + " Complex_Itinerary \n", + "0 ## 5-Day Itinerary for Nature, Culture, and Ad... \n", + "1 ### One-Week Family-Friendly Itinerary for San... \n", + "2 Here’s a comprehensive one-week itinerary for ... \n", + "3 ### One-Week Itinerary for Marrakech\\n\\n#### O... \n", + "4 ### 3-Day Budget-Friendly Adventure Itinerary ... " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Add new columns to the dataframe for storing itineraries\n", + "df['Simple_Itinerary'] = None\n", + "df['Complex_Itinerary'] = None\n", + "\n", + "# Use ThreadPoolExecutor to generate itineraries concurrently\n", + "with ThreadPoolExecutor() as executor:\n", + " futures = {executor.submit(generate_itineraries, row): index for index, row in df.iterrows()}\n", + " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Generating Itineraries\"):\n", + " index = futures[future]\n", + " simple_itinerary, complex_itinerary = future.result()\n", + " df.at[index, 'Simple_Itinerary'] = simple_itinerary\n", + " df.at[index, 'Complex_Itinerary'] = complex_itinerary\n", + "\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluating the Results\n", + "\n", + "To check the difference in performance between the 2 prompts, we'll use a structured evaluation approach with the LLM acting as a judge. Here's the prompt we'll use for evaluation:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "evaluation_prompt = \"\"\"\n", + "You are an expert travel planner tasked with rigorously evaluating a travel itinerary based on specific criteria. Below is the itinerary to be evaluated:\n", + "\n", + "{itinerary}\n", + "\n", + "Please evaluate the itinerary based on the following criteria, using a scale of 1 to 5 (1 being the lowest and 5 being the highest). Reserve a score of 5 for truly exceptional performance that goes above and beyond typical expectations:\n", + "\n", + "1. **Relevance to Preferences**: Does the itinerary closely match the stated traveler preferences without including irrelevant activities? \n", + "2. **Detail and Completeness**: Is the itinerary comprehensive and detailed, including specific activities, exact timings, meal plans, and logistics? Are there any gaps? \n", + "3. **Diversity of Activities**: Does the itinerary offer a well-balanced and varied mix of activities? Is it lacking in variety in any areas? \n", + "4. **Feasibility and Practicality**: Is the itinerary realistic and achievable, considering travel times, activity durations, and rest periods? Are there any logistical challenges? \n", + "5. **Creativity and Uniqueness**: Does the itinerary include unique, off-the-beaten-path experiences that are not commonly found in standard travel plans? \n", + "\n", + "For each criterion, provide a score from 1 to 5 and a brief justification for the scores. Be critical in your evaluation and only award high scores for exceptional quality.\n", + "\"\"\"\n", + "\n", + "class ScoreCard(BaseModel):\n", + " relevance_to_preferences: int\n", + " detail_and_completeness: int\n", + " diversity_of_activities: int\n", + " feasibility_and_practicality: int\n", + " creativity_and_uniqueness: int\n", + " justification: str" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Small note, you can actually meta-prompt your evaluation prompt as well! " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Evaluating Itineraries: 0%| | 0/100 [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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LocationDurationPreferencesSimple_ItineraryComplex_ItinerarySimple_EvaluationComplex_Evaluation
0Vancouver5 daysnature, cultural experiences, adventureSure! Here’s a 5-day itinerary for Vancouver, ...## 5-Day Itinerary for Nature, Culture, and Ad...relevance_to_preferences=5 detail_and_complete...relevance_to_preferences=5 detail_and_complete...
1San Francisco1 weekfamily-friendly, shopping, photographyHere's a one-week itinerary for a family-frien...### One-Week Family-Friendly Itinerary for San...relevance_to_preferences=5 detail_and_complete...relevance_to_preferences=5 detail_and_complete...
2Tokyo1 weekshopping, relaxationHere's a 1-week itinerary for Tokyo that focus...Here’s a comprehensive one-week itinerary for ...relevance_to_preferences=5 detail_and_complete...relevance_to_preferences=4 detail_and_complete...
3Marrakech1 weeklocal cuisine, beach, adventure, relaxation### 1-Week Itinerary for Marrakech: Focus on L...### One-Week Itinerary for Marrakech\\n\\n#### O...relevance_to_preferences=5 detail_and_complete...relevance_to_preferences=5 detail_and_complete...
4San Francisco3 daysbudget-friendly, adventureCertainly! Here’s a 3-day budget-friendly adve...### 3-Day Budget-Friendly Adventure Itinerary ...relevance_to_preferences=4 detail_and_complete...relevance_to_preferences=5 detail_and_complete...
\n", + "" + ], + "text/plain": [ + " Location Duration Preferences \\\n", + "0 Vancouver 5 days nature, cultural experiences, adventure \n", + "1 San Francisco 1 week family-friendly, shopping, photography \n", + "2 Tokyo 1 week shopping, relaxation \n", + "3 Marrakech 1 week local cuisine, beach, adventure, relaxation \n", + "4 San Francisco 3 days budget-friendly, adventure \n", + "\n", + " Simple_Itinerary \\\n", + "0 Sure! Here’s a 5-day itinerary for Vancouver, ... \n", + "1 Here's a one-week itinerary for a family-frien... \n", + "2 Here's a 1-week itinerary for Tokyo that focus... \n", + "3 ### 1-Week Itinerary for Marrakech: Focus on L... \n", + "4 Certainly! Here’s a 3-day budget-friendly adve... \n", + "\n", + " Complex_Itinerary \\\n", + "0 ## 5-Day Itinerary for Nature, Culture, and Ad... \n", + "1 ### One-Week Family-Friendly Itinerary for San... \n", + "2 Here’s a comprehensive one-week itinerary for ... \n", + "3 ### One-Week Itinerary for Marrakech\\n\\n#### O... \n", + "4 ### 3-Day Budget-Friendly Adventure Itinerary ... \n", + "\n", + " Simple_Evaluation \\\n", + "0 relevance_to_preferences=5 detail_and_complete... \n", + "1 relevance_to_preferences=5 detail_and_complete... \n", + "2 relevance_to_preferences=5 detail_and_complete... \n", + "3 relevance_to_preferences=5 detail_and_complete... \n", + "4 relevance_to_preferences=4 detail_and_complete... \n", + "\n", + " Complex_Evaluation \n", + "0 relevance_to_preferences=5 detail_and_complete... \n", + "1 relevance_to_preferences=5 detail_and_complete... \n", + "2 relevance_to_preferences=4 detail_and_complete... \n", + "3 relevance_to_preferences=5 detail_and_complete... \n", + "4 relevance_to_preferences=5 detail_and_complete... " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def evaluate_itineraries(row):\n", + " simple_messages = [{\"role\": \"user\", \"content\": evaluation_prompt.format(itinerary=row['Simple_Itinerary'])}]\n", + " complex_messages = [{\"role\": \"user\", \"content\": evaluation_prompt.format(itinerary=row['Complex_Itinerary'])}]\n", + " \n", + " simple_itinerary = client.beta.chat.completions.parse(\n", + " model=\"gpt-4o\",\n", + " messages=simple_messages,\n", + " response_format=ScoreCard)\n", + " simple_itinerary = simple_itinerary.choices[0].message.parsed\n", + " \n", + " complex_itinerary = client.beta.chat.completions.parse(\n", + " model=\"gpt-4o\",\n", + " messages=complex_messages,\n", + " response_format=ScoreCard)\n", + " complex_itinerary = complex_itinerary.choices[0].message.parsed\n", + " \n", + " return simple_itinerary, complex_itinerary\n", + "\n", + "# Add new columns to the dataframe for storing evaluations\n", + "df['Simple_Evaluation'] = None\n", + "df['Complex_Evaluation'] = None\n", + "\n", + "# Use ThreadPoolExecutor to evaluate itineraries concurrently\n", + "with ThreadPoolExecutor() as executor:\n", + " futures = {executor.submit(evaluate_itineraries, row): index for index, row in df.iterrows()}\n", + " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Evaluating Itineraries\"):\n", + " index = futures[future]\n", + " simple_itinerary, complex_itinerary = future.result()\n", + " df.at[index, 'Simple_Evaluation'] = simple_itinerary\n", + " df.at[index, 'Complex_Evaluation'] = complex_itinerary\n", + "\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "df[\"Simple_Scores\"] = df[\"Simple_Evaluation\"].apply(lambda x: [score for key, score in x.model_dump().items() if key != 'justification'])\n", + "df[\"Complex_Scores\"] = df[\"Complex_Evaluation\"].apply(lambda x: [score for key, score in x.model_dump().items() if key != 'justification'])\n", + "\n", + "\n", + "# Calculate average scores for each criterion\n", + "criteria = [\n", + " 'Relevance to Preferences',\n", + " 'Detail and Completeness',\n", + " 'Diversity of Activities',\n", + " 'Feasibility and Practicality',\n", + " 'Creativity and Uniqueness'\n", + "]\n", + "\n", + "# Calculate average scores for each criterion by model\n", + "simple_avg_scores = df['Simple_Scores'].apply(pd.Series).mean()\n", + "complex_avg_scores = df['Complex_Scores'].apply(pd.Series).mean()\n", + "\n", + "\n", + "# Prepare data for plotting\n", + "avg_scores_df = pd.DataFrame({\n", + " 'Criteria': criteria,\n", + " 'Simple Prompt': simple_avg_scores,\n", + " 'Complex Prompt': complex_avg_scores\n", + "})\n", + "\n", + "# Plotting\n", + "avg_scores_df.plot(x='Criteria', kind='bar', figsize=(6, 4))\n", + "plt.ylabel('Average Score')\n", + "plt.title('Comparison of Simple vs Complex Prompt Performance by Model')\n", + "plt.xticks(rotation=45, ha='right')\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The basic prompt performed well in terms of relevance and diversity, but the complex prompt notably enhanced the completeness and creativity of the itineraries. However, it's worth noting that this is a simplified example, and the benefits of refining prompts are expected to be even more pronounced in real-world, production-level applications." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "By refining our prompts, we can enhance the quality of outputs from a language model. This example demonstrates how adding detail and structure to a prompt leads to more relevant, complete, and creative results. Even though the differences here are small, Metaprompting is a powerful technique that developers can use to build more effective and user-centric applications." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 18cae40a153a972fa8a12cc9b670a17775a5457f Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:27:01 +0100 Subject: [PATCH 03/11] Update and rename Enhance your prompts with Metaprompting.ipynb to Enhance_your_prompts_with_meta_prompting.ipynb --- ...ing.ipynb => Enhance_your_prompts_with_meta_prompting.ipynb} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename examples/{Enhance your prompts with Metaprompting.ipynb => Enhance_your_prompts_with_meta_prompting.ipynb} (99%) diff --git a/examples/Enhance your prompts with Metaprompting.ipynb b/examples/Enhance_your_prompts_with_meta_prompting.ipynb similarity index 99% rename from examples/Enhance your prompts with Metaprompting.ipynb rename to examples/Enhance_your_prompts_with_meta_prompting.ipynb index f9eb74732f..c84489a3d7 100644 --- a/examples/Enhance your prompts with Metaprompting.ipynb +++ b/examples/Enhance_your_prompts_with_meta_prompting.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# From Simple to Sophisticated: Enhancing Prompts with Metaprompting\n", + "# From Simple to Sophisticated: Enhancing Prompts with meta prompting\n", "\n", "Welcome to this cookbook on metaprompting! In this guide, we'll walk through the process of taking a basic prompt and refining it to improve the quality of outputs from a language model. We'll use the example of generating travel itineraries based on user preferences.\n", "\n", From a6a4ebf8edc8a7fea76875e95a4665cb4bc1c122 Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:27:43 +0100 Subject: [PATCH 04/11] Update registry.yaml --- registry.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/registry.yaml b/registry.yaml index d4cc6d3646..2a423022c5 100644 --- a/registry.yaml +++ b/registry.yaml @@ -1644,3 +1644,12 @@ tags: - completions - audio + +- title: Enhance your prompts with meta prompting + path: examples/Enhance_your_prompts_with_meta_prompting.ipynb + date: 2024-10-21 + authors: + - teomusatoiu + tags: + - completions + - reasoning From 32435e7a5eef5754c67130093c2ba8f36cd152b5 Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:28:18 +0100 Subject: [PATCH 05/11] Update registry.yaml --- registry.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/registry.yaml b/registry.yaml index 2a423022c5..8974247af2 100644 --- a/registry.yaml +++ b/registry.yaml @@ -1647,7 +1647,7 @@ - title: Enhance your prompts with meta prompting path: examples/Enhance_your_prompts_with_meta_prompting.ipynb - date: 2024-10-21 + date: 2024-10-23 authors: - teomusatoiu tags: From cfa16ecfa5b33364e4251622225de5147c53399a Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:36:22 +0100 Subject: [PATCH 06/11] Update Enhance_your_prompts_with_meta_prompting.ipynb --- examples/Enhance_your_prompts_with_meta_prompting.ipynb | 7 ------- 1 file changed, 7 deletions(-) diff --git a/examples/Enhance_your_prompts_with_meta_prompting.ipynb b/examples/Enhance_your_prompts_with_meta_prompting.ipynb index c84489a3d7..c741fa0fe9 100644 --- a/examples/Enhance_your_prompts_with_meta_prompting.ipynb +++ b/examples/Enhance_your_prompts_with_meta_prompting.ipynb @@ -416,13 +416,6 @@ "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Evaluating Itineraries: 0%| | 0/100 [00:00 Date: Fri, 25 Oct 2024 13:14:11 +0300 Subject: [PATCH 07/11] Delete examples/data/travel_itinerary_preferences_dataset.csv --- .../travel_itinerary_preferences_dataset.csv | 101 ------------------ 1 file changed, 101 deletions(-) delete mode 100644 examples/data/travel_itinerary_preferences_dataset.csv diff --git a/examples/data/travel_itinerary_preferences_dataset.csv b/examples/data/travel_itinerary_preferences_dataset.csv deleted file mode 100644 index f3bf32a56d..0000000000 --- a/examples/data/travel_itinerary_preferences_dataset.csv +++ /dev/null @@ -1,101 +0,0 @@ -Location,Duration,Preferences -Vancouver,5 days,"nature, cultural experiences, adventure" -San Francisco,1 week,"family-friendly, shopping, photography" -Tokyo,1 week,"shopping, relaxation" -Marrakech,1 week,"local cuisine, beach, adventure, relaxation" -San Francisco,3 days,"budget-friendly, adventure" -Marrakech,5 days,"relaxation, wildlife, nature" -Prague,3 days,"beach, outdoor activities, photography" -Sydney,5 days,"budget-friendly, shopping, cultural experiences, luxury" -Amsterdam,4 days,"relaxation, local cuisine, nature" -Reykjavik,1 week,"budget-friendly, art, photography" -Marrakech,1 week,"nature, photography, art" -Cape Town,1 week,"outdoor activities, shopping, wildlife" -Tokyo,5 days,"wildlife, art, photography" -Bangkok,4 days,"wildlife, nature, art" -San Francisco,4 days,"relaxation, shopping, cultural experiences" -Kyoto,5 days,"budget-friendly, art, local cuisine" -Amsterdam,4 days,"budget-friendly, wildlife" -Vancouver,5 days,"history, family-friendly, local cuisine, adventure" -Vancouver,5 days,"art, nightlife" -Rio de Janeiro,5 days,"adventure, local cuisine" -Reykjavik,2 days,"shopping, beach, family-friendly, adventure" -Tokyo,1 week,"luxury, nature, beach, history" -Cape Town,3 days,"cultural experiences, history, outdoor activities" -Rome,4 days,"shopping, nature, wildlife, photography" -Bangkok,3 days,"adventure, budget-friendly, nature" -Cape Town,2 days,"relaxation, luxury" -Prague,1 week,"beach, outdoor activities, budget-friendly, history" -Prague,2 days,"wildlife, relaxation" -Vancouver,5 days,"photography, nature" -San Francisco,5 days,"adventure, nature, outdoor activities, wildlife" -Rome,2 days,"family-friendly, beach, local cuisine, cultural experiences" -Amsterdam,1 week,"adventure, wildlife, shopping" -New York,3 days,"beach, wildlife" -San Francisco,5 days,"art, shopping" -Cape Town,1 week,"history, art, nightlife, nature" -Prague,3 days,"shopping, relaxation, wildlife" -Reykjavik,2 days,"luxury, wildlife" -Marrakech,3 days,"family-friendly, luxury, budget-friendly" -Paris,4 days,"adventure, cultural experiences, wildlife, family-friendly" -Dubai,3 days,"luxury, wildlife" -Amsterdam,2 days,"beach, relaxation, luxury" -Bangkok,5 days,"photography, local cuisine, cultural experiences, wildlife" -Kyoto,5 days,"nightlife, local cuisine, adventure, wildlife" -Barcelona,3 days,"wildlife, budget-friendly, luxury, shopping" -Dubai,2 days,"family-friendly, outdoor activities" -Reykjavik,2 days,"family-friendly, local cuisine, adventure" -Marrakech,1 week,"cultural experiences, art" -Cape Town,1 week,"family-friendly, budget-friendly, outdoor activities, wildlife" -San Francisco,4 days,"art, adventure, local cuisine" -Bali,1 week,"nature, family-friendly" -San Francisco,5 days,"history, relaxation, nightlife, family-friendly" -Reykjavik,5 days,"family-friendly, nightlife, photography, shopping" -Marrakech,1 week,"shopping, budget-friendly, art, luxury" -Paris,1 week,"wildlife, local cuisine, nature, history" -Barcelona,2 days,"cultural experiences, shopping, beach, wildlife" -Tokyo,2 days,"nature, adventure, budget-friendly, shopping" -Sydney,5 days,"outdoor activities, relaxation" -Cape Town,1 week,"adventure, nightlife" -New York,4 days,"family-friendly, wildlife, nightlife" -Bali,1 week,"nature, history, wildlife, budget-friendly" -Prague,5 days,"beach, budget-friendly, shopping, history" -Lisbon,4 days,"local cuisine, history, outdoor activities, luxury" -Amsterdam,3 days,"adventure, shopping" -Kyoto,1 week,"photography, local cuisine, adventure" -Sydney,2 days,"nature, wildlife, local cuisine" -Rome,3 days,"art, luxury, history" -Dubai,5 days,"nature, wildlife, photography, outdoor activities" -Bali,4 days,"shopping, wildlife" -Rome,4 days,"photography, nightlife, shopping" -Lisbon,3 days,"budget-friendly, outdoor activities" -Bangkok,2 days,"beach, history, nature, local cuisine" -Paris,3 days,"wildlife, shopping, family-friendly" -Bangkok,2 days,"budget-friendly, luxury" -Rio de Janeiro,5 days,"local cuisine, art, history" -Rio de Janeiro,1 week,"nightlife, outdoor activities, beach, luxury" -Vancouver,5 days,"local cuisine, photography" -Barcelona,5 days,"family-friendly, outdoor activities, local cuisine, wildlife" -Barcelona,3 days,"nightlife, photography, cultural experiences, shopping" -Vancouver,2 days,"family-friendly, adventure, budget-friendly" -Reykjavik,1 week,"local cuisine, luxury, relaxation, budget-friendly" -Reykjavik,3 days,"family-friendly, cultural experiences, photography, nightlife" -Rome,3 days,"outdoor activities, budget-friendly, art" -Bali,5 days,"beach, budget-friendly, local cuisine" -New York,5 days,"nature, wildlife" -Bangkok,4 days,"cultural experiences, relaxation, art" -Paris,5 days,"luxury, adventure" -Lisbon,4 days,"beach, family-friendly, photography, outdoor activities" -Bangkok,3 days,"family-friendly, nightlife, cultural experiences" -Tokyo,5 days,"local cuisine, nightlife, photography" -Paris,3 days,"relaxation, adventure" -Sydney,5 days,"wildlife, luxury, photography, family-friendly" -Amsterdam,5 days,"relaxation, art, shopping, outdoor activities" -Amsterdam,3 days,"art, luxury, relaxation" -Marrakech,4 days,"photography, luxury, outdoor activities" -Kyoto,2 days,"photography, cultural experiences, budget-friendly" -Prague,1 week,"beach, family-friendly" -Vancouver,1 week,"shopping, art, budget-friendly, photography" -Vancouver,3 days,"history, shopping, local cuisine, adventure" -Kyoto,1 week,"outdoor activities, relaxation" -Rome,5 days,"luxury, local cuisine, art, history" From 9c49fafe3deba97a94b06a7b0ff3c7a997f038ca Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Fri, 25 Oct 2024 13:14:28 +0300 Subject: [PATCH 08/11] Delete examples/Enhance_your_prompts_with_meta_prompting.ipynb --- ...nce_your_prompts_with_meta_prompting.ipynb | 679 ------------------ 1 file changed, 679 deletions(-) delete mode 100644 examples/Enhance_your_prompts_with_meta_prompting.ipynb diff --git a/examples/Enhance_your_prompts_with_meta_prompting.ipynb b/examples/Enhance_your_prompts_with_meta_prompting.ipynb deleted file mode 100644 index c741fa0fe9..0000000000 --- a/examples/Enhance_your_prompts_with_meta_prompting.ipynb +++ /dev/null @@ -1,679 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# From Simple to Sophisticated: Enhancing Prompts with meta prompting\n", - "\n", - "Welcome to this cookbook on metaprompting! In this guide, we'll walk through the process of taking a basic prompt and refining it to improve the quality of outputs from a language model. We'll use the example of generating travel itineraries based on user preferences.\n", - "\n", - "\n", - "Metaprompting is the technique of iteratively refining prompts to get more accurate and detailed outputs from a language model. In this example, we'll start with a simple travel itinerary prompt and then enhance it to see how the outputs improve. We'll also evaluate these outputs systematically." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import openai \n", - "from concurrent.futures import ThreadPoolExecutor, as_completed\n", - "from tqdm import tqdm\n", - "from pydantic import BaseModel\n", - "\n", - "client = openai.Client()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing the Data\n", - "\n", - "First, we need a dataset of travel preferences. We generated 100 examples with the following fields:\n", - "- **Location**: Travel destination (e.g., Paris, Tokyo)\n", - "- **Duration**: Length of the trip (e.g., 3 days, 1 week)\n", - "- **Preferences**: Traveler's interests (e.g., art, local cuisine)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "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", - "
LocationDurationPreferences
0Vancouver5 daysnature, cultural experiences, adventure
1San Francisco1 weekfamily-friendly, shopping, photography
2Tokyo1 weekshopping, relaxation
3Marrakech1 weeklocal cuisine, beach, adventure, relaxation
4San Francisco3 daysbudget-friendly, adventure
\n", - "
" - ], - "text/plain": [ - " Location Duration Preferences\n", - "0 Vancouver 5 days nature, cultural experiences, adventure\n", - "1 San Francisco 1 week family-friendly, shopping, photography\n", - "2 Tokyo 1 week shopping, relaxation\n", - "3 Marrakech 1 week local cuisine, beach, adventure, relaxation\n", - "4 San Francisco 3 days budget-friendly, adventure" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Load the dataset\n", - "df = pd.read_csv('data/travel_itinerary_preferences_dataset.csv')\n", - "\n", - "# Display the first few rows\n", - "df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Iterating on Prompts\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's start with a simple prompt and then used the O1 model to enhance it for better results." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "simple_prompt = \"Create a {Duration} itinerary for {Location} focusing on {Preferences}.\"\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To improve the prompt, we provided the O1 model with the context and goals we wanted to achieve. We asked it to generate a more detailed prompt that would produce richer and more complete itineraries." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "metaprompt = \"\"\"\n", - "Improve the following prompt to generate a more detailed travel itinerary:\n", - "\n", - "{simple_prompt}\n", - "\n", - "These are my evaluation criteria: \n", - " 1. Relevance to Preferences\n", - " 2. Detail and Completeness\n", - " 3. Diversity of Activities\n", - " 4. Feasibility and Practicality\n", - " 5. Creativity and Uniqueness\n", - "\n", - "Only return the prompt.\n", - "\"\"\"" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Create a detailed and comprehensive {Duration} itinerary for {Location} focusing on {Preferences}. The itinerary should include a diverse range of activities that are highly relevant to your preferences. For each day, provide specific details such as activity descriptions, locations, timings, and any necessary travel information. Ensure the plan is feasible and practical by considering factors like operating hours and travel times between destinations. Additionally, incorporate creative and unique experiences that offer a distinctive perspective on {Location}.'" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def get_model_response(messages, model=\"o1-preview\"):\n", - " response = client.chat.completions.create(\n", - " messages=messages,\n", - " model=model,\n", - " )\n", - " return response.choices[0].message.content\n", - "\n", - "\n", - "complex_prompt = get_model_response([{\"role\": \"user\", \"content\": metaprompt.format(simple_prompt=simple_prompt)}])\n", - "complex_prompt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Generating the Itineraries\n", - "\n", - "For each entry in our dataset, we'll generate itineraries using both the simple and complex prompts." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def generate_resonse(prompt): \n", - " messages = [{\"role\": \"user\", \"content\": prompt}]\n", - " response = get_model_response(messages, model=\"gpt-4o-mini\")\n", - " return response\n", - "\n", - "def generate_itineraries(row):\n", - " simple_itinerary = generate_resonse(simple_prompt.format(Duration=row['Duration'], Location=row['Location'], Preferences=row['Preferences']))\n", - " complex_itinerary = generate_resonse(complex_prompt.format(Duration=row['Duration'], Location=row['Location'], Preferences=row['Preferences']))\n", - " return simple_itinerary, complex_itinerary" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Generating Itineraries: 100%|██████████| 100/100 [04:17<00:00, 2.57s/it]\n" - ] - }, - { - "data": { - "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", - " \n", - " \n", - " \n", - " \n", - "
LocationDurationPreferencesSimple_ItineraryComplex_Itinerary
0Vancouver5 daysnature, cultural experiences, adventureSure! Here’s a 5-day itinerary for Vancouver, ...## 5-Day Itinerary for Nature, Culture, and Ad...
1San Francisco1 weekfamily-friendly, shopping, photographyHere's a one-week itinerary for a family-frien...### One-Week Family-Friendly Itinerary for San...
2Tokyo1 weekshopping, relaxationHere's a 1-week itinerary for Tokyo that focus...Here’s a comprehensive one-week itinerary for ...
3Marrakech1 weeklocal cuisine, beach, adventure, relaxation### 1-Week Itinerary for Marrakech: Focus on L...### One-Week Itinerary for Marrakech\\n\\n#### O...
4San Francisco3 daysbudget-friendly, adventureCertainly! Here’s a 3-day budget-friendly adve...### 3-Day Budget-Friendly Adventure Itinerary ...
\n", - "
" - ], - "text/plain": [ - " Location Duration Preferences \\\n", - "0 Vancouver 5 days nature, cultural experiences, adventure \n", - "1 San Francisco 1 week family-friendly, shopping, photography \n", - "2 Tokyo 1 week shopping, relaxation \n", - "3 Marrakech 1 week local cuisine, beach, adventure, relaxation \n", - "4 San Francisco 3 days budget-friendly, adventure \n", - "\n", - " Simple_Itinerary \\\n", - "0 Sure! Here’s a 5-day itinerary for Vancouver, ... \n", - "1 Here's a one-week itinerary for a family-frien... \n", - "2 Here's a 1-week itinerary for Tokyo that focus... \n", - "3 ### 1-Week Itinerary for Marrakech: Focus on L... \n", - "4 Certainly! Here’s a 3-day budget-friendly adve... \n", - "\n", - " Complex_Itinerary \n", - "0 ## 5-Day Itinerary for Nature, Culture, and Ad... \n", - "1 ### One-Week Family-Friendly Itinerary for San... \n", - "2 Here’s a comprehensive one-week itinerary for ... \n", - "3 ### One-Week Itinerary for Marrakech\\n\\n#### O... \n", - "4 ### 3-Day Budget-Friendly Adventure Itinerary ... " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Add new columns to the dataframe for storing itineraries\n", - "df['Simple_Itinerary'] = None\n", - "df['Complex_Itinerary'] = None\n", - "\n", - "# Use ThreadPoolExecutor to generate itineraries concurrently\n", - "with ThreadPoolExecutor() as executor:\n", - " futures = {executor.submit(generate_itineraries, row): index for index, row in df.iterrows()}\n", - " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Generating Itineraries\"):\n", - " index = futures[future]\n", - " simple_itinerary, complex_itinerary = future.result()\n", - " df.at[index, 'Simple_Itinerary'] = simple_itinerary\n", - " df.at[index, 'Complex_Itinerary'] = complex_itinerary\n", - "\n", - "df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Evaluating the Results\n", - "\n", - "To check the difference in performance between the 2 prompts, we'll use a structured evaluation approach with the LLM acting as a judge. Here's the prompt we'll use for evaluation:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "evaluation_prompt = \"\"\"\n", - "You are an expert travel planner tasked with rigorously evaluating a travel itinerary based on specific criteria. Below is the itinerary to be evaluated:\n", - "\n", - "{itinerary}\n", - "\n", - "Please evaluate the itinerary based on the following criteria, using a scale of 1 to 5 (1 being the lowest and 5 being the highest). Reserve a score of 5 for truly exceptional performance that goes above and beyond typical expectations:\n", - "\n", - "1. **Relevance to Preferences**: Does the itinerary closely match the stated traveler preferences without including irrelevant activities? \n", - "2. **Detail and Completeness**: Is the itinerary comprehensive and detailed, including specific activities, exact timings, meal plans, and logistics? Are there any gaps? \n", - "3. **Diversity of Activities**: Does the itinerary offer a well-balanced and varied mix of activities? Is it lacking in variety in any areas? \n", - "4. **Feasibility and Practicality**: Is the itinerary realistic and achievable, considering travel times, activity durations, and rest periods? Are there any logistical challenges? \n", - "5. **Creativity and Uniqueness**: Does the itinerary include unique, off-the-beaten-path experiences that are not commonly found in standard travel plans? \n", - "\n", - "For each criterion, provide a score from 1 to 5 and a brief justification for the scores. Be critical in your evaluation and only award high scores for exceptional quality.\n", - "\"\"\"\n", - "\n", - "class ScoreCard(BaseModel):\n", - " relevance_to_preferences: int\n", - " detail_and_completeness: int\n", - " diversity_of_activities: int\n", - " feasibility_and_practicality: int\n", - " creativity_and_uniqueness: int\n", - " justification: str" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Small note, you can actually meta-prompt your evaluation prompt as well! " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Evaluating Itineraries: 100%|██████████| 100/100 [01:26<00:00, 1.16it/s]\n" - ] - }, - { - "data": { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LocationDurationPreferencesSimple_ItineraryComplex_ItinerarySimple_EvaluationComplex_Evaluation
0Vancouver5 daysnature, cultural experiences, adventureSure! Here’s a 5-day itinerary for Vancouver, ...## 5-Day Itinerary for Nature, Culture, and Ad...relevance_to_preferences=5 detail_and_complete...relevance_to_preferences=5 detail_and_complete...
1San Francisco1 weekfamily-friendly, shopping, photographyHere's a one-week itinerary for a family-frien...### One-Week Family-Friendly Itinerary for San...relevance_to_preferences=5 detail_and_complete...relevance_to_preferences=5 detail_and_complete...
2Tokyo1 weekshopping, relaxationHere's a 1-week itinerary for Tokyo that focus...Here’s a comprehensive one-week itinerary for ...relevance_to_preferences=5 detail_and_complete...relevance_to_preferences=4 detail_and_complete...
3Marrakech1 weeklocal cuisine, beach, adventure, relaxation### 1-Week Itinerary for Marrakech: Focus on L...### One-Week Itinerary for Marrakech\\n\\n#### O...relevance_to_preferences=5 detail_and_complete...relevance_to_preferences=5 detail_and_complete...
4San Francisco3 daysbudget-friendly, adventureCertainly! Here’s a 3-day budget-friendly adve...### 3-Day Budget-Friendly Adventure Itinerary ...relevance_to_preferences=4 detail_and_complete...relevance_to_preferences=5 detail_and_complete...
\n", - "
" - ], - "text/plain": [ - " Location Duration Preferences \\\n", - "0 Vancouver 5 days nature, cultural experiences, adventure \n", - "1 San Francisco 1 week family-friendly, shopping, photography \n", - "2 Tokyo 1 week shopping, relaxation \n", - "3 Marrakech 1 week local cuisine, beach, adventure, relaxation \n", - "4 San Francisco 3 days budget-friendly, adventure \n", - "\n", - " Simple_Itinerary \\\n", - "0 Sure! Here’s a 5-day itinerary for Vancouver, ... \n", - "1 Here's a one-week itinerary for a family-frien... \n", - "2 Here's a 1-week itinerary for Tokyo that focus... \n", - "3 ### 1-Week Itinerary for Marrakech: Focus on L... \n", - "4 Certainly! Here’s a 3-day budget-friendly adve... \n", - "\n", - " Complex_Itinerary \\\n", - "0 ## 5-Day Itinerary for Nature, Culture, and Ad... \n", - "1 ### One-Week Family-Friendly Itinerary for San... \n", - "2 Here’s a comprehensive one-week itinerary for ... \n", - "3 ### One-Week Itinerary for Marrakech\\n\\n#### O... \n", - "4 ### 3-Day Budget-Friendly Adventure Itinerary ... \n", - "\n", - " Simple_Evaluation \\\n", - "0 relevance_to_preferences=5 detail_and_complete... \n", - "1 relevance_to_preferences=5 detail_and_complete... \n", - "2 relevance_to_preferences=5 detail_and_complete... \n", - "3 relevance_to_preferences=5 detail_and_complete... \n", - "4 relevance_to_preferences=4 detail_and_complete... \n", - "\n", - " Complex_Evaluation \n", - "0 relevance_to_preferences=5 detail_and_complete... \n", - "1 relevance_to_preferences=5 detail_and_complete... \n", - "2 relevance_to_preferences=4 detail_and_complete... \n", - "3 relevance_to_preferences=5 detail_and_complete... \n", - "4 relevance_to_preferences=5 detail_and_complete... " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def evaluate_itineraries(row):\n", - " simple_messages = [{\"role\": \"user\", \"content\": evaluation_prompt.format(itinerary=row['Simple_Itinerary'])}]\n", - " complex_messages = [{\"role\": \"user\", \"content\": evaluation_prompt.format(itinerary=row['Complex_Itinerary'])}]\n", - " \n", - " simple_itinerary = client.beta.chat.completions.parse(\n", - " model=\"gpt-4o\",\n", - " messages=simple_messages,\n", - " response_format=ScoreCard)\n", - " simple_itinerary = simple_itinerary.choices[0].message.parsed\n", - " \n", - " complex_itinerary = client.beta.chat.completions.parse(\n", - " model=\"gpt-4o\",\n", - " messages=complex_messages,\n", - " response_format=ScoreCard)\n", - " complex_itinerary = complex_itinerary.choices[0].message.parsed\n", - " \n", - " return simple_itinerary, complex_itinerary\n", - "\n", - "# Add new columns to the dataframe for storing evaluations\n", - "df['Simple_Evaluation'] = None\n", - "df['Complex_Evaluation'] = None\n", - "\n", - "# Use ThreadPoolExecutor to evaluate itineraries concurrently\n", - "with ThreadPoolExecutor() as executor:\n", - " futures = {executor.submit(evaluate_itineraries, row): index for index, row in df.iterrows()}\n", - " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Evaluating Itineraries\"):\n", - " index = futures[future]\n", - " simple_itinerary, complex_itinerary = future.result()\n", - " df.at[index, 'Simple_Evaluation'] = simple_itinerary\n", - " df.at[index, 'Complex_Evaluation'] = complex_itinerary\n", - "\n", - "df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmkAAAGGCAYAAAAgixYYAAAAP3RFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMS5wb3N0MSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8kixA/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACyIklEQVR4nOzdd1yN7/8H8NfdLm2iIm0RKTI+fYzsiKzsEdl7j7J3fJBNZpkhe6/Ex95bVkKIkIaidd6/P/qd+9tRfFA56byfj4eHznXf5z7vc51z3/f7XPd1XbdARATGGGOMMVagKMk7AMYYY4wxlh0naYwxxhhjBRAnaYwxxhhjBRAnaYwxxhhjBRAnaYwxxhhjBRAnaYwxxhhjBRAnaYwxxhhjBRAnaYwxxhhjBRAnaYwxxhhjBRAnaSxHgiBgypQp8g4j1zZu3IiyZctCVVUV+vr6ebJNedZN9+7dYWFhIZfXVkSnTp2CIAg4deqUvENh+Sg9PR1jxoyBmZkZlJSU0LJlS3mH9EezsLBAs2bN5B1GvqlTpw7q1KnzS8+1sLBA9+7df3h9TtK+ISIiAn379oWVlRU0NDSgq6uLGjVqYNGiRfj8+bO8w2M/4MGDB+jevTusra2xevVqrFq16rvrnz17Fk2aNEHJkiWhoaGB0qVLw8PDA1u2bPlNERdep06dQuvWrWFsbAw1NTUUL14cHh4e2LVrl7xDK5CmTJkCQRDEf1paWrC3t8eECROQkJAg7/B+yf379zFlyhQ8e/bsh9b/nXWwbt06zJ07F23atMH69esxfPjwPN0+y3vPnj0TvxszZszIcZ3OnTtDEARoa2v/5ujyjoq8AyiIDh48iLZt20JdXR1eXl6oUKECUlNTcfbsWYwePRr37t37zxP+n+7z589QUfmzvx6nTp2CRCLBokWLYGNj8911Q0JC0L59ezg5OWHo0KEwMDBAZGQk/v33X6xevRqdOnUS1y0MdfM7TZ48GdOmTYOtrS369u0Lc3NzfPjwAYcOHYKnpyc2b94sU7/sf1asWAFtbW18+vQJx44dw8yZM3Hy5EmcO3cOgiDIO7yfcv/+fUydOhV16tT5qdbg31EHJ0+eRMmSJbFgwYI82R77fTQ0NBAcHIwJEybIlCclJWHv3r3Q0NCQU2R5g880X4mMjESHDh1gbm6OkydPwsTERFw2cOBAPHnyBAcPHpRjhPlHIpEgNTUVGhoaf/wXGwBiYmIA4Icuc06ZMgX29va4ePEi1NTUctyOVGGom99lx44dmDZtGtq0aYMtW7ZAVVVVXDZ69GgcPXoUaWlpcoywYGvTpg2KFSsGAOjXrx88PT2xa9cuXLx4ES4uLjk+Jzk5GVpaWr8zzHz1K3XwI4gIX758gaamJmJiYvKsOwQgeyxl+cvd3R27du3CrVu34OjoKJbv3bsXqampaNy4MU6ePCnHCHOHL3d+5Z9//sGnT5+wdu1amQRNysbGBkOHDhUfp6enY/r06bC2toa6ujosLCwwbtw4pKSkyDxPeo3+1KlTqFKlCjQ1NeHg4CD2ddm1axccHBygoaEBZ2dn3LhxQ+b53bt3h7a2Np4+fQo3NzcUKVIEpqammDZtGohIZt158+bh77//RtGiRaGpqQlnZ2fs2LEj23sRBAGDBg3C5s2bUb58eairq+PIkSPisqz9rhITEzFs2DBYWFhAXV0dxYsXR8OGDXH9+nWZbYaEhMDZ2RmampooVqwYunTpglevXuX4Xl69eoWWLVtCW1sbRkZGGDVqFDIyMr7xychavny5GLOpqSkGDhyIuLg4mfqePHkyAMDIyOg/+5FFRESgatWq2RI0AChevLjM46+3Jb0s8+jRI3Tp0gV6enowMjLCxIkTQUSIiopCixYtoKurC2NjY8yfP19me9J+T9u2bcO4ceNgbGyMIkWKoHnz5oiKivrPupBIJFi4cCHKly8PDQ0NlChRAn379sXHjx+/+7x58+ZBEAQ8f/482zJfX1+oqamJ23j8+DE8PT1hbGwMDQ0NlCpVCh06dEB8fPx3X2PixIkwNDTEunXrZBI0KTc3N5m+KzExMejZsydKlCgBDQ0NODo6Yv369TLPkV7mmDdvHpYtWwYrKytoaWmhUaNGiIqKAhFh+vTpKFWqFDQ1NdGiRQvExsbKbEO6Px47dgxOTk7Q0NCAvb39D19+vXTpEho3bgw9PT1oaWnB1dUV586dE5eHh4dDU1MTXl5eMs87e/YslJWVMXbs2B96na/Vq1cPQOaPSSCzb0yFChVw7do11K5dG1paWhg3bhyAglWXQUFBaNu2LQCgbt264mWqX+nr93Ud/Oj3Xxrn0aNHxWPwypUrIQgCwsLCcO/evWxxJSUlYeTIkTAzM4O6ujrs7Owwb968bMfcbx1Lg4KCIAgCzp49iyFDhsDIyAj6+vro27cvUlNTERcXBy8vLxgYGMDAwABjxozJ9fF8z549qFChAtTV1VG+fHnxmJ7Vq1ev0LNnT5iamkJdXR2Wlpbo378/UlNTxXXi4uIwbNgw8b3b2Nhgzpw5kEgkP/xZfe878fTpUwiCkGPr5fnz5yEIAoKDg//zNVxcXGBpaZmtW8rmzZvRuHFjGBoa5vi8/zqHSK1atQrW1tbQ1NREtWrVcObMmRy3l5KSgsmTJ8PGxgbq6uowMzPDmDFjsuUCP42YjJIlS5KVldUPr9+tWzcCQG3atKFly5aRl5cXAaCWLVvKrGdubk52dnZkYmJCU6ZMoQULFlDJkiVJW1ubNm3aRKVLl6bZs2fT7NmzSU9Pj2xsbCgjI0PmdTQ0NMjW1pa6du1KS5cupWbNmhEAmjhxosxrlSpVigYMGEBLly4lf39/qlatGgGgAwcOyKwHgMqVK0dGRkY0depUWrZsGd24cUNcNnnyZHHdTp06kZqaGo0YMYLWrFlDc+bMIQ8PD9q0aZO4TmBgIAGgqlWr0oIFC8jHx4c0NTXJwsKCPn78mO29lC9fnnr06EErVqwgT09PAkDLly//zzqfPHkyAaAGDRrQkiVLaNCgQaSsrExVq1al1NRUIiLavXs3tWrVigDQihUraOPGjXTr1q1vbrNMmTJkZmZGUVFR//n6X9eNNB4nJyfq2LEjLV++nJo2bUoAyN/fn+zs7Kh///60fPlyqlGjBgGg06dPi88PCwsjAOTg4EAVK1Ykf39/8vHxIQ0NDSpTpgwlJyfL1J25ublMPL169SIVFRXq3bs3BQQE0NixY6lIkSIy9ZGT58+fkyAI9M8//2RbZmVlRU2bNiUiopSUFLK0tCRTU1OaMWMGrVmzhqZOnUpVq1alZ8+efXP7jx49IgDUo0eP/6pSIiJKTk6mcuXKkaqqKg0fPpwWL15MtWrVIgC0cOFCcb3IyEixvu3t7cnf358mTJhAampq9Ndff9G4cePo77//psWLF9OQIUNIEATy9vaWeS1zc3MqU6YM6evrk4+PD/n7+5ODgwMpKSnRsWPHxPWkn01YWJhYFhoaSmpqauTi4kLz58+nBQsWUMWKFUlNTY0uXbokrjd37lwCQHv37iUiok+fPpG1tTXZ29vTly9fvlsX0u/Uu3fvZMqHDx9OAOjIkSNEROTq6krGxsZkZGREgwcPppUrV9KePXsKXF1GRETQkCFDCACNGzeONm7cSBs3bqQ3b97kug5+9Ptvbm5ONjY2ZGBgQD4+PhQQEEAHDhygjRs3UtmyZalUqVIycUkkEqpXrx4JgkC9evWipUuXkoeHBwGgYcOGycT0rWOp9Jjo5OREjRs3pmXLllHXrl0JAI0ZM4Zq1qxJnTp1ouXLl4vH8/Xr18ts+2eO546OjmRiYkLTp0+nhQsXkpWVFWlpadH79+/F9V69ekWmpqakpaVFw4YNo4CAAJo4cSKVK1dOPE4nJSVRxYoVqWjRojRu3DgKCAggLy8vEgSBhg4d+s3P7Ge+E0RENWrUIGdn52zPHzBgAOno6FBSUtI3X0P63Z07dy6NGzeOSpcuTRKJhIiI3r17RyoqKhQcHEzdunWjIkWKyDz3R84hRERr1qwhAOI+MGzYMNLX1ycrKytydXUV18vIyKBGjRqJdbpy5UoaNGgQqaioUIsWLbLVTbdu3f6zDqU4ScsiPj6eAGSr1G+5efMmAaBevXrJlI8aNYoA0MmTJ8Uyc3NzAkDnz58Xy44ePUoASFNTk54/fy6Wr1y5MtuJQZoMDh48WCyTSCTUtGlTUlNTkzmQZT2pExGlpqZShQoVqF69ejLlAEhJSYnu3buX7b19nYjo6enRwIEDv1kXqampVLx4capQoQJ9/vxZLD9w4AABoEmTJmV7L9OmTZPZRqVKlXLcYbOKiYkhNTU1atSokUwSu3TpUgJA69atE8u+dZDPydq1awkAqampUd26dWnixIl05swZmdeQ+laS1qdPH7EsPT2dSpUqRYIg0OzZs8Xyjx8/kqampsxOKk0ESpYsSQkJCWL59u3bCQAtWrRILPs6STtz5gwBoM2bN8vEeOTIkRzLv+bi4pKtzi9fvkwAaMOGDUREdOPGDQJAISEh393W1/bu3UsAaMGCBT+0/sKFCwmATOKfmppKLi4upK2tLdaN9OBsZGREcXFx4rq+vr7iiSotLU0s79ixI6mpqckkRtL9cefOnWJZfHw8mZiYUKVKlcSyr5M0iURCtra25ObmJp4QiDL3OUtLS2rYsKFYlpGRQTVr1qQSJUrQ+/fvaeDAgaSiokJXrlz5z7qQfqcePnxI7969o8jISFq5ciWpq6tTiRIlxJOXq6srAaCAgIACX5chISHZjmu5rYOf+f5L45Qmd1m5urpS+fLlZcr27NlDAGjGjBky5W3atCFBEOjJkydi2beOpdIk7evvi4uLCwmCQP369RPLpMeMrCd/op87nqupqcnEdevWLQJAS5YsEcu8vLxISUkpx++hNMbp06dTkSJF6NGjRzLLfXx8SFlZmV68eJHtuVn96HdCeq4LDw+XeX/FihX7z0Qma5J29+5dAkBnzpwhIqJly5aRtrY2JSUlZUvSfvQcIj2nOTk5UUpKirjeqlWrCIDM57Rx40ZSUlISX18qICCAANC5c+dk6uZnkjS+3JmFdMSQjo7OD61/6NAhAMCIESNkykeOHAkA2fqu2dvby/ShqF69OoDM5vvSpUtnK3/69Gm21xw0aJD4t7R5OzU1FSdOnBDLNTU1xb8/fvyI+Ph41KpVK9ulSQBwdXWFvb39f7zTzH5dly5dwuvXr3NcfvXqVcTExGDAgAEy/TCaNm2KsmXL5tiPr1+/fjKPa9WqleN7zurEiRNITU3FsGHDoKT0v69v7969oaur+8v9BXv06IEjR46gTp06OHv2LKZPn45atWrB1tYW58+f/6Ft9OrVS/xbWVkZVapUARGhZ8+eYrm+vj7s7OxyfJ9eXl4y3702bdrAxMRE/J7lJCQkBHp6emjYsCHev38v/nN2doa2tjbCwsK+G3P79u1x7do1REREiGXbtm2Duro6WrRoAQDQ09MDABw9ehTJycn/UQv/8yv7k7GxMTp27CiWqaqqYsiQIfj06RNOnz4ts37btm3F2ID/7TddunSRGdhRvXp1pKamZrvsbmpqilatWomPdXV14eXlhRs3buDNmzc5xnjz5k08fvwYnTp1wocPH8T6TkpKQv369fHvv/+Kl4OUlJQQFBSET58+oUmTJli+fDl8fX1RpUqVH6oPALCzs4ORkREsLS3Rt29f2NjY4ODBgzJ9ztTV1eHt7S3zvD+hLn/U9+rgZ7//lpaWcHNz+6HXPXToEJSVlTFkyBCZ8pEjR4KIcPjwYZny7x1Le/bsKTPIoXr16tmODdJjxtfHhp85njdo0ADW1tbi44oVK0JXV1fcpkQiwZ49e+Dh4ZHj91AaY0hICGrVqgUDAwOZem3QoAEyMjLw77//5vg+s/qR70S7du2goaGBzZs3i+sdPXoU79+/R5cuXf7zNaTKly+PihUripdHt2zZghYtWuTYN/NHzyHSc1q/fv1kusF0795dZl8BMuurXLlyKFu2rEx9SS/N/9dx+Ht44EAWurq6ADL7X/2I58+fQ0lJKdvIQWNjY+jr62fr65M1EQP+d/IzMzPLsfzrPhVKSkqwsrKSKStTpgwAyAxrP3DgAGbMmIGbN2/KXA/PaSSUpaXlN99fVv/88w+6desGMzMzODs7w93dHV5eXmI80vdqZ2eX7blly5bF2bNnZco0NDRgZGQkU2ZgYPCf/ai+9TpqamqwsrLKsX/Vj3Jzc4ObmxuSk5Nx7do1bNu2DQEBAWjWrBkePHiQrW/a13L6fDU0NMROz1nLP3z4kO35tra2Mo8FQYCNjc13pyx4/Pgx4uPjvxnb14Mevta2bVuMGDFC7A9HRAgJCUGTJk3E/cHS0hIjRoyAv78/Nm/ejFq1aqF58+Zi/7tv+ZX9ydbWVubACQDlypUTl2eV2/3JxsYm2z6RdX8yNjbOFuPjx48BAN26dfvm+4iPj4eBgQEAwNraGlOmTMHo0aNRoUIFTJw48ZvPy8nOnTuhq6sLVVVVlCpVSuYELFWyZMlsfSn/hLr8Ud+rg5/9/v/o8Q7IrCNTU9NsPzK+VYff2/bP1O/Xdfszx/OvXweQPa6+e/cOCQkJqFChwjdjBTLr9fbt29mO0VL/dVwBfuw7oa+vL05zNH36dACZfclKliwpJjg/qlOnTpg/fz6GDx+O8+fPi30zv/aj5xDp/18fl1VVVbOdhx8/fozw8PBc1de3cJKWha6uLkxNTXH37t2fet6PDgNXVlb+qXL6qgPpjzhz5gyaN2+O2rVrY/ny5TAxMYGqqioCAwNznO8r66+072nXrh1q1aqF3bt349ixY5g7dy7mzJmDXbt2oUmTJj8d57fec0GgpaWFWrVqoVatWihWrBimTp2Kw4cPf/fEDOT8nvLys82JRCJB8eLFZX6JZvWtg4aUqakpatWqhe3bt2PcuHG4ePEiXrx4gTlz5sisN3/+fHTv3h179+7FsWPHMGTIEPj5+eHixYsoVapUjtsuW7YsAODOnTu/8M7+2+/Yn74mbSWbO3cunJycclzn6zmZjh07BgB4/fo1Pnz48FMJS+3atbMl+V/70X34e+RRlz/qe3Xws9//vKirb/netn+mfrPW7c8ez/Pq85JIJGjYsCHGjBmT43JpspUXvLy8EBISgvPnz8PBwQH79u3DgAEDsv3A+C8dO3aEr68vevfujaJFi6JRo0Z5FuN/kUgkcHBwgL+/f47Lv07GfwYnaV9p1qwZVq1ahQsXLvzn8G5zc3NIJBI8fvxY/HUFAG/fvkVcXBzMzc3zNDaJRIKnT5/K7CCPHj0CAHHeoZ07d0JDQwNHjx6Furq6uF5gYGCuX9/ExAQDBgzAgAEDEBMTg8qVK2PmzJlo0qSJ+F4fPnyY7RfQw4cP86wusr5O1l8zqampiIyMRIMGDfLkdaSklwSio6PzdLs5kbbSSBERnjx5gooVK37zOdbW1jhx4gRq1Kjxyyeg9u3bY8CAAXj48CG2bdsGLS0teHh4ZFvPwcEBDg4OmDBhAs6fP48aNWogICDgmxNJlilTBnZ2dti7dy8WLVr0nxNKmpub4/bt25BIJDIH6AcPHojL89KTJ09ARDI/sr7en74mbcXR1dX9oe9aQEAAjh8/jpkzZ8LPzw99+/bF3r17cx/8fyiIdZkf87rlxff/W8zNzXHixAkkJibKtKblVx3mJK+P50ZGRtDV1f3Phghra2t8+vQpV8fTH92/GjduDCMjI2zevBnVq1dHcnIyunbt+tOvV7p0adSoUQOnTp1C//79vzmX5Y+eQ6TrPX78WOaclpaWhsjISJnpPqytrXHr1i3Ur18/z7/n3CftK2PGjEGRIkXQq1cvvH37NtvyiIgILFq0CEDm/CwAsHDhQpl1pNl006ZN8zy+pUuXin8TEZYuXQpVVVXUr18fQOYvKUEQZKayePbsGfbs2fPLr5mRkZFtqoXixYvD1NRUbH6vUqUKihcvjoCAAJkm+cOHDyM8PDzP6qJBgwZQU1PD4sWLZX4drl27FvHx8b/8OqGhoTmWS/uD5XQZN69t2LBB5tLgjh07EB0d/d2Wynbt2iEjI0O8VJBVenp6jkPKv+bp6QllZWUEBwcjJCQEzZo1Q5EiRcTlCQkJSE9Pl3mOg4MDlJSU/nN4+dSpU/Hhwwf06tUr2zaAzFamAwcOAMjcn968eYNt27bJvIclS5ZAW1sbrq6u//lefsbr16+xe/du8XFCQgI2bNgAJyenb7Z2OTs7w9raGvPmzcOnT5+yLX/37p34d2RkJEaPHg1PT0+MGzcO8+bNw759+7Bhw4Y8fR85KYh1Kf1O/ch38kflxff/W9zd3ZGRkSFzzAWABQsWQBCEX7qC8LPy+nguveXV/v37cfXq1WzLpcfUdu3a4cKFCzh69Gi2deLi4nLcl7/2o/uXiooKOnbsiO3btyMoKAgODg7f/WH6PTNmzMDkyZMxePDgb67zo+eQKlWqwMjICAEBATJTkwQFBWX7XrVr1w6vXr3C6tWrs73e58+fkZSU9EvvB+CWtGysra2xZcsWtG/fHuXKlZO548D58+cREhIi3nfL0dER3bp1w6pVqxAXFwdXV1dcvnwZ69evR8uWLVG3bt08jU1DQwNHjhxBt27dUL16dRw+fBgHDx7EuHHjxGb9pk2bwt/fH40bN0anTp0QExODZcuWwcbGBrdv3/6l101MTESpUqXQpk0bODo6QltbGydOnMCVK1fEOb9UVVUxZ84ceHt7w9XVFR07dsTbt2+xaNEiWFhY5NltVoyMjODr64upU6eicePGaN68OR4+fIjly5ejatWqP9XZNKsWLVrA0tISHh4esLa2RlJSEk6cOIH9+/ejatWqObYs5TVDQ0PUrFkT3t7eePv2LRYuXAgbGxv07t37m89xdXVF37594efnh5s3b6JRo0ZQVVXF48ePERISgkWLFqFNmzbffd3ixYujbt268Pf3R2JiItq3by+z/OTJkxg0aBDatm2LMmXKID09HRs3boSysjI8PT2/u+327dvjzp07mDlzJm7cuIGOHTuKdxw4cuQIQkNDxcs2ffr0wcqVK9G9e3dcu3YNFhYW2LFjB86dO4eFCxf+8ACEH1WmTBn07NkTV65cQYkSJbBu3Tq8ffv2u60USkpKWLNmDZo0aYLy5cvD29sbJUuWxKtXrxAWFgZdXV3s378fRIQePXpAU1MTK1asAAD07dsXO3fuxNChQ9GgQQOYmprm6fvJqiDWpZOTE5SVlTFnzhzEx8dDXV0d9erV+8++nt+TF9//b/Hw8EDdunUxfvx4PHv2DI6Ojjh27Bj27t2LYcOG5dg/MK/lx/F81qxZOHbsGFxdXdGnTx+UK1cO0dHRCAkJwdmzZ6Gvr4/Ro0dj3759aNasGbp37w5nZ2ckJSXhzp072LFjB549e/afl+F/Zv/y8vLC4sWLERYWlq2rxc9wdXX9zx8gP3oOUVVVxYwZM9C3b1/Uq1cP7du3R2RkJAIDA7P1SevatSu2b9+Ofv36ISwsDDVq1EBGRgYePHiA7du3i3Pz/ZIfHgeqYB49ekS9e/cmCwsLUlNTIx0dHapRowYtWbJEZvh5WloaTZ06lSwtLUlVVZXMzMzI19c32zxI5ubm4rxTWQHINrVF1qHFUtJhxBEREeJ8LCVKlKDJkydnmyZi7dq1ZGtrS+rq6lS2bFkKDAwUh7P/12tnXSadZiIlJYVGjx5Njo6OpKOjQ0WKFCFHR8cc5zTbtm0bVapUidTV1cnQ0JA6d+5ML1++lFknp3lriCjHGL9l6dKlVLZsWVJVVaUSJUpQ//79ZeZiy7q9H5mCIzg4mDp06EDW1takqalJGhoaZG9vT+PHj5eZFoPo21NwfP0633qfXw/3l07zEBwcTL6+vlS8eHHS1NSkpk2bykzNIt3m1/OkEWUOC3d2diZNTU3S0dEhBwcHGjNmDL1+/fo/3zsR0erVqwkA6ejoyEyhQkT09OlT6tGjB1lbW5OGhgYZGhpS3bp16cSJEz+0baLMucVatGhBxYsXJxUVFTIyMiIPDw9xDjGpt2/fkre3NxUrVozU1NTIwcGBAgMDZdbJaf8g+l89fj1ViHQahKxTDkj3x6NHj1LFihXFfeXr5+Y0TxpR5rQkrVu3pqJFi5K6ujqZm5tTu3btKDQ0lIiIFi1alG0KAiKiFy9ekK6uLrm7u3+3vn70u5vT1BFSBa0uiTK/Z1ZWVqSsrPyf03H8zP77I9//bx2Dib5dj4mJiTR8+HAyNTUlVVVVsrW1pblz58pMp0H07WNpTvX1vfeW0zEjt8fznKZ8eP78OXl5eZGRkRGpq6uTlZUVDRw4UGaqicTERPL19SUbGxtSU1OjYsWK0d9//03z5s377vyL0tf80e+EVPny5UlJSSnb+eJbvvXd/dq3jsM/cg4hIlq+fDlZWlqSuro6ValShf79919ydXXNNlVKamoqzZkzh8qXL0/q6upkYGBAzs7ONHXqVIqPjxfX+9kpOASi39gDlP2y7t27Y8eOHTleYmF/tlOnTqFu3boICQn55V/97OdYWFigQoUK4qVW9uu4LlleqFSpEgwNDb/Z9URRcZ80xhhjjMnN1atXcfPmzWy3UWPcJ40xxhhjcnD37l1cu3YN8+fPh4mJSbb+sIxb0hhjjDEmBzt27IC3tzfS0tIQHBwsc7calon7pDHGGGOMFUDcksYYY4wxVgBxksYYY4wxVgDxwAE5kkgkeP36NXR0dPLllimMMcYY+zYiQmJiIkxNTX/6fqG/AydpcvT69etc3XiVMcYYY7kXFRWFUqVKyTuMbDhJy4UpU6Zg6tSpMmV2dnbiDXj/i/TWLFFRUdDV1c3z+BhjjDH2bQkJCTAzM8vzW6XlFU7Scql8+fI4ceKE+FhF5cerVHqJU1dXl5M0xhhjTE4KapcjTtJySUVFBcbGxvIOgzHGGGOFTMHrJfeHefz4MUxNTWFlZYXOnTvjxYsX31w3JSUFCQkJMv8YY4wxxnLCSVouVK9eHUFBQThy5AhWrFiByMhI1KpVC4mJiTmu7+fnBz09PfEfDxpgjDHG2LfwHQfyUFxcHMzNzeHv74+ePXtmW56SkoKUlBTxsbTDYnx8PPdJY4wVOhkZGUhLS5N3GEzBqampfXN6jYSEBOjp6RXY8zD3SctD+vr6KFOmDJ48eZLjcnV1dairq//mqBhj7PciIrx58wZxcXHyDoUxKCkpwdLSEmpqavIO5adxkpaHPn36hIiICHTt2lXeoTDGmNxIE7TixYtDS0urwI6cY4WfdNL46OholC5d+o/7LnKSlgujRo2Ch4cHzM3N8fr1a0yePBnKysro2LGjvEP7fabo5fP24/N3+4yxPJWRkSEmaEWLFpV3OIzByMgIr1+/Rnp6OlRVVeUdzk/hJC0XXr58iY4dO+LDhw8wMjJCzZo1cfHiRRgZGck7NJGFz8F83f4zjXzdPGPsDyPtg6alpSXnSBjLJL3MmZGRwUmaItm6dau8Q2CMyRu3JufoT7usxAqvP/m7yFNwMMYYY4wVQJykMcYYYz9AEATs2bMn31+nTp06GDZsWL6/Div4+HInY386vtzG/hD53Uc2q2ezm/7U+u/evcOkSZNw8OBBvH37FgYGBnB0dMSkSZNQo0YNAEB0dDQMDAzyI9w8Z2FhgefPnwPI7B9oZ2cHX19ftG3bVs6R5WzKlCnYs2cPbt68Ke9QChRuSWOMMabwPD09cePGDaxfvx6PHj3Cvn37UKdOHXz48EFcx9jY+I+a63LatGmIjo7GjRs3ULVqVbRv3x7nz5/Pcd3U1NTfHB37EdySxhgr1HiEM/svcXFxOHPmDE6dOgVXV1cAgLm5OapVqyazniAI2L17N1q2bIlnz57B0tIS27Ztw5IlS3D16lVUqFABmzdvRnx8PPr3748HDx6gVq1a2LBhgzjqv3v37oiLi0OlSpWwdOlSpKSkoFOnTli8ePE3J1tNSUnB+PHjERwcjLi4OFSoUAFz5sxBnTp1vvu+dHR0YGxsDGNjYyxbtgybNm3C/v378ffff8PCwgI9e/bE48ePsWfPHrRu3RpBQUHYuXMnJk2ahCdPnsDExASDBw/GyJEjxW1aWFigV69eePToEXbt2oWiRYtiyZIlcHFxQa9evRAaGgorKyusW7cOVapUAQAEBQVh2LBhCAoKwujRoxEVFQVXV1esWbMGZmZmCAoKwtSpU8U6BoDAwEB07979pz/LwoZb0hhjjCk0bW1taGtrY8+ePTK37vsRkydPxoQJE3D9+nWoqKigU6dOGDNmDBYtWoQzZ87gyZMnmDRpksxzQkNDER4ejlOnTiE4OBi7du0Sk5ScDBo0CBcuXMDWrVtx+/ZttG3bFo0bN8bjx49/OE4VFRWoqqrKtJjNmzcPjo6OuHHjBiZOnIhr166hXbt26NChA+7cuYMpU6Zg4sSJCAoKktnWggULUKNGDdy4cQNNmzZF165d4eXlhS5duuD69euwtraGl5cXst51Mjk5GTNnzsSGDRtw7tw5xMXFoUOHDgCA9u3bY+TIkShfvjyio6MRHR2N9u3b//B7K8y4JY0xxphCU1FRQVBQEHr37o2AgABUrlwZrq6u6NChAypWrPjd544aNQpubm4AgKFDh6Jjx44IDQ0V+7H17NkzW5KjpqaGdevWQUtLC+XLl8e0adMwevRoTJ8+Pds9Jl+8eIHAwEC8ePECpqam4mseOXIEgYGBmDVr1n++v9TUVMyfPx/x8fGoV6+eWF6vXj2ZVrLOnTujfv36mDhxIgCgTJkyuH//PubOnSvTquXu7o6+ffsCACZNmoQVK1agatWqYn+3sWPHwsXFBW/fvoWxsTGAzPnzli5diurVqwMA1q9fj3LlyuHy5cuoVq0atLW1oaKiIq7PMnFLGmOMMYXn6emJ169fY9++fWjcuDFOnTqFypUrZ0uwvpY1iStRogQAwMHBQaYsJiZG5jmOjo4yk/26uLjg06dPiIqKyrb9O3fuICMjA2XKlBFb/LS1tXH69GlERER8N7axY8dCW1sbWlpamDNnDmbPno2mTf83oEJ6OVIqPDxcTC6latSogcePHyMjI+On3jMAmfetoqKCqlWrio/Lli0LfX19hIeHf/c9KDpuSWOMMcYAaGhooGHDhmjYsCEmTpyIXr16YfLkyd/tG5V1Bntpf6qvyyQSyS/H9OnTJygrK+PatWtQVlaWWaatrf3d544ePRrdu3eHtrY2SpQokW1S1yJFivxSTD/yngHk6n2zTNySxhhjjOXA3t4eSUlJeb7dW7du4fPnz+LjixcvQltbG2ZmZtnWrVSpEjIyMhATEwMbGxuZf/91abBYsWLiej8y6365cuVw7tw5mbJz586hTJky2RLEn5Weno6rV6+Kjx8+fIi4uDiUK1cOQOYl4KytdSwTJ2mMMcYU2ocPH1CvXj1s2rQJt2/fRmRkJEJCQvDPP/+gRYsWef56qamp6NmzJ+7fv49Dhw5h8uTJGDRoULb+aEBmv7DOnTvDy8sLu3btQmRkJC5fvgw/Pz8cPJi3I5dHjhyJ0NBQTJ8+HY8ePcL69euxdOlSjBo1KtfbVlVVxeDBg3Hp0iVcu3YN3bt3x19//SWOoLWwsEBkZCRu3ryJ9+/f//QAjsKKL3cyxhhTaNra2qhevToWLFiAiIgIpKWlwczMDL1798a4cePy/PXq168PW1tb1K5dGykpKejYsSOmTJnyzfUDAwMxY8YMjBw5Eq9evUKxYsXw119/oVmzZnkaV+XKlbF9+3ZMmjQJ06dPh4mJCaZNm5YnU2FoaWlh7Nix6NSpE169eoVatWph7dq14nJPT0/s2rULdevWRVxcHE/B8f8EyjpGlv1WCQkJ0NPTQ3x8PHR1dfPlNfJ/jqhO+bp9nu3+B/AdB76L94Hf68uXL4iMjISlpSU0NHgSua9J50n7HbeXKiik86TFxcXJ5fW/9538Hefh3ODLnYwxxhhjBRAnaYwxxhhjBRAnaYwxxthvEhQUpFCXOoH/XeJlP4+TNMYYY4yxAoiTNMYYY4yxAoin4GCMMcbYr3t9I3+3b1opf7dfgHFLGmOMMcZYAcRJGmOMMcZYAcRJGmOMMcZYAcRJGmOMMVbAPXv2DIIg4ObNm/IOhf1GPHCAMcbY75HftzCTea2fv53WmzdvMHPmTBw8eBCvXr1C8eLF4eTkhGHDhqF+/fr5EGTBcurUKdStW1d8XLx4cdSsWRNz586FlZWVHCP7NgsLCwwbNgzDhg2Tdyj5gpO0PDJ79mz4+vpi6NChWLhwobzDYYwx9hOePXuGGjVqQF9fH3PnzoWDgwPS0tJw9OhRDBw4EA8ePJB3iL/s9su4H1ov4t0nAMDe01dQpIg2XkRGYJrPcDRs0hQ7jp2FsrKyzPpEhIyMDFRWy+uImRRf7swDV65cwcqVK1GxYkV5h8IYY+wXDBgwAIIg4PLly/D09ESZMmVQvnx5jBgxAhcvXhTXe/HiBVq0aAFtbW3o6uqiXbt2ePv2rbh8ypQpcHJywrp161C6dGloa2tjwIAByMjIwD///ANjY2MUL14cM2fOlHl9QRCwYsUKNGnSBJqamrCyssKOHTu+G/Pdu3fRpEkTaGtro0SJEujatSvev38PILNVTE1NDWfOnBHXD1yxCHWcbPHhXcx3t2tY1AhGJYzh/FcN9B06Gk8fPUDUs6e4cuEsHM0McDbsODq410EV6xK4ceUiUlJSMWTiPyhesT40rP5CzZY9cOXmPXF7p85fhVCyMo6eOo9KjTpC09oF9dr2Qcz7WBw+eQ7lXFtD164WOg0ch+TPn8Xn1WnTG4PGz8agQYOgp6eHYsWKYeLEiSCizOV16uD58+cYPnw4BEGAIAjffV9/Ik7ScunTp0/o3LkzVq9eDQMDA3mHwxhj7CfFxsbiyJEjGDhwIIoUKZJtub6+PgBAIpGgRYsWiI2NxenTp3H8+HE8ffoU7du3l1k/IiIChw8fxpEjRxAcHIy1a9eiadOmePnyJU6fPo05c+ZgwoQJuHTpkszzJk6cCE9PT9y6dQudO3dGhw4dEB4enmPMcXFxqFevHipVqoSrV6/iyJEjePv2Ldq1awcgM4EZNmwYunbtisSEeITfvY1l82Zhyj+LUNSo+A/XjbqGJgAgLTVVLFvkNxVDfSZjz8lLKFO2PMbMXISdh0KxfuE0XD+yBTYWZnDrPBCxH2UvOU+ZvxJLZ47F+b2BiHr9Fu36jcXCNZuxZdksHNywCMdOX8SSddtknrM+5ABUVFRw+fJlLFq0CP7+/lizZg0AYNeuXShVqhSmTZuG6OhoREdH//D7+lPw5c5cGjhwIJo2bYoGDRpgxowZ3103JSUFKSkp4uOEhIT8Do8VABY+B/N1+8808nXzjBV6T548ARGhbNmy310vNDQUd+7cQWRkJMzMzAAAGzZsQPny5XHlyhVUrVoVQGYyt27dOujo6MDe3h5169bFw4cPcejQISgpKcHOzg5z5sxBWFgYqlevLm6/bdu26NWrFwBg+vTpOH78OJYsWYLly5dni2Xp0qWoVKkSZs2aJZatW7cOZmZmePToEcqUKYMZM2bg+PHjmDZ2OJ48CkfzNh1Rp5H7D9fLu7dvsGHVEhQ3NoWFtS1uXrsMABgwchxcamf2XUtOTsKKDSEIWjAVTerVAACsnjsBx/+6iLVb92B0/27i9maMGYAaVZ0AAD07toSv3xJEnN8HK/NSAIA2Tesj7PwVjB3YXXyOmWkJLFiwAIIgwM7ODnfu3MGCBQvQu3dvGBoaQllZGTo6OjA2Nv7h9/Un4SQtF7Zu3Yrr16/jypUrP7S+n58fpk6dms9RMcYY+5lZ8Cnm//ubxT7N+Xn/P+N9eHg4zMzMxAQNAOzt7aGvr4/w8HAxSbOwsICOjo64TokSJaCsrAwlJSWZspgY2cuOLi4u2R5/azTnrVu3EBYWBm1t7WzLIiIiUKZMGaipqWHz5s2oWLEiTEqaYdTkmTlsKbtG1cqDiPDlczLs7Ctg/qr1UFX7X8cz+4pO4t8vn0ciLS0dNao6imWqqqqo5lQB4Y8jZbZb0b6M+HcJI0NoaWqICZq07HKWy6QA8FdlB5nLmC4uLpg/fz4yMjKy9ZErjBQySTtz5gxWrlyJiIgI7NixAyVLlsTGjRthaWmJmjVr/tA2oqKiMHToUBw/fhwaGj/WlOHr64sRI0aIjxMSEmR2dsYYY7+frWVpCIKAB0+e5cn2VFVVZR4LgpBjmUQi+eXX+PTpEzw8PDBnzpxsy0xMTMS/z58/DwCIj/+IhLiP0NLKfjn3a4E7D0FbWweGxYqhiLZOtuWaP7CNnKiq/C/lECBAVVU2BcltnRRGCtcnbefOnXBzc4OmpiZu3LghXn6Mj4+XaTb+L9euXUNMTAwqV64MFRUVqKio4PTp01i8eDFUVFSQkZGR7Tnq6urQ1dWV+ccYY4Xd7ZdxPzzCUB4MDfTgVscFy4K2Iyn5c7blcXFxAIBy5cohKioKUVFR4rL79+8jLi4O9vb2uY4j6wAF6eNy5crluG7lypVx7949WFhYwMbGRuaftF9dREQEhg8fjklzFsHBqQomDB/wQ0lQSTNzmFlY5pigfa2UuSXU1FRx7sotsSwtLQ1Xbt6DfZncT9tx6cZdmccXL16Era2t2IqmpqaW4/m2sFC4JG3GjBkICAjA6tWrZX7Z1KhRA9evX//h7dSvXx937tzBzZs3xX9VqlRB586dcfPmTYVohmWMscJi2UwfZEgkqNa0K3YeDMXjpy8Q/vgpFq8NFi9DNmjQAA4ODujcuTOuX7+Oy5cvw8vLC66urqhSpUquYwgJCcG6devw6NEjTJ48GZcvX8agQYNyXHfgwIGIjY1Fx44dceXKFURERODo0aPw9vZGRkYGMjIy0KVLF7i5uaFl+86YNn8pHoffw4ZVS3MdZ1ZaWkXQv2sbjJ6xEEfCzuH+o6foPXoGkr98Qc8OLXO9/Rev3mDEiBF4+PAhgoODsWTJEgwdOlRcbmFhgX///RevXr0SR7YWJgp3ufPhw4eoXbt2tnI9PT3x19KP0NHRQYUKFWTKihQpgqJFi2YrZ4wxVrBZmZfC9SObMXPxWoyc5o/omPcwMjSAc8VyWLFiBYDMy3F79+7F4MGDUbt2bSgpKaFx48ZYsmRJnsQwdepUbN26FQMGDICJiQmCg4O/2UJnamqKc+fOYezYsWjUqBFSUlJgbm6Oxo0bQ0lJCdOnT8fz589x4MABvPoMGJUwxsQ5C+EzqBdcateFnb1DnsQMALPHDYGECF2HTERiUjKqVLTH0c3LYKCf+6tFXm2a4vPnz6hWrRqUlZUxdOhQ9OnTR1w+bdo09O3bF9bW1khJSRGn5ygsBCps7+g/WFlZYdWqVWjQoAF0dHRw69YtWFlZYcOGDZg9ezbu37//y9uuU6cOnJycfngy24SEBOjp6SE+Pj7fLn3m/8jCTvm6/V+ZNbyg4c9Avrj+f68vX74gMjISlpaWYn/d/L7UWVEp8r9Xyo3/HziQnwRBwO7du9GyZcs83/afWv912vSGk30ZLFyzJVfbyek7KfU7zsO5oXAtab1798bQoUOxbt06CIKA169f48KFCxg1ahQmTpyYq22fOnUqb4JkjDHGmMJTuCTNx8cHEokE9evXR3JyMmrXrg11dXWMGjUKgwcPlnd4jDHGGGMAFCxJy8jIwLlz5zBw4ECMHj0aT548wadPn2Bvb5/jXDOMMcbY76BgPY9+yKkdq+UdgtwpVJKmrKyMRo0aITw8HPr6+nkyZJoxxhhjLD8o3BQcFSpUwNOnT+UdBmOMMcbYdylckjZjxgyMGjUKBw4cQHR0NBISEmT+McYYyz2eOZ4VFH/ypWSFutwJAO7umTeXbd68ucz9wIgIgiAU6pmLGWMsv6mpqUFJSQmvX7+GkZER1NTUQOmp+fqaX5Ty+ST85Uv+bj+fKXL9ExHevXuX4625/gQKl6SFhYXJOwTGGCu0lJSUYGlpiejoaLx+/RoAEPMx+62W8pKa8C5ft4+kfJ6HLZ8pev0LgoBSpUr9kXcCUrgkzdXVVd4hMMZYoaampobSpUsjPT0dGRkZ6LXrVL6+Xqj6qHzdPgZdzd/t5zNFr39VVdU/MkEDFDBJAzJvlrt27VqEh4cDAMqXL48ePXpAT09PzpExxljhIL28pKqqileJ+duNRCMt6r9XytULaPz3OgUY1/+fS+EGDly9ehXW1tZYsGABYmNjERsbC39/f1hbW//UDdYZY4wxxvKTwrWkDR8+HM2bN8fq1auhopL59tPT09GrVy8MGzYM//77r5wjZIwxxhhTwCTt6tWrMgkaAKioqGDMmDGoUqWKHCNjjDHGGPsfhbvcqaurixcvXmQrj4qKgo6OjhwiYowxxhjLTuGStPbt26Nnz57Ytm0boqKiEBUVha1bt6JXr17o2LGjvMNjjDHGGAOggJc7582bB0EQ4OXlhfT0dACZw3P79++P2bNnyzk6xhhjjLFMCpekqampYdGiRfDz80NERAQAwNraGlpaWnKOjDHGGGPsfxQuSYuPj0dGRgYMDQ3h4OAglsfGxkJFRQW6urpyjI4xxhhjLJPC9Unr0KEDtm7dmq18+/bt6NChgxwiYowxxhjLTuGStEuXLqFu3brZyuvUqYNLly7JISLGGGOMsewULklLSUkRBwxklZaWhs+f8/cmtIwxxhhjP0rhkrRq1aph1apV2coDAgLg7Owsh4gYY4wxxrJTuIEDM2bMQIMGDXDr1i3Ur18fABAaGoorV67g2LFjco6OMcYYYyyTwrWk1ahRAxcuXICZmRm2b9+O/fv3w8bGBrdv30atWrXkHR5jjDHGGAAFbEkDACcnJ2zevDnX21mxYgVWrFiBZ8+eAQDKly+PSZMmoUmTJrneNmOMMcYUm8Ikaenp6cjIyIC6urpY9vbtWwQEBCApKQnNmzdHzZo1f2qbpUqVwuzZs2Frawsiwvr169GiRQvcuHED5cuXz+u3wBhjjDEFojBJWu/evaGmpoaVK1cCABITE1G1alV8+fIFJiYmWLBgAfbu3Qt3d/cf3qaHh4fM45kzZ2LFihW4ePEiJ2mMMcYYyxWF6ZN27tw5eHp6io83bNiAjIwMPH78GLdu3cKIESMwd+7cX95+RkYGtm7diqSkJLi4uORFyIwxxhhTYArTkvbq1SvY2tqKj0NDQ+Hp6Qk9PT0AQLdu3RAYGPjT271z5w5cXFzw5csXaGtrY/fu3bC3t89x3ZSUFKSkpIiPExISfvr1GGOMMaYYFKYlTUNDQ2ay2osXL6J69eoyyz99+vTT27Wzs8PNmzdx6dIl9O/fH926dcP9+/dzXNfPzw96enriPzMzs59/I4wxxhhTCAqTpDk5OWHjxo0AgDNnzuDt27eoV6+euDwiIgKmpqY/vV01NTXY2NjA2dkZfn5+cHR0xKJFi3Jc19fXF/Hx8eK/qKioX3szjDHGGCv0FOZyp3RqjO3btyM6Ohrdu3eHiYmJuHz37t2oUaNGrl9HIpHIXNLMSl1dXWZ0KWOMMcbYtyhMkubq6opr167h2LFjMDY2Rtu2bWWWOzk5oVq1aj+1TV9fXzRp0gSlS5dGYmIitmzZglOnTuHo0aN5GTpjjDHGFJDCJGkAUK5cOZQrVy7HZX369Pnp7cXExMDLywvR0dHQ09NDxYoVcfToUTRs2DC3oTLGGGNMwSlUkpbX1q5dK+8QGGOMMVZIKczAAcYYY4yxPwknaYwxxhhjBRAnaYwxxhhjBZBCJmlxcXFYs2YNfH19ERsbCwC4fv06Xr16JefIGGOMMcYyKdzAgdu3b6NBgwbQ09PDs2fP0Lt3bxgaGmLXrl148eIFNmzYIO8QGWOMMcYUryVtxIgR6N69Ox4/fgwNDQ2x3N3dHf/++68cI2OMMcYY+x+FS9KuXLmCvn37ZisvWbIk3rx5I4eIGGOMMcayU7gkTV1dHQkJCdnKHz16BCMjIzlExBhjjDGWncIlac2bN8e0adOQlpYGABAEAS9evMDYsWPh6ekp5+gYY4wxxjIpXJI2f/58fPr0CcWLF8fnz5/h6uoKGxsb6OjoYObMmfIOjzHGGGMMgAKO7tTT08Px48dx9uxZ3L59G58+fULlypXRoEEDeYfGGGOMMSZSuCRNqmbNmqhZs6a8w2CMMcYYy5HCJWmLFy/OsVwQBGhoaMDGxga1a9eGsrLyb46MMcYYY+x/FC5JW7BgAd69e4fk5GQYGBgAAD5+/AgtLS1oa2sjJiYGVlZWCAsLg5mZmZyjZYwxxpiiUriBA7NmzULVqlXx+PFjfPjwAR8+fMCjR49QvXp1LFq0CC9evICxsTGGDx8u71AZY4wxpsAUriVtwoQJ2LlzJ6ytrcUyGxsbzJs3D56ennj69Cn++ecfno6DMcYYY3KlcC1p0dHRSE9Pz1aenp4u3nHA1NQUiYmJvzs0xhhjjDGRwiVpdevWRd++fXHjxg2x7MaNG+jfvz/q1asHALhz5w4sLS3lFSJjjDHGmOIlaWvXroWhoSGcnZ2hrq4OdXV1VKlSBYaGhli7di0AQFtbG/Pnz5dzpIwxxhhTZArXJ83Y2BjHjx/HgwcP8OjRIwCAnZ0d7OzsxHXq1q0rr/AYY4wxxgAoYJImVbZsWZQtW1beYTDGGGOM5Ughk7SXL19i3759ePHiBVJTU2WW+fv7yykqxhhjjLH/UbgkLTQ0FM2bN4eVlRUePHiAChUq4NmzZyAiVK5cWd7hMcYYY4wBUMCBA76+vhg1ahTu3LkDDQ0N7Ny5E1FRUXB1dUXbtm3lHR5jjDHGGAAFTNLCw8Ph5eUFAFBRUcHnz5+hra2NadOmYc6cOT+1LT8/P1StWhU6OjooXrw4WrZsiYcPH+ZH2IwxxhhTMAqXpBUpUkTsh2ZiYoKIiAhx2fv3739qW6dPn8bAgQNx8eJFHD9+HGlpaWjUqBGSkpLyNGbGGGOMKR6F65P2119/4ezZsyhXrhzc3d0xcuRI3LlzB7t27cJff/31U9s6cuSIzOOgoCAUL14c165dQ+3atfMybMYYY4wpGIVL0vz9/fHp0ycAwNSpU/Hp0yds27YNtra2uR7ZGR8fDwAwNDTMdZyMMcYYU2wKlaRlZGTg5cuXqFixIoDMS58BAQF5sm2JRIJhw4ahRo0aqFChQo7rpKSkICUlRXyckJCQJ6/NGGOMscJHofqkKSsro1GjRvj48WOeb3vgwIG4e/cutm7d+s11/Pz8oKenJ/4zMzPL8zgYY4wxVjgoVJIGABUqVMDTp0/zdJuDBg3CgQMHEBYWhlKlSn1zPV9fX8THx4v/oqKi8jQOxhhjjBUeCnW5EwBmzJiBUaNGYfr06XB2dkaRIkVkluvq6v7wtogIgwcPxu7du3Hq1ClYWlp+d33pDd0ZY4wxxv6LwiVp7u7uAIDmzZtDEASxnIggCAIyMjJ+eFsDBw7Eli1bsHfvXujo6ODNmzcAAD09PWhqauZt4IwxxhhTKAqXpIWFheXZtlasWAEAqFOnjkx5YGAgunfvnmevwxhjjDHFo3BJmqura55ti4jybFuMMcYYY1kp3MABADhz5gy6dOmCv//+G69evQIAbNy4EWfPnpVzZIwxxhhjmRQuSdu5cyfc3NygqamJ69evi/OWxcfHY9asWXKOjjHGGGMsk8IlaTNmzEBAQABWr14NVVVVsbxGjRq4fv26HCNjjDHGGPsfhUvSHj58mON9NfX09BAXF/f7A2KMMcYYy4HCJWnGxsZ48uRJtvKzZ8/CyspKDhExxhhjjGWncEla7969MXToUFy6dAmCIOD169fYvHkzRo0ahf79+8s7PMYYY4wxAAo4BYePjw8kEgnq16+P5ORk1K5dG+rq6hg1ahQGDx4s7/AYY4wxxgAoYJImCALGjx+P0aNH48mTJ/j06RPs7e2hra0t79AYY4wxxkQKd7lz06ZNSE5OhpqaGuzt7VGtWjVO0BhjjDFW4ChckjZ8+HAUL14cnTp1wqFDh37qXp2MMcYYY7+LwiVp0dHR2Lp1KwRBQLt27WBiYoKBAwfi/Pnz8g6NMcYYY0ykcEmaiooKmjVrhs2bNyMmJgYLFizAs2fPULduXVhbW8s7PMYYY4wxAAo4cCArLS0tuLm54ePHj3j+/DnCw8PlHRJjjDHGGAAFbEkDgOTkZGzevBnu7u4oWbIkFi5ciFatWuHevXvyDo0xxhhjDIACtqR16NABBw4cgJaWFtq1a4eJEyfCxcVF3mExxhhjjMlQuCRNWVkZ27dvh5ubG5SVlWWW3b17FxUqVJBTZIwxxhhj/6NwSdrmzZtlHicmJiI4OBhr1qzBtWvXeEoOxhhjjBUICtknDQD+/fdfdOvWDSYmJpg3bx7q1auHixcvyjssxhhjjDEACtaS9ubNGwQFBWHt2rVISEhAu3btkJKSgj179sDe3l7e4THGGGOMiRSmJc3DwwN2dna4ffs2Fi5ciNevX2PJkiXyDosxxhhjLEcK05J2+PBhDBkyBP3794etra28w2GMMcYY+y6FaUk7e/YsEhMT4ezsjOrVq2Pp0qV4//69vMNijDHGGMuRwiRpf/31F1avXo3o6Gj07dsXW7duhampKSQSCY4fP47ExER5h8gYY4wxJlKYJE2qSJEi6NGjB86ePYs7d+5g5MiRmD17NooXL47mzZvLOzzGGGOMMQAKmKRlZWdnh3/++QcvX75EcHDwTz//33//hYeHB0xNTSEIAvbs2ZP3QTLGGGNMISl0kialrKyMli1bYt++fT/1vKSkJDg6OmLZsmX5FBljjDHGFJXCjO7MD02aNEGTJk3kHQZjjDHGCiFuSWOMMcYYK4C4Je03SklJQUpKivg4ISFBjtEwxhhjrCDjlrTfyM/PD3p6euI/MzMzeYfEGGOMsQKKk7TfyNfXF/Hx8eK/qKgoeYfEGGOMsQKKL3f+Rurq6lBXV5d3GIwxxhj7A3CSlgufPn3CkydPxMeRkZG4efMmDA0NUbp0aTlGxhhjjLE/HSdpuXD16lXUrVtXfDxixAgAQLdu3RAUFCSnqBhjjDFWGHCSlgt16tQBEck7DMYYY4wVQjxwgDHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkjTHGGGOsAOIkLQ8sW7YMFhYW0NDQQPXq1XH58mV5h8QYY4yxPxwnabm0bds2jBgxApMnT8b169fh6OgINzc3xMTEyDs0xhhjjP3BOEnLJX9/f/Tu3Rve3t6wt7dHQEAAtLS0sG7dOnmHxhhjjLE/mIq8A/iTpaam4tq1a/D19RXLlJSU0KBBA1y4cCHb+ikpKUhJSREfx8fHAwASEhLyLUZJSnK+bRsAEgTK1+0jH+vmd+HPQL64/uWPPwP54vr/3qYzt02Uz+/hF3GSlgvv379HRkYGSpQoIVNeokQJPHjwINv6fn5+mDp1arZyMzOzfIsxv+nl9wvMzvdX+OPxZyBfXP/yx5+BfBWG+k9MTISeXsH7nDlJ+418fX0xYsQI8bFEIkFsbCyKFi0KQRDkGNmvSUhIgJmZGaKioqCrqyvvcBQSfwbyxfUvf/wZyNefXv9EhMTERJiamso7lBxxkpYLxYoVg7KyMt6+fStT/vbtWxgbG2dbX11dHerq6jJl+vr6+Rnib6Grq/tH7pyFCX8G8sX1L3/8GcjXn1z/BbEFTYoHDuSCmpoanJ2dERoaKpZJJBKEhobCxcVFjpExxhhj7E/HLWm5NGLECHTr1g1VqlRBtWrVsHDhQiQlJcHb21veoTHGGGPsD8ZJWi61b98e7969w6RJk/DmzRs4OTnhyJEj2QYTFEbq6uqYPHlytku47Pfhz0C+uP7ljz8D+eL6z18CFdRxp4wxxhhjCoz7pDHGGGOMFUCcpDHGGGOMFUCcpDHGGGOMFUCcpDHGGGOMFUCcpDHGGGNMBo8pLBg4SWPZSHfOjIwMmcfs9+D6li+JRCL+nZqaKsdIFFfWz4D9fhKJRLxVofSz4OOSfHCSxmQQEQRBwIkTJzB8+HAkJCT8kfcV/VNlPTjGxsbKORrFI5FIoKSUeVhctWoVtmzZku22byz/ST+DzZs3Izo6GgAnCb9L1n1g4cKFGDNmDNLS0vg8ICecpDEZgiBg586daNeuHVRUVPDo0SMAmQdIPkjmr6wHx/nz52POnDm4e/eunKNSLNL6HzNmDCZMmMAnJjmR3vTa29sba9euBQD+LH6TrPvA/PnzUapUKbx69UpczueB34vvOMBkXLt2DX369MHs2bPRp08fsTw5ORlFihSRY2SFX9aDY2BgIJYsWQIDAwOZdaQtnSz/LF++HJs2bcKxY8fg5OQEIPPS/6dPnwr0jZgLGx0dHUyZMgVhYWHo2bMnTExM5B2Swti4cSM2bNiAAwcOoEqVKgAy94GUlBRoaWnJOTrFwi1pTMbt27fh6OiIPn364OPHj9i+fTuaN2+OihUrYunSpWI/NZY/goODERwcjNDQUHTo0AElS5ZEcnKy2KIpCAL/ks1n9+/fh4eHB5ycnBAREYFNmzahRo0a6Ny5M7Zs2SLv8Aqlr/ugSX+I1KxZE7du3cLt27cBcCtOfpNeMbl//z4aNmyIKlWq4O7du1i2bBkqVaoEBwcHrF+/Xt5hKhRuSWMyrTPFixfHqVOnMGvWLBw9ehR6enowNjZGhQoVMGTIEDRo0ABly5aVc8SF15s3b2BjY4OKFSvi8ePHOHDgAFasWIGMjAw0btwYy5Yt45a0PPR1y2R6ejpSU1Px4MEDTJo0CadPn4aBgQHs7e0hkUiwaNEiNGrUCEWLFuXPIY8QkdiKfPToUaipqaFu3boAgNq1a6NFixaYOnUqqlevDn19fTlGWjhl7WaRnp4OVVVVlCxZEnPmzIGpqSkOHToEOzs7eHl5ISIiAsOGDUOzZs1QtGhROUeuGDhJU2DSE1RCQgK0tLTw5csXNG3aFDNnzsSmTZtQp04deHt7o0qVKkhLS8OxY8eQmJgo77ALjawHx/j4eOjp6UFXVxfv379Hu3btcOfOHVSuXBldunRB8eLFMWnSJPTt2xcVK1aUc+SFQ9b6T0tLw5cvX6Cjo4OxY8di7Nix2LNnD7p164b69evDyckJ69evR1RUFIoUKcIJWh6S1uXly5fh4+ODqKgotG7dGi1btoS7uzt69uyJIUOGIDw8HC4uLsjIyICysrKcoy4csu4Dy5cvx5s3b+Dj44MOHTogPj4eu3fvRt++fdGwYUPY2dnhzp07uH37Nj5//iznyBUH32BdQUkTtEOHDmHJkiWIi4uDkpIS5syZg5o1a+LTp0/Q1tYW1x83bhx27NiBM2fOoESJEnKMvHD4epBAUlISvL29UaxYMSxcuBB3795F/fr1UbduXVhaWuLq1asYMGAAtm7dCisrKzlH/+fLWv+zZ8/G5cuXcfnyZXh7e6Nly5ZwdnZGQkICdHV1AWS2MLRs2RJaWlrYtm0bJ2l54PTp01BRUUGNGjUwatQoVKtWDdWqVcPz588xbtw4MRnz8/ND586d0bhxY6xevVreYRdKo0ePxpYtWzBhwgS4u7vD3NwcAJCUlIQiRYqAiJCeno7mzZsDAA4dOsT7wO9CTGHt37+fNDQ0aM6cOXT48GHq0KEDCYJAt27dEtc5duwY9ejRg4oWLUrXr1+XY7SF0+jRo8nIyIg2bNhAUVFRYnl6ejoREWVkZFBiYiJ5eHhQw4YNKSMjQ16hFgoSiUTm8bhx48jIyIjWrVtHGzZsIDs7O6pZsya9evWKiIji4+Npy5Yt5O7uThUqVKDU1NQct8N+zvPnz6levXrUqFEj6tSpEykpKdHt27fF5fHx8XT79m3y9PSk+vXrU7FixUhbW5suXrwox6gLp7Vr11KJEiXo8uXLMuWfPn0iIqLk5GQKDg6mOnXqkJOTk7gP8LHo9+AkTUF9/vyZmjdvTjNnziQiohcvXpCVlRX16dNHXOfTp0+0dOlS8vT0pLt378or1EJrw4YNZGJiInNy+vTpE7148YKIMhOBFStWkJubGx8c88Ht27epQoUKdObMGSIiOnv2LKmpqVFQUBARZdb/+/fvqWvXrtS1a1dKS0sjIhL/Zz9v2bJl4t+nTp0ic3NzUlFRofXr1xNR5ndb+gNF6uLFi7RmzRrS1tamqVOn/tZ4FcGQIUOoW7duRER07949CggIoMqVK1OZMmVoz549FBMTQ3PnzqV+/frxPiAHnKQpqI8fP5KVlRVduHCBYmNjqWTJkjIJ2po1a+jt27eUmppKiYmJcoy08Jo7dy41a9aMiIgePXpEixcvJltbW6patSqNGDGCiIjmzJlDo0aN4oNjLg0cOJAOHDggU3bv3j1ycHAgIqKQkBDS1tamFStWEBFRUlIS7dy5k1JTUykuLk5sOfs6gWA/bv369dSqVStKSUkhIqK7d+9S9erVycXFhZo2bUr//vuvuG5GRka2HyNr164lU1NTmRZn9nOk3+OsLcH//PMPFS9enEaPHk2VK1em1q1b06RJk6hXr15kaGhICQkJMucA3gd+Lx44oCDo//ugff78GZqamtDX18fff/+NnTt3Ytu2bfDw8MDixYsBAB8/fsSRI0cAAD179oSqqqo8Qy8UKIf5zdLT0/HgwQP06dMHFy5cQPny5dG+fXuoq6tj/fr1GDVqFEaMGAEVlczdNCMjQ/yb/bg3b95ASUkJjRo1kilPTk5GQkICli5diokTJ2L27Nno168fgMz5Ajdv3gwrKytxrjQi4g7rudC4cWN07twZysrKOH36NFxdXXHx4kUcO3YMCxYswMyZMzF+/HjUqlVL7C8o7RMFAFWrVkWxYsXw5csXeb6NP1bWfpixsbHQ0NCAsrIyunfvjo8fP+LAgQPo2bMnGjVqhHLlyuH06dN4+PAhUlJSUKxYMQC8D8iFfHNE9jtIfzUdPXqUxo8fT+fPnyciounTp5OBgQHVq1ePvnz5Iq7v4+NDZcqUoWfPnskl3sIma4tAbGysTL1OmjSJmjdvTgEBAfT48WMiIjp37hw5OztTZGSkuB73gfo1X9dbUFAQrV69Wnzs7e1NgiDQjBkzxLLk5GRq1qwZNW/enC8t54F+/frRo0ePxMdnz54lIyMjsbWYiGjv3r3UuHFjcnd3p1OnThERUfPmzSkwMFBcx9/fnwRBoNevX/+22AuLrPvBrFmzqF69euTo6Eju7u5idwtpHzSizBb7xo0bU7NmzfjYI2c8ulNB7Nq1C126dIGPjw/atGkDe3t7AEC3bt1w9epVODs7w9bWFo8ePcKBAwcQFhYmtiCwX0dZWtCmTJmCkydP4ubNm2jSpAmaNGmC7t27Iz09XWwh+/z5M9q1a4f09HQcPHhQ/OXLfk3W6RpSUlLQpEkTpKamom/fvujatSueP3+O/v3749y5c5g8eTISExNx9uxZREdH48aNG1BVVZVpgWA/JyIiAm3btkVCQgJCQ0Nhbm6OV69eITAwECEhIWjYsCHmzZsHANi/fz9Wr16N27dvw9DQELGxsXj8+DFUVVWRlpaGHTt2oFy5cnxcyoUJEyYgICAAK1asgK6uLsaNG4fnz5/jwYMHKFasGJKSknDs2DEsWbIEsbGxuHLlCu8D8ibnJJH9Bg8ePCBLS0tatWpVtmUSiYT8/PyoVatW9Pfff1OfPn3o3r17coiycJsyZQoZGRnR7t276f79++Ti4kJlypSh+/fvE1Hmr9hFixZRkyZNyNHRkQcJ5IGsrTeLFi2iW7du0YsXL6hly5bk6upKW7ZsISKimJgYGj58ODk7O1Pjxo1p8ODB3AcwD125coXc3NzI0tKSIiIiiIjo9evXNGvWLLK3t6eRI0eK6164cIHWrl1LU6dO5c8gj0VFRdFff/1FJ06cICKiffv2kb6+Pi1fvlxmncmTJ1Pv3r25/gsITtIUwNmzZ8nGxkbmpJVTE3ZqaionBXlMIpFQVFQUVa9enfbv309EmaPaNDU1ae3atUT0v464U6dOpQEDBvDBMQ/cvXuXBEGg9evX0+jRo8nQ0JAePHhARJnTP3h4eFDt2rVp8+bN4nM+fvwosw2u/9zJeoy5cuUKNWzY8JuJ2qhRo3LcBndSzzt3794lQ0NDiouLo4MHD2YbKLN48WJKSEighIQEHihTgHCSpgC2bNlCenp6lJycTEQkttIQZR48L1y4IK/QFMK7d++oUqVKFB8fT7t375Y5OCYnJ9P69evFebmk+OD4a969e0dERF++fKGFCxeSqqoq6enpif0Apd99aaJWp04d2rBhQ7btcD+cvJH1R9/ly5e/mag5ODjIjC5nuZP1+yv9OzY2lpo3b06+vr6ko6NDK1euFNe5c+cONW/enE6fPp3jNpj88EXmQoZy6GLYpEkT6Orqon///gAgM1pz/fr1CA0NRVpa2m+LsTDLqf4zMjLw8eNHjBo1Cj169MCcOXPEUYQRERHYvHkz7ty5I7MNHkH189q3b48RI0YAANTV1VGsWDGkp6cjISEBYWFhADK/++np6ShdujSWLl0KfX19zJ49G0ePHpXZFs+m/uuy3ixdSUlJ3CeqVq2K6dOnw8bGBg0aNMDTp09hYmKC7t27o1mzZkhKSuIbqOcBiUQifn8/f/6M5ORkAICBgQG0tbUxe/Zs9OnTB3369AGQOYJ2zJgxSEtLQ82aNcXt8D5QMPDAgUKE/r+T+qVLl3DhwgVx+oDSpUtj1apVmDdvHqpWrYqFCxciKioKO3fuxIoVK3Du3DmUK1dO3uH/8bJ2rn39+jWKFSsGIoK6ujpWrlyJoUOHokOHDggKCgIRiYME0tLScOjQIU7Mcik6OhpFixaFmpoakpKSoKqqihcvXmDfvn0YNWoUli9fjn79+skMJoiOjsbixYsxY8YMrv88kHUfWLduHS5dugQlJSXUqVMH7du3B5B5j84JEyYgIiICJ06cgKWlJT58+ABDQ0MIgpDjdDXs582YMQPHjh2DRCJBp06dMGDAABARXF1d8fbtW9SuXRslSpTA2bNnERsbi2vXrvEggYJIPg14LL/s2bOHNDQ0yNnZmbS0tKhDhw504cIFkkgkFBwcTNbW1mRgYEDW1tZUtmxZvtVTPpgyZQo5OjpS5cqVadKkSfTmzRvKyMigESNGkCAI5OXlRV5eXlS3bl2ZWw1xf8Bfl/XSzJIlS6hs2bLiJeSkpCSaOXMmCYIgM/3GmDFjZO72wJeY886YMWOoVKlS5OXlRQMGDCAVFRWZuw1cvnyZ3NzcSEtLS+ZSP19i+3VZjx/z5s2j4sWL06RJk6hnz54kCILY708ikZCvry95eHhQixYtaMyYMdwPtgDjJK0QkB7YoqKiqEuXLuIozoMHD1K9evXI3d1dvPVNamoqHT16lG7evElv3ryRW8yFSdYTy8aNG6lYsWIUFBRE3t7eVLNmTfL09KS3b98SEdHWrVupefPm1L17dx7Blke+PrFHRERQ6dKlZe7BmZycLCZqvXr1olq1alHZsmW53vPB+vXrycLCgi5dukRERDt27CBBELLNR3fmzBkaNmwYJ8d57ObNm7R8+XI6dOgQEWXuH5s2bSI1NTWZkbQSiURm3+HPoWDiJK2QuHjxInl7e1PDhg1lJkE9ceIE1a9fn9zd3enYsWPyC1ABHDt2jMaOHSszYjAwMJBq1apFrVq1opcvXxIRyUwcTMQHx7wya9YsmjNnDhERPXv2jGxtbcnFxUVM1DIyMmjjxo3UsGFD6tGjh9iCyfWfO1lP9J8/fyY/Pz9asmQJERHt37+f9PT0aPHixeTn50eCINDSpUuzbYM/g7xx/vx5EgSBdHR0st0GTZqo+fj4yCk69is4SSskNm3aRBYWFqSrq0thYWEyy06cOEGNGzemWrVqibN5s7x19uxZcnBwICMjI9q1a5fMssDAQHJ1daXWrVvzXRzySUZGBo0dO5bq1asnzkifU6JGlHn5U4pb0nIn6yW2z58/ExHRy5cv6cmTJ/TixQuyt7cnf39/IsqcA01dXZ0EQaB169bJJd7CLiEhgRYsWECampo0ffr0bMu3bNlCgiCIo8tZwcdJWiGye/duKl++PLVt25auXbsms+zw4cPUsmVLevHihZyiK1y+vsSWlpZGfn5+ZG5uTh4eHtnm3Fq/fj3Z29uTr6/vb4xSsRw7doxKlSpFR48eFcuePXtGZcqUoZo1a9Lz589l1uf+T7mTNUFbvHgxjRw5UpwChYgoLCyMHBwcxKT5zp071Lt3b9q3bx8nx3kga/1/3Z911qxZJAiCTD9AqWPHjnH9/0E4SfsDSU8ut2/fphMnTtDmzZvFnXTHjh3k7OxMXl5e2QYFZG1BYL/u6wNiQkICEWVesvH396cqVarQgAEDKC4uTma9Q4cO8WWdPPC9OuzRowc5OTlRYmKiWPbs2TPS1dWlvn37/o7wFM7o0aPJxMSEli9fLs5/RpTZuiwIAm3cuJGePXtGTZs2pbZt24rHL04Ufl3WY9CSJUuod+/e1KhRI1q2bBlFR0cT0fcTNSKu/z8FJ2l/GOkBbseOHWRubk6VK1emcuXKkaWlpXgpc+vWreTs7Ew9evSgy5cvyzPcQifrwdHf3588PT3J0dGRxo8fTy9evCCJREJz5syhv/76K8dEjYj73/yqrDfkJiKaO3cuBQQEyIzQPHfuHFWpUkXsjyOt6+joaK73PJJ1H9i3bx+ZmprS2bNnZdaRSCT05csXGjNmDAmCQNbW1uTk5CT2A+RWzLwxZswYMjIyovnz59OIESOoTJky1KJFC0pJSaGkpCSaPXs2qaioiH012Z+Hk7Q/0Pnz58nAwIACAwOJiOjp06ckCAItWrRIXEc63Ub//v2zdVRnuefj40MmJiY0Z84c2r59OwmCQO3bt6fk5GRKT0+n2bNnU40aNahTp0706dMneYf7x7t16xY1aNBA5td/t27dqGrVqmRlZUV+fn5iK07Lli2pcePG4no8gi1vzJ8/P1vZ3LlzydXV9buX3q5cuUKhoaFi3XMLTt44d+4c2dnZ0cWLF4kos6VeQ0NDPC9IjRs3jmrUqMGJ8R+Kk7Q/0KpVq6hjx45ElHkTaQsLixxvqRISEkJPnz793eEVetevX6cyZcqI05pcuXKFVFVVZQ6O6enpNG7cOOrTpw/Pf5ZHpCeZrKNn79y5QytWrCBTU1OqWbMmjRkzhk6fPk3FihWj3bt3yynSwmfLli3UunXrbEmun58fVa5cOVuLcWpqKm3fvp1iYmJkyjlJzjuHDh0iBwcHIsq8sqKjoyMOCEhMTKQDBw5QSkoKpaWlifsOJ2p/Hk7S/gDSHevatWskkUjIx8eHPDw8KD4+nszMzGQSgcDAQJowYYI8wy10vj6xXLhwgapUqUJEmYlw1ntxxsfH05EjR4gos0VB+tlxovbrstZdVFQUqampUb169WTWiYyMpNWrV1P58uXJyMiIBEHIcXQb+zUJCQni5yD9fhNlJgcaGhq0adMmmf0kMTGRmjRpQmvWrPntsRZGOSVXhw8fpnr16lFISAjp6OjQ8uXLxWVHjhyhPn36yIwm5wTtz8RJ2h/i0KFDZGBgQBcuXKBLly6Ri4sL6erqii1o0gPo0KFDqUOHDjIdp9mvy9pCcO3aNUpPT6ebN2+Subk5zZ07l/T09GQOjmFhYdSoUSO6e/euWMYHx1+XdeqMI0eOUEZGBv37779UunRpcnNzy/E5ixcvpiFDhvBltTySNfm6dOkSlShRgvr16yeW9e/fnzQ0NGjJkiV0/vx5unnzJjVq1IicnZ255SyPrV+/ng4fPkxEmVOeWFpakiAIFBAQIK7z+fNnatKkCXXo0IGPPYUAJ2kFWNY7CfTs2VMcpfP69Wvq2rUr2drair9Uo6Ojafz48WRkZET379+XW8yFycmTJ6lFixb04cMHGjJkCFlZWdH79+/p8+fP5O3tTWpqajR69Ghx/S9fvpCHhwe1bt2aW87yQGhoKDVu3JguXrxIw4YNI0EQxDs3nDlzhkxNTWX6nqWkpGTbBidquZO1P6X0DgL//PMPOTk5Uf/+/cVlPj4+ZGVlRTo6OlSxYkWqXbs2Txacx54/f04NGjSgqlWrihOTX716lUqVKkVubm60detW2rx5MzVs2JAqVKggfvc5UfuzcZJWwF2+fJlat25NVapUEQ+SRETh4eHUunVrsrKyIlNTU/rrr7/IwsKC78WZhwIDA6l27dpUrlw5MjQ0lJle4MSJE9SwYUNycHCgZcuW0cKFC8WDI9+LM2+cO3eO/v77b7KxsSEDAwMKDw+XWS5N1Jo0aSKWcUKQd7Zv307du3enjIwMGjp0KBUrVow+f/5MsbGxNG/ePKpQoQINGDBAXD88PJyuXr1K169fF7/7nCT/upySq5MnT1Lbtm3JxcWFQkNDiYjoxo0bVL16dbKzs6O//vqLOnXqxAlyIcJJWgF37tw5qly5Mqmqqso0aRMRvXnzhq5evUrz58+nI0eO8ES1+aBr164kCAI1bNhQvK2T1MmTJ2nYsGFkbGxMDRo0oJ49e/K9OPNA1pPTyJEjSVlZmVxdXcWBGlmdPXuWSpcuTVWrVv2dISqE48ePkyAI5OTkRPr6+jJTnXz8+DHHRC0r/pGSN6Stx1JhYWHUunVrcnFxoZMnTxJR5vHm9evXFBcXx/PQFTICERFYgXb9+nUMGzYMAODj4wN3d3f5BlSIEREEQUBaWhokEgmCgoLw8eNHnDhxAvr6+pg5cybs7OxknpOQkABdXV3xcXp6OlRUVH536IWCRCKBkpISAODLly84evQoUlNTsXz5cujo6GDQoEFo1KiRzHNOnjyJRYsWYffu3eJz2a+jzB/vUFJSQps2bbBr1y60bt0aQUFB0NbWFteLi4vDunXrsGHDBjg4OGDjxo1yjLpw2rJlC1atWoUFCxagUqVKYnlYWBimTJmCL1++YN68eahVq5bM86THMfbn4yNaASLNl69du4YtW7ZgwYIFeP78OSpXroyFCxdCEASsWLECR44cyfYclnsSiUQ8sKWmpoKI0LdvX/j4+KBHjx6IiYnB+PHj8ejRI/E5YWFhMgkZEXGC9ouyJmh+fn4YOnQonJ2d0bZtW8yYMQNxcXFYunQpTpw4IT5n27ZtqFu3Lvbu3QslJSVIJBJ5hV8oSPcB6efQqFEjLFu2DHv27MHw4cMRHR0NIPN7rq+vD29vb3h6ekIikXDd5wFpHUqP6ykpKQCA6dOn4+bNm+J6devWhaenJ27evIkePXrgypUrMtvhBK0QkU8DHssq62WBHTt2kImJCdWsWZNcXV1JXV2dNmzYQEREFy9epNq1a1PLli1p79698gq3UMr6Gfj5+VG9evXIxsaG2rRpQ1euXCGizJvY16tXj5o2bUrHjx8nNzc3qlatGnfMzWNjxowhExMTWrFihcwUAufOnSNXV1dq3LgxLVy4kJo2bUrGxsZ8WS2PfH0vzkmTJlF8fDwRZd7vUVlZmXr16kVv3rwR1zt9+jQREU81kweyHkcOHjwo/h0cHEz169en5s2by/Q53rVrF3l4eNCcOXO471khxkmaHG3bto0+fPggPr5+/ToVL16c1q5dS0RE79+/J0EQaObMmeLB78KFC1SxYkXq0KEDz2SfDyZMmEAlSpSg1atX082bN8nAwIBcXV3FSTm3bt1Kbm5uZGZmRq6urmIHXZY3Tp06RWZmZuLJX0p6Art06RK1a9eOqlSpQo0aNeLbDOWD0aNHk6mpKS1ZsoSePHkilh8/fpxUVVWpe/fudPz4cfLw8CB7e3ueKDUPZE1u7927R4Ig0KhRo8SyLVu2UIMGDahJkyZ0/Phxev/+PbVs2ZJmzJgh1jsnaoUTJ2lyMnr0aLK0tJTp7L93715q3rw5EWXeSUA6Ua2UdO6zS5cuybQwsF+T9aAmkUgoIiKCKlasKE7WefbsWdLS0qLVq1fLPC8mJobCw8N5BFs+2LJlCzk6OtLnz5/Fsq9PQh8/fqR3795x/eeDPXv2kKmpKZ07d06mXFr3J0+eJDMzM3J0dKS//vqLk+Q8kLXuFixYQL169aKiRYuSIAg0ePBgcVlISAh5enqSIAhkZ2fH02woCE7S5ODx48dkbm5OO3fuJCKily9fUlpaGi1btoyqVKlCUVFRZG5uLnMngR07dlDPnj0pOTlZnqEXGl27dqVt27bJtITdu3eP7O3tiSgzYc56J4GEhAQKDg7O1nLGl3dy5+tf/1u3biUDAwNxuhOJREISiYQyMjJoz549FBkZKbM+13/emj17NtWvX1/mpP91kvz8+XO6d+8eJ8m59HViNWXKFDI0NKQdO3bQzp07afDgwWRgYCAzcfCLFy/oxIkTtHPnTvHz4Ba0wo0HDsiJjo4OkpOTsXbtWrRp0wbv37+Hm5sbtLS0ULZsWdSrVw8rV64U17948SJiYmLEjqQsd16/fo0BAwbgyJEjSEtLAwCUKFECaWlpGDp0KLy8vDBv3jz069cPABAREYEVK1Zk66DLowl/zd27dwEAysrKAP7XUdrW1hYmJiZYu3YtoqKiIAiCONrW398f27Ztk9kO13/ekNZ/amoq4uPjkZSUJC4TBAHp6enYtWsXYmNjUbp0adjb24sDNXigzM+LjY2V6dwfHx+P06dPY8qUKfD09ETr1q0xefJkTJ8+HZs2bcLIkSMBAGZmZqhfvz5at24NZWVlZGRkiPsQK6TknSUqKh8fHypevDgJgkCLFy8moszZvceMGUO2trY0efJkSklJoSdPnpCvry8ZGhrK3GqI/ZqsLS/t27cnAwMD2rt3r9hC6evrS7q6utSzZ09xvS9fvlCzZs2oadOm3HKTB3bu3EmCIFCDBg0oMDCQ7ty5I7N8ypQpZGdnR7169aJ9+/bRkSNHqGHDhuTk5MStNnnkW9/j4OBg0tTUpJCQEJl1EhISyN3dnYKCgn5XiIVW3759yd3dXaYsOTmZbGxsaPjw4TLlsbGx1KhRIxIEgYYNGyaW836gOHietN9MOs3A8ePH4ebmBgMDA6xcuRINGjSAvr4+4uLi4Ovri7Nnz+Lp06coW7YskpKSEBwcLDNPDvt1WX99tmvXDidOnEBQUBCaN2+OBw8eYNKkSbh+/TqaNm0KHR0dnD9/Hu/evcP169ehqqoqM1UE+3mhoaGYPXs2zM3NoaKigh07dmD06NGoXLkyGjZsCAAICAjAnj17cPz4cTg5OcHIyAj79++Hqqoqtx7kUtbvb3h4OFJTU2FoaAgzMzMAQM+ePbFt2zb4+/ujUqVK0NDQwKhRo/DhwwdcunSJ6z6XoqKiYGxsDFVVVSQlJaFIkSIAMufAvHnzJmbOnAlnZ2dxfR8fH4SHh+P69eto3rw5li1bBgC8HygKeWeJiio0NJT27t1Lffv2JWNjY1q/fj19/PiRiIiSkpLo2bNnFBwcTFevXqXXr1/LN9hC4ludaz09PUlfX1+c1uTBgwfk7+9PFStWpNatW9OwYcP4TgJ56NGjR9S8eXPx/oMbN26kTp06UdWqValbt250/fp1sZ4jIiIoOjqaZ1HPI1lbx8aPH0+Ojo6ko6NDTZo0oenTp4vLhg0bRpaWlqStrU2Ojo5Us2ZNvtVQHgsMDCR9fX3x+B4aGkrly5enXr160YULF4goc7BYixYtaOnSpbRmzRoyNTUlLy8veYbNfjNO0n4T6Unm8+fP4ihNKS8vLzFRk85LxPJW1pPT8+fP6cWLF5SQkCCWtWrVivT09GTmn/s6IeCTU96ZMGEC2dvb0/v374koc/CMkZER6evrU/Xq1cnFxYU2bNggs6/wpea8M23aNDIyMqJjx45RZGQkderUiQwMDGj06NHiOnfv3qWLFy/S1atXeZBAPggPD6dq1aqRra2tmKjt2bOHqlSpQhUqVKDq1auTk5MTVahQgYgy637JkiVka2tL0dHR8gyd/UacpP0G0gRt//795OnpSba2tjR48GBas2aNuE6PHj3I2NiYNm7cKJM8sLw1duxYqlChAuno6FDz5s1p7ty54rLWrVuTgYEB7du3T2YKCPbrvk6spI+jo6PJzc2NwsLCKD09nRwdHalRo0b05s0bOnToELVr145q1qzJUwvkkaz1ePPmTXJycqKwsDAiIjpx4gRpaWlRy5YtydLSknx9fXPcBifJvy6nupNIJPTkyRP666+/yMLCQkzUbty4Qdu3b6dBgwbRrFmzZEaUJyYmUlxc3G+Lm8kfJ2m/yb59+0hTU5NmzpxJwcHB1K5dO9LX16ezZ8+K6/Tq1YvU1NQoODiYT055JOvBMTAwkExMTGjHjh0UFBREAwcOpNKlS5OPj4+4Trt27UgQhBxv5s3yTnp6OnXp0oWaNGlCDg4O5Orqmu2yPk+Smjey7gP379+njIwMWrRoEX38+JFOnjxJJUqUoDVr1lBSUhLVqVOHtLS0qG/fvnKMuHDJ+v3dsWMHLVmyROaOAhEREdkSta9xC6bi4iTtN4iLi6NGjRrRvHnziIgoPj6eSpQoIY7WyXoQHThwID18+FAucRZm586do0GDBtGyZcvEsjdv3pC/vz9ZWVnRli1bxPIJEybwQTGXnJyc6J9//slxmfSkFRUVRcWKFSNnZ2eZy/w5zdHFfk3W+hszZgw1atRIZiLgHj160LBhw8TWmkGDBlHNmjWpd+/e3HKWB7LWv4+PD2lpaZGzszMJgkD9+/cX5/17+vQpubi4kK2tLb18+VJO0bKCiIeo5RP6/0GzGRkZUFdXx/v371GjRg28ePEC9vb2aN68ORYsWAAAOHToEG7cuAEAWLp0KcqUKSO3uAsbIsKdO3dQv359BAQEIDY2VlxWokQJdOrUCZaWlrh165ZYPn36dKioqCA9PV0eIf/xBg0aBEEQMHr06ByXC4IAiUQCQ0NDeHh4wMHBAbq6uuI+k3X+KL5RdO5I6+/u3bs4c+YMJk+ejGLFiomjO588eYJ3795BVVUVaWlpiImJQa9evbBy5Uq+YX0uEZFY//fv38fFixdx6tQpXLlyBUeOHMGWLVswffp0REZGwtLSEps3b4ZEIsHw4cPlHDkrSDhJyyeCIGDHjh2YNWsW3r59C21tbVy+fBn16tVDkyZNEBAQACBzOHZISAiePXsmnqRY7mStR0EQ4ODggA0bNsDAwAAnT57EnTt3xOUlSpSApaUl7ty5g4yMDJnt8CSdvyYxMRHly5cHACxatAi7du3Kto6SkhK0tLTQqlUrbNmyBadPn+aELJ/MmjULEydORKlSpVC5cmUAmdNwZGRkoFGjRrh37x7atm2L+vXrIzw8HF26dIEgCCAinmomF6TfZz8/P0yZMgUlS5aEo6MjBEFAo0aNsG3bNuzatQszZ84UE7UzZ84gODhYzpGzgoT3wDwmTRCeP3+OHj16wMjICObm5mjWrBmGDRsGOzs7rF69Wjz4SWexd3Z25pNUHpBIJGI9JiYmiuVt27bFwoUL8fDhQyxbtkxsuYyPj8fdu3dhbm7Ocw7lgbS0NNjb2yMyMhL16tXD5MmTUa1atW+u7+HhgSpVqmDr1q2/McrCLTIyEtevX8eLFy8AABYWFti7dy/Onj2LqKgoAJlJsrKyMjp16oS2bdsiLS0NNjY2uHbtmjiTPR+Pfk1oaCgWLVoktsQXLVoUO3bswMWLFxEdHQ0g8zzh5uaGbdu2Ye/evRg5ciSio6NhYmIi1j9jAHietPxw8uRJ2rRpE40aNUrmvnfDhg0jFRUVmjx5Mk2aNIn69OlDOjo6dOPGDfkGXAj5+fmRq6srtW/fnoKDg8Xy9evXU4kSJcjS0pJat25NrVq1ImdnZ0pJSSEi7gOVV+zt7UldXZ1Gjhwpln2rj9OhQ4d4epM8smHDBrK1tSVDQ0PS0tKiadOmEVHmvWgFQaChQ4eK0558C/fH/HVpaWnUrl07cnR0pGXLlonHle3bt5MgCDR69Ohs9b93715yc3PjPoAsR5yk5YJ0p0pNTZXZwVq2bEmCIJCrq6vMySclJYXmzp1LtWvXpr///pu8vb35Vk/5YPny5WRkZEQzZswgFxcXqlGjBk2YMEFMwLZu3Ur6+vpUo0YNWrt2rfg86QGV/brU1FS6ceMGGRsbU8uWLalWrVo0f/58cXnW/eTrhJgTtdxZtWoVqaurU0BAAB07dowGDx5MgiCIP1LWr19PgiCQr68vffjwQXze9z4T9vPi4uKoe/fu5OLiQosWLRKPK0FBQSQIAvn4+Ij1/3V9c6LGvsZJ2i+S7kwPHjygTp06Ue3atally5YUGRlJUVFR1LNnT9LS0qJz584RkezOKJ0HjZOCvPH1gW369Om0bds2IsocSTtq1CiqXr06jR8/XvwcNm3aRGZmZjRkyBB69uzZb4+5MMnpxJKRkUFJSUnk7e1Nf//9N/n7+393fZY7gYGBJAgCbd++Xaa8YsWK1KxZMzEB3rhxIwmCQOPHj6d3797JI9RCTVrP8fHx1KVLl28malz/7Edxn7RfIL333c2bN+Hi4oKMjAyYmJjgxo0b8PDwgJqaGubPn49GjRqhWbNmuH37NgRBEPsoaGtrAwBUVVXl+TYKBcrSuXnXrl3YtWsX7t+/D319fQCArq4uxo0bh1q1aiE0NBSTJk0CEaFz587w8/PD3r17MW3aNDx9+lSO7+LPlfU+kBcuXMDOnTtx+/ZtREdHQ0tLC7NmzULZsmWxY8cOLFy4EEBmfyjiQTJ56vz58wAAfX19JCcni+WlSpWCvr4+0tLSQETo0qULNm7ciFmzZmHnzp3yCrdQkfYzAyD2J9PV1cWyZctgY2ODrVu3YsOGDUhPT0e3bt2wYcMGrn/24+SbI/657ty5Q1paWjRlyhQi+t9lHi0tLbEfzqtXr6hly5ZkaGhIt2/fJiK+nJCXstbl8OHDSU9Pj4yNjUlVVZXatm0rs25sbCyNHTuWrKysaOXKlWL5mjVryN7ent68efPb4i6MRo8eTWZmZmRiYkJWVlZUo0YNunjxIhFl3l2gZ8+eVKtWLbGPFMt7Xbt2JV1dXQoJCSEiooMHD5KSkhKFhoYSkWwL5pEjR7jvWR64du0aCYJAu3btkinP2qLm6elJVatWpVu3bonLuf7Zj+Ik7Rd8/vyZ3NzcSF1dXSzLyMig9PR0ql69usz9716/fk1t2rQhQRC4/1k+efv2LTVt2pRu3LhBT58+pTlz5lC5cuVowIABMut9+PCBli1blq3vE98vNXdWr15NRYsWpdOnT9P79+9p//791KZNG7K2tqarV68SUeZn1Lp1a+rbty//UMljWb/PnTt3pqJFi9KYMWPIwMCA1q1bR0T/S9C+rntOFHKvR48epKenR/v27ZMpl34uycnJVLJkSZo4cWK253L9s//CSdovyMjIoH///ZcsLS2pfv369OXLFyIievbsGWloaFBQUJDM+i9fvqQuXbrQgwcP5BFuobZ06VJycHCgVq1aiTfjjouLI39/f3JwcMiWqEmlp6fzbYfygEQiof79+1PPnj1lyq9du0bu7u7UvXt3Sk5OJiKijx8/fjNZYD/n6x8aWR97e3uTIAjUr18/ruffpH///qSlpUV79+6VKZcmYa1ataJRo0bJIzT2h+M+ab9ASUkJtWrVwpYtW/D48WN4enoiMjISrq6u8Pb2Rrdu3QD8b860kiVLIigoCHZ2dvIMu9BJT09HkSJFkJKSgjt37oh9/fT09NCjRw/06NED58+fR+fOnbM9V1lZWZwHiueD+nWCIEAQBDx69AhpaWlieeXKlfH333/jzJkz4pxP+vr64iz2XOe/RjrRqbKysszdALLOrbVu3Tp4e3sjODgYu3fvRmpqqlxiLYy+dQeG5cuXo1u3bujYsSP2798vrqeiooJPnz7hw4cPKFWq1O8MlRUSnKTlwl9//YXt27cjPDwc1tbWcHd3x/Lly0FE2U5EPFFq7n19gFRRUUGrVq0wffp0xMbGol27duIyPT09eHt7w9PTM9sJjeWtSpUq4e3btzhy5Ai+fPkiljs5OUFfXx9JSUky6/Ms9r/mwIED6Ny5MyZNmgQA2W7blDVRW7t2LTw8PNC7d2+EhITwLc7yiJKS0jcnmpUmau3atcOaNWtw+/ZtPHnyBO3bt0dKSgoGDRr0m6NlhYFAxMOscuvixYvo06cPihUrhtDQUPHehHwyyjtZ6/PevXv48uULTExMYGpqCiLC9u3bMWLECNSuXVvmtipJSUnQ0tLizySfNWvWDE+ePMGECRNQs2ZNaGlpoUuXLlBVVcWBAwe45SwPvHv3Dlu2bMG0adPQr18/zJw5EwCyfa8zMjLEH4VNmzZFeno6jh49KpeYC4s+ffogKioKhw8fBiBbx1+bMGEC1qxZAyKCtbU1tLS0cPjwYaiqqn73eYzlhJO0PEBEuHz5Mtq3bw87OzscPnyYk4E8RFluVOzr64utW7ciNTUV8fHxGDRoEHr27AlbW1ts27YNo0ePRu3atbFp06ZvboP9nKx1972EoF27dggPD0dkZCRsbW0hCAIuXboEVVVVTpBzSVrPX758QVBQEHx8fDB+/HjxJvbf+1y47nMnNTUVmzZtwtSpU1GrVi3x2PK9hOv69etISEhAkSJF4OzsDCUlJaSnp/P9gNnPk09XuD/Tf3U0v3TpEmlra1Pz5s1/Z1gKY+HChVSsWDE6duwYPXr0iAICAqhcuXLUq1cvioqKopSUFNq6dSupqqrS5MmT5R1uobNw4UK6cOECEcl2VM86Qu369esUEhJCBw8eFNfhEWy5k/V4s3z5cho4cCDp6emRIAgyU5p8PUlw1sc8gXDufP78mYKDg8na2po6d+4sln89gONb9cz1z34Vt6R9B/1/C8L79++hrq6O1NRUFC1a9LvPuXr1KvT19WFjY/Oboiz8MjIyoKSkBE9PT1hZWWHevHnisu3bt2P48OEYN24cBg4ciMTERFy+fBl16tThywp5rEqVKjAxMcH+/fuzLftWaw1f3sk7EydOREBAAJYsWYLU1FScOnUKO3bswLBhwzBt2jQA3GqW17J+f48cOYLTp09jzpw56NOnDwICArKtw1he4735G6QJ2t69e9GiRQs4OzvD3d0dixYt+u7zqlSpwglaHnjx4gWuXLmC9PR0seN/YmKi2GlXOmKtXbt2aN++PZYsWYKUlBTo6Oigfv36Mp2oWe5IO6f7+PggJiYGt2/fBgCZuwZ8KzHgk1feiI2NRVhYGGbOnIkOHTrAy8sLs2bNwvjx4zFv3jz4+fkB4Ls55DXp93fUqFEYM2YM4uLi4OzsjI0bN4qjxvlYw/ITJ2nfIAgCjh49ivbt26NVq1YYPnw4GjdujFGjRon9QADwATEfBAcHo3PnzujevTsCAwNBRFBWVkb16tURFBSE6OhoqKmpiSPWSpYsiVKlSmW7zRYnCL/m6++0NAGrXbs23r9/j5CQEAA8dcnvpKKigmfPnuH169dimbGxMbp164YqVapg/PjxGDVqFAD+XPJaWFgYAgMDsWzZMqxYsQInT57EggULcOrUKXTt2hVA5rGGR9Cy/MC9GL9BIpFg27Zt6Natm3jwAwBHR0e0bdsWVlZW6N+/Px8Q81hgYCCGDRuG5cuX4++//4alpaW4bOTIkTh//jxq1qyJo0ePwtjYGKqqqjh8+DCMjIz4Mk8eyHq5LCQkBG/fvhWnDihevDgmTJgAPz8/tG3bFhUrVpRnqIVWTpcstbW10apVK9y4cQP37t1D+fLlAWQmak5OTgCAR48e8QCZfPD27VtoamqiUqVKAAAdHR20b98ecXFx8PHxgZ6eHpYuXcqDAli+UPizWtZWg6xzDqWlpeHhw4cyzdgZGRlo3bo1RowYgZ07dyIxMZFb0vLQpUuXMG3aNCxYsACdO3cWEzRpHRsYGGDhwoWws7ODk5MTatSogapVq+Lt27fYsGGDzLrs10iTg4cPH2LNmjXw9/dHpUqVEBAQgMjISDRt2hR6enriJU++zJO3vp5q5tatWwAyP5fGjRvj0aNHWLVqlVj+6dMnREVFoXv37ti3bx8EQeB9IBdyqjt7e3soKysjLCxMLNPT04OHhweMjIywfPlyTJw48XeGyRSIQqf+0l+dMTExSE5OhoWFBXbv3g1dXV3Ur18fzZo1Q3BwMG7fvo2KFSuKl88MDQ0RGxsLDQ0N/tWah65du4YSJUrA3d1dpjxrHVesWBGHDh3Cpk2bEB8fDzU1NfTo0UO83MC/Zn9NaGgoHj9+jH79+mHAgAEoXry4ON+cr68vdu3ahQkTJmDBggVQVlbG/Pnz4enpCU1NTTlHXrhIEzQfHx8EBQUByGzB3LRpE5o2bYrExETMnj0bp0+fRrFixfDx40ekp6fDy8sLAE81kxtZE2TpD3YlJSUUK1YMZcqUwcaNG1GsWDG4uLgAANTV1VGnTh14e3ujYcOGcoubFW4KP7ozNjYWnp6eqFSpEmxtbTFw4EBs2rQJnTp1QlhYGKZMmYIyZcpg8ODB4uWdYcOG4dGjRwgJCUGRIkXk/A7+fNITS4cOHRATE4OTJ09+c93nz5+jZMmS2ZIxHmH16z5+/IghQ4bg0aNHMDQ0xJkzZ3DhwgU4ODiI68TExCA4OBh79+5FdHQ0Hj58iK1bt6Jdu3acGOSBrAnCwYMHMXToUCxevBiamprw8/PDnTt3EBISgpo1a+Lq1au4desWzp8/j1KlSmHixIlQUVHhfSAXsn6H582bhxs3biAhIQHTp0+Hk5MTLly4gL59+8LMzAy1atVC1apVMXv2bKirq2P//v0QBIHrn+WP3zjdR4G1ePFisra2JkEQaP78+TLLNmzYQK6urlSmTBlq06YNtWzZknR0dOjmzZtyirbwmjBhApmYmNDTp09zXJ6WlkaNGjXK9hmxXzNixAj6+PEjERFFR0dTxYoVSRAEmjRpkrhOamqqzHNevHhBly5dIkdHR2rSpMnvDFchrF+/npYsWZLtO+7u7k4lSpSgM2fO5Pg8novu12Wdw2z69OlUtGhR6tu3L/39999UpEgR2rp1KxERXblyhfr06UMlS5ak8uXLU61atcT9g+dBY/lFofukSZu03dzc8PnzZ5QsWRJv375FZGSkuE7Xrl0xa9YsDBo0CGlpabCyssLFixfh6Ogor7ALrbJly+Ljx4/YunUrPn78CEC2n2B8fDyKFCkCa2treYVYaJw4cQIfPnwQW4LV1NRgZ2eH5s2bIywsTJwDSlVVVWbUmpmZGapVq4YtW7bg+vXrOHv2rFziL4w+f/6MmTNnYsiQIXj+/LnMsoMHD8LZ2RkdO3ZEaGhotr5TfJn/10lbMF+/fo33799j7969CAgIwLlz5+Dt7Y1u3bohODgYVapUwYoVK3Dv3j0cPHgQp0+fFvcPHrTE8o28s8SC4OPHj3T37l1aunQpOTk50dChQ3Nszfl6dmn2675114YOHTqQpqYm+fv70+vXr4kos95jYmKoWbNmVK9ePf4c8oBEIhF//W/dupXi4uKIiCgiIoK6d+9OLi4utGLFCpnnvH37Vvw7NjaW7O3t6eTJk78v6EJMuj+8ffuWGjRoQFZWVhQeHi6zjIioWrVqfEeTfBASEkKCIJCNjQ1dunRJZtngwYNJU1OTtm3blq1lmVvQWH5T+CTt651s/vz55OTkRCNGjBATtdmzZ/PJKI9cuXJFTLKynnykZampqdS6dWtSVVWlWrVq0bx586hfv37k6upKjo6O4kGSE7Vfl/U7f/fuXSpbtiw1bNiQYmJiiIjo/v371L17d6pZsyYtXryYiIgaNGhAvr6+4vM2b95MgiB889I0+77v3cLp3bt35OzsTBUqVKDHjx8Tkey+wolB3vvy5Qt5e3uTIAi0c+dOIpKt86FDh5IgCHTixAl5hcgUlMIPHJDK2nHX398fW7duRbFixVC8eHFs2LABN27c4EucuTRx4kQEBwdj4cKFcHd3F2dHz6nTuZ+fH06dOoWbN2+iUqVKqFq1KiZPngwVFRUexZkLX8/BJZ0PMCAgAFpaWtiwYQOMjIwQHh6OxYsX4/Dhw1BWVoampiZu3Lgh3iz92rVr0NHRQdmyZeX4bv5MWT+DlStX4vbt23j16hWGDBmC2rVrQ0VFBe/fv4ebmxvS0tKwe/fubJf4+fZPv+5bdZeSkoKuXbvi5MmT2Lt3L2rUqCGzfOHChRg0aBAfe9hvpfBJWtYkIevOGxgYiPPnz+Ply5f4559/ZEa6sV8TGxuL1q1bIy0tDT4+PnB3d4eysvI3PwMgsx+anp6e+JhHUP26rHW7fPlyaGtro3PnzhAEAdu2bcOyZcugo6MjJmpRUVF4+vQpnj59Ci8vLygrKyMtLS3bnR3Yr/Hx8cHGjRvFHyxBQUFYsGABOnToAENDQ7x//x7u7u54/vw5rl+/jpIlS8o75D9e1n3gwoULSE1Nhba2NpydnQFkHl/atm2LM2fOYM+ePdkSNQD8I5H9XnJsxfutpE3XUVFRdPfuXYqIiBAvnWUdGZX1UoJEIqEvX7783kALKWk9JiUlUe3atalu3bq0d+9esb6zXlr41qWdb/VjYz9nzJgxZGxsTAsXLhT7mWVkZFBwcDC5uLhQkyZN6N27d9mex5eY88769eupdOnSdO3aNSIiOn/+PAmCQOrq6uTn50exsbFElNlHzdvbm+s+D2Q9fowbN45Kly5NZcuWJRUVFZo6dSq9evWKiDK/561btyZjY2Pu5sLkTiGSNOnOuWvXLnJ0dCRzc3OqXbs2eXh4UGJi4jfXZ3kja6J1/Phxmj59OqmpqZGzszMdPHgwx0SN5Y8lS5aQkZER3bp1SyxLSUkR/961axfVrFmTqlWrRvHx8fIIsdD78uULrVy5kgICAoiIaO/evaSrq0vBwcE0e/ZsUldXp0WLFmVLlDlRyxszZ84kExMT+vfff4mIyMfHhwRBoKFDh8oMVnJ1dSV3d3d5hsqYYiRpREShoaGkpaVFy5Yto9jYWFqxYgUJgkCrVq2Sd2gKw9fXl4yMjMjf35+mTJlCVlZW5OTkRAcOHOBELZ98fWIfOHAgjRo1ioiIHj9+TBs2bCBnZ2dq27Yt7dixg4iI1q1bR/369eMO6vno8ePH9OLFC3r+/Dk5OjqSv78/ERGFh4dTkSJFSBAE2rhxo5yjLHyePn1KrVq1ol27dhFR5o8SAwMD6tOnDykpKdHQoUMpKiqKiDJ/XPI+wOSt0Cdp0qkGxo4dSyNGjCCizIk7zczMaNCgQeJ6/Cs1fz1+/JjMzMxo9+7dYllsbCw5OztT+fLl6eDBg/wZ5KP58+dTZGQktW/fniwsLGjp0qVUo0YNcnd3pwEDBlD9+vWpQYMG2U5MfJLKX+fPnycHBwdxcux79+7R+PHjadOmTTxBbT74+PEjbd68mT59+kTnz58nMzMzcQTz8OHDSUVFhby9ven9+/fic3gfYPJU6IcHCYIAJSUlvHr1Crq6unj16hWqVKmCJk2aYPHixQCAPXv2YPPmzXxj4nykrq4OZWVlqKurA8gcSWVgYICjR48iJiYG8+bNw44dO2Qmr2W/Lms9rl27FqNGjUJaWhrWrl2LsmXLYuXKlfDw8MCMGTOwbNky9OvXD8nJyYiLi5MZuMEjCH/dj3yXExMTcf/+fdy/fx83btzAmDFjEB4ejs6dO4sjmVne0dfXR8uWLVGkSBHs3r0bLi4u6NWrFwCI92x+/PgxDAwMxOfwPsDkqVAOUaH/Hy344cMH6OrqQlVVVbxTQGBgIJo0aYKVK1eCiPD582ccPHgQpqamSEtLg5qamrzD/+NRDtNq6OrqQhAEHDt2DE2aNIG6ujrS09Ohp6eHMmXK4MKFCyhXrhzat28vp6gLF+mJ5ejRo0hLS8PWrVtha2sLADh8+DDi4uKgr68PIHO02tq1a2FmZiZzcmK5I/0MoqKiYGZmluN+0ahRIwwePBidO3eGhYUFDA0NceHCBXE5jyLMe5qampBIJHj06BFUVVWhoqICiUSCGzduwMfHB3Xq1AHA05ywAkKu7Xj5QNqnad++feTq6kqHDh0iosx7DpYuXZqMjY3p2bNnRJQ5ceq4ceOoVKlS9PDhQ7nFXJhkvTTw9OlTio+Pp4SEBCLKnNleVVWV5syZI66Tnp5O3t7edObMGb7cmcdu3LhBmpqapKysTJs2bSIi2UECiYmJtH79enJ3dycHBwdxtDP3C8w7+/fvpyJFioj9nLLKWs8XL16ky5cvi/sAX+r8dT/6/d20aRMJgkD169en8uXLU/ny5cV6532AFRSF7meaIAjYv38/2rdvj4kTJ8LCwgJA5j0Hd+/ejQYNGqBdu3ZQVlZGiRIlcPbsWRw7dgxlypSRb+CFhPSX58SJE7Fz506kpaWhWbNm6NevH9q3b48XL17Ax8cHFy5cQKlSpXDr1i18+PABa9asgZKSEs+Dlgv0VUtN6dKlsXDhQkyZMgWHDh1C586doaamJrYQJCQk4Nq1a9DV1cX169d5ouB8YGZmhvLly+P69esoVaqUzPdbEATxs6hevbr4nIyMDP4MckG6D8ycORPm5ubo0qVLjutJ94eTJ0+iatWqmD59OlRUVPgYxAqUQjeZ7YcPH+Du7o4WLVpg3LhxYrl0x3v58iU2b96Mly9fomzZsnBzc4ONjY0cIy4csiYIO3fuxKBBg7Bs2TJcvHgR169fh5KSEhYvXoyyZcsiLCwMCxYsgLKyMv6vvTsPqCn//wf+vMVNlLKGLGGEqZGdlGSZDzFZZjCRsisjGvTJNPlaZiYjyzCIyNiyi4ppJs0wPraPsSvZSpGlLCGlSPX8/dHvnm8XM9+RS+T1+Gfcc8498+7ce9/ndd7L621sbIyffvpJyWQv3QvFU/TakURubi4MDAzw5MkTrFu3DhMnTsSwYcOwZMkS5RiVSoXMzEwYGRlBpVLJzekV/dX3t0+fPkhPT5fF6N+gvLw8eHh44Pbt29i4cSOMjY3/8tiidZc8pIi3TakL0lJTU2FnZ4eQkBB07doVBQUFUKlUWk+t4vX55ZdfsHfvXjRp0kQZkBsREYHg4GDk5eVh/vz5sLGxea4ylMqx+Ip+r+fPn48zZ87g5MmT8PDwgKOjIz766COEhIRg6tSp+Pzzz5UJM0WDsmdb4UTx3b17F6ampsr3+dKlS+jVqxcCAgIwcODAEi7d+2PTpk346quvEB0djaZNm0r9L95Jpe4bq1arkZmZifPnzwOAsj4kAJw+fRo///wz8vPzAUBmc+rYyZMnMXXqVKxevVpre9++feHp6YmyZcvi3//+N44dO6YVkJGUAO0VaG48fn5+CAwMRNu2bTFkyBD8+OOP8PPzQ1ZWFgYOHIiAgABs3boV7u7uAKDVaiYBmm6sW7cOLVu2xJdffomEhAQAQL169WBpaYkDBw6UcOlKp7+qxwcNGoRGjRrB398fgMzSFO+md/pbq/lxaoIuADA2Nkbv3r2xbds2REdHA/jfH+eaNWuwbNkyPH78GIDcmHStZcuWGDt2LGrWrInVq1fjypUryr6+ffti7NixuH//PtavX6/1PvkcXt3Ro0cRERGBXbt2wcvLC/b29khJScHAgQNhZGQEExMTuLm5wc/PD+np6ZLqREeuXbum/Hvt2rXo378/PD09ce3aNbRs2RLjx4/H8ePH4ePjg5CQEBw9erQES1v6aHpKAGDBggVYvXq1EhwDwKhRo5CSkqJskwdz8c5583MVdEMz+yY6Oprjxo2jq6ursg7e8ePH2bVrV9rZ2fH777/nli1b6OnpSRMTE8bGxpZksUuNv0vwuGLFCtrZ2dHV1VWZSauxf/9+SQ6pA89ew0OHDrF58+YkyS1bttDIyIjLli0jSWZlZTEqKoqPHz9mdna28tuRz+HV7N27lzY2Nty7dy+9vb2pUqmYlpam7A8NDeXQoUNpYmJCJycnVqpUif7+/iQlebYuFF1XOScnh6NGjWL79u1Zo0YN/vDDD0qC4A8++EC57kK8a97ZII0kd+/eTbVazf79+9PGxoZGRkZcvnw5STI2NpaTJk2iubk5ra2t6ejoqLVeoSi+ojf3bdu2cfr06VyyZImyFh5JLl26lPb29nR1deXVq1f/9hyi+FJTU0mSMTExbNKkCTdt2kQTExMuWbJEOSYmJoaurq68dOmSsk1SDBSfJp1GdnY2HR0daW5uzooVKyoPiUUDsCdPnvDChQscOXIkraysaG5uzqysrBIpd2nyyy+/MCQkhCQ5atQodurUiWRh2p/FixfTxsaG1tbWHDduHCdPnswmTZpImiXxTnpng7R79+7xq6++UhYpJguX9ahcuTKXLl2qVJTZ2dm8f/++VIw6UvTm7uvry1q1atHJyYmOjo5s27YtN2zYoOxfunQpO3XqRCcnJ60WBqEbK1eupLW1tfK6W7duVKlUWgFaTk4Oe/Xqxf79+0tgrAPDhg3jd999p+SUmz17NtVqNa2srLh7924lD52m/tFc89zcXCYnJ7NVq1acPn16iZS9NBk0aBAtLCzYvXt3Vq1aVWk107h69Sr37t1LW1tb1q9fnyqVSskVKL8D8S55J4O0U6dOsVKlSmzWrJnWWpAkOWnSJFauXJnBwcG8c+dOyRTwPbBkyRJaWFjw8OHDymu1Ws0GDRooT7gkOXfuXI4dO1YqxtcgKSmJ5ubmXLVqFcnCbv527dqxYcOGDA0N5aJFi/jxxx9rJemUz+HVbNy4UQnQsrOzeeHCBZ4+fZoff/wx27Rpw/DwcGV/Ufn5+czLy+Po0aM5dOjQN1zq0mHatGlawZiNjQ1VKhVnzJihbMvPz3+ulfjw4cMcOnQoGzZsyPv377+p4gqhE+/kxIHmzZvDyckJcXFxSExMRG5urrJv/vz5GDlyJMaOHYudO3fKQNHXICcnB3FxcRg/fjxsbW2xc+dO+Pv7Y8qUKWjTpg1mzpyJjRs3AgB8fHwQFBQEPT09Gaz+Cp69dvn5+ahatSocHR2VWYPNmjXDTz/9hNatWyMgIABhYWGoW7cuTp06pSSqlRluxaOZhDRo0CCULVsWISEhGD16NADAxsYGYWFhMDIywqxZsxAdHa3UO9OnTwdQOHlJM5s2MTERjx8/lrrpJRw6dAiJiYmwsrICADx+/BiWlpbo1asXtmzZgpUrVyIrK0urntFMKLO1tcXEiRNhaGiIc+fOldjfIESxlHCQ+NKKPiUNHjyYFStWZGRk5HNPr/7+/jIG4TW6efMmL1++zIsXL7Jhw4ZcsGABycIxamq1mkZGRtyxY4dyvIyBKp6iyziRfK7bODo6miqVitHR0Vrb79y5o7W0kCwzVHyLFy/mBx98oIx3Jck5c+bwo48+4rhx4xgfH0+ycJmtrl27snXr1vT392fPnj1pYmKidH3Gx8ezc+fOPHnyZIn8He86TR0SFhbGuLg4ZfuQIUNoaWnJkJAQZQk6svDzKKpevXpct27dmymsEDry1gdpmh/m5cuXeebMGZ47d05r/4ABA2hqasqIiIgXdjOIV/OiWWhFA661a9eyXbt2zMjIIEn++uuv/PTTT7lixQqZwfaKHB0d+fPPPyuvg4OD6eDgwICAAObm5iqB17Bhw9i/f3/eu3dP6c4s+hlJgPxqYmNjOWLECNrZ2SkzZkkyKCiILVq04NixY3n27FmShTNp3d3d2bNnTzo7Oz9XJ0l328sr+oCRlJTEhg0bsn///loTlYYMGcKmTZtyyZIlvHr1Kjt37swePXoo+7dv384KFSrIg7t457zVQZrm5hIeHk4LCws2adKEarWafn5+Wk9SAwYMYLVq1bh161YJ1HTE399fmQ34d+OYNm7cyBo1avCXX35hdnY2P/nkE/r4+CifnQRqxRcQEKCVZmD//v2cOnUqzczM2KFDB86cOZMZGRncvn07rayslBuQBGW6MXHiRN67d48kmZCQwOHDh9PW1pZBQUHKMYsXL1YCNU2L2tOnT5mRkaF8Dk+fPpXPRAeOHz9OktyxYwdtbW3p4uKiFaiNHDmSjRo1YoMGDdi6dWutVuj//Oc/TEhIeONlFuJVvdVBGlnYnWNqasqgoCDm5eVx+fLlNDAwoIeHh1ZKje7du9PCwuK5Jm7x8o4cOcLmzZuzU6dOTEpKIvnXgVp8fDz79+/PSpUqsUGDBrS2tlYCZbkxFc+z123WrFlcsWKF8jo9PZ0TJ06knZ0dzc3NGRISwvLly7N///5vuqil1m+//cahQ4dqPfTFx8dz2LBhLwzUWrZsyXHjxj2Xh1F+A6+uoKCAMTExNDQ0VCaDhYeHs23bts8Far/99hujoqKUh8NnhwsI8a55q4O0+/fvc/DgwcqU9eTkZDZq1IidO3emiYkJ3dzctGb7XL9+vYRKWvrs3LmTH3/8MTt27Ph/Bmrnzp1jVFQUV69erVSOMgaqeIpeY80N3tXVlXp6ely/fr3yEJKfn8/79+9z2rRp7NKlC1UqFTt37ixBgY4UFBQon8WGDRuUsYDnzp17YaAWFBTE2rVrc+7cuSVS3vdB8+bNOXr0aOX1zp072bZtWw4aNIgHDhx47nhpxRelwVsXpGluMjk5OSQLm7aTkpJ49+5dfvTRRxw5ciTJwpQPFSpUoJubmySp1ZFu3bpx7dq1yuuIiAh269btLwO1vwoIpHIsvtzcXGZnZ/P69etarTienp4sV64cQ0ND+ejRI633JCQkMCoqSgmMJVB7NUWv39mzZ2llZcVu3boprThFA7WlS5cqx4aFhcl3XweevYaa1rBFixbR0dGRly9fVvbt2rWLtra27N69u9YQGCFKi7cuSCPJgwcPKq1nmjEhwcHBtLe3V55oV65cyaZNm7JZs2a8efNmSRW11Lh37x6Dg4Of6x7YsWPH3wZqQnd2797NsWPHsk6dOjQ1NWWvXr20kjWPGTOGhoaGDA0NVR5iniUtmK/m2QA3Ly+PoaGhdHBwYI8ePXj79m2ShYHa8OHDaW9vzzlz5jz3HvHyUlJStF4/+/B97do1Vq9end98843W9q1bt3LUqFFSL4lS6a1MmvTbb79h4cKFePToESpVqgQAuHv3LvLz85UcOImJifDx8cHBgwdRs2bNkixuqVCpUiV4eHhArVZjzpw5CAgIAAD069cPX3zxBQwMDDB06FAkJydLzrPXYNWqVRgxYgQMDQ3h5eWFwMBAXL16FTNnzoSvry8AYPny5XB3d4eHhwe2b9+OnJyc585TpkyZN130UiMvL09ZrJskHj9+DH19fQwePBhffPEFMjIy4O7ujjt37qBp06b497//japVqyIxMVEr55kmH5r45/r27avkVgSA8PBwfPrpp+jZsyfi4uJw584d1K5dGzNnzsSWLVtw5swZ5dgBAwYgJCRE6iVROpV0lFhU0RmB7dq148SJE5V94eHhLF++PJ2dndmjRw8aGRlJ8/Zr8OjRI/r6+tLQ0FDJfUb+b4uag4OD0qIm3Wq6ERwcTLVazU2bNml1cV66dIlDhw6lmZkZAwMDle1eXl4vzI0mikcza1Bjzpw5dHZ2pqOjIwMDA5X0Mlu3bqWtrS2dnJyUrs/k5OQXpj0RLycqKkppxc/JyWF6ejqjoqLo4ODApk2b0tnZmf/5z394/Phx2tnZMTQ0lKS0HIvSr8SDtBd1L+Tl5XHmzJns1KkT09PTlX2hoaF0d3enu7u7BGg6orn+RT+HGzdu8Ntvv6WxsTHnz5+vbA8PD+e//vUvNm3aVLqYdSQ8PJwqlYo7d+4k+b83HU2XWWJiIh0dHdmmTRteuXJFed+8efPkBqUDy5Yto0qlYlRUFEly+vTpNDU15YQJEzhu3DgaGhqyX79+vHDhAkly06ZNdHBwYJs2bbRynklXW/EVrXsWLFhANzc3JicnK9s2btzIkSNH0sDAgF9++SWrV6/OOnXqMDs7uwRKK8SbVeJBGlm4tpqXlxcfPnyo3HiuX79OU1NTBgQEaB1bUFAgYz50pOiNJTMzU2uc07Vr1zhz5sznArWNGzfS29tbPgMdePz4MT09PdmwYUMuXrxY2a65tpqb1+7du6mnp/fCGWwSqL2a8+fP09PTk5UqVeL27ds5bdo07tmzR9l/8uRJ1qlThy4uLiQLP5uVK1fS09NTAjMdy8/P56ZNm1i9enV6e3sreec0oqOj6enpyVq1atHS0lKuv3gvlGiQlp+fzydPnnD27Nm0sLDgBx98wK+//ponTpwgWTibx8HB4bkfq3h1RSu4H374gd26dWPnzp2V2bNkYYvazJkzaWJiotX1qSGB2qu7efMmvb292a5dO86ePVvZXnSh6IsXL7JcuXLSvalD/v7+yr+TkpLo4eFBExMTVqlShfv27SNJpev5yJEj1NfXZ3h4OEntlh8JFIovKiqKN27cIEl+/fXX/O6770gWPgiam5tz/PjxSgumxqNHj3j16lWl7pHrL0q7Epk4wP8/yFZPTw9qtRpTpkxBcnIyBg8ejDNnzqBjx4747rvv8PDhQzx58gSXLl0qiWKWapqFtv38/DBnzhz06NEDrq6uiIqKQo8ePfD48WPUqlULo0aNgo+PDyZNmoQtW7ZonUMGSL+6mjVr4quvvkKbNm0QHh6OwMBAAIWfj2aB6Li4OLRq1QoffvhhSRa11Dh27Bj279+P3NxcAED9+vUxceJEjBgxAg8ePEBiYiIAQKVSIT8/Hy1atICVlRVSUlKU7RqyYH3x3L17F99//z3at2+PMWPGYP78+ejVqxeAwkXs58yZgx07diAoKAgJCQnK+wwNDVG3bl3o6+sjPz9frr8o/d50VKh5Ct2/fz99fX3p5eXFH374QdmfkZHBNWvW0N7eXknSaWtrq9WyIHQjMjKSVlZWPHz4MMnC5JBGRkY0NjZm27ZtlTEfKSkpXLVqlXStvUapqan08vJ6rkXt4cOH7NmzJ0eOHCnffx3SXMtt27Yp2y5evMiRI0eyTJkyyhhBkszOzmbDhg25ZMmSN17O0uz8+fM0MzOjgYEBd+/eTZJaQy42bNjA2rVr09vb+7k1m4V4X5RId+f27dtpamrKIUOGcPLkydTX1+egQYO0BoImJydzz5497N27N0+dOlUSxSz1fv75Z6WLISoqilWqVGFQUBAPHDjAcuXK0cnJ6bnEqRKovT5FAzVN5vo+ffrQxsZGEtW+BklJSVSpVOzXr5+yLSEhgSNHjqSenh4nTpzIb775hs7OzmzatKl893WkaDd+y5Yt2apVK1paWvLq1asktZdy2rhxI/X09LQe5IV4n7yRIK3ouIErV66wUaNG/PHHH0kWjnuqXLkyvby83kRR3ltFZ8OuWLGCJ0+eJFnYSpaZmaks2E2SaWlptLKyokql4rBhw0qkvO+r1NRUjh8/nh06dGD16tVpaWmpjI2SMYCvpmg9pAm4oqOjWb16da11TxMTE+np6cny5cvTwcGBERERz826FS/v2fFjT58+5cOHD3n69Gl27tyZH3zwgRKoFXXgwAG57uK99VqDtJUrVyo5hjQ/0NjYWLZs2ZIkefXqVZqbm9PDw0N5j6brTehObGwsLSwsOHv2bPr4+FCtVvPSpUvK/oSEBFpYWPDo0aMkyVu3bnHIkCE8duyYVI4lIDU1le7u7nRyclICNGnFeTVFA4SVK1cyNDRUWc0kJiaGVapU0QrULly4QHd3d3bv3l3ZJr+F4it6/WNjY3nu3DmeP3+eZGHL2n//+1926dKFlpaWSqqZwYMHa01Ykusv3kevLUi7c+cOzc3NaW1trSwKTRYm6LS2tmZkZCQtLCw4ZswY5QYUFxfHPn36aC2aLl7dzZs3OWvWLFauXJkVK1ZkYmIiyf+98WdmZtLCwoLOzs7cs2cPu3btys6dOysVq1SOb969e/eU6y8Bmu74+vqyevXqXL16NVNTU0kWBhAxMTGsVKkSBwwYoBybkpIiiWp1oOi1mzZtGj/88ENaWFiwUaNGXLFihbLvyJEj7NatGw0NDWlra8t69eppJXcW4n30WlvS4uLi2KJFC9rY2PDhw4ckC1tpevXqRWNjYw4cOFDreF9fX3bs2JG3bt16ncV6L61du5blypWjhYUFv//+e2W7phKMiopio0aNaGlpyU6dOinbZYp7yZLrrzuLFy9mjRo1lK5+svD6asZdxsTEsGrVquzSpYvW++Qz0I0ZM2awWrVq/P3335mUlMRhw4ZRpVJpjTe7du0aFy9ezICAAOliFoJvYEza2bNn2axZM61ALSIignXq1KGrqysjIyN58OBBent708TE5LlFdUXxPHtjSU5O5vHjxzlr1ixaWlpyxowZz70nKytLa5kbacERpcmYMWM4btw4kuTly5e5ceNGdujQgX369GFkZCTJwhnOTk5OEpjp2MmTJ9mlSxf+/vvvJAsnLZmamrJv375UqVRcuHDhC98nAZp436nIIisD6za1h5JPKD4+Hi4uLlCpVDh06BCMjY2xYcMGhIaG4vDhw2jQoAHKly+PZcuWwcbG5nUU571SUFCg5A86c+YMcnJyULNmTdSrVw8PHjzAwoULsXnzZri6uuJ//ud/AADffPMN+vbti2bNmj13DiHeZQUFBSgoKMCoUaNw48YNdOzYEX/88QcqVqwIExMT5OXl4cqVK/j1119hZGSk5P+T34Du3Lp1C+vWrcOECRNw+PBhuLq6Ytq0aRg6dCj69++PX3/9Fd9++y38/f1LuqhCvFV0HqRpgrPHjx8jLy8PRkZGAICLFy/i008/hZ6eHg4fPgxjY2Pcu3cPDx48QPny5VG+fHlUrFhRl0V5LxUNjv39/bF161bo6ekhOzsbffr0ga+vLwwNDbF06VKsX78erVq1QmZmJuLi4pCcnCwJasU776+Cq6NHj+Lbb79FUlIShg0bhq5du6Jly5YICQnB1q1bERUVBbVaXQIlLl3+6vpnZmbC2NgYo0ePhr6+PhYtWgS1Wo3x48fj+PHjUKvV2Ldvn1ayYCHed2V0eTJNgBAVFYU1a9bgzJkz6N69O9q3bw9XV1eEhYXBxcUFdnZ2OHToECpXrozKlSvrsgjvPU0Ft2DBAvz000/YsmULOnXqBA8PD2zYsAGDBg2CnZ0dxo4di9q1ayMsLAxVqlTB5cuXoa+vL60H4p1W9Pu7fft2XLlyBSqVCv3790fbtm2xfv16FBQUoFKlSgCA/Px8REZGomrVqihbtmxJFr1UKHr9Y2JicPPmTZQtWxZdu3ZFjRo1kJWVhVOnTsHe3h5qtRo5OTm4ceMG/Pz80Lt3bwDaD5pCvO903pK2a9cufP7555g6dSrq16+PiIgIxMTE4Pfff0erVq0QHx8PNzc3pKenIz4+XmlpE7rBwnGGGDhwIGxtbTF58mRERkZi6NChmD17Njw9PfHkyROUKVNGaTXTVIp5eXkoU0ancbsQb0zRm/uUKVOwdetW1K5dG+XKlUN8fDx+++03WFlZAQAyMjIQExODNWvWICUlBSdPnkTZsmUlQNARX19fhIeHw9TUFJUrV8aff/6Jw4cP48MPP8TcuXPh5+cHNzc3xMfH4+nTpzh+/Dj09fXl+gvxLF0OcLt//z67d+/O+fPnkyxc4snMzIxffvml1nGxsbHs0KEDL1++rMv//Xvp2QHOBQUFzM7Opr29PY8ePcqDBw/SyMiIwcHBJAuzef/44488cOCA1tR4STEgSoslS5bQ3Nycx44dI0muWbOGKpWKlStXVrYlJyfTxcWFrq6uygQZmSijGz/99BOrV6+u5F0MCQmhSqXi1q1bSRamZ5o3bx579epFDw8PSdYsxN8oVpD2Vzf0R48esUWLFjxy5IiSqHb06NHK/p07dyprsBVd+kMUX25uLrOzs3n9+nWtSs7NzY116tRh+fLluW7dOmX7nTt36OjoyKCgoJIorhCvVXp6OseNG8fQ0FCS5K5du2hsbMzAwEB+8sknrFatmrLM3O3bt5W6TAKE4nv2QdHHx4dTp04lSe7YsYNGRkZKPrSsrCwlwfnjx4+V90iALMSLvfTgo4KCAqhUKqSnp+PcuXOIi4tT9mVlZcHIyAhHjx5Fly5d4OTkhODgYADAtWvXEBYWhvPnzwOADNDVgZiYGHh7e6Nx48awtrZGnz59EBISAgD4+uuvUbt2bdSvXx9DhgwBSdy7dw9ubm7Izc2Fh4dHCZdeiFfH/z9aQ/PfypUrw8XFBfb29oiPj4e3tzdmz54NX19fuLi44O7du2jZsiXi4+NRrVo1qFQqFBQUyISZYiKpjEHbu3cvMjMzkZOTg9zcXOzatQvu7u6YO3cuRo8eDZLYsGEDli5diidPnsDAwEA5hwyzEOLFXipI0wwKPXv2LJycnNCrVy84OztjzJgxAIDq1aujZ8+eSuAQEhKi/ICXLVuGY8eOoXXr1rr/K95Dq1atwogRI2BoaAgvLy8EBgbi6tWrmDZtGqZNm4YmTZpg0qRJUKlUqFmzJuzt7dGjRw/cvn0b+/btg76+PvLz80v6zxCi2DQPjAC0vsv29vawsLDAqVOnUK9ePbi6ugIAqlSpgtGjR2PWrFlo3LixcrxMlCkeFhk/NnXqVHh7eyM1NRVNmzbFr7/+CldXV2UcLAA8ePAAERERWgEaABmDJsTf+MePL5oA7cyZM7Czs4Onpyc++eQThIWFISQkBDY2Nhg3bhwmT56M1NRULF26FDNnzkRBQQHS0tKwadMm7N+/H3Xr1n2df897Yfny5ZgwYQLWrl2Lzz77TJmV1rlzZwQEBCA4OBg1a9bE2LFjYWtri02bNqGgoAA1atSAq6sr9PX1ZZKAeKcVnUW4bNkyHDx4ELm5ubC0tERAQAAAID09HQcPHkROTo5yXN26dfHVV18BgPwGXpEmuEpOTsbZs2excOFCWFpaol69eoiMjMStW7fQoEEDpKWlITMzExMmTMDdu3clF5oQL+Nl+kYTEhJYrlw5ZbwBSSYlJVGtVnPy5Mlax86aNYsdO3Zk+/btOWzYMJ49e/YVe2YFSYaHh1OlUnHnzp0k+dzSKYmJiXR0dGSrVq1448aNF55Dxt+I0sLX15dmZmb89ttvOW/ePJYrV479+vUjWbhQvYODA/X09Ni4cWNaWVnJWpA6tmDBAtarV4/t2rVjUlKSsv3Ro0fs0KEDraysWL58edra2tLOzk4mCQjxkl6qJW3VqlUwNjZGlSpVlO2bN2/G06dPkZCQgAULFqBatWro378//Pz84Ofnh4KCAuTl5ckYNB148uQJdu/ejQYNGuDq1asAgDJlyiA/P1+Zvt6wYUP4+fnByckJSUlJqFWr1nPnkfE34l3FIl1sx48fR2RkJMLCwmBvb4/IyEiUKVMG3bp1AwDUqFEDO3fuRHh4OPT19TF48GClm19+A8Vz5swZXLlyBVWrVoWdnR1cXFywZMkSHD16FBcuXED9+vVBEuXLl8cff/yB2NhYJCcnw8LCAq1atYKenp60YArxEv7xL0VPTw9eXl7Izs7G5s2bYWBggMzMTMydOxf+/v5o3rw5NmzYgGvXruGrr75C48aN4e3tjd69e0uApiMGBgaYNm0aDAwMsH79ejx69AhTpkxRktBqbl4WFhZQq9V49OhRCZdYCN1ZsmQJ7t69ixkzZgAA0tLSoK+vD3t7e0RERMDNzQ3z5s2Dh4cHMjIysHfvXvTr1w/Dhg1TziEBWvFt2LAB8+bNQ926dWFlZYX27dujRo0aOHLkCFq1aoWZM2cq+4DCyWGtW7fWGodcUFAgAZoQL+Nlm95SU1Pp5eXFxo0bs0yZMtyzZ4+yT9P1tnjxYg4fPpzx8fE6avATRWk+g3bt2nH27NnKds31DwsLo52dHVNSUkqqiELo1IoVK6hSqbht2zZl2+nTp+nk5MTFixdr5QIkyf3793Pw4ME8f/58SRS31Fm7di0NDQ25adMm3r9/X9muqXNu3bpFc3NzduzYUavel/yLQryaYuVJS0tL44QJE9isWTPOmzdP2V4095nkvXm9/ipQe/jwIXv27MmRI0dKBSlKheDgYJYpU4Y7duzQ2n737l02a9aMKpWKs2bNUrZnZ2fTycmJLi4u8hvQgbNnz9LKyoohISFa2zXXVlPXp6WlsXbt2nR0dOTp06ffeDmFKI2KNffczMwMfn5+cHBwwLZt2xAYGAigsHk7Ly8PAKRJ+zWrUaMG/P390aZNG4SHh2PevHkAADc3N9y4cQPBwcFQqVRK/igh3kUREREYO3YsduzYgX79+inb/fz8kJWVhZCQEBgaGuL06dNYsmQJtm7dCmdnZ1y/fh2hoaFKHjRRfDdu3EB2djYcHBy06hPN8ApN97GZmRmOHj2K/fv3Y8WKFSVSViFKm2InCCoaJOzatQvTp08HIMHZm6T5DNq2bYvw8HCYmZnh/PnzOHbsmDKhQHIQiXdV0YkyycnJyva+ffvil19+QZkyZdC2bVtERUUhOzsbc+bMwdKlS2FmZoYTJ04ovwHJg/ZqTpw4gczMTFhaWr7wwU+lUuH8+fP4448/ULNmTdy5cweLFi0qodIKUbq88gLraWlp8PPzw/Xr17F582atmZ/izUhLS8OUKVNw584dREZGomzZsjKDSpQKqampCAwMxJ9//gkXFxccPHgQiYmJCAsLQ8OGDZV8aTk5OcjJyYGBgQEqVKgAQPKg6cq2bdswdOhQRERE4F//+tcLj/Hz80N6ejqCgoKUvI0ySUOIV/fKQRoA3Lp1C0Bhc7coGffv34eJiYlMcRelTlpaGgICAhAVFYWMjAzExsbC3Nz8b4MAFknVIV5NUlISWrZsiW7duuGHH35QEpJrrvHDhw8xYsQIdOrUCePHjy/h0gpRuuikH8DMzEwCtBJWqVIl6OnpyRR3UerUqFEDU6dOhbOzM+rXr49NmzYBgJJ65kUkQNOdBg0aIDg4GD///DP8/Pxw6tQpAIXX+ObNm3BxcUFaWhrGjh1bwiUVovTRSUuaEEK8bpoWtWPHjqFfv36YMmUKAGk1exPy8/OxevVqfPHFFzAzM4O1tTUKCgqQkZGBgoICHDp0CGXLlpUuTiF0TII0IcQ7Iy0tDbNmzcKJEyfQuXNnfPfddyVdpPfK6dOnsWrVKly8eBF16tRBixYt4OnpKesBC/GaSJAmhHinpKWlwdfXF+XKlcPy5culFe0tIC1oQrweEqQJId459+7dg6mpKfT09KS78w2T6y3EmyNBmhDinaVJwSGEEKWRBGlCCCGEEG8heQQVQgghhHgLSZAmhBBCCPEWkiBNCCGEEOItJEGaEEIIIcRbSII0IYQQQoi3kARpQgghhBBvIQnShBDiBfbt2weVSoUHDx68lvMPGzYMffv2fS3nFkKUDhKkCSFKvbS0NIwfPx4NGjSAgYEB6tSpA2dnZ+zZs+cv39OhQwekpqbCxMQEALBmzRqYmprqrEw//vgj1qxZo7PzCSFKH1kNVwhRql25cgV2dnYwNTXF3Llz8dFHH+Hp06fYvXs3xo0bhwsXLjz3nqdPn0KtVqNGjRo6L09+fj5UKpUS/AkhxF+RljQhRKn2xRdfQKVS4ejRo/jss89gaWkJKysrTJo0CUeOHAEAqFQqLFu2DL1790aFChUQEBCg1d25b98+DB8+HBkZGVCpVFCpVJgxYwYA4MmTJ/Dx8YG5uTkqVKiAdu3aYd++fcr/X9MCt3PnTnz44YcwMDBASkrKc92d0dHRsLe3h6mpKapUqYJPPvkEly9ffoNXSgjxtpEgTQhRat27dw/R0dEYN24cKlSo8Nz+ot2XM2bMQL9+/RAXF4cRI0ZoHdehQwcsXLgQFStWRGpqKlJTU+Hj4wMA8PLywn//+19s3rwZsbGxGDBgAHr06IGEhATl/dnZ2QgMDMTKlSsRHx+P6tWrP1eWR48eYdKkSTh+/Dj27NkDPT099OvXDwUFBTq6GkKId410dwohSq3ExESQRJMmTf7PYwcPHozhw4crr5OSkpR/q9VqmJiYQKVSaXWBpqSkYPXq1UhJSUGtWrUAAD4+PoiOjsbq1asxa9YsAIXdp0uXLoWNjc1f/v8/++wzrderVq1CtWrVcO7cOVhbW/+zP1gIUapIkCaEKLVI/uNjW7du/dLnj4uLQ35+PiwtLbW2P3nyBFWqVFFeq9VqNGvW7G/PlZCQgGnTpuHPP//E3bt3lRa0lJQUCdKEeE9JkCaEKLUaNWoElUr1wskBz3pRd+j/JSsrC/r6+jhx4gT09fW19hkZGSn/NjQ0hEql+ttzOTs7o169eggJCUGtWrVQUFAAa2tr5ObmvnS5hBClgwRpQohSq3LlyujevTuCgoIwYcKE5wKxBw8e/OO0Gmq1Gvn5+VrbWrRogfz8fNy+fRsdO3YsdjnT09Nx8eJFhISEKOc5ePBgsc8nhCgdZOKAEKJUCwoKQn5+Ptq2bYvt27cjISEB58+fx6JFi2Bra/uPz2NhYYGsrCzs2bMHd+/eRXZ2NiwtLeHq6gp3d3fs2LEDycnJOHr0KL7//ntERUX943NXqlQJVapUwYoVK5CYmIi9e/di0qRJxflzhRCliARpQohSrUGDBjh58iQ6d+6MyZMnw9raGh9//DH27NmDZcuW/ePzdOjQAZ6envj8889RrVo1zJkzBwCwevVquLu7Y/LkyWjcuDH69u2LY8eOoW7duv/43Hp6eti8eTNOnDgBa2trTJw4EXPnzn3pv1UIUbqo+DIja4UQQgghxBshLWlCCCGEEG8hCdKEEEIIId5CEqQJIYQQQryFJEgTQgghhHgLSZAmhBBCCPEWkiBNCCGEEOItJEGaEEIIIcRbSII0IYQQQoi3kARpQgghhBBvIQnShBBCCCHeQhKkCSGEEEK8hSRIE0IIIYR4C/0/GUzzVAexaHYAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "df[\"Simple_Scores\"] = df[\"Simple_Evaluation\"].apply(lambda x: [score for key, score in x.model_dump().items() if key != 'justification'])\n", - "df[\"Complex_Scores\"] = df[\"Complex_Evaluation\"].apply(lambda x: [score for key, score in x.model_dump().items() if key != 'justification'])\n", - "\n", - "\n", - "# Calculate average scores for each criterion\n", - "criteria = [\n", - " 'Relevance to Preferences',\n", - " 'Detail and Completeness',\n", - " 'Diversity of Activities',\n", - " 'Feasibility and Practicality',\n", - " 'Creativity and Uniqueness'\n", - "]\n", - "\n", - "# Calculate average scores for each criterion by model\n", - "simple_avg_scores = df['Simple_Scores'].apply(pd.Series).mean()\n", - "complex_avg_scores = df['Complex_Scores'].apply(pd.Series).mean()\n", - "\n", - "\n", - "# Prepare data for plotting\n", - "avg_scores_df = pd.DataFrame({\n", - " 'Criteria': criteria,\n", - " 'Simple Prompt': simple_avg_scores,\n", - " 'Complex Prompt': complex_avg_scores\n", - "})\n", - "\n", - "# Plotting\n", - "avg_scores_df.plot(x='Criteria', kind='bar', figsize=(6, 4))\n", - "plt.ylabel('Average Score')\n", - "plt.title('Comparison of Simple vs Complex Prompt Performance by Model')\n", - "plt.xticks(rotation=45, ha='right')\n", - "plt.tight_layout()\n", - "plt.show()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The basic prompt performed well in terms of relevance and diversity, but the complex prompt notably enhanced the completeness and creativity of the itineraries. However, it's worth noting that this is a simplified example, and the benefits of refining prompts are expected to be even more pronounced in real-world, production-level applications." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "By refining our prompts, we can enhance the quality of outputs from a language model. This example demonstrates how adding detail and structure to a prompt leads to more relevant, complete, and creative results. Even though the differences here are small, Metaprompting is a powerful technique that developers can use to build more effective and user-centric applications." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 05d67ef313ca3394a8e02acff28f2fe7ac6578c3 Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:14:52 +0100 Subject: [PATCH 09/11] Add files via upload --- ...nce_your_prompts_with_meta_prompting.ipynb | 932 ++++++++++++++++++ 1 file changed, 932 insertions(+) create mode 100644 examples/Enhance_your_prompts_with_meta_prompting.ipynb diff --git a/examples/Enhance_your_prompts_with_meta_prompting.ipynb b/examples/Enhance_your_prompts_with_meta_prompting.ipynb new file mode 100644 index 0000000000..557d758580 --- /dev/null +++ b/examples/Enhance_your_prompts_with_meta_prompting.ipynb @@ -0,0 +1,932 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Meta Prompting: A Guide to Automated Prompt Optimization\n", + "\n", + "Welcome to our cookbook on meta prompting! In this guide, we'll explore how to take a basic prompt and refine it to enhance the quality of outputs from a language model. We'll use the example of summarizing news reports to illustrate the process.\n", + "\n", + "\n", + "Meta prompting is all about iteratively refining prompts to get more accurate and detailed responses from a language model. We know that prompt engineering can be a challenging and time-consuming task that often requires technical expertise. But with meta prompting, you can have a virtual prompt engineer by your side! By leveraging the capabilities of `o1-preview`, a more intelligent model with advanced reasoning skills, anyone can improve their prompts without needing deep technical knowledge.\n", + "\n", + "We're committed to making your development journey with LLMs smoother and more accessible through this technique. Don't forget to check out our [Generate Anything](https://platform.openai.com/docs/guides/prompt-generation) feature in the playground — it's a fantastic starting point to dive into meta prompting.\n", + "\n", + "In this example, we'll begin with a simple prompt for summarizing news articles and then enhance it to see how the outputs improve. We'll use `o1-preview` to analyze and refine our prompt, adding more detail and clarity along the way. Finally, we'll evaluate the outputs systematically to understand the impact of our refinements." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import openai \n", + "from concurrent.futures import ThreadPoolExecutor, as_completed\n", + "from tqdm import tqdm\n", + "from pydantic import BaseModel\n", + "from datasets import load_dataset\n", + "\n", + "client = openai.Client()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Importing the Data\n", + "\n", + "Let's kick things off by importing the `bbc_news_alltime` dataset from [HuggingFace](https://huggingface.co/datasets/RealTimeData/bbc_news_alltime). This dataset contains all BBC News articles, capturing everything published monthly from 2017 up to the latest complete month. For our experiment, we'll focus exclusively on the most recent month—September 2024—to keep things current and manageable.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
titlepublished_dateauthorsdescriptionsectioncontentlinktop_image
0Americast - Profile: Who is Donald Trump? (Par...2024-09-01NoneHow the man became The DonaldNoneAmericanswers! Do Harris/Trump actually need A...http://www.bbc.co.uk/sounds/play/p0jmwg24https://ichef.bbci.co.uk/images/ic/320x320/p0j...
1Newscast - Keir Diary… A Week in the Life of t...2024-09-01NoneRecapping a busy week for Sir Keir Starmer.NoneThe Riots, The Police and Social Media\\n\\nAdam...http://www.bbc.co.uk/sounds/play/m0022js5https://ichef.bbci.co.uk/images/ic/320x320/p0j...
2Americast - The Harris VS Trump Debate... and ...2024-09-11NoneAnd why is \"THEY'RE EATING THE DOGS\" trending ...NoneThe Harris VS Trump Debate... and a Taylor Swi...http://www.bbc.co.uk/sounds/play/p0jpskr7https://ichef.bbci.co.uk/images/ic/320x320/p0j...
3Americast - The Harris VS Trump Debate... and ...2024-09-12NoneAnd why is \"THEY'RE EATING THE DOGS\" trending ...NoneThe Harris VS Trump Debate... and a Taylor Swi...http://www.bbc.co.uk/sounds/play/p0jpskr7https://ichef.bbci.co.uk/images/ic/320x320/p0j...
4Quiz of the week: Who blew out the Paralympic ...2024-09-12https://www.facebook.com/bbcnewsTest how closely you've been paying attention ...WorldIt's the weekly news quiz - how closely have y...http://www.bbc.co.uk/news/world-69340211https://ichef.bbci.co.uk/news/1024/branded_new...
\n", + "
" + ], + "text/plain": [ + " title published_date \\\n", + "0 Americast - Profile: Who is Donald Trump? (Par... 2024-09-01 \n", + "1 Newscast - Keir Diary… A Week in the Life of t... 2024-09-01 \n", + "2 Americast - The Harris VS Trump Debate... and ... 2024-09-11 \n", + "3 Americast - The Harris VS Trump Debate... and ... 2024-09-12 \n", + "4 Quiz of the week: Who blew out the Paralympic ... 2024-09-12 \n", + "\n", + " authors \\\n", + "0 None \n", + "1 None \n", + "2 None \n", + "3 None \n", + "4 https://www.facebook.com/bbcnews \n", + "\n", + " description section \\\n", + "0 How the man became The Donald None \n", + "1 Recapping a busy week for Sir Keir Starmer. None \n", + "2 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", + "3 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", + "4 Test how closely you've been paying attention ... World \n", + "\n", + " content \\\n", + "0 Americanswers! Do Harris/Trump actually need A... \n", + "1 The Riots, The Police and Social Media\\n\\nAdam... \n", + "2 The Harris VS Trump Debate... and a Taylor Swi... \n", + "3 The Harris VS Trump Debate... and a Taylor Swi... \n", + "4 It's the weekly news quiz - how closely have y... \n", + "\n", + " link \\\n", + "0 http://www.bbc.co.uk/sounds/play/p0jmwg24 \n", + "1 http://www.bbc.co.uk/sounds/play/m0022js5 \n", + "2 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", + "3 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", + "4 http://www.bbc.co.uk/news/world-69340211 \n", + "\n", + " top_image \n", + "0 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "1 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "2 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "3 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "4 https://ichef.bbci.co.uk/news/1024/branded_new... " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds = load_dataset(\"RealTimeData/bbc_news_alltime\", \"2024-09\")\n", + "df = pd.DataFrame(ds['train'])\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Iterating on Prompts\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start with a straightforward prompt and then use `o1-preview` to enhance it for better results. We want to summarize news articles, so this is what i'll ask the model to do. " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "simple_prompt = \"Summarize this news article: {article}\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To improve the prompt, we need to provide `o1-preview` with the context and goals we want to achieve. We can then ask it to generate a more detailed prompt that would produce richer and more comprehensive news summaries." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "meta_prompt = \"\"\"\n", + "Improve the following prompt to generate a more detailed sumary. \n", + "Adhere to prompt engineering best practices. \n", + "Make sure the structure is clear and intuitive and contains the type of news, tags and sentiment analysis.\n", + "\n", + "{simple_prompt}\n", + "\n", + "Only return the prompt.\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Please read the following news article and produce a detailed summary with the following structure:\\n\\n1. **Type of News**: Identify the category or domain of the news article (e.g., Politics, Technology, Sports, etc.).\\n\\n2. **Summary**: Provide a comprehensive and detailed summary of the article, highlighting the main points and key details.\\n\\n3. **Tags**: List relevant keywords or tags associated with the content of the article.\\n\\n4. **Sentiment Analysis**: Determine the overall sentiment of the article (Positive, Negative, Neutral) and provide a brief explanation for your assessment.\\n\\nHere is the article:\\n\\n{article}'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_model_response(messages, model=\"o1-preview\"):\n", + " response = client.chat.completions.create(\n", + " messages=messages,\n", + " model=model,\n", + " )\n", + " return response.choices[0].message.content\n", + "\n", + "\n", + "complex_prompt = get_model_response([{\"role\": \"user\", \"content\": meta_prompt.format(simple_prompt=simple_prompt)}])\n", + "complex_prompt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generating the Summaries\n", + "\n", + "Now that we have both prompts, let's generate the summaries! For each entry in our dataset, we'll use both the simple and the enhanced prompts to see how they compare. By doing this, we'll get a firsthand look at how our refinements with `o1-preview` can lead to richer and more detailed summaries. Let's dive in and see the difference for ourselves!" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_resonse(prompt): \n", + " messages = [{\"role\": \"user\", \"content\": prompt}]\n", + " response = get_model_response(messages, model=\"gpt-4o-mini\")\n", + " return response\n", + "\n", + "def generate_summaries(row):\n", + " simple_itinerary = generate_resonse(simple_prompt.format(article=row[\"content\"]))\n", + " complex_itinerary = generate_resonse(complex_prompt + row[\"content\"])\n", + " return simple_itinerary, complex_itinerary" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's check if everything looks good and if we can generate a summary for the first news report. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('The article discusses the ongoing debates surrounding the necessity of extensive policy agendas for political candidates like Kamala Harris and Donald Trump in the lead-up to the election. It explores whether voters prioritize well-defined policies or if charisma, personality, and other factors play a more significant role in their decision-making process. Expert opinions and voter sentiments are examined, revealing insights into how much impact concrete policies have compared to broader campaign themes and messages. The article emphasizes the complexities of voter preferences and the evolving nature of political campaigns in contemporary America.',\n", + " '1. **Type of News**: Politics\\n\\n2. **Summary**: The article titled “Americanswers! Do Harris/Trump actually need ANY policies?” addresses the significant issues in the lead-up to the upcoming election, specifically focusing on the political strategies of two prominent figures: Kamala Harris and Donald Trump. It engages with the question of whether these politicians are required to present concrete policies to their constituents or if they can succeed through rhetoric and public persona alone. The article explores voter expectations, the effectiveness of policy proposals versus emotional appeal, and the broader implications of policy-focused versus personality-driven campaigns in contemporary American politics. It highlights how the political landscape has shifted, asking readers to reflect on what they truly want from their leaders as the election approaches.\\n\\n3. **Tags**: Politics, Election 2024, Kamala Harris, Donald Trump, Political Strategies, Policy Discussion\\n\\n4. **Sentiment Analysis**: Neutral. The article does not express a strong positive or negative sentiment toward the political figures discussed or the broader topic of policy need in campaigns. Instead, it presents an analytical perspective, encouraging readers to think critically about the role of policies versus personality in politics.')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generate_summaries(df.iloc[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By comparing the summaries generated from the simple and enhanced prompts, we can already see significant improvements. The initial summary gives us a general overview of the article, whereas the enhanced summary dives deeper — it not only provides a detailed summary but also categorizes the news type, lists relevant tags, and even includes a sentiment analysis.\n", + "\n", + "Let's test on the entire dataset now! " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating Itineraries: 100%|██████████| 59/59 [00:26<00:00, 2.24it/s]\n" + ] + }, + { + "data": { + "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", + " \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", + "
titlepublished_dateauthorsdescriptionsectioncontentlinktop_imagesimple_summarycomplex_summary
0Americast - Profile: Who is Donald Trump? (Par...2024-09-01NoneHow the man became The DonaldNoneAmericanswers! Do Harris/Trump actually need A...http://www.bbc.co.uk/sounds/play/p0jmwg24https://ichef.bbci.co.uk/images/ic/320x320/p0j...The article titled \"Americanswers! Do Harris/T...1. **Type of News**: Politics\\n\\n2. **Summary*...
1Newscast - Keir Diary… A Week in the Life of t...2024-09-01NoneRecapping a busy week for Sir Keir Starmer.NoneThe Riots, The Police and Social Media\\n\\nAdam...http://www.bbc.co.uk/sounds/play/m0022js5https://ichef.bbci.co.uk/images/ic/320x320/p0j...In the article \"The Riots, The Police and Soci...1. **Type of News**: Politics / Social Issues\\...
2Americast - The Harris VS Trump Debate... and ...2024-09-11NoneAnd why is \"THEY'RE EATING THE DOGS\" trending ...NoneThe Harris VS Trump Debate... and a Taylor Swi...http://www.bbc.co.uk/sounds/play/p0jpskr7https://ichef.bbci.co.uk/images/ic/320x320/p0j...The article discusses a debate between Vice Pr...1. **Type of News**: Politics / Entertainment\\...
3Americast - The Harris VS Trump Debate... and ...2024-09-12NoneAnd why is \"THEY'RE EATING THE DOGS\" trending ...NoneThe Harris VS Trump Debate... and a Taylor Swi...http://www.bbc.co.uk/sounds/play/p0jpskr7https://ichef.bbci.co.uk/images/ic/320x320/p0j...In a recent debate, Vice President Kamala Harr...1. **Type of News**: Politics/Entertainment\\n\\...
4Quiz of the week: Who blew out the Paralympic ...2024-09-12https://www.facebook.com/bbcnewsTest how closely you've been paying attention ...WorldIt's the weekly news quiz - how closely have y...http://www.bbc.co.uk/news/world-69340211https://ichef.bbci.co.uk/news/1024/branded_new...The article introduces a weekly news quiz desi...1. **Type of News**: General News / Media / En...
\n", + "
" + ], + "text/plain": [ + " title published_date \\\n", + "0 Americast - Profile: Who is Donald Trump? (Par... 2024-09-01 \n", + "1 Newscast - Keir Diary… A Week in the Life of t... 2024-09-01 \n", + "2 Americast - The Harris VS Trump Debate... and ... 2024-09-11 \n", + "3 Americast - The Harris VS Trump Debate... and ... 2024-09-12 \n", + "4 Quiz of the week: Who blew out the Paralympic ... 2024-09-12 \n", + "\n", + " authors \\\n", + "0 None \n", + "1 None \n", + "2 None \n", + "3 None \n", + "4 https://www.facebook.com/bbcnews \n", + "\n", + " description section \\\n", + "0 How the man became The Donald None \n", + "1 Recapping a busy week for Sir Keir Starmer. None \n", + "2 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", + "3 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", + "4 Test how closely you've been paying attention ... World \n", + "\n", + " content \\\n", + "0 Americanswers! Do Harris/Trump actually need A... \n", + "1 The Riots, The Police and Social Media\\n\\nAdam... \n", + "2 The Harris VS Trump Debate... and a Taylor Swi... \n", + "3 The Harris VS Trump Debate... and a Taylor Swi... \n", + "4 It's the weekly news quiz - how closely have y... \n", + "\n", + " link \\\n", + "0 http://www.bbc.co.uk/sounds/play/p0jmwg24 \n", + "1 http://www.bbc.co.uk/sounds/play/m0022js5 \n", + "2 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", + "3 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", + "4 http://www.bbc.co.uk/news/world-69340211 \n", + "\n", + " top_image \\\n", + "0 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "1 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "2 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "3 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "4 https://ichef.bbci.co.uk/news/1024/branded_new... \n", + "\n", + " simple_summary \\\n", + "0 The article titled \"Americanswers! Do Harris/T... \n", + "1 In the article \"The Riots, The Police and Soci... \n", + "2 The article discusses a debate between Vice Pr... \n", + "3 In a recent debate, Vice President Kamala Harr... \n", + "4 The article introduces a weekly news quiz desi... \n", + "\n", + " complex_summary \n", + "0 1. **Type of News**: Politics\\n\\n2. **Summary*... \n", + "1 1. **Type of News**: Politics / Social Issues\\... \n", + "2 1. **Type of News**: Politics / Entertainment\\... \n", + "3 1. **Type of News**: Politics/Entertainment\\n\\... \n", + "4 1. **Type of News**: General News / Media / En... " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Add new columns to the dataframe for storing itineraries\n", + "df['simple_summary'] = None\n", + "df['complex_summary'] = None\n", + "\n", + "# Use ThreadPoolExecutor to generate itineraries concurrently\n", + "with ThreadPoolExecutor() as executor:\n", + " futures = {executor.submit(generate_summaries, row): index for index, row in df.iterrows()}\n", + " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Generating Itineraries\"):\n", + " index = futures[future]\n", + " simple_itinerary, complex_itinerary = future.result()\n", + " df.at[index, 'simple_summary'] = simple_itinerary\n", + " df.at[index, 'complex_summary'] = complex_itinerary\n", + "\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluating the Results\n", + "\n", + "To assess the difference in performance between the two prompts, we'll use a structured evaluation approach with the LLM acting as a judge. This means we'll leverage the language model itself to evaluate and compare the outputs based on specific criteria.\n", + "\n", + "**What Does \"LLM as a Judge\" Mean?**\n", + "\n", + "Using an LLM as a judge involves having the language model evaluate its own outputs or those of another model. It applies predefined criteria to assess aspects like accuracy, clarity, and relevance. This approach helps us obtain an objective and consistent evaluation without human bias, making it easier to identify improvements between different prompts. Our cookbook on [Getting Started with OpenAI Evals](https://cookbook.openai.com/examples/evaluation/getting_started_with_openai_evals) offers a glimps on how you can get started with this approach.\n", + "\n", + "\n", + "Here's the prompt we'll use for evaluation:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "evaluation_prompt = \"\"\"\n", + "You are an expert editor tasked with evaluating the quality of a news article summary. Below is the original article and the summary to be evaluated:\n", + "\n", + "**Original Article**: \n", + "{original_article}\n", + "\n", + "**Summary**: \n", + "{summary}\n", + "\n", + "Please evaluate the summary based on the following criteria, using a scale of 1 to 5 (1 being the lowest and 5 being the highest). Be critical in your evaluation and only give high scores for exceptional summaries:\n", + "\n", + "1. **Categorization and Context**: Does the summary clearly identify the type or category of news (e.g., Politics, Technology, Sports) and provide appropriate context? \n", + "2. **Keyword and Tag Extraction**: Does the summary include relevant keywords or tags that accurately capture the main topics and themes of the article? \n", + "3. **Sentiment Analysis**: Does the summary accurately identify the overall sentiment of the article and provide a clear, well-supported explanation for this sentiment? \n", + "4. **Clarity and Structure**: Is the summary clear, well-organized, and structured in a way that makes it easy to understand the main points? \n", + "5. **Detail and Completeness**: Does the summary provide a detailed account that includes all necessary components (type of news, tags, sentiment) comprehensively? \n", + "\n", + "\n", + "Provide your scores and justifications for each criterion, ensuring a rigorous and detailed evaluation.\n", + "\"\"\"\n", + "\n", + "class ScoreCard(BaseModel):\n", + " categorization: int\n", + " keyword_extraction: int\n", + " sentiment_analysis: int\n", + " clarity_structure: int\n", + " detail_completeness: int\n", + " justification: str" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a pro tip — you can actually use meta prompting to refine your evaluation prompt as well! By applying the same iterative enhancement to the prompt that instructs the LLM to act as a judge, you can make your evaluations even more precise and insightful. \n", + "\n", + "Let's use this prompt to evaluate our summaries!" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Evaluating Summaries: 100%|██████████| 59/59 [00:46<00:00, 1.27it/s]\n" + ] + }, + { + "data": { + "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", + " \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", + "
titlepublished_dateauthorsdescriptionsectioncontentlinktop_imagesimple_summarycomplex_summarysimple_evaluationcomplex_evaluation
0Americast - Profile: Who is Donald Trump? (Par...2024-09-01NoneHow the man became The DonaldNoneAmericanswers! Do Harris/Trump actually need A...http://www.bbc.co.uk/sounds/play/p0jmwg24https://ichef.bbci.co.uk/images/ic/320x320/p0j...The article titled \"Americanswers! Do Harris/T...1. **Type of News**: Politics\\n\\n2. **Summary*...categorization=4 keyword_extraction=3 sentimen...categorization=5 keyword_extraction=5 sentimen...
1Newscast - Keir Diary… A Week in the Life of t...2024-09-01NoneRecapping a busy week for Sir Keir Starmer.NoneThe Riots, The Police and Social Media\\n\\nAdam...http://www.bbc.co.uk/sounds/play/m0022js5https://ichef.bbci.co.uk/images/ic/320x320/p0j...In the article \"The Riots, The Police and Soci...1. **Type of News**: Politics / Social Issues\\...categorization=4 keyword_extraction=5 sentimen...categorization=5 keyword_extraction=5 sentimen...
2Americast - The Harris VS Trump Debate... and ...2024-09-11NoneAnd why is \"THEY'RE EATING THE DOGS\" trending ...NoneThe Harris VS Trump Debate... and a Taylor Swi...http://www.bbc.co.uk/sounds/play/p0jpskr7https://ichef.bbci.co.uk/images/ic/320x320/p0j...The article discusses a debate between Vice Pr...1. **Type of News**: Politics / Entertainment\\...categorization=5 keyword_extraction=4 sentimen...categorization=5 keyword_extraction=5 sentimen...
3Americast - The Harris VS Trump Debate... and ...2024-09-12NoneAnd why is \"THEY'RE EATING THE DOGS\" trending ...NoneThe Harris VS Trump Debate... and a Taylor Swi...http://www.bbc.co.uk/sounds/play/p0jpskr7https://ichef.bbci.co.uk/images/ic/320x320/p0j...In a recent debate, Vice President Kamala Harr...1. **Type of News**: Politics/Entertainment\\n\\...categorization=4 keyword_extraction=4 sentimen...categorization=5 keyword_extraction=5 sentimen...
4Quiz of the week: Who blew out the Paralympic ...2024-09-12https://www.facebook.com/bbcnewsTest how closely you've been paying attention ...WorldIt's the weekly news quiz - how closely have y...http://www.bbc.co.uk/news/world-69340211https://ichef.bbci.co.uk/news/1024/branded_new...The article introduces a weekly news quiz desi...1. **Type of News**: General News / Media / En...categorization=2 keyword_extraction=3 sentimen...categorization=5 keyword_extraction=4 sentimen...
\n", + "
" + ], + "text/plain": [ + " title published_date \\\n", + "0 Americast - Profile: Who is Donald Trump? (Par... 2024-09-01 \n", + "1 Newscast - Keir Diary… A Week in the Life of t... 2024-09-01 \n", + "2 Americast - The Harris VS Trump Debate... and ... 2024-09-11 \n", + "3 Americast - The Harris VS Trump Debate... and ... 2024-09-12 \n", + "4 Quiz of the week: Who blew out the Paralympic ... 2024-09-12 \n", + "\n", + " authors \\\n", + "0 None \n", + "1 None \n", + "2 None \n", + "3 None \n", + "4 https://www.facebook.com/bbcnews \n", + "\n", + " description section \\\n", + "0 How the man became The Donald None \n", + "1 Recapping a busy week for Sir Keir Starmer. None \n", + "2 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", + "3 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", + "4 Test how closely you've been paying attention ... World \n", + "\n", + " content \\\n", + "0 Americanswers! Do Harris/Trump actually need A... \n", + "1 The Riots, The Police and Social Media\\n\\nAdam... \n", + "2 The Harris VS Trump Debate... and a Taylor Swi... \n", + "3 The Harris VS Trump Debate... and a Taylor Swi... \n", + "4 It's the weekly news quiz - how closely have y... \n", + "\n", + " link \\\n", + "0 http://www.bbc.co.uk/sounds/play/p0jmwg24 \n", + "1 http://www.bbc.co.uk/sounds/play/m0022js5 \n", + "2 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", + "3 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", + "4 http://www.bbc.co.uk/news/world-69340211 \n", + "\n", + " top_image \\\n", + "0 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "1 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "2 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "3 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", + "4 https://ichef.bbci.co.uk/news/1024/branded_new... \n", + "\n", + " simple_summary \\\n", + "0 The article titled \"Americanswers! Do Harris/T... \n", + "1 In the article \"The Riots, The Police and Soci... \n", + "2 The article discusses a debate between Vice Pr... \n", + "3 In a recent debate, Vice President Kamala Harr... \n", + "4 The article introduces a weekly news quiz desi... \n", + "\n", + " complex_summary \\\n", + "0 1. **Type of News**: Politics\\n\\n2. **Summary*... \n", + "1 1. **Type of News**: Politics / Social Issues\\... \n", + "2 1. **Type of News**: Politics / Entertainment\\... \n", + "3 1. **Type of News**: Politics/Entertainment\\n\\... \n", + "4 1. **Type of News**: General News / Media / En... \n", + "\n", + " simple_evaluation \\\n", + "0 categorization=4 keyword_extraction=3 sentimen... \n", + "1 categorization=4 keyword_extraction=5 sentimen... \n", + "2 categorization=5 keyword_extraction=4 sentimen... \n", + "3 categorization=4 keyword_extraction=4 sentimen... \n", + "4 categorization=2 keyword_extraction=3 sentimen... \n", + "\n", + " complex_evaluation \n", + "0 categorization=5 keyword_extraction=5 sentimen... \n", + "1 categorization=5 keyword_extraction=5 sentimen... \n", + "2 categorization=5 keyword_extraction=5 sentimen... \n", + "3 categorization=5 keyword_extraction=5 sentimen... \n", + "4 categorization=5 keyword_extraction=4 sentimen... " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def evaluate_summaries(row):\n", + " simple_messages = [{\"role\": \"user\", \"content\": evaluation_prompt.format(original_article=row[\"content\"], summary=row['simple_summary'])}]\n", + " complex_messages = [{\"role\": \"user\", \"content\": evaluation_prompt.format(original_article=row[\"content\"], summary=row['complex_summary'])}]\n", + " \n", + " simple_summary = client.beta.chat.completions.parse(\n", + " model=\"gpt-4o\",\n", + " messages=simple_messages,\n", + " response_format=ScoreCard)\n", + " simple_summary = simple_summary.choices[0].message.parsed\n", + " \n", + " complex_summary = client.beta.chat.completions.parse(\n", + " model=\"gpt-4o\",\n", + " messages=complex_messages,\n", + " response_format=ScoreCard)\n", + " complex_summary = complex_summary.choices[0].message.parsed\n", + " \n", + " return simple_summary, complex_summary\n", + "\n", + "# Add new columns to the dataframe for storing evaluations\n", + "df['simple_evaluation'] = None\n", + "df['complex_evaluation'] = None\n", + "\n", + "# Use ThreadPoolExecutor to evaluate itineraries concurrently\n", + "with ThreadPoolExecutor() as executor:\n", + " futures = {executor.submit(evaluate_summaries, row): index for index, row in df.iterrows()}\n", + " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Evaluating Summaries\"):\n", + " index = futures[future]\n", + " simple_evaluation, complex_evaluation = future.result()\n", + " df.at[index, 'simple_evaluation'] = simple_evaluation\n", + " df.at[index, 'complex_evaluation'] = complex_evaluation\n", + "\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "df[\"simple_scores\"] = df[\"simple_evaluation\"].apply(lambda x: [score for key, score in x.model_dump().items() if key != 'justification'])\n", + "df[\"complex_scores\"] = df[\"complex_evaluation\"].apply(lambda x: [score for key, score in x.model_dump().items() if key != 'justification'])\n", + "\n", + "\n", + "# Calculate average scores for each criterion\n", + "criteria = [\n", + " 'Categorisation',\n", + " 'Keywords and Tags',\n", + " 'Sentiment Analysis',\n", + " 'Clarity and Structure',\n", + " 'Detail and Completeness'\n", + "]\n", + "\n", + "# Calculate average scores for each criterion by model\n", + "simple_avg_scores = df['simple_scores'].apply(pd.Series).mean()\n", + "complex_avg_scores = df['complex_scores'].apply(pd.Series).mean()\n", + "\n", + "\n", + "# Prepare data for plotting\n", + "avg_scores_df = pd.DataFrame({\n", + " 'Criteria': criteria,\n", + " 'Simple Prompt': simple_avg_scores,\n", + " 'Complex Prompt': complex_avg_scores\n", + "})\n", + "\n", + "# Plotting\n", + "ax = avg_scores_df.plot(x='Criteria', kind='bar', figsize=(6, 4))\n", + "plt.ylabel('Average Score')\n", + "plt.title('Comparison of Simple vs Complex Prompt Performance by Model')\n", + "plt.xticks(rotation=45, ha='right')\n", + "plt.tight_layout()\n", + "plt.legend(loc='upper left', bbox_to_anchor=(1, 1))\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After evaluating the results, we found that while the basic prompt performed well in clarity and structure, the enhanced prompt significantly improved outputs across several other key criteria: Categorization, Keywords and Tags, Sentiment Analysis, and Detail and Completeness. The complex prompt led to summaries that were more informative, better organized, and richer in content.\n", + "\n", + "This demonstrates how refining prompts can greatly enhance the quality of the generated summaries. Although this is a simplified example, the benefits of prompt optimization are expected to be even more pronounced in real-world, production-level applications, leading to outputs that are more aligned with specific goals and user needs." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Meta prompting is a powerful technique that can significantly enhance the quality of outputs from language models. Our exploration showed that starting with a simple prompt and refining it using `o1-preview` led to summaries that were more informative, better organized, and richer in content—improving across key criteria like categorization, keywords and tags, sentiment analysis, and completeness. This exercise underscores the value of prompt optimization, and even in this simplified example, the benefits are clear. In real-world applications, leveraging meta prompting and tools like `o1-preview` can elevate language model performance to better meet your specific goals and user needs." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 12fecae50987f402be7c79185cef02732e4eba85 Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Tue, 29 Oct 2024 09:29:39 +0200 Subject: [PATCH 10/11] Update examples/Enhance_your_prompts_with_meta_prompting.ipynb Co-authored-by: Josh McEwen --- examples/Enhance_your_prompts_with_meta_prompting.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Enhance_your_prompts_with_meta_prompting.ipynb b/examples/Enhance_your_prompts_with_meta_prompting.ipynb index 557d758580..80bca40d79 100644 --- a/examples/Enhance_your_prompts_with_meta_prompting.ipynb +++ b/examples/Enhance_your_prompts_with_meta_prompting.ipynb @@ -238,7 +238,7 @@ "outputs": [], "source": [ "meta_prompt = \"\"\"\n", - "Improve the following prompt to generate a more detailed sumary. \n", + "Improve the following prompt to generate a more detailed summary. \n", "Adhere to prompt engineering best practices. \n", "Make sure the structure is clear and intuitive and contains the type of news, tags and sentiment analysis.\n", "\n", From 5545bb2a33e80ee9dfe8343de219d960152021ef Mon Sep 17 00:00:00 2001 From: Teo Musatoiu <156829031+teomusatoiu@users.noreply.github.com> Date: Tue, 29 Oct 2024 09:42:28 +0200 Subject: [PATCH 11/11] Add files via upload --- ...nce_your_prompts_with_meta_prompting.ipynb | 685 +++++++++--------- 1 file changed, 353 insertions(+), 332 deletions(-) diff --git a/examples/Enhance_your_prompts_with_meta_prompting.ipynb b/examples/Enhance_your_prompts_with_meta_prompting.ipynb index 80bca40d79..660fd679f2 100644 --- a/examples/Enhance_your_prompts_with_meta_prompting.ipynb +++ b/examples/Enhance_your_prompts_with_meta_prompting.ipynb @@ -9,7 +9,7 @@ "Welcome to our cookbook on meta prompting! In this guide, we'll explore how to take a basic prompt and refine it to enhance the quality of outputs from a language model. We'll use the example of summarizing news reports to illustrate the process.\n", "\n", "\n", - "Meta prompting is all about iteratively refining prompts to get more accurate and detailed responses from a language model. We know that prompt engineering can be a challenging and time-consuming task that often requires technical expertise. But with meta prompting, you can have a virtual prompt engineer by your side! By leveraging the capabilities of `o1-preview`, a more intelligent model with advanced reasoning skills, anyone can improve their prompts without needing deep technical knowledge.\n", + "Meta-prompting is a technique where you use an LLM to generate or improve prompts. Typically this is done using a higher intelligent model that optimizes prompts for a model with less intelligence. It’s a process of using prompts to guide, structure, and optimize other prompts, helping ensure they’re more effective in guiding the LLM towards high-quality, relevant outputs. We'll be leveraging the capabilities of `o1-preview`, a more intelligent model with advanced reasoning skills, to improve a prompt for `gpt-4o`.\n", "\n", "We're committed to making your development journey with LLMs smoother and more accessible through this technique. Don't forget to check out our [Generate Anything](https://platform.openai.com/docs/guides/prompt-generation) feature in the playground — it's a fantastic starting point to dive into meta prompting.\n", "\n", @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -47,12 +47,12 @@ "source": [ "## Importing the Data\n", "\n", - "Let's kick things off by importing the `bbc_news_alltime` dataset from [HuggingFace](https://huggingface.co/datasets/RealTimeData/bbc_news_alltime). This dataset contains all BBC News articles, capturing everything published monthly from 2017 up to the latest complete month. For our experiment, we'll focus exclusively on the most recent month—September 2024—to keep things current and manageable.\n" + "Let's kick things off by importing the `bbc_news_alltime` dataset from [HuggingFace](https://huggingface.co/datasets/RealTimeData/bbc_news_alltime). This dataset contains all BBC News articles, capturing everything published monthly from 2017 up to the latest complete month. For our experiment, we'll focus exclusively on a sample from a recent month—August 2024—to keep things current and manageable.\n" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -88,116 +88,123 @@ " \n", " \n", " \n", - " 0\n", - " Americast - Profile: Who is Donald Trump? (Par...\n", - " 2024-09-01\n", - " None\n", - " How the man became The Donald\n", - " None\n", - " Americanswers! Do Harris/Trump actually need A...\n", - " http://www.bbc.co.uk/sounds/play/p0jmwg24\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", + " 2662\n", + " Laura Whitmore: I was gaslighted after raising...\n", + " 2024-08-04\n", + " https://www.facebook.com/bbcnews\n", + " The former Love Island host said that things s...\n", + " Culture\n", + " Television presenter Laura Whitmore has said t...\n", + " http://www.bbc.co.uk/news/articles/c9wvwvzm7x7o\n", + " https://ichef.bbci.co.uk/ace/standard/2560/cps...\n", " \n", " \n", - " 1\n", - " Newscast - Keir Diary… A Week in the Life of t...\n", - " 2024-09-01\n", - " None\n", - " Recapping a busy week for Sir Keir Starmer.\n", - " None\n", - " The Riots, The Police and Social Media\\n\\nAdam...\n", - " http://www.bbc.co.uk/sounds/play/m0022js5\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", + " 1865\n", + " Errollyn Wallen appointed as Master of the Kin...\n", + " 2024-08-25\n", + " https://www.facebook.com/bbcnews\n", + " She is best known for her work on the 2012 Par...\n", + " Culture\n", + " Celebrated composer and singer-songwriter Erro...\n", + " http://www.bbc.co.uk/news/articles/c4gl758g7zgo\n", + " https://ichef.bbci.co.uk/ace/standard/2560/cps...\n", " \n", " \n", - " 2\n", - " Americast - The Harris VS Trump Debate... and ...\n", - " 2024-09-11\n", - " None\n", - " And why is \"THEY'RE EATING THE DOGS\" trending ...\n", - " None\n", - " The Harris VS Trump Debate... and a Taylor Swi...\n", - " http://www.bbc.co.uk/sounds/play/p0jpskr7\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", + " 2554\n", + " SDLP: Matthew O'Toole endorses Claire Hanna fo...\n", + " 2024-08-30\n", + " https://www.facebook.com/bbcnews\n", + " Matthew O'Toole had been named by some as a po...\n", + " Northern Ireland Politics\n", + " Matthew O'Toole leads his party's official opp...\n", + " http://www.bbc.co.uk/news/articles/cvg41j7xrzdo\n", + " https://ichef.bbci.co.uk/ace/standard/3840/cps...\n", " \n", " \n", - " 3\n", - " Americast - The Harris VS Trump Debate... and ...\n", - " 2024-09-12\n", - " None\n", - " And why is \"THEY'RE EATING THE DOGS\" trending ...\n", - " None\n", - " The Harris VS Trump Debate... and a Taylor Swi...\n", - " http://www.bbc.co.uk/sounds/play/p0jpskr7\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", + " 1338\n", + " Rotherham rioters among those jailed - BBC News\n", + " 2024-08-20\n", + " https://www.facebook.com/bbcnews\n", + " Two men who were part of a mob targeting a Hol...\n", + " South Yorkshire\n", + " Rotherham pair among those jailed for UK rioti...\n", + " http://www.bbc.co.uk/news/articles/cwywggd7qw6o\n", + " https://ichef.bbci.co.uk/ace/standard/2560/cps...\n", " \n", " \n", - " 4\n", - " Quiz of the week: Who blew out the Paralympic ...\n", - " 2024-09-12\n", - " https://www.facebook.com/bbcnews\n", - " Test how closely you've been paying attention ...\n", - " World\n", - " It's the weekly news quiz - how closely have y...\n", - " http://www.bbc.co.uk/news/world-69340211\n", - " https://ichef.bbci.co.uk/news/1024/branded_new...\n", + " 1232\n", + " BBC News - BBC iPlayer\n", + " 2024-08-02\n", + " None\n", + " None\n", + " None\n", + " JavaScript seems to be disabled. Please enable...\n", + " http://www.bbc.co.uk/news/10318089\n", + " \n", " \n", " \n", "\n", "" ], "text/plain": [ - " title published_date \\\n", - "0 Americast - Profile: Who is Donald Trump? (Par... 2024-09-01 \n", - "1 Newscast - Keir Diary… A Week in the Life of t... 2024-09-01 \n", - "2 Americast - The Harris VS Trump Debate... and ... 2024-09-11 \n", - "3 Americast - The Harris VS Trump Debate... and ... 2024-09-12 \n", - "4 Quiz of the week: Who blew out the Paralympic ... 2024-09-12 \n", + " title published_date \\\n", + "2662 Laura Whitmore: I was gaslighted after raising... 2024-08-04 \n", + "1865 Errollyn Wallen appointed as Master of the Kin... 2024-08-25 \n", + "2554 SDLP: Matthew O'Toole endorses Claire Hanna fo... 2024-08-30 \n", + "1338 Rotherham rioters among those jailed - BBC News 2024-08-20 \n", + "1232 BBC News - BBC iPlayer 2024-08-02 \n", "\n", - " authors \\\n", - "0 None \n", - "1 None \n", - "2 None \n", - "3 None \n", - "4 https://www.facebook.com/bbcnews \n", + " authors \\\n", + "2662 https://www.facebook.com/bbcnews \n", + "1865 https://www.facebook.com/bbcnews \n", + "2554 https://www.facebook.com/bbcnews \n", + "1338 https://www.facebook.com/bbcnews \n", + "1232 None \n", "\n", - " description section \\\n", - "0 How the man became The Donald None \n", - "1 Recapping a busy week for Sir Keir Starmer. None \n", - "2 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", - "3 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", - "4 Test how closely you've been paying attention ... World \n", + " description \\\n", + "2662 The former Love Island host said that things s... \n", + "1865 She is best known for her work on the 2012 Par... \n", + "2554 Matthew O'Toole had been named by some as a po... \n", + "1338 Two men who were part of a mob targeting a Hol... \n", + "1232 None \n", "\n", - " content \\\n", - "0 Americanswers! Do Harris/Trump actually need A... \n", - "1 The Riots, The Police and Social Media\\n\\nAdam... \n", - "2 The Harris VS Trump Debate... and a Taylor Swi... \n", - "3 The Harris VS Trump Debate... and a Taylor Swi... \n", - "4 It's the weekly news quiz - how closely have y... \n", + " section \\\n", + "2662 Culture \n", + "1865 Culture \n", + "2554 Northern Ireland Politics \n", + "1338 South Yorkshire \n", + "1232 None \n", "\n", - " link \\\n", - "0 http://www.bbc.co.uk/sounds/play/p0jmwg24 \n", - "1 http://www.bbc.co.uk/sounds/play/m0022js5 \n", - "2 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", - "3 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", - "4 http://www.bbc.co.uk/news/world-69340211 \n", + " content \\\n", + "2662 Television presenter Laura Whitmore has said t... \n", + "1865 Celebrated composer and singer-songwriter Erro... \n", + "2554 Matthew O'Toole leads his party's official opp... \n", + "1338 Rotherham pair among those jailed for UK rioti... \n", + "1232 JavaScript seems to be disabled. Please enable... \n", "\n", - " top_image \n", - "0 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "1 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "2 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "3 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "4 https://ichef.bbci.co.uk/news/1024/branded_new... " + " link \\\n", + "2662 http://www.bbc.co.uk/news/articles/c9wvwvzm7x7o \n", + "1865 http://www.bbc.co.uk/news/articles/c4gl758g7zgo \n", + "2554 http://www.bbc.co.uk/news/articles/cvg41j7xrzdo \n", + "1338 http://www.bbc.co.uk/news/articles/cwywggd7qw6o \n", + "1232 http://www.bbc.co.uk/news/10318089 \n", + "\n", + " top_image \n", + "2662 https://ichef.bbci.co.uk/ace/standard/2560/cps... \n", + "1865 https://ichef.bbci.co.uk/ace/standard/2560/cps... \n", + "2554 https://ichef.bbci.co.uk/ace/standard/3840/cps... \n", + "1338 https://ichef.bbci.co.uk/ace/standard/2560/cps... \n", + "1232 " ] }, - "execution_count": 2, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "ds = load_dataset(\"RealTimeData/bbc_news_alltime\", \"2024-09\")\n", - "df = pd.DataFrame(ds['train'])\n", + "ds = load_dataset(\"RealTimeData/bbc_news_alltime\", \"2024-08\")\n", + "df = pd.DataFrame(ds['train']).sample(n=100, random_state=1)\n", "df.head()" ] }, @@ -217,7 +224,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -233,12 +240,12 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "meta_prompt = \"\"\"\n", - "Improve the following prompt to generate a more detailed summary. \n", + "Improve the following prompt to generate a more detailed sumary. \n", "Adhere to prompt engineering best practices. \n", "Make sure the structure is clear and intuitive and contains the type of news, tags and sentiment analysis.\n", "\n", @@ -250,16 +257,16 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'Please read the following news article and produce a detailed summary with the following structure:\\n\\n1. **Type of News**: Identify the category or domain of the news article (e.g., Politics, Technology, Sports, etc.).\\n\\n2. **Summary**: Provide a comprehensive and detailed summary of the article, highlighting the main points and key details.\\n\\n3. **Tags**: List relevant keywords or tags associated with the content of the article.\\n\\n4. **Sentiment Analysis**: Determine the overall sentiment of the article (Positive, Negative, Neutral) and provide a brief explanation for your assessment.\\n\\nHere is the article:\\n\\n{article}'" + "'Please read the following news article and provide a comprehensive summary that includes:\\n\\n1. **Type of News**: Specify the category of the news article (e.g., Politics, Technology, Health, Sports, etc.).\\n2. **Summary**: Write a concise and clear summary of the main points, ensuring the structure is logical and intuitive.\\n3. **Tags**: List relevant keywords or tags associated with the article.\\n4. **Sentiment Analysis**: Analyze the overall sentiment of the article (positive, negative, or neutral) and briefly explain your reasoning.\\n\\n**Article:**\\n\\n{article}'" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -288,7 +295,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -312,17 +319,17 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "('The article discusses the ongoing debates surrounding the necessity of extensive policy agendas for political candidates like Kamala Harris and Donald Trump in the lead-up to the election. It explores whether voters prioritize well-defined policies or if charisma, personality, and other factors play a more significant role in their decision-making process. Expert opinions and voter sentiments are examined, revealing insights into how much impact concrete policies have compared to broader campaign themes and messages. The article emphasizes the complexities of voter preferences and the evolving nature of political campaigns in contemporary America.',\n", - " '1. **Type of News**: Politics\\n\\n2. **Summary**: The article titled “Americanswers! Do Harris/Trump actually need ANY policies?” addresses the significant issues in the lead-up to the upcoming election, specifically focusing on the political strategies of two prominent figures: Kamala Harris and Donald Trump. It engages with the question of whether these politicians are required to present concrete policies to their constituents or if they can succeed through rhetoric and public persona alone. The article explores voter expectations, the effectiveness of policy proposals versus emotional appeal, and the broader implications of policy-focused versus personality-driven campaigns in contemporary American politics. It highlights how the political landscape has shifted, asking readers to reflect on what they truly want from their leaders as the election approaches.\\n\\n3. **Tags**: Politics, Election 2024, Kamala Harris, Donald Trump, Political Strategies, Policy Discussion\\n\\n4. **Sentiment Analysis**: Neutral. The article does not express a strong positive or negative sentiment toward the political figures discussed or the broader topic of policy need in campaigns. Instead, it presents an analytical perspective, encouraging readers to think critically about the role of policies versus personality in politics.')" + "('Television presenter Laura Whitmore has shared that the issues she attempted to address during her time on *Strictly Come Dancing* eight years ago are now surfacing, stating that she experienced \"gaslighting\" that made her concerns seem normalized. In a recent interview, she expressed the difficulties she faced, including being portrayed negatively and feeling \"broken\" during the competition. Whitmore indicated that she raised concerns about inappropriate behavior and is currently providing evidence for a BBC investigation, although she has not made an official complaint herself. The BBC is facing allegations of mistreatment towards contestants, prompting them to announce new welfare measures, including the presence of a chaperone during rehearsals. Other celebrities participating in the show have also made allegations against professional dancers, leading to growing scrutiny around conditions on the show. The BBC emphasized that it takes complaints very seriously and is committed to updating its support processes.',\n", + " '1. **Type of News**: Entertainment\\n\\n2. **Summary**: Laura Whitmore, a television presenter, has spoken out about her experiences on Strictly Come Dancing, revealing that issues she attempted to address during her tenure on the show are now coming to light. In an interview with The Irish Times, she described feeling \"gaslit\" and suggested that her concerns, which she raised eight years ago, were not taken seriously at the time. Whitmore recalled that her participation left her feeling \"broken\" and criticized how she was portrayed during the show. She mentioned contributing evidence to an ongoing review involving incidents of alleged inappropriate behavior during her time on the show, although she did not make an official complaint. The BBC, which has been navigating its own controversy related to the treatment of contestants, stated it is taking these claims seriously and plans to enhance welfare measures on the show, including the introduction of a chaperone at rehearsals. Recent allegations from other contestants have further intensified the scrutiny of Strictly Come Dancing.\\n\\n3. **Tags**: Laura Whitmore, Strictly Come Dancing, BBC, allegations, inappropriate behavior, gaslighting, welfare measures, entertainment controversy\\n\\n4. **Sentiment Analysis**: The overall sentiment of the article is negative. It highlights serious allegations of mistreatment and inappropriate behavior associated with a popular television show, along with personal accounts from Whitmore that reflect emotional distress and professional struggles. The tone conveys a sense of urgency and seriousness regarding the issues raised, indicating a critical atmosphere within the entertainment industry related to contestant treatment.')" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -342,14 +349,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Generating Itineraries: 100%|██████████| 59/59 [00:26<00:00, 2.24it/s]\n" + "Generating Itineraries: 100%|██████████| 100/100 [00:50<00:00, 1.98it/s]\n" ] }, { @@ -387,133 +394,140 @@ " \n", " \n", " \n", - " 0\n", - " Americast - Profile: Who is Donald Trump? (Par...\n", - " 2024-09-01\n", - " None\n", - " How the man became The Donald\n", - " None\n", - " Americanswers! Do Harris/Trump actually need A...\n", - " http://www.bbc.co.uk/sounds/play/p0jmwg24\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", - " The article titled \"Americanswers! Do Harris/T...\n", - " 1. **Type of News**: Politics\\n\\n2. **Summary*...\n", + " 2662\n", + " Laura Whitmore: I was gaslighted after raising...\n", + " 2024-08-04\n", + " https://www.facebook.com/bbcnews\n", + " The former Love Island host said that things s...\n", + " Culture\n", + " Television presenter Laura Whitmore has said t...\n", + " http://www.bbc.co.uk/news/articles/c9wvwvzm7x7o\n", + " https://ichef.bbci.co.uk/ace/standard/2560/cps...\n", + " Television presenter Laura Whitmore has spoken...\n", + " 1. **Type of News**: Entertainment/Television\\...\n", " \n", " \n", - " 1\n", - " Newscast - Keir Diary… A Week in the Life of t...\n", - " 2024-09-01\n", - " None\n", - " Recapping a busy week for Sir Keir Starmer.\n", - " None\n", - " The Riots, The Police and Social Media\\n\\nAdam...\n", - " http://www.bbc.co.uk/sounds/play/m0022js5\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", - " In the article \"The Riots, The Police and Soci...\n", - " 1. **Type of News**: Politics / Social Issues\\...\n", + " 1865\n", + " Errollyn Wallen appointed as Master of the Kin...\n", + " 2024-08-25\n", + " https://www.facebook.com/bbcnews\n", + " She is best known for her work on the 2012 Par...\n", + " Culture\n", + " Celebrated composer and singer-songwriter Erro...\n", + " http://www.bbc.co.uk/news/articles/c4gl758g7zgo\n", + " https://ichef.bbci.co.uk/ace/standard/2560/cps...\n", + " Errollyn Wallen has been appointed Master of t...\n", + " 1. **Type of News**: Arts/Music\\n\\n2. **Summar...\n", " \n", " \n", - " 2\n", - " Americast - The Harris VS Trump Debate... and ...\n", - " 2024-09-11\n", - " None\n", - " And why is \"THEY'RE EATING THE DOGS\" trending ...\n", - " None\n", - " The Harris VS Trump Debate... and a Taylor Swi...\n", - " http://www.bbc.co.uk/sounds/play/p0jpskr7\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", - " The article discusses a debate between Vice Pr...\n", - " 1. **Type of News**: Politics / Entertainment\\...\n", + " 2554\n", + " SDLP: Matthew O'Toole endorses Claire Hanna fo...\n", + " 2024-08-30\n", + " https://www.facebook.com/bbcnews\n", + " Matthew O'Toole had been named by some as a po...\n", + " Northern Ireland Politics\n", + " Matthew O'Toole leads his party's official opp...\n", + " http://www.bbc.co.uk/news/articles/cvg41j7xrzdo\n", + " https://ichef.bbci.co.uk/ace/standard/3840/cps...\n", + " Matthew O'Toole, the leader of the official op...\n", + " 1. **Type of News**: Politics\\n\\n2. **Summary*...\n", " \n", " \n", - " 3\n", - " Americast - The Harris VS Trump Debate... and ...\n", - " 2024-09-12\n", - " None\n", - " And why is \"THEY'RE EATING THE DOGS\" trending ...\n", - " None\n", - " The Harris VS Trump Debate... and a Taylor Swi...\n", - " http://www.bbc.co.uk/sounds/play/p0jpskr7\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", - " In a recent debate, Vice President Kamala Harr...\n", - " 1. **Type of News**: Politics/Entertainment\\n\\...\n", + " 1338\n", + " Rotherham rioters among those jailed - BBC News\n", + " 2024-08-20\n", + " https://www.facebook.com/bbcnews\n", + " Two men who were part of a mob targeting a Hol...\n", + " South Yorkshire\n", + " Rotherham pair among those jailed for UK rioti...\n", + " http://www.bbc.co.uk/news/articles/cwywggd7qw6o\n", + " https://ichef.bbci.co.uk/ace/standard/2560/cps...\n", + " Two men, Nathan Palmer (29) and Niven Matthewm...\n", + " 1. **Type of News**: Politics / Crime and Just...\n", " \n", " \n", - " 4\n", - " Quiz of the week: Who blew out the Paralympic ...\n", - " 2024-09-12\n", - " https://www.facebook.com/bbcnews\n", - " Test how closely you've been paying attention ...\n", - " World\n", - " It's the weekly news quiz - how closely have y...\n", - " http://www.bbc.co.uk/news/world-69340211\n", - " https://ichef.bbci.co.uk/news/1024/branded_new...\n", - " The article introduces a weekly news quiz desi...\n", - " 1. **Type of News**: General News / Media / En...\n", + " 1232\n", + " BBC News - BBC iPlayer\n", + " 2024-08-02\n", + " None\n", + " None\n", + " None\n", + " JavaScript seems to be disabled. Please enable...\n", + " http://www.bbc.co.uk/news/10318089\n", + " \n", + " The article discusses the need to enable JavaS...\n", + " I cannot provide a summary of the article as t...\n", " \n", " \n", "\n", "" ], "text/plain": [ - " title published_date \\\n", - "0 Americast - Profile: Who is Donald Trump? (Par... 2024-09-01 \n", - "1 Newscast - Keir Diary… A Week in the Life of t... 2024-09-01 \n", - "2 Americast - The Harris VS Trump Debate... and ... 2024-09-11 \n", - "3 Americast - The Harris VS Trump Debate... and ... 2024-09-12 \n", - "4 Quiz of the week: Who blew out the Paralympic ... 2024-09-12 \n", + " title published_date \\\n", + "2662 Laura Whitmore: I was gaslighted after raising... 2024-08-04 \n", + "1865 Errollyn Wallen appointed as Master of the Kin... 2024-08-25 \n", + "2554 SDLP: Matthew O'Toole endorses Claire Hanna fo... 2024-08-30 \n", + "1338 Rotherham rioters among those jailed - BBC News 2024-08-20 \n", + "1232 BBC News - BBC iPlayer 2024-08-02 \n", + "\n", + " authors \\\n", + "2662 https://www.facebook.com/bbcnews \n", + "1865 https://www.facebook.com/bbcnews \n", + "2554 https://www.facebook.com/bbcnews \n", + "1338 https://www.facebook.com/bbcnews \n", + "1232 None \n", "\n", - " authors \\\n", - "0 None \n", - "1 None \n", - "2 None \n", - "3 None \n", - "4 https://www.facebook.com/bbcnews \n", + " description \\\n", + "2662 The former Love Island host said that things s... \n", + "1865 She is best known for her work on the 2012 Par... \n", + "2554 Matthew O'Toole had been named by some as a po... \n", + "1338 Two men who were part of a mob targeting a Hol... \n", + "1232 None \n", "\n", - " description section \\\n", - "0 How the man became The Donald None \n", - "1 Recapping a busy week for Sir Keir Starmer. None \n", - "2 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", - "3 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", - "4 Test how closely you've been paying attention ... World \n", + " section \\\n", + "2662 Culture \n", + "1865 Culture \n", + "2554 Northern Ireland Politics \n", + "1338 South Yorkshire \n", + "1232 None \n", "\n", - " content \\\n", - "0 Americanswers! Do Harris/Trump actually need A... \n", - "1 The Riots, The Police and Social Media\\n\\nAdam... \n", - "2 The Harris VS Trump Debate... and a Taylor Swi... \n", - "3 The Harris VS Trump Debate... and a Taylor Swi... \n", - "4 It's the weekly news quiz - how closely have y... \n", + " content \\\n", + "2662 Television presenter Laura Whitmore has said t... \n", + "1865 Celebrated composer and singer-songwriter Erro... \n", + "2554 Matthew O'Toole leads his party's official opp... \n", + "1338 Rotherham pair among those jailed for UK rioti... \n", + "1232 JavaScript seems to be disabled. Please enable... \n", "\n", - " link \\\n", - "0 http://www.bbc.co.uk/sounds/play/p0jmwg24 \n", - "1 http://www.bbc.co.uk/sounds/play/m0022js5 \n", - "2 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", - "3 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", - "4 http://www.bbc.co.uk/news/world-69340211 \n", + " link \\\n", + "2662 http://www.bbc.co.uk/news/articles/c9wvwvzm7x7o \n", + "1865 http://www.bbc.co.uk/news/articles/c4gl758g7zgo \n", + "2554 http://www.bbc.co.uk/news/articles/cvg41j7xrzdo \n", + "1338 http://www.bbc.co.uk/news/articles/cwywggd7qw6o \n", + "1232 http://www.bbc.co.uk/news/10318089 \n", "\n", - " top_image \\\n", - "0 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "1 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "2 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "3 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "4 https://ichef.bbci.co.uk/news/1024/branded_new... \n", + " top_image \\\n", + "2662 https://ichef.bbci.co.uk/ace/standard/2560/cps... \n", + "1865 https://ichef.bbci.co.uk/ace/standard/2560/cps... \n", + "2554 https://ichef.bbci.co.uk/ace/standard/3840/cps... \n", + "1338 https://ichef.bbci.co.uk/ace/standard/2560/cps... \n", + "1232 \n", "\n", - " simple_summary \\\n", - "0 The article titled \"Americanswers! Do Harris/T... \n", - "1 In the article \"The Riots, The Police and Soci... \n", - "2 The article discusses a debate between Vice Pr... \n", - "3 In a recent debate, Vice President Kamala Harr... \n", - "4 The article introduces a weekly news quiz desi... \n", + " simple_summary \\\n", + "2662 Television presenter Laura Whitmore has spoken... \n", + "1865 Errollyn Wallen has been appointed Master of t... \n", + "2554 Matthew O'Toole, the leader of the official op... \n", + "1338 Two men, Nathan Palmer (29) and Niven Matthewm... \n", + "1232 The article discusses the need to enable JavaS... \n", "\n", - " complex_summary \n", - "0 1. **Type of News**: Politics\\n\\n2. **Summary*... \n", - "1 1. **Type of News**: Politics / Social Issues\\... \n", - "2 1. **Type of News**: Politics / Entertainment\\... \n", - "3 1. **Type of News**: Politics/Entertainment\\n\\... \n", - "4 1. **Type of News**: General News / Media / En... " + " complex_summary \n", + "2662 1. **Type of News**: Entertainment/Television\\... \n", + "1865 1. **Type of News**: Arts/Music\\n\\n2. **Summar... \n", + "2554 1. **Type of News**: Politics\\n\\n2. **Summary*... \n", + "1338 1. **Type of News**: Politics / Crime and Just... \n", + "1232 I cannot provide a summary of the article as t... " ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -553,7 +567,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -598,14 +612,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Evaluating Summaries: 100%|██████████| 59/59 [00:46<00:00, 1.27it/s]\n" + "Evaluating Summaries: 100%|██████████| 100/100 [01:42<00:00, 1.02s/it]\n" ] }, { @@ -645,157 +659,164 @@ " \n", " \n", " \n", - " 0\n", - " Americast - Profile: Who is Donald Trump? (Par...\n", - " 2024-09-01\n", - " None\n", - " How the man became The Donald\n", - " None\n", - " Americanswers! Do Harris/Trump actually need A...\n", - " http://www.bbc.co.uk/sounds/play/p0jmwg24\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", - " The article titled \"Americanswers! Do Harris/T...\n", - " 1. **Type of News**: Politics\\n\\n2. **Summary*...\n", + " 2662\n", + " Laura Whitmore: I was gaslighted after raising...\n", + " 2024-08-04\n", + " https://www.facebook.com/bbcnews\n", + " The former Love Island host said that things s...\n", + " Culture\n", + " Television presenter Laura Whitmore has said t...\n", + " http://www.bbc.co.uk/news/articles/c9wvwvzm7x7o\n", + " https://ichef.bbci.co.uk/ace/standard/2560/cps...\n", + " Television presenter Laura Whitmore has spoken...\n", + " 1. **Type of News**: Entertainment/Television\\...\n", " categorization=4 keyword_extraction=3 sentimen...\n", " categorization=5 keyword_extraction=5 sentimen...\n", " \n", " \n", - " 1\n", - " Newscast - Keir Diary… A Week in the Life of t...\n", - " 2024-09-01\n", - " None\n", - " Recapping a busy week for Sir Keir Starmer.\n", - " None\n", - " The Riots, The Police and Social Media\\n\\nAdam...\n", - " http://www.bbc.co.uk/sounds/play/m0022js5\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", - " In the article \"The Riots, The Police and Soci...\n", - " 1. **Type of News**: Politics / Social Issues\\...\n", - " categorization=4 keyword_extraction=5 sentimen...\n", + " 1865\n", + " Errollyn Wallen appointed as Master of the Kin...\n", + " 2024-08-25\n", + " https://www.facebook.com/bbcnews\n", + " She is best known for her work on the 2012 Par...\n", + " Culture\n", + " Celebrated composer and singer-songwriter Erro...\n", + " http://www.bbc.co.uk/news/articles/c4gl758g7zgo\n", + " https://ichef.bbci.co.uk/ace/standard/2560/cps...\n", + " Errollyn Wallen has been appointed Master of t...\n", + " 1. **Type of News**: Arts/Music\\n\\n2. **Summar...\n", + " categorization=4 keyword_extraction=4 sentimen...\n", " categorization=5 keyword_extraction=5 sentimen...\n", " \n", " \n", - " 2\n", - " Americast - The Harris VS Trump Debate... and ...\n", - " 2024-09-11\n", - " None\n", - " And why is \"THEY'RE EATING THE DOGS\" trending ...\n", - " None\n", - " The Harris VS Trump Debate... and a Taylor Swi...\n", - " http://www.bbc.co.uk/sounds/play/p0jpskr7\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", - " The article discusses a debate between Vice Pr...\n", - " 1. **Type of News**: Politics / Entertainment\\...\n", + " 2554\n", + " SDLP: Matthew O'Toole endorses Claire Hanna fo...\n", + " 2024-08-30\n", + " https://www.facebook.com/bbcnews\n", + " Matthew O'Toole had been named by some as a po...\n", + " Northern Ireland Politics\n", + " Matthew O'Toole leads his party's official opp...\n", + " http://www.bbc.co.uk/news/articles/cvg41j7xrzdo\n", + " https://ichef.bbci.co.uk/ace/standard/3840/cps...\n", + " Matthew O'Toole, the leader of the official op...\n", + " 1. **Type of News**: Politics\\n\\n2. **Summary*...\n", " categorization=5 keyword_extraction=4 sentimen...\n", " categorization=5 keyword_extraction=5 sentimen...\n", " \n", " \n", - " 3\n", - " Americast - The Harris VS Trump Debate... and ...\n", - " 2024-09-12\n", - " None\n", - " And why is \"THEY'RE EATING THE DOGS\" trending ...\n", - " None\n", - " The Harris VS Trump Debate... and a Taylor Swi...\n", - " http://www.bbc.co.uk/sounds/play/p0jpskr7\n", - " https://ichef.bbci.co.uk/images/ic/320x320/p0j...\n", - " In a recent debate, Vice President Kamala Harr...\n", - " 1. **Type of News**: Politics/Entertainment\\n\\...\n", - " categorization=4 keyword_extraction=4 sentimen...\n", - " categorization=5 keyword_extraction=5 sentimen...\n", + " 1338\n", + " Rotherham rioters among those jailed - BBC News\n", + " 2024-08-20\n", + " https://www.facebook.com/bbcnews\n", + " Two men who were part of a mob targeting a Hol...\n", + " South Yorkshire\n", + " Rotherham pair among those jailed for UK rioti...\n", + " http://www.bbc.co.uk/news/articles/cwywggd7qw6o\n", + " https://ichef.bbci.co.uk/ace/standard/2560/cps...\n", + " Two men, Nathan Palmer (29) and Niven Matthewm...\n", + " 1. **Type of News**: Politics / Crime and Just...\n", + " categorization=3 keyword_extraction=3 sentimen...\n", + " categorization=5 keyword_extraction=4 sentimen...\n", " \n", " \n", - " 4\n", - " Quiz of the week: Who blew out the Paralympic ...\n", - " 2024-09-12\n", - " https://www.facebook.com/bbcnews\n", - " Test how closely you've been paying attention ...\n", - " World\n", - " It's the weekly news quiz - how closely have y...\n", - " http://www.bbc.co.uk/news/world-69340211\n", - " https://ichef.bbci.co.uk/news/1024/branded_new...\n", - " The article introduces a weekly news quiz desi...\n", - " 1. **Type of News**: General News / Media / En...\n", + " 1232\n", + " BBC News - BBC iPlayer\n", + " 2024-08-02\n", + " None\n", + " None\n", + " None\n", + " JavaScript seems to be disabled. Please enable...\n", + " http://www.bbc.co.uk/news/10318089\n", + " \n", + " The article discusses the need to enable JavaS...\n", + " I cannot provide a summary of the article as t...\n", " categorization=2 keyword_extraction=3 sentimen...\n", - " categorization=5 keyword_extraction=4 sentimen...\n", + " categorization=1 keyword_extraction=1 sentimen...\n", " \n", " \n", "\n", "" ], "text/plain": [ - " title published_date \\\n", - "0 Americast - Profile: Who is Donald Trump? (Par... 2024-09-01 \n", - "1 Newscast - Keir Diary… A Week in the Life of t... 2024-09-01 \n", - "2 Americast - The Harris VS Trump Debate... and ... 2024-09-11 \n", - "3 Americast - The Harris VS Trump Debate... and ... 2024-09-12 \n", - "4 Quiz of the week: Who blew out the Paralympic ... 2024-09-12 \n", + " title published_date \\\n", + "2662 Laura Whitmore: I was gaslighted after raising... 2024-08-04 \n", + "1865 Errollyn Wallen appointed as Master of the Kin... 2024-08-25 \n", + "2554 SDLP: Matthew O'Toole endorses Claire Hanna fo... 2024-08-30 \n", + "1338 Rotherham rioters among those jailed - BBC News 2024-08-20 \n", + "1232 BBC News - BBC iPlayer 2024-08-02 \n", "\n", - " authors \\\n", - "0 None \n", - "1 None \n", - "2 None \n", - "3 None \n", - "4 https://www.facebook.com/bbcnews \n", + " authors \\\n", + "2662 https://www.facebook.com/bbcnews \n", + "1865 https://www.facebook.com/bbcnews \n", + "2554 https://www.facebook.com/bbcnews \n", + "1338 https://www.facebook.com/bbcnews \n", + "1232 None \n", "\n", - " description section \\\n", - "0 How the man became The Donald None \n", - "1 Recapping a busy week for Sir Keir Starmer. None \n", - "2 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", - "3 And why is \"THEY'RE EATING THE DOGS\" trending ... None \n", - "4 Test how closely you've been paying attention ... World \n", + " description \\\n", + "2662 The former Love Island host said that things s... \n", + "1865 She is best known for her work on the 2012 Par... \n", + "2554 Matthew O'Toole had been named by some as a po... \n", + "1338 Two men who were part of a mob targeting a Hol... \n", + "1232 None \n", "\n", - " content \\\n", - "0 Americanswers! Do Harris/Trump actually need A... \n", - "1 The Riots, The Police and Social Media\\n\\nAdam... \n", - "2 The Harris VS Trump Debate... and a Taylor Swi... \n", - "3 The Harris VS Trump Debate... and a Taylor Swi... \n", - "4 It's the weekly news quiz - how closely have y... \n", + " section \\\n", + "2662 Culture \n", + "1865 Culture \n", + "2554 Northern Ireland Politics \n", + "1338 South Yorkshire \n", + "1232 None \n", "\n", - " link \\\n", - "0 http://www.bbc.co.uk/sounds/play/p0jmwg24 \n", - "1 http://www.bbc.co.uk/sounds/play/m0022js5 \n", - "2 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", - "3 http://www.bbc.co.uk/sounds/play/p0jpskr7 \n", - "4 http://www.bbc.co.uk/news/world-69340211 \n", + " content \\\n", + "2662 Television presenter Laura Whitmore has said t... \n", + "1865 Celebrated composer and singer-songwriter Erro... \n", + "2554 Matthew O'Toole leads his party's official opp... \n", + "1338 Rotherham pair among those jailed for UK rioti... \n", + "1232 JavaScript seems to be disabled. Please enable... \n", "\n", - " top_image \\\n", - "0 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "1 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "2 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "3 https://ichef.bbci.co.uk/images/ic/320x320/p0j... \n", - "4 https://ichef.bbci.co.uk/news/1024/branded_new... \n", + " link \\\n", + "2662 http://www.bbc.co.uk/news/articles/c9wvwvzm7x7o \n", + "1865 http://www.bbc.co.uk/news/articles/c4gl758g7zgo \n", + "2554 http://www.bbc.co.uk/news/articles/cvg41j7xrzdo \n", + "1338 http://www.bbc.co.uk/news/articles/cwywggd7qw6o \n", + "1232 http://www.bbc.co.uk/news/10318089 \n", "\n", - " simple_summary \\\n", - "0 The article titled \"Americanswers! Do Harris/T... \n", - "1 In the article \"The Riots, The Police and Soci... \n", - "2 The article discusses a debate between Vice Pr... \n", - "3 In a recent debate, Vice President Kamala Harr... \n", - "4 The article introduces a weekly news quiz desi... \n", + " top_image \\\n", + "2662 https://ichef.bbci.co.uk/ace/standard/2560/cps... \n", + "1865 https://ichef.bbci.co.uk/ace/standard/2560/cps... \n", + "2554 https://ichef.bbci.co.uk/ace/standard/3840/cps... \n", + "1338 https://ichef.bbci.co.uk/ace/standard/2560/cps... \n", + "1232 \n", "\n", - " complex_summary \\\n", - "0 1. **Type of News**: Politics\\n\\n2. **Summary*... \n", - "1 1. **Type of News**: Politics / Social Issues\\... \n", - "2 1. **Type of News**: Politics / Entertainment\\... \n", - "3 1. **Type of News**: Politics/Entertainment\\n\\... \n", - "4 1. **Type of News**: General News / Media / En... \n", + " simple_summary \\\n", + "2662 Television presenter Laura Whitmore has spoken... \n", + "1865 Errollyn Wallen has been appointed Master of t... \n", + "2554 Matthew O'Toole, the leader of the official op... \n", + "1338 Two men, Nathan Palmer (29) and Niven Matthewm... \n", + "1232 The article discusses the need to enable JavaS... \n", "\n", - " simple_evaluation \\\n", - "0 categorization=4 keyword_extraction=3 sentimen... \n", - "1 categorization=4 keyword_extraction=5 sentimen... \n", - "2 categorization=5 keyword_extraction=4 sentimen... \n", - "3 categorization=4 keyword_extraction=4 sentimen... \n", - "4 categorization=2 keyword_extraction=3 sentimen... \n", + " complex_summary \\\n", + "2662 1. **Type of News**: Entertainment/Television\\... \n", + "1865 1. **Type of News**: Arts/Music\\n\\n2. **Summar... \n", + "2554 1. **Type of News**: Politics\\n\\n2. **Summary*... \n", + "1338 1. **Type of News**: Politics / Crime and Just... \n", + "1232 I cannot provide a summary of the article as t... \n", "\n", - " complex_evaluation \n", - "0 categorization=5 keyword_extraction=5 sentimen... \n", - "1 categorization=5 keyword_extraction=5 sentimen... \n", - "2 categorization=5 keyword_extraction=5 sentimen... \n", - "3 categorization=5 keyword_extraction=5 sentimen... \n", - "4 categorization=5 keyword_extraction=4 sentimen... " + " simple_evaluation \\\n", + "2662 categorization=4 keyword_extraction=3 sentimen... \n", + "1865 categorization=4 keyword_extraction=4 sentimen... \n", + "2554 categorization=5 keyword_extraction=4 sentimen... \n", + "1338 categorization=3 keyword_extraction=3 sentimen... \n", + "1232 categorization=2 keyword_extraction=3 sentimen... \n", + "\n", + " complex_evaluation \n", + "2662 categorization=5 keyword_extraction=5 sentimen... \n", + "1865 categorization=5 keyword_extraction=5 sentimen... \n", + "2554 categorization=5 keyword_extraction=5 sentimen... \n", + "1338 categorization=5 keyword_extraction=4 sentimen... \n", + "1232 categorization=1 keyword_extraction=1 sentimen... " ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -837,12 +858,12 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -875,8 +896,8 @@ "# Prepare data for plotting\n", "avg_scores_df = pd.DataFrame({\n", " 'Criteria': criteria,\n", - " 'Simple Prompt': simple_avg_scores,\n", - " 'Complex Prompt': complex_avg_scores\n", + " 'Original Prompt': simple_avg_scores,\n", + " 'Improved Prompt': complex_avg_scores\n", "})\n", "\n", "# Plotting\n",