diff --git a/examples/evaluation/How_to_evaluate_LLMs_for_SQL_generation.ipynb b/examples/evaluation/How_to_evaluate_LLMs_for_SQL_generation.ipynb index 7b0ede1..de568db 100644 --- a/examples/evaluation/How_to_evaluate_LLMs_for_SQL_generation.ipynb +++ b/examples/evaluation/How_to_evaluate_LLMs_for_SQL_generation.ipynb @@ -7,9 +7,9 @@ "source": [ "# How to test and evaluate LLMs for SQL generation\n", "\n", - "LLMs are fundamentatlly non-deterministic in their responses, this attribute makes them wonderfully creative and dynamic in their responses. However, this trait poses significant challenges in achieving consistency, a crucial aspect for integrating LLMs into production environments.\n", + "LLMs are fundamentally non-deterministic in their responses, this attribute makes them wonderfully creative and dynamic in their responses. However, this trait poses significant challenges in achieving consistency, a crucial aspect for integrating LLMs into production environments.\n", "\n", - "The key to harnessing the potential of LLMs in practical applications lies in consistent and systematic evaluation. This enables the identification and rectification of inconsistencies and helps in monitoring progress over time as the application evolves.\n", + "The key to harnessing the potential of LLMs in practical applications lies in consistent and systematic evaluation. This enables the identification and rectification of inconsistencies and helps with monitoring progress over time as the application evolves.\n", "\n", "## Scope of this notebook\n", "\n", @@ -49,7 +49,18 @@ }, { "cell_type": "code", - "execution_count": 150, + "execution_count": 1, + "id": "c7f325fc", + "metadata": {}, + "outputs": [], + "source": [ + "# Uncomment this to install all necessary dependencies\n", + "# !pip install openai datasets pandas pydantic matplotlib python-dotenv numpy tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "245fcedb", "metadata": {}, "outputs": [ @@ -57,7 +68,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "cannot find .env file\n" + "78577 rows\n" ] } ], @@ -73,13 +84,17 @@ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from dotenv import load_dotenv\n", + "from tqdm.notebook import tqdm\n", + "from IPython.display import HTML, display\n", "\n", "# Loads key from local .env file to setup API KEY in env variables\n", "%reload_ext dotenv\n", "%dotenv\n", " \n", "GPT_MODEL = 'gpt-4o'\n", - "dataset = load_dataset(\"b-mc2/sql-create-context\")" + "dataset = load_dataset(\"b-mc2/sql-create-context\")\n", + "\n", + "print(dataset['train'].num_rows, \"rows\")" ] }, { @@ -102,7 +117,7 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 3, "id": "f8027115", "metadata": {}, "outputs": [ @@ -190,7 +205,7 @@ "4 CREATE TABLE department (num_employees INTEGER... " ] }, - "execution_count": 151, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -205,10 +220,9 @@ "id": "b04cb5eb", "metadata": {}, "source": [ - "\n", "## Test development\n", "\n", - "To test to output of the LLM generations, we'll develop two unit tests and an evaluation, which will combine to give us a basic evaluation framework to grade the quality of our LLM iterations.\n", + "To test the output of the LLM generations, we'll develop two unit tests and an evaluation, which will combine to give us a basic evaluation framework to grade the quality of our LLM iterations.\n", "\n", "To re-iterate, our purpose is to measure the correctness and consistency of LLM output given our questions.\n", "\n", @@ -223,7 +237,7 @@ }, { "cell_type": "code", - "execution_count": 152, + "execution_count": 4, "id": "eb811101", "metadata": {}, "outputs": [], @@ -232,7 +246,10 @@ "\n", "\n", "class LLMResponse(BaseModel):\n", - " \"\"\"This simple Class expects to receive a JSON string that can be parsed into a `create` and `select` statement.\"\"\"\n", + " \"\"\"This is the structure that we expect the LLM to respond with.\n", + "\n", + " The LLM should respond with a JSON string with `create` and `select` fields.\n", + " \"\"\"\n", " create: str\n", " select: str" ] @@ -244,12 +261,12 @@ "source": [ "#### Prompt\n", "\n", - "For this demonstration purposes, we use a fairly simple prompt requesting GPT to generate a pair of context CREATE SQL and a answering SELECT SQL query. We supply the natural language question as part of the prompt. We request the response to be in JSON format, so that it can be parsed easily." + "For this demonstration purposes, we use a fairly simple prompt requesting GPT to generate a `(context, answer)` pair. `context` is the `CREATE` SQL statement, and `answer` is the `SELECT` SQL statement. We supply the natural language question as part of the prompt. We request the response to be in JSON format, so that it can be parsed easily." ] }, { "cell_type": "code", - "execution_count": 153, + "execution_count": 5, "id": "c2be3ba4", "metadata": {}, "outputs": [ @@ -269,12 +286,12 @@ "system_prompt = '''Translate this natural language request into a JSON object containing two SQL queries. \n", "The first query should be a CREATE statement for a table answering the user's request, while the second should be a SELECT query answering their question.'''\n", "\n", - "pprint(system_prompt)\n" + "pprint(system_prompt)" ] }, { "cell_type": "code", - "execution_count": 154, + "execution_count": 6, "id": "3a20d712", "metadata": {}, "outputs": [ @@ -298,13 +315,13 @@ "\n", "messages = []\n", "messages.append({\"role\": \"system\", \"content\": system_prompt})\n", - "messages.append({\"role\":\"user\",\"content\": sql_df.iloc[0]['question']})\n", + "messages.append({\"role\":\"user\", \"content\": sql_df.iloc[0]['question']})\n", "pprint(messages)" ] }, { "cell_type": "code", - "execution_count": 155, + "execution_count": 7, "id": "38b704b3-6f0e-4708-bc70-96723d69da6f", "metadata": {}, "outputs": [], @@ -312,9 +329,6 @@ "# Sending the message array to GPT, requesting a response (ensure that you have API key loaded to Env for this step)\n", "\n", "client = OpenAI()\n", - "# completion = client.chat.completions.create(model = GPT_MODEL, messages = messages)\n", - "\n", - "\n", "completion = client.beta.chat.completions.parse(\n", " model=GPT_MODEL,\n", " messages=messages,\n", @@ -336,7 +350,7 @@ }, { "cell_type": "code", - "execution_count": 156, + "execution_count": 8, "id": "2b057391-4f83-4b5a-8843-a9ee74bee871", "metadata": {}, "outputs": [ @@ -344,10 +358,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "('{\"create\":\"CREATE TABLE department_heads (\\\\n id INT PRIMARY KEY,\\\\n '\n", - " 'name VARCHAR(255),\\\\n age INT,\\\\n department '\n", - " 'VARCHAR(255)\\\\n);\",\"select\":\"SELECT COUNT(*) FROM department_heads WHERE age '\n", - " '> 56;\"}')\n" + "{\"create\":\"CREATE TABLE department_heads (\\n id INT PRIMARY KEY,\\n name VARCHAR(100),\\n age INT\\n);\",\"select\":\"SELECT COUNT(*) FROM department_heads WHERE age > 56;\"}\n" ] } ], @@ -355,7 +366,7 @@ "# Viewing the output from GPT\n", "\n", "content = completion.choices[0].message.content\n", - "pprint(content)" + "print(content)" ] }, { @@ -370,7 +381,7 @@ }, { "cell_type": "code", - "execution_count": 157, + "execution_count": 9, "id": "4c7133f1-74d6-43f1-9443-09a3f8308c35", "metadata": {}, "outputs": [], @@ -388,7 +399,7 @@ }, { "cell_type": "code", - "execution_count": 158, + "execution_count": 10, "id": "6a9a9128", "metadata": {}, "outputs": [ @@ -398,7 +409,7 @@ "True" ] }, - "execution_count": 158, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -419,7 +430,7 @@ }, { "cell_type": "code", - "execution_count": 159, + "execution_count": 11, "id": "a0a26690", "metadata": {}, "outputs": [ @@ -429,7 +440,7 @@ "text": [ "ERROR: Invalid schema: 1 validation error for LLMResponse\n", " Invalid JSON: expected value at line 1 column 1 [type=json_invalid, input_value='CREATE departments, select * from departments', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.8/v/json_invalid\n" + " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n" ] }, { @@ -438,7 +449,7 @@ "False" ] }, - "execution_count": 159, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -475,7 +486,7 @@ }, { "cell_type": "code", - "execution_count": 160, + "execution_count": 12, "id": "9cc95481", "metadata": {}, "outputs": [], @@ -518,51 +529,54 @@ }, { "cell_type": "code", - "execution_count": 161, + "execution_count": 13, "id": "c6d2573d", "metadata": {}, "outputs": [], "source": [ - "def test_select(conn, cursor, select):\n", + "def test_select(conn, cursor, select, should_log=True):\n", " \"\"\"Tests that a SQLite select query can be executed successfully.\"\"\"\n", " try:\n", - " print(f\"Testing select query: {select}\")\n", + " if should_log:\n", + " print(f\"Testing select query: {select}\")\n", " cursor.execute(select)\n", " record = cursor.fetchall()\n", - " print(record)\n", + " if should_log:\n", + " print(f\"Result of query: {record}\")\n", "\n", " return True\n", "\n", " except sqlite3.Error as error:\n", - " print(\"Error while executing select query:\", error)\n", - "\n", + " if should_log:\n", + " print(\"Error while executing select query:\", error)\n", " return False\n", "\n", "\n", - "def test_create(conn, cursor, create):\n", + "def test_create(conn, cursor, create, should_log=True):\n", " \"\"\"Tests that a SQLite create query can be executed successfully\"\"\"\n", " try:\n", - " print(f\"Testing create query: {create}\")\n", + " if should_log:\n", + " print(f\"Testing create query: {create}\")\n", " cursor.execute(create)\n", " conn.commit()\n", "\n", " return True\n", "\n", " except sqlite3.Error as error:\n", - " print(\"Error while creating the SQLite table:\", error)\n", - "\n", + " if should_log:\n", + " print(\"Error while creating the SQLite table:\", error)\n", " return False\n", "\n", "\n", - "def test_llm_sql(LLMResponse):\n", + "def test_llm_sql(llm_response, should_log=True):\n", " \"\"\"Runs a suite of SQLite tests\"\"\"\n", " try:\n", " conn = create_connection()\n", " cursor = conn.cursor()\n", "\n", - " create_response = test_create(conn, cursor, LLMResponse.create)\n", + " create_response = test_create(conn, cursor, llm_response.create, should_log=should_log)\n", "\n", - " select_response = test_select(conn, cursor, LLMResponse.select)\n", + " select_response = test_select(conn, cursor, llm_response.select, should_log=should_log)\n", "\n", " if conn:\n", " close_connection(conn)\n", @@ -577,14 +591,14 @@ " return True\n", "\n", " except sqlite3.Error as error:\n", - " print(\"Error while creating a sqlite table\", error)\n", - "\n", + " if should_log:\n", + " print(\"Error while creating a sqlite table\", error)\n", " return False" ] }, { "cell_type": "code", - "execution_count": 162, + "execution_count": 14, "id": "a9266753-4646-4901-bc14-632d3bf47aaa", "metadata": {}, "outputs": [ @@ -594,9 +608,8 @@ "text": [ "CREATE SQL is: CREATE TABLE department_heads (\n", " id INT PRIMARY KEY,\n", - " name VARCHAR(255),\n", - " age INT,\n", - " department VARCHAR(255)\n", + " name VARCHAR(100),\n", + " age INT\n", ");\n", "SELECT SQL is: SELECT COUNT(*) FROM department_heads WHERE age > 56;\n" ] @@ -612,7 +625,7 @@ }, { "cell_type": "code", - "execution_count": 163, + "execution_count": 15, "id": "83bc1f1b", "metadata": {}, "outputs": [ @@ -622,12 +635,11 @@ "text": [ "Testing create query: CREATE TABLE department_heads (\n", " id INT PRIMARY KEY,\n", - " name VARCHAR(255),\n", - " age INT,\n", - " department VARCHAR(255)\n", + " name VARCHAR(100),\n", + " age INT\n", ");\n", "Testing select query: SELECT COUNT(*) FROM department_heads WHERE age > 56;\n", - "[(0,)]\n" + "Result of query: [(0,)]\n" ] }, { @@ -636,7 +648,7 @@ "True" ] }, - "execution_count": 163, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -649,7 +661,7 @@ }, { "cell_type": "code", - "execution_count": 164, + "execution_count": 16, "id": "589c7cc7", "metadata": {}, "outputs": [ @@ -668,7 +680,7 @@ "False" ] }, - "execution_count": 164, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -688,14 +700,14 @@ "source": [ "### Evaluation\n", "\n", - "The last component is to **evaluate** whether the generate SQL actually answers the user's question. This test will be performed by `gpt-4o-mini`, and will assess how **relevant** the produced SQL query is when compared to the initial user request.\n", + "The last component is to **evaluate** whether the generated SQL actually answers the user's question. This test will be performed by `gpt-4o-mini`, and will assess how **relevant** the produced SQL query is when compared to the initial user request.\n", "\n", "This is a simple example which adapts an approach outlined in the [G-Eval paper](https://arxiv.org/abs/2303.16634), and tested in one of our other [cookbooks](https://github.com/openai/openai-cookbook/blob/main/examples/evaluation/How_to_eval_abstractive_summarization.ipynb)." ] }, { "cell_type": "code", - "execution_count": 165, + "execution_count": 17, "id": "029c8426", "metadata": {}, "outputs": [], @@ -748,7 +760,7 @@ }, { "cell_type": "code", - "execution_count": 166, + "execution_count": 18, "id": "85cfb78d", "metadata": {}, "outputs": [], @@ -779,7 +791,7 @@ }, { "cell_type": "code", - "execution_count": 167, + "execution_count": 19, "id": "607ee304", "metadata": {}, "outputs": [], @@ -789,15 +801,18 @@ "evaluation_results = []\n", "\n", "for x,y in sql_df.head(3).iterrows():\n", - " \n", - " score = get_geval_score(RELEVANCY_SCORE_CRITERIA,RELEVANCY_SCORE_STEPS,y['question'],y['context'] + '\\n' + y['answer'],'relevancy')\n", - " \n", + " score = get_geval_score(\n", + " RELEVANCY_SCORE_CRITERIA,\n", + " RELEVANCY_SCORE_STEPS,\n", + " y['question'],\n", + " y['context'] + '\\n' + y['answer'],'relevancy'\n", + " )\n", " evaluation_results.append((y['question'],y['context'] + '\\n' + y['answer'],score))" ] }, { "cell_type": "code", - "execution_count": 168, + "execution_count": 20, "id": "bd1002c2", "metadata": {}, "outputs": [ @@ -866,32 +881,22 @@ }, { "cell_type": "code", - "execution_count": 169, + "execution_count": 21, "id": "85c44a17", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "('Translate this natural language request into a JSON object containing two SQL queries. \\n'\n", - " \"The first query should be a CREATE statement for a table answering the user's request, while the second should be a \"\n", - " 'SELECT query answering their question. \\n')\n" - ] - } - ], + "outputs": [], "source": [ "# Set first system prompt\n", - "system_prompt = \"\"\"Translate this natural language request into a JSON object containing two SQL queries. \n", - "The first query should be a CREATE statement for a table answering the user's request, while the second should be a SELECT query answering their question. \n", - "\"\"\"\n", + "system_prompt = \"\"\"Translate this natural language request into a JSON object containing two SQL queries.\n", "\n", - "pprint(system_prompt, width = 120)" + "The first query should be a CREATE statement for a table answering the user's request, while the second\n", + "should be a SELECT query answering their question. \n", + "\"\"\"" ] }, { "cell_type": "code", - "execution_count": 170, + "execution_count": 22, "id": "1244c44e", "metadata": {}, "outputs": [], @@ -899,15 +904,13 @@ "def get_response(system_prompt,user_message,model=GPT_MODEL):\n", " messages = []\n", " messages.append({\"role\": \"system\", \"content\": system_prompt})\n", - " messages.append({\"role\":\"user\",\"content\": user_message})\n", + " messages.append({\"role\": \"user\", \"content\": user_message})\n", "\n", " response = client.beta.chat.completions.parse(\n", " model=GPT_MODEL,\n", " messages=messages,\n", " response_format=LLMResponse,\n", " )\n", - "\n", - " \n", " # response = client.chat.completions.create(model=GPT_MODEL,messages=messages,temperature=0,response_format=LLMResponse)\n", " \n", " return response.choices[0].message.content" @@ -925,493 +928,79 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 23, "id": "a98afa30", "metadata": {}, "outputs": [], "source": [ - "def execute_unit_tests(input_df,output_list,system_prompt):\n", + "def execute_unit_tests(input_df, output_list, system_prompt):\n", " \"\"\"Unit testing function that takes in a dataframe and appends test results to an output_list.\n", - " The system prompt is configurable to allow us to test a couple with this framework.\"\"\"\n", "\n", - " for x,y in input_df.iterrows():\n", - " model_response = get_response(system_prompt,y['question'])\n", + " This allows us to test multiple system prompts.\"\"\"\n", + "\n", + " for x, y in tqdm(input_df.iterrows(), total=len(input_df)):\n", + " model_response = get_response(system_prompt, y['question'])\n", "\n", " format_valid = test_valid_schema(model_response)\n", "\n", " try:\n", " test_query = LLMResponse.model_validate_json(model_response)\n", - " sql_valid = test_llm_sql(test_query)\n", - "\n", + " # Avoid logging since we're executing many rows at once\n", + " sql_valid = test_llm_sql(test_query, should_log=False)\n", " except:\n", " sql_valid = False\n", "\n", - " output_list.append((y['question'],model_response,format_valid,sql_valid))\n", + " output_list.append((y['question'], model_response, format_valid, sql_valid))\n", " \n", "def evaluate_row(row):\n", - " \"\"\"Simple evaluation function to categorize unit testing results. \n", + " \"\"\"Simple evaluation function to categorize unit testing results.\n", + " \n", " If the format or SQL are flagged it returns a label, otherwise it is correct\"\"\"\n", - " if row['format'] == False:\n", + " if row['format'] is False:\n", " return 'Format incorrect'\n", - " \n", - " elif row['sql'] == False:\n", + " elif row['sql'] is False:\n", " return 'SQL incorrect'\n", - " \n", " else:\n", " return 'SQL correct'" ] }, { "cell_type": "code", - "execution_count": 172, + "execution_count": 24, "id": "898e5069", "metadata": {}, "outputs": [], "source": [ - "# Select 100 unseen queries to test this one\n", + "# Select 50 unseen queries to test this one\n", "test_df = sql_df.tail(50)" ] }, { "cell_type": "code", - "execution_count": 173, + "execution_count": 25, "id": "2baec278", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Testing create query: CREATE TABLE cricket_partnerships (\n", - " id INT PRIMARY KEY,\n", - " player1 VARCHAR(50),\n", - " player2 VARCHAR(50),\n", - " venue VARCHAR(100),\n", - " match_date DATE\n", - ");\n", - "Testing select query: SELECT venue FROM cricket_partnerships WHERE player1 = 'Shoaib Malik' AND player2 = 'Misbah-ul-Haq' OR player1 = 'Misbah-ul-Haq' AND player2 = 'Shoaib Malik';\n", - "[]\n", - "Testing create query: CREATE TABLE CricketPartnerships (\n", - " id INT PRIMARY KEY,\n", - " player1 VARCHAR(255),\n", - " player2 VARCHAR(255),\n", - " venue VARCHAR(255),\n", - " date DATE,\n", - " runs_scored INT\n", - ");\n", - "Testing select query: SELECT venue FROM CricketPartnerships WHERE player1 = 'Herschelle Gibbs' AND player2 = 'Justin Kemp';\n", - "[]\n", - "Testing create query: CREATE TABLE PointsTable (\n", - " NumberPlayed INT,\n", - " Points INT\n", - ");\n", - "Testing select query: SELECT NumberPlayed FROM PointsTable WHERE Points = 310;\n", - "[]\n", - "Testing create query: CREATE TABLE sports_stats (\n", - " team_id INTEGER PRIMARY KEY,\n", - " team_name TEXT,\n", - " points_against INTEGER,\n", - " losing_bonus INTEGER\n", - ");\n", - "Testing select query: SELECT losing_bonus FROM sports_stats WHERE points_against = 588;\n", - "[]\n", - "Testing create query: CREATE TABLE rugby_points (\n", - " id SERIAL PRIMARY KEY,\n", - " team_name VARCHAR(100),\n", - " tries_against INT,\n", - " losing_bonus INT\n", - ");\n", - "Testing select query: SELECT * FROM rugby_points WHERE tries_against = 7 AND losing_bonus > 0;\n", - "[]\n", - "Testing create query: CREATE TABLE rugby_stats (\n", - " team_name VARCHAR(50),\n", - " games_played INT,\n", - " tries_scored INT,\n", - " try_bonus INT,\n", - " points_against INT\n", - ");\n", - "Testing select query: SELECT try_bonus FROM rugby_stats WHERE points_against = 488;\n", - "[]\n", - "Testing create query: CREATE TABLE Points (\n", - " id INT PRIMARY KEY,\n", - " description VARCHAR(255),\n", - " try_bonus INT\n", - ");\n", - "Testing select query: SELECT * FROM Points WHERE try_bonus = 140;\n", - "[]\n", - "Testing create query: CREATE TABLE Matches (\n", - " MatchID INT PRIMARY KEY,\n", - " TeamName VARCHAR(255),\n", - " Drawn INT,\n", - " TriesAgainst INT\n", - ");\n", - "Testing select query: SELECT TeamName FROM Matches WHERE Drawn = 1 AND TriesAgainst = 0;\n", - "[]\n", - "Testing create query: CREATE TABLE Champions (id INT PRIMARY KEY, name VARCHAR(100), reign_days INT, defenses INT);\n", - "Testing select query: SELECT reign_days FROM Champions WHERE reign_days > 3 AND defenses = 1;\n", - "[]\n", - "Testing create query: CREATE TABLE champions (\n", - " id INTEGER PRIMARY KEY,\n", - " name VARCHAR(255),\n", - " reign_days INTEGER,\n", - " defenses INTEGER\n", - ");\n", - "Testing select query: SELECT reign_days FROM champions WHERE reign_days > 3 AND defenses < 1;\n", - "[]\n", - "Testing create query: CREATE TABLE ChampionReigns (\n", - " id INT PRIMARY KEY,\n", - " champion_name VARCHAR(255) NOT NULL,\n", - " total_defenses INT NOT NULL,\n", - " days_held INT NOT NULL\n", - ");\n", - "Testing select query: SELECT AVG(total_defenses) AS average_defenses\n", - "FROM ChampionReigns\n", - "WHERE days_held = 404 AND TOTAL_REIGNS > 1;\n", - "Error while executing select query: no such column: TOTAL_REIGNS\n", - "Testing create query: CREATE TABLE Champions (\n", - " id INT PRIMARY KEY,\n", - " name VARCHAR(255),\n", - " days_held INT,\n", - " defense INT\n", - ");\n", - "Testing select query: SELECT MIN(defense) as lowest_defense FROM Champions WHERE days_held = 345;\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE games_records (\n", - " id INTEGER PRIMARY KEY AUTOINCREMENT,\n", - " game_date DATE NOT NULL,\n", - " team1_score INTEGER NOT NULL,\n", - " team2_score INTEGER NOT NULL\n", - ");\n", - "Testing select query: SELECT game_date FROM games_records WHERE team1_score = 76 AND team2_score = 72;\n", - "[]\n", - "Testing create query: CREATE TABLE GameResults (\n", - " game_id INT PRIMARY KEY,\n", - " pitcher_name VARCHAR(50),\n", - " pitcher_record VARCHAR(10),\n", - " attendance INT,\n", - " result VARCHAR(50)\n", - ");\n", - "Testing select query: SELECT attendance FROM GameResults WHERE pitcher_name = 'Ponson' AND pitcher_record = '1-5' AND result LIKE '%loss%';\n", - "[]\n", - "Testing create query: CREATE TABLE records (\n", - " id SERIAL PRIMARY KEY,\n", - " event_date DATE NOT NULL,\n", - " record_type TEXT NOT NULL,\n", - " record_value TEXT NOT NULL\n", - ");\n", - "Testing select query: SELECT event_date FROM records WHERE record_value = '36-39';\n", - "[]\n", - "Testing create query: CREATE TABLE records (\n", - " record_id INT PRIMARY KEY,\n", - " win_count INT,\n", - " loss_count INT,\n", - " record_date DATE\n", - ");\n", - "Testing select query: SELECT record_date FROM records WHERE win_count = 30 AND loss_count = 31;\n", - "[]\n", - "Testing create query: CREATE TABLE games (\n", - " id INT PRIMARY KEY,\n", - " player_name VARCHAR(255),\n", - " opponent_name VARCHAR(255),\n", - " player_score INT,\n", - " opponent_score INT\n", - ");\n", - "Testing select query: SELECT opponent_name FROM games WHERE player_name = 'Leonard' AND player_score = 7 AND opponent_score = 8;\n", - "[]\n", - "Testing create query: CREATE TABLE GameScores (\n", - " id INT PRIMARY KEY,\n", - " record VARCHAR(10),\n", - " score VARCHAR(10),\n", - " date_played DATE\n", - ");\n", - "Testing select query: SELECT score FROM GameScores WHERE record = '18–43';\n", - "[]\n", - "Testing create query: CREATE TABLE game_scores (\n", - " id INT PRIMARY KEY AUTO_INCREMENT,\n", - " game_date DATE,\n", - " opposing_team VARCHAR(50),\n", - " team_score INT,\n", - " opponent_score INT,\n", - " season_record VARCHAR(10)\n", - ");\n", - "Error while creating the SQLite table: near \"AUTO_INCREMENT\": syntax error\n", - "Testing select query: SELECT team_score, opponent_score FROM game_scores WHERE opposing_team = 'Royals' AND season_record = '24-52';\n", - "Error while executing select query: no such table: game_scores\n", - "Testing create query: CREATE TABLE GameRecord (\n", - " id INT PRIMARY KEY,\n", - " record VARCHAR(10),\n", - " score VARCHAR(50),\n", - " date DATE\n", - ");\n", - "Testing select query: SELECT score FROM GameRecord WHERE record = '22–46';\n", - "[]\n", - "Testing create query: CREATE TABLE MilitaryPersonnel (\n", - " id INT PRIMARY KEY,\n", - " real_name VARCHAR(255),\n", - " primary_specialty VARCHAR(255)\n", - ");\n", - "Testing select query: SELECT real_name FROM MilitaryPersonnel WHERE primary_specialty = 'shock paratrooper';\n", - "[]\n", - "Testing create query: CREATE TABLE Persons (\n", - " PersonID INT PRIMARY KEY,\n", - " FirstName VARCHAR(255) NOT NULL,\n", - " LastName VARCHAR(255) NOT NULL,\n", - " Birthplace VARCHAR(255) NOT NULL\n", - ");\n", - "Testing select query: SELECT Birthplace FROM Persons WHERE FirstName = 'Pete' AND LastName = 'Sanderson';\n", - "[]\n", - "Testing create query: CREATE TABLE roles (\n", - " id SERIAL PRIMARY KEY,\n", - " person_name VARCHAR(100) NOT NULL,\n", - " role_title VARCHAR(100) NOT NULL\n", - ");\n", - "Testing select query: SELECT role_title FROM roles WHERE person_name = 'Jean-Luc Bouvier';\n", - "[]\n", - "Testing create query: CREATE TABLE KayakPilots (\n", - " id INT PRIMARY KEY,\n", - " real_name VARCHAR(255),\n", - " nickname VARCHAR(255),\n", - " vessel_type VARCHAR(100)\n", - ");\n", - "Testing select query: SELECT real_name FROM KayakPilots WHERE vessel_type = 'silent attack kayak';\n", - "[]\n", - "Testing create query: CREATE TABLE people (\n", - " id INT PRIMARY KEY,\n", - " name VARCHAR(100),\n", - " code_name VARCHAR(100),\n", - " city_of_birth VARCHAR(100),\n", - " date_of_birth DATE\n", - ");\n", - "Testing select query: SELECT code_name FROM people WHERE city_of_birth = 'Liverpool';\n", - "[]\n", - "Testing create query: CREATE TABLE CanoeingMedalists (\n", - " id INT PRIMARY KEY,\n", - " name VARCHAR(100) NOT NULL,\n", - " event VARCHAR(100) NOT NULL,\n", - " medal_type VARCHAR(50) NOT NULL,\n", - " year INT NOT NULL\n", - ");\n", - "Testing select query: SELECT name FROM CanoeingMedalists WHERE event = 'Canoeing';\n", - "[]\n", - "Testing create query: CREATE TABLE HalfMiddleweightEvents (\n", - " GameID INT PRIMARY KEY,\n", - " GameName VARCHAR(255),\n", - " Event VARCHAR(50),\n", - " Year INT\n", - ");\n", - "Testing select query: SELECT GameName, Year FROM HalfMiddleweightEvents WHERE Event = 'Women\\'s Half Middleweight';\n", - "Error while executing select query: near \"s\": syntax error\n", - "Testing create query: CREATE TABLE OlympicMedalists2000 (\n", - " AthleteID INT PRIMARY KEY,\n", - " Name VARCHAR(255) NOT NULL,\n", - " MedalType VARCHAR(50) NOT NULL,\n", - " Event VARCHAR(255) NOT NULL,\n", - " Country VARCHAR(100) NOT NULL\n", - ");\n", - "Testing select query: SELECT Name, Event, Country FROM OlympicMedalists2000 WHERE MedalType = 'Bronze' AND Event = 'Specific Event Name';\n", - "[]\n", - "Testing create query: CREATE TABLE GameAttendance (\n", - " GameID INT PRIMARY KEY,\n", - " Opponent VARCHAR(50),\n", - " Attendance INT\n", - ");\n", - "Testing select query: SELECT SUM(Attendance) AS Total_Attendance\n", - "FROM GameAttendance\n", - "WHERE Opponent = 'Twins';\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE sports_records (\n", - " id SERIAL PRIMARY KEY,\n", - " date DATE NOT NULL,\n", - " record VARCHAR(255) NOT NULL\n", - ");\n", - "Testing select query: SELECT date FROM sports_records WHERE record = '41-46';\n", - "[]\n", - "Testing create query: CREATE TABLE Scores (\n", - " id INT PRIMARY KEY,\n", - " score_name VARCHAR(255),\n", - " score_value VARCHAR(10)\n", - ");\n", - "Testing select query: SELECT score_name FROM Scores WHERE score_value = '48-55';\n", - "[]\n", - "Testing create query: CREATE TABLE sports_records (\n", - " team_name VARCHAR(255),\n", - " games_won INT,\n", - " games_lost INT,\n", - " PRIMARY KEY (team_name)\n", - ");\n", - "Testing select query: SELECT team_name FROM sports_records WHERE games_won = 44 AND games_lost = 49;\n", - "[]\n", - "Testing create query: CREATE TABLE games (\n", - " game_id INT PRIMARY KEY,\n", - " opponent VARCHAR(50),\n", - " record VARCHAR(10),\n", - " score VARCHAR(10)\n", - ");\n", - "Testing select query: SELECT score FROM games WHERE opponent = 'white sox' AND record = '2-0';\n", - "[]\n", - "Testing create query: CREATE TABLE election_votes (\n", - " candidate_name VARCHAR(255),\n", - " votes_received INT\n", - ");\n", - "Testing select query: SELECT votes_received FROM election_votes WHERE candidate_name = 'Candice Sjostrom';\n", - "[]\n", - "Testing create query: CREATE TABLE election_results (\n", - " candidate_name VARCHAR(100),\n", - " votes_received INT,\n", - " total_votes INT\n", - ");\n", - "Testing select query: SELECT (votes_received * 100.0) / total_votes AS percentage_received \n", - "FROM election_results \n", - "WHERE candidate_name = 'Chris Wright';\n", - "[]\n", - "Testing create query: CREATE TABLE election_results (\n", - " election_year INT,\n", - " candidate_name VARCHAR(255),\n", - " vote_count INT,\n", - " vote_percentage DECIMAL(5, 2),\n", - " office VARCHAR(255),\n", - " office_district INT\n", - ");\n", - "Testing select query: SELECT vote_count\n", - "FROM election_results\n", - "WHERE election_year > 1992 \n", - " AND vote_percentage = 1.59 \n", - " AND office = 'us representative' \n", - " AND office_district = 4;\n", - "[]\n", - "Testing create query: CREATE TABLE Representatives (\n", - " id SERIAL PRIMARY KEY,\n", - " first_name VARCHAR(50),\n", - " last_name VARCHAR(50),\n", - " start_year INT,\n", - " end_year INT\n", - ");\n", - "Testing select query: SELECT start_year, end_year FROM Representatives WHERE first_name = 'J.' AND last_name = 'Smith Young';\n", - "[]\n", - "Testing create query: CREATE TABLE Politicians (\n", - " id INT PRIMARY KEY,\n", - " name VARCHAR(100),\n", - " party VARCHAR(100)\n", - ");\n", - "Testing select query: SELECT party FROM Politicians WHERE name = 'Thomas L. Young';\n", - "[]\n", - "Testing create query: CREATE TABLE MedalCounts (\n", - " Country VARCHAR(100),\n", - " Gold INT,\n", - " Silver INT,\n", - " Bronze INT,\n", - " Total INT\n", - ");\n", - "Testing select query: SELECT MIN(Total) AS LowestMedalCount FROM MedalCounts \n", - "WHERE Gold = 0 AND Bronze > 2 AND Silver > 1;\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE country_medals (\n", - " rank INT,\n", - " country_name VARCHAR(255),\n", - " gold_medals INT,\n", - " silver_medals INT,\n", - " bronze_medals INT,\n", - " total_medals INT\n", - ");\n", - "Testing select query: SELECT SUM(silver_medals) FROM country_medals WHERE rank = 14 AND total_medals < 1;\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE player_stats (\n", - " player_id INT PRIMARY KEY,\n", - " player_name VARCHAR(100),\n", - " tackles INT,\n", - " fumble_recoveries INT,\n", - " forced_fumbles INT\n", - ");\n", - "Testing select query: SELECT tackles FROM player_stats WHERE fumble_recoveries > 0 AND forced_fumbles > 0;\n", - "[]\n", - "Testing create query: CREATE TABLE DefensiveStats (\n", - " player_id INT PRIMARY KEY,\n", - " player_name VARCHAR(100),\n", - " solo_tackles INT,\n", - " forced_fumbles INT\n", - ");\n", - "Testing select query: SELECT forced_fumbles FROM DefensiveStats WHERE player_name = 'jim laney' AND solo_tackles < 2;\n", - "[]\n", - "Testing create query: CREATE TABLE PlayersStats (\n", - " PlayerID INT PRIMARY KEY,\n", - " PlayerName VARCHAR(255),\n", - " SoloTackles INT,\n", - " Total INT\n", - ");\n", - "Testing select query: SELECT MAX(Total) AS HighTotal FROM PlayersStats WHERE SoloTackles > 15;\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE PlayerStats (\n", - " player_id INT PRIMARY KEY,\n", - " player_name VARCHAR(100),\n", - " fumble_recoveries INT,\n", - " forced_fumbles INT,\n", - " sacks INT,\n", - " solo_tackles INT\n", - ");\n", - "Testing select query: SELECT fumble_recoveries FROM PlayerStats WHERE player_name = 'Scott Gajos' AND forced_fumbles = 0 AND sacks = 0 AND solo_tackles < 2;\n", - "[]\n", - "Testing create query: CREATE TABLE Matches (\n", - " MatchID INT PRIMARY KEY,\n", - " HomeTeam VARCHAR(255),\n", - " OpponentTeam VARCHAR(255),\n", - " MatchTime TIME,\n", - " Stadium VARCHAR(255)\n", - ");\n", - "Testing select query: SELECT OpponentTeam FROM Matches WHERE MatchTime = '20:00:00' AND Stadium = 'Camp Nou';\n", - "[]\n", - "Testing create query: CREATE TABLE matches (\n", - " id INT PRIMARY KEY,\n", - " date DATE,\n", - " time TIME,\n", - " score VARCHAR(5)\n", - ");\n", - "Testing select query: SELECT time FROM matches WHERE score = '3-2';\n", - "[]\n", - "Testing create query: CREATE TABLE Matches (\n", - " MatchID INT PRIMARY KEY,\n", - " HomeTeam VARCHAR(255),\n", - " AwayTeam VARCHAR(255),\n", - " Ground VARCHAR(255),\n", - " MatchDate DATE\n", - ");\n", - "Testing select query: SELECT Ground FROM Matches WHERE HomeTeam = 'Aston Villa' OR AwayTeam = 'Aston Villa';\n", - "[]\n", - "Testing create query: CREATE TABLE CompetitionEvents (\n", - " EventID INT PRIMARY KEY AUTO_INCREMENT,\n", - " CompetitionName VARCHAR(100),\n", - " Location VARCHAR(100),\n", - " EventTime TIME,\n", - " EventDate DATE\n", - ");\n", - "Error while creating the SQLite table: near \"AUTO_INCREMENT\": syntax error\n", - "Testing select query: SELECT CompetitionName FROM CompetitionEvents \n", - "WHERE Location = 'San Siro' AND EventTime = '18:30:00' \n", - "ORDER BY EventDate DESC \n", - "LIMIT 1;\n", - "Error while executing select query: no such table: CompetitionEvents\n", - "Testing create query: CREATE TABLE school_locality_deciles (\n", - " locality_id INT PRIMARY KEY,\n", - " locality_name VARCHAR(255),\n", - " total_decile INT\n", - ");\n", - "Testing select query: SELECT locality_name, total_decile FROM school_locality_deciles WHERE locality_name = 'redwood';\n", - "[]\n", - "Testing create query: CREATE TABLE racing_reports (\n", - " report_id INT PRIMARY KEY,\n", - " report_name VARCHAR(255) NOT NULL,\n", - " track_name VARCHAR(255),\n", - " event_date DATE\n", - ");\n", - "Testing select query: SELECT report_name FROM racing_reports WHERE track_name = 'Circuit of Tripoli';\n", - "[]\n" - ] + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "5a1c63bbf32c412b8f649d06c1a28ef4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/50 [00:00 3 AND defenses = 1;\n", - "[]\n", - "Testing create query: CREATE TABLE champions (id INT, name VARCHAR(255), days_held INT, reign_count INT, defenses INT);\n", - "Testing select query: SELECT days_held FROM champions WHERE reign_count > 3 AND defenses < 1;\n", - "[]\n", - "Testing create query: CREATE TABLE champions (id INT PRIMARY KEY, name VARCHAR(255), days_held INT, reign INT, defenses INT);\n", - "Testing select query: SELECT AVG(defenses) AS average_defenses FROM champions WHERE days_held = 404 AND reign > 1;\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE champions (id INT PRIMARY KEY, name VARCHAR(255), defense INT, days_held INT);\n", - "Testing select query: SELECT MIN(defense) AS lowest_defense FROM champions WHERE days_held = 345;\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE games (date DATE, team1_score INT, team2_score INT);\n", - "Testing select query: SELECT date FROM games WHERE (team1_score = 76 AND team2_score = 72) OR (team1_score = 72 AND team2_score = 76);\n", - "[]\n", - "Testing create query: CREATE TABLE match_results (match_id INT, team_name VARCHAR(255), player_name VARCHAR(255), attendance INT, result VARCHAR(50));\n", - "Testing select query: SELECT attendance FROM match_results WHERE player_name = 'Ponson' AND result = 'loss' AND match_id = 1;\n", - "[]\n", - "Testing create query: CREATE TABLE daily_records (id INT PRIMARY KEY, record_value INT, record_date DATE);\n", - "Testing select query: SELECT record_date FROM daily_records WHERE record_value BETWEEN 36 AND 39;\n", - "[]\n", - "Testing create query: CREATE TABLE records (id INTEGER PRIMARY KEY, record VARCHAR(10), date DATE);\n", - "Testing select query: SELECT date FROM records WHERE record = '30-31';\n", - "[]\n", - "Testing create query: CREATE TABLE baseball_games (game_date DATE, opponent TEXT, player_name TEXT, record TEXT, outcome TEXT);\n", - "Testing select query: SELECT opponent FROM baseball_games WHERE player_name = 'Leonard' AND record = '7-8';\n", - "[]\n", - "Testing create query: CREATE TABLE Games (id INT PRIMARY KEY, record VARCHAR(10), score VARCHAR(10));\n", - "Testing select query: SELECT score FROM Games WHERE record = '18–43';\n", - "[]\n", - "Testing create query: CREATE TABLE baseball_games (id INT PRIMARY KEY, opponent VARCHAR(50), our_score INT, their_score INT, our_record VARCHAR(10));\n", - "Testing select query: SELECT our_score, their_score FROM baseball_games WHERE opponent = 'Royals' AND our_record = '24-52';\n", - "[]\n", - "Testing create query: CREATE TABLE GameScores (id INTEGER PRIMARY KEY, record VARCHAR(10), score VARCHAR(10));\n", - "Testing select query: SELECT score FROM GameScores WHERE record = '22–46';\n", - "[]\n", - "Testing create query: CREATE TABLE MilitarySpecialty (real_name VARCHAR(100), specialty VARCHAR(100));\n", - "Testing select query: SELECT real_name FROM MilitarySpecialty WHERE specialty = 'shock paratrooper';\n", - "[]\n", - "Testing create query: CREATE TABLE People (Name VARCHAR(255), Birthplace VARCHAR(255));\n", - "Testing select query: SELECT Birthplace FROM People WHERE Name = 'Pete Sanderson';\n", - "[]\n", - "Testing create query: CREATE TABLE Roles (person_name VARCHAR(255), role VARCHAR(255));\n", - "Testing select query: SELECT role FROM Roles WHERE person_name = 'Jean-Luc Bouvier';\n", - "[]\n", - "Testing create query: CREATE TABLE KayakPilots (PilotID INT PRIMARY KEY, RealName VARCHAR(255), Alias VARCHAR(255));\n", - "Testing select query: SELECT RealName FROM KayakPilots WHERE Alias = 'silent attack kayak';\n", - "[]\n", - "Testing create query: CREATE TABLE people (id INT PRIMARY KEY, name VARCHAR(100), birth_city VARCHAR(100), code_name VARCHAR(100));\n", - "Testing select query: SELECT code_name FROM people WHERE birth_city = 'Liverpool';\n", - "[]\n", - "Testing create query: CREATE TABLE CanoeingMedalists (ID INT PRIMARY KEY, Name VARCHAR(100), Country VARCHAR(100), MedalType VARCHAR(50));\n", - "Testing select query: SELECT Name FROM CanoeingMedalists;\n", - "[]\n", - "Testing create query: CREATE TABLE WomensHalfMiddleweightEvents (id INT PRIMARY KEY, game_name TEXT, year INT, location TEXT);\n", - "Testing select query: SELECT game_name, year, location FROM WomensHalfMiddleweightEvents WHERE game_name IS NOT NULL;\n", - "[]\n", - "Testing create query: CREATE TABLE BronzeMedals (Year INT, Games VARCHAR(100), Sport VARCHAR(100), Event VARCHAR(100), Athlete VARCHAR(100), Country VARCHAR(100));\n", - "Testing select query: SELECT Athlete, Country FROM BronzeMedals WHERE Year = 2000 AND Games = 'Sydney';\n", - "[]\n", - "Testing create query: CREATE TABLE BaseballMatches (match_id INT PRIMARY KEY, date DATE, opponent VARCHAR(100), attendance INT);\n", - "Testing select query: SELECT COUNT(*) FROM BaseballMatches WHERE opponent = 'twins';\n", - "[(0,)]\n", - "Testing create query: CREATE TABLE Records (Date DATE, WinCount INT, LossCount INT, PRIMARY KEY (Date));\n", - "Testing select query: SELECT Date FROM Records WHERE WinCount = 41 AND LossCount = 46;\n", - "[]\n", - "Testing create query: CREATE TABLE team_records (id INTEGER PRIMARY KEY, team_name VARCHAR(100), wins INTEGER, losses INTEGER, score INTEGER);\n", - "Testing select query: SELECT score FROM team_records WHERE wins = 48 AND losses = 55;\n", - "[]\n", - "Testing create query: CREATE TABLE Scores (record VARCHAR(10), score INT);\n", - "Testing select query: SELECT score FROM Scores WHERE record = '44-49';\n", - "[]\n", - "Testing create query: CREATE TABLE GameScores (Score INT, Opponent VARCHAR(50), Record VARCHAR(5));\n", - "Testing select query: SELECT Score FROM GameScores WHERE Opponent = 'white sox' AND Record = '2-0';\n", - "[]\n", - "Testing create query: CREATE TABLE votes (id INT PRIMARY KEY, candidate_name VARCHAR(255), votes INT);\n", - "Testing select query: SELECT votes FROM votes WHERE candidate_name = 'candice sjostrom';\n", - "[]\n", - "Testing create query: CREATE TABLE Votes(candidate_name VARCHAR(255), received_percentage DECIMAL(5,2));\n", - "Testing select query: SELECT received_percentage FROM Votes WHERE candidate_name = 'Chris Wright';\n", - "[]\n", - "Testing create query: CREATE TABLE election_results (year INT, votes INT, percentage FLOAT, office VARCHAR(50), candidate_id INT);\n", - "Testing select query: SELECT votes FROM election_results WHERE year > 1992 AND percentage = 1.59 AND office = 'US Representative 4';\n", - "[]\n", - "Testing create query: CREATE TABLE Representatives (Name VARCHAR(100), StartYear INT, EndYear INT);\n", - "Testing select query: SELECT StartYear, EndYear FROM Representatives WHERE Name = 'J. Smith Young';\n", - "[]\n", - "Testing create query: CREATE TABLE Politicians (id INT PRIMARY KEY, name VARCHAR(255), party VARCHAR(255), term_start DATE, term_end DATE);\n", - "Testing select query: SELECT party FROM Politicians WHERE name = 'Thomas L. Young';\n", - "[]\n", - "Testing create query: CREATE TABLE medals (country VARCHAR(100), gold INT, silver INT, bronze INT, total INT);\n", - "Testing select query: SELECT MIN(total) FROM medals WHERE gold = 0 AND bronze > 2 AND silver > 1;\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE OlympicStats (Country VARCHAR(100), Rank INT, GoldMedals INT, SilverMedals INT, BronzeMedals INT, TotalMedals INT);\n", - "Testing select query: SELECT SUM(SilverMedals) as TotalSilverMedals FROM OlympicStats WHERE Rank = 14 AND TotalMedals < 1;\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE player_statistics (player_id INT PRIMARY KEY, player_name VARCHAR(100), number_of_tackles INT, fumble_recoveries INT, forced_fumbles INT);\n", - "Testing select query: SELECT player_name, number_of_tackles FROM player_statistics WHERE fumble_recoveries > 0 AND forced_fumbles > 0;\n", - "[]\n", - "Testing create query: CREATE TABLE ForcedFumbles (player_name VARCHAR(100), solo_tackles INT, forced_fumbles INT);\n", - "Testing select query: SELECT forced_fumbles FROM ForcedFumbles WHERE player_name = 'Jim Laney' AND solo_tackles < 2;\n", - "[]\n", - "Testing create query: CREATE TABLE PlayerStatistics (PlayerID INT PRIMARY KEY, PlayerName VARCHAR(100), SoloTackles INT, TotalTackles INT);\n", - "Testing select query: SELECT MAX(TotalTackles) AS HighTotal FROM PlayerStatistics WHERE SoloTackles > 15;\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE PlayerStats (player_name VARCHAR(50), fumble_recoveries INT, forced_fumbles INT, sacks INT, solo_tackles INT);\n", - "Testing select query: SELECT fumble_recoveries FROM PlayerStats WHERE player_name = 'Scott Gajos' AND forced_fumbles = 0 AND sacks = 0 AND solo_tackles < 2;\n", - "[]\n", - "Testing create query: CREATE TABLE matches (id INT PRIMARY KEY, home_team VARCHAR(100), opponent VARCHAR(100), date TIME, location VARCHAR(100));\n", - "Testing select query: SELECT opponent FROM matches WHERE date = '20:00:00' AND location = 'Camp Nou';\n", - "[]\n", - "Testing create query: CREATE TABLE matches (id INT PRIMARY KEY, match_time TIME, team1_score INT, team2_score INT);\n", - "Testing select query: SELECT match_time FROM matches WHERE team1_score = 3 AND team2_score = 2;\n", - "[]\n", - "Testing create query: CREATE TABLE Matches (id INT PRIMARY KEY, home_team VARCHAR(255), away_team VARCHAR(255), ground VARCHAR(255), date DATE);\n", - "Testing select query: SELECT ground FROM Matches WHERE away_team = 'Aston Villa';\n", - "[]\n", - "Testing create query: CREATE TABLE Competitions (id INT PRIMARY KEY, name VARCHAR(255), location VARCHAR(255), start_time TIME, timezone VARCHAR(255));\n", - "Testing select query: SELECT name FROM Competitions WHERE location = 'San Siro' AND start_time = '18:30:00' AND timezone = 'GMT';\n", - "[]\n", - "Testing create query: CREATE TABLE locality_scores (locality_id INT PRIMARY KEY, decile INT NOT NULL, locality_name VARCHAR(100) NOT NULL);\n", - "Testing select query: SELECT SUM(decile) AS total_decile FROM locality_scores WHERE locality_name = 'redwood school';\n", - "[(None,)]\n", - "Testing create query: CREATE TABLE reports (report_id INT PRIMARY KEY, report_name VARCHAR(255), content TEXT);\n", - "Testing select query: SELECT report_name FROM reports WHERE content LIKE '%Circuit of Tripoli%';\n", - "[]\n" - ] + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e64c52a42f1c4202a0c820f160c1504e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/50 [00:00\n", " 1\n", " What venue did the partnership of herschelle g...\n", - " {\"create\":\"CREATE TABLE CricketPartnerships (\\...\n", + " {\"create\":\"CREATE TABLE cricket_partnerships (...\n", " True\n", " True\n", " 5\n", @@ -1878,18 +1335,18 @@ " \n", " 2\n", " What is the number Played that has 310 Points ...\n", - " {\"create\":\"CREATE TABLE PointsTable (\\n Num...\n", - " True\n", + " {\"create\":\"CREATE TABLE Scores (\\n id INT P...\n", " True\n", + " False\n", " 5\n", - " SQL correct\n", + " SQL incorrect\n", " 1\n", " gpt-4\n", " \n", " \n", " 3\n", " What Losing bonus has a Points against of 588?\n", - " {\"create\":\"CREATE TABLE sports_stats (\\n te...\n", + " {\"create\":\"CREATE TABLE FootballTeams (\\n T...\n", " True\n", " True\n", " 5\n", @@ -1900,7 +1357,7 @@ " \n", " 4\n", " What Tries against has a Losing bonus of 7?\n", - " {\"create\":\"CREATE TABLE rugby_points (\\n id S...\n", + " {\"create\":\"CREATE TABLE RugbyScores (\\n tea...\n", " True\n", " True\n", " 4\n", @@ -1920,22 +1377,22 @@ "3 What Losing bonus has a Points against of 588? \n", "4 What Tries against has a Losing bonus of 7? \n", "\n", - " response format sql \\\n", - "0 {\"create\":\"CREATE TABLE cricket_partnerships (... True True \n", - "1 {\"create\":\"CREATE TABLE CricketPartnerships (\\... True True \n", - "2 {\"create\":\"CREATE TABLE PointsTable (\\n Num... True True \n", - "3 {\"create\":\"CREATE TABLE sports_stats (\\n te... True True \n", - "4 {\"create\":\"CREATE TABLE rugby_points (\\n id S... True True \n", + " response format sql \\\n", + "0 {\"create\":\"CREATE TABLE cricket_partnerships (... True True \n", + "1 {\"create\":\"CREATE TABLE cricket_partnerships (... True True \n", + "2 {\"create\":\"CREATE TABLE Scores (\\n id INT P... True False \n", + "3 {\"create\":\"CREATE TABLE FootballTeams (\\n T... True True \n", + "4 {\"create\":\"CREATE TABLE RugbyScores (\\n tea... True True \n", "\n", " evaluation_score unit_test_evaluation run Evaluating Model \n", "0 5 SQL correct 1 gpt-4 \n", "1 5 SQL correct 1 gpt-4 \n", - "2 5 SQL correct 1 gpt-4 \n", + "2 5 SQL incorrect 1 gpt-4 \n", "3 5 SQL correct 1 gpt-4 \n", "4 4 SQL correct 1 gpt-4 " ] }, - "execution_count": 184, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1946,7 +1403,7 @@ }, { "cell_type": "code", - "execution_count": 185, + "execution_count": 37, "id": "ed800f0c", "metadata": {}, "outputs": [ @@ -1984,16 +1441,20 @@ " \n", " 1\n", " SQL correct\n", - " 46\n", + " 41\n", " \n", " \n", " SQL incorrect\n", - " 4\n", + " 9\n", " \n", " \n", - " 2\n", + " 2\n", " SQL correct\n", - " 50\n", + " 49\n", + " \n", + " \n", + " SQL incorrect\n", + " 1\n", " \n", " \n", "\n", @@ -2002,12 +1463,13 @@ "text/plain": [ " Number of records\n", "run unit_test_evaluation \n", - "1 SQL correct 46\n", - " SQL incorrect 4\n", - "2 SQL correct 50" + "1 SQL correct 41\n", + " SQL incorrect 9\n", + "2 SQL correct 49\n", + " SQL incorrect 1" ] }, - "execution_count": 185, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -2032,13 +1494,13 @@ }, { "cell_type": "code", - "execution_count": 186, + "execution_count": 38, "id": "e2b4aa03-42f5-4c30-a610-e553937bf160", "metadata": {}, "outputs": [ { "data": { - "image/png": "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7NmzRpIZO3as03W+8cYbRpKJjIw0xhhz7Ngx4+7ubv73v/85jLd3716TL18+e/vOnTuNJLN48eIbzt/X19f06tUrQ7VERkYaSek+Nm7caIwxJiYmxnh5eZlnn33WYfrJkycbm81mjh8/bm+Lj49PtZxWrVqZMmXKOLQ1adLE4f2YM2eOw3pJkfI+rV279obLmDBhQqpaBgwYYNLbvF7//rVv3954enqaI0eO2NtOnTplChQoYBo3bpyqzrCwMJOcnGxvHzZsmHF3dzcXL140xhjz1VdfGUlm69ataS4/PRld19OmTbvh5/1GSpcubR588EFjjDG9e/c23t7e5tSpU8aY/1vf1s/Z9Z//FCnfOStJxsvLy+F9nDVrlpFkgoODTWxsrL191KhRqd7zJk2aGElmypQp9raEhARTq1YtU6RIEZOYmGiMMWb+/PnGzc3N/PLLLw7Lf//9940ks379eoea3NzczO+//37TdRMdHW08PT1Ny5YtTVJSkr393XffNZLM7NmzU73+jLwHKeMeOHDAnD171hw7dszMnj3b+Pj4mKCgIHPp0iVjjDHJycmmfPnyplWrVg6fr/j4eBMaGmpatGhhb+vZs6dxc3NL8zOWMu3QoUONJIf19M8//5jQ0FATEhJif40p73uZMmVSfb9q1aplihUrZv9sG2PM6tWrjSSHz8WQIUOMv7+/uXbt2k3Xx/Wsn8kU06dPN5LMp59+am9LTEw09evXN35+fvbPUsp2zN/f30RHR2d4eelt9yZMmGAfL61tzeeff24kmZ9//tnelpH3IqPbjvRk9DOU8vrS2g9cv911Zj8IuAqn2wEu0rt3b4df+VJOXTh69Gi2LH/p0qVKTk5Wly5d9Pfff9sfwcHBKl++vNauXStJCggIkCStWrVK8fHxmVpDv379tGbNmlSPlGsE/P391aZNGy1atEjGGPt0X3zxherVq6dSpUrZ21J+gZWkmJgY/f3332rSpImOHj1qPy3wdlmXcenSJf39999q0KCBjDHauXOn0/NLSkrS6tWr1b59e4dT3YoVK6bHHntMv/76q/20oxT9+vVzONXs/vvvV1JSko4fPy7p/65T+fbbb3X16tUM15LRdZ0y/6+//tqhUxFnvfzyy7p27Vqm9mTYvHlzhyM1KUfhOnXqpAIFCqRqv/67li9fPj311FP2556ennrqqacUHR2t7du3S/r3aGLlypVVqVIlh+9Ns2bNJMn+vUnRpEmTDF3z8sMPPygxMVFDhw51uBanb9++8vf3T3WamrMqVqyooKAghYSE6IknnlC5cuX0/fffK3/+/JKkXbt26dChQ3rsscd07tw5++u6dOmSmjdvrp9//lnJyclKTk7WsmXL1K5dO4dTMFOkfDa/++471a1bV40aNbIP8/PzU79+/XTs2LFUp6T16tXL4fsVFRWlXbt2qVevXvZtkCS1aNEi1foMDAzUpUuXtGbNmttaRym+++47BQcHq3v37vY2Dw8PDR48WHFxcfrpp58cxu/UqZP9VOiMuO+++9Lc7lmXZ10XV65c0d9//6169epJknbs2CFJGX4vUtxs23EzN/sM3QpX7weBGyEkAdng+p2VJId/8KX/O2XhwoUL2VLToUOHZIxR+fLlFRQU5PDYt2+f/eLw0NBQDR8+XB999JEKFy6sVq1a6b333suU4FG+fHmFhYWlevj7+9vH6dq1q06ePKmNGzdK+vf89+3bt6tr164O81q/fr3CwsLk6+urwMBABQUF2a+TyayQdOLECYWHh6tgwYLy8/NTUFCQmjRpcsvLOHv2rOLj41WxYsVUwypXrqzk5ORU14fd7HPTpEkTderUSePHj1fhwoX1yCOPaM6cOamul0lLRtZ1165d1bBhQz355JMqWrSounXrpkWLFjkdmMqUKaP//ve/+uCDDxQVFeXUtOm5ft2k/HNdsmTJNNuv/64VL15cvr6+Dm0VKlSQ9H+nFh06dEi///57qu9Myngp35sUoaGhGao95R/V6z8Lnp6eKlOmTIb/kU3Pl19+qTVr1mjBggWqV6+eoqOjHf4RP3TokKR/w8r1r+2jjz5SQkKCYmJidPbsWcXGxt70nlLHjx9P93Ntfb0prl9PKcPLly+fah7Xz/eZZ55RhQoV1KZNG5UoUUJPPPHETa/9ulnt5cuXT9VxREZrv5nChQunud0rXbq0fZzz589ryJAhKlq0qHx8fBQUFGRfTsq2JqPvRYrb3efc7DN0K1y9HwRuhGuSgNuU0lOV9eJ9q/j4+DR7s3J3d09zfOuv+FkpOTlZNptN33//fZq1+Pn52f+eMmWKwsPD9fXXX2v16tUaPHiwJkyYoE2bNqW6PiCztWvXTvnz59eiRYvUoEEDLVq0SG5uburcubN9nCNHjqh58+aqVKmSpk6dqpIlS8rT01Pfffedpk2bdsN/4NMKsNK/R3muf96iRQudP39ezz//vCpVqiRfX1/99ddfCg8Pv62jKs642ecm5V5DmzZt0vLly7Vq1So98cQTmjJlijZt2uTwvl4vI+vax8dHP//8s9auXasVK1Zo5cqV+uKLL9SsWTOtXr063frS8tJLL2n+/PmaNGlSml3HZ/S9SZHesjPzu5acnKzq1atr6tSpaQ6/PpDd7j+RmaVx48b2nsnatWun6tWrq0ePHtq+fbvc3Nzsn9833nhDtWrVSnMefn5+On/+fJbUdzvrqUiRItq1a5dWrVql77//Xt9//73mzJmjnj17pupsIStkxXvcpUsXbdiwQc8995xq1aolPz8/JScnq3Xr1re8rbnd78HNPkPSjb+zaS3f1ftB4EYIScBtSvn178CBA6n+QYqPj9fJkyfVsmXLTFlWejugW1G2bFkZYxQaGmr/FfxGqlevrurVq+vll1/Whg0b1LBhQ73//vt67bXXMr02K19fXz300ENavHixpk6dqi+++EL333+/wz1Fli9froSEBH3zzTcOv0xef+pTWlJ+ubz+pojX/1q8d+9eHTx4UPPmzVPPnj3t7Wmd4pPRdREUFKT8+fPrwIEDqYbt379fbm5uqT5TGVWvXj3Vq1dP//vf/7RgwQL16NFDCxcu1JNPPpnuNBlZ15Lk5uam5s2bq3nz5po6dapef/11vfTSS1q7dq3CwsIyXGPZsmX1+OOPa9asWak6qJD+fW/Sulnl7R5VSc+pU6d06dIlh6NJBw8elCT7aXxly5bV7t271bx580z9zFu3I9ZTLxMTExUZGenUer0ZPz8/jR07Vr1799aiRYvUrVs3e0cr/v7+N1xWUFCQ/P399dtvv91wGaVLl073c50y/GbTS/93hMsqrfl6enqqXbt2ateunZKTk/XMM89o1qxZGj16dIbvJWVd9p49e5ScnOxwNCmjtd+uCxcuKCIiQuPHj9eYMWPs7devi4y+F1khrc+QdOPvbHq9ZwI5FafbAbepefPm8vT01MyZM1P9wvfBBx/o2rVratOmTaYsK+Xc78y4y3nHjh3l7u6u8ePHp/rVzhhj72o2NjZW165dcxhevXp1ubm5OZzC5evrm2V3X+/atatOnTqljz76SLt37051ql3Kr5HW1xETE6M5c+bcdN4p/xz+/PPP9rakpCR98MEHN12GMSbNboZT/sm+2fpwd3dXy5Yt9fXXXzt0SX3mzBktWLBAjRo1cjj1MCMuXLiQ6v1MOTKQ0VPubrSu0zqS4Mz8r/fyyy/r6tWrmjx5cqphZcuWVUxMjPbs2WNvi4qKSrcb6Nt17do1zZo1y/48MTFRs2bNUlBQkOrUqSPp31/4//rrL3344Yeppr98+bIuXbp0S8sOCwuTp6en3n77bYf37+OPP1ZMTIwefPDBW5pvenr06KESJUrYe4OrU6eOypYtqzfffNPhJtQpUrqKdnNzU/v27bV8+XJt27Yt1Xgptbdt21Zbtmyxn7op/Xsd3wcffKCQkJCbXqdVrFgx1apVS/PmzXM4lXXNmjWprme6vltsNzc3e49/t/KZbNu2rU6fPu3Q69u1a9f0zjvvyM/Pz36KbVZJa1sj/XuDcKuMvhdZ5frPkPTvd3bTpk0O3Y9/++23qU4bBnIDjiQBt6lIkSIaM2aMXn75ZTVu3FgPP/yw8ufPrw0bNujzzz9Xy5Yt1a5du0xZlo+Pj6pUqaIvvvhCFSpUUMGCBVWtWrUMn5NuVbZsWb322msaNWqUjh07pvbt26tAgQKKjIzUV199pX79+mnEiBH68ccfNXDgQHXu3FkVKlTQtWvXNH/+fLm7u6tTp072+dWpU0c//PCDpk6dquLFiys0NDTNowNWO3bs0KeffppmbfXr17c/b9u2rQoUKKARI0akWq4ktWzZ0v5L8lNPPaW4uDh9+OGHKlKkyE2vd6latarq1aunUaNG6fz58ypYsKAWLlyYKhhWqlRJZcuW1YgRI/TXX3/J399fX375ZZrnzqf8Qz148GC1atVK7u7u9l9ar/faa6/Z7zv0zDPPKF++fJo1a5YSEhLSDA43M2/ePM2YMUMdOnRQ2bJl9c8//+jDDz+Uv7+/2rZte9Ppb7auX3nlFf3888968MEHVbp0aUVHR2vGjBkqUaKEw0X6GZVyNCmt06K6deum559/Xh06dNDgwYMVHx+vmTNnqkKFCvaL1zNT8eLFNWnSJB07dkwVKlTQF198oV27dumDDz6w39j5v//9rxYtWqSnn35aa9euVcOGDZWUlKT9+/dr0aJFWrVqVZoX0d9MUFCQRo0apfHjx6t169Z6+OGHdeDAAc2YMUP33ntvpt981MPDQ0OGDNFzzz2nlStXqnXr1vroo4/Upk0bVa1aVb1799bdd9+tv/76S2vXrpW/v7+WL18uSXr99de1evVqNWnSxN4NelRUlBYvXqxff/1VgYGBeuGFF/T555+rTZs2Gjx4sAoWLKh58+YpMjJSX375ZYZuFDthwgQ9+OCDatSokZ544gmdP39e77zzjqpWreoQ5J588kmdP39ezZo1U4kSJXT8+HG98847qlWrlv06Imf069dPs2bNUnh4uLZv366QkBAtWbJE69ev1/Tp0x06AbkVf/31V5rbPT8/P7Vv317+/v5q3LixJk+erKtXr+ruu+/W6tWrFRkZmWqajLwXWSWtz9CTTz6pJUuWqHXr1urSpYuOHDmiTz/9NEO3hABynOztTA/Iuz799FNTr1494+vra7y8vEylSpXM+PHjzZUrVxzGS6urY2P+rzvZOXPm2NvS6gJ5w4YNpk6dOsbT09Op7sCv7wI8xZdffmkaNWpkfH19ja+vr6lUqZIZMGCAOXDggDHGmKNHj5onnnjClC1b1nh7e5uCBQuaBx54wPzwww8O89m/f79p3Lix8fHxMZJu2B34zboAT2vaHj162LuxTcs333xjatSoYby9vU1ISIiZNGmSmT17dppdPVu7ojXGmCNHjpiwsDDj5eVlihYtal588UWzZs2aVF2A//HHHyYsLMz4+fmZwoULm759+5rdu3enet+uXbtmBg0aZIKCgozNZnPorjqt92zHjh2mVatWxs/Pz+TPn9888MADZsOGDQ7jpHTje31Xv9d3Vb5jxw7TvXt3U6pUKePl5WWKFCliHnroIbNt27Y011tabrSuIyIizCOPPGKKFy9uPD09TfHixU337t3NwYMHbzrftLpbNsaYQ4cOGXd39zS/F6tXrzbVqlUznp6epmLFiubTTz9NtwvwAQMGOLSlfM7eeOMNh/a0voNNmjQxVatWNdu2bTP169c33t7epnTp0ubdd99NVW9iYqKZNGmSqVq1qvHy8jJ33XWXqVOnjhk/fryJiYm5YU038+6775pKlSoZDw8PU7RoUdO/f39z4cIFh3FupQvwtMaNiYkxAQEBDt+HnTt3mo4dO5pChQoZLy8vU7p0adOlSxcTERHhMO3x48dNz549TVBQkPHy8jJlypQxAwYMcOjO+ciRI+bRRx81gYGBxtvb29StW9d8++23DvNJb3uY4ssvvzSVK1c2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np6epnTp0ubNN990mL506dLmlVdeMf/9739NgQIFTK9evcycOXNMQECA+frrr03lypWNu7u7iYyMNFeuXDHPPvusKV68uMmfP7+pW7euWbt2rcP8fv31V9OkSRPj4+NjAgMDTcuWLc358+dNr169jCSHR2RkZIZfJwDcSXLC/sU6fmRkpJFkvvzyS9O0aVPj4+NjatSoYTZs2OAwTXr7AGOMuXLlihk0aJAJCgoyXl5epmHDhmbLli32adeuXWskme+++87Url3beHh4mLVr15omTZqYAQMGmCFDhphChQqZpk2bGmOM2bt3r2ndurXx9fU1RYoUMY8//rg5e/asfX5JSUlm0qRJpmzZssbT09OULFnSvPbaa/bXZn00adIkw+sFuB4/IQPX8fPzk5+fn5YtW6aEhIQ0x1m9erXOnTunESNGpBrWrl07VahQQZ9//vktLT85OVlt2rTR+vXr9emnn+qPP/7QxIkT5e7uLknavn27unTpom7dumnv3r0aN26cRo8erblz5zrM580331TNmjW1c+dOjR49WpIUHx+vSZMm6aOPPtLvv/+uIkWKaODAgdq4caMWLlyoPXv2qHPnzmrdurUOHTokSdq1a5eaN2+uKlWqaOPGjfr111/Vrl07JSUl6a233lL9+vXVt29fRUVFKSoqSiVLlryl1w0AeZ2r9y/peemllzRixAjt2rVLFSpUUPfu3XXt2jVJN94HSNLIkSP15Zdfat68edqxY4fKlSunVq1a6fz58w7LeOGFFzRx4kTt27dPNWrUkCTNmzdPnp6eWr9+vd5//31dvHhRzZo10z333KNt27Zp5cqVOnPmjLp06WKfz6hRozRx4kSNHj1af/zxhxYsWKCiRYtKkrZs2SJJ+uGHHxQVFaWlS5dm6nrCHcbVKQ3IiZYsWWLuuusu4+3tbRo0aGBGjRpldu/ebR8+ceJEI8lcuHAhzekffvhhU7lyZftzOfFL36pVq4ybm5s5cOBAmsMfe+wx06JFC4e25557zlSpUsX+vHTp0qZ9+/YO48yZM8dIMrt27bK3HT9+3Li7u5u//vrLYdzmzZubUaNGGWOM6d69u2nYsGG69TZp0sQMGTIkQ68NAO50rty/XD9+ypGkjz76yD78999/N5LMvn37jDE33gfExcUZDw8P89lnn9nbEhMTTfHixc3kyZONMf93JGnZ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I1WwYEEFBwffcH0BAAhJAID/b+3atTpy5IjWrl2refPmae7cuZo7d26a427dulWSNGfOHEVFRdmfO6Nz586Kjo7W999/r+3bt6t27dpq3ry5zp8/L0nq0aOHSpQooa1bt2r79u164YUX5OHhoQYNGmj69Ony9/dXVFSUoqKiNGLEiFt6zZ07d9a5c+e0du1ae9v58+e1cuVK9ejRQ5IUFxentm3bKiIiQjt37lTr1q3Vrl07nThx4paWKUnJyckqUaKEFi9erD/++ENjxozRiy++qEWLFkmSRowYoS5duqh169b219igQYNU8/nrr7/Utm1b3Xvvvdq9e7dmzpypjz/+WK+99prDePPmzZOvr682b96syZMn65VXXtGaNWtuuX4AyOs43Q4AIEm666679O6778rd3V2VKlXSgw8+qIiICPXt2zfVuCmnyQUGBt7S6V+//vqrtmzZoujoaHl5eUmS3nzzTS1btkxLlixRv379dOLECT333HOqVKmSJKl8+fL26QMCAuxHiG4mJiZGfn5+Dm3333+/vv/+e911111q06aNFixYoObNm0uSlixZosKFC+uBBx6QJNWsWVM1a9a0T/vqq6/qq6++0jfffKOBAwc6/dolycPDQ+PHj7c/Dw0N1caNG7Vo0SJ16dJFfn5+8vHxUUJCwg1f44wZM1SyZEm9++67stlsqlSpkk6dOqXnn39eY8aMkZvbv7+F1qhRQ2PHjpX073p89913FRERoRYtWtxS/QCQ1xGSAACSpKpVq8rd3d3+vFixYtq7d2+WLGv37t2Ki4tToUKFHNovX76sI0eOSJKGDx+uJ598UvPnz1dYWJg6d+6ssmXLOr2sAgUKaMeOHQ5tPj4+9r979Oihvn37asaMGfLy8tJnn32mbt262QNGXFycxo0bpxUrVigqKkrXrl3T5cuXb+tIkiS99957mj17tk6cOKHLly8rMTFRtWrVcmoe+/btU/369R2usWrYsKHi4uL0559/qlSpUpL+DUlWxYoVU3R09G3VDwB5GSEJAPIwf39/xcTEpGq/ePGiAgICHNo8PDwcnttstlTX6mSWuLg4FStWzH6NjlVKr3Xjxo3TY489phUrVuj777/X2LFjtXDhQnXo0MGpZbm5ualcuXLpDm/Xrp2MMVqxYoXuvfde/fLLL5o2bZp9+IgRI7RmzRq9+eabKleunHx8fPToo48qMTEx3eVJkjHG3ma9tkuSFi5cqBEjRmjKlCmqX7++ChQooDfeeEObN2926rVlVHa+twCQFxCSACAPq1ixolavXp2qfceOHapQocJtzdvDw0NJSUm3NG3t2rV1+vRp5cuXL81OH1JUqFBBFSpU0LBhw9S9e3fNmTNHHTp0kKen5y0v+3re3t7q2LGjPvvsMx0+fFgVK1ZU7dq17cPXr1+v8PBweziLi4u7YdflKaciRkVF6Z577pGkVPc1Wr9+vRo0aKBnnnnG3pZyBC1FRl5j5cqV9eWXX8oYYz+atH79ehUoUEAlSpS48QsHAKSLjhsAIA/r37+/Dh48qMGDB2vPnj06cOCApk6dqs8//1zPPvvsbc07JCREEREROn36tC5cuODUtGFhYapfv77at2+v1atX69ixY9qwYYNeeuklbdu2TZcvX9bAgQO1bt06HT9+XOvXr9fWrVtVuXJl+7Lj4uIUERGhv//+W/Hx8ekuyxij06dPp3pYj6T06NFDK1as0OzZs+0dNqQoX768li5dql27dmn37t167LHHbngUxsfHR/Xq1dPEiRO1b98+/fTTT3r55ZdTzXPbtm1atWqVDh48qNGjR6fq/CIkJMT+nv3999+pjkZJ0jPPPKOTJ09q0KBB2r9/v77++muNHTtWw4cPtx/RAgA4jy0oAORhZcqU0c8//6z9+/crLCxM9913nxYtWqTFixc73MPoVkyZMkVr1qxRyZIl7UdMMspms+m7775T48aN1bt3b1WoUEHdunXT8ePHVbRoUbm7u+vcuXPq2bOnKlSooC5duqhNmzb2zg4aNGigp59+Wl27dlVQUJAmT56c7rJiY2NVrFixVA/rNTnNmjVTwYIFdeDAAT322GMO00+dOlV33XWXGjRooHbt2qlVq1YOR5rSMnv2bF27dk116tTR0KFDU/U299RTT6ljx47q2rWr7rvvPp07d87hqJIk9e3bVxUrVtR//vMfBQUFaf369amWc/fdd+u7777Tli1bVLNmTT399NPq06dPqlAGAHCOzVhPmgYAAACAOxxHkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALD4fy3/LPmF6X12AAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0kAAAIjCAYAAADWYVDIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATpNJREFUeJzt3QecFeW9P/5nqSoIKCpoRMESO6gYBVssKGrsLRoTFYnGXrBirNFrb/HGdhNLNBpvVDRqEhsxVuwFeyWWoGIsEERA4Pxf3+f+zv5nlwV2l122vd+v14E9c8o8Z2bOmfnMU6aiVCqVEgAAAFm7//sPAACAICQBAAAUCEkAAAAFQhIAAECBkAQAAFAgJAEAABQISQAAAAVCEgAAQIGQBAAAUCAkQTO2//77p759+zZ1MVqVzTbbLN+aSkVFRTrjjDOabP7ULLaJNddcM7UUN910U1p11VVTx44dU48ePVJb0pC/i5MnT04///nPU+/evfN38+ijj06tzQ033JA/23PPPdfURYEWRUiC+RQHvLED+ve//13j43Hg1VAH5VOmTMnz+8c//jHP58ZBRJRrXrfYgTaEc845J9111121eu4///nPuZbpvPPOSy3ZX//6V0FoLtvkEUccMdtjsU3HY7fffnuTlK0lefPNN3NQWHHFFdNvf/vb9D//8z/z/H0q3yJUxXo48sgj09dff53auvjdit/AQw45JAfPn/3sZ406v7n9Lm+zzTapObIN0VZ1aOoCAHMWB0CzZs2qEpLOPPPM/Pe8gtdll12Wz5IWD9z/+Mc/pksvvTQtscQSldM33HDDBjvY2H333dPOO+9c69fsvffeabvttptt+jrrrJNasljWV1xxRY1B6dtvv00dOrTtn97YrkeOHJmWWWaZpi5KixSBMn4Xfv3rX6eVVlqpVq+56qqrUteuXdM333yTRo8enf77v/87vfDCC+nxxx9Pbdnf//73NGjQoHT66acvsHmuvfba6dhjj51tenP/PtiGaGva9p4amrk4Y1df1cPKp59+mkNSTG8uTfjWXXfd9NOf/jS1JQsttFBqy9ZYY4301ltv5drCyy+/PLUlEWymT58+39vAhAkT8v91aWYXJzDKJ0d+8YtfpL322iv97//+b3rmmWfS+uuvn5qTqVOnpk6dOqV27Rq/sUssy9VXX73B3m/GjBl5PUf55+R73/tei/zda0nbEDQEze1gASs3K/rTn/6U/uu//istu+yy+aBpyy23TO++++4c295HE7Ull1wy/x21SeWmD/PbrOsPf/hDGjhwYFp44YXT4osvnnd8H330UZXnvPPOO2m33XbL7fajrFHmeN7EiRPz41GOOLv4+9//vrJcUfb5tf3226cVVlihxscGDx6c1ltvvcr7119/fdpiiy3SUkstlTp37pwPfOLMZ23b68fyrWk9FZs2PvbYY2mPPfZIyy23XJ5Hnz590jHHHJNrh8ric0ctUig2USmraZ29+OKLadttt03dunXLZ2pjW3jqqadqLOcTTzyRRowYkbeFLl26pF122SV9/vnnVZ4bfQ+GDh2aD2hivfbr1y8dcMABDbasH3zwwbTxxhvng/Qo7yqrrJJOPvnkVBuxPe+77765Nmn8+PH16ntSbv5TFPcPP/zwdNttt+V1H587yv3KK6/kx6+55ppc6xLbb9TCVl/fZc8//3yuXS0vt6uvvnq250ybNi3XPMT7lbeDE044IU+vqUw333xzDofx3Pvuu2+un/nKK6+sfG7ULBx22GFVmjTF8ijXesQ2UN/fgE022ST//95771WZ/vTTT+dmX927d0+LLLJI+uEPf5i3uer+9a9/peHDh+cyRlljWUWTtQiBZe+//37+vsTvSrxX1Nj85S9/qfF7duutt6ZTTjklB4h47qRJk/Lj0YQ3mizHeov/77zzzho/T7w+fscWXXTR/D1aa621ck3bnJTnO27cuFym8ve0vF1EeIrP16tXrzzvAQMG5N+3mpoNX3TRRbnmPpo/xrJ4/fXX0/waO3Zs3v7jOxnzj9/e+A5/8cUX9VoXIbbPef12zO82FNtnTb/91fuC1mU/CE1FTRI0kTiTHmdKjzvuuBw2LrjggrTPPvvkg5SaxI4tDvpj5xc7t1133TVP79+/f73LEDunU089Ne25556583LsMKMJxaabbpoP3OMgOHa0ccAdO9joSxI769gp33vvvfngLQ6moi1/vD7OJh500EH5veOAYV6i+WBNfblivtEk7cc//nE+oH722WfTD37wg8rHP/jggxwiLrzwwsppsWzi4HLHHXfMr73nnnvSoYcems/qxoFmQ4gD8ChzrIOePXvmM6ixvD7++OP8WPkMaxz8R5CI5TIvr732Wj7YiAO7ONCO2sM4oI8DikceeSRt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XzrggANKK664Yh6yefHFFy9tvvnmpYceeqjK+7z55pt5yOoYFjbmM7fhwOc1BHhNr91nn30qh7Gtyd13313q379/LmMMMXz++efnYWprGuq5OBRtiOG3431jvfXq1at08sknlx588MHZhgB//fXX8/NiGOAllliidOCBB5Zefvnl2dZbDEV8xBFH5OFxY/js4k9tTevshRdeyEMvx/sussgiefnGei4qD+Nbfajf6kOVx3vtvffepeWWWy5/nhi+evvtty8999xzc1wfdVnWo0ePLu20006lZZZZJm+D8X/M7+23367XcMvhnXfeyUMR1/S9iCGf11xzzTyvVVZZJX/P5jQEeGy3NW1nse3P6zsY20QM1x/LKYZ6ju0oyhtDcFcXw0HH9hXPj2W82GKL5e9kfN9jKPW5lWleYn7xHezYsWPeFg855JDSV199VeU59RkCvKbnRlm7d+9e5fsQQ/7vuuuupZ49e+bPFstgzz33zOu9KIaEj+GnYxuP58UQ3vFZi8M5x/dq9913L/Xo0SMvz/XXX79077331ur3sPj7FMNExzxWX3310qhRo2b7Xbz99tvz0Omxrcd2Etv+L37xi9Inn3xS723ys88+y8PUx/c83nOttdaq8h2f2/Y1r/nN6Xev+Jk+/vjj0i677JKXXayjPfbYIw+XX9Pvx7zWRW1/OxpqG4ph9L/3ve/lsmy00Ub5OzWnIcBrsx+EplIR/zR1UAMAAGgu9EkCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAANrSxWRnzZqVrx4fF3+rqKho6uIAAABNJK5+FBdajwuIz+3C1q0+JEVA6tOnT1MXAwAAaCY++uijtOyyy7bdkBQ1SOUF0a1bt6YuDgAA0EQmTZqUK1DKGaHNhqRyE7sISEISAABQMY9uOAZuAAAAKBCSAAAACoQkAACAttQnCQAAmpMYhnrGjBlp5syZTV2UVqd9+/apQ4cO833pHyEJAAAWkOnTp6dPPvkkTZkypamL0motssgiaemll06dOnWq93sISQAAsADMmjUrjRs3Ltd2xMVM4yB+fms8qFpDFyH0888/z8t55ZVXnusFY5ttSDrjjDPSmWeeWWXaKquskt58883899SpU9Oxxx6bbr311jRt2rQ0dOjQdOWVV6ZevXo1UYkBAKB+4gA+glJcpydqO2h4Cy+8cOrYsWP64IMP8vJeaKGFWubADWussUaucizfHn/88crHjjnmmHTPPfek2267LT3yyCNp/Pjxadddd23S8gIAwPyob+0GC275Nnlzu+hY1bt379mmT5w4MV177bXplltuSVtssUWedv3116fVVlstPfXUU2nQoEFNUFoAAKC1a/IY+8477+Q2mSussELaZ5990ocffpinP//88+m7775LQ4YMqXzuqquumpZbbrk0ZsyYOb5fNMubNGlSlRsAAECLqEnaYIMN0g033JD7IUVTu+iftMkmm6RXX301ffrpp7kzW48ePaq8JvojxWNzcu65587WzwkAAJqzirH3LND5lfrvsEDn19I0aU3Stttum/bYY4/Uv3//PCjDX//61/T111+nP/3pT/V+z5EjR+ameuXbRx991KBlBgCAtmb//ffPI/HFLQZG6NevXzrhhBPyQGuNbdSoUWnrrbdOPXv2zPN/6aWXWn9zu6KoNfr+97+f3n333dxPKUakiNBU9Nlnn9XYh6msc+fOqVu3blVuAADA/Nlmm21y66/3338/XXrppemaa65Jp59+eqPP95tvvkkbb7xxOv/889OC0qxC0uTJk9N7772XL/40cODAnFJHjx5d+fhbb72V+ywNHjy4ScsJAABtTefOnXNlRQxhvvPOO+exAx588MHKx/v27Zsuu+yyKq9Ze+2182V/yqIm6He/+13aZZdd8jDocS2ju+++e67z/dnPfpZOO+20KmMVtOqQdNxxx+Whvf/5z3+mJ598Mi+suLjW3nvvnbp3756GDx+eRowYkR5++OE8kMOwYcNyQDKyHQAANJ1XX301H7/HGAJ1FeMH7Lnnnmns2LFpu+22y4O3ffnll6k5adKBGz7++OMciL744ou05JJL5mq0GN47/g5RjRfjnO+2225VLiYLAAAsWPfee2/q2rVrmjFjRj42j+P03/zmN/Xq3xQZIJxzzjnp8ssvT88880xuztdcNGlIuvXWW+f6eFwh94orrsg3AACg6Wy++ebpqquuyn2EojIjrncalRl1FYO2lXXp0iWPITBhwoTUnDSrPkkAAEDz1KVLl7TSSiulAQMGpOuuuy49/fTT6dprr618PGqWSqVSldfEdU+ri3EHiqKf0qxZs1JzIiQBAAB10q5du3TyySenU045JX377bd5WnSZidHvyiZNmpTGjRuXWiIh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2qxZsxqqXAAAAC1jdLthw4al4cOHp/fee69yRLunn346nXfeefkxAACANhWSLrroojz898UXX5yvlRSWXnrpdPzxx6djjz22McoIAADQPENSNLW75ZZb0n777ZdOOOGENGnSpDzdgA0AAECb7JPUoUOHdPDBB6epU6dWhiMBCQAAaNMDN0Q/pBdffLFxSgMAANDS+iTF9ZCi79HHH3+cBg4cmLp06VLl8f79+zdk+QAAAJp3SNprr73y/0ceeWTltIqKilQqlfL/cWFZAACANhOSxo0b1zglAQAAaIkhafnll2+ckgAAALTEgRtCXEj2iCOOSEOGDMm3aHoX0+rqqquuyn2YyqPkDR48OP3tb3+rfDxG0TvssMNSz549U9euXdNuu+2WPvvss/oUGQAAoHFC0v33359WX3319Mwzz+SAE7enn346rbHGGunBBx+s03stu+yy6bzzzkvPP/98eu6559IWW2yRdtppp/Taa6/lx4855ph0zz33pNtuuy098sgjafz48WnXXXeta5EBAABqraIUIy7UwTrrrJOGDh2aw03RSSedlB544IH0wgsvpPmx+OKLpwsvvDDtvvvuackll8wXr42/w5tvvplWW221NGbMmDRo0KBavV9c8LZ79+5p4sSJzeKaThVj72nqItDSDdixqUtAC1fHn30AaDVqmw3qXJP0xhtvpOHDh882/YADDkivv/56qq8YFe/WW29N33zzTW52F7VL3333XW7OV7bqqqum5ZZbLoekOZk2bVr+8MUbAABAbdU5JEXtzksvvTTb9Ji21FJL1fXt0iuvvJL7G3Xu3DkdfPDB6c4778zN+T799NPUqVOn1KNHjyrP79WrV35sTs4999ycDsu3Pn361LlMAABA21Xn0e0OPPDAdNBBB6X3338/bbjhhnnaE088kc4///w0YsSIOhdglVVWyQErqrxuv/32tN9+++X+R/U1cuTIKuWImiRBCQAAaLSQdOqpp6ZFF100XXzxxTmQhGWWWSadccYZVS4wW1tRW7TSSivlvwcOHJieffbZ9Otf/zr9+Mc/TtOnT09ff/11ldqkGN2ud+/ec3y/qJGKGwAAwAJpbldRUZFHnfv4449z7U/c4u+jjjoqPza/Zs2alfsVRWDq2LFjGj16dOVjb731Vvrwww9znyUAAIBmUZM0bty4NGPGjLTyyivnGqWyd955J4eavn371vq9oiZq2223zYMx/Oc//8kj2f3jH//Iw4xHf6IYICKazsWIdzH6RFybKQJSbUe2AwAAaPSapP333z89+eSTs02PayXFY3UxYcKEtO++++Z+SVtuuWVuahcBaauttsqPX3rppWn77bfPF5HddNNNczO7UaNG1bXIAAAAjXedpKjRiWshlfsRlb377rtpvfXWy32ImhPXSaLVcZ0k5pPrJAHQVk1qrOskRb+jaBpXXcwornUEAADQktU5JEWzt7gWUTEQxd8xbeONN27o8gEAADTvgRviekgRlKIf0SabbJKnPfbYY7nq6u9//3tjlBEAAKD51iStvvrqaezYsWnPPffMAy9E07sYfOHNN99Ma665ZuOUEgAAoLnWJJUvHnvOOec0fGkAAABaWk1SuXndT3/607Thhhumf/3rX3naTTfdlB5//PGGLh8AAEDzDkl33HFHGjp0aFp44YXzUODTpk2rHN1O7RIAANDmQtLZZ5+drr766vTb3/42dezYsXL6RhttlEMTAABAmwpJb731Vh7drrq4KFNzu5AsAABAo4ek3r17p3fffXe26dEfaYUVVqhzAQAAAFp0SDrwwAPTUUcdlZ5++ulUUVGRxo8fn26++eZ03HHHpUMOOaRxSgkAANBchwA/6aST0qxZs9KWW26ZpkyZkpvede7cOYekI444onFKCQAAsIBUlEqlUn1eOH369NzsbvLkyfkCs127dk3ffvttHvWuOZk0aVLuLxWj73Xr1q2pi5Mqxt7T1EWgpRuwY1OXgBaunj/7ANDi1TYb1Os6SaFTp045HK2//vp5lLtLLrkk9evXr75vBwAA0CzUOiTF9ZBGjhyZ1ltvvXwR2bvuuitPv/7663M4uvTSS9MxxxzTmGUFAABoPn2STjvttHTNNdekIUOGpCeffDLtscceadiwYempp57KtUhxv3379o1bWgAAgOYSkm677bZ04403ph133DG9+uqrqX///mnGjBnp5ZdfzqPcAQAAtKnmdh9//HEaOHBg/nvNNdfMI9pF8zoBCQAAaJMhaebMmXmwhrIOHTrkEe0AAADaZHO7GDJ2//33zzVIYerUqenggw9OXbp0qfK8UaNGNXwpAQAAmltI2m+//arc/+lPf9oY5QEAAGgZISmG+gYAAGjt6n0xWQAAgNZISAIAACgQkgAAAAqEJAAAgLqGpHXXXTd99dVX+e9f/epXacqUKbV5GQAAQOsMSW+88Ub65ptv8t9nnnlmmjx5cmOXCwAAoPkOAb722munYcOGpY033jhfVPaiiy5KXbt2rfG5p512WkOXEQAAoHmFpBtuuCGdfvrp6d57700VFRXpb3/7W+rQYfaXxmNCEgAA0OpD0iqrrJJuvfXW/He7du3S6NGj01JLLdXYZQMAAGieIalo1qxZjVMSAACAlhiSwnvvvZcuu+yyPKBDWH311dNRRx2VVlxxxYYuHwAAQPO+TtL999+fQ9EzzzyT+vfvn29PP/10WmONNdKDDz7YOKUEAABorjVJJ510UjrmmGPSeeedN9v0E088MW211VYNWT4AAIDmXZMUTeyGDx8+2/QDDjggvf766w1VLgAAgJYRkpZccsn00ksvzTY9phnxDgAAaHPN7Q488MB00EEHpffffz9tuOGGedoTTzyRzj///DRixIjGKCMAAEDzDUmnnnpqWnTRRdPFF1+cRo4cmacts8wy6YwzzkhHHnlkY5QRAABggakolUql+r74P//5T/4/QlNzNWnSpNS9e/c0ceLE1K1bt6YuTqoYe09TF4GWbsCOTV0CWrj5+NkHgBatttmgXtdJKmvO4QgAAGCBDNwAAADQmglJAAAABUISAABAfUPSd999l7bccsv0zjvv1OVlAAAArTMkdezYMY0dO7bxSgMAANDSmtv99Kc/Tddee23jlAYAAKCJ1XkI8BkzZqTrrrsuPfTQQ2ngwIGpS5cuVR6/5JJLGrJ8AAAAzTskvfrqq2ndddfNf7/99ttVHquoqGi4kgEAALSEkPTwww83TkkAAABa8hDg7777brr//vvTt99+m++XSqWGLBcAAEDLCElffPFFHgb8+9//ftpuu+3SJ598kqcPHz48HXvssY1RRgAAgOYbko455pg8FPiHH36YFllkkcrpP/7xj9N9993X0OUDAABo3n2SHnjggdzMbtlll60yfeWVV04ffPBBQ5YNAACg+dckffPNN1VqkMq+/PLL1Llz54YqFwAAQMsISZtsskm68cYbqwz7PWvWrHTBBRekzTffvKHLBwAA0Lyb20UYioEbnnvuuTR9+vR0wgknpNdeey3XJD3xxBONU0oAAIDmWpO05ppr5ovIbrzxxmmnnXbKze923XXX9OKLL6YVV1yxcUoJAADQXGuSQvfu3dMvf/nLhi8NAABASwxJX331Vbr22mvTG2+8ke+vvvrqadiwYWnxxRdv6PIBAAA07+Z2jz76aOrbt2+6/PLLc1iKW/zdr1+//BgAAECbqkk67LDD8oVjr7rqqtS+ffs8bebMmenQQw/Nj73yyiuNUU4AAIDmWZP07rvvpmOPPbYyIIX4e8SIEfkxAACANhWS1l133cq+SEUxbcCAAQ1VLgAAgObb3G7s2LGVfx955JHpqKOOyrVGgwYNytOeeuqpdMUVV6Tzzjuv8UoKAACwAFSUSqXSvJ7Url27VFFRkeb11HhO9E9qTiZNmpSHLJ84cWLq1q1bUxcnVYy9p6mLQEs3YMemLgEtXC1+9gGgVaptNqhVTdK4ceMasmwAAADNVq1C0vLLL9/4JQEAAGipF5MdP358evzxx9OECRPSrFmzqjwWfZYAAADaTEi64YYb0i9+8YvUqVOn1LNnz9wPqSz+FpIAAIA2FZJOPfXUdNppp6WRI0fmAR0AAABakzqnnClTpqS99tpLQAIAAFqlOied4cOHp9tuu61xSgMAANDSmtude+65afvtt0/33XdfWmuttVLHjh2rPH7JJZc0ZPkAAACaf0i6//770yqrrJLvVx+4AQAAoE2FpIsvvjhdd911af/992+cEgEAALSkPkmdO3dOG220UeOUBgAAoKWFpKOOOir993//d+OUBgAAoKU1t3vmmWfS3//+93TvvfemNdZYY7aBG0aNGtWQ5QMAAGjeNUk9evRIu+66a/rhD3+YllhiidS9e/cqt7oOAvGDH/wgLbroommppZZKO++8c3rrrbeqPGfq1KnpsMMOSz179kxdu3ZNu+22W/rss8/qWmwAAIBaqSiVSqXURLbZZpt8YdoISjNmzEgnn3xyevXVV9Prr7+eunTpkp9zyCGHpL/85S/phhtuyCHs8MMPzxeyfeKJJ2o1j0mTJuXXTZw4MXXr1i01tYqx9zR1EWjpBuzY1CWghWvCn30AaFK1zQZNGpKq+/zzz3ON0iOPPJI23XTTXPgll1wy3XLLLWn33XfPz3nzzTfTaqutlsaMGZMGDRo0z/cUkmh1hCTmUzP62QeABaq22aDOfZL69es31+shvf/++6m+orBh8cUXz/8///zz6bvvvktDhgypfM6qq66alltuuTmGpGnTpuVbcUEAAADUVp1D0tFHH13lfoSYF198Md13333p+OOPT/U1a9as/N4xvPiaa66Zp3366aepU6dOuR9UUa9evfJjc+rndOaZZ9a7HAAAQNvWoT5DgNfkiiuuSM8991y9CxKDM0R/pMcffzzNj5EjR6YRI0ZUqUnq06fPfL0nAADQdtR5dLs52XbbbdMdd9xRr9fGYAwxpPjDDz+cll122crpvXv3TtOnT09ff/11lefH6Hbx2JwudhvtC4s3AACABR6Sbr/99sq+RHXpPBwB6c4778zXXor+TkUDBw7M12EaPXp05bQYIvzDDz9MgwcPbqiiAwAA1L+53TrrrFNl4IYIOtE/KEamu/LKK+vcxC5Grvvzn/+cr5VU7mcUI04svPDC+f/hw4fn5nMRwKJW6IgjjsgBqTYj2wEAADR6SIoLvhbFNYtimO7NNtssjzxXF1dddVX+P15bdP3116f9998//33ppZfmecRFZGPUuqFDh9Y5jAEAANRWs7pOUmNwnSRaHddJYj618p99AJjvbNBgfZIAAADaVHO7aPI2t4vIhnh8xowZDVEuAACA5h2SYgS6ORkzZky6/PLL8wVhAQAA2kRI2mmnnWabFsNxn3TSSemee+5J++yzT/rVr37V0OUDAABYoOrVJ2n8+PHpwAMPTGuttVZuXvfSSy+l3//+92n55Zdv+BICAAA015AUo0CceOKJaaWVVkqvvfZavshr1CKtueaajVdCAACA5tjc7oILLkjnn39+6t27d/rjH/9YY/M7AACANnOdpBjdbuGFF05DhgxJ7du3n+PzRo0alZoT10mi1XGdJOaT6yQB0FZNqmU2qHVN0r777jvPIcABAABaulqHpBtuuKFxSwIAANBSR7cDAABorYQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAA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ueee+cLGDz/8cOrRo0d66KGH0gknnJDGjBmT/vSnP+Uf6+YgPkunTp2qTIsdbZSvXTvnSgDayv4lQllTiivPxP6nQ4cO89xPQZOK6yQB/7+vvvoqrh1W+sc//jHH50yePLnUs2fP0q677jrbY3fffXd+/a233lo5Le7feeeddSrDQQcdVFpqqaVKnTt3Lq2xxhqle+65p/Lx22+/vbT66quXOnXqVFp++eVLF110UZXXx7Rf/epXpZ/97GelRRddtLTffvuVrr/++lL37t1Lf/7zn0urrbZaqX379qVx48aVpk6dWjr22GNLyyyzTGmRRRYprb/++qWHH364yvs9/vjjpR/+8IelhRdeuNSjR4/S1ltvXfryyy/z+8ZnK97iPQFonvuX4vPj9zru33HHHaXNNtss/8b379+/9OSTT9ZqHxBiH3LEEUeUllxyyby/2mijjUrPPPNM5WtjfxLz+Otf/1pad911Sx07dszT4v0OO+yw0lFHHZU/b8w/vPLKK6Vtttmm1KVLl7wP/OlPf1r6/PPPK99v5syZpfPPP7+04oor5n1gnz59SmeffXblZyveYh5QX04hQzVdu3bNt2i+MG3atBqf88ADD+Szfscdd9xsj+2www7p+9//fvrjH/9Yr/nPmjUrN4WIphd/+MMf0uuvv57OO++81L59+/z4888/n88w7rXXXumVV15JZ5xxRjr11FPTDTfcUOV9LrroojRgwID04osv5sfDlClT0vnnn59+97vfpddeey0ttdRS6fDDD89nJm+99dY0duzYtMcee6RtttkmvfPOO/k10Wxhyy23TKuvvnp+3uOPP54/Y5wJ/PWvf50GDx6cDjzwwNyEI259+vSp1+cGaO2aev8yJ7/85S/z/OL3Pt5/7733TjNmzJjnPiBE7dYdd9yRa8ZeeOGFtNJKK+Xmg19++WWVeZx00kl5X/bGG2+k/v3752nxmqg9iv3d1Vdfnb7++uu0xRZbpHXWWSc999xz6b777ss1bbHPKxs5cmR+n9ivxf7xlltuSb169cqPPfPMM/n/qHWL/dGoUaMadDnRxtQ7XkErFjU1iy22WGmhhRYqbbjhhqWRI0eWXn755crHzzvvvHyWKs4K1mTHHXfMtTX1OdN3//33l9q1a1d66623anz8Jz/5SWmrrbaqMu3444/PNUvFmqSdd965ynOiJinK8dJLL1VO++CDD3KN0r/+9a8qz91yyy3zZw577713PjM4J3GmLs4EAtC89y9zqkn63e9+V/n4a6+9lqe98cYb89wHRK1X1AzdfPPNldOmT5+eWyZccMEFVWqS7rrrrtn2Heuss06VaWeddVaupSr66KOP8utjnzhp0qRcW/Xb3/62xvKUP8+LL75Y6+UBc6ImCebQZnz8+PHp7rvvzrUq//jHP9K66647W23N/+1valbfttVx1m7ZZZfNZ/NqEmfhNtpooyrT4n7U/BQ79K633no1lql8Bi9ETVS8JuZVPsMZt0ceeSS99957Vc4iAtCy9y9zUtwvLL300vn/CRMmzHMfEPuJ7777rso+qWPHjmn99dfP+6qimvZJAwcOrHL/5Zdfzn2wivujVVddtXJe8Z5RA2efxIJg4AaYgxhNaKuttsq3qNb/+c9/nk4//fS0//77p5VXXjk/J36wN9xww9leG9PXXnvtes134YUXTg2hS5cuNb53sbPv5MmTczO+aMJXbs5XFjunhiwPAE27f5mTCDZl5X1ENP1u7H1S9WmxT4qmfNEsvLoIb++//36DlAVqQ00S1FK0x/7mm2/y39HeevHFF08XX3zxbM+Ls4NRqxM7u/qe0fv444/T22+/XePjq6222mxDxcb9qA2qHnTmJdp9R01SnDGMduTFW3kEpChPjLw0tzOa1YekBaD57V/qY277gBVXXLGyT1FZ1Cw9++yz+TPVVdSoRX/Zvn37zrZPikAVATJC25zKU65hs0+iIQhJUE10mI2OozFoQgxkMG7cuHTbbbelCy64IO200075OfFjfc0116Q///nP6aCDDsrPi+szXHvttXnnFQMZxPUtiuJ9otlC8VbeKRb98Ic/TJtuumlukvHggw/m1/3tb3/LHVjDsccem3cQZ511Vg5S0fH1N7/5TY2dfOclgtU+++yT9t1339zBNeYVHV/PPffc9Je//KWyk2zs8A499ND8Od9888101VVXpX//+9/58diZPf300/nzx7Ty2UcAmtf+pT7mtg+IssY1n44//vi8j4qBFKJ8MUjQ8OHD6zyvww47LA/4EANHxDyjid3999+fh0KP4BM1cCeeeGIeLOLGG2/Mjz/11FN52YQYjChCVHnAh4kTJzbIMqCNmmNvJWijYjjTk046KQ9VGkNmx7DYq6yySumUU04pTZkypcpzH3300dLQoUNL3bp1qxxyNIYmra76sKTl22OPPVZjGb744ovSsGHD8rCo0bl3zTXXLN17772zDQEeHWaXW2650oUXXljl9TFww6WXXlplWnkI8Oqik+1pp51W6tu3b36/pZdeurTLLruUxo4dW/mcGK42OhhHh9kY/jU+c7lTcXSmHTRoUB4a1hDgAM17/1LTwA3FgQ7Kw5QXLwUxt33At99+m4cAX2KJJeY6BHj1gSjmNOjP22+/nfdBMZ/Yr6y66qqlo48+ujRr1qzKIcBjyO/Yz5X3geecc07l62NQhxgWPAZAMgQ486Mi/mnqoAatwdSpU/OZwI8++igPfLDkkks2dZEAaAXsX2DBE5KggXdkl112WW43Hc3lAKAh2L/AgiUkAQAAFBi4AQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCoFb69u2bhyCm6ZbNP//5z1RRUZFeeumlRp8XQFsmJAG0Yptttlk6+uijZ5t+ww03pB49etTpvZ599tl00EEHVd6Pg/W77rprjs+PecRz5naLg/76qG3551SGhRZaKDV3+++/f9p5552rTOvTp0/65JNP0pprrtlk5QJoCzo0dQEAaBmWXHLJOj3/xz/+cdpmm20q7++666754P5Xv/pVvd+zPrp165beeuutKtMiKLVE7du3T717927qYgC0emqSAKistbjooovS0ksvnXr27JkOO+yw9N1339XYpCz+DrvssksOHOX7RQsvvHA+oC/fOnXqlBZZZJHK+1Gb84tf/CIHpQgyW2yxRXr55ZcrXx9/b7755mnRRRfNjw8cODA999xz6R//+EcaNmxYmjhxYmXN0BlnnDHHzxaPF8sRt169euXH/ud//icts8wyadasWVVes9NOO6UDDjgg//3ee+/l+/Garl27ph/84AfpoYceqlOTuK+//jpPi7KHmTNnpuHDh6d+/frl5bTKKqukX//615XPj8/z+9//Pv35z3+u/Izx2pre+5FHHknrr79+6ty5c153J510UpoxY0aV2sQjjzwynXDCCWnxxRfPn39uywsAIQmA/+fhhx/OgSD+jwP0aKoWtzk1vQvXX399bv5Vvl8Xe+yxR5owYUL629/+lp5//vm07rrrpi233DJ9+eWX+fF99tknLbvssvm94/E4+O/YsWPacMMNc1iL4BTzjttxxx1Xr88cZfjiiy/yZy6L+d933315/mHy5Mlpu+22S6NHj04vvvhirh3bYYcd0ocffpjqK0JZfLbbbrstvf766+m0005LJ598cvrTn/6UH4/Ps+eee+Z5lT9jfO7q/vWvf+WyRXCLUHnVVVela6+9Np199tlVnhfrs0uXLunpp59OF1xwQa7Ne/DBB+tdfoDWTnM7ALLFFlss/eY3v8lNulZdddX0ox/9KAeDAw88cLbnlpvJRb+g+jT/evzxx9MzzzyTQ1LUgISoxYo+Trfffnvu+xQh5Pjjj89lCSuvvHLl67t3715ZQzQvUeMUNUBFm2yySQ5n8Zm33XbbdMstt+SAFmL+SyyxRK7FCgMGDMi3srPOOivdeeed6e67706HH354qo8Ie2eeeWbl/ahRGjNmTA5JEY6ivFHDNG3atLl+xiuvvDL3U4r1FssjltX48ePTiSeemINXu3b/dy60f//+6fTTT69cjvH8WLdbbbVVvcoP0NoJSQBka6yxRg5IZdF065VXXmmUeUWtR9TQRLO+om+//TbXZoURI0akn//85+mmm25KQ4YMybU+K664Yp3nFc31XnjhhSrTIoCURY1RBMEIHBHYbr755rTXXntVBowoZzRP+8tf/pJrdKIpW5RzfmqSwhVXXJGuu+66/D7xftOnT09rr712nd7jjTfeSIMHD67Sx2qjjTbKZf7444/TcsstVxmSimLdRkAFoGZCEkArFk3SoialuugjE7Ux1Ws3iuLAu3pfnYYSB/FxoF7uo1NUHrUugslPfvKTHE6i1idqQm699dbcD6ouIuystNJKc3w8ms6VSqU8n2i29thjj6VLL7208vFo+hZN06KmK94nAtbuu++eQ82c5hfiPcuKfbtCfI5434svvjiHnAhyF154YW4O1xgW5LoFaA2EJIBWLAYEeOCBB2abHjUr3//+9+f7wDsGIKiP6H/06aefpg4dOtQ46ENZlDFuxxxzTNp7771zH6gISTEIRH3nXV0MIBEj70UN0rvvvpuXWZSv7IknnsgDW5TDWQS8uQ1dXm6KGLVO66yzTv67+nWN4j2jj9Ghhx5aOa1cg1ZWm8+42mqrpTvuuCMHsnJtUrx3hK7o8wRA/Ri4AaAVO+SQQ9Lbb7+dRzcbO3ZsHgr7kksuSX/84x/TscceO1/vHeEm+rVE2Pnqq6/q9NpoPhc1KDGiXoS4CB1PPvlk+uUvf5lHsIvmZ9HfJ2qaPvjgg3zgHwM4RCgozzvCSsz/3//+d5oyZcoc5xUBIspY/VasSYkmd1GTFM3fygM2lEUfnlGjRuWgE80Eo3ZrbrUwUdM0aNCgdN555+XmcDH63CmnnDLbe8bnvP/++/P6OfXUU2cb/CI+Y3mdxWesXhsVImR99NFH6YgjjkhvvvlmHg0vatyiqWK5RguAuvMLCtCKrbDCCunRRx/NB9ARTDbYYIM8OECMqla8hlF9RFOxaIYWAweUa0xqK2o9/vrXv6ZNN900D+cdtUXRDygCUQy1HX2jYtS5fffdNz8WgxnEAAvlwQ6iFubggw/O12KKmpsYsW1OJk2alJv2Vb8V++TE8OMxPHYEkghBRREqY4CHmGc0zRs6dGiVmqaaRNiKvksxbHlczLf6aHMx9HnUXkX5Y53EZy3WKoXoJxW1Wuutt17+jBEUq/ve976Xl2MMghGDS8QyiaHFq4cyAOqmolRsNA0AANDGqUkCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACA9P/7/wAmsBIZ8DCxoQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -2087,7 +1549,7 @@ }, { "cell_type": "code", - "execution_count": 187, + "execution_count": 39, "id": "7228eac7-e0a9-473d-9432-e558bbc91841", "metadata": {}, "outputs": [ @@ -2125,15 +1587,15 @@ " \n", " 1\n", " 3\n", - " 2\n", + " 1\n", " \n", " \n", " 4\n", - " 15\n", + " 13\n", " \n", " \n", " 5\n", - " 33\n", + " 36\n", " \n", " \n", " 2\n", @@ -2142,11 +1604,11 @@ " \n", " \n", " 4\n", - " 15\n", + " 13\n", " \n", " \n", " 5\n", - " 34\n", + " 36\n", " \n", " \n", "\n", @@ -2155,15 +1617,15 @@ "text/plain": [ " Number of records\n", "run evaluation_score \n", - "1 3 2\n", - " 4 15\n", - " 5 33\n", + "1 3 1\n", + " 4 13\n", + " 5 36\n", "2 3 1\n", - " 4 15\n", - " 5 34" + " 4 13\n", + " 5 36" ] }, - "execution_count": 187, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -2188,13 +1650,13 @@ }, { "cell_type": "code", - "execution_count": 188, + "execution_count": 40, "id": "b2a18a78-55ec-43f6-9d62-929707a94364", "metadata": {}, "outputs": [ { "data": { - "image/png": "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5eWlKlWquLSNyx3HJWnDhg2aMWOGEhMTne4Js4afgnwXF1z8syEV/FgoFWwfclWVKlVyhbmyZctqz549V9wn4E6EJKCEu/vuu7V48WJt3LhRPXv21FtvvaXatWurQYMGjmVee+01xcbGqmfPnnrkkUcUFhbmuP7+4pu5L5bfjeIXD4aQlJSk9u3bq3bt2nr22WcVEREhHx8fvf/++5o3b16uv7gXBU9Pz0Lpp1y5curevbu6d++utm3batu2bTp06JDj3qXCZv0rsiTHZzV+/Ph8R5K6MHxw69atlZSUpHfffVcffPCBXnnlFc2bN0+LFi1yOtOSlwEDBujJJ5/Un3/+qcDAQL333nsaOHCgvLz+36G/f//+atWqldauXasPPvhAzzzzjGbPnq01a9aoS5cuBX6P1atX17333quXXnpJEydOzDW/oPuZVV7fd377gDGmgJX+Pxe+h2eeeUY333xznstc/Ev9xd+lO1SpUsUxxHXXrl1Vvnx5PfTQQ2rXrp169+4t6e/3Vr9+fT377LN59hEREVFk9V3tZzR69Gh169ZN69atU0JCgiZNmqSZM2dq69atuuWWWwqpyrzZ7farCgp5+fTTT9W9e3e1bt1aCxcuVKVKleTt7a2lS5dq1apVV9Tn1f4cFGQfcvVntjB/NoGSgJAElHCtW7dWpUqV9Oabb6ply5baunVrroEQVq9ererVq2vNmjVO/7FNmTLlsv2XLVs2zxGmLv7r8Pr165WRkaH33nvP6a+YeY2gV9ARui6Ekv379zud3bjQVlShxapRo0batm2bjhw5osjISNWoUUPffffdJdeJjIzUnj17lJOT4/QL1b59+xzzL+XCWRpvb+8CPc/lwiiHQ4cO1ZkzZ9S6dWtNnTq1QCFp2rRpeuedd1SxYkWlpaU5BvuwqlSpkh588EE9+OCDSklJ0a233qonn3zSpZAk/X026bXXXtPs2bNzzbtwNubife3i/awwXXyJojFGBw8edJyFq1GjhiQpKCio0J+rExkZqf379+dqL+g+4op//vOfmjdvnp544gn16tVLNptNNWrU0DfffKP27dtf8uexRo0aysnJ0Q8//JBvULT+nFrPMGZmZio5OblAn11kZKS2bNmiM2fOOAXPvD6jC3WNGzdO48aN04EDB3TzzTdr7ty5eu211y67rfxqd9cx5p133pGvr68SEhJkt9sd7UuXLnVariDfRVHJax9yx88sUJJwTxJQwnl4eKhv375av369Vq5cqfPnz+e61O7CX/Csf7HbsWOHtm/fftn+a9SoodTUVKdLIo4cOeI0wlp+20hNTc31H70k+fv75xm8LtaoUSOFhYVp0aJFTpegbNy4UXv37tWdd9552T4K4ujRo3neA5KZmaktW7bIw8PDceamT58++uabb3K9f+n/vfeuXbvq6NGjTveKnT9/Xi+88IICAgLUpk2bS9YTFhamtm3bavHixXnew2N9btPFl5EFBAQoKioqz2GcL1anTh3Vr19fb775pt58801VqlRJrVu3dszPzs7OdS9ZWFiYKleuXKD+L1ajRg3de++9Wrx4sY4ePeo0LygoSOXLl881Ct3ChQtd3k5BrVixQqdPn3ZMr169WkeOHHGEv4YNG6pGjRqaM2eOzpw5k2v9q3l+VteuXfXll186/Qymp6frpZdeUtWqVQt0SVVBeXl5ady4cdq7d6/effddSX+fIfztt9/08ssv51r+r7/+Unp6uiSpZ8+e8vDw0PTp03OdDb6wv3fo0EE+Pj56/vnnnX7+X331VaWmphbo57Rr1646f/680yMDsrOzcz2E+OzZszp37pxTW40aNRQYGHhF+2RxHWMuxdPTUzabzekMzM8//6x169Y5LVeQ76Ko5LUPXfgjgvVnNjs7+7KjiQKlBWeSADfauHGj4y/LVs2bN3f6i+2AAQP0wgsvaMqUKapfv77jvoYL7rrrLq1Zs0a9evXSnXfeqeTkZC1atEjR0dF5/vJndffdd2vChAnq1auXRo0apbNnzyo+Pl433XST003Fd9xxh3x8fNStWzf985//1JkzZ/Tyyy8rLCws1y/6DRs2VHx8vGbMmKGoqCiFhYXl+iuu9PeZlNmzZ2vo0KFq06aNBg4cqGPHjum5555T1apVNWbMmAJ9jpdz+PBhNW7cWLfffrvat2+v8PBwpaSk6L///a+++eYbjR492nGfyyOPPKLVq1erX79+uv/++9WwYUOdOHFC7733nhYtWqQGDRrogQce0OLFixUbG6tdu3apatWqWr16tT7//HPNnz/fabCA/CxYsEAtW7ZU/fr1NXz4cFWvXl3Hjh3T9u3bdfjwYX3zzTeS/r5Bu23btmrYsKFCQ0O1c+dOrV69Wg899FCB3vuAAQM0efJk+fr6atiwYU5nvk6fPq0qVaqob9++atCggQICAvThhx/qq6++yvfZQ5fz+OOPa+XKldq/f7/q1q3rNO8f//iHZs2apX/84x9q1KiRPvnkE/34449XtJ2CCA0NVcuWLTV06FAdO3ZM8+fPV1RUlGPobg8PD73yyivq0qWL6tatq6FDh+qGG27Qb7/9po8++khBQUFav379FW174sSJ+u9//6suXbpo1KhRCg0N1fLly5WcnKx33nmn0C/pio2N1eTJkzV79mz17NlT9913n9566y2NGDFCH330kVq0aKHs7Gzt27dPb731lhISEtSoUSNFRUXp8ccf13/+8x+1atVKvXv3lt1u11dffaXKlStr5syZqlChguLi4jRt2jR17txZ3bt31/79+7Vw4ULddtttTjfr56dbt25q0aKFJk6cqJ9//lnR0dFas2ZNrpD+448/qn379urfv7+io6Pl5eWltWvX6tixY3meBb2c4jjGXO44fuedd+rZZ59V586ddc899yglJUULFixQVFSU0x+nCvJdFKWL96G6deuqadOmiouL04kTJxQaGqo33nhD58+fL9I6gBLDPYPqAde3Sw0dqzyGSc7JyTERERFGkpkxY0au/nJycsxTTz1lIiMjjd1uN7fccovZsGFDnsN766Lhlo0x5oMPPjD16tUzPj4+platWua1117Lcwjw9957z8TExBhfX19TtWpVM3v2bLNkyZJcw8QePXrU3HnnnSYwMNBIcgwHntfQscYY8+abb5pbbrnF2O12ExoaagYNGmQOHz7stMyQIUOMv79/rveeV50XS0tLM88995zp1KmTqVKlivH29jaBgYGmWbNm5uWXX3YaXtcYY44fP24eeughc8MNNxgfHx9TpUoVM2TIEPPnn386ljl27JgZOnSoKV++vPHx8TH169fP9b1dGPY6v+GMk5KSzODBg014eLjx9vY2N9xwg7nrrrvM6tWrHcvMmDHDNG7c2ISEhBg/Pz9Tu3Zt8+STT5rMzMxLvucLDhw44NivPvvsM6d5GRkZ5pFHHjENGjQwgYGBxt/f3zRo0MAsXLjwsv3mNdzyBReGUrYOAW7M38MgDxs2zAQHB5vAwEDTv39/k5KSku8Q4H/88UeufvPaBy4ebvzCfvbf//7XxMXFmbCwMOPn52fuvPNOc+jQoVzr79692/Tu3duUK1fO2O12ExkZafr372+2bNly2ZouJSkpyfTt29eEhIQYX19f07hxY7Nhw4Zcy8nFIcDzW3bq1Km5htifPXu2qVu3rrHb7aZs2bKmYcOGZtq0aSY1NdVp3SVLljh+BsuWLWvatGljNm/e7LTMiy++aGrXrm28vb1NxYoVzb/+9S9z8uRJp2Uu/i6sjh8/bu677z4TFBRkgoODzX333Wd2797tdMz7888/zciRI03t2rWNv7+/CQ4ONk2aNDFvvfXWZT+bS+2TV3OMudz2CnIcf/XVV03NmjWN3W43tWvXNkuXLs332HW57yIyMjLPxwK0adMmz0cvXMyVfSgpKcl06NDB2O12U7FiRfPYY4+ZzZs35zkEeF7fe36PmACuBTZjuKMOAAAAAC7gniQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFiU+ofJ5uTk6Pfff1dgYKBsNpu7ywEAAADgJsYYnT59WpUrV77kg71LfUj6/fffFRER4e4yAAAAAJQQv/76q6pUqZLv/FIfkgIDAyX9/UEEBQW5uRoAAAAA7pKWlqaIiAhHRshPqQ9JFy6xCwoKIiQBAAAAuOxtOAzcAAAAAAAWhCQAAAAAsHBrSIqPj1dMTIzjUrhmzZpp48aNjvlt27aVzWZzeo0YMcKNFQMAAAAo7dx6T1KVKlU0a9Ys1axZU8YYLV++XD169NDu3btVt25dSdLw4cM1ffp0xzplypQp9DqMMTp//ryys7MLve/rnaenp7y8vBh+HQAAANcMt4akbt26OU0/+eSTio+P1xdffOEISWXKlFF4eHiR1ZCZmakjR47o7NmzRbaN612ZMmVUqVIl+fj4uLsUAAAA4LJKzOh22dnZevvtt5Wenq5mzZo52l9//XW99tprCg8PV7du3TRp0qRLnk3KyMhQRkaGYzotLS3fZXNycpScnCxPT09VrlxZPj4+nPEoRMYYZWZm6o8//lBycrJq1qx5yYd2AQAAACWB20PSt99+q2bNmuncuXMKCAjQ2rVrFR0dLUm65557FBkZqcqVK2vPnj2aMGGC9u/frzVr1uTb38yZMzVt2rQCbTszM1M5OTmKiIgoksv4IPn5+cnb21uHDh1SZmamfH193V0SAAAAcEk2Y4xxZwGZmZn65ZdflJqaqtWrV+uVV17Rtm3bHEHJauvWrWrfvr0OHjyoGjVq5NlfXmeSIiIilJqamus5SefOnVNycrKqVavGL+9FiM8ZAAAAJUFaWpqCg4PzzAZWbj+T5OPjo6ioKElSw4YN9dVXX+m5557T4sWLcy3bpEkTSbpkSLLb7bLb7UVXMAAAAIBSrcTdIJKTk+N0JsgqMTFRklSpUqVirAgAAADA9cStZ5Li4uLUpUsX3XjjjTp9+rRWrVqljz/+WAkJCUpKStKqVavUtWtXlStXTnv27NGYMWPUunVrxcTEFGldtj3ri7T/i5mYbpdfCAAAAECxcOuZpJSUFA0ePFi1atVS+/bt9dVXXykhIUEdO3aUj4+PPvzwQ91xxx2qXbu2xo0bpz59+mj9+uINMCVRbGys4+G63t7eqlatmh599FGdO3euyLe9Zs0a3XHHHSpXrpxsNpvj7B4AAABQWrj1TNKrr76a77yIiAht27atGKu5tnTu3FlLly5VVlaWdu3apSFDhshms2n27NlFut309HS1bNlS/fv31/Dhw4t0WwAAAIA7lLh7klAwdrtd4eHhioiIUM+ePdWhQwdt3rzZMb9q1aqaP3++0zo333yzpk6d6pi22Wx65ZVX1KtXL5UpU0Y1a9bUe++9d8nt3nfffZo8ebI6dOhQmG8HAAAAKDEISaXAd999p//973/y8fFxed1p06apf//+2rNnj7p27apBgwbpxIkTRVAlAAAAcG0gJF2jNmzYoICAAPn6+qp+/fpKSUnRI4884nI/sbGxGjhwoKKiovTUU0/pzJkz+vLLL4ugYgAAAODa4PbnJOHKtGvXTvHx8UpPT9e8efPk5eWlPn36uNyPdaRAf39/BQUFKSUlpTBLBQAAAK4pnEm6Rvn7+ysqKkoNGjTQkiVLtGPHDqeBMDw8PGSMcVonKysrVz/e3t5O0zabTTk5OUVTNAAAAHANICSVAh4eHnrsscf0xBNP6K+//pIkVahQQUeOHHEsk5aWpuTkZHeVCAAAAFwzCEmlRL9+/eTp6akFCxZIkm6//XatXLlSn376qb799lsNGTJEnp6eV72dEydOKDExUT/88IMkaf/+/UpMTNTRo0evum8AAIDicuGZk7yK53Wt4Z6kPJiYbu4uwWVeXl566KGH9PTTT+tf//qX4uLilJycrLvuukvBwcH6z3/+Uyhnkt577z0NHTrUMX333XdLkqZMmeI0vDgAAABwrbKZi29cKWXS0tIUHBys1NRUBQUFOc07d+6ckpOTVa1aNfn6+rqpwtKPzxkAAJQ01+LZjWtZSYkcl8oGVlxuBwAAAAAWhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpAEAAAAABZe7i6gJCruJzCXlCcQAwAAACAkXZNiY2O1fPlySZKXl5eqVKmifv36afr06fL19S2y7WZlZemJJ57Q+++/r59++knBwcHq0KGDZs2apcqVKxfZdgEAuF7Y9qx3dwkAxOV216zOnTvryJEj+umnnzRv3jwtXrxYU6ZMKdJtnj17Vl9//bUmTZqkr7/+WmvWrNH+/fvVvXv3It0uAAAAUJwISdcou92u8PBwRUREqGfPnurQoYM2b97smF+1alXNnz/faZ2bb75ZU6dOdUzbbDa98sor6tWrl8qUKaOaNWvqvffey3ebwcHB2rx5s/r3769atWqpadOmevHFF7Vr1y798ssvhf0WAQAAALcgJJUC3333nf73v//Jx8fH5XWnTZum/v37a8+ePeratasGDRqkEydOFHj91NRU2Ww2hYSEuLxtAAAAoCQiJF2jNmzYoICAAPn6+qp+/fpKSUnRI4884nI/sbGxGjhwoKKiovTUU0/pzJkz+vLLLwu07rlz5zRhwgQNHDhQQUFBLm8bAAAAKIkYuOEa1a5dO8XHxys9PV3z5s2Tl5eX+vTp43I/MTExjn/7+/srKChIKSkpl10vKytL/fv3lzFG8fHxLm8XAAAAKKk4k3SN8vf3V1RUlBo0aKAlS5Zox44devXVVx3zPTw8cg0tnpWVlasfb29vp2mbzaacnJxLbvtCQDp06JA2b97MWSQAAACUKoSkUsDDw0OPPfaYnnjiCf3111+SpAoVKujIkSOOZdLS0pScnHzV27oQkA4cOKAPP/xQ5cqVu+o+AQAAgJKEkFRK9OvXT56enlqwYIEk6fbbb9fKlSv16aef6ttvv9WQIUPk6el5VdvIyspS3759tXPnTr3++uvKzs7W0aNHdfToUWVmZhbG2wAAAADcjnuS8nDxZWrXAi8vLz300EN6+umn9a9//UtxcXFKTk7WXXfdpeDgYP3nP/+56jNJv/32m2OI8Jtvvtlp3kcffaS2bdteVf8AAABASWAz12IicEFaWpqCg4OVmpqa696Zc+fOKTk5WdWqVZOvr6+bKiz9+JwBACgY25717i7h+tGgu7sruK6UlMhxqWxgxeV2AAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpCkknMjWWnF5wsAAIBryXUdkry9vSVJZ8+edXMlpduFz/fC5w0AAACUZNf1c5I8PT0VEhKilJQUSVKZMmVks9ncXFXpYYzR2bNnlZKSopCQkKt+mC0AAABQHK7rkCRJ4eHhkuQISih8ISEhjs8ZAAAAKOmu+5Bks9lUqVIlhYWFKSsry93llDre3t6cQQIAAMA15boPSRd4enryyzwAAACA63vgBgAAAAC4GCEJAAAAACwISQAAAABgQUgCAAAAAAtCEgAAAABYEJIAAAAAwIKQBAAAAAAWhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAwq0hKT4+XjExMQoKClJQUJCaNWumjRs3OuafO3dOI0eOVLly5RQQEKA+ffro2LFjbqwYAAAAQGnn1pBUpUoVzZo1S7t27dLOnTt1++23q0ePHvr+++8lSWPGjNH69ev19ttva9u2bfr999/Vu3dvd5YMAAAAoJSzGWOMu4uwCg0N1TPPPKO+ffuqQoUKWrVqlfr27StJ2rdvn+rUqaPt27eradOmea6fkZGhjIwMx3RaWpoiIiKUmpqqoKCgYnkPAAAAV8K2Z727S7h+NOju7gquKyUlcqSlpSk4OPiy2aDE3JOUnZ2tN954Q+np6WrWrJl27dqlrKwsdejQwbFM7dq1deONN2r79u359jNz5kwFBwc7XhEREcVRPgAAAIBSwu0h6dtvv1VAQIDsdrtGjBihtWvXKjo6WkePHpWPj49CQkKclq9YsaKOHj2ab39xcXFKTU11vH799dcifgcAAAAAShMvdxdQq1YtJSYmKjU1VatXr9aQIUO0bdu2K+7PbrfLbrcXYoUAAAAAriduD0k+Pj6KioqSJDVs2FBfffWVnnvuOQ0YMECZmZk6deqU09mkY8eOKTw83E3VAgAAACjt3H653cVycnKUkZGhhg0bytvbW1u2bHHM279/v3755Rc1a9bMjRUCAAAAKM3ceiYpLi5OXbp00Y033qjTp09r1apV+vjjj5WQkKDg4GANGzZMY8eOVWhoqIKCgvTvf/9bzZo1y3dkOwAAAAC4Wm4NSSkpKRo8eLCOHDmi4OBgxcTEKCEhQR07dpQkzZs3Tx4eHurTp48yMjLUqVMnLVy40J0lAwAAACjlStxzkgpbQcdCBwAAcDeek1SMeE5SsSopkeOae04SAAAAAJQEhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALAgJAEAAACABSEJAAAAACwISQAAAABgQUgCAAAAAAtCEgAAAABYEJIAAAAAwIKQBAAAAAAWhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALAgJAEAAACABSEJAAAAACwISQAAAABgQUgCAAAAAAtCEgAAAABYEJIAAAAAwIKQBAAAAAAWhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGDh1pA0c+ZM3XbbbQoMDFRYWJh69uyp/fv3Oy3Ttm1b2Ww2p9eIESPcVDEAAACA0s6tIWnbtm0aOXKkvvjiC23evFlZWVm64447lJ6e7rTc8OHDdeTIEcfr6aefdlPFAAAAAEo7L3dufNOmTU7Ty5YtU1hYmHbt2qXWrVs72suUKaPw8PDiLg8AAADAdahE3ZOUmpoqSQoNDXVqf/3111W+fHnVq1dPcXFxOnv2bL59ZGRkKC0tzekFAAAAAAXl1jNJVjk5ORo9erRatGihevXqOdrvueceRUZGqnLlytqzZ48mTJig/fv3a82aNXn2M3PmTE2bNq24ygYAAABQytiMMcbdRUjSv/71L23cuFGfffaZqlSpku9yW7duVfv27XXw4EHVqFEj1/yMjAxlZGQ4ptPS0hQREaHU1FQFBQUVSe0AAACFwbZnvbtLuH406O7uCq4rJSRyKC0tTcHBwZfNBiXiTNJDDz2kDRs26JNPPrlkQJKkJk2aSFK+Iclut8tutxdJnQAAAABKP7eGJGOM/v3vf2vt2rX6+OOPVa1atcuuk5iYKEmqVKlSEVcHAAAA4Hrk1pA0cuRIrVq1Su+++64CAwN19OhRSVJwcLD8/PyUlJSkVatWqWvXripXrpz27NmjMWPGqHXr1oqJiXFn6QAAAABKKbeGpPj4eEl/PzDWaunSpYqNjZWPj48+/PBDzZ8/X+np6YqIiFCfPn30xBNPuKFaAAAAANcDt19udykRERHatm1bMVUDAAAAACXsOUkAAAAA4G6EJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALAgJAEAAACABSEJAAAAACwISQAAAABgQUgCAAAAAAtCEgAAAABYEJIAAAAAwIKQBAAAAAAWhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGDhckj666+/dPbsWcf0oUOHNH/+fH3wwQeFWhgAAAAAuIPLIalHjx5asWKFJOnUqVNq0qSJ5s6dqx49eig+Pr7QCwQAAACA4uRySPr666/VqlUrSdLq1atVsWJFHTp0SCtWrNDzzz9f6AUCAAAAQHFyOSSdPXtWgYGBkqQPPvhAvXv3loeHh5o2bapDhw4VeoEAAAAAUJxcDklRUVFat26dfv31VyUkJOiOO+6QJKWkpCgoKKjQCwQAAACA4uRySJo8ebLGjx+vqlWrqkmTJmrWrJmkv88q3XLLLYVeIAAAAAAUJy9XV+jbt69atmypI0eOqEGDBo729u3bq1evXoVaHAAAAAAUN5dDkiSFh4crPDzcqa1x48aFUhAAAAAAuFOBQlLv3r0L3OGaNWuuuBgAAAAAcLcC3ZMUHBzseAUFBWnLli3auXOnY/6uXbu0ZcsWBQcHF1mhAAAAAFAcCnQmaenSpY5/T5gwQf3799eiRYvk6ekpScrOztaDDz7I6HYAAAAArnkuj263ZMkSjR8/3hGQJMnT01Njx47VkiVLCrU4AAAAAChuLoek8+fPa9++fbna9+3bp5ycnEIpCgAAAADcxeXR7YYOHaphw4YpKSnJMaLdjh07NGvWLA0dOrTQCwQAAACA4uRySJozZ47Cw8M1d+5cHTlyRJJUqVIlPfLIIxo3blyhFwgAAAAAxcmlkHT+/HmtWrVKQ4YM0aOPPqq0tDRJYsAGAAAAAKWGS/ckeXl5acSIETp37pykv8MRAQkAAABAaeLywA2NGzfW7t27i6IWAAAAAHA7l+9JevDBBzVu3DgdPnxYDRs2lL+/v9P8mJiYQisOAAAAAIqbyyHp7rvvliSNGjXK0Waz2WSMkc1mU3Z2duFVBwAAAADFzOWQlJycXBR1AAAAAECJ4HJIioyMLIo6AAAAAKBEcDkkSVJSUpLmz5+vvXv3SpKio6P18MMPq0aNGoVaHAAAAAAUN5dHt0tISFB0dLS+/PJLxcTEKCYmRjt27FDdunW1efPmoqgRAAAAAIqNy2eSJk6cqDFjxmjWrFm52idMmKCOHTsWWnEAAAAAUNxcPpO0d+9eDRs2LFf7/fffrx9++KFQigIAAAAAd3E5JFWoUEGJiYm52hMTExUWFlYYNQEAAACA27h8ud3w4cP1wAMP6KefflLz5s0lSZ9//rlmz56tsWPHFnqBAAAAAFCcXA5JkyZNUmBgoObOnau4uDhJUuXKlTV16lSnB8wCAAAAwLXIZowxV7ry6dOnJUmBgYGFVlBhS0tLU3BwsFJTUxUUFOTucgAAAPJl27Pe3SVcPxp0d3cF15WriByFqqDZwOUzScnJyTp//rxq1qzpFI4OHDggb29vVa1a9YoKBgAAAICSwOWBG2JjY/W///0vV/uOHTsUGxtbGDUBAAAAgNu4HJJ2796tFi1a5Gpv2rRpnqPeAQAAAMC1xOWQZLPZHPciWaWmpio7O9ulvmbOnKnbbrtNgYGBCgsLU8+ePbV//36nZc6dO6eRI0eqXLlyCggIUJ8+fXTs2DFXywYAAACAAnE5JLVu3VozZ850CkTZ2dmaOXOmWrZs6VJf27Zt08iRI/XFF19o8+bNysrK0h133KH09HTHMmPGjNH69ev19ttva9u2bfr999/Vu3dvV8sGAAAAgAJxeXS7H374Qa1bt1ZISIhatWolSfr000+VlpamrVu3ql69eldczB9//KGwsDBt27ZNrVu3VmpqqipUqKBVq1apb9++kqR9+/apTp062r59u5o2bXrZPhndDgAAXCsY3a4YMbpdsbrWRrdz+UxSdHS09uzZo/79+yslJUWnT5/W4MGDtW/fvqsKSNLfl+xJUmhoqCRp165dysrKUocOHRzL1K5dWzfeeKO2b9+eZx8ZGRlKS0tzegEAAABAQbk8BLj098Njn3rqqUItJCcnR6NHj1aLFi0cYevo0aPy8fFRSEiI07IVK1bU0aNH8+xn5syZmjZtWqHWBgAAAOD64fKZJOnvy+vuvfdeNW/eXL/99pskaeXKlfrss8+uuJCRI0fqu+++0xtvvHHFfUhSXFycUlNTHa9ff/31qvoDAAAAcH1xOSS988476tSpk/z8/PT1118rIyND0t+Xyl3p2aWHHnpIGzZs0EcffaQqVao42sPDw5WZmalTp045LX/s2DGFh4fn2ZfdbldQUJDTCwAAAAAKyuWQNGPGDC1atEgvv/yyvL29He0tWrTQ119/7VJfxhg99NBDWrt2rbZu3apq1ao5zW/YsKG8vb21ZcsWR9v+/fv1yy+/qFmzZq6WDgAAAACX5fI9Sfv371fr1q1ztQcHB+c643M5I0eO1KpVq/Tuu+8qMDDQcZ9RcHCw/Pz8FBwcrGHDhmns2LEKDQ1VUFCQ/v3vf6tZs2YFGtkOAAAAAFzlckgKDw/XwYMHVbVqVaf2zz77TNWrV3epr/j4eElS27ZtndqXLl2q2NhYSdK8efPk4eGhPn36KCMjQ506ddLChQtdLRsAAAAACsTlkDR8+HA9/PDDWrJkiWw2m37//Xdt375d48eP16RJk1zqqyDjpfv6+mrBggVasGCBq6UCAAAAgMtcDkkTJ05UTk6O2rdvr7Nnz6p169ay2+0aP368/v3vfxdFjQAAAABQbGzmCh9/m5mZqYMHD+rMmTOKjo5WQECA/vrrL/n5+RV2jVeloE/VBQAAcDfbnvXuLuH60aC7uyu4rlxh5Ch0Bc0GV/ScJEny8fFRdHS0GjduLG9vbz377LO5RqcDAAAAgGtNgUNSRkaG4uLi1KhRIzVv3lzr1q2T9PcgC9WqVdO8efM0ZsyYoqoTAAAAAIpFge9Jmjx5shYvXqwOHTrof//7n/r166ehQ4fqiy++0LPPPqt+/frJ09OzKGsFAAAAgCJX4JD09ttva8WKFerevbu+++47xcTE6Pz58/rmm29ks9mKskYAAAAAKDYFvtzu8OHDatiwoSSpXr16stvtGjNmDAEJAAAAQKlS4JCUnZ0tHx8fx7SXl5cCAgKKpCgAAAAAcJcCX25njFFsbKzsdrsk6dy5cxoxYoT8/f2dlluzZk3hVggAAAAAxajAIWnIkCFO0/fee2+hFwMAAAAA7lbgkLR06dKirAMAAAAASoQrfpgsAAAAAJRGhCQAAAAAsCAkAQAAAIAFIQkAAAAALAoUkm699VadPHlSkjR9+nSdPXu2SIsCAAAAAHcpUEjau3ev0tPTJUnTpk3TmTNnirQoAAAAAHCXAg0BfvPNN2vo0KFq2bKljDGaM2eOAgIC8lx28uTJhVogAAAAABSnAoWkZcuWacqUKdqwYYNsNps2btwoL6/cq9psNkISAAAAgGtagUJSrVq19MYbb0iSPDw8tGXLFoWFhRVpYQAAAADgDgUKSVY5OTlFUQcAAAAAlAguhyRJSkpK0vz587V3715JUnR0tB5++GHVqFGjUIsDAAAAgOLm8nOSEhISFB0drS+//FIxMTGKiYnRjh07VLduXW3evLkoagQAAACAYuPymaSJEydqzJgxmjVrVq72CRMmqGPHjoVWHAAAAAAUN5fPJO3du1fDhg3L1X7//ffrhx9+KJSiAAAAAMBdXA5JFSpUUGJiYq72xMRERrwDAAAAcM1z+XK74cOH64EHHtBPP/2k5s2bS5I+//xzzZ49W2PHji30AgEAAACgOLkckiZNmqTAwEDNnTtXcXFxkqTKlStr6tSpGjVqVKEXCAAAAADFyWaMMVe68unTpyVJgYGBhVZQYUtLS1NwcLBSU1MVFBTk7nIAAADyZduz3t0lXD8adHd3BdeVq4gchaqg2eCKnpN0QUkORwAAAABwJVweuAEAAAAASjNCEgAAAABYEJIAAAAAwMKlkJSVlaX27dvrwIEDRVUPAAAAALiVSyHJ29tbe/bsKapaAAAAAMDtXL7c7t5779Wrr75aFLUAAAAAgNu5PAT4+fPntWTJEn344Ydq2LCh/P39neY/++yzhVYcAAAAABQ3l0PSd999p1tvvVWS9OOPPzrNs9lshVMVAAAAALiJyyHpo48+Koo6AAAAAKBEuOIhwA8ePKiEhAT99ddfkiRjTKEVBQAAAADu4nJIOn78uNq3b6+bbrpJXbt21ZEjRyRJw4YN07hx4wq9QAAAAAAoTi6HpDFjxsjb21u//PKLypQp42gfMGCANm3aVKjFAQAAAEBxc/mepA8++EAJCQmqUqWKU3vNmjV16NChQisMAAAAANzB5TNJ6enpTmeQLjhx4oTsdnuhFAUAAAAA7uJySGrVqpVWrFjhmLbZbMrJydHTTz+tdu3aFWpxAAAAAFDcXL7c7umnn1b79u21c+dOZWZm6tFHH9X333+vEydO6PPPPy+KGgEAAACg2Lh8JqlevXr68ccf1bJlS/Xo0UPp6enq3bu3du/erRo1ahRFjQAAAABQbFw+kyRJwcHBevzxxwu7FgAAAABwuysKSSdPntSrr76qvXv3SpKio6M1dOhQhYaGFmpxAAAAAFDcXL7c7pNPPlHVqlX1/PPP6+TJkzp58qSef/55VatWTZ988klR1AgAAAAAxcblM0kjR47UgAEDFB8fL09PT0lSdna2HnzwQY0cOVLffvttoRcJAAAAAMXF5TNJBw8e1Lhx4xwBSZI8PT01duxYHTx4sFCLAwAAAIDi5nJIuvXWWx33Ilnt3btXDRo0KJSiAAAAAMBdCnS53Z49exz/HjVqlB5++GEdPHhQTZs2lSR98cUXWrBggWbNmlU0VQIAAABAMbEZY8zlFvLw8JDNZtPlFrXZbMrOzi7wxj/55BM988wz2rVrl44cOaK1a9eqZ8+ejvmxsbFavny50zqdOnXSpk2bCryNtLQ0BQcHKzU1VUFBQQVeDwAAoLjZ9qx3dwnXjwbd3V3BdaUAkaNYFDQbFOhMUnJycqEVZpWenq4GDRro/vvvV+/evfNcpnPnzlq6dKlj2m63F0ktAAAAACAVMCRFRkYWyca7dOmiLl26XHIZu92u8PDwItk+AAAAAFzsih4m+/vvv+uzzz5TSkqKcnJynOaNGjWqUAq74OOPP1ZYWJjKli2r22+/XTNmzFC5cuXyXT4jI0MZGRmO6bS0tEKtBwAAAEDp5nJIWrZsmf75z3/Kx8dH5cqVk81mc8yz2WyFGpI6d+6s3r17q1q1akpKStJjjz2mLl26aPv27U5DkFvNnDlT06ZNK7QaAKAocf9BMeL+g2JVUu4/AIArUaCBG6wiIiI0YsQIxcXFycPD5RHE8y/EZss1cMPFfvrpJ9WoUUMffvih2rdvn+cyeZ1JioiIYOAGACUSIakYEZKKFSHpynBMKEYcE4pVSTkmFHTgBpdTztmzZ3X33XcXakAqqOrVq6t8+fKXfGit3W5XUFCQ0wsAAAAACsrlpDNs2DC9/fbbRVHLZR0+fFjHjx9XpUqV3LJ9AAAAAKWfy/ckzZw5U3fddZc2bdqk+vXry9vb22n+s88+W+C+zpw543RWKDk5WYmJiQoNDVVoaKimTZumPn36KDw8XElJSXr00UcVFRWlTp06uVo2AAAAABTIFYWkhIQE1apVS5JyDdzgip07d6pdu3aO6bFjx0qShgwZovj4eO3Zs0fLly/XqVOnVLlyZd1xxx36z3/+w7OSAAAAABQZl0PS3LlztWTJEsXGxl71xtu2bXvJm7gSEhKuehsAAAAA4AqX70my2+1q0aJFUdQCAAAAAG7nckh6+OGH9cILLxRFLQAAAADgdi5fbvfll19q69at2rBhg+rWrZtr4IY1a9YUWnEAAAAAUNxcDkkhISHq3bt3UdQCAAAAAG7nckhaunRpUdQBAAAAACWCy/ckAQAAAEBp5vKZpGrVql3yeUg//fTTVRUEAAAAAO7kckgaPXq003RWVpZ2796tTZs26ZFHHimsugAAAADALVwOSQ8//HCe7QsWLNDOnTuvuiAAAAAAcKdCuyepS5cueueddwqrOwAAAABwi0ILSatXr1ZoaGhhdQcAAAAAbuHy5Xa33HKL08ANxhgdPXpUf/zxhxYuXFioxQEAAABAcXM5JPXs2dNp2sPDQxUqVFDbtm1Vu3btwqoLAAAAANzC5ZA0ZcqUoqgDAAAAAEoEHiYLAAAAABYFPpPk4eFxyYfISpLNZtP58+evuigAAAAAcJcCh6S1a9fmO2/79u16/vnnlZOTUyhFAQAAAIC7FDgk9ejRI1fb/v37NXHiRK1fv16DBg3S9OnTC7U4AAAAAChuV3RP0u+//67hw4erfv36On/+vBITE7V8+XJFRkYWdn0AAAAAUKxcCkmpqamaMGGCoqKi9P3332vLli1av3696tWrV1T1AQAAAECxKvDldk8//bRmz56t8PBw/fe//83z8jsAAAAAuNYVOCRNnDhRfn5+ioqK0vLly7V8+fI8l1uzZk2hFQcAAAAAxa3AIWnw4MGXHQIcAAAAAK51BQ5Jy5YtK8IyAAAAAKBkuKLR7QAAAACgtCIkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALAgJAEAAACABSEJAAAAACwISQAAAABgQUgCAAAAAAtCEgAAAABYEJIAAAAAwIKQBAAAAAAWhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC7eGpE8++UTdunVT5cqVZbPZtG7dOqf5xhhNnjxZlSpVkp+fnzp06KADBw64p1gAAAAA1wW3hqT09HQ1aNBACxYsyHP+008/reeff16LFi3Sjh075O/vr06dOuncuXPFXCkAAACA64WXOzfepUsXdenSJc95xhjNnz9fTzzxhHr06CFJWrFihSpWrKh169bp7rvvLs5SAQAAAFwnSuw9ScnJyTp69Kg6dOjgaAsODlaTJk20ffv2fNfLyMhQWlqa0wsAAAAACqrEhqSjR49KkipWrOjUXrFiRce8vMycOVPBwcGOV0RERJHWCQAAAKB0KbEh6UrFxcUpNTXV8fr111/dXRIAAACAa0iJDUnh4eGSpGPHjjm1Hzt2zDEvL3a7XUFBQU4vAAAAACioEhuSqlWrpvDwcG3ZssXRlpaWph07dqhZs2ZurAwAAABAaebW0e3OnDmjgwcPOqaTk5OVmJio0NBQ3XjjjRo9erRmzJihmjVrqlq1apo0aZIqV66snj17uq9oAAAAAKWaW0PSzp071a5dO8f02LFjJUlDhgzRsmXL9Oijjyo9PV0PPPCATp06pZYtW2rTpk3y9fV1V8kAAAAASjmbMca4u4iilJaWpuDgYKWmpnJ/EoASx7ZnvbtLuH406O7uCq4rpfzXiyLDMaEYcUwoViXlmFDQbFBi70kCAAAAAHcgJAEAAACABSEJAAAAACwISQAAAABgQUgCAAAAAAtCEgAAAABYEJIAAAAAwIKQBAAAAAAWhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALAgJAEAAACABSEJAAAAACwISQAAAABgQUgCAAAAAAtCEgAAAABYEJIAAAAAwIKQBAAAAAAWhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALAgJAEAAACABSEJAAAAACwISQAAAABgQUgCAAAAAAtCEgAAAABYlOiQNHXqVNlsNqdX7dq13V0WAAAAgFLMy90FXE7dunX14YcfOqa9vEp8yQAAAACuYSU+cXh5eSk8PNzdZQAAAAC4TpToy+0k6cCBA6pcubKqV6+uQYMG6Zdffrnk8hkZGUpLS3N6AQAAAEBBleiQ1KRJEy1btkybNm1SfHy8kpOT1apVK50+fTrfdWbOnKng4GDHKyIiohgrBgAAAHCtsxljjLuLKKhTp04pMjJSzz77rIYNG5bnMhkZGcrIyHBMp6WlKSIiQqmpqQoKCiquUgGgQGx71ru7hOtHg+7uruC6cg39elGicEwoRhwTilVJOSakpaUpODj4stmgxN+TZBUSEqKbbrpJBw8ezHcZu90uu91ejFUBAAAAKE1K9OV2Fztz5oySkpJUqVIld5cCAAAAoJQq0SFp/Pjx2rZtm37++Wf973//U69eveTp6amBAwe6uzQAAAAApVSJvtzu8OHDGjhwoI4fP64KFSqoZcuW+uKLL1ShQgV3lwYAAACglCrRIemNN95wdwkAAAAArjMl+nI7AAAAAChuhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALAgJAEAAACABSEJAAAAACwISQAAAABgQUgCAAAAAAtCEgAAAABYEJIAAAAAwIKQBAAAAAAWhCQAAAAAsCAkAQAAAIAFIQkAAAAALAhJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAwsvdBVxvbHvWu7uE64aJ6ebuEgAAAHAN4kwSAAAAAFgQkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALDwcncBQFGx2WzuLuG6YoxxdwkAAACFgjNJAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsromQtGDBAlWtWlW+vr5q0qSJvvzyS3eXBAAAAKCUKvEh6c0339TYsWM1ZcoUff3112rQoIE6deqklJQUd5cGAAAAoBQq8SHp2Wef1fDhwzV06FBFR0dr0aJFKlOmjJYsWeLu0gAAAACUQl7uLuBSMjMztWvXLsXFxTnaPDw81KFDB23fvj3PdTIyMpSRkeGYTk1NlSSlpaUVbbEFdeasuysAikSJ+Rm71nBMQCnFMeEKcUxAKVVSjgkX6jDGXHK5Eh2S/vzzT2VnZ6tixYpO7RUrVtS+ffvyXGfmzJmaNm1arvaIiIgiqRHA34KDg91dAoAShGMCAKuSdkw4ffr0JWsq0SHpSsTFxWns2LGO6ZycHJ04cULlypWTzWZzY2UoTmlpaYqIiNCvv/6qoKAgd5cDwM04JgCw4phw/TLG6PTp06pcufIllyvRIal8+fLy9PTUsWPHnNqPHTum8PDwPNex2+2y2+1ObSEhIUVVIkq4oKAgDn4AHDgmALDimHB9KshZrRI9cIOPj48aNmyoLVu2ONpycnK0ZcsWNWvWzI2VAQAAACitSvSZJEkaO3ashgwZokaNGqlx48aaP3++0tPTNXToUHeXBgAAAKAUKvEhacCAAfrjjz80efJkHT16VDfffLM2bdqUazAHwMput2vKlCm5Lr0EcH3imADAimMCLsdmLjf+HQAAAABcR0r0PUkAAAAAUNwISQAAAABgQUgCAAAAAAtCEgAAAABYEJJQqsTHxysmJsbxcLhmzZpp48aN7i4LQAkxa9Ys2Ww2jR492t2lAHCDqVOnymazOb1q167t7rJQApX4IcABV1SpUkWzZs1SzZo1ZYzR8uXL1aNHD+3evVt169Z1d3kA3Oirr77S4sWLFRMT4+5SALhR3bp19eGHHzqmvbz4dRi5cSYJpUq3bt3UtWtX1axZUzfddJOefPJJBQQE6IsvvnB3aQDc6MyZMxo0aJBefvlllS1b1t3lAHAjLy8vhYeHO17ly5d3d0kogQhJKLWys7P1xhtvKD09Xc2aNXN3OQDcaOTIkbrzzjvVoUMHd5cCwM0OHDigypUrq3r16ho0aJB++eUXd5eEEojziyh1vv32WzVr1kznzp1TQECA1q5dq+joaHeXBcBN3njjDX399df66quv3F0KADdr0qSJli1bplq1aunIkSOaNm2aWrVqpe+++06BgYHuLg8lCCEJpU6tWrWUmJio1NRUrV69WkOGDNG2bdsISsB16Ndff9XDDz+szZs3y9fX193lAHCzLl26OP4dExOjJk2aKDIyUm+99ZaGDRvmxspQ0tiMMcbdRQBFqUOHDqpRo4YWL17s7lIAFLN169apV69e8vT0dLRlZ2fLZrPJw8NDGRkZTvMAXH9uu+02dejQQTNnznR3KShBOJOEUi8nJ0cZGRnuLgOAG7Rv317ffvutU9vQoUNVu3ZtTZgwgYAEXOfOnDmjpKQk3Xfffe4uBSUMIQmlSlxcnLp06aIbb7xRp0+f1qpVq/Txxx8rISHB3aUBcIPAwEDVq1fPqc3f31/lypXL1Q6g9Bs/fry6deumyMhI/f7775oyZYo8PT01cOBAd5eGEoaQhFIlJSVFgwcP1pEjRxQcHKyYmBglJCSoY8eO7i4NAAC42eHDhzVw4EAdP35cFSpUUMuWLfXFF1+oQoUK7i4NJQz3JAEAAACABc9JAgAAAAALQhIAAAAAWBCSAAAAAMCCkAQAAAAAFoQkAAAAALAgJAEAAACABSEJAAAAACwISQAAAABgQUgCABSLn3/+WTabTYmJiUW+rWXLlikkJKTItwMAKJ0ISQAAxcbGymaz5Xp17tzZ3aVdVtWqVTV//nyntgEDBujHH38s8m0nJyfrnnvuUeXKleXr66sqVaqoR48e2rdvX5FvGwBQdLzcXQAAoGTo3Lmzli5d6tRmt9vdVM3V8fPzk5+fX5FuIysrSx07dlStWrW0Zs0aVapUSYcPH9bGjRt16tSpIt2ut7d3kfUPAOBMEgDg/2e32xUeHu70Klu2rCTpnnvu0YABA5yWz8rKUvny5bVixQpJ0qZNm9SyZUuFhISoXLlyuuuuu5SUlJTv9vK6JG7dunWy2WyO6aSkJPXo0UMVK1ZUQECAbrvtNn344YeO+W3bttWhQ4c0ZswYx9mv/PqOj49XjRo15OPjo1q1amnlypVO8202m1555RX16tVLZcqUUc2aNfXee+/lW//333+vpKQkLVy4UE2bNlVkZKRatGihGTNmqGnTpo7lDh8+rIEDByo0NFT+/v5q1KiRduzY4VJd8fHx6t69u/z9/fXkk09Kkt59913deuut8vX1VfXq1TVt2jSdP38+33oBAAVHSAIAXNagQYO0fv16nTlzxtGWkJCgs2fPqlevXpKk9PR0jR07Vjt37tSWLVvk4eGhXr16KScn54q3e+bMGXXt2lVbtmzR7t271blzZ3Xr1k2//PKLJGnNmjWqUqWKpk+friNHjujIkSN59rN27Vo9/PDDGjdunL777jv985//1NChQ/XRRx85LTdt2jT1799fe/bsUdeuXTVo0CCdOHEizz4rVKggDw8PrV69WtnZ2fnW36ZNG/32229677339M033+jRRx91fCYFrWvq1Knq1auXvv32W91///369NNPNXjwYD388MP64YcftHjxYi1btswRoAAAV8kAAK57Q4YMMZ6ensbf39/p9eSTTxpjjMnKyjLly5c3K1ascKwzcOBAM2DAgHz7/OOPP4wk8+233xpjjElOTjaSzO7du40xxixdutQEBwc7rbN27Vpzuf+a6tata1544QXHdGRkpJk3b57TMhf33bx5czN8+HCnZfr162e6du3qmJZknnjiCcf0mTNnjCSzcePGfGt58cUXTZkyZUxgYKBp166dmT59uklKSnLMX7x4sQkMDDTHjx/Pc/2C1jV69GinZdq3b2+eeuopp7aVK1eaSpUq5VsrAKDgOJMEAJAktWvXTomJiU6vESNGSJK8vLzUv39/vf7665L+Pmv07rvvatCgQY71Dxw4oIEDB6p69eoKCgpS1apVJclx1udKnDlzRuPHj1edOnUUEhKigIAA7d271+U+9+7dqxYtWji1tWjRQnv37nVqi4mJcfzb399fQUFBSklJybffkSNH6ujRo3r99dfVrFkzvf3226pbt642b94sSUpMTNQtt9yi0NDQq6qrUaNGTtPffPONpk+froCAAMdr+PDhOnLkiM6ePZtvvQCAgmHgBgCApL9DQVRUVL7zBw0apDZt2iglJUWbN2+Wn5+f0+h33bp1U2RkpF5++WVVrlxZOTk5qlevnjIzM/Psz8PDQ8YYp7asrCyn6fHjx2vz5s2aM2eOoqKi5Ofnp759++bb59W6eEAEm8122csFAwMD1a1bN3Xr1k0zZsxQp06dNGPGDHXs2LHQBo/w9/d3mj5z5oymTZum3r1751rW19e3ULYJANczziQBAAqkefPmioiI0JtvvqnXX39d/fr1c4SK48ePa//+/XriiSfUvn171alTRydPnrxkfxUqVNDp06eVnp7uaLv4GUqff/65YmNj1atXL9WvX1/h4eH6+eefnZbx8fHJ956gC+rUqaPPP/88V9/R0dGXedeusdlsql27tuM9xcTEKDExMd/7mq60rltvvVX79+9XVFRUrpeHB/+1A8DV4kwSAECSlJGRoaNHjzq1eXl5qXz58o7pe+65R4sWLdKPP/7oNLhA2bJlVa5cOb300kuqVKmSfvnlF02cOPGS22vSpInKlCmjxx57TKNGjdKOHTu0bNkyp2Vq1qypNWvWqFu3brLZbJo0aVKuMztVq1bVJ598orvvvlt2u92p3gseeeQR9e/fX7fccos6dOig9evXa82aNU4j5bkqMTFRU6ZM0X333afo6Gj5+Pho27ZtWrJkiSZMmCBJGjhwoJ566in17NlTM2fOVKVKlbR7925VrlxZzZo1u+K6Jk+erLvuuks33nij+vbtKw8PD33zzTf67rvvNGPGjCt+TwCA/5+7b4oCALjfkCFDjKRcr1q1ajkt98MPPxhJJjIy0uTk5DjN27x5s6lTp46x2+0mJibGfPzxx0aSWbt2rTEm98ANxvw9UENUVJTx8/Mzd911l3nppZecBm5ITk427dq1M35+fiYiIsK8+OKLpk2bNubhhx92LLN9+3YTExNj7Ha7Y928BoVYuHChqV69uvH29jY33XST0yAUxhinWi8IDg42S5cuzfMz++OPP8yoUaNMvXr1TEBAgAkMDDT169c3c+bMMdnZ2Y7lfv75Z9OnTx8TFBRkypQpYxo1amR27NhxVXUZY8ymTZtM8+bNjZ+fnwkKCjKNGzc2L730Up61AgBcYzPmogvCAQAAAOA6xoXLAAAAAGBBSAIAAAAAC0ISAAAAAFgQkgAAAADAgpAEAAAAABaEJAAAAACwICQBAAAAgAUhCQAAAAAsCEkAAAAAYEFIAgAAAAALQhIAAAAAWPx/a+wIeqxATaYAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0kAAAIjCAYAAADWYVDIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAS3BJREFUeJzt3QecFeW9N/BnKaKiQMQCXBGxRxFMTOwmFiwx9m5MRMPVaDQWrHjtDTW2mCgao6JejUm8aoLvFYLGEo1iLASNJUqwxYKxgIAiwnk//+f9nH1nl11YYJdzdvf7/XwOuztnzpnnzMwZ5jdPmZpSqVRKAAAAZB3+3w8AAACCkAQAAFAgJAEAABQISQAAAAVCEgAAQIGQBAAAUCAkAQAAFAhJAAAABUISAABAgZAE7UxNTU0655xzKrLshx9+OC8/fkJL72d33XVXag3ef//9tO+++6aePXvmcl911VWpvXj99dfzZx41alSzvN+YMWPSRhttlJZeeun8vp988klqa1ZfffW06667VroY0OYJSVABcUIQ/4E39njyySdTa3bttdc220lPc5k7d2669dZb06abbppWWGGFtPzyy6d11lknHXLIIa1+fVdyH46T0X/961/zPL/NNtukAQMGVKRsrc0JJ5yQxo4dm4YPH55uu+22tPPOOzc6b/1jRbdu3dK3v/3t9H/+z/9J7d2HH36Y9t9//7TMMsuka665Jq/Lrl27ttjyWutx3D4ETdOpifMBLeC8885L/fv3n2f6WmutlVp7SFpxxRXToYceWmf6t771rfTZZ5+lpZZaaomX6dhjj80nTnvssUc6+OCDU6dOndIrr7yS7r///rTGGmukzTbbbImXqS2YNWtWuvjii9PPf/7zShel1frTn/6U98uTTjqpSfPvsMMOOdyXSqX0xhtvpJEjR6bddtst78s77bRTaq/++te/pk8//TSdf/75afDgwUtsua3xOG4fggUTkqCCvvOd76RvfOMbqb3o0KFDrnmoRHOmCG6HH354+uUvf1nnuWja9MEHHyyxsnz55Ze5VqsSQbElRNOmG264IdeC9OnTJ7UnM2bMaJaaiilTpqQePXo0ef6oAf3+979f+/c+++yT1l9//fSzn/2sKk9wZ86cmZZddtkWX06sx7Aw67I5tnFrPI63tn0IKkFzO6hSs2fPzs3CDjvssHmemzZtWg4b5SvPX3zxRTrrrLPSxhtvnLp3757/U996663TQw89tMDlRG1PtHGvL/otRVOMoptvvjltt912aeWVV05dunTJ/6nGFciieK+///3v6ZFHHqltzhFNr+bXJ+l3v/tdLns0k4kaqPjPu34Trijncsstl6fvueee+feVVlopr4M5c+bM9zNOnjw5XzHdcsst53kuyhOfpyj6MUQTqPgs8TlXXXXVfNX13//+d50TsqFDh6ZVVlklb4tBgwalW265pcH+FpdddlkOY2uuuWZ+vxdffDE///LLL+e+KLGd4z3iROsPf/jDPPvBueeem9Zee+08T/Rb2WqrrdK4ceMa/bxPP/10Xm798oRo1hXP3XffffnvuPJ+/PHH137WWBdxlfnZZ59NTXH66afn9R+1SYva96R+P7nyvvePf/wj7wuxT8e2PvPMM/N2fOutt3LNSzQT6tWrV7r88ssbXGaUK8oX88R3Yvfdd8+vrW/8+PG5iVssJ07mo+nR448/Xmeecpli233ve99LX/nKV/J2mJ9//vOfab/99svbN943aiuLTZrKzbXiM0UtZ/n7srC++tWv5u/NpEmT5qnlO/vss3ONRmzbvn37plNOOSVPr++///u/0yabbJLLGZ8tan3/+Mc/1pknLjRssMEG+b0iEB999NHz9PkpN7N85pln8nvE+8U2CDFvfI9jPUeQGTJkSIN9ht5777183IvvXSyrd+/eeXvHPtSYWG68X/jmN7+Z12OxJnthjjGxHnfZZZfcJDdqnZtDHAO22GKL/P2NMkRZGusz15RtER577LE8XxwXojY8mhMvqob2ofL+WX+9N3QcL2/3+H5su+22uez/8R//kS699NJFLhNUmpAEFTR16tR84l18RLv60Llz57TXXnule++9N4egopgWJzoHHnhgbWj61a9+lf+juuSSS/IJXdSOxBXBCRMmNFt5IxD169cvn/TEiWmcdP34xz/OJ3hlEQbi5Ga99dbLfQLi8V//9V+Nvmf8Rxz9CDp27JhGjBiRa3vuvvvufAJa/wQqTnrjM8WJRpx0xMlslKN+7VB9UebyiVJc1Z6f6dOn54AZzcd23HHHfGX1yCOPzIHm7bffzvNEk8FY1/HZ4iTqpz/9aT7xi5OsmL++CJfxfkcccUQub5w0R5CMk+aXXnopnXbaaXl6nMhHALznnntqXxvbMkJS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Lx4xKEL//v3TKaeckj7//PMWX/bdd9+ddtxxx9SzZ8+8/AkTJrT4MgEAYEkSklqpnXfeOd/f6Z///Ge68sor0/XXX5/OPvvsFl/ujBkz0lZbbZUuueSSFl8WAABUgpDUSnXp0iX16tUrD1++5557psGDB6dx48bVPr/66qunq666qs5rNtpoo3TOOefU/h01Qb/61a/SXnvtlYdAj/sY/eEPf5jvcn/wgx+ks846Ky8PAADaIiGpDXjhhRfSX/7yl3wz3IV17rnnpv333z9NnDgx7bLLLunggw9OH330UYuUEwAAWgMhqZW677770nLLLZdvzrrhhhumKVOmpJNPPnmR+jcddNBBaa211koXXXRRmj59enrqqadapMwAANAaGN2uldp2223TyJEjcx+h6JPUqVOntM8++yz0+wwcOLD2965du6Zu3brlwAUAAO2VmqRWKgJN1P4MGjQo3XTTTWn8+PHpxhtvrH2+Q4cOqVQq1XnN7Nmz53mfGB2vKPopzZ07twVLDgAA1U1IagMiEJ1++unpjDPOSJ999lmettJKK+XR78qmTZuWJk+eXMFSAgBA66C5XRux33775T5J11xzTTrppJPSdtttl0aNGpV222231KNHjzwiXceOHRd7OTGow5tvvpneeeed/Pcrr7ySf8ZIe/EAAFrPDe3btUG7V7oE7UqpXgunaickNaA0cLfU2kSfpGOOOSZdeuml6aijjkrDhw/PNUe77rpr6t69ezr//PObpSYphgg/7LDDav8+8MAD88+4R1NxeHEAAGitakqtLdYtpGhmFiFh6tSpeVCCos8//zwHh/79++dR4mgZ1jMANI2apCVITdISVaqSyDG/bFCkTxIAAECBkAQAAFAgJAEAABQISQAAAAVCEgAAQLWEpJEjR6aBAwfmkSXisfnmm6f777+/9vltttkm1dTU1HkceeSRlSwyAADQxlX0Pkmrrrpquvjii9Paa6+dhwW85ZZb0h577JGee+65tMEGG+R5Dj/88HTeeefVvmbZZZetYIkBAIC2rqIhabfd6t609cILL8y1S08++WRtSIpQ1KtXrwqVEAAAaG+qpk/SnDlz0p133plmzJiRm92V3X777WnFFVdMAwYMSMOHD08zZ86c7/vMmjUr3ySq+AAAAGgVNUnh+eefz6Ho888/T8stt1y655570vrrr5+f+973vpf69euX+vTpkyZOnJhOPfXU9Morr6S777670fcbMWJEOvfccxerTNH3qT3egRgAAKiCmqR11103TZgwIY0fPz4dddRRaciQIenFF1/Mzx1xxBFpp512ShtuuGE6+OCD06233ppD1KRJkxp9v6htmjp1au3jrbfeSm3NoYceWjuQRefOnVP//v3TKaeckoNmS5o9e3YOqrE9unbtmsPrIYcckt55550WXS4AALSrmqSllloqrbXWWvn3jTfeOP31r39NP/vZz9L1118/z7ybbrpp/vnaa6+lNddcs8H369KlS360dTvvvHO6+eabc3B55plncriM0HTJJZe02DKjqeOzzz6bzjzzzDRo0KD08ccfp+OOOy7tvvvu6emnn26x5QIAQLuqSapv7ty5uV9RQ6LGKfTu3Tu1dxEEY0CLvn37pj333DMNHjw4jRs3rvb51VdfPV111VV1XrPRRhulc845p/bvCFW/+tWv0l577ZUHyIhRBv/whz80uszu3bvnZey///65BnCzzTZLv/jFL3JIe/PNN1vokwIAQDsKSdE07tFHH02vv/567psUfz/88MO5aV00qTv//PPzCXg8Hyfv0bTrW9/6Vr63Ev/fCy+8kP7yl7/kWrmFFf23IvREn69ddtklr/uPPvqoya+PJo0Rtnr06LHQywYAgGpU0eZ2U6ZMycHn3XffzbUUEX7Gjh2bdthhh9yX6IEHHsi1ITHiXdSY7LPPPumMM86oZJGrxn333ZcHuvjyyy9zzVuHDh1yrc6i9G866KCD8u8XXXRRuvrqq9NTTz2Vm/MtSPSBij5K8fq4GTAAALQFFQ1JN954Y6PPRSh65JFHlmh5WpNtt90231MqAuSVV16ZOnXqlEPkwirWysVgDBF2IrwuSPSFihqoGJkvygEAAG1F1fVJomki0MSAFzGAwk033ZRHByyGzqhZqj+0eASb+mJ0vKJoOhf9wpoSkN54443cR0ktEgAAbYmQ1AZEIDr99NNzU8TPPvssT1tppZVyM8ayuKnu5MmTF3tZ5YD06quv5uaQPXv2XOz3BACAaiIktRH77bdf6tixY7rmmmvy39ttt1267bbb0p///Oc8KEYMER7PL25A2nffffNw37fffnuaM2dOeu+99/Ljiy++aKZPAgAA7fw+SdWofjO11iD6JB1zzDHp0ksvzTfljZECo+Zo1113zYNixEiBi1uT9K9//at2iPAYTrzooYceSttss81ivT8AAFSDmlJrTAQLIZqZRUiIoarr952J0dkiOPTv3z8tvfTSFStjW2c9A0DT1EwcXekitB+Ddq90CdqVUpVEjvllgyLN7QAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSqqgjWVtl/QIA0Jq065DUuXPn/HPmzJmVLkqbVl6/5fUNAADVrF3fJylurtqjR480ZcqU/Peyyy6bampqKl2sNlWDFAEp1m+s58W9mS0AACwJ7TokhV69euWf5aBE84uAVF7PAABQ7dp9SIqao969e6eVV145zZ49u9LFaXOiiZ0aJAAAWpN2H5LK4kTeyTwAANCuB24AAACoT0gCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAAqiUkjRw5Mg0cODB169YtPzbffPN0//331z7/+eefp6OPPjr17NkzLbfccmmfffZJ77//fiWLDAAAtHEVDUmrrrpquvjii9MzzzyTnn766bTddtulPfbYI/3973/Pz59wwglp9OjR6Xe/+1165JFH0jvvvJP23nvvShYZAABo42pKpVIpVZEVVlgh/fSnP0377rtvWmmlldIdd9yRfw8vv/xy+upXv5qeeOKJtNlmmzXp/aZNm5a6d++epk6dmmurAACqVc3E0ZUuQvsxaPdKl6BdKVVJ5GhqNqiaPklz5sxJd955Z5oxY0Zudhe1S7Nnz06DBw+unWe99dZLq622Wg5JjZk1a1b+8MUHAABAU1U8JD3//PO5v1GXLl3SkUceme655560/vrrp/feey8ttdRSqUePHnXmX2WVVfJzjRkxYkROh+VH3759l8CnAAAA2oqKh6R11103TZgwIY0fPz4dddRRaciQIenFF19c5PcbPnx4rj4rP956661mLS8AANC2dap0AaK2aK211sq/b7zxxumvf/1r+tnPfpYOOOCA9MUXX6RPPvmkTm1SjG7Xq1evRt8vaqTiAQAA0CprkuqbO3du7lcUgalz587pwQcfrH3ulVdeSW+++WbuswQAANDmapKiadx3vvOdPBjDp59+mkeye/jhh9PYsWNzf6KhQ4emYcOG5RHvYvSJn/zkJzkgNXVkOwAAgFYVkqZMmZIOOeSQ9O677+ZQFDeWjYC0ww475OevvPLK1KFDh3wT2ahd2mmnndK1115bySIDAABtXNXdJ6m5uU8SANBauE/SEuQ+SUtUqUoiR6u7TxIAAEA1EJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAACqJSSNGDEiffOb30zLL798WnnlldOee+6ZXnnllTrzbLPNNqmmpqbO48gjj6xYmQEAgLatoiHpkUceSUcffXR68skn07hx49Ls2bPTjjvumGbMmFFnvsMPPzy9++67tY9LL720YmUGAADatk6VXPiYMWPq/D1q1Khco/TMM8+kb33rW7XTl1122dSrV68KlBAAAGhvqqpP0tSpU/PPFVZYoc7022+/Pa244oppwIABafjw4WnmzJmNvsesWbPStGnT6jwAAABaRU1S0dy5c9Pxxx+fttxyyxyGyr73ve+lfv36pT59+qSJEyemU089Nfdbuvvuuxvt53TuuecuwZIDAABtSU2pVCqlKnDUUUel+++/Pz322GNp1VVXbXS+P/3pT2n77bdPr732WlpzzTUbrEmKR1nUJPXt2zfXUnXr1q3Fyg8AsLhqJo6udBHaj0G7V7oE7UqpOiJHzgbdu3dfYDaoipqkY445Jt13333p0UcfnW9ACptuumn+2VhI6tKlS34AAAAsik6VTpQ/+clP0j333JMefvjh1L9//wW+ZsKECfln7969l0AJAQCA9qaiISmG/77jjjvS73//+3yvpPfeey9PjyqwZZZZJk2aNCk/v8suu6SePXvmPkknnHBCHvlu4MCBlSw6AADQRlU0JI0cObL2hrFFN998czr00EPTUkstlR544IF01VVX5XsnRd+iffbZJ51xxhkVKjEAANDWVby53fxEKIobzgIAALTL+yQBAABUmpAEAABQICQBAAAsTkj67LPP0syZM2v/fuONN/LACn/84x8X9q0AAABaf0jaY4890q233pp//+STT/LNXS+//PI8vTxaHQAAQLsJSc8++2zaeuut8+933XVXWmWVVXJtUgSnq6++uiXKCAAAUL0hKZraxY1fQzSx23vvvVOHDh3SZpttlsMSAABAuwpJa621Vrr33nvTW2+9lcaOHZt23HHHPH3KlCmpW7duLVFGAACA6g1JZ511VjrppJPS6quvnvsjbb755rW1Sl/72tdaoowAAABLTKeFfcG+++6bttpqq/Tuu++mQYMG1U7ffvvt01577dXc5QMAAKjukBR69eqVH0WbbLJJc5UJAACgukNSDM7QVHfffffilAcAAKD6+yR179699hGDMzz44IPp6aefrn3+mWeeydPieQAAgDZfk3TzzTfX/n7qqaem/fffP1133XWpY8eOedqcOXPSj3/8Y6PbAQAA7W90u5tuuimPblcOSCF+HzZsWH4OAACgXYWkL7/8Mr388svzTI9pc+fOba5yAQAAtI7R7Q477LA0dOjQNGnSpNoR7caPH58uvvji/BwAAEC7CkmXXXZZHv778ssvz/dKCr17904nn3xyOvHEE1uijAAAANUZkqKp3R133JGGDBmSTjnllDRt2rQ83YANAABAu+yT1KlTp3TkkUemzz//vDYcCUgAAEC7Hrgh+iE999xzLVMaAACA1tYnKe6HFH2P3n777bTxxhunrl271nl+4MCBzVk+AACA6g5JBx54YP557LHH1k6rqalJpVIp/4wbywIAALSbkDR58uSWKQkAAEBrDEn9+vVrmZIAAAC0xpAU4kayV111VXrppZfy3+uvv3467rjj0pprrtnc5QMAAKju0e3Gjh2bQ9FTTz2VB2mIx/jx49MGG2yQxo0b1zKlBAAAqNaapNNOOy2dcMIJ6eKLL55n+qmnnpp22GGH5iwfAABAddckRRO7oUOHzjP9hz/8YXrxxRebq1wAAACtIySttNJKacKECfNMj2krr7xyc5ULAACgdTS3O/zww9MRRxyR/vnPf6YtttgiT3v88cfTJZdckoYNG9YSZQQAAKjekHTmmWem5ZdfPl1++eVp+PDheVqfPn3SOeecU+cGswAAAK1RTalUKi3qiz/99NP8M0JTtZo2bVrq3r17mjp1aurWrVuliwMA0KiaiaMrXYT2Y9DulS5Bu1Ja9MhRkWyw0DVJkydPTl9++WVae+2164SjV199NXXu3Dmtvvrqi15qAACA1jZww6GHHpr+8pe/zDM97pUUzwEAALSrkPTcc8+lLbfccp7pm222WYOj3gEAALTpkFRTU1PbF6ko2vXNmTOnucoFAADQOkLSt771rTRixIg6gSh+j2lbbbVVc5cPAABgiVrogRvifkgRlNZdd9209dZb52l//vOf80gRf/rTn1qijAAAANVbk7T++uuniRMnpv333z9NmTIlN7075JBD0ssvv5wGDBjQMqUEAACo1pqk8s1jL7roouYvDQAAQGurSSo3r/v+97+ftthii/Svf/0rT7vtttvSY4891tzlAwAAqO6Q9D//8z9pp512Sssss0x69tln06xZs2pHt1O7BAAAtLuQdMEFF6Trrrsu3XDDDalz58610+PeSRGaAAAA2lVIeuWVV/LodvV17949ffLJJ81VLgAAgNYRknr16pVee+21eaZHf6Q11lijucoFAADQOkLS4Ycfno477rg0fvz4VFNTk9555510++23p5NOOikdddRRLVNKAACAah0C/LTTTktz585N22+/fZo5c2ZuetelS5cckn7yk5+0TCkBAACWkJpSqVRalBd+8cUXudnd9OnT8w1ml1tuufTZZ5/lUe+qybRp03J/qRh9r1u3bpUuDgBAo2omjq50EdqPQbtXugTtSmnRIkfFssEi3ScpLLXUUjkcbbLJJnmUuyuuuCL1799/Ud8OAACgKjQ5JMX9kIYPH56+8Y1v5JvI3nvvvXn6zTffnMPRlVdemU444YSFWviIESPSN7/5zbT88sunlVdeOe2555559Lyizz//PB199NGpZ8+eubZqn332Se+///5CLQcAAKDZQ9JZZ52VRo4cmVZfffX0+uuvp/322y8dccQRORxFLVJMO/XUU9PCeOSRR3IAevLJJ9O4cePS7Nmz04477phmzJhRO08Er9GjR6ff/e53ef4YKGLvvfdeqOUAAAA0+8ANEVJuvfXWtPvuu6cXXnghDRw4MH355Zfpb3/7Wx7lblGMGTOmzt+jRo3KNUrPPPNMHhAi2greeOON6Y477kjbbbddbc3VV7/61RysNttss0VaLgAAwGLXJL399ttp4403zr8PGDAgj2gXtTyLGpAaEqEorLDCCvlnhKWoXRo8eHDtPOutt15abbXV0hNPPNFos8DokFV8AAAANHtImjNnTh6soaxTp065j1BziWHFjz/++LTlllvmEBbee++9vMwePXrUmXeVVVbJzzXWzylGrCg/+vbt22xlBAAA2r5OCzNs36GHHpprkMoDKhx55JGpa9eudea7++67F6kg0TcpmvE99thjaXHE4BLDhg2r/TtqkgQlAACg2UPSkCFD6vz9/e9/PzWXY445Jt13333p0UcfTauuumrt9F69euX7MX3yySd1apNidLt4riER4spBDgAAoMVCUgyY0NyiduonP/lJuueee9LDDz88z32Wog9U3IPpwQcfzEN/hxgi/M0330ybb755s5cHAACgySGpJUQTuxi57ve//32+V1K5n1H0JVpmmWXyz6FDh+bmczGYQ9wVN0JVBCQj2wEAAG0uJMV9l8I222wzT61V9H8KcR+mDh065JqkGLlup512Stdee21FygsAALR9NaVo89aGxcANUSMVw4tHTRQAQLWqmTi60kVoPwbtXukStCulKokcTc0GTR4CHAAAoD1oUkj6+te/nj7++OP8+3nnnZdmzpzZ0uUCAACo3pD00ksvpRkzZuTfzz333DR9+vSWLhcAAED1Dtyw0UYbpcMOOyxttdVWuT3hZZddlpZbbrkG5z3rrLOau4wAAADVFZJGjRqVzj777HzD15qamnT//fenTp3mfWk8JyQBAABtPiStu+666c4778y/x3DccXPXlVdeuaXLBgAAUP33SZo7d27LlAQAAKC13kx20qRJ6aqrrsoDOoT1118/HXfccWnNNdds7vIBAAAsUQt9n6SxY8fmUPTUU0+lgQMH5sf48ePTBhtskMaNG9cypQQAAKjWmqTTTjstnXDCCeniiy+eZ/qpp56adthhh+YsHwAAQHXXJEUTu6FDh84z/Yc//GF68cUXm6tcAAAArSMkrbTSSmnChAnzTI9pRrwDAADaXXO7ww8/PB1xxBHpn//8Z9piiy3ytMcffzxdcskladiwYS1RRgAAgOoNSWeeeWZafvnl0+WXX56GDx+ep/Xp0yedc8456dhjj22JMgIAACwxNaVSqbSoL/7000/zzwhN1WratGmpe/fuaerUqalbt26VLg4AQKNqJo6udBHaj0G7V7oE7Upp0SNHRbLBIt0nqayawxEAAMASGbgBAACgLROSAAAACoQkAACARQ1Js2fPTttvv3169dVXF+ZlAAAAbTMkde7cOU2cOLHlSgMAANDamtt9//vfTzfeeGPLlAYAAKDCFnoI8C+//DLddNNN6YEHHkgbb7xx6tq1a53nr7jiiuYsHwAAQHWHpBdeeCF9/etfz7//4x//qPNcTU1N85UMAACgNYSkhx56qGVKAgAA0JqHAH/ttdfS2LFj02effZb/LpVKzVkuAACA1hGSPvzwwzwM+DrrrJN22WWX9O677+bpQ4cOTSeeeGJLlBEAAKB6Q9IJJ5yQhwJ/880307LLLls7/YADDkhjxoxp7vIBAABUd5+kP/7xj7mZ3aqrrlpn+tprr53eeOON5iwbAABA9dckzZgxo04NUtlHH32UunTp0lzlAgAAaB0haeutt0633nprnWG/586dmy699NK07bbbNnf5AAAAqru5XYShGLjh6aefTl988UU65ZRT0t///vdck/T444+3TCkBAACqtSZpwIAB+SayW221Vdpjjz1y87u99947Pffcc2nNNddsmVICAABUa01S6N69e/qv//qv5i8NAABAawxJH3/8cbrxxhvTSy+9lP9ef/3102GHHZZWWGGF5i4fAABAdTe3e/TRR9Pqq6+err766hyW4hG/9+/fPz8HAADQrmqSjj766Hzj2JEjR6aOHTvmaXPmzEk//vGP83PPP/98S5QTAACgOmuSXnvttXTiiSfWBqQQvw8bNiw/BwAA0K5C0te//vXavkhFMW3QoEHNVS4AAIDqbW43ceLE2t+PPfbYdNxxx+Vao8022yxPe/LJJ9M111yTLr744pYrKQAAwBJQUyqVSguaqUOHDqmmpiYtaNaYJ/onVZNp06blIcunTp2aunXrVuniAAA0qmbi6EoXof0YtHulS9CulBYcOaoqGzSpJmny5MnNWTYAAICq1aSQ1K9fv5YvCQAAQGu9mew777yTHnvssTRlypQ0d+7cOs9FnyUAAIB2E5JGjRqVfvSjH6Wllloq9ezZM/dDKovfhSQAAKBdhaQzzzwznXXWWWn48OF5QAcAAIC2ZKFTzsyZM9OBBx4oIAEAAG3SQiedoUOHpt/97nctUxoAAIDW1txuxIgRadddd01jxoxJG264YercuXOd56+44ormLB8AAED1h6SxY8emddddN/9df+AGAACAdtXc7vLLL0833XRTeumll9LDDz+cHnroodrHn/70p4V6r0cffTTttttuqU+fPjlg3XvvvXWeP/TQQ/P04mPnnXde2CIDAAC0XEjq0qVL2nLLLVNzmDFjRho0aFC65pprGp0nQtG7775b+/j1r3/dLMsGAABoluZ2xx13XPr5z3+err766rS4vvOd7+THgkJZr169FntZAAAALRKSnnrqqdys7r777ksbbLDBPAM33H333ak5RZO+lVdeOX3lK19J2223XbrgggvyTWwbM2vWrPwomzZtWrOWBwAAaNsWOiT16NEj7b333mlJiKZ2saz+/funSZMmpdNPPz3XPD3xxBOpY8eOjQ4sce655y6R8gEAAG1PTalUKqUqEIMy3HPPPWnPPfdsdJ5//vOfac0110wPPPBA2n777Ztck9S3b980derU1K1btxYpOwBAc6iZOLrSRWg/Bu1e6RK0K6XqiBw5G3Tv3n2B2WChB26opDXWWCOtuOKK6bXXXptvH6b4wMUHAABAizW3i6Zv87sfUtT2tJS33347ffjhh6l3794ttgwAAKB9W+iQdPzxx9f5e/bs2em5555LY8aMSSeffPJCvdf06dPr1ApNnjw5TZgwIa2wwgr5EX2L9tlnnzy6XfRJOuWUU9Jaa62Vdtppp4UtNgAAQMsNAd6QuNfR008/vVDvFfNvu+22tX8PGzYs/xwyZEgaOXJkmjhxYrrlllvSJ598km84u+OOO6bzzz8/N6kDAACo6oEbopndRhttVHVDbje1cxYAQKUZuGEJMnDDElVqrwM33HXXXbmJHAAAQLtqbve1r32tzsANkQrfe++99MEHH6Rrr722ucsHAABQ3SGp/n2MOnTokFZaaaW0zTbbpPXWW685ywYAAFD9Ienss89umZIAAABUgVZ1M1kAAICqqUmKZnXzu4lsiOe//PLL5igXAABAdYeke+65p9HnnnjiiXT11VenuXPnNle5AAAAqjsk7bHHHvNMe+WVV9Jpp52WRo8enQ4++OB03nnnNXf5AAAAqr9P0jvvvJMOP/zwtOGGG+bmdRMmTEi33HJL6tevX/OXEAAAoFpDUtyZ9tRTT01rrbVW+vvf/54efPDBXIs0YMCAlishAABANTa3u/TSS9Mll1ySevXqlX7961832PwOAACgtasplUqlpo5ut8wyy6TBgwenjh07Njrf3XffnarJtGnTUvfu3XMtWLdu3SpdHACARtVMHF3pIrQfg3avdAnalVLTIkfVZIMm1yQdcsghCxwCHAAAoLVrckgaNWpUy5YEAACgtY5uBwAA0FYJSQAAAAVCEgAAQIGQBAAAsCgDNwDQ/Az3uwQZ7rddDvcLsCjUJAEAABQISQAAAAVCEgAAQIGQBAAAUCAkAQAAFAhJAAAABUISAABAgZAEAABQICQBAAAUCEkAAAAFQhIAAECBkAQAAFAgJAEAABQISQAAAAVCEgAAQIGQBAAAUCAkAQAAFAhJAAAABUISAABAgZAEAABQICQBAAAUCEkAAAAFQhIAAECBkAQAAFAgJAEAABQISQAAAAVCEgAAQIGQBAAAUCAkAQAAFAhJAAAABUISAABAgZAEAABQLSHp0UcfTbvttlvq06dPqqmpSffee2+d50ulUjrrrLNS79690zLLLJMGDx6cXn311YqVFwAAaPsqGpJmzJiRBg0alK655poGn7/00kvT1Vdfna677ro0fvz41LVr17TTTjulzz//fImXFQAAaB86VXLh3/nOd/KjIVGLdNVVV6Uzzjgj7bHHHnnarbfemlZZZZVc43TggQcu4dICAADtQdX2SZo8eXJ67733chO7su7du6dNN900PfHEE42+btasWWnatGl1HgAAAK0+JEVAClFzVBR/l59ryIgRI3KYKj/69u3b4mUFAADajqoNSYtq+PDhaerUqbWPt956q9JFAgAAWpGqDUm9evXKP99///060+Pv8nMN6dKlS+rWrVudBwAAQKsPSf37989h6MEHH6ydFv2LYpS7zTffvKJlAwAA2q6Kjm43ffr09Nprr9UZrGHChAlphRVWSKuttlo6/vjj0wUXXJDWXnvtHJrOPPPMfE+lPffcs5LFBgAA2rCKhqSnn346bbvttrV/Dxs2LP8cMmRIGjVqVDrllFPyvZSOOOKI9Mknn6StttoqjRkzJi299NIVLDUAANCW1ZTihkRtWDTRi1HuYhAH/ZOAalMzcXSli9B+DNq90iVoV9r46UWLcUxYghwT2uUxYVoTs0HV9kkCAACoBCEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgtYSkc845J9XU1NR5rLfeepUuFgAA0IZ1SlVugw02SA888EDt3506VX2RAQCAVqzqE0eEol69elW6GAAAQDtR1c3twquvvpr69OmT1lhjjXTwwQenN998c77zz5o1K02bNq3OAwAAoE2EpE033TSNGjUqjRkzJo0cOTJNnjw5bb311unTTz9t9DUjRoxI3bt3r3307dt3iZYZAABo3WpKpVIptRKffPJJ6tevX7riiivS0KFDG61JikdZ1CRFUJo6dWrq1q3bEiwtwILVTBxd6SK0H4N2r3QJ2pVWdHpRVRwTliDHhHZ5TJg2bVquSFlQNqj6PklFPXr0SOuss0567bXXGp2nS5cu+QEAANDmmtvVN3369DRp0qTUu3fvShcFAABoo6o6JJ100knpkUceSa+//nr6y1/+kvbaa6/UsWPHdNBBB1W6aAAAQBtV1c3t3n777RyIPvzww7TSSiulrbbaKj355JP5dwAAgHYXku68885KFwEAAGhnqrq5HQAAwJImJAEAABQISQAAAAVCEgAAQIGQBAAAUCAkAQAAFAhJAAAABUISAABAgZAEAABQICQBAAAUCEkAAAAFQhIAAECBkAQAAFAgJAEAABQISQAAAAVCEgAAQIGQBAAAUCAkAQAAFAhJAAAABUISAABAgZAEAABQICQBAAAUCEkAAAAFQhIAAECBkAQAAFAgJAEAABQISQAAAAVCEgAAQIGQBAAAUCAkAQAAFAhJAAAABUISAABAgZAEAABQICQBAAAUCEkAAAAFQhIAAECBkAQAAFAgJAEAABQISQAAAAVCEgAAQIGQBAAAUCAkAQAAFHQq/kHLq5k4utJFaD8G7V7pErQrpVKp0kUAAGgWapIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAAAqEJAAAgAIhCQAAoLWFpGuuuSatvvrqaemll06bbrppeuqppypdJAAAoI2q+pD0m9/8Jg0bNiydffbZ6dlnn02DBg1KO+20U5oyZUqliwYAALRBVR+SrrjiinT44Yenww47LK2//vrpuuuuS8suu2y66aabKl00AACgDeqUqtgXX3yRnnnmmTR8+PDaaR06dEiDBw9OTzzxRIOvmTVrVn6UTZ06Nf+cNm1aqgrTZ1a6BNAiquY71to4JtBGOSYsIscE2qhpVXJMKJejVCq13pD073//O82ZMyetssoqdabH3y+//HKDrxkxYkQ699xz55net2/fFisnkFL37t0rXQSgijgmANV8TPj000/nW6aqDkmLImqdog9T2dy5c9NHH32UevbsmWpqaipaNpbsVYIIxm+99Vbq1q1bpYsDVJhjAlDkmNB+lUqlHJD69Okz3/mqOiStuOKKqWPHjun999+vMz3+7tWrV4Ov6dKlS34U9ejRo0XLSfWKA5+DH1DmmAAUOSa0T92bUKtV1QM3LLXUUmnjjTdODz74YJ2aofh78803r2jZAACAtqmqa5JCNJ0bMmRI+sY3vpE22WSTdNVVV6UZM2bk0e4AAADaXUg64IAD0gcffJDOOuus9N5776WNNtoojRkzZp7BHKAomlzGvbXqN70E2ifHBKDIMYEFqSktaPw7AACAdqSq+yQBAAAsaUISAABAgZAEAABQICQBAAAUCEm0KSNHjkwDBw6svTlc3E/r/vvvr3SxgCpx8cUXp5qamnT88cdXuihABZxzzjn5GFB8rLfeepUuFlWo6ocAh4Wx6qqr5pOgtddeO8XAjbfcckvaY4890nPPPZc22GCDShcPqKC//vWv6frrr88XUoD2K84HHnjggdq/O3VyOsy81CTRpuy2225pl112ySFpnXXWSRdeeGFabrnl0pNPPlnpogEVNH369HTwwQenG264IX3lK1+pdHGACopQ1KtXr9rHiiuuWOkiUYWEJNqsOXPmpDvvvDPNmDEjN7sD2q+jjz46ffe7302DBw+udFGACnv11VdTnz590hprrJEvnrz55puVLhJVSP0ibc7zzz+fQ9Hnn3+ea5HuueeetP7661e6WECFxMWSZ599Nje3A9q3TTfdNI0aNSqtu+666d13303nnntu2nrrrdMLL7yQll9++UoXjyoiJNHmxIFvwoQJaerUqemuu+5KQ4YMSY888oigBO3QW2+9lY477rg0bty4tPTSS1e6OECFfec736n9PfonRmjq169f+u1vf5uGDh1a0bJRXWpK0bsd2rBoXrPmmmvmDttA+3LvvfemvfbaK3Xs2LFOU9wY0apDhw5p1qxZdZ4D2p9vfvOb+VxhxIgRlS4KVURNEm3e3Llz84kQ0P5sv/32uQlu0WGHHZaH/D311FMFJGjnYlCXSZMmpR/84AeVLgpVRkiiTRk+fHiuSl9ttdXSp59+mu6444708MMPp7Fjx1a6aEAFRB+DAQMG1JnWtWvX1LNnz3mmA23fSSedlEfCjSZ277zzTjr77LPzxZKDDjqo0kWjyghJtClTpkxJhxxySO6M2b1799zeOALSDjvsUOmiAQAV9vbbb+dA9OGHH6aVVlopbbXVVvk2IfE7FOmTBAAAUOA+SQAAAAVCEgAAQIGQBAAAUCAkAQAAFAhJAAAABUISAABAgZAEAABQICQBAAAUCEkALBGvv/56qqmpSRMmTGjxZY0aNSr16NGjxZcDQNskJAGQDj300Bxg6j923nnnVO1WX331dNVVV9WZdsABB6R//OMfLb7syZMnp+9973upT58+aemll06rrrpq2mOPPdLLL7/c4ssGoOV0asH3BqAViUB0880315nWpUuX1Bots8wy+dGSZs+enXbYYYe07rrrprvvvjv17t07vf322+n+++9Pn3zySYsut3Pnzi32/gCoSQKgEIh69epV5/GVr3wlPxe1JVE7U/9kfcUVV0y33npr/nvMmDFpq622ys3cevbsmXbdddc0adKkhWoSd++99+YarLJ4fdTMrLLKKmm55ZZL3/zmN9MDDzxQ+/w222yT3njjjXTCCSfU1n419t4jR45Ma665ZlpqqaVysLntttvqPB+v/dWvfpX22muvtOyyy6a11147/eEPf2i0/H//+99z+a699tq02WabpX79+qUtt9wyXXDBBfnvsghOBx10UFphhRVS165d0ze+8Y00fvz4hSpXzLP77rvn11944YV5+u9///v09a9/PddgrbHGGuncc89NX375ZaPlBaDphCQAFujggw9Oo0ePTtOnT6+dNnbs2DRz5swcKsKMGTPSsGHD0tNPP50efPDB1KFDh/zc3LlzF3m5sbxddtklv99zzz2Xa7t222239Oabb+bnowYnmridd9556d13382Phtxzzz3puOOOSyeeeGJ64YUX0o9+9KN02GGHpYceeqjOfBE09t9//zRx4sS83PjcH330UYPvudJKK+XPeNddd6U5c+Y0Wv5vf/vb6V//+lcOXH/729/SKaecUrtOmlquc845J6/L559/Pv3whz9Mf/7zn9MhhxySX/viiy+m66+/PgfDcoACYDGVAGj3hgwZUurYsWOpa9eudR4XXnhhfn727NmlFVdcsXTrrbfWvuaggw4qHXDAAY2+5wcffFCK/2aef/75/PfkyZPz388991z+++abby517969zmvuueeePM/8bLDBBqWf//zntX/369evdOWVV9aZp/57b7HFFqXDDz+8zjz77bdfaZdddqn9O5Z7xhln1P49ffr0PO3+++9vtCy/+MUvSssuu2xp+eWXL2277bal8847rzRp0qTa56+//vr83Icfftjg65taruOPP77OPNtvv33poosuqjPttttuK/Xu3bvRsgLQdGqSAMi23XbbPPJc8XHkkUfm5zp16pRrWG6//fbaWqNo7hU1LWWvvvpqblYWTb+6deuWB1QI5VqfRRE1MSeddFL66le/mpvPRZO7l156aaHfM14TTeGK4u+YXjRw4MDa36NpW3yOKVOmNPq+Rx99dHrvvffyetl8883T7373u7TBBhukcePG5edjHX7ta1/LTe0Wp1zRRK8oaqSi9izWR/lx+OGH55q0qN0DYPEYuAGA2lCw1lprNfp8BKJoOhahIUJADIxQHP0umsFFv5wbbrghj/YWTcoGDBiQvvjiiwbfL5qq/b+Kkrr9nIoiIMWyLrvssly2WOa+++7b6HsurvoDIkR/oAU1F1x++eXzZ49H9Efaaaed8s8Y1KG5Bo+IbVM/PEbTwL333nueeaOPEgCLR00SAE2yxRZbpL59+6bf/OY3ueZkv/32qw0VH374YXrllVfSGWeckbbffvtc8/Pxxx/P9/2iT8+nn36aa6XK6t9D6fHHH8/Dk0d/nA033DAPJhH3WyqKAQ8a6xNUFuWJ96r/3uuvv35qThGq1ltvvdrPFDVT8Zka69e0qOWKARtifUdwrP+I8AnA4lGTBEA2a9as3HSsKJrZxQh2ZTHK3XXXXZfvQVQcXCBGwYsR7X75y1/mobCjOdxpp5023+VtuummeRS5008/PR177LF5xLcYfKAoRpiLwRmiliYCyJlnnjlPzU4063v00UfTgQcemEfoK5a37OSTT87NBaPp2+DBg/MgFPG+xZHyFlaEn7PPPjv94Ac/yKEmwtojjzySbrrppnTqqafmeaL54UUXXZT23HPPNGLEiLxuYgCKqGmL5nmLWq6zzjorjx642mqr5Zq1CEbRBC8Gf4haLAAW00L0XwKgDQ/cEP8l1H+su+66deZ78cUX8/QYLGHu3Ll1nhs3blzpq1/9aqlLly6lgQMHlh5++OE8bwzG0NDADSGeW2uttUrLLLNMaddddy398pe/rDNwQ7wmBkSI5/v27ZsHSvj2t79dOu6442rneeKJJ/LyYrnl1zY0KMS1115bWmONNUqdO3curbPOOnUGoQjFspbFe8R7NTYwxbHHHlsaMGBAabnllssDNGy44Yalyy67rDRnzpza+V5//fXSPvvsU+rWrVse5OEb3/hGafz48YtVrjBmzJg88EOsm3jvTTbZJK8/ABZfTfyzuEELAACgrdBwGQAAoEBIAgAAKBCSAAAACoQkAACAAiEJAACgQEgCAAAoEJIAAAAKhCQAAIACIQkAAKBASAIAACgQkgAAANL/938B8pIjxOz1DHAAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -2204,8 +1666,6 @@ } ], "source": [ - "\n", - "\n", "# Reset index without dropping the 'run' and 'evaluation_score' columns\n", "evaluation_df_pivot.reset_index(inplace=True)\n", "\n", @@ -2268,7 +1728,7 @@ ], "metadata": { "kernelspec": { - "display_name": "myenv", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -2282,7 +1742,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.11.8" } }, "nbformat": 4,