From 56cecdb3cb8b3aa047d84eabd9685952e56688b4 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 15 Jan 2024 16:56:03 -0800 Subject: [PATCH 001/108] Add LLMCompiler --- examples/LLMCompiler.ipynb | 957 +++++++++++++++++++++++++++++++++++++ 1 file changed, 957 insertions(+) create mode 100644 examples/LLMCompiler.ipynb diff --git a/examples/LLMCompiler.ipynb b/examples/LLMCompiler.ipynb new file mode 100644 index 000000000..ca73266b2 --- /dev/null +++ b/examples/LLMCompiler.ipynb @@ -0,0 +1,957 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0c8b472b-f3fb-46c2-841f-930a4692697b", + "metadata": {}, + "source": [ + "# Implementing LLMCompiler using LangGraph\n", + "By Kim, et. al [🔗](https://arxiv.org/abs/2312.04511)\n", + "\n", + "LLMCompiler is an agent architecture intented on speeding up the latency of agentic tasks via fast, parallel tool execution.\n", + "\n", + "It has 3 main components:\n", + "\n", + "1. Planner: generate a DAG of tasks.\n", + "2. Task Fetching Unit: schedules and executes the tasks\n", + "3. Joiner: Responds to the user or triggers a second plan." + ] + }, + { + "cell_type": "markdown", + "id": "1abdedbd-d81b-4ee9-b46f-f29439ed1350", + "metadata": {}, + "source": [ + "# Part 1: Planner" + ] + }, + { + "cell_type": "markdown", + "id": "278f76b0-a2e1-42dc-bd3e-6f624984e3dd", + "metadata": {}, + "source": [ + "#### Output Parser\n", + "\n", + "Parses task lists in the following form:\n", + "```plaintext\n", + "1. tool_1(\"arg1\", 3.5, ...)\n", + "Thought: I then want to find out Y by using tool_2\n", + "2. tool_2(\"\", ${1})'\n", + "3. join()\"\n", + "```\n", + "\n", + "The \"Thought\" lines are optional. The `${#}` placeholders are variables. These are used to route tool (task) outputs to other tools." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "cc71b6c4-d701-4217-9701-95ac0857e4e1", + "metadata": {}, + "outputs": [], + "source": [ + "import ast\n", + "import json\n", + "import re\n", + "from typing import Any, Optional, Sequence, Union\n", + "\n", + "from langchain.agents.agent import AgentOutputParser\n", + "from langchain.schema import OutputParserException\n", + "from langchain_core.tools import BaseTool\n", + "\n", + "THOUGHT_PATTERN = r\"Thought: ([^\\n]*)\"\n", + "# ACTION_PATTERN = r\"\\n*(\\d+)\\. (.*?})(\\s*#\\w+\\n)?\"\n", + "# $1 or ${1} -> 1\n", + "ID_PATTERN = r\"\\$\\{?(\\d+)\\}?\"\n", + "END_OF_PLAN = \"\"\n", + "\n", + "\n", + "class ActionParserFSM:\n", + " def __init__(self):\n", + " self.reset()\n", + "\n", + " def reset(self):\n", + " self.state = \"START\"\n", + " self.task_index = \"\"\n", + " self.action = \"\"\n", + " self.comment = \"\"\n", + " self.bracket_count = 0\n", + " self.actions = []\n", + "\n", + " def parse(self, text: str):\n", + " for char in text:\n", + " action = self.process_char(char)\n", + " if action:\n", + " yield action\n", + " action = self.save_action()\n", + " if action:\n", + " yield action\n", + "\n", + " def process_char(self, char: str) -> Optional[dict]:\n", + " action = None\n", + " if self.state == \"START\":\n", + " if char.isdigit():\n", + " self.state = \"NUMBER\"\n", + " self.task_index += char\n", + " elif char == \"\\n\":\n", + " self.reset()\n", + " elif self.state == \"NUMBER\":\n", + " if char == \".\":\n", + " self.state = \"ACTION\"\n", + " elif char.isdigit():\n", + " self.task_index += char\n", + " else:\n", + " self.reset()\n", + " elif self.state == \"ACTION\":\n", + " if char == \"{\":\n", + " self.bracket_count += 1\n", + " elif char == \"}\":\n", + " self.bracket_count -= 1\n", + " if self.bracket_count == 0:\n", + " self.state = \"COMMENT\"\n", + " self.action += char\n", + " elif self.state == \"COMMENT\":\n", + " if char == \"\\n\":\n", + " action = self.save_action()\n", + " self.reset()\n", + " else:\n", + " self.comment += char\n", + " return action\n", + "\n", + " def save_action(self):\n", + " if self.task_index and self.action:\n", + " parsed_action = json.loads(self.action.strip())\n", + " tool_name, args = next(iter(parsed_action.items()))\n", + " return {\n", + " \"task_index\": int(self.task_index),\n", + " \"tool_name\": tool_name,\n", + " \"args\": args,\n", + " }\n", + "\n", + "\n", + "class LLMCompilerPlanParser(AgentOutputParser, extra=\"allow\"):\n", + " \"\"\"Planning output parser.\"\"\"\n", + "\n", + " def __init__(self, tools: Sequence[BaseTool], **kwargs):\n", + " super().__init__(**kwargs)\n", + " self.tools = tools\n", + "\n", + " def parse(self, text: str) -> list[str]:\n", + " parser = ActionParserFSM()\n", + " graph_dict = {}\n", + " for task in parser.parse(text):\n", + " idx = int(task[\"task_index\"])\n", + "\n", + " task = instantiate_task(\n", + " tools=self.tools,\n", + " idx=idx,\n", + " tool_name=task[\"tool_name\"],\n", + " args=task[\"args\"],\n", + " )\n", + "\n", + " graph_dict[idx] = task\n", + " if task[\"tool\"] == \"join\":\n", + " break\n", + "\n", + " return graph_dict\n", + "\n", + "\n", + "### Helper functions\n", + "\n", + "\n", + "def default_dependency_rule(idx, args: str):\n", + " matches = re.findall(ID_PATTERN, args)\n", + " numbers = [int(match) for match in matches]\n", + " return idx in numbers\n", + "\n", + "\n", + "def _get_dependencies_from_graph(\n", + " idx: int, tool_name: str, args: Sequence[Any]\n", + ") -> dict[str, list[str]]:\n", + " \"\"\"Get dependencies from a graph.\"\"\"\n", + " if tool_name == \"join\":\n", + " return list(range(1, idx))\n", + " return [i for i in range(1, idx) if default_dependency_rule(i, str(args))]\n", + "\n", + "\n", + "def instantiate_task(\n", + " tools: Sequence[BaseTool],\n", + " idx: int,\n", + " tool_name: str,\n", + " args: Union[dict, str, bool, None],\n", + ") -> dict:\n", + " dependencies = _get_dependencies_from_graph(idx, tool_name, args)\n", + " if tool_name == \"join\":\n", + " tool = \"join\"\n", + " else:\n", + " try:\n", + " tool = tools[[tool.name for tool in tools].index(tool_name)]\n", + " except ValueError as e:\n", + " raise OutputParserException(f\"Tool {tool_name} not found.\")\n", + " return dict(\n", + " tool=tool,\n", + " args=args,\n", + " dependencies=dependencies,\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "228a2f75-68b1-4dbf-95dc-4bfc738c3b3b", + "metadata": {}, + "source": [ + "#### Planner Code\n", + "\n", + "This takes the input and outputs a plan." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "58af9746-1011-41e9-a77a-be9cef202aea", + "metadata": {}, + "outputs": [], + "source": [ + "import asyncio\n", + "import json\n", + "import re\n", + "from typing import Any, Optional, Sequence, Union\n", + "from uuid import UUID\n", + "\n", + "from langchain.callbacks.base import AsyncCallbackHandler, Callbacks\n", + "from langchain.chat_models.base import BaseChatModel\n", + "from langchain.schema import LLMResult\n", + "from langchain.schema.messages import HumanMessage, SystemMessage\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "from langchain_core.pydantic_v1 import BaseModel\n", + "from langchain_core.runnables import RunnableBranch\n", + "from langchain_core.tools import BaseTool\n", + "\n", + "END_OF_PLAN = \"\"\n", + "\n", + "JOINER_FINISH = \"Finish\"\n", + "JOINER_REPLAN = \"Replan\"\n", + "\n", + "\n", + "JOIN_DESCRIPTION = (\n", + " \"join():\\n\"\n", + " \" - Collects and combines results from prior actions.\\n\"\n", + " \" - A LLM agent is called upon invoking join to either finalize the user query or wait until the plans are executed.\\n\"\n", + " \" - join should always be the last action in the plan, and will be called in two scenarios:\\n\"\n", + " \" (a) if the answer can be determined by gathering the outputs from tasks to generate the final response.\\n\"\n", + " \" (b) if the answer cannot be determined in the planning phase before you execute the plans. \"\n", + ")\n", + "\n", + "planner_prompt_tmpl_str = (\n", + " \"Given a user query, create a plan to solve it with the utmost parallelizability. \"\n", + " \"Each plan should comprise an action from the following {num_tools} types:\\n\"\n", + " \"{tool_descriptions}\"\n", + " f\"\\n{{num_toolsp1}}. {JOIN_DESCRIPTION}\"\n", + " \"Guidelines:\\n\"\n", + " \" - Each action described above contains input/output types and description.\\n\"\n", + " \" - You must strictly adhere to the input and output types for each action.\\n\"\n", + " \" - The action descriptions contain the guidelines. You MUST strictly follow those guidelines when you use the actions.\\n\"\n", + " \" - Each action in the plan should strictly be one of the above types. Follow the Python conventions for each action.\\n\"\n", + " \" - Pass arguments by keyword ONLY\\n\"\n", + " \" - Each action MUST have a unique ID, which is strictly increasing.\\n\"\n", + " \" - Inputs for actions can either be constants or outputs from preceding actions. \"\n", + " \"In the latter case, use the format $id to denote the ID of the previous action whose output will be the input.\\n\"\n", + " f\" - Always call join as the last action in the plan. Say '{END_OF_PLAN}' after you call join\\n\"\n", + " \" - Ensure the plan maximizes parallelizability.\\n\"\n", + " \" - Only use the provided action types. If a query cannot be addressed using these, invoke the join action for the next steps.\\n\"\n", + " \" - Never explain the plan with comments (e.g. #).\\n\"\n", + " \" - Never introduce new actions other than the ones provided.\\n\\n\"\n", + " \"{replan}\"\n", + " \"{examples}\"\n", + ")\n", + "\n", + "\n", + "def _generate_planner_prompt(\n", + " tools: Sequence[BaseTool],\n", + " example_prompt=str,\n", + "):\n", + " tool_descriptions = \"\\n\".join(\n", + " f\"{i+1}. {tool.description}\" for i, tool in enumerate(tools)\n", + " )\n", + " planner_prompt_template = ChatPromptTemplate.from_messages(\n", + " [(\"system\", planner_prompt_tmpl_str), (\"user\", \"Question: {input}{context}\")]\n", + " ).partial(\n", + " tool_descriptions=tool_descriptions,\n", + " examples=\"Here are some examples:\\n\\n\" + example_prompt\n", + " if example_prompt\n", + " else \"\",\n", + " num_tools=len(tools),\n", + " num_toolsp1=len(tools) + 1,\n", + " )\n", + "\n", + " return planner_prompt_template\n", + "\n", + "\n", + "def create_planner(\n", + " llm: BaseChatModel,\n", + " example_prompt: str,\n", + " example_prompt_replan: str,\n", + " tools: Sequence[Union[BaseTool]],\n", + " stop: Optional[list[str]] = None,\n", + "):\n", + " og_planner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", + " replan=\"\",\n", + " context=\"\",\n", + " )\n", + " replanner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", + " replan=' - You are given \"Previous Plan\" which is the plan that the previous agent created along with the execution results '\n", + " \"(given as Observation) of each plan and a general thought (given as Thought) about the executed results.\"\n", + " 'You MUST use these information to create the next plan under \"Current Plan\".\\n'\n", + " ' - When starting the Current Plan, you should start with \"Thought\" that outlines the strategy for the next plan.\\n'\n", + " \" - In the Current Plan, you should NEVER repeat the actions that are already executed in the Previous Plan.\\n\"\n", + " )\n", + " bound_llm = llm.bind(stop=stop)\n", + " return (\n", + " RunnableBranch(\n", + " ((lambda x: x.get(\"replan\")), replanner_prompt),\n", + " og_planner_prompt,\n", + " )\n", + " | bound_llm\n", + " | LLMCompilerPlanParser(tools=tools)\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "7feb5c82-b1a9-40ae-863a-0362fe3ce5ea", + "metadata": {}, + "source": [ + "#### Example usage\n", + "\n", + "Here's an example usage of the planner module" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "3fe074ea-7314-47a7-9a9f-a8e6191ea1f3", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.tools import tool\n", + "from langchain_openai import ChatOpenAI\n", + "\n", + "\n", + "@tool\n", + "def get_user_id(first_name: str, last_name: Optional[str] = None):\n", + " \"\"\"Query the user IDs of everyone with the provided name.\"\"\"\n", + " return 4\n", + "\n", + "\n", + "@tool\n", + "def get_scores(class_name: str, user_id: int):\n", + " \"\"\"Query the class registry for grades of the provided user ID.\"\"\"\n", + " return \"A+\"\n", + "\n", + "\n", + "examples = (\n", + " \"Question: What's the user ID for Johnny Drop Tables?\\n\"\n", + " '1. {\"get_user_id\": {\"first_name\": \"Johnny\", \"last_name\":\"Drop Tables\"}}\\n'\n", + " f'2. {{\"join\": null}}{END_OF_PLAN}\\n'\n", + " \"###\\n\"\n", + " \"\\n\"\n", + " \"Question: What was Eric Zhang's score in Calc?\\n\"\n", + " '1. {\"get_user_id\": {\"first_name\": \"Eric\", \"last_name\":\"Zhang\"}}\\n'\n", + " '2. {\"get_scores\": {\"class_name\": \"calc\", \"user_id\": \"$1\"}}\\n'\n", + " f'3. {{\"join\": null}}{END_OF_PLAN}\\n'\n", + " \"###\\n\"\n", + " \"\\n\"\n", + ")\n", + "\n", + "planner = create_planner(\n", + " ChatOpenAI(model=\"gpt-3.5-turbo\"),\n", + " example_prompt=examples,\n", + " example_prompt_replan=\"\",\n", + " tools=[get_user_id, get_scores],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "55fb0f99-4e59-4e5a-b687-a90bb4d06d39", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1: {'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: Optional[str] = None) - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", + " 'args': {'first_name': 'Sam', 'last_name': 'Van Damm'},\n", + " 'dependencies': []},\n", + " 2: {'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: Optional[str] = None) - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", + " 'args': {'first_name': 'Will', 'last_name': 'Van Damm'},\n", + " 'dependencies': []},\n", + " 3: {'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", + " 'args': {'class_name': 'Calc BC', 'user_id': '$1'},\n", + " 'dependencies': [1]},\n", + " 4: {'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", + " 'args': {'class_name': 'Calc BC', 'user_id': '$2'},\n", + " 'dependencies': [2]},\n", + " 5: {'tool': 'join', 'args': None, 'dependencies': [1, 2, 3, 4]}}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tasks = planner.invoke(\n", + " {\"input\": \"What are the Calc BC grades for Sam and Will Van Damm?\"}\n", + ")\n", + "tasks" + ] + }, + { + "cell_type": "markdown", + "id": "5d0e795f-61ff-4553-9823-23e7624ca180", + "metadata": {}, + "source": [ + "## 2. Task Fetching Unit\n", + "\n", + "This component scheudles the tasks. In the paper, it's kept separate from the \"executor\", but here we execute the tasks within the same DAG.\n", + "\n", + "Basic idea is that, given a list of dicts of the form:\n", + "\n", + "```typescript\n", + "{\n", + " tool: BaseTool,\n", + " dependencies: number[],\n", + "}\n", + "```\n", + "\n", + "1. Create a topological sort of the tasks\n", + "2. Execute them on the previous step's output, ensuring to perform variable substitution where appropriate" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c70a0e28-43db-4ea2-af48-8a2f310dce83", + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "\n", + "from langchain_core.agents import AgentFinish\n", + "from langchain_core.runnables import (\n", + " RunnableLambda,\n", + " RunnableParallel,\n", + " RunnablePassthrough,\n", + ")\n", + "from langgraph.graph import END, Graph\n", + "\n", + "logging.basicConfig(level=logging.INFO)\n", + "logger = logging.getLogger()\n", + "\n", + "\n", + "def _sort_tasks(data):\n", + " sorted_tasks = []\n", + " while data:\n", + " no_deps = {k: v for k, v in data.items() if not v[\"dependencies\"]}\n", + " if not no_deps:\n", + " raise ValueError(\"We seem to have run into a circular dependency.\")\n", + "\n", + " sorted_tasks.append(no_deps)\n", + " data = {\n", + " k: {\n", + " **v,\n", + " \"dependencies\": [d for d in v[\"dependencies\"] if d not in no_deps],\n", + " }\n", + " for k, v in data.items()\n", + " if k not in no_deps\n", + " }\n", + " return sorted_tasks\n", + "\n", + "\n", + "def _resolve_arg(x: dict, arg):\n", + " return x[f\"task_{arg[1:]}\"] if isinstance(arg, str) and arg.startswith(\"$\") else arg\n", + "\n", + "\n", + "def _execute_task(task, x, config):\n", + " tool_to_use = task[\"tool\"]\n", + " args = task[\"args\"]\n", + " if isinstance(args, str):\n", + " resolved_args = _resolve_arg(x, args)\n", + " elif isinstance(args, dict):\n", + " resolved_args = {key: _resolve_arg(x, val) for key, val in args.items()}\n", + " else:\n", + " logger.warning(f\"Unsupported arg type: {args}\")\n", + " return tool_to_use.invoke(resolved_args, config)\n", + "\n", + "\n", + "def construct_dag(tasks):\n", + " sorted_tasks = _sort_tasks(tasks)\n", + " chain = None\n", + " for idx, task_group in enumerate(sorted_tasks):\n", + " if len(task_group) == 1 and next(iter(task_group.values()))[\"tool\"] == \"join\":\n", + " # TODO: actually join the values\n", + " step = lambda x: {\"join\": x}\n", + " else:\n", + " # Cascade all results forward\n", + " constructor = (\n", + " RunnableParallel if chain is None else RunnablePassthrough.assign\n", + " )\n", + " step = constructor(\n", + " **{\n", + " f\"task_{idx}\": RunnableLambda(\n", + " lambda x, config: _execute_task(task, x, config)\n", + " ).with_config(run_name=f\"task_{idx}\")\n", + " for idx, task in task_group.items()\n", + " }\n", + " ).with_config(run_name=f\"TaskGroup{idx}\")\n", + " if chain is None:\n", + " chain = step\n", + " else:\n", + " chain |= step\n", + "\n", + " if chain is not None:\n", + " return chain | RunnablePassthrough.assign(tasks=lambda _: tasks)\n", + " return chain" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6fecaefc-d904-4409-af63-53c5b7a3785f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " +------------------------------+ \n", + " | ParallelInput | \n", + " +------------------------------+ \n", + " ***** ***** \n", + " **** **** \n", + " *** *** \n", + " +---------------------------------------+ +---------------------------------------+ \n", + " | Lambda(lambda x, config: _execute_... | | Lambda(lambda x, config: _execute_... | \n", + " +---------------------------------------+ +---------------------------------------+ \n", + " ***** ***** \n", + " **** **** \n", + " *** *** \n", + " +-------------------------------+ \n", + " | ParallelOutput | \n", + " +-------------------------------+ \n", + " * \n", + " * \n", + " * \n", + " +------------------------------+ \n", + " | ParallelInput | \n", + " ****+------------------------------+***** \n", + " ******** * ********* \n", + " ******** * ******** \n", + " ***** * ***** \n", + "+---------------------------------------+ +---------------------------------------+ +-------------+ \n", + "| Lambda(lambda x, config: _execute_... | | Lambda(lambda x, config: _execute_... | ****| Passthrough | \n", + "+---------------------------------------+* +---------------------------------------+ ******** +-------------+ \n", + " ******** * ********* \n", + " ******** * ******** \n", + " ***** * ***** \n", + " +-------------------------------+ \n", + " | ParallelOutput | \n", + " +-------------------------------+ \n", + " * \n", + " * \n", + " * \n", + " +-------------------------------+ \n", + " | Lambda(lambda x: {'join': x}) | \n", + " +-------------------------------+ \n", + " * \n", + " * \n", + " * \n", + " +----------------------+ \n", + " | ParallelInput | \n", + " +----------------------+ \n", + " *** *** \n", + " *** *** \n", + " ** ** \n", + " +-------------------------+ +-------------+ \n", + " | Lambda(lambda _: tasks) | | Passthrough | \n", + " +-------------------------+ +-------------+ \n", + " *** *** \n", + " *** *** \n", + " ** ** \n", + " +-----------------------+ \n", + " | ParallelOutput | \n", + " +-----------------------+ \n" + ] + } + ], + "source": [ + "graph = construct_dag(tasks)\n", + "graph.get_graph().print_ascii()" + ] + }, + { + "cell_type": "markdown", + "id": "9efa15ae-817a-48c6-86ed-16bc112fedc5", + "metadata": {}, + "source": [ + "### Example\n", + "\n", + "We still haven't introduced any cycles in our computation graph, so this is all easily expressed in LCEL." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "133d124a-0d41-4c6d-a86a-34fa4cb1430f", + "metadata": {}, + "outputs": [], + "source": [ + "chain = planner | construct_dag" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "55142257-2674-4a47-988e-0d2810917329", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "ename": "KeyError", + "evalue": "\"Input to ChatPromptTemplate is missing variables {'input'}. Expected: ['input', 'scratchpad'] Received: ['join', 'tasks', 'scratchpad']\"", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[15], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m example_question \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDid Aliya get a better score than Roger in Geology?\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m----> 2\u001b[0m task_results \u001b[38;5;241m=\u001b[39m \u001b[43mchain\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minput\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mexample_question\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m task_results[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mjoin\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:456\u001b[0m, in \u001b[0;36mPregel.invoke\u001b[0;34m(self, input, config, output, **kwargs)\u001b[0m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 449\u001b[0m \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 453\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 454\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]:\n\u001b[1;32m 455\u001b[0m latest: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 456\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 457\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 458\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 459\u001b[0m \u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 460\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 461\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 462\u001b[0m \u001b[43m \u001b[49m\u001b[43mlatest\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n\u001b[1;32m 463\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m latest\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:483\u001b[0m, in \u001b[0;36mPregel.transform\u001b[0;34m(self, input, config, output, **kwargs)\u001b[0m\n\u001b[1;32m 475\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtransform\u001b[39m(\n\u001b[1;32m 476\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 477\u001b[0m \u001b[38;5;28minput\u001b[39m: Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 481\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 482\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]]:\n\u001b[0;32m--> 483\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform_stream_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 484\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\n\u001b[1;32m 485\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 486\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01myield\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1226\u001b[0m, in \u001b[0;36mRunnable._transform_stream_with_config\u001b[0;34m(self, input, transformer, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 1224\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1225\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m-> 1226\u001b[0m chunk: Output \u001b[38;5;241m=\u001b[39m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mnext\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43miterator\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 1227\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m chunk\n\u001b[1;32m 1228\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m final_output_supported:\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:301\u001b[0m, in \u001b[0;36mPregel._transform\u001b[0;34m(self, input, run_manager, config, output)\u001b[0m\n\u001b[1;32m 291\u001b[0m done, inflight \u001b[38;5;241m=\u001b[39m concurrent\u001b[38;5;241m.\u001b[39mfutures\u001b[38;5;241m.\u001b[39mwait(\n\u001b[1;32m 292\u001b[0m [\n\u001b[1;32m 293\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(proc\u001b[38;5;241m.\u001b[39minvoke, \u001b[38;5;28minput\u001b[39m, config)\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 297\u001b[0m timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstep_timeout,\n\u001b[1;32m 298\u001b[0m )\n\u001b[1;32m 300\u001b[0m \u001b[38;5;66;03m# interrupt on failure or timeout\u001b[39;00m\n\u001b[0;32m--> 301\u001b[0m \u001b[43m_interrupt_or_proceed\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdone\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minflight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 303\u001b[0m \u001b[38;5;66;03m# apply writes to channels\u001b[39;00m\n\u001b[1;32m 304\u001b[0m _apply_writes(checkpoint, channels, pending_writes, config, step \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m)\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:548\u001b[0m, in \u001b[0;36m_interrupt_or_proceed\u001b[0;34m(done, inflight, step)\u001b[0m\n\u001b[1;32m 546\u001b[0m inflight\u001b[38;5;241m.\u001b[39mpop()\u001b[38;5;241m.\u001b[39mcancel()\n\u001b[1;32m 547\u001b[0m \u001b[38;5;66;03m# raise the exception\u001b[39;00m\n\u001b[0;32m--> 548\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 549\u001b[0m \u001b[38;5;66;03m# TODO this is where retry of an entire step would happen\u001b[39;00m\n\u001b[1;32m 551\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inflight:\n\u001b[1;32m 552\u001b[0m \u001b[38;5;66;03m# if we got here means we timed out\u001b[39;00m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:3596\u001b[0m, in \u001b[0;36mRunnableBindingBase.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 3590\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 3591\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 3592\u001b[0m \u001b[38;5;28minput\u001b[39m: Input,\n\u001b[1;32m 3593\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 3594\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Optional[Any],\n\u001b[1;32m 3595\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Output:\n\u001b[0;32m-> 3596\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbound\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3597\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3598\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_merge_configs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3599\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3600\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/prompts/base.py:93\u001b[0m, in \u001b[0;36mBasePromptTemplate.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 91\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Dict, config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 92\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m PromptValue:\n\u001b[0;32m---> 93\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 94\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_format_prompt_with_error_handling\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 95\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 96\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 97\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mprompt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 98\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/prompts/base.py:83\u001b[0m, in \u001b[0;36mBasePromptTemplate._format_prompt_with_error_handling\u001b[0;34m(self, inner_input)\u001b[0m\n\u001b[1;32m 81\u001b[0m missing \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_variables)\u001b[38;5;241m.\u001b[39mdifference(inner_input)\n\u001b[1;32m 82\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m missing:\n\u001b[0;32m---> 83\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(\n\u001b[1;32m 84\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInput to \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is missing variables \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmissing\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m Expected: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_variables\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 86\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m Received: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlist\u001b[39m(inner_input\u001b[38;5;241m.\u001b[39mkeys())\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 87\u001b[0m )\n\u001b[1;32m 88\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mformat_prompt(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39minner_input)\n", + "\u001b[0;31mKeyError\u001b[0m: \"Input to ChatPromptTemplate is missing variables {'input'}. Expected: ['input', 'scratchpad'] Received: ['join', 'tasks', 'scratchpad']\"" + ] + } + ], + "source": [ + "example_question = \"Did Aliya get a better score than Roger in Geology?\"\n", + "task_results = chain.invoke({\"input\": example_question})\n", + "task_results[\"join\"]" + ] + }, + { + "cell_type": "markdown", + "id": "563d5311-55f0-4ca1-afbd-01fd970cf3e3", + "metadata": {}, + "source": [ + "## Agent Logic\n", + "\n", + "So now we have the planning and initial execution done. We need a component to process these outputs and either:\n", + "1. Respond with the correct answer.\n", + "2. Loop with a new plan.\n", + "\n", + "The paper calls this the \"joiner\"." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2978991e-45a4-44e6-9deb-f941f44fe93a", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.output_parsers import StrOutputParser\n", + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "def format_task(task, idx):\n", + " thought = \"\" # TODO: Pass through CoT\n", + " tool = task[\"tool\"]\n", + " tool_name = tool if isinstance(tool, str) else tool.name # Handle join()\n", + " return f\"{thought}{idx}. {{{tool_name}: {task['args']}}}\"\n", + "\n", + "\n", + "def format_tasks(executor_output: dict):\n", + " tasks = executor_output[\"tasks\"]\n", + " formatted_plan = \"\\n\".join(format_task(task, idx) for idx, task in tasks.items())\n", + " observations = \"\\n\".join(f\"{k}: {v}\" for k, v in executor_output[\"join\"].items())\n", + " return f\"Original Plan:\\n{formatted_plan}\\nExecuted plan results:\\n{observations}\"\n", + "\n", + "\n", + "def _parse_joiner_output(raw_answer: str) -> str:\n", + " thought, answer, is_replan = \"\", \"\", False # default values\n", + " raw_answers = raw_answer.split(\"\\n\")\n", + " for ans in raw_answers:\n", + " if ans.startswith(\"Action:\"):\n", + " answer = ans[ans.find(\"(\") + 1 : ans.find(\")\")]\n", + " is_replan = JOINER_REPLAN in ans\n", + " elif ans.startswith(\"Thought:\"):\n", + " thought = ans.split(\"Thought:\")[1].strip()\n", + " if is_replan:\n", + " return {\"thought\": thought, \"context\": answer}\n", + " else:\n", + " return {\"thought\": thought, \"answer\": answer}" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b2feea5a-e0e4-4cff-8cb5-fdbfec95ba57", + "metadata": {}, + "outputs": [], + "source": [ + "def create_joiner(prompt, llm):\n", + " return (\n", + " (lambda x: {**x[\"plan\"], \"input\": x[\"input\"]})\n", + " | RunnablePassthrough.assign(scratchpad=format_tasks)\n", + " | ChatPromptTemplate.from_messages([(\"system\", prompt), (\"user\", \"{input}\")])\n", + " | llm\n", + " | StrOutputParser()\n", + " | _parse_joiner_output\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "942dab42-ad42-4ba2-90d5-49edbe4fae68", + "metadata": {}, + "outputs": [], + "source": [ + "system_prompt = (\n", + " \"Solve a question answering task with interleaving Observation, Thought, and Action steps. Here are some guidelines:\\n\"\n", + " \" - In the Assistant Scratchpad, you will be given results of a plan you have executed to answer the user's question.\\n\"\n", + " \" - Thought needs to reason about the question based on the Observations in 1-2 sentences.\\n\"\n", + " \" - There are cases where the Observations are unclear or irrelevant (in the case the task execution was unsuccessful or subpar). Only heed the relevant ones\\n\"\n", + " \" Respond in the following format:\\n\\n\"\n", + " \"Thought: \\n\"\n", + " \"Action: \\n\"\n", + " \"Available actions:\\n\"\n", + " f\" (1) {JOINER_FINISH}(the final answer to return to the user): returns the answer and finishes the task.\\n\"\n", + " f\" (2) {JOINER_REPLAN}(the reasoning and information to provide to make a better next plan): instructs why we must replan\\n\\n\"\n", + " \" Examples:\\n\"\n", + " \"Question: How many users are currently using the new product?\\n\"\n", + " \"...task returns the number 32,000\\n\"\n", + " \"Thought: I find no issue with the original plan, and the results satisfy everything in the user question.\\n\"\n", + " f\"Action: {JOINER_FINISH}(32,000 users currently use the new product)\\n###\\n\"\n", + " \"Question: Are the gophers beating the rabbits??\\n\"\n", + " \"...task returns the a score of 7 for rabbits but no other value...\\n\"\n", + " \"Thought: I need the gophers' score to make a final decision.\\n\"\n", + " f\"Action: {JOINER_REPLAN}(The rabbits have a score of 7, but I need the gophers' score.)\"\n", + " \"Assistant Scratchpad:\\n{scratchpad}\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "a07d0804-2ce5-4462-98eb-4473f36ef704", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "data": { + "text/plain": [ + "{'thought': 'Based on the executed plan, both Aliya and Roger received an A+ score in Geology. Therefore, Aliya did not get a better score than Roger in Geology.',\n", + " 'answer': 'No, Aliya did not get a better score than Roger in Geology. They both received an A+.'}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-3.5-turbo\"))\n", + "joiner.invoke({\"plan\": task_results, \"input\": example_question})" + ] + }, + { + "cell_type": "markdown", + "id": "b099e5ee-2c23-47d9-9387-0f64e02627d3", + "metadata": {}, + "source": [ + "### Construct Agent\n", + "\n", + "Now we have all the required pieces!" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "768b5f11-e3d2-47be-8143-a7dcd8765243", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import END, Graph\n", + "\n", + "workflow = Graph()\n", + "\n", + "# 1. Define vertices\n", + "\n", + "planner = create_planner(\n", + " llm=ChatOpenAI(model=\"gpt-3.5-turbo\"),\n", + " example_prompt=examples,\n", + " # TODO: You can update and optimize the replanner prompt to\n", + " # better critique the original plan\n", + " example_prompt_replan=examples,\n", + " tools=[get_user_id, get_scores],\n", + ")\n", + "plan_and_execute = RunnablePassthrough.assign(plan=planner | construct_dag)\n", + "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-3.5-turbo\"))\n", + "joiner_node = RunnablePassthrough.assign(joined_output=joiner)\n", + "\n", + "\n", + "workflow.add_node(\"plan_and_execute\", plan_and_execute)\n", + "workflow.add_node(\"join\", joiner_node)\n", + "workflow.add_node(\"end\", lambda x: x[\"joined_output\"].get(\"answer\", x))\n", + "\n", + "## Define edges\n", + "\n", + "workflow.add_edge(\"plan_and_execute\", \"join\")\n", + "\n", + "### This condition determines looping logic\n", + "\n", + "\n", + "def should_continue(joiner_output):\n", + " if joiner_output[\"joined_output\"].get(\"context\"):\n", + " return \"continue\"\n", + " return \"end\"\n", + "\n", + "\n", + "workflow.add_conditional_edges(\n", + " start_key=\"join\",\n", + " # Next, we pass in the function that will determine which node is called next.\n", + " condition=should_continue,\n", + " conditional_edge_mapping={\n", + " # If it generates context, we must replan\n", + " \"continue\": \"plan_and_execute\",\n", + " # Otherwise we finish.\n", + " \"end\": \"end\",\n", + " },\n", + ")\n", + "workflow.set_entry_point(\"plan_and_execute\")\n", + "workflow.set_finish_point(\"end\")\n", + "chain = workflow.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "0b3a0916-d8ca-4092-b91c-d9e2b05259d8", + "metadata": {}, + "outputs": [], + "source": [ + "# chain.invoke({\"input\": \"Did Aliya get a better score than Roger in Geology?\"})" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "e3f3e409-11e7-4171-b2bc-7b0e82dfd10d", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "ename": "KeyError", + "evalue": "\"Input to ChatPromptTemplate is missing variables {'input'}. Expected: ['input'] Received: ['thought', 'context']\"", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[29], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Try something to trigger replanning\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[43mchain\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minput\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mDid the sum of Aliya and Roger\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43ms grades in Calc map out to less than\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m the total grade for the class?\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:456\u001b[0m, in \u001b[0;36mPregel.invoke\u001b[0;34m(self, input, config, output, **kwargs)\u001b[0m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 449\u001b[0m \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 453\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 454\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]:\n\u001b[1;32m 455\u001b[0m latest: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 456\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 457\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 458\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 459\u001b[0m \u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 460\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 461\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 462\u001b[0m \u001b[43m \u001b[49m\u001b[43mlatest\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n\u001b[1;32m 463\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m latest\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:483\u001b[0m, in \u001b[0;36mPregel.transform\u001b[0;34m(self, input, config, output, **kwargs)\u001b[0m\n\u001b[1;32m 475\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtransform\u001b[39m(\n\u001b[1;32m 476\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 477\u001b[0m \u001b[38;5;28minput\u001b[39m: Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 481\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 482\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]]:\n\u001b[0;32m--> 483\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform_stream_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 484\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\n\u001b[1;32m 485\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 486\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01myield\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1226\u001b[0m, in \u001b[0;36mRunnable._transform_stream_with_config\u001b[0;34m(self, input, transformer, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 1224\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1225\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m-> 1226\u001b[0m chunk: Output \u001b[38;5;241m=\u001b[39m context\u001b[38;5;241m.\u001b[39mrun(\u001b[38;5;28mnext\u001b[39m, iterator) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 1227\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m chunk\n\u001b[1;32m 1228\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m final_output_supported:\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:301\u001b[0m, in \u001b[0;36mPregel._transform\u001b[0;34m(self, input, run_manager, config, output)\u001b[0m\n\u001b[1;32m 291\u001b[0m done, inflight \u001b[38;5;241m=\u001b[39m concurrent\u001b[38;5;241m.\u001b[39mfutures\u001b[38;5;241m.\u001b[39mwait(\n\u001b[1;32m 292\u001b[0m [\n\u001b[1;32m 293\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(proc\u001b[38;5;241m.\u001b[39minvoke, \u001b[38;5;28minput\u001b[39m, config)\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 297\u001b[0m timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstep_timeout,\n\u001b[1;32m 298\u001b[0m )\n\u001b[1;32m 300\u001b[0m \u001b[38;5;66;03m# interrupt on failure or timeout\u001b[39;00m\n\u001b[0;32m--> 301\u001b[0m \u001b[43m_interrupt_or_proceed\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdone\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minflight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 303\u001b[0m \u001b[38;5;66;03m# apply writes to channels\u001b[39;00m\n\u001b[1;32m 304\u001b[0m _apply_writes(checkpoint, channels, pending_writes, config, step \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m)\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:548\u001b[0m, in \u001b[0;36m_interrupt_or_proceed\u001b[0;34m(done, inflight, step)\u001b[0m\n\u001b[1;32m 546\u001b[0m inflight\u001b[38;5;241m.\u001b[39mpop()\u001b[38;5;241m.\u001b[39mcancel()\n\u001b[1;32m 547\u001b[0m \u001b[38;5;66;03m# raise the exception\u001b[39;00m\n\u001b[0;32m--> 548\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 549\u001b[0m \u001b[38;5;66;03m# TODO this is where retry of an entire step would happen\u001b[39;00m\n\u001b[1;32m 551\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inflight:\n\u001b[1;32m 552\u001b[0m \u001b[38;5;66;03m# if we got here means we timed out\u001b[39;00m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:3596\u001b[0m, in \u001b[0;36mRunnableBindingBase.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 3590\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 3591\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 3592\u001b[0m \u001b[38;5;28minput\u001b[39m: Input,\n\u001b[1;32m 3593\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 3594\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Optional[Any],\n\u001b[1;32m 3595\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Output:\n\u001b[0;32m-> 3596\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbound\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3597\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3598\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_merge_configs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3599\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3600\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/passthrough.py:415\u001b[0m, in \u001b[0;36mRunnableAssign.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 409\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 410\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 411\u001b[0m \u001b[38;5;28minput\u001b[39m: Dict[\u001b[38;5;28mstr\u001b[39m, Any],\n\u001b[1;32m 412\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 413\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 414\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[0;32m--> 415\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_invoke\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/passthrough.py:402\u001b[0m, in \u001b[0;36mRunnableAssign._invoke\u001b[0;34m(self, input, run_manager, config, **kwargs)\u001b[0m\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_invoke\u001b[39m(\n\u001b[1;32m 390\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 391\u001b[0m \u001b[38;5;28minput\u001b[39m: Dict[\u001b[38;5;28mstr\u001b[39m, Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 395\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[1;32m 396\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\n\u001b[1;32m 397\u001b[0m \u001b[38;5;28minput\u001b[39m, \u001b[38;5;28mdict\u001b[39m\n\u001b[1;32m 398\u001b[0m ), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe input to RunnablePassthrough.assign() must be a dict.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 401\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28minput\u001b[39m,\n\u001b[0;32m--> 402\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmapper\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 403\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 404\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 405\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 406\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 407\u001b[0m }\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:2339\u001b[0m, in \u001b[0;36mRunnableParallel.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m get_executor_for_config(config) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 2327\u001b[0m futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 2328\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 2329\u001b[0m step\u001b[38;5;241m.\u001b[39minvoke,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2337\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, step \u001b[38;5;129;01min\u001b[39;00m steps\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 2338\u001b[0m ]\n\u001b[0;32m-> 2339\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43m{\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfuture\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mzip\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msteps\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfutures\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 2340\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 2341\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:2339\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m get_executor_for_config(config) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 2327\u001b[0m futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 2328\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 2329\u001b[0m step\u001b[38;5;241m.\u001b[39minvoke,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2337\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, step \u001b[38;5;129;01min\u001b[39;00m steps\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 2338\u001b[0m ]\n\u001b[0;32m-> 2339\u001b[0m output \u001b[38;5;241m=\u001b[39m {key: \u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m key, future \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(steps, futures)}\n\u001b[1;32m 2340\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 2341\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/_base.py:456\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 454\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 455\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[0;32m--> 456\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 457\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 458\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m()\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/_base.py:401\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception:\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 401\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 403\u001b[0m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 404\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/branch.py:211\u001b[0m, in \u001b[0;36mRunnableBranch.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n\u001b[1;32m 210\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 211\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdefault\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 212\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 213\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 214\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtag\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbranch:default\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 215\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 216\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 217\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 218\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 219\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/prompts/base.py:93\u001b[0m, in \u001b[0;36mBasePromptTemplate.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 91\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Dict, config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 92\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m PromptValue:\n\u001b[0;32m---> 93\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 94\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_format_prompt_with_error_handling\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 95\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 96\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 97\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mprompt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 98\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/prompts/base.py:83\u001b[0m, in \u001b[0;36mBasePromptTemplate._format_prompt_with_error_handling\u001b[0;34m(self, inner_input)\u001b[0m\n\u001b[1;32m 81\u001b[0m missing \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_variables)\u001b[38;5;241m.\u001b[39mdifference(inner_input)\n\u001b[1;32m 82\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m missing:\n\u001b[0;32m---> 83\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(\n\u001b[1;32m 84\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInput to \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is missing variables \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmissing\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m Expected: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_variables\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 86\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m Received: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlist\u001b[39m(inner_input\u001b[38;5;241m.\u001b[39mkeys())\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 87\u001b[0m )\n\u001b[1;32m 88\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mformat_prompt(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39minner_input)\n", + "\u001b[0;31mKeyError\u001b[0m: \"Input to ChatPromptTemplate is missing variables {'input'}. Expected: ['input'] Received: ['thought', 'context']\"" + ] + } + ], + "source": [ + "# Try something to trigger replanning\n", + "chain.invoke(\n", + " {\n", + " \"input\": \"Did the sum of Aliya and Roger's grades in Calc map out to less than\"\n", + " \" the total grade for the class?\"\n", + " }\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "201f3dc0-74ee-4ef0-908d-b71d0e11b080", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From cf3630c3590adf0c933f149ce61cc27bf1153a87 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 15 Jan 2024 20:31:43 -0800 Subject: [PATCH 002/108] Add llm compiler example --- examples/LLMCompiler.ipynb | 957 ------------------------------------- 1 file changed, 957 deletions(-) delete mode 100644 examples/LLMCompiler.ipynb diff --git a/examples/LLMCompiler.ipynb b/examples/LLMCompiler.ipynb deleted file mode 100644 index ca73266b2..000000000 --- a/examples/LLMCompiler.ipynb +++ /dev/null @@ -1,957 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "0c8b472b-f3fb-46c2-841f-930a4692697b", - "metadata": {}, - "source": [ - "# Implementing LLMCompiler using LangGraph\n", - "By Kim, et. al [🔗](https://arxiv.org/abs/2312.04511)\n", - "\n", - "LLMCompiler is an agent architecture intented on speeding up the latency of agentic tasks via fast, parallel tool execution.\n", - "\n", - "It has 3 main components:\n", - "\n", - "1. Planner: generate a DAG of tasks.\n", - "2. Task Fetching Unit: schedules and executes the tasks\n", - "3. Joiner: Responds to the user or triggers a second plan." - ] - }, - { - "cell_type": "markdown", - "id": "1abdedbd-d81b-4ee9-b46f-f29439ed1350", - "metadata": {}, - "source": [ - "# Part 1: Planner" - ] - }, - { - "cell_type": "markdown", - "id": "278f76b0-a2e1-42dc-bd3e-6f624984e3dd", - "metadata": {}, - "source": [ - "#### Output Parser\n", - "\n", - "Parses task lists in the following form:\n", - "```plaintext\n", - "1. tool_1(\"arg1\", 3.5, ...)\n", - "Thought: I then want to find out Y by using tool_2\n", - "2. tool_2(\"\", ${1})'\n", - "3. join()\"\n", - "```\n", - "\n", - "The \"Thought\" lines are optional. The `${#}` placeholders are variables. These are used to route tool (task) outputs to other tools." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "cc71b6c4-d701-4217-9701-95ac0857e4e1", - "metadata": {}, - "outputs": [], - "source": [ - "import ast\n", - "import json\n", - "import re\n", - "from typing import Any, Optional, Sequence, Union\n", - "\n", - "from langchain.agents.agent import AgentOutputParser\n", - "from langchain.schema import OutputParserException\n", - "from langchain_core.tools import BaseTool\n", - "\n", - "THOUGHT_PATTERN = r\"Thought: ([^\\n]*)\"\n", - "# ACTION_PATTERN = r\"\\n*(\\d+)\\. (.*?})(\\s*#\\w+\\n)?\"\n", - "# $1 or ${1} -> 1\n", - "ID_PATTERN = r\"\\$\\{?(\\d+)\\}?\"\n", - "END_OF_PLAN = \"\"\n", - "\n", - "\n", - "class ActionParserFSM:\n", - " def __init__(self):\n", - " self.reset()\n", - "\n", - " def reset(self):\n", - " self.state = \"START\"\n", - " self.task_index = \"\"\n", - " self.action = \"\"\n", - " self.comment = \"\"\n", - " self.bracket_count = 0\n", - " self.actions = []\n", - "\n", - " def parse(self, text: str):\n", - " for char in text:\n", - " action = self.process_char(char)\n", - " if action:\n", - " yield action\n", - " action = self.save_action()\n", - " if action:\n", - " yield action\n", - "\n", - " def process_char(self, char: str) -> Optional[dict]:\n", - " action = None\n", - " if self.state == \"START\":\n", - " if char.isdigit():\n", - " self.state = \"NUMBER\"\n", - " self.task_index += char\n", - " elif char == \"\\n\":\n", - " self.reset()\n", - " elif self.state == \"NUMBER\":\n", - " if char == \".\":\n", - " self.state = \"ACTION\"\n", - " elif char.isdigit():\n", - " self.task_index += char\n", - " else:\n", - " self.reset()\n", - " elif self.state == \"ACTION\":\n", - " if char == \"{\":\n", - " self.bracket_count += 1\n", - " elif char == \"}\":\n", - " self.bracket_count -= 1\n", - " if self.bracket_count == 0:\n", - " self.state = \"COMMENT\"\n", - " self.action += char\n", - " elif self.state == \"COMMENT\":\n", - " if char == \"\\n\":\n", - " action = self.save_action()\n", - " self.reset()\n", - " else:\n", - " self.comment += char\n", - " return action\n", - "\n", - " def save_action(self):\n", - " if self.task_index and self.action:\n", - " parsed_action = json.loads(self.action.strip())\n", - " tool_name, args = next(iter(parsed_action.items()))\n", - " return {\n", - " \"task_index\": int(self.task_index),\n", - " \"tool_name\": tool_name,\n", - " \"args\": args,\n", - " }\n", - "\n", - "\n", - "class LLMCompilerPlanParser(AgentOutputParser, extra=\"allow\"):\n", - " \"\"\"Planning output parser.\"\"\"\n", - "\n", - " def __init__(self, tools: Sequence[BaseTool], **kwargs):\n", - " super().__init__(**kwargs)\n", - " self.tools = tools\n", - "\n", - " def parse(self, text: str) -> list[str]:\n", - " parser = ActionParserFSM()\n", - " graph_dict = {}\n", - " for task in parser.parse(text):\n", - " idx = int(task[\"task_index\"])\n", - "\n", - " task = instantiate_task(\n", - " tools=self.tools,\n", - " idx=idx,\n", - " tool_name=task[\"tool_name\"],\n", - " args=task[\"args\"],\n", - " )\n", - "\n", - " graph_dict[idx] = task\n", - " if task[\"tool\"] == \"join\":\n", - " break\n", - "\n", - " return graph_dict\n", - "\n", - "\n", - "### Helper functions\n", - "\n", - "\n", - "def default_dependency_rule(idx, args: str):\n", - " matches = re.findall(ID_PATTERN, args)\n", - " numbers = [int(match) for match in matches]\n", - " return idx in numbers\n", - "\n", - "\n", - "def _get_dependencies_from_graph(\n", - " idx: int, tool_name: str, args: Sequence[Any]\n", - ") -> dict[str, list[str]]:\n", - " \"\"\"Get dependencies from a graph.\"\"\"\n", - " if tool_name == \"join\":\n", - " return list(range(1, idx))\n", - " return [i for i in range(1, idx) if default_dependency_rule(i, str(args))]\n", - "\n", - "\n", - "def instantiate_task(\n", - " tools: Sequence[BaseTool],\n", - " idx: int,\n", - " tool_name: str,\n", - " args: Union[dict, str, bool, None],\n", - ") -> dict:\n", - " dependencies = _get_dependencies_from_graph(idx, tool_name, args)\n", - " if tool_name == \"join\":\n", - " tool = \"join\"\n", - " else:\n", - " try:\n", - " tool = tools[[tool.name for tool in tools].index(tool_name)]\n", - " except ValueError as e:\n", - " raise OutputParserException(f\"Tool {tool_name} not found.\")\n", - " return dict(\n", - " tool=tool,\n", - " args=args,\n", - " dependencies=dependencies,\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "228a2f75-68b1-4dbf-95dc-4bfc738c3b3b", - "metadata": {}, - "source": [ - "#### Planner Code\n", - "\n", - "This takes the input and outputs a plan." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "58af9746-1011-41e9-a77a-be9cef202aea", - "metadata": {}, - "outputs": [], - "source": [ - "import asyncio\n", - "import json\n", - "import re\n", - "from typing import Any, Optional, Sequence, Union\n", - "from uuid import UUID\n", - "\n", - "from langchain.callbacks.base import AsyncCallbackHandler, Callbacks\n", - "from langchain.chat_models.base import BaseChatModel\n", - "from langchain.schema import LLMResult\n", - "from langchain.schema.messages import HumanMessage, SystemMessage\n", - "from langchain_core.prompts import ChatPromptTemplate\n", - "from langchain_core.pydantic_v1 import BaseModel\n", - "from langchain_core.runnables import RunnableBranch\n", - "from langchain_core.tools import BaseTool\n", - "\n", - "END_OF_PLAN = \"\"\n", - "\n", - "JOINER_FINISH = \"Finish\"\n", - "JOINER_REPLAN = \"Replan\"\n", - "\n", - "\n", - "JOIN_DESCRIPTION = (\n", - " \"join():\\n\"\n", - " \" - Collects and combines results from prior actions.\\n\"\n", - " \" - A LLM agent is called upon invoking join to either finalize the user query or wait until the plans are executed.\\n\"\n", - " \" - join should always be the last action in the plan, and will be called in two scenarios:\\n\"\n", - " \" (a) if the answer can be determined by gathering the outputs from tasks to generate the final response.\\n\"\n", - " \" (b) if the answer cannot be determined in the planning phase before you execute the plans. \"\n", - ")\n", - "\n", - "planner_prompt_tmpl_str = (\n", - " \"Given a user query, create a plan to solve it with the utmost parallelizability. \"\n", - " \"Each plan should comprise an action from the following {num_tools} types:\\n\"\n", - " \"{tool_descriptions}\"\n", - " f\"\\n{{num_toolsp1}}. {JOIN_DESCRIPTION}\"\n", - " \"Guidelines:\\n\"\n", - " \" - Each action described above contains input/output types and description.\\n\"\n", - " \" - You must strictly adhere to the input and output types for each action.\\n\"\n", - " \" - The action descriptions contain the guidelines. You MUST strictly follow those guidelines when you use the actions.\\n\"\n", - " \" - Each action in the plan should strictly be one of the above types. Follow the Python conventions for each action.\\n\"\n", - " \" - Pass arguments by keyword ONLY\\n\"\n", - " \" - Each action MUST have a unique ID, which is strictly increasing.\\n\"\n", - " \" - Inputs for actions can either be constants or outputs from preceding actions. \"\n", - " \"In the latter case, use the format $id to denote the ID of the previous action whose output will be the input.\\n\"\n", - " f\" - Always call join as the last action in the plan. Say '{END_OF_PLAN}' after you call join\\n\"\n", - " \" - Ensure the plan maximizes parallelizability.\\n\"\n", - " \" - Only use the provided action types. If a query cannot be addressed using these, invoke the join action for the next steps.\\n\"\n", - " \" - Never explain the plan with comments (e.g. #).\\n\"\n", - " \" - Never introduce new actions other than the ones provided.\\n\\n\"\n", - " \"{replan}\"\n", - " \"{examples}\"\n", - ")\n", - "\n", - "\n", - "def _generate_planner_prompt(\n", - " tools: Sequence[BaseTool],\n", - " example_prompt=str,\n", - "):\n", - " tool_descriptions = \"\\n\".join(\n", - " f\"{i+1}. {tool.description}\" for i, tool in enumerate(tools)\n", - " )\n", - " planner_prompt_template = ChatPromptTemplate.from_messages(\n", - " [(\"system\", planner_prompt_tmpl_str), (\"user\", \"Question: {input}{context}\")]\n", - " ).partial(\n", - " tool_descriptions=tool_descriptions,\n", - " examples=\"Here are some examples:\\n\\n\" + example_prompt\n", - " if example_prompt\n", - " else \"\",\n", - " num_tools=len(tools),\n", - " num_toolsp1=len(tools) + 1,\n", - " )\n", - "\n", - " return planner_prompt_template\n", - "\n", - "\n", - "def create_planner(\n", - " llm: BaseChatModel,\n", - " example_prompt: str,\n", - " example_prompt_replan: str,\n", - " tools: Sequence[Union[BaseTool]],\n", - " stop: Optional[list[str]] = None,\n", - "):\n", - " og_planner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", - " replan=\"\",\n", - " context=\"\",\n", - " )\n", - " replanner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", - " replan=' - You are given \"Previous Plan\" which is the plan that the previous agent created along with the execution results '\n", - " \"(given as Observation) of each plan and a general thought (given as Thought) about the executed results.\"\n", - " 'You MUST use these information to create the next plan under \"Current Plan\".\\n'\n", - " ' - When starting the Current Plan, you should start with \"Thought\" that outlines the strategy for the next plan.\\n'\n", - " \" - In the Current Plan, you should NEVER repeat the actions that are already executed in the Previous Plan.\\n\"\n", - " )\n", - " bound_llm = llm.bind(stop=stop)\n", - " return (\n", - " RunnableBranch(\n", - " ((lambda x: x.get(\"replan\")), replanner_prompt),\n", - " og_planner_prompt,\n", - " )\n", - " | bound_llm\n", - " | LLMCompilerPlanParser(tools=tools)\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "7feb5c82-b1a9-40ae-863a-0362fe3ce5ea", - "metadata": {}, - "source": [ - "#### Example usage\n", - "\n", - "Here's an example usage of the planner module" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3fe074ea-7314-47a7-9a9f-a8e6191ea1f3", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain.tools import tool\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "\n", - "@tool\n", - "def get_user_id(first_name: str, last_name: Optional[str] = None):\n", - " \"\"\"Query the user IDs of everyone with the provided name.\"\"\"\n", - " return 4\n", - "\n", - "\n", - "@tool\n", - "def get_scores(class_name: str, user_id: int):\n", - " \"\"\"Query the class registry for grades of the provided user ID.\"\"\"\n", - " return \"A+\"\n", - "\n", - "\n", - "examples = (\n", - " \"Question: What's the user ID for Johnny Drop Tables?\\n\"\n", - " '1. {\"get_user_id\": {\"first_name\": \"Johnny\", \"last_name\":\"Drop Tables\"}}\\n'\n", - " f'2. {{\"join\": null}}{END_OF_PLAN}\\n'\n", - " \"###\\n\"\n", - " \"\\n\"\n", - " \"Question: What was Eric Zhang's score in Calc?\\n\"\n", - " '1. {\"get_user_id\": {\"first_name\": \"Eric\", \"last_name\":\"Zhang\"}}\\n'\n", - " '2. {\"get_scores\": {\"class_name\": \"calc\", \"user_id\": \"$1\"}}\\n'\n", - " f'3. {{\"join\": null}}{END_OF_PLAN}\\n'\n", - " \"###\\n\"\n", - " \"\\n\"\n", - ")\n", - "\n", - "planner = create_planner(\n", - " ChatOpenAI(model=\"gpt-3.5-turbo\"),\n", - " example_prompt=examples,\n", - " example_prompt_replan=\"\",\n", - " tools=[get_user_id, get_scores],\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "55fb0f99-4e59-4e5a-b687-a90bb4d06d39", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{1: {'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: Optional[str] = None) - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", - " 'args': {'first_name': 'Sam', 'last_name': 'Van Damm'},\n", - " 'dependencies': []},\n", - " 2: {'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: Optional[str] = None) - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", - " 'args': {'first_name': 'Will', 'last_name': 'Van Damm'},\n", - " 'dependencies': []},\n", - " 3: {'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", - " 'args': {'class_name': 'Calc BC', 'user_id': '$1'},\n", - " 'dependencies': [1]},\n", - " 4: {'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", - " 'args': {'class_name': 'Calc BC', 'user_id': '$2'},\n", - " 'dependencies': [2]},\n", - " 5: {'tool': 'join', 'args': None, 'dependencies': [1, 2, 3, 4]}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tasks = planner.invoke(\n", - " {\"input\": \"What are the Calc BC grades for Sam and Will Van Damm?\"}\n", - ")\n", - "tasks" - ] - }, - { - "cell_type": "markdown", - "id": "5d0e795f-61ff-4553-9823-23e7624ca180", - "metadata": {}, - "source": [ - "## 2. Task Fetching Unit\n", - "\n", - "This component scheudles the tasks. In the paper, it's kept separate from the \"executor\", but here we execute the tasks within the same DAG.\n", - "\n", - "Basic idea is that, given a list of dicts of the form:\n", - "\n", - "```typescript\n", - "{\n", - " tool: BaseTool,\n", - " dependencies: number[],\n", - "}\n", - "```\n", - "\n", - "1. Create a topological sort of the tasks\n", - "2. Execute them on the previous step's output, ensuring to perform variable substitution where appropriate" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "c70a0e28-43db-4ea2-af48-8a2f310dce83", - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "\n", - "from langchain_core.agents import AgentFinish\n", - "from langchain_core.runnables import (\n", - " RunnableLambda,\n", - " RunnableParallel,\n", - " RunnablePassthrough,\n", - ")\n", - "from langgraph.graph import END, Graph\n", - "\n", - "logging.basicConfig(level=logging.INFO)\n", - "logger = logging.getLogger()\n", - "\n", - "\n", - "def _sort_tasks(data):\n", - " sorted_tasks = []\n", - " while data:\n", - " no_deps = {k: v for k, v in data.items() if not v[\"dependencies\"]}\n", - " if not no_deps:\n", - " raise ValueError(\"We seem to have run into a circular dependency.\")\n", - "\n", - " sorted_tasks.append(no_deps)\n", - " data = {\n", - " k: {\n", - " **v,\n", - " \"dependencies\": [d for d in v[\"dependencies\"] if d not in no_deps],\n", - " }\n", - " for k, v in data.items()\n", - " if k not in no_deps\n", - " }\n", - " return sorted_tasks\n", - "\n", - "\n", - "def _resolve_arg(x: dict, arg):\n", - " return x[f\"task_{arg[1:]}\"] if isinstance(arg, str) and arg.startswith(\"$\") else arg\n", - "\n", - "\n", - "def _execute_task(task, x, config):\n", - " tool_to_use = task[\"tool\"]\n", - " args = task[\"args\"]\n", - " if isinstance(args, str):\n", - " resolved_args = _resolve_arg(x, args)\n", - " elif isinstance(args, dict):\n", - " resolved_args = {key: _resolve_arg(x, val) for key, val in args.items()}\n", - " else:\n", - " logger.warning(f\"Unsupported arg type: {args}\")\n", - " return tool_to_use.invoke(resolved_args, config)\n", - "\n", - "\n", - "def construct_dag(tasks):\n", - " sorted_tasks = _sort_tasks(tasks)\n", - " chain = None\n", - " for idx, task_group in enumerate(sorted_tasks):\n", - " if len(task_group) == 1 and next(iter(task_group.values()))[\"tool\"] == \"join\":\n", - " # TODO: actually join the values\n", - " step = lambda x: {\"join\": x}\n", - " else:\n", - " # Cascade all results forward\n", - " constructor = (\n", - " RunnableParallel if chain is None else RunnablePassthrough.assign\n", - " )\n", - " step = constructor(\n", - " **{\n", - " f\"task_{idx}\": RunnableLambda(\n", - " lambda x, config: _execute_task(task, x, config)\n", - " ).with_config(run_name=f\"task_{idx}\")\n", - " for idx, task in task_group.items()\n", - " }\n", - " ).with_config(run_name=f\"TaskGroup{idx}\")\n", - " if chain is None:\n", - " chain = step\n", - " else:\n", - " chain |= step\n", - "\n", - " if chain is not None:\n", - " return chain | RunnablePassthrough.assign(tasks=lambda _: tasks)\n", - " return chain" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "6fecaefc-d904-4409-af63-53c5b7a3785f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " +------------------------------+ \n", - " | ParallelInput | \n", - " +------------------------------+ \n", - " ***** ***** \n", - " **** **** \n", - " *** *** \n", - " +---------------------------------------+ +---------------------------------------+ \n", - " | Lambda(lambda x, config: _execute_... | | Lambda(lambda x, config: _execute_... | \n", - " +---------------------------------------+ +---------------------------------------+ \n", - " ***** ***** \n", - " **** **** \n", - " *** *** \n", - " +-------------------------------+ \n", - " | ParallelOutput | \n", - " +-------------------------------+ \n", - " * \n", - " * \n", - " * \n", - " +------------------------------+ \n", - " | ParallelInput | \n", - " ****+------------------------------+***** \n", - " ******** * ********* \n", - " ******** * ******** \n", - " ***** * ***** \n", - "+---------------------------------------+ +---------------------------------------+ +-------------+ \n", - "| Lambda(lambda x, config: _execute_... | | Lambda(lambda x, config: _execute_... | ****| Passthrough | \n", - "+---------------------------------------+* +---------------------------------------+ ******** +-------------+ \n", - " ******** * ********* \n", - " ******** * ******** \n", - " ***** * ***** \n", - " +-------------------------------+ \n", - " | ParallelOutput | \n", - " +-------------------------------+ \n", - " * \n", - " * \n", - " * \n", - " +-------------------------------+ \n", - " | Lambda(lambda x: {'join': x}) | \n", - " +-------------------------------+ \n", - " * \n", - " * \n", - " * \n", - " +----------------------+ \n", - " | ParallelInput | \n", - " +----------------------+ \n", - " *** *** \n", - " *** *** \n", - " ** ** \n", - " +-------------------------+ +-------------+ \n", - " | Lambda(lambda _: tasks) | | Passthrough | \n", - " +-------------------------+ +-------------+ \n", - " *** *** \n", - " *** *** \n", - " ** ** \n", - " +-----------------------+ \n", - " | ParallelOutput | \n", - " +-----------------------+ \n" - ] - } - ], - "source": [ - "graph = construct_dag(tasks)\n", - "graph.get_graph().print_ascii()" - ] - }, - { - "cell_type": "markdown", - "id": "9efa15ae-817a-48c6-86ed-16bc112fedc5", - "metadata": {}, - "source": [ - "### Example\n", - "\n", - "We still haven't introduced any cycles in our computation graph, so this is all easily expressed in LCEL." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "133d124a-0d41-4c6d-a86a-34fa4cb1430f", - "metadata": {}, - "outputs": [], - "source": [ - "chain = planner | construct_dag" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "55142257-2674-4a47-988e-0d2810917329", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" - ] - }, - { - "ename": "KeyError", - "evalue": "\"Input to ChatPromptTemplate is missing variables {'input'}. Expected: ['input', 'scratchpad'] Received: ['join', 'tasks', 'scratchpad']\"", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[15], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m example_question \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDid Aliya get a better score than Roger in Geology?\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m----> 2\u001b[0m task_results \u001b[38;5;241m=\u001b[39m \u001b[43mchain\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minput\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mexample_question\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m task_results[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mjoin\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:456\u001b[0m, in \u001b[0;36mPregel.invoke\u001b[0;34m(self, input, config, output, **kwargs)\u001b[0m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 449\u001b[0m \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 453\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 454\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]:\n\u001b[1;32m 455\u001b[0m latest: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 456\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 457\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 458\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 459\u001b[0m \u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 460\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 461\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 462\u001b[0m \u001b[43m \u001b[49m\u001b[43mlatest\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n\u001b[1;32m 463\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m latest\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:483\u001b[0m, in \u001b[0;36mPregel.transform\u001b[0;34m(self, input, config, output, **kwargs)\u001b[0m\n\u001b[1;32m 475\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtransform\u001b[39m(\n\u001b[1;32m 476\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 477\u001b[0m \u001b[38;5;28minput\u001b[39m: Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 481\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 482\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]]:\n\u001b[0;32m--> 483\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform_stream_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 484\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\n\u001b[1;32m 485\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 486\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01myield\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1226\u001b[0m, in \u001b[0;36mRunnable._transform_stream_with_config\u001b[0;34m(self, input, transformer, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 1224\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1225\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m-> 1226\u001b[0m chunk: Output \u001b[38;5;241m=\u001b[39m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mnext\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43miterator\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 1227\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m chunk\n\u001b[1;32m 1228\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m final_output_supported:\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:301\u001b[0m, in \u001b[0;36mPregel._transform\u001b[0;34m(self, input, run_manager, config, output)\u001b[0m\n\u001b[1;32m 291\u001b[0m done, inflight \u001b[38;5;241m=\u001b[39m concurrent\u001b[38;5;241m.\u001b[39mfutures\u001b[38;5;241m.\u001b[39mwait(\n\u001b[1;32m 292\u001b[0m [\n\u001b[1;32m 293\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(proc\u001b[38;5;241m.\u001b[39minvoke, \u001b[38;5;28minput\u001b[39m, config)\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 297\u001b[0m timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstep_timeout,\n\u001b[1;32m 298\u001b[0m )\n\u001b[1;32m 300\u001b[0m \u001b[38;5;66;03m# interrupt on failure or timeout\u001b[39;00m\n\u001b[0;32m--> 301\u001b[0m \u001b[43m_interrupt_or_proceed\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdone\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minflight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 303\u001b[0m \u001b[38;5;66;03m# apply writes to channels\u001b[39;00m\n\u001b[1;32m 304\u001b[0m _apply_writes(checkpoint, channels, pending_writes, config, step \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m)\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:548\u001b[0m, in \u001b[0;36m_interrupt_or_proceed\u001b[0;34m(done, inflight, step)\u001b[0m\n\u001b[1;32m 546\u001b[0m inflight\u001b[38;5;241m.\u001b[39mpop()\u001b[38;5;241m.\u001b[39mcancel()\n\u001b[1;32m 547\u001b[0m \u001b[38;5;66;03m# raise the exception\u001b[39;00m\n\u001b[0;32m--> 548\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 549\u001b[0m \u001b[38;5;66;03m# TODO this is where retry of an entire step would happen\u001b[39;00m\n\u001b[1;32m 551\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inflight:\n\u001b[1;32m 552\u001b[0m \u001b[38;5;66;03m# if we got here means we timed out\u001b[39;00m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:3596\u001b[0m, in \u001b[0;36mRunnableBindingBase.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 3590\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 3591\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 3592\u001b[0m \u001b[38;5;28minput\u001b[39m: Input,\n\u001b[1;32m 3593\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 3594\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Optional[Any],\n\u001b[1;32m 3595\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Output:\n\u001b[0;32m-> 3596\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbound\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3597\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3598\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_merge_configs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3599\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3600\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/prompts/base.py:93\u001b[0m, in \u001b[0;36mBasePromptTemplate.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 91\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Dict, config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 92\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m PromptValue:\n\u001b[0;32m---> 93\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 94\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_format_prompt_with_error_handling\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 95\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 96\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 97\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mprompt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 98\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/prompts/base.py:83\u001b[0m, in \u001b[0;36mBasePromptTemplate._format_prompt_with_error_handling\u001b[0;34m(self, inner_input)\u001b[0m\n\u001b[1;32m 81\u001b[0m missing \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_variables)\u001b[38;5;241m.\u001b[39mdifference(inner_input)\n\u001b[1;32m 82\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m missing:\n\u001b[0;32m---> 83\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(\n\u001b[1;32m 84\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInput to \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is missing variables \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmissing\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m Expected: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_variables\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 86\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m Received: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlist\u001b[39m(inner_input\u001b[38;5;241m.\u001b[39mkeys())\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 87\u001b[0m )\n\u001b[1;32m 88\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mformat_prompt(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39minner_input)\n", - "\u001b[0;31mKeyError\u001b[0m: \"Input to ChatPromptTemplate is missing variables {'input'}. Expected: ['input', 'scratchpad'] Received: ['join', 'tasks', 'scratchpad']\"" - ] - } - ], - "source": [ - "example_question = \"Did Aliya get a better score than Roger in Geology?\"\n", - "task_results = chain.invoke({\"input\": example_question})\n", - "task_results[\"join\"]" - ] - }, - { - "cell_type": "markdown", - "id": "563d5311-55f0-4ca1-afbd-01fd970cf3e3", - "metadata": {}, - "source": [ - "## Agent Logic\n", - "\n", - "So now we have the planning and initial execution done. We need a component to process these outputs and either:\n", - "1. Respond with the correct answer.\n", - "2. Loop with a new plan.\n", - "\n", - "The paper calls this the \"joiner\"." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2978991e-45a4-44e6-9deb-f941f44fe93a", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.output_parsers import StrOutputParser\n", - "from typing_extensions import TypedDict\n", - "\n", - "\n", - "def format_task(task, idx):\n", - " thought = \"\" # TODO: Pass through CoT\n", - " tool = task[\"tool\"]\n", - " tool_name = tool if isinstance(tool, str) else tool.name # Handle join()\n", - " return f\"{thought}{idx}. {{{tool_name}: {task['args']}}}\"\n", - "\n", - "\n", - "def format_tasks(executor_output: dict):\n", - " tasks = executor_output[\"tasks\"]\n", - " formatted_plan = \"\\n\".join(format_task(task, idx) for idx, task in tasks.items())\n", - " observations = \"\\n\".join(f\"{k}: {v}\" for k, v in executor_output[\"join\"].items())\n", - " return f\"Original Plan:\\n{formatted_plan}\\nExecuted plan results:\\n{observations}\"\n", - "\n", - "\n", - "def _parse_joiner_output(raw_answer: str) -> str:\n", - " thought, answer, is_replan = \"\", \"\", False # default values\n", - " raw_answers = raw_answer.split(\"\\n\")\n", - " for ans in raw_answers:\n", - " if ans.startswith(\"Action:\"):\n", - " answer = ans[ans.find(\"(\") + 1 : ans.find(\")\")]\n", - " is_replan = JOINER_REPLAN in ans\n", - " elif ans.startswith(\"Thought:\"):\n", - " thought = ans.split(\"Thought:\")[1].strip()\n", - " if is_replan:\n", - " return {\"thought\": thought, \"context\": answer}\n", - " else:\n", - " return {\"thought\": thought, \"answer\": answer}" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "b2feea5a-e0e4-4cff-8cb5-fdbfec95ba57", - "metadata": {}, - "outputs": [], - "source": [ - "def create_joiner(prompt, llm):\n", - " return (\n", - " (lambda x: {**x[\"plan\"], \"input\": x[\"input\"]})\n", - " | RunnablePassthrough.assign(scratchpad=format_tasks)\n", - " | ChatPromptTemplate.from_messages([(\"system\", prompt), (\"user\", \"{input}\")])\n", - " | llm\n", - " | StrOutputParser()\n", - " | _parse_joiner_output\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "942dab42-ad42-4ba2-90d5-49edbe4fae68", - "metadata": {}, - "outputs": [], - "source": [ - "system_prompt = (\n", - " \"Solve a question answering task with interleaving Observation, Thought, and Action steps. Here are some guidelines:\\n\"\n", - " \" - In the Assistant Scratchpad, you will be given results of a plan you have executed to answer the user's question.\\n\"\n", - " \" - Thought needs to reason about the question based on the Observations in 1-2 sentences.\\n\"\n", - " \" - There are cases where the Observations are unclear or irrelevant (in the case the task execution was unsuccessful or subpar). Only heed the relevant ones\\n\"\n", - " \" Respond in the following format:\\n\\n\"\n", - " \"Thought: \\n\"\n", - " \"Action: \\n\"\n", - " \"Available actions:\\n\"\n", - " f\" (1) {JOINER_FINISH}(the final answer to return to the user): returns the answer and finishes the task.\\n\"\n", - " f\" (2) {JOINER_REPLAN}(the reasoning and information to provide to make a better next plan): instructs why we must replan\\n\\n\"\n", - " \" Examples:\\n\"\n", - " \"Question: How many users are currently using the new product?\\n\"\n", - " \"...task returns the number 32,000\\n\"\n", - " \"Thought: I find no issue with the original plan, and the results satisfy everything in the user question.\\n\"\n", - " f\"Action: {JOINER_FINISH}(32,000 users currently use the new product)\\n###\\n\"\n", - " \"Question: Are the gophers beating the rabbits??\\n\"\n", - " \"...task returns the a score of 7 for rabbits but no other value...\\n\"\n", - " \"Thought: I need the gophers' score to make a final decision.\\n\"\n", - " f\"Action: {JOINER_REPLAN}(The rabbits have a score of 7, but I need the gophers' score.)\"\n", - " \"Assistant Scratchpad:\\n{scratchpad}\"\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "a07d0804-2ce5-4462-98eb-4473f36ef704", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" - ] - }, - { - "data": { - "text/plain": [ - "{'thought': 'Based on the executed plan, both Aliya and Roger received an A+ score in Geology. Therefore, Aliya did not get a better score than Roger in Geology.',\n", - " 'answer': 'No, Aliya did not get a better score than Roger in Geology. They both received an A+.'}" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-3.5-turbo\"))\n", - "joiner.invoke({\"plan\": task_results, \"input\": example_question})" - ] - }, - { - "cell_type": "markdown", - "id": "b099e5ee-2c23-47d9-9387-0f64e02627d3", - "metadata": {}, - "source": [ - "### Construct Agent\n", - "\n", - "Now we have all the required pieces!" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "768b5f11-e3d2-47be-8143-a7dcd8765243", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import END, Graph\n", - "\n", - "workflow = Graph()\n", - "\n", - "# 1. Define vertices\n", - "\n", - "planner = create_planner(\n", - " llm=ChatOpenAI(model=\"gpt-3.5-turbo\"),\n", - " example_prompt=examples,\n", - " # TODO: You can update and optimize the replanner prompt to\n", - " # better critique the original plan\n", - " example_prompt_replan=examples,\n", - " tools=[get_user_id, get_scores],\n", - ")\n", - "plan_and_execute = RunnablePassthrough.assign(plan=planner | construct_dag)\n", - "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-3.5-turbo\"))\n", - "joiner_node = RunnablePassthrough.assign(joined_output=joiner)\n", - "\n", - "\n", - "workflow.add_node(\"plan_and_execute\", plan_and_execute)\n", - "workflow.add_node(\"join\", joiner_node)\n", - "workflow.add_node(\"end\", lambda x: x[\"joined_output\"].get(\"answer\", x))\n", - "\n", - "## Define edges\n", - "\n", - "workflow.add_edge(\"plan_and_execute\", \"join\")\n", - "\n", - "### This condition determines looping logic\n", - "\n", - "\n", - "def should_continue(joiner_output):\n", - " if joiner_output[\"joined_output\"].get(\"context\"):\n", - " return \"continue\"\n", - " return \"end\"\n", - "\n", - "\n", - "workflow.add_conditional_edges(\n", - " start_key=\"join\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " condition=should_continue,\n", - " conditional_edge_mapping={\n", - " # If it generates context, we must replan\n", - " \"continue\": \"plan_and_execute\",\n", - " # Otherwise we finish.\n", - " \"end\": \"end\",\n", - " },\n", - ")\n", - "workflow.set_entry_point(\"plan_and_execute\")\n", - "workflow.set_finish_point(\"end\")\n", - "chain = workflow.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "0b3a0916-d8ca-4092-b91c-d9e2b05259d8", - "metadata": {}, - "outputs": [], - "source": [ - "# chain.invoke({\"input\": \"Did Aliya get a better score than Roger in Geology?\"})" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "e3f3e409-11e7-4171-b2bc-7b0e82dfd10d", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", - "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" - ] - }, - { - "ename": "KeyError", - "evalue": "\"Input to ChatPromptTemplate is missing variables {'input'}. Expected: ['input'] Received: ['thought', 'context']\"", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[29], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Try something to trigger replanning\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[43mchain\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minput\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mDid the sum of Aliya and Roger\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43ms grades in Calc map out to less than\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m the total grade for the class?\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:456\u001b[0m, in \u001b[0;36mPregel.invoke\u001b[0;34m(self, input, config, output, **kwargs)\u001b[0m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 449\u001b[0m \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 453\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 454\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]:\n\u001b[1;32m 455\u001b[0m latest: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 456\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 457\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 458\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 459\u001b[0m \u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 460\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 461\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 462\u001b[0m \u001b[43m \u001b[49m\u001b[43mlatest\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n\u001b[1;32m 463\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m latest\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:483\u001b[0m, in \u001b[0;36mPregel.transform\u001b[0;34m(self, input, config, output, **kwargs)\u001b[0m\n\u001b[1;32m 475\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtransform\u001b[39m(\n\u001b[1;32m 476\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 477\u001b[0m \u001b[38;5;28minput\u001b[39m: Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 481\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 482\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]]:\n\u001b[0;32m--> 483\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform_stream_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 484\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\n\u001b[1;32m 485\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 486\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01myield\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1226\u001b[0m, in \u001b[0;36mRunnable._transform_stream_with_config\u001b[0;34m(self, input, transformer, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 1224\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1225\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m-> 1226\u001b[0m chunk: Output \u001b[38;5;241m=\u001b[39m context\u001b[38;5;241m.\u001b[39mrun(\u001b[38;5;28mnext\u001b[39m, iterator) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 1227\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m chunk\n\u001b[1;32m 1228\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m final_output_supported:\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:301\u001b[0m, in \u001b[0;36mPregel._transform\u001b[0;34m(self, input, run_manager, config, output)\u001b[0m\n\u001b[1;32m 291\u001b[0m done, inflight \u001b[38;5;241m=\u001b[39m concurrent\u001b[38;5;241m.\u001b[39mfutures\u001b[38;5;241m.\u001b[39mwait(\n\u001b[1;32m 292\u001b[0m [\n\u001b[1;32m 293\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(proc\u001b[38;5;241m.\u001b[39minvoke, \u001b[38;5;28minput\u001b[39m, config)\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 297\u001b[0m timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstep_timeout,\n\u001b[1;32m 298\u001b[0m )\n\u001b[1;32m 300\u001b[0m \u001b[38;5;66;03m# interrupt on failure or timeout\u001b[39;00m\n\u001b[0;32m--> 301\u001b[0m \u001b[43m_interrupt_or_proceed\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdone\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minflight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 303\u001b[0m \u001b[38;5;66;03m# apply writes to channels\u001b[39;00m\n\u001b[1;32m 304\u001b[0m _apply_writes(checkpoint, channels, pending_writes, config, step \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m)\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:548\u001b[0m, in \u001b[0;36m_interrupt_or_proceed\u001b[0;34m(done, inflight, step)\u001b[0m\n\u001b[1;32m 546\u001b[0m inflight\u001b[38;5;241m.\u001b[39mpop()\u001b[38;5;241m.\u001b[39mcancel()\n\u001b[1;32m 547\u001b[0m \u001b[38;5;66;03m# raise the exception\u001b[39;00m\n\u001b[0;32m--> 548\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 549\u001b[0m \u001b[38;5;66;03m# TODO this is where retry of an entire step would happen\u001b[39;00m\n\u001b[1;32m 551\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inflight:\n\u001b[1;32m 552\u001b[0m \u001b[38;5;66;03m# if we got here means we timed out\u001b[39;00m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:3596\u001b[0m, in \u001b[0;36mRunnableBindingBase.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 3590\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 3591\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 3592\u001b[0m \u001b[38;5;28minput\u001b[39m: Input,\n\u001b[1;32m 3593\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 3594\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Optional[Any],\n\u001b[1;32m 3595\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Output:\n\u001b[0;32m-> 3596\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbound\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3597\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3598\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_merge_configs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3599\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3600\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/passthrough.py:415\u001b[0m, in \u001b[0;36mRunnableAssign.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 409\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 410\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 411\u001b[0m \u001b[38;5;28minput\u001b[39m: Dict[\u001b[38;5;28mstr\u001b[39m, Any],\n\u001b[1;32m 412\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 413\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 414\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[0;32m--> 415\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_invoke\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/passthrough.py:402\u001b[0m, in \u001b[0;36mRunnableAssign._invoke\u001b[0;34m(self, input, run_manager, config, **kwargs)\u001b[0m\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_invoke\u001b[39m(\n\u001b[1;32m 390\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 391\u001b[0m \u001b[38;5;28minput\u001b[39m: Dict[\u001b[38;5;28mstr\u001b[39m, Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 395\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[1;32m 396\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\n\u001b[1;32m 397\u001b[0m \u001b[38;5;28minput\u001b[39m, \u001b[38;5;28mdict\u001b[39m\n\u001b[1;32m 398\u001b[0m ), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe input to RunnablePassthrough.assign() must be a dict.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 401\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28minput\u001b[39m,\n\u001b[0;32m--> 402\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmapper\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 403\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 404\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 405\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 406\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 407\u001b[0m }\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:2339\u001b[0m, in \u001b[0;36mRunnableParallel.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m get_executor_for_config(config) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 2327\u001b[0m futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 2328\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 2329\u001b[0m step\u001b[38;5;241m.\u001b[39minvoke,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2337\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, step \u001b[38;5;129;01min\u001b[39;00m steps\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 2338\u001b[0m ]\n\u001b[0;32m-> 2339\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43m{\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfuture\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mzip\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msteps\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfutures\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 2340\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 2341\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:2339\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m get_executor_for_config(config) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 2327\u001b[0m futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 2328\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 2329\u001b[0m step\u001b[38;5;241m.\u001b[39minvoke,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2337\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, step \u001b[38;5;129;01min\u001b[39;00m steps\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 2338\u001b[0m ]\n\u001b[0;32m-> 2339\u001b[0m output \u001b[38;5;241m=\u001b[39m {key: \u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m key, future \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(steps, futures)}\n\u001b[1;32m 2340\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 2341\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/_base.py:456\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 454\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 455\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[0;32m--> 456\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 457\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 458\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m()\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/_base.py:401\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception:\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 401\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 403\u001b[0m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 404\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/branch.py:211\u001b[0m, in \u001b[0;36mRunnableBranch.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n\u001b[1;32m 210\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 211\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdefault\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 212\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 213\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 214\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtag\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbranch:default\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 215\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 216\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 217\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 218\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 219\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/prompts/base.py:93\u001b[0m, in \u001b[0;36mBasePromptTemplate.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 91\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Dict, config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 92\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m PromptValue:\n\u001b[0;32m---> 93\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 94\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_format_prompt_with_error_handling\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 95\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 96\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 97\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mprompt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 98\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/prompts/base.py:83\u001b[0m, in \u001b[0;36mBasePromptTemplate._format_prompt_with_error_handling\u001b[0;34m(self, inner_input)\u001b[0m\n\u001b[1;32m 81\u001b[0m missing \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_variables)\u001b[38;5;241m.\u001b[39mdifference(inner_input)\n\u001b[1;32m 82\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m missing:\n\u001b[0;32m---> 83\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(\n\u001b[1;32m 84\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInput to \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is missing variables \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmissing\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m Expected: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minput_variables\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 86\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m Received: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlist\u001b[39m(inner_input\u001b[38;5;241m.\u001b[39mkeys())\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 87\u001b[0m )\n\u001b[1;32m 88\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mformat_prompt(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39minner_input)\n", - "\u001b[0;31mKeyError\u001b[0m: \"Input to ChatPromptTemplate is missing variables {'input'}. Expected: ['input'] Received: ['thought', 'context']\"" - ] - } - ], - "source": [ - "# Try something to trigger replanning\n", - "chain.invoke(\n", - " {\n", - " \"input\": \"Did the sum of Aliya and Roger's grades in Calc map out to less than\"\n", - " \" the total grade for the class?\"\n", - " }\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "201f3dc0-74ee-4ef0-908d-b71d0e11b080", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 66ae0ae813f46bf53a1b59b655ee2f218b20f491 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Tue, 16 Jan 2024 09:03:27 -0800 Subject: [PATCH 003/108] oops add notebook --- examples/advanced_agents/LLMCompiler.ipynb | 1090 ++++++++++++++++++++ 1 file changed, 1090 insertions(+) create mode 100644 examples/advanced_agents/LLMCompiler.ipynb diff --git a/examples/advanced_agents/LLMCompiler.ipynb b/examples/advanced_agents/LLMCompiler.ipynb new file mode 100644 index 000000000..35acbe368 --- /dev/null +++ b/examples/advanced_agents/LLMCompiler.ipynb @@ -0,0 +1,1090 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0c8b472b-f3fb-46c2-841f-930a4692697b", + "metadata": {}, + "source": [ + "# Implementing LLMCompiler using LangGraph\n", + "By Kim, et. al [🔗](https://arxiv.org/abs/2312.04511)\n", + "\n", + "LLMCompiler is an agent architecture intented on speeding up the latency of agentic tasks via fast, parallel tool execution. It has 3 main components:\n", + "\n", + "1. Planner: generate a DAG of tasks.\n", + "2. Task Fetching Unit: schedules and executes the tasks\n", + "3. Joiner: Responds to the user or triggers a second plan\n", + "\n", + "\n", + "This notebook walks through each component and shows how to wire them together using LangGraph." + ] + }, + { + "cell_type": "markdown", + "id": "1abdedbd-d81b-4ee9-b46f-f29439ed1350", + "metadata": {}, + "source": [ + "# Part 1: Planner\n", + "\n", + "\n", + "Largely adapted from [the original source code](https://github.com/SqueezeAILab/LLMCompiler/blob/main/src/llm_compiler/output_parser.py)." + ] + }, + { + "cell_type": "markdown", + "id": "278f76b0-a2e1-42dc-bd3e-6f624984e3dd", + "metadata": {}, + "source": [ + "#### Output Parser\n", + "\n", + "Parses task lists in the following form:\n", + "\n", + "```plaintext\n", + "1. tool_1(\"arg1\", 3.5, ...)\n", + "Thought: I then want to find out Y by using tool_2\n", + "2. tool_2(\"\", ${1})'\n", + "3. join()\"\n", + "```\n", + "\n", + "The \"Thought\" lines are optional. The `${#}` placeholders are variables. These are used to route tool (task) outputs to other tools." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "cc71b6c4-d701-4217-9701-95ac0857e4e1", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import re\n", + "from typing import Any, Dict, List, Optional, Sequence, Union\n", + "\n", + "from langchain.agents.agent import AgentOutputParser\n", + "from langchain.schema import OutputParserException\n", + "from langchain_core.tools import BaseTool\n", + "\n", + "THOUGHT_PATTERN = r\"Thought: ([^\\n]*)\"\n", + "# $1 or ${1} -> 1\n", + "ID_PATTERN = r\"\\$\\{?(\\d+)\\}?\"\n", + "END_OF_PLAN = \"\"\n", + "\n", + "\n", + "class ActionParserFSM:\n", + " def __init__(self):\n", + " self.reset()\n", + "\n", + " def reset(self):\n", + " self.state = \"START\"\n", + " self.task_index = \"\"\n", + " self.action = \"\"\n", + " self.comment = \"\"\n", + " self.bracket_count = 0\n", + " self.actions = []\n", + "\n", + " def parse(self, text: str):\n", + " for char in text:\n", + " action = self.process_char(char)\n", + " if action:\n", + " yield action\n", + " action = self.save_action()\n", + " if action:\n", + " yield action\n", + "\n", + " def process_char(self, char: str) -> Optional[dict]:\n", + " action = None\n", + " if self.state == \"START\":\n", + " if char.isdigit():\n", + " self.state = \"NUMBER\"\n", + " self.task_index += char\n", + " elif char == \"\\n\":\n", + " self.reset()\n", + " elif self.state == \"NUMBER\":\n", + " if char == \".\":\n", + " self.state = \"ACTION\"\n", + " elif char.isdigit():\n", + " self.task_index += char\n", + " else:\n", + " self.reset()\n", + " elif self.state == \"ACTION\":\n", + " if char == \"{\":\n", + " self.bracket_count += 1\n", + " elif char == \"}\":\n", + " self.bracket_count -= 1\n", + " if self.bracket_count == 0:\n", + " self.state = \"COMMENT\"\n", + " self.action += char\n", + " elif self.state == \"COMMENT\":\n", + " if char == \"\\n\":\n", + " action = self.save_action()\n", + " self.reset()\n", + " else:\n", + " self.comment += char\n", + " return action\n", + "\n", + " def save_action(self):\n", + " if self.task_index and self.action:\n", + " parsed_action = json.loads(self.action.strip())\n", + " tool_name, args = next(iter(parsed_action.items()))\n", + " return {\n", + " \"task_index\": int(self.task_index),\n", + " \"tool_name\": tool_name,\n", + " \"args\": args,\n", + " }\n", + "\n", + "\n", + "class LLMCompilerPlanParser(AgentOutputParser, extra=\"allow\"):\n", + " \"\"\"Planning output parser.\"\"\"\n", + "\n", + " def __init__(self, tools: Sequence[BaseTool], **kwargs):\n", + " super().__init__(**kwargs)\n", + " self.tools = tools\n", + "\n", + " def parse(self, text: str) -> list[str]:\n", + " parser = ActionParserFSM()\n", + " graph_dict = {}\n", + " for task in parser.parse(text):\n", + " idx = int(task[\"task_index\"])\n", + "\n", + " task = instantiate_task(\n", + " tools=self.tools,\n", + " idx=idx,\n", + " tool_name=task[\"tool_name\"],\n", + " args=task[\"args\"],\n", + " )\n", + "\n", + " graph_dict[idx] = task\n", + " if task[\"tool\"] == \"join\":\n", + " break\n", + "\n", + " return graph_dict\n", + "\n", + "\n", + "### Helper functions\n", + "\n", + "\n", + "def default_dependency_rule(idx, args: str):\n", + " matches = re.findall(ID_PATTERN, args)\n", + " numbers = [int(match) for match in matches]\n", + " return idx in numbers\n", + "\n", + "\n", + "def _get_dependencies_from_graph(\n", + " idx: int, tool_name: str, args: Sequence[Any]\n", + ") -> dict[str, list[str]]:\n", + " \"\"\"Get dependencies from a graph.\"\"\"\n", + " if tool_name == \"join\":\n", + " return list(range(1, idx))\n", + " return [i for i in range(1, idx) if default_dependency_rule(i, str(args))]\n", + "\n", + "\n", + "def instantiate_task(\n", + " tools: Sequence[BaseTool],\n", + " idx: int,\n", + " tool_name: str,\n", + " args: Union[dict, str, bool, None],\n", + ") -> dict:\n", + " dependencies = _get_dependencies_from_graph(idx, tool_name, args)\n", + " if tool_name == \"join\":\n", + " tool = \"join\"\n", + " else:\n", + " try:\n", + " tool = tools[[tool.name for tool in tools].index(tool_name)]\n", + " except ValueError as e:\n", + " raise OutputParserException(f\"Tool {tool_name} not found.\")\n", + " return dict(\n", + " tool=tool,\n", + " args=args,\n", + " dependencies=dependencies,\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "228a2f75-68b1-4dbf-95dc-4bfc738c3b3b", + "metadata": {}, + "source": [ + "#### Planner Code\n", + "\n", + "This takes the input and outputs a plan." + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "id": "58af9746-1011-41e9-a77a-be9cef202aea", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chat_models.base import BaseChatModel\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "from langchain_core.runnables import RunnableBranch\n", + "from langchain_core.tools import BaseTool\n", + "\n", + "END_OF_PLAN = \"\"\n", + "\n", + "JOINER_FINISH = \"Finish\"\n", + "JOINER_REPLAN = \"Replan\"\n", + "\n", + "\n", + "JOIN_DESCRIPTION = (\n", + " \"join():\\n\"\n", + " \" - Collects and combines results from prior actions.\\n\"\n", + " \" - A LLM agent is called upon invoking join to either finalize the user query or wait until the plans are executed.\\n\"\n", + " \" - join should always be the last action in the plan, and will be called in two scenarios:\\n\"\n", + " \" (a) if the answer can be determined by gathering the outputs from tasks to generate the final response.\\n\"\n", + " \" (b) if the answer cannot be determined in the planning phase before you execute the plans. \"\n", + ")\n", + "\n", + "planner_prompt_tmpl_str = (\n", + " \"Given a user query, create a plan to solve it with the utmost parallelizability. \"\n", + " \"Each plan should comprise an action from the following {num_tools} types:\\n\"\n", + " \"{tool_descriptions}\"\n", + " f\"\\n{{num_toolsp1}}. {JOIN_DESCRIPTION}\"\n", + " \"Guidelines:\\n\"\n", + " \" - Each action described above contains input/output types and description.\\n\"\n", + " \" - You must strictly adhere to the input and output types for each action.\\n\"\n", + " \" - The action descriptions contain the guidelines. You MUST strictly follow those guidelines when you use the actions.\\n\"\n", + " \" - Each action in the plan should strictly be one of the above types.\\n\"\n", + " \" - Provide actions ONLY in json form, with the single key being the action name and the value being its arguments. Do not write python code. \\n\"\n", + " \" - Each action line must start with a unique ID, which is strictly increasing.\\n\"\n", + " \" - Inputs for actions can either be constants or outputs from preceding actions. \"\n", + " \"In the latter case, use the format $id to denote the ID of the previous action whose output will be the input.\\n\"\n", + " f\" - Always call join as the last action in the plan. Say '{END_OF_PLAN}' after you call join\\n\"\n", + " \" - Ensure the plan maximizes parallelizability.\\n\"\n", + " \" - Only use the provided action types. If a query cannot be addressed using these, invoke the join action for the next steps.\\n\"\n", + " \" - Never introduce new actions other than the ones provided.\\n\\n\"\n", + " \"{replan}\"\n", + " \"{examples}\"\n", + ")\n", + "\n", + "\n", + "def _generate_planner_prompt(\n", + " tools: Sequence[BaseTool],\n", + " example_prompt=str,\n", + "):\n", + " tool_descriptions = \"\\n\".join(\n", + " f\"{i+1}. {tool.name}: {tool.description}\\n\\tInput schema: {tool.args}\"\n", + " for i, tool in enumerate(tools)\n", + " )\n", + " planner_prompt_template = ChatPromptTemplate.from_messages(\n", + " [(\"system\", planner_prompt_tmpl_str), (\"user\", \"Question: {input}{context}\")]\n", + " ).partial(\n", + " tool_descriptions=tool_descriptions,\n", + " examples=\"Here are some examples:\\n\\n\" + example_prompt\n", + " if example_prompt\n", + " else \"\",\n", + " num_tools=len(tools),\n", + " num_toolsp1=len(tools) + 1,\n", + " )\n", + "\n", + " return planner_prompt_template\n", + "\n", + "\n", + "def create_planner(\n", + " llm: BaseChatModel,\n", + " example_prompt: str,\n", + " tools: Sequence[BaseTool],\n", + " stop: Optional[list[str]] = None,\n", + "):\n", + " og_planner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", + " replan=\"\",\n", + " context=\"\",\n", + " )\n", + " replanner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", + " replan=' - You are given \"Previous Plan\" which is the plan that the previous agent created along with the execution results '\n", + " \"(given as Observation) of each plan and a general thought (given as Thought) about the executed results.\"\n", + " 'You MUST use these information to create the next plan under \"Current Plan\".\\n'\n", + " ' - When starting the Current Plan, you should start with \"Thought\" that outlines the strategy for the next plan.\\n'\n", + " \" - In the Current Plan, you should NEVER repeat the actions that are already executed in the Previous Plan.\\n\"\n", + " \" - You must continue the task index from the end of the previous one. Do not repeat task indices.\"\n", + " )\n", + " bound_llm = llm.bind(stop=stop)\n", + " return (\n", + " RunnableBranch(\n", + " ((lambda x: x.get(\"context\") is not None), replanner_prompt),\n", + " og_planner_prompt,\n", + " )\n", + " | bound_llm\n", + " | LLMCompilerPlanParser(tools=tools)\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "7feb5c82-b1a9-40ae-863a-0362fe3ce5ea", + "metadata": {}, + "source": [ + "#### Example usage\n", + "\n", + "Here's an example usage of the planner module" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "id": "3fe074ea-7314-47a7-9a9f-a8e6191ea1f3", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.tools import tool\n", + "from langchain_openai import ChatOpenAI\n", + "\n", + "\n", + "@tool\n", + "def get_user_id(first_name: str, last_name: Optional[str] = None):\n", + " \"\"\"Query the user IDs of everyone with the provided name.\"\"\"\n", + " return 4\n", + "\n", + "\n", + "@tool\n", + "def get_scores(class_name: str, user_id: int):\n", + " \"\"\"Query the class registry for grades of the provided user ID.\"\"\"\n", + " return \"A+\"\n", + "\n", + "\n", + "examples = (\n", + " \"Question: What's the user ID for Johnny Drop Tables?\\n\"\n", + " '1. {\"get_user_id\": {\"first_name\": \"Johnny\", \"last_name\":\"Drop Tables\"}}\\n'\n", + " f'2. {{\"join\": null}}{END_OF_PLAN}\\n'\n", + " \"###\\n\"\n", + " \"\\n\"\n", + " \"Question: What was Eric Zhang's score in Calc?\\n\"\n", + " '1. {\"get_user_id\": {\"first_name\": \"Eric\", \"last_name\":\"Zhang\"}}\\n'\n", + " '2. {\"get_scores\": {\"class_name\": \"calc\", \"user_id\": \"$1\"}}\\n'\n", + " f'3. {{\"join\": null}}{END_OF_PLAN}\\n'\n", + " \"###\\n\"\n", + " \"\\n\"\n", + ")\n", + "\n", + "planner = create_planner(\n", + " ChatOpenAI(model=\"gpt-3.5-turbo\"),\n", + " example_prompt=examples,\n", + " tools=[get_user_id, get_scores],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "id": "55fb0f99-4e59-4e5a-b687-a90bb4d06d39", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1: {'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: Optional[str] = None) - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", + " 'args': {'first_name': 'Sam', 'last_name': 'Van Damm'},\n", + " 'dependencies': []},\n", + " 2: {'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: Optional[str] = None) - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", + " 'args': {'first_name': 'Will', 'last_name': 'Van Damm'},\n", + " 'dependencies': []},\n", + " 3: {'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", + " 'args': {'class_name': 'Calc BC', 'user_id': '$1'},\n", + " 'dependencies': [1]},\n", + " 4: {'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", + " 'args': {'class_name': 'Calc BC', 'user_id': '$2'},\n", + " 'dependencies': [2]},\n", + " 5: {'tool': 'join', 'args': None, 'dependencies': [1, 2, 3, 4]}}" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tasks = planner.invoke(\n", + " {\"input\": \"What are the Calc BC grades for Sam and Will Van Damm?\"}\n", + ")\n", + "tasks" + ] + }, + { + "cell_type": "markdown", + "id": "5d0e795f-61ff-4553-9823-23e7624ca180", + "metadata": {}, + "source": [ + "## 2. Task Fetching Unit\n", + "\n", + "This component schedules the tasks. In the paper, it's kept separate from the \"executor\", but here we create a single DAG to be executed by LangGraph.\n", + "\n", + "Basic idea is that, given a list of dicts of the form:\n", + "\n", + "```typescript\n", + "{\n", + " tool: BaseTool,\n", + " dependencies: number[],\n", + "}\n", + "```\n", + "\n", + "1. Create a topological sort of the tasks\n", + "2. Execute them on the previous step's output, ensuring to perform variable substitution where appropriate" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "id": "c70a0e28-43db-4ea2-af48-8a2f310dce83", + "metadata": {}, + "outputs": [], + "source": [ + "import functools\n", + "\n", + "from langchain_core.runnables import (\n", + " RunnableLambda,\n", + " RunnableParallel,\n", + " RunnablePassthrough,\n", + ")\n", + "\n", + "\n", + "def _sort_tasks(data):\n", + " if not data:\n", + " return []\n", + " sorted_tasks = []\n", + " # Remove tasks already completed\n", + " min_idx = min([int(k) for k in data])\n", + " data = {\n", + " int(k): {\n", + " **v,\n", + " \"dependencies\": [dep for dep in v[\"dependencies\"] if dep >= min_idx],\n", + " }\n", + " for k, v in data.items()\n", + " }\n", + " while data:\n", + " no_deps = {k: v for k, v in data.items() if not v[\"dependencies\"]}\n", + " if not no_deps:\n", + " raise ValueError(\"We seem to have run into a circular dependency.\")\n", + "\n", + " sorted_tasks.append(no_deps)\n", + " data = {\n", + " k: {\n", + " **v,\n", + " \"dependencies\": [d for d in v[\"dependencies\"] if d not in no_deps],\n", + " }\n", + " for k, v in data.items()\n", + " if k not in no_deps\n", + " }\n", + " return sorted_tasks\n", + "\n", + "\n", + "def _resolve_arg(x: dict, arg: Union[str, Any]):\n", + " if isinstance(arg, str) and arg.startswith(\"$\"):\n", + " try:\n", + " return x[f\"task_{arg[1:]}\"]\n", + " except:\n", + " if arg.endswith(\".output\"):\n", + " return x[f\"task_{arg[1:-7]}\"]\n", + " raise\n", + "\n", + " else:\n", + " return arg\n", + "\n", + "\n", + "def _execute_task(x, task):\n", + " tool_to_use = task[\"tool\"]\n", + " args = task[\"args\"]\n", + " if isinstance(args, str):\n", + " resolved_args = _resolve_arg(x, args)\n", + " elif isinstance(args, dict):\n", + " resolved_args = {key: _resolve_arg(x, val) for key, val in args.items()}\n", + " else:\n", + " # This will likely fail\n", + " resolved_args = args\n", + " try:\n", + " return tool_to_use.invoke(resolved_args)\n", + " except Exception as e:\n", + " return (\n", + " f\"ERROR(Failed to call tool {tool_to_use} with args {tool_to_use}.\"\n", + " + f\" Args resolved to {resolved_args}. Error: {repr(e)})\"\n", + " )\n", + "\n", + "\n", + "def construct_dag(tasks):\n", + " sorted_tasks = _sort_tasks(tasks)\n", + " chain = None\n", + " for idx, task_group in enumerate(sorted_tasks):\n", + " if len(task_group) == 1 and next(iter(task_group.values()))[\"tool\"] == \"join\":\n", + " # TODO: actually join the values\n", + " step = lambda x: {\"join\": x}\n", + " else:\n", + " # Cascade all results forward\n", + " constructor = (\n", + " RunnableParallel if chain is None else RunnablePassthrough.assign\n", + " )\n", + " task_dict = {}\n", + " for idx, task in task_group.items():\n", + " task_dict[f\"task_{idx}\"] = RunnableLambda(\n", + " functools.partial(_execute_task, task=task)\n", + " ).with_config(run_name=f\"task_{idx}\")\n", + "\n", + " step = constructor(**task_dict).with_config(run_name=f\"TaskGroup{idx}\")\n", + " if chain is None:\n", + " chain = step\n", + " else:\n", + " chain |= step\n", + "\n", + " if chain is not None:\n", + " return chain | RunnablePassthrough.assign(tasks=lambda _: tasks)\n", + " return chain" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "id": "87f11cea-3a8d-479c-8a9e-81223dbbc1f5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " +------------------------------+ \n", + " | ParallelInput | \n", + " +------------------------------+ \n", + " *** *** \n", + " ** ** \n", + " ** ** \n", + " +-------------+ +-------------+ \n", + " | Lambda(...) | | Lambda(...) | \n", + " +-------------+ +-------------+ \n", + " *** *** \n", + " ** ** \n", + " ** ** \n", + " +-------------------------------+ \n", + " | ParallelOutput | \n", + " +-------------------------------+ \n", + " * \n", + " * \n", + " * \n", + " +------------------------------+ \n", + " | ParallelInput | \n", + " +------------------------------+ \n", + " ***** * ***** \n", + " ***** * ***** \n", + " *** * *** \n", + "+-------------+ +-------------+ +-------------+ \n", + "| Lambda(...) | | Lambda(...) | | Passthrough | \n", + "+-------------+***** +-------------+ *****+-------------+ \n", + " ***** * ***** \n", + " ***** * ***** \n", + " *** * *** \n", + " +-------------------------------+ \n", + " | ParallelOutput | \n", + " +-------------------------------+ \n", + " * \n", + " * \n", + " * \n", + " +-------------------------------+ \n", + " | Lambda(lambda x: {'join': x}) | \n", + " +-------------------------------+ \n", + " * \n", + " * \n", + " * \n", + " +----------------------+ \n", + " | ParallelInput | \n", + " +----------------------+ \n", + " *** *** \n", + " *** *** \n", + " ** ** \n", + " +-------------------------+ +-------------+ \n", + " | Lambda(lambda _: tasks) | | Passthrough | \n", + " +-------------------------+ +-------------+ \n", + " *** *** \n", + " *** *** \n", + " ** ** \n", + " +-----------------------+ \n", + " | ParallelOutput | \n", + " +-----------------------+ \n" + ] + } + ], + "source": [ + "graph = construct_dag(tasks)\n", + "graph.get_graph().print_ascii()" + ] + }, + { + "cell_type": "markdown", + "id": "9efa15ae-817a-48c6-86ed-16bc112fedc5", + "metadata": {}, + "source": [ + "#### Example Plan\n", + "\n", + "We still haven't introduced any cycles in our computation graph, so this is all easily expressed in LCEL." + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "id": "133d124a-0d41-4c6d-a86a-34fa4cb1430f", + "metadata": {}, + "outputs": [], + "source": [ + "chain = planner | construct_dag" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "id": "55142257-2674-4a47-988e-0d2810917329", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'task_1': 4, 'task_2': 4, 'task_3': 'A+', 'task_4': 'A+'}" + ] + }, + "execution_count": 136, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "example_question = \"Did Aliya get a better score than Roger in Geology?\"\n", + "task_results = chain.invoke({\"input\": example_question})\n", + "task_results[\"join\"]" + ] + }, + { + "cell_type": "markdown", + "id": "563d5311-55f0-4ca1-afbd-01fd970cf3e3", + "metadata": {}, + "source": [ + "## Agent Logic\n", + "\n", + "So now we have the planning and initial execution done. We need a component to process these outputs and either:\n", + "1. Respond with the correct answer.\n", + "2. Loop with a new plan.\n", + "\n", + "The paper calls this the \"joiner\"." + ] + }, + { + "cell_type": "code", + "execution_count": 216, + "id": "2978991e-45a4-44e6-9deb-f941f44fe93a", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.output_parsers import StrOutputParser\n", + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "def format_task(task, idx):\n", + " tool = task[\"tool\"]\n", + " tool_name = tool if isinstance(tool, str) else tool.name # Handle join()\n", + " return f\"{idx}. {{{tool_name}: {task['args']}}}\"\n", + "\n", + "\n", + "def format_tasks(executor_output: dict):\n", + " tasks = executor_output[\"tasks\"]\n", + " prior_observations = executor_output.get(\"observations\")\n", + " formatted_plan = \"\\n\".join(format_task(task, idx) for idx, task in tasks.items())\n", + " observations = \"\\n\".join(f\"{k}: {v}\" for k, v in executor_output[\"join\"].items())\n", + " result = f\"Original Plan:\\n{formatted_plan}\\nExecuted plan results:\\n{observations}\"\n", + " if prior_observations:\n", + " result += f\"\\nPrevious Results:\\n{prior_observations}\"\n", + " return result\n", + "\n", + "\n", + "def _parse_joiner_output(raw_answer: str) -> str:\n", + " thought, answer, is_replan = \"\", \"\", False # default values\n", + " raw_answers = raw_answer.split(\"\\n\")\n", + " for ans in raw_answers:\n", + " if ans.startswith(\"Action:\"):\n", + " answer = ans[ans.find(\"(\") + 1 : ans.find(\")\")]\n", + " is_replan = JOINER_REPLAN in ans\n", + " elif ans.startswith(\"Thought:\"):\n", + " thought = ans.split(\"Thought:\")[1].strip()\n", + " if is_replan:\n", + " return {\"thought\": thought, \"context\": answer}\n", + " else:\n", + " return {\"thought\": thought, \"answer\": answer}" + ] + }, + { + "cell_type": "code", + "execution_count": 217, + "id": "b2feea5a-e0e4-4cff-8cb5-fdbfec95ba57", + "metadata": {}, + "outputs": [], + "source": [ + "def create_joiner(prompt, llm):\n", + " return (\n", + " (\n", + " lambda x: {\n", + " **x[\"plan\"],\n", + " \"input\": x[\"input\"],\n", + " \"context\": x.get(\"context\"),\n", + " \"observations\": x.get(\"observations\"),\n", + " }\n", + " )\n", + " | RunnablePassthrough.assign(scratchpad=format_tasks)\n", + " | ChatPromptTemplate.from_messages([(\"system\", prompt), (\"user\", \"{input}\")])\n", + " | llm\n", + " | StrOutputParser()\n", + " | _parse_joiner_output\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 218, + "id": "942dab42-ad42-4ba2-90d5-49edbe4fae68", + "metadata": {}, + "outputs": [], + "source": [ + "system_prompt = (\n", + " \"Solve a question answering task. Here are some guidelines:\\n\"\n", + " \" - In the Assistant Scratchpad, you will be given results of a plan you have executed to answer the user's question.\\n\"\n", + " \" - Thought needs to reason about the question based on the Observations in 1-2 sentences.\\n\"\n", + " \" - Ignore irrelevant action results.\\n\"\n", + " \" - If the required information is present, give a concise but complete and helpful answer to the user's question.\\n\"\n", + " \" - If you are unable to give a satisfactory finishing answer, replan to get the required information.\"\n", + " \" Respond in the following format:\\n\\n\"\n", + " \"Thought: \\n\"\n", + " \"Action: \\n\"\n", + " \"Available actions:\\n\"\n", + " f\" (1) {JOINER_FINISH}(the final answer to return to the user): returns the answer and finishes the task.\\n\"\n", + " f\" (2) {JOINER_REPLAN}(the reasoning and other information that will help you plan again. Can be a line of any length): instructs why we must replan\\n\\n\"\n", + " \" Examples:\\n\"\n", + " \"Question: How many users are currently using the new product?\\n\"\n", + " \"...task returns the number 32,000\\n\"\n", + " \"Thought: I find no issue with the original plan, and the results satisfy everything in the user question.\\n\"\n", + " f\"Action: {JOINER_FINISH}(32,000 users currently use the new product)\\n###\\n\"\n", + " \"Question: How much cooler is it in NY than SF?\\n\"\n", + " \"...task results show SF is 57 degrees fahrenheit today, and they show in NY it has a high of 32 degrees fahrenheit \\n\"\n", + " \"Thought: I can answer by synthesizing the results.\\n\"\n", + " f\"Action: {JOINER_FINISH}(NY is 25 degrees cooler than SF today, as it has a high of 32 degrees Fahrenheit today, whereas in SF, it is 57 degrees Fahrenheit.)\\n###\\n\"\n", + " \"Question: Are the gophers beating the rabbits??\\n\"\n", + " \"...task returns the a score of 7 for rabbits but no other value...\\n\"\n", + " \"Thought: I need the gophers' score to make a final decision.\\n\"\n", + " f\"Action: {JOINER_REPLAN}(The rabbits have a score of 7, but I need the gophers' score.)\"\n", + " \"\\nAssistant Scratchpad:\\n{scratchpad}\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 219, + "id": "a07d0804-2ce5-4462-98eb-4473f36ef704", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'thought': 'The plan has been executed successfully and returned the scores for both Aliya and Roger in Geology. We can compare their scores to determine if Aliya got a better score than Roger.',\n", + " 'answer': 'Aliya got an A+ in Geology, while Roger also got an A+. Therefore, they both got the same score in Geology.'}" + ] + }, + "execution_count": 219, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-3.5-turbo\"))\n", + "joiner.invoke({\"plan\": task_results, \"input\": example_question})" + ] + }, + { + "cell_type": "markdown", + "id": "b099e5ee-2c23-47d9-9387-0f64e02627d3", + "metadata": {}, + "source": [ + "### Construct Agent\n", + "\n", + "Now we have all the required pieces! Let's construct our agent with its tools." + ] + }, + { + "cell_type": "code", + "execution_count": 220, + "id": "565b08d2-d19c-4125-97f7-996fc01bc631", + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "os.environ[\"TAVILY_API_KEY\"] = (\n", + " os.environ.get(\"TAVILY_API_KEY\")\n", + " if \"TAVILY_API_KEY\" in os.environ\n", + " else getpass.getpass(\"Tavily API Key:\")\n", + ")\n", + "# Then fetch a credentials.json file\n", + "# https://developers.google.com/gmail/api/quickstart/python#authorize_credentials_for_a_desktop_application" + ] + }, + { + "cell_type": "code", + "execution_count": 221, + "id": "bd84ca4b-eacb-471d-9975-5449047b5bed", + "metadata": {}, + "outputs": [], + "source": [ + "from operator import add, mul, sub, truediv\n", + "from typing import Literal\n", + "\n", + "from langchain_community.agent_toolkits import GmailToolkit\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain_core.tools import tool\n", + "\n", + "\n", + "@tool\n", + "def calculate(\n", + " arg1: float,\n", + " arg2: float,\n", + " op: Union[Literal[\"+\"], Literal[\"-\"], Literal[\"*\"], Literal[\"/\"]],\n", + "):\n", + " \"\"\"Calculate a mathematical operation on two arguments.\"\"\"\n", + " resolved_op = {\"+\": add, \"-\": sub, \"*\": mul, \"/\": truediv}\n", + " return resolved_op[op](arg1, arg2)\n", + "\n", + "\n", + "tools = [TavilySearchResults(max_results=1), calculate]" + ] + }, + { + "cell_type": "code", + "execution_count": 224, + "id": "768b5f11-e3d2-47be-8143-a7dcd8765243", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import END, StateGraph\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " input: str\n", + " plan: Dict\n", + " agent_output: Dict\n", + " observations: Dict\n", + " num_iterations: int\n", + " context: str\n", + " stop_reason: str\n", + "\n", + "\n", + "MAX_ITERATIONS = 5\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# 1. Define vertices\n", + "\n", + "planner = create_planner(\n", + " llm=ChatOpenAI(model=\"gpt-4-1106-preview\"),\n", + " # Add more examples to improve reliability\n", + " example_prompt=(\n", + " \"Question: What's the capital of Myanmar?\\n\"\n", + " '1. {\"tavily_search_results_json\": {\"query\": \"Capital of Myanmar\"}}\\n'\n", + " f'2. {{\"join\": null}}{END_OF_PLAN}\\n'\n", + " \"###\\n\"\n", + " \"\\n\"\n", + " ),\n", + " tools=tools,\n", + ")\n", + "\n", + "plan_and_execute = planner | construct_dag\n", + "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-4-1106-preview\"))\n", + "\n", + "\n", + "def _reformat_task(idx, task: Union[BaseTool, str]):\n", + " tool = task[\"tool\"]\n", + " tool_name = tool if isinstance(tool, str) else tool.name\n", + " called = {tool_name: task[\"args\"]}\n", + " return f\"{idx}. {json.dumps(called)}\"\n", + "\n", + "\n", + "def provide_context(state):\n", + " # Insert a context string for the re-planner.\n", + " # This could alternatively call an LLM to provide additional logic\n", + " context = state[\"agent_output\"][\"context\"]\n", + " num_iterations = int(state.get(\"num_iterations\") or 1) + 1\n", + " previous_plan = \"\\n\".join(\n", + " [\n", + " _reformat_task(idx, task)\n", + " for idx, task in sorted(state[\"plan\"][\"tasks\"].items())\n", + " ]\n", + " )\n", + " context_str = (\n", + " f\"\\n\\nPrevious Plan:\\n{previous_plan}\\n\"\n", + " f\"{context}\\nYou have made {num_iterations}/{MAX_ITERATIONS} attempts thus far.\"\n", + " )\n", + " observations = state[\"observations\"] or {}\n", + " for task, observation in state[\"plan\"][\"join\"].items():\n", + " observations[task] = observation\n", + " return {\n", + " \"context\": context_str,\n", + " \"num_iterations\": num_iterations,\n", + " \"observations\": observations,\n", + " }\n", + "\n", + "\n", + "def add_stop_reason(state):\n", + " num_iterations = int(state.get(\"num_iterations\") or 0)\n", + " if num_iterations >= MAX_ITERATIONS:\n", + " return {\"stop_reason\": \"end_max_iter\"}\n", + " if state[\"agent_output\"].get(\"answer\"):\n", + " return {\"stop_reason\": \"answer\"}\n", + " return {\"stop_reason\": None}\n", + "\n", + "\n", + "# Assign each node to a state variable to update\n", + "workflow.add_node(\"plan_and_execute\", RunnablePassthrough.assign(plan=plan_and_execute))\n", + "workflow.add_node(\"join\", RunnablePassthrough.assign(agent_output=joiner))\n", + "workflow.add_node(\"provide_context\", provide_context)\n", + "workflow.add_node(\"provide_stop_reason\", add_stop_reason)\n", + "\n", + "\n", + "## Define edges\n", + "\n", + "workflow.add_edge(\"plan_and_execute\", \"join\")\n", + "workflow.add_edge(\"provide_context\", \"plan_and_execute\")\n", + "workflow.add_edge(\"join\", \"provide_stop_reason\")\n", + "\n", + "### This condition determines looping logic\n", + "\n", + "\n", + "def should_continue(state):\n", + " if state[\"stop_reason\"] is None:\n", + " return \"continue\"\n", + " return \"end\"\n", + "\n", + "\n", + "workflow.add_conditional_edges(\n", + " start_key=\"provide_stop_reason\",\n", + " # Next, we pass in the function that will determine which node is called next.\n", + " condition=should_continue,\n", + " conditional_edge_mapping={\n", + " # If it generates context, we must replan\n", + " \"continue\": \"provide_context\",\n", + " # Otherwise we finish.\n", + " \"end\": END,\n", + " },\n", + ")\n", + "workflow.set_entry_point(\"plan_and_execute\")\n", + "chain = workflow.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "9f8c9849-8531-463d-a0ef-dcc3d9888b2d", + "metadata": {}, + "source": [ + "## Simple question\n", + "\n", + "Let's ask a simple question of the agent." + ] + }, + { + "cell_type": "code", + "execution_count": 225, + "id": "5bc4584a-e31c-4065-805e-76a6db30676a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The GDP of New York in 2022 was about 1.56 trillion U.S. dollars.\n" + ] + } + ], + "source": [ + "result = chain.invoke({\"input\": \"What's the GDP of New York?\"})\n", + "print(result[\"agent_output\"][\"answer\"])" + ] + }, + { + "cell_type": "markdown", + "id": "33c65ef5-b4b2-4ab2-8c78-a551da7819b9", + "metadata": {}, + "source": [ + "## Multi-hop question" + ] + }, + { + "cell_type": "code", + "execution_count": 227, + "id": "0b3a0916-d8ca-4092-b91c-d9e2b05259d8", + "metadata": {}, + "outputs": [ + { + "ename": "JSONDecodeError", + "evalue": "Expecting value: line 1 column 1 (char 0)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mJSONDecodeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[227], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mchain\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minput\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHow much larger is the GDP of the UK than that of New York?\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:492\u001b[0m, in \u001b[0;36mPregel.invoke\u001b[0;34m(self, input, config, output_keys, input_keys, **kwargs)\u001b[0m\n\u001b[1;32m 482\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 483\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 484\u001b[0m \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 489\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 490\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]:\n\u001b[1;32m 491\u001b[0m latest: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 492\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 493\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 494\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[43m \u001b[49m\u001b[43moutput_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput_keys\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43moutput_keys\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 496\u001b[0m \u001b[43m \u001b[49m\u001b[43minput_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minput_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 499\u001b[0m \u001b[43m \u001b[49m\u001b[43mlatest\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n\u001b[1;32m 500\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m latest\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:528\u001b[0m, in \u001b[0;36mPregel.transform\u001b[0;34m(self, input, config, output_keys, input_keys, **kwargs)\u001b[0m\n\u001b[1;32m 519\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtransform\u001b[39m(\n\u001b[1;32m 520\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28minput\u001b[39m: Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 526\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 527\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]]:\n\u001b[0;32m--> 528\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform_stream_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 529\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 530\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 531\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 532\u001b[0m \u001b[43m \u001b[49m\u001b[43moutput_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 533\u001b[0m \u001b[43m \u001b[49m\u001b[43minput_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minput_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 534\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 535\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 536\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01myield\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1226\u001b[0m, in \u001b[0;36mRunnable._transform_stream_with_config\u001b[0;34m(self, input, transformer, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 1224\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1225\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m-> 1226\u001b[0m chunk: Output \u001b[38;5;241m=\u001b[39m context\u001b[38;5;241m.\u001b[39mrun(\u001b[38;5;28mnext\u001b[39m, iterator) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 1227\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m chunk\n\u001b[1;32m 1228\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m final_output_supported:\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:313\u001b[0m, in \u001b[0;36mPregel._transform\u001b[0;34m(self, input, run_manager, config, input_keys, output_keys)\u001b[0m\n\u001b[1;32m 303\u001b[0m done, inflight \u001b[38;5;241m=\u001b[39m concurrent\u001b[38;5;241m.\u001b[39mfutures\u001b[38;5;241m.\u001b[39mwait(\n\u001b[1;32m 304\u001b[0m [\n\u001b[1;32m 305\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(proc\u001b[38;5;241m.\u001b[39minvoke, \u001b[38;5;28minput\u001b[39m, config)\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 309\u001b[0m timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstep_timeout,\n\u001b[1;32m 310\u001b[0m )\n\u001b[1;32m 312\u001b[0m \u001b[38;5;66;03m# interrupt on failure or timeout\u001b[39;00m\n\u001b[0;32m--> 313\u001b[0m \u001b[43m_interrupt_or_proceed\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdone\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minflight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 315\u001b[0m \u001b[38;5;66;03m# apply writes to channels\u001b[39;00m\n\u001b[1;32m 316\u001b[0m _apply_writes(checkpoint, channels, pending_writes, config, step \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m)\n", + "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:611\u001b[0m, in \u001b[0;36m_interrupt_or_proceed\u001b[0;34m(done, inflight, step)\u001b[0m\n\u001b[1;32m 609\u001b[0m inflight\u001b[38;5;241m.\u001b[39mpop()\u001b[38;5;241m.\u001b[39mcancel()\n\u001b[1;32m 610\u001b[0m \u001b[38;5;66;03m# raise the exception\u001b[39;00m\n\u001b[0;32m--> 611\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 612\u001b[0m \u001b[38;5;66;03m# TODO this is where retry of an entire step would happen\u001b[39;00m\n\u001b[1;32m 614\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inflight:\n\u001b[1;32m 615\u001b[0m \u001b[38;5;66;03m# if we got here means we timed out\u001b[39;00m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:3596\u001b[0m, in \u001b[0;36mRunnableBindingBase.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 3590\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 3591\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 3592\u001b[0m \u001b[38;5;28minput\u001b[39m: Input,\n\u001b[1;32m 3593\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 3594\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Optional[Any],\n\u001b[1;32m 3595\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Output:\n\u001b[0;32m-> 3596\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbound\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3597\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3598\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_merge_configs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3599\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3600\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/passthrough.py:415\u001b[0m, in \u001b[0;36mRunnableAssign.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 409\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 410\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 411\u001b[0m \u001b[38;5;28minput\u001b[39m: Dict[\u001b[38;5;28mstr\u001b[39m, Any],\n\u001b[1;32m 412\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 413\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 414\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[0;32m--> 415\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_invoke\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/passthrough.py:402\u001b[0m, in \u001b[0;36mRunnableAssign._invoke\u001b[0;34m(self, input, run_manager, config, **kwargs)\u001b[0m\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_invoke\u001b[39m(\n\u001b[1;32m 390\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 391\u001b[0m \u001b[38;5;28minput\u001b[39m: Dict[\u001b[38;5;28mstr\u001b[39m, Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 395\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[1;32m 396\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\n\u001b[1;32m 397\u001b[0m \u001b[38;5;28minput\u001b[39m, \u001b[38;5;28mdict\u001b[39m\n\u001b[1;32m 398\u001b[0m ), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe input to RunnablePassthrough.assign() must be a dict.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 401\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28minput\u001b[39m,\n\u001b[0;32m--> 402\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmapper\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 403\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 404\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 405\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 406\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 407\u001b[0m }\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:2339\u001b[0m, in \u001b[0;36mRunnableParallel.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m get_executor_for_config(config) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 2327\u001b[0m futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 2328\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 2329\u001b[0m step\u001b[38;5;241m.\u001b[39minvoke,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2337\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, step \u001b[38;5;129;01min\u001b[39;00m steps\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 2338\u001b[0m ]\n\u001b[0;32m-> 2339\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43m{\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfuture\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mzip\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msteps\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfutures\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 2340\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 2341\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:2339\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m get_executor_for_config(config) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 2327\u001b[0m futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 2328\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 2329\u001b[0m step\u001b[38;5;241m.\u001b[39minvoke,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2337\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, step \u001b[38;5;129;01min\u001b[39;00m steps\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 2338\u001b[0m ]\n\u001b[0;32m-> 2339\u001b[0m output \u001b[38;5;241m=\u001b[39m {key: \u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m key, future \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(steps, futures)}\n\u001b[1;32m 2340\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 2341\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/_base.py:456\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 454\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 455\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[0;32m--> 456\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 457\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 458\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m()\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/_base.py:401\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception:\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 401\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 403\u001b[0m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 404\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/output_parsers/base.py:167\u001b[0m, in \u001b[0;36mBaseOutputParser.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 164\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mstr\u001b[39m, BaseMessage], config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 165\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 166\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28minput\u001b[39m, BaseMessage):\n\u001b[0;32m--> 167\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 168\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mlambda\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43minner_input\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse_result\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 169\u001b[0m \u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43mChatGeneration\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minner_input\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 170\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 171\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 172\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 173\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mparser\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 174\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 175\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 176\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_with_config(\n\u001b[1;32m 177\u001b[0m \u001b[38;5;28;01mlambda\u001b[39;00m inner_input: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparse_result([Generation(text\u001b[38;5;241m=\u001b[39minner_input)]),\n\u001b[1;32m 178\u001b[0m \u001b[38;5;28minput\u001b[39m,\n\u001b[1;32m 179\u001b[0m config,\n\u001b[1;32m 180\u001b[0m run_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparser\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 181\u001b[0m )\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/output_parsers/base.py:168\u001b[0m, in \u001b[0;36mBaseOutputParser.invoke..\u001b[0;34m(inner_input)\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 164\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mstr\u001b[39m, BaseMessage], config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 165\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 166\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28minput\u001b[39m, BaseMessage):\n\u001b[1;32m 167\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_with_config(\n\u001b[0;32m--> 168\u001b[0m \u001b[38;5;28;01mlambda\u001b[39;00m inner_input: \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse_result\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 169\u001b[0m \u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43mChatGeneration\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minner_input\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 170\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 171\u001b[0m \u001b[38;5;28minput\u001b[39m,\n\u001b[1;32m 172\u001b[0m config,\n\u001b[1;32m 173\u001b[0m run_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparser\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 174\u001b[0m )\n\u001b[1;32m 175\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 176\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_with_config(\n\u001b[1;32m 177\u001b[0m \u001b[38;5;28;01mlambda\u001b[39;00m inner_input: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparse_result([Generation(text\u001b[38;5;241m=\u001b[39minner_input)]),\n\u001b[1;32m 178\u001b[0m \u001b[38;5;28minput\u001b[39m,\n\u001b[1;32m 179\u001b[0m config,\n\u001b[1;32m 180\u001b[0m run_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparser\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 181\u001b[0m )\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/output_parsers/base.py:219\u001b[0m, in \u001b[0;36mBaseOutputParser.parse_result\u001b[0;34m(self, result, partial)\u001b[0m\n\u001b[1;32m 206\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mparse_result\u001b[39m(\u001b[38;5;28mself\u001b[39m, result: List[Generation], \u001b[38;5;241m*\u001b[39m, partial: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 207\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Parse a list of candidate model Generations into a specific format.\u001b[39;00m\n\u001b[1;32m 208\u001b[0m \n\u001b[1;32m 209\u001b[0m \u001b[38;5;124;03m The return value is parsed from only the first Generation in the result, which\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[38;5;124;03m Structured output.\u001b[39;00m\n\u001b[1;32m 218\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 219\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresult\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtext\u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[1], line 88\u001b[0m, in \u001b[0;36mLLMCompilerPlanParser.parse\u001b[0;34m(self, text)\u001b[0m\n\u001b[1;32m 86\u001b[0m parser \u001b[38;5;241m=\u001b[39m ActionParserFSM()\n\u001b[1;32m 87\u001b[0m graph_dict \u001b[38;5;241m=\u001b[39m {}\n\u001b[0;32m---> 88\u001b[0m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mtask\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mparser\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtext\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 89\u001b[0m \u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43mint\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mtask\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtask_index\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m \u001b[43m \u001b[49m\u001b[43mtask\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43minstantiate_task\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[43m \u001b[49m\u001b[43mtools\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtools\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 93\u001b[0m \u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43midx\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 94\u001b[0m \u001b[43m \u001b[49m\u001b[43mtool_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtask\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtool_name\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 95\u001b[0m \u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtask\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43margs\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 96\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[1], line 29\u001b[0m, in \u001b[0;36mActionParserFSM.parse\u001b[0;34m(self, text)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mparse\u001b[39m(\u001b[38;5;28mself\u001b[39m, text: \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m char \u001b[38;5;129;01min\u001b[39;00m text:\n\u001b[0;32m---> 29\u001b[0m action \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprocess_char\u001b[49m\u001b[43m(\u001b[49m\u001b[43mchar\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m action:\n\u001b[1;32m 31\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m action\n", + "Cell \u001b[0;32mIn[1], line 61\u001b[0m, in \u001b[0;36mActionParserFSM.process_char\u001b[0;34m(self, char)\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCOMMENT\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m char \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m---> 61\u001b[0m action \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msave_action\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 62\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreset()\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", + "Cell \u001b[0;32mIn[1], line 69\u001b[0m, in \u001b[0;36mActionParserFSM.save_action\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 67\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msave_action\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtask_index \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maction:\n\u001b[0;32m---> 69\u001b[0m parsed_action \u001b[38;5;241m=\u001b[39m \u001b[43mjson\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloads\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43maction\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstrip\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 70\u001b[0m tool_name, args \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mnext\u001b[39m(\u001b[38;5;28miter\u001b[39m(parsed_action\u001b[38;5;241m.\u001b[39mitems()))\n\u001b[1;32m 71\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtask_index\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28mint\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtask_index),\n\u001b[1;32m 73\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtool_name\u001b[39m\u001b[38;5;124m\"\u001b[39m: tool_name,\n\u001b[1;32m 74\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124margs\u001b[39m\u001b[38;5;124m\"\u001b[39m: args,\n\u001b[1;32m 75\u001b[0m }\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/json/__init__.py:346\u001b[0m, in \u001b[0;36mloads\u001b[0;34m(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001b[0m\n\u001b[1;32m 341\u001b[0m s \u001b[38;5;241m=\u001b[39m s\u001b[38;5;241m.\u001b[39mdecode(detect_encoding(s), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msurrogatepass\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 343\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 344\u001b[0m parse_int \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m parse_float \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 345\u001b[0m parse_constant \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_pairs_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m kw):\n\u001b[0;32m--> 346\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_default_decoder\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 348\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m JSONDecoder\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/json/decoder.py:337\u001b[0m, in \u001b[0;36mJSONDecoder.decode\u001b[0;34m(self, s, _w)\u001b[0m\n\u001b[1;32m 332\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecode\u001b[39m(\u001b[38;5;28mself\u001b[39m, s, _w\u001b[38;5;241m=\u001b[39mWHITESPACE\u001b[38;5;241m.\u001b[39mmatch):\n\u001b[1;32m 333\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Return the Python representation of ``s`` (a ``str`` instance\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;124;03m containing a JSON document).\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \n\u001b[1;32m 336\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 337\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraw_decode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_w\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mend\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 338\u001b[0m end \u001b[38;5;241m=\u001b[39m _w(s, end)\u001b[38;5;241m.\u001b[39mend()\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m end \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(s):\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/json/decoder.py:355\u001b[0m, in \u001b[0;36mJSONDecoder.raw_decode\u001b[0;34m(self, s, idx)\u001b[0m\n\u001b[1;32m 353\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscan_once(s, idx)\n\u001b[1;32m 354\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[0;32m--> 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m JSONDecodeError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExpecting value\u001b[39m\u001b[38;5;124m\"\u001b[39m, s, err\u001b[38;5;241m.\u001b[39mvalue) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m obj, end\n", + "\u001b[0;31mJSONDecodeError\u001b[0m: Expecting value: line 1 column 1 (char 0)" + ] + } + ], + "source": [ + "result = chain.invoke(\n", + " {\"input\": \"How much larger is the GDP of the UK than that of New York?\"}\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a157cd88-2e54-4525-8126-6d22affa31d7", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 6174fd78134795a7c707d2a9172a51a5d0ef780a Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Tue, 16 Jan 2024 17:08:33 -0800 Subject: [PATCH 004/108] update --- examples/advanced_agents/LLMCompiler.ipynb | 1090 ----------------- .../llm_compiler/LLMCompiler.ipynb | 1036 ++++++++++++++++ .../llm_compiler/output_parser.py | 154 +++ 3 files changed, 1190 insertions(+), 1090 deletions(-) delete mode 100644 examples/advanced_agents/LLMCompiler.ipynb create mode 100644 examples/advanced_agents/llm_compiler/LLMCompiler.ipynb create mode 100644 examples/advanced_agents/llm_compiler/output_parser.py diff --git a/examples/advanced_agents/LLMCompiler.ipynb b/examples/advanced_agents/LLMCompiler.ipynb deleted file mode 100644 index 35acbe368..000000000 --- a/examples/advanced_agents/LLMCompiler.ipynb +++ /dev/null @@ -1,1090 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "0c8b472b-f3fb-46c2-841f-930a4692697b", - "metadata": {}, - "source": [ - "# Implementing LLMCompiler using LangGraph\n", - "By Kim, et. al [🔗](https://arxiv.org/abs/2312.04511)\n", - "\n", - "LLMCompiler is an agent architecture intented on speeding up the latency of agentic tasks via fast, parallel tool execution. It has 3 main components:\n", - "\n", - "1. Planner: generate a DAG of tasks.\n", - "2. Task Fetching Unit: schedules and executes the tasks\n", - "3. Joiner: Responds to the user or triggers a second plan\n", - "\n", - "\n", - "This notebook walks through each component and shows how to wire them together using LangGraph." - ] - }, - { - "cell_type": "markdown", - "id": "1abdedbd-d81b-4ee9-b46f-f29439ed1350", - "metadata": {}, - "source": [ - "# Part 1: Planner\n", - "\n", - "\n", - "Largely adapted from [the original source code](https://github.com/SqueezeAILab/LLMCompiler/blob/main/src/llm_compiler/output_parser.py)." - ] - }, - { - "cell_type": "markdown", - "id": "278f76b0-a2e1-42dc-bd3e-6f624984e3dd", - "metadata": {}, - "source": [ - "#### Output Parser\n", - "\n", - "Parses task lists in the following form:\n", - "\n", - "```plaintext\n", - "1. tool_1(\"arg1\", 3.5, ...)\n", - "Thought: I then want to find out Y by using tool_2\n", - "2. tool_2(\"\", ${1})'\n", - "3. join()\"\n", - "```\n", - "\n", - "The \"Thought\" lines are optional. The `${#}` placeholders are variables. These are used to route tool (task) outputs to other tools." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "cc71b6c4-d701-4217-9701-95ac0857e4e1", - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "import re\n", - "from typing import Any, Dict, List, Optional, Sequence, Union\n", - "\n", - "from langchain.agents.agent import AgentOutputParser\n", - "from langchain.schema import OutputParserException\n", - "from langchain_core.tools import BaseTool\n", - "\n", - "THOUGHT_PATTERN = r\"Thought: ([^\\n]*)\"\n", - "# $1 or ${1} -> 1\n", - "ID_PATTERN = r\"\\$\\{?(\\d+)\\}?\"\n", - "END_OF_PLAN = \"\"\n", - "\n", - "\n", - "class ActionParserFSM:\n", - " def __init__(self):\n", - " self.reset()\n", - "\n", - " def reset(self):\n", - " self.state = \"START\"\n", - " self.task_index = \"\"\n", - " self.action = \"\"\n", - " self.comment = \"\"\n", - " self.bracket_count = 0\n", - " self.actions = []\n", - "\n", - " def parse(self, text: str):\n", - " for char in text:\n", - " action = self.process_char(char)\n", - " if action:\n", - " yield action\n", - " action = self.save_action()\n", - " if action:\n", - " yield action\n", - "\n", - " def process_char(self, char: str) -> Optional[dict]:\n", - " action = None\n", - " if self.state == \"START\":\n", - " if char.isdigit():\n", - " self.state = \"NUMBER\"\n", - " self.task_index += char\n", - " elif char == \"\\n\":\n", - " self.reset()\n", - " elif self.state == \"NUMBER\":\n", - " if char == \".\":\n", - " self.state = \"ACTION\"\n", - " elif char.isdigit():\n", - " self.task_index += char\n", - " else:\n", - " self.reset()\n", - " elif self.state == \"ACTION\":\n", - " if char == \"{\":\n", - " self.bracket_count += 1\n", - " elif char == \"}\":\n", - " self.bracket_count -= 1\n", - " if self.bracket_count == 0:\n", - " self.state = \"COMMENT\"\n", - " self.action += char\n", - " elif self.state == \"COMMENT\":\n", - " if char == \"\\n\":\n", - " action = self.save_action()\n", - " self.reset()\n", - " else:\n", - " self.comment += char\n", - " return action\n", - "\n", - " def save_action(self):\n", - " if self.task_index and self.action:\n", - " parsed_action = json.loads(self.action.strip())\n", - " tool_name, args = next(iter(parsed_action.items()))\n", - " return {\n", - " \"task_index\": int(self.task_index),\n", - " \"tool_name\": tool_name,\n", - " \"args\": args,\n", - " }\n", - "\n", - "\n", - "class LLMCompilerPlanParser(AgentOutputParser, extra=\"allow\"):\n", - " \"\"\"Planning output parser.\"\"\"\n", - "\n", - " def __init__(self, tools: Sequence[BaseTool], **kwargs):\n", - " super().__init__(**kwargs)\n", - " self.tools = tools\n", - "\n", - " def parse(self, text: str) -> list[str]:\n", - " parser = ActionParserFSM()\n", - " graph_dict = {}\n", - " for task in parser.parse(text):\n", - " idx = int(task[\"task_index\"])\n", - "\n", - " task = instantiate_task(\n", - " tools=self.tools,\n", - " idx=idx,\n", - " tool_name=task[\"tool_name\"],\n", - " args=task[\"args\"],\n", - " )\n", - "\n", - " graph_dict[idx] = task\n", - " if task[\"tool\"] == \"join\":\n", - " break\n", - "\n", - " return graph_dict\n", - "\n", - "\n", - "### Helper functions\n", - "\n", - "\n", - "def default_dependency_rule(idx, args: str):\n", - " matches = re.findall(ID_PATTERN, args)\n", - " numbers = [int(match) for match in matches]\n", - " return idx in numbers\n", - "\n", - "\n", - "def _get_dependencies_from_graph(\n", - " idx: int, tool_name: str, args: Sequence[Any]\n", - ") -> dict[str, list[str]]:\n", - " \"\"\"Get dependencies from a graph.\"\"\"\n", - " if tool_name == \"join\":\n", - " return list(range(1, idx))\n", - " return [i for i in range(1, idx) if default_dependency_rule(i, str(args))]\n", - "\n", - "\n", - "def instantiate_task(\n", - " tools: Sequence[BaseTool],\n", - " idx: int,\n", - " tool_name: str,\n", - " args: Union[dict, str, bool, None],\n", - ") -> dict:\n", - " dependencies = _get_dependencies_from_graph(idx, tool_name, args)\n", - " if tool_name == \"join\":\n", - " tool = \"join\"\n", - " else:\n", - " try:\n", - " tool = tools[[tool.name for tool in tools].index(tool_name)]\n", - " except ValueError as e:\n", - " raise OutputParserException(f\"Tool {tool_name} not found.\")\n", - " return dict(\n", - " tool=tool,\n", - " args=args,\n", - " dependencies=dependencies,\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "228a2f75-68b1-4dbf-95dc-4bfc738c3b3b", - "metadata": {}, - "source": [ - "#### Planner Code\n", - "\n", - "This takes the input and outputs a plan." - ] - }, - { - "cell_type": "code", - "execution_count": 141, - "id": "58af9746-1011-41e9-a77a-be9cef202aea", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain.chat_models.base import BaseChatModel\n", - "from langchain_core.prompts import ChatPromptTemplate\n", - "from langchain_core.runnables import RunnableBranch\n", - "from langchain_core.tools import BaseTool\n", - "\n", - "END_OF_PLAN = \"\"\n", - "\n", - "JOINER_FINISH = \"Finish\"\n", - "JOINER_REPLAN = \"Replan\"\n", - "\n", - "\n", - "JOIN_DESCRIPTION = (\n", - " \"join():\\n\"\n", - " \" - Collects and combines results from prior actions.\\n\"\n", - " \" - A LLM agent is called upon invoking join to either finalize the user query or wait until the plans are executed.\\n\"\n", - " \" - join should always be the last action in the plan, and will be called in two scenarios:\\n\"\n", - " \" (a) if the answer can be determined by gathering the outputs from tasks to generate the final response.\\n\"\n", - " \" (b) if the answer cannot be determined in the planning phase before you execute the plans. \"\n", - ")\n", - "\n", - "planner_prompt_tmpl_str = (\n", - " \"Given a user query, create a plan to solve it with the utmost parallelizability. \"\n", - " \"Each plan should comprise an action from the following {num_tools} types:\\n\"\n", - " \"{tool_descriptions}\"\n", - " f\"\\n{{num_toolsp1}}. {JOIN_DESCRIPTION}\"\n", - " \"Guidelines:\\n\"\n", - " \" - Each action described above contains input/output types and description.\\n\"\n", - " \" - You must strictly adhere to the input and output types for each action.\\n\"\n", - " \" - The action descriptions contain the guidelines. You MUST strictly follow those guidelines when you use the actions.\\n\"\n", - " \" - Each action in the plan should strictly be one of the above types.\\n\"\n", - " \" - Provide actions ONLY in json form, with the single key being the action name and the value being its arguments. Do not write python code. \\n\"\n", - " \" - Each action line must start with a unique ID, which is strictly increasing.\\n\"\n", - " \" - Inputs for actions can either be constants or outputs from preceding actions. \"\n", - " \"In the latter case, use the format $id to denote the ID of the previous action whose output will be the input.\\n\"\n", - " f\" - Always call join as the last action in the plan. Say '{END_OF_PLAN}' after you call join\\n\"\n", - " \" - Ensure the plan maximizes parallelizability.\\n\"\n", - " \" - Only use the provided action types. If a query cannot be addressed using these, invoke the join action for the next steps.\\n\"\n", - " \" - Never introduce new actions other than the ones provided.\\n\\n\"\n", - " \"{replan}\"\n", - " \"{examples}\"\n", - ")\n", - "\n", - "\n", - "def _generate_planner_prompt(\n", - " tools: Sequence[BaseTool],\n", - " example_prompt=str,\n", - "):\n", - " tool_descriptions = \"\\n\".join(\n", - " f\"{i+1}. {tool.name}: {tool.description}\\n\\tInput schema: {tool.args}\"\n", - " for i, tool in enumerate(tools)\n", - " )\n", - " planner_prompt_template = ChatPromptTemplate.from_messages(\n", - " [(\"system\", planner_prompt_tmpl_str), (\"user\", \"Question: {input}{context}\")]\n", - " ).partial(\n", - " tool_descriptions=tool_descriptions,\n", - " examples=\"Here are some examples:\\n\\n\" + example_prompt\n", - " if example_prompt\n", - " else \"\",\n", - " num_tools=len(tools),\n", - " num_toolsp1=len(tools) + 1,\n", - " )\n", - "\n", - " return planner_prompt_template\n", - "\n", - "\n", - "def create_planner(\n", - " llm: BaseChatModel,\n", - " example_prompt: str,\n", - " tools: Sequence[BaseTool],\n", - " stop: Optional[list[str]] = None,\n", - "):\n", - " og_planner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", - " replan=\"\",\n", - " context=\"\",\n", - " )\n", - " replanner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", - " replan=' - You are given \"Previous Plan\" which is the plan that the previous agent created along with the execution results '\n", - " \"(given as Observation) of each plan and a general thought (given as Thought) about the executed results.\"\n", - " 'You MUST use these information to create the next plan under \"Current Plan\".\\n'\n", - " ' - When starting the Current Plan, you should start with \"Thought\" that outlines the strategy for the next plan.\\n'\n", - " \" - In the Current Plan, you should NEVER repeat the actions that are already executed in the Previous Plan.\\n\"\n", - " \" - You must continue the task index from the end of the previous one. Do not repeat task indices.\"\n", - " )\n", - " bound_llm = llm.bind(stop=stop)\n", - " return (\n", - " RunnableBranch(\n", - " ((lambda x: x.get(\"context\") is not None), replanner_prompt),\n", - " og_planner_prompt,\n", - " )\n", - " | bound_llm\n", - " | LLMCompilerPlanParser(tools=tools)\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "7feb5c82-b1a9-40ae-863a-0362fe3ce5ea", - "metadata": {}, - "source": [ - "#### Example usage\n", - "\n", - "Here's an example usage of the planner module" - ] - }, - { - "cell_type": "code", - "execution_count": 131, - "id": "3fe074ea-7314-47a7-9a9f-a8e6191ea1f3", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain.tools import tool\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "\n", - "@tool\n", - "def get_user_id(first_name: str, last_name: Optional[str] = None):\n", - " \"\"\"Query the user IDs of everyone with the provided name.\"\"\"\n", - " return 4\n", - "\n", - "\n", - "@tool\n", - "def get_scores(class_name: str, user_id: int):\n", - " \"\"\"Query the class registry for grades of the provided user ID.\"\"\"\n", - " return \"A+\"\n", - "\n", - "\n", - "examples = (\n", - " \"Question: What's the user ID for Johnny Drop Tables?\\n\"\n", - " '1. {\"get_user_id\": {\"first_name\": \"Johnny\", \"last_name\":\"Drop Tables\"}}\\n'\n", - " f'2. {{\"join\": null}}{END_OF_PLAN}\\n'\n", - " \"###\\n\"\n", - " \"\\n\"\n", - " \"Question: What was Eric Zhang's score in Calc?\\n\"\n", - " '1. {\"get_user_id\": {\"first_name\": \"Eric\", \"last_name\":\"Zhang\"}}\\n'\n", - " '2. {\"get_scores\": {\"class_name\": \"calc\", \"user_id\": \"$1\"}}\\n'\n", - " f'3. {{\"join\": null}}{END_OF_PLAN}\\n'\n", - " \"###\\n\"\n", - " \"\\n\"\n", - ")\n", - "\n", - "planner = create_planner(\n", - " ChatOpenAI(model=\"gpt-3.5-turbo\"),\n", - " example_prompt=examples,\n", - " tools=[get_user_id, get_scores],\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 132, - "id": "55fb0f99-4e59-4e5a-b687-a90bb4d06d39", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{1: {'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: Optional[str] = None) - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", - " 'args': {'first_name': 'Sam', 'last_name': 'Van Damm'},\n", - " 'dependencies': []},\n", - " 2: {'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: Optional[str] = None) - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", - " 'args': {'first_name': 'Will', 'last_name': 'Van Damm'},\n", - " 'dependencies': []},\n", - " 3: {'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", - " 'args': {'class_name': 'Calc BC', 'user_id': '$1'},\n", - " 'dependencies': [1]},\n", - " 4: {'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", - " 'args': {'class_name': 'Calc BC', 'user_id': '$2'},\n", - " 'dependencies': [2]},\n", - " 5: {'tool': 'join', 'args': None, 'dependencies': [1, 2, 3, 4]}}" - ] - }, - "execution_count": 132, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tasks = planner.invoke(\n", - " {\"input\": \"What are the Calc BC grades for Sam and Will Van Damm?\"}\n", - ")\n", - "tasks" - ] - }, - { - "cell_type": "markdown", - "id": "5d0e795f-61ff-4553-9823-23e7624ca180", - "metadata": {}, - "source": [ - "## 2. Task Fetching Unit\n", - "\n", - "This component schedules the tasks. In the paper, it's kept separate from the \"executor\", but here we create a single DAG to be executed by LangGraph.\n", - "\n", - "Basic idea is that, given a list of dicts of the form:\n", - "\n", - "```typescript\n", - "{\n", - " tool: BaseTool,\n", - " dependencies: number[],\n", - "}\n", - "```\n", - "\n", - "1. Create a topological sort of the tasks\n", - "2. Execute them on the previous step's output, ensuring to perform variable substitution where appropriate" - ] - }, - { - "cell_type": "code", - "execution_count": 184, - "id": "c70a0e28-43db-4ea2-af48-8a2f310dce83", - "metadata": {}, - "outputs": [], - "source": [ - "import functools\n", - "\n", - "from langchain_core.runnables import (\n", - " RunnableLambda,\n", - " RunnableParallel,\n", - " RunnablePassthrough,\n", - ")\n", - "\n", - "\n", - "def _sort_tasks(data):\n", - " if not data:\n", - " return []\n", - " sorted_tasks = []\n", - " # Remove tasks already completed\n", - " min_idx = min([int(k) for k in data])\n", - " data = {\n", - " int(k): {\n", - " **v,\n", - " \"dependencies\": [dep for dep in v[\"dependencies\"] if dep >= min_idx],\n", - " }\n", - " for k, v in data.items()\n", - " }\n", - " while data:\n", - " no_deps = {k: v for k, v in data.items() if not v[\"dependencies\"]}\n", - " if not no_deps:\n", - " raise ValueError(\"We seem to have run into a circular dependency.\")\n", - "\n", - " sorted_tasks.append(no_deps)\n", - " data = {\n", - " k: {\n", - " **v,\n", - " \"dependencies\": [d for d in v[\"dependencies\"] if d not in no_deps],\n", - " }\n", - " for k, v in data.items()\n", - " if k not in no_deps\n", - " }\n", - " return sorted_tasks\n", - "\n", - "\n", - "def _resolve_arg(x: dict, arg: Union[str, Any]):\n", - " if isinstance(arg, str) and arg.startswith(\"$\"):\n", - " try:\n", - " return x[f\"task_{arg[1:]}\"]\n", - " except:\n", - " if arg.endswith(\".output\"):\n", - " return x[f\"task_{arg[1:-7]}\"]\n", - " raise\n", - "\n", - " else:\n", - " return arg\n", - "\n", - "\n", - "def _execute_task(x, task):\n", - " tool_to_use = task[\"tool\"]\n", - " args = task[\"args\"]\n", - " if isinstance(args, str):\n", - " resolved_args = _resolve_arg(x, args)\n", - " elif isinstance(args, dict):\n", - " resolved_args = {key: _resolve_arg(x, val) for key, val in args.items()}\n", - " else:\n", - " # This will likely fail\n", - " resolved_args = args\n", - " try:\n", - " return tool_to_use.invoke(resolved_args)\n", - " except Exception as e:\n", - " return (\n", - " f\"ERROR(Failed to call tool {tool_to_use} with args {tool_to_use}.\"\n", - " + f\" Args resolved to {resolved_args}. Error: {repr(e)})\"\n", - " )\n", - "\n", - "\n", - "def construct_dag(tasks):\n", - " sorted_tasks = _sort_tasks(tasks)\n", - " chain = None\n", - " for idx, task_group in enumerate(sorted_tasks):\n", - " if len(task_group) == 1 and next(iter(task_group.values()))[\"tool\"] == \"join\":\n", - " # TODO: actually join the values\n", - " step = lambda x: {\"join\": x}\n", - " else:\n", - " # Cascade all results forward\n", - " constructor = (\n", - " RunnableParallel if chain is None else RunnablePassthrough.assign\n", - " )\n", - " task_dict = {}\n", - " for idx, task in task_group.items():\n", - " task_dict[f\"task_{idx}\"] = RunnableLambda(\n", - " functools.partial(_execute_task, task=task)\n", - " ).with_config(run_name=f\"task_{idx}\")\n", - "\n", - " step = constructor(**task_dict).with_config(run_name=f\"TaskGroup{idx}\")\n", - " if chain is None:\n", - " chain = step\n", - " else:\n", - " chain |= step\n", - "\n", - " if chain is not None:\n", - " return chain | RunnablePassthrough.assign(tasks=lambda _: tasks)\n", - " return chain" - ] - }, - { - "cell_type": "code", - "execution_count": 185, - "id": "87f11cea-3a8d-479c-8a9e-81223dbbc1f5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " +------------------------------+ \n", - " | ParallelInput | \n", - " +------------------------------+ \n", - " *** *** \n", - " ** ** \n", - " ** ** \n", - " +-------------+ +-------------+ \n", - " | Lambda(...) | | Lambda(...) | \n", - " +-------------+ +-------------+ \n", - " *** *** \n", - " ** ** \n", - " ** ** \n", - " +-------------------------------+ \n", - " | ParallelOutput | \n", - " +-------------------------------+ \n", - " * \n", - " * \n", - " * \n", - " +------------------------------+ \n", - " | ParallelInput | \n", - " +------------------------------+ \n", - " ***** * ***** \n", - " ***** * ***** \n", - " *** * *** \n", - "+-------------+ +-------------+ +-------------+ \n", - "| Lambda(...) | | Lambda(...) | | Passthrough | \n", - "+-------------+***** +-------------+ *****+-------------+ \n", - " ***** * ***** \n", - " ***** * ***** \n", - " *** * *** \n", - " +-------------------------------+ \n", - " | ParallelOutput | \n", - " +-------------------------------+ \n", - " * \n", - " * \n", - " * \n", - " +-------------------------------+ \n", - " | Lambda(lambda x: {'join': x}) | \n", - " +-------------------------------+ \n", - " * \n", - " * \n", - " * \n", - " +----------------------+ \n", - " | ParallelInput | \n", - " +----------------------+ \n", - " *** *** \n", - " *** *** \n", - " ** ** \n", - " +-------------------------+ +-------------+ \n", - " | Lambda(lambda _: tasks) | | Passthrough | \n", - " +-------------------------+ +-------------+ \n", - " *** *** \n", - " *** *** \n", - " ** ** \n", - " +-----------------------+ \n", - " | ParallelOutput | \n", - " +-----------------------+ \n" - ] - } - ], - "source": [ - "graph = construct_dag(tasks)\n", - "graph.get_graph().print_ascii()" - ] - }, - { - "cell_type": "markdown", - "id": "9efa15ae-817a-48c6-86ed-16bc112fedc5", - "metadata": {}, - "source": [ - "#### Example Plan\n", - "\n", - "We still haven't introduced any cycles in our computation graph, so this is all easily expressed in LCEL." - ] - }, - { - "cell_type": "code", - "execution_count": 135, - "id": "133d124a-0d41-4c6d-a86a-34fa4cb1430f", - "metadata": {}, - "outputs": [], - "source": [ - "chain = planner | construct_dag" - ] - }, - { - "cell_type": "code", - "execution_count": 136, - "id": "55142257-2674-4a47-988e-0d2810917329", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'task_1': 4, 'task_2': 4, 'task_3': 'A+', 'task_4': 'A+'}" - ] - }, - "execution_count": 136, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "example_question = \"Did Aliya get a better score than Roger in Geology?\"\n", - "task_results = chain.invoke({\"input\": example_question})\n", - "task_results[\"join\"]" - ] - }, - { - "cell_type": "markdown", - "id": "563d5311-55f0-4ca1-afbd-01fd970cf3e3", - "metadata": {}, - "source": [ - "## Agent Logic\n", - "\n", - "So now we have the planning and initial execution done. We need a component to process these outputs and either:\n", - "1. Respond with the correct answer.\n", - "2. Loop with a new plan.\n", - "\n", - "The paper calls this the \"joiner\"." - ] - }, - { - "cell_type": "code", - "execution_count": 216, - "id": "2978991e-45a4-44e6-9deb-f941f44fe93a", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.output_parsers import StrOutputParser\n", - "from typing_extensions import TypedDict\n", - "\n", - "\n", - "def format_task(task, idx):\n", - " tool = task[\"tool\"]\n", - " tool_name = tool if isinstance(tool, str) else tool.name # Handle join()\n", - " return f\"{idx}. {{{tool_name}: {task['args']}}}\"\n", - "\n", - "\n", - "def format_tasks(executor_output: dict):\n", - " tasks = executor_output[\"tasks\"]\n", - " prior_observations = executor_output.get(\"observations\")\n", - " formatted_plan = \"\\n\".join(format_task(task, idx) for idx, task in tasks.items())\n", - " observations = \"\\n\".join(f\"{k}: {v}\" for k, v in executor_output[\"join\"].items())\n", - " result = f\"Original Plan:\\n{formatted_plan}\\nExecuted plan results:\\n{observations}\"\n", - " if prior_observations:\n", - " result += f\"\\nPrevious Results:\\n{prior_observations}\"\n", - " return result\n", - "\n", - "\n", - "def _parse_joiner_output(raw_answer: str) -> str:\n", - " thought, answer, is_replan = \"\", \"\", False # default values\n", - " raw_answers = raw_answer.split(\"\\n\")\n", - " for ans in raw_answers:\n", - " if ans.startswith(\"Action:\"):\n", - " answer = ans[ans.find(\"(\") + 1 : ans.find(\")\")]\n", - " is_replan = JOINER_REPLAN in ans\n", - " elif ans.startswith(\"Thought:\"):\n", - " thought = ans.split(\"Thought:\")[1].strip()\n", - " if is_replan:\n", - " return {\"thought\": thought, \"context\": answer}\n", - " else:\n", - " return {\"thought\": thought, \"answer\": answer}" - ] - }, - { - "cell_type": "code", - "execution_count": 217, - "id": "b2feea5a-e0e4-4cff-8cb5-fdbfec95ba57", - "metadata": {}, - "outputs": [], - "source": [ - "def create_joiner(prompt, llm):\n", - " return (\n", - " (\n", - " lambda x: {\n", - " **x[\"plan\"],\n", - " \"input\": x[\"input\"],\n", - " \"context\": x.get(\"context\"),\n", - " \"observations\": x.get(\"observations\"),\n", - " }\n", - " )\n", - " | RunnablePassthrough.assign(scratchpad=format_tasks)\n", - " | ChatPromptTemplate.from_messages([(\"system\", prompt), (\"user\", \"{input}\")])\n", - " | llm\n", - " | StrOutputParser()\n", - " | _parse_joiner_output\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 218, - "id": "942dab42-ad42-4ba2-90d5-49edbe4fae68", - "metadata": {}, - "outputs": [], - "source": [ - "system_prompt = (\n", - " \"Solve a question answering task. Here are some guidelines:\\n\"\n", - " \" - In the Assistant Scratchpad, you will be given results of a plan you have executed to answer the user's question.\\n\"\n", - " \" - Thought needs to reason about the question based on the Observations in 1-2 sentences.\\n\"\n", - " \" - Ignore irrelevant action results.\\n\"\n", - " \" - If the required information is present, give a concise but complete and helpful answer to the user's question.\\n\"\n", - " \" - If you are unable to give a satisfactory finishing answer, replan to get the required information.\"\n", - " \" Respond in the following format:\\n\\n\"\n", - " \"Thought: \\n\"\n", - " \"Action: \\n\"\n", - " \"Available actions:\\n\"\n", - " f\" (1) {JOINER_FINISH}(the final answer to return to the user): returns the answer and finishes the task.\\n\"\n", - " f\" (2) {JOINER_REPLAN}(the reasoning and other information that will help you plan again. Can be a line of any length): instructs why we must replan\\n\\n\"\n", - " \" Examples:\\n\"\n", - " \"Question: How many users are currently using the new product?\\n\"\n", - " \"...task returns the number 32,000\\n\"\n", - " \"Thought: I find no issue with the original plan, and the results satisfy everything in the user question.\\n\"\n", - " f\"Action: {JOINER_FINISH}(32,000 users currently use the new product)\\n###\\n\"\n", - " \"Question: How much cooler is it in NY than SF?\\n\"\n", - " \"...task results show SF is 57 degrees fahrenheit today, and they show in NY it has a high of 32 degrees fahrenheit \\n\"\n", - " \"Thought: I can answer by synthesizing the results.\\n\"\n", - " f\"Action: {JOINER_FINISH}(NY is 25 degrees cooler than SF today, as it has a high of 32 degrees Fahrenheit today, whereas in SF, it is 57 degrees Fahrenheit.)\\n###\\n\"\n", - " \"Question: Are the gophers beating the rabbits??\\n\"\n", - " \"...task returns the a score of 7 for rabbits but no other value...\\n\"\n", - " \"Thought: I need the gophers' score to make a final decision.\\n\"\n", - " f\"Action: {JOINER_REPLAN}(The rabbits have a score of 7, but I need the gophers' score.)\"\n", - " \"\\nAssistant Scratchpad:\\n{scratchpad}\"\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 219, - "id": "a07d0804-2ce5-4462-98eb-4473f36ef704", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'thought': 'The plan has been executed successfully and returned the scores for both Aliya and Roger in Geology. We can compare their scores to determine if Aliya got a better score than Roger.',\n", - " 'answer': 'Aliya got an A+ in Geology, while Roger also got an A+. Therefore, they both got the same score in Geology.'}" - ] - }, - "execution_count": 219, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-3.5-turbo\"))\n", - "joiner.invoke({\"plan\": task_results, \"input\": example_question})" - ] - }, - { - "cell_type": "markdown", - "id": "b099e5ee-2c23-47d9-9387-0f64e02627d3", - "metadata": {}, - "source": [ - "### Construct Agent\n", - "\n", - "Now we have all the required pieces! Let's construct our agent with its tools." - ] - }, - { - "cell_type": "code", - "execution_count": 220, - "id": "565b08d2-d19c-4125-97f7-996fc01bc631", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "os.environ[\"TAVILY_API_KEY\"] = (\n", - " os.environ.get(\"TAVILY_API_KEY\")\n", - " if \"TAVILY_API_KEY\" in os.environ\n", - " else getpass.getpass(\"Tavily API Key:\")\n", - ")\n", - "# Then fetch a credentials.json file\n", - "# https://developers.google.com/gmail/api/quickstart/python#authorize_credentials_for_a_desktop_application" - ] - }, - { - "cell_type": "code", - "execution_count": 221, - "id": "bd84ca4b-eacb-471d-9975-5449047b5bed", - "metadata": {}, - "outputs": [], - "source": [ - "from operator import add, mul, sub, truediv\n", - "from typing import Literal\n", - "\n", - "from langchain_community.agent_toolkits import GmailToolkit\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", - "from langchain_core.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def calculate(\n", - " arg1: float,\n", - " arg2: float,\n", - " op: Union[Literal[\"+\"], Literal[\"-\"], Literal[\"*\"], Literal[\"/\"]],\n", - "):\n", - " \"\"\"Calculate a mathematical operation on two arguments.\"\"\"\n", - " resolved_op = {\"+\": add, \"-\": sub, \"*\": mul, \"/\": truediv}\n", - " return resolved_op[op](arg1, arg2)\n", - "\n", - "\n", - "tools = [TavilySearchResults(max_results=1), calculate]" - ] - }, - { - "cell_type": "code", - "execution_count": 224, - "id": "768b5f11-e3d2-47be-8143-a7dcd8765243", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import END, StateGraph\n", - "\n", - "\n", - "class GraphState(TypedDict):\n", - " input: str\n", - " plan: Dict\n", - " agent_output: Dict\n", - " observations: Dict\n", - " num_iterations: int\n", - " context: str\n", - " stop_reason: str\n", - "\n", - "\n", - "MAX_ITERATIONS = 5\n", - "workflow = StateGraph(GraphState)\n", - "\n", - "# 1. Define vertices\n", - "\n", - "planner = create_planner(\n", - " llm=ChatOpenAI(model=\"gpt-4-1106-preview\"),\n", - " # Add more examples to improve reliability\n", - " example_prompt=(\n", - " \"Question: What's the capital of Myanmar?\\n\"\n", - " '1. {\"tavily_search_results_json\": {\"query\": \"Capital of Myanmar\"}}\\n'\n", - " f'2. {{\"join\": null}}{END_OF_PLAN}\\n'\n", - " \"###\\n\"\n", - " \"\\n\"\n", - " ),\n", - " tools=tools,\n", - ")\n", - "\n", - "plan_and_execute = planner | construct_dag\n", - "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-4-1106-preview\"))\n", - "\n", - "\n", - "def _reformat_task(idx, task: Union[BaseTool, str]):\n", - " tool = task[\"tool\"]\n", - " tool_name = tool if isinstance(tool, str) else tool.name\n", - " called = {tool_name: task[\"args\"]}\n", - " return f\"{idx}. {json.dumps(called)}\"\n", - "\n", - "\n", - "def provide_context(state):\n", - " # Insert a context string for the re-planner.\n", - " # This could alternatively call an LLM to provide additional logic\n", - " context = state[\"agent_output\"][\"context\"]\n", - " num_iterations = int(state.get(\"num_iterations\") or 1) + 1\n", - " previous_plan = \"\\n\".join(\n", - " [\n", - " _reformat_task(idx, task)\n", - " for idx, task in sorted(state[\"plan\"][\"tasks\"].items())\n", - " ]\n", - " )\n", - " context_str = (\n", - " f\"\\n\\nPrevious Plan:\\n{previous_plan}\\n\"\n", - " f\"{context}\\nYou have made {num_iterations}/{MAX_ITERATIONS} attempts thus far.\"\n", - " )\n", - " observations = state[\"observations\"] or {}\n", - " for task, observation in state[\"plan\"][\"join\"].items():\n", - " observations[task] = observation\n", - " return {\n", - " \"context\": context_str,\n", - " \"num_iterations\": num_iterations,\n", - " \"observations\": observations,\n", - " }\n", - "\n", - "\n", - "def add_stop_reason(state):\n", - " num_iterations = int(state.get(\"num_iterations\") or 0)\n", - " if num_iterations >= MAX_ITERATIONS:\n", - " return {\"stop_reason\": \"end_max_iter\"}\n", - " if state[\"agent_output\"].get(\"answer\"):\n", - " return {\"stop_reason\": \"answer\"}\n", - " return {\"stop_reason\": None}\n", - "\n", - "\n", - "# Assign each node to a state variable to update\n", - "workflow.add_node(\"plan_and_execute\", RunnablePassthrough.assign(plan=plan_and_execute))\n", - "workflow.add_node(\"join\", RunnablePassthrough.assign(agent_output=joiner))\n", - "workflow.add_node(\"provide_context\", provide_context)\n", - "workflow.add_node(\"provide_stop_reason\", add_stop_reason)\n", - "\n", - "\n", - "## Define edges\n", - "\n", - "workflow.add_edge(\"plan_and_execute\", \"join\")\n", - "workflow.add_edge(\"provide_context\", \"plan_and_execute\")\n", - "workflow.add_edge(\"join\", \"provide_stop_reason\")\n", - "\n", - "### This condition determines looping logic\n", - "\n", - "\n", - "def should_continue(state):\n", - " if state[\"stop_reason\"] is None:\n", - " return \"continue\"\n", - " return \"end\"\n", - "\n", - "\n", - "workflow.add_conditional_edges(\n", - " start_key=\"provide_stop_reason\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " condition=should_continue,\n", - " conditional_edge_mapping={\n", - " # If it generates context, we must replan\n", - " \"continue\": \"provide_context\",\n", - " # Otherwise we finish.\n", - " \"end\": END,\n", - " },\n", - ")\n", - "workflow.set_entry_point(\"plan_and_execute\")\n", - "chain = workflow.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "9f8c9849-8531-463d-a0ef-dcc3d9888b2d", - "metadata": {}, - "source": [ - "## Simple question\n", - "\n", - "Let's ask a simple question of the agent." - ] - }, - { - "cell_type": "code", - "execution_count": 225, - "id": "5bc4584a-e31c-4065-805e-76a6db30676a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The GDP of New York in 2022 was about 1.56 trillion U.S. dollars.\n" - ] - } - ], - "source": [ - "result = chain.invoke({\"input\": \"What's the GDP of New York?\"})\n", - "print(result[\"agent_output\"][\"answer\"])" - ] - }, - { - "cell_type": "markdown", - "id": "33c65ef5-b4b2-4ab2-8c78-a551da7819b9", - "metadata": {}, - "source": [ - "## Multi-hop question" - ] - }, - { - "cell_type": "code", - "execution_count": 227, - "id": "0b3a0916-d8ca-4092-b91c-d9e2b05259d8", - "metadata": {}, - "outputs": [ - { - "ename": "JSONDecodeError", - "evalue": "Expecting value: line 1 column 1 (char 0)", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mJSONDecodeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[227], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mchain\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minput\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHow much larger is the GDP of the UK than that of New York?\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:492\u001b[0m, in \u001b[0;36mPregel.invoke\u001b[0;34m(self, input, config, output_keys, input_keys, **kwargs)\u001b[0m\n\u001b[1;32m 482\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 483\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 484\u001b[0m \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 489\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 490\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]:\n\u001b[1;32m 491\u001b[0m latest: Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 492\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 493\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 494\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[43m \u001b[49m\u001b[43moutput_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput_keys\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43moutput_keys\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 496\u001b[0m \u001b[43m \u001b[49m\u001b[43minput_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minput_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 499\u001b[0m \u001b[43m \u001b[49m\u001b[43mlatest\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n\u001b[1;32m 500\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m latest\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:528\u001b[0m, in \u001b[0;36mPregel.transform\u001b[0;34m(self, input, config, output_keys, input_keys, **kwargs)\u001b[0m\n\u001b[1;32m 519\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtransform\u001b[39m(\n\u001b[1;32m 520\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28minput\u001b[39m: Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 526\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 527\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Iterator[Union[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any], Any]]:\n\u001b[0;32m--> 528\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform_stream_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 529\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 530\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transform\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 531\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 532\u001b[0m \u001b[43m \u001b[49m\u001b[43moutput_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moutput_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 533\u001b[0m \u001b[43m \u001b[49m\u001b[43minput_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minput_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 534\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 535\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 536\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01myield\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1226\u001b[0m, in \u001b[0;36mRunnable._transform_stream_with_config\u001b[0;34m(self, input, transformer, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 1224\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1225\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m-> 1226\u001b[0m chunk: Output \u001b[38;5;241m=\u001b[39m context\u001b[38;5;241m.\u001b[39mrun(\u001b[38;5;28mnext\u001b[39m, iterator) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 1227\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m chunk\n\u001b[1;32m 1228\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m final_output_supported:\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:313\u001b[0m, in \u001b[0;36mPregel._transform\u001b[0;34m(self, input, run_manager, config, input_keys, output_keys)\u001b[0m\n\u001b[1;32m 303\u001b[0m done, inflight \u001b[38;5;241m=\u001b[39m concurrent\u001b[38;5;241m.\u001b[39mfutures\u001b[38;5;241m.\u001b[39mwait(\n\u001b[1;32m 304\u001b[0m [\n\u001b[1;32m 305\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(proc\u001b[38;5;241m.\u001b[39minvoke, \u001b[38;5;28minput\u001b[39m, config)\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 309\u001b[0m timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstep_timeout,\n\u001b[1;32m 310\u001b[0m )\n\u001b[1;32m 312\u001b[0m \u001b[38;5;66;03m# interrupt on failure or timeout\u001b[39;00m\n\u001b[0;32m--> 313\u001b[0m \u001b[43m_interrupt_or_proceed\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdone\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minflight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 315\u001b[0m \u001b[38;5;66;03m# apply writes to channels\u001b[39;00m\n\u001b[1;32m 316\u001b[0m _apply_writes(checkpoint, channels, pending_writes, config, step \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m)\n", - "File \u001b[0;32m~/code/lc/langgraph/langgraph/pregel/__init__.py:611\u001b[0m, in \u001b[0;36m_interrupt_or_proceed\u001b[0;34m(done, inflight, step)\u001b[0m\n\u001b[1;32m 609\u001b[0m inflight\u001b[38;5;241m.\u001b[39mpop()\u001b[38;5;241m.\u001b[39mcancel()\n\u001b[1;32m 610\u001b[0m \u001b[38;5;66;03m# raise the exception\u001b[39;00m\n\u001b[0;32m--> 611\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 612\u001b[0m \u001b[38;5;66;03m# TODO this is where retry of an entire step would happen\u001b[39;00m\n\u001b[1;32m 614\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inflight:\n\u001b[1;32m 615\u001b[0m \u001b[38;5;66;03m# if we got here means we timed out\u001b[39;00m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:3596\u001b[0m, in \u001b[0;36mRunnableBindingBase.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 3590\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 3591\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 3592\u001b[0m \u001b[38;5;28minput\u001b[39m: Input,\n\u001b[1;32m 3593\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 3594\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Optional[Any],\n\u001b[1;32m 3595\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Output:\n\u001b[0;32m-> 3596\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbound\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3597\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3598\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_merge_configs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3599\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3600\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/passthrough.py:415\u001b[0m, in \u001b[0;36mRunnableAssign.invoke\u001b[0;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[1;32m 409\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 410\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 411\u001b[0m \u001b[38;5;28minput\u001b[39m: Dict[\u001b[38;5;28mstr\u001b[39m, Any],\n\u001b[1;32m 412\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 413\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 414\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[0;32m--> 415\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_invoke\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/passthrough.py:402\u001b[0m, in \u001b[0;36mRunnableAssign._invoke\u001b[0;34m(self, input, run_manager, config, **kwargs)\u001b[0m\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_invoke\u001b[39m(\n\u001b[1;32m 390\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 391\u001b[0m \u001b[38;5;28minput\u001b[39m: Dict[\u001b[38;5;28mstr\u001b[39m, Any],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[1;32m 395\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dict[\u001b[38;5;28mstr\u001b[39m, Any]:\n\u001b[1;32m 396\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\n\u001b[1;32m 397\u001b[0m \u001b[38;5;28minput\u001b[39m, \u001b[38;5;28mdict\u001b[39m\n\u001b[1;32m 398\u001b[0m ), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe input to RunnablePassthrough.assign() must be a dict.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 401\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28minput\u001b[39m,\n\u001b[0;32m--> 402\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmapper\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 403\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 404\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 405\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 406\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 407\u001b[0m }\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:2339\u001b[0m, in \u001b[0;36mRunnableParallel.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m get_executor_for_config(config) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 2327\u001b[0m futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 2328\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 2329\u001b[0m step\u001b[38;5;241m.\u001b[39minvoke,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2337\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, step \u001b[38;5;129;01min\u001b[39;00m steps\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 2338\u001b[0m ]\n\u001b[0;32m-> 2339\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43m{\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfuture\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mzip\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msteps\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfutures\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 2340\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 2341\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:2339\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m get_executor_for_config(config) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 2327\u001b[0m futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 2328\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 2329\u001b[0m step\u001b[38;5;241m.\u001b[39minvoke,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2337\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, step \u001b[38;5;129;01min\u001b[39;00m steps\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 2338\u001b[0m ]\n\u001b[0;32m-> 2339\u001b[0m output \u001b[38;5;241m=\u001b[39m {key: \u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m key, future \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(steps, futures)}\n\u001b[1;32m 2340\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 2341\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/_base.py:456\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 454\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 455\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[0;32m--> 456\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 457\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 458\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m()\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/_base.py:401\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception:\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 401\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 403\u001b[0m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 404\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:1774\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 1772\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1773\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msteps):\n\u001b[0;32m-> 1774\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43mstep\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1775\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1776\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# mark each step as a child run\u001b[39;49;00m\n\u001b[1;32m 1777\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatch_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1778\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_child\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mseq:step:\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mi\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1779\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1780\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1781\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[1;32m 1782\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/output_parsers/base.py:167\u001b[0m, in \u001b[0;36mBaseOutputParser.invoke\u001b[0;34m(self, input, config)\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 164\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mstr\u001b[39m, BaseMessage], config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 165\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 166\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28minput\u001b[39m, BaseMessage):\n\u001b[0;32m--> 167\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 168\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mlambda\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43minner_input\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse_result\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 169\u001b[0m \u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43mChatGeneration\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minner_input\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 170\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 171\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 172\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 173\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mparser\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 174\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 175\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 176\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_with_config(\n\u001b[1;32m 177\u001b[0m \u001b[38;5;28;01mlambda\u001b[39;00m inner_input: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparse_result([Generation(text\u001b[38;5;241m=\u001b[39minner_input)]),\n\u001b[1;32m 178\u001b[0m \u001b[38;5;28minput\u001b[39m,\n\u001b[1;32m 179\u001b[0m config,\n\u001b[1;32m 180\u001b[0m run_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparser\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 181\u001b[0m )\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/base.py:975\u001b[0m, in \u001b[0;36mRunnable._call_with_config\u001b[0;34m(self, func, input, config, run_type, **kwargs)\u001b[0m\n\u001b[1;32m 971\u001b[0m context \u001b[38;5;241m=\u001b[39m copy_context()\n\u001b[1;32m 972\u001b[0m context\u001b[38;5;241m.\u001b[39mrun(var_child_runnable_config\u001b[38;5;241m.\u001b[39mset, child_config)\n\u001b[1;32m 973\u001b[0m output \u001b[38;5;241m=\u001b[39m cast(\n\u001b[1;32m 974\u001b[0m Output,\n\u001b[0;32m--> 975\u001b[0m \u001b[43mcontext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 983\u001b[0m )\n\u001b[1;32m 984\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 985\u001b[0m run_manager\u001b[38;5;241m.\u001b[39mon_chain_error(e)\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/runnables/config.py:323\u001b[0m, in \u001b[0;36mcall_func_with_variable_args\u001b[0;34m(func, input, config, run_manager, **kwargs)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[1;32m 322\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m run_manager\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/output_parsers/base.py:168\u001b[0m, in \u001b[0;36mBaseOutputParser.invoke..\u001b[0;34m(inner_input)\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[1;32m 164\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Union[\u001b[38;5;28mstr\u001b[39m, BaseMessage], config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 165\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 166\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28minput\u001b[39m, BaseMessage):\n\u001b[1;32m 167\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_with_config(\n\u001b[0;32m--> 168\u001b[0m \u001b[38;5;28;01mlambda\u001b[39;00m inner_input: \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse_result\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 169\u001b[0m \u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43mChatGeneration\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minner_input\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 170\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 171\u001b[0m \u001b[38;5;28minput\u001b[39m,\n\u001b[1;32m 172\u001b[0m config,\n\u001b[1;32m 173\u001b[0m run_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparser\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 174\u001b[0m )\n\u001b[1;32m 175\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 176\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_with_config(\n\u001b[1;32m 177\u001b[0m \u001b[38;5;28;01mlambda\u001b[39;00m inner_input: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparse_result([Generation(text\u001b[38;5;241m=\u001b[39minner_input)]),\n\u001b[1;32m 178\u001b[0m \u001b[38;5;28minput\u001b[39m,\n\u001b[1;32m 179\u001b[0m config,\n\u001b[1;32m 180\u001b[0m run_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparser\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 181\u001b[0m )\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/langchain_core/output_parsers/base.py:219\u001b[0m, in \u001b[0;36mBaseOutputParser.parse_result\u001b[0;34m(self, result, partial)\u001b[0m\n\u001b[1;32m 206\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mparse_result\u001b[39m(\u001b[38;5;28mself\u001b[39m, result: List[Generation], \u001b[38;5;241m*\u001b[39m, partial: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 207\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Parse a list of candidate model Generations into a specific format.\u001b[39;00m\n\u001b[1;32m 208\u001b[0m \n\u001b[1;32m 209\u001b[0m \u001b[38;5;124;03m The return value is parsed from only the first Generation in the result, which\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[38;5;124;03m Structured output.\u001b[39;00m\n\u001b[1;32m 218\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 219\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresult\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtext\u001b[49m\u001b[43m)\u001b[49m\n", - "Cell \u001b[0;32mIn[1], line 88\u001b[0m, in \u001b[0;36mLLMCompilerPlanParser.parse\u001b[0;34m(self, text)\u001b[0m\n\u001b[1;32m 86\u001b[0m parser \u001b[38;5;241m=\u001b[39m ActionParserFSM()\n\u001b[1;32m 87\u001b[0m graph_dict \u001b[38;5;241m=\u001b[39m {}\n\u001b[0;32m---> 88\u001b[0m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mtask\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mparser\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtext\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 89\u001b[0m \u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43mint\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mtask\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtask_index\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m \u001b[43m \u001b[49m\u001b[43mtask\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43minstantiate_task\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[43m \u001b[49m\u001b[43mtools\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtools\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 93\u001b[0m \u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43midx\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 94\u001b[0m \u001b[43m \u001b[49m\u001b[43mtool_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtask\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtool_name\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 95\u001b[0m \u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtask\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43margs\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 96\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "Cell \u001b[0;32mIn[1], line 29\u001b[0m, in \u001b[0;36mActionParserFSM.parse\u001b[0;34m(self, text)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mparse\u001b[39m(\u001b[38;5;28mself\u001b[39m, text: \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m char \u001b[38;5;129;01min\u001b[39;00m text:\n\u001b[0;32m---> 29\u001b[0m action \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprocess_char\u001b[49m\u001b[43m(\u001b[49m\u001b[43mchar\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m action:\n\u001b[1;32m 31\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m action\n", - "Cell \u001b[0;32mIn[1], line 61\u001b[0m, in \u001b[0;36mActionParserFSM.process_char\u001b[0;34m(self, char)\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCOMMENT\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m char \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m---> 61\u001b[0m action \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msave_action\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 62\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreset()\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", - "Cell \u001b[0;32mIn[1], line 69\u001b[0m, in \u001b[0;36mActionParserFSM.save_action\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 67\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msave_action\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtask_index \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maction:\n\u001b[0;32m---> 69\u001b[0m parsed_action \u001b[38;5;241m=\u001b[39m \u001b[43mjson\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloads\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43maction\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstrip\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 70\u001b[0m tool_name, args \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mnext\u001b[39m(\u001b[38;5;28miter\u001b[39m(parsed_action\u001b[38;5;241m.\u001b[39mitems()))\n\u001b[1;32m 71\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtask_index\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28mint\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtask_index),\n\u001b[1;32m 73\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtool_name\u001b[39m\u001b[38;5;124m\"\u001b[39m: tool_name,\n\u001b[1;32m 74\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124margs\u001b[39m\u001b[38;5;124m\"\u001b[39m: args,\n\u001b[1;32m 75\u001b[0m }\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/json/__init__.py:346\u001b[0m, in \u001b[0;36mloads\u001b[0;34m(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001b[0m\n\u001b[1;32m 341\u001b[0m s \u001b[38;5;241m=\u001b[39m s\u001b[38;5;241m.\u001b[39mdecode(detect_encoding(s), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msurrogatepass\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 343\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 344\u001b[0m parse_int \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m parse_float \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 345\u001b[0m parse_constant \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_pairs_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m kw):\n\u001b[0;32m--> 346\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_default_decoder\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 348\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m JSONDecoder\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/json/decoder.py:337\u001b[0m, in \u001b[0;36mJSONDecoder.decode\u001b[0;34m(self, s, _w)\u001b[0m\n\u001b[1;32m 332\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecode\u001b[39m(\u001b[38;5;28mself\u001b[39m, s, _w\u001b[38;5;241m=\u001b[39mWHITESPACE\u001b[38;5;241m.\u001b[39mmatch):\n\u001b[1;32m 333\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Return the Python representation of ``s`` (a ``str`` instance\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;124;03m containing a JSON document).\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \n\u001b[1;32m 336\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 337\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraw_decode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_w\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mend\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 338\u001b[0m end \u001b[38;5;241m=\u001b[39m _w(s, end)\u001b[38;5;241m.\u001b[39mend()\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m end \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(s):\n", - "File \u001b[0;32m~/.pyenv/versions/3.11.2/lib/python3.11/json/decoder.py:355\u001b[0m, in \u001b[0;36mJSONDecoder.raw_decode\u001b[0;34m(self, s, idx)\u001b[0m\n\u001b[1;32m 353\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscan_once(s, idx)\n\u001b[1;32m 354\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[0;32m--> 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m JSONDecodeError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExpecting value\u001b[39m\u001b[38;5;124m\"\u001b[39m, s, err\u001b[38;5;241m.\u001b[39mvalue) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m obj, end\n", - "\u001b[0;31mJSONDecodeError\u001b[0m: Expecting value: line 1 column 1 (char 0)" - ] - } - ], - "source": [ - "result = chain.invoke(\n", - " {\"input\": \"How much larger is the GDP of the UK than that of New York?\"}\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a157cd88-2e54-4525-8126-6d22affa31d7", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb b/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb new file mode 100644 index 000000000..20e0097fd --- /dev/null +++ b/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb @@ -0,0 +1,1036 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0c8b472b-f3fb-46c2-841f-930a4692697b", + "metadata": {}, + "source": [ + "# Implementing LLMCompiler using LangGraph\n", + "By Kim, et. al [🔗](https://arxiv.org/abs/2312.04511)\n", + "\n", + "LLMCompiler is an agent architecture intented on speeding up the latency of agentic tasks via fast, parallel tool execution. It has 3 main components:\n", + "\n", + "1. Planner: generate a DAG of tasks.\n", + "2. Task Fetching Unit: schedules and executes the tasks\n", + "3. Joiner: Responds to the user or triggers a second plan\n", + "\n", + "\n", + "This notebook walks through each component and shows how to wire them together using LangGraph." + ] + }, + { + "cell_type": "markdown", + "id": "1abdedbd-d81b-4ee9-b46f-f29439ed1350", + "metadata": {}, + "source": [ + "# Part 1: Planner\n", + "\n", + "\n", + "Largely adapted from [the original source code](https://github.com/SqueezeAILab/LLMCompiler/blob/main/src/llm_compiler/output_parser.py), the planner accepts the input question and generates a task list to execute.\n", + "\n", + "If it is provided with a previous plan, it is instructed to re-plan, which is useful if, upon completion of the first batch of tasks, the agent must take more actions.\n", + "\n", + "The code below composes constructs the prompt template for the planner and composes it with LLM and output parser, defined in [output_parser.py](./output_parser.py). The output parser processes a task list in the following form:\n", + "\n", + "```plaintext\n", + "1. tool_1(arg1=\"arg1\", arg2=3.5, ...)\n", + "Thought: I then want to find out Y by using tool_2\n", + "2. tool_2(arg1=\"\", arg2=\"${1}\")'\n", + "3. join()\"\n", + "```\n", + "\n", + "The \"Thought\" lines are optional. The `${#}` placeholders are variables. These are used to route tool (task) outputs to other tools." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "15dd9639-691f-4906-9012-83fd6e9ac126", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional, Sequence\n", + "\n", + "from langchain.chat_models.base import BaseChatModel\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "from langchain_core.runnables import RunnableBranch\n", + "from langchain_core.tools import BaseTool\n", + "from llm_compiler.output_parser import LLMCompilerPlanParser\n", + "\n", + "END_OF_PLAN = \"\"\n", + "\n", + "\n", + "# The required extra \"tool\"\n", + "JOIN_DESCRIPTION = (\n", + " \"join():\\n\"\n", + " \" - Collects and combines results from prior actions.\\n\"\n", + " \" - A LLM agent is called upon invoking join to either finalize the user query or wait until the plans are executed.\\n\"\n", + " \" - join should always be the last action in the plan, and will be called in two scenarios:\\n\"\n", + " \" (a) if the answer can be determined by gathering the outputs from tasks to generate the final response.\\n\"\n", + " \" (b) if the answer cannot be determined in the planning phase before you execute the plans. \"\n", + ")\n", + "\n", + "planner_prompt_tmpl_str = (\n", + " \"Given a user query, create a plan to solve it with the utmost parallelizability. \"\n", + " \"Each plan should comprise an action from the following {num_tools} types:\\n\"\n", + " \"{tool_descriptions}\"\n", + " f\"\\n{{num_toolsp1}}. {JOIN_DESCRIPTION}\"\n", + " \"Guidelines:\\n\"\n", + " \" - Each action described above contains input/output types and description.\\n\"\n", + " \" - You must strictly adhere to the input and output types for each action.\\n\"\n", + " \" - The action descriptions contain the guidelines. You MUST strictly follow those guidelines when you use the actions.\\n\"\n", + " \" - Each action in the plan should strictly be one of the above types. Follow the Python conventions for each action.\\n\"\n", + " \" - Each action MUST have a unique ID, which is strictly increasing.\\n\"\n", + " \" - Inputs for actions can either be constants or outputs from preceding actions. \"\n", + " \"In the latter case, use the format $id to denote the ID of the previous action whose output will be the input.\\n\"\n", + " f\" - Always call join as the last action in the plan. Say '{END_OF_PLAN}' after you call join\\n\"\n", + " \" - Ensure the plan maximizes parallelizability.\\n\"\n", + " \" - Only use the provided action types. If a query cannot be addressed using these, invoke the join action for the next steps.\\n\"\n", + " \" - Never introduce new actions other than the ones provided.\\n\\n\"\n", + " \"{replan}\"\n", + " \"{examples}\"\n", + ")\n", + "\n", + "\n", + "def _generate_planner_prompt(\n", + " tools: Sequence[BaseTool],\n", + " example_prompt=str,\n", + "):\n", + " tool_descriptions = \"\\n\".join(\n", + " f\"{i+1}. {tool.name}: {tool.description}\" for i, tool in enumerate(tools)\n", + " )\n", + " planner_prompt_template = ChatPromptTemplate.from_messages(\n", + " [(\"system\", planner_prompt_tmpl_str), (\"user\", \"Question: {input}{context}\")]\n", + " ).partial(\n", + " tool_descriptions=tool_descriptions,\n", + " examples=\"Here are some examples:\\n\\n\" + example_prompt\n", + " if example_prompt\n", + " else \"\",\n", + " num_tools=len(tools),\n", + " num_toolsp1=len(tools) + 1,\n", + " )\n", + "\n", + " return planner_prompt_template\n", + "\n", + "\n", + "def create_planner(\n", + " llm: BaseChatModel,\n", + " example_prompt: str,\n", + " tools: Sequence[BaseTool],\n", + " stop: Optional[list[str]] = None,\n", + "):\n", + " og_planner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", + " replan=\"\",\n", + " context=\"\",\n", + " )\n", + " replanner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", + " replan=' - You are given \"Previous Plan\" which is the plan that the previous agent created along with the execution results '\n", + " \"(given as Observation) of each plan and a general thought (given as Thought) about the executed results.\"\n", + " 'You MUST use these information to create the next plan under \"Current Plan\".\\n'\n", + " ' - When starting the Current Plan, you should start with \"Thought\" that outlines the strategy for the next plan.\\n'\n", + " \" - In the Current Plan, you should NEVER repeat the actions that are already executed in the Previous Plan.\\n\"\n", + " \" - You must continue the task index from the end of the previous one. Do not repeat task indices.\"\n", + " )\n", + " bound_llm = llm.bind(stop=stop)\n", + " return (\n", + " RunnableBranch(\n", + " ((lambda x: x.get(\"context\") is not None), replanner_prompt),\n", + " og_planner_prompt,\n", + " )\n", + " | bound_llm\n", + " | LLMCompilerPlanParser(tools=tools)\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "7feb5c82-b1a9-40ae-863a-0362fe3ce5ea", + "metadata": {}, + "source": [ + "#### Example usage\n", + "\n", + "Here's an example usage of the planner module." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3fe074ea-7314-47a7-9a9f-a8e6191ea1f3", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional\n", + "\n", + "from langchain.tools import tool\n", + "from langchain_openai import ChatOpenAI\n", + "\n", + "\n", + "@tool\n", + "def get_user_id(first_name: str, last_name: str) -> Optional[int]:\n", + " \"\"\"Query the user IDs of everyone with the provided name.\"\"\"\n", + " student_ids = {\n", + " (\"Eric\", \"Zhang\"): 1432,\n", + " (\"Sam\", \"Van Damm\"): 8523,\n", + " (\"Will\", \"Van Damm\"): 2341,\n", + " }\n", + " return student_ids.get((first_name, last_name))\n", + "\n", + "\n", + "@tool\n", + "def get_scores(class_name: str, user_id: int) -> Optional[str]:\n", + " \"\"\"Query the class registry for grades of the provided user ID.\"\"\"\n", + " return {\n", + " (\"Geology\", 1432): \"A+\",\n", + " (\"Geology\", 8523): \"A\",\n", + " (\"Geology\", 2341): \"B\",\n", + " }.get((class_name, user_id))\n", + "\n", + "\n", + "examples = (\n", + " \"Question: What's the user ID for Johnny Drop Tables?\\n\"\n", + " '1. get_user_id(first_name=\"Johnny\", \"ast_name=\"Drop Tables\")\\n'\n", + " f\"2. join(){END_OF_PLAN}\\n\"\n", + " \"###\\n\"\n", + " \"\\n\"\n", + " \"Question: What was Eric Zhang's score in Calc?\\n\"\n", + " '1. get_user_id(\"Eric\")\\n'\n", + " '2. get_scores(\"calc\", \"$1\")\\n'\n", + " f\"3. join(){END_OF_PLAN}\\n\"\n", + " \"###\\n\"\n", + " \"\\n\"\n", + ")\n", + "\n", + "planner = create_planner(\n", + " ChatOpenAI(model=\"gpt-3.5-turbo\"),\n", + " example_prompt=examples,\n", + " tools=[get_user_id, get_scores],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "55fb0f99-4e59-4e5a-b687-a90bb4d06d39", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1: {'idx': 1,\n", + " 'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: str) -> Optional[int] - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", + " 'args': {'first_name': 'Sam', 'last_name': 'Van Damm'},\n", + " 'dependencies': [],\n", + " 'thought': None},\n", + " 2: {'idx': 2,\n", + " 'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: str) -> Optional[int] - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", + " 'args': {'first_name': 'Will', 'last_name': 'Van Damm'},\n", + " 'dependencies': [],\n", + " 'thought': None},\n", + " 3: {'idx': 3,\n", + " 'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", + " 'args': {'class_name': 'Calc BC', 'user_id': '$1'},\n", + " 'dependencies': [1],\n", + " 'thought': None},\n", + " 4: {'idx': 4,\n", + " 'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", + " 'args': {'class_name': 'Calc BC', 'user_id': '$2'},\n", + " 'dependencies': [2],\n", + " 'thought': None},\n", + " 5: {'idx': 5,\n", + " 'tool': 'join',\n", + " 'args': (),\n", + " 'dependencies': [1, 2, 3, 4],\n", + " 'thought': None}}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tasks = planner.invoke(\n", + " {\"input\": \"What are the Calc BC grades for Sam and Will Van Damm?\"}\n", + ")\n", + "tasks" + ] + }, + { + "cell_type": "markdown", + "id": "5d0e795f-61ff-4553-9823-23e7624ca180", + "metadata": {}, + "source": [ + "## 2. Task Fetching Unit\n", + "\n", + "This component schedules the tasks. In the paper, it's kept separate from the \"executor\", but here we create a single DAG defined in LangChain expression language.\n", + "\n", + "The basic idea is that, given a list of dicts of the form:\n", + "\n", + "```typescript\n", + "{\n", + " tool: BaseTool,\n", + " dependencies: number[],\n", + "}\n", + "```\n", + "\n", + "1. Create a topological sort of the tasks\n", + "2. Execute them on the previous step's output, ensuring to perform variable substitution where appropriate\n", + "\n", + "If we make the assumption that the tasks generated by the LLM are already sorted, we could adapt this to execute in a purely streaming fashion." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c70a0e28-43db-4ea2-af48-8a2f310dce83", + "metadata": {}, + "outputs": [], + "source": [ + "import functools\n", + "from typing import Any, Union\n", + "\n", + "from langchain_core.runnables import (\n", + " RunnableLambda,\n", + " RunnableParallel,\n", + " RunnablePassthrough,\n", + ")\n", + "\n", + "\n", + "def _sort_tasks(data):\n", + " if not data:\n", + " return []\n", + " sorted_tasks = []\n", + " # Remove tasks already completed\n", + " min_idx = min([int(k) for k in data])\n", + " data = {\n", + " int(k): {\n", + " **v,\n", + " \"dependencies\": [dep for dep in v[\"dependencies\"] if dep >= min_idx],\n", + " }\n", + " for k, v in data.items()\n", + " }\n", + " while data:\n", + " no_deps = {k: v for k, v in data.items() if not v[\"dependencies\"]}\n", + " if not no_deps:\n", + " raise ValueError(\"We seem to have run into a circular dependency.\")\n", + "\n", + " sorted_tasks.append(no_deps)\n", + " data = {\n", + " k: {\n", + " **v,\n", + " \"dependencies\": [d for d in v[\"dependencies\"] if d not in no_deps],\n", + " }\n", + " for k, v in data.items()\n", + " if k not in no_deps\n", + " }\n", + " return sorted_tasks\n", + "\n", + "\n", + "def _resolve_arg(x: dict, arg: Union[str, Any]):\n", + " if isinstance(arg, str) and arg.startswith(\"$\"):\n", + " try:\n", + " return x[f\"task_{arg[1:]}\"]\n", + " except:\n", + " if arg.endswith(\".output\"):\n", + " return x[f\"task_{arg[1:-7]}\"]\n", + " raise\n", + " else:\n", + " return arg\n", + "\n", + "\n", + "def _execute_task(x, task):\n", + " tool_to_use = task[\"tool\"]\n", + " args = task[\"args\"]\n", + " if isinstance(args, str):\n", + " resolved_args = _resolve_arg(x, args)\n", + " elif isinstance(args, dict):\n", + " resolved_args = {key: _resolve_arg(x, val) for key, val in args.items()}\n", + " else:\n", + " # This will likely fail\n", + " resolved_args = args\n", + " try:\n", + " return tool_to_use.invoke(resolved_args)\n", + " except Exception as e:\n", + " return (\n", + " f\"ERROR(Failed to call tool {tool_to_use} with args {tool_to_use}.\"\n", + " + f\" Args resolved to {resolved_args}. Error: {repr(e)})\"\n", + " )\n", + "\n", + "\n", + "def construct_dag(tasks):\n", + " sorted_tasks = _sort_tasks(tasks)\n", + " chain = None\n", + " for idx, task_group in enumerate(sorted_tasks):\n", + " if len(task_group) == 1 and next(iter(task_group.values()))[\"tool\"] == \"join\":\n", + " step = lambda x: {\"join\": x}\n", + " else:\n", + " # Cascade all results forward\n", + " constructor = (\n", + " RunnableParallel if chain is None else RunnablePassthrough.assign\n", + " )\n", + " task_dict = {}\n", + " for idx, task in task_group.items():\n", + " task_dict[f\"task_{idx}\"] = RunnableLambda(\n", + " functools.partial(_execute_task, task=task)\n", + " ).with_config(run_name=f\"task_{idx}\")\n", + "\n", + " step = constructor(**task_dict).with_config(run_name=f\"TaskGroup{idx}\")\n", + " if chain is None:\n", + " chain = step\n", + " else:\n", + " chain |= step\n", + "\n", + " if chain is not None:\n", + " return chain | RunnablePassthrough.assign(tasks=lambda _: tasks)\n", + " return chain" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "87f11cea-3a8d-479c-8a9e-81223dbbc1f5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " +------------------------------+ \n", + " | ParallelInput | \n", + " +------------------------------+ \n", + " *** *** \n", + " ** ** \n", + " ** ** \n", + " +-------------+ +-------------+ \n", + " | Lambda(...) | | Lambda(...) | \n", + " +-------------+ +-------------+ \n", + " *** *** \n", + " ** ** \n", + " ** ** \n", + " +-------------------------------+ \n", + " | ParallelOutput | \n", + " +-------------------------------+ \n", + " * \n", + " * \n", + " * \n", + " +------------------------------+ \n", + " | ParallelInput | \n", + " +------------------------------+ \n", + " ***** * ***** \n", + " ***** * ***** \n", + " *** * *** \n", + "+-------------+ +-------------+ +-------------+ \n", + "| Lambda(...) | | Lambda(...) | | Passthrough | \n", + "+-------------+***** +-------------+ *****+-------------+ \n", + " ***** * ***** \n", + " ***** * ***** \n", + " *** * *** \n", + " +-------------------------------+ \n", + " | ParallelOutput | \n", + " +-------------------------------+ \n", + " * \n", + " * \n", + " * \n", + " +-------------------------------+ \n", + " | Lambda(lambda x: {'join': x}) | \n", + " +-------------------------------+ \n", + " * \n", + " * \n", + " * \n", + " +----------------------+ \n", + " | ParallelInput | \n", + " +----------------------+ \n", + " *** *** \n", + " *** *** \n", + " ** ** \n", + " +-------------------------+ +-------------+ \n", + " | Lambda(lambda _: tasks) | | Passthrough | \n", + " +-------------------------+ +-------------+ \n", + " *** *** \n", + " *** *** \n", + " ** ** \n", + " +-----------------------+ \n", + " | ParallelOutput | \n", + " +-----------------------+ \n" + ] + } + ], + "source": [ + "graph = construct_dag(tasks)\n", + "graph.get_graph().print_ascii()" + ] + }, + { + "cell_type": "markdown", + "id": "9efa15ae-817a-48c6-86ed-16bc112fedc5", + "metadata": {}, + "source": [ + "#### Example Plan\n", + "\n", + "We still haven't introduced any cycles in our computation graph, so this is all easily expressed in LCEL." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "133d124a-0d41-4c6d-a86a-34fa4cb1430f", + "metadata": {}, + "outputs": [], + "source": [ + "chain = planner | construct_dag" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "55142257-2674-4a47-988e-0d2810917329", + "metadata": {}, + "outputs": [], + "source": [ + "example_question = \"Did Sam Van Damm score higher than Eric Zhang in Geology?\"\n", + "task_results = chain.invoke({\"input\": example_question})\n", + "# task_results[\"join\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9996d98f-0e73-471f-baa8-d8b72d10c7cf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'join': {'task_1': 8523,\n", + " 'task_2': 1432,\n", + " 'task_3': \"ERROR(Failed to call tool name='get_scores' description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.' args_schema= func= with args name='get_scores' description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.' args_schema= func=. Args resolved to {}. Error: ValidationError(model='get_scoresSchemaSchema', errors=[{'loc': ('class_name',), 'msg': 'field required', 'type': 'value_error.missing'}, {'loc': ('user_id',), 'msg': 'field required', 'type': 'value_error.missing'}]))\",\n", + " 'task_4': \"ERROR(Failed to call tool name='get_scores' description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.' args_schema= func= with args name='get_scores' description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.' args_schema= func=. Args resolved to {}. Error: ValidationError(model='get_scoresSchemaSchema', errors=[{'loc': ('class_name',), 'msg': 'field required', 'type': 'value_error.missing'}, {'loc': ('user_id',), 'msg': 'field required', 'type': 'value_error.missing'}]))\"},\n", + " 'tasks': {1: {'idx': 1,\n", + " 'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: str) -> Optional[int] - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", + " 'args': {'first_name': 'Sam', 'last_name': 'Van Damm'},\n", + " 'dependencies': [],\n", + " 'thought': None},\n", + " 2: {'idx': 2,\n", + " 'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: str) -> Optional[int] - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", + " 'args': {'first_name': 'Eric', 'last_name': 'Zhang'},\n", + " 'dependencies': [],\n", + " 'thought': None},\n", + " 3: {'idx': 3,\n", + " 'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", + " 'args': {},\n", + " 'dependencies': [],\n", + " 'thought': None},\n", + " 4: {'idx': 4,\n", + " 'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", + " 'args': {},\n", + " 'dependencies': [],\n", + " 'thought': None},\n", + " 5: {'idx': 5,\n", + " 'tool': 'join',\n", + " 'args': (),\n", + " 'dependencies': [1, 2, 3, 4],\n", + " 'thought': None}}}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "task_results" + ] + }, + { + "cell_type": "markdown", + "id": "563d5311-55f0-4ca1-afbd-01fd970cf3e3", + "metadata": {}, + "source": [ + "## 3. \"Joiner\" \n", + "\n", + "So now we have the planning and initial execution done. We need a component to process these outputs and either:\n", + "\n", + "1. Respond with the correct answer.\n", + "2. Loop with a new plan.\n", + "\n", + "The paper refers to this as the \"joiner\". It's another LLM call, defined below:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2978991e-45a4-44e6-9deb-f941f44fe93a", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.output_parsers import StrOutputParser\n", + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "def format_task(task, idx):\n", + " tool = task[\"tool\"]\n", + " tool_name = tool if isinstance(tool, str) else tool.name # Handle join()\n", + " args = \", \".join([f\"{k}={v}\" for k, v in task[\"args\"].items()])\n", + " return f\"{idx}. {tool_name}({args})\"\n", + "\n", + "\n", + "def format_tasks(executor_output: dict):\n", + " tasks = executor_output[\"tasks\"]\n", + " prior_observations = executor_output.get(\"observations\")\n", + " joined_output = executor_output[\"join\"]\n", + " execution_results = []\n", + " for idx, task in tasks.items():\n", + " observation_idx = f\"task_{idx}\"\n", + " if observation_idx in joined_output:\n", + " observation = joined_output[observation_idx]\n", + " execution_results.append(f\"{format_task(task, idx)}\\n\\t=> {observation}\")\n", + " joined_results = \"\\n\".join(execution_results)\n", + " result = f\"Executed plan results:\\n{joined_results}\"\n", + " if prior_observations:\n", + " result += f\"\\nPrevious Results:\\n{prior_observations}\"\n", + " return result\n", + "\n", + "\n", + "def _parse_joiner_output(raw_answer: str) -> str:\n", + " thought, answer, is_replan = \"\", \"\", False # default values\n", + " raw_answers = raw_answer.split(\"\\n\")\n", + " for ans in raw_answers:\n", + " if ans.startswith(\"Action:\"):\n", + " answer = ans[ans.find(\"(\") + 1 : ans.find(\")\")]\n", + " is_replan = JOINER_REPLAN in ans\n", + " elif ans.startswith(\"Thought:\"):\n", + " thought = ans.split(\"Thought:\")[1].strip()\n", + " if is_replan:\n", + " return {\"thought\": thought, \"context\": answer}\n", + " else:\n", + " return {\"thought\": thought, \"answer\": answer}" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b2feea5a-e0e4-4cff-8cb5-fdbfec95ba57", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.prompts import ChatPromptTemplate\n", + "\n", + "\n", + "def create_joiner(prompt, llm):\n", + " return (\n", + " (\n", + " lambda x: {\n", + " **x[\"plan\"],\n", + " \"input\": x[\"input\"],\n", + " \"context\": x.get(\"context\"),\n", + " \"observations\": x.get(\"observations\"),\n", + " }\n", + " )\n", + " | RunnablePassthrough.assign(scratchpad=format_tasks)\n", + " | ChatPromptTemplate.from_messages([(\"system\", prompt), (\"user\", \"{input}\")])\n", + " | llm\n", + " | StrOutputParser()\n", + " | _parse_joiner_output\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "942dab42-ad42-4ba2-90d5-49edbe4fae68", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'thought': 'The initial plan failed to get the scores for Sam Van Damm and Eric Zhang in Geology. In order to provide a final answer, I need these scores.',\n", + " 'context': \"We need to execute get_scores with class_name set to 'Geology' and user_id set to the respective IDs for Sam Van Damm (8523\"}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "JOINER_FINISH = \"Finish\"\n", + "JOINER_REPLAN = \"Replan\"\n", + "\n", + "system_prompt = (\n", + " \"Solve a question answering task. Here are some guidelines:\\n\"\n", + " \" - In the Assistant Scratchpad, you will be given results of a plan you have executed to answer the user's question.\\n\"\n", + " \" - Thought needs to reason about the question based on the Observations in 1-2 sentences.\\n\"\n", + " \" - Ignore irrelevant action results.\\n\"\n", + " \" - If the required information is present, give a concise but complete and helpful answer to the user's question.\\n\"\n", + " \" - If you are unable to give a satisfactory finishing answer, replan to get the required information.\"\n", + " \" Respond in the following format:\\n\\n\"\n", + " \"Thought: \\n\"\n", + " \"Action: \\n\"\n", + " \"Available actions:\\n\"\n", + " f\" (1) {JOINER_FINISH}(the final answer to return to the user): returns the answer and finishes the task.\\n\"\n", + " f\" (2) {JOINER_REPLAN}(the reasoning and other information that will help you plan again. Can be a line of any length): instructs why we must replan\\n\\n\"\n", + " \" Examples:\\n\"\n", + " \"Question: How many users are currently using the new product?\\n\"\n", + " \"...task returns the number 32,000\\n\"\n", + " \"Thought: I find no issue with the original plan, and the results satisfy everything in the user question.\\n\"\n", + " f\"Action: {JOINER_FINISH}(32,000 users currently use the new product)\\n###\\n\"\n", + " \"Question: How much cooler is it in NY than SF?\\n\"\n", + " \"...task results show SF is 57 degrees fahrenheit today, and they show in NY it has a high of 32 degrees fahrenheit \\n\"\n", + " \"Thought: I can answer by synthesizing the results.\\n\"\n", + " f\"Action: {JOINER_FINISH}(NY is 25 degrees cooler than SF today, as it has a high of 32 degrees Fahrenheit today, whereas in SF, it is 57 degrees Fahrenheit.)\\n###\\n\"\n", + " \"Question: Are the gophers beating the rabbits??\\n\"\n", + " \"...task returns the a score of 7 for rabbits but no other value...\\n\"\n", + " \"Thought: I need the gophers' score to make a final decision.\\n\"\n", + " f\"Action: {JOINER_REPLAN}(The rabbits have a score of 7, but I need the gophers' score.)\"\n", + " \"\\n\\nAssistant Scratchpad:\\n{scratchpad}\"\n", + ")\n", + "\n", + "\n", + "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-4\"))\n", + "joiner.invoke({\"plan\": task_results, \"input\": example_question})" + ] + }, + { + "cell_type": "markdown", + "id": "b099e5ee-2c23-47d9-9387-0f64e02627d3", + "metadata": {}, + "source": [ + "## Compose using LangGraph\n", + "\n", + "Now we have all the required pieces! Let's construct an LLMCompiler agent. We'll give it a search engine (Tavily) and a simple \"calculate\" function." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "565b08d2-d19c-4125-97f7-996fc01bc631", + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "os.environ[\"TAVILY_API_KEY\"] = (\n", + " os.environ.get(\"TAVILY_API_KEY\")\n", + " if \"TAVILY_API_KEY\" in os.environ\n", + " else getpass.getpass(\"Tavily API Key:\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "bd84ca4b-eacb-471d-9975-5449047b5bed", + "metadata": {}, + "outputs": [], + "source": [ + "from operator import add, mul, sub, truediv\n", + "from typing import Literal\n", + "\n", + "from langchain_community.agent_toolkits import GmailToolkit\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain_core.tools import tool\n", + "\n", + "\n", + "@tool\n", + "def calculate(\n", + " arg1: float,\n", + " arg2: float,\n", + " op: Union[Literal[\"+\"], Literal[\"-\"], Literal[\"*\"], Literal[\"/\"]],\n", + "):\n", + " \"\"\"Calculate a mathematical operation on two arguments.\"\"\"\n", + " resolved_op = {\"+\": add, \"-\": sub, \"*\": mul, \"/\": truediv}\n", + " return resolved_op[op](arg1, arg2)\n", + "\n", + "\n", + "tools = [TavilySearchResults(max_results=1), calculate]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "70566dff-d66e-4c8c-aed3-980522d175c2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4.0" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calculate.invoke(dict(arg1=1, arg2=3, op=\"+\"))" + ] + }, + { + "cell_type": "markdown", + "id": "0ad5d62b-5898-4b9f-808f-c03620c2fe7a", + "metadata": {}, + "source": [ + "#### Defining the stateful graph\n", + "\n", + "We'll define the agent as a stateful graph, with the main nodes being:\n", + "\n", + "1. Plan and execute (the DAG from the first step above)\n", + "2. Join: determine if we should finish or replan\n", + "3. Recontextualize: update the graph state based on the output from the joiner\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c5869ec6-b07f-4fb0-92a7-e6521f0c0bdd", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict\n", + "\n", + "MAX_ITERATIONS = 5\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " input: str\n", + " plan: Dict\n", + " agent_output: Dict\n", + " observations: Dict\n", + " num_iterations: int # Maximum\n", + " context: str # Exra commentary for the joiner\n", + " stop_reason: str\n", + "\n", + "\n", + "def recontextualize(state):\n", + " # Insert a context string for the re-planner.\n", + " # This could alternatively call an LLM to provide additional logic\n", + " context = state[\"agent_output\"][\"context\"]\n", + " num_iterations = int(state.get(\"num_iterations\") or 1) + 1\n", + " formatted_tasks = format_tasks(state[\"plan\"])\n", + " context_str = f\"\\n\\nPrevious Plan:\\n{formatted_tasks}\\n\" f\"{context}\"\n", + " observations = state[\"observations\"] or {}\n", + " for task, observation in state[\"plan\"][\"join\"].items():\n", + " observations[task] = observation\n", + " return {\n", + " \"context\": context_str,\n", + " \"num_iterations\": num_iterations,\n", + " \"observations\": observations,\n", + " }\n", + "\n", + "\n", + "def add_stop_reason(state: GraphState):\n", + " # Helpful for letting the user know why the agent responded the way it did\n", + " num_iterations = int(state.get(\"num_iterations\") or 0)\n", + " if num_iterations >= MAX_ITERATIONS:\n", + " return {\"stop_reason\": \"end_max_iter\"}\n", + " if state[\"agent_output\"].get(\"answer\"):\n", + " return {\"stop_reason\": \"answer\"}\n", + " return {\"stop_reason\": None}" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "768b5f11-e3d2-47be-8143-a7dcd8765243", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "from langchain_core.tools import BaseTool\n", + "from langgraph.graph import END, StateGraph\n", + "\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# 1. Define vertices\n", + "\n", + "planner = create_planner(\n", + " llm=ChatOpenAI(model=\"gpt-4-1106-preview\"),\n", + " # Add more examples to improve reliability\n", + " example_prompt=(\n", + " \"Question: What's the capital of Myanmar?\\n\"\n", + " '1. tavily_search_results_json(query=\"Capital of Myanmar)\\n'\n", + " f\"2. join(){END_OF_PLAN}\\n\"\n", + " \"###\\n\"\n", + " \"\\n\"\n", + " ),\n", + " tools=tools,\n", + ")\n", + "\n", + "plan_and_execute = planner | construct_dag\n", + "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-4-1106-preview\"))\n", + "\n", + "\n", + "# Assign each node to a state variable to update\n", + "workflow.add_node(\"plan_and_execute\", RunnablePassthrough.assign(plan=plan_and_execute))\n", + "workflow.add_node(\"join\", RunnablePassthrough.assign(agent_output=joiner))\n", + "workflow.add_node(\"recontextualize\", recontextualize)\n", + "workflow.add_node(\"provide_stop_reason\", add_stop_reason)\n", + "\n", + "\n", + "## Define edges\n", + "\n", + "workflow.add_edge(\"plan_and_execute\", \"join\")\n", + "workflow.add_edge(\"recontextualize\", \"plan_and_execute\")\n", + "workflow.add_edge(\"join\", \"provide_stop_reason\")\n", + "\n", + "### This condition determines looping logic\n", + "\n", + "\n", + "def should_continue(state):\n", + " if state[\"stop_reason\"] is None:\n", + " return \"continue\"\n", + " return \"end\"\n", + "\n", + "\n", + "workflow.add_conditional_edges(\n", + " start_key=\"provide_stop_reason\",\n", + " # Next, we pass in the function that will determine which node is called next.\n", + " condition=should_continue,\n", + " conditional_edge_mapping={\n", + " # If it generates context, we must replan\n", + " \"continue\": \"recontextualize\",\n", + " # Otherwise we finish.\n", + " \"end\": END,\n", + " },\n", + ")\n", + "workflow.set_entry_point(\"plan_and_execute\")\n", + "chain = workflow.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "9f8c9849-8531-463d-a0ef-dcc3d9888b2d", + "metadata": {}, + "source": [ + "## Simple question\n", + "\n", + "Let's ask a simple question of the agent." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "5bc4584a-e31c-4065-805e-76a6db30676a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "In 2022, the real GDP of New York was about 1.56 trillion U.S. dollars.\n" + ] + } + ], + "source": [ + "result = chain.invoke({\"input\": \"What's the GDP of New York?\"})\n", + "print(result[\"agent_output\"][\"answer\"])" + ] + }, + { + "cell_type": "markdown", + "id": "33c65ef5-b4b2-4ab2-8c78-a551da7819b9", + "metadata": {}, + "source": [ + "## Multi-hop question" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "0b3a0916-d8ca-4092-b91c-d9e2b05259d8", + "metadata": {}, + "outputs": [], + "source": [ + "result = chain.invoke(\n", + " {\n", + " \"input\": \"What's the oldest parrot alive, and how much longer is that than the average?\"\n", + " },\n", + " {\n", + " \"recursion_limit\": 100,\n", + " },\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "6c65c414-7668-4fdf-ba97-f42f659b1317", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cookie, a cockatoo, was the oldest parrot alive, having reached the age of 83, which is 23 years longer than the maximum average lifespan of a cockatoo in captivity, which is 60 years.\n" + ] + } + ], + "source": [ + "print(result[\"agent_output\"][\"answer\"])" + ] + }, + { + "cell_type": "markdown", + "id": "1b859bc7-1a85-4d35-b57b-f67c87282403", + "metadata": {}, + "source": [ + "## Streaming" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "38d3ea91-59ba-4267-8060-ed75bbc840c6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Step: {'plan_and...\n", + "Step: {'join': {...\n", + "Step: {'provide_...\n", + "Step: {'recontex...\n", + "Step: {'plan_and...\n", + "Step: {'join': {...\n", + "Step: {'provide_...\n", + "Step: {'__end__'...\n", + "3307.0\n" + ] + } + ], + "source": [ + "last_step = None\n", + "for step in chain.stream({\"input\": \"What's ((3*(4+5)/0.5)+3245) + 8?\"}):\n", + " print(\"Step: \", str(step)[:10] + \"...\")\n", + " last_step = step\n", + "print(\"***\")\n", + "print(last_step[\"__end__\"][\"agent_output\"][\"answer\"])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/advanced_agents/llm_compiler/output_parser.py b/examples/advanced_agents/llm_compiler/output_parser.py new file mode 100644 index 000000000..e8590bb17 --- /dev/null +++ b/examples/advanced_agents/llm_compiler/output_parser.py @@ -0,0 +1,154 @@ +import re +from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple, Union +import ast + +from langchain_core.exceptions import OutputParserException +from langchain_core.messages import BaseMessage +from langchain_core.output_parsers import BaseOutputParser +from langchain_core.tools import BaseTool + +THOUGHT_PATTERN = r"Thought: ([^\n]*)" +ACTION_PATTERN = r"\n*(\d+)\. (\w+)\((.*)\)(\s*#\w+\n)?" +# $1 or ${1} -> 1 +ID_PATTERN = r"\$\{?(\d+)\}?" +END_OF_PLAN = "" + + +### Helper functions + + +def _ast_parse(arg: str) -> Any: + try: + return ast.literal_eval(arg) + except: # noqa + return arg + + +def _parse_llm_compiler_action_args(args: str, tool: Union[str, BaseTool]) -> list[Any]: + """Parse arguments from a string.""" + if args == "": + return () + if isinstance(tool, str): + return () + extracted_args = {} + tool_key = None + prev_idx = None + for key in tool.args.keys(): + # Split if present + if f"{key}=" in args: + idx = args.index(f"{key}=") + if prev_idx is not None: + # print(tool_key, flush=True) + # breakpoint() + extracted_args[tool_key] = _ast_parse( + args[prev_idx:idx].strip().rstrip(",") + ) + args = args.split(f"{key}=", 1)[1] + tool_key = key + prev_idx = 0 + if prev_idx is not None: + extracted_args[tool_key] = _ast_parse( + args[prev_idx:].strip().rstrip(",").rstrip(")") + ) + return extracted_args + + +def default_dependency_rule(idx, args: str): + matches = re.findall(ID_PATTERN, args) + numbers = [int(match) for match in matches] + return idx in numbers + + +def _get_dependencies_from_graph( + idx: int, tool_name: str, args: Dict[str, Any] +) -> dict[str, list[str]]: + """Get dependencies from a graph.""" + if tool_name == "join": + return list(range(1, idx)) + return [i for i in range(1, idx) if default_dependency_rule(i, str(args))] + + +def instantiate_task( + tools: Sequence[BaseTool], + idx: int, + tool_name: str, + args: Union[str, Any], + thought: Optional[str] = None, +) -> dict: + if tool_name == "join": + tool = "join" + else: + try: + tool = tools[[tool.name for tool in tools].index(tool_name)] + except ValueError as e: + raise OutputParserException(f"Tool {tool_name} not found.") from e + tool_args = _parse_llm_compiler_action_args(args, tool) + dependencies = _get_dependencies_from_graph(idx, tool_name, tool_args) + + return dict( + idx=idx, + tool=tool, + args=tool_args, + dependencies=dependencies, + thought=thought, + ) + + +class LLMCompilerPlanParser(BaseOutputParser[dict], extra="allow"): + """Planning output parser.""" + + tools: List[BaseTool] + + def _transform(self, input: Iterator[Union[str, BaseMessage]]) -> Iterator[dict]: + texts = [] + thought = None + for chunk in input: + # Assume input is str. TODO: support vision/other formats + text = chunk if isinstance(chunk, str) else str(chunk.content) + for task, thought in self.ingest_token(text, texts, thought): + yield {task["idx"]: task} + # Final possible task + if texts: + task, _ = self._parse_task("".join(texts), thought) + if task: + yield {task["idx"]: task} + + def parse(self, text: str): + task_dict = {} + for task in self._transform([text]): + task_dict.update(task) + return task_dict + + def ingest_token( + self, token: str, buffer: List[str], thought: Optional[str] + ) -> Iterator[Tuple[Optional[dict], str]]: + buffer.append(token) + if "\n" in token: + buffer_ = "".join(buffer).split("\n") + suffix = buffer_[-1] + for line in buffer_[:-1]: + task, thought = self._parse_task(line, thought) + if task: + yield task, thought + buffer.clear() + buffer.append(suffix) + + def _parse_task(self, line: str, thought: Optional[str] = None): + task = None + if match := re.match(THOUGHT_PATTERN, line): + # Optionally, action can be preceded by a thought + thought = match.group(1) + elif match := re.match(ACTION_PATTERN, line): + # if action is parsed, return the task, and clear the buffer + idx, tool_name, args, _ = match.groups() + idx = int(idx) + task = instantiate_task( + tools=self.tools, + idx=idx, + tool_name=tool_name, + args=args, + thought=thought, + ) + thought = None + # Else it is just dropped + return task, thought From 85aa4fb4f74772513b8341668445aa494bf1c178 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Tue, 16 Jan 2024 20:40:33 -0800 Subject: [PATCH 005/108] Add img --- .../llm_compiler/LLMCompiler.ipynb | 41 +++++++++++++++--- .../llm_compiler/img/diagram.png | Bin 0 -> 253693 bytes 2 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 examples/advanced_agents/llm_compiler/img/diagram.png diff --git a/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb b/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb index 20e0097fd..d42edc13f 100644 --- a/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb +++ b/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb @@ -15,7 +15,26 @@ "3. Joiner: Responds to the user or triggers a second plan\n", "\n", "\n", - "This notebook walks through each component and shows how to wire them together using LangGraph." + "![diagram](./img/diagram.png)\n", + "\n", + "\n", + "This notebook walks through each component and shows how to wire them together using LangGraph. First, we will set up LangSmith for tracing, and configure our environment variables." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "abbd6948-e9a3-47ca-89c7-7ac2fc5eca8b", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import getpass\n", + "\n", + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "os.environ[\"LANGCHAIN_PROJECT\"] = \"LLMCompiler\"\n", + "os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass(\"LangSmith API Key: \")\n", + "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"OpenAI API Key: \")" ] }, { @@ -47,7 +66,19 @@ "execution_count": 1, "id": "15dd9639-691f-4906-9012-83fd6e9ac126", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'llm_compiler'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 7\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain_core\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrunnables\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m RunnableBranch\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain_core\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtools\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m BaseTool\n\u001b[0;32m----> 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mllm_compiler\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01moutput_parser\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m LLMCompilerPlanParser\n\u001b[1;32m 9\u001b[0m END_OF_PLAN \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# The required extra \"tool\"\u001b[39;00m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'llm_compiler'" + ] + } + ], "source": [ "from typing import Optional, Sequence\n", "\n", @@ -55,7 +86,8 @@ "from langchain_core.prompts import ChatPromptTemplate\n", "from langchain_core.runnables import RunnableBranch\n", "from langchain_core.tools import BaseTool\n", - "from llm_compiler.output_parser import LLMCompilerPlanParser\n", + "\n", + "from output_parser import LLMCompilerPlanParser\n", "\n", "END_OF_PLAN = \"\"\n", "\n", @@ -707,9 +739,6 @@ "metadata": {}, "outputs": [], "source": [ - "import getpass\n", - "import os\n", - "\n", "os.environ[\"TAVILY_API_KEY\"] = (\n", " os.environ.get(\"TAVILY_API_KEY\")\n", " if \"TAVILY_API_KEY\" in os.environ\n", diff --git a/examples/advanced_agents/llm_compiler/img/diagram.png b/examples/advanced_agents/llm_compiler/img/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..01655a5ec4d11637ee426679e46d68773d6e2832 GIT binary patch literal 253693 zcmeEugFVmL+O_xEYp*6qK~5YEL?6l8->l9J$vdT5w#FSuRrr!g^%AHH{pLK*vRw9Gan3=z+; zA;wJz+&mPR9K&DnLPZb+j$U0g@&;nSc&Q(Ee1U-qWLa>N^49Qw3p;}qOWuJ3=2Z5k z19R$nU-YL?}Z$ zeIoK|)F}HQ_3IT!|0#tm1BWdV-8vZE#N)?%DK_Jhuh?qftHrRSho})VNWlUmWl2<*U z!3xJ)gx?I%JFNUtmHpro;R4Ud^{Bfsg4M6hqh*4XJB4>%KR1v5A}|=$z1s7RFJk?9 zdE|9T1sq8hf3{j=R0JwB?z<4-w@Nr2rkFhI8yx|3?r-qHWf=(W&qp{l@9{9ZkVPq= zLGFc2B3L9jr;Po*WQmN`T+-b^N-KBpn#gIv*9P>w#k`)J_`AV^9a1D?Pkx365hSAM zV-jS>@=VZUzUZX0=MO}IS-~;1&gbNKvlX6zY$Ni%k+7rq%I~PB%t;AaCj#WoE24w> zHMJX?v1i@?JN0o}j5ks%g0~lRW@(nMBsnqCtP8Qra#T7Mft5Ghdl+ad1s30DU)K02 zojxIoEy)MMk$W2Jcr~g+fhZpA164^#1^pXq6!<9-dHpysKKkl7(MN@2p@~Vu$df<2 z6}MwB=Z&>wFfYIN9KT`cA-=OMR==~7a)hCCW7zwWj zI`|Mbj^?OTaPbHmyidD!b3%WZ#?}rbZ5?=;v!}DEDU?`N%G24_Vv*klrG^5wJrrZg*_t}kQ*q5 z>TYHXo}5h3xN?LYwzwPUzk!8H!G?u}6>qkEO9eHx0ZsPMzQ{%V^42aF%Icm;o|Z<% zs&-e<%M#iCGII;o&;Z?h$t}^F=MdqZ9Oq* z{&S=t!IcP{=V(7fMFVl-y!%9YB5=E1-lHgm?uwv4%ZWgd;IScg4m>3<`7BTEpPxRH z`^3~QOf-%f1x*}#=*ajbHzB?7MuzlIl`(ETagn%uTFel!G1WE9UKdoh&(^!_SlG^v zDGk=>V6Xv}Ii6Z@l%c8y{RG^>30ood&UgM5(ZsOVR*1DeB1fW$0rH(j%OOW+mvW6y zE!#?#F^>3eiM`)2J)gpEL?Zb{ApG(zDD9(y+>{)rC?{-67Q;6l%Fnsdl`madjhOvn zWfSFeWab15pCv!9#wNqQk$nDz|3~sqk>HoslJJ>WBitj95#$k7CHyT|O+RyChnI+7 zm48s$FxMqEhPWlVMcsb7jY}6Q%XCsqr*Z3H?NRDsm%?6S$qG4+%a^RmzE;4_ogS+j zs~XeVCfw%RCdS3ZeT^$0rGcB)LlRX*>#90Xz^ihVo1bNx)1yY3L#wKrUN3T%xot7d z!AjI0ye==Dg*y~Ily8z_f?-THwrLt>O2XDWV_pTSa;YjXWgMs3j^2KChP*Ady|#@w z##nG+s=!*vIz^-ts!4=P6u`#Kdd;>KpTU~JcEXBpwm;ICI$b0-Qa%D2SuyLMoXNM> z+F>TmNEn^Ad+Pqwo%jy5Njf3dqNsm(V1i+EA!9y!J|`n{H^^*(Q1gQiOz`$iTwzILMI55 z*tgjx*v>fy*!93}bG2O`AuDE-teRk(Z$G(20@~jFWSL;mB5=?4&rZu$8l}&+$WG}m z?8oX4?%(d)Pf+fUTPIvE=u7Coc_s6TlKz9nn8sXLrUnar#j8n;3z2rn%kckE0b!TP&(XL%nZuMP9TjAXK=xh7EKx$E89-cr(PQ*VQ7<(YBYrbPzX zP3)DGd-bK=HH+J*8^?{qb=S7eS|eIVTC2&6Qae)5gfM*ieO~*T`P>N431}TWm8b5owT@|Ah({ufeG5dq`2;Bubxj)$Seb#tqE@LjX zJ6fw~{d#5K`{*iF=RvS%3}!?r>oO!=Hl4MMOOnq-N6CKV=4b0q+#gAXZ^GiZ)|G;V zf|;_Iqax!Y>-nlY&4;GO4I4V^Lg@${Z5z)n^Hv#Um|`P%mZwC|g64t{N03Z@m^6$u zTV>R#&fVL|xqw~B!uz$`UE3};N>(nA+~DZo23g!#)ZW_}UB55x+x>CeOFOuYTkf~x zS5hug!2xa=3>ujJ{5m2bQ9DL_K)RRb)d<#Fpw>%5`FQR;U2{f;CysLG@r^DvDbIDv z`N)2dr7UWsqIv$*&SD?Y&%{7+N1+1=$VkT9804?343ABiIE>=Sx~k#moX*<0aa+2a zppFvS8u2Fnh_3_VvCz4zotU3YpBOpzBga+PGT1`~<`zSeg4JbsQnq zq_@|vw-?rUlJPDq%!IE2r-gXNc!JGBC4 z={G3S)jbW~R+Aq&{v zn;%Y(ZfI=CC0=lOp88Dswd2R(6EoE5=UdvF@troz9t6zH&2BTg>OdM-oU`)W?QV_= zJk;fNQ5qf2xi_w}h!r_zEMG1(jx!f$oZvmEUF^-xmh9s!T)8<8@O^634bua~NK1n>>C z{_{8N7k?;3;D1=a_s3M2zph5`Plf&K81^yKff7;{k(2~}D;wH?!4O+xOS>QZiI4X| zwvy1ag@VF+@%Rlbsr3913JPY*L`B0+Lso{{(9(k8?R(32UhZbPF zx8zP1<`7$MCqBwQuHXiaA5Sw`VU}$H1)wwzV|3 zf1E>Ah>0CP3oqk8o&N7un*VOb&&J7)J|G{7 z5?IUoF219eU;Ezs|B(4|l{82-mynR4-7M+d@#2{mh_;2ZP*Z-`8ha4PIUzn!miphFcmRnC{c?GYIU&i{*7&&wyj zTTK-la;C`O5>VI2-}U%h$g5QWOJVx?Z&r~!A{gjU=}2`s_P6%)90`*^3Whd8^mmq{ zqzH6K+e}M>{o5YlfVGws1b_YQQqzKf4!^7W84CZd$1mi-TK}JMA!YubasA6tMf{&} z{jpyF&()K?B4qu0e_D^SJ5}~ekmpXD9@i)8oeW73@ltLqRSdE7w z+$SW|@2;vEVZU=i9hiamQ$c0p=hl=XNpRBwNhu{*L=L1@eg{WlL8i3ClS7{oulWYd4M6q;gsx8!zsH9RmhKJxb0!@4Z@T{&S4LFHd3bo{ymRR$?O*VqJw~-u zD>xj??S-ZW`<;pYo@iN!Qz?2Xo>3ijDnX*BF2j1HY_q~~_{g2h=(^w1w z8x?_AT%$jqI#Y_b{$k}6HesH<`BchxF;_8E(~AH^FmD;W!xt;JT-P__`KlFKRi>I- zBUyJMV(h9fH_!KG_bwJaYuL;trq*Kg_gR8`5K~uWSUE)vsHwYn|8cemDTgYIJ!=v9d?aF7E+ctK<*xvt1=Hql3_oxpDK%{$FNkeV}P)*8p%n64&c znfV_l=+Cg1iUjWlCDAa}*g`{~k}VS#i3D;+Cmmf5AcN@E+gXR)mR)!GZmh(J$^Re- z##`q9$LIT(MZa$pw8MNs@Ln?NRhkB)kBUKojRIq~u}sS%!UZ#5*i1D3e9tUVV?3TV93 zQV~vm*KZljus0T&jN~NHHtijJz^&o%hKxaXFO%4>1G)DnTqFbuH$jO}J3?jZ68tx9 z6iL#DbGNoW8*&ES1;1~KgM{!V9hM4|{a)&11Is;(Tfj1c%P4`SglOZ@LVg8cC7&EZ zV_WE)&{D*h$Zq`f6>K{>+mJNqmi~Qj*oQ)2mV&NQBYH}}S}0*0IPMVcgYsdNx_@*e zkNrn9!)#y9*IFBL8j_d1R@}-fEPU15fqvXLkks{BpPT?^#O-jsw-{IS?eT8Zd24~K z#c^Sjb;|vi>b%7Pd(|qx$8}Lkm;3#Kg_(BEM3qJNaM23CKn z-u|z~xkZ;McL2DHX<*k_+??+rCrLE9ob66%TUG%+>t!WB9YsVKOq*B4x?}c79SC$% zYN*efBN!3Tt2I285yN`fxQY=3vT@pd2cMge;OLcK?SP1E7-Dww(f~4# zsh9G}iHC$^g_@%bjfcW8BFr5)f*NJ-{4A!+zw>FO3BwmC=g56x(~Jy;ak+cPM$c$m zJ#<$h`T?1yf=aKKepVd%8N3_LWze|W(B>f2@CN%%-hG)`uYKHr^=!2TS2;8?>RL~y z?=O~E@EVC)ntE6!ZAtSAOSui)mw*D=Yr0rCpS5hM8#uc@+nKF287&07(qZOjFBqXV zZJ`Q392})9PB!?D$wV{mIXE^bBqr@`cP9KLXNIJo2H37GVZ75clwOJa!jxG=Q-RP> z_o0r}VrGnp)i{E}NV_(t%;U~QyV6+EDdS|lzd|;F{RsgmBy+KE;5`cbpo5XGaGS;V z1a0^??=5bx5jHot{fk%kYb8X|6~P03D+>ARmr zHCW8m4(F?vK!EUB5k|_>d3M~j6kep1CADljRc~M5ez_cQes{5`-QcjdyX1=zc5{8X z$8;wxc#z=}Mt?e~_HHngfTLHfX#U+~Vts&Wp~A~^sqd94DYEXxcSeVr8YNvH5;5g^88mF4)gZvHOUheW4WJ;bm~~%H4XCL^dX>=7@uvA zSMa-EPqo~iF*fX$_wMFqgq6=b%=V*m{ls)V>F0RHLP*JuS$}eK&@xNvIQMpMwx%YU zUVCOMCk2A9YxgcD^A;u zB*%K&ap&#ChpRzPf3oK5?SdlH@q9?jvfo33$wXnCt4uguH+F&hVH@H;!Old{j*kJp zj+M8r^>)PNGE;VEsItWm>ZcBFK2aP98{|&uW1;`T^f4vS zyo+@k>Y+Xf5P=tT9Ovx;e4^9REo)i3jG$d@uIV(LD&$+JR;0Cj!`OV8PU>;F%Ng**4S%OwcZ{#*S@YsZ!inE)|^grX@UYW*23I;x#KitRazaO;w`72jem7k$5C` z!YNgU#!qP0TD`q2Tk4Y+xceC<(iPOT8>KwGF}Yc!|9K8pS) z&qbBZVQjnnhnKI&3zlRtE(_xhrCu0xrc~4friiG+Fma0gY7dRV7&O8g}U171txl|ZEIcPZGZ`dhrDAcL5$xaQ2VQHpG*vKy^207N!?MP_yfKqew zB4?kv?!E=Er2{lUl#sIE_ZTTZvw_EqwcD~+l@Y$cNP}eZGPH%F zHJ}rhPL6p>lU^QAB5`+ZGd!Ibe1cVyM ztJLuV^;ubt`S&35t8Brz0ne$@w;qZeD&7=iI7(I~tzOW@c8ed8vEN14hd8k~CVHXT zpTxcXVNiGavAPc8aJ(xZO}{^%?NGe)Vn-;c!4aTgUV*DaegQKwy}W#$)PFbanVYV+ zH{&GFu*ca|Tv`XvE_(QU#uqTK|1-|^=Xu`gkbtjq=MpSu1_2A+=T5DX@lJm7>`g7R zpPhcvXv0BsLz3fy^KxrMG@Vrz>a$Rk%=2$3j30d|>PyO8R9s}IC7Y{E$9qC6GRQ-G z_m_{uWb6@G&8AxmttOh|q$^D63uNyT8iJpmveL5VrUhsUl%Vv&uyW)Y5#Nkzn z=tb=OMvUA?P5r#L%@?tOTzQG&11t>4Bln6tFvWCw0KxwpqCNX^P|IXqi|XlI-9uDe zHglklEa4lGFbJ+rmgv{RuUhG zXRWy@pZ78}?5-Tl0BeiIoUH)3t|GAzyydRDPvyQova3)QGnF)r-A33~@F0mQv&n%) zGNrX`f!tt2O)^0Kxl&*z{qLa*x4} zeNjcH??QiV?hQl9$|>}qQ4=(?T1kBn$9*K&43B1EyL?VVno)AD)fEwxvs`+!Tn zr|?dfw&Vr_EE|je3QZZwFG$61C}{W(kI*94C>=FX!yAFV;by;K4_G(mC=X@j51$8Z zhVK9mFcQT!+Gt7Ud0UoZKMIUw2FUV=%VZpV+Fs17S4VV`D2-kU1M$-KCv|o^HkY?1lTELj;>k(YOF9p(LT!A z5#=Fn%GIA)LVc!1KqNF%k?PWRDb5yM0sx%;HNa(2NL4SoEk*^N?p)p(`mxPdTWE8ZuGPd%GH;yKE~1Z~;te?o56kwx9K7ar zvHm0~jfwGW@mX{lLp-OG2H zg***=)d^P{K%`^qq7`_!t+3x7qv<*p#k<6^4=U6ivX8vOP6{nIpDwRW(5`_b(Z%8G zq9+P`v?|ZKq$=F2W4f@!O&Oi-~s&;56#k!#PtwL!|nrZWf&15wDn(d!#Yfx zW6JVXiyk-hg~Mfr;tBljE}ROd?HB^JEVe`;-8D_;GrhpxclVqOePIVA{2vdfSTeB8 zfhDswB)U4Il8H4CC$aw6lCZIf^SiixYPyXD*Mq9H-k1Qg0@VUFC%xAPO&59{t6JxM zuLonR3@4gCRY5+W-jaSi#`GY;C?fpA7`pSA6Ivim||TGZ^H%sLYm4K)`2i z!G-~OT|Rn2+qSEuDK}wxwCD&k*K1;j2Rhq%*;SM)Je@8^=?PY+eSo;n>T~$T;&|g= zDv%3L^BqAzc5uB#G+)=#0-gqQ9z(+-XncJsyPF=uU=zoD--b)4Hl-}jw|1bF!tX8v zUUnOu;sKDLp6L2#PZ?$KiH`laYWAm81D^ZKRbNNhE~jNb{CKI-t86d%8p!QWnvH?m&Qwm z8Vee15#=9^-a za^s|<)vnntGEWjc-PMiTlaz-_7I4oL|IMx;0LfE&zYT-7-+QbCQSBz$4wSK5%*2+v zvwF6paeVZZP4T?1%R^1VAll;UIlQ{RInb>h2G&kT;U@qv&<~Ui@%av0Vc9+J-D+e8 zhpor+l)K<_Pf1dQBBP?fvo)3&0_vL5GoDO=nSI%1hF$fxQ;p6Q+Ugq_c&Nd3@ZO#( zPmA4e&YwW1G8=Z*o=o!FH}h-fi3FfK0FN^Rz{ziMGyt|>qgRKLo)!lz2$b@5QTAY= z$@V?*RaY!tv6tTKhkE??y*<~8R^repIsOiVw%A%-0#vm&>4THDK7%P|D(^e>tP-62 z5e1&X`5%w0SpRC?eBmQ0es;|&Mu-TJgWE5&WeDKK$8e|#`Q4m2nKHqEuXTuH#-@_9 zGlYG_Lkk`^7B?#)jDTJ75zUY2Y^?HEw8Rf}Jf@O0VfH21RWZS|p1a5~IT5fI3fV7DRp`~d_ zg>fke!0XDllCW-w%YfbT*_nWkyeV(Sv1C5Vr3z_KRhFG*d2eD>MX z6UWoWN2&qH{`Oe{aqLFR4Mv-NHb|Ndmg@U9a3XRz&XkLyv>h}Cig5O^;6Db_QRBGp zX9+8&3$!QtxrUklLD~NAq$^ls>1rdT#v2x~zRBb6Y_ix*{RtUNgETZWxHY#=D_yq* zR7wq%+1i~h7Ge%0LD@Ac2L%Glg62RHx=^*5mSE9M9y0N8=-Xb3V51Mxp8A;csX^gWN_Hv=;9 zlTZ)R^o!m*f!FmvQ!m1La<1}H7URgZXGa&UI<9EoYbr`43zckWjdGdWPwVP{P=Y<< z*V#C7BYt2HBZB<74C@~wPaY#sMLg4g7KRB8_l0f=Ha#A}R~Up!Voctd(V|ajFrya1d`7V}fi;mEago-;!*XHrN7I`qBz{>=O zOsoKS3xJLc>rbh8%q+r6D7!xW3IqWqi7PAxgZF^NA&0l%TCRRIDysZZq2B3Qs}Lh_ zxUEyu(Dovp z;TgM{3HV;MkvfDy-C5cKPvc*(Qh#(HSdT)Dl>Um440ZSlF2=+Iz_Mxpj}&N+#dXj$ zJH`&)ulfVVI;t#kI!Bt@}0?O+h1H2>rKJ+CP@RMgJHbZsM47%KI z#oV4SB6@)||G0SndY1QzUOp7}>+*7I<2WQemXEle=Wb$9*GghA6n*J(&!o;r0`&5` zDXmzH#Kh<7Cw(fxRYgv{c45s|Csa&7#bSRWb`X4n0_XdTm;+K-4(|1TZE|e80z$ts zPjT{2oAVK#QD?fLo@hS16)g{Y$EV&KNuOzZIxWoYxY$i_j3x8CbvK0bX~XQl!Ls$Z z0{D-|f)PCTqEDnl$iinBnIERy9BfGi0{Q~_+?qV#hTqP)BFd$pgjEYa^-4}p=5(dW zSFn*0qIz$jbJEuV`dIp(gW6OQ2Gq~=KFGoR0^L5!4Q#Lv+deO;tWB^KZ6*3_Y;N2+ zWBvce@C*(IRq;gVvxYKw%zUwV9z6NJLoz^4I8K;5M`K!e0Z;^FH_jyfuBP~tcFFfy z+ZN#6`@?^H-TA6~E0p9r@WKh=!SA#Q_H~RE|KINKkE)H5q@a59VBBk}jN(oC7mF(V z(T|=M@YV5=BDVlFx)*C0_M`g<`~@Z&ni%lL1#G5c-JRiNmZ8KP15bFTOW*qTmeXjn z^R>SOw$W=(bbbOH%lKrYSZGUOIp}|$sAD_@&CF3bp8oZLBr|YNTa90)OH z079*@LqXpAMU`Pt5719L8|TA@Z{K>Sd1B>WkGHD-YgNXg>o({-?s!I8TL z=bx@x`$ydclOmNU3xLVV#IcMk(0|oJ1hr6dA=eq<{HEe$?si%!h=_kH(g=DyGIUmA z%51W@dVB5 zXliOQY_3ew^yGz!d*=f-IdjnR@N~gGjs>hE2rS#}7-E3W#`Xp>s^3-YACj$Z=~RFX zWpK>}T!nK{&+4B&M5MzA+?{@%e;!dK-9&HXtuxAOO8mbERMK74 zJB(H}U*nO(RQO=zn7wzEDsQC?s=Zv}C&;`pjlWLl+#8d4kxyF(UpJZ%RzrJd$=PikBll7Vnz1Pu4hDTDO}*bl<@V3sj)m| zUGbvgpMwQoSuNz*zhmf-F7>!61ULYC0doMbl@qaj#M9N+KP#Cur$EfBs{t-2I{XV&qj7Od|8J}vOHykh}p=Vk6aIjo5Z!4xHoOE z;VG70-Ccsq&U3on!F#61hzW39Teo1yW=x)iKlyclATNT)W6&|SY&whH(c$|UAyNoz zmf{ZO#)08V{%KZDCwu>buR7CgK>Aw_q=5t17YCNI@vM@*84o*{G4$FWN?PvgX*kD# zlE2whX&M*|uDh7lH)B>;fpO8#o157lFVKZ@I^7)Jx1R(TU{>y&ogFgw2%_U%1<;6CyQ7$-&-tf4-oel+PgR;I->fHC?gBvC z9=uj>w}pis{k%F#U{Z-(Oo+5fLkRbw7UNb_{*1S!Z_q4%z2;`4spTGRziZI!aWwEb zo)&9^t7n75$4hQjO~A(eU&VPr3Q(bDMQ65r%09P{%E+6uO;uYRQZ+;pD=$*F!?tRG zqig{C)oQc*{R_MWVJl2$Td#I%-d&#|gR(XYN)7~p!wPkM_wjikX~Zc2Di*;{_fi6~ zj`VPFM*R4?NNiDs(s10Xxa~HVdTwN6ncBd}?51P6g5vpJ!5AwYD8-ld>Ar%)7xqvd z+Rmh(7S*ltujcjTdU!&%@C%xWBzB*3m4{YwE_K8_-cTO)&>|6M+aM80ZEvi)NPao=0Ug0?$Ag7)fal(4 z4ZtY9{6yv{;L@(OKRK+z(Ne7c)GbVZeG-`;Pbb^ib5XvkIORh5!EHWVZ=EcJ;{_9r zygyJ~`XMAZ}#Tkh;BEXiTnn9jau*lhI}S zA9%={+8Zb||A-1u&Wj9TsPDFWVSb31q_3-xw%pHjF#RTaGk9C56+gb zmV=z(-n+ZGY#wVOu4E|#YD8p|{}9W1`=H1qaRZ5mk_jgmO0`gfdA;*ALw*fXxd2o( z-ht3fbSVE?+n@U6*QU3(mfl7ku7DgQI=yR82z9+mv z^tp98ioWT(V_j(W=|y3YN7wmp-P`-hRzOB&0YKYg96ygp08IANsu%AT3-;}Fuz3v4 zRG9(gLx>tshi_Elh*HYat|>-&36$HJ2hTMB1K$SA3$|d4rTZp$0Q#=zLVN7#nh6S~ z$XuMAzXf(L!A_K1oo;|2c&sF|yPlhK=y`ioj^`@2M}3?Hz{h;85P*n-Owz~#Xm!(C zmDJSKguOEXKowVA1MbDUXpANPK=C(pf|MC4XlF&mt$@QjwQ27gE;hJfG{3p=(j}!; zAzi63;7?5Thj|jxmzs{#-fU)s?*i;_6%ZO`;7wFkWCad^)ak=xjA;V4v%~FCmv)QC zola@DFEwUlQj$f>-FX7Ne)Al=<$^g1J_9STK1EvNC3v>^7G@E1k9B)ih9`f)(?3>q zM4ntvkV>zWdf{5kdL7O`SUAr8KQ@RIiaB86dY*Uo0MkFK!?aPm8dd>|!8;UsmqBLZ zd3zM_=mhoLj>KXVE8n&w@az;;%yH3No&eyYz6;>Z&0l}$vuaD@SachGtX|fHItg6k z$c)&kcobVMHajDHRwDZB`*(-pO#*Y|f$~$M3<)2TfL7St;a}eR&-uxtN*%ETh{tlO zWT$Uv)UH=+F|%IKu;!Dxj`lAW>^eZ`RTi@oS~U=hM|qx6vU4ZAbtDBKQDJ>7j_EMv z0;Py*AOP13jsUpA0$_$1Dslnxec9q_kETH4#m-~O1eB^A21hyH{Lgy^sfTb5Qzf=9 zXHUs$G;(0iYwB_DNr|yzH)g4n*R}7?`HI}zgI`2ZSPUk#D$F$7k#PQH z0Sb07+qX~o-D>Ie8mB@N$^nJN)QcFM74G4Xed;M}m>*9b#X?P|Bhu$UNS$i+h6QAj zauopN65W+izj{pOA|)#w_Ou==>ANG+jP`5m0O0|h0kBb;gUNjJE;Z#zN9`<~=(Qmj|aMkUMsD4Z;0+$p!psf)9#9br82IA)*5{?&Z_GZQC zPIwoH8tluTq3@Y%N`{WVpXG5(GV*;>RF$*gW=X|CpR!?HCQJ)5ukm}$UlyKyYru2N z*?1h~Q0C#eW7(j>kkl2=b8%SCcyHK6>KuMn2lj7r(o9I2B^YF|0hI7!as%jpx;FAS z7$QzRAyl-L;_Na$0D49#K#7o60oj@zY*!3}?hK%k*@py?lyLh4yUlU*-hGsPtS)g8 z6$;E~T!<~}KH7T9jj@=w8?(Wt8tu!gQcSBhdJYIy=a{#hR;y@~v!?(v#q_xJ!`CYX za?wR#Dsl8WQDL@dQ<=S0&WnJ+Uwo=sD_WuI8PDpD}CYm({YAAN#jng@mR~*Zv zfAK4VZr&Ee>a&K9s1-&p2QW%1`CJPursFNZJ<&Bb;D_sh`Pz2Ei8C)m^NV0ldK7^? zOrvs<7P>j7z}XWJ4bF<(w8}EbeDMQza>FD8(bWe|rb!p zE!iTW0N+CSn{JdO(1llDwb8>>^Gr4Uxn=*i1+rN>9q*O}X1|7ctO~Y8LqK2;L-5I21Cj5S#IyR&2XG!C+6wi_u?D0&K zt4>!DiyEkdT47E5>UeE0^Q)ZA>~SwvTo^!0Kw9n`M!Cc|NHctdw>Kd(m3gGr9Zx1& zJUuTQSzL7YpG5#{VRErv)6ApT3bapsLRFJJ7z)Etq*Yb^7!pHK>;OfJmLCY0GC6xN zv6DzCLThLHz-AQSh`@GlLt!SsoirTKKOtWG zOIn@TC^#L=wzrb-v^*oa1dVKmiZQ&DC*^X;1%u=Re&X2odsNt{a@sWX+iTn}#5f=_ zxYt|s3iXMk9urJvQzwO12F6Dm2h-ym^OjXJPc1m^7q`@!c2n|=GD_A%fU9I=Bx2ue5;>brFKY zG)zDqR5_d>-e99Jyp#XT2@oScN~+g1DWw*9p1K_h-3)r(V>b~x>Q5tsh}NQ~vF}9T zt1Ayg=oF*Nf5y z9+cFI-J(^I!FcM__&iRP7QLMcL9_PNT#=zT^{o9pMyen%rFxkS_={EoLzi_$Dm9$c zG=!d~K4EdT@3=+7PXR%zio3s1zNNhga>ZG46J`#mjzTS_YNyLZBn`nLab{8ZDpgXN zYr+TdiL!){9pS969FT=~QY?UP65e#z=r8Yy`BBFrJ)#EieTgx0NfJO2s`9~Kihnbo zUsouX4hDOVB)CEo@0piiFj6kIL{^lYa_dFiMzXEAS`9?kaoi11Z0lqT0(G+@p!N`H zEBSdcv|W%q3jQ7V=jEy@Vi`*?y1=bf3-!8+CW>X_(VM=mN`<6JTE-ZOuBt_eQj#S7 z=vg}emlVrHvxLr6q1-3-?`iV-3todZ-#vjh#o1Iu7I#N?AEH{&+^Wd+D&Y@#)RC0U ze0d?QbH!;P-KGQYhjTeRr2~|d?HB1Hqc){QXotoCnH-RIOo@TecPx7V*~(URN{WG1 znD1NYKf_q2cPqMfnL+TpZ5NWO*@%jEt(_k@2IM}NyV!kx;F_q*WfxdwsX)KNt9E~= z-*6V~DzYPArmt35wwFbxao0(|>(wq-M#mt~6+gN1ZW5^!%f+a7JH`Ce*KvBZM6Oix zBxcHAVeKTJZD%HV-eop|&R^>RB1`$coa0qBqGjFmoA8GryjPl#glfO?wH@}#u$!|A zPd};WWJ4Y?v2B@wp;lD%zdM~4VM!f*}%|*-J52}fh^?-K9{$a)3>GxI ztQ1H-N--V$Sv&BuFH9ayszC&|1n!b*>IDG%nZSs~I?(zcC4eVWFWt<`Nw!g60}AU4 z?B-KU>a=gv;ZL~a`zK>EgvrO@PIZM=11}v`Lpf&N29QSYEJgq|+Ue%|YqJNO0w71; z3~pmvzVTxo1yqnRL8&c4wAwi`#=3CWsN^)Sw|r0-N^2He=svs@eM^EkD@d*icluB- z)lTE80i6U$2fv~7oetFoqCba?B7)#0niCGHw#|D4hm;O#h?Y zD^QLE?YQv~=6M^aTIxJXQtPo)?9g*A8xq<@$c3Qom#FEi1`@gUACbK}x|H`b`^bD> z311mA!OchEQa|v%3D@MnJe*^{DWGa^gW1MZix7u4V(TyX6nP)rVMe4c+D5d96FJd( z<~JP)?>s8Y;m46Dw~vhda!TO-2qOl1nQUlL_>NR18y3x527kzjAE@{@&fE0TLlVi{ z7bnFGhGkP?0Fli!pjg@EX9Sj%x$$&*g7aNZ`KZy|BaFlUqU(0_onh#;$E_0}Xc&}9 zp@R>w6N>93Q)ZGH9Nmxsn^(C3GCoL64@v#mgtl%_L&YHf>}kWtMY7?Nzex3NIPX37 zt1Y_S@8O=6a^j2TjC?kq*@}|ZwX~V`jFu5Fw!i`0v%{eo!Yw1wYu9(wOC^+ zi(V76;PlOZP86gwQtPQ>WIV0?#p;qC&rK z=%{{bzAu+HydYSkZ2f51jw0qe@)NLE}l7J0RL9W{v68R8-goo zIM)!|f~|v+o-5i0Vf>$Vn?n@5*&_fe|Fg%|ge32=NW2Sz-#^o(R|B-daVYzA-6dWg zKw)9tv}ei*D5U62H!pfV%s0IRko%%8m3!fyDC6kWmJekV;+P*iH-1y`_Rzs}h0*Eu z^38RND52I&i;ilwiUoid_8)LaLwvAvQaoIeR~7v@dSud&s53SqM9{4t9hmDN_-NB! zVd>4Zr)dvoGOu$voxme0H{)@$X9Q%{6_471CJ$QJ=?rmNx%WppmDoT9c6Hs?WA??ZHP_t3@eE zjr~-gYRd2cwZd^B_Pw^ScUq(P+SqH8yjO>l`td6KJ;MC#cd?VML4 z@*cw(dN>oCS5cFSgW_k(G`s{vJLcUH6wI)MhMk{+y777nc6HvS$OCV#%sbI+d#Q~c z<@2g}#P_UH$%>Jzxj8R)Qd2Em8<12dm8sU8BQ%mg-y&F~WmUtgc z5L_q$^EddPDqmz|p{oqTxH?0{c{%is|N2`1t9Xa0vYaI?Y>A=ML2AL2+5bz2mT3KXjni>|@NMVc-1 zv?baG(w@48nrzn^71_AYCK*-RfI>!FPpH%2`k*Gx6~Tp6bnAK4`41zMz8(&cyM8|x zgF?{^TA@eM_WA0uzQuS?Rdta|HND1ZNEEH|cdcqjoFPftjBdTgjudz|0A66KWY$4r z^&yJwm1b_7ef0|lrc5%sdPlM`fcuh;20R-;YED}v4b%_ zk@B!NN~~qNT*KsGuDdZIl?R)1g7kS;iOFwwEZ2cFcpX z2YFYe7K?x!j1gUaT(iVlC-Nv0DniQkD%%k0X+X8>G&rVChJx(&c*iu~f<{DTqj1U7 zPB~R_T5`KvT}`<$dshh@Z+r*n{Mg=AEuFAF0Ff--N33mi?8N8d8G9>`(`^1fzTPsR z%C1`%76he1X`~V9lPAO5EMR!RF0@AI7ba!``bboXCyw5&o?{m)g(_D*r z&pGB8SKZY|v(+WH{k!CqP(4=jJ5Rg9o%_OAr<7gx(ObD>drx#a(n6sE>5-kcEdUw2 zyceP@fk?UbP$t$P4+Un@n4s?%{Q!=Vncp!K2Y>@|JM9%yR{6dKy>_jJd3t-QUy#egNAL;J6J#1h$Br@2c#m}izwy~tE6UuJ`A z8VS2t^SUzMrmrTV#wB&8hJnszt>8fYeIk!~h3?>a$$05|Y!TdMYZN^`5xRO%=E|#< z)U7L6v1zr^rMX3)nDjwvX|a1lTc%9sYKHCN_J=R$&R=n87mZGoIzrN}g-mFtzFTUU z(DR;onf%I}`T^0MN8vtAI|@hPuGk(^#E{$&C~LW~bUV-F5mfCG{#dW?xs%V$W1f>a z1a&sGB?>EFMDu)c#{Mo1TZHwc>{#tuYGJ%x6bh`p&Z1BAxtQrT3D|Ba+t=7C9|{{` zWrt9xsDH5oxRSj|@%WC8s$4e)if*BI!jPxr86M#K_jvkUVj>=Jb{iAW18KgOS>v^$ zoA6P4z2RZTnokTA?(IF6BU-r8DIIiO(kky}i;RPn1P{+-UKY{B44m?<9j`1#l+lW9 zuDhD?neqc_^Zcm+PKGIQF@Z7NJ{Ojl%7*x&ynYfBA`5GL$hWb*QkM7Q0p*c5?s98G zV$X}>rLgEEaqV8wGwH%yTX|=LeK_U`=F$cPF%#4YEO({v?_l`hU#r2&Zy;jtk9eu! zzw|q@%d5Fki6OOh( z(hG#XN;B-`7kIf7gE5^9O& zrlxOPipgK#6ZYy~Hr`jT%vJ7A)o4?`$yu&ubm zPvZ0e!DKTvwMv9k3wAe6DLL~a8qaT+n?hrS^mh%j8tLo}qiK%uJ)>rg2ziwp_ePDco(0n2%I7=tb1Ou=+WDCz$@5Oe8&c<80De|l4vJC zigRxl`x0YqqAgm?uc>yuo{GBBAjXJ|^OW(i;oDnI=?a3vxcDi(R zzq0#X{*_&Dx`qMY*A&q#bO{kY_^es1U4~x)1dugeO&dqmvpOT8ZPXksJ23yNtLUUqY_V0DtI`+u zvKhI&==o#g>fZeOa5mG_&$6|A!Sc3dY0grO-e#_Zt-{lVcBUy`#rh%ed@{#px$!LW zJo~8EK+Cnrax!11YL%PpB833fWLL9xuyHoh4rjXY=-#M1ZGt?9Z{DtNGg$g%S&ikn zS16-tF(DF0GP|YXl^q-o_d|qiqs4GYLU1B<1ZA=z6AE~!m0M) z-1CoMKN468rHAk4WkX33T6k=Fhk}J;0!^_klR%d=GUUca?l zg17oXt%MXc=erCxJ;Sqqc5qJ_vz9Y(_ zLXWj{-*cw4Pg7{06w_w`Wox}GD?HbEi!x417m+of9Fcc-@4vaM!3%sen+6tU+%V;W zA%K|7pJHz-O+1BXt}X|4o3n+SP{_=2Giu{8na&TR^rGm4$bE*3z9uQxrQcgN#=%{#cT3MT zHxw0YHwezZnbls@c-+7Ax=G%$>AZP_a4)uWn#y@k91;r-SRS^764l$Cj&lh|<|M)O z&SgJxEx4Ba=*)QKn=F@7)ejJ4B@r6o8q;eLug%3d>-OT|qnLol?+Yb~6{8z;T1SAr z80D?BnXk&VJ{+C6Fe{&Q)u~vPY4q(tu3;!?A@bXQNN5dQ>vX=^=THdvjp3Y8@^uR7 zMyZ_S07~UNFQYqPBXvBBdOYKyi^PF}Q`D1m+LdHON)7B_XlP@~*UBgjXRw%o1BtGc0-wnx+P9$zqci+>m~ zM=2oY_pCb!yt~;Ix@>1}rS~ju`wYw6UO*oW46Jqj2?k{-WHa06N?xFUz7w_eoOkFB zeyZR89IFnALoX}upuU~nk+6wKy|lx*{<(`(H)*s_rPk0bP{{PsRzH^c&NY;i#tXc<`C=uT z1Lg4HzZyX*PKS*Dm8NzwD0ZO{csHK=9Z7m!clI5G1($2rHfw8Mq!`$AjWbzKj@n#Y zS{+r!U6vf6{csN6b-n1soxQ46sKPyZW$7g7*Ew4|KTuPqZ8RpL)pzPkXN4QlwAjG$ zHD1@DwX(DMadu&_=2XFZuIv^2qCC-Y+(F}zzIt>2o7CF{)l{B)iM`|6zJo4gv^#_A zpOurh>rMx06-;v!n8dXdkypJ9uI9!N*V5{vmJFk@E&7TKswL~MXHtuH6RQ`r7Pmvc z+oFBLESM)LBDsD}q=E5BZ=#&;`YiV|)XRib%_F zKS&%zapo;hwG&ub|6=)jqzqC*t;HP~g{M=`4q@Sl_t; zWifw*>QiveJ?bTw>0`1*V_tOWU@K>AzvGm1S;1(j@_2UF%1HbCGv9^od;r895nNivfcVh^n z&H`iWEnan0&8Hs^sMWfPgDS@#92N##Pt~ZjBHEJFA-lCmsQJSaJU}*x`*6 zbqM}v3~CzKUNq(7X-l}v~)dY1DY={G&VcU~hIY^X>znTfkxtqvQr+fRrGF`Uu zFg#uF@>tDzle?Bx`xeW;7k>}tw#Uzj3zO{xosxwdv%*u~ocp^qa-9~-bh-nz)|Er` zTF-sfU+g->MhY!8nGA@K9KCAWD#$m*PJ*D8sPW2`Wd6{KuQ#j5djj?4lO@qOYu1a zl>euu4FH~%sSLjd54ZF0JkG%U#E6U4uoCiW)fEYQqN0KX{2gK#h$t^`69IVnzMS`o z%eW;W27DagKM4e=ArZ>{Z<6J@9l^w1hi2`9QwuD)2XDF1l!Y(Kzl8KLBI|v^A(&#B zKJ$^iJt5lMEgWR{{N`$2H7Uxabk}~WQ^JGY#BG=?Gf~-7pzN|jVCaD}ly!}*B|+b* zc}lH8`xKaWodcBNowaMM@gE4Us?<4RdYdf>=}g*b!p6ajA9jvK>Iu>k4gkMvzlM6f zwaGEDHIgWLmf1W%x%F@SjpT~}<&AH`aq8JRM%}rFig5`C^z9RvbJSKQAkwcyt+k?& z($O)$H@?<0LOaOzQ|SQD4lUICFtM(F4KXYj24Mv;W#y>d5l>((=!XmBUU5qP=+(3= zC3AVg3Bq?Gyb`*;c4kxfx5*>u`kYT39tEPanWvFOyviYsvAao)nd0L2T?mv{gWdbn zhy3W+o@n69O-`NX;14y@?9J7dvzrf-65?sRi)W=D&8K;i$7X4}KS=3k7yGO|O z4kcggR9U*UTMfrywc`_GQdKuGD1t*8Qrvo2qd*pA?;7o!NbPk6xV>s%7X&j75I-DL zegR2FtE@o+k9SU9yG38;k8t7D)wG#;qH|davD(y%xbGK7oScwlckRMiXR+{QP1U2&)mlGj=r> zG6#PW&j(`yQ|LS&2#-A9Q*x@lVdtY_D#c^QEqFQa^q@MgYO8{tj!4-kq}g?soq~87gbh zwMck*Y3cYA@Bxmnw3Md+XPA?sO8-C$?*u|ZpyqwK{4`(}QLKc+x>DliCcz6A@Phmt zu=2mz-pcFsS;8mc%h2@ON}$(@wWldvt_k z_4XH^rGakrJeS2^mE#XshuV+m0@LuGSft?-KYa8wb9|t}X-4Y&FHInQ!lU$2cikW4|Ke z*8Yj-eQv6B5Dmqy za+@_|Q7xn}^4wguJ`ynoeBF-*rRfMHYiI(^?E8)#YEjiCnF;Pk=)87fM6SLpFO6*8 zp9wYXMeLkH6BdBz{BUs&3Fn(Z>ms}zL^zM7UY_qnOobyVMPLs2aOc(^_Fe6gZzCO`QsV?f>)G!khL2v|^N+cUHB7GqPjD?5bsGCgiRPeQ zv0%quv3;O(EGbX~0_Ay*)JdQs+3aQ?~u7y+x&pB4M|^2p$~j)~L1z_)Hz({D7R2L^s~`lq$_W zaPREmd0C}4zt@E`(G=1%3lwsQp-gu{q!-|qPGVr;EPF|nL;awcDsOs#PEa?YCym=l zS3RER2I3+jLjnWutr}ps{yV0|``QtAAKEv`8jJ6^OdUl+JKeL#x(AN!>dC!w(hArP zU|h_jJ1w~MoGR0^0Yd=Vb8jqN^_r2Orvm_-!=1?uvGds?pi{WT!TssCaep_126 z3NH@ToQ>6}r2t7Cq~J0eRvk&VI9~5fVvGunfKP1>nZHn;KWsM}oOH4O!_w)}gmkem zPdaD08c(zKj$3K+9e>?-{fHlEC`Gz~&nz;4tmkxCsJDS23fi9LrTFvM5W6qKXo!F| zq{ShCOpm)<*$H67)cOH{D#y8c;(YGwo6_?2>|kyR^&N?KMi;sTAl&VhW(R=qWanZ% zPGJ_;!25-OtBL+Lj`gnO)RM4IluTlQb;Mr){sY{QLO_t=r~2jV?N9_ktf;$kdpRklzCGVBSkPfP()5DqV^&E^MXZIgC9s)@)}bfTh%0 z23L&(elX>XzmtRz?9C$=QPr5tE|}${^W9XMcN()Qdo6azvX0Jg77ts0eeG7l9a1W= zF_dJg>~(7b4Xykka1>R%713Bv%p(!%JWY6C4r-esjLYo2^O#(jZhRSD3-ILF04dN) z$tUCny$qmXjDaPn%>|kU#7F9J!;_XBB*1~}?%p<~v^Y`IwQ)iclyUqsN-AAOD7$`S zWaOghN4(7$)U7U7E13mKN20eMzXQ$cWT6tp)J!f)Jiz-lZtX(4ZjuH4TKbGe(97Sz zqX=1~VYxWc%}EJ1xB=`r%vc>`9jfsHrta~Gft)YMe%OXUX{7gV94IdKYO+t&6vh2; zU647rfpvC@zie&73csXByE~V}!V#kKoiH&{DS*r6qQptB8@IePAz{xO$S3!Gg|_)I z<`XW;T?8Jkj5Qu)wu(mGk!Ww6#(8GVfc$9Q7n^T;p|KVxG*w^FMncP)htni_SXtB% zYN+@#-ixGsk=lhmYK3p@>2tm~o}{uHMD*753;&oyqUz zD#c?mhz-<|zz&0n+q0?oURVlq`0@EotBzJR?ToaH4~$P{YPovgJHavpf%=}*9^E##$xM0=RsCy^R^+wOOJxVk7_%NOV^G>PM|xF#J&Ca>Bl3wqi=0VmHf_!yrq#Km72(h%+`$roqcduvG^>Ww+t_RzGL%|KYJkNuui%q zL?Pyzmgm`deaR^_r(~#f#J=#atMqsaUh}5xE9-E>G6fMV8s)W%$_BjNbT$itN;BvT z+w`sqkOxz+j>#KU1-oUr1@v^!mxeWKZ;0gjbVzNUiuPiqa5?1M#^e*s?wV&op}Hc* ztVpSd&jlqX zUoz7zJ`ro^-zrKtlW(LryCn2}=%RxZbvwOM=n)hwUmLN4Or22YQpYIk_s)j9HH~y< zPl>JdY$yE2V`<-_b6;-hkt)??MM^w~N$FYxNN<2fctzot$~ve1M-nY0g)w{;b;EcK zOyv!q9gOt0RbCP*-xHqeNi4-UzgKHQURT~BbZ*aVxh?VZFNpsvpARSw;}N$T;2o-C z;a6KtPN)^yY0{8tW>@tT&&P6hDJVmmFl@VSMq)Z245tuz5)ezCB`>Y#P&U{JNbSjp z7mCV*>8E0UjhIk{4~6oK(Qe)_`n?!W%$Z*u&)fKj&8o>e4;s9ZeNp&A63=b2%cp8{ z@_96IinwhHo_pVH8*%mBv-_~5*OOk(2>i!m7~KPlghT`+(`D=BjElpMV?V}UDjJkA z`YZJanv80cs54ZfF?Wq@dnJW1Yc+dT_u)l79OACg(9=GHfhbJjr7bkNxh?(ryn-=m zn`n{Dat4;FaXZsDdco_c8Bq^0#kCyeIq2W<8L~=3*%<>`P@tYQpB~b-^bsa*s=o?z z;GVmA)WA0y;Lukimn5qgExhmhr7jKU)Cc*3v0`rAu-VPVGWf zRtXK{!Hxe`a6a*402&RanxGt&{(?Zz1={iv=IR9a{l_9essIzA;Qw$DC17-DLaju(;Tv>CM`I4aWK#`qjhIQdH;!(|5TK>|}nNUK`t4qDiWbx z3(8p%?UYO7Qdt!tY#EcU?3z}3BdMRTdHne>#qtLjmg-BhpuqtVqIt9D4W6zYVK1Pa z&zQR^u)~p4uL~#tRhq~&EzX^c0=xW?(Egm{2ZK({G%Dx3A($+b zXML3hI;O&${$`6)bHjp6KPO|D1t1wHdn%QVL(s<4@bsN47G^6R2p>80mbL8I_?1b$G$hLJQ+ zdFD&Dw&S8-+Ft{^&IwEG$am#V1i6jmyaCo3$m;BDha|3>5^$z_4Y zf-z3xDH+`_iH#Mkv=QuX5N;Gtd3H9Y(1`TR>!3Oj8lGt@o0V$Y(6i`$DmNu%53mMk z?9+lBjtgF)sI+ham}Ukqrj60Z@WiwWNTXT9LTal-T~U&B(&pkcWmr^WlFq-(Q2quTMxqpM6D2POpTta z&DXEVm$XHX&H`If)mD}S67q`Q^9SAOY`zRGG!cZZD!UgR{Ou}GqLTwfpdBUM(~{Be#fjyP zQ@vcHki>>q=e4c~##fp%Lcr&je7-+32Jh$HCedp1Lsnx5nmK3N1dXzIfko?KCpd`r z*GLdh2TLn>bSuI>c=P@Juhp`?rwHp3%V4Z@TeE_4)rUqKO4O{^Mx^T|$6=k~0RAW$e%I?HwB@a6EN`tByV&UTP^H8!LZ(ARo zVA7#VCU`GZUVZjyXj*3=hgq6KNXh%fY|-a^y}hjPPVriK%8p=Uvd0$!HqyF2q|sA0 z^=M)cP-xT*jSf0T+a7^WT%1DDI2C7YG z2~fQ?XjNe=8wTrR3=OIQBjy$Y68w;2vNUZBKgiKeWi<)ERVwqx{MXPUUE|LRIlph? zjIbz-tu5vg5zWeiZJ6ExS%av8dTSaquMWUqjLKwO@BtxD&QLO0WbCVgTX`=i82xI_ zlxz1rTIA6uunjy~>F&oP$`p5PyRE$K8kk=N~g+JOh(V(p% z*G_<%R4SXPDc5(-cQ3fuxlgM$nCuV5x% z`+^~#&>pgDb}_-YUXFPdHYrZ(!G0k6(b&p6cYlAsNqx%!R1Zy_Ety-(LDspL;aR^j z)nZx7J&a!Oxn@_0H(yCsiEULaN&Nz`_a0Skz;5P)=@uIIpeuvuhr+BJK6Ds3Rtcf| zEMIGo!^@ysH~esaP8veI|yfmVAjj+Nc<065RU}|9}j}q4p_hV-knIO zJd3W3aTWv7zgJ9om_WV;qZ6x+ImZGS*C z_lTr(FkQiKAY2N282c4^#%P$bK8uYreK#FQN$TeDJTvD7i~J1$iYz2%WUwc2ARd0F zYxK+c6-Z0B2IZj&oCW5|U-W%K0n;uR%Ew|LD9?Crs+?2LrFPD?F@O1mqa^g)w!=MS zHdpyatzNBO9nl{mk|8=E9AeBbEG!^1$is(<1Q@|1bv_8itR5b|%z~SOLm&&No7*@O z^y<+n)eJih8H!z)iQ!yYXq-#uJmR-CshG74J0*yBG@`PqxpI$^*5`vn9U-`2&U-f;tI?AV+hd`}D*av``D z8dv~q!hIzKWHn|aiC~$hUr#T?^Gn#l<}LexJaO_D;Msl)mphYd&uQO8gK43ZhR`7< zZo4VcPN;KBzwUZR#-UWgT=|0r$q6&&-814Pgbf+qthQ3p2}yZg=%)ny6!rfMlk01{ zJU@1GeO>gdn}OKD#YL^Y6oe-=Sgw4U^|4vO=Z|<@i@@h~fkH+`c6@xSxFDLHolQ%D za)=+_r_w#j=XpjA94PTRMv9HsVL|~)D9t{%>cIok(|A~h4CRNU+=2I*q|Efh&kAb# zKTIHRcFin_#IED<`E7=}SHN;aW>6n!{Saz3r2bIke*1@eQT+Rf&U7w{*9a?S?BiZj z!z*N+R!eb=+MFb(RH;w@tPNN|>N>c(Bw;}GtI_yyxiQW6_Ja#N_k+~M-S0Opb=ax% zN6k@DQMA5KI9J{R+rzz`fm4?C ztybnHV{Y?BOLviJ-o|YgCK)*qcXPZv`UgcNiRXAe%M7$KpE_^9Ya)DMQ0y2ac!tF* z8AV6*_jy%P3^%&jO?2>mJzLQo_w@8E&Y%Q2A|aihaZBEuOOeGB@%Iiz`ZqT6q7ias zHTczS4RAYc8iFH2OSuk2v8vJ%jF~D}N;ez`9|TJ>hq{L9)t6(dtE+nr+ypR>QZcA@ z_sgj#EE!|DTVeS`&yuQ<8_i70g&)jJ6~0`p(XU$v5GZVak$bGfUF_|GPnd`+DH+Zg zU_!ulf(h_2=i5XWe3(Haxzbl9?MlZW3i+*hxDoUGsWBZFkLJh4rIx{bCnqNr{$q#m z?CtIC@-dook^ee4>jW@%c6N})Nbp{Q!g#^Uqa_Itg{kTg#C7SA7JLl)5!I8YT=_~M zg|p|aNSR)QUDbOTFI>&py)Sz0tD0KL+aI2Y6E3K-(6WV-xvCdMlk#oD%O5QTM(DV% zUBq!p#uRWTVutlAoA{hNTWMw_$pzaUplb87j`As_Sg`zgUGmk^mThWMKK+hA> z(*Sbu@NLwOsfAlO$@a(_2mAYHgCj66t`uSCS6}NTcJ3-Nq{WVmjw)CCnCqyP*<(=K zhm+a5oUOGg~MQOopRA)thULj=Zu2WUt*t~t)9QY5Ui)JtxR%)^mO8ehlk&+ zyB3oFQ=!04iWWq`!^h7CJA3(!8<&Q|)=*|Q*hi|i#`P1e^MQarE6xVx)_kUtQdjrv z8{405YRPcBNPp!oeLB9~SM?<)S8_p?F`0}{>)Bugs5o=G^D*(x_q6W>S}pA(?(sjWe zLiJtB&fC*putY7z&JscGunX~5OycnAtIq-jwgn4j(1kFu4!$>yoj2buN+>`P#evhz z-Mwyi*S>{~20Vc1S8(xR?-}J{Rk(vQv0k*3SxmmKAHl9p{`904HcTfwCOXe(2svkd|7-R%?d|*+Y`PrU##r3&Q@=tc)4`4O(@D z`@Kk=_PQ#IAjWI_zm?n|!+&;wo+hM)Z_ch>-1Y@#Vx4A?vzn+RBkPn||`ZL%sV zV|J&~*ngB{I{T%`d5A@foiue)gxenN=&*xz!?`vc>BPG}QojAl&VDyNr}b(53NMcu z^}SVc=igI6SOO;yNg7@s*A$a8nx zlgi|C>#X^RRjJ1R*E;?-hMl+L+qwvzt6TE09eHKOl9#dGV|-HRMV=+$PsJJ>Dx*}F z=q7aZ;4@sHMWIT&2jfIRX0#~ytAXU!=w|SCc@n!DzO_UA5h22e`u7$yY)(h<1S?&%(v$6O7U24R=<>I{k2dd(F^d+I-EvyYxB zxWqnCKrdtOr*Pv#C?6(HP<8jqxx{R|>YFWL|*%581a?M&!X_VR4wXdFDB7mVWXE)%j{50byX$;$IUQkTOI$KR8uzQYSqI!=1?QsKFnvh=ss)|MN3!!WWqC$W>ht-CdY1(G?Jvcj{$$ z+&(lok$XuNF}hbJI@9%+Y^zu}<}=NlmYy?f_i?95>>jMHnLdSohHQ)uLiCL{*DiY& z-lrc{3XeTDhECUSaV>UB;r$xjo@t~@qjwQpwcc1*lbQC}=P~N!tAmt>mJt!O=~8!B z=g!&RT*&BpWtb*+R~N-M{WPfh+MYpEDP}4@;^(I z@xSUf8O-6O{sGz>^vv58gXw~*b12p^P6g?{+!(PR~eQ=7D6 z6a~YNnF)5HMKyRG%a4tT+{ogZ?rO#uM|HFW0v095WYl7ukg`+b-qry8+ zY*QPq&#&>_?4(YPU#cYh=55zJU(Fdie16nxZ$4=LWy#q9+pVzum)I9e+HSk5#5D`^ zoHsa1M(cF+>C>;KybFxCW;0i8^Y0P#XStB$aMD83%=~X1y0-VuU{yBl{QbDRW~3EP zUX*|LRkxdO^}*EP92BSVs?Lvt+v0o-I4ZDHf~+H=v{%uEo-Fj1lvGkaQPLD#GwT;v zFX??-%hahqX`8L@fd5eIj8>zEI-X$Sh16qZtyw1o>E@({U1N1QmifBtX|lcC_cH6K zmZ>jJ`|lz8+j)RxzH*24F2GRcwN_!Rwf*EU5*8sNRIK_;E09p+T*{O)KBYK9%21<* zyc9Kxlw1u)YQJ?`xtXkmgdff(g;RK=(w5l>dC<`_T|?5i!p{}Grtt97?tRbn>{HA{ z>t8|glO7aXImBW9A#Gln zKHF~{D09>Va_g-(KhAbwd21nc=-Mk4z#&CRj>m7gig=@Escn&9Bt;kZY$2n*Cyf?P zdk~2wc*J>?tlZOF_uO|!OH@U^NPU2Mqwf0hHR1841gqK4xD5CH&gWioN+iCc28a1l z>BPFzVKG!cF%sivD3g?90#m(A*N!$(S**Q8%5*YP*WzyO+|W%PdGG6;p0i5m-1O;jcQ|*UZoh16?4Z(Uqt2DZ3l)z1)~_>($6aBO6NbkgbdIeEEH)oSh&aV`=zBT*9HKxi##|X{4GGFWlTp zO9 zEWnCwua|u)n&7)cx?{4g+?uAdl@G$}oItKv@3rpB1xj?=W z4ZM(_@gA==TRh<#*vnvLjAM|{aB(@v7?E%gcJ*PHjTxxhC=&l&e`e_VoBwHH)?a9P6<1~yrrWcz;PSgKqsNGvX~(b1r*9fr zywvoJF9WeRp6(aD-?TDw05|QV&F4SWIwEDmjHoh^ULj++hxt=0xt2$rS1#7LNyWOY zpA^gI-1|LTF!>7(Lp8HI=rTXo5tRsG?v=V^M&_p)o?h4#>NFr!CBAokOD{i?$R74y zIz8o=z2W6i;l9yR7=-}hb6v&i6}K=+zc?f`6#sZHx|b&BEbHw>x@Oi(wFE9Q`8`~g znhGf9vlw1SA;nx_6h8KwM$DGy&I(loqZs$UiCQoquYMS(5|%4``&ra@q>6ehCcn-4 z0gm>SMfop@8rjZI|CyLE{f%3|9<(+3q`yer&@8m7prOf z72bpwOkm{?g4JIGjhHpWr5_uo6jsUw6PAxRs0b8LX_TTW>^D)^iYqW7y7X_AUL@BU zUkK)&G}v;^`(}0+;dL6_&MOrf?D2%K+4rkvu>L)8OGq#-U%A7Fw=ug!uzF`uLyb{l_kMZKwqj+!pZ#+v{7jR>c2!X})C?(!G>RL-1? z$S?2IDM7-#DBkfzc#0~Y-&K;w1?W%zx8m`)l3aPimJ?@oj`_3YW4L$W9nT@|&oyC* z-nvRO*4PX;c$g%aFG^JIMm;y~%PE{QC3Q{n3FA$4%{5m0hOLXE2S(l-mE?}}u94&w7W^h%a+ zt#akRd3*V6w@$eCLx-5jH`WzI{*mum@P%I@91)ofJ|L7hUm~V3!r@R`n!&+Q7FA+t zbvzl3-$?%166Sih>piua|Go__QL>K7e6yDKjK3-xwtu{V+(r0C=Kow&N!W^PVT`Y> zDkn*OM-2?cyB$|bJ>PV8+|&}?1nH#nepIyY z3X=8v#z$z3!D+Z)X2=|3td#?gMskbn6FSg7VAdYZOh=|=$*0eMuTf3(UVHa^t~N(S z&TTT}WyQ#ew!tL5z))l2Q1s@p>{sM;y_VmE90@n!6bBXpS2O9OI5&U1_GKWC$sC?t zZ*clyrMxIVC?h_sv3g%SD1QFu?)tm^{?<|~Y1jhw8VrXc`h7~#BKN2TE7zPurh)g2 z(Z3!q$iCq5yds?vVyE{_b_FFL;eg`@ zGu=E`b=#C+UOB2ZCJt;zDHM*u2Sho7OwrojniM=SZVnNuzXb(8sSQw*4hOUBlKIMz z&*j}wBqi^h9v^&UQ#s_=vxnsVM7`of>kPLr7ROyCi`zB`c!H~9emGxWs8LR=tXz3f zxxTUz0G#vQ@D_!i?}YrZM6Xw9u`uw1_K}0CDy6&%G)Q^KmGf^#ifNpm=NPt2tyLG3 z;Yj@MSJj~V`O)cH_Ow?i4r9i26sn(HcYY%inK2SMqj*z8B+Jr}czwyMWs{#DW3mHW zUGSC&nv>o%MjD%bPGLiIXRe})bgi!9%~UTYeaKAf$NIoCq8}kES5@I{RC4lrzlv1f zC^q@UvTREI^Y_yKu62tzED^6O+@-SoCxmr)n5fE#WusP{iX+Suop;&&OHgoqb;|^uY_PMz}4qO-Gv9lbq zWdS7ax!2{N?Q8zIcMpMHRF9z~U4vcUrbes-QefLJFAR@1@{?v~ktWMJ4Lj&fVpYQ_ zh?{oLyOTKNXA6)PGEk(XjJk$oOE8R$y$>$&UMA1J3k%H|v}IPc*mUoYmAw3{^C@o~ z3)`=HRi05!T)Ft{qm)C5!sxj(iEb#;%K#?f<>72m&1O$_YisM@-q$iu@;Uw~!XSrs zdDYC*!z0G1uuZojkg8DewXz54a#QeDN%`GX@1T6(gDENZom>7@WlF@QHUG2m3QMfX?-vIHNsAC1UFe^r zYIhjE&&-#zJ5s-44NjBI;18QW#>t(&`!yfsM#A!f7hShAcq_Y@>&K8c+RF673f^2n zYy;0d<=+A$4Ga91LO@mr9NCfd-Bdns zo?i7bUH=UcmL;?L~jXoWZ$n+z6&1+)Q~&wFd@yI}1+(|<45bwAj7 zT6t+P(kX;vxnbWctR%JFCl#tNPcg07%-8d4F;KnVI;UUYrZwvr4P_hGoo-XU?2w-3 zP83OHY#uJxc=fueF0gWfSD1`hyxO#reO29@7ycGq{a2BSnf>j9Q_#DPC(lgn?N7u8 z8svt{RGzC|e4p4+2qIQ_4Dy*Hm0ahWZcz7UxIB!_=+`Y?@tdnz31sqei|-|4trR&x z8r&U&!e%h!iiL>udJR}Wg()T}DOupqP+y-7ba2Uk0Pf|D5YP*u%LV8j^c8>lCul@G zS>UY;o*vGMb%^F>r^uIF7S0C#PlmGCJTGj+FrA{vAq+dpv~l+KGYD7rUPzeTsG=qc zI%3bRj0Q$2xpvpSenRZvqz-)e#oNYrk8ePu&>q=o%wl85rEa?zBp}zDNAo&~m16i2 zKbCR_hs9fktA4ilHK&_($SyX~irWDLuln-JLq$@{54_C?TNvX_xYTZIV=Ve@CC7D{ zyQ&MOAl{np`J*}S0HrN8Oh>-@I^u)5rjE4hF{Pi&48EDnXlD1^;#%6QPBsxW=Le%v z?#J|pNQY0;O)>M@P9j=YLUR)E#;0M-CO<03y#F@~;67Y@uAD-Rb6>?%?tp}to}NLq z`bO-r8e;K#_QX^`42)|OUs*;VvECp=6r2napm5q&Dc((2bSvkzVU8~Ro zg`sJJ(>~;mibYEGI|9P8eg*NfDu%Bem?^pHsV&6}C63~>oFPt#qTS}!x1`|QJ@T|X;0 zFOOg8nc&CkttpLra?TU=bJ=v`$JZHj0$d>`%2ncb&ZVC{C}n<4EW)l%ySbkweS0S3 zhP$Pk&)YE0p*HcBxw?U8Luq!Nl z%L|48ZdsN*J-dQ~mgRk#7dLl&@0__ar9NakD1Av`$LSoq`(1I$hgGrwdmuB|4b#fD z5hFqv67lxAVQvG5Q@3JM6V=bm7NNk|SLrutyG-c$bgKT6ZCH|o#s&V3-+kWfevhE4 z{AJf@6=x(Fh5HW~^6#nqcYXkO5vdyjP=G!K%%-@QSWv;!!JLmOcwl8SMcWn^iGk4I zSAX(bHROZm=)@?zyyvT@Ll()qIIm%~Tb1CYEMwV+5T-rHyK0{53>O97`_byTdmE3F zd`Ix&81k=za0pQ=7(P*O<5cqrrpJd-I9mOaFH`5TMAB3FLk+|9!sPqT{g)pnPh%h1}>*FRoT$7!CNMkQ2+6AL0^aX*y>5j^A6DTxb5-!0$lcPNK4x z$b3Iw_;Z!kM4oT_h!sun@@(=|?r<@ALTNe@?pW!0bH<`xg;gi|cO28l3cL9lWN9rk z*M&}F-&T0*-2b!x|7Vy5koYYeIPRf9Az{I@S~WciJg~543&Nieycq+47qM+@3=@Qf zdS1?K)ySM9qXm?jMI%Svz24EFYWtXMCAwed`MlfpsIB63>V%aPA%^87nw1VSI~&pZ zGgpq-POtey1sxCPWymMt5FsJHr_KbmPeQ{J+5=P)kJn8wR$s=!6fjpZ>;^ij?dA-% zk(q01E%~uUU3b_Dyys<9+X=L3L|a+J^n)x}R)`H26Z{;VMPodqRP1aNXt>w}r*bwH65Eqi{}XdhWCLfWG(09kdnj zp1!VxjBr6ZM{2GGkGmAvT8=d`;Q8gVweMDql02F zP734IuOasr$^9SbqhbdwaI`Fi8Kl|TPvRa8+biXcJ+5Nm)8vA)i?Ew$*@Zq!XY3mN zQ=b1HGo zF>`G!qL7E6$@_N{+}y!5kR-de#0F|p9pi96=^0FtWJ_f?x)ziwge6{6<{^Hi9p zocL-iMX1^QUm&a6eTcrUDVxj@tUGXujc~%2O;MvveUqeIpfA{OtW)!e#?|r?Z>Yvv zW;-1ttbfFGIm&$0=XI>|Yx?k)=pkKinAut0)wm})ev|KBDO}7!F9Enh$?su=P184} zXm0#X$M^m4p7+}%$1A$cZxie+gY)t}Ot`Edi|u=+{G67|Gl-A;za04g@Ys$K{@=cR z>y;GqV=9>*N2NY-!hM#SWZlG&M~i1v7PKW8jN@$dnb4*~Vd z`}P_IIdV~B&B_B~%uE`ge){Q)3T$L;j{=0Ztks5d-3Wsp11gd&ZI2?4wEjK=Ae#jLKM4iYx=x+QYPPw9&TlCnXQ^ z|LeB-&j^ExHvv4`Nxu?y_Va7jc2)VV&^%^g#Unu!y3XyVf-~f-@Lr}_+KK4T` z=LZ6o7r!&%zA$_vl}0Ci%~~B;jp)O7x&;1QH`#*m1n-cb?u4Q7%-_HO4+_o(+ustijTuu*f zasVNeP!#-(z1gts_SrLe(bv$f*)$QF%lJ74U4v2EM7ZQC}# z*tTukwrwXbb7$t>``((j>Tj>pbRT8o)P}DY=9M)N8pDc)H+=1Z1G#NIT6q zG#}_XSJSLKeRO|XnPA>T%+OZsS|k7$td+<9U4tup?ns^94TMfORGu%JEu4Gj%B$Dd zvgNB>^za|g_va$8GdWO_(r^Hv-QKFbo58eeWSArlrG7^gdBF>iV{s z)89*7%HsB~GFii9#6&D47zBX45b-LS9^XobyY=+D_0=b}SWsy$JPQ<#&N1k02sx78 z`B&3-cdM(b%cmRkCcd0mM#@@m>sNr&`y;u*;o zu0@qx7^d^-Nd$D>_g~`+T77O%6&l_sQ%FS*-ro{i&p&{W+%@pW7cn;5?T}QjUya>= z#s}|iyIkNx;qgbfduAskDxA!X!foxpAJsb}#Kr`8#>b(7?&jjkns6@EAKV{CFQ9w`Y|O}rEK~iJ zb9-`=>0;Mpq|WXp_yQ5>p)CZ=$*8xm@G#+`X2V*SHt3)$A68gPoyEYJp&~mbsSmCQLE1d`WLk1obL8dkMR8jgr#Md#H!za9rVixq zmlqK(>`mR;Oz&ole;h$8-&|g?gR{ z&f>N_<>HWo?E!=&@`Her7TWzqVO=%%WucOosa+$|kuOVAyUR^nwbWaYkr?Ye8`DB_ z-3$!4oefsIvvX^qA_)0r4Q-}UO=vuslyXzJB5K6g?=JWSgKRM$M_}+79-%d~K=}qS zCIMoWQjI=fivhhNE=bv%P4Jm+wsAK$Gakl_X|t0Gq(4KmszcIQ|BEa1|2^wQrF!#( zxF7LnVb>{gCyg7~B?dda{cty$5B94>!@{HuA_#!h);jXUGp{igE7+-Fmufy3Iy)U9 zSMc8VzANmqNDEu-9`Oe^k^TSH^K~s(?V20rbI&YO_IP^XWj0?1&H(cg7g6e&S^3v9 zXXx$L5|r*|G$_jo+*(&^)d8m7yz^6^3=D@$yFB6hU(=KuDS!|M^A5aGy&z`h`&ph@ zlkgp@@ipEsU{-+;LW zb%~>m;}rqf;_LPuS9RE(+({0SitC#kgjqCQYYriTemd;`C1oi(RD_ZVOMW{nd!M)!HIvxPNMa`@>vf0n$N zpbrVswdM~Ti}&^ZTzeGVwp%EKHz^R$zJU(gB#1T-XbGo77+vb&4Y4t~8OrM~UY`#O zW;>04*T37*sYsiMhT^7~CnL3=5)E`7rM>@uf+>7{zTY}h7V-uCVMn?f4pL6paXhzX zox|53tBrOH<~DIhdkht+%rIqByt7p0;@ufcqWOEb;#Z#m*v}!-+*V>_QT?BYu~(aS zk-@P?ZQ?9$ZAjC#^3KZnN;W(#jlk`#6M_tN>Ne(gL{=8(fh7IFx~qOh zZdT5cn9II0XvJF31!^`;tkU)U?*q53%?<=_U$rnlvtRYTL>av8D#yVqD0-7G#ZUH4 zDnTAxA1J_JVw{o~-QkND`qG_RM4ZYe8b|7`_C6x-`dh;m z9xBZN;=trWfqQ@smu-Ox@s7D%DSBl`lVr<0VQJaQ)dpBw(djDeK>tc1^UXFdB=~KLI)@1>rb?Y4OAwOI z;)7IZQF`MaeUPtZ@R)L~l$~6%lqd_x0w=~8!fl#e{T8qhSG*y=_CP)A$f3IiRsHKl zkf!pE;+1?}-AF&tH;q!wajcP+Pxu25>d?q^010ylm7nJLFSr=~C&Kj|HW^akaYgF1 zdLWW_>XGg@Ze?hxeNkuO4i8+qtD2j-gOLb1%0saTx8THYXS>%y3ngj`zl930yp14p zi1KCdk7s=0A_K5hMqgr&84dr77qb4Q7#f?bPjFw{+o4)s8U5|Bb%Z+SVX*}r-wq)Go{67}Z?QLj3{=0+#z`pb7&9_sE76WyZPsvT9A?$&A$ zB9Twu#i$XBZb6V%UPbPhg&LGtkp*ZROv#GW@M)XoW0HVCyxaklOg4%iu%|2`MWo5l zL7!A`fdnFu$CnbYL6={mz!;hwwjzJRMb2kDiP8WJid^aJ>=smc0XoC2&}ncJDP6O zQJ0j9rBGE3g)>-`%HJxGx07?$PP%ELTmyL*GpjJ(NHI2Bq2v=#W?QWmq?8G{p107E zBTc?0`M;IC@+!?(|5e8)cB3+VF{6}tb8!GNSJhu1Ighn;u`nR?wHFaZ&T=sQ)7ja& zEXsxQ-y>kWuE5($87Nijq-_H~h=hhXlnFfX{ZhxyZ`=UK8L9rnueYF686WAuX$}BseaFboWs63!9p7Pax+R4Bbol6A2r+1(omk{>}EEuj3YZtQq?qOv59=gdODH zWNmjbZhiV~uzbaY(bd)TOKFo>5_m#lVe7Gk?oSu4)xrs7OsyH{w$fd!F7(WCxKj8H zaq+*9|Dg*gGs(^22;jTBchfi>rO!{kfZk?OY*Ab{ueyBF;G^+|6YCc~8hXVqF>u3n zRd$)L2z+%PHW6ZQwbWv0rU+isto}nOA5b`op2pkGXf*}XkQH~LLQ*18NY`8|c;LcK zpQ}lbE{XJ6Yk6UBc1*6^<+bWtS7UQ<*rj(1J0;g_g8g{2fk|>nlh#jJ)h&P& zh+FZ)Z`Pii7@*E$ZA_aOkZ4p101uZevUgi1sMc)-8uO3MPe(axf%CYp!hT(W8$7V=wvJ1u|S|{v8KU}X} zn&mI$K$YSKz3X%hoBIW`8<(NhW($bp@ucx}N_D^#dwGIDN<=Ss30=J=ax2IBK!KC; zBYp=&?9Py2Sq8c(ZM_%XpLEl33uRpOwFQi|CW3#sS#kw$0RO!4N=~xFEtRGXTtPOu zL+HIV7*!>w?VO$jR&I{>A)!BMRcD$Uj}#K^+1oz532ye}f?6Hg4b zLW;;0i7iKD)HR0cq_(^$6cPCKM)#}EjvaJFU{{5D6dpMHwZXH`bDkq^VXWxw>@0~v zc?PG@ZEvs7^j}5kj|Rn>82B_(p1Xkni*w5u?Eon61?w&banX3m5y78vLKds(BiYqx z0|6wCyRVoH4g%?d+Z2E0dfP23`mXDUx(Ozk^MbY<&BI5K`!}ULVTuk~jVDv0=Te5`5vDA3g$0j*O2ZGk7vq<8VXihK%|% zXx6+xFXY!fQnAQ`E&aDc;J1c75|l0UEH>L}-LAX=7mFi#qVZOE+*qNm+Wno`%JLNx zVvCmuk?w*yyTc8x=H9nabdM#%r)uIOU8xM1qARu|jLC$-nR1Q2r@E?o$A0hTi6SgI zX`NQs8ZK=9W|6;Ygd!ft+~p~6x0Tz7RNopQDN9>v$}vbMtkR+@_-F(&lhU#jh_8$2 z^!q+^Z$aS%$W-uBI`wdgV9cT6eBrOXlBcVc(6n7q%1?L~zSy!vM|MsKgv>l}vO7VA zu`3u^WHKQg>gz^Hqw~;)?@L3^oE^V+21#c?QPcapE1{W&tBjNYetiB2?r;lP1)wNP zcs3}Xt;qsW8q2G3S~Ho{@Bn>4!Tw54%8urL+8J$FX_;0`yx?s@*{T9YQZ=D*{^cI- zh%*YCJg~Q#5J`@E^7P0RO?|gw_MmS5`-RyX zXO0k^*US7#~4#3!3A4s5r17p31(r5h+-sYJiqyRlT_v=-V zJURG7T9Bw1q0w&WQ@KK}M=Armg~{Hn*6uNYrsHv6HX)WGBCV;Gm=v*03NXopevr9P zNI-xAMrukgwu2z*oawxe9L4r32kd}aFPcBjX-@HkD z;Xlj-K>U#D6+wer{2&c}b*2(=q9?LM6910Prbe4NLLRGnaX{&dMBXE`yUi&UYxaT% z{uzXQL3h5`9)mfK#*+o_A2y9tnrJZ8IS5sdIzN%xxd|vLS#N7EM6_3O49sojGDg{etN?Sy z_g=Zx5_|1m)gzF8&a6MVuw7CvvNqtne$WJhjtOtiKQ=MR360 z%4l-g7GwGHDOVu`drW#uNs5aH`$B6uXK`)Pc3?b%cb+8*LOp zK#LWLqWXgqE&uRb@I1?F?{(!Wch-UuuEyL=HeB5u7ReKvZcs{~qs1BWwn3ZcRFPwE z^r5v{OvOzy2Dyuw?zk^cIS4Yobn2G?XIZDehqZXx0b}F0?F*oo=oD;}(&RW@sa6Ch6}(aByye2A%YkEZ=@aYT4&Gzk8R${K(i=Pl zaMAuXzKS(d3*zxo6}b&va*(YSE`Nc|&zm4UjOFyN14PJd)|HK#6?UXmKHe=+4Xwhb zG-E6p$Mok&rJHF|A@0i)5Wx8xcj>&@mCAi=BfC)FSYAPqYE zoAxG3e&>m?AMpGcZZIU7-vJJ1&`eGfb3WS$VjcPJ3#?BP|3%{aWhsT} zU&~e3r*?YQ93V_r27ObFrO!mH5Qx7%tV*IZFpDhht55?J!b(M-mOS*V&ix<2Wp@Ix zmi!n>GPznHz;p(P*`^w$>@U5knD0`#)7JLq4VW3+P~Cf-7ZX|iTKwQ}y&9LsRZ_gU z{VMtw+f_8*pP=A$k0uWdQ2|HBRcs3~u4D&H^osYy1l-KpnbP*U`X+_8M8!57Lq(-} zryrdVQWHC)6F<9UU9Ra%ju?Ab&)$GGjf9dQgOj~Xtn8HLA${>WCZ4klBW>{jvX^Xu z@y3);Rk(qxs`ZLtWDNb$q$7;&Y6b!P?7c8y4b>tCYLOLcapm;zl zYU=rpxc%Ya4Y8w*0v&HM?xHw>PpF9!TK*({Osn-4Ds75E<%5B)F=A?qgk>QiGjgDO zq+ZtA{#D@(I$t~IrLRJS2&D)Cn}p;UEh>A8`yo^*Ef=5|)D8WkN*;3wf|S4F5yP3g z5GpbdnwHn!K--{QLgh*75z{m_7)@qM- zIZ(-iF%3x(W~f*P2F9}O&A@EfE5(Q$&wh?08|nQSGfY##4r@l`y>``ViS)2;&p+Ks zq`L~mOk?Y0rhW@&>-m!X7fBPq>%qK0lQGo|xek9F%q;jl2$oJ@5>=Kc%|1R24aC%u zjJ{YV`=21otHp1BS|fZ~@GNiYwg9zpi~s|zJ4tAp<)_RyVY% z%fIiu8F>r;JB|TB9Q6l)XZEZaJl54TlJmILvp4_|r8Nm61eB+@5_k7V80_i$&azz$ zRsTLBMdl?HA1o6SU#g}+hoI3nN_rAn9BG8MQD78g#D5b@F?99vzh-NqiKNDvEs*B^ zbX<$2@I$#>W55}J`J~UaCfQ`GMWc%4m2QdIFHpJIwwtZoo~h&Hcmw=xx&heq!~p89 zqp_lSy~Nb=)CM6mL|Z5!w-gSqD1j&P8=AB@Rt{+EY!4avnW zPw1HxD}zD7M(T|;p?jzp4s~_x_a>XT*EkzwoI-%QC@ zbYe$E&!b2PTx77J-o`Xpmz#^CcXugLxN)ct^yU$bCyOb1oM)GOZIbBe8Nnb!8%7tU zhI?Vla>t%As0@Rj4(O@mcA9V|@+(6>J%xTJ+J+FsZG=P%1BaZnnDg!f;NLquV<=I>J))ba@2_RwAYy|Z}UmOX-=CzREV+2F`CeQQRPIwUx$1(o;Pv!?IgOtoACt6D(g zHlTGoRs^});Q_YMhyen2T)JV8WD;cqaHZjO<-Y#G1XSkFvup*D(k_-XD>=(n@Z!3e5*|8I-8!BGBN>CbTdfu=SY%u36`r+@_cj zungtkzHLKnFTH?2k&>O#XuHec`YLUr7Y!G@Z%M;*h-Ci-0wyA$P8-~<-43o1rPcKb zEa8ajHTxUdd!|ai9TJkB^=k=K z(R51ah19s=N6HsVqdXZN0)xRgN*{~}CO)2`lD$X6BOIJ@0tN~V4}Z9Lxpb+XY~vBC z1pju;yI41Lg!G(-;n3fEL{m-kg1HwNqqoeB1V&FYCET0Lq_RMh_BI$kyHlLMCdYGt zw17po<Zq*GQ4d6``MCx#X9DU0O!R~8xx+t(HVp^o~&M!MWkYpA}%90(eK!=@hR?Rn+o{F`|o!43Td}2P z6S*cprassa(RzOVTc)4FJ)H0KH*$1OPDsS`I;!WJ=6OF&787&2G#;eBfe_vd^h@$I zZ$aYVyW#mN$?4+-e(8z4oayibyllcDBjl}=zNzJ~3XEu3r4|e|m0sVmHF@^cA+Do- zQgp|kXktvfK$tZPV@1I$*GjfC)PBLlUMU_XWvKZW;%nUFsW)VQEiKY)NQ)*5Kh~AM zgiJiiZ6*vsmgyN7?D`BLk7iJw^=R(_sVPG(?JmIlNIdIH_tP2_gC2^6m^Heg0R0k^ z%JX11NsEu^SQk>I^;BSZsaL~Nx@rvX7QZNM!Dyw#l;%^JF>AZ7u>dp0s(&?l;Ir?0<@oc&jgg z-pjs-gW6QYSGGA;IPyaNyQ#=a8fX(|gyi`7YWU$)N`gQJ&J&wxH7rRi!6XfKj9*Oq zDK_b?s^^w20JJ)KDi18{w`?ZShT*9q#ozIaTlW?@7#>>kBl3IC{M|){VH`@zh8O|= zYX_^__a#O4N0$(JB=DVbok^>P>&(qSinp)fVVu3&qYSnyi6A`(F_3P!AH)%5%IsjH z7?gWhB>aK$9aU>9ayqL%sU<77rKvF`5>nc{C>f^OMs8F=G$|Q73rI=L=HdsALr+u9 zjcz|l4tm_t5x5eO@iQl4-;3Q-Opk;QQAfF2^A|*gBkvm%sv zvi@3&h$&B+9|PzLEpLF99;~g2d5*Qh;2$1(R4;u*l)qn`G(Zun%kz;LWk-Ny+yvV32ZMuYtrT-IIje$(fxL9~= zDC5b(b&nP1EF@u^EySpvc0R!|b#|0P@%oHvH)1RZMJ|X@tM?`GB&9Ro499zl9jFsu zu!PlnA$s|Qcp$-lGB;v+4_fZn_OOSO1T^qOE|2QvnMGl2kHR%%La28uAw8I!g-6O+ z=vJ2A%_>Tt|KU{8)fSPFHoA(sLs#Wh2^q&f;vrrJ$1Cs<<|geiKYaP@4^nixqnEJ8 zKkX?{*7+VeQS;b=H*v;{6zXhyC@Th5=Q|F(Q=i%!POiRxt6%d`_(ob^H1GEve5^J-*@B3Yno>V1Qn&e$68A zR&iCi(z?PYg~2_Kj3JZ#BDEXvE|G8I3=|}89`@+PF*#8W{_#1BgP}?ujyJ^J7jt0J z87zX4Xf(6=?v706nUTXrF?7is?X7ez8zf z>v^T(>knZHXhA!o-+tKN@|eSgdJ<2XYHenaHWywd%8AFt9Ep3E4PCAyXs_U4`|Ih3 zx3DqBcX~LpdFIAb683Gxco)Y~{fnp{X~H4^pZMA%`4mKR<RfpcCX*Rzq%tACzXd0P zCgvmES!&Cp}uYGx1FoZ#hm;e9)_oebJ z8BxMw!&f}<4)3buCi@al5&NdMMIPMem-Dy@atQ%> zG@`Ym3pkH^#Yb>$y3yXSkz_aro?u}!LjEhk4Nm3ria-&y3H4LlvX`MBP{|(TX@`u)R0# zj6YcWt2k-|E7F`3nh$1PBYQsxuGZs$Ufm-el+}S_FP=Wd<_4t7WTOKvtB{lL&?Qpa zGXHK$8#d^mc{xAW%5Le5A5Wgx|R zfT+hrt;-ipQDJ!y-w?aLx9dkaaT?iwlR&Osg0r!-4lnaBk0J7$L}ynIIF03&(3c48 zu8A#}xB`<7S10riSxtO-?LcQlmHfaItu#hAqC_fXH56O+^F`rcd=qau%WV|BR}=hl zY-NziK(}CnG@1Rib7gsK>+Hy@x0h@4S?pMhx;fo}`g3hjPEJnDMjFl zMupqYXZNKPc@ezG^x66!*;m7DkRAwDzVQ#e*O0-!`EF`0D>hK^T9 zi!N!Zw_!r+1YsBL6*Y0v3sknoSG{kzzSCHcg^QmB5g7>*X)yU`Zg!g{p%1{A0=cev z+LLS`V{eZ2g;Lk)5GfIyUjF!eY=A!>brgtB;7}Jc5f$M6M=H#xPtqG2XsXVJvb=|S zYyaC^<)_Psl=GkTtVhV#P+|gVm5%+{iU>J)dzn9nm`^RXI z;mfVR0c|0QWZAt4SDEd(#lR1BGrw(5ZG{iy*3ctXq<}l3CA-dQNYMFWi4Ybcpl`Mo zgN9MqZ2&hQcxr7PfaR!5s!;ZZiKHce(m}+AUjzoJ|3cSW6Ej#UOIZ!dRuS`n** zy3!#F86b&~ASYC1>Fk=?i2F~2H)i#%n5-h(`j(k8GpVX>S-*UHBS#PzQ)8VooC7nZ zpC$4(Lx^J{LpNt}WJD&Jr-vBDFt(tUNjIGn57xi4#F(gnIPJ+55|EUsLY$8?95fpR zX1kI8(%$f;`u7l$F9CfOPY$K&MDLAvcLYxY(UCHM$a?*N&J3{3438tD4XmCi+V5YB zU1~m1y*F({uIspy$!7cK#yo%m5^=&${+2l8zd{dI0}+y&^b{U7|8d;PlD@ry5vG-B zq8DYMd+}Rtq_tv}9)5r#K2{>#_#yPRu+wJifccjO!j_w&T$!qol^6H=xjx zR0^<`f!1>ag84@W+=34?5WfXIdw+G2UMVX&g>f{Q;IQhAgMPQ=G z=j5#V(i3{Zz$(*ya{S^`=gM=9rwv3_W5ecINb1B4YR2S-B*Ntu<6IJxD|o>8N08Xa z=r~uSq3`r$B2E#h(;X*Bikb2Cm5oYWDC~gu4;=$^j5F1MKYNLBc%aNc$-vK@C=Od4 z4o$U9U^5tee-x90X-O=-?`8an0;_1ENp)I>83>AtONAd~4}Vf9b}U$lD-ZUPQNddY6sCFj+S$S-L_*iU$u zjNeb5u=AS>j{S}2kd0inFowVzgQx2O@g%Sz*W3gQ&>JH}#FUUL8*!bA%v^?raKZ2O zRLH6w)jyUHP$Zck&zHX5lRzDhn>2bIKN(|uY?{x>2m^1Y%b%<-=MP~*|7t%PDtASJ z$dQ9k6e?aC3dLPKgwJK{#fvUsVnN_IvzJ^~Jr%VPU`_HJk_j;pDJdTQ4j0ixg{s&e z-n;i>nNsBvG_5S_yqY4Z2r{qYd-i8^wGPED76VIT8BD^FNNkh9@%H%l`(xZ%9Zwhv-kz^4kHH<0 zu-=U)+%(A}jyIQx|6pVMO)q@RbO*%W^sZGrJiv%?c*>Q_LaHtXo@Z48J6<1>Z=o4S}^*T&qw2mw@Uw)s*O3^*&_0D6Xp+*)yR_uS&A=nmkD4DzDhqf?_McOHMi0T;?5HP>tTx~Y{FJ$TC z5@fxhHObsmD*VT*T^Oi3I=>lvq_`qRWpC_ue!zfsL;`CpW6qsB<;SAeXa8p3j!DU; zLURAc1rLT6+$1%U z@o8x=)gg=?jmU;m;=Uk*g}MHL1VZ7gbuXjPi&u-Fc^l0HMAF;3Z^|UX4qi zr}R3ZLHrQbtxBa48B5~>!~H>a3Mvigq{4rqt|f<;n`aLq&2MiukxiYpzrivM~X+AJg7GKZR5TqPFdi zb)}qoMHD;`vIkx#CV&tpFq0B}L_>b~xvodhI=|92)dgnrJuw%R`$l{a?@L{-w*ulP zHq2SgqEzOvBdimnOiB(HAKTei{A)@7$>e_tTy16RbjR~E?YkKZP=sW&ruUD>B*y;WWOup(qR<%P46he3)&TPib1hdsRX&Zg z2)!|FLb*IJ1J-Nri5|L)5YB4ze83;Y3I$nq14laZjqrFF+GwF8Of@isZk%;(x4@$z zrS$F$ETMsz`0~Zye7h@*vd*qlWciQsD7Pg?qqNrUfw|V#6#YuO1cc48H$z zGvziF3ix1kYM7sPl?;URrIJB*XP^oy*1_q(iks6D&NY`OJfto-i%fN?b_Xf-BkB$j zyIu7Pyg$DUo5Qnz)UNqrK4|6R(TgW+;=S7Y3hraOcl_pRS8zr(DCLrc-?`24Tg_e5 zFdpCXYG(?x&(b9JzI^?DgS5|NWhMOcHq784Hu~<*A&rohv>IoUU{!mQzV)9t<9!Pa z!_Sz^Q-(f#^crp<4yRq6C2$@c<2Xw>omqsAVZz@3vRhz++}EK;VCTrI@l?Xw-9<1f zw&bufD$)V*#K6K^QMGzK=uMyW*lTCCoMzpKla}cmiEH%g_nv?{P3}b(R*HLqhpKgC zQs3U>3P8D*Dw#SZt9xC)9_249ZfYQ24xspO6qxi%R}|y}mKec%31)|<;ZfShXr^3# zpqbLf{YA|px5rx|Ajd&5GD*3U3-HfHYq_~xpBlIgN>VlI=wG`udsN{ z-@{mTry6Wpmn#~}7`17;=+(`WEF@anFA{#6e`7XiG{%V7*j|3P0kD`x%fI?53l-#% zP-~|F!n>q04`8}Xj;@nXzmcL-6MpFZiE%eymygGo6g)3f*RYfM2URpxb-4dd(e8R$ zvOit*m{&_GX{xJGigPYV*3(X zxc^X*A)ly)A4v{&F#KymKd+#irnrq7M~fX3diiQ-0=^F6C_Wp9R;#?FZ*IU-zE8v_ zK_aLuO&qY%b%&)_H&u1-9v`{xVUT99nBIGrZ)Owq0PU)`P)Fx207?YH#cs)HQo9bi zrXT74ByM0KNb^Y~t=kN<{k`?jS@k(H@d@$47dHeJoR&aD#kEhrBf|Q$^Bua{1hgh? ze^JgVgB6qNn=7y-KHRBl^xB#pRD#M8iv zT&Kq)`RCJU-$+ek!(Wsh2CS((xWZPvAglVKvXWXX@g}dxR=VgyexV%Hriab1{!OD7 z)cgB014KMri5C*(3(RGp`>UbuZC3I%=A}Q7yW^I61EoSkdEgy)Bc4xVFiL>KaaeLt zU5&1iW*N^njA`vHbp;8%_&NEMODmXy`{Fn@e9j1NlLMo>A=_};-IootvUf39^Oi7* zt{~sbA28!NJ$maxq(2v-EmgJQQ#GOlokg!V?CmwqJPcB@MbD~*mg?E_0T*; zLBxA{BuEOU9|B7iXTsnpDH=Un*`O+uzAm*oM9GzNf zJo>@I_Lil{O&B zD0NQ=LloEJ8pl0uH`r^q>7BgBeYG~47;W2%#+qA^ESUrQNVKD*z{t##{cTP6NzBCh zsoND@$vunQunD@>^v1qg64Q8TR^)ItBm(@?wlO5ZaXFtC8d#+#YsrZdYzDj1U>`xt zvdPgS%iMZdDh(yP@9``krF;%5?_wFw7mia|=u9<`|27{qkcfDJPwFkxkFh^-S-Y{} zM5ILI8%WJUP~wjBcPCN&YR-qan^c&GKD!CU&K{HriVCAm(fcP2gdqy)J)1@jsR_y2 zOlr*rGA>^e2yV_^h#aoxVY9rZpoa#ff}*6_{QUg^F{DpLKKU z3@!jPu<=UO`^*KiZKFSsYi(&issQ&fIpQ%d{KpN;G)&sfy&7&Y;JFmgoFZjqd$blQD%bOn~{VB$zkND z&qg@ysL^?ma0E;YD4M3v0Dqrwo2&nY?%qxk1{3#_wVwT8ab>leZ5C>E|LL+Dj(U_z z|DzH4Is3ETjkC?u85~Mq=H_sNVm@M#zw{SZuOCDKE%MKJ3&wtL+CCQyK95$jldU#B z4k289P~o2TW*I5!-d+kI2Ae&Jd1Bx}*NtO#a0;gmd2Y(qH4*l5^L z{vB}b@v5U!T5a(05mEEZHK5EqmDQ^^Rshk%C?%v0Zcf--f9fj{W6=->C;=r$>yX3xS0SbQiVMVe<6t%!V33rUi1Lx9I*Uh4W7Rqtg1L+s z+qddpOnl_aA9=Zy=>hDpu$bY4ijUdi2uvW`%aK|h!8<|;pRYk)t}v+TYP%_Ilbc(z zdWndv2Os~;exF#2Znl?QqIi;avjsyxn1#GA&i(+V$tBp!*@m56uS(2G@F#P)ff}ES zCIF7#!Bj)tk`7 z_e_X60XO<4fAI^0xcmOiE!h7RcmF0nyk|(PyuH503i&=*<}cCk)q-^k_It40tIiBx z$P7E(vsN`>J6 zmPK(S(VunThMEdW)FM-QpszNra5xxS5UcW49B20dr@dnz2I(8U1r5f>$q3|2ix=vg ziUK^wIHrYZ5}YV zVrqZh-QQLFN_dHg=6@3f01tKycUy=-1^b1SCr`w?_)rZCuUcXtPT(FYCf`2_wPfKw zP$N(D`o1WF$*BlB6dPdkFiN;Mw1xbH^%}2S^Vedf6bPFURH5|GMQn>m;cZstj8PDL z!5@7KT{xMxWsRO2Z+dfMWMt@{JWuwo3%;@ry z;M2BzG4PDm^;c@7b4gM6r?cDAx?WH<;^{^iRe{w7_`Q8El)yvrN(|1vH%^sxg#m=b zIhtoqLoqpTa$hQ^)VLbYeh?FWs`AjNj6Q8)6LDc9`4B<2h2r2_1t=b+QKqpU<|d`l zt+Ck%xI>{S+A`)>_6WF$M8`Y|!bq0T=b+f5YHLOhZlK85S=%j5(K#=; zJl?s`u*i;qJCLV+xD%?enepz)MxAQWs>=5Qh#WVU>d3Y=DoIIzUa%0c1xD^Qr08jB z!nZ-wXVZE_=?1L;@~e4W6U6NJ_)BC}Oh7v>&N`fWHDVQOsUF}h)Jh}-zyYW3twm3W zrR_pD2&7<@*}@ZyR}jhUtODHBJ4`I=Cl)7)-2M&oa>d;{wQ)CUp>)n4bqzw)mi6&2AB972v)&S8MYo<5;dsRkw4(<^ddu)#?krmGg=U z<2Tm)=-jN|X*4~#snyO6!Kvq%AY9>bAIo>ar>>;g@o;uWkI89Ia}_(X6}V-0!gmEQ;6|t3bb%n+ zP#SM~tRqCHI+`mC95;xI*x5h(uu$_p#Cm6P0nT~1U^nA}!|M*P)F&uZ#|w^7aX}E- z8j3^IjLW--U>2Rp&xy^7f@vsU!s3)s3Q~SaQFFP+LHn`??J!|ZX~{wkG#ttP6Iv-$ zY^50)lbp6Hkp%OkXLArGP=d;UoTI-mjf`S42I+gb8Edl*SIfSzkDiUa+a zs_vY8qXC?eQjI}ph9G<$UxMyB)BB^&M!9GnopChfIHNyrxI!0HP{gy?1VeB4$)#>0 z|7g9r>WYC0CWFE2O{+CYasJ3EE(AkT6gaUG>Q@mfGIg=H+ljo|R)l8L9m(Ic-P4-_ z)NKio)(VVSC@(ueGTG)uGr3kPJLUi>qLbFGKDs76sD9A7MMAm zf3eD}##jO$)r8?HVoc|H3F?&Xfut(4)qfg7L!qF&C$t<>vXZ|OhZ(luG8BNCd1r|( zTjZ5LiD0$u0Kl$+r`GuluT-C6XtaA8O@h6=XB??}yL%|Xg}sHttR3cb!3k$widjaC z#)$W?|4J-(;I!;iajxC&K(~#iFSJ)xjLc^;d{Yzaq+R&a%2;UriKxFSCn33*-a|?Q z+{XjteUdk_qQq9;>VQS!V1{6xiMRr6`D!P|rrXIHLH(4$k$Zo;tN+mZrPh3dXfbP7 z+3P`zXz{7qZ_2fLe|t&P&vlQn`!)Y}Hv&ZS_XPxuA+;LirU9=L`V_nSzSd1^9Ywvu za_b*gL&pq9bhCScK(pC32n@X}_ z=vy3QUaX9gAwh@EHy}xTJi0_S=Nr;v+$Em9W`2x>J(DLEKoZ6quK=H8q)V}*_E-vG zoHYjopH;Fj2uyE0z#0K-wZQfxHsze!0eq90lWZeOzq+LxO6Fa;xqimQVOthMe^g4#Q5 zM&fuqjH|wCFxA}z&S*l|ya1ypmgO^4vR^yQB5{}vp}Id@L6Ei7R_S<_NZ2|IP;8pE z;BC* zX_6vP5Wk#cs}{HF4lk|7g+I)tixDKuO(gV=LeQFkv0*1ffOyoY$|wl&K=A=#jwn@W z;J)d@Co#^Y2pvnv2sD*flnHKh{l!vBkM*Vs>EW*Oa!ZJ!18I;pNix<;P z9&DW$Oc6&dP&v`1YZM;xda=!^i3!zTP|5upFW~Or;_nZLBmHQ1rVX`!CY){$`}}^) zycsnqRJ2?*ThLsU5R4)_0=OmmI9Ls>c(*$VIVfcgf<0`Fri$*OB18%jv>$snG55MF z#fFLEn?3w`Gb|X1iN0(vG64hhM$z6<#I;bJqTO#kJy$VS@fWtseeFT=J0onV7|oxRC8AXL;(r2B`9iEf!_9?h!c*`U8Yu>;K{E9fK?D+AYwIjUC&zZQJbFPKO;kJGSj~Y^P(}Halj= zym`NK-tXLdYgX-DwW{`yz2=%@Js8gz^&`B$L=s3&r(|4C1PBQ0IqqMNHPcW?pB-``rI?HYQ1)~*J!qOaJ7Z@E4%?MtjF;*Ku$&iGY{@sze zHxL$cKwj)c5rq({xA}UezjQF*n+OEZY^I_mEqMmtWqo7O6JJfpo#)Lii6_QM>F*3u zqRu<7hXeEd`uo^gNFGA}sf!zk`g=U`cs2GK~W3C>{)u`scAc zX3W*iWE&K9M~XG2&EV;%;x3+X$<3Z2hq+2;oEcuSJz^)1rVFj^Z%a=$zae;2FKKUj zmZ}%Sv%!jd#(A}1Io%}7T~065d0YQD&$EaymO=88NeV+7y@|L?m&zeg5Z$?`Xx;N8 zWYqT)laau18bMJ1u1mEyN>ZVfiIBsqyP2G;y0(N~dsQje=B*r5)!AXXx9;XHK9Joe zDZao&m*cN=Ug4b$CNFG+5*}!-Isu>{Kx?3)Bnctevkbt!5Qoq93U*&M$;P1efR=b>qoMqLdXbgKVU-Oip8)S2TuB&#?(Ob?>+kCmmdD3a4# zLRz{!cN2I!%k8Y+7hP4YWoYDt-EDEA=qK_=HRJeH7|O_?>Xen0SR4I`trBS|VN{F@ z;}t+LSXD*I^HZDzh{BBxq?)3Qq!=`u=KAaW{!(ms1HfL#5N2y6ZPLyTpF^hlRyS=N z?@r;;QmTLfLG8T(p!BrlD0k$;!$kP)wQREtB<=~&i2y(*h$;#OY?8W58IF@IvIF)j zVs>xniVK!@s%YlaCe@ZdFwjA+j-7f>-=P23#qc!;2h`>E5%siz&7e7Th2Ua7jAv zk$8vXCjnPvttkwjb&Eue0s@>FO?!GGHc%DnLAf%Bh|I#-$e@{K&Fv~i295J;Mjf4U z|1`dn%j1GMq5hdla}cxh)g`bvl8**P<2a?JVmq0w4=ze*XRPXsfAEuUjHjjYCOjcyFlk-SnWk{QO7%^f%;_t6 z3QDBP^@BQe(%vj4L+@_?+9);!k5h{k5GmDM$8aYE9cnu7PgBSTEVDI{No5^rW zp~xIIzuH9RQArQ`nPf~x`~h=_XTRL4Z?-tAZ>DHOYCI0cfvw3kOz3F?o)+yrVv(<2 zN`+)p5~J3Z<@@XI&PkBdK|SOMNhGmrUxKl;GJJlGOwnOl&U#D? z2Y>3v<;>_sZgD5;E&gc2+3JK`TXJT|uMini4?cO4sF8b;!7637_66E`P^fABp5{a6 zFLw~-td-w6IrKVtRTdEjLsh+VFn0O0tn+as#BM)b(-=FO55@k8o1 zb&MXH3{7R-nd)kT83uEV9i$>(zh>kS@L7|bIaR|G(nYl`i@L=|Dl9izUvWs+G%3dF z9gP13?bXg2cy4&{d7$WXfe9_wq5=rl)(rf%slQuEd$ra!wB$dM!}J;ON!AzfM@1lq ziI2;k@LOIa38dAXkjyoN`ExLbhUcVA%qgc47*JJf&)xzb9a`_UCN}zHJ06^6l_ks( z(^+hd0fvC58^BJ&y5`k`s8XQ^qssY+$afL&HnnIm*ul^Rc9zhFM0%IT#^bIM1a|Z* z0l^RGRf78ePoC_J|IcA}ZG9&yUYKdeeBNb54PT1pGYx#KcjYw{@*|kw|J|ee`%YwR z8Zk_uM^Hc@s0{VjUd@^CK~OrBD+x*kQ!> zF0_9CTigKI7wm|dlw0KPYsNVg zlO96LSTK5l9`CISc(_`NdTux}nHqD&S}a!R`c19u$@Y^0D{^!kiA2>9T2<7}lnlS; z76`}WHEbn!@}0HY{3lR+$BU?E1O=gSQ7J)|Q%}B&Zc9c+f&=Ef!I75fs_2^bcxMxWF(IObVi%UK?(K;?%37ta)mo-5xADf6e)eIx z*pk};CugHAaDO;vZ>M*ktHGJTT;qCRXx6vh)7@HPW^PY)0t5HF3(enCA(v3mDOfP2 za!qvY*<7pE3(5E5I}}cv$fhRer&yuJyX@?6LcNlMtq;Fvh(jC-q2yP-c(Z9~j!0KE zDJ4WNJ`jrRnUO>rvhfv!ummS%f9-3Zx@8)7zf@w5)m_xWf>NS3yqT$A zHZ8Zrab=0*G`NaoOmt-8=6ZKoM?{YBOECSskay+j%e<;+dxmWmrQZ<)>`nkC!bvpW<+XD&wJ;?c;k^7o7(}S2V)H@?_JOB_ zV}^ycSAWuyJ{q)$iC+wZZ=E)!eczR<&-lW)`W)ja@u9i0rJ3Z`LsYQTh_(o3ym~AW zGfYQ{=Z2KBf=EZ#8=>=dGXLXHbK=Rm81BDQ;}rj7(79kBPM_uZ^g8g-QATHde1$6m|LvXr(?h-f zj1~$I`}o8S&2_oMYs6vt(mARYou~Oz&%B~(8=jomY&bR}aS-~kjzGH`E$Hb=7}lw2 zP^cRO!sUA*V3i@zyJ&*O){#Y=qrVjaFu@>7-$-P#{sJF%AU7ivQVfBRL;HrD!4j?& z%@jdvFxwo7B8*_@aDbyswl}^zemqQi?awkeS~&S)lQCT5^ooK3x6s*^#~)HZEkjvb z2==Fdde_c#y%joMGZs5PTx_xIi#7UU<~eT;w#e`9X+s-p*R{C3i2D*?8xzy9QGi+G9%%beKyq_U+nnbs8a@`_bZeqCH#*tIgOY4-qBL?q~b+*#ag>O=_snXg4MK) z_D)INrR)g4vm$CU#+sZ*y-QISr*6k((U z`JMV6^5M)NT*{=LPN-mLm>b`UN7q++D7kax2gmvT?r8c>291(yGIY$$^(b9!H|4_e zG-WiQe~-zQjk7=UeAeo*PjR{RcX-L;eUxN3QcMvzG+|#4okS48(iX4~N!x3A#@Zn+ z(;f!?nb)(gTW=3CAjTDD*0-@ITsN?fR(! zvSn470a?0~$8XNK9T*hpDa=oauF1GHeN`Jm0V7ixMT`=%cQW4sPk6JMbiD_x@d0- z%2VG|$(v+IBwDe0Fl_++xKL(t&B2YNSFj;S3RAuw%h>p_7!~GOJ-i}>g~2TRd;H$b z=K2WTY{$9H_nrK#iUv99o#&ueDLR#IG)DU@F|a#ab`yJjF%M4nQF$AA0McH zJ)eb=2!hU#wvK*=!Aa(RXZj`C6C|p0Or|!ZVtR*Cmm(% z*PT|2OdDy12Ohb8+|=lej*77WL?^tD97*~3c^4|x5h&K$BFNyG#W2DX&f(`oC^NIN zu(F=cKC77nlHZ(MUtkkL8nIDMLWV7 zYI*-7Q>*p)ZaBV^minnBtC3o>8V_*|r?*Aet)ruzaGXJ*_uL$fZ=(UVLl1LTX~tEz zl>jCdLxaUAg6e@d=2_BzoOCyw3&QP6P^9Ghq!YWPxVys%jmjY3g4GtzkjxS-O}qGS z77~O0%6|9rEjF-+kf?Q3B-<5?=$A>#z18&SQl)N2dqVA4C&*h>pQR4&R)QJa+%3Mo z&@guzQpyFjW&PW&;Mml<&nG(vHrqP)eh!zv&B@WTi;MXB0+SAhzNYc8MF%857Ur_k z1dHO|v<7drum~d_f>Mc&Ke)vx??S4}bZ4}Rm@Y;lV0*HfEaFGm`$`vIYxDf9L1v@MTQfANmDNfbZVXl05ar~TQ}`Wm?RDQiIqN0 zH3HuEv+Z%PgGc6NamICk5iBGn=@1u>)UB{)6qx)AWgsK`7HB9^#qA?df0%KRLV zC%vvn5@KJ}1y;`XE)EAXgz|%u$!r5&EP+W+up3yTqs&?!!VG3zcr})pw$g?)(K0Q{ zuZVe^uwH#W;UWeM6)yh);Wa;p>O6Qawp>WQL5I0#-UGvjm<=lUT5#Ej7lI`--h@?PVY@J_=)`HFM#aV=A(3TfQM4mE!fVPj04Mp4RuXqak)NRB z4JSYF1_xYkI}{*mZStKkg3!`V?f`0#K_)^}%M{NxYh#3eb-A^1uctbNuw5yuq*GDR zXru#7i=&?Vd=eopF*zzv$BWr{RoVfb*7!PXX#|dYa3IO^{T8)Re)8CJCN#vKSa#&l zKnBzpbv~S2HI%x|bW(N*{dd0oU^Ev>Ev9S=`{3QKouOHgG`I?=J;AofO-)YEKt9i! z$EOc5ufaC_WeQL0=P7zKUUv{S|5?A5X3!RAuvAgkNhX%?pIwF;=i;}?QIh)5N|#}wHh~U&SQRm%t(OgDFj;O1x?YzA>FZ=VyWkJFb`%1s|gyza)=Zv8cntcTO{eG&|j0 z(8_7*$CjByWA*VJUQRq!T+%_EBg__mYrATtVa>e4>WP*~hed=1rpRlzt}|EPVabZ< zVS5_&#sZSnaF+t!9tLOuM=eA^c?SgL_}nY z;-6wXUrIuPv+(OfNd7&AlCi%2`fpfzhT-{yCIlb7`ce+B8~PgzW#S6e4>tM)RwxYF zT>*4X(ev$(R9sXrg3_;zPO@@mdjUDPV6}ez(sI^3(BJvI*zPK#3WYTt-tWZWZI&`Y z$z^XYQv^X(M!m;uH8zk#`sw0w857sfFH8cgnQHNK_rzoaNxq21m8rmH(_2L2UdmMXwpixT>!uQ2h`LF`7l-{wGeJq{fdJY8*70XQKr&Eq6yGUQ<-cg!hWdQIA z=s#SOJBenCX6#LqI#3Zwj~Y)Ecc8boS^v>DIf#+ZHkMIpgLJ*vA$3-T=zxbG{28G- zP;}eeUcdi&=Pqj-OULFGbro?@BLwQrZ>bzb5V9{_^kn-Z&_Hy)08|2rY9{8$fqmBg z7+km80d@TnPwcn3+s?TqoGPgvNhDB8RvxHj7_E-W(N}?&PNu~2^G9U)p~mjS-~FfJ z6UroFV=4v~_#a!|{tXtQS`_;9b&npOG~q0qAWcRC5`EL)8$UY9%v%UCMTIrlDC>Cu;RxuYzwYeGv63956EQ9( ze#nmIm67ri5`TvJ=nv_P9J z$U_0HnFZ4vuYcmNQC$-k+*!ccW%Xbew%+w^DXmMZNU)E4>;We&CF+mj;K+KdkoFFs5-U(~iMq#g|# zxys+j)J74EpOY^NLvwDuSc)2p<9=trPQR5n+3z85@kFfr5I1Pw>{rTt(l(=sLt3wo zd9V&s_4^x~oo5!Vz~eu>#X|jhGLgbdms;sn7zvd(3&>F5yqX7r5$L;?#j$B|N39-z z3HF{5zh>w#XmF|KjDQt!B!3Z^*lrMkE+NLIY;n}|>_)C~>S>z#I zSoOJ`-w5Y9^+cv$Xx<8B=W0FHl<2te^4O%xuBr7q6o{s|9!iyee>q*3(UHPjoU)a} zOiqG8d%1jRUI7H#3XS~S0%s`4AhWWZT%M{cipEix7_w@&jEr(T zVVroMog^--RE+^qX<~AI&)%=1d!1HVqkP6Vg6-JbE2@)EhvE}u=+ScSrD{~9MkeUWY8^9Bza7G zM8HPM1GGTLe3pi7Q87#bU-+^PYi>+J0}y^nD-`{c5YL?+;uek#cL?382w z`L6Tll0qEeF(uLQEsWoMLJxREXmZWLg{VtH)!2xjv{(X|KtRt)HJ$u(pn=WKQe`N2 z`6!UvT3bGc4~1xBG`1k_ek*{(2uj+kI`0qE@sazqLwso}D>pUk&wqAysu!`;;v?xt zA)@FD4i7CVHUaOhMrAU4FjZ^NbYGhBUO49iAWcp(8%T3^ z06K&T`X4|8&gEdMDbvZL(4$)Wx{RQoUbNikwvQfdSlaV-pxWvVr#vG^+${pJ(*q-EuL?V- zt8CU~p$4}XggfVH*+Cpwuakh$l;|x;Go@z9^2Bzl6 zH`o7kFU`f*pv-?2V>{>MrBg9U7|=RCMo$jEHQ*w zLI!@iPzGlHtY2n6nc;r3H~3hdQyb7ceo7eswyP$m4Ot(^LTzW_Vfi86jFP(TUh`pF2T20WMHr) zo(KrJ4)$1HJ{70((Et@EI%vULaV^eN`Z$i{yEC8E*J{HvH^Yy;iO3OC+{ z6y1!9B8aYsn|%UY%|dK5O1n8Mc*F|kN3HEvl5zV$KtK@dos-_MmiqNz41NW($(nA~ z!*;B`okBsBq-*1a0O)>5Baj(2E?b@s^z$3&;YfBCOdEQHw6WY2Ia!ZF0=+KJvRAW{ zxS1~tM=qQsjxz{mVqh+iO8B_^G>DdcdPQd3c6d0HY4Z6p&0$ zVH_sOkQQZVW+mfYeQJ|XV-@Wv+g$iLKs7K>A|%DoxUc}hg6Z^&VhEWE*1xRl7U5;* zyeZ`g4Fk>yF;!PdyKf^+S8n#g{P9LsJfucggGNU|pSJ$fnYVFrlgafS1U@!W%*B>u zz;v*@ssc&Xnbi`NJ3Ez&PyQ~WJtn1tAEFyC2S%cLEixYBcSNNJ$B93K`m)J-XQGym z3o^#zy$TA3^Wr^|)9w_?nIZTaI*(i*{`XtdZA9l-gZ_;-{9?WQcJJT&HSHJ3*aQJ& z_29d3Z23Q=$WXO=Xr@RM^`KOj@dG0AQ)jTC7}(eLdscrzBf*ut0F~w!0*ag1@359F zfhdZ@_%@8XU()~ZD2Xb>MHUdL!=X9x*mQCT)b^+hq!2(6M6QQ=m^X zzCw2NHgL6f{rF|uQ09smBe^XNE8k~JK_}+7_GnSGY|2%XddtOyz`8PSc-iL-x{ZjQ zHQZtQP3n%{GaN`?l-iPFL(WiIp(|>e*@7Qf#)&LFsK-5HLp*L@T9C!7Pk|Hl?1&p) zRejm|z@M1EM}-%cL>)s@`oas%{q|30=C|C3pt29F2s1LW zVlwt)oV1?44J_*jO5RPwQ&;@h@n}yHJ_-Oz-`YYS&d`gK>~uE+huS87H95rrYty!*gq2kFjKD^1{(;%`shGNE?2TpRjI^1lMvKfXGqf@=}{$5yIWH#yx z_A7C0R{tM5$tMvgxnJ}r6x0Ob$@o{Rj)Q7cRah8`XhMZv8oi_>@gCml@bp-f4$%Ym zCB|&`$QoFZD(ZN1BB{2ROmeITE|(?IGuR9N(3xpGG>Wj&{SF(_#=ARn-*V7C0aGO% z)X5bvkox#BF2hu)%HJn)AIFrGORF|X!UClJt9X|#o6#UAY7F}^fh<;Rl`L7OmPSUQ zsl+`o?rOwMsI3kSB+(`q3Qoa>A{DZLrk!WGcf33YxUZn2d$JCk<@R9q@mV)28!mg`BJ!QQ%)6;pq9-a0If zoKE&aENz#8ATIvc*Mj6IF3lBn43?v_wWJm|2hzb~AMD&dng~;?m3byldGYforX6l8 z;4zp?o=J^&ZzdL8{9QcBs(1V7bB@rpQQ;$|{NAOxXLH;?RmV0v+B(DBEW-W0i;P(# zvKejsOjhOR7%g3T9Wp?~=S{#2aV#BEz33(3Wu@ca2WODf!Q==J{`oyhuB+!DL1thC zgE@lAnnm`#BSDwl3$JwZavfE)fYbe%0XAv z$zX@*iZGQA#Td%)uv_TSY^Zja>$~IQwA-Q!bRZ8RVoofKZLwIeXsbn}MXHZYz2p0Q zMNMp+)Q5#dY@r945>SO;Lq~zx$b_P#R+w$Q#NFjl7L;IMJ}54#XpwhnMW|K-X||a9 zPq0OC#y-02_zQM|c#;g;eGl9|c?{CSyZoVXTCFA#z!lejLR|mUNMdh(Ia3W<4|Q2` zZZ4m{q(33a#_9HNAN(#Da~V=N^ivKBE@}6zz3uvK+pc2#V{{nla#*q23xwndcyJU& z)cIe#yf{}N{~2WQ{RUpYr*GnEpyKU8Ay#9B%T$>>FIWJ72L_*g0s2Lu`6AJD2MRTP zIh)u_>z{AZ8kpacxmDj)eJ@-uc=MU4^MP{9*T)u5t=#_gJN>F=M^6r8Z1Hc9N44$# z`ohFg-+#Md*Cxb0D58Q(-fwB0%CxaG==8nuMLT`7s#4R+=E7oS({)Z~_+f24mYXGD zjo68(+68%6`0G7-nV~!5!?hPP)C01%vjsln>A8OF*)pXXqZoZp<1399&1_&ZLp9k66SJKn+W!vC{1JTN*gc$;vDMaj{Ikzm;9WQ%yhuM9ZMF$6%w%n_j*1e-m3$hH`I+2u z-?TE#+4E9yYZ8>dnecfO6&DlpXKxg+ZV%jDGLB7A)L`GX=6T>Jgo%$#NTnXi%Tf+1 z4Q)DY34eceIHV~M%P3tRk?ma#Niu~Xsn;#&fJpxrx@U%UHg!cr;Tv0Eg1nq#EmKL8lfV0lf z_6M7-HrG#~eAq7I`HfDRHI4cZrd@K1XoIj!VWT^h%)q0MVdh3zPFrGG=%ENswbuKLxg%B~xl=2$0mbpMM><$3 z4HH+>P0Pp37HY7r_Uwy$9r*1l*AI=QKW)biC}FuAOq)L(ZmG>K$;t0#$A zPpL^ndqqpTx6Brz@%Vu@2S_%?OC;Yv2&dSySTEX%19AC-G_cxGt=nM6>li+Gz^v?& z?sw`J)%AbY4yCBSYuZbq{7U!YW_xzXe#`t3)5VVH1okRSckFI}EX^~@+yo%;mBkg` zVnT-nj>7{aDJ?Z1^5G$LuX3)@ ze!g4I`;v(yh9mDeD3^`e>hcLd3{{$n+`GKxUQHq*4Rpq-VR^)1qQ3J9i-1rioMX}9 z%wV%33ivyww_`E2Qx*{940W-qI=FTd81K(3wJh^#gD8t2LpGj8Bwjhs*lgh4*_;Gu zav~btFOA=A(zMVdK#Mxu`~<(V&B$x7dxPV+*rax`TLo(=ysI_*Do8J3A*f?yuB1+Gu+c!!z*c70Z&3AVEqcS=OmC$(abljnqS7qiUfBsgN@F?F-fs z&#DwVs`bzcuI>HWq_OErV;U|&29Q3IvBF^CxVCU@=o-r`Vn<#5I~aqa9#DG4^|}Gn zJP3G@ys%}elfujnEKp_{@I&|epp`2>(S)x^^M9Fyj5TE%t&9XP#dL%@a$jDTT`DON z4wBzq^5eV7XV*GjN%MK(!{)0Y4E=eywx2@;du^Pawz*g&Fd5G1U-~T*AIpTmY5|YU zfpWu#qMzxlAF00F#EY1VVtClD2knk7!SKdrbftmc35g`CiiEHt5i646LF(kHV#r-& ze+;~^7$x8OQ`PEpL`|}M6?gN`F; zm#p}GQbJ1s2#~|#Y@K#>yZF>r;rNT(2Wb_dda6Ez@KzeYFH`Q`8MFPjbSw&{SJZc| z5q1ygKFxhD{jis}2K#>Zd(&leKtrD5Ej*M*>vtzW#C>OgxqCn$APYBCEu^~}*&p28 zuaG8S!iRxus&#&qaj7tP$c!)gq)Z$^O#Bx(q5e~Q*%^IK(c4FcnK65EaiK0#sYfZ> z{6$D#&g!@zKlAHTjP2}(wmz7I>FSoR3x}Dg!X)X z3Hi*LQ>D6B-7}Y-(^LAm_;dtnt2G$5#=Lxn&$JiU5Np2Z3x4LGQ!?=56G_h!=4^Kh z3+#DiW%}piRYJ>n_>l4ro0MXb));Bjd&cyZ3hkA5mP( z1aY^VF9~jOZ7eGAE0m$Eek>IpZ&?{Wyc`P8Pe-_Q3HOipkX0OC0r2CmSy>!-X6@?a zn&X1I3u;0+3Pk(Wz*cyli40~;dwA*rvKS2OW?b0ELmdF7I`$NU6ABwMG3@GH_E_t) z;a>b7asnUJanwOfMBhkv75^%oB@iUHXyM20W{|0Dhl67pwFcTSy$sEiceDTNbEE^l znzgwe4$l|L{fEM;I+DfB z>Nocec@#5A^n*w7gu4#UGjkfvb1%Bs4_uKwg5lp#ZKNcFVqXsBO=VdIr(hLF#N?cs z&qd>(B^H#9`g9GzG$e59J3dW6SDODPg#GvPV;tIj;Vc?|-R1h&l?+QWI(pqLpv;&~ zB^;VW84;kZA~i^&Vo94b@WQx15EBjWCr0g#a!0_IAgJchObaUgb45C<^B(4pxU0HX#FFdvR!PpjTtme$?d&<+M^^vsr>S2WF`aYzW52N*lA?-3RGcw|M?8r+2XY zq=CoffuZD>?mg_!XqwOXR|{Z$=4QEgg{u%1OEO%=kwd@BQ*=qpn`>ot|8PEZW`RAp zEhbNC{Y&NNpA_&vX`mn2KmX^)1Sv1<|NhAUMj;|{RuGtzPm_Pt$yU~`f6KaYqQDk} zkwoM{uN15RAJ;ZFH}#gMY~0);vrDz0OQocw-G01n)6vmI>%UiVPlGv||2g2bFz$Yg zoDP$Z$rG9Y36n+?Ma&H(QcXxz4z4bTiDIh|QeFM_{jP*;_@((1)P1$!|56J&&~9o_ z?Oc1KhdCc;*+2cwbx;xy_7Orgv|26J+%fvT5o|fgDlB7`J6pKUM+%aKYso}b$VnKe zVRpEjJ+Go@Mahk`>a|OaROP<`}dY_fBR<_5Ew{!A^yD-L5!S@7f}+R2|$w%h@CI! z*-ynYq2d}sdV(I284n*JmJM2~<@^ESDxMwTI*{@YG5-J769Pc$fhW*){edWxucH%s zGVtMuR;$C2F|bgTddu2=@2F_+W3}q|<(&B;tKB~aG2~fF463VlC|U;@Ew>^LHOV9t zF?s@U_tIB^~AwUb+H*%*E-S zACk5OP}K52D1u*$FIZ_wI1321plmjL?Q|F^=j|=laCE!6J?N|bjB<@rL=xUEUcP=2 zrwSH>H!}w(K32t3lUpzJwDYpn62w7RpB{dzgWK`+W3;x$V3tKe0&f0WFRF!pD}YAx z`TbEaZx}lH-(rLk59oV+a!650S4{2c~>Yl-iZ$1y!f&a3_fi%ne@CLC6Dt+~>51YS=* zniF_RG9gwMOhs8@1P!KVXK789SlUg*Y(LQ0*eK@L?kS-ZXHo@(oq6tb2Gn#Qr&0?w zK~~SiF?enk8yc3v#4w@%$blk`jG74Ukn8wzH%&}Ic9gD*ccrUTR*i?tC&FjEtKiIgY87QY>X4)Ru$>~*{{|1fX6a| z6Z6%7_;+=qf+m!sch7gMwEdq*Kp65<7Ftv!Wx<~<171JY!%sW>MR|@Xuq=ek?vA!_IHuDU-2K|) z4K!UTv{1In+sy&OwMeO3$0Dt|6G)3YoUb@QUK$72Ci$3)QnwF3zoRv4a!HCyBA;D-dB%h7k>voxlD+=M>=pu4yoh&>J*sp!O zCHitc!$JD^^|H8n^%-c>^XK2Uj;|~D*ay$+qQ!7b?!S>#thoQIkl7y8MceOh+@{Z@ z>1gQi`T0b^l>w#rko<$T`diTaZ&#$9)B?(6FI>}s83i2ZjOD#r8gS=r2CyK+Na2n! zN=nOtS&dp?FR2+IyjmCmgdzS)aX~Ak?xn}aLOGp&zALVVyyk$XE@+2*)hgB)18!(9 zA8ln#1pKI7pJzzKPDP9hO7W0ARSLok;D!%6VRBLwjrBrVsNAMz9H|YGgwnLPiB`c|Z8Nq%~l&wtv2fQ0M!HVj@+O60sB;PT^r|E!lwbvQjv3 zW)47`4ngkqOzT^WUnLYo;7p`r}ds}dRQ7WS_$AJn}G$Uch5f-Vb&49 zp7x%vEw6|XhO_vGCuYdylsvn!iWa)v4N&Ion1Cm1U}*I{cYQ(kIx01pnx#xr{j<_` z%;HOWz8)*Aro!P8RnfDdBq|2U@3&o*M{7zFzK54%+4+mfy>UPf3=Qp#CQ|O)xOY!xt%N7V`WFSuZL|P9UknBJDp6z4r~&x4xIL#{V&S&-0>~%qt9XW_0uwxF zaPRnQkpiaVLc?a*WJ5c(OkD*k5^i>6Un9o&tVHpTQDB$?>|k_D=(Xnis9Fj-jjZt_ z>0c3FiYfc_SZpr>!;`JhQhRGg6lCv{G?9*x3W%sa>yZ(`rfU?-ifHEQ*?{2TopsR*3K&`sf?iuv(ep^%2-iW zA=&$%1f}JR-0k`8d5DUc+IYR2EYbC zIiY6-F0J523TZ<-6df9wtHYU_p^x#Fl-t4czL?C{L<%V=AU<4e$F{b%8n~gHk95NZ zyxgDl4-OtyoTg}w4i7^S5D?HYs}U%5&w7BoD{yddgp`y}(r8w{;ZB}^@e@%*4Pvl$ zg8qdYN(rLSTzO{TPhw(ro*zkgR26FC_<#SDmRmsJo7s)T=XxQ2H#S{|l#;pWi(mgF zNdd>)E2{jC8*S|(Vi#l`cL?1}N+J~z{6TM9aI@F1?B3-U3@n`5qzVVf|x_zHZ(lbJ`NRy+a<>fa`>p3rWez< z48gkr6%QK%KCKHU`lUoA6O?a@AJ?W@%(vm8`&a%>L!wf}Izmk~He{Wzt99OzMi8buD zka87ofKv9ZL8oc0#+2sw*4LA-^fkhr-!Hk`T(EiG*&*g%5JZY2DQADBXnfo=)(Cjz zeBHX8bz-G7TnZ9y&TmSi_%lbyh2KaO@T6urW87o^H&A%v0;F!uGsWI=@KyZfXezrpK6>1 zth5sG#UNrX-om!R+VsCv%C?DMef076vEgM3fJ0pZ^A{WU({5Aw$JlO>y@#qYr-_r) z{cRN}_>l0#kKsAfKEAbR<5jbrXX*4RfD3B(Zt6*jJQ2#m-y|fAn8Ae(#Uo7P=3p&t z!QOiK>TGQZ0`rd9;(M4$qhSm`yna1>`_XZYAQ6rC(UO}-g#9`yzrK^L7)Ku`(*MxU zT;zs}m3SodY2oHzxa{lR2@C1_jTsz;Leq)`53agEl-9RG014iRvQWdN@x(3zdSe3qC`Eq{mu`}lPGBSl} zkni2+|GWKHpY9QWA zl0((;G5SNk_Wiq$$8b}1PCx#FiNzwQe9t$2v7J7!2prs~XO4(cp(~@HGIVu*J*ysR`tL_{DZJsa}MnxcN>%VchVOj0rk4JCp^ zUJaEh8J6klE$rz9%sTK4dNo>N$>_#qlR`AO*hf3?=tBzZd#yu__e-$n(Is4b5Q`Cw zb&3wX$i4t6agm6KPJ)cGE=-NJCH&kMDVn#Noso?2uyAAv6;R2n5|m`6N-p@7M^oY> z5f&K>NGrjhk}d5Y(75>x_ASpHq(Q%2$BA4IF>N+qY!nR_|iifDs5X7emplf6bEtUT|7m2x( z3%taba74r;gDXo|8CQau!jJf*7U0F%tr$t9ki1R}EZevbBRkuXm1FK$n>KHQ!DFW* zFfvPG@CDiQS>Q4P87{edWz+XTK*OR6l!%m162AFw*k}fIy}8XQ;B|c9DO>qM$=}^F@4=BWRstLar)qO6z!WeMl<(rc9bWAUO{aI2+8zVpl1w3U;WCD#XltgPG*apUtNu85Ey ziw9S)?1FwP-i;Yw$$j0dnlVMk@4xC+G;p*Z9 zdk1IC*n9(-#YzkCj)c8E+d89GO(XQPpWJ)B)!;ppIqf%A?~?5ASY$gfQ%o}FBYR?hZtaCCyJYa=vpr~?PrF1YwI ztat^HkWm2Ni>uJQeqA`ZG=fuo2Q=w42|lr<2Nu0{_83A_veBYbA6V(B6mM7Zh%gn$ z*B?TxP!Bx@b%2|@6J&)kxOVCqGK$QBm*9; z=-j&n)JRyFk(NsgiN;IB%Y)M!(8i@MYTDL;Q$rUta&>`YU0b-e9gIf-L|zq20=(Hh z67}o5b3bSx>-6S|r8x9WjF=)#pB9U`&X?2ghW6bf~ zb949k=9A9_4OA>ApqNs}4j-d3t#{(8xm#fpwhnFv*LK74DJ2V!Pp^S1-LK5O?(F1%7G1`} z|Ff8gFI-i;r)*dYvxm8XpB#)$J1)}Gm`yAKg%NoD`Zb0P8-}2upu#8Ey>EtqQMD#8 z(2&n>FVuSvmTx|nzc0=tzQ2H(Gu9zCJ?}k9@!=fXb%D%F7b}Rxc0xSY70{;&LSYqg#pe)4O zTbFR){55hXa|0*$tiYV*`wEdfC3TY>?~TD-2I1g2rk*E`96g7OtOB7>c4ji-2|?Cd3~u8J=hib2l2t_NM!M{b z_6(y-pg_UD*~MMbs{5K_d>miY8}%DB#h%9n+Jj%y5?klTBaob&jM=ki!`$2)>({SG zaB%RCAJjJ-K~S_0cobu(Amvc3p#%ziFAEFP7SNVggqFGqq7PM1-Ru< z%%Q9t5@Jg{f})c`$x7+xyFbz*pP*k?4{W{o7Fwp&(U8a#SLX((Wo-#fWwM}SYk4*K-Xh7tRI)`GV zEE~S!{Y}x@z2m^7{2Hjl#HqoK~Nj2NW#(e zQ!#VXC9>$s9}J>`-{I-gr#QM{23*=rz`Il>)FprFmWE1rOL4J!bsvRy(G^of5jR_O z%g>6&;t@SDV8Ic{nbgH!efptmo5oPj4#a|y9+xb5Y7hzG0+)sk zFwv62^D8^ispD`wizcb!Bp$`Q|zXb?l5CcOweMME7`@|64qL^bp6l zjz+is^AIbg2YW{cm}zkF==^5%AGa29Whtg`q*1r$KsX!7;qB$axD)Z`eAAYFE!eYS z1ell+r%s)Mt*tG_jT_|yu#{6Yi_s>d< z8`KrG96fM5Ffs2Lz=4isJ4_f{SM>Yp+l{8|mZX&`lN)idm8SsSM`mK^)Wul7U@G@N*@g(0d zEdsBsvLfWkfwqFOQvMI0-wmPv|9k`p@O})h$H8z7CVPSUtm*py{~CO|9>u|gKYjXy zi4!Mc?b@~I-Mcp?PoDf+xFraTc~b-|K0dtPhY0;~FxKyip3XLig9!vV0pw2Q3x$&$ z6^bQf0S;LM1Vw$!7h*FV3dm~cW7I3yRBBkH|B`o8<6mR_irt9HC}NEuQJh0Q{W}gB zj>cAo5=XxzE5vIG{C@5AXSj|$fx~l~k}DW`Hj*_)W=1;FDSm*Orm94PB#b}45feAw zMD0#faAfN&7;7nt%7^>hK+n#7aB0tK-00pE9uDTY^*AzU)^8^6cAE)JO?9X!DUg=0 z5NSy<*g3y1rf<55otuuMz2hjT6^?w3)SQA`P$e>*3LVHf|i= zj?e)vu+U_vezI`5xCFD;k#?lKCD!jhjIOTLpdv4goU9CTRh9^@YH_!1LO~9$-?)S3 z!#82mj83SerHqIdm(ZbeKlnX8k9R?%pl?(7-I^VB6)*f^p%yHF3?Z}g6?lc z%XZVSfAu=_8|04q8U^kWgu)ygK6nWB9*ePKQ7=^1S4Z+EFAVP10~g8i|n9-$P zv3@FcfY!)?=~#2{F6{nZhf^E+!iWYWByu(K-Bt8(`y0C!%|^=(Zs=es7SdI$<=j$a zF_f4>p=NX;ui}K3jjLhl`AxX>&=Lpl_`|aH7*sVSmxIK>Wu&I%lMx)QEc#5}gf3I% zprNh?B}F1+iJ(Y~3BZEB?Xl_RIcz=n65A&@6jA~a3gfYDTwf?^JK)f{^>C_D2~tG% ztQp(_b5C5y_9H&9A8S{rj(9eLoOtY?I~)_%o`$q}JM2BN1&yjntPfgGXSOZF<{KZ- zam;3HS~vi@owq^*SHh{qVvvLh~^ zT8CZzhhnmuwnRULvr=mH;O0^pcaFZH`!X0U`dAb$!0xdK5CSPFDOk5|9S$Bmh-S^2 ziQ-4FKH$I2(vVg$!1Tql@#I-gJPgmZ@)PpX@bczy(O*fuC}@~r&dRy4BU1kVnK*KG zu&Zf+r#FK{-3l^8v1`RFQQojxa}1d@35F7+{r_`pY+oz_KMDa!w`q*$hkN(#!OP1F zRjO3M=+UD^)bLbin{(1Fz*%@>Va<2)GU)tIzJSZUvp%W+; zi$7uJ^VXN#c}0+AMG199Lca(RCU0n+_`M6j=lB8*a>-VOG_I^Hx+WqXl>}Oe(fGjN z{?;F#A`|eRJReDR^qc2-M2s+QTNW%>0BdV&Y}v8}3}N)^CLzM(1BwklE%gP?KHH6t ziJyrywt}U)BE{WmJJ{9l8=vXECI09cZa4lFLw8D5s~u zv!kGEfzA!9A~PWr=kAduM@fmRihirklgrfB(AQLkoV+rsH5-P$O-zsx{ScRL6?Ky) zgst09oZdPH)+R)-(7bgm95Kqng{)}faO<{jNxf9)m>~TfmMuPx43*kgxq1MMi4D}DettDi#-(vGWyUA5!4!I%g z1}zd|$P+P?ot_GUJ~xpYK)p(pQQ6c88fwaP?W7?iD-Rtb8+7T>l3YRNAmshW;?H_| zkEHXAuype_xYe_SDt!wmsTrVg8y6^3o%b)_lxY1V;3eben&}w3<}@^D-p5XEMbqlK z60VFuBxDRupYa4=rZNT&>mwqCn89+S&8x@2(nyQ0nLKpO8)3wd=8)yZ;yPhd zc9Mln-5QYNWaHiQmt_}a&;IcU#Ky*oG~sP*Y%pfb7%<<3Sy|u4b>^Q7E*CmAI^g7$ zqwr{IM@k7Yx$pQA0FjYbLDkyLuyWTa3~5)pSUD+06^chDO~*Nqky9w)cPfWs0IEQi ze#J~{gSkhH*+qIZHKx&Ic$m7@2Jk_vs7NsNO-@ymJ-p?Gu}#f98*ip=w;qR%^t zM%gTjz%PzKNikNK=c2E#FGh?Qfd*tze&omzeE$6T7oRCRd=>!~0Tuxkf&V80ti{kb zMw>(KYKG72i+@`!!=Xj1Fuu!nSSU$;>gIMB9drjb9>0U8c{em|Xo*#8iw`6r_!TBk znSlfaYZBN{utDvD%asx1kALRR!Ku5ibAySKn+_EU%3QBmcPyAQipnaH7HcRL_Zf=k z3QpL!WjMA>9*pg0pCD5phjvqrVCxu%+)hc567cXe7B1gJv5Z2HkdjVPAsHyEX`zlw zXUtnN71gy16D=Pe9Kwuw8}R&n7`Z{=LsmfCw0A0uJL{vBv>|KcWH#eentCRF|LJIa>XM*Fk z242Bo_(LcuGH>exyYL{&k%8aA$50n1A2kk-(Gu97@7wF+x`Cj>vm{28-x{pmZz zQ(O_Qj6AgTOwe`s5=Uz&nlSHsX*t1-A;O%%B079u|QIo7XUgKLj`5E+wz zOd@@_G72Q{vOxEdb1|j2vxK__KJKg=j)j-9F!$gNB%Pdt+5a4)*eE%u)L;~zoSY^e zX0fdxJpx$~D z3(|e_-)UHU&k0AK!%)shPW*p7a@hzNC1NoCY3|$>DDUNpMe3b0UXx zE!7G?EjZG)7(S|dq5D*s1l%JgPDdmt`8I8NNrZ`en z;L^Bu?(>zaf(|`eVCKI2xPJT+;>IiQsC}z7up53%&t}>Vus+3D1ujFbO`+41tB>tlawdO4cf<8(KmvCuAfLZpwL*ja2>n}U7bw|t&=K_ zT`+U5J~V4sqe$~)Js5|*a|U72jtkJR>rF)MGBmI(Zh@ASMAl&e@sQQ9L-dC`xSXrV zp4WReJwG_$lk!AhSW#lH&;Y;b4nHR+SD}Q~NJZ}p$pK`f#E^2)JH(Pg4x>O4P3~#3 z31e;v_bi8NfKiKwz)+#!eqsc^CUxsVP3AOW{25}ryJYjl@)~9)v}VaFB;r%CbL;^Y zfsznl+{ta&ut7u;wP?`-)2B~IjT$vdD#{+KAOiX}?$~*}Hr~E@g?qPe!OPnRpJS8g z-luP9Ej?IPw?pHmjbU$B3ubzfR>cJ!sJV>8g)8nzC0Cfza;m6N*QDU2D944<;5E3^ zFpQKI1yE4chphw&ZcyC`dybz&9K|gYDI!?bF8ofUXNyy(F*t8r6Nf2|+T+(BK@lR! zwWuw+_8tNg39H&79kaVE0^bDzK7DgARyyLpZ@DkoR%v;r-@AA3mO3})JNwnES0XPE zjI!U~fB%i4Lx+}Ho;|@Lz#_mRz#_mRAVxq^${;?*ZvP_!`p%=!xaKY#e{ld8JZE5R z`^trXu#;fz*1sF@KAwyI3#Y?E{Z@%Rrjsk4NB8a^Rw)sQX{1J*C!^(&Flzp&zF2Y0 z3u-!*U|!h*ikwVDhKJ(h)}_$4ZHTo4oymJi0-oN!jXMfF9G-m>OZL7-rK(oYB+b~Y zY_UL02>*NJGNk)x_){=$LlbjUAqypbS{%Yc0&(Ks`M7!S1FqcIj=Dy<8rdm<=g_0m zAiT*`gHzL1s9RMV(H~#o;nO>~@GLE#7-9r(j}FX0hau~b$R*;)%nVgcG>}Es9YMi9 z*td290wdyaZtomukVOSUq?BAsn{2Ya`4qwkdAZOFkA~Ez5QKb+gUHx~f{;gq zei8*)R!CPSEkd3MLs@+{JWog>VUdK0galK|Ck?@dQ@*I?&;%Y7oS7F-e)-8I-Q`o) zF}!a>=#)Vqg!@0oo!d8{b6^W*A76`91wEKlGD1vPAf8;?i_R^xvHzdunACR^;uQ^G zVP=lRh#>fR-@vR<15vHYMKrCED`XP#GO>N}WGp%G0!EcgDE>ix=qL#h{LTk&Uf#mY z0X~q^dy4Tbjq_$8M9_=-xP3DXjV>&}?rB>9gDTWNBY-MN0G_*)g#0udSUDXN|2Y6v zQzwjULc*}TRhF3;i0OSiu>O({tq1Zq-mNW^a-#9z)=iuu*HKUX(s1L<9GH^Ua3Wdy z1c!tmF+JB}DLEz#A!$rY(uj&n7767fkk0ENcf-q!#k%nWFlE~{C~D}Tvbi}_<@tz? z49C^OtC6VQ5I6s6LxuS`IA<`H9S?$mu`yxdNSfGE6lnGZUV7gp3`e3;tvl#mODnJa zOuX}cg4=hZahQU)@7#AD@K7)yhUvQtoq7v33hI zFkXSn&(7hp?;`ZF$tA$W?QzIzOD^xe79V2-?8@ZUPnyP*mQ8Zs@%A#dU+fRy#K?-5Z54eS%-R_lKj7S~Ejoa5Gp&*^s6pzS8S^7=^)GX?vZ$ooT zKmQ)hdJRTRhWz8pi-;i}S%~I`jSv#y_3A3-O`Cz^H(wL!LY8h6hlokc`YXxkR6ITv zEo}*9jNGG)>!GQ0nv07R+Qxr;g0*j=iTKpS$nnEa&qAjddBjx6j0{E+#R|$wyMZCy zZWU@nydy`N^MVRm(~9f-m#v&8Y0eWYF)^V?rWij)WqivN^h56b!roxxqM6uu=o(_k zOiP;9r0BjN+;fO*s#H)|B1h|1QsqDIjI5%D$SNQ^rMLy2L}gJ{RzVR`#LV%?0-Q}h z4+4xp@!h+3`QIHsVq}a(P+2jBqNAfl?&TO4bHj!W6DhA$u3Y&?4D~nYlX>45!LbqZ z=l)gmky5FIhK);pQivN=HLQ*%^jA`nQB;RLDGHR8xU$Nq*|44HudH(HxsnkG3kwrj z+A;Sx^T!Yl;y*FD!F>0Zl$R_gCMqg&Ok9>}vuJtoImxYLzN|WBos(>%w0zO}MfXdq zCqB-U|5XxmO<%u$E&AI|3cIaaxBgXz{$0n(+yhK}CdR^w!H7*i4gtm`qP)C3eN)Pn zD&P2Vqx-U+nP&v!O^5k@Vb&O%ehdPPtc&p^!no3ubh-IsM)Pa-$`V80;krr5=)%2C zBb_ytLk4qLXlsq&6d``^6j4QclbzoV)fGs+ND@_=WAT7Fjfze#3OZd<)s8uw_ z$Jsp_;MQk4mP{Q8D`OQz_}oMvkDj>o?il*@_k;-vj(4vZ0|zTZ#0TBSP>)_X^U4p$ zJYNwplqZnlN~3<80oc{v1g?&DsHCGxFGSKjPm99VS$#2i-8CHDasd6BPKBm~fJZ2Z z!kY1`QLo($>{vGiCZxa@mnVcQI#LKyaAoayOj~^f(mM6=4+;3&+lsZ%g?M;$74}|x z4eQ3EaCq-L*cho%6GEiNyuyiMAhxmvJK{$J*3A4 zVeibI7`OcqR*ap6b}mOy^B2@A+_`fnn7<#HA|fJ0ZV5JS+=zDV+95tZ{znd{LVa^7 zz`YE)bt)?<$g9&jhnG#(5&yBRva8d( zhGH-=DJedVo{B}3IwUI#GjMgwK}2Q=p&WS;eLFsoI4eX5W7*0J#+d_m&}}JMFEW6X zld{t?Xnu@UWnqig(yH;&(#g6BP**BUJe5|yq~qd`XFVcL)-M_kxl-PTTE?~|RWJV- z;gm!cLsHDgI@2~s6aA)7L8$RtbQ#zn_Z`B?C5Cb`=-VXk0;k73z|dX;aMd>n9S6-o zw-$C#mdpKQ^?$G%3s#*izwZi`(5}`3d&btp;6YQdVnkmkVL!%nt1D7Gk!*rXq$u4U zP%>(Z%^Uhdy`*bOR%)g->?Nz^BFR)l%1X?vP_ayuK2UE zoF>`R-v9wdu)!#TFn_;7+PZZs&YU@emMvSd0={42g0W-#AqdQ$KOf8=E3Et>@c$H@ zGVa1RZ{GY7C2?7&8pDjq-jlleN&beFyO}L5NO6JzzzFGlR=-F~5Y6_X(SqA3=PM zJcg0`tWHkmq95~sEDWpIV<B!W%wmMrbvfhiRkRlS>`?=`TY*pG7SS;CFflj=ze6 zX7xVg^M5ER<&hCw86{ZOX^DxW`@(b3QarqQ9?^+CVXn=`=cq)gEe$;*9f*~;8J9iA z7S{RWWHL{#k?=nv8P%Ki!}!6S^Miy+k;?(cb|bNM@;SK8^Tgg|TQRxES{O;`JikJbyZ!+GLji`<7QxD1~X;Kmy>d0KOu?yHOXt58uzwy%dX z-Y4<;1rwycxo94YkhXEh-ubPHGcrngXhOnwtsS0-3GpQh9U(MTCFUk1H#Hmw%w9MJ zW}3OAo{m=TR@?@&6$-L(ci&QUn!FQ=#!fhV?K0X`lMvSM!m)qrF(mT!ux!~vB89|S z@g$7YsfM0Cy5fN6BHZ`9juZ;~uA!numP4vgQ^=)cRJAI>%q-7zO|s)+`5fHXw-X^m zUNxc^B7NHuDI}VXG&GH>;_s2OC2DZs*l`FPC5|vz1$7hj8_@|1C|G!)_cI!EH|R(R zErmi3Y&uNG>0Q&Hnr9TCq-Bob>()}x@y2)%auzoqMxkaK!y+xSyA?%%`RHL{h%tX+ z;e18w{)lo6C2XWwrNlTx;_)!#4f6;|%}k*ClH#-_eLx0}o)1z=fAu6NND$m#I}Z&5asfu|#8RxHPw9MA6W{P(+hD2nxG<|) znFxU!`1sa`R!6-;WVB?poCI%dKkh@XLV7l)gpm7=5XsZ@ES4scEgR3T9!BVNH(00@ z#BwTBFn=eTTzZk~J#v*(&9)-zNI)*<0w^XA7v|Nf=C|^t88tmUXc4wqJQ+B-xx**7l1s}o#d~*T4LsjQ!Lsc}?AtmV zD$Grrm$Wi&;~Ok1adWhlLA9pCv0+sdx(;22h2sXo+~hPm*B5_ZpQp}AqE3zk91pW{NSVHIzxzMFdlMzxgF2P-0U2*c{$x=%F{)ZXMxuZvqiiGy| z_V!@n)@f*HutNMFbm^JrQVe-3U%4UW7!1H|)WL53(S39FT zQmE`^I8r8X?40X`)_uI2G8d;m`sGd880ioI}<> zhK2@A4%KSgLnn_s$!$ssm8%$u$e`o|MgYxFQALvw*=dQ0q~P%B6ldsDL<-Xs362;O z=c2+RE?SJ+3@5YVWKcn?eE3{mhn+JwK~}#3HtgAnHdYd(5EaY}y@&h$36Rrtg@IHs z-o7mmwlVFbW=qkJY!bjmk?@AdG!6N$d_?eqaQl7`O0p^2;`Cxnc^r`3rsCbE=>quoC8+Zj=l^7HSRaaIc7gSdyi#?vbr=FOc^+Q){)@}+-jqoSafuwSqF0=lml#N) zteRmHa*_40OqW;`yoTazG0&K9o0N2{Flk5|Y`y$eWEmrFU0z8IwQE@5imx}09Xo~A zwfp4~@!|p{Y%@PcAdQ|^N_y3x&GeCX zhlnh#B%4f&^u?Irqwp@w3vc}+Vc}>jdAdkmh&Z29IB+e1;wZVJYZJ{P=Zo)VCIsQ% z6ZascMC4)fTEz=g@QA#*9Xi=)V%ytCn7i#h){kid#c%k)6lA9(IfGC98ClzuHYN^P z6A>{aS_ zq%2b~5MEjsE*w3AD6(QKpAya;K0nzH`*vPIhO7y?^l6rRu+;yVc;)4TY1TdXDcNV#CIeq$cMXIo6SOi!Eeli3Y@`6!3WBw%bCGA)ASb6OfJzrA0 zMaz`8&$RJ1?R;q+hTwVr{CT-o(bCcq{rmSvw{G3=?AfzFmKb8ZUoh{7>eZ{m$;nA% zrBW_zgvH*fx(d;Wcz|4OOv?*qX1nh96I6w{`3 z#O|(}aCpTQOdH?;a}s0)`dq|gpKut|91f>qfjY|{O-58S!gDByr=}jNmME|)p$!UZ zZD2%N;6;*5X~F%7jMYrl2qxpkc>?3xuSlF zh2+CO&i@J~O`M0L*NHsiF|<)ZGA+nT4&wAeN9NPHa3MPJzkK@VH7XT*3)KRs=#KGl&>6Mm6j5-5d!iensGu zGnhSlG0xw8Lj)DSP^+cUcqLyuX&C5h(R%)fgxFY-FkiyZs8G8<>kjjw(Y9^dLhc_V zHUIugp7GDmXy}xen2#LhBW=x^HPF)15(P0Wug=eKzKU*564FbPyP`ajhogm-E~{WF z3`KD4d&np;@wUiGm}ys7*Qy6&WfijSh=P~j86=DEMUFmNyUc`*vJA!Y3a4Pqjo{Is zQL*WLj=78*?_Y|J>#7++QC6i`nbHnONh`wGta53mzs+%B3J%Phf+*u=Xx*#z$jx5w9$oOyaW5QRISOInpRi)~P}rH%{Y36U6QY9g z$~PD`_AW4>XD5?XtJZ=xF$o`iwqf^)ju_Y37H@9u$GDNx@i;iK&>GI~=nFGkIWx>& zKOSeA&BnRq-Ox2;8dfcx1RFyIiX2CxTL1t+07*naRQ2`&XAc|z9D8B7+t(8$;vvcE zxudSNHvFGnz?~;?uxeUdgN=#dcKzmE@HjGXY2l7Kb?l10KLyr$Xli2$@5=$W{>&F0 zB#5Exlo&jH7lr0E^hEWd-rq#uZe#H#SrHSKPk>D^OB9MV7ZgYe1QeW`uAh(>k4-a& zV*ed~SUQhDheid@@|^Vd*tzKhV(B^0xCr(44x?*8mP;3RVNqzViLAD4~R>$M3F-!UF1x|~8sJ56{VT7xmu)*vuGlV?p(4#Em%Wb=DP@BubxQsQ zD{q#J6>`_1W3X?>NnHJSAHAB`;6TsO=-<6L49KE7EbuL^ojZ+eo8dUH&_mRmvXve5 zm89|Z-A-)X-vv{9*dySpySqn$w=QCy>p_(04Z)C0S{ zqTxJn9R}8C+{~7q_(>0O`BorgwVT4dS@HX-^qTCM?~MQ>oE$W0kjVYU_wK8-_8DO( z6Az=j#Eg}3J+pW3UR14GmA)Hiiv)k=)nm`I2>fXXbm-6lj*gBZp(XQ8&)hqV`&cH= z{7L4Eo|7!YoGV&he7@*bvdyy2iQ8m^#B8cK0->RyWfDV-aCE|i379!^CX`7jj!6tL z^e3i_j0}f`c-f%0I~`mq(1EEQk5H`;Q+}qQKx}3dsm9r1F9~ z=XWH|kT$G{>Y={!6=S*T7{BcbYPcQ5p`#~ox8`N0bqhoD34eeQ@;n<*)9JBW-~t2Zv$P zz{z;LdmvWS*T(Grt|%nSqwCFh>XFm1#=ybt$l9g^;OSzR)MyMX)vveU67q5=<^Us@ zq#qyUVw;Uin`!;m1~BOx=eJ z8S-5Q!35@a?=t$46 zZ(On_M;Wc$o8tJh!#IEZ2zoe=f^re-qzobs?mqE>w44T9>f6&Bw0Ppm>Y!6=N36Z{ z3Z574B7H>5e7AHNQBR4OH;1~OKGYRBh>HA7ZoR5v^n&S_+TF2uW8`*W*TP;nvR(^1 z>WWB<|BNJ_G8+Fi1&bEVqL_09-x67=e%QEp9^Mv-LHFSJ20S>P+q6}K@#xU2IT1s- zBR6a`1DjT6VD5??xbW|EoZmT9nFHZUgv3t8~F4Va3}acNlj?@8=mLgd`C5rmZt1iWk! zR)*DE;_{7_MTjAK=bCiK%qgCjvhpytPVb5xb7V=;gO4n-pO0*sQ`z<~oxFTkGpn zMHZ!uJE_ue`_nM_8RyHq%NeT<#x-nUVBk-`ei>4TA>3I~=x1C_1!L0J*B22)7cXAK z;K75zelr$eQ(BHChDt-`8yx4zTA)K`7hLo`gY$D0r zudGM`oXNFTN-{o^D-fNslyJ*wo+~W}4P~+p$SfWS-c(>f0ma2h zR*4w?-eb|K`!GcK-^7USy>aQ`arEkCNiO6TKvzl;sw&Knwj{)oA8;Xbi;0Bz*`Y|J zpwt}c%H#w0`z}QejmMS*N;MmG#JtoUvEy~PSpR=aS2I&TV*R>Z zh$EM6i~c>0i5_+$_byzLRKL5w4_D7iy1){nUC}KE<_-E{;e=P{IB^Ts%$f$*7T3|V zQh`87ntbZ25>u3}Pz9qFEJgK-L`1J>_Y&o}3TjYg+|Xr_tGqBG6|_qJkY%dmM0;ZH z>}`ll)55az4=}cQCCEsVW*cFW=C=+Z zq_t7enK3U;CQvP7;{7XsMAtHL!K;va$jGMW8VQ>pc`t_-33a(ra%k0H8ElpPu>JbK zh-ZjWvMdsihP-4F3O?b;r2%CNI;nzyVtO%2fh>hA_3cFYpXwh+9n;RdM9YV_@$i`s zViHmykdjAbYX`WuY6L?qH6n@%zlk_fDrh!f9`1A-h39v#;Pw+=#HHpyMMDP`)^>1q zt`Ae)0vDBx(0T02Bk0oqHjbXTOO`5fsMp9HEy?AmiaZy?hYTQrz6_Dy1^p;!*x{OA zBw;TFWtGyO4U$-Lh|p_0XdasPoCNQ?7jfhMOQZ=EVOpg+T$?q8m9bWSaSp|+8^7@a zhOeQBJ&MYO-aQ;CeJnWr2s4QxS5Pc?Hs)8ROzTb_FkEvAcg`Jz_mm!RC5tJ^q@Zbz zLu9SPBiDpVc^a9L=X3MYs6S*aVtXwoK7m}N5ho&cRH##VFmQelapn8Z$`ydVoDTC3uus8t0E_IhIK zHs=23(wG?QsoW&3Y=nVxx4~o79NfKr8Bbo53rZq))U^#^UE2Z9PPL&^qEdw%`pn#c zwtdIq%-JjO3yFh*sunD3*rP>D+pqc_6px8f?oqDP0Lyls!OWE*xN-3cy!}Iv%~6Dj zr45=kZw3p)0=rudJp+a;+KYC*2IJ`ITZqb#ft`~ZS~ac%HAQKRCMzHTS;Hw6RbG-Z z!=`)tA^rFcx&KXrk))RW9X~;7qKbz>MA1Nd; z@kVTIZAEdGSWJFy1dNT1MOGcb!NET@F~nG*MMXu4+}Qryh_a(&o|Vk~|N8Z7L`Fu! z%*>1hr5psluQa}#&i{nd&Mi7YZ~Z0sdL75C$vv|~W&2}r{UbL9=ZZazlJ_?8slxo|DNH?I(v zkpms;DyXVn)J+nHWIggQspXDCm;WW#cz?n7CBpWDAQWX>%+YsDg#=n9PL4Uqm4*AT=~(Rj z4D-p=U$6EfaqjE}*qh{DJH@KDu-1~py=Wgi@lQc@+X4Y^sckaN<_Rl#6|@{-$UeIo zTDV2m-}CZo^r__l8Hr29SWcy6a-d3qyi;C3hi_6gG;Q25(9H~Tl7dkIS;&>8bz z4?aQ2^l&N^!$^?+2HtPN|Hs}{fJbq4(X*E9#@!PFA;bvo?q0NLDQvxCd?sDI>)#%hc?|7>q+}i}UBb#JyW8{yH|arG%g;D5zv~ z>?f>|tz65fkwX!>3ju0GokgP z1nr-Bo_+XH@9+vrtn3fB?CX7PEa5Xf&{N84LuS*n>X#!^M&rZ`C%bN5$F}y-7)K=b zF6VhjCvt3>M^mA4;WTL;R)%H>LZJPgM~=V~AYPy(OXHAJwh6G<6leSJYdVn17=%9a zFPv*<;N!OW3H1fUqMy{6qlP3aemfA`L*BNNi7~jMAD^c1trwZcOzr~sO!s}mu%=x^ zJ3M1s424ghf+f>2=FI!3*Vt{-x@M`sCI;Fu!xgL5UHU!v>5xy7F?29|1yftOnn{qO zca>TY+FNW@OU#^?IalKb=a%r^sW=!_%7@@xP=J=3DjRSLk`WDPbA7+chW7rFiv@}W zx`qrvx*gIJ0(*0Yk>%h)!$HJ$R3!slQ-&yfe0=VX=fO=!BRJEruv~YyzBX`b zL_$4jl|OG!Pqu$2Yj$lCQOP9wuKE|MujBhwj%Sr`YtV4t3O8|;K`wAQ^ zg`H!Q&Dm&G{H^(qxASkf!<5dFRzJRhc=Cr2%cY&R5YU4aa-mA}h85t4V)SE?c=uth zu{kZJhp08sHO{2Z>0^u?Rk0#8`R1wPkVmJ?chP>6kg_Dq=j;wsZwKNYmxkqvUNRs6 zfO9bZF?l&MASvdfU96R)Pq+>5ZN^%f3{6VT-8AN9k24OMfr4x>M;g6Pjed}lpxAGV zFia5zXlZ%6@bX=l!gRrXnb0aZ08S~lmC24Y)MO*eh~$4-qaO3@WplhzTeYH*UOEm= z5owUpu=$unO5V>^r9gY$ENk(+21Lp)clk%3Wg)4e%_ugYiufnoHgCny)yy1a7t389 zCSI9ycVFmkc;%`TJY`MaGJD1+@G26ce8~fZu+tD; zHhhpU2w02}%M$bSRbimH7gA6urVlXzHiIexI1%B5P?qI;B z=1l?n%#S7f(A9lkX7}GT^!RJ2B0XetwS|1FMPN>DXFB-3crZSfwVC{dM0aD5S^OmE za8z!C0%6e4TbD7XY4k~ic#-G5OhdQqEWF>c0n7N)r#cL;1&T4?Px}XczQ1ee!hPQ< zPCM3#S)Nc@?cdPaOq%BEkIa0Re^)LJ`1B}Xcxp8Cr`2a@y}YxR+*c*cW$YdcnX%`b zH(OKCIl2C#zuV3W?GXzvR@c{zRJR5?83{1*#|ek=8W#Lm?=3%J;hMY%SdjaIwXXkWaU1xXf3&AjH;7?L5;u14`wtTU-G@KZ9fC%AVqUC2*d#4tlwx7 zTyKRP9PV7yxC#K-D{2dWvQ?4UvR`PCFm82Q&h*g{0BZPf5rHD+J*blteim@qA5Ye% zc5jg_!>bN=xv5wkZFoquLJN}Kj1x7E$**_NSNBDU9XYaL3Y8R5!G}7e{4oF z)?pfg*uEkFKIk#F@2ihcSXZ}+aN~3FbAzkA5}r)*cUi&IM|rD{hc5>$VfbB z<{qJv@raUvDk}0%>aj|_6U?*Y^3|aE@dirOGQ-I7Al3fi@MfkoUWTWrsTn=)PqVpZIn?~y?fBFCvUbHq&O0h8 zbMs&UQ^(HXM$41K+cx@}uCz#oIl5RdpvpO>{-(3l%b|M+Q~hf4P`^G`04Am_Z}`%+ zcicL203niL&izj1jnxM*2xCd z1K$H-`ttXF0#F;I9FWW6l!lih87;ZmgC{dA3QgGE-*0r)dfkAu8rcT{vO;$hWqByE z{on>#AmG6p>V+KrFh#dS^vDX?#KqlI`j&a2qMWQ@qz%r0t4!@mam z3AKX(gB|Uz^ZQMzRwhj3k1YE2=C8Q&`RoJ%&u>9=0rqO6ce_i;Ve_THob1n+8+5jm2`eDeLX;ms{^CbA2srHKDU--}+{% zdX>5g+hWx2%WMbMhEV*@6z5IS?#h1r_4N|z+v+4}J=cqJM$;Tzif#JwW*Jp(8oT!G zNB_uATJax@Y%#X!dM`X`mEoAvX-@SYNAFn62$Pn8)JPD4%Us(;^OAU!YT!zcW0G6@ zqb{4Gyx}c0ueWZm#5avQRk6OoLGWx&dlS%Lp_VYqTXO(2gzQ&YIZPG-gKiAj=j>&w_uK837|hpDCbYSGMX7AImh*l8x#Ghlx=!Psr(Y}*If<`!(3K|jB^98)NJWa3 zU#PQQ2qauY%TUZ4dOzBoYjP5Qx2W0G?`N+g$eY8+&L1*yHHd#8h>Aj!oZgNH-R~V; zb=AD4B?UD>vsJ6x#=ZZ!CVES{3xhE4zTnb~!;X541@9(rr(7w_pAJm+ zYYK4l&TpT@GxmR`j6{cE}UN;JG=d-?**feu}zrJHNzDIQ~YsdSvepoUmOXeG9Yyqhqz*L5O0@ zkKaM0U$MI(1`D*`ji#ad5G`k#-TmA0B~Irq+Ju<9Yn(zv&)>%WnjP0yey7}Dyq%pA z#uwg_86noDNk%VtOk@b<8_lFTzW}Fin-CghaQ&DYuz_N`(<>EtVT{NjG}`aFDXmxp z;CNr!-`DG}6>_g#y!QlSdHJR-sasi9AN;i#CxFZX22XhS-UxJB>*f(O2|YsN8Jp0( zp`QdRX-Qqqr%=TLN&5clga1i?14*tfNegIhKRtXby5CJ9JVnvi&o(kz12$4SK*{ht z?y!|QK*GH(6prW4Viw%x2RMA%ys?GXUuF0+)vFWgB$t@nT}2yUPTNitzTU!jE|@=w zM(6u^LOM}%Ml#-!>Xr2+)cK|OPI&m*$g`g3ZTOX*yJg73Y0a2SdOtET1brO-eDAy)KWuw&j6ZbZbNrH+Br03;&o!)z zR(FzlV@&+~iQ(Y@q>{PvV2o@ku>xkWSajN00H4Kw0`0#>{%f;2IH)9iTAaI4@&ArP z_#mXnz`_;uIK58fN>yl0FkfV3XC&(dvoQ?q;fD#bDyc#xXi2r@$p(_sPPb6dq^bX8 ze*eF_{*TKEHn3Q1+S#hnk(qykJuEOQ2tlywnIm~~A35s@_S#zci%zugOF)aJWDygo zLlkCeJa~Fy1*Pmoqn_i70a1Uy?KA@8|7pS3vxKumgiDJ&*JS~a!$Wn9Y~beLG>U)< zbk;BFxYPo6XSc~;LxM>StR}~3+E$$3!uzB`KopVG&wh*TL*RMx)MGOdO?P}uqOl}r zhOBFu0DLQle@IYAYtgI5>3SUzs-yncV!wj@Po2Jq7!N}8T z0{UMVU;^O-ea|)?RvA5}5=~-K5)8#7ji$+-h*UN7JoF(5n<0VJw>pP8TOqhMq$%(O zKZA52t@$-MS@^`>&w7@B66s;GJ~rV?N6lXvz9`?rNt9?I)MP7I#R{f8LDSe_l_nai zV1{<0?E5o-f#tTkKg+ZVZ-RtXI^dO~vLa>DMQAla?nD{Tuf|yAp_eE-&=aBs#{>u3 zv@7Ys8)%FpzadEZ+K@LMWGN+$6a+Gb77jsRhCi55SVE%-OeVN|{MkP>D>nO|-twe{ ztYk)RGJcoD?Q(mMS2h&VZK+tT&4sYUOQiC%R@7S-_dpv*dfJyw`#xNx>DMO;7>)5L zvsIsHsGOXE7@;DT;hQh^{(7e0ToP?*mUJ2o@z~f?!F&CP5dN2Yyg02irsIJ9=VKSp zlM06>()*Gf)FFwK9&C(a&;h+{;ETK&$Ar4y|0_;x*LWcfh?_Gm!4cNOO}gi4~O zvL{{iouhg&Te^>_(yE=CimLIp@smW)>jFHh>%cZQJ29mck5_{Tj4ws@kBPrs;{Wwu z8zVsyMxhlcq`bYox2}@+2ar*dK+y0kSG2JYv;fz{s<6WOBwxN?eB^|uo&^%Q3KDT z4Hdg~u@-rU;_1g}KOMAb(KB#^&Ok@6h*z*wv_D3Vvq!M;Z{g2orb3IoFc#}JK=U3D z7BwUse~!-lCpG=&aR2Y?V1qpau7*c4TW*Lg{#Y7sCyP9}yl~#(H$mCV zcb19>Z+8gzIyBER{fw3D#l2WLGlb0c^P68xje5TAH})wN3DjpP6^TkS{@>0LbQ1&e zyqhL##IJ*mK>FrUIA(i-s&miH7D?EUfRyI| z96x+d?1lS?u;KC(fsV2IS7`ogAT<-<>FKG!`~K9)#f6qh%wpdR;M)u+3E%45Gt}I> zYoQuL#U3cufQ$XXO&GU9-|QPid%ZU!^VZ`_;2;1Kq-Pe&%g|x6aDd{}wD4)gVuI!) z2Z2s=wb_eOAxdR`(AGyHvVsEYoQ(Iq`s+K}o7{JYlEg#w5>|?j4vZ*)o>*IP;;>CaJ;~{JFG$1xEvyhxb(%-!?!X> z1yHk(;6?W_1?sPl?Mo)q$BG^w&U?R!5nNI}z4sAFkCTDPeOZXZlED0N%V{+q06Vkg zhu{Je6nUh{;^@o8ZYPMGkw0t&QX;-G*gM}AMCTowBNd&z;VKe@<)OHjUDr|IerfHA z-MVaUCp8&oOScRwcB*Shd8Zi(e1mo4k#Q&=Nn%pH4#0H7fE zS)tH4SQJ_Igvp+C4qJl9?%(3gL^@c56yF}kyJ5*WFR9T#IrnoHRdOg<;zTGvqWo1U zBKUvPPd)s1;o313-T6YhYSkNoela>j$Lmou(xl1q2Yloh46+lh3}aY4f6{_gY1D{* zbrb*LcG&3lc{DuFb|3lL7plGL-rm-`S7Q^j+O3tXq9k=RtO13j%Aph))=TbaB!G?N0`N&rPslolCpdB=c zHLLvm>#F-ZOiE|RUhS-l{JR5Na%8C4$-ZzPiWt!-Z=?1<8T(hb1yX|1QndT8LwWsG zpWf*5Q!bTAT+Bk)T5p7CXK*@~$_?Rvv2s9s)s=-%DK^}hFCGPaqn6!DZG@pM8z^SO zn+F;zzTFe+oHL*Ao{{HxVT%n(&u6F+8bS;3wVPN_NoB@tZ$T1M&ECL$>yPSG7MH}Z z@4ee+EGwZUV9FC5`PIj~FzWq!$9~7_(98YJluq`yn$zEys9cT0p3>cQt{l~n7;U#? zLA567m?Sw`bH1{W0-o!Ffc$|I4Ilr))4XSlk#82~!(BV%JnR#ykZ zQV`ABt;%DA{ecHnXKnrLf)}xt%8uug&p65Cs$}!Do^9~kS2mkF zilnE&M%qfer-n92)zsa070Q*%D|rwZn&qZGO*?*nNW8J8SZ_ubEZDBSc+s#A zOZD~jq56=H@*lgFz|~0S%LPP!Bn7|xK{NaJ2mrImu@FSQ`}BWPG$JTaiN7pk1Bfd7 zYoSm4S8g?hsZgS&)-EcZ)Z&y^aaF=bztKgrC3o;vm9$6@R75HR|NhpX{`C&GY&JSf zS}+uH&NkQJCq>VfrDs>kl`HMr0bMLP)z^K*lqh)1HmXR#MQ-{!9G4E!&_#7r8>#y;)iZ$0+wC|st7^8}{nsvx$kW+}Bkj(`S(N}uN&Hhx zA0#GL^o}LNG7#JDL6mfBX1YQc@Jmv&-NHG10qX(=AY5n3mQaT6$p~W)g}2NVi2MNy z*^9BCtJ4*@8n1bYI}?GNX$Vn-0fi*o^bgd6L~4;18I;x3GP)7{#e2LoLNF0~bk&V3 zaij*|Jr7A#qxgaFBQ`o5k_P-tmayW)EG!iW=!%YHoWta!?ggNC(N0|Q3q~cCQ$ZPz zZ-fD`)JBnn;zDxs%7CZ6VZwP?v7zWV@Y7So{!$(spXcyem++wHfUyOW>(Pa0AX;t6 z`1W*ATXEh)Fn!w;aY3@AC}v~AM%SNpgR9Uo@tZ}`;BvI5aKarJ_ml1;IO)^YK-OvK zg>w9;)chy!`$FA&-77cv3jAfnZuDzv8@WRP7m_yAXwL;t3Xv$;yzpwv7~l=gN~+F+v7ky$55ir zjc`H^hWd}YDpH3nH#Z5VI-}rlhq4MYg^NWXaTZkBQ)?ZlK{%z!>j?@A=^#UX~G>^sFMNIYTO{1c!QT^`YEgOm-l)Xd4os(DW zG=_YcqstL7rqIog7l?8!?V2TLKSuY(Xc9)dEp?qacPJMQ(CeZ;1Ymojf5yk{ny4d? z^?pf=a&?$&KTte1_?y1HxTB@k|1Hf&ryKuokeWjUWoBYm>vv+tU^0k$d-FovK_-+sd!gU;^3I-Tm7>Jqsql z3_L16e&mZ1l*Qvhuf<(S=GXoh*^ER%k06|eA*#Zk6MRdO5tU~VVNA53WouS!^@gyx z^b8v@GN0q9urc`<5*K|)5pQPHlqTW^=dgC=T_%7aJ{^zflqM--G|biHtol`+)X!ux zR#sTrm)54%2B==*S+QK0U9Emhuq}b1iYP+eE?7?lp1U25-!ktAl{}Z|ap3&fQd4EI}vNrloXjSJj1F|niinlcB z>b-q8gTXDO;DcOZg*9}*;t4jwTt)cZ-ds?>Zqctpn|zVH6cgU-69nT%I~&xuk58d~a*Q!*hz02Z&eF+`Bc+ICknXv9E|9X1s4U~XLq!xxl)HQNRyQI^&5QA7Y*K~cIsXe+ zJ?(V8HqL)jOloL=lf(8G*KrvoCU7@;JlXBx@9HT~bY^CT+=!Ocn3k0e3k&P*<*Y7~ z*PZqsB;@n$QAm@<_5HoX7xyW%GD8^3KKwgMJ4(-}k?LDO8HG&8HLR zG>nXhgAqs(;-ur#CIOQ?VE9>+Dm+nvN|n&l}NLb6sZE>nXHUP_r_zV!i;t)jjtCme zJXHIMyN_PCNr~iOjWIT>6H;9WFClEd!?%97G7`JP`+@eNM?P%v9;Yv|5GlNcp9a~L za;8reXmqm2Q(-pF-XVy+QoVZ<1%mZT<;&Hre$=Z3#}FZEq?{I+V`_#Yo-Po5YDRMh zo<{blJ8!IWR4L5^8Ma*sc60#qSWwl33Z|;L_V+fDgxVZ^@>nm6G8|p|M0!>Qg``Ld zS42EGsZ_>BhtiGwWex+wuTnLsMcu*z%8b=S5{M<#5PJAwY=EN{YKUu%PcyC&j+b8_ z3RKKO8ErUC=(Q5iH5zFfG?KsARe+`-*8kbRGxuiWrBf7N17S?kpyk1t!+tWw(i6v! z_w=P#mco87m2tRtii2yaLB$AH&4j|bP2D-hE(bXAjFnk1R-Mtc(uo}(AbN5#eGM+ zruhj=`a;c7xrm}lb>AOoon7yHE!(^*2%Vl>w5&RBppE$7!)~fO1a~RSj7cO};OSCL z6(tUL(UE>~S{eovJa*t0e9dI3T3f5hB5uvwbFo7Ci~K+pO+1GKRqhfxh$!F<<%W++PK76W%{ECyP06oNF+IN zJKv|;LxuWrCm5g48)wy|(FaW)?inom^nFmW8CEt(cYo#&UNftpw}c8reC}7X&;Vf4 zn?LilWcC=?d439lP25>3mDwZ*^9~d|=va$JIuW zsFWcAjQ>fOR2kWxqAZRSr-74^FzZh`57_aygY;e9MC_f_4=kUjZGN*sEPHV3Yc0L4 zf9(>g=I1r)ulsfL2JO0}DA@V9GcXMe@Wu!xCrwa8w;f;TLH*(J608So2^5*h4q<=d z_1AL-(KEv<<;Sf{HXlk7=-<=+WmLPXvN+WP)k8Q>gz5cb<%$^j2Ib|6U!!I#lJBE% zY%gk8xlN$w`Op@qW9>XC1*+}g{|Zhxa%S?h7FJk1=n%9RV|vtXjfTZ2Ds_6qZ7hsM`h|1&)QMOf z2gZM+JN(m>tB3#!+GVR5k|i9*hc!b?ZBD)scMCK0G#XLA??xO;=N~?E&t2+DsJG@8 z-2DOb`C7HdWdF=@Q`=4NcmngPpI$i|~^aEAy z7)}RY{-Q*QA}*uEZ5)oDAwL;>2AX)d+Jas8g4J9zEo{}%9JEzVr3win;%l)*5q1kL zQZ{;Uo9I#5T}+FdT`B8HQJ<_SXYiBxMrrKntP$9(5qLUv^l9nl^pG5;D;%?OoC={J zz);dqFsja{?{m{AsQ9@zxIxPRyc@V!WX-CELK|8#4kI;8ni^VG)$RK;-Ajw+C;Js8 zjqUEhUfLg3q_fqTy8AiqrQ@zZEJED!Yo;_=*VBWU!Y3Zv2X#*&NB^8~P%evswt9_# zT5C3s_b=_2I6+4OIJya&rla~k6g!0<_ohW6E*JQEta; zm^L_uGqES$f0$ELy&UK_+=o=2MTN6GTjl~!2*ojJc9KeCl_9B*DYOeN6})5$h`b6L z9eL3c*LhSsa#Ras%U^J1C}zo*-TZg(JgpBtJUVH;pk@fyg6%!@QC_H__`c?a%uaxw zWCY2nP*3J3-_7P+DbJIc;K$5YI>y}>zbI99+nBAV*u|6OSTEX03%1!F`6qzhD9|4E zBQ;0R*P}U%iF4CRxYrO>nzh1ZKbUqd8a4#3D26AswRgBQ8Y~>|a269HNf7ue{LJ@Y z?oQaDJWLLdRf**#G@uxB`9gI2ef73jP?ANtl4EzWpWL^_u(`QLLoWzVwfK!;vZSY} zZH^d^9O~Vg8kmcYpqL24UwG9F;-AzICQ0LVoha`zE?hymnto;H0XI^KBFH~YO{kYV zz#j}?r1l$P<~Od-FSr_LcF{E}cigGVkBE<0MMvvl<;AfQE6xC9%9vm($*$!Zr@b4l ziJi+osYfscTH3q2IzDiR5*ygCh}&qP>NQKLz#PDk=C@y@G2eV^fh8ISIKrBHqv9X_=A4Jl192oGyrbMW!{6Iv-)-DW4h+pxtrZ`k2g7$f>Io^?2BFRe9;`C#G z*z`xJYegGZcP~{072q5-L9VY|hg9VQ8a+4@xgB$Z@_oL6s@vZqp9ByVLw_6EHxr00 z#eTSeT5Z&DZQD9tG2>ave%%o9Jr=XmX@?zU+!7^+>5jFhE%HmKn``Szim?=1DXTKj~G za#r(nKLU)zdX+NLvRB8g!u8A`S(H!ox##DuG%iDXSuMifsk3l-|N*q!7Dn-EpM`$3Y1VzBs6fk5P~M*l9sd1q#Z2NQr( zvt1!fp-hmdkqzT$Qup*a;$E`f2&41JQ;LP48G^F7s@_C@504ia^^QM|#S(xLuYV6dyMpt@&>E-VPFHa>1rzA^p%+6Cp)l~N4#8?YO@FRG*EM*A z&0_+R6MMTXUph6Ew(sM#b1cJu1t;oeM~d#tQeELY$>_)8?S!O-XB`cX0qAi@@2%Ma z-R|_4E)+ftx8ST;&D=PX$CGHFWfwF9ocRP?4!`6^INch9sEqNi^ey7HWH*nFITtIh zw?Ab#rSZe!9Wf5YX)>Y6dP<|j8Xn1qlqO{Y;9ng#uI|6$r!KX0Wvsn9*MLHaXw{K@Cl+m6o(Ofh62QN-5D;Vic7+}n8Z zSfs)#xi|b&qWnzoW0>Qu!2wR;85OF5201cLX}p;81)eYrl)wfZrX(W^IanZD!+5(P z#uFtEq#=p{xAh{b-|vSd*Z2n$7JxcA4->aMT5rUjSjCDoloKv$m0$iq0YmsB7Gg^r zJB{-?%C7ZT@?!6Af%KsXQW$1sWu%ayjR`dy2R2o_fv^fDmG^RDJ6Jo7xa&<2KXAzQ-u?h-*F`tZ;5;8bd~O#tf^ey%d$3;-^1+6Z z_SIXr;P@PQc&KD}E4UWDR)^ojD28XU#FQ()EB@W$g`2kFCLOti2*1Y(I)m2S8~cTF zd{la}pLc=faj~mj2KKvZIV9Kk;r+tPvj?wbqczRNo3dM8QjChl#%EoWd_HVJ3tkX~ z;JT6mPQqoKdU~6x|BJlsY_p|2Z2>_4X^zDzzrlPs84fwtyl_W^e`Hvq<+8}qCH)hM zYya?gGf_{O94Aq?9e${+41-431q$gh!ZK{=-u6cvvad_qnXZ}waystb`xKuW+&%RwoQa1Vv2RHB!)urpv z%)orQHR1277 zvIIDtt@Z|dx^SK*_yBo%(LYmF-_nmO(z4-ZmpYb~wK|9)*p6xj+Cp?plcHFLJHJtw zGh^7a5yVQ!9TpZT)F!Hgat>M;eUoSPH)tXP{{ieD8v;bfnn`;}S}nM;Vluwv^<*FW z>F0VL5bDWK1eBy|YRzeT68{Ch5er}J4VkE%rXGt#06s{g9D`)=9!b65$g2f_hzvg+ z!;*p+RZ>z&nB7L0T`qagV#2+Ci+h)4wphU=m;7=z`xN!W*9H}1K^m8#VQ#F7K9R#R zTI&1hb;F(~4FN-wdfJu7B4*%WR}N3Cr1e7wD*Wyee)n*^TdQdo3Z~!A$@AW>OCd2S zKtZ5Hr9iTG^wDYeF9klgE1~^Qn?y|VoGrn2s_+_qDYGEKQ+C^^=wx)gPB%<0#@vCA z;zy^4MOZb~neJ;a#hH(&hkV5%qZwGWY8@huD)oV;bmm*B71T#T zoSd%=9sH-UCnrmZY{YEv?lGGs7b{I*rZ9O>WfX)=5U8i`CuaP`YN%99g2~ANq6C1| z-PG%o#`)+9s(KAG@D7*lCX&Rtww{crMlZUv1-;v6T7(?NHjV**N4Bgz%2?#;-Y0VMNMXNa5fGqoR>3&= zj`g|&g3Iv^w#zE0XTu@(jY|w->wdWG&+P8zAGR;HfDH9iX%IjEcRSehp4hjp(}7|G zIknQug4Z6bhTRd0ziVePY+MNig6)zE>1x_ZD~h(>$$D7k-5fp{^sV%|vlC?D zMHlB%DTjuMS=8EnNgQbnm04>YyY1Vidc3aa5%K!N4PsSMyUXOj=6hJZ^-?>7k{`}t{vJ>j>s^qvCzM~RcE5oB*N*st*U07Z3}TQ7{jT)G;nvF?To+Ph{X_G3 z(`Vjf56|}a>z#hqbuHnqi&tA<9r4EMADl=qFF45K@WUy*`5IvNaZ)o>Kn z?KsU+Y&Dw>yG(+B<%AVASD1&go}imCO&9F*qKlp}{RUSbpNgVq4dZ8QTnV}rPa~;q z2xN3@WJOD~=18c%+gm0(dq#<#S6#dj&$=#JX@$*~j_ZzD-Iv_4Ho4Z2^VQd-=kwho zLJ^bo;@1ff1hen5OFS`B{P3_DG5ePbAQ-Lik{M)woFa!_8q}`=*?Ju2u4{)7n;-Cv z&UEZ*0y4acsxopG8fi3-;nkUy9UsM6#>PZi`T|a;%~dTU&2l580a06RoPMt28=q&Q zhVpn+{bF6h{TDZ_aoFGObg#i4>=iGb+M3QdACKa>Ww~3fpTd2vLQd(zX`9`|^V2<+ zQfSHs?3ERE=o-oH`^yN^G+T)+9g(DTXz`pT5D|%0z{fr$iTO3>wKhHYa1R;f1P7zZ z7GmHMPI$P(cgIa}S#RGYUY8R%{LUtnk#8e|Yd>l1B0G=Jb?j>N3Nw)7?o<@?3QQx? zFYXJAWrwFTxLm6TZaPy`rf6}rsZJJrz%!;!IYP>_5Nr8?h@b2fxYip9x3&!e|EIH# zE)m$YwB2Y9cQ}(9Q&BO(m;V;5DX6viV+N2pDtF~6j_ZY zQ=m(+Hf7?{XMdf{pArFX1Z|iyrW#ein@KH#9=E^QYVNSp3H%4GZXsj1cy;+p?uV znH>;9w=Vvw{UqVcGGTAW@M!n(02YeVL+q;CUaRfa*8l@@xFeIxm5`K8p2cJ`+$G zDpih>r?+UXU=YE>m(DPftaQ%UI*lW~=S|qfC*P;fd)Vs3F6mhO*Zi>;h?f$;2j7!~ zR>rU?ca4gQf<_P#T4AXr*ewJTYPQm4N66SEPqPu0zHdj9&8e*`KW9I+?hWZzUL6`B z4FSm#7k1er;Z$JcoiO`%G=B8?+;ZqC$$cISqV%lb_Uif0C`Lq2k3ZSOz*nI~_(g`BB1h@sV~L!%f9&O0qNEFD?_c%?QZ%mw+##S73-zIM3RWHlYYm4-h`R$ElYWHA<=k9FPvh(|sBvAWU%;Y4@UTWq~^_hV0 zEso45wYjogTKo1#WZzd$(oYa_`JD`=7n{6nXn!y0PsP4j^wIL8@ot$au0l}bEA?Bz z&8=7_`yY=I9F4)BgUe3qkLVA7ANz|(+gLs)J0kr&0pL^w6L8X7T}N7X6`C;0clFQK zH3>S270II}>yM^RJjCENQg1<9H95aGOTxB?=ZxVZt$s<(Uia==JHeZn?xSGI^mhK) zE>h+g?b5>ILaZL)3NQ!}yRUtE-E!3R0|Vhnty)eJER%fy>(FdO8d9-et}{)KbT zfs2L~n>$H4$i7cwAcanWcf)7qV-5{UY8#19`y(|`>Qa0p*EkXKwPNxrvVO^VTXJX? zzY)TPMkj1ic@(_^j$*S4Lx!txDz^Md)KIj10{QB`S<8twhRO@pqrlMsfenkX|MTOq z*Q9Nm22qJE;q6s=ms8f2J{h}Ef6`)=oca+;N;f86z&NRjXQX@4y4|^Itb>wsk0WpX z_LSwhA^;a%el8h-7KOxxp+w7iM5R6!#P9H2Gz4FT`W0V$=Lb$@OTxl0mwC~hz71rZ>YeSr-4&LGhwsK|l z=B4#RWb(^QHSPcxA?bc30zo1OxsbL`Zq+$91zlNLV7xmOrOEcD0APBo#KTQY?J*}1 zhQMD!>d}IEMs;XTBm1Vpmmndi!o)5-a?BM-@GNU9GGju`WO+D2Hj~(nA4y;PCKha%IJ~v=5*(Mpwymf>oEsrC z?rp#`hO32wFr1^x6ccz863HPL90Dd>>CZ(^WikaVbbr zmz>z^bqv}xW_$B~LM;LBf78*$!TyTt@g{+o`V0HO*5>%IaX44US(6D-eLG=i_3O=4 zl?o#!6^h@A36)yDyxy!|VjfEpy&g_K=DC4pcWM$oekV96qSHOoOuB)W)6A8GV(BTy zd=Ce$=`N64U_#Snk~g@c;+#H#ecvO5!u|E<>_=adBm$7v!d6C3{;yJ##kYHnxaQ<0 zdzDn~c2@y|VauWqOV#VmCxiNN=cF>n-DnoqBU2}J)soQ7frU5^cBi@HiquZnH0<|Y z!?=4m$>Qi5mf?zdi9teB=7t*Ze*EYZOX;1=UmAVyaKI;WbPY!LsGUp@MISPb8B|p& zU%?w6lPa!)pArx7E}a>&7*D<1`HE4%1hgk&H^_Lwkv{zq_7sIv@M%dS@gfBnjtcox{lII3!2*X2ca=Rk zc}9mf0SPjsC<^BbhOs}iYr32P)D@43 zNv6h*v?C#OQpmUx@|~^XhlQ=Rzm*0j)294s6jGIt)cL!cmRrK9JAk zKs81aVvY*^G2~i;a1^Zq%LF8M+Z;QBsT4{=OfF+jaQKh|#lvpY_+&8anD=r+EioQ$6Ya><6 zb@Slan2$lu@#8neRpm|;)KCuw49uVFNlr~1YNjSuC&3^4{zF@SpJEuQsHr~>xEno? zvKqh)k&TysR1>-ccpPHj8I6ox424tdVq3EuEPyV|fv@=8F}m4z?ne+osqWn2$MEZ9 zP;N#P%lT=NOKc6Mt@Ai!QX5P?7%uH_Bw5ErF!oQ?>GTV0f>&vH$uO9rg&`;w>T{wy% z@q3^v@fQ+#F`_p!ejLx$Gi($*l~^_@>=`pRwN4qTM}>;VkGS3+#p;a1V}s|&p_g4R zS#r^X=WO6!|4G&ff`lsI$MIa$0=5}Pc6lkb-Fm-!q7R3F%PIMVf}gAYX83lFRoFej zcj(eE0ZWp}@HMC@bM6|dri1Gda3Er+$mIA&FL4A#alxgLyT|Qs>aO&YJGD6K9PG^t*3i*C! zAOF?Fekbc2M$!42Wc2m(`^^%0cibIK@qcn%W(dJ=5bQmtLf=4se8J+rm*Ilu%Ya-S z9#&(PQ6)p7lp|GH%%+k6z33uMTC|E>%w5Gp!!SYQmp8x;NDy|JzJ^q$=!b!@bQ&s3lF>TT#2Uii<`(=#XJk zrUw@YDPpQkPdhVuJBo`2c1}+ChCwTejwvjCDT%)T;23}wP_3=Z$Q9I>DMAZTS*$yu zN#x=bmtvg=z-Y}6lSb4NpI5JSqyi38yoE!wc@CglPfLOJf|Hvh1U8= z*r=6C#5AT(dv)uHx3TjD))+(KSol)uvH(>9{b(wTxJ+>sA`g1@OR%^!w}K(D{9a_4 zhL{bXIEhWLA5Urt!QIPen*@a04x=drXTS$psPc(5$e8Fw(iP7}T#%to-(l=hmmPn2y zae!{#-@1LZPF-XUx%W+wtF&Is4k;Y@vPN;y7;z{D#~xG-%}|z4$hc4ZuO6et+~g66 zd*(mDE^>c}CgaPnWU(`=mJO^e#7YkeLxj&=BDNGt`vvum-=$MEisc6#@X`ciy75Hr zEEOPi>1*uhB}($ywb_vh_ZsFQwlmY4*%k3<<&EimBcw@YOuU~niOeYzK3K`yL-K=^ z*ihLcfuQuENmt^!it|XOQ0}2)Q@Ao%OU=83&t5(klb7^= z4LiFD3%6SSgj=jj{dR*T__>u371`})g(HZ^4OjURZ?#m!M$4xyCXY!;>qV;YcP%9F zbK(|&;!k>GD9@#5hP>KOgXYv`2S*lnHpP|d0|<`NUG`s(E~O?dWdxt zIOg`$w>iM^725)2>CxMQOdx+>VF$-!2qY#;UpP2Ah?S^y2F@+^;qr4NWZkTdS>*-{PJ9}Jc+ruxzr zzW6?)lR@IX_RM_~SijHr$EW|r)H#Mn)^6RpW7|%}wr$&1$F|e4ZQC8AV;ddY?xbTI zU%h+3`&{Q&{jXZFeVr*;0x>itLK6j~G8O{NTs zVt^}`pMv34QyQa|kW~OFT_iHjVTWq3%wlb0$Fxqu*R#^*Ns=bj7R+rn8xQXdq`{2O z8%<7gfkb4$4r%Je2+CCg z_@ZIW-&42bf$7;&{*{%P2I*O$R1O*QESYfs%54%ELjsogl;O!#;3<@2q?ne^>k=toMI#%vPcHi;=}HIlA(g@V5Ut^b$=H5D)kGCR^f0U_D~$WW zJ_hJ1k?vpp|^4lSF+7l2$n29MkK=TlE8h`XB_BM zppD6X0DEn5orHrZO$zP%5=U(}Rx#Qda$hY(Ny)X57B5kCHDytg(3YZ=VCD7rP5w1C zP#n$}X?if2-26_i(|jqOroL-U-hZH}?D-Pp$QTAJ3>;0KWkQgFb#3!J|5iOu@A{F{ zS=&Yxbx^WT${&kXZ9a+y>N-YrNq5fYj7FKCBgRzY_-h8!NUC)mB8-p#6LH#Te7Zs9 zChJU1l-e&U!t&KG0fGq2*U13jtRk-AO})8ZT22!C!y`-tf^gekp{i75SGp10wy|Wk zP9k#gS*zBJFJT-xaqOO1F93Uf8J-{OaFaip4iqjk8v3`6byWd7BY!_q73Syt2)3w% z+xolBPy!!62p*@cxLO*tDrQZ8eDS&{V>q>X85H33)(RZlI#UG;dNK5zy*|l* zb(CU*k(I65(W^)IQ~d5x#7Y$``E`k|09>U5vr(2?*K;-w*R^H|yhDPCycLvM+v)IA zF|^|OO-#(4Vv-QXRV*hd6p~piM1lQk{A71uTtZOO@p^QlZ(d@obbQki~xX=0rF~-1yUQAAkgk+xz>2p%V8TAvOfj@7MuRk)t~0kVr7m7 z$g>G-{s@J|xSnL}P0+p4!p6h%Z;R8K1a1=k7tl%J28WgLncTddm<>?NG}W20N|N2x zS|j*lqJXW+O>SnwbmQ>RCu6VI|1S`Ib@+7a2w#ZvNeOzVT1l0E9NDJR7sQW?=P$!?0 zgn_s#qi~b*sYZsnUM8rFkV{Bpf=4a}t;v+$+ZA&iY3lfvit8Svtzcn=(t6{z1G0MY z2HG;Mt~A#G3SqGVFeYoqjENROOi$p%1ncx(^*g{EZhpbxjga#8bVBMWXp_c!l^;Dd zW8JkE1yPkw=24w6rVp|s=UhF*S{k~&CP@!`T-r0Qi!GTvt34!$f=NxwlQ%#8i-%4k z=3I3uqDj!KAC@!_;%LL5P8G?u80aUCrKKv=K{7rFClVZ0aiMVyCSoh1;r93k76&EgUgj+gjNCrL;w4I80*(L!z0A$5$L5Jt%j7UuPrnwhp4K1h$WDDIwpta8#I zXJNz`KEo%{#lpHvNCHi?%bv77&I8TDI^0-|DU;C3dp4@!O77-Nrpj74nb1r;^$;mm zrZ3nPr}_-9gUJSd=d>P$Spe!~t!aZs;Y9DTgm_wNU_=Giug;m%rJu)%BCcqno&|yi zqb@g4mY3_O+JUF2ktJi$!el7mgmF5TIP0gW9PxB8v>MK(ZxBerGarD`;|9bB3kQlo zLT#(EWC#=cB9g=PWF#xZaSJO68&Xx`tZM3)lq(b2n@~%IxyTn8n07bWxAcyHCteg$ zF&(u2mM?Am)BC^BirF5d>1|F?;*j<1ZW3YxlU>HqREpG!!9jUdCIsIj{;tOrt!izW znTyrR#=6}Tr%Mti>(%_BAk>ES>O>N5o!FM5D02OJK!Bc9)*7cTeo6On_gP6>he)UQxu+OYfNVKTEz4jyQ2*7b(z_FT>9>otx9${n5*#A}T5hEXyz?(6wCp zsebR5^u=c}G~3&Xo>Pi!Aw2Z|r+M=+|B0O*dEY&k%_c)r$0c9@Gu%N8wK{CE(pm#B zHEks%!qJ(`?QJjzg`+Wo^%dzHdxS95mA(oXETxot7zCzCOUh~Qe$UagKb%GQzq{dM zlneuSqFz~Otr1gD@XJ~%=2`*9Dsv0NoS)McQW*}!$~KDSL!*FbaP3ky-1&7pej>-wwCZLIxWa(rW$<9(W33uO3^6!DZz6!slrvHGMJ%Z=hK_11 zRo^OEX$5`BdWF{R#=kU2iY%-&lNklh={b5+#odk%AGEQ6uh9-7t#&O`vd#pC^I|AL z$TFUWVVUdclsWCQ8DHUUbZ}TDC}zl!4=yUS%7gvHg+kye=lQy5)yw>FnPIn|UaZV? zU^d4DVGg09B^ri7Fm}==6Yj@aX(g%L7%nTBFsv$62P3MoN<$;g&+H_#m|_t0k`Tvb z#vPL|w1~yWf;SUHrt^$E;_{JC%2OuFQw+Qhi*^(>{*46jkmPyP=gi%ZtqyZlgt+Pe4H%@?@bro`>qS zchSv&Q!gev6b>t>NiUP#2D2?gGUrW8QgXD5#Wozc)i8oi!34R~&Hs0Jyo4z2gp^?% zrqTByvZKz6qtuSaPI!=`%6l74c#mhBf^)z{BF^hWb+gt&D@+J_<1|#VC80l(HY!$z z__K`3vQEQngyP`yt^PakVG6 zM{M{TOdumtqetH@P-KITU~-kVqUkhK8ruBmGrH=!Uv#KiNO=-JvP2mYqu`|?PJfMs z5)7|-xjr(IaKj>HupK(Q>;qtA$d{L>DO7G6xW&vdubWvwk9AIOXd8)VIm|oyoa-7k zZ^}Xqhq|sbNfWO^@>|bGVt&vAbpH^f|3Hze-219Oo8Lv z1k@csP(~q@s(_O+5kJP-NTH)yb5uj>59}UoWlJd~1Q<@PvajfyT7h|xEFS(%Y`Y;g zY|G&-i#en!vD6AX{L|EHh7Qs=kG}qJwAz~k;ymC72mO0pc+`sq91|a<1T1k2o5XuF za?=a6@(Z2Hgp{3PD17V%N$NB|z<_ie_Y*>T@L<+0Uqm8}W{i|mgwUO`moHyREqeK7 z^vG3FDox4n?LHus5XmPkHl#feAZMp{y;S{x-1%$xT0=cL7e}!m{4=;WsJId_t}Y)& z6Yo38D?&t|jy@!GA_u(9-JL`ykH(L}uPc(l6&zdrkwxWls1k?Zp;R}d{ zjQwDBHt}O`cT4MXQL!pGzaFP@?(WxG?TChtDPg;ofQ74-`OOJ8`8;I#L&>bFAi<{VDWOCg9br^ zs+2q-ZhZ1a*TXdiz((BW?Qk{K^|B78_}K5k2ecpw#MZ&VxCeXYDEtp4vZ`)C%pBrdtXlY}mcmYFtx&7Bx@~XS6tF)f~e={Q^s7j^UHD?_0*`OjD=PTc4B<#Nfa{mO;BJB@+mQOiP!fPm00ZeyHY zp6WHN?q$E}g&HY_F4$8LQ$X`wWpkbO$>cEAbe-!A(?Fx(bS$6Pxz)16HteVy z3`t+-hH_cZuAD>kF1c|r8*vnZLkCdf16ad8b3ccKI-tmQK)5dFOq3cW6xA4g^b>(u;{g z3xtE-yn91`pjNxR(aK!EFc3T1SERj%{OI2Q__q;>-J~?9hSdF}?31AZ0RM>H@jsBa!03zt==fOoL)imLMaB?bm(2r*9mfY*+k8EMO|aZ zBv>VzNHoSoJB@etQ~X$S1pPtcKSYERJB=)Xc+iWtzW0Y6bcCQ+QLH_oEv;3~1)t*l zWm5m4PYG4!rbxTbZrVCj#VuUc6}i!#T0xV$_ap2zD=a-Z@OqAU5x1z^KUmZ49mP%J zn62dwA-ie7LDjAKMjJ}Dg0ggfF&Uh!BpNw8Cl-CWyIdtH0k5C-Y2Zfc(pt4r=x>5c z15O%U7~-&=OJ%JmCY3t%o>G)#r^c>*#Wz)tY2nySC|?-6D8}U#mcS-?+0A=iVT@8} z#MOu`6jQ6pLdl_3Mz-&S0F0DZ znmSQlUf#_Px2k~7g;}>0OjF1!Ra+0oQB`)7R5jzGR(q{iu zu?Moz%Ey?@YJsYLg!lo%hV31M4dq3!hfUk9ZirxPz7CR;HV#nR?$T z8CNSy*?k|FeUUCl&lz|8?!xE=B=<%b3EbK&Qqu28 zdORA4zpLhZ9x-5zRcd1W~kVvD)R%?Vf)ZqCMrF!CLB3xP*?IKu5zf zlMx^Iw&isHiFtpK7{Xq4oHR*+3hi>4ndde8@X5I85_Zr(XXQNgDv9;9SGN#vbh!v~ zSN2fIN61#yX)^fw)$g|Gu*&U#581ITOw^Hg+I$h!KV`j3pm|-#Ac5A$#)o7_4Z@HqEU|S!=BDM0gh5y0XNTEuf*$I@&ORt zaC%30D_())HgI^ewb%X#j;V+jvuIYuT$Bx`U4$Zz{DgWOf7$<|gF=I-BT&ID0>0FR z-LfB_jgNy+@$xgy>0t3@A&7Ylu_rVYF8#n>3lYL(N!;09t3*VoAwLxbByToLuLnVF z8qT?ayx3DDN0w`yD;oOYR78r^UMR`2H=}a0Vl%eI`LjI2 z#$%F0)aHOBU&hKs1i%gM`1rG>W{0qa1|j*Ref^bJ4%ZW!_K~1(9U=JUXh$O@&bD6= z!;jPj)`e=K4~1N7Xp{Z|V0NRI8SDj+-Edw0`*a?9XNaOk&FOs02~?DX%FRyW6Xx}s z2tN&1{X!~Slc_~XKIqBPfXYsBhNftiAINtC2x$fdQt>o5e^PDpFzTJ@AdGf-vwt#A z{~Su+n7t5?6X!u%k8Ro7TYVG^ijL!~^!a3ysH)RD9&`m|X6&iT-I|8Pm3$53{w zL#u0QoQ|gn*c=pUlW5z?CnOP{d=v$v`9QtAyaJ=0G&9k#f@7ORU=R>Olap1=@~l(y z@jUY0-`}YS8zAZE(06Lo2{TN-RWuGIlwl4xqEv{gW=D^!Fjd-EC7VTl(?N$4*LGCx z_ArwHX;A9R9O2xDlYhssGy;8`hF3-L6qT#3bW4=1OEF1?fMCO2DmQ*Pi)^~`+}p< zIF%msJXokdHS^!)vq%iXhoNf0nS-Y~?*k9(Li1UutzH5~%CKtvj@@4WWs~i9j5bdj zB8i9f?49zmAMEhCJ>MpOWN37yPMu-$yms8rE(P`2f0`VE?6{5R#(SqF{HYq7!4ne& z@)F_}3oHtf<5>+iFyTJm@l0y8SDgpI;K~t)M7+RIDV8n6h*s((T;BBhlRLtALKf?? z$`Gwmjvjt?9T&EoVdt!o4s3?nIJ&)&=xzPN*U7>~POM^KU}}%FQ@w8(W9^?Gs6Wbf zBDIBWF*qIm$AsaVft8$fF@2uvI-?L{>7nnzqqux><(Q8RbD={-r%x zy7>C)RWOm5qp#W_y{IQwMCx+!j#uv7AMFfrXViZqzUVEBT8UD&+3@oXt1Gjq{^K{; z@7z@^mv*nDgoTL)j6d{x2o zc+taV450{f*^WC*eBsr&y$mx16o-YC1)#bhTpTxO^z(Tzc-9F`*_ z>&j^iOQ`tOGRmqX=*Tm^R$Ema8k))MF`moK4L{C7J4&H8mMO6sjl0O)lNay26Gegf z75yCP*qDKb1FWCf)j`9w>a=Us_i}nCYIE7GLbg_Thi4r5&)-d2wI=^w8l06-HE*b`cQ;FQLLIvNd?Gt?Mt%~$LMM?WH7eY)dJ9Gu(g)EsOG^j;u~FOspSM^a!_-N{Go+1jvQ)GW zdvOyJ103KlFE5>+3fZYk z#LN^C@HmEm;?1Ecm__P{%8?i`ux?l}kMAGU|KW0Qs!Lj`jRtyr=0Z))W+W@vBrCn% zFKdiHzccTIDe2HGcE@Ayxcol^ijo_RjqHOlOER}=g5kKQsd zkd#kv!CvfzlN)EB?If$D!a%Cc0f3$}n~V|UN2c=YxSfEkEGtmGb5kUj9Nd&1a2;LB z=N+6gd)`|vwkq2NWndn~iiXb&a8f}+F8`YKnRR4yqKa_(%o+CvtWFY)DjG^q4JXbo zvWgC363kZV+F&R66wQ}~Fah&+ZrH++sEZC8NX3vX3@0=Ru4u)<&UM^h_28DcI>n+- zAdYt0*(M4p?kQc~WV62B2$G8WgOe4emdQ&hA7yrP-7d5lC+HH4b@J3t^R|sjoe>9E z_9V*Hkv#G|CPsCLOhsITp~-4;$49T+dXD}98Hf1TI;(|dZ}uniwRsc0oz1JnIRZa& zHg!UU#h8`Ob8(9#>nRhawiKLSIV~M0E8|l!u!D6cHlW7v$ z;WIsX;b5_I22Fc3n*#!ZWKr$Q&&&5CCc3jE4v?cW-G6pp2MUkBVr5y^U^z;=JMq@}vF02xn{T!?o^t;u=>G?6x{EfV7KRTh(f{JCtKn06RU{ z`fFH;tCzPo=j17R4Km<(96%)^EK9_L_$d*-$=O^*tmdl3j^%!Q2s&KZt=sb1lZ6p zeuR%-SwK@-R`w6tYPUMP?W~UP2=Mby-)*!cF(oBbr^i)V=X*Afn{`8KJOMAH!lmoW ztr-^=7rJh1BbM_Hyv0mjYA;xq@5^n?l}D;-hw`}caivvp!x{05#(HJeie-=$D@In! zaO**Tn>pU^jGeM)>r$$tL<*A}P7pQkyKzsmH(COFmIX!!E~T&#BS{+ZRljC65Y zEE_qq?YE+gX$L>{c0MflQI+8eajW`aq`<%Xho z;gFv%Ay}Ji-oKD9nhX=cf${}1w0mVkDPL1We6PcdfV(%aA?^?H{`EttHFrd+@Co!* zAMb8=)gPy&c5)=ft@Vb53RT5B6D=XcP6&>c#2&ounha8#+l-X#5Zoh{0Df$$QofWt zl#8q?dwFtKKEotTEHz5-tw}4=Q%+lygo*}bV>QYf+}SB>E`P)q z(Khb|ftV!~_GF#I5wG_~1>|J2N+oF&8p)hcUJ#4Dy9uxwe4pY>Q4iFd-fp-h&Jprq z2q6sredy<0}3Me9$2T#`NBrq(eUqX(baFYnK|_=bSyaW zeuGx|A&x3h(ehG~EmCxpVY1lrv*Zvxw{aAIto z3&+UgelM`Hh+gpglD=U~_pC;bPNVofsR_n>*C%T$;6`}B%cCA;)gYZh016~;3A?*< zJYH@^kHq2yt9I;yzvfhNrwQPL=ACei6&|+nd3JvX`gmiXGh1t z_BLUT**7c~DOFW8V9!ttzPE+iP8~oJc6fL=u<4YEi77$XMO$0D+prvCGm8|9o3{Dx zcxJMWHqP>}OV`Rq^XAPTA|L8#kBfGoq=d{1^H`u32){tLKHS! zll-4oNKGBwGbeNg92#CHA?@^s6dF+i(%X5fNU&tB8n{GFp*bt8ulz=<^(0L?5@?P% zU1+Nh>6{1g>Du4#Yg86(iAM=oRwkq6Y1_Y$Rthm;j!sukikhNv@aY5?=$YgjK?xV% z@fMq`z-DIgpd{BpbXB^NY3@e1-p_r(#uJm0)-+eEJk5!d=ZI-eQXWK8zp?-B2AOJ+c+bzc`GPi zGV+$l==I&@P|8+@3vuU-04)25@J%A!U6f3BdL$|_>>8-kqPVpx+nUPh^eyeg*y|YH z+V&SIL;+FXLUo?uZ3|RgQL@uv7gn79y)fpmGQHhC-ALp3`stXLgWd!5P=rA2?C4Va z1gcn3hy|Avk9GbE_Wy)f?yXh7d;Q|59VpBY08g&K)Wo2a!RBUO-tNAiJK-RF@G?^~czk3gKU`DEy zA>)-IQj-d zKy}6TP@h=5z^qilLWQ@a)`@2Mx4&8Er5$Z>p{f6XpVcuz81lCMLMb~wMbffHiQ@bo z8=|xAM2{j0SJInpjq!2bJ`>zT>d-SUNx1D2G4X5I^24F<(18WJXhkMO5hjP-(ika8 zFfmUu^*;o!4w^kuoFJP@Xq9{F9<1M=k#+WPx+0}hkeW!)#cSWXAH9Nu>Z^d&K_XYl zQLA%h#@}%7-)z4txZ|m}(|A{vJ5gYk;TLrjd{!?d4l5!RMM+Nrxr0P7w*D<<;_zZ| zH>VCvNI1H?r#W2Rd3+XP^#HN5?WG7KtGIT-w^SJdU?V)ziXH(Kl_ z`CH7qa-S6cX3;Rl$egD0L&%Cmr2c!@_LT>JYwy{&%0OPbgIKf^2xp@OpLaDJV;TH* z>&J*i1I^aIQj6H5z<(XGoIkx@wJXE5;@pvCZK=MY)kAI(flQbWqi~%@o-|>&&&|nH zb|^EtEQa<6@-XcZ?bT?HE&#q+Zni^%=;fbDEFV++CS6JwRiz?vDYY<;yP5s|=k8K} z+VB6of7^s0`Ss|Y&y*=})G3_VZ7H_4?mm&!`c;$kT6eeV7iMgD3Lv|eaGdJu6J&zq zq=YLUaYcp)R;52QWcIfr(D(nSYov)dFo-9;=WIgMg?D_clxpnmRr_6fhwhj6GLSMb ze@rRt0K(7i#HH{lrg?#1f=`h_O>1kdcepXFG#U^G1t-*!f;0+*QYK{KuJhb8lp*$X zK;E;b9>9+$JWmh-?YX11qQ^J)!?a^;v9oRZhQBko32Nofg(W0YOe0{f`_kn753aR6 z#3(EV`-&hT06zlb|#m3C9}^!CKaa(8Wcsa?w&0N_El>}-tE)0?H~T^HqZ&Oqr}e`jW%XPjVtQpSW+&yQh#zZ0z?=25Ve0NC0YX=*9rZvImV|W={ zM%cCDmd5v*3v)liD7tEiLO1@pWV{XUt_&%0JbvABn}2zOT7j~_;$~#K6u`aH@Qu6|@_29b=I!x)gk`rU5>{m;xRpT;GfS2< zT6mzk&*CCT)>RXo_2b0nb3%lX6`(Ys@?f}CSo4PuGyxL+c0R5Lk(@(0rdiB@c~~H! z7(LoX72dqM!W5kADJln#o8cvS_!v0GTrVgJrfw!IJs%<)4b4(|$gBnZM}_$&T0jPl zs>;&;k`f=I5a^)9W)Mb6!b&Sy8(LaLFDB26#>Jh{Kd*+wkrp<)piGd{UeciD#SIV& zqR1q}U{NL^2G|)kh9&CyqP+C0QtnGmLGuNQ@HXd|_jmly`a%;BkP_l_*>khI52r3x zv^T~=jY4pmnZ(rT*;=M3Qm2expozguA3;u%DJC>m0QPi(5|T+y9ze42!X zGGe=UiAtal9z+Z^(uD;D%@wJaPA6#Bm0vFN7j&#O&Ny>|x%l1_qr~p+2ix!MKY`>2 zxWd7nsDC5eBiewb1kk(zL7F@u5lL_D7ufNKD)Z6t)av_3fF69gZ)A0h9Q3#ylPR}n zn}vY+yDPkeeAxbMUhnMoT)-Fsj>wg*$!rMFMFg`2AI$`p|L#!bJYu~loM}N;q6i-`^L4P&1Rva0c^9q|2AsHO8hkyx5*pSQ+vQ<^kzVJ;1_P&j-@Kh1y^Q*iS%sFY7O0Fcw zf615ED1d|{K$wG;b?9`4i_a?;7Y;qXOXy#5guKM$sIwl)Xd0T1`@Goss}-%mI9>gzE=j-%K7|j_NYcZx(S{Xf%^f?nSa50A z?Z}!Wv(idaa59D@_yqFd8&FvWk)xL@xW*kNrH$Y8>dhnDUjFr?9{~m)9ijuI$OeFzM&T#hP;m#~%K7nXCtf@nv)j(2`V&|>M;az@i#Ap^^Pj(T zY*2F2gsi;SvnSA-(P>>N=}DS)kfmL@hlPqE@t%3@pIYFi zMc`5i7~elQj|-lH!kuUXT%NH$U})tY@CQ5|VOe(&|MzG5ha0?+M{8JJmqA}QBL5j(v4W8z_i!h4*0Gjd zoRTwD*kGrynsSZn2^+jV~)Gr460rP2Y=-sSzEA&mPaw_Tb!Az#Fdo0*>Mv;q8j$ts^>UhllsyywFa|C=7}22))vWzEytJyRJFgzFvLvEea6+(hU-&Y-GjAof&dmnxz9i;Wje@-B=ohOh@RUu%hz=No zx5UXF%!4NB0NS`N1GO4BvRa*{TMy^vmjhGVQN*-CA|n4l8{shE3&sGqim&jw-(*Dr zWLAl7o=@DKzRZOA8?mLbnnr_v^xMwzW2TGEjlUXLSDQ_6UD?{WuZ`CJ`merj=q+-{ z4d)BSNw!{o)SGM|m>$aWdAy$chXu%hH#Rlhyd39?(qUq0TWoiENlCvj&6JT)4zUQr zf)^DRH~jc`B{{~$!U_k9Iq3CdG>s&a?68*63Q&w_TXW^&)A*nDaWsMJ3r{{2SM zL&$}E$>>7=Tx1YNtUD1NteU&YCEx`%C(wUPeMxRM*r7qNYL(Q4uZ?TJNm8URiBFG9 z#kRlH+^jq}0l$BaE+#oDoO2p|!K)xLX#K5B&NY-rdP+=M8ahHgFcRp0x`QrR#V_={ z*@W__%^lsb!7?#w)nM8)!9F7IVenSekCV)6ZE&>ZCF}JKP~V9k4)sCtVqeVzDA9qg z)ESNfqxWjdH^2%7AX;B7tqC+tNEy1VJu&pVrKPg?Z5OandXHh)`+ManF%Yx-)1{Wy zwKOTmwWP#cXrddTX$aX93A~YYK7m{V+L3(U*3rHn*xr;9^6gmg$M$-YE2H;Ht~Hg1+O)&_dA=eb=Dnav4HH@l<;V-QGj3Zv?eHNu_pggLAjk9j zw;l~v%SEykN1ZT-l++XeX`p)C4sOK3=5|FEiW6RVoFS<(mXBvQ2;$^_Jx}WBfwqlo zkyS>V&J#+bRrS~t0MwA^r#nDW#P%q+b43N&WF$p#Zc$B6)K9}@FBXg;B~LX}RDl2$ zMU58hO`ikG?2?}E^iZz$`B*#Q8k3x2Z_9DJ(n*e23eao2hZK=qsSzwN&$u14 z1zKXIvV0jlEra=^3`Vx)>j|c>{a@TzlrmvCD<#=k9jMfUsY-Ga3zX9&>OaHc^z{I0 z2gyr{T=rh#A~OT9Zu00?34Ct!T&wD&lQDE%uusErYpPDP1K;32KOq<-+EId>#qJGc z((ph7As3fqi4uhustGYae?b{O+C}BWm_|8Z7<7;~>8Rs^DD)?y&7Pf{jBRPyKu zp}+Z-L@y$1_p%Z~DTMJ`+5V$>lmIgjtprId*J72`7r)J;#`@FSW1VCsNpH1wEsyIiDxZy!W0-DaX zyZRCK62(W0tQLR6bf1+P?etzDrW+c;wKZ$xz+=a6+uS5emKhVr&))}` z^TE@O9UUPX9QzG!z3ISk6LL?~T?%_|B;gdsHA$ulr&@7S;(2)lqugts5YAH68@n1H zyL!E2WqGtw*(*2B%o9O>%%de1+%Ov(VE7ilj65XT7@m>lt`n&|R9ye#Ns+*sxki^=!& zxLf?zwjS1`;)a8(9VbQ|sM_H2E>`BDVk}~ir+IlKR)lt;+BRjuSe8sOTpxe^_^PY68-(` zfN**U7>Vnp0Z}3IP1_wY=-**zxJ6gF8|`>pCStq6#b?i)PMnAoTO5YOx>p{=KiF%n z%Aar=M;Q9V27`4R8RZ>cn!DwM z*-yD0MKo#g8{Ow4-exo~{KGCg*PKR8HvR;NbYg@iH$?O0x48aw0bsHc0tEwro9p+_ zK$EOE=8*}GX)GRFscK^-;UTvdTM2`LqpC$D6U+O9NN-}SQ!4Avvmj`JO?g*U#1T9X z;A-7odGit6(EmZWf-4r4WNvYx$0XAVq~ZOqV_h8;q#x=tZx4&}hm+ZnZ_Bf<8LE(1 zJ<@qfi01vX;si^UvraEO&P)M4h^2eFcIM_a>XIO`-P-?=8*B9Yy{Cdu=MeEOA+(TTZ6 z>u1(K!W&rb(@;eC^QXV+&8|8RoBYNA;F%}On)XvjaJG5ER4cHI;-0##SV$Di`*ea) z&urc=^@8keiQM<=0P&>d1$46f*A!CP%gr~E;2lzrO`q|>lu&<@f%;3PKjeG!{jpk& z)|As%pAd65xLp3WfZv9?EK)2i021SF^Z{)63n?X}qX`m15nq~_>83^BL} zBuUjfXFS{)^V=vs`RE&mAFyVXs~;a?wgOl2)2tqQ$8|m;V`!vzFES+F^S5t*ZV(Fg zx?n*?Uo-wV&7^J~mv&sBN9p6o+U65Q$ib>EYStkdPdP*&7kSUav!L$>mzO~VI(by+ zK1rm_tR$3~3a848=E{@kMh0Ayk6z%wUT8kfRF7kOL1;$VV;l2P(S25jlsE3C3jKG)r# zVR55G%Uk!S*Zhwh+;SjtoF3d)U-a$Ii4aIEB<|gYioTY2PkQzAlyFQ<*H}GA>Q+DR z#7OL%cOcH(2*dr;1c%$&vm4y^wh!t{`gKme@kUUtf zkyc3D5O5fwa63)h;F5nH06A045qpA^c)4if;dA>gr~Aa|)rB2nsCYj3+Xm`z2W_)8 zphcRXan>*$??B2ZcH1v&Z!-UDAoL>#In9PnEF1-HjCWE`3oR3v9^JJ=0cwjIBqOKk zkpJ|eLY6A_BKpwyCAiQ9U$xg<$0GNSETiugBGq3KIh?m8Y+mK z-1T?hB=k`bkN=~QVBS5@5&8vCok6MM{2f-B1-|X`)pt~Y@0#}x7smE`>HT#~$Y`PF z8#u$(qa-TK$6baD`7BuU6qKR$Ww(U%8+qR82wlT47+fF97Z5t=w{`Nk<*5AIa)m_z9UC;e6HZ?&e zAS>k-lpMJ3J^l(GOTTePQiKdA%;#EQ=^a`-OaO=pZlAZcfqfsxKh+eQ;^oaG`e~zA zDm3?eR9_5y@ID)?8x#2c5IloPJdk_VpfzHUC<{%&47y-<&Mgy6;;<0~c15nD$o5Vs z7kOoTxgQ9raf}3!BC~deM7~}S=m#~>=QLSta&6yXL62n2`EfXBT#*b&f=HgAjGK-6 z=4+Fdt=NsRjwMeherzu~HT=?MFVzKW6vq^IM_edAcJXqV3%% zM#Exv4kjBpp(>I!QY8p)&QF*v#=aUcLsLo0DJj16PX^~@I9)}Kz(xft6M!&s!d|G- z!WQH5AgRI{rdbQW+CLgN_kgH3#;SFygg?$um1hzdzfSzoM@t3yGcgXfks5~+%A@_n z;8Gg-kC%6S#dmmnIFmhui;s625x`U!!dZab8|`p-Qw1WA4LS}#Pz52L#UREBWL^qg zFhDcg{}$xe6rj=>0z*q>Br_+DhsFFI6N|$-aJ@l~rs!rsbBz>#4#=@$!cy~*N8U=hE3#0$}@1QI;70j{3)x!)s3|&Dx?kk6 zdO;eAeCF2#1F$WL9PSS^*}q462dBY4Lt}<>w=NBeD>(k1LI(VF6rrN9pTtHqc_Pf5 zp}=FZhLxbaEv&WRKTD@}_;8^cDOs!oa+n;*K6tNp2LBPaI<7-QVj`ujE{H962Qe1r zP+QBmpgxWbu1|_!XGpHes}TW=6L4Pmy8%I7PXnLv_==*IwJz5Fc%J|R`<^F;IhsyK z(Ns>%T@HsGoEJEq*^V+i9y*+%>8_C*9wrbt*ma}+gR+y2Njx3}s4G3*puZjPdwus5 z>RfC?Hx7xjGffTw?pQ=~bk80K0aj{sdrzMw?x?8ncoxkL^d3Q>u>v#A(hv1}xRI5wOXx30zblc! z^&XH_hh1_&JLv>6STC81AdSsGM?SvTByf_!edF7Lk@q#4k~^Y0BH*5;;>D@E2r{HlzLAjXVI_IyrIA=buRZA00|3HL!QL(AGd$o||ZV6Lr*o z!nh#}s#wX{hbjZ4irEyta}kpyR19KYJkhLp4&P;Nkx}^c-;BMLL}vRAd&vC`Suq3l zIR*NSn*sLi{I}WdS*l|MHvFz|8X`SsP$H7;4)7KwaeJpDyOl<39x&TUAH*0B56JtT zbhrt@p1gt!hA*xIS)1SmF&aCk-3P{2IlagpHQ9W30nr{FY7m$A(V8?KCs^IVquzf- zjMgyj?#_nMGns|sk?e&2NqCX?J13E-r45oz@@fS=AGkp}XSAI>w)ex5 zy7dH|U0fD)UDMI#^g{xd-4NfooLWdl$^M=exW)M19!i@aXVwb#>fXM$8xtiU!h!0z9M&|#K_-z zq->+s&nY6Nr$NOK%&{;OBM@a^@E*It=$eC(hiWhD#8iduY$Sh`o@!^dxhM*Z#6S_= z^m2E~$6)Yvqlga=!Cn4#5f*P}AHRq`iRFSeNFRcBt2|%m@9bkmc-}ximkkx#tTxT- zM&%zOp=keRfvKj&MNQ9nLwpUClamzd{VSZ-x(**?N;@>sWp%r=COg@U3T+Wor@pcU zP5s2vcgpP>5=Kawees3deQW5P&JHp?+_qFSHwj@c1sWle!Y2~*V>J{(zW{5A#vaCz z?*%%f5_c#*xekDr0<_zyM!adxHBc^M$yxj}UV8)6rFt}3Y6r-+Y}$Oo6kS7b zmK;XCdP?JVR|tM;t6p+|e?2v)7>ti0`7;Pz=#Mcn!iN+~<5^3a6w8>L1=Xnny~9~E z`-Al5zq&GL$lj2XjV5Za_1`=azwk4wX%HrKI72j&@He=b;I-&Oj2>dY2`QNH!YLhI zjz<(`3wJh0zSe)a^_+N@wi1MG^oWo6=H_k@V%!d>f{Kxhu3Kxdpm9kIjs3;8e=Msv zb@jam22V#!y&1UByI~qYp?1{{IR4CRb$%qv_R{TJK|5;ovc~P!^$D%ixXZXTIFd() zJ?9iEeR@MmG}#@k>Df_eg-}}385;0nxBuF6c>#aXA1S}yHP!$YfA!>zhgUP&w6%-U zas9P>TNdW!0glYYLGYRkUJU;YnjKyk6!25ynwHVDQ3 zCp-X&oxW^x1HUvNttAfH29*^n_9p>@@WtGCZiRNy8SRiF2U44WAGLD7>1%@u=#cF z?zoJbTC+)5LBkGXV;!aiuBtzc4<9xPlML|E*qTAWiituo1SjSa?OcJZud$| z#Uv6VX`jn}1Y-$E8ZCLTI@h4Ebdq{*d(qzLLHySB2qE1544G|p9~2ESoQNgPBb6Qe za+#>Twy@kn5WO%Nm5mNrucN(zi3n=*VP0?~tKdX>4$CgAQzZlfto;r?R$VbNTJb!fz1vq}i=gB~D-!ZT6rauh{~4u=q5^+}{mEFVmkc*oRpCv4 zdpP`w7}gc21L9uB2LjUIR8uauRRwn~c8S1^iF_wwu+XypTTh3A(L@$xxOhCeA%ebi z^k%|q9scRCzf{XgS%+8gUlFJ>VXibx9fokZyy2@|ZS8Hf0w}3 z#-4n^Ey6;@SXbJee1{IXbKQbi;fxHNeRC?2|AS`8J&q{vRoF|WlXh-mR7@T(t zN*-Ow+3$|%G|qa|V8;mpyoXCogE7ERX&(8|YtJ$vgQ#F9g-_x40 zHdZAATO!a{Z>}$~q3tMXylN~oEY7_TD$qOT zxiRY36A(myvI8XnFDL5G8J$p0!)}Bv;=n5l&i;8gv4N~cAa?ur4tl+`>JfELekGhf za85Ccy9qR~;AqnW#DPXPfj_!(Gm_dQ@Zp2LS}|~%4-dHV(=Z2vb+O=LNlN!lzKmuU zQ7?2Yr0l!gGCdGnZZ|QrHBB~${QLNI8-;H(Fx;UnCAnW!0QK%$wMMt*TubLGn!mS0 zLXHNl->J(}FXpd9ViC``)NjqMlWysSGFV{^J=kE#teC(#JYrc1=S7{j##pNAwXXPqXN*jrl zwR!U_j4HMG10-008k@pPk1!4A?o7-Lir`#eVTs&|5F(-Y@C(y-TaObVV2Q0*npHp- zQ%pn97#$cLg;a?~{AexkLgQvb8*Rf86kD=oME*(KG^uPdm&PoLm@nx;8+572x10(W zI&(xQ{KYd_Txa(Y?c}rYGc)nEl3Rj|1YQU4e z1~2cSd>q@fiv+kH@}~8=KLpfY7zXLLdM9vmR~U{v}iwVHdJW2 zWJ+T@3RI8sG0UT~?$5C4IguR5ef_(&JHe@5u!fQ*P8 zo#RfT0?X6QO+c1Vuoz%Kypm=`%)A9cXb>W<_Ar2qQD6#-d_(fJ(&`KzXq51W)Li8u z&WmK$d1$l_cWg6z&uDP27%z$OPG@6F{;E&mF@LB3Huo`=Ob<#TE=~V67NdUywvsY7!*Erx0tt zf2H$P3u-%295Iay;4{K_a%8Q%gB&9cWK>m&!pQ$3u(|*hjR*7xSHsbh^j<2bK_005}wYT^YaQvueSrP;pVEp z%Y}1SE+<>-#XP@{iIi~K5HzIR!JrP{x0BTOJ5Y zf2BYZ_p&C|%6$tR zme1$-M@zNH4hzDCIY*svLH-Obujt=j)&P`JdPvC{ZO%WY*eNItQ4s z%Cn>&R=U=YsF@Bj3Ifd1n67#777lmzjtzu5>}QkzG*28E$6`c55xKql3m_y;GHBY3 zjLgVS<~_!wAVn3+QJTr1Dq!&1y5tL7v3|#_xS!y>vDSIjSP|HLS?e_+BFM|j!XmAq zq%JhF=u4;u%GvS`S8GXP@HDb=Emg&??kh50UyDl=yx0(jvIOArgRf7!6Grd-JNN{% zES={~JJ0HHwZI{af6o$)eP|;68=$K@wPzZqMV4$#K$K;Ok7^K-x}8ypBtt`+SEJDl zT>5cKbt6EQEO1qoSW9CMoyUrva{?2WD@oQJbWswTXUdt{;e;k+bB0l1R?reDX;iESJFxB@YV^!TM9REND^4rpf~U#(BqrPe zS5%gz7fQ|&(mrr({P>RTBax&yPuAl?33sAVWy>9weQqPAfLW@yjx_Mj*1wf#*IrGl z0&b^q+HgfTOZV{kk)l(3_TQJPFq@$tjtpQ0OhFZb0$F%Wks(KS%o`jmQ3M7{F0xYFRh*~Ahm_Chi$j=rK-31%fWXCL8{@aoRODJ5U4hDM>bpXn$ET6ZzveqmoCme&{i+*|& z5?!iIrJ17AInN_LKz!A9=gJ*Hr;#*5eGvxw>CMo2qCBKoA%&Ur3~TZ+3!(;T4`Dp% zPE{iau?(ZW0euKgrqB|`nuN5+gX*tJ2YKO3O|cLOti=-N47I((Zv19KR0R{QHGDb=&Bv?Z!B6%XmQP!c-Sr#)9j%b#T1Q6rvv>Ztdi*#PEr*BO^0k7 zw>#Y2ea6%M<^a}~7iQY6#hBhor7lA-8rL|rTwryiBVUlP@K>t!cj zvLBnqS%<$twJH#)fmBGkAv{6#=y3HII!+j9GQgmVT&j1lh_#du#n%@^pSj+8#_bf8Q6|BlC zkj^?l>;B8#`;z7=RHU!fa7&a5uQKbCdnz@-;b~IGn86Ey8XdhDW85oqdF)y!dc>5& z?+UMCAPHl78tjasIoHq{2E16?9SbL%e0R)T>$IoBmc&}2CPfW=!Eytw*|UrBW%-ih z$O~ti=~*Ttr`J*<+Y>nyZd)8Mh`5g~85qFq_rN}7P(pblneOu|^f zQ2e3F^q!&dRVtYMMsLh$$Lx1(qXHPrCAv4g$HKH85OYNePwSVQ;(Awn!N%B$MJUE# zGQHA#glW9rD1ass_-}NMG0m`ls174;5psC(gqTYc_wQHKHfF%n;|du`eVIu36VB=tUgWuAV$914HuUU@bPKp$;s9z_qTg#A0) zG>u^{`M9O|r2{4LaK;q5*)HKz2YM<9z5LLeAf$8naDN0&;);q$Lc&hGRZ+OyXdgRc z*+Z6oZx5&FeL=s+cpj01fe#{kFGu#KJg}P>CWh&YVs)7i=+V3%}o;H5W z=%YhI>M#0t>7VqUI#bkdoaD@neXc^^{|=28#IC%h0j+s-pu6WP2)^H}UredbLCe|ue@?Rtx4n7Goe+tHdnJpBPxQGunf zS)=240U;r2eK0c^-iEZgLNmu&5X)(t-5b*?IUi8ou^!xyrofN-OOkQdn7?Uutbl zpHKz?{R0@0<|vk{hk`9!p(qIcq8N9$;m>*9r87UwUHzB?Wh%;HY;@+d;mN3P6u2IV zX&v9ncYS^-1g#T#;If<^;sy@dV)FK@&WnMs(Inn7s+h*Ugu4q`&$kO6CXtJ~%QeL3 zM>{>*vxLqF24K=M?0HJ>jsh_tfgrc6I`C2z%M<=t(549mG;~-{BeD(5 z=)QA8&E}t$Uh0$vBHng;C~4+36M8H@8IW3Kqow-k0F~dQCT75kUXPtUAJ2R_CE-W% z4%PkXBJauWy}!m~o!|BNblUR_aBFG(46+AROm${Z$oh2`SU0|PcF zK~!fnL9Z4==;E|)1~z;bLLy39!$V2+iA?d6orD&ySh=~su7P~Pt-t`NfF(ltv>c3}G zk0k(YF=|ze+-AcEGZOs59Wy%^B_z!)oDs3L-mR>6v`*IQBz?7CT^v>RD8t_55ocBJ zP-w&D8@<#JZKlDXNY=itG)TNp?Uv<$EwCV)khIHO%@#>jTy6mLiA-hJSQXh-EP2(? zXpA1cRNW7nbii~pthINeP1d`?w^K{hX$QI_%S@8vT zC)?m#6QRM<(6=aM(v*t$A6O?}>&Rp+`rWxI^dHXHQy2VeMgQI~Tg7!)yxyW;&6E)S z9Qxub$Im1e&fr^6?C$EhmOF(t-X}+wLWM}KIk0zhW1G z;c?kI5r;A);kv(j+~?aPwR|koIDJ6EcafT}hR@5WaZR1w zIwQ%L@@%1#+X-r2F8#k!f4g@N{dst92mPVnpi!2f+#&U+l#J@kMi5uqKEa~Qq5V9Y z@cV$+{-#`Y_10I079dop(X@E1&`0LbUA&6>cRRfSp(jveG4G&1^ac8=L)cwdTxg|< z&i~u zvlZF)0wc60iMY;ri-RMBff~0s>#oBU#wvw=Kq-ju#mg4l_!?Ka=3qF6g*E*3S5lSLwf2)Q3p~peDKgdua3JPHa4Y6ocuM!Q_eRmtkqr%V5#(?Q{XF z;zCZ(Y4}@6N@>ctUc*csVKG|j))nk}4x#ib)W^q#o#W%!#gVJMgTL}5_S+fwY0fM~ zH>DQu0Zsh6tZg)SZqqm;@d99}7L^^1wZF1>&gk?qUu3t=Avu6_asheFU&OgRZ`UIORqEo2n_+L0|Zo znRzLtS9cFB!<0=KzqzO&V}tfqw~a;4xQue3oC=1~?r>O%8Jk+53#G$z`!`(f+wqw( z>#t?x$e|aiR#H6TC5AFr(A}So==%47(?gV?)=5eRX_6ldCXxhHf6K}%E$K^9nTk$S zx$&#+Mc~1ryK)Gx*2mu9(*1GwZya@6=`=)EwYwLN9v3s;szz3x#Hzji%AgTLY#2wY zU<#K~r4!d8p2S)QeA;?Pg;>onu=iQuvsn6|4LGiypxHY$BhW1Km&VU%Q&N&4d|Pk* z{${XE@Adt|D4GX|0m7+hEr=I)IfCmkUiCZLMVs^CilNI44!0_(D_)myM^Ox{59=)< z**QD}gNKLD;_;}Twf#Y(@9ys_o$!v60E;4;FO(v-I*u;4*wa&LYHFS=lqo4JQug2= zQ3M=bJ4zG$Ke^+KN!Bd;UgcP?k?HTRo6&ggL`Iza8*u`r9$?sGN zp+jgmiY;mIViOYT zYoYnM*NZ)|C$l+zf%s{L^B2zubil#NZ>M!ZV6_bA7tJ$XrGjzPd2nU5eEqhufh{B- zAtt1RRkT5N#^$DS+GMhlK)O6SS)4*vTKd}`1%#K@$5mIl0W2QNViH04QwU2KUd01s zvO`1d#Eib%CNQ@0-~eW*^Rq32&xjx))OE$wDb{HLI|epW-~hELumfD_g$ zw?e$^u*;g&7pT*G!^@?U3!>q-zmY4QS&1q_Fp*NQx916Cr3ADuNbv~>v0-T(rbw{C z5cK#VEYcbxJ0OtC##fNMik6}vCKy%v|B(tK|cEB&|0drVl^p$^h@YN>OJs{gLU+;wp!~$ zDV_GN2$OL?pv6{A5tF13CAt~odDl9jYBq{BDofcb2qHHpDq~mND7G&rE3=I$`{Kw^ z4+#HN^e4$yb1t@poL`k~@Bdg3uX*za4J{c(D*XS7wln0{_t-S8U)nS{stjvLkeZ}4 z%Wwdf%a3qbW23`2+vAsn86%q$J8@^xDpFh3pfAYn!0@anhg9Le?+pmzVOq~s!hcod zIBO}p(g7~uf{5b?TCrfyX*YGqEe{sQhk=&UM;xwSkkuQ$;UhEY(1u{73cufF`m0J> z>q)pRtRz>9iIEp741!GY;AYJnXeJ!n+ijq_@!Ie(&$y%oN3&t?&*GBO{0|mjFx1)9#d|C5?)MVezidCp$WUJJc~<9 zO9Q?BAQz#?$xDD=lLSE{h_PWpEy@wQe7!Tt^jqdJd4*y&ZH>*gS9oZ}ijnnQ6Z!x(xEY%kg@tmiY z$M%%nK7CczzagYlr$teRdz4wdC7Q1dhBn+L#gIA-;&7wvgR}MuKfUD(WCM-ve7XwD z`nL)Jf9ZD*N$txY)3$FOmW{Xl@gTNI)Og=KRRyAO&f;s{SVl^sG|lvbQGx{X+^HLl z)~iokMPsBRHX=32z12f*9LohLk&tm(kQ=po+CVeBD_}DTkv6=N? zsz)}XYs_XPUCXc|-1q!Ii!HO{d5@)Vk3%x`mUmEF?VF)3VKamb0)Wn8`^m{Xlt`)$i!*%B_XnD4-G6JuwBTrM*Xz=;I|HYYA{ZOs5ZmpaPmBDsb`T@@y zE3@T7P(Bbzn^!Ym%Zpwe^ZW>1ymhHe9l6Jw9mWhKnX$A>KZYWh=@6=lLc|cdI-m%>^*xGnv-`@EcQqYPe4tInk zQS++*wW_MLuUWIv!kiIftK*N+8YHT(0?=iivX~trR5H{bDQDG!|8ngzaLHu zymi%wYKQYF5*!W(0nE)*CcA{JtSR;}U$-GeCWT+l)pi+Lds8*wq?Lrn4>ep1KFHzz ziTL8picr%98(c}rN!j!^yu2fApkD;NU7B;y&n@LMDQ5k+h7i*8#bm$(rgV&bXfz%R zKW5%b)nK?2_QmH;zSH}!KkR*|F!%Pm`zk(vWdFw*-t_xO-@*W9^P#=>;V!06xY15T zj&7GHBoxum?fL0xz(~X{-SJO}_e{ETauSv&9BTLj4D~2?w94ajI-2bq7cTnHJE-ki?20ObI8>GsRe(Hpx z&ZbAA7TzAjqV0e~hRc3#E-W^RX$Bdo+qWS_y^c)p9|MJ5dqRdA;`W#!WoU96n02@q z^#UnB3W=rdNDGdxlk&0q7>;q1L}EpTNo)KCvQ@;8ObCoGAQ0MBDu=s>!%u%B>TX<| z3=vD;Y&XL>8VKBrBldM{Y*QUtliozUZ6S3!06}4~va=jb?NDQaZ=KEsQT^n_xHbYy zB{oG6-afbouRS$y?|FjMEQ{E`F`YDsjKb*VWJ9=AmOd}ue~z8TbL!`wXd0|XE*roc z`7RLtpGM+;Iw*dGz35l1Jzqaf6rGhvUgJ>&K}lmPt9QK&T67l=`A2Ma+nrecuU-Hw zw&NaHaY>2M$d3dN&{p!56wXf#i&m3>k4DBNKL#=ICOUzLev6bS&H`v?xGzCDPJARa zbD*TxgEqE(*Zx=EMr^IVF*0ck9Xj5W#;PLf{`@z1zhilS>7?3R{hz!b8zxcE$1Mo~ z1mo?P{J+_tzeXnN4KnF%f0i5v0X<@!+Q_DWj4+RTq}c42hN)WX#1airw{-^L_ zGLio4I{Yn>L7`!7NUS=yIVrfMI4XB`Ny#Wdb9Z2v$*J57#7J^@d_oEuv~jH8rP_}2AgyQ!nlu);7Lfd(h%Pkb3*&TaTGdM&)Rx8_5Oo9o`ZGcw(Roh!zFT2^ zIsjK~GNaubSJFKg#ivtuY|7NF(+aljTGqD_*KHM~9P_{1OW+?Um17ferGYj7N2)l^Tm2FGP+f0LLSo;6tl1FfF)Y5{hdYbG>%qk z%|^?CHJh0u6)kUG7mzz~M48CWXa^teT$Rk`8{2K5%e7{)P&$x0*J~4F2KI~OtP98C z5joqpYN2;kT8&rNesA;ZO}MGdroN58@Q&;mV?=d^BIFMkx75JbuZHT&&E`|%PIxw2 zErTy1BXN_PS7zi##nKFK^Ocz0=}pX`2Cj>> z%#pJho7i0^)~;xuw8x+uo13c}<|)il%*@R8?2bwQIr;K!jwa4m8=NJO)#evVRa(=m zf4zS!QGL(-IE_l;|92~Kk`b6X3|Y2m8mux?+!yfK=8&t4{-|CY}2uOH9M(j}+NcV$B3n1ysa(n6 zc?A0L(G!x!S}I7$&FvI12l?{?C*lu*5b#Vk+vDeV6LkIbA9*;LY}V+W4O*1X^A>Ds z9h5fVAZ_qZ{sS~wEfcY@u#6~5I8gjp8~j)~ila2}jd7~|s#325CKihtU6q{Trkjb# zi?d?Cp~19wb_y~j%rqQSL|!O0?nU7VkCIFYluijQ@cRlA+)p8xDug?#TA!%wp))$V zNrCWm&uAmo1f&&8H%WUA!s2i{!4vv&&(>jQK8rOmdQ1~}FPBj61%BR)BpilGPr4xE zxI5uJEMYsy`dga2B`Dh|Je6U(@~FXI+^XDXNA!=ycw-0t2^WI zK{k-V0(31oo+@>NpzGSo^9F0dG5+NttKzhWMm&1yKjnvDEOt=#rz2Tj0Y2kOZ(0>J zA_zUG@Ls0{TXgw%G|It-XSTy4)oSzyvg`Hs@0cJO}N z-Hqg56qx2r%dRsHhkG)G6ckAZ_2$;v^+3;hB>A$!5wwY5jT_$zri`bp6ZBU{k>u4R z`4|j`Uv+*DKzHiGKUk5F`1tr)wW$o&zT~*1ZXVzRscIM=r!oLyWn~qCYi-B_u8K$b zS!WFCoXvKZET(`UQ3??-mgn!z|WKNQhK|Cta`~(U;jsPjtD8?L0N4RWH|EYId zB1X#hp^MMnlk-vo{pB@t#Tg*awT)-4A|&EoS98_tJLK{)bsWNwYtHz3I%OO`G0#!m zLh#S~9G%f{l?U~Ye4scCHY2ILkG@1vh6-lTp4N%{bMu2?!B3=CdlQ7?xP*kZQr(rbHtNiq8~aL)hTpony7Fq@EOZS- z#KerY8ytO_6tuKjuf4FzhZ0g!RMHFeIplH%_qTkJ%M}5ZtW*aMu_@dfm~(UKfue<= zF0i)Y^dl4VR=1CG=lcJQQCzEX;Iz6Xr`S^TTt+I3xDmdNP!$!Kf3Y(5SL=)<4k{OB z^#sNksT!Ql{52@AifCNXY;F3+kbT=633@?cF|=_y&ksQ+-*GL(Ou1YSslihAXZp5L zZvuX^(}=o$`n~TfL3MV{$axUo>cjpEQ?kw-V-C;n@(UMMTbdwYg!t)0SDNqb_smw| zfD*S-vyqnX$kGJ;Z0T{$N~<-DbXz8;ho7@~8&22TcQ65_)A6t&`8~?*4aytL7b@kF zOr6aL*Mie146OW^GHm9uT|eV@Y8Zr>Q@;@EznSbkQ*A0Fyp0gSXV6YXhoQC2_1V6^Lrcc|+=o7%j3)nZDKwOWl%FxR zHTcD|`33beaNsl;WA{F545!M_8C*T0Jk(6R04 zdKB9_(8tpp&kV~n4BIyCB*5S4{yzJ@H(v4lLi2vMDOd!+_#ys~_hx*xe{5LFjb?PQ zYIcWtkHG(ep`qzIMxMrxz%$LNgqC#RdNxb__V{+DPtJJ&%Ok*6IMz0gD zPdc8-*W3-GqL?scXj?KWwl90ikC=xNM3>H1UTuFu=Csx05H7)(NZFbPnA+?qSa7LW zh*ZW1ZAJlC9G`@UDO&4k^w#j(u#)c$<`GaMP`-29s$#f;wuntA!kC{}4 zy6q=YSy8k4Wn^O_V%pj_44@`FWl6bDbllz|i(KL{sP7H^nCH)j1==A$dvUqNo3Ef!qb89mas-XhS->AMWwB z2L`aP;mw68hi=_@(t@)=YGH;l7!M$>t0@4%ePwkEL+mZ1$W>Y|Lf;VAO=9y)|BCBM z0L=yLG~SF*F2?YB42q8pML%pM-(O-rLj#=EOo~)3jFk$KTL(2_mh%6Sw4AIzefP%? zPHb{d_ipT+4i?vO2;Qv#9Rq`+)p~*+*)4w1ZTKF8f8$cuRsZ7SQ0gv2%N`b!sc=QK z?yej|DjH_wZ?C-h2}VJn#%@Gjt3Nr%GZT_#v2CeAdE{s+yu;oTbMbK;)0s`h2mRt^)&_FwoZzeBpOnLgZYkqas(EN+D^5p}v zC;N1=PBxZ*COlD|%^@6nm9)}B@Vl1%n=OYm_NRaGv?a}JtY!P}@>LieK+*Wn~0PApnG*!>-FGK6-mlYTo$l(2A4}-_k$`bi1SbwYTcW9$~8%^##4<36eQRWU@h(VPNze)Pv zOPHfXZ@-AR{9DpMUh*}er`W_V zT>;ndscrns@+4##q6}V_&jsgvQVI&Qlv?hUtS%e9YncO*qPr#;E(#nX0v^dLcEhCv z+^YxFZGJmecy3+tj zj@sp=>ecPvmhMk?FtvLs{^og-$|@Fo^xGh$-x4=|wQ<7F^h<|Fbmvhq<$nJJW{!2p zPk*5wW~i43TPIFsf4fLFv^XcRJ!|&MdxU7#vs_GvE3mEqcgZ^t6BCoGL#b5-SU;Lz zoQZ6q(8@|XnxwKE>E)X6U3C%0e3rf0Qq5l--kz4|Kn@_)5wy<}T;dcNAJ<9U(@`@tccA&KZ$$FDxuoflTPMmROu66%xVZ!hC z*JzlIMDZ*%RTYPbWCRf9l3(8aR%xvEx~C-nXwg%sB!tZznZAd@6cW#nT{hUr%zh#dLt|$Y=!s_L> z>AYzLDZmPlJLXk3x9Ka8WSx_VD+2h1=m>*|=~_3m507gd;rq}wPt0B<3GxSqt1~fi zm}E+XAo~IT0%mle(ShBqa={Z0Iu26m9+!J}JnpL5Z^thP`V^dcintTr`XfjDFJZu2 z-2_5T2vmxh z!nGfNOtyJA;q$q|=SjsvHex^M{suPq1gM4$CRj{;gGlGJNhg!_P=|*QXp2cT<-xa_ z4OVpR$|zGQlo0AU`%+$g_?em3Eh}1OrNj?!{d+#S*nq%&joX*T;|&A^kC35Xrm1Wa zp@i>g&8R%INpFq>x=4}3r@mV{6|rbK>f)qyzaZGR4=!;+6-q&FZcan*r)%{nrVKs| z%U-B0cU)q#hNF+iaB8Kol2aA3mJ*^Qp@(J`OYTh2rc5%;PgCj+Nodd>O^%%h8R;;R5kIOLKW>aNyn|yG?VC5e zOpJFZhvIdL+EA_+6WvHQS#pc){(**eJ|Z#dlu-EL#bvo%E%(dJQ7!i5h= zVeR3R!5e@kY)RRLA@*bz)(K9t<6%PcLp9O*uiF5=`1W8ZB#3EfV03A^xg;-cSMM+P z*yzBqqVRc8LlFr?fz_=tF4t2_;nC3;#$IYAYBFIseR@OZY5+??GJvYt^J{6Z1#|24 zNtfh?2VIPRpkGPoIjF(7Ns3zt@8h;9W z6lso-tGIK2*(VWAbPBA6dR!CLHRiR=)(!1MT6xFDE-L9r9%K7NG+AT#&Ly0nilMWFllU0XDbs45$kd~4o|BY@)X#oB3UtU?}XamBY*s6dRee+i;@m>O5F9>q8b);c;1C8!d4Ue zA)9tlEUjQ@ofAG2G|KIBN6 zFf6pyWDG1-xfILD{rnFjFiU#pyQf!U8jif44z=0gbxz$an%Jk>-bZ>Vc6hw;aazrPvjK|*1O{)1ymlUr1T8C+&39Z`M8LrF} zQ!D^0Fv__gRX&6@lH}_6sXdjo3?ec<@o=s@AQJ0Gs9e0q`_x(&m?Qof=M4Uw=C^<X2DP zMFTklBP5c3M@UIJ01=GU?D}E5Kp_QR_9Svw8xw!R&qi?Qu>ub+%su2uI|{8TdL}3q3m7<@co? z+^XbACI!=*pfRhj>$|H0w}X%)eX%88o`i`Tew!2W)+1;4CoC%IO|f%QW^7(WhV|KI zJ6D&YBCDS9WoS!HTVgfqSRq7faT}e_Qezv?E#viSk3n*hTTkUR;%aovDU zHy|L$Z6n+FMN1hKNRm!Vr0=msoen8FEE5M|Hf7VF!bb-fvYMXw^_2m#GpD@#Yv(Ud zgKQorN#$*OEEj%4Wnc*zFueU-pT0?b^7?Q-I8~}tvl6qcw&`1mOd{onCVP?+jq-FU z#tLHE*ov$jWszRQ_FPrAc~ph6@1S~M@41`Qq-uAgjqK97D3PGZI2?N}I_G+PUL19s z9`Qk935C;W0>(1=*QeX?aB)qw&W5%e4(HgYEob{fd<)mNfA(`bO%vhBVp^!rLm9;0 z6Gqdstu(@PNvPJ{dvI`C@)&J(UqU0o`56SUvb&5;l}Jg!<1C>rzTnrGSj zU^^*T8fI<$17h_F|C8qq$tu4&OQ_oSNsh`WeS-8HrxjTqv;N(B7E^JXtBbKwnJ;C5 zyWWsJ-(;XnXly<7B^67oe-VI1|Yh={2-UvbqPa4x(wBA=Xe8 zt2`|+; zinL$n2d8%UwZ-auRHm}fsedvhLEM-O*enY! zw&vMIimiUpQ?^4$52?Yg`qMOynnomyQ+o{w}nG|bmt^2 zIyy9pMxVXjg_xm_DP4N_-OAt->?w(Zw5(#FE_n#-`wg*KC67r2HRLX|6jm4ll z`;opptEUn{;?wz^%eldBP2c{J)AA=d2_&*+`rA-;K<9|2dv=a32~212aWOiNxU;jd z-RUzS#=*nO1IBo#ayxuOUMga~b&c4{zib2VlP#H?8f^$2_KY>?Uv7c!+;>)Usf0i% zkVh#k5?QNq?r6`Xr1Vy3hzC6SpcjQfKE~cT@K|} zdfHi7UT#a0l`;NTYW1g{@L~kjbx^6)Z#Qn;J00cMM{F$GfF&?6Sj)Ts(0(Afx-H1a zzyso0vJ=zm@X1OmL}cdE{ZqQmtUZK0Ko%L9n`?fEk4+!MP+5jp23jPm0osOMrvZNX zA=Hj^XN2Cz{?;*=CZx%*T)Vz!dpHpylD>lby~=PM{(X_CuS4|c+4?eu_z1g7ZA?2d z)_$be83>qSB-}t*^_Klv8hqaFGm_r2^N{vF7`H0MThjLq#hnY(Op-+{PZD7RihgaO z*NwuAE@IUtRW0J}D3n`Z@P&MIk>gHxx1s(h)&DM?fUli(fV(e`0Lv6qlo25yAz|_8 zntRB3c(l0PtqCjGHyLLmH6^k30sQ2K1+b6bq;s?6B186YbDQOF$rPTsDR&O+-bs4x#_-i zhyT{-v5w7Z3Jq|YU<3pNB(_SHuC)UUx$espKKA)oM3+kgw-WLp6Fk!K=mb>dl95C^ z^38Xyw+`9wXMWB!x~SVdIo0tb&9dhtFr6q{CM251Z)LAh84otUQ?pxy%7d))Z*f#S zE5_%KR~lbW!SN;5HjadeG|!1>a2yxlB>{zi8LIZ(F|`&v2WLcR*=i*r$Sv2l*Oz!S z=rhG6V#LS1Ga6@~VV|S^g}#IA??$ft5naqH1@#tW3`^M~NAAshk^L`3*B`DAhlYlb zL#A6?4lh{gaiRY4>zk8ztqfq8^SsZr(5+U*Or~3ASY9$_#^ADT(R2jw8&S3R$$RGs zvU48F&d#w`iiq)o5B}4^@s#tZ6+dJvML$QS_H&UYiQO`_ha_o3`G+tLPetLZ@1X@- zRPo09PW&aTv*x_xM~`@(6Kw-iPCiAa>PQN7d$mnT`NpRYYv+3>y>S$ua$klV02Jr_ zMAH=v9iulX24j3~ZZ0x;!kWP6E9z}Wj|~W#KW|kz1o~{E#(M2^ad8olNUGo@WQqR; z{Jc4{zhK3`O3Hi`QAS7+XlJvQJ+J+rR=&NTS=JTGn)QZ&k9M2wcUKW zmvhI&kNlSDN!j1gT`z}q&d$tQC@*UbU7^<&M&*wZEUF|E)^%Kp<#4je0WL*}sSPQ= zc^4vHK!TVZYwvF!M+tOR_SBk6%*NqQD3$fC zxSPx4ZwEZ-gO~)K8oD29+n4AQG3c-dXUI{=YdOK_&%PhJpPig$A7~4XROv6K#O3@HO+gjYJGg+p@)2J}nSAJcw}&>>632MuM8{wN zjDaFgZK@Ovc%;~PE`$O1jYF?PDRjy@y|(G2;;c^P{AGxA|&o657TkFy@=GR zBkA!cX@tcn?PT1o?R($Jd>;YA;OT0!iJ$Ydh>6%8GoMKYycx+gVp`OW$7QdP}c8Pd{PR2Hi zxBB#8FJYluTTluP(m&MP%hHg%m_@1pPxFbz<>(j6$Vghl&}a(NYfUzObQbVH9YxlG z>{ir^r20b?r9ygAB+C@>|1#tMvFRi`P*Qe_d4dC!jytQp-pqbGt9u(EUS8{| zYb9cY!4M{)8@jSKPnV|>%Pk%-bd+xW1H)^^EBVqODfA2=DwP$vzLjZ3TwWkvNT)rT z*J>;_eZuhg=Xki@0$3eTZaFETgqTqWv7<~0!Jl8S8gte6sweGbS7uJdJUnJEjU)Q{orutgy3H=`xpt|7-?^hAd# z(Wr7NR_-7&p~2S^I9;8LE(orH zfM;TN*33F}g^15Qx;x?$C159>KKV!K`VzL_I+q#&Ggc_l=|J4T=Tw1@&<}{ILAc(& z{VHoK*uVPV;W|$I*eFPNlGp-8cqbF@x{d9iQYzN{Q>qECfjUTwMe5}+sp-<{7)eISGf6C zIQ3_W5T>9YfE10%pRzd52U9*e!3UZP0_=6G-mp)KukO2v)-I^bs$S01y!a6>F8tp37wJgE;L~Qjs$wqGS%RTbnXJ$|7)DyP^3WCx7kk4M z*{G9h@Gl3XZQS)xho_W=8#8l9_vW;wH4-vjZE&Toon5!DWx|gk$-&k-m(|>N6NF_S z9Nz^V-lAQY{w~>P@r5gBa6;cruD-)@ZNNbqgh^qs!LAiGzLdTEp-?8sP7q57**m(L z)i1CZG&mK*U1!YLHpUvwap3uD^W?ncSH~syfUDC4su-kZWmYQxH@unTU*FASW~!;! z=cBsUpbWa}3prR(^Bj)G%u?rZ!g$AdwXXLk_Q;hB(8cg)s*HNy^uyv(QgGEFpRY%r zCZ95qi|yVVCeWxSEic~}009?NqI-V4yL&_OLz&?Jbfx0!XlTkmUAh|E@p1-FUpEWZ zu-V0D@OGG@%luLzV?lXzrz7`Lo~ytRSVNlbIb zi%Z8OK?D#A20ZxRQ_x>O67(kXRT}DxLHWKqA@kl4O!WoQp<`f(IkvU+Y|606)tVgc z_S$t85P#<=dS+J|B6a+NA`lG2%0K ziF)nTHQLG1Zbt- zB0sea_{;qs5x@6?8nV^)Q2gZVEQ1Yc0{>e~{Ey@SxL9DRgLsJrzcVxbG-%cDNt+<3 z)&7l3rKydj^QyTo+odE@*7VcpGD*3mg-8Hkxxvg{FPh?S!fa;jwvS#dOSkz^>|Rwd z3pqnNblgdZW`1b>rdyD z^kpJzSXTO-h=yF;Rcm0-6rpc&m|GeK;~fS@b(+_kI$SmXL#WcPsY(1sIXO2kgQxIr znU$SWDzqc-tkcpvCq-ydea`O=pZ3h_atwj95;ZZmBpB_#EBxVFr|D9KD zRg@?yz>;*XHPgVlPlVp(#8i&A_-58=H<=&e@&fw0p$#eqrYFAI8XAX=Q>Mn|nPM)! zv9YC`y0|E!t$S#U;EeqXXS#8$Yl<$^!FP$n{eeE9*b$^&#G!n$9hE$%>@-}Yy<}^! z9IskJ0mpxY@WWDT0COel#T8jVS~89r#ev156ZHe9{g4yaBPqku=)(bI*^dNxS({~?&NBfEA+QyjJi5ON;@FjGuD887Ou zGyHG!8$kpyV?UY0`a}}SV%AN=ezJmqksnN>mTEjyN~WtWR`qd93j#~mkDm;I#zXUQ z&FRiqt@1eLyZKU;*(=!YyQo5Ve*P+a9Xs+o7ab(@I=11Z;4B@tyBXzyk>W%L@(&mU z=`&+Geiec&AQbFJJlMSPRLn*NOb4#N!3Rb6Fbo%S7?#;d&*#6qmsX9dA>UQ!*mY$- z?zb&l^T7HY;Gqneg|8QQonkUoCh^>;ow=`ZE)vU|{^51W`N*45YN_BFo&5XsghI|3 zO$awLVNSc{{thsc8;sIktS$xaI?(%US{1z1@k*&1zbVhlbZEM6)&k#<^n&OhK z@QivUyw41Q7G2K6nA5@N!Nx$(JjK~hsovb$)MTg!VQH<6x_-+Nnjd{^3qFjEGHV(h zF)96MK@4eZh1vC5!ClpR$T2URv*6r!<7Ph%6iM@j!^l2bUke@6sGh-T zTsg^l$tA`1$yPZ&_G2!jIfO^U5A%{*Hs<5~N4y>u;Vv6&MR2J4f}sfx3^U~_EE6^@ zcWvM!nRLz8y3>V9gMjb?1sgj|==BK=0M*R>f2q~jP5;I76jM}rTz<^tb`XuL)U4Dm z0`QyS+IRVnTt#|HI@DzKM_~+5pSru11qulcKb2S8WRqE! znDGUnb@${!AwJFpn_$T0W;Q6;lr1z96)I(Q-Iw0R7i@+>1XAYaO4+3THk)HBTLqDd z(Fkd`3eIf6P&z7U^b3CB7kc8qTt-I9QJA(e+J1HW-%nfg8|TUw2MUAHvc ze!Dr|g+zlxfe=nT~-zkt_RIH3TI^$U5<<9-=Ad@5Tfs~XFjgrit2t! zt>2%%{z&p8NA^+{<%hWtQ)0z7H-~Kmk8vOL{_o!;0s;hqkO)0M#24aIM*S1hmGS)n zT5=2Ux&Q%@3KZ5rsT)D3__x69zr+5S1I!Sqz2TPN{`^URMhrUG{Z`LQfOd+6(OSB1 zj@Am^G3|~vrMC#U?6vY}SwC{&Cv)>q;C}LeZf2VP;D~E6xQ{Ka6OjBw!ctYm?P}jnXZ=pcNQYNKw*En z+FnD)FZ1_UAs|6X(gMAhF&skpWMaLRHOW}}5!?*Zw;4k>>jt-Yk%Rf8J=6YV8?DPk zvpii0_m2XF4C5|8kPr2rFc1lNg8)5*36SsPBeKH)ta?|9!ut4EK5TCLoE&skPEN>1 z{GT&3Pc^ydET5T}m>erL!SO~Y{{UeA7Yc^Jj_)GnT>H+~9nWoc-haF1bthD0nNq`( zFXh?q!4F#TQIU&V)*Bg?MmB~<2IEHBjHSs@Hwv?TdSVFpka2LrRq`ZZzKAbJgstWM zVfOEq!JAs;IwsMuv7sp_D9Uu3Q5hK-vvtZ;mpU68x$Z>%)yMI#g6JO^ntuY7GGkPe zwY7DX-I`!(hB@RQuE1w@+qDk8i@KseZNy!ks9}+jVgO47tSM*7rHqZ91E@t{&1(eO zKmM!#`iE?YaI-SJ13FN34`%W><&>1b`uh6b-Q5w>)0df2tI)mWi~dN&aq;o~ug|Bx zziP}Pm6v*Z!GINC`P>#nT?r-se1-q<3BW*>k!a(vt^LJ%x+cILX3>$6{eV(%19pBVJJ? z68K)-$*1FczUDvDgEP47zR9I9zAeahuX6hf{8JJk=HS41(}^Zf$aR&6TwPyR8}&jy z;6I?B6(jx6T}P63ajmy`-CsoFvLSqd-lpm@N&DYwnyyD=YRw1|L3=YZvnV1V!l|jL zx8Vkaf?m)k9lwFyszE6!^N&@zHGhuomJ%5sKPrvQ+<0dsId0grNWYyIKzhNftPXE& zBWeF}cx_+b#q!Ag+ZJw#(Q$Dj01XIA6szzXhy}1d`TDAY0L1=T;<98$s963@AY^1@ zq$2tKxy|?sUqA9-ad9zCA08_+a~GiFi7=nY%GGJK?J+)H?+zqE4Hsl`Ir#d9v&i_h zRy`e*R@%Qjd31YcmX|Yd+Ad4W<~rWjSt`H%;Qx7#>CpCeB0!plygDeCs7o$41>O{z z{4;B8Y^=)VP{Zib&N3x=dz4%mb64HcU1LX;rLViBxY%g3FZ_)TO`zuI#|OmxT|jhZ z`8b9R?3?`p`9cl`xQrb?VPJ@hVitcmApP%ITQdlAn)@aJXT4Yl1Bl0V41?Ig|9v-r zYhVNgj3c1E-TOCc#CHR{fmQYcMbCK$K`jjOzyG>jC)~kE zaZ6qC^(%qk-8xv?{cgrcXcHic2?q8U7bt!$@fv*vR@$p$#<)2<2Q@d}=M`RZKu{|S zLzpsC^YY>j#u90Q4g*>oRdQ3vZ;_F39S;X|`MUY=$PRh`^=ZoMJJ5Xt13=%&)sFMH zzSCD>UEO6lqQs{$^RxACrf1$Z;S=Ov)h1B%3=B?#hK}y&5Et*qzDY#Vt{trbx(-Z6 z-7xRR8xn5r4_Z{>6(TbQ3V6;3GcZ7dL|{gS4&oZAeikVD5RE@@32&LER*HOug6r-W z4mkw{O)rh=cWB92!swUhM<<8T%odS0#{WDHbZUQ~*NR4+A9m(D+?nal=W}2dlDj1+ z@NC`Iyt$5Rvr=41Tr;h}O?$!;6VdST@g0ApI({OCU}Yw+1_UQl?VfJ=_(}9|96nF( z%PlUzn$j1*M>Su>X^F84lVc^={Q~@xV7zvDh?hNZJ{Ku|Pa$EtcJhLzIUg!8>fFzb zmpgrhY`)PZ!)ljn3?rrsdh>P~#ZmTBq2~y{pfQt@up;}~eTWvrI_VzH!+b#SfXhNm z*X2|vOF-K~K`RW5E=Q=_ZMN}hj*9Hf{r3fUsC6wa;(Fd3`70KV=CQ3;Wove=uD*CE zdGC4vGuQi(fM+-6YAx*lM6GNHCRWV#-e-~yOdLo$G+zSZBZo(mYFgb+ML)v5DV9gX zBvISj+LUueA(H4c5rg5dLUeWYPg0QXjjHL%C>}>gC~Fbv>FH}6W&Q2&fT({kZ&9nyDOh&=Dxx1_7fsw(E4LU?$CW=9C190;zgWV-t7y$AsW+oW~-6h^%y!VOCyuLFjT@UdpgrV^Jlm&i1@*>=PHA16#@*eDJ*d=IyT z{=Va@f%<7RxUVZty$v|Wae`NHn~4@jH4l`RjEB+f1oj)$en(y zKc8<#o;i7-dC}p*(Ab@5LBl~vc%=EC=jB-H_tf@dWksM7F?Q=4a20WT;ILkX)Ymb? zc7#CN7!Coiv#_WrDA0iHm+kW)L&HP0G=vn3L?l?ozil8{oF-N*REvu&+kP?>Pew92 z516c+j>2FSWuPk`*=S}3-9P8*f zkOwCiLkc?8Xyn~t0vqDPAa}K`W*tOJ5~*MjQ{NG*|I2d_n}9%u5LUn0;*p>0@ghxZP7blVr{@;1 zwYSOjI6XmzI1rW9M1s+siVa!cG_hU<5cEURmK65kpaGZne zgvA`=l+dO@S2q2+-`m@e=%8xW?f z>HZj_oM%WA@N95gjlyBW#vXa6pzZs7J%0y0{A9ySc-Y~e-oQHSkT$Mm>Ns_fW?%~w zS0rsyqZ`=xsTP`4}q#qFfwY1k_l8l8B`I4$5 zR_pZnhmMM6uMQ)=^56Etk`x@rS{f~}qupw@kTI_C4OfkV%La{{+ zHa#t~m{#w6 ztEDLonXHh(*P&I1$|<9FejV~&I;!zUvsoF`@E$MBK~(fE9KK4t;0H_PlcWc8_CSLC$6(w&j-&udAY?a zU|flD@`)dDN9~zdAC2$burL7G>U@SK#4L7VMVMc$2gePQI>4+Row`yp)xej5UBvS`A0#fT0;cq4r;i1{rD))u#CamH>&F2$r!5j+u>vQgAH!@77 z7lhTq3R3=6=-UK+iv=@i!N(#ZSRL~jgNKg$%>T-J;%*@T!_M`j4wMI^fjodzFx1cQ zT@;}JE{D~ecrvZJqlI|$UJU?2_W{XBGO7@xbQu0h?=riWUoZ?fxJScsNO`xsw4qBRIHdxCAbF@>REEMzG>si| zpM5pBjq!+*Y^c2^%?S+y(-SRMSan(1$#U(>$6V4($9SS0NUpQB-o`_Swyd*e)>@j~_M=s-Y#gk0NkW4xOi4HTr$JY&d zd8XRbwzt;4To?Au6mr2)Xt@%N{q)81@jmFk&psRCZgvR2t+gg8c?>;ar}SH19*fhi zd_KM&A|lNoBSUTB_M*a?_bmY~r*#+spDVT5jcf{I^jqUQkZVc-l6!3Qk!rp^xc6@f zZPzq-Swy|av15UJN>LRtct{4T?KaPOyw5Ms{V4YW(PT&k<)7M-4?lEzHA?*%PY5+C zc>=!IQNUd{IqxP=vzafdw4D>rFqjqU@(R*o?~P}w&aEU`ou(0*uj8SoU~;SA3SMQK zX5QI=c08HILc{*vP$?(-QnnPFIC!&Bit^Qn;)Md+;T3-X$%`n3EUM^wVCl~Nia5!! zTKzMN+gVQ)(xCAZ)@hz=F4n7g9tn+VQhTjP-VGSDU4J&W>jAr~jc(X{8*JoHFB$F{ zGcrW+p_;bgJI?{6f}FTT6r!YesJwFb7EP+ zat5SH8x-r-=6+}$gpC(r;qEx+%6uq5!fguk{et5HjCGKMxhhgoEgMbL-Z*+%-Enui zW1n(sxrUb*Zh*8K?+cL#G<>vA=Gu99NaaiI+$QS7i6T8LWT#}jM-V$`4F`1*u8-(< zIQ>QPo9%;&nw3%Sci34wK*H^V5s;^VmPlmIW%d zhx8WJyFY#FIk`#?Pi-@#6NiUqc!=t4t9M8_GGrmbv3+l4t(^M_L9P6RkfI=K<=r}IJCIbbI)JRq8)l5GvzJ}c7yv4a2!Hl8h1 zS%$|B=-o5<+!TkQfhHo%H@0ysl?4pIA49c&H2yAaCToNJQ`qo#`XM@;7Z}FLKDFm7 zJhzTwM+;$XV z{e-+RE*JCk^o+Lw7nhJEWhI68X?%`L`s{cRP9wAh`eeVUpL#J;ZO!IfwpF5QaKc=B z-IqZ?m!Xe`W8v52jzIPpS6YvulhCj3s>SC`ifbm?{3FS*obFl|Ysz$$!Q(KsNp z6C%Cd4jK<9jum_(Q9pX>c4hdN??VW*W3kao5V!hJ{qerQXTc{EXKJ+!3&_$Yqis-N>J78Attr=tVE+lFOL}@ruo)gVt|0{O;FVl1>Ejx947i-tk z?*7Oq1Q$M8>x{LWF4%cYaCAFe?S~@rdP^^j0Nv7vUYyz1_g(-X=;tcQ*bd<9CHcFE zW~DL=>kKR9B1;<3#^Y;R7(ODYRviD){-H&z%!MqgltItIVhJ_h`KYY96veCdYaZT6(b`g z3{5wM6&4rwaKGzMPJ{?d2ZiP@DoOUy-uM0_Cg@)j9);?xUT_cQZ2V$YJ{zs)7^QaJ zOD`75E6o(Ko_Tt)l%ZLV%}R$Mc0EWWPUd=`T@eamaFM=O{`oauPEoQ3RgI05WfQkz zg>@x%=0!W|fsm|~Q#nAGg@o&D)a^7+;Sv-3s+)f~@&|FvmkM9O{C}5||2o%gEFdX& z9R8Yw!v=V2HA%A35!(n@5!;Pz86^dEf(69Lt{O-5|Jsw!wD2BWBq~@ zIeE@sH+ED=(X_31>Yz3r57Yclp8nv^Foa zHRdA3o#KIj*6}q`y;O6vm#|V`u6D78T2QYE#{8yCG+TpX!@|V>uITa3eAd*9-Q$qV z31peht>@`hJItB^V-uJxu$UsW?sF6vMc3M+&SKRonE8tr>G)9HFPhp63&RTz57R45 ztCLWCq((6|I*{-Ga0v>2{<*r&Qt#zPf`fxMfDR=Ipgd;8U5P|8TkG)NpDsiKKrMJ7 zAtAGs97eqs!_hAcAAlwqRN~L)rBzUW;XGY*=*)d46N_5d+ztXsuok3M(^Y!DC`~M( zjFiwBZUm||_G31Yxm$R8Q}u_vvAp^xvVK&&XP7U7pB_}hiE$91J9FFQOtwSiN{g*!LE>c z;#N6H&QwP$=Q$`C`&U^MYb=|mhH*C$)pUSejSyK~(Uc{7!wFvyLFqtlQ@!rqke?G( zEJ;j!?%)ZC+ux7$-{&d(f^KL?jkPlW@kjc`SGQFa$?fCgXsz0hJKv@RUX|Yx5XWul zI*Tb#0KE>;)foZ==fKz|HT}joVW3QQd#>qI5QOevH=E$di=zUR;b?Y7mF0AAED;q#Kp=JU zN9mZZ0+&}(l{yWble8!geGCj4nXENX;v;$vCYL_FiH5kYi>wFu)gz!zx zR(6=vgghWn{5P-41H;{b2>oK!-bRN6^6yZ_Waf*E`Y@Rp5i{Fp*ku0x5iuZ6NLtan z9G{)hTqG~HpbI`Z)9c#&h{r#SJzXV=^!6de{s=u_PVi}?)ZkW>3iLg$oYYLw2FzvB z%UGSZ%1| zOqtamm*dm-rzG>1=4KiSXT?lzf7_K7vkta~KdA)>>~@aur=hMQrM~KR9g@+Gibp5D zij~-4-8sqpYLP8QvTBb*YxjkbIZ54xM$~z*tv(jII@_h~a4S&tvMI={;Nzqlu2-Gd z&PodETIbRi&RzLe=qyCck?N+d>C_7!p_vLb#96$C-Wd)k`82`JqPazFEiNgZ^QqUO zuPj~{dluSrTHvAZzd9etW{Ol1Ts~h08tk zyRrWn;p-F8HG$=Qn4?jCP^8hwHXa1ViS%5m7W(}=`O}4&kb6>b*rLm)T-|7YZldzQ z#U6x}Pz1lyg~UOfTrDK|gEj2kO?$^X60h?OH|Ve!Dfv5Zd7L@S{!um2uZy!PB?GNZ z7=>6?LKuUGdQ060xrgS{nF|R2iD)VlW5J&J`a3NsRM*t>U>SJjCaGUuU-u``ymwrH zX5+$dmQ)2A*OC+5f&31cC>UqHbsx&nO{L zwq#;t6PmD7l6PBm{>$}>-xZh$KA_J?lQ-MDcO-%0uF{>7 zR70nVfAeLxs*Wb8NAV_hOe?y?yI?ESLBP_rRPXOt?eQtUIsn)4R`x2t!SA17rA%=*rbuhI5E8*a%PQ@JQ|ly9g(e;4 z0CY3mW!zRdK&b$Lc6rhY3tOU@Lz9XhsD}(O&!SPZjS`i&zE_?XGe&*uiKxbNks_K~#iYYSkM4PjmE0qk|@j zX-8)~890d>ZpZxNdaZEv(R`ogE5WcboJAU)S19|yw|df?&XA)0=f*MAOXkH{%uDNt zHChVN+&_t1rxJ~4wFj*ifq&p@$&>tXU|&BGU_@EbLy0~F2Wmc^snXGh0ieS`&7A`v zz#c}w@X7vIuc_)f&!sZ@$rL zFdx}$IJ-K4xxu9W;0FeU*tNDs1VAkz^n<&Yz=SBAnvdf%?NLBqqV&7ss( zS9hCddxro6U3&ZbDMszab@{Xqqy8#Z&txHH?CqH%2R6?|GpH>!8$OGjyXWfbKba=; zM0m`q5>6b9{hY%9Hk*IesFf$w>>eoQ#;vE$8osgqC-k;W2a-p4Zu~=Cj_z2@fRk-M z!B9CZyaYyxra!Kdm>UN+Oq4);=qu>>_;}nQ!Z7g^;2Wps_J?iqlGDI}u}KmDMs(f{ zMMO+YEKCzP56l{PV~^et3jpNBK_9WqIb7c0bQ zAd)k5H9@DNnnZ-D@ba$x^Uc5=4j!`25Ca((@yr^O6yi~TLubQgWoM(wTK85H8v4B# z7&~Pc>S8`HZ8ZFojU)-PEY$+ki2{j$)HYYI63f=B<&)i9Y+>;a)EU-1adGQRZO>eAMFV1f{&1=Kg*c??{t4Ca* zubEAGN!-5U|IbV{4gr+J(>!m5FA_P!+WiR3IaxMx+{CA^ z=X|ARLv~?W!qJ%f#%3v|6$Ns}at?7;wza?o-+2rE^d`conzJKFw5nt+H8OF6{>Gv&0^6TR^tcZ8Gi4K$zH(lhc?wR zG^PvbF@cO6m*ba_mWpa0^Yi(W_tG;hfPNm4`r{~n;@-RQ>Ec6IGLmxYaX7XxHx3%l@|43$QIw%4pwwGH#c}}=67%N$eNoy6cJisn(EKy!{_!LY<5a_K$^FzOC^!QJ~6xj?oEN z>%@aq7}3sah#9BWoI_*zh+@yE2_{j`!_osa&wfC9KB`H^ax z_=3rl+kh;a6D6?f+Xm6qhs%)KAG5%}q0p#uPN{nyT`k z?78P)ze#Rx7&P;Yrxyx$4t+chB)-K}bx<+Fe7VAMp~RPGV|M6Ir4-N~foufxK*|DqxED?-(nt@9DZ*TcYXuAUz< ziZE2gTf29a)tiS2?5UD)@FE+_=(3_0I_zhjZuBnp%c|%8auGYC-96C@PZa?Q>!alM zXI-8)h{VngFgz}%Hn#6n_#6)0PVP)G21x!=<*xfn)f(DO64}_1|Bt!1jLNcWw}u4) zr9_cNLP9!3kS+-U>28qj?(Qy0kp}7RF6r*>?k?$faX-)A`?dS!0p!=_KiDf{AojToj&1WmPlK^ zZ*=~Tw7J4(;>{{9dB(h2gT^-(6D)c1_l*5&C#b|@y%HtL)>a3c$es=#y>s)uyV&6G z8L-05?>1H6)L7xI?Nsnwe6&`l))03`x6xc1*DRu#fqKd!*XD1WOY3}2Q)Nbj)mE?C z(xE2Yv{PuG9_xo4KzmOiU#^ZOYkb77jv!uaqB&Y9{VUR%uzRI^_x$4z>7IScH|$QL zH-XmoZ$2Lx~$%$@Bsw_w1Q*VzJHlD@Pdy^Ue=bkt< zrn9-e8lGC4N*ynU+J%x~O!yVG&lBW77-e*im+zVi{4 zLIu?n0mJkC)0rlY&z?aFRZGz2*}n&qlyG0ZOrHrdDE~e3&Sj-sZ|E1s>(?hj{8ZiT zn0#EF@)^RIX+r6e1vLNq|K`ELy-<5oAn=LI6k(B(TDuS3uZ>24p=z(Hs*1;XSt$DN zZdnsNY&?ha^ycoa5z5qEyY|Y^)MN-rK-38~`{lcoQz_Beyk4X}=feo=16`Z+d*u4?Z=w4Ng;%ljxs7GcaI7Gu_4~ zv+ykTDCgg0{9v=kI4j>gN4=-oeVzT$mj3+KDDAysj01Q5(fa;Wdri7Z5M2S$%ukNq z{6Opt6Bf-kgL%r+4WpXJnKDZb?JXAsL9h*<+b;Wsuw%9fgT6XQEnNMSUnwDL3Gz1X z#p6^cKp=LK~Go*Eu`Hg;v-hX2nw#N zh4Dopzns#@8NE$;@QhR9-K8hTU0JcIX9@p@@~sa&rza!dXE17APkTIfFg1eNbC}62 z$z&QshiE7T5x8_`kF^IP%?*MMXlip2$lrhLoXieS8?JCVu?>3ro+W*+-5e*fq5?NR z7%z0!$f{z9Lu*AoFXZUr!&m*+Cyix2lPM0c<{{mBE7GHzGW{)j`Z`xm6ZEoC=A#!% z!w4gy!uH`9Rde!lLJfH8W#%S2Y?wqHM~7%N&Z!cueUTsg9Q)~UP%Kprmv*`vmdBK^ zJI+lstjg%mA`Dh{hdQgyBJ~@Nf5Hb|WASB))X6cl)5O?epTRl?pT$$+{!rVl-e0T1 zrt#egN|C#x{dh)xGw2*`Ed3+3T_$rG50_L;yOs+GH%DDdfw(iRIqZt{?MaLvo+{c! zu#yStOT2as0DTnF2?3zO@dA}=N#7sw@j>92r2vr#Au?7xJiK%xWuP$d_D&)tvVubL zXXh83r>vQeyHPF^v_axFLUKAu1w7?~SGcIC!CJ(upPfD>HoTC#67&nT4DQyww9wtw zJ;>O|kh1!1c{Xt9FP)-ztCJ;B@w}IJwIl3}`yNF@oBaY*dSz>J+UET_)0;+2$f#CMg8aG+raR7k8Oa%D$Fzy?a_~d*^?#kcF5(?bd|t`+jdk%$$%&L7!$Lr?>T` z7vJlQWsPLqF|11Nxo%uqbolX2WWpkw^EdH+;jv%D=1mrAysDr^x<&X5tUrxN%8HqM zFOkEuMBJcR@KvgQ_nqm4arcbFtsK75Bc>MTw5xdXYR8o6RSZj7rp;L=x4G!H{?@_Q z?h}j!*Q1qXV}TNCA2eg7=8?WgShOWuG~ge7RTjQK7{-8T6NT(9YDl<6{KpJng7$Q|E#<`CkY zkaU%`X2&tBjP5$*nu{HGe$|4E-FFho1(KekoAdS098R}Ae%Zj>Fx-BzQ$s}ghEEZc zSn}o>(r)uFeY{iyL0vrzYk|_fd@;K~i=71fUsXVs*RMN@g2M0`^j5xH!f(L#soG6U zmFgb#vmPV^vVN7*Wyx?7!pnRhjQUWQ>cntZGAw%fs0#)45o`DRaTj+iREnmao-g*& zfF_%3qvpJ%&ul;1d~prcREZ8*0 zw4>OWwaD~9)(V}tXEh_R!RteeWXrp)0b2IZpy%$LT*x%iq{_ojqcg~LLm7pqH1}uG z8jYshEi>=hR*{~i*{@6t?j#`5=14iGds9!NZ#W}=V7tFW%33^|RyVrf@L<2+Z4E(P zXyS%y)S}<&e`N|q)Whs&VUF!wU z9P&Yk*o;7djGOeQsMo<9t<;UM3I-KR1y9R_qWY@t2lL%oZmU9rSniJ51SKfYc&4%? zc)bz^5&K@Vos^13xylX5TIw$6^)kL%OFiskTu26W$_HSp)_53Tc)DC|k?hV?BBe&6 zlqntsdSd^h!t-xnpId9ybEx^o(Ch3_w|OBgYrU5K0mYq9)|!&~@8&J|)xxm34J*_vtG3&ty1G zC*-C1z>M?Z5=H6hRK2kjh*i4Jfj~U9uJ;ZDU^;r(sAxd0wkkk`&u zeJn?2b1WCV#%k->u7z^fKQz==zU8^)dT%p;&qmVA0V?1(tVx`M#(NIXmCJ}M>iHC7 zB=k=#&R-#~6ODMW1Rlb+1o}GJhcP|l!HTb!=!q9C+^-lYsU#cosDzxmN{nHi{%RqJ zYVuUnL}c6;eN}gu{tX4$qscB|_#3|xq^P$ffhd{E47!bbwUD=+r)cDm<0lyLtLEI^ z)=8=McO|;Gk(7>3@isOg;yu0CujFAH9G@Mf){9&<;Ig-ocDGR__%nZzU757U<0bjt zexp|!bIdYVHL7SSPm0Ntaq0gxunjijwd(xK{fBYr=Ps;RBQrC8nPxkVREo`!oD|~jPU!XW#WG60q$s~x@QhZl&)|-@ z&|TV#FkP9z$$W)l1*k21zS@?J+>H`RD}lw%5|iCl33;d86@{Xp@gb+1KqUvnWF$-M zwPeNIe#86%C`C6kD#fP$e(4^%T=b)plLxJsV%K{YqIW+eDFE&~A1YycJRiOo-&nR* z%kdAk66HC>K#uX@yf4q!+r`q0Nc*^7PrKn?b-u?)Vr3-c`TQ#Gy>+1&ua@vRG@mqq z5(#lXglCq0H04f8*Oe|=oT%37_iz>ZqLTiGffw-TWQg#V49jN@v#b^HnLH%P#XT+D z*`x0}gU}bKB4|(RnV-Lcc$=vqLtAIdXoqUsbZJacyt`0}^kaSSL(Fnw5z2{wP*q@3 zhLfK+foOQ%Nb_tBDMu2^tF=T43Nd0x(RH$27?tN58m*3<(h{`V{QTeCQ6ZeWmHLF8 zOm4^-4JWX^*M3F6GF9~uBN=G>mV5DP-xc1#}X=x-ebQQE!ERpUpe|dFhvT)LpO-m(h$J zuAqJ~={J$pji-%%k?P<4@Bs(Ys*8oVXHy@2q6UR0_7j@WYo2BM*;9Yf31#1%Oqu{A z+_dLrlP$SkUuraI&dZe73`nyhnP2a`YJ1aOhq?1AHcT>xD&3IB0-+$j+V4A2@r&Vb z&Zy*<^nC9vTU06U%;`9;7FEjfB(~dN!f|v19gj~=nV$!YEtQ)jX{=wUEwvzVHlH## zE-zM}*fr`VlsSeEt@Rpx3E+y!w_qaMe{pxhaXDE3CFH218}XUcyc||!mNIc#L84`& z-NH|PJU%4BR3g=@zGTLxU+tJ83s(sD2`r)c@EuKal7u;{Z7ZFPtgpzP2FzOI1JGFY z`M4GvZTasuPJ>ZWI|m2yt(b=r0&oByIF`NLbY1j4c6@^H@vK`I+{6!SL zbbhBC7h;5d`^hw+Y1&mxtHVq+3n^{?MZu+)KUc`BN*bJ|{A6AxzY9(l$E8YqKz#U}`76phs!6XN4%=1-q51E}LuS2mE~;A{y#*`|=LNUB9Hpb5 zpdGJAEo>d^OmA^w3e}q3>q%Z_hBnbM0o~(;27MyLEWYl>U>ct7+{6p_&2~ zJhpBn*ZJC&_C@F9f)w-{92`(Kb4>>H5Wk?HRv?E|479-}r+=h&h9*)P@+Y#{BZFZu z^%jZTqi>@ik^zK+0wNVutOKwTk7=HpJYM+$NTxuz$Sm2{h=Eg@7kkf%ypme7s1YNn z85ETw$(BNPDxaz@B9lw&pRxFSjQ36VJ-{csde`8PN!TE?GlWpS5)magel8=C<3(7& z3$rpl#E_++gO~?5(UKU!DnXd~xAa+J_dm>0uI_f7*cSgfZB6))%IuGOa!;ROQV+oRK^B0pc@_EGi(Qeu*n zIi|hU!K?F?SD|e`&kB`^3S2tBlzJ{Y&P4&KlQEUac{0W>r=Oc*Sn0!5qD6C4fZG(m z^$fSBDnA!}KCT8T3CRR zCNsG{bB*w`>S;Qh3^t=%={b!T5vG~mEtE7G(uKub(Z-=zmHi#j`pr0&Wrnn`+;jG;8r#)>QkYsG9)O8&1^~dJO4Ego zf;R+cK@kdkp!v(IuAXc$+t()oi(G%yj!i0^HK@5^_6!(6cM@1HU*8oFyBC%9?z>0htf9TGp;BRGyV-ni_!$Z%76(FeM#oN{kRs+$sn zcUPx)ftmzO1eS`czU$7MKSChV3z9p&Gt=5qLd8WQ4a#7VFtNyUM}2?tnS|sUBGHJu za9nT%d|q#x18ekoQStj*&g%ANcutc^guo%fV!f01L~&?$?n0XWN*s~2Sh7H zxhf`|GMz9ZimT#WuY;J|kbu%mjrL{4!$6@fILVNlMe(XP^MIx@N@@b@`>K@oPJ=Xq zY9TOdQE9UA;G;6zj%Is|O7Uu%VAXf6XP;+Ace0n{J4Lk!`I`DACdt>ynQBlZl_TiA z7nikiQh!RuH4hERMoI(%RYOjlZbUTWHMUlEfsd9Rxe?lmpMr#pJyX4LlKuVNc!pAo zWT$shwEFzam6%bu1J{GqvxWG--&?<7p}wO+b3z@tFQmzlW<$EqhWp$_Qhf+(g2$>xBDr~f9GgJjG z18bCcWxP6Ds`y!TU40)?PljC_$=67LL{0~p^kUA_zj2qp?s#6Jxx1LuD1UCy@f6<( zxAsY8LE_71nvqT8c%h{P8kg3pJB_`oXQm4zBEi=d@?6Apg7UjGzNWtdmG1y-Nl1Z7 z4JbBLRV@OsOH$Rks$p$uX_UJ9dcNCkB=g%VYwe_7`fb4cbGbSC%;evw{?Hmkv5V%i zuqZ*cif-2aZ!5Hl2LT4!JPhBc2Z|${5zE4V^-!KP-rqS+qx-IH@E!-Y&05IfzdQYS zzB}#PWJhJdXy~h$o=|Gb<-E0#Xfn)-c_B%;^(RBlx%*=wPQoIWD;{y{jzy}M7(;97b?)e z`Ih81SnXZ8uQxKOV5<+(kF<+;LfS0)-#SxYoj8h26vMWfTXCIrcsu7Pn5=$7-SDKQ zAS>u!$kNsiX9cZL^24*I?jTS93c7Tp3ME8<6?!}9AdaM{eM7l%AF0Lm5x2{WYil_D zz2mvjDWG}LebBr4ee`=RM(sh@TR4^u8ZZ=);XR4TOoPt%W>!iEIHbBe^vkD(Py65f z*-Jd1WN}RWlGIEy+%_^Gqm*p47u`*`;-k@*Mt61?ZKtIzDb)<;~vCb*$^i;2oKO- zK>>uPK9Ub>^uU(OQ6zqVnUAW+0nR?Y4h|Cc;~g%+r{$#AR+y&BkJx!l{}=FrWJb( zjqP4KU=4|YuvVjVeDk!VsHh3(mcQ-cc#L}Uw>=4kqoqB~>a=Va-?Hky;+QB@>j3$$ z+0AcrWx(WufPet{o)Sf8n&q|rUi33#+Zmz5iJr#zYONl#xs zQ~L`a^mq{z{5I?%4Ya}-xTXgrR#1Iy0gn0z@O&Q{{B+_!Cw9KlV@3JyvXYWMfBW_= zljAw%N8@QIz%IAi8iodh3m%|XSwh8hT6eN&|Bu)Dx6FLi6aX1j7w@{0LzPE#fhOj| zs2ggvhCC=wx^2mdm}Y`YFdkC2BtR>yb7lq`G)uXFbi&f=YUI$?tk~Z^>YtCKDgYj1 zV>O~V0WgBU0+y(dx`578Oavdwi|EKmuiNVjp6F!k4>|}w2$-pn@jVuw+1&qm4FC2e zY&_s2b)T?r6(KyCtFxDag#*1eQ8J{9pEj{`G2g#uLB)c^?q@um(IoBU)D+ncvUUYh z#Uq5wzrEW5WO2@12!I#BpMVWdUwOct3=R%1891J3 z4BD{OAgz2LzW4b$9+EN z_H$*9q;p2*4**^1#l5|JEkp+WVJ|~O?ObZsNB0Vvhs!0J7;pBkTZQimTc;-p3z$H5 zoV@(}8lW#4##vhGHJip0=B(D}f&+NHya2_MJZ6Ar{A=P54{Ddw1SnZc%ge{3AK3){ zdIozjb)d{ZL$3!Oy$KA2@dIka;C#P@*JW2585|T>t}=rF+;c!|c5M)~LwnSYaJi#` z`(Wgrz)JG34i_doX#5xVX?`}Dt#beQ^JmNtsz?WkSccVu10(<-h4GP;_#N@+sawp3 zOiWDNTxh(PnmNRWK8|Yw*sxbXO#o;vtXF26bD-GexPgh4QlYw5VeTnGT8Tw!cNRlC zXJSmp7B=3#z7&`|G?}*NkJrM&7NCIl2n9%|^-6v4S)JlsF3k;}yy3v`rKZn#&Rzy% zIogxa&q%}Ypry%WqBGmT+3HM9O;xAGC^2gfWC#unT!D0_;qNSc%3CSxeq8Xv|CqfRq6z5!FLdtw?7sZ`2+OyuuAXV7+ z?+E^}lVy?HRPT5}3t&uTO91AK1js_dj(vco+Y|xFMGhrBuP+o86qf9VOA;p)-r4+! zi);Dyi{LfY)ITXP|An65YDS){vo9?Xb==Ma6Do^<6&sDY0q0r^A6zIHTCwT9k7 ztFdoWQ&V8f%aS0^62~8ET;Tje%W@S^Jur$lt!jJ`qN$YH^HO|ye|tcN!q?T1cC1YF zTRH;yz$k=7xo-?ag-iSU1#HJ}P@V}t_PBqY_(ftkO2xA08v{wMyKq2`>pSgN$nfxR zT-J6R;MN6!NusQKt)-qNU#wB61;Lpw3vXW!$lE$!z5Y}P1z&~l3g21o-EeocgFsRZ zN_lTMUD#Sy*tpz1s2|M8JOqG>KOhLS{3~PXyOPDhHT$Zse_2A)cK6r||Ccja#dHT? zDnceErj{dqUS9RH?J-Q;4G1_Cs|R~>_#zA<1kzeQv%a?Ye5ccfd#KRH z@|_aI0sfcs0}=W)i6}2n^G=pM8L#sr8~7*B;NRB#IFyT*7YYOcF>A2KlSL2>4Gjt$ zp(Nt?obXzvRAo1mXPvWo`T1bD!xwGDWa2N;>H~@FVb&C-HR%Opr|sCL4@2y-l&k3` zP`k+qX8t0OJr;aiDgwu_v=YkcGo&XRm+5pj^cgQ*`&CzfFpzoh&CJwQ#J(f~Aqg%n zF4Eo#JRFJ^MAYw=lSMH}?r6LIY7%1NB~TuitTHG3XgVJRWL628nJ-h+#KpE1VZ5}= z1a)xFHivlZnV6Zm(}vixnJ*p-JO6zPxmX}BhirhT512_MqHPNDiDJVE>dqwKgWQ9l zzrT+x7Rd7GyuV38>_yUqas19U{@WCsLS-Kqf4u|x|gYwrs6K{H8lP)6S zmpX;KVfFx1NtS`;ix9vazY(H>ClQMXj0O``KapWG+8wGB+pTPG=Rmn?;S0dnBt|b0 zUI+O5H@5|%N9}+npIDbrIDB?`qbRteV6;ti%O?N-LHb^9_sHqFYH*tg;%Qx2popB}g#b z@n@ue1VrlRN`OoUkqiMX?MtBc&<-k>=0J}$T{&U*WJm-i;1dr|l%-afKy(>4v&GMn zqUki_%O8)14F3~VY7r$PLm+ALKZ9R(Q8+gStg7!!<^(`==2CpUe}qlzi2%p$-ri82 z!iNVrGC&xX_22=F9^44$p5(CJyKie-Af*2p864q`SFOD++v%dkTqDMD2?b<1#K&F7IW;*+%1uzs5f%{< zQ9>Qo%Nwrn3HW0nSZ0L+QJ6rw*Dr-!%`x8`A0JD4@R-)0p#eFQ5xjNFKl|!SA$*X; zm^NHy98Vc+x2|sF03~hlaYL~=Ie<6$i3Hg-AQ?lW76P12=Eo&5I21dG=hyiHo}Mz0qV5Wdh9rCY_c*bpKaPI20(b*^>Jffb006g8>jT zZ>{^1X76CaH0MioLjkULPjl_}pRGZi9~Uq_gW%E$+rBLgayZ+L`fqhk+PF_}jx4Br_{3Cmp4a z$z0q(M?qlrX!J=>6ouUJ>@CuZ7w!J9NnT=O$8EItL;TrLbOvzwBNGpTEKN62vQU*B zTXEY=R!hZxLMXNC;b2ES*gO%DJBlCpNk+ z__VZ$Zf|eM;#dBFVFodtEEkLquu3B^Zzs^OzyMLH2|OXgUJ?}2CP-)w zS|U&Ki~Tvzn^-wUg-@a&^jd!jRBHamVIOm_=^{OF6>|1(JYXV6N`NS_}lCjNqHtm`X1%sLp4PFU;M8;^7#8{25jGNq-#|9KGJ)69CwE&&{Q{ zySqMs)Nc|*7lr^b9vj`^n(6{jUdt;hZ+nW@)bnE|w`JgL#j~Xqu!P)ch)JG)qRR@Oc*;Y!B3L+~ zyR}~W{;^N}pAZH5OLCJgLf1^fn4Y4EbKq)>{i>{5NZ?~mXqDIh>jj3*P7@Y^KI&r_4X)tu53R3 z#Fyp2^IHCXz#lFp9Wv>m`&(E-PYUDdGVV;#1a)ogC|#lME-rDPrZJc)hL;{0k6`hC zR*o=1hC`&K#g%S%w2Z-E5Q&U$VP@9ZNine-qkYgFN#^;M$A=VxN(X-Jhf<6CKiBae ze&VloJ6R=vzAVKQ<4A_c15!jH<&(E^^?KNwOiJemI*rriS_}rQ`jZE>u|4ddr;pZr z{@du_Up)W5mYA}7BcO#Q3N!_ex=50e0abjm(iD$cwayQOOazpa2>$;5gIiXGR>^cP zi8{0m4dDTM0?1^EV#XmLbiFTenx&}6sl)i+js?CLsMVZ$&5%5$wU|o;rK)A%3=S_Y zKJ)T=A!E>CAkbn3i!tr2?S{MKVPXI-6S%jzCDCC(gQvIGZU@XhaQtHm^{_*$Y7qSB zbXApfQXOq=eD+#{UjJKAiH`)g8UFfPBxNp7wz`f9M1J)y}UjLxQV0e z&%#SU@-V*--;I0in92pvFBsi*s7jLmT;qR5j!lG+OO>WABy=xIXq9v-uNh667-7vS zx_2>+Kz~;&=E;{X?HHo##~D`-CQAGXbe@s1`nNVKY)eDz$q&XUPa2e%)@JdWI322& zsLc@myivzlZkl_zhx2N1OI=8^+x~1!Nc9b~Q1#ylbq7Zmm5HZvn#MvnMu@)eN;opDlu{r>Y} zO)CZzv^T-qsVDH*j#V{G+;N2I2g4biBq*I|?i=?~->71ALGkK8qUXQ=7#0I9t@9#l z>Sr5|)N{C*?`XXe`jiscqC91JYF8;Ax709@TZ){|oO;zNFeh$5efys0tEdTs?TAjV zH-etza);Z^%znAD+e+%1r^5F13lP3llSc@*a?tB7E3%{v`dH7eu}pHiq!%4K7_QIT zzWRJu{^RQpt}_8~7ldJXjK72p{Rz?y)JHcWh6?R3PkA;h;Z~X5N$v%^Ek_prm-t8= zp9ZegSGn0s!t?z>sHVV2woVqhzBM%J1Xg#>ansfTL)n|Z1Q+?nD$H+0Kk2qkzgDd!I1i`~^s8SC41h+}7dlY+DFiw@$j_;|7zf-DboZY}fH=*gvkG#b}gSZ$Yu2yWWqPM#y#sE)e~Y)tldKJnNz18QrK1 z9m`Yv_FG*h6?!G99d{~MEUAVk)Rk@X=dmocS}LmJm(7~&In>xICMl;WHZFX5sOJdK zJ>QaXpX0kdf&Aw`P0a6Jmbyl%R@WzRU>8rq!wJ5fvdEQPK{K#(5j0kz6KQ$ZJGNBC zw5Q4{BW7(c6HMZoIowg39H_|o`C`E$2Bue;Fc4O|=T){(Oqq0k0CbsAyL@m$^{+U* zT#*x(v5^6}!NVjqxrX?!WN-&R?jty^7R1p};1DmmYj??2#8ccV3Kg>aUuSOVokHLo zd&qsWB8y2Sq=Bh?;-0d|!7=&*0_r8#lYjoxnF?wCgYm}p45OOYw>~-S(=Thyje*gV ze9?ej-0eQ5EQo{oG}hYlAzV}Uu@85HGn|bXVh5xfbgu6Z?<5G<3oN-)!i+A@2A@4W z?f2}98c||6AJhS@IctagjxE(G^B?bbZ4s64ezJ^Fe)rIhmkql5Vt9^Y-ZN@)>56rA zeche3BTuV;;d6;aM<@gh3zx3m`6ZUSset<3;|qRx2s&we>UF>NP@J@uj%&9bi9=*- z`|aoz?zg!@qAEjM_A1i#lf@2gdlO*?u4B0H1Y23{NZ2V)qjgrj{k!R_U3QQ@n z#-xx}%X{&gnBy@+kga(i+0lmumVDitTksxenTg_1fPTqrfCG4*;^dmoZdCRZ~1 zw|(4wLPoxCJ%a|L!QHR3j)}euA1bA6fpf2?_p9V)4LLI87EW`7inN-dPRxRw&n4O@ z3T0#c%r1_jwO2+{%o$Xsjs$~a>m{#Wya_-;Ca&kOeAW2|63U0J!#p+mpU3mBBg+*H z1e4iQRcg~h4y617qNs9PHIuw_kmQ={?3XWC*9WO_{6b`AhpeZIcMgj$Q>vv)q_uA7 z8lHVkS?Z3tkZ%v`3!E=+xsWVzg^zdjO?1i1x3G)l`PkNmJGjX)H@ck)V{n`FjNa~Q zT5Dnr8j3CuoV{L)pIIc2T$qOyg?U3!N|Aotmv0E$lQqiQA*5cybtvp`(1g0o2pin( z))`7;qG4K9nz+V}7_F)JZi;zeu4nhlh)6B=&XuQhZRqL2UDlQ-hxAG}A1W@|c1<*^ zgIVS~#QpRT9NeMV`uBIahZyd{BwXsGBRF*AL62Qr@H;IR_rXCU^00*%M3mg%FKGJr z{up61&EGdY6)UZEZ~FP8vok(b*XisPNs@oRw@W6WR?LkyX3vhRO#6IccrvciF@Y$v zWiYnfBY4SeGgh86 zU}U)eaDe(z-3NXMAz?m2lR7apmARndknPE7 z3#D=4HH@Yl`Q{bJA|p{3!X*y-5(6%$gr@)#W72=ESFIb40qV2Q4cQ0Y@rEts7OVK6sUJ4{Qo zJ97Qe=u~fGw2T zbhTz2TJMi^hT3yHH8N@9?x+a#IE_#EBXC5xJrpDR&rv`BVIN<13PYwCn9b$aWZuPG z-6V;q%9#~oo%F=j7)+vfClCsQGHRLSgle1J6!Y7!)u&0miPAmCB<-*@H$Jtan)sdduK{a0L8v0lY}zli*s6a~f%D^|Q=U%9 zJe|U>b3X;PgjhNvnxjU4I#v z9TV<&9q~qgzmp9P9#JAIraY2_VB%b z?XJ>G_|`X*Iea}IHy6KQcy9zrw{@eU#(rR%!uotLSAZI*qdyt8^rKqc`<%an)O0C4 zXJ%7U#a=;5rcjcf`IeB?g_v(|Hp{y-(_pjcy{eprVfnp47F-NzA%9HS=vp7ObkuPh zGE`*UDS@$Cqp)G+?wLg-<)Jh;s?e$}aeEu?@O1hK!`D^-nW+|!v*D*u`zD#=dW2e& z!>1`jt)#rvHQG`r#Kw!C3^}1}8T^1001SBpQ2M5R;>dzcL~F&ONE!H;ZQ*(e53ba* zC(jtTQtnpB0*2~-1*^kbT;d3Su!w)f7B6>!A@{g_F2VU{5BQP`KLLa!>92{}9uG+V zy`E-jU}z>oU!L*&;iUa_*@p$)n#5VSCI5f7EPN%FD4zF^`?IhvXrQE81~l`5^-+YOBYN1L_2I60svEwevcJtA$tPz=-y(m=+T4y1#+*WYUgaa9;iMbfBo zpi(Q#gLYLUyY43t|P}Byp$!xqNZ}6@-_Jm-w1z#SaPQERBQF5Z0%g z5};5b3@Uvx?vT*^S$RS7UHzEw_|wb+Pu>%@h8nj(`k=A(ZaPwd=00n?5$vP)DjDTr zLIG$QY;4;M@u6pfx=YC-uYiDn_&8&(Y`2FcfXP`xc&G6Af`-0K&2cw{N*HzdwNb1p zP?wDXeX=|lM6AtU@HA}sXHvB|(X8ce(DDzMvTUi$?HSX?F+eOY1Ujqn4s8gEzxo+# z&%xy8T(G&-__F-ZNa^(CJZ(PMgvjGJfF3KLF(f`{vc8?5a8F5QC(gon^r*X|7X|qM zHSpS?aKpm-Xg5%ki#xWdbrkT%o1A*6Dy!P>qzalK zF$uyx=!z=5OVl=3C^{&p-S0juXt}W+rSqmF)l&Ja>adkwU~*S@!lVhE7sy>ZZ#Yq~ z=Wz-e&BMl(a~W**$543$DG(H~9dsEJ| zw&w}zvskS90X_UYa9V3kvLzLxC+Jl10rc8n_^1C4xf#F+VX8qiQaw!804-KI(Ayr( zk|1o98@?O#=sOSHI)#4dQh}?Z4>Sh~uA8}7kTF#p!jIS4nCh!-d`$3Sbu^5|M#0o555{#fXo;T7d# z1frb=GcZJ9dn7Zo$0CkSI{eS`|y_f-QgeeY1{N3UX zT&cMl>j?Qkg)Z31@6xYcy;7{P$~G9!i=EZb{~@MMD&my)Xz_b4s>jt)+*wE0 zEOl~tXohYFs#t=>lIJxHS4uJ3WFi$o!91q`dDmHkTxPi_{4Q4xls=Uiz0h_$qk}Wn zN13MWcrv%qXc^Yxx9Fmsbv6RDGk$iIfyPih7${I;Zc$@l8<6A0i+!Z2Nk0w8@-W4T&Bp(+L7Y1$j!&>sORsW3*>K@jY877P+@9)S9GdH4%w zqS5le<0~$H6o377ma9vW`cccGz^e{$eu~8!-oU(B_a(40cGZ{chvGUNa;vypt{Ds_ zL(BydXIq`?ngDvC4IAj~6$nL-$Hkjh8E^oTJ4dWd0PZ;WRzkW3GFP*VfqMmqrWKtvmf zq5*f(Ul!Ma5)kC--z3fkjr8dLay6+nVfp0u6oZWt1?X988ijX)55}v?Tyw2IVFo%N z&ya3Ma@!kS)eNx>9JY}*bhTYIlu%FJCOZCIHPHPYEl^S#y!LHpICHiOEtt>!~5@C7npmOu>R>I_2ncS9qKGqDO8>{AoF-;sTI+3T_WPTYA7FO-%mHW{X8|8X zeqfEM?Kz=zVGb0bY%obdL3-hT~c}Wb{8ExX(x(eQerznqAgzEoD7VW>WWQJX#pjwGJwTEe{usb-KU^$ zQj37EWC9QxVD}?;_Iv3%DCPB3Ixof0+{%)R=RSxsoJZX|u)U}Q8EF%CDfFWbo-Vx! zNVCy{@ez!;U4RUn2Xv}rfyewZNIYsip+a)4i^&tsa0s*@yV?mHj@r=Y7EeI)peOR$ zg<5)=aa>qZr7OMc9t}h24U~Ysy(+v5#15Sqz`b1U6gHlAQxsMiPD3`@+HFV==s7?%fKIF-T4nz*u~3?qab0N<+SikL&9wDeQgFiQ}b{pPV_CyxE-CVPBR z2Qz4>t27a7KfVwV;(n{<4b<8xcT7wMlewphHGOwXi~zFqAzU*3X1Q*vyvxr%QkK#% zD=zW+?(U1V&^ls{bLIX5qC$vJ#BBNLEe}%zN1=J?;Q5jvvKs;!p#6Qom8W>;!G4`{_S`vEWX?mR6 zw`@6r^$SC;oNvA-ciWTC<{z!7N*x)IJae$gOGvvm+5g!#^P;UVqMnQW?7B8-d!5;~ zr1d#M8=ed9<5`LutbC;;0EpNk*2$?km*>4_EPsgEq#taOh{n{Xk9O=*hp_S&s%TX} zC;Nxtrda%~X7KgL%Ylo&QnxT|U-_5#CnCi^u5PhwZiBP8r%ivVHZ+*5&v-u>orL7D zNf1k5k+JE!4u#d)XaXF7a`k4&C`tv%2aQqSM$2^iuwzBv%$G8Z#I!A;^xDqH5%vod8$O%>#h<2}dtmA-dw^iZ z;ViUJmP&`{bPcDhdGXAd<3(Zl)u0WIAPa7^Fj=hYM^FrNMVNZ}=(QM@X~Mb#6Ny$J zdC)eCO;W#?M7vo-S8BAup+lA7yFot%0?9Z@s2Ux!Sif!eXSX1^#!=;)J)luvy-EQn zc0&;2Q)_l|nng}|)!988F^7O(1n@qE!usJOu5P6qNzIZuY?vT_> zRzT{#i_V==UQ2-|npkhAFOhvl8)d34D~lAJ7NodQ6q#VY+qCve1)XmRj%ZHD+PDdq z+|NfYW2{FFV{joRAG%8SOeaG0|xnuC5)_Z1;cgY);6lB^&$u<8(PhbgsN06( z&gS|*bs1*GI~~2TzLqW@VsO}B+ZfGrFxO_SUvfr{jEg4uXcHNX{SYVE8g2B(rUChh zDmQfy;g16J)r1)*hyg_s*%UxZWgUzAu|LR~Q1>K;QXxE=+|HMYzm)%Cth2hfW-rmO z-15rQVXbd~!LkpcFs@Q*^z8DpbgA%9oBX8A!g)uPdf$Foy%ciQmb=`VlPmsi%=I1e zUU=T!*_>=bml0b|q`^GzTr2!{wd87p!bsNk$`dLU4ZHMytYyjzr@#56-cg@JuGx?EAu9tKQtr(bex;TL!)5Pueu{3JJI_{X0H+)yHeS4t?8b zP)5LU?7$3{H~^{X?RJzBwQ0A?1VLJTtJ?GZ?H^NiJ0d9xo40tWX4D-(uJ8^O~20Gc} ziqnqO4RL7cHR$n$Jhc@LQ!iA}r9Y>he!kE>{jIcMs9OxIcsn5pV`E2bg6 z<1h4XN2knCepBht4%4Bkt{&+WSrr*dbLog@PC56&N!bV2w>jh1UvSjuH1Ah?W2GL- zSu8fYn>EjJ6-qPm9GT%E6)QTUz`%!LR-tQSomJKp8Qy+n$MtFFv_sSb>TmGfg;m)OiXV% zOln>27+Z0Hm4ZGk6YcGz!M;*?P|rQ*ODTH>AD6X69An>M5ZoSmqnc2cJU-JHJV8hm zu)Vo|d9@Xns90v4D|g@WgSjp#It1wgl7~-vef$0dlBYW4Aaufdx)s-8#`3!jpS1K? z_uA<}S(n36N{C|P1<9G+sZiw{{hrgy0wYW|+gWp8fPl^=lgj7}Db)5?0rijVg~rAn zWJ8b)8}$~^G~P(s^iwKT^lHN@&~_!x)VI9rK`t@8pVCbl1EZkEK#Yy9=L8}m6kOZ_ zaCp?%9nY;)L=?F?E7$?W4PCfomw@%YpDin%qe?6H(ux z9d^-g(I|!VOQ=&}5HOMfb+6hQ&u$SSMj~vOrK`Te~PmT66BWwNvYfZ+;m+k8onwnf=W7NK{GsPV3b&E}r4coX1-1WYpa=!e; zD-#Ng&Si=A_s{s&YPoLju#%(818OI13S+a-YsHRB-0J8;LKQ6R23XGUa8fT^a5H^p zq~$ul;an}wzi>GB)xX**Y^-k*_x)}0;n zZ2MGRxDQYHPDyL9Zn2i%Bjb}a)MHWW|6}hv|KV!8 zwnGRZLP7|lCDD8DJtU$=i8@O3-bW`0qDyq5Men^01`#E?=)KorMjs63-MOykc|Ya3 z|AIRo@{9atW1sun>s;$t$8jtStYN4W02`UlVhHGF7Xog%4y~yhHWq<@WE{;8Uf8NN zbOaJe1r)?5k`YsGn}eUZrz%2STsGMAp24@_+-X=8+g zyG0aDwsOnE-H7x|wOR^bZwp8UG+SJq=5D*O*_pfM9g1z9ZjA)&uEI(Nye0654BvPx z__ZB}P*431VU1;XBfV{O&if@JhnANTr(!SpYbe z^+3ukDDedw=eH%^_}xn15}b-6x3Z?uARANw`dy%1HH%;8(ADwHpDubE$@iLMk9XrG z*maiO%X)3FnIpXWoMkO-4*hyp*dcbiYiEvQm-#R1>{so4yeTw3ml&Nupq|@woJ?kv z58o9l!Y7B66>ZR=*lF#%JJtz_US#zhRoJ0yQdYAc1nwo8pFE%z(*aJ!X8ff;cCi8v zb=5)bx^ZKM=_2kW`nSNu_3=D~_)}nhbQAYyiOUUQGS9kAy9cF!JZ2XlPq~4f>0Ocv ziJ&yTSwvsTJ8v)Nrn*`d%dYe2@ou`FWu;`S^U@rE$uP3D1G!-Zgrw@J+O-eVSA zQUV@0F;*zsNgjY}S2zoCz;&FuYZTcuIw-sqlh}59=!7$DwpkW+B+1 zn&kUMiJc0lEQ3{7W^P2^0hNBGWIGdL#`{Z`TZ+uuT^i?J&)+$N@sUC`H#FidBd&Vn zdauR3+bj3HWZbQmWyHNa$c7?Wa;e*(6WHCg*7G&Y-q+#Db%FtYey5$KC2D+Ciz&LH zspgTo=W*u8Gw#&nD$yAod|!x+$>vY!)H)dUaN- zJmO`6%QX@lO)Honz}4L0nvOEP5AviIzQyzW&4v*okD6woMv8Fp%;<(cpwYqm6x4S5 zMsyQd6aDaDK2NmLrr>^hydJC2HkE-m$PXuWayZUCt?|sBlPdufmb+zh5y!1ZnxPyy zeeM*P!(K{eGoiz2%ew4fKYwf1aaR_Y0_`#TQNSSuG@rz6vE2up@&}kwgyN@h@D_wb zz4dqx_G1*#!|Nf0z#%Xw%a!Z))1nbQ$u3eHY-__e_kqr){ z3sw$1IF7!r1@NoMI%>@UV?sjgF%O304x_5Sf#|lP1M8jA1{XYbL2f7@8da3T@AHkAU zcXG|?qfdI6DMi6$fUDu!a4jE#2>T`TN(-9)@;UEc0bZc@XFJ$-GAs%@kBff7V>?xb z6-YOLS;H;M7TgQ@DuNJm^rhwe{6`jz<+<#85^by5;QY2sS~&j~MUialQE=<|2f>in zB$N5kHcT4<<8|l`x=Pl@XEshI;+3pT{uH7%3Eyd2)gP@g;$ZmBe~y@|Olcz8WL4vm zU^1(;*J)SxX+3@%t+}qx9^Rf)GFDXmywy7jKCPeO=&RiALNgB^ll3_r7?E{fq!MIy zd~ADfoNeGxuh}IZHa9@A3CPc2H6dlCm4G0y2|(`bfJX=3cRB$^uruL5pRH+#GWWph za=SQ`aQs%Jvl+$q-9XsSgofE>=wVN};JE%{$ss|Ff zztCJeKmp)^$(cTIVGs6setU9RQrZSv6reeCGS!+D?+mCh{x(#5QVCqeG2hqoqPDt1 z-fOyg(P-b$1<)6_+=)j+#8f0PFlBcw6%_s+J9RPeAI`c>YH2qIFdtX}tpd=w+FD1P zyW~{vYeF(H@2lNH5QB`%=JllBKC6_Cn^pA94*Tw3p??t9}>Y zdscCeqcmGl6g$AU4{}5y?p=p}szWrw(`hmMtr(aNVGT5sID)%)LV?EIeot~ubts#f z@nWxT&kWEzF&L$NTH_FrT%7Ye6#_cX;v9`eju74<0)c3EN^{Mjf%PSx>W1f#sLGeGY%cr-|$^r=09ML-QDH zp8+cQN>K0#kaBH9O5WNupV&-|-8PEC;OOhTKCx!^(-nWJ`<%r%Mh7`yGA(fFC%N~N zqJH;S){4U>bCCmSSM#WdzQjfR2Xe5EP9c5>9HTPlN{2%Y{#LtadK%~Z zd=F`^67uueJI}zA(>0t7EuKMrW`PBK$cE;5+fw^0U1GY~7YTxmf?%ar6?tHB*{xaU zD!aHpiEPCU&@Ek$33uN%Ke2D6v)x#3@u;+|YwU=_J_kAwTS2c$b!r~O*QqqS_?XI> z4;)})J{Hij#2?u-FaE^ZI6agSFdS|!I4d&iBG00IZdyrF{#yspew7XPFH09$9#g?S z_U`PAdwzvDF)F@2oSyK31l+#=93jxIP1rzHghbtBQ&wCKiN41^8_TmbFlJ)&pxzwJ z1bV?43(AHSVvq1f9_4)gcFX^^RLZH0=E;-%Sjk(RDRW~Wpnw`;CkHY41Rf@0`xttz zV$bTx3N*xFe+G0=m4Zv2UFFG|v`j~ty3=j|uv5c2-osWqC_@?FH!LoiTox$I4~?9&|*?M&?+DK%cHq2(2=uP$3*Lj~oE zj9wV)^)6H+~6{_Pf>C7?Qw>@G46cY#znYh-MjQ*^7+3A?QljO-#J z=WI8M?$4D5K{obmwemj;S}1P&tdrH^(3w0rJ6N#4zeVr4Mj&C7bEHhcSD$#B%Jud{ z+d=#GtJdUN{}zjPtG;kZ(x@o$^j-!QE49yK!?OH>1F;q$KMih=KKnpUBj6B+eNr|c z1mmaxm>&?JU1l&k%p+}Q2tWjjHB%{$vFx5^1UJ^HGCy2)jz;9Y(JCDIF6;AkzP&(iEmU)V5^>+#fMm7o7NmbA*wG>S4FS^IP8?9O+Y}&I za@l;Ajs5MqmsW&oGUZ19^cO4W6gH7~UwfWUlW@xMx}H z!|uz<8YRx9@!g9kBJnxxEfyIul`MN_W?ebDNeGOc%1_!no2_4*_8k0%ceF59ja z<07u|YdRhn3_`+dO*Ql1J|V-cQlf*24Ay)amPGsNHX5GK1W5s489-bFg@(CfSgb$L zD%YFD#$gL))G27~E-C3c(9+P#uxmcv{W^snqc7GIfpNM495u52TGR9i?)p19*irkC z=9+5;6a==a)!NRVYABm%1u%i78>zaI3msqyUckO zl3$ZO0@z8wYaW$J&j!@M`v49InXce_p!b!5Rup?!^^ppnlCuvIR(mIof5~yShW@tF z97}g}xF*Do9A&#WJS)W0un)jLATn2s3WjdWxR2%sGiN~7rcQQIEft40TWn(o0Ap-| z@_9i~LAwmVuR}Eeebb14YzVL!;LmDk*8wEPfNKmwTUY&Q|Jl{ah$Kkc`F68l)7k1= z%*N%CUqnl2CV*0|ly8h+seM98_?YzFfWUz&8wF{F2w9_g2C=K=cXe_1!&~zPfJ0&- z`eB0XZ#8(J(o17qCP4I_H1O;X$)hZ1CIDcuB-`qoXZ5ak+}9y$ z_2mf+Xdr?E=KzLBv2^e~c$40pKFlD=>%(At+;iBpD$u7@2MohNaYcag)@GrpS^|CT z>LD>%X|#-;^am1{ZIUIGJo;|Dp?jPoq7vLF+Ok&H&mxk+(SNJ-zPQkbhm`Y<846+kZQ*%%<_6>&vs(z!! zMQ}QB$vPy4Qp~f;VlX9V+9+Vr{lyGGLHSdzv5$Y3!`JO-1T3Pwf!?t}+*pP6fIMuj zz7(JK9KNUzB)WqOQo3d50I_NY!`$Pq)flb-25=0iW{P=lXLuN_bV5>V?1&4Z$g0?4 z{-id>!+<-Jnd!jH(UCb=CwjlxagZ_Hk>EyPRt#l%!lqaRxV`|S&cuNS&iIE$1*BC+ zA%?z3aswo(hAIl2EywJSCvNSIxItLRAm3VO5N3daQ~ zY+y`T#`_s<*R=Ph)dKb^nrY~gzFoDVIe<`(7QR4UUxT!qx ztv0nD_~ZOB#c%L7p50cO3e}rXjVWLVc*!J0m4t9M#s5CHBNq)*7m4+qt}(}$<RJwb=oIXh(pHor098CW;ouGK`rL z&WNwBXOSJPWwyK_d2-6m>=-V&WGAY^;dr)h9*a6&slJip_s5 zim;kLVn6#s@B=!!uK^ny)oNG~?J~g0XagYlKj1qAIE&2|+w=K!J60oDD@FyEeb;$} z?4HpTtURjXpacp7N8mC<8JHfRV*yg{QDAQY_&`1%#;ovkw)EXafXK49)Yj4yLj~(0 ztnKIlTv+OXIqKp7=dq@`+fKJ&;y&QBVFV2JNWz}L=r{41qI59m#)Y8!gx+h#Y?zH)POE15FQ z0V3}CAmG4gHmwaH#h^pD9gad7su6(fnjCP(Mb2Zf(}46N?+>5U-QxlXIkteA1dCo> z5k4tE*^_Q~ps|NlrU(UsY;kKcdjg|s=0v&MJw@kN!*`;!{u)jCSTJ*Pav(sd!Vip3 zxVc!5Edd(4HUOU(!dW|=!lTmBlU+^w1E8LRkOoQ7fcH!7c*#d9Nqn)WXTs_y+an&m zT?n6G1=Ij?)@3PzJ|)Uss&I0&SIa{Rr^+%$(qK@>17MU1S&dKucb z@1<7&WJ|lh6*;v4*0uTK)45AaQ15J$%z~^sr|tG2V0~Waf8$MNhi`U=`)4F>Pd?P< z?_|O|n4K)fy7vJ;Be%(Pai0dtQ}KHDdW#>w;u!~~YAd4bYK*SNeN*&0>)0)$JEpko zwt(f-1W3yXb4odR4XuD}Pc%7ik9mkr$1e!-L%$G)Xy(*SR`kt8o&qsh_CQm47Jxb@ zP5}oVU}c`!C~@`X6oec)P2w=w?{J@M1GJDt3LZA|~O8HdR+@M(cPGIb+r3BG!^{7ybrv{&^GnC9zwuxc_yTl)Y0ot)sfz89-uEJo1l=Gv}(X5e>niosP%;i6OadHWx@ z-cEP`8&_0_RlfY+TQ32)sI~ngJ%7FPHaC2H%dxJCuR7h5WvOa>J3)^>recjgex$c7?%J- z@s934tPdb&`iKiCn{Zh}{=-@Wuks(|3WupJNlmFwd|1Q=)Pxily_3tb8-<|bOEdK9n_;0xQZ_N59nEp4w|9cw! z_cZ+H!2NIP@J~+j|5Jy1dd63$sStGMYqxdf#uD^LX-0bvk*jQgdqjig1RNmq%!9l_ zCj)M-2s#bAKTZtA#2@$=7#K+P7pnccv3~2X0B+}cZQjb>Wa-(h%IN~EEG#UYVwtob zJ9h7z{jB%)=Ko-g6(sx7_JvT)-Fhk7()(ow&2Ll7**Qw7f`6jAJR*KRSC9k@=EA@S zOBtt;x^@nqr|&4@+ueJn*+Q;M*%yt!5!O5s-IwHS`zbR4^$?FVdsu3f3W`CtM?;M9S~ZPxse z9=~nTbfZy*`zHpn#!=wM|6%JslEq=>;W;jw4##`RemKE9V!PjTAKp#9D5*9cNx|4= z%(7KrsarhrEYj>_$3%PKF2WjZwFo%_5Y)!w?UBmiSg|5N7(+h;;ZGtU7csymV?Rz> z%nruM)hg5BZo9S74haeQ<&jl0@{DY%vQR=2y|Tr~^fFr2aQ~{r|Ef8bb@N2kXJ@Ze zub}$X`w`s0ByCV>#!|ESxMTb2d%z-?=R@r;2U8?moZ@uaSocNr%>@%5pC$pNVG+6o zH5@-xZ5|r^bhjcFs9U|WdR=yVDCc&6ZzX@Lv$IJ3@@U$|qFPA*tgfd>z~0d*J+?1H z-&CGJ8Hw7QoogIy1yw{(P_>nL8YwMi7A~t-ww@QrYoVEm0szaB zt^fz;%Gn!}g_Kpi`}dtk#!uQyEA2}Gg?h{Lfa_a*01P>cijd4ePVml2F&O>w-=Dwj z`9qC-3_vk&`~q%v^G0S;eaS}j&d}GkpAG$P*c)$1lMTNkm&MO#v~v=MouL{R3F^0~ zSu&&DU6zetmV`aUR5hhvX>D&Ap#w&ekUu zS1WCe>sf{8(%y-@zCW4T4u7+9yfGGhnNA^4#EJUgCoo$dx|pjLQ@&B3Y2a{rPcZj$>Dxp zXM_(jbgpJ{XJ!V8(bte|^cvFfFfPY?!nR1H^6lo&mIV4teYKt87KAbp(ec4kI@_$D z&8TV29q1iIC_(2J>FofT#(Sm(D^F%1?)ul4t}7k4d|G_s18+6tbcBa6{|HChkdpgB zGU50>Whb)tEoQ?mQ8d1qw$tT`T+0&ZwzHm6hb7haYl?u(*;vZ`UaH+$Plqf?KWV!8 zm1H9%pe$Xn!rG1}pcJr~J$`bO$ZEK@?+>Lp-8L3SuMHe!ar!+0%&#jECfCb?OTMp{ z&#xqIn-QIx$)G)-6lV0jE4`rvCUS#auM@JL%bbxU%-_~Lb{$_GRDS((OK8*PUS`6s@p<#t*NVg>o)zTHVy2GL| z)3x#g)U~4@dURY>A~WRtaQ~pcE})>-h&2T7iIUove>T9&?6>FP*!;lV=yi(*%0v7f|lpI#SsVG(owqwn|6T zA2?l12`8hcDz%Y$i;fFLs|qJPuqgF#iEI)!HQHKuKQqi;nhVYL$H=jG7`y&SCVP5~ zC86Zz728KCZ(NoVHPx;9ULi04cdPKm*yYv|J&Pvb2gFkS|DQ(UJteU)! zeipU+oC74sS^GF50*UMz4F2Z;^y7{Upb^@AE#6Ruwv1Wpj_9d0C5-S&UD*`|94ok3 z$0!to{L)Sk1_YE6KeTG~CQl~LuV6uK{kw*ews(-q=e8RQ%`TUj78lC^E3DWxnK6E$ z!f)$1%YWx)TtS*nbo-zs;>?LCO2cNPQOc;a(~8*6{c5^J@Pc8WY7j4;pGaT6Sh-x! zkX&0N9&)o&>A6UNogp)0&2>PthTBQSvPMb+Md|P!>43M)Jo52HpcgZ&F=dk!R!~|H?4kRB zmQkLX*6C}9Z)Nq8MAjvPPkYk%h@@u3BH3u_hda$~7Q1ID z62E3hzo8$RH;d8%5N_Y@!hvPL)?sI0L~=~qus{tsC{HJdLBI1Cq)0zV=Tt&(r|j3@ zEg~85S=QUbqGKJCD{O)v1Fm<;j>1}iCsD(}oyO;|0o}MlcML%k>W$>C7+^uoC%J^h zJ(rV<7k8%447gN^#g{St%J1bWS4~<^?F%1iygMxnbJ1OpR2d=jwbxw?z%l7NieGIkj$7lw%YajG>cO7!s1Bq zixdhx?L$CdzrcBY@MGw$1|SSS9ScKP=7Zk47?pAVK;O*wu*7Nnl+EMMrCS`10qGZYPEh@+M-u5<-XXVZW_VBwf)PmklRLgg2RW*QA$h79w2 zmkju{x}y^X#X!NcuZ8L{pYa4SJv(I1-J%H@v@ncJ=Z@R_1 zjil4^bL_k@Kkfsc%v<`wRG&4RoZHmthJ1jOKHxonq#RD!;&(C*ko5;Qc-hr8&Uaf2 z3kq5Xo1$*|`UNLdSHn1`DozfAku3qx&C7IfUMjR&cSFu#CEfW$o9M{*XdVH_ z+3#bys@L9JfE3tfJ0Cn3{nH|uE zf6*y^j&VNej2pHb3-qTqCr`ik0L=VJwc-&l+NylIR4 zezFrj8AlT6b>ouDi9)-T`1sX4{~9IDP)tT8+5~2KniXKNBjr{%T&k`+wX#`SJNb)2 z)c+jTxjCS{Q>5*oUjVU8(&GfSM>}8*jMy{2i#I2199VmJnAZ!^TR{#yf*sQr|5_gF zaS|C3)&81h*GeTiB_QXC4E<9*)TgvqXqOw7M+4hUfd@YyZs5LV-@Ee_*i=~2YFo$d)d66*z`bj3yju>`ZkNg!L6lQ zImm=N*PAw)tXHpdnf%_kSX1;_e&m}~XlLPtptc); zFV*(4uV)RJWcm2^4jI-V?kZ#yo~O=Myl#orJcO&B>(Un^L>=z_y562|pD?7fbb-=) zloy=y##Zi~QzKx|$*oz-&b%dF^($c(Aa2xt#9g5NswC9HMblmHm^ zo*bU6yw|Kd0|ka){q*Cgs>a&CVQoh0Qw9t}=V$pW7A`KH+l!-Zdn!1WJ+OQ#qt7Lb z<~K^y7g-Nnr{?Nmi#NM#1!Nhg&3*7Ju#zugJdx$SW+F?XW`7F~!`ULAcxChjmEvi~ zJ%PrN{qrSb#FK{QDRWJigNM+`@hgdS)@?U*<}dyay$tNg?!3L7fF%-k^;dEcB;d$d zUzqoVMApWMMEu;Pv&gJlp-;@kUV}O8Jzz`MCC;wh5QXBdLDaU_v(Hr5mu38vTo4;a zn)+0p2E-PFSXX1^w}3Qo#_wHx5A)L9;nOrDFThA=q+?E5oi}6H$3}hnx>%w`7xhB| zacdus_Up>TS%V12`!p>E``QbRw>A(hoApk5EGsTJtfXh9A@aafGnV&JO7`YSr#%Y| z=iNU|*De}hC>T0pMnZcYm6SmPu9)4noY$U~-^~~(Jb|vUN;bDckrxyG4hkjD0BQM1 z(YZMN)Vw8%8k~tt{W0gJk+ya1^SpLgqWwx0$Q3lMR30%Y+TLw|&Cd~+qu!w48j~#} zmkem1FXoaNdnt?;V%zmp4AYq_0V6|*Mg4fxYA98ha(ZLa-bFxft+(Smba9At*L(ye zF+X=RHg{3B*e$5*6NT_?^n$vMA-&ZD4#eu+%fx5TXQ3nSi_|23jm#;OXDyu!?{_ndy)*0spUhLxc+4g-3L~Dl zdgq5;Y;-%*Vh61+#jA=JlJi>9>kMzZZBsQ4oC_W$_o_;w`!i0ViDmOoT6FA*tc-Fa z5d0_ zCGjQ-ubyx{R{Tga$Y}G*u(tg?WFRIrKxzbiHX+tf@jBBBo^Lk7TdE%mr(p`X^(|)R z@J|h+Iry4AkG+g9=-#@B9OYM1$#7%yv^IiPv{khE3_U|<@GFBdJ+JaU9z+Ye9S$cF zFX9#C-!4k*=RgBaJ?4F3(c0$iq0ImgxsH>4qBXJ9wCuC344V4hj3PRD-HrjDt0Tk@ zFASq@QdN~W(pj558aZf%AGkYT{<1V;uy&aD-pE0LlI3rwllg5fe9NlB*X8NSmFjHI zxAax6_xy$jt&cD&FW!0*GAMm3Ls1KXZ)b6e{rylE?PY*%MzK$<>Q}MQhHQT7Ie)z? zd-ZW;Ln^j7`|-~v0oK=_!o5$*J&4)#7V#tU&KK$leZxn>43}>ueYP<;<-YJ8a(~NO z+D#qd{RZX#CQS9=;b+}<+_X%eF<#;oy?OjZ`eks08Oh6V<6&~wo=+HegM=-`9uyv* zwdZV2o(>Pfp&73a-EaI`7RP}<8jBzhNDCwmVd_>xMsjd3qh4(+8t@4p3~~Xg1ijAF z;`lCGK^e(F>fU-`xYVwsLKKrbjnCOdHoBwJp?cN*gjbai0v483?>VJ(cz8wdlw|7* z?&eO-Ql>cTdt>^`b(w@A?FUq(QIwM0@P_>QIs^s^LFTh;ZRhNUgll%PoSH;DRLyENVm7j8a z+)8Y8KQJ4$5fWaaiTSuYY_5E8J&@Dxk!|H*-S*9xAP23N3OV3grYo4gjt-7Hn7`umHJMlTk%U$Y?=feG? zO&V8&;Hs4O?CCfl5%&j`_;T48@r6qDd;-jluh%Kqt&wE%k}HHot{u11%LCr`*oO>; zpAUu*s|s=KOmF|jEq6bmeFYn<^<9;FNlbLf zX=7e>MAdicT!sdlW&=5{^+2Bm8~KWyku*!M)n>+W+P6Gf^+Ow%A7n3zsKq();Sf$xEoNo~RY z?Pu^ifzZ%VNRw9x>gMWvcpblhQuVpt6~P7=OUDRbr5S@0ZxJIq`1qmcG6$&TH8}rk zm;ez5S*s2@Po~9PLbg^{h9f}@jJFM7eZ5<-X1jxfgh~)i&k?UMdZP% zO8j2+@7P{(xlkKlXeHx3%i#Jo*hrC2i(+)UmXi=!l(|CKf zRjG*lE=P5*(zl*cH7=S}K03GcPN`$)Ch`X`#_D4!yr6Bk@2yw0D;~0vT#)XmgbUwT zcDgPnFSsLhWob$0divyRWKe;!%9sLuZ)tzy4w=c|ShGIzl`wUWymMwj-h-$MZ1Ai# zWB6Q^8jY&HhFSCgfKIaR%m=8kW#Kw5G^%piwoV0ftT-u0*ga}?qiDUIqqOj4Uz_K$ zAW6+ZJ@DO&V!)V;g2+n9) ztKf)juvN0>Iq7jwX7YKpZyiUlkgLzO%68(S>Y__zvtf0LQb2)N1^s?` zl!x?p#^dj8w4XJ|5tnTYY_iA{sQq4(sr%$c%O<)>_Ih+@;Xvdku_%aR?G z!t!2uDalt~r8WCuxN-fgWxZ8=A@KF5X_XYShZR)c<3Fr31?znL$sDqQu>i{eTb$hK z^l-l;TJf}F?wAuUKJh4&I?$8uqk`=?hwg>Z&gBPq?T*;#=Uie&;{I%QLWxr*pHMAs z^F6WC^@>G~2WjaIF|gpTWPw*l1QfGW*k2o7{-Beep^NBiLYjjD5_&B&Cq=-I9{8ta zO!mV`q?>}iYw)%~{JGefG}rFne>)jQd@VWL1ToQyfcGe7*~8?L*~FOVwdVR!)Pi_4 z1UgndovtI|Gz_&TYF%3L3JYa&usE+ta|}VzEcv`8aj!~xo>SB(}6)R@Zcl9&gQe_m5tBOdxyHtCf6(K>slc@+5U{8n>u|~ zCfQKcXE|NFmJNOSVvx%w|D*0?^sED`u8`D#qi($GZ^yqkGp z0n!ah<_*mkJG?{nMg#9lW9=iRoTzMcGTy$E&_z|Q%snxVTGx1 z?apTE`-G}4Q5EKw=KNMOLY`-n{RjpS0_(F+Se^-iHk;I4E(_x&#k&uLhizsVl47i+ z`9zH=G8g!c%OM5{*P|zS&fS8wPop&0G#(yAzUwY;Tyy|qXtHDyNhIQJHrRg4=B{|C z@7ShQb~rvX0C@#gsjV$5Uv;%k7Ro0Y`JtWV`I|ZX8rQ3zoKkDoQNi@gs7KxKj=yB_ z&95%c4cZTZ_z?Gpi87lFsR_DDeejL07%_o&%&*AnFd`fho;V+-J&xl+#*yje1iDw2 zrSC3V*4x=`D=5di`L8i4rIBZnuS=5g1>EOI=M#T{$T%JZjwS-NAM_ZuH7{aHXi7=e z$oC@STDqDuo{QBc^nUZ}3=xl7?GFh*!ShC?+rP?}z&se) zP04;R(`gY%P2+j^DEuuQ&pT>ZY>swx+z0!V&6&8MRRUE9Up=l56DdE>zau&Xn<|d- zqu92{nM+fuzH!Uw!!p+cE{8-lx4tqH6ehemzL`(gqN`agx3ULM93EJBifA@@^S*(dH4y#zg@E z>o411-g@sHJ6s9x0P=MVuo0e_utR^&DxAZrIE!-cB$Q|gKfBD?W9rzR>}oYEu-9o_yPuGP58)f}wJw>B? z_?C*-en`ou;NQRE3-9Te+2Z>a3*1#CX5kxD2m)nx(ud4ndPK~cKi_OIL4oZb^G9x& z<6s5N3Vjp~H=Xzu%h2qwDB>JD%O^tnqgN)*%pE4t%R%`tO?EvM>wBUygmd?zxX>XX znZ6^=M0o|%y@!A#();jxP8*#Ap}3RBo(h(-&S|Y~H{H%Y!&k_=Ww?b2|$t*;Yj_MoJ8*>`*&GmWBw48JLqK&6f&azj@JtMo&C zH~%uYuhYHUhoax}ursXdXy`jW8JUhD{;0&-kH`4CLW<}xYX4U?^M~P#S$Gd6_v7AB zkg2AH>)pZk#Q0=V@jVr>5YX;tr(ZMvX0L;n%UPcyaxyPNcH_$;`>ARFY-dx53`Wha zMPd-eaW@9O;3rQCM~y-y+=VWs^~^**Hpv+Ag3Kr9w4aDN)V07r@|*M4Z|=P3L_IB? zGmw)z{8IgyQXFhBLt}hr);Y9PmS8>lF$mvu_DHP-%s$_+OxY-*qt?lXvG0H_sMCEH z&?VmYkTwZlq42zaueUcR=*$`B?Hhk+r>3-CV9#bYR#I50G7o zmjQk_eNIBIEcvqf@Ouj%G1r%os;T5O6%asG0fmKvb=y zRF>kJ+c=w1NJi2cEYYR=eE*dkGgB+pTb?q3S?s4cr=nohJEK8u55x;90p7mgQ&Xti z6+NC*nTkhco4x^evGxAmB&m*B=tD%?G_^(8jtw}9tLM&@W^Rvi@VsL)-8We$;U2i| z$7b0ps@Cj=zE9ewW6WOWb|(g~_m;Y34nHv#y798FNt{6KRWoDn*EWI+;Pu?e4WIt#D1>re#kG+%WYpa&-9OKBv;Dp7FZi|Xq)U_#fa`38$4^JTyP)pTTPLV zi=~t9idRW^Zok7aLPT^#4Gv$Y#=T9+*h_1d&Mxta6jz$>S*_^S9V)YZ;6=Br&1PV| zrD(t7wDBm6Qt%f_AKz%JIm|-r@$o`bBx4rOJ?{SgB;;pX*|i|XoYzg=xzTP$=GT*= zdws3W*wI3{x{49^SF<5F_nPE-4zMbmtR=HOvM}g4yXxmT->_nBHn6rJb4+x!Z9AO< zYEjZ)m$KI5w_r>7W-yAf^Agb`clw}3;=2QoVhb%hwXI5`6^ucf)PDQ->7r?sul5Vl z9X=f1ymg99ZTZxb{i^lkJpBY*o**hv@_YGf4+}>I-%1c6HQPgZ^5h3RhQD0rile*i zHXC$x)BKOf18_TbwJf}`-R0a?eY-|tsU zm>GeN`nKiugA`jKxQ;`uem_mZLa$>I`0cNvzntC0W4qAZDxujLAv|pzj$y(2dg@BR zlu=+PDX#Q^qs}3U;9&=jXzjbNcSmDP_o$v!5ah-aX>v&C8T z6Q=CaYl@aOXP@3@*FF2QbO-CyJ?u>hFJeQ1V+>@dCl<-Ajt5dIjf55^D)Y$iw(Rrd zBi0_nCDy&)fLCfK$N{U&mZ-7?7Zs{pZ=bbO^xQpBQ`(U8@I88rf>i8tN?pM~#Z^pgF%xO(Miin6z<|#aGeIL|)kZVpU+(n;l_e_B_zZdar1RfD>Gv*R+j?bR*8i}uYpC@(%on)5Rs(2A zjU+!Dd3F_a?f~wwp0eK!qw%-0LJ@yKkPBTLi}`Chsd^2PSM=u9Nn}oO*8Ze71jp&) ztEq12_3@HPqrGfo7#BbD{jySw%U=(Jlb#xUyay<&Ro$qUSJZs`p~NFH?NEiN1RMiWr9wo?uOsgM|C7a{bUW5vVMDgrX2X(>g(V$3Z>Y20r}SCK_1F+4B9{g zmQ7tB_zq^Zs`Or)pZV_Au)lQ2r&s?F}5T%3raivl6{2%dRmea9!*}U_d9hrv{@!J%r zn;d0703cj3D%!X^vDC@p12MCC1OQCH4);eUdD?ZsT~<;7nBQoL_PZ)H1<9uD{iI+Wsx)0v@oq``{C zZSZAAX$^PlgmQo%TjDlDoVO!Z8MT=z{K`Gnu|o^l?`H~PU~xCb&mP}x?$$mMb!MCx zUVSnDrIO)+AzF1@H;PqNWYc+;0{Z)o=NsXi{(*5i&Ln1s+#z2UrtW`lqf-cBgLk;1 zz*yT~3W_s7#pv(od0NZqydhjbQ9AFKeEy{WvT37YRF?28JMf2l!w76-_lw%JZll{G zOy1VoXhqHWMdeDH8ni+o>2J;@L~vu0SjT#AW8w5JCxsW(D`IUfVRk-$%;ZsbQM-h4 z3yu2;I4ADBUWv&2JXSltxyoS;PQ9WW)sEFgha9EzS?1Bph8BE*M67+%?Q!H9?CZ{_ z)snj)FRBv}l4`Xfm!t_IdF!-Cb3#GS2LB#T9(qV6LvMeOA~!3%78>?$wd6m3Ttip+ zo4*$#AQsnlX7M3z%ZuwFYB_$ZeaC-nFDX8Ow{ReKo8FA$&t*>@i+Tb+;``p1xr@7`-;z^5T8|+geI`qVmTtZ}q=beU2HZ=pDlqVS9z* zaXXTk8=~xi&w0%L%Iksf-TGN*uWWm~0GHfh*110%p+?L5@Q7X* zmGjk|q83*P+00v=b08}mJfH&L(K{?z`b!$1=wg5|o^tAPZ}>dE&5f1Q)5=y)R0q^YE-1Dn_*e%`bc-uxDQZWpuDAT2?%7+pCOCCj%JziZ(dF%?=MR(D zQ!=UEl$keLi!`QL4mW*gCaD*R_ZzZEW0(=pa09X_5xo2n#wEc7 zOuH+)K||~a_K-&E!m+x{9OFrf#E@zMyW{#_D&SpEXYyXsvYetASg0ndgq_{LI)Dc1 zn8;YYP22YYKU%uGpDD}E?s@!3q|cBq!Ww`Cu6wvTv98#DwE@S$y_&>&HtdMiXdd18 z-u%BuU~)tD`u_V!0w0lIFE%5{qm{t#s$Zsp!aip&(dVEapKfDrflrO<+pLB?dFF;d zU4sLKx!;7HegN-`4E)@Ia^!0_4lVVN}c*+i{BCg)HqCb&P>>~@_tUEz3h0`?XQF_jS~AWoNmskezUt`CpiHqh?9#Z+5` zvZ3vy2AlT{ZAjB=g8%su%}-I@DT^Y~xBbu#PQ0mKL}i#8g`(DIzr#D5iss~u%6M%V zkgxR{rH|LtVNNn$o-Hz&L|Al*<}lDndi?*h0PI9d@DB_1kri4(W4xUxV1o?t6y)7u z?yt0S9_#*x+qPdlD|D@fo>;OpE_#CHulEnQ zI!7}D1&61n;!NlWqty##-WzT?N2)hlo*&UKzoNmNQ$=FOD>yibTb|X_oqd>0-P@1W zR>Jy55+J}P@zB{8oe&Tm=#F?85(cVC=qLSUXnQo?0#6HR&-J!G>k4R`gnDA-bgl!s zD&OU9@w<DRem2r^ppQV=tf zsTSB1;SBa2#}y`7KX9YsIrg}$RsM>A?Nd;Z#8hCs&S-OaHjZ?K*}h~xQhe^MX|uhf zb{o7q#)8<9o}-JjSP`-s>;TXpPF&|14cmmH50tvwqCO z6+U_3)Tmk;u_FI=EbJHhdc}O*=CVt*OnOID=QBiX;K{AFW|@Qwn=^7T;U3*q2GI-s zp&UE=AXv5|=!=-rOn7oEwlrDR`d)6UL+pyI)|Z-}HGnp*3w8nMGo8!FUAj?^60hTn z&#hjO-VFy;sh2Zx!rPZ%IYfd5-k7SFkE)KDT0~w!C)n#ccn?hfO~$tWZ!+Tg0=PyT zBjuzfvm4KD>PEbsCqEjvHR?h z_pQSWG_(=2coYVLr+L#a|MFV}mF4cFhevrW$3Dm*4CE5{4IPVUo$B8B9CsEth^YP)AO$?m*kZa*q|ZSOM@BoOCHB>l_m2;eu^4GNzYf zB(F4cM2o=_-E58TWgJ>Igj&CHCBa8j^!+@>9KA^5Xh{2?xq-^kNbo@0>QCgHMYrj@ zoC0TognE;`Zz@e5aRsjG)Emm2S|ei~E9NBrY?}b^pC^zePj*xd?ra-}F!^SXpyBAr z)d^^|)vKiYG*zE1qk^~Gp-~pkT*1o1kF7U#^6*B^BgpxN$(8^IDtITq zeMBC$P(goxtGP-+&2M0<=k>3Kxrf2pw`e~0tjNr3!mIRc7h88yP_8KO&E|xSg=c|5 zJftRSwB-jz&bGI6<|G*{f{cGOo5cDKhLy zGObV~pIQq#;-Fw$^wL1)veJD_oS!9IE1}OUXc0~Xw<76N#k>#?0oVvm6T6exU3$@F&@5=>-7%VPS*Q(RF%+p*n!hk%0o=yAwhlO)DaFAKxSEdd3? zj%O>}w~j$Tjg@3YL}zGR)b9-Y8+w2d7U%~vVl*1ZnU~c7y&{PI02FKdAOX}ONb}Ee z&N5nn3pte}R*BN*xgV5ZnV#Yaj_*OuinxbZI1j)>;Uh+#|CUClloQT`4T! z89h9n((;YZRnLdE8iDVl9}(-6wF-^PI+0rvEw~C+a@G%-G3$ejJY_G3s&Jy!-jz11 zJ>GUUVF^&ghK$_PUJ*ipAFeWjnX`G1G=?p3mF&|MsL{9c*+W@CLRa){q{Tud5jYG10xuC=9@~GZ z@5TMXFDAn8^KW)z3tU8=x6IY%LBBcmZK_j!BnCWyW=^uSHZ|~m=iNMDUCoLFKf{VY z50XVZ)G}VI$KN+gYT1Zc9j;Uq$>PgnCHn(Foycr&x9st#Z_Eu%6euDX?h*+vh=YDm zxvkG9T4k*`S^9I0>Iz11=(=9;v~03Z-N*gWV%3zlSRHraRL;s}yqTh1B#x4dQFWK| zc6!b5+rT$xCE$qsyEt99;Axz^Q>@`_YTECb1^$^Z_#?`z!wB)+ zwMdNMiWu=K55Xb0J13$p+w#iSO=Of?s<|I3`}|T5(WLtj@9{BelwmcmVY}NR24gH6 zv=FE;S{T3I9Nf5KH?7q1d6mr=aCxrl*h$~N;8b4mKJ}cT?aHOZcn~P8HK75D^A^SX zk+rN)5(R;JDQA8KmD`wCv(dX67UAT3EVA09B=$pwqr$&BuEbq!G3+e1-L7JbC;O4c zU_gMN$Lj;erVFVDMqn?>?u7s6LOveqkRIDJN;uQ>Mwh}sx6AHxlGPVuO+W0Dg|Lp& z*ygoZU&CPDIc@#IIegh$4lQo2|Cv)>k^o5C=?glYoR{-J-Nsn8p$IgkPfo_^3 ziY{{5thzIlbqZ>|wm9^?K`P(+_OQP_c8sU*&VQHYrVXmYY>a=sq0<@I1(e1@lD6AU zK7#ZImAUKQ`;!6DW#e!Bz4r7yd8QBdDmx#NN9(<2M0AxV+QRf4Z2dQN0uea{ua zFZW$1NK9;^cWbZfy)*CkWfRTxVA;0oNJudP^LBOP7d+$6_Y643%1H>6ewY4>Q(eyi ztflWad{1|~D=?m1ZlB8a8xzZU|cQU;Fc_)m%OECL)XTx4u9hNH?%n0jhcI zAo$>O(sp}Q($Io0UP^hUoQF`oicbU9o}+)Vh~cQ+^%F5Ue=I)N2Ub_rLcBd4O4PJ) z=TiKfX`{G67@fkN26}+3U99-GAAud+-a-#g<+_f!09zGMSvL5j_03NptR!z;cs!5$ zICM>a0I(JN)R&F|k@5xf_TTizi#@T_L%-E?m3m6W0ANdN4dBz5&mSo^(BcG4}w;!jhiBChF_uu(zz zRvU{Wuh>@s=69=_AaiCv{2 zHowYm$y^3$stH!2^-tM6cXEHr0-tS@xyoCQkakoT+k({P*5P$#iDfu~S%kf6K_4H> z3?pvrLwa!q1q!p9$V^_eb*+Lcl>@gE1zlHD;V)Y%)HZta5iegm?1baaI=Da{JLc_C z>3VPkHEy&qdL(v>p{BW=1YrZJV7RR{!m%_L+vL7<2P@mCH`8xwP#nSPmpA&K{zPY0 zE)}U90TAWHtn>F^0=aUz6-qS5dbW)vrlS@uDu+MLu5joEZ5PTY~KFrxq$^P?dm_|tXE+x#HSr!4K2r; z6c)gp`)mUx^*h!J!`SwFI@8MIju8LR)X0+S^Lk!X_YtJ@MS8?=6l*!Jwo5|``%+1Y zu7j&$fjz)*^ELQqVkA=bIHN6f%r{Sd|7yoq$s6hm^DlF?b3}_MlcDIrhiG?w3}Nq2 zSI_b&LN%c9AEbtyo>!AQ^d=#kpeL42f!%ojQ=Nr|j!BY1OnH&JDG`$E?ijaH3G#?T z4?HoGL49COx1Y_5fe?$b{hb?!3?mJ#mlLyJRPrZ@8~V^>B=U zm1o`purVSV@-z145o>sYdj*n%JpQ_V(h~z{!PBC2|1)>W?Ca~T9)5DQUNn}c{(5yJ z7EjPK+WV@|jpvOOTfu(*H6}RRqFS6^j;dcG%@nfLOa<;wZJ@@bM88J zme81XxnwryLNFmqP;)gkP5glRS$McB#4>6lD`_NP&3VslwpvL`PH|G9r4c2)9#o}y z;btxM;ev$zAN`u^NR$?~bVCWBz*`bDk*`=*8}NpU20CH&4Gz@&Qx2URj&xM%72v}= z9jk!F!Xb@!gRFQwCrbM3&BTLh#y!QXY3ZqgW8+0t`nQ%oo=tpi&`AZoEgd$s-S@p{ zdY_0so~Qw^_u)I2wXx>$h;V&B5N7S#bb|ix!pYk|RN3)8o3d5J?q61MoZ?AyUcPPp z{u{Uy>HUtC?Jj?|ep0;HjTa=>M8wkyrb%6AoMsPToo|Nv6LkMxl2g4g+Ub-@zk}cC z1{tz!Bg^^@#!Q6wo1>icQpz4sE!1^nS%uz9>(+_ps<3^Zb^$F=L2}izAQfiRcMYxQ zPKA!k$s?mV{`iRN!T^%nee*!*QZhxZnO+u6u2ty$hCEGJ8!zf0tEB?$`v-6+HYqXhC`ENKyxbrqi3z(;fbDPnpbi8pOTBas}aqWBl z>tbXwI9gTzwzvg);xpK3P}dDd{Br8WDjzdje+^-!pR$lF^`CW$lS`u`5`8Qohi%Pi z5lK&ypQ0C%PPtV3$Nn{kGi>J=IX};b=m#_cT_1JYzY;J`Ck4gE$fH!SxUaE3)n;`t zR2J!NC3$UqxWN5!WnIdLD;GmfM)J^k_Kn@Bi;Z+|3+9RvUlvcvk2P8Ttg z>0eq|DQsOIc*K9a3>j<5F{PNSzSew^YP9xLl@Zh#a~)O6-TD2Zy_b&6j%!9cU_ywN zLWOsQ%s!@_AzHcIAF1&W?2e1EQs|V61pIxq?FE%g1->cE1B_I38k9KE{yurt4tze- zbk`Bqn>wm(bM5LO;oKs~XximilyPdU{}bb`uCdXH{m0T_m|R>(A@QoBWep%~X(1T? z6UO|Rk|w6zN6+c`ih>^7{BR6txo|K>rt$D5ve=?Y~{I%ZOi|OAZvBUZKpv6IfQB1&b|B8B}TN;S@IJfD>b0NRO?5m6{%B zTRrr{xIMM`A*ywDKWCI4$Fia;ajK@g(^8B5qZ(;mn%3I%aTJBz!n1rX)f>k=G#~B? zVx2`&+VpY-ww~23%5)aoB+r9B;xvs`^+qvI6hx^-laKHJEwEPEc zF@R!mqBt5mOJX&CSFNUg|2xh(Ab{mZ+c))c(du@R(R9f_%9s4m7pB8q{^+A;FvaCE zlkbV&oXZ)*0zEAkJ_n* zkqHyKw$c=*s~mWNf#`26zMShHtE^e08uM;1Jh&q{mOWCYbnsInkZUw>acj0aEKgjUnr0JB95Mp#AuF%IrBY+^VeWaElw<6?rHC>%{q&A@;18w zBo@y;OHL^c(SmUeB+TI|>2b9LYG#(d_vvnWA03@fJ@f_5K(7L*tLEtjZ?$l;1{@gM z^NkRz>k%cz#2@;4<3%j=--#H5ZQa*G&Ume6`f|GqQ6;V2E@Gc2|rK(LpQ;+d9(?cw;BDx7E_a%mp6L5Q7+HrC}|bj8P43@p+eg zZm~d6^{B(7`lznXJt!q-`L2HGsK&*((wOA!7#22t03;ghfM1Z)W*Pd0r4$hfA?T&4 zgWgWjw{qThHaJg!q|m|t&y-^wbuUzN0#5{%O?C+{+(i8>ehDr){ZLslvC?8l`DC;2 zKFw6Bpx*5?mGYaQ1iv0F+R7t_| zVd6(T-q+$(0S99pqoh#{2CUxI41H??C9yN6e0_bpTIU&+@7t_QGjp+vB~%V1*SDX3 z@`z~3407vH78ny}=hy!`uIp>wyAO0RrI))Q z{um`*E-&E1-+AZ%kRr!COwTvgGENsJOwz*1)O>ZA|Pv`xAmC(^aWL zgvWu4!ly0FCPe5t_HIhk>wn2^cgPlGJ6Zog(uLk`E`r{vNa9f0xaiak3B_F=+$_4{ zwI(Ou-#bFZK6a|K2l#l+sV_SWu@4Ni9v(IpKh4XK$<}uUzr6 zl-rjJVl4MOIqpmg4xssXz@+oqE8x53!Ekw?$g5x1eTkRcTc{F~V!5?(tmc~nNw9vaCIlhJ zN>9^h-%5xqHi3b+gJPH?3rFCxFt77g0Hrj|tsb{E5D5C0GBwfPW~#Uoe3oYi z`16z@(oHe9tIddjKa5V}Bfzp9t#^oBSN8Y{cPbo{CO!&<9>AiN{T;3Q)0-YzlbI|P z_Uqm&_0uPB1xZT(Gu4*tVu_TvSKH#(54xp82|b6vrBdHdNZc^58g*fR2>QV+RBK;= zF~uVMGiiS)?5cx(TSs8im04yL?w_q)eD3r~43?)`&R7`i$}W`4HzdEt!$agdLZK%a)SSXok+S{V(JAc1h^oPHp+_a-=-9CufCnR4bPg4Ig3ulv|iwJQ|tA{G7qkH`#!+AZo&08RX=Lz?W5(h>&?*N9dS zX~|Ys5KpL?wf4yu#zlR%#DOMv7x||BLRt?qa1+d@c(Z2-3wA_gx`jm zmo;hk(54kC2cJq8SXaww>c`y%VJ=USa6iWaHJIyOs30*YX1Ac^cymNfu?i*(#7p~M z^zaonGchU9AL3V(CYkiPm0Q1hoq5v7tn70+rbEQ#hTt6 z{xh6$^vZoBpY9Sj6n6NO>&d)|_ql+0d9i^zoFy~Q*|YtBpWIK!koiTE>l?-G93uD-F7_EV}CrcF85DgFF=4wvFiht zV(zV-nvM^BmFXuWW|nTKBSbz!X{Z9%q*2$)vWi zuupoQ-f9_$v6#db=@%3Isn^8iv2&6tRL2l;5*x2Y8`XWT`2af+<(bwXUfxUxf!XqS zfZJ|Mb!-Z~-RPVbB~dQ%9DN@IT>>I)iT_k&)MLNZ&+Rj|;kncs(oxD~BciJgY3{4_ zywlK<0rTrNSkn~en13s?yL~zBeBEF&_u*)Tuv{&>PQ+L(_zwp;x~$Kjhy4Z2TF8~_ON@Le2D&Kf6C=)?}nIPK1I*i)}`@;ux#l5F4yl()9RmwCY=2v%pTob|C0}bgiFdf%oYv zYcI&|Z&MP2BtXhL;Ga4^)D%CnQeVKC!!7s8N0NDxgs=tu@2{NRod+6ElH#_{)6Y^p zYsC-FxzPx77m7->PCjtOKBMh=E=bMF^XpxHq?IQ}rIc-QEI(Eqzy&APyv{@R_$InK zKU6{USm_)C>ee~$(5lp5`1r73(=I`^>CxPbrlAAfOH232>7P%yh(30-Hq{uR>*JC~ zxMjj%m%$8#OK-!Je1@en%(D($wl*osS0WbmmGxGC%5{$jCLt{{ws^#AD0nw_xL|(* z!K2ROh<=iMU zL6)X_UvAE~txrQPl#?$JylW~t*dn~#6=qQ0ay@J_X1hAE5?0VD$ZGH}J1Y7;jt_sc zDs$yMYUQ;Kd%1HmDo&|Gki#I)PUdd&ir>jX8%sbELdlm&<;Tz_ZWL&%IS7VHl*DTl zQ1HTd$DRB$p6+*-?DpbT{<(;lp`$hr+K6>|<2))xF`;Tr5|(@luo2(Eob&_=N5) zHJ99F%V#Gv&*n4T5lWE5g7V=#c@^mT(*o154(v`%apR8ERclkK;RD>{D;Mopj1wchgr2w!ye-a6==~{Q;Ba6>d@LVNr+C^CB!}~+6&Xn4y;m4xd0Icsy(R$D9 zuE-I1B;QkGg!zLx%e5WBxApi>g~~pt+Dwdy&$15%05ygkPF_*vr=ivwms40^g5GXe zZ+Lu^w$)}@jrNeq8&eiU`#o6T`npVaH&9p})!h2H_$Yo!5N8odwX|1y`6Rn3|CIAL z#Mb;5Dv<-#djlElur$ybm>JsKz zxN{&Y!fSmZd|zwPG;56x9RAAkVTOmH?PakG%h%$9~pmI2DZ=j4C3k$Lm+Dhqe;CRLd~*XFO>n z-L1k8a^1K@ui2jzfqx6DSoFY1wxO6LWobm=5uK3}cQK6E>`|J6+h?(H!fp=Zpi`j~kXU&%z@mbRVy%@NcBYODTPy z6uS)`sjULnxiR@x+@_0lgMHBql6oxXY^%b|XW*h`V-euRO4C}{@QGlz3vvfEXKRzl z9=^4-Q(#js5t}IISk<`-dtj!P4XMD>K^U9pfhDyWmObC$@IWj<6fhh(@Qs!eQ(8$B zmPCu0zP$C$z1{Yv&2=%^jy77XFtxQ_Bbzp;jkEk-dz#WSA`75>X^?(9YBKiGp?9ka4Y$$T1u+R=ZHnF zLEg7h!U0|u`_+EA`Xl6mK6YmEv$89#;jPh5WWNpqb+SItSp5W1j;DAIgza2#yz(Bs z$H```jxv_9%4WOY2C)Yc76uKQM|Y5=(81s0px=XeXK8Pciiy@D^hkr zPO(Y7-?3!W08x4*Mc3#wdS+%{Zo81_?us&6c4O>=I*`Tbt4~*b73+)DeBT?P&s^Ys zvDW7G!->(|`Z~#SCwzTnK}$%c6$>759<}JQR(|jQ+D8~Soi5u?Fm`jgB+SW)VjbUp ziw8XU%a#$)t1>6f^~u)XH9%%r5?Y$)@#or+1J$^@n9O%-!9wp9g4V6kD~EQwdK*M# zc8$|p-b9m(S3WwP^4WVT4YljL_hdUBhE9VuiJqVv1gAM1akfhp(Q`1R!_X#Ma=Fnx zddL(*`Rq6*2-DL{d%7!|%K6*#kKNoAsxa_dI#f%)^Be*(BUG>H@g^N}dUW&Fpe&4W zH;2~o&K34Z7`!jd(kuQ_w_YQ0`CYqdX{Af^r!e@mqR960`yoBh_gf`v0U6pWLulMH zcq@ptO|~l`8lWik(f;}!`s^0ph-mze71?w$KdLDDZ7 z%c$Cvn>}Y2Y*k4Nttwiaz+MV6nS4xt&LiS98N*}e;gSt^Rsz9SiCoEZjht5Gh70@9 znvCv6b>vq17JaA095y!}Jw4rLt`h<*4b;p$Z=XBT=&87z7FjDA{_f%YZY`AFn66I` z8@tVVcY2zM?B_*CC@K*F2P@21x&vvWG3io!a6#-5`E4B3BcMpmkm?P&OIT$~tZ9i~ zNzvW^(7G4>jPIWViTJj;n|L~K_JRm_4FM6HAY)Mpys zTmJ*-s-mpF%jGP%KmOt%bQeqE$o%|QGk3dJKtXrhnL0&`C{+Yr)_@26a6K12dt=$O zn}%vXOEdVIy?n+nY*VqS7Sqau-H*9vDnZgUIlVjfe#P*Lwy`0VTT#0@$_i%Z>>!X) zl+lSooq7I4Mj7k%GEa$St7+9keiavWkutZ*6;}3EuJyj#MC-D9iH+aS!JOqY8}cw`Uz1$! zmF9i(hS~vYn@az{yy8h7<*Vg8cVeD%_ zJ3ub+I|1sJT#z?PuJu)hEd#4SY41XTgdDa2_I1DK-URmOyUq8BhcIy=msbek=ZVX^ zASWDT>4&m0?1wHFJ&j=I02ZFB6DHPd_Y}?jUQSzh&Ogmn$pVPrR8o@7N-x-}7{Rp$ zmfISk$Wri=o<{h&DUznym7mQ-vHwGTKzVrBj6oSMw0w8yMiwfZ%pj zy0)Xh?90xp6HC}o#s6BHBbDPCp-wa0gG-Gv2E%y07j-&~kwZ~KhC^8)!0A}iF$TFI z7N>qI_K7an&gUCU8j=N)OT8%{&arI#zk`etrt5-khN@n6KUFGucq<3qAIf?!+Cukj z#>=w!%UzaT2o9|(7;nGGK>}1)_L3^k+sA1yoFn*)yjW1+v1J%emzzCs^wfj{&Mpif z{8$ovHz|eSd)p!dO#g|Gg!vVhtNBd%yRz@Kg8mGXXnNY})yzP*=zxD-HkO*A2dB?Y0siH`$}kPp z-yv1V?7xe^yx_nP5`fka1^o{4PCduV*^N-oxtMVHYW=LO)U4?3Oc-@WldliAX2fe0 zZVc?_c&=jRaz%V=fqZ(8eI#@q_W9ZNw7JSWw`SgwT8R+j@WaCOcPM%oUQif^IO%4^ z_yYEt|7|-l%R$&1e>Kh^H}9Rky1w`sJ`nwhldB<7QMpTmG!uxHG1h|p+9len`rzP70Q!4T)~NMAC-W+g%lu9?F=FCc^PH@ zX4vo)_Bb}x@@vh2+bl@KPJwD(Upg>^-;`kcA{5TULC=bn$opOMNNrU_(;9gvnS;fA zk$n=(+HV$*Ql)MMB+>jWXU^CvHsaf`eK7s|W3jL$INa#)>g71|uY-4-l}3Ezsf;JH z->zbAv64NOSH1AJa(V6@Vz+oiU6J_X+tW5#wsf?fsQ+$DJPirobs^p;^r$V!n9A#4bV#2{d)w(p8>SNo*BnpB#9G9^B(EF#aHk)Uqcfa}^R zn;l>qZAP2htT*f#H^+-8n?4F`8y<_?Ep_5Y3_9#3S-92sb;Z9gxUD&zv z7Mp5D+U&d$F16^zpY^_E)f$bGwR$V}#*#sne=l4k-RQB1LA#jTM)oFW75^iur68F! ziBV|opOPKUBeLlq?07t(@;iHp@W?^`9F$M-at`mNnxv3tu@`cWnVMvOP{?#zc!qn= zOqczR#5Tzd_nZG{R_L$1*DeTbHZ^DpZpEfQ4a3B2$*ojd^$%S^uN9_P1y4vu=yqSj z8}CfLKjy-oXkehYEEj8mYs3V+A#S8G@z&FZPJLxbnEA>xyiQwgTjs=pV&uRfhFDDv zi?ci1B^ngCx#%V>K98l7h~c9 zgp=cM-|zyHe6CL@Kx5ES$IhMbAN}b8KwzBt@SUxkyaO#{;B7*V1D%!7Wz4U%b=eO< zWRg+a=Y^)u*S!3zK~ZeDtVPRbo7kT#_gegS)r1kASik~7@-^pEk*%w*mls_|J#I`O*Zx%LMYzpDmo~X$G7gQ%vA)h= zxdyu;?>t$LDuFSeH~^}GqJnVO|C|Q*+44XA84Zy-aUa@~0+^C+;h~HmL4z;}nbAq~ z=6i2&RM1=84oTq}Q_WfcaqjF>j0h7kWeg=RpI!=dO)j2N^PBf%$jJ|g7WK9^kc>hXEcy`FrwARL#%o+P^`$^gj;Ui#5SvhmBc(P zIgo;bpE;wUvS(u_+KcKa6d3LTZ3gdt8xB1eS1)^{x>)`ZbQ+}cNZ4+}r;Q`Ec6NPC zsr!NN(d%o(&d^nN#V_jU9Dh9s5B%w?)Pe^$Tp0A2Jm_-6ak9Q7vXXGLm@Bvd5e?J; zS`^-1wN}YOA#p!tO6Ti4B$kcP#F8A`fXyElOSTRc#@oPTh4SL6>L!G`XIKg8?1xF$ z{Y@0;?hAT7R|CGvAW{kLuf`UCFqkMCVUKBz7&&MkzIZ-C;Hw<7djKPe)xwi zVxM6&5Qmhf?_X48Wf3XtcGV>9*Km=(4TlC9xZ-SKl2In5>*Xw84}pIt08;#!BM_qg|cau2mLjy@v0iD@aM|1y^Gz3*!GByTe3p#P2o zhoNmLf{8zB1i}-C?$66fAKL6`a74Su~$6YA16oH_Fxp@M~B?>?B^~VyjQ{kGMD$3xj#fp ze`nn8*G5HF)vNEwbwGT2uT~u&h@;;&iK~kdas%R;GT_mg4eE%?YyN{AHA-9$@N@?B z`LHxzeh zdq*-DJ41n>Z_O8GkN8Q0e5OK|xlJWdp*F*Vc}gmI>%XY4W&b@6#Hen8eDOw`1re|P z;8yw(@*J)BpQ%_^6#n9>Ak}6JKDo^PvS0M2{I)-v+zny0z=@48sF4S)wYGJ?-y-d; z)~9A>Z-$xYkQ&fF7?IwGe2>2e7Xu*sv9P5>i4KZ$h%@vNBz1-d4SjlBL z6f1kQxC@H1%Kp8bREY6Qt@>=mSt78{pHm77adlkv_cXX8Jvo??;LO%j7Jbh4P_7vT z4u2>1sHXcCU8hsT@w5EbCvqCM&U|IF>`C9#=QH@X$&jdvQK|3wX% z=DGq6@w$;IjaQ1RjWR*v8KKV*4wCK#jxju147;h!eb9-G6Hl@~7 zYPc|1kre_a72>C%*tM>&q`R3G!V=t0X@yJ z4dq6Erp8!c7@`Q`ivLLNrvZcnzLYi}__zjB78>^kkwtfVcS0F|H4EQ|>t?Yyca~EXs4cuBo~rhr>@GAw59%;(!Xwp;7`qa17cAh%BemGtD$rn>w@j=N(ZXd3!KsU-Sh6{6NU zy9xC*lfESr!)|LyfGb6|jJ(LxZ|NMH{X;*pHaK~=9#5yHw$&~F2kNDxyBCH)_ zODBcx@@MhqnGcC9-=k^}+(s2ze#LVSzryQXyTxN{-#?@?xhYO^upPkHu$q&*8Ew*W zet&1)qBmRXmg$Mwivkwv5jTFO%jr+X`(&T6PDYi8H93z@fB1?&=kRgmh~Bj>7^|(U z^*wQUu8JIGh9Jl5vvos+21@>}o%_c}^AK4(BPBxilBTLN`@+cXx-3P$-?ASlPx-D~ zfzRl7YLlay38PmvaB}%py|xg_^Vn&lxyMLD3SNgH){9QPI3a(|Fs;|j^u>pjh#@m_an{GV!$>&$2&T69kQhIYVGQq3T%FmSJ++!|l_bie+L_dPH0zP|-w z%F?>nUtZ&s!}j)G_uje?Ze7{J;l$dR#jeD084@t-x8A{y9m|#>M=OhmBZZkHDDSmG+2*$iD;u zatC*4zo~fCl^HfvB6BcUOcONCX@E5zZK@wJ?3fGkWrT>|ZxbrN@^SlprIoFnF}4m@ zHjNp&ovLyo<~X~+o|L=uT|}eC>j>f{YLjHO{Re*dF;k@m0gnxWV(z8ZGH3mFk(be5 zO}xU*W#f`iaV-5W=#R{hZ7Z5B6rbn%IoeR%b|UUCIohQaHAe)TMs?r9cFs74f;Mc) zK7)@0N-aRIt6=9SHWR@m62^&)FQeh5Q7)ayHP=U+o#cYAGy`Rh6+4ys?IvZ*)a!Yi zSjb^S(z3*xAHCmr{a-HjB2urXNaka2@HbAlC(=U13GWLYHS&K~;QKccM@%ZYHl3LC z#vb_0h-hf&R6b@9VXRYD#oU&pk+Xx@kl?9LCVxtCJHEvu{y(nZ9dhIcyW|yYNUeUQ z_>9)7X_slfoGC(jd3Gdo^-AMXA9eh9^|J8=Dyb6uRVM-A@!r~C#41u9zQt}>5B$ad zhrG8AiX(i(1Oq{WCpf`^26uM?0fJkQ;2wgz4-UbDTX1)GcXzkJT?QYV>-={2YU{Rc z_x7LrR0JN$ouz%#AQ$IlyI__xivPNNT&UN_9_F^X1591O7>SYaDY1hD zuW+2G-6T-vLB24dv&yiJ(FY}vUs_C;VDME&@}lzMf!KmQ+|Tj6_2N!zqz`X2^~qsgxjfXn?SFBT|NSC#UIzFAgb{qM$7K!vQNs6>8V+Ne{t?_@ znhl0*PQcnOuL(Gd%XL{*b5d5kOaC{1SwybCGnDgw`?si>p_s$Efg{G*eE&S~zjJf{ z@7!8MAQ#?$;{y1vOCcin|GnG%|I4jC5B+$Au6twbji=!OBJ}49wn5Ch+WJb zPt}&H{r@)(H50*Lqokr8z5V&D<>PhVl6P?;0d~LnciUS1EY(CTs$;&{*-L>l zi(ey;kX!shUi|aWEMX-r@0UJ2(KY|5cj$cAQjd=>kE97p6)m7;v@UCp6ASMiiSQrP zNB3R9q(M%6FTE1cd|5yFb2LXXft^mjA1x59QP0i3!ROrz!`l7D|YtBZo}i4C6re>O8P%p^4?F5;)vx8Xk(#+Mg1!ZF+YMH4)-fj;}8MWdZ+l|ET$&L z2DB0P!(H`aRdfv2B^5l{3O)wWV(q3r46x^w70f6Biw)SLOUGrs=5D+iFS9mV=iUo? zT5WJ~0{|L>oE|oMqR6E@F7gunB}u$S^Piy|uW03IEWGyKZmoAqC!R4}cK}lvK$89r z$YI$Z(E@;u&x-v$TKn`ruQ(UwOX~f^n(LzRkr_<`cfT#q7x7g-%6Av(t&E>D1IANQ zf!>Hp#q-rX4uNk1Gb+BL+xY;gH$yDx-+BqnVr$j8dP{y*Vo1$2>WVgx&mCK!BjzAn{V(c2%&ETppzcQFUj3vTg~kQYAS~;t62JX7LbbCQ!S!SY zd^QgD&G3HVZM-broG0EwrZ0UD>kEGvuRo6#G(DmRjA#B4A z(QR>71ds%mB-$qN9dM~H$9h?0I~^}|-zv94lUJJd+Mp8&im@gLeUSr(w%2h>UAAL) zNCwcmec@MvSzi5)jS6oa#zo`Uh@NYEioV&rRhPT{ZPs(M-sgajSbv2GCC15(fNg)q z`bB}4ZLea$Pl-fyiR^`DnGiT|gB@jTMHl3|mMtoDlsOC5Y>mF%C#voBVDNLeUI8JP zfSm*ho&5sfuI#8SzAW%y4*T)Gi?5e7(0Li+`!NqcJH)#E<~DPQpa5s>2hk@U0DPT&#XJ^%Qhcy{@A;^ea&uSH z-lEil03-ZgQ_}x2uFK%Q^*GVxPvXn7PwbEJdd%3i(lu3VBnB?3R9z1Rh3|5(r}!&v zFG^^UjK&AjA?&v#(B$kHygeXrSB4vA_Mf(;^Vms$YyS;twOA4?Fe5lsY5(y*p69>+ z##&|=kkZR+v{WY-2j0pfb$Wct>>v%pKnspJ@m?4sSUz%4= z{%s2=sk5pF^8u+@M}c61Yn1=j{qa;YNJUlu(R`w#vgs2XFg>mWo_oD*n00qxnw4Sh z!1M$tM_~|`tXeN5x)S;e=v=oLQoo#oJs^m$ocx1t(jPlsA3M&YCxl*C|C-!Hw1JJc zBYJFJ_fl>A@X)OHQ~0(lT(7j57Jrp6ime92Q;IL{J&yB3G*(}{A~8zMmq>Zn}^lgkQ00kgHtE?}LV{d%v#T7DWlY zEN%f1QFV;-mey_b6~r?)Ic4D6hsAW6TL267Ee7o$vC$F1h$a-&Bgt=^gTw&sWO=SsS#F<{K!b!6iJO>9Js4Yb|x0#)n6 zMNqJ)s4K+4R-tsX1y&3`1AiHgaaG?RjiDUnUJ>;AjA5CvPaHnS;rNed>v_{5d{EZwk&S zg|t5kxth$EZfr*hS0U1ijW{%g>Ia`TY&+M%UU4~a2_QK1=9`lES*xj9s$C06uV?GU zvyomXX|H_)ogc%c^s3F}At&vOXnDV=beOf3|bpl$yoULWG|JZnmZdFt&zo9J16 z`fJ}$(ZfoSL->l&s@57)# z575Ovp;V<}O|C-Fd&l^+e7-yRevkgACZ;j#OU;Hw2_Hsp*?j9_S=H#ro_Hhgf^>_t)l#hQfs*h9Le z*ntpA#C_kn{wU%bi;w+ZKAw+rhd)XAa83@>S6D98o1fxvgK2ZL2^5@$$gbV#6T`~0 z3LAV997M!^KJvWbE*0}RtzV;#?=XoF=O0VCIWl~x&)GGPb=}GZy;sMWuHIP6wVV&A zXuT}f#OfeW#a~*Lm&mW`5-xTQx@%YmSu7;P3BC@z4%3I97^H8i;7%>q3L%3J05I?< z(jQJsLx5BB@ecv6j7&+aHwG#88fGw;=FZ(l~k4Xz+6by90V_Wdd=& zpx$?Fbv$CJl9KksK-6d(Gb`0%0hxuKfs!EKk2&~$_h!)uvMKgDN}*YaddViq)ajZo zYfcfBHx}7N|1vdy^nGXK^>wbndcZ|Is!SF|K4o)DLfJe8Q7VUJ2m z(7Np_(Bm)|K@?52#tSsx^ryCWY@_fe!PC+2&?-2-)2p~!9Cu1__*vd=W{czG-4 zUCf6CX}s%3LB>4BEn5znSohq%=_+qIA;M*M9gK%D(}3}Ehoatct$V74aT&a@RhDS*zNw(AbHcZ%{Pd$=q z-OhO+Y%67%!E^b$$Ny}NPm3)0u~fS!Ge>qeJTv#=%lZ+ZrQjB9?+n2AHmU|P{$zJo z4w;(;{d1OFjkyaZWb)mJayz*QpBL+C6WpdIq+9<&a!}!7Zz6fYxWSzVb?T-F(6!gh zvYN@yZg^z-0Xnm7B{(t1j>H9P|3-Wpf87;o{1t0iuCv175UjIf$ocEEKIcSF75QoN zZ)BR^eug*MZIu^vjURupL!sC&;A)PkX$yHX8m8Ky093G*^?yTC2*B+)4M+69)5So)dZCUh90uTXz`e1a7=i?UUd}6IS zOKY7hYDV4RQS>)PbiL9a8uvnapZnI#*g}+ z>4mF1sRKIvQ|a73=ly{}rmGn))`;9q!wYkqkVEA7l_*-2ti6Bi^8kad4jys;MWA=z z?pum04Oa)d0HJR!lua`xO#T_X`mfKclI%_CKM#IH$uP+=gt^srg@hfLYv;TPp)(d@zC%qkKVAxdUm2K~xjX22H1QyC!n{08{dX{^SNd=6=RZ3K!D2aD`Z9GizKCvN3CZ z$t5_~EVF?^G6D_2jS;8jnS_~kH4!g=bv^#a7IZM<;xmT9{5ZSKZg`JLYrA|+=&#%M zxI6;1x|1$C1?@`;-@`aofW7>*!U->Ud@zpJN+cCu7jv$x%~)SXHZ4Zd5LY?ZOZs=` z`hwD%uPFWc$=*I{_F;rJexMkjtUsJHl7K^;6J)_qk2#+V55`)E-&q1U$^Ge>NwJk; z$l-*6>Q7l5AM7>J1|tkJ78?Ozw+HDrzofPA!ESq8#uar*)sTd2R}5izPi}9aU`6;0 z9|~K0g|_J`8|D5P6*)@nd(a%FGZV7kSDIJIyNt|>9H1o9VSicH2e5}bHQn#iWqPop zgs?qLu#;}ae&}pmNRo_dy$%b0!N!#&_4tx>J*pD*d6`pulbR!IKhMiABsM?5jq1zG zc-lBh3K#F!nC{B=XH-VG0;zE~fO0CnZn4h!XwAeoWqdXlbV5GL&hr{<05Uu#+5zK# zNpdJ`TN(X~iaxUrhz?cn`R#uM1d626S+2IE{+m3JlBnw16AD7SJBg^N?O0Ouhp&cB z7Rb=l?efjH!P<7;w;u4DV9j;_ju^Quk_Lp{-3>kqzV})~N#gx#O>E-BG?M8!DvTMb z6@q{=#%B)s=mo)_h;Z1{xuCK4%|q&!14?FoRRW_%Pq3V+pse-I}b@ijhj0( zjB-;DHq3n>{b!(z-HqpEk(r-Sq{W{?Ky-n@I0X=7z_$r-mci1{;Nma&UK$hRPWC$p z$>aHEfxU=2L0nG3BK=ON^qbN~6+Jon&)9ysiSX~p(HZS1HJ?HY8`+9uxVjn6_+3uZ z7e8xcPVKP>+4;na9M=>3jXYc{F!=8uX#LYvS)0OAm;XKkKxL&Si$>tx!gOhE9?-bq zb(k9qDb-^x84R2}*Z-+jtgwXu_@x6Q-2IA=@IQ(4-5kL8I;B30<_xisZ^{AWa~Cko z1F*s;sadb1q0q7V`Rz_pM9QloD-lUg`(p^wx!yMI8_9J1S{%&O44V)6!b_53UTRE8 z0M8q2%|zR2-@c?-rZNDh7XF!ohZozicP_%&*m5e8Ws%8v4R7^wH^r{^i`9IoIu$K* zz^&MJ(r08Clv+waB?Gq=4nROi;&a$7o#dwS@C8}614hY z;JP68BPVb@7thx+xJuuy*!e}}*`8!$lz+1&jj(Jb83)*C!afr=C*)&qd5x;mXdfan zsUo&HuPeAj zdq`Q-4U=}dr;mhX?86(^Pjtz5r!3=VurP2CJ881B9*;iSz(z!? zfc@6Z{?sN00wB5B$#aE%Q$~&sZn~;v9}hi|k2R}7UovrQ)y(+Sr?kpnPU2FQCValL z{l)2u8UL~-{X^#)^M5)?$~0k|fpKZLhLxQuG*({W*^u8kM+0HT89Aet)!Z(34MoT!!&Chnt6G%zvl%-hgwuyb`$%NN(J8je#_ai! zY~~M6yg`|%%C%ZMD&5cvA`p>6AbbB6YknRO_rZ2NoMj#D$fbBU2; zWD7M`{5)Xl(?~rPb&fwGajUY#vslrHR>M9}!fL!30aIWI&o;s?_0f!gS?-cQAiKLV zj}8mEtRYS#VKg(9Kl@D-iWJYFO%N^0KN_?9 z`i95EZjF6&Ee`w3?d02kJOQR3Vu9<PalsBAs?fReZ?Svd7+W2jx&Vug(j?R=0XG*D_YjQJ-$HY@C8C^Fr2m9=n(52Vk(Ca?_%4n zHCM%xTrwY{f~Y(%1CL#5&<)$LNdGi2N4`@<7bs&09w{cxSSXSa-&h8u*Zo%n{czMZ zSY5#kwOyaB(ckQm9h6TROutWQFkc}X6-zlsuEiME+#@s32=lnEF6Wo7)6HGw5wXi; zd@5RJm0UoXXFp@*J-9buPt@;2^{K&%tRP*gl60THPGPHgW6NbYi?4;f?Wr)cZ?_)y z*z;XYbLWgBti7INS#b~JZapU)c7ya)W4*br_m^I#$+7dMr)-8{>(*KH{VzaV+92bj z``kODF>gaK`flkmr_3^pUhqZWo7(e9F?8fx7TDs6a0@I3sVY-=e3x^&g-F8KW)+Fy zn95aF#$98aUz;DF5Z1#`c;~;QaOq#O>QC;9PLPD{p=oOv4uxeQ+Cti(T6lhTH-<#- zz>O2uSIU_UM!9gr_fg3zMQ=mj#DTMWdqbN6xa!+^L`_(JP3c{WniRxqm(HsTUY+z$--E6Jw=Tp#-V{!sCGPMMNdh9Oq+yAYHbZDBJ(((myurNge_J!8P2NcA!8 z85&26xXIXfx#B7l^2T&3@ykD)zT4!=StC0S0Qiid!pzoh(KX0gB~QHJ9GIo*?PCxYNDeooEXHVp-uf0{6B z_s45FgW^d5v`k&QtC^`5Zx4f+rTT>u&BVk?g>(n0u^muEdIdxP`|um2HwA${!#^bgN{q&NuNcq0)odve z3hm!<4r7f-|5O-6FTXUPS!zNgM}|Enzikj+b7K`$w0QXqIKEP6EFBThjse8T*xc>b zO*i#}{Ah1+X@gN3NFCDPte+$7KQWgqMG_x|^>+&}D`W+fwnGGGB&^d8x9u8%qIp)zV63!3JQj*cmC zh(=^8J2;vBvtPyYF;Pq~a}5R4s1cm@CjS3&=31M6KPgwpYmdi@{7 zoN?75gU>){8=cM%y@m!2qSSxDsxEovV8HMO?^n9tJ*)NEphx9zI2~?^$}x}bcgf@q z`hd2kuDO&6Gq?bKtXm-hpN4J9~A3r zuxiW~D&l6RZ-~m`yX`j8luf(8|M5hOnj$wWBa6Zm^3X z1>O}tp3weH+HLRy7eVx}g%{)5>zl6&UD`UG8D@>BQy>)k+Ei%qb+iZ!0U3SYDPxtqtkCK7g3%JTK zDKD)PRAvtcEbno_RqJiK?)Tplg=@-dqk$c%8-_*qzBU)E3WB@FY zI>vzUUZGVXm#{)=w<&DMWu5uP{oBv=(wsIcMw~YfRiiE(wv+l!!*!e^M&>W;PU8}f z@K&Dj=%bCpzJ}#@SvrRc8HV*!-JU9qB!gy%_p`uASF8Z4G8eqb3~{YF+A6uFz=Qop@SCw#D5bwU0ArNTe{a&tjhz&7Lj@quJlve*Lo>SjS_o4@!Sg_s07>EGF(xa#7t z&g9VotUourl+0nlkmwx2Xzw_I&t~8xw(Y=VcRUJhl8?NjoLk~)y`@#u4P44Cu1^YCE%oz#*RXU%>k!--_jPG z^h$jSXHoZyHpTbK*{KS_cq|uF&GK{$4!jI*4JL3+{&UE7rs1=yu!HzpNLwzl+b_bj zBJ<>cDJrK_8CI)ZTDD=VHnUrOGa0Je4C9a5+zCp1ht-*LD|R>v8{rUY4%9{9CW><$`Dxf(VICZcbtzr@ zGH@lJxD5KM=H#EyynKagIjw^1by*MJAlEwyT6)%uuf!9fP0AV}EQ}182h+A7WzlXP0@K2Ro5$nx7ck(SI zeZ+hkqt3(ii^Yho6TZoAU^c{42fMChTam@Zf zs1&6F%>}^DUC^9n?HToHe0w1BG6KUiGuaK(f{}rl*)6Rrt1V&I9YHX%?tl{3zt?|9P)Yl-O51h&_AnZ2~!AJ((^YGez}gV*Ux!4 zv-Jc&VN^}Q${_qg5V(9qvadJ%qrXSjj?`+e9e4?Au|tEzwq8D-s-<<@@~9*`808+jOftxh zc3C!Wk(JuKJDR(%zsurL!66#Ir{%RJ^4m9G$e$}GmU(4acRKGvd<=5l@I@R(KOTQr z#pHETUm6M~pW}F(5zPWi8LwM8WGZ1FLm9FSZwtP&5-Vvv>mp$O${VCg9Y z!wBX2QDP3w6sVPI7p;LJm+e!${`|FOC~fwb>pUwX`%rFa`_zdL;764LwwNw%vv%95xh=g{g%brzTO_+V5W7R#mxdAJQQ1H>zU zUzcz1(~a+1q!)^Xuw_0Q)*B zB{&hftpme**!u)SV;bx?_RrE;t{9K-P({wMYF}*<_DbVB16XBmDaniW4#m$t^ebfO zPEmWQ@*KP|pRWyB#;Ir%(rTGfGylYI7uWjoK(srnmE_Jo2BZZJY<_`h-*p0Sz5eVB z*((kKG{6OaHCIv&hfF;X_AH;^b_+EV7uZJmlV7sL{oJUiz&6^olGu>UTlDfW)eBdg z01;jjEk*gHG+72+*~KsNrJl@&<1phO6H#rfI;EK5}4 z?bU8ixVQ6Uyf^x^t=JkIU+E=~d=~7Z$wq~O%cLxC#{b&m`PD1R`u-V1x5mMK&#xUl zlzO&K)DS#zTu^Kv!EwMp>w$J_RlC%>x#iJknV7n-gq!O0gAYdxe8^GNs9vWdsXITX(`+ur1~i1`x!Dgu=zsjclOXY9(jz985(XRR?ng87fI4C2fX% z(sre_5bID5{sI@)7MMU=fg=^goekW)X$auoT#3V4V*|;=q{IPsDQlRzuk%4PVn1!Gm9k6QCO^F60r#=k>op{ z_g<%Sj?o*^Zs|!RB90!Bd)|v)>0xsdt&6)S46cqhZMSW#DTo&Dp6Z=S%KzG}T?~-! zyEF*}Eg45krJud$UXQ)S?lu6`x-$o-nW<#@_;*u&__lwQOgaRzyGW2L$tADKeyRjF zJEdAUB41{?NCfJ+^3)sdVu%)Kr?rC8{id0o4AY`B7GAepl8+aC5lJ?}g_IH7?srp; zKl0@8R5U&*``XW~Y^W|2G0qz+$4I4%4CJKrRj<-asN&Z*%$2C4pxVzBe=m11MT|J^ zJtKD9+cuMKp7wK#(y(Sg=&)Mh+J`FsvwT{4uBd$BRjbA+gzEq38rJboYwGfU zs6NLlS#5}(w`}V%CY>Yl*=)P*e2YFCOxORD0xllP^`A_f7+X4~DA;Z+D1s24FLV1_ zu^XT6ox%7vA(<}Wu%!yQu+dKWaLayEXG&hThIrqeNP z^|5O>7*A@|)A(e{pPPOvwSV`8^OI`9)4K8D&enjENujfuQpGWQTmEV26qN0$U>BP2e^bMMJr#2n343)jrR=m)Ei-Z`zGfe|+5_gzFX=y4P*Pdf{8sn-S^ zz1v8*4`0P3zeip?4e;A=aXdYB_a?dtn>#FAAUOEv_dZmrzOc~CIXxvqzNKN*^kpB2 z`XTreKtBN^K{NNB7a9g?WclGGAD-x#2u*@xXo>lpI9-gIv(Eb@Tl6UCESLKL_{*_X znQSBhj2q_6bbO}2`FZAJ8hq0nE5pZ9T=Yos%icWYEblrZ!TkcB=-aS46MNQC;?OC0Wd-*w5NWF4jXcmC&Dui0*Z&w*f@P$nmH^Wf##U-OV@@Q)m)W>E_ zUS#t9!eMq)OI3zemyE6@o!xX;PVU=5TutfY_lfym;>SJv6bEjt`t~!J=c)52HQ5{& zrS^j@Soofg+|~KCY_z_{N7J3SnlL=&ihURrhHTc6s#t65X5lkObgppph6`C5g5Ix zf)d?gF-|;}qdA~LO!~u<4PPWld7aFw4Hhjs!rgzC9^cLtr){oe7`RIVCWQKV(5jx+ z2<-{E87z=aXTe@tx$8q9k$qMPSj|C?)OGT$gm)L!4vB1z==1T-jDZ)T$@&Mx3~x}7 z5aP-MzFgez%;{!5d83oh3#Y7B-o+LMn4(MvpNrGJ%UmZ=xMsnRe_d*SRv@+thou>; zmWwo2#H_Fl5ay7mrZp{Kkyz-9^?tb@SPoVP^4FTK+%5Z2*83c-IZ0Aeq$K;rtP8WP zI5t_|zK`aHL8*)`d>N39H#1&)HQB5sa5>CmMUn3xpn8tIxI|q8)7w#U=fq7&@LP+) zpMQrjH+@;PRS{c|r4{g%4z^9C(IrYvQmz&UHN}q>Rwnrd3DDvl&a0=?7+rV45hcr_ z6w(8INwO5q4z0{H)f#E6-}z3=L+w!I{-2%36tN-h%uD+r@sY&rtTDe2c6; z@byg=X)XqFhZ2t9pm^aI#|3zUo-WydqS((!rDQ&lZ!1Jtmzu2*?F@Hkdf7=-+zuHk z+AgF9+9PV!-h;EOxVY9Ws@)jXmJEX8PuNpyF1B@2rPCwvoRh9J{HfC8Xwvl-x+|8- z`?zNSk{Iu>gF?rp?AvQ}M*;{PouNJPH|1FNN|3*b$eU!N*KsnZ$($DR z!?&6gQ#tB-k{`^3BxgsyZTp@|q#`%)*8VhHKL^v`1YF0S32b?pI;`(OuhKP0lS^al zQuj7n_jYtWFHDGMzpHDPuO&Mg=a6Pcs@?$wmF=LRk=!qufKU6g#haEFfH>$L^*QP}iO<&>$6%4{jz-s;^EBOwdA zb!^tRV6W*?NGPB}`T;v1ZC=!%;L4Q}vmJvq)(ij8xUwLiZD9<*JItS!M3z{cB1Jbt zP%^Vx!t8K6He(iYOWi}#D1_hR8~v`*A%rv^&Ir55FAyb1f>t3Oh2LhmRx_N0lc79; zzyGw_eps7-fL~C6@I%Zx$k!gA7dmtZS*#99F1M7n%Xy2MW0rXrQiuLMJHH3hjoPuD z;u(()Tbr`exgn*=k0lIuE$EuPPrL4Tcc;{(hTkJCZ)?))1O1U_eZ!%rkmGc} z#UPVbf(_kiq-cfSo$j`vM(qI^SZq9#C@HaI)Bpp@wVToZMtH6I_byLIr#F=62-9kilh^#KUR1D3g*S`ZeR$R!@@t2XMi z1;aREQw{tL#r>yc)(a7WT!}|RTq8D2E``qyQR2`2TKwpnovW3!!DrU&#YXDGb!w8~ zA5TwG_IC8?q>va`Gsj{|^{XD+p|=Z(SzeC!CW*hLbki*zaAKY2$g0cv#5)}^5%_cI z>MuKz)9v#F{cUhY894a|SW;eRRTQGBt44T+2~hpIMMlu4;r_5C#?v`;9AmJzKiY!E zmg|rvhS_^Y93NOAR?RcXlB18VYg`=}(B6l^5&Eg;BQrIJ_WScOKZs}PCaQydJ^}A& z<~QSfhis^9zaG~E*{^SbQN@Up@_j$JNJn24CAG$2zjXLjXR@l7n=NUUlin`v-yfqG zpg}BuM{sFzZKVwgMl-Sg9>p#_3|%U%oc80xcA^E{CH$u1T4DZaVIYxQ?2y9MBGW41 z(2SLl$&>klbS3uzJKb%yw80<!SsLX4%G|?n?|8VJXZ|w2Z?Gd zm{798?dcstY%vWUO(&M_Ypuy{n~=<|y1Tlc;MuCc(64g_$X_EYeUfwI=~u+dY~rLA zm#&Q>l_kg$tXU-)@7GXNnEZ1CSlK^C_uaR@3VDx(X0ptjvdW^`ou5nhb!OjCA-qIC~Vm9r65VNs>btvxG^+~x%~-QlxK_hdvPRQoE2Y& z&C(?fD~^~(N8i(LwNSVkGGuuix;Tuv_f{NIbO2j1~78CluU)#E?Bc1jj z`g-Op-z^5J?cPqCjBH74@{7S3jcZ@&-tCj#*SNLrS4LqptM+L>BBxzzyndR}EItA! zOQRf2s^$~hLed4BLswEcZqv-~mdwJwUr*NunvWQR9~bnz3Hg|Sd}ca6a*8YzgZJr^ zRKvuCt0=%6B5{?(c0*f+-;EeaI~*SD#_)j~VfZc?BnuGtWAFu9%nPjCZ}MCYp77cX zPKEW{JO-O1p$_^INkUP}MAL(uckbpVSlxG5(@YL@w^360qBaEqZ8&$FI)A#FF{mM*Cnxtwnu4T)m-!9}()#u#vFq^Ws$e`Pa8sS*KBt7$hQIMq?8Je~;?BIp za$50Q6$e%^^XVKcZBegkkKxi|eVFwk?R#TlF&35M(F0(QymY}VY^Zt$iJBP1I!}7; z>Trt7FW`+3Vs5jtYYrU`#i4&j=O2(SbZiw0juO7=`I^B(gc1&q8qq`GpjPVIs&Y|G zXlShSr-(jx2~b+3t5B=I5V}tEya+rN`X!Df5t=0JJApg!GAY3)^4TW_Oa8auFXw^C z*SLjJ%YWJYun%*t{bby>3-fY>5+C&yGuqeGL*a$BgM+V7(wHg+`+^wXq$IM&Pk}&SNuX6(cR z?zrLdRtx#@jWu7{Pfy#{OnGfPTXbitO{(NL4n){?e73NqHxWtkGa>Kbvr=#@Yg+5) zaHl@VbsA8V;as~Uy$PaW{!dBU$}j+^FC>c78p^+6fpbGMQZrL*c8jHV5jq=PGTpoQe3`4I$`%?~L4V$__qoaB5peS>pF<&o_uTXxs zzkNem#PU=>RIit^Zr6e(n|3vUMZ8=$CEDG4T{vZQ1ImtcUB?ayaCk5;_+>*Xje=NN ziADMPbQNV3N_;auGa*oth&u##oXNAqL&A&(cSB}cjM3B2euidn2R%B0S3r-ji|t3d ziM>7c?y#=R_ABzZ2z<~M7zjcmB$nf>om*>$BCGmfGlK$3x*ig>3)vTTw2Ktk^V(E( z;mQ&@pr!s$jJ7Cbmi3-pjb-NP6ZdkWVyfn4)fOtU> zot=%0^t!dflK}@F zYNxZ;8eQFw(qJUyfc-VPob40K1?ya7vn1b2Bgx9rxNUT0`9gqVOY8%M#W^9DVO(>m zh-KC7$Ki2#o#tb7GMnDXEYcB3>-K_-oOj-v*PLQqZ=! zv~07IRb!Mr&n!@@Qh;w#Jv4Of9irsj^Os0slD>#J9@PLYpGxjRMQT$30k!p7xw1(n z^_)5HXqhCjnSPY_oP3=t4pUq5#s zL3+j`8?VPVq|56?yX`saSzIrcwujZ@S^ga738H|{grzyw30-fCuE|WZF(~|L>>t$5 zNEZKs;&v#!*Xq=d!$v<0DB=?Xdl`T=A`ovf)c4;Hk!&7)`uhy7P-l5 zQXZOLd!zjk9n$b(3rT5SKecsqAaq_M>UycW42G}5Vq}PALi2hDOOGU{%&Czj$2zpj zwe4DxFvO*aI&Kj>yS40TUmX>A?m4E;=U38bOD^UwrhF+6d@##_0!pXG&6ZZ9;n$k3 zLTn#v(kW}-s0>eJ-{IUl>s<`fDFh*w#X0lUt;l?(8Bkk(?POu6RF7ro7|hQ8Et^`L<{VurL zBuvFwKJj>(qp8hpmVHA=F+Iyu)iBbuRJSdqq*X+>{|DXPZ(_$c8x)3jgTborVY$w; zEZKK^vFHzVDld-@`l}vI`0A)CHc8JiH z$>^u2&Z`K2xJWN$7A5EYg_H{?o9FkEzVsy5(PEQ_s!kZ2+u-B}!|NowW=mc!Or^v? zU>Wj5g>fTD*(}9XHGb+v#GO*A49C+KxLCz6)Gw3s86xpm=G9rY_rQ^`$Kn0QEPdVo zHF+jxYVUQ%-8I0~AJX8*c6>;7B%dZ>B3n~_FAmPIkQKEvSFW|XIgmF*9wJTz`09a0 z_3$s&zR+_|c7hhj!k`sXC5OkY~004B3geMbh$53jhN|03dv+i0nZpD3)f zY+gQJ!l4yVsf@zdC*8w{8q+mh{WmTE5}~0=Y+obA7j4(Bd)wya`h3G7-sCP}EvtG| zi6vlrQIfRGCIn(J8=}kF^kr$Y4igT`er>n2MZjW8Hx$VHm=T-?Mrz3&wGPP?*Ex zYPTnI^ryyZa>IQA)Jlx)E@#v7olYuz=PhrH?+8l0o7jt11;PBd*9_BO{`qi*@|jW`*$LbKB;%_uZ1lHrM^ z`wjIAIQm$&$X0(qtxWR+^QvRI%}R4#jtIwTDMjS3Uz}$V2s1kapZUUImqXdRdnNIw znfOKxOi^ku&o69-;ho0uoQ`I>FnCSJ&Q4ckyk{wh7uqw+RWyy#C>~ z%$;M9+%0nEX*X48OG25pUVJh5f?0b?=iTrQ0Bp;HY>FH^p;WY#t}2gd(vq!FTSIb- z=wI!P1Ej+1SLcYNd9;!j!6mqR2o~HOg1ft0@Zj$5 z?vUW_uyEeTKIh)I&)%o*xqn~PqgGL{s$q5aH@kcGoMVjX`AipUik&K3<0k9aVnTy2 zr02Be1#9Qh_ZGUju4=68IMLgyDBL97T{{C7*D5KPQO=4w4;8d~D#XFa3V~K2USPc9 zdp=P7MPz{pK%y6CG;KRB4F5-o65B9Ci$v8EZ_g>QpL;K)BtcqHJ2 zXL~u}lmB_bdxO3vmUs^PCsZYG}H?00Yak9 z9)=3n6?`j}E*qQ~dQS|gWE`ryi@hU^XgkBAEw*mJIb_bgO8FDhzAKc4h^>~M#vX;X zCK^u$u(O=30$0fY+F2+MZzc04m$-;9*4Xlksw?!C>glH*Q4*CfgEkvrWOI<;KALF@ zz&73)f8Jr7Cr#1M8HwM!F_0F%3iCTz{Aw~|L#rA~tu(3D1$#Ia#atUp0_pxnX{=<= zO(%``o*{u=i<&o**>?tPBlloYt>e?#dnUAL0~5i`-MdEtc=R^D=xR&P2=QK7UuX6pMqPD4vW<FNLevQj_W9K? zQ>d~fW+5-0Ei}YpaRU^lHY*FC;o-I!0))|;2$_+d>e_nAEzRJyq&SX(RKPZ z{>pk|By1+D#KJMm%c*@2FXOWNvx*qYx^vG~Lh!atewbsoBK5moF_pTqG+3gd(XKNj?hfniO*`!pl zqR1aoeD7$^OPC$h%w)RmWZfm*1p4BmnpI`LepA_sXc*eL^t9uk5+Ezb0Yn`Wucy(y zC#0c2WpXqZ$jZKsv5}ZA{9039tIK3OeOib_I_%{1Q2Azbm@;mx^2&jY81Gxgd3R2> z=E6^E)fRu#x`KQu)ZKZx^A6Yxdx{#+cO2UxqubaoJJF5wU%0;U^XjzD|YSRns6!7(?>P5+6U??K6|Ieb6F z!mz0qYfosWccnG4(2+zR_`Z2oXU{aNe6*~N06FaEZ{U5-Cmt?K;|k_VZa9F)t5ecm z`Wiwc6BJxp9Y5ljxLZYjFgEL2qvpWx{k%(xd~l7HK2VOQFn0G)CCdq~TtjGOMk;Hd zr%NVxn!o7LtUmf`Q3nYQ8+=MCQ&C9q2z50HV0_NG@*=X#Mb&cmEmIk}q^bd~8zma! z)V%otP+T1T_)VU6NRxU}fR^PyeEcw%_A3*`; z)g6SUmsQR{|7ZVU*m+pOH+zvbhVd%_q%wjJ;PFG??=n6XZaysTP#2hKREZ+ad3=bb z7>uPl0vrr{z-5r?y{{z?>)wbdXx!JjlI9Y>E)`e+u4FSJK;kb|z>C@v8-1H~jMH+M zvJbCWEr8~kZIOYxB$FrAv3*44iX9`Z)9X<982?-=vL_BI;mh#(R2rsU2V3l)w*9L1ipcXk84(i$Ohbd zOGV`&HHiGraZ{)%RZZ-Ta%#)3o1QR&h z{aR;&DrIeF(?;e+d3<)YB7=Nq0S3O%b4AqH*=gq(3%w1HJ%PqDq4BBlsFO17^Ak~mOTJxMFX%}Lm4ehQ9(8L?5;iV#JgoJII34V9GZ7q&O2?cA~FCO4O);TO{UG>cmf z9Y1l3oJZzF!soQ%^LT$Rxzw%@wY9xXFT1jHKBU0Rn~!^IwfhUUJ2Bw(d#4TSY zeKR)5!+AwiopEDxr?)UYiGh13_DGxUG~!*0A_X5g66cMsd&2+(EW%NOjip@osi~%0$Y>ST#f-h_@H%sSL$5B`exH0q5ZqBv7Jk0KG6`s|Iv$U7A++(QP zSF2HHCEeWWj9-u8gy6^+dg&^ue4T1jMq7-*Jg2L4XDx2_!4eZg{E1RYinTkPEm*q> zQrY{JC1q!e9J*+!WEFD-X)`zqw3G2+Nski&o`{9f5T)m2y+pm@Z{{s3ekN6i{I{Wv z%Vx$ZJ-8>?ad@Yfd!4tfka^8VO!jGu`N;*qSy<+SS_27Mt`2w=aJzcSJ5d>IMX;$- zo;gYYKtXpGa*7Su##~pI`&=!*3ALJ%Rlx6~vy_KyiJDB;Gm%0Yquuo&Z>^=OF@(VX z6#5jT)3he~r1G0$s;ovHIdRM&p8cWIK)stEA@Ft zJ|2+r10x!E5v%m=!qagy)@h`}viAh&e$*kehcFhSn5xj$Sid0hbY-QfJ zIRLQ2)@RZ4xsz$*dP9~k$kt3J*Xn+2U8EHw>N?U7(oD4UK`(Be_^1z)Mp>%;xNbo& zMqCcgAWaHQqt3#X7e;S23xK_7GH;>2ft5;~!20Q}@R|B^Oqdu67;b}N_@YA!0AJgu zEoDu3Ip#x2@RqP%&OJX-U=i|2;VI>Z9+0ZvhSWe8*iW*o)LOKK_!<^)4dS=;ekx&v z@8p~ZY1dh%UFboG$o$SL~9}E(1|katR(YRsY`8b&tG15aJLn9dy_KS zmv=#Rg!#?a2vf=$-3*7B1~2&OHNEkwJeTD^4s@c3%%_EB(<;TM%(NhfSm{q}vN~=9 z7%nidpdqHAfqdN~Z{VQ@JsYN}iPmaGTO8Q$Pp&Y5zjI^>5kdxm-G^!BbqRgnju`29@-2g<~I1Wa4eBW0CV!}@U&xR=nDIp98I>wx=|)y z)-3{0y}FQvN|mkXIN0t{yYNcej|0uPk)_h=58Sa>2mnzo8J;U2Ab*Y!T zv0%$1Mg1MVAJ-3YOu#n)RM`RhjyIIjmC#$+0`!GhJW=Glf~5=V!x6}C*1>^Efh_5& z#;0@h>=HFF4_o3S4F~il^3@-&_EphWX}lQJ>4)5GFu}A>mm9gDo~aQ8{O$skp^UTJ z^WnYLoR}$m95S@THmzOY6F1p5JnvImw&p6 z@*1ppiWhv7jybbMqr58ypUhj#GhW$;`h{ffhk}oq;SrYu#>M8kM@pT!HPQwop~DnY z)3Byn<=#=Yi)NHaABaW5!8U4n%wg$_S40t~CRi}ah_4d^o1 zgVh?vFEN^BUbIIQgq^73FhUSOpEyOmn7_lfBXoU~{R(2joM6V9r+qbHfc{bH)q$iQ z6My*)mH+YHl;T^waRvi39;c0N_diXHx6h|nwX1QuzvKlXkvFBB$`!s03w5RS93u!m zV8f#Jv%TJqGH-j`1b)75I?0I@q)TSUkhZeY2a93~8u0l+2LhtfK!0sQUzxnc@WT2o zGEQG;+d5B$HQ)U3Qxbtc6x-h%wcTg+Xt5eKLDMbD>Dkv=KM7AM2xg0+%^bzqrsH$s z0>@r1S~pc3O^CskzC-LX@wfS`fS~Vn%bUVCzkHt=97#qKqyKC6Hu1c(1Mo<61O%nzloy`cDX7;kCWvs;_nWNBJ%d(_j1l9YKC^Trd0Zo z8wddGh<|eP?scO<8Cz*9fJt20E3i@TiD^3x<^FiYq`;nErR1DNuv*VNx__AHpnUOwr6enmn6Z56!wBtLn*%<%v8 zB1(XhV~Ulu3bFoIqyN{A{$l_@cY(GL+}aZVsRR5F4Z>c*S(+{yp)~(_Xu14ATl8ON z3jgjy|8?&A$sj(z-I`p|*Zf}$4H{^h_bMXczYXB;v-;0>`03we>Qg4HVs88|hDL<~ zw1swRj{P4e_K#_|33`Pg)Nomgt@59TChiTirE1^E`wtKIWh;?{D#RYltLv%%UknW% zXe;rWfZ>1fd^JhAhP#%{h;Izz+keay_dGv=+lE(T9ZCQ7>HcHWozHnA$ArFd zC0NAhJQ$O`hwm61Q=CdH1IqhRD0gO9srx${TjeYk5kh6QNhVdkCH~^x`SC8-NAr1z zA$!z6AsB(ab@&#L!<@}6D==||0y!RKt!*^l5;j0Q0m;p)hNa}%Z)sIEF+r~L!No`4 zj$2MVMjWqG*)3o*Y@8}5ML&8+;IM0d<|>ZocnqydI|n71p-*ekpIc=8k8cIC07^rYhp+KHFJJM__-{4B#VJtM>A>~j{-kYD z8um?YOnX6wJN>FNm}dvGzbk@|NhwwS>e6oY<4)JpBY4feApj^+eu*lcR~o;X$Yl37 z1NU|U3=f`&MQ7BKF-}m7z&W?jeU&p?Jj%CwLW~gO8wN5K6hxk6f{jSd=c4E`_hVo! z9^ybk}m-JuX|+ssyMJAdeyaVhA>OFLR#^Ln3)K8js!2im+mrj7srD;D%$mHV(`gmd?Qj&&3+_Wmyjy6nEx5T} zI_duCY8T|7t%&xWUG#Coe&hmd$*g(qo}QlDOLF0uz55 zxmY=*y!A=+ql@n9syYBB_>(&@Oq`l zXJFe2ghs&RJg|u6yH>S6|3m>Q8F4zEuM~2l%P_hP#?bfGOvD*exZR8~_{dToz%}f8 z`n}Tp*5(YLoAm&TXsZPo4FIQMQKZX#dO^f%mw!4bzP!$ma`ZR6E2hktKyPCSz9?2M z$IKY$Y4wadp^r|W7$n5Cp8W1?@$onlTx~RDwN8^1pHQwz>=$Z;C?hD(!kEyLEt_uzdkM$0&+%k{`xyxwi}Q* zB4@nMmWWf#wtO7pdxqQeH5!T!A~f>o1Zl)kE8E==MVJVh=Qe#_$BB291I@QSGE@Ra z)QzR%K_1z$L%%`DACNSpWzOU+q+V=o(!V+5SQ?1X&CQI zCK(GSm2hClS!a4-OaT|$6ENgJ$` zI>RlR18}<_8D0k<;@qr;=3a#xlsiOygCCD?Ho|T9sdxAx zJd3u4Hgjf*J<)YMFT!FRhT`cCx{)n>4A%tY?4EBnkat#SwQ4ovcT!SM<>&ND+ll1O zzpWa6ui%YqZhgAbC?IIt+QxO?xXqDL{IWyDCm0@W1OV~-xXg4pVFjNaPrInk`Z7F0 zDk_woCB@;FG*iE=W893parV%Rt}3GfIgab$<X>G@|M|d{0-+#ZtMUfF|~2GFlTW02B4+Jr27tDem-#M#T6GpsZJWV9l_( z*M+pEWQA|j-$Avb)OK@${jYn-t2gL|5VIIUh?bVLe8!&k>COO_HxM5PAKopyW~kPm z#!w>dmh4ZoNG`MLuDYMNGa2r}i4niU2;}}|w(&h%F`%|JEx@XoQ^oFZd8FZRkcJ+u z#nk~T%*t%r?pI;OXrW7E4z`Qkn~sxkDL?0%BiszOx6hm8#!4lzl)G^V_@P1M+sl7hD=a5xm-&mPK_ujrN#zYYxRz z#MQeovLYv~kD6m;-1_+G0518iSN8VP7EdALxbwvGlfZhKVEpB^Y`w1gGRR!Jb0J+6Eh0L(>1PEX_i<1lin;-b&kjjoVI?>9K>~C9z^^H zFDLU!!?Si@A-8fXyCLap$sMHDJyosK+2uOO4S2qtbVbQfJl<{t+-3 zI#*JV2;6kNzD$+H4EI^>oyI{L_52b5b8SU|wpX$hZN`7;jW&|5+RmR$7WoceggwfT z*_kiejv?e?i2L5n1;N5xgImgk3d$OX8vyj)M2)SOj_1g6y=0~@!N;qhKH-sMllwa% zvC9>@B@lkAHZo;SUl`6-aeLxve~ya>t=OTv$Be)k4q5GACG#x~EHniB-`i)dI?H~z@U>{E@{UOWH0Qyu}NcDeH__O)O@ zr&|7K|H!OL8|#M3yQsJ7M@ErDng#V3{&&{%Q-cUuhgr0XA;b(Vx z{H4OBGdD%UC#NsNU1cCO9>_(aQjJxr_w0=#fM5>qe#Ppd<=i~5?`6VO zTQ7r)0X(Ev$Y>|vmZFUD@R3Gdp~Vyglh?5$e}?}pcvIwQAY=mNq|1K}C2C)1J~gVs zgnH1Zx}!XxhCZjcMkGh&XEqV!4Q*vre}?Hjaa#Fdf#Z1oEaR|w@Ferwd(M(>m!*FzBL0SF8iVL~7z z{Y`7;g{b`4q*d2U#nWJyIfPIJ8Ih-ZtAgE?omKukl+JV#t}?5}E#*q*i!wFr?MH{> zWvWK|6Ab3E(}>XsvxBwW(0Hs zB%fZ7Xd{BFm8MAw*SQ%`UzQdoU3csPwLxBKkg}Z=blx$!I0PVovKs7?oSe>wBmbj|L z+B+?R3+!`CAWtl^=6VlH?T^x4y_3&n#A3YB6J596N(x*TfWPRp9~=DEc(r>(nWOKI zW;g1P=5wz*E*J@*K?9Ho^I+w4*JyxKs2P$H)qu+X+ZX^h1lhkrpBxy}=hOgqHYU9M zXM%IASRM~Z{$?;Pd6H9{pf(@&sm%=Q6=a;?DKa$UgRZd}2%7ov{o3Mi+}iNHp7C24 zsZ6c-AM+l^P9;$Ua`}jnz7h|yf=&dRYq(aXw3&FJ6h-+a%n!gB;^*%`cn%voB4Gb9 ze1jVX^hg7%*%SSFiIr{XYvPPUmvk6JoS+j@u5|Uq1WYhRQM}Pv=Z^DVeZBb&~@A)!$P~N1TY{1pAhn@UEZ1x8d`mo$YO|297K0>L25huO; z@Ml=UVJzF#$TU?IZOi43QP&&AhiRs{B+?=-KsN=~3 zYymULZo9uOI-9X{$1>6?7l=|mA=D5}3~hqp`++VsvU z%Skc+-3*Q&%Ve=EAJcZ$??pbmiyhBRJGUZVMm44TW?MXFjpwH(A-9`}KJ~2cPL2l) z8dA;=@>@J#5k&H$-oR*_+dVM3Ik)1-rn0KIx;Xl*M`D=LG+5pr!KmYGT*LeUEckQk#@0kMBzVKi z8+q`;KF8SODtb^P_Z?Y37;CnOZcRt2kNd+Qa`ST%LrZq^hZYgFfE(g+k|QB`2u16B zTGjggW&7hdQ#OO23qWsT#3dp22zB7RpD>raGX*FVe*if?oG6&d#xy(oaSfRcoxB(f5Bvo zo<=SGvGY*%V{|wO`sAGi6Wo4&)fh+-z=J3x`)d-DOSwrU4Cs!_jj9VLv-F7ax(ToL zrS>SE{Gc)9vGu2k~2u;VMne5TqourAtgI*~BFWkv|{F=E; zJVv}Lu{3jEe>zC1IGvmkZA7-+{IClxRnaJdQ#6${*o~pFBAi2M))equo2HICxIRyo zKl7h$#(o;5pQJZ#;%DR+qjF{9>Q8O3Z!W=#0~WKeD&OrT3(t~Lk5CPjUOp-_NM0uM z&{v;3eqMac_@-#~2o6C)qiR_B1m)@h(5s?(sS%Rq5EUT@YY=Z7nLAllxuEPTh+M@l z??5AOK^H4PICPD?m?{n#$!jCZB?aGQo}SUJllb#(mAE_szv&nCS6q(KOV7~*DThBfwHevh1cdGN;tD))f^k92GTJ?2y z*5g;anPB~cuE}ZS??vR!DEw)9zA2ODT@W(g#kS|}`9_`ZP2o-?{u>W%hwuzW`FroR ztS+&;yBNYfdQSzMjq?O^yq2d9s_UmFoGMjLWDmX=trC4A*hJ-evaw z4%sfP?ux*$Ag&em*dM%&u|Tz-3yFbM^QbpNT|Sq1ZxioxpshWoO|S5dEa5JS1{KF= zr}b>R7lfx7Q{uFSmTuBtvCHDK!*&AgsqlNfG0pku4%c#(%EX~z)If|H+Rp9W_c_@D z`W3C6v(>Hlvhu%wwa=DnIFg+FaAX94Z#tgh41*CYL#SH?)-lF+52-*^jWt9Gx-e&*2bhyS$Iym+O!Ab)Uv(b0^owIeS|eB=aeD%FBk zBZ3$Gu4sBrule%4SUv&JpXGJeUg^Ts(fokHySTO?D`o9(kdNr+eYqiBWn=g-TDIb{ z&)7anWBfiAUUtruGelS?#I-*OS03CB?Ie1IH{Z$%##iCk=B&@#lbdrs>|c=LVrXbi zM-m(L2t7wT@hSyD8|AZ)GBod&Iig?{FOV}+| z4<&L0EF`L@&?#!52^G!rOstZ^@BK@c+HSWsRGOoZ<&Kli+nyg8euVw9P+9u=;$ZRI zPBWL82;FXDG(1HVmj+*2*7iM2N&wakzN$s6lqLR4e8RgWiCCJx>I!xI%BLz zNfD_0B5Jmxn+z3#P1Es3gVg|*w7GzrX~OZ{C6bK=l&$ppVXq)E)eQ*J7K{EES?Q?` z-P%t}vvgOjd-VXa$$F3~?kcOG;5H>lfgn0;gLI=WFq%xVa45~fxk23i@u1uqAD8)S zJ*BewoH>O(1T#|d@}l?=D1_huf3M<L4WulK-S7n zeN4JXE(_oS&#cAA!X*u33^Pl6E@pVUXM&JlLYBY}D_5E&eS0yVl0wrGnj~?s)t@(HbU(gRNV%vFcrf-8VvZ~kvzx-*thXJqZ!pu?xAGD$OkNY0h7xdU z61|x2TT?m=rVVfT73~g6D>%_=8t0uAaGavmS_ZpLlNmPo{$K-$_X$(wyNZCiCD#~Sfp;e!F}z-mdZqS09?sT z&WF&w3cDF9x|6TOCc)Zy+4*&e(o^|LPg3GjhlJb<{Q-%rnfo?=Y6T7!=9)i&Dit7R z6}j2WR7r<0TJ8X9!b*Zs03qw>ACdNg3vLQMhp(bF_+&QFW7R^f35gc8E%h#TEwN?? zV>8F~{(3TiiH0H_hw+HhZzJeaL_f}WKz&)a3k%(eWtIuzMs70a)_G#POk+A1=7Hm? zv+Nk90Q$sg$FNDcu6uI0P3eHDJ}J+=e}=>geVi0XeAtkXRbPDCya$L-tf?6wG6%&b zRt?QC)gUgFRjw#AOLysA8(wfF|DfEbn>}zljIwqiG(wqeg^#WGymigO#fZ4m6 z`nzspN0V;l8=!!FaubMVl@)}klkxcd+U3(qh_L_p7GRtF0h1%_tC`3h>7L^t&RuN3 zPuRHUK&(nDjb^3EKKw3G1uS4fftjHUK{gM>-G6A!u`O_PK7XP}{{=5}l=?Lh+Ly0w z^vg}D(}VRs>aEo6ASYh+89_z9_X5*=vFjYaGN7E6AQAWwu8UvE!a16d@9BdX#6AMM zer;oDCQ-RNRqXn!C3BuRPL#1Y07;2#cUO3a)dQ%ZQV+tbDK(_Tt5E(F+5T3x*G>?RJw5*K5bFFH093bl1d$i`S#;GSkqe&Yl_qgy6`k|onVdVYPO)M6Fzv+?rj2^{=~(v^k!S}Bs4#bYeeV2s*! z_OPU33!1$}<375dPLo4xr~Hbn#fW`I#jj>SCXsmZg?HxbE>V_2X41IlzQu7lo*jNG z9Bb_nGEU>^v1Aa=tDc}zd9I?}@bm86sx>Grd|%rw>iWQ*vdWPoy!wc>?dx6J)1BEB zJ$g!pd#&oplAUh5zvHg}_%`t(Cx zpWoGSC9fKbPHgqIQza%ULQF*qpw`kNz(@4`HCd)>MUKL=yi5`nv$@-+>VuR+eeNq) zs;D0x`MiH%b(wd%gFjFL#Nyb@mnp~PH!PEe109LCX^hEy4KJo&Etb3@Jr0yCCRZfNRlrs4hd1I|~CT662LWcI1x zb1Tb@Jl3i54BWk^dibq08!RLISqynIMmNT1A@?_;gM^fEfpYM~JZ`N{LE40!sZ5Yt z9&()i?G*$Pv_bvNzE?s-;;un(=g8~1n|=~;fPyqaj~}Pv;9LxM;8lc=a4BEG=*H7m zLBjL(d z9M+gYkTb}{W{_4*nO^;}XpbzPOPS!JR;>BH5<hsnqj_v^B?3daWG8&UWlsU0c9E$P3ex{as?AUBrGbMvWtZ#kxaG~P8OVF` zGe;VAmbRrKaZ(zNJ;&$cxLAh)7B7dabKLMGo_6QaO$Ik)?6ApOjrb(Jap}MAOCKsi z_|-9lwtad8+Rvg2(1qH}=QCR#zqn!Z-Y?sE>tvrFl&8312#Eya#ePAteoSKa(3Ke& z%Z+e2}fdmbWqQ5i83r~nf% z@0lS71868}<7(h2;%l*3Z0@m7V=t|j8N|HC@}8~bl8 z-ws`-gyM$e!@h~tNle>Qs(`v>k0>aX5peS{CjRxLec^7LYQEJKezX)k#-~#;Kc5Z z7ZscF%_6~+=w|w4bn=)t^%`p+LRL!^xvEuDNnSMXX+KLo)pj06r z7S!Zd37Ig)2;S>R4?vLR4@r`OjVbP(#{TtDF+v6uEKR#4 zr*Higq167Ta7El10P_j)*rR-Ws4GSJq3qL#kz1{T@R=WKLYzH)K-R{xLTNj9nwBUu zUd2qO`RbbMF8P+wqhw`fOv>YXaw|u!L6eDeg-{44B94MFJx!o}F#8IbQ0Fk< zm_2pg1W4p2F3BZ(4`a&zg6tX^>~m%Yn9SIaloSa6r{TZQ!3_%@&~ZTnlk#&WErT;EvlU2 zit5_zkYX#$wCPD||poxSKtkc?r`;V44lz9(jgyG}v(a$&;`nt-cDyhruL@7UD z>ZT&tGZ*@PHEcL1R~Ek-y(4+$sk zNbE7sePEkW(p>%Tk?r4!mb5l&;MJ!^WMfQCj|DOkAhU)c-;??i-Uz74bRfJ_##7x^ zfn=qz)#`fR{dUkiz7={d(MGBnJ7YYi3zs@|&6}BHDGRi1b7>A+`!#F!Ees1Xv1%;RH4>Lt9d|MKCEb1l2 zUG`ls0pvs?s!=7G{Ho)J?+B?iZ4uB67?1oH@Kgz5@<(|S>m&uBJWVp}^RL5eoHMa~ zGP?-jg~-lg?*=oDEUaa5n(X$@Axg2S1MMY1=ft4uf5=^=8DI{+=v^cQb=jx!?PpbH zPtdX7CJ&rTQoLwYAnSN6- z(`#&F(alwsw>{0)SRLn*@)Ri4xz3@K5RD9^zZW|*;*GGV8>vmM3k&IhtQ=-u^uYWM zB;Nl5ctXi|x$@C5&L*CQz=N7b!jsXc@ylD3%G`cBc(!spfN(%4L*c=FJAD`eo>xYP zS8rQy&LvgehKFr7TqEp|G$dKklJu4b<&x)h~2!Qf`$X_IqA1aR8~eSl2`yH|vo% z0ehN&wXixPhJdm9SrfUo`bAUkiR#hC=tO|^Slz12(!vWtoqkJp=ErSS$g1lJB!Fn4 zxNB5bcoT`(Q4$5*?bcj6I{g=qcD&9#&Zi4ff!J^B)(%-|AH05AbdXzMwYx9v+)FxX zJ4AqZ+g#thv(MYXPrU%8pviu37l>UqIE$(UKUUZX=1JU5`iJnoOMKT%F%a&xGtg_R z!nEjv5N6X80nV6oGc5VZptZ+2%kxgQs+sM;VOU?$nB(`!5QhcS&8LDFH^HQr>|+&m z+SoSMbvVAOa_g0=D8XM*JKm~LlRvOKA;x8Sct*fas%V*J;MFqQowSs-H>Tn3?iRBL z`p3(TnjRzgq4VZ0eQBd7qfHti_*@Q&1yk$vT6f~F(LPCl?DyyauP@(0Yw4=(fy4#e zB1`D|iQZ0q+h^VhS&YyWVfOfWwSoa1T3a+x>zlvgGyMF zI@WZR=5cR2LnFXYWgn82GpYVMrG445!@I+NaK-7dI_XkEGz;7#egn1Jg#%=?($-#7 z0S)b^O7CyGv0R@sg)V);hQ{A?0!H>h_p# z1jriBJx22!=Rj`LVDv^rL$$_!O#JUdiUaQtywtT{L0BQ0s$Qf@<@?TF95?wKuhwc$h;1;kJ=~un& zFUvP#-Nof2la3{hGZ>vL34W}f0ZDN8R?~|nJT#G;8+N0CXa?abu45Za;lAwM-R1t+ zhTx@SmPvW<+cJRY%w=qSDX`~to2Oj5WTr^TF;_3YZbp%)XVhhJz{AooGXfu6O{d{u z%QK10SAsf{yavdDQydktth-x=hJty)S93bWgfB_KYFvaW(h*naJ}!sjZ5}+AwN$E) z4$DrJrc>l9s*J>QS`M88YLQ5lamNZl8f^7_!B*~^#htNS>eZpiO5WA}%|>0RM90um zeqZxZr3R@u>y)Lprk6lXaUzLFS(9ICM_~2v-zmO{aN9oG6*Ae1)FaibQb}1|73NbR z$A>PJsf9ns2xQmF0AuoX;em+5$y=+=MK1TbJ4DDfrv6H z+!*?F7oz3YT#S_M21d(an??YeaFypopQvz|JlmZaIjiuSLy2)9fW4V6TQ%NjFq`GjNDv4V2NLGli?RJ(288KE+5id-UxhCq?D7!H60iro8TNe_ zN*tgl74>Y1+Cd}YVoP~5NU}QC;!`f^LogP@@wtInpRq=1l6<&+E!JYclc*vf_w-LX z{oO)%n6MPX?6P=UzV5I0$0roxk_F18^e@?VYonHf>_PN4GpEqMf(C8E_|@mI1q1MS zAySrCm-kY;KajZB?#&6$VSgZCy>C>Ye;mt!nebx@VTHa^UV6mdED2tC~E>6oz z9j#rhVGrEcREGix*O)2nR@Rs{b$M`d>>x3Rhny-j9~|cwYU*Ya^JpP;JU~sIOTK0N z;VY(PW?)9Ml82gL{w)GSrx}1UuuPq70YwloYZwX-D94M_J(9ij?I$QQ_KD25NK4Sb z-J3;a-y)bN3qX3K^a_1I{371Q*vJ*QGG@z`AKN&5W!QNtj2NGQy^!8X*N`mHe#}W< z$t4MN+0UgNv7!EA9~|bU+WJtLtz7yZf;o_wQbo>$#G-w9deNRQWT9%OK9;RiV+G?2 zl1vMQt?O@Sdpj*I_udc)z6x5EW9&-Ryk)*l2_2cEr7AN;>T$k}auX}dBB&%1i zkZ3;%3w(xs^H4!Q7iAOHo#Cl{QZi<=niF8YqkB~5L#evf8!K5}znHWaVpAa0#1u8J)4oeEHhPjA(X zHt{DMU>{y4v22)@;a~-AzM*WHB7R9*B3`WzC*b)bufzM3dVC>O0d$y{IpC_=r(Lp7 zeRqC*E+R>tg|2$T6!NJ?sGxtrggAyLT+Fpz}%bzV3Qpzn8t^c zdE+m{&7?eQt;o&M1rsGK{G~c;Eq^4u(0!4DviDb9mcxbBEi|}$qgSs!9Rm(}Go^$1 znzANETuDBERxr0AwSVT@B5McxDUC06Dh;*^WLOA%wpxrr=l~!4*mvS-0kcHM)@n^F zm>2_V6K9%ua5D`Qo>Xig7V)`BZ2_|y1mxL-`&vz1FibHAdkI?ZKt{m}dto*o7hV%M zvNTDjeEiISh(EqT;2})oKR%1iXITwOJIAa-PS3c`H4DRr3Qn?@<-L-MRoG4E?-d zJ@(M6u(e%pp%)fB;~Ryo^!5?<%1yv!Wo9FG5M##mXTx;a8-%y;X`uWha(hL)bHR76 zFA?SvN2S8Zj6mhaZDzVws9+&$aIE6)M(E9MpE+4c|Okp!_sD@0?kpPEfr%Yk}W4?hNnD&&4Y zoICT8wj|B5TiS&<>D{q-hl}wExU_=PS7mrXyO|F^`^K!A&wHB5DS7h=%a=sc^y8C^ zpDtGs?zde}xgrbz#KrKq%XZN~_6rc!T{!8OhLY%k(S*PEu1pA)oW zC|*fe>rBiCKRbEtaRvi}Hu^Z>u}?w~%Skw9c96Q>=ile^@bo0PZ~F(R2_nBeWB>@H zf`>pN_^x_Dj4(F*^HdcM=5o>WQ9XehfDB%uYMN2E;IM?BWQ`^NqIe%yZ0vHKkH(Bw zKT`c`?j@Fh)SV>~0?JQa zxBn5)k`Q(Pub!q)N~n*R88>93_$hnjw2iVY1#W+B zim5%H&~V)`F~W=~MNY-TY;W-6U#*Qk0LXWV+ z6T?eg82i|U83!CT&KRbyO(hJcBZ7ZRU-Crp_o55Al5q2)z3C=FDZZebwdeltE3X{m zn+i*Y#1sEYlD|0O00KOmztuf`vnDQ?JbP)H4vC$gx#^!%bTl_mJQzuF$RRiO+6XIX- zuYV8QY!bats7~{k2LF5t{QI9#z5{F=y~4Bi|9NKn1ztEwza$M}|8swd-U40dl-pqa z_n-QwY5frC`$F>RNa&^fGyU)Hqk4IV9~3?CgFT||3tlED&=>I<1oG%OuJU7$OkN??h{D^@rV1I4?{-1kb6A4%i z=glOx(SJ4@I3b`5|KD)`zu|g80ejg0Q-=HN`L$wv^AhXjNA6d^*C!Df;W9y8pZ^1G Cb+mZ^ literal 0 HcmV?d00001 From 05e8c7e3698642ed004a8d3743f035275f124af7 Mon Sep 17 00:00:00 2001 From: Lance Martin Date: Mon, 5 Feb 2024 08:59:34 -0800 Subject: [PATCH 006/108] Add RAG examples --- examples/rag/langgraph_agentic_rag.ipynb | 485 +++++++++++++++++ examples/rag/langgraph_crag.ipynb | 528 ++++++++++++++++++ examples/rag/langgraph_self_rag.ipynb | 665 +++++++++++++++++++++++ 3 files changed, 1678 insertions(+) create mode 100644 examples/rag/langgraph_agentic_rag.ipynb create mode 100644 examples/rag/langgraph_crag.ipynb create mode 100644 examples/rag/langgraph_self_rag.ipynb diff --git a/examples/rag/langgraph_agentic_rag.ipynb b/examples/rag/langgraph_agentic_rag.ipynb new file mode 100644 index 000000000..ecd65ba90 --- /dev/null +++ b/examples/rag/langgraph_agentic_rag.ipynb @@ -0,0 +1,485 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "625868e8-46cb-4232-99de-e95aee53c3a3", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph" + ] + }, + { + "cell_type": "markdown", + "id": "425fb020-e864-40ce-a31f-8da40c73d14b", + "metadata": {}, + "source": [ + "# LangGraph Retrieval Agent\n", + "\n", + "We can implement [Retrieval Agents](https://python.langchain.com/docs/use_cases/question_answering/conversational_retrieval_agents) in [LangGraph](https://python.langchain.com/docs/langgraph).\n", + "\n", + "## Retriever" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e50c9efe-4abe-42fa-b35a-05eeeede9ec6", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_openai import OpenAIEmbeddings\n", + "\n", + "urls = [\n", + " \"https://lilianweng.github.io/posts/2023-06-23-agent/\",\n", + " \"https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/\",\n", + " \"https://lilianweng.github.io/posts/2023-10-25-adv-attack-llm/\",\n", + "]\n", + "\n", + "docs = [WebBaseLoader(url).load() for url in urls]\n", + "docs_list = [item for sublist in docs for item in sublist]\n", + "\n", + "text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=100, chunk_overlap=50\n", + ")\n", + "doc_splits = text_splitter.split_documents(docs_list)\n", + "\n", + "# Add to vectorDB\n", + "vectorstore = Chroma.from_documents(\n", + " documents=doc_splits,\n", + " collection_name=\"rag-chroma\",\n", + " embedding=OpenAIEmbeddings(),\n", + ")\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0b97bdd8-d7e3-444d-ac96-5ef4725f9048", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.tools.retriever import create_retriever_tool\n", + "\n", + "tool = create_retriever_tool(\n", + " retriever,\n", + " \"retrieve_blog_posts\",\n", + " \"Search and return information about Lilian Weng blog posts.\",\n", + ")\n", + "\n", + "tools = [tool]\n", + "\n", + "from langgraph.prebuilt import ToolExecutor\n", + "\n", + "tool_executor = ToolExecutor(tools)" + ] + }, + { + "cell_type": "markdown", + "id": "fe6e8f78-1ef7-42ad-b2bf-835ed5850553", + "metadata": {}, + "source": [ + "## Agent state\n", + " \n", + "We will defined a graph.\n", + "\n", + "A `state` object that it passes around to each node.\n", + "\n", + "Our state will be a list of `messages`.\n", + "\n", + "Each node in our graph will append to it." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0e378706-47d5-425a-8ba0-57b9acffbd0c", + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class AgentState(TypedDict):\n", + " messages: Annotated[Sequence[BaseMessage], operator.add]" + ] + }, + { + "attachments": { + "f886806c-0aec-4c2a-8027-67339530cb60.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7EAAAHICAYAAACYkW15AAAMP2lDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnluSkEBCCSAgJfQmCEgJICWEFkB6EWyEJEAoMQaCiB1dVHDtYgEbuiqi2AGxI3YWwd4XRRSUdbFgV96kgK77yvfO9829//3nzH/OnDu3DADqp7hicQ6qAUCuKF8SGxLAGJucwiB1AwTggAYIgMDl5YlZ0dERANrg+e/27ib0hnbNQab1z/7/app8QR4PACQa4jR+Hi8X4kMA4JU8sSQfAKKMN5+aL5Zh2IC2BCYI8UIZzlDgShlOU+B9cp/4WDbEzQCoqHG5kgwAaG2QZxTwMqAGrQ9iJxFfKAJAnQGxb27uZD7EqRDbQB8xxDJ9ZtoPOhl/00wb0uRyM4awYi5yUwkU5olzuNP+z3L8b8vNkQ7GsIJNLVMSGiubM6zb7ezJ4TKsBnGvKC0yCmItiD8I+XJ/iFFKpjQ0QeGPGvLy2LBmQBdiJz43MBxiQ4iDRTmREUo+LV0YzIEYrhC0UJjPiYdYD+KFgrygOKXPZsnkWGUstC5dwmYp+QtciTyuLNZDaXYCS6n/OlPAUepjtKLM+CSIKRBbFAgTIyGmQeyYlx0XrvQZXZTJjhz0kUhjZflbQBwrEIUEKPSxgnRJcKzSvzQ3b3C+2OZMISdSiQ/kZ8aHKuqDNfO48vzhXLA2gYiVMKgjyBsbMTgXviAwSDF3rFsgSohT6nwQ5wfEKsbiFHFOtNIfNxPkhMh4M4hd8wrilGPxxHy4IBX6eLo4PzpekSdelMUNi1bkgy8DEYANAgEDSGFLA5NBFhC29tb3witFTzDgAgnIAALgoGQGRyTJe0TwGAeKwJ8QCUDe0LgAea8AFED+6xCrODqAdHlvgXxENngKcS4IBznwWiofJRqKlgieQEb4j+hc2Hgw3xzYZP3/nh9kvzMsyEQoGelgRIb6oCcxiBhIDCUGE21xA9wX98Yj4NEfNheciXsOzuO7P+EpoZ3wmHCD0EG4M0lYLPkpyzGgA+oHK2uR9mMtcCuo6YYH4D5QHSrjurgBcMBdYRwW7gcju0GWrcxbVhXGT9p/m8EPd0PpR3Yio+RhZH+yzc8jaXY0tyEVWa1/rI8i17SherOHen6Oz/6h+nx4Dv/ZE1uIHcTOY6exi9gxrB4wsJNYA9aCHZfhodX1RL66BqPFyvPJhjrCf8QbvLOySuY51Tj1OH1R9OULCmXvaMCeLJ4mEWZk5jNY8IsgYHBEPMcRDBcnF1cAZN8XxevrTYz8u4Hotnzn5v0BgM/JgYGBo9+5sJMA7PeAj/+R75wNE346VAG4cIQnlRQoOFx2IMC3hDp80vSBMTAHNnA+LsAdeAN/EATCQBSIB8lgIsw+E65zCZgKZoC5oASUgWVgNVgPNoGtYCfYAw6AenAMnAbnwGXQBm6Ae3D1dIEXoA+8A58RBCEhVISO6CMmiCVij7ggTMQXCUIikFgkGUlFMhARIkVmIPOQMmQFsh7ZglQj+5EjyGnkItKO3EEeIT3Ia+QTiqFqqDZqhFqhI1EmykLD0Xh0ApqBTkGL0PnoEnQtWoXuRuvQ0+hl9Abagb5A+zGAqWK6mCnmgDExNhaFpWDpmASbhZVi5VgVVos1wvt8DevAerGPOBGn4wzcAa7gUDwB5+FT8Fn4Ynw9vhOvw5vxa/gjvA//RqASDAn2BC8ChzCWkEGYSighlBO2Ew4TzsJnqYvwjkgk6hKtiR7wWUwmZhGnExcTNxD3Ek8R24mdxH4SiaRPsif5kKJIXFI+qYS0jrSbdJJ0ldRF+qCiqmKi4qISrJKiIlIpVilX2aVyQuWqyjOVz2QNsiXZixxF5pOnkZeSt5EbyVfIXeTPFE2KNcWHEk/JosylrKXUUs5S7lPeqKqqmql6qsaoClXnqK5V3ad6QfWR6kc1LTU7NbbaeDWp2hK1HWqn1O6ovaFSqVZUf2oKNZ+6hFpNPUN9SP1Ao9McaRwanzabVkGro12lvVQnq1uqs9Qnqhepl6sfVL+i3qtB1rDSYGtwNWZpVGgc0bil0a9J13TWjNLM1VysuUvzoma3FknLSitIi681X2ur1hmtTjpGN6ez6Tz6PPo2+ll6lzZR21qbo52lXaa9R7tVu09HS8dVJ1GnUKdC57hOhy6ma6XL0c3RXap7QPem7qdhRsNYwwTDFg2rHXZ12Hu94Xr+egK9Ur29ejf0Pukz9IP0s/WX69frPzDADewMYgymGmw0OGvQO1x7uPdw3vDS4QeG3zVEDe0MYw2nG241bDHsNzI2CjESG60zOmPUa6xr7G+cZbzK+IRxjwndxNdEaLLK5KTJc4YOg8XIYaxlNDP6TA1NQ02lpltMW00/m1mbJZgVm+01e2BOMWeap5uvMm8y77MwsRhjMcOixuKuJdmSaZlpucbyvOV7K2urJKsFVvVW3dZ61hzrIusa6/s2VBs/myk2VTbXbYm2TNts2w22bXaonZtdpl2F3RV71N7dXmi/wb59BGGE5wjRiKoRtxzUHFgOBQ41Do8cdR0jHIsd6x1fjrQYmTJy+cjzI785uTnlOG1zuues5RzmXOzc6Pzaxc6F51Lhcn0UdVTwqNmjGka9crV3FbhudL3tRncb47bArcntq7uHu8S91r3Hw8Ij1aPS4xZTmxnNXMy84EnwDPCc7XnM86OXu1e+1wGvv7wdvLO9d3l3j7YeLRi9bXSnj5kP12eLT4cvwzfVd7Nvh5+pH9evyu+xv7k/33+7/zOWLSuLtZv1MsApQBJwOOA924s9k30qEAsMCSwNbA3SCkoIWh/0MNgsOCO4JrgvxC1kesipUEJoeOjy0FscIw6PU83pC/MImxnWHK4WHhe+PvxxhF2EJKJxDDombMzKMfcjLSNFkfVRIIoTtTLqQbR19JToozHEmOiYipinsc6xM2LPx9HjJsXtinsXHxC/NP5egk2CNKEpUT1xfGJ14vukwKQVSR1jR46dOfZyskGyMLkhhZSSmLI9pX9c0LjV47rGu40vGX9zgvWEwgkXJxpMzJl4fJL6JO6kg6mE1KTUXalfuFHcKm5/GietMq2Px+at4b3g+/NX8XsEPoIVgmfpPukr0rszfDJWZvRk+mWWZ/YK2cL1wldZoVmbst5nR2XvyB7IScrZm6uSm5p7RKQlyhY1TzaeXDi5XWwvLhF3TPGasnpKnyRcsj0PyZuQ15CvDX/kW6Q20l+kjwp8CyoKPkxNnHqwULNQVNgyzW7aomnPioKLfpuOT+dNb5phOmPujEczWTO3zEJmpc1qmm0+e/7srjkhc3bOpczNnvt7sVPxiuK385LmNc43mj9nfucvIb/UlNBKJCW3Fngv2LQQXyhc2Lpo1KJ1i76V8ksvlTmVlZd9WcxbfOlX51/X/jqwJH1J61L3pRuXEZeJlt1c7rd85wrNFUUrOleOWVm3irGqdNXb1ZNWXyx3Ld+0hrJGuqZjbcTahnUW65at+7I+c/2NioCKvZWGlYsq32/gb7i60X9j7SajTWWbPm0Wbr69JWRLXZVVVflW4taCrU+3JW47/xvzt+rtBtvLtn/dIdrRsTN2Z3O1R3X1LsNdS2vQGmlNz+7xu9v2BO5pqHWo3bJXd2/ZPrBPuu/5/tT9Nw+EH2g6yDxYe8jyUOVh+uHSOqRuWl1ffWZ9R0NyQ/uRsCNNjd6Nh486Ht1xzPRYxXGd40tPUE7MPzFwsuhk/ynxqd7TGac7myY13Tsz9sz15pjm1rPhZy+cCz535jzr/MkLPheOXfS6eOQS81L9ZffLdS1uLYd/d/v9cKt7a90VjysNbZ5tje2j209c9bt6+lrgtXPXOdcv34i80X4z4ebtW+Nvddzm3+6+k3Pn1d2Cu5/vzblPuF/6QONB+UPDh1V/2P6xt8O94/ijwEctj+Me3+vkdb54kvfkS9f8p9Sn5c9MnlV3u3Qf6wnuaXs+7nnXC/GLz70lf2r+WfnS5uWhv/z/aukb29f1SvJq4PXiN/pvdrx1fdvUH93/8F3uu8/vSz/of9j5kfnx/KekT88+T/1C+rL2q+3Xxm/h3+4P5A4MiLkSrvxXAIMNTU8H4PUOAKjJANDh/owyTrH/kxui2LPKEfhPWLFHlJs7ALXw/z2mF/7d3AJg3za4/YL66uMBiKYCEO8J0FGjhtrgXk2+r5QZEe4DNkd+TctNA//GFHvOH/L++Qxkqq7g5/O/AFFLfCfKufu9AAAAVmVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAADkoYABwAAABIAAABEoAIABAAAAAEAAAOxoAMABAAAAAEAAAHIAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdJ9yF8cAAAHWaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjQ1NjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj45NDU8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KWU789QAAQABJREFUeAHsnQm8VdP7h18qlVIaiEoDmSqzQqaUKcoQypjMM5kjfiQZEikl/xASMmesRCKSocxlTKXB3ExR3f9+Vtax77nnnqlz7z3nnu/7+Zyzp7XXXvvZa++13vW+a631CgIxiQiIgAiIgAiIgAiIgAiIgAiIgAjkAIH1cyCNSqIIiIAIiIAIiIAIiIAIiIAIiIAIOAJSYpURREAEREAEREAEREAEREAEREAEcoaAlNiceVRKqAiIgAiIgAiIgAiIgAiIgAiIgJRY5QEREAEREAEREAEREAEREAEREIGcISAlNmcelRIqAiIgAiIgAiIgAiIgAiIgAiIgJVZ5QAREQAREQAREQAREQAREQAREIGcISInNmUelhIqACIiACIiACIiACIiACIiACEiJVR4QAREQAREQAREQAREQAREQARHIGQJSYnPmUSmhIiACIiACIiACIiACIiACIiACUmKVB0RABERABERABERABERABERABHKGgJTYnHlUSqgIiIAIiIAIiIAIiIAIiIAIiICUWOUBERABERABERABERABERABERCBnCEgJTZnHpUSKgIiIAIiIAIiIAIiIAIiIAIiICVWeUAEREAEREAEREAEREAEREAERCBnCEiJzZlHpYSKgAiIgAiIgAiIgAiIgAiIgAhIiVUeEAEREAEREAEREAEREAEREAERyBkCUmJz5lEpoSIgAiIgAiIgAiIgAiIgAiIgAlJilQdEQAREQAREQAREQAREQAREQARyhoCU2Jx5VEqoCIiACIiACIiACIiACIiACIiAlFjlAREQAREQAREQAREQAREQAREQgZwhICU2Zx6VEioCIiACIiACIiACIiACIiACIiAlVnlABERABERABERABERABERABEQgZwhIic2ZR6WEioAIiIAIiIAIiIAIiIAIiIAISIlVHhABERABERABERABERABERABEcgZAlJic+ZRKaEiIAIiIAIiIAIiIAIiIAIiIAJSYpUHREAEREAEREAEREAEREAEREAEcoaAlNiceVRKqAiIgAiIgAiIgAiIgAiIgAiIgJRY5QEREAEREAEREAEREAEREAEREIGcISAlNmcelRIqAiIgAiIgAiIgAiIgAiIgAiIgJVZ5QAREQAREQAREQAREQAREQAREIGcISInNmUelhIqACIiACIiACIiACIiACIiACEiJVR4QAREQAREQAREQAREQAREQARHIGQJSYnPmUSmhIiACIiACIiACIiACIiACIiACUmKVB0RABERABERABERABERABERABHKGgJTYnHlUSqgIiIAIiIAIiIAIiIAIiIAIiICUWOUBERABERABERABERABERABERCBnCEgJTZnHpUSKgIiIAIiIAIiIAIiIAIiIAIiICVWeUAEREAEREAEREAEREAEREAERCBnCEiJzZlHpYSKgAiIgAiIgAiIgAiIgAiIgAhIiVUeEAEREAEREAEREAEREAEREAERyBkCUmJz5lEpoSIgAiIgAiIgAiIgAiIgAiIgAlJilQdEQAREQAREQAREQAREQAREQARyhoCU2Jx5VEqoCIiACIiACIiACIiACIiACIiAlFjlAREQAREQAREQAREQAREQAREQgZwhICU2Zx6VEioCIiACIiACIiACIiACIiACIiAlVnlABERABERABERABERABERABEQgZwhIic2ZR6WEioAIiIAIiIAIiIAIiIAIiIAISIlVHhABERABERABERABERABERABEcgZAlJic+ZRKaEiIAIiIAIiIAIiIAIiIAIiIAJSYpUHREAEREAEREAEREAEREAEREAEcoaAlNiceVRKqAiIgAiIgAiIgAiIgAiIgAiIgJRY5QEREAEREAEREAEREAEREAEREIGcISAlNmcelRIqAiIgAiIgAiIgAiIgAiIgAiIgJVZ5QAREQAREQAREQAREQAREQAREIGcISInNmUelhIqACIiACIiACIiACIiACIiACEiJVR4QAREQAREQAREQAREQAREQARHIGQJSYnPmUSmhIiACIiACIiACIiACIiACIiACUmKVB0RABERABERABERABERABERABHKGgJTYnHlUSqgIiIAIiIAIiIAIiIAIiIAIiICUWOUBERABERABERABERABERABERCBnCEgJTZnHpUSKgIiUJIECgoKSjJ6xS0C5ZKA3pty+Vh1UyIgAiKQ9QSkxMZ4RKtWrbIvvvjC/f74448YIbRLBFIn8Pfff9t7771nU6ZMsd9//71QBI8++qgdeOCB9vHHHxfaXxIb8+fPd9fiev63ePHipC713XffuXOGDBmSVHgfaNasWZF3infr+++/txUrVvjDZb6cMGGCtWjRwgYPHlzmaVECRCAdArzXvFszZsxI5/SUz0F5PeGEE2yvvfayX375JeXzdYIIFEeAOhhlxPjx412ZuHTp0kjQ0iwrueh9993nyryvv/46koZ0Vv78889CZeCXX35pv/76q6XTCHTyySdHym7K8MmTJ6eTJJ0jAjlPoGLO30EJ3ACKxLHHHutiPuuss+y6664rgaukFuVpp51mn376qX3wwQdWsaIeW2r0yjb08uXL7ZprrrEXXnihUELOP/98u/TSS22DDTZwSu23335rhC1pqVSpkm2zzTbuMhMnTnTXpNKQjKB4ks6ff/45meCRMLxDkyZNimz7lQsvvNAuv/xyW3/91NrTMv0+fP75544DDQykSSICuUaA98hXZqdNm2Z16tRJ+Rb++usv23vvvW3PPfe0e++9N+75VMr99X788UfbdNNN44bXQRFIhgB5im9wdEPvHXfcYV26dCnVspL00kBDmbeuja40LnXu3LkIgu23397uvPNO14ha5GAxOxo3bmw1atSwb775xqUtrOQXc4p2i0C5JCBtKMZjfeutt9xeKgHjxo3LCiWWD3r0Rz1G0rUrCwn83//9n1NgqRjSgopFFovf888/b926dbPNN9+8VFO9ySabRCqoKINYIUtL+vbt6y5F4fvMM884DhTIVE5SkUy/D2eeeaY1bdrUWrdunUoyFFYEsoIAlVgq/5RZvBvvvvuuHXHEESmnbc2aNe78ZMqaatWq2UsvvWR4K+26664pX0sniEA0gQ8//NBZ99lPI2+rVq0ML57evXsbDa7HHXdc9Ck5t33wwQfb/vvvbzQYjR071j766CM744wz7O2333YN2snckC9H77//frv55puTOUVhRKBcEpASG+Ox8mHZcsst7cgjj7QBAwbYDz/84Cq44aC0qr3zzjvOgnTAAQcY7pi01nXq1MmqVq0aCUrFAgsqlYOddtrJ9tlnn8gxrFkozLvvvrstXLjQuZluu+221rZt24i19ZVXXnEWIu+u9dRTT0WO0fJN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IkkhPr3vRbBoR5IEUvkuJYoymfc22XKMaylvJyJePo+nkidVViauOyaTS1RWqm6cTD4pL2GkxIaeJG6XX3zxhVMGcHXJZmF+UNwnGSHV97fN5vSWx7TlUn4pj/xz4Z5oI6RSgSvxkCFD7Ntvv3X9e+lbn4rofU+FVn6HzbXvkvJ2+c+vuZYny/8Tyb47VFmZfc8kF1IkJTYXnpLSKAIikHMEwt4SPvH0h6f/fSwLsg+jpQiIgAiIgAjkCwGVlfnypDN/n3k/sFPmkSpGERABETA3MBaty7gYMwoloywzcJZEBERABERABERgLQEGkVRZqdyQDgFZYtOhpnNEQAREQAREQAREQAREQAREQATKhEDezxNbJtR1UREQAREQAREQAREQAREQAREQgbQISIlNC5tOEgEREAEREAEREAEREAEREAERKAsCUmLLgrquKQIiIAIiIAIiIAIiIAIiIAIikBYBKbFpYdNJIiACIiACIiACIiACIiACIiACZUFASmxZUNc1RUAEREAEREAEREAEREAEREAE0iIgJTYtbDpJBERABERABERABERABERABESgLAhIiS0L6rqmCIiACIiACIiACIiACIiACIhAWgSkxKaFTSeJgAiIgAiIgAiIgAiIgAiIgAiUBQEpsWVBXdcUAREQAREQAREQAREQAREQARFIi4CU2LSw6SQREAEREAEREAEREAEREAEREIGyICAltiyo65oiIAIiIAIiIAIiIAIiIAIiIAJpEZASmxY2nSQCIiACIiACIiACIiACIiACIlAWBKTElgV1XVMEREAEREAEREAEREAEREAERCAtAlJi08Kmk0RABERABERABERABERABERABMqCgJTYsqCua4qACIiACIiACIiACIiACIiACKRFQEpsWth0kgiIgAiIgAiIgAiIgAiIgAiIQFkQkBJbFtR1TREQAREQAREQAREQAREQAREQgbQISIlNC5tOEgEREAEREAEREAEREAEREAERKAsCUmLLgrquKQIiIAIiIAIiIAIiIAIiIAIikBYBKbFpYdNJIiACIiACIiACIiACIiACIiACZUFASmxZUNc1RUAEREAEREAEREAEREAEREAE0iIgJTYtbDpJBERABERABERABERABERABESgLAhIiS0L6rqmCIiACIiACIiACIiACIiACIhAWgSkxKaFTSeJgAiIgAiIgAiIgAiIgAiIgAiUBQEpsWVBXdcUAREQAREQAREQAREQAREQARFIi4CU2LSw6SQREAEREAEREAEREAEREAEREIGyICAltiyo65oiIAIiIAIiIAIiIAIiIAIiIAJpEZASmxY2nSQCIiACIiACIiACIiACIiACsQl888039sUXX9iaNWuKBJg1a5Y7tmLFiiLHtCM5AlJik+OkUCIgAiIgAiIgAiIgAiIgAiKQFIFHH33UDj/8cBs/fnyh8EuWLLHDDjvMunXrVmi/NlIjICU2NV4KLQIiIAIiIAIiIAIiIAIiIAJxCZx//vnu+KBBg6ygoCASFuV2+fLldtVVV1mVKlUi+7WSGoH1Aqj/UU3tXIUWAREQAREQAREQAREQAREQARGIQeDmm2+2+++/3x566CFr166dU15btWplderUsQkTJlilSpUiZ02ePNk+/fRT536800472T777BM55le+/PJLmzp1qi1cuNBWrlxpNWvWdOFatGjhg+TNsmLe3KluVAREQAREQAREQAREQAREQARKicC5557rlNi7777bKbGPP/64U2T79u1bSIG9/PLL7ZlnnimUqi5dutgdd9zh9mFzvPbaa43zo2XAgAGWj0qsLLHROUHbIiACIiACIiACIiACIiACIpABAnfeeafhUoxFtkePHlavXj3XT7ZixbW2xDfeeMNOP/10w/p6xRVXGPv79etnH3/8sVNssdzOnDnTDjjgAKtWrZrdc8891rRpU2eF/euvv2zjjTe26tWrZyCluRWF+sTm1vNSakVABERABERABERABERABHKEwBlnnOGUz7POOivSF9YrsNwCbsVIr169bL/99rM2bdrYRRdd5PZNmzbNLTfccEO3pA/tP//8Y7Vr13YuyQ0bNsxLBRYYcid2WUJ/IiACIiACIiACIiACIiACIpBZAlhKGeQJ1+Dtt9/eDjnkkEIX+PHHH932DTfcENnPwE/IL7/84pabbbaZnXfeeTZ06FA755xz3L6WLVsainGnTp2sQoUKbl8+/UmJzaenrXsVAREQAREQAREQAREQAREoVQLt27d3SmyHDh1s/fULO8IyOBPSqFEjQ1kNC67EXnr27GmnnHKKvf3228YgUC+++KJdcsklzhJ74IEH+mB5s5QSmzePWjcqAiIgAiIgAiIgAiIgAiKQTQS22247p5DS3/Wmm26Km7QGDRrYCSec4H4HHXSQczseO3asSYmNi00HRUAEREAEREAEREAEREAEREAEMkXg5JNPtgcffNCee+45++ijjwyrLVPwzJs3z3r37m2VK1e27777zgYOHGgosfSL5RgDQiFbb711ppKSU/HIEptTj0uJFQEREAEREAEREAEREAERKC8EcCd+/vnnjTllX3vtNTenrL83puhp0qSJzZkzx1lr/X6WWG67d+9uDByVj6IpdvLxqeueRUAEREAEREAEREAEREAEsorA6tWr7bfffjOWWGOxwnr5888/bdGiRcacsSiwNWrUKNK/1ofNh6WU2Hx4yrpHERABERABERABERABERABESgnBAoPj1VObkq3IQIiIAIiIAIiIAIiIAIiIAIiUD4JSIktn89VdyUCIiACIiACIiACIiACIiAC5ZKAlNhy+Vh1UyIgAiIgAiIgAiIgAiKQOwRuueUW22OPPXInwUppmRLQ6MRlil8XFwEREAEREAEREAEREIH8JLBgwQIbPny4jRgxwlasWGEVKlTITxC665QJSIlNGZlOEAEREAEREAEREAEREAERSJfAhx9+aE8++aQ9/fTTVrFiRVu1apWL6vbbb083Sp2XZwQ0OnGePXDdrgiIgAiIgAiIgAiIgAiUBYE33njDKa5jxoyx+vXrW+fOnW3w4MG27bbb2rJly2zy5MllkSxdMwcJyBKbgw9NSRYBERABERABERABERCBXCEwZcoUe+SRR+zVV1+1Vq1a2c0332xHHXWUtWzZ0nbYYQf7/PPPTVbYXHma2ZFOWWKz4zkoFSIgAiIgAiIgAiIgAiJQrgiMHz/eBg4c6JTUI4880imu7dq1c/fYuHFj23PPPW2TTTax9957z6ZOnVqu7l03U7IENDpxyfJV7CIgAiIgAiIgAiIgAiKQVwRGjhxprVu3tjPPPNOOPfZYe+utt2zQoEHmFdiOHTvaXnvtZRdccIG99NJLdvHFF+cVn3g3u2TJErv77rvjBdGxgIDciZUNREAEREAEREAEREAEREAE1pnAxIkTrVevXrZmzRo7//zzrXv37kXixAKLAjtq1Cg7++yzbaONNnKKbpGAebpj+vTpNmDAAHf3PXr0yFMKiW9bSmxiRgohAiIgAiIgAiIgAiIgAiKQgMDHH3/sFNJLL700ZsiwAvvmm2/auHHj7LLLLrNq1arFDJ+POwsKCvLxtlO+ZymxKSPTCSIgAiIgAiIgAiIgAiIgAtEEilNeCRdWYNlGga1UqZIdc8wxbEqiCKy33npRe7QZJqA+sWEaWhcBERABERABERABERABEcgoARTYXXbZxbkQE/Eff/xhL774op100knWsGHDjF4r1yOTJTa5JyglNjlOCiUCIiACIiACIiACIiACIpAigW222ca22morGz16dORMrLDLly9XX9gIkaIrssQWZRLeIyU2TEPrIiACIiACIiACIiACIiACGSGA9bVmzZo2YcKEQvGh0J544olujthCB7RhssQmlwmkxCbHSaFEQAREQAREQAREQAREQASSJNCmTRtbsWKFffjhh4XOmDFjhk2ZMsUpsYUOaKMQAVliC+EosqGBnYog0Q4REAEREAEREAEREAEREIF0CRx44IE2b948mz17dpEonn32WevataussEXIrN0hS2wxYKJ2yxIbBUSbIiACIiACIiACIiACIiAC6RE48sgj7dtvv7Wvv/46ZgSPP/64HX300TGPaed/BGSJ/Y9FrDUpsbGoaJ8IiIAIiIAIiIAIiIAIiEBKBI4//nj75JNPbNq0aValSpUi5/7yyy92yCGH2F577VXkmHasJeAtsX4pLrEJSImNzUV7RUAEREAEREAEREAEREAEkiSAAvvee+/ZpEmTrE6dOjHP2nTTTW3AgAExj2lnYQKyxBbmEb0lJTaaiLZFQAREQAREQAREQAREQASSJuAV2DFjxlijRo2SPk8BixKQBbYok1h7pMTGoqJ9IiACIiACIiACIiACIiACCQl4BZYBm5o3b54wvAIkR0CW2PicpMTG56OjIiACIiACIiACIiACIiACMQh4Bfbhhx+23XffPUYI7UqVgCyxyRHTFDvJcVIoERABERABERABERABERCBfwkwwjADOA0aNMgOOOCAUuWyevVqW3/99S1srVyzZo3bDu8r1URl+GLl5T4yjCUSnSyxERRaEQEREAEREAEREAEREIHyS2D69Ol2991325IlS9bpJtu1a+cU2D59+hhT6pS2nHvuuXbJJZdELrt06VJr2bKlvfTSS5F9uboiS2xyT05KbHKcFEoEREAEREAEREAEREAEcpIASuvZZ55pHTp0cKMD792mjaHQpiO77rqrff/993bllVdat27d0olinc/p0aOHvfDCCzZz5kwX18iRI61evXp22GGHReJesWKFrVq1KrLtV1ASUXqZ7uevv/7yu7NuKUts/EciJTY+Hx0VAREQAREQAREQAREQgZwlMG7cONtn771tdaC4XXPaada6RXNbEqx37dIlZUV2yy23tN9//91OP/10u/DCC8uMSYsWLaxjx442dOhQW758ud1zzz129dVXW8WKFd32LbfcYijbrVu3tmHDhkXS+c4777g5arHatmrVyvYOuGSrSImN/2TUJzY+Hx0VAREQAREQAREQAREQgZwjgPX18ksvdXO3Xhsor50PaOvuoXvHw+25Nyda3+HD7azAOjtm7FirUaNGwvtr3LixC4P78A033JAwfEkHuDS4t/bt21vlypWtadOmdvDBB7tLTpgwwV588UV7/PHHbdGiRXbqqada586drW7dutavXz8XdtSoUVarVq2YltqSTnei+OVOnIjQ2uOyxCbHSaFEQAREQAREQAREQAREICcIoMB2OfZYW7hggb1wZ/+IAusTj0L75n1DbdsG9a3DoYcmtMh6BRbLJQM5ZYM0a9bMjjvuOHv00UedazMDPSHjx4830vvZZ5/ZnDlzrFq1ajZp0iR3rE3gRj158mTDUouiu8EGG7j92fgnS2z8pyIlNj4fHRUBERABERCBvCewusBs7uLV9v7MpXbnyzPt1IFTrc9zM23Qq9/b9Y9Pt+9/Wp73jARABLKFAAps10C5W7Nypd179VXWYJNNYiatRqDc3Ru44LbaZmvnWozbcSzxCuwhhxzirJuxwpTVviOOOMJdum3btpEkLF682ObPn29z5851v5NPPtm22GILdxyX46eeesq22WYb52aMEpxtIktsck9E7sTJcVIoERABERABEcgrAstWrLYRE2fbrJ+X29dzl9pPv64dAKVy5Yq2cc2q9voHc23Fin8ck9c+WGC7Na9r3Q9oZK23rpVXnHSzIpBNBLwCuyjot4oFFkU1kdwW9G3ted99dvbZZ1v//v2dddOfc/7557vVrl27Oldcvz9blhUqVHCW1nB69tlnH5s4caLtvPPOrt8rAzw1aNDABWEgqCZNmjilFmVx8ODBbpCnjTbaKBxFVqzLEhv/MUiJjc9HR0VABERABEQg7wiM/fgne2DcLPvxXwtrlSqVrOX2m9t2TerY1o3rRHgsW/63/bFkhX3x3c/26dc/2UXTf7P2rTZ3x6/pvI1tVFXVjAgsrYhACRNAgT0+GKwJF9qRfW5KSoH1SbotmLKm4eab2xVXXOF2YaF877337I8//jDmg6UvaTZKLEWve/fuLqm4Pc+YMcOtcy/169d3CjoDU3np2bOnZZsCK0usfzrxl+sFoAInIYkIiIAIiIAIiIAImD3z3jy748mvHIomjWrbtk3q2nZb1rUNA0U2nvy28C/75OsF9kWgzCKb1q5qN52wnW3XMPssHPHuQ8dEIBcJOAtsYC39cfZse/Sm3rZ9YG1MR0ZPm2Z97xlsTz75pDVv3tymTJlie+65ZzpRZcU5DOzEwE9Vq1Z16WHKHdyNGcW4evXqhiU32+SNN95woz9fd911dtZZZ2Vb8rImPWoizZpHoYSIgAiIgAiIQNkSGDFxjg0Z/a01DaytuwaW120Cy2uyUrdWVTtwzy1tj5Zr3fbGTf7ezh08za4/cXtrv+OmyUajcOtIACscU44gVN6ZEiXfZGXQF9TPH8q9Y4GrWbNmucUQUWCDZ78uCiyAjgqmpVnvsssM9+H7778/pxVY7mfjjTdmERGU1zp1kv+uRU4sxRXZF5ODrYGdkuOkUCIgAiIgAiJQrgncN26mU2B3DpTQ4zu0TEmBDYPZqHpl43fswc2tYf1adufo78KHtV7CBLDeHBqMNsuPPo6x5NNPP7VXX3011qFysW92YI30DFi+9tpr5eK+Yt2EV2ALVq+2R3vfmLYFNhz3kbvuYpdccIGzAk6fPj18SOsikDUEpMRmzaNQQkRABESgfBFQa3LuPM+v5y2zh8b8YNtstal12KdZxhKOIlt74+p26cO5WRHGre/coK8grpXffvttxriUdES9evUyFLnXX3895qWYbuTBBx+MeSwbd/bp0yelUXEZeZb757d50M+zvEpEgQ16Bj564w0ZUWAdq3/+sVP23ccObNfOWWQZ5VdSegRUdibHWkpscpwUSgREQASykgD9e77//ns3L97HH3/sRlnMhoTefffd1qJFC3v77bezITlZl4YbbrjBmG9xwIABbvCUsk7gsPGzrVHDWnZQ4A6cadl7l0Y2+ZMFdverP2Q66hKPj/5ya9assZtvvtkOPPBAO/74492clAx2k4uCmzHfjFjy119/uXuNdezvv/82jnuhkr06sPx5Yd1XvP36smXL3GG/9GFZendnvy8c39KlS/1utyS+r7/+2k2Vwjq/sHAu5/zyyy+F0hgOUx7XIwpskD9H9u1rG2V4vtOC4HnfdvZZdtB++9lZZ55pXE9SugRiDVpVuinI7qtJic3u56PUiYAIiECxBJiwvXXr1tYuaC0/M6hkHHXUUdayZUs3B16xJ63DgaFDh9quQX8plOVE8u6777qK6hdffJEoaF4e7927t10W9Dv74IMPnGJ00EEHGYp/WVj7Pp65yN755CdrvtUmVmOjyhl/HptvUt123aGhvfbRAvtn9ZqMx1+SETL35LBhwwyL7O233+4UQNx1UWivv/56mzp1aklePqNxX3PNNW6gnq222qpQulEysXRut9121r59e3v66acj112wYIH973//c1OVcPyMM85wiuLIkSMdAx8QTqNGjXKbO+ywg+0XKD40YjE/J8tXXnnFHfvhhx/s4osvduk4/PDD3TQoHHjppZdcfPTD5BvGEsUUt2f69GI5HjJkiFtn+6kqJ88AAEAASURBVPPPP3fxvfPOO7bXXnu5c1q1auUahtyBcv6HZZRRiKuvZzbi2musekHJvFcosrec1t223ayem3dWimzpZCzfIFQ6V8vdq0iJzd1np5SLgAjkMYEPP/zQTjjhBGOqAObxe+ihhwzrHsL8eCVRCFKp5HpYZRLJwIED3fx7fqqDROHz8fgxxxxjTzzxhD3yyCO2xx57OJdVlCOep6/0lwaXFz76xerUrmYtty65wZf22rGhLV32t42YtKA0binj19h0001dY8MzzzxjNOYw/+SIESOsc+fOrt/puHHjMn7NTEY4f/58545777332tixYyPTjnANFHTyIUoo06owxYq3npI3aSxjOXr0aPsncDP99ddfE35f4LLLLrs45XL33Xe3acGItwguzHxHuCZ9VbFwI3yvGIjpkEMOcelDSeU7hgKMIktjHQ11rPPbfvvt3XlM+9K0aVN766237LPPPnMeKe5AOf7zFtiFwbd4yNVXpzSNTrpYmEd22wb1rWugOEuRTZdi6ufJEhufmUYnjs9HR0VABEQg6whQ4esbuI8h//d//+cqgz6RBxxwgJvE3Rd+hKWCh0WUkUqpUFK59PLzzz+74+xfuHChm05h2223NSwrjOKIfPTRR66C6a2q48ePd33NfBxUfLnen3/+aS+//LLf7ZZUeBs3bhzZl8z1fDxMTo/LLYIrI9YaRhllIvuwUMmmYovb5047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SgREQAREQAREQAREQARylkCXwDWV37oIo2Fj3fYW62xTZOknff3117u+0v4+w9M+0Zf79ttvN6Z9YpqnbBZZYuM/HSmx8fnoqAiIgAiIgAiIgAiIgAiIwL8EGOwJi+yFF15oDRo0cNM8ZQscXMdxfR4xYkShJPmRir2VM5sVxFxIYyG4ZbQhJbaMwOuyIiACIiACIiACIiACIpCLBDp16uQssoxeTd/iww8/PGtuA7dnLLK+HzcjWPfs2dNNt/Tpp5+6dK7LtE9Zc6N5nhBNsZPnGUC3LwIiIAIiIAIiIAIiIAKpEmAqpwcffNANlJQN88j6gbp23nlnYwomL/GmffJhsmkpS2xyT0NT7CTHSaFEQAREQAREQAREQAREQASiCDA9EtMk3XXXXXbMMcdEHf1vc+7cuZbqYFL/nb3ua6lM+7TuV0s/hueff971Oe7Xr59zjU4/pvJ9piyx5fv56u5EQAREQAREQAREQAREoMQItG3b1h5//HG77LLL3DQ2xV2IeU+ffvrp4g6X+H6mfcrmvrAegCyxnkT8pZTY+Hx0VAREQAREQAREQAREQAREIA6Bvffe201t06dPHzcna6yg9Ju9++67bcGCBbEOa9+/BLwSKyDxCUiJjc9HR0VABERABERABERABERABBIQ2GeffWzYsGFOUR0wYECR0Cixm266aVxrbZGTtEMEiiEgJbYYMNotAiIgAutKoG/fvusahc4XAREQAREQgZwhcMghhzglFotrLEWWPrMPPPCAffLJJzlzT6WdUFlikyMuJTY5TgolAiIgAkkRWLx4sRutccstt7TRo0cndY4CiYAIiIAIiEB5IcA8sjTiosgOHjy40G116dLFmjZtag8//HCh/dooSiAX+u8WTXXp7dE8saXHWlcSAREoxwRoVX7ppZfsoYcestWrV7s7veiii8rxHevWREAEREAERCA2gZNPPtn+/PNPp8xWqlTJmE8WYXAlrLH9+/c3lN39998/dgR5vFeW2OQevpTY5DgplAiIgAjEJPDGG2+4URlff/11N+F748aN7Z9//jEssd26dYt5jnaWDwJ//fWXrVmzxj33eHf0448/2ptvvumCML1Eu3btIsE//PBDmzFjhttu1apVobkNI4GyfGXq1Kn27bff2vHHH19iKY3HsMQuGhUx03OMGjXK7a1QoYKddNJJUSG0KQIiECZw9tln2/Lly41RiVFkTz/9dHf4xBNPdH1nscZKiQ0TK7wuS2xhHtFbcieOJqJtERABEUiCwEcffWRnnHGGK5TnzZtnl156qe2+++62/vrr22+//WbnnXdeErEoSC4SmDlzprMkbLfddta8eXM74ogjjDxQnCxbtsymT5/urPReCfJhf/nlF3fstttusw8++MDvLvUlLf9YR9Lpp8aUGTfddJNT6Esq4fEYJromo6Uy/ce6Ch4WPMcxY8bYtddeu67R6XwRyAsClI09evSw3r1724gRI9w916lTx31vJkyYYC+++GJecEjlJmWJTY6WlNjkOCmUCIiACDgCc+bMcQoqFf7KlSvbE088YWPHjnWV//fff986depk++23n+21114iVg4JYI3DioC1Hdfxt956y1q0aGFVqlRxbuQoWxwLy/bbb28oqWELrD/OaJ0cq1+/vt9VZInFF2WXuBNVbrAMo2yxRLCCRMuKFSts1apVkd3EyTk0zCxatMite5f4ePH582688UZ79913XQNOJNLQSnQawukjmI+HdY6lypDzihPi+/rrr23u3LmF7iscPjp9/hiMVq5c6TetatWq7ll17949sk8rIiACawnMnz/fzj//fFcm/vHHH4WweEX2+uuvd9PwcPDUU091YR555JFCYbXxHwFZYv9jEWtNSmwsKtonAiIgAlEE3n77bVdA77vvvs4tihbke++919q0aeMKY5QMWpQpkLt27Rp1tjbLCwHyAXMc3nzzzU4pbdKkid16662GZeHjjz92Cm2zZs0MNzostusiVAqx8mLxxdUYZXn27Nlxo7z66qudKzuWURpasBRfccUV7hzv1rfrrrta69atnTsfBxgpdKuttnJhqFjiCs8PiRffa6+95sJtu+22Lp3uhNDfDz/8YBdffLFLA8r6xIkT3VHYXHLJJZGQDPzCHJNIJhl++umnLn2TJk2yIUOGRO7r888/d9fi+VDphtEJJ5zglHh3IPgbPny4MV3ILrvsYv369TMaLyQiIALFE6Ah7oADDrAnn3zSLXnHGdzQN+p5RRYvhkcffdQN7nTkkUe69w5vDokIpEpASmyqxBReBEQgrwhQCKNInHLKKU5RYfCmQYMGRSr97KdyjlWOghgFpn379nnFKJ9uFiWyWrVq1rJlyyK3veOOO9qUKVNcxQ0LII0c6yIjR4607777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+WnFmtyuuXa7/KfVZvRrsw1eyfeft7NptkX5BXTCdfjkk08uMwGbKyu1r7wEeHv6xNChZtw70w0uv/kq69rQ+ghY3Ij69OljuI6KCIiACIiACIiACGCwSZKA9Ss9JWLj/zYlYuP5ZKxtUndj88iFbUynvRuYrxYtNyNfmW3ezTHY09z5S82YCbPNtvU3NvedvZOpt2n5+eFnnLAaiEApE9jRrk254/rrzLMTJ+VFyK5lg231vutuJ2AvueSSVJCuUp6GuhcBERABERABERCBYhPwYrbYHVTyE+VOnIcbvM7aa5k+x29vGm2+kfn3819Yd8V55gObfmfn7RuYXVumd9tc/duf5sN5i82sT78zS22+2eM7NDSXH7kmHUoehqQuRKBCE+h04knmtv8uN71uv93MWfClefyGfqbm35Gfc53YNQ8/4gQsicsbNWqU6+lqLwIiIAIiIAIiIAJlRsCLV1li45FLxMbzyan2Hwc0NttsUd28+ckPZursH5yYJZfsJjU3MtU2Wt+sv946ZqVNy/PzL785q21ta3E9YJe65qAdW5hdmm6a07XUWAQqO4FuNoLy3AULzBDrAkz6neII2fteedUJWNIUkQ6JNEzkyw2mJ6rsHDU/ERABERABERABEahsBCRi83xH92u5ueHHHGPMhwt+MpM+Xmo+XrjCbGQdtzdeZ11Tr846pnrDmqZVx63Mga0VgTfP+NVdJSPQb8AA87NNHTTK5uvNVciOnjHD3GPD6pPb+M4773Rkli5d6vL58kFCtpL9sWg6IiACIiACIlAJCMgSm91NlIjNjlOxWu3UZBPDj4oIiEDxCRCxeK111zWExc9WyN7y+ONmyHNjzAArgo877rjUxRGuDWyQpyuvvNIdk5BNodGOCIiACIiACIiACFQYAgrsVGFulQYqAlWXAJbUBx54wHy7bJnN83qfWfHLL5EwiGr8mo1u/PLLLxcSsP6EE044wQwePNhZZO+++25/WFsREAEREAEREAERKHcCssRmdwskYrPjpFYiIALlTOCQQw4xU996y3zz0wrTo2+/tELWCdgZM81T1mobl0aHHMiDrNgdOHCgS2xezlPT5UVABERABERABERABHIgIBGbAyw1FQERKF8CNWvWNE/ZQE8FG2xgjrqyl5n75ZepASFgScvz0MMPG3IdZypdunRxa2WTIGT/97//Gf/mlXH/9ddfmYavehEQAREQAREQgUpIwD8PKDpx/M2ViI3no1oREIGEEXBC9qmnTM1atcxRl19helv34lP79HECljWwe+65Z9YjJuhT//79y9Ui+/7775umTZs6d2kGPnXqVLObzZWrIgIiIAIiIAIiIAIikJ6ARGx6LjoqAiKQYAJeyJ5++ulm+qfzzFobbGhGjhyZdg1spmmcfPLJpo8VweVtkX300UcNFtl05ddff5V1Nh0YHRMBERABERCBSkpAltj4G6voxPF8VCsCIpBQAghZxCc/JS2I4d9++83ceuut5vfffze9evUqaZc5n7/RRhuZKVOmmPXWWy917sqVK92a3YceeshZa3v27FksoZ7qUDsiIAIiIAIiIAKJJuDdiRM9yAQMTpbYBNwEDUEERKD8CZx33nnmkksucZGL+/btW+YD+sc//mGGDx9e6LoTJkwwTzzxhHnyySedeL3iiisMwlZFBERABERABESgchOQJTb+/krExvNRrQiIQBUiQN5YhCyuvWVtjT3yyCPNuHHjzKJFi1LEEbEdO3Y0e+21lznjjDPc8WnTpqXqtSMCIiACIiACIlC5CMgSm939lDtxdpzUSgREoIoQQMhSWCPLWtR77rmnTGa+ySabGHLYDh06tND1fKRi/5+a3swWwqMPIiACIiACIlApCej/+/jbKktsPB/VioAIVEEC3iI7ZswYc/bZZ8cSuPvuu2Prc6k86aScIvGmAABAAElEQVSTzOzZs1OnHHTQQWb8+PFm8uTJ5sEHH3TH995771S9dkRABERABERABCoXAf/SunLNKv+zkYjNP1P1KAIiUAkIeCH76quvmlNPPTVyRu+884657bbbIuuzqahWrZprtvPOO5vtt98+dcqBBx5oTjnlFHPuueeaZ5991lmHfdtUI+2IgAiIgAiIgAhUOgKyxMbf0rWs2i+Ib6JaERABEai6BLC04lrMulQCLIXLK6+8Yi688EIzevRo06pVq3B1Xj4TMZmoxfoPLS841YkIiIAIiIAIJJaAf+7gmYNnD5X0BMrdEktexKjciOmHnPnon3/+ae6//37z1VdfpW2Mbmfd2bfffpu2XgdFQAREwBPAIktU4Lfeest069bNH05tDz30UNO8eXODmC2tsv7660vAlhZc9SsCIiACIiACCSSgF9fxN6VcRewXX3zhch82bdrUtGnTxvCwuGTJkvgRZ1H7/fffu3yPrCNLVwiUct1115n58+enqy7xMUTyscceaz744IMS95WkDm688UYzYsSIJA1JYxGBMiGApbV3796RQrZLly4usnCZDEYXEQEREAEREAERqLQEvJOsRGz8LS5XEeuH9txzzxlyNGLpIFeij8ZJ/erVqw2W1XQFFzuihwYLVt369eubGTNmGIKkBAv9Ll++PHio0P4vv/xS6LP/8Mcff5hly5aZH3/8MaPVmD88xjBz5sxU+7Clmfn89ttvvvust+HxMZ8gK/bD18qFnx+7HxB9+X9I7H/66acu/Qf74etwTnh8vh9tRaAyEOA76pprrkkrZEmPw3fExIkTK8NUNQcREAEREAEREAERSDSBRIjYbbfd1px11llu3RmROd977z0niPr37+8stLvvvrt54IEHUiC/++47c/311xuCoLRo0cLlT/Ri9pBDDnHW3bZt25qxY8emzvn444/Nbrvt5s7BqhIsCxYsMBdddJFp2bKl6dy5s5k0aVKq+tprrzXbbLON2XXXXc1OO+3kgqukKtPsPPTQQ6ZZs2aupkePHilLs2/6yCOPmH333dfssssu5vbbbzcI8UwlanzDhw83TZo0cW7Rq1atMu3atTM333yz6w5BmSu/YcOGGaKh+tK+fXu3BvDDDz9085gyZYq57777UnOaNWuWaxo1Pt+PtiJQWQgQqbhv375FhOwWW2xhjj/+eDNkyJDKMlXNQwREQAREQAREoBwIeAOSLLHx8BMhYv0QEXaUhQsXmtdff908//zzzn31rrvucuIMSwflscceM9OmTXNbrLhYSpcuXerqRo0aZd5//30TjuCJQGPd2htvvOG2rvHfvx5++GHz888/mwkTJhjWt910002uBpH2+OOPm3//+9/Osop78OGHHx48tch+9+7dU27ErMtFAH700UeuHWtw+/XrZy655BIzePBgJwinT59epI/wgajxEbUUoXn55Zc7wbrBBhuYK6+80p1eHH7+H034+jvssIObBy8TzjzzTLfPvHwU1ajxhfvRZxGoDATwFuE7As+RE088MTUlRCz/nt9+++3UMe2IgAiIgAiIgAiIgAjkn0CiROw666zjxCfutq+99prZeuutnQAkQBOiFEsgLrNPPfWUQSxibUX4EqSpUaNGjs4mm2xiateuXYQUaTK6du1qGjdu7M71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h7PEYjVlbVe1atXczE8++WRnRSV3Iu3iyt57722mTZtm+vfv79JOsPaMwoMfQnbTTTdNe/p2221natWqZXAzrlOnTiFBeNRRRxksuARMosyYMSNtH/4g7bAkE/jpnXfecYf33HNPX512O2nSJBccCkH/7rvvGsTwhAkTUm2xCGNh7tSpkzuG2+DChQsN4vfUU0916Te6deuWaq8dERCBZBLge4x/u+l+/Es8litQ7z1JmAkeHRw77LDDUhPr3r27wZuF7yRetp155plmzpw5pm/fvqk22hEBERABERABERCBJBOIjgCS5FFnMTYEJAWX3kylV69epkOHDs4y+cADD5jhw4ebV155JdNpsfWI22DxgZO8ZQQxHiz77ruvqV+/vnnxxRfNvHnzzJFHHmk23HDDYJMi+6xpRbwTnIl+iTIanK8fg7fC0IFfe+uDuUQJ9CIX0wEREIFKQ2CdddZxL738hPzLP/9ZWxEQAREQAREQgfIhIEtsdtwrnIhFrGFVGDFihBNsjzzyiHPlJf0EbrgrVqxwM2cdLA9mmYQgjbFKEPCkYcOGLiDToEGDXNAjhB59Ll++3PWJYCS6pxeH7mDELywnrFXFWkrZY4893JZzGSuuv1h5//zzT7P11lu79DZYj3HxwxqLm3CmgmsghTQaiF7GVr169djTWHuLWCZVB1YaXI5VREAEREAEREAEREAEREAEkkPAi9nkjChZI6lw7sTgw/0N4cea1FWrVrk1oRy/9dZbDQFLKG3atHG5Xd2HDL9wTUYQ4nqLgO3du7epUaOGee6551w/PhgKbrlBV72ghdNbWP2lyMuIcGW9LWvQatas6avM+eefb+677z6DGzPX86Vr165m7ty5zt2XoFGZys477+zWABNpdL/99nNz8O7E4fHQlx8vgVywNDPnkqYNyjRG1YuACIiACIiACIiACIiACGRHwItX/9ye3VlVr9VaFtSaOM4VcO6rV6/OytKaaWpYQ7Hckl8RSyaudiUprGW99NJLncjmDzBd3kbcixHgWFF9YRxEWyaacL9+/fzhrLZYjHFRRnxnU2hLCiDW/+Ji7N2LszlXbURABERABERABERABERABPJPgGWOTz75pPPmJPCsSnoCFc6dODiNbFyFg+2j9hGZuPjmu8QJQ+q8gF26dKm55557XIoejl1wwQU5DyXXNW1Yaj2/dFbbnAegE0RABERABERABERABERABPJCQJbYeIwVWsTGT638as844wyXtzXbEWAMR0iSA/Lwww9Pidtsz1c7ERABERABERABERABERCBik+gAjvJlil8idhSwE0O1lwKqXFydR/OpX+1FQEREAEREAEREAEREAERqDgEZImNv1cVMrBT/JRUKwIiIAIiIAIiIAIiIAIiIAIVj4AssdndM4nY7DiplQiIgAiIgAiIgAiIgAiIgAiUCQFZYuMxS8TG81GtCIiACIiACIiACIiACIiACIhAgghIxCboZmgoIiACIiACIiACIiACIiACIiBLbPzfgERsPB/VioAIiIAIiIAIiIAIiIAIiECZEPBrYiVi43FLxMbzUa0IiIAIiIAIiIAIiIAIiIAIiECCCEjEJuhmaCgiIAIiIAIiIAIiIAIiIAJVl4Assdnde4nY7DiplQiIgAiIgAiIgAiIgAiIgAiIQAIISMQm4CZoCCIgAiIgAiIgAiIgAiIgAiIgS2x2fwMSsdlxUisREAEREAEREAEREAEREAEREIEEEJCILeObsGjRItOzZ88yvqouJwIiIAIiIAIiIAIiIAIikHQC3hKb9HGW9/jWLe8BVLXrd+zY0axataqqTVvzFQEREAEREAEREAEREAEREIG8EJAlNi8Ys+vkxx9/NL/88kt2jdVKBERABERABERABERABESgShHwlljliY2/7RKx8XzyWvv666+bDTfc0PDHOXbs2Lz2rc5EQAREQAREQAREQAREQAREoCoQkIgtw7v8xBNPmC233NKsu+66ErFlyF2XEgEREAEREAEREAEREIGKQECW2OzukkRsdpxK3Oqzzz4z06dPN3Xq1DHrrbeeE7Hz588vcb/qQAREQAREQAREQAREQAREoHIQ8CK2csym9GYhEVt6bAv1/Pzzz5tddtnFidgNNtjAVKtWzUyYMKFQG32oegR++ukn515e2jN/9913zZNPPpn2Mn/++aeZNGmSufvuu83MmTPTtsnm4KhRo8ynn36aTVO1EQEREAEREAEREAERiCGgNbExcGyVRGw8n7zU/vbbb+bZZ581BxxwgHMlXmeddcwRRxwhEZsXuhWzk5deeskcdNBBpnXr1maHHXYww4cPL9WJPP300+aGG24wf/31V6Hr/PHHH2b33Xc3l112mfn222/NihUrCtWn+3DjjTeaESNGFKm64447zAcffFDkuA6IgAiIgAiIgAiIgAhkR0CW2Ow4ScRmx6lErV599VVDflhELK7ErIlFwLz11lvm448/LlHfOrniEcDyiaDs1KmTs3z27du3iLhcvXq1oV26kkuEa74I//e//xmuMXXqVLP22oX/yc+YMcP88MMP5s033zSIUP5G4wp9YW3l75l9fsKFlza///57+LCb46+//lrkeNQB+oYB5/htsC2CPKo/ji9ZssSsXLmykKUbHj///LOrC55LuyjeXGf58uXu0unmm8v9CI5f+yIgAiIgAiIgAiIQJuAtsH4brtfnNQQKP9GKSqkQQCDstddeplWrVilLLCK2efPmssaWCvFkd4rA++6778wWW2zh3MuPP/54c+qpp7pBI4j69+9v2rRp4yykDzzwQGoyCxYsMBdddJFp2bKl6dy5s3MBTlVG7IwbN840bdrU/a1h/Q8XXqTsvffeZuONNw5XFfn84Ycfur6mTJli7rvvPrdP37NmzUq1feWVV8x2221ndt55Z4N7sS9Dhw417dq1My1atDDXXHNNxlRTCGX63nfffc2uu+5qDj/8cHfu119/7bqM6g9rMvPkOm3btnVW7oULF7pzgv8Oqdtnn33cccQr1vBmzZqZM844w0yePNkP271k2m233dx8YL/jjju6lwE0KM79SHWsHREQAREQAREQARFIQ0CW2DRQ0hySiE0DJd+HeHj2Fi6ssLgTU7p06WLGjx+f78upv4QTQDBeeuml5qqrrjJnnXWWmTdvXmrEpGFi/TTuunfddZe5+eabzbJly1z9ww8/7KyIrKU+9NBDzU033ZQ6L2qHv7v333/fCcdgG/4mEWXPPfecs6yyz4+3OAbb+n2EHkIW9+MzzzzT7fN5++23902chfONN94wPXr0MAMHDnTHEezXXXedufbaaw1u1IhErp9N6devnxO855xzjms+Z84c9wIgqr9hw4aZzz//3F0H12bWAjds2NCde/vtt5smTZoYxvfRRx+Z1157zR3n3yNB1xD8vFi68sorUxZm+uMY5yByecng/3Mpzv3IZs5qIwIiIAIiIAIiIAKyxMb/DUjExvMpcS0P699884058MADXV+4E3sRi3WJh3L/MF3ii6mDCkPgkksucUL1xx9/NAcffLDBgknhb2Hrrbd2Iuurr75yAcCwfOLSigCsV6+emTZtmvsb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119/vcsL26JFC0OOVcRs06ZNnUD+8MMP3T6fH3nkEXfeuHHj3DECJx1xxBGpvthh7oSZ5zonnniiyzPLcXIqH3TQQYY8ubBgm42YJU9uuvEhXmHerFkzN2ZS6KiIgAiIgAiIgAiIgAgkl4BEbDncG4nYcoCewEuyBhoRWbduXTNy5Eg3wtatWxuiWj/33HPOYhmMhnv77bebJk2amDfeeMN89NFHJcorjCC+6KKL3HU+/fRTt89ncr/6N4DpkGGFJdXMww8/bO69914zZMgQ8/3337umjz32mJk2bZphy/j5O1+6dKkbK30jOBGy/JxyyinuHCyZCPdrrrmmyOUefPBBs3jxYidaYXXLLbe4NowPgXvIIYeYV155xfACYNKkSUXODx+IGh/rXadPn24Q1IjpK6+8spAlOtyPPouACIiACIiACIhAaRHwz2GyxMYTloiN51MqtRKxpYK1wnWKBZHItfvuu6+ZO3euGz+Wy5kzZzoRSP5R1or6gsUUkdi/f3/z/PPPm0x5Zv156bZbbLGFuy45TxGIjIGfYI7UdOdxDMssFuFOnTq5JqSGQtwSQIqcx23btjW77LKLGTp0qGnUqJGLzItr7nrrredyuJLH1V+HY1y/evXqhS7nxTIBkRD2PXr0cFyItOwL18Ktd8cdd3RBofzxdNu48eHejJAfM2aMcyvGYuvvR7q+dEwEREAEREAEREAERKB8CSg6cTnwl4gtB+gJvKSPTBx804arLms2SeuCuAqWXr16mQ4dOpgpU6aYBx54wAwfPtxZIoNtst3HXZmfefPmOUF5/PHHpz2VMQSFI41q1arl2gbHzQFEdXj9qmtofyHIV69e7T+WeFutWrVUmiD6zqZEjW/06NHmzjvvdALczy34bzQ8z+C1qAvfp2C99kVABERABERABESgOATinj+K019lOye7p7/KNutynk84gEw5D0eXTwgBrIW42h577LFunacfFkGRKLjQNm7c2Jx00klu/SjWwmzWgvp+st0ibrkWQZ+eeeYZJ0yXLVtWJPBRsD+EJOPGZRd3Y9rThy+77rqrs27i9ouLsRfGBFRin3kgHNnnGP0ddthhZsSIEYb0O6yhJfXPZptt5rvMaRs3PsaEZfn0009P9Y811v87JdowhcBTX331VWrsHMP9GHfoBQsWOGtuUPxSryICIiACIiACIiACuRDw7sS5nFMV20rElsNd14NuOUCvAJdEaLEe86abbjIERvIutj7fMK61pMPh86BBg0zv3r1NjRo1SjwzrhssXIPASV27dnWWXtayDhgwwK09DbflPP+mEPfezp07m0svvdQgWrEar1q1ynXdpk0b1x+BmhCjPm/t1VdfbajDRRrhyD7HKGeeeabB3fmYY45x/Vx77bXuuL+e+/D3L38MwR/+YZ0vJWp8HGdtMoKUNba4Qp933nluvpzHiwOCTvHygDy6rEn2hc+4TLdv39507NjRfPPNN75KWxEQAREQAREQAREoNgH/bFPsDir5iWtZtV9QyeeYqOndfffd5qGHHnLpRhI1MA0mMQSwAGKVxf2VNbJsCT7EcXLMrrvuuk7gciybcv/996dEI+2xbAZzxUb1wbVZy/rbb7+563PdbIofZ82aNd062OA51JGLlrps+8MNecMNNwx2k3YfZgS+ChfEPyLcl6jxIbg33njjyPniKs1/KLQJF+4LrLhXrK9F0PrCtRmDigiIgAiIgAiIgAhkIsBL/Ndee83Mnj07L8aKTNerqPXZPZVW1NklcNw8aPMQrSICUQSC4g5h5AvHi+NOSwApLKu+EFgpm+Kv7YMwZXMObeLGSR2BnHIp2QhY+sNKvHDhwoxdR43Pi9Oo+bION6r49c3UI6THjx+fakr0aRUREAEREAEREAERyIWALLHxtCRi4/nkvRYRK3fivGNVhzEEEI25CseY7lSVgQDW2G233TZDK1WLgAiIgAiIgAiIQFECcpItyiTdkcKL4dK10LG8EkDEEs1Uf6B5xarOREAEREAEREAEREAERKDSEJAlNv5WSsTG88l7LSKWImts3tGqQxEQAREQAREQAREQARGo0AS8octvK/RkSnHwErGlCDdd1z6npERsOjo6JgIiIAIiIAIiIAIiIAIiIEts/N+ARGw8n7zX+rcqCu6Ud7TqUAREQAREQAREQAREQAQqNAGvFSRi42+jdnG0ygAACmJJREFURGw8n7zXyp0470jVoQiIgAiIgAiIgAiIgAiIQBUiIBFbxjdb7sRlDFyXEwEREAEREAEREAEREIEKQkCW2OxulERsdpzy1sr/YWpNbN6QqiMREAEREAEREAEREAEREIEqREAitoxvtncn1prYMgavy4mACIiACIiACIiACIhAwgl4g5fWxMbfKInYeD55r5U7cd6RqkMREAEREAEREAEREAEREIEqREAitoxvtrfEyp24jMHrciIgAiIgAiIgAiIgAiJQQQjIEht/oyRi4/nkvda7CEjE5h2tOhQBERABERABERABERABEagCBCRiy/gme3dirYktY/C6nAiIgAiIgAiIgAiIgAgknIA3eMkSG3+jJGLj+eS9Vu7EeUeqDkVABERABERABERABERABKoQAYnYMr7Z3hIrd+IyBq/LiYAIiIAIiIAIiIAIiEDCCcgSm90NkojNjlPeWvk/TInYvCFVRyIgAiIgAiIgAiIgAiJQKQh4rVApJlOKk5CILUW46br27sRaE5uOjo6JgAiIgAiIgAiIgAiIgAhoTWz834BEbDyfvNd6EStLbN7RqkMREAEREAEREAEREAERqNAEZInN7vZJxGbHKW+tJGLzhlIdiYAIiIAIiIAIiIAIiIAIVEECErFlfNO9iJU7cRmD1+VEQAREQAREQAREQAREIOEEZInN7gZJxGbHKW+tvIiVO3HekKojERABERABERABERABEahUBLQmNv52SsTG88l7rVLs5B2pOhQBERABERABERABERCBSkFAltjsbqNEbHac8tbK/2HKEps3pOpIBERABERABERABERABCoVAVli42+nRGw8n7zXendirYnNO1p1KAIiIAIiIAIiIAIiIAIVmoA3eEnExt9Gidh4PnmvxZ24ZcuWRpbYvKNVhyIgAiIgAiIgAiIgAiIgAlWAwLpVYI6JmuLSpUvNr7/+aiZNmmSmTZvmxubftOSy5S1NLu25ULr2+ejHA07Xf9R1w+eEP+faF+3zMZd89VPS+fjz2RaHhT+vIjHxY47bUkepbEzWzEq/RUAEREAEREAEqjqBn376ySHwzzpVnUfU/CVio8iU0vE+ffqYJ554wowdO7aUrqBuRUAEREAEREAEREAEREAEKiqBzp07V9Shl9m417KWmoIyu5ouJAIiIAIiIAIiUISA/6843dZ7iHBSuvpsjvsLFvd8f162/WQaU9ycMp3r6+P68OPNtM12PmXRT3A+fo65boN9ZBpzVH3SmOTKINw+H0xglY9+iss2OKfi9hG83/mYS3kxCbLwc6psTLp3724kYv1djd5KxEazUY0IiIAIiIAIiIAIiIAIiIAIiEDCCCiwU8JuiIYjAiIgAiIgAiIgAiIgAiIgAiIQTUAiNpqNakRABERABERABERABERABERABBJGQCI2YTdEwxEBERABERABERABERABERABEYgmIBEbzUY1IiACIiACIiACIiACIiACIiACCSMgEZuwG6LhiIAIiIAIiIAIiIAIiIAIiIAIRBOQiI1moxoREAEREAEREAEREAEREAEREIGEEZCITdgN0XBEQAREQAREQAREQAREQAREQASiCUjERrNRjQiIgAiIgAiIgAiIgAiIgAiIQMIISMQm7IZoOCIgAiIgAiIgAiIgAiIgAiIgAtEEJGKj2ahGBERABERABERABERABERABEQgYQQkYhN2QzQcERABERABERABERABERABERCBaAISsdFsVCMCIiACIiACIiACIiACIiACIpAwAhKxCbshGo4IiIAIiIAIiIAIiIAIiIAIiEA0AYnYaDaqEQEREAEREAEREAEREAEREAERSBgBidiE3RANRwREQAREQAREQAREQAREQAREIJqARGw0G9WIgAiIgAiIgAiIgAiIgAiIgAgkjIBEbMJuiIYjAiIgAiIgAiIgAiIgAiIgAiIQTUAiNpqNakRABERABERABERABERABERABBJGQCI2YTdEwxEBERABERABERABERABERABEYgmIBEbzUY1IiACIiACIiACIiACIiACIiACCSMgEZuwG6LhiIAIiIAIiIAIiIAIiIAIiIAIRBOQiI1moxoREAEREAEREAEREAEREAEREIGEEZCITdgN0XBEQAREQAREQAREQAREQAREQASiCUjERrNRjQiIgAiIgAiIgAiIgAiIgAiIQMIISMQm7IZoOCIgAiIgAiIgAiIgAiIgAiIgAtEEJGKj2ahGBERABERABERABERABERABEQgYQQkYhN2QzQcERABERABERABERABERABERCBaAISsdFsVCMCIiACIiACIiACIiACIiACIpAwAhKxCbshGo4IiIAIiIAIiIAIiIAIiIAIiEA0AYnYaDaqEQEREAEREAEREAEREAEREAERSBgBidiE3RANRwREQAREQAREQAREQAREQAREIJqARGw0G9WIgAiIgAiIgAiIgAiIgAiIgAgkjIBEbMJuiIYjAiIgAiIgAiIgAiIgAiIgAiIQTUAiNpqNakRABERABERABERABERABERABBJGQCI2YTdEwxEBERABERABERABERABERABEYgmIBEbzUY1IiACIiACIiACIiACIiACIiACCSMgEZuwG6LhiIAIiIAIiIAIiIAIiIAIiIAIRBOQiI1moxoREAEREAEREAEREAEREAEREIGEEZCITdgN0XBEQAREQAREQAREQAREQAREQASiCUjERrNRjQiIgAiIgAiIgAiIgAiIgAiIQMIISMQm7IZoOCIgAiIgAiIgAiIgAiIgAiIgAtEEJGKj2ahGBERABERABERABERABERABEQgYQQkYhN2QzQcERABERABERABERABERABERCBaAISsdFsVCMCIiACIiACIiACIiACIiACIpAwAhKxCbshGo4IiIAIiIAIiIAIiIAIiIAIiEA0AYnYaDaqEQEREAEREAEREAEREAEREAERSBgBidiE3RANRwREQAREQAREQAREQAREQAREIJqARGw0G9WIgAiIgAiIgAiIgAiIgAiIgAgkjIBEbMJuiIYjAiIgAiIgAiIgAiIgAiIgAiIQTUAiNpqNakRABERABERABERABERABERABBJGQCI2YTdEwxEBERABERABERABERABERABEYgmIBEbzUY1IiACIiACIiACIiACIiACIiACCSMgEZuwG6LhiIAIiIAIiIAIiIAIiIAIiIAIRBOQiI1moxoREAEREAEREAEREAEREAEREIGEEZCITdgN0XBEQAREQAREQAREQAREQAREQASiCUjERrNRjQiIgAiIgAiIgAiIgAiIgAiIQMIISMQm7IZoOCIgAiIgAiIgAiIgAiIgAiIgAtEEJGKj2ahGBERABERABERABERABERABEQgYQQkYhN2QzQcERABERABERABERABERABERCBaAISsdFsVCMCIiACIiACIiACIiACIiACIpAwAhKxCbshGo4IiIAIiIAIiIAIiIAIiIAIiEA0AYnYaDaqEQEREAEREAEREAEREAEREAERSBiB/wPpG/8ocYPdfAAAAABJRU5ErkJggg==" + } + }, + "cell_type": "markdown", + "id": "dc949d42-8a34-4231-bff0-b8198975e2ce", + "metadata": {}, + "source": [ + "## Nodes and Edges\n", + "\n", + "Each node will - \n", + "\n", + "1/ Either be a function or a runnable.\n", + "\n", + "2/ Modify the `state`.\n", + "\n", + "The edges choose which node to call next.\n", + "\n", + "We can lay out an agentic RAG graph like this:\n", + "\n", + "![Screenshot 2024-02-02 at 1.36.50 PM.png](attachment:f886806c-0aec-4c2a-8027-67339530cb60.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "278d1d83-dda6-4de4-bf8b-be9965c227fa", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain.output_parsers import PydanticOutputParser\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain.tools.render import format_tool_to_openai_function\n", + "from langchain_core.messages import BaseMessage, FunctionMessage\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_openai import ChatOpenAI\n", + "from langgraph.prebuilt import ToolInvocation\n", + "\n", + "### Edges\n", + "\n", + "\n", + "def should_retrieve(state):\n", + " \"\"\"\n", + " Decides whether the agent should retrieve more information or end the process.\n", + "\n", + " This function checks the last message in the state for a function call. If a function call is\n", + " present, the process continues to retrieve information. Otherwise, it ends the process.\n", + "\n", + " Args:\n", + " state (messages): The current state of the agent, including all messages.\n", + "\n", + " Returns:\n", + " str: A decision to either \"continue\" the retrieval process or \"end\" it.\n", + " \"\"\"\n", + " print(\"---DECIDE TO RETRIEVE---\")\n", + " messages = state[\"messages\"]\n", + " last_message = messages[-1]\n", + " # If there is no function call, then we finish\n", + " if \"function_call\" not in last_message.additional_kwargs:\n", + " print(\"---DECISION: DO NOT RETRIEVE / DONE---\")\n", + " return \"end\"\n", + " # Otherwise there is a function call, so we continue\n", + " else:\n", + " print(\"---DECISION: RETRIEVE---\")\n", + " return \"continue\"\n", + "\n", + "\n", + "def check_relevance(state):\n", + " \"\"\"\n", + " Determines whether the Agent should continue based on the relevance of retrieved documents.\n", + "\n", + " This function checks if the last message in the conversation is of type FunctionMessage, indicating\n", + " that document retrieval has been performed. It then evaluates the relevance of these documents to the user's\n", + " initial question using a predefined model and output parser. If the documents are relevant, the conversation\n", + " is considered complete. Otherwise, the retrieval process is continued.\n", + "\n", + " Args:\n", + " state messages: The current state of the conversation, including all messages.\n", + "\n", + " Returns:\n", + " str: A directive to either \"end\" the conversation if relevant documents are found, or \"continue\" the retrieval process.\n", + " \"\"\"\n", + "\n", + " print(\"---CHECK RELEVANCE---\")\n", + "\n", + " # Output\n", + " class FunctionOutput(BaseModel):\n", + " binary_score: str = Field(description=\"Relevance score 'yes' or 'no'\")\n", + "\n", + " # Create an instance of the PydanticOutputParser\n", + " parser = PydanticOutputParser(pydantic_object=FunctionOutput)\n", + "\n", + " # Get the format instructions from the output parser\n", + " format_instructions = parser.get_format_instructions()\n", + "\n", + " # Create a prompt template with format instructions and the query\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing relevance of retrieved docs to a user question. \\n \n", + " Here are the retrieved docs:\n", + " \\n ------- \\n\n", + " {context} \n", + " \\n ------- \\n\n", + " Here is the user question: {question}\n", + " If the docs contain keyword(s) in the user question, then score them as relevant. \\n\n", + " Give a binary score 'yes' or 'no' score to indicate whether the docs are relevant to the question. \\n \n", + " Output format instructions: \\n {format_instructions}\"\"\",\n", + " input_variables=[\"question\"],\n", + " partial_variables={\"format_instructions\": format_instructions},\n", + " )\n", + "\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\")\n", + "\n", + " chain = prompt | model | parser\n", + "\n", + " messages = state[\"messages\"]\n", + " last_message = messages[-1]\n", + " score = chain.invoke(\n", + " {\"question\": messages[0].content, \"context\": last_message.content}\n", + " )\n", + "\n", + " # If relevant\n", + " if score.binary_score == \"yes\":\n", + " print(\"---DECISION: DOCS RELEVANT---\")\n", + " return \"yes\"\n", + "\n", + " else:\n", + " print(\"---DECISION: DOCS NOT RELEVANT---\")\n", + " print(score.binary_score)\n", + " return \"no\"\n", + "\n", + "\n", + "### Nodes\n", + "\n", + "\n", + "# Define the function that calls the model\n", + "def call_model(state):\n", + " \"\"\"\n", + " Invokes the agent model to generate a response based on the current state.\n", + "\n", + " This function calls the agent model to generate a response to the current conversation state.\n", + " The response is added to the state's messages.\n", + "\n", + " Args:\n", + " state (messages): The current state of the agent, including all messages.\n", + "\n", + " Returns:\n", + " dict: The updated state with the new message added to the list of messages.\n", + " \"\"\"\n", + " print(\"---CALL AGENT---\")\n", + " messages = state[\"messages\"]\n", + " model = ChatOpenAI(temperature=0, streaming=True, model=\"gpt-4-0125-preview\")\n", + " functions = [format_tool_to_openai_function(t) for t in tools]\n", + " model = model.bind_functions(functions)\n", + " response = model.invoke(messages)\n", + " # We return a list, because this will get added to the existing list\n", + " return {\"messages\": [response]}\n", + "\n", + "\n", + "# Define the function to execute tools\n", + "def call_tool(state):\n", + " \"\"\"\n", + " Executes a tool based on the last message's function call.\n", + "\n", + " This function is responsible for executing a tool invocation based on the function call\n", + " specified in the last message. The result from the tool execution is added to the conversation\n", + " state as a new message.\n", + "\n", + " Args:\n", + " state (messages): The current state of the agent, including all messages.\n", + "\n", + " Returns:\n", + " dict: The updated state with the new function message added to the list of messages.\n", + " \"\"\"\n", + " print(\"---EXECUTE RETRIEVAL---\")\n", + " messages = state[\"messages\"]\n", + " # Based on the continue condition\n", + " # we know the last message involves a function call\n", + " last_message = messages[-1]\n", + " # We construct an ToolInvocation from the function_call\n", + " action = ToolInvocation(\n", + " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", + " )\n", + " # We call the tool_executor and get back a response\n", + " response = tool_executor.invoke(action)\n", + " # print(type(response))\n", + " # We use the response to create a FunctionMessage\n", + " function_message = FunctionMessage(content=str(response), name=action.tool)\n", + "\n", + " # We return a list, because this will get added to the existing list\n", + " return {\"messages\": [function_message]}" + ] + }, + { + "cell_type": "markdown", + "id": "955882ef-7467-48db-ae51-de441f2fc3a7", + "metadata": {}, + "source": [ + "## Graph\n", + "\n", + "* Start with an agent, `call_model`\n", + "* Agent make a decision to call a function\n", + "* If so, then `action` to call tool (retriever)\n", + "* Then call agent with the tool output added to messages (`state`)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "8718a37f-83c2-4f16-9850-e61e0f49c3d4", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import END, StateGraph\n", + "\n", + "# Define a new graph\n", + "workflow = StateGraph(AgentState)\n", + "\n", + "# Define the nodes we will cycle between\n", + "workflow.add_node(\"agent\", call_model) # agent\n", + "workflow.add_node(\"action\", call_tool) # retrieval" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "b2158218-b21f-491b-853c-876c1afe9ba6", + "metadata": {}, + "outputs": [], + "source": [ + "# Call agent node to decide to retrieve or not\n", + "workflow.set_entry_point(\"agent\")\n", + "\n", + "# Decide whether to retrieve\n", + "workflow.add_conditional_edges(\n", + " \"agent\",\n", + " # Assess agent decision\n", + " should_retrieve,\n", + " {\n", + " # Call tool node\n", + " \"continue\": \"action\",\n", + " \"end\": END,\n", + " },\n", + ")\n", + "\n", + "# Edges taken after the `action` node is called.\n", + "workflow.add_conditional_edges(\n", + " \"action\",\n", + " # Assess agent decision\n", + " check_relevance,\n", + " {\n", + " # Call agent node\n", + " \"yes\": \"agent\",\n", + " \"no\": END, # placeholder\n", + " },\n", + ")\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7649f05a-cb67-490d-b24a-74d41895139a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---CALL AGENT---\n", + "\"Output from node 'agent':\"\n", + "'---'\n", + "{ 'messages': [ AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{\"query\":\"types of agent memory Lilian Weng\"}', 'name': 'retrieve_blog_posts'}})]}\n", + "'\\n---\\n'\n", + "---DECIDE TO RETRIEVE---\n", + "---DECISION: RETRIEVE---\n", + "---EXECUTE RETRIEVAL---\n", + "\"Output from node 'action':\"\n", + "'---'\n", + "{ 'messages': [ FunctionMessage(content='Citation#\\nCited as:\\n\\nWeng, Lilian. (Jun 2023). LLM-powered Autonomous Agents\". Lil’Log. https://lilianweng.github.io/posts/2023-06-23-agent/.\\n\\nLLM Powered Autonomous Agents\\n \\nDate: June 23, 2023 | Estimated Reading Time: 31 min | Author: Lilian Weng\\n\\n\\n \\n\\n\\nTable of Contents\\n\\n\\n\\nAgent System Overview\\n\\nComponent One: Planning\\n\\nTask Decomposition\\n\\nSelf-Reflection\\n\\n\\nComponent Two: Memory\\n\\nTypes of Memory\\n\\nMaximum Inner Product Search (MIPS)\\n\\nThe design of generative agents combines LLM with memory, planning and reflection mechanisms to enable agents to behave conditioned on past experience, as well as to interact with other agents.\\n\\nWeng, Lilian. (Mar 2023). Prompt Engineering. Lil’Log. https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/.', name='retrieve_blog_posts')]}\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---DECISION: DOCS RELEVANT---\n", + "---CALL AGENT---\n", + "\"Output from node 'agent':\"\n", + "'---'\n", + "{ 'messages': [ AIMessage(content='Lilian Weng\\'s blog post titled \"LLM-powered Autonomous Agents\" discusses the concept of agent memory but does not provide a detailed list of the types of agent memory directly in the provided excerpt. For more detailed information on the types of agent memory, it would be necessary to refer directly to the blog post itself. You can find the post [here](https://lilianweng.github.io/posts/2023-06-23-agent/).')]}\n", + "'\\n---\\n'\n", + "---DECIDE TO RETRIEVE---\n", + "---DECISION: DO NOT RETRIEVE / DONE---\n", + "\"Output from node '__end__':\"\n", + "'---'\n", + "{ 'messages': [ HumanMessage(content=\"What are the types of agent memory based on Lilian Weng's blog post?\"),\n", + " AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{\"query\":\"types of agent memory Lilian Weng\"}', 'name': 'retrieve_blog_posts'}}),\n", + " FunctionMessage(content='Citation#\\nCited as:\\n\\nWeng, Lilian. (Jun 2023). LLM-powered Autonomous Agents\". Lil’Log. https://lilianweng.github.io/posts/2023-06-23-agent/.\\n\\nLLM Powered Autonomous Agents\\n \\nDate: June 23, 2023 | Estimated Reading Time: 31 min | Author: Lilian Weng\\n\\n\\n \\n\\n\\nTable of Contents\\n\\n\\n\\nAgent System Overview\\n\\nComponent One: Planning\\n\\nTask Decomposition\\n\\nSelf-Reflection\\n\\n\\nComponent Two: Memory\\n\\nTypes of Memory\\n\\nMaximum Inner Product Search (MIPS)\\n\\nThe design of generative agents combines LLM with memory, planning and reflection mechanisms to enable agents to behave conditioned on past experience, as well as to interact with other agents.\\n\\nWeng, Lilian. (Mar 2023). Prompt Engineering. Lil’Log. https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/.', name='retrieve_blog_posts'),\n", + " AIMessage(content='Lilian Weng\\'s blog post titled \"LLM-powered Autonomous Agents\" discusses the concept of agent memory but does not provide a detailed list of the types of agent memory directly in the provided excerpt. For more detailed information on the types of agent memory, it would be necessary to refer directly to the blog post itself. You can find the post [here](https://lilianweng.github.io/posts/2023-06-23-agent/).')]}\n", + "'\\n---\\n'\n" + ] + } + ], + "source": [ + "import pprint\n", + "\n", + "from langchain_core.messages import HumanMessage\n", + "\n", + "inputs = {\n", + " \"messages\": [\n", + " HumanMessage(\n", + " content=\"What are the types of agent memory based on Lilian Weng's blog post?\"\n", + " )\n", + " ]\n", + "}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " pprint.pprint(f\"Output from node '{key}':\")\n", + " pprint.pprint(\"---\")\n", + " pprint.pprint(value, indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "93781e8c-dd25-4754-9c26-e5faac57e715", + "metadata": {}, + "source": [ + "Trace:\n", + "\n", + "https://smith.langchain.com/public/6f45c61b-69a0-4b35-bab9-679a8840a2d6/r" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "189333cc-5d34-4869-9f9b-741210e1096f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/rag/langgraph_crag.ipynb b/examples/rag/langgraph_crag.ipynb new file mode 100644 index 000000000..8dc7750c9 --- /dev/null +++ b/examples/rag/langgraph_crag.ipynb @@ -0,0 +1,528 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "459d0bcf-7c60-495e-91c3-85b0b8c67552", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph tavily-python" + ] + }, + { + "attachments": { + "5bfa38a2-78a1-4e99-80a2-d98c8a440ea2.png": { + "image/png": "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P15mzZqVN50l2GijjaRv3752mfV40kknydSpU7PGxyPWXXddOfbYY+PBGdennXaa/PXXXxnh2QLWXHNNOfnkk7NFp8PPOuus0I/TAXlOVllllZx9yG7/5z//KUOHDrXLvMdu3brJBRdckDfdhRdeKD///HPedJaAMTLXO2rpLr30Uvnhhx/sMu9xySWXlP/+979501111VXy1Vdf5U1nCRZddFG59dZb7TLrkbI/+uijrPHxiDZt2si9994bD864vummm+Ttt9/OCM8W0LRpU3n00UezRafD+V688sor6etCTp555pm8ye677z55+umn86aLJnjiiSekWbNm0aCM8//973/yyCOPZITnCnj44Yelbdu2uZIIZRfyHKKZ0MbFF188GpRx/txzz2XtN0njLxncddddsswyy2TkFQ3gmV177bXRoLzn9N8VV1wxZ7q33npLrrjiisQ02ep7/fXXy2qrrZZ4jwV+8MEHOb+dli56/Pe//y29e/eOBmWcf/7553LmmWdmhOcKuOyyy4TvRi7q16+f8M0ohhgnt9xyy5y3DBw4UJjLFUPMN/N96wcPHlzQ9zVa7umnny577bVXNCjjfNSoUbLbbrtlhOcKOPHEE+Xggw/OlSR8M7fddtucaeKRRx11lBx99NHx4ArXfOM32WSTCmH5Lg499FD5xz/+kTPZ3Llz8/bFeAb77bdfQd/kddZZp6g5z+677y58b/NRnz59ZNKkSfmSpeO33357ufrqq9PX2U622GKLouYmpL/xxhuzZZcOpz/Aa+SiAQMG5Ioub5wOgDVO2kK4l8Tfe++9l7d++vFOvDdbnoTrxyZvvq+99lrR+d59112pUSNH5vzpJKLofB966KG89f3yyy+LzlcnS3nzVea+6Hyvu+66vPkOGTKk6Hz1Q543X2WWi873/PPPz5vv5MmTi85XP0h589WBuOh8jzvuuLz5kqBFixZF5a0fjoLybdeuXVH57rPPPgXlu9RSSxWVr04iCspXmb6i8tUBvqB811hjjaLyVUFPQfmSLtf4FY/r1bNnQfluvvnmReULboXQjjvuWFS+nTt3LiTb1N57711Uvu3bty8oX/p5HMNc17xHhRDvZa58kuJUeJk3axXKFJ2vCuHy5nveeecVne+YMWPy5quCkKLz5XuQj/iuJGGYK4zvVz66/fbbi85XhS35sk09+OCD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" + } + }, + "cell_type": "markdown", + "id": "8889a307-fa3f-4d38-9127-d41e4686ae47", + "metadata": {}, + "source": [ + "# CRAG\n", + "\n", + "Corrective-RAG is a recent paper that introduces an interesting approach for active RAG. \n", + "\n", + "The framework grades retrieved documents relative to the question:\n", + "\n", + "1. Correct documents -\n", + "\n", + "* If at least one document exceeds the threshold for relevance, then it proceeds to generation\n", + "* Before generation, it performns knowledge refinement\n", + "* This paritions the document into \"knowledge strips\"\n", + "* It grades each strip, and filters our irrelevant ones \n", + "\n", + "2. Ambiguous or incorrect documents -\n", + "\n", + "* If all documents fall below the relevance threshold or if the grader is unsure, then the framework seeks an additional datasource\n", + "* It will use web search to supplement retrieval\n", + "* The diagrams in the paper also suggest that query re-writing is used here \n", + "\n", + "![Screenshot 2024-02-04 at 2.50.32 PM.png](attachment:5bfa38a2-78a1-4e99-80a2-d98c8a440ea2.png)\n", + "\n", + "Paper -\n", + "\n", + "https://arxiv.org/pdf/2401.15884.pdf\n", + "\n", + "---\n", + "\n", + "Let's implement this from scratch using [LangGraph](https://python.langchain.com/docs/langgraph).\n", + "\n", + "We can make some simplifications:\n", + "\n", + "* Let's skip the knowledge refinement phase as a first pass. This can be added back as a node, if desired. \n", + "* If *any* document is irrelevant, let's opt to supplement retrieval with web search. \n", + "* We'll use [Tavily Search](https://python.langchain.com/docs/integrations/tools/tavily_search) for web search.\n", + "* Let's use query re-writing to optimize the query for web search.\n", + "\n", + "Set the `TAVILY_API_KEY`." + ] + }, + { + "cell_type": "markdown", + "id": "a21f32d2-92ce-4995-b309-99347bafe3be", + "metadata": {}, + "source": [ + "## Retriever\n", + " \n", + "Let's index 3 blog posts." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3a566a30-cf0e-4330-ad4d-9bf994bdfa86", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_openai import OpenAIEmbeddings\n", + "\n", + "urls = [\n", + " \"https://lilianweng.github.io/posts/2023-06-23-agent/\",\n", + " \"https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/\",\n", + " \"https://lilianweng.github.io/posts/2023-10-25-adv-attack-llm/\",\n", + "]\n", + "\n", + "docs = [WebBaseLoader(url).load() for url in urls]\n", + "docs_list = [item for sublist in docs for item in sublist]\n", + "\n", + "text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=250, chunk_overlap=0\n", + ")\n", + "doc_splits = text_splitter.split_documents(docs_list)\n", + "\n", + "# Add to vectorDB\n", + "vectorstore = Chroma.from_documents(\n", + " documents=doc_splits,\n", + " collection_name=\"rag-chroma\",\n", + " embedding=OpenAIEmbeddings(),\n", + ")\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "cell_type": "markdown", + "id": "87194a1b-535a-4593-ab95-5736fae176d1", + "metadata": {}, + "source": [ + "## State\n", + " \n", + "We will define a graph.\n", + "\n", + "Our state will be a `dict`.\n", + "\n", + "We can access this from any graph node as `state['keys']`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "94b3945f-ef0f-458d-a443-f763903550b0", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " \"\"\"\n", + " Represents the state of an agent in the conversation.\n", + "\n", + " Attributes:\n", + " keys: A dictionary where each key is a string and the value is expected to be a list or another structure\n", + " that supports addition with `operator.add`. This could be used, for instance, to accumulate messages\n", + " or other pieces of data throughout the graph.\n", + " \"\"\"\n", + "\n", + " keys: Dict[str, any]" + ] + }, + { + "attachments": { + "3b65f495-5fc4-497b-83e2-73844a97f6cc.png": { + "image/png": "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eaXBgwfbP//5zyLThQQ05F944QWbOnVq2JW19y1btthNN91krGBb1gy3h4MOOqisFUvlEQERSILAxIkTrX379gmFxDnnnGNt2rSxESNGJJGTkohA5gisW7cuc5krZxHIAgGJiCxATuUSNGRZiIaVXV988UWbNGlSLLtvvvnGxo4da/n5+f714YcfGr1r7GP7yy+/9GlJx+elS5faxx9/bFOmTPH7yfejjz6yyy+/3AuVWMZuY9WqVf6ay5cv97t/+uknGz16dCzJ7Nmz/XXCjnnz5vlrMHpSlG3YsMHefvttI494o+zROnKc+o0bN84QVcuWLfOnMHIS6rFw4cJYWagnZZkwYYKva3SEJb5OZDR+/HjPl7wRDtiMGTPss88+85/JL7Dj2KZNm+zzzz+3l19+2f71r395puyXiYAIlC0C/Lbttttu2wmJWrVqGUKCzpPo70PZKr1KUxEIaCSiItzl8l3HquW7euWndq1atTKG6Gkws8LlqaeeakuWLPEVbN68uT3xxBO+YY4wYHSBxm7r1q2tT58+vqE8bNgw69mzp9HIHzVqlL355pu2ePFi/84UibfffrsdccQRPj8a0H/84x+tb9++dskll/i8mzVrZieeeKJvzDdq1MjuvPNO22GHHWz33Xe34cOHGy5RzJJy2WWX+cZ7nTp1EsJHyBx88MHWuXPn7dyYyH/BggV+Fc/999/fB0fi6nTYYYdZlSpVjOsiED744AO/uBSCYsiQITZmzBh7+umn7bnnnrMzzzzTmPbxq6++so4dO1rt2rXtjTfe8KIgvk7UDy7Tp0+3Dh062MiRI30+sAuzvSB2sJYtWxo+17feeqvPj3OrV69uu+yyi9+fsLLaKQIiUKoEEPtnnXWWFxL89jDyiR199NF+xJaOGTpRZCJQGgQkIkqDuq6ZVgKul1dWRgm8/vrr+c6dKf/cc8/NHzBgQP6+++6bv2LFivyZM2f6/Wzzco33fCcufC3OPvvs/CeffHK7Gp1yyin5F110kd//8MMP53/xxRexNL/+9a/zuVYwJwTynSjJdw34fDfvev61117rDx177LH5zz//fL774ct3s6Hku1GPfOeS5Mvy7bff+vRu9dh8J1BCVtu9cx3nk+z3cz75zJ8/P9/1/vvttWvX5juh4Ledm1O+6+3PP/zww/11uBbnYHfffXf+Nddc47dfffVVn6cTT/4858rg391IjC8biQqq06BBg/JvvPFGn48TJLFtrgPXeOM+OJexfBfA6csUf1yfRUAEyh4Bvv/81vB9D8ZvkesEyXedKWGX3kUgqwT4X8xzKROBXCWgkYi0SrL0Z0YP+DHHHONdbo477jirV6+en8qQXjX2Y4wS0IPPe2HG0D7mhEZhyfwMJ/T2OzHi04XzTjjhBHP/eK1p06a+l79r164+noGynH/++X60gBPCCEmii/zwww+24447+kPhnQ+4FVBXXA3o4cdwd3KNeWNGlUqVKvl9XDPecI+KWuXKlY2RkHAOx5i1JVGdOEb+GGwXLVrkt/mzevXq2HbYuP/+++3RRx817gXlZfSDEQqZCIhA2SCA2yW/M0ceeaQ1aNDAF+qOO+6whg0b+sXoBg4caO+8844feX3qqaf8iASjlDIRyDYBRiIY7ZeJQK4SkIgo43euRYsWxj89GsRXXnmluREF69evn28kE2jdv39/X4OqVbfeyp133tnHLtDgr1atmoX9JCrIxSgeAf98cRHCxYkGcpgZ6tBDD7WrrrrKN/J/+9vf+tNoeLveee/WhDhBAEQb7/F54/7kRhDMjaDY3LlzY4dxQUIIEftAQ56y4vLEj+zpp5/uXbJ23XVXQzDUqFHDmjRp4utJnMNI54ZEkHZhVlCdCjoHVzCM8hDcjosYLlUEa7KYFeXfe++9vduTG6EpKBvtFwERyDIBvpuffvqpMckEbksHHnig/41iRWuEBC6JPXr0MIKvjz/+eHv88ce9+2aWi6nLiUDsf7tQiECuElBgdY7cOf4R1q9f3/d8M40hDfz77rvP9+rTo++GwnxN6CHnn2OXLl1iPf6IDnz86fEgZiHYGWecYe3atfPxA+edd56PteAY/1gRL/vtt58/HkYkiElA0BDkHeInSE+e4ZrEIcQHRpMmGGIBIUEsgXOTCrv9KADxDfgv33zzzd53GQFEA965SPlASMpKPAV2yCGH+IY8jQHEEjEQTBdbkBVUp4LSI45ggkDgusRcICSI++Az5eflXMwKykL7RUAESoEAv1F/+9vffOcCcWBss4+1I/gdYFVrOh/ocGE0l+91cWa0K4Uq6ZLllADPYBgJL6dVVLXKOYFK+GGV8zqW6+rxz5Ce+eACRGW5pfTGsR/3oJIaIxAENiNekjGmq2NEIC8vr8jkjDAghghiRgQE45qMZNDrHzXyZSpYRiiioysEipOW4+wvbBSE/EpSJ65BUDtuUmy7uA3/Ob6M0fJqWwREoOwQwMUJ1yVmf2NElRHWu+66y0/WgCsTo5m4JspEQAREQASSJyARkTwrpRQBERABEchhAm5SCnOTMvjZ3Yj1chNC+FHXta6zZPgDD3gXxRyunoouAiIgAlklIHemrOLWxURABERABEqLADFN9957r7322mvenYlyMNX1RjciykiFTAREQAREIHkCGolInpVSioAIiIAIlCMCzOLEGjvPPvusd3UkfoJ1aWQiIAIiIAJFE5CIKJqRUoiACIiACJRjAizSSdA1C3mGiSTKcXVVNREQARFICwGJiLRgVCYiIAIiIAK5TIBJF9wClbbXXnvlcjVUdhEQARHIGgGJiKyh1oVEQAREQAREQAREQAREoHwQUGB1+biPqoUIiIAIiIAIiIAIiIAIZI2ARETWUOtCIiACIiACuU6ANXhwfQq2YcMGv4ZN+Kx3ERABEagoBCQiKsqdVj1FQAREQARSJnD11VfbsGHDYvkMHjzYTxsb26ENERABEaggBBQTUUFutKopAiIgAiKQOoHp06fb0UcfbaNGjbLly5fbfvvt51fCbtKkic/8m2++8SMVLGZXqVIlv2/u3Lk2YcIEv9p969atrV+/fqkXRDmIgAiIQCkTkIgo5Rugy4uACIiACOQWgcsuu8zatm1rCxcutEaNGtmll14o116VAAAlPklEQVTqK3DqqafakiVL/Hbz5s39dLHjx4+3Y445xgYMGGDs69ixo51zzjm5VWGVVgREQAQSEKiaYJ92iYAIiIAIiIAIFEDgwgsvjC1Kx4gExloTkydPtpEjR/rPTBW7aNEimzdvntWpU8fOOOMM22OPPaxevXr+uP6IgAiIQK4TkIjI9Tuo8ouACIiACGSVAKMQBx54oLVq1crq16/vrz1jxgxbunSpH3VgR7NmzWzBggV2yCGH2Pz58+2+++6zr7/+2m644QYbNGiQP0d/REAERCCXCcidKZfvnsouAiIgAiJQKgSuv/56a9GiRcw1af369bb77rvb8OHDrX///r5MVatWNfbzXrlyZXv00Uft8ccft9GjR5eozA+8Pd3Wb9pii1dusgN6Nbf6NSpZ68a1rHWjWiXKTyeVHoEvpi2zl79YYG2a5tmWzVtc/IxZnx3rW99OjUqv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RxP77d6trZqLl5GJQFklIBFRVu+MyiUCIiACIiACEQKbnXBYvHKDLXSConLlSrZTi7xtRiYiSbVZxgnMWrzWpi9cYz+v/sVWrvvFNm3a7BYFrGH7dW9qdWtqHeAyfvtUvP8QkIjQoyACIiACIiACIiACIiACIlAsAhonKxYuJRYBERABERABERABERABEZCI0DMgAiIgAiIgAiIgAiIgAiJQLAISEcXCpcQiIAIiIAIiIAIiIAIiIAISEXoGREAEREAEREAEREAEREAEikVAIqJYuJRYBERABERABERABERABERAIkLPgAiIgAiIgAiIgAiIgAiIQLEISEQUC5cSi4AIiIAIiIAIiIAIiIAIaEUTPQMiIAIiIAIikCUCM2fOtA8++MDmz59v9erVs/PPP9+qVtW/4izh12VEQATSSECLzaURprISAREQARHIPoG7777batasaeedd172L16MK44ePdpOPPFEf0bjxo2tevXqxj5Z2Sbw3Xff2WeffWa//vWvrVGjRmW7sCmUbuTIkTZnzhw77bTTUshFp1YkAnJnqkh3W3UVAREQgXJI4M0337R///vfZb5md9xxhy/j888/b2PHjpWAKPN3bGsBv/nmG7vxxhttyZIlOVLikhXzn//8p916660lO1lnVUgCGkOtkLddlRYBERCB3Cfw6aef2o8//mg///yzrV692p566qlYpX7729/60Ymnn37a8vPzbYcddrDevXvbW2+9ZZUqVbIjjjjCuxNxwmOPPWYbN260Zs2a2UEHHWT169eP5bNixQp79dVXrX///kaP9PTp0+3ggw+2rl27xtKwMWnSJBszZowvy+bNm61BgwZ21llnxVyVtmzZYl999ZXtu+++tueee25zLh9++eUXe/31123atGnWsmVLO+yww4zRCmzChAk2btw4v025Z8yYYaNGjbL99tvPdt11V5s3b553kerUqZN98cUXduSRR/prbdiwwX7zm99Y7dq1/blF/aFu7733nlHWo48+2r788ktfln79+tnChQvtnXfe8dds3769z+q1116zatWq2aGHHhrLmvuBoINb9+7d7ZBDDvG8SVDYveCevPzyy/6c3XffPZZfqDt1Ks+jALEKa0MEcoiA3Jly6GapqCIgAiIgAv8lcP3119u//vUvW7p0qd8ZGt18+PDDD70YoEHK8V69elnz5s3t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ZgHRx326/PLLvVBgPwIRkRfiUFgg7pxzzjFGrjC2maL1tttui82mRVwEgu/rr7/2afjzl7/8xcIid1zjiy++8EKDe85oRNSFKnaSNkQgTQQkItIEUtmIgAiIgAiIQDwBGvYzZ870MQmJ1oOIT5+tzzQyaXDSiI0GaGfr+rl4He4lC/fRuMeYGSl+Vqyi6sV0vJs2bdrOpSyct2LFCi86ECekrVmz5najCcRBIBg4Vr9+/XCq/epXv/IjTdxPpvYNAiWWQBsikGYCEhFpBqrsREAEREAEREAEyi8BGvqMMNBYb+9mUyor9uGHH/pYGspU2IJ4ZaW8KkfuE5CIyP17qBqIgAiIgAiIgAiIgAiIQFYJKLA6q7h1MREQAREQAREQAREQARHIfQISEbl/D1UDERABERABERABERABEcgqAYmIrOLWxURABERABERABERABEQg9wlIROT+PVQNREAEREAEREAEREAERCCrBCQisopbFxMBERABERABERABERCB3CcgEZH791A1EAEREAEREAEREAEREIGsEpCIyCpuXUwEREAEREAEREAEREAEcp+ARETu30PVQAREQAREQAREQAREQASySkAiIqu4dTEREAEREAEREAEREAERyH0CEhG5fw9VAxEQAREQAREQAREQARHIKgGJiKzi1sVEQAREQAREQAREQAREIPcJSETk/j1UDURABERABERABERABEQgqwQkIrKKWxcTAREQAREQAREQAREQgdwnIBGR+/dQNRABERABERABERABERCBrBKQiMgqbl1MBERABERABERABERABHKfgERE7t9D1UAEREAEREAEREAEREAEskpAIiKruHUxERABERABERABERABEch9AhIRuX8PVQMREAEREAEREAEREAERyCoBiYis4tbFREAEREAEREAEREAERCD3CUhE5P49VA1EQAREQAREQAREQAREIKsEJCKyilsXEwEREAEREAEREAEREIHcJyARkfv3UDUQAREQAREQAREQAREQgawSkIjIKm5dTAREQAREQAREQAREQARyn4BERO7fQ9VABERABERABERABERABLJKQCIiq7h1MREQAREQAREQAREQARHIfQISEbl/D1UDERABERABERABERABEcgqAYmIrOLWxURABERABERABERABEQg9wlIROT+PVQNREAEREAEREAEREAERCCrBCQisopbFxMBERABERABERABERCB3CcgEZH791A1EAEREAEREAEREAEREIGsEpCIyCpuXUwEREAEREAEREAEREAEcp+ARETu30PVQAREQAREQAREQAREQASySkAiIqu4dTEREAEREAEREAEREAERyH0CEhG5fw9VAxEQAREQAREQAREQARHIKgGJiKzi1sVEQAREQAREQAREQAREIPcJSETk/j1UDURABERABERABERABEQgqwT+H8glSqY2vticAAAAAElFTkSuQmCC" + } + }, + "cell_type": "markdown", + "id": "f81239f2-314d-41fe-9af9-d19b5b193b53", + "metadata": {}, + "source": [ + "## Nodes and Edges\n", + "\n", + "Each `node` will simply modify the `state`.\n", + "\n", + "Each `edge` will choose which `node` to call next.\n", + "\n", + "It will follow the graph diagram shown above.\n", + "\n", + "![Screenshot 2024-02-04 at 1.32.52 PM.png](attachment:3b65f495-5fc4-497b-83e2-73844a97f6cc.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "efd639c5-82e2-45e6-a94a-6a4039646ef5", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain import hub\n", + "from langchain.output_parsers import PydanticOutputParser\n", + "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain.schema import Document\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_core.messages import BaseMessage, FunctionMessage\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_core.runnables import RunnablePassthrough\n", + "from langchain_core.utils.function_calling import convert_to_openai_tool\n", + "from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n", + "from langgraph.prebuilt import ToolInvocation\n", + "\n", + "### Nodes ###\n", + "\n", + "\n", + "def retrieve(state):\n", + " \"\"\"\n", + " Retrieve documents\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, documents, that contains documents.\n", + " \"\"\"\n", + " print(\"---RETRIEVE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = retriever.get_relevant_documents(question)\n", + " return {\"keys\": {\"documents\": documents, \"question\": question}}\n", + "\n", + "\n", + "def generate(state):\n", + " \"\"\"\n", + " Generate answer\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, generation, that contains generation.\n", + " \"\"\"\n", + " print(\"---GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Prompt\n", + " prompt = hub.pull(\"rlm/rag-prompt\")\n", + "\n", + " # LLM\n", + " llm = ChatOpenAI(model_name=\"gpt-3.5-turbo\", temperature=0, streaming=True)\n", + "\n", + " # Post-processing\n", + " def format_docs(docs):\n", + " return \"\\n\\n\".join(doc.page_content for doc in docs)\n", + "\n", + " # Chain\n", + " rag_chain = prompt | llm | StrOutputParser()\n", + "\n", + " # Run\n", + " generation = rag_chain.invoke({\"context\": documents, \"question\": question})\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "def grade_documents(state):\n", + " \"\"\"\n", + " Determines whether the retrieved documents are relevant to the question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " \"\"\"\n", + "\n", + " print(\"---CHECK RELEVANCE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " binary_score: str = Field(description=\"Relevance score 'yes' or 'no'\")\n", + "\n", + " # LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Tool\n", + " grade_tool_oai = convert_to_openai_tool(grade)\n", + "\n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[convert_to_openai_tool(grade_tool_oai)],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"grade\"}},\n", + " )\n", + "\n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[grade])\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing relevance of a retrieved document to a user question. \\n \n", + " Here is the retrieved document: \\n\\n {context} \\n\\n\n", + " Here is the user question: {question} \\n\n", + " If the document contains keyword(s) or semantic meaning related to the user question, grade it as relevant. \\n\n", + " Give a binary score 'yes' or 'no' score to indicate whether the document is relevant to the question.\"\"\",\n", + " input_variables=[\"context\", \"question\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm_with_tool | parser_tool\n", + "\n", + " # Score\n", + " filtered_docs = []\n", + " search = \"No\" # Default do not opt for web search to supplement retrieval\n", + " for d in documents:\n", + " score = chain.invoke({\"question\": question, \"context\": d.page_content})\n", + " grade = score[0].binary_score\n", + " if grade == \"yes\":\n", + " print(\"---GRADE: DOCUMENT RELEVANT---\")\n", + " filtered_docs.append(d)\n", + " else:\n", + " print(\"---GRADE: DOCUMENT NOT RELEVANT---\")\n", + " search = \"Yes\" # Perform web search\n", + " continue\n", + "\n", + " return {\n", + " \"keys\": {\n", + " \"documents\": filtered_docs,\n", + " \"question\": question,\n", + " \"run_web_search\": search,\n", + " }\n", + " }\n", + "\n", + "\n", + "def transform_query(state):\n", + " \"\"\"\n", + " Transform the query to produce a better question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New value saved to question.\n", + " \"\"\"\n", + "\n", + " print(\"---TRANSFORM QUERY---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Create a prompt template with format instructions and the query\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are generating questions that is well optimized for retrieval. \\n \n", + " Look at the input and try to reason about the underlying sematic intent / meaning. \\n \n", + " Here is the initial question:\n", + " \\n ------- \\n\n", + " {question} \n", + " \\n ------- \\n\n", + " Formulate an improved question: \"\"\",\n", + " input_variables=[\"question\"],\n", + " )\n", + "\n", + " # Grader\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Prompt\n", + " chain = prompt | model | StrOutputParser()\n", + " better_question = chain.invoke({\"question\": question})\n", + "\n", + " return {\"keys\": {\"documents\": documents, \"question\": better_question}}\n", + "\n", + "\n", + "def web_search(state):\n", + " \"\"\"\n", + " Web search using Tavily.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " state (dict): Web results appended to documents.\n", + " \"\"\"\n", + "\n", + " print(\"---WEB SEARCH---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " tool = TavilySearchResults()\n", + " docs = tool.invoke({\"query\": question})\n", + " web_results = \"\\n\".join([d[\"content\"] for d in docs])\n", + " web_results = Document(page_content=web_results)\n", + " documents.append(web_results)\n", + "\n", + " return {\"keys\": {\"documents\": documents, \"question\": question}}\n", + "\n", + "\n", + "### Edges\n", + "\n", + "\n", + "def decide_to_generate(state):\n", + " \"\"\"\n", + " Determines whether to generate an answer, or re-generate a question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " \"\"\"\n", + "\n", + " print(\"---DECIDE TO GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " filtered_documents = state_dict[\"documents\"]\n", + " search = state_dict[\"run_web_search\"]\n", + "\n", + " if search == \"Yes\":\n", + " # All documents have been filtered check_relevance\n", + " # We will re-generate a new query\n", + " print(\"---DECISION: TRANSFORM QUERY and RUN WEB SEARCH---\")\n", + " return \"transform_query\"\n", + " else:\n", + " # We have relevant documents, so generate answer\n", + " print(\"---DECISION: GENERATE---\")\n", + " return \"generate\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dedae17a-98c6-474d-90a7-9234b7c8cea0", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "\n", + "from langgraph.graph import END, StateGraph\n", + "\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# Define the nodes\n", + "workflow.add_node(\"retrieve\", retrieve) # retrieve\n", + "workflow.add_node(\"grade_documents\", grade_documents) # grade documents\n", + "workflow.add_node(\"generate\", generate) # generatae\n", + "workflow.add_node(\"transform_query\", transform_query) # transform_query\n", + "workflow.add_node(\"web_search\", web_search) # web search\n", + "\n", + "# Build graph\n", + "workflow.set_entry_point(\"retrieve\")\n", + "workflow.add_edge(\"retrieve\", \"grade_documents\")\n", + "workflow.add_conditional_edges(\n", + " \"grade_documents\",\n", + " decide_to_generate,\n", + " {\n", + " \"transform_query\": \"transform_query\",\n", + " \"generate\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_edge(\"transform_query\", \"web_search\")\n", + "workflow.add_edge(\"web_search\", \"generate\")\n", + "workflow.add_edge(\"generate\", END)\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5b7c2fe-1fc7-4b76-bf93-ba701a40aa6b", + "metadata": {}, + "outputs": [], + "source": [ + "# Run\n", + "inputs = {\"keys\": {\"question\": \"Explain how the different types of agent memory work?\"}}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " pprint.pprint(f\"Output from node '{key}':\")\n", + " pprint.pprint(\"---\")\n", + " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2bee03de-a32c-4bbe-b37a-a13bb825e4cb", + "metadata": {}, + "outputs": [], + "source": [ + "# Correction for question not present in context\n", + "inputs = {\"keys\": {\"question\": \"What is the approach taken in the AlphaCodium paper?\"}}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " pprint.pprint(f\"Output from node '{key}':\")\n", + " pprint.pprint(\"---\")\n", + " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "a7e44593-1959-4abf-8405-5e23aa9398f5", + "metadata": {}, + "source": [ + "Traces -\n", + " \n", + "[Trace](https://smith.langchain.com/public/7e0b9569-abfe-4337-b34b-842b1f93df63/r) and [Trace](https://smith.langchain.com/public/b40c5813-7caf-4cc8-b279-ee66060b2040/r)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "69eddb3e-57f4-4eea-8e40-4822fc50c729", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/rag/langgraph_self_rag.ipynb b/examples/rag/langgraph_self_rag.ipynb new file mode 100644 index 000000000..50f7dbef1 --- /dev/null +++ b/examples/rag/langgraph_self_rag.ipynb @@ -0,0 +1,665 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "a384cc48-0425-4e8f-aafc-cfb8e56025c9", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph" + ] + }, + { + "attachments": { + "ea6a57d2-f2ec-4061-840a-98deb3207248.png": { + "image/png": "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eGlmOlBpeGVsWERpbWVuc2lvbj44Nzc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KejsPdwAAQABJREFUeAHsnQeYFdX5xj96772DYgGlqmAXsZdo1JhYomKsMf+oicZomqZqYozGxBp77L13FCuCiooVQUF6k87S9/6/34Gzmb1subtsubv3/Z5n7sydcubMOzNnznu+ViflYhIhIASEgBAQAkJACAgBISAEhIAQyEoE6mZlrVQpISAEhIAQEAJCQAgIASEgBISAEAgIiLTpQRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISA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BHlT7qUqvgk6nRDIEQT4xkLe8H874IADguaNuUQICIHyISDSVj7cdFQNQ2D58uX20ksvBbLGfP369QVX0L59e2vcuLEtW7YsTAUbKmEBE7Xk1LNnz4L/HTp0qIQzqkghsDkC7777biBvDF6cccYZdvrppyv62+YwaY0QEAIVgMD48eMDeXv44YeDph/N2+GHH14BJasIIZBbCIi05db9zrmrffXVV+3RRx8N5o+QskykVatW1rp1a0vOi1tetWqV5eXlGfPkFNfhUxSXmc+ZM8dmzJhRiDTGOkEckyQukrttt93W+vTpE3fTXAhUGAKMhN9+++02a9asQNxIFSARAkJACFQGAp9//rlB3NC+9evXL2je8H2TCAEhkBkCIm2Z4aS9ahACfBRwhiawyIoVKwrVPJVKWZ06dcI6yNA222xj6fNCB1TSn9mzZxtmmhA45sll8mylC2aWmG7GacCAAda1a9f03fRfCJQLATpRt912m7Vp0yZo3vbdd99ylaODhIAQEAKlIcAgEW0O32osXdC8ff/737d69eqVdqi2C4GcRkCkLadvf+24+AkTJtgLL7wQtGlff/21rV27ttCF1a1bN/iojRw5shBJK7RTFv1BY5ckc5MnTw7RuD755JNCtcScMpK4gQMHGpMSnBaCSH/KgMCaNWvs5ptvtltuucX233//QN623377MpSgXYWAEBACmSOA2wLkjYkBVYgbU/PmzTMvRHsKgRxCQKQth252bblUGvo333wzaNPeeeedECgkeW2QtO7du4foeIQ333333WvFCB75tgilzPTxxx+H+RdffJG89OAfB5GDwDFXuOVC8OhPBghMnTo1kDe01fi7MaHplQgBISAEKguBBx54wO677z5bvHhxIG5o39DCSYSAEPgfAiJt/8NCS1mMAOaEBBB5+umnA1nBVywpRGjs37+/HXTQQXb88cdbkyZNkptr7fK6desKiFwkdFOmTCm43vr169tee+0VphgVs2CjFoRACQi88cYbQeuGKRPEjU6URAgIASFQmQiQLuD+++83Bo/QutHu4N8tEQJCwEykTU9B1iIwadKkEO3x2WefNRyYMZ9ICuaBw4cPDySN3FOSjQgQ8CQSuPfee8+I3MXoJdKpU6cQvWunnXYyJpm/bcRMv8UjwAj4jTfeaL169bIzzzwzaK6L31tbhIAQEAJbjgAD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QwSiJbDOOuv4Yxs9erTbaqutvHA666yzljjev/3tb27FFVd0L7zwgvvggw/cM888s3iZs88+279G9F199dVenGE9Q3i99tprjokhxi3Dhg3zy/Xq1ctb8vgHscUDscfz888/777//nv3xBNPuPPPP9+9//77fp26/rDv7dq1c0899ZRfFHFB23zzzf2z/tRNoBK8L+qmkM0lZGnLZr/UulfBv1yWtlox6UMREIEiCMQyeLv00ku9BWHEiBG1JlsoApFWEYHoCDAYROwwrqCIb8eOHV379u2XOM6NN97YvfLKK+6vf/2re+yxx1yrVq38Ml9//bW31J1wwgneYrbbbru5a6+91rVp08bhQvnWW2950YalgFg5Gq+XX355/3q77bZzAwcOdFdddZU74IADHL9bBNiaa67pn3/1q1/55er6w/4ceuihDssdDXGJYFtuueXqWlWf5xCIyfsiFrdZWdpyTtJy+DeINqX9L4fe0j6KQHkRiGHwhrVg3Lhx7qCDDnJ9+vRx++67b3l1gvZWBBqZAJYsXBB79+5d6zf/7//+r7v//vvdKqus4m688Ua3zz77+OXDYHLWrFlLrH/00Uc7EolgoevWrdsSn/MG26P17NnT7wPiMZktL4g7v1Adf9gnjuezzz7zVrsdd9yxjjX0cT4CMXlfxOI2K0tbvjM14+/JPbJ0HRT8tpPPhWxdWekKoaVly4FADIO34DqOxYDWoUOHckCvfRSBRieAsLn55pvdySef7GO/iCkjacjkyZN9PCiTw7zmPRrxaP369XP777+/jzkbOXKkX65v377u17/+tbviiiscLomTJk1yY8aM8YlNuKbstdde7ve///3i4xs7dqwj3uyHH37w77H98B28QRwbbpYff/yx4zvYRtqGOMQiiCsn+4vFTq14AjF4X8TiNivRVvx53GRrBtEmS1v9uiDptx2CoXkOQdJptq6sdGkoaZlyIBDT4I3fcY8ePdxdd93lmFhhllVNBERgSQJ77rmnjzFjYH7PPfd469aZZ57pKAOACyQWa17zHg0rFsKOZCTXXHONO/30090yyyzjP7vwwgu9WyXbXG+99dyJJ57oXSD//Oc/u7/85S/e/TG4XLI+8XCIMxqZK7Hihbb11ls7XCZ32mkn/xlukoW0Aw880D377LN+X2uy7hWyvUpeNgbvi1jcZoNFO6bzsUVMB5PvWIJoU0xbPjqFv0dWqXAjYW3cQ4ILKv/jj4+vf7IhmAmwVhOBWAgw0OrUqZPbdNNN3RlnnLF48Pboo48uPkQGb8SqkGSAwRsz8KHlDt5uueUWxzZpDOBIDBIGb2yfNOM0Bm8kJiDrHI3B2+DBg308DP8zeHvjjTf84A0hlnbwRn2poUOH+m1vv/32bEpNBERgEQESfuBGnK/x++aRr/FbJLMjrovcN5Mz/1jaWO+SSy7x98dll13Wb4IYM0QU91UGzyeddJJ/Zt2a9oEYtIsvvtidd955rm3btj4TbNJdMt++Jd/7zW9+4+/bhx9+ePJtvS6CQCHeF1tuuaWPR8R1lrjC//u//1tcMqIm11ksrrvsskuNscdJ11l2n7EvsZKhpXWd5Z5FnGVwmyWTabm15O+t3Pa9pv2NXrQFQSHRVtMpUNj7zMonRRtrkzUL9w7SG+Pnz02HDFY0Bp+nnnqqf63BoMegP2VMINbBG7P022yzjXfBYqCIy2Rwlyzj7tKui0CTEkA4MblTW0Nk8Ui2pODK/Sy5XO7rsGza3y7lBe644w738MMPO2LZtt1229xN6v+UBBA3gSfjpOA6O3fu3Gqus61bt/ZjqOA6y8Q3xgUssZRcSbrOUsSdOGOEGpNwCEKyju6xxx7uoosu8nuG62znzp2XcJ0N4zSss1huiVnG8sQ2KD9RV4vBbVaira5ezuDnsrSVtlO4UDCoo5H5iosFwhiXqnvvvdeLN97HMtC9e3cXstIdfPDBi4VcafdIWxOB7BPI+uANgtzQw4xsjG4l2T9LtIci0LgEEAO4Q1533XXevTIpFht3T8r/22LzvqBHsPji1YEALUe32RjvY81M1Cws/59LzUdAcC7FMDE7p02DW/PWKvcTYtoITj3kkEMWD+yOOuooP4uI+xazPczYYdHEGoGpnxkkZnlefPFFP3uET/4f/vAH9+mnny4xs1i5ZHXkIiACIiACIiAClUSAsVJNrrOBA+EmhJbgOhusRqwXXGf5nEn08FlYL98zy2KJJVwFcd6sWbN8i1V7b/z48X7cR+H3cswqyvgTqyQWy1ha9O6RQZOGDGmxdFxTHQdxNsHsntyH4CedvBAE5sFVQ1npksT0WgREQAREQAREoBIJZNn7Irh5lrvbbBoxW27nXsWINmWPLM2pOWrUqGqijXTGNbVkVjri3JSVriZSel8EREAEREAEREAEmp5ALG6zMbpHVoxoUyKS0lwIdt9992obGj58+OJsR8kPgsVNWemSVPRaBERABERABERABLJLYIMNNnA8yr3J0laGPRiyRwZXvTI8hEzscm1Z80IWI3aUH0kyLbGy0mWi+7QTIiACIiACIiACIlAxBGRpK8OuDqJN7pFN13n8cJSVrun465tFQAREQAREQAREoJIIxGhpax57B4ZEJHKPjL2ndXwiIAIiIAIiIAIiIAIiUOX5FRsHibbYelTHIwIiIAIiIAIiIAIiIAIVTCBG90iJtgo+oXXoIiACIiACIiACIiACIhAbAblHlmGPKqatDDtNuywCIiACIiACIiACIiACRRKQaCsSXFOuFmLalD2yKXtB3y0CIiACIiACIiACIiACjUNA7pGNw7mk3yJLW0lxamMiIAIiIAIiIAIiIAIikGkCsrRlunvy71ywtCl7ZH4+elcEREAEREAEREAEREAEYiIg0VaGvRlEm9wjy7DztMsiIAIiIAIiIAIiIAIiUCABibYCgWVh8SDaVFw7C72hfRABERABERABERABERCBhiUg0dawfBtk6yGmTe6RDYJXGxUBERABERABERABERCBTBGQaMtUd6TbmWBpk2hLx0tLiYAIiIAIiIAIiIAIiEA5E1D2yDLsPVnayrDTtMsiIAIiIAIiIAIiIAIiUCQBWdqKBJeF1RTTloVe0D6IgAiIgAiIgAiIgAiIQMMSwNIWWxLC5g2LrOm3Lktb0/eB9kAEREAEREAEREAEREAEGosAlrbYDDYSbY119uh7REAEREAEREAEREAEREAEGpwAok2WtgbHXNovUCKS0vLU1kRABERABERABERABEQgywRwj5SlLcs9lGffgntkbB2X51D1lgiIgAiIgAiIgAiIgAhUPAFZ2srwFAiWtthMpGXYFdplERABERABERABERABEWhwAoppa3DEpf+CINpUp630bLVFERABERABERABERABEcgaAWWPzFqPpNifINrkHpkClhYRAREQAREQAREQAREQgTInIEtbGXZgiGmTe2QZdp52WQREQAREQAREQAREQAQKJKCYtgKBZWFxWdqy0AvaBxEQAREQAREQAREQARFoHAKytDUO55J+S7C0KaatpFi1MREQAREQAREQAREQARHIJAFZ2jLZLel2SqItHSctJQIiIAIiIAIiIAIiIALlTEB12sqw92RpK8NO0y6LgAiIgAiIgAiIgAiIQJEEZGkrElxTrkZM24YbbhhdVfSmZKrvFgEREAEREAEREAEREIEsE4gtc3yLLMMuxb7179/ftW/f3h1xxBGl2Jy2IQIiIAIiIAIiIAIiIAIikHECGG1ias3MErUwpgPSsYiACIiACIiACIiACIiACIhATASax3QwOhYREAEREAEREAEREAEREAERiI1A9O6RuR02YsQId8011/i3mzVrVvBzWCdsN/xfzDNGzmLW47vDelnYj1iOI7AMfAPjQp/DdgpdL7l8LExjOY7Qp+HcKPY5LY/kuZD7XWm3kbte8n9e02r7nro+L6f98Ae76A/7na/V9/3Asr7bYd9KsY36bCccS+DU1PsT9iM8p92fcBxply90+425fDiW8J08F3pcha5T6PYLWZ7jKWT5Qve9MZfP7ZtyPa5wHE2x/6X+zo022ohTILpWcaKtW7dubvLkyW7UqFHRdaYOSAREQAREQAREQAREQAQqmcApp5ziTj755OgQKKYtui7VAYmACOQjEGbyanoO69T0eZr3k7PHaZbnO3OXi2U/snocSealfB2Ot5TbDOdG2Ga+mfDcZcJ+FPt+8hwO31vfbebbThaPpRhmWTyOXN65/9d2nOVwPLXtfzhXk89pli92mZp+L8VuL19fxdInMGmMYyH5CKItxibRFmOv6phEQAREQAREQAREQAREQASiIaBEJNF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgL/HyO/Hwp37uk5AAAAAElFTkSuQmCC" + } + }, + "cell_type": "markdown", + "id": "919fe33c-0149-4f7d-b200-544a18986c9a", + "metadata": {}, + "source": [ + "# Self-RAG\n", + "\n", + "Self-RAG is a recent paper that introduces an interesting approach for active RAG. \n", + "\n", + "The framework trains a single arbitrary LM (LLaMA2-7b, 13b) to generate tokens that govern the RAG process:\n", + "\n", + "1. Should I retrieve from retriever, `R` -\n", + "\n", + "* Token: `Retrieve`\n", + "* Input: `x (question)` OR `x (question)`, `y (generation)`\n", + "* Decides when to retrieve `D` chunks with `R`\n", + "* Output: `yes, no, continue`\n", + "\n", + "2. Are the retrieved passages `D` relevant to the question `x` -\n", + "\n", + "* Token: `ISREL`\n", + "* * Input: (`x (question)`, `d (chunk)`) for `d` in `D`\n", + "* `d` provides useful information to solve `x`\n", + "* Output: `relevant, irrelevant`\n", + "\n", + "\n", + "3. Are the LLM generation from each chunk in `D` is relevant to the chunk (hallucinations, etc) -\n", + "\n", + "* Token: `ISSUP`\n", + "* Input: `x (question)`, `d (chunk)`, `y (generation)` for `d` in `D`\n", + "* All of the verification-worthy statements in `y (generation)` are supported by `d`\n", + "* Output: `{fully supported, partially supported, no support`\n", + "\n", + "4. The LLM generation from each chunk in `D` is a useful response to `x (question)` -\n", + "\n", + "* Token: `ISUSE`\n", + "* Input: `x (question)`, `y (generation)` for `d` in `D`\n", + "* `y (generation)` is a useful response to `x (question)`.\n", + "* Output: `{5, 4, 3, 2, 1}`\n", + "\n", + "We can represent this as a graph:\n", + "\n", + "![Screenshot 2024-02-02 at 1.36.44 PM.png](attachment:ea6a57d2-f2ec-4061-840a-98deb3207248.png)\n", + "\n", + "Paper -\n", + "\n", + "https://arxiv.org/abs/2310.11511\n", + "\n", + "---\n", + "\n", + "Let's implement this from scratch using [LangGraph](https://python.langchain.com/docs/langgraph)." + ] + }, + { + "cell_type": "markdown", + "id": "c27bebdc-be71-4130-ab9d-42f09f87658b", + "metadata": {}, + "source": [ + "## Retriever\n", + " \n", + "Let's index 3 blog posts." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "565a6d44-2c9f-4fff-b1ec-eea05df9350d", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_openai import OpenAIEmbeddings\n", + "\n", + "urls = [\n", + " \"https://lilianweng.github.io/posts/2023-06-23-agent/\",\n", + " \"https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/\",\n", + " \"https://lilianweng.github.io/posts/2023-10-25-adv-attack-llm/\",\n", + "]\n", + "\n", + "docs = [WebBaseLoader(url).load() for url in urls]\n", + "docs_list = [item for sublist in docs for item in sublist]\n", + "\n", + "text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=250, chunk_overlap=0\n", + ")\n", + "doc_splits = text_splitter.split_documents(docs_list)\n", + "\n", + "# Add to vectorDB\n", + "vectorstore = Chroma.from_documents(\n", + " documents=doc_splits,\n", + " collection_name=\"rag-chroma\",\n", + " embedding=OpenAIEmbeddings(),\n", + ")\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "cell_type": "markdown", + "id": "276001c5-c079-4e5b-9f42-81a06704d200", + "metadata": {}, + "source": [ + "## State\n", + " \n", + "We will define a graph.\n", + "\n", + "Our state will be a `dict`.\n", + "\n", + "We can access this from any graph node as `state['keys']`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f1617e9e-66a8-4c1a-a1fe-cc936284c085", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " \"\"\"\n", + " Represents the state of an agent in the conversation.\n", + "\n", + " Attributes:\n", + " keys: A dictionary where each key is a string and the value is expected to be a list or another structure\n", + " that supports addition with `operator.add`. This could be used, for instance, to accumulate messages\n", + " or other pieces of data throughout the graph.\n", + " \"\"\"\n", + "\n", + " keys: Dict[str, any]" + ] + }, + { + "attachments": { + "e61fbd0c-e667-4160-a96c-82f95a560b44.png": { + "image/png": "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eGlmOlBpeGVsWERpbWVuc2lvbj4xMTMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CrI+j1QAAEAASURBVHgB7J0FfJXV/8e/rJs1sTG6OxREBEFAUBFQLCzE+NkBJjYmFiZiIR3SIB0Ckkp3jBg51t0bv/M5d8/l3nE3Ntjwbny+/9fdU+c5zznv8/h7/Z8P36h0TpnQSIAESIAESIAESIAESIAESIAESIAESIAE7IaAg92MhAMhARIgARIgARIgARIgARIgARIgARIgARLQBCjY8EUgARIgARIgARIgARIgARIgARIgARIgATsjQMHGzhaEwyEBEiABEiABEiABEiABEiABEiABEiABCjZ8B0iABEiABEiABEiABEiABEiABEiABEjAzghQsLGzBeFwSIAESIAESIAESIAESIAESIAESIAESICCDd8BEiABEiABEiABEiABEiABEiABEiABErAzAhRs7GxBOBwSIAESIAESIAESIAESIAESIAESIAESoGDDd4AESIAESIAESIAESIAESIAESIAESIAE7IwABRs7WxAOhwRIgARIgARIgARIgARIgARIgARIgAQo2PAdIAESIAESIAESIAESIAESIAESIAESIAE7I0DBxs4WhMMhARIgARIgARIgARIgARIgARIgARIgAQo2fAdIgARIgARIgARIgARIgARIgARIgARIwM4IULCxswXhcEiABEiABEiABEiABEiABEiABEiABEiAgg3fARIgARIgARIgARIgARIgARIgARIgARKwMwIUbOxsQTgcEiABEiABEiABEiABEiABEiABEiABEqBgw3eABEiABEiABEiABEiABEiABEiABEiABOyMAAUbO1sQDocESIAESIAESIAESIAESIAESIAESIAEKNjwHSABEiABEiABEiABEiABEiABEiABEiABOyNAwcbOFoTDIQESIAESIAESIAESIAESIAESIAESIAEKNnwHSIAESIAESIAESIAESIAESIAESIAESMDOCFCwsbMF4XBIgARIgARIgARIgARIgARIgARIgARIgIIN3wESIAESIAESIAESIAESIAESIAESIAESsDMCFGzsbEE4HBIgARIgARIgARIgARIgARIgARIgARKgYMN3gARIgARIgARIgARIgARIgARIgARIgATsjAAFGztbEA6HBEiABEiABEiABEiABEiABEiABEiABCjY8B0gARIgARIgARIgARIgARIgARIgARIgATsjQMHGzhaEwyEBEiABEiABEiABEiABEiABEiABEiABCjZ8B0iABEiABEiABEiABEiABEiABEiABEjAzghQsLGzBeFwSIAESIAESIAESIAESIAESIAESIAESICCDd8BEiABEiABEiABEiABEiABEiABEiABErAzAhRs7GxBOBwSIAESIAESIAESIAESIAESIAESIAESoGDDd4AESIAESIAESIAESIAESIAESIAESIAE7IwABRs7WxAOhwRIgARIgARIgARIgARIgARIgARIgAQo2PAdIAESIAESIAESIAESIAESIAESIAESIAE7I0DBxs4WhMMhARIgARIgARIgARIgARIgARIgARIgAQo2fAdIgARIgARIgARIgARIgARIgARIgARIwM4IULCxswXhcEiABEiABEiABEiABEiABEiABEiABEiAgg3fARIgARIgARIgARIgARIgARIgARIgARKwMwIUbOxsQTgcEiABEiABEiABEiABEiABEiABEiABEqBgw3eABEiABEiABEiABEiABEiABEiABEiABOyMAAUbO1sQDocESIAESIAESIAESIAESIAESIAESIAEKNjwHSABEiABEiABEiABEiABEiABEiABEiABOyNAwcbOFoTDIQESIAESIAESIAESIAESIAESIAESIAEKNnwHSIAESIAESIAESIAESIAESIAESIAESMDOCFCwsbMF4XBIgARIgARIgARIgARIgARIgARIgARIgIIN3wESIAESIAESIAESIAESIAESIAESIAESsDMCFGzsbEE4HBIgARIgARIgARIgARIgARIgARIgARKgYMN3gARIgARIgARIgARIgARIgARIgARIgATsjAAFGztbEA6HBEiABEiABEiABEiABEiABEiABEiABCjY8B0gARIgARIgARIgARIgARIgARIgARIgATsjQMHGzhaEwyEBEiABEiABEiABEiABEiABEiABEiABCjZ8B0iABEiABEiABEiABEiABEiABEiABEjAzghQsLGzBeFwSIAESIAESIAESIAESIAESIAESIAESICCDd8BEiABEiABEiABEiABEiABEiABEiABErAzAhRs7GxBOBwSIAESIAESIAESIAESIAESIAESIAESoGDDd4AESIAESIAESIAESIAESIAESIAESIAE7IwABRs7WxAOhwRIgARIgARIgARIgARIgARIgARIgAQo2PAdIAESIAESIAESIAESIAESIAESIAESIAE7I0DBxs4WhMMhARIgARIgARIgARIgARIgARIgARIgAQo2fAdIgARIgARIgARIgARIgARIgARIgARIwM4IULCxswXhcEiABEiABEiABEiABEiABEiABEiABEiAgg3fARIgARIgARIgARIgARIgARIgARIgARKwMwIUbOxsQTgcEiABEiABEiABEiABEiABEiABEiABEqBgw3eABEiABEiABEiABEiABEiABEiABEiABOyMAAUbO1sQDocESIAESIAESIAESIAESIAESIAESIAEKNjwHSABEiABEiABEiABEiABEiABEiABEiABOyNAwcbOFoTDIQESIAESIAESIAESIAESIAESIAESIAEKNnwHSIAESIAESIAESIAESIAESIAESIAESMDOCFCwsbMF4XBIgARIgARIgARIgARIgARIgARIgARIgIIN3wESIAESIAESIAESIAESIAESIAESIAESsDMCFGzsbEE4HBIgARIgARIgARIgARIgARIgARIgARKgYMN3gARIgARIgARIgARIgARIgARIgARIgATsjICTnY3nqhpOVlaWTJw40WrO1atXl169elmdK+xg3759smHDBjl27Ji4uLhI06ZNpX///oU153kSsCJw5MgRWbVqldSsWVNuuukmq2s8IAESIAESIAESIAESIAESIAES+G8JULApIf/o6Gj56aeftFBy5swZqV27trRq1UqefPJJCQoKKlFv6enp8v7771vd07Fjx2IJNqNGjZIRI0ZY3XvrrbeWWLB5+eWX5dSpU+Z+HB0dBaJRu3bt5I477hAnpwtfkWXLlsmYMWP0Pf369ZN77rnHfL/lTmxsrPz222+yZ88e2bVrl4SGhkrz5s3lgQcekMaNG1s2veg+xoixNmnSRN5+++2LtreHBpj31KlTZffu3RIRESENGzaUFi1ayP/+9z/x9/f/z4cI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YoncVmNmnwlZypsr/Do2azftlnIl8tofv/37908CJdAPYRa3XnPvWaS6fc5793kfan2+dQS6nnJe823X+z7QPtef6R2XZ997TUpj9JajPu/7lPruLee77134+56jDcx7nPeB2vKW8+5760hpfN5yKe1zzmve/vhr143Re85d4/QpvOcC7dNmoHOuPspA6njfc8yZ93qOed8H2k+tnBtfauU47yxQW97jlA00DleP23qvC7RP2UDnvMf9lXNjTK2cv/74qy+1cuGap97+Btp3/fM3Ru81rlxqfQ+2XKyNMS1YpHWMRYoUsTC/++67yeasw163ikC0I3CGmfyJj4WivafaP0UgFQS8U9ntuy2Xss8/CN9j7pyr3p13W+/5QMfcPx533m2Duda3XXdNLPTVjTOtfXVjd09F3djdNpy4+uurO+ba827/v707Ade5zvs4/iWHwUGNfV+yjgwiISQhhbJENZKpMeOiqXlaJs3jUWOaMRVa6JpJGCPVpTmNqBA1obGUfY2I7Ftk3zs8Pt/mf899jnM6i7Pct/v9u6773P/7v/7+r1/Xc43P81tS207tmkipa0r1C38XHY/kuiavf27UVV5BCf7bTF4vHU++T3VNvi+l84J7B+cG3+HnBvvC7xnsS+k87dP/BzEoN/3vp9b9lnpWsVR8sCvLvmfM32Tli+WxwT1qZdk9uRECCCCAAAIIIIDAxQL0sLnYhD1RKhD8w07VD9+O0teh2ggggECmBTo0KWdfbNqX5YHN6bPnbOeeQ3Z3sxqZrhsXIoAAAggggAACCKRPgFWi0ufEWQgggAACCESNQKdrS9nS1TtM881kZflk0dd2dYUi1rru913Ms/Le3AsBBBBAAAEEEEAgqQCBTVIPfiGAAAIIIBD1AnUrFbX/6V7blqzdmWXvsmX3EVt+4X53Ny+bZffkRggggAACCCCAAAKpCxDYpG7DEQQQQCDHBRITE+3IkSM5/tzseODhw4eTzOmSHc/gnqkL3NOivH21Zb8tXb8n9ZPSceT46e9Mn7feX2HdbqpqTWt+vzpUOi7lFAQQQAABBBBAAIFLECCwuQQ8LkUAAQSyUmD58uV23XXXWc+ePbPytpm619GjR23UqFF24sSJTF2v4Ommm26yG2+80TZv3pype3DRpQuM6lffZn66wd678FHoktGisOflCQv807V1VRt4e7WM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" + } + }, + "cell_type": "markdown", + "id": "251feeea-c9a0-404a-8b55-bef3020bb5e2", + "metadata": {}, + "source": [ + "## Nodes and Edges\n", + "\n", + "Each `node` will simply modify the `state`.\n", + "\n", + "Each `edge` will choose which `node` to call next.\n", + "\n", + "We can lay out `self-RAG` as a graph:\n", + "\n", + "![Screenshot 2024-02-02 at 9.01.01 PM.png](attachment:e61fbd0c-e667-4160-a96c-82f95a560b44.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "add509d8-6682-4127-8d95-13dd37d79702", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain import hub\n", + "from langchain.output_parsers import PydanticOutputParser\n", + "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_core.messages import BaseMessage, FunctionMessage\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_core.runnables import RunnablePassthrough\n", + "from langchain_core.utils.function_calling import convert_to_openai_tool\n", + "from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n", + "from langgraph.prebuilt import ToolInvocation\n", + "\n", + "### Nodes ###\n", + "\n", + "\n", + "def retrieve(state):\n", + " \"\"\"\n", + " Retrieve documents\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, documents, that contains documents.\n", + " \"\"\"\n", + " print(\"---RETRIEVE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = retriever.get_relevant_documents(question)\n", + " return {\"keys\": {\"documents\": documents, \"question\": question}}\n", + "\n", + "\n", + "def generate(state):\n", + " \"\"\"\n", + " Generate answer\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, generation, that contains generation.\n", + " \"\"\"\n", + " print(\"---GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Prompt\n", + " prompt = hub.pull(\"rlm/rag-prompt\")\n", + "\n", + " # LLM\n", + " llm = ChatOpenAI(model_name=\"gpt-3.5-turbo\", temperature=0)\n", + "\n", + " # Post-processing\n", + " def format_docs(docs):\n", + " return \"\\n\\n\".join(doc.page_content for doc in docs)\n", + "\n", + " # Chain\n", + " rag_chain = prompt | llm | StrOutputParser()\n", + "\n", + " # Run\n", + " generation = rag_chain.invoke({\"context\": documents, \"question\": question})\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "def grade_documents(state):\n", + " \"\"\"\n", + " Determines whether the retrieved documents are relevant to the question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " \"\"\"\n", + "\n", + " print(\"---CHECK RELEVANCE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " binary_score: str = Field(description=\"Relevance score 'yes' or 'no'\")\n", + "\n", + " # LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Tool\n", + " grade_tool_oai = convert_to_openai_tool(grade)\n", + "\n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[convert_to_openai_tool(grade_tool_oai)],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"grade\"}},\n", + " )\n", + "\n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[grade])\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing relevance of a retrieved document to a user question. \\n \n", + " Here is the retrieved document: \\n\\n {context} \\n\\n\n", + " Here is the user question: {question} \\n\n", + " If the document contains keyword(s) or semantic meaning related to the user question, grade it as relevant. \\n\n", + " Give a binary score 'yes' or 'no' score to indicate whether the document is relevant to the question.\"\"\",\n", + " input_variables=[\"context\", \"question\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm_with_tool | parser_tool\n", + "\n", + " # Score\n", + " filtered_docs = []\n", + " for d in documents:\n", + " score = chain.invoke({\"question\": question, \"context\": d.page_content})\n", + " grade = score[0].binary_score\n", + " if grade == \"yes\":\n", + " print(\"---GRADE: DOCUMENT RELEVANT---\")\n", + " filtered_docs.append(d)\n", + " else:\n", + " print(\"---GRADE: DOCUMENT NOT RELEVANT---\")\n", + " continue\n", + "\n", + " return {\"keys\": {\"documents\": filtered_docs, \"question\": question}}\n", + "\n", + "\n", + "def transform_query(state):\n", + " \"\"\"\n", + " Transform the query to produce a better question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New value saved to question.\n", + " \"\"\"\n", + "\n", + " print(\"---TRANSFORM QUERY---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Create a prompt template with format instructions and the query\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are generating questions that is well optimized for retrieval. \\n \n", + " Look at the input and try to reason about the underlying sematic intent / meaning. \\n \n", + " Here is the initial question:\n", + " \\n ------- \\n\n", + " {question} \n", + " \\n ------- \\n\n", + " Formulate an improved question: \"\"\",\n", + " input_variables=[\"question\"],\n", + " )\n", + "\n", + " # Grader\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Prompt\n", + " chain = prompt | model | StrOutputParser()\n", + " better_question = chain.invoke({\"question\": question})\n", + "\n", + " return {\"keys\": {\"documents\": documents, \"question\": better_question}}\n", + "\n", + "\n", + "def prepare_for_final_grade(state):\n", + " \"\"\"\n", + " Stage for final grade, passthrough state.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " state (dict): The current state of the agent, including all keys.\n", + " \"\"\"\n", + "\n", + " print(\"---FINAL GRADE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " generation = state_dict[\"generation\"]\n", + "\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "### Edges ###\n", + "\n", + "\n", + "def decide_to_generate(state):\n", + " \"\"\"\n", + " Determines whether to generate an answer, or re-generate a question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " \"\"\"\n", + "\n", + " print(\"---DECIDE TO GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " filtered_documents = state_dict[\"documents\"]\n", + "\n", + " if not filtered_documents:\n", + " # All documents have been filtered check_relevance\n", + " # We will re-generate a new query\n", + " print(\"---DECISION: TRANSFORM QUERY---\")\n", + " return \"transform_query\"\n", + " else:\n", + " # We have relevant documents, so generate answer\n", + " print(\"---DECISION: GENERATE---\")\n", + " return \"generate\"\n", + "\n", + "\n", + "def grade_generation_v_documents(state):\n", + " \"\"\"\n", + " Determines whether the generation is grounded in the document.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Binary decision score.\n", + " \"\"\"\n", + "\n", + " print(\"---GRADE GENERATION vs DOCUMENTS---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " generation = state_dict[\"generation\"]\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " binary_score: str = Field(description=\"Supported score 'yes' or 'no'\")\n", + "\n", + " # LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Tool\n", + " grade_tool_oai = convert_to_openai_tool(grade)\n", + "\n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[convert_to_openai_tool(grade_tool_oai)],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"grade\"}},\n", + " )\n", + "\n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[grade])\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing whether an answer is grounded in / supported by a set of facts. \\n \n", + " Here are the facts:\n", + " \\n ------- \\n\n", + " {documents} \n", + " \\n ------- \\n\n", + " Here is the answer: {generation}\n", + " Give a binary score 'yes' or 'no' to indicate whether the answer is grounded in / supported by a set of facts.\"\"\",\n", + " input_variables=[\"generation\", \"documents\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm_with_tool | parser_tool\n", + "\n", + " score = chain.invoke({\"generation\": generation, \"documents\": documents})\n", + " grade = score[0].binary_score\n", + "\n", + " if grade == \"yes\":\n", + " print(\"---DECISION: SUPPORTED, MOVE TO FINAL GRADE---\")\n", + " return \"supported\"\n", + " else:\n", + " print(\"---DECISION: NOT SUPPORTED, GENERATE AGAIN---\")\n", + " return \"not supported\"\n", + "\n", + "\n", + "def grade_generation_v_question(state):\n", + " \"\"\"\n", + " Determines whether the generation addresses the question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Binary decision score.\n", + " \"\"\"\n", + "\n", + " print(\"---GRADE GENERATION vs QUESTION---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " generation = state_dict[\"generation\"]\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " binary_score: str = Field(description=\"Useful score 'yes' or 'no'\")\n", + "\n", + " # LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Tool\n", + " grade_tool_oai = convert_to_openai_tool(grade)\n", + "\n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[convert_to_openai_tool(grade_tool_oai)],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"grade\"}},\n", + " )\n", + "\n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[grade])\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing whether an answer is useful to resolve a question. \\n \n", + " Here is the answer:\n", + " \\n ------- \\n\n", + " {generation} \n", + " \\n ------- \\n\n", + " Here is the question: {question}\n", + " Give a binary score 'yes' or 'no' to indicate whether the answer is useful to resolve a question.\"\"\",\n", + " input_variables=[\"generation\", \"question\"],\n", + " )\n", + "\n", + " # Prompt\n", + " chain = prompt | llm_with_tool | parser_tool\n", + "\n", + " score = chain.invoke({\"generation\": generation, \"question\": question})\n", + " grade = score[0].binary_score\n", + "\n", + " if grade == \"yes\":\n", + " print(\"---DECISION: USEFUL---\")\n", + " return \"useful\"\n", + " else:\n", + " print(\"---DECISION: NOT USEFUL---\")\n", + " return \"not useful\"" + ] + }, + { + "cell_type": "markdown", + "id": "61cd5797-1782-4d78-a277-8196d13f3e1b", + "metadata": {}, + "source": [ + "## Graph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0e09ca9f-e36d-4ef4-a0d5-79fdbada9fe0", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "\n", + "from langgraph.graph import END, StateGraph\n", + "\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# Define the nodes\n", + "workflow.add_node(\"retrieve\", retrieve) # retrieve\n", + "workflow.add_node(\"grade_documents\", grade_documents) # grade documents\n", + "workflow.add_node(\"generate\", generate) # generatae\n", + "workflow.add_node(\"transform_query\", transform_query) # transform_query\n", + "workflow.add_node(\"prepare_for_final_grade\", prepare_for_final_grade) # passthrough\n", + "\n", + "# Build graph\n", + "workflow.set_entry_point(\"retrieve\")\n", + "workflow.add_edge(\"retrieve\", \"grade_documents\")\n", + "workflow.add_conditional_edges(\n", + " \"grade_documents\",\n", + " decide_to_generate,\n", + " {\n", + " \"transform_query\": \"transform_query\",\n", + " \"generate\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_edge(\"transform_query\", \"retrieve\")\n", + "workflow.add_conditional_edges(\n", + " \"generate\",\n", + " grade_generation_v_documents,\n", + " {\n", + " \"supported\": \"prepare_for_final_grade\",\n", + " \"not supported\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_conditional_edges(\n", + " \"prepare_for_final_grade\",\n", + " grade_generation_v_question,\n", + " {\n", + " \"useful\": END,\n", + " \"not useful\": \"transform_query\",\n", + " },\n", + ")\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fb69dbb9-91ee-4868-8c3c-93af3cd885be", + "metadata": {}, + "outputs": [], + "source": [ + "# Run\n", + "inputs = {\"keys\": {\"question\": \"Explain how the different types of agent memory work?\"}}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " pprint.pprint(f\"Output from node '{key}':\")\n", + " pprint.pprint(\"---\")\n", + " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4138bc51-8c84-4b8a-8d24-f7f470721f6f", + "metadata": {}, + "outputs": [], + "source": [ + "inputs = {\"keys\": {\"question\": \"Explain how chain of thought prompting works?\"}}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " pprint.pprint(f\"Output from node '{key}':\")\n", + " pprint.pprint(\"---\")\n", + " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "548f1c5b-4108-4aae-8abb-ec171b511b92", + "metadata": {}, + "source": [ + "Trace - \n", + " \n", + "* https://smith.langchain.com/public/55d6180f-aab8-42bc-8799-dadce6247d9b/r\n", + "* https://smith.langchain.com/public/f85ebc95-81d9-47fc-91c6-b54e5b78f359/r" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From e4a1bf23768b5d074cb7e10d852c56a56b4450fb Mon Sep 17 00:00:00 2001 From: Luca Dorigo Date: Wed, 7 Feb 2024 13:15:31 +0100 Subject: [PATCH 007/108] Fix typing for _dict_getter --- langgraph/graph/state.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/langgraph/graph/state.py b/langgraph/graph/state.py index 88c526e2f..b8f2c8a63 100644 --- a/langgraph/graph/state.py +++ b/langgraph/graph/state.py @@ -105,7 +105,7 @@ def _coerce_state(schema: Type[Any], input: dict[str, Any]) -> dict[str, Any]: return schema(**input) -def _dict_getter(allowed_keys: str, key: str, input: dict) -> Any: +def _dict_getter(allowed_keys: list[str], key: str, input: dict) -> Any: if input is not None: if not isinstance(input, dict) or any(key not in allowed_keys for key in input): raise InvalidUpdateError( From 385ec91b0ec52898e2b23c44e79191d018056e3a Mon Sep 17 00:00:00 2001 From: Lance Martin Date: Wed, 7 Feb 2024 14:45:17 -0800 Subject: [PATCH 008/108] Mistral CRAG --- examples/rag/langgraph_crag_mistral.ipynb | 607 ++++++++++++++++++++++ 1 file changed, 607 insertions(+) create mode 100644 examples/rag/langgraph_crag_mistral.ipynb diff --git a/examples/rag/langgraph_crag_mistral.ipynb b/examples/rag/langgraph_crag_mistral.ipynb new file mode 100644 index 000000000..ecb821596 --- /dev/null +++ b/examples/rag/langgraph_crag_mistral.ipynb @@ -0,0 +1,607 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "19969669-b47f-47f3-b6d4-f7b155434840", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mWARNING: There was an error checking the latest version of pip.\u001b[0m\u001b[33m\n", + "\u001b[0m" + ] + } + ], + "source": [ + "! pip install --quiet langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph tavily-python langchain-mistralai" + ] + }, + { + "attachments": { + "9db7f9db-55aa-48cb-95d5-bcde3f937589.png": { + "image/png": "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9WPuJCABCUhAAn1NAAXeaqutVv41U0r2ohAogb///e8XF198cbHmmmtWXoI4Sy21VIHf8JGWZorqNC9vv/12sdtuuw2UwYMy5lxHpWXP7U855ZS54K6HhZkbuYTTBafjkfZDLVdseGC9k1ia5SWOl26naz2kx0d7v2qGRqt8BUMA8VJWrc5Nj4+F/iLNc6v9SSaZpBYlHT1fO/DuBn1LLPF5cXi6PVQldppOP+wPpQ2mTNP9TsoV9x2dnJebOdHq/NiI0CpuN4/HC653km6/91+dlMW4EpCABCQgAQn0DwFnevRPXZgTCUhAAhKQgASGQIAZJvx95zvfKV2G3HHHHeWCsbj9iAV/53fffXeli5w47nCUW3E6U001VbzbdPvaa6+tc9fFotb4bGctA9JBMcTIYxZzTsvWNOHk4EgrmHDLFAsjnOeee+44KLudnpeN1OPA2CUNMyjitSHmnXfegsWJEdy3pAuQV2UtdsWUjs5nBHh8vCqNNBy3Z0FGaoZMuF4vf1kHhDUokGYj3jvJQy/6i06u38243COBT+wiKL1Guth4M5du8bm4bRvPkt6fL7300pBxpH0eC5m3YySI13BKL447wB122CENLk455ZRyHSDWAhoLMqj911hgbx4lIAEJSEACg0xAo8cg165lk4AEJCABCYwjAiiQWDScv+2226549tlnCxaLvf/++0sKKIMxGuTWNUhH0zZTIPYK6X333VdLGmXvOeec06AUQwmXrhFRO6liI50xgT//kZRYocV1MR5sv/32I5mFIV0LheIVV1xROzf15x8vzM2MhC996UvFNNNMU4vfzkbqioqF6auMHulo/Tj9OB3aOG64cqP0hztbIr7mSGyzTkJQ6j/wwAOVl+z0niCh4fQXlRkZ4QPxOhL0b6ztgJE0lXSWW65tpOe4XzTcQxg511lnnSyaN998MxseAlMj7ic/+cly7alwfCi/hx9+eHY9D9Laeeedi1/84hd1i6IP5Rojcc6g9l8jwc5rSEACEpCABCRQTUD3VtVsPCIBCUhAAhKQwBgmgD96ZkvEUjVSFwVorCxEWTQURWp8rU63H3vssdopKM9zo4BZ4PzWW2+txWtnI13IHcX6SApuXRZaaKHaJU844YTilltuqe3368ZZZ51VW0yYPLKQdizpouPM9Gil+IzPZzsdcY8rtpwwO+fee+/NHSrD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kD8WK//Upz5VzD///MW8885bMBukXaVpQ2IGSEACo06g6v5dZJFFio997GPlfb7CCisUH/nIR0Y9r2ZAAhKQgAQkIIGxQWCi/7wrYyOr5lICEpCABCQgAQlIQAISGE8EXnjhheKdd94ppphiimKyySbTj/94qnzLOm4IsJ4H6/Zwj08++eTlr7M5xk31W1AJSEACEpBATwho9OgJVhOVgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhgpAlMPNIX9HoSkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIoBcENHr0gqppSkACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkMOIENHqMOHIvKAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQQC8IaPToBVXTlMAYIPDmm2+OgVyaRQlIQAISkED3CAzis+/tt98u/v3vf3cPkimNGwK2nXFT1QNf0LfeequvyjiIz5q+AmxmxiUBn1njstottASGReA9wzrbkyUggTFH4Nlnny0OPfTQ4sorryyWW2654uCDDy7mmmuuMVeOfsjwYYcdVjzzzDOVWdltt92K+eabr/J4Px/42te+VrzwwgtlFldZZZVi3XXX7efs9k3eXnrppeL8888vHnnkkeKxxx4rfvvb3xbve9/7iplmmqmYeeaZi+OOO67c7psMD3BG7r333uK0006rLOG8885b7L777pXH2z1gnTcndcsttxTXXntt8fjjjxcPP/xw8fe//734wAc+UMw666zFmmuuWWy77bbFK6+8Uuyzzz7FO++8k01s4oknLo4//vjiPe8Z+mvr3XffXdBn0y422mij8tnHvTnW5cILLyyOOeaY4uWXXy6++tWvFttvv/1YL5L575DA6aefXtC+kbnnnrvYc88920rBttMWJiP1OQGUoEceeWRxxhlnFPPMM0+x3377FSuuuOKo5drvrFFD74UHnIDPrAGvYIsngR4RmOg/70qP0jZZCUhgCAT4cL3tttvqzvzc5z5XLLDAArUwRnSizItv32mmmabYbLPNanGqNiZMmFCcdNJJtcPrrLNOqYitBbjRNoEVVlihePLJJyvjo/xeZpllKo+PxAEUsijeUcA/+uijpTIe5TvtKfzNMsssDVlZcMEFi3/+859l+DbbbFMccMABDXEMqCdw/fXXl8omlLpV8uCDDxZTTz111WHDu0gAw+4OO+xQmeJiiy1WXHLJJZXH2zlgnVdTou/ByHDRRRdVRkJBv++++xYoiRZffPHKeBzAkPje9763aZxmB9dee+3i/vvvr0XhWYjxYyzLP/7xj2KRRRapK8INN9xQfPSjH60Lc2ewCWA4vPrqq8tC0h4uu+yylgW27bREZIQxQuDGG28stthii1puMarfeeedwzKS1xIbwobfWUOA5ikSaEHAZ1YLQB6WgAQqCQx9yFxlkh6QgASGQ+DWW28tjj766Loknn/++eKQQw6phaHE5qU6Fl7y2zF6hNGA4dx0P4T38nfLLbesKZ/WWGONUjHWy+uN17QvvfTSYtddd80W/4orrqiFb7rppuXIuLEw6rlf2w4f3eStmcBXg0czQmPrmHVeXV8Y5HkexUaGXOycwTUXb7hhr7/+ekNeHnjggRE1erz22mt1RvADDzywYNDBcOR3v/tdw+kPPfSQRo8GKgakBGw7KRH3xyoBBpPEwsCTv/3tb0U7z5eTTz65nCHC+dNPP305KzFOayjb6XdVuj+UND1HAmOJgO87Y6m2zKsEBp+ARo/Br2NLOAAErrvuujqjRzoTpJMirr/++sXtt99eO2WDDTaobY/UBh8jYTQ8IzfGqpx66qkFL3ZBmE2x9957h91R+2WENTMzfvrTn7aVh+9///vFX//61wIXGbiR6Wfpx7bDzKvDDz+8DtsnP/nJUumLq5HJJpusoE7eeOONujju9JbAZz/72YYRz7j2w73RcMU6b07wZz/7WYORYccddyyYXfOhD32ovBeee+652gzGGWaYoaGuMNqee+65zS/U5lFmiPDsu/jii2tnrLXWWrXtkdjABUt47nG9MJNuONdedNFFS55/+ctfasmMpluXWibc6HsCtp2+ryIz2CYB+vJ4sNiSSy7ZlsGD5HELGPrlbr2j9cN3VpvojCaBnhDwfacnWE1UAhIYIgGNHkME52kSGEkCf/zjH4s///nPtZf4m2++eciXZ2TptNNOWzBKGXciq6666pDTGu8nput1oNzuB9luu+0KZgzFgrKR+mYdg6effrqgDTH9Xxk+ARS88ahZZi+xdke/tIfhl3BspsCsmtT1z4wzztiVwljnzTF+85vfrIuAu520LuIIk0wyScPxVrNE4vPb2cbgRR4wTq+++urFEkss0c5pfR2H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mzx8X2t72gQ7v28fG/74XwNr7ljyoP7A8MdtwCX9bOcr77DHLuxjYz+fZSPHPG8PPfSQ9e7dOxCfEQQQQAABBBBAoJgC6hvCDyrIeOqpp6xv377+5MjD1Uqa9FTBxeTJk5PzDB482Jo2bZocL+ZARabP78si6jaPGTMmEPWOO+6wE088MTDNjahT8I8++siNlvkZ7rRe+1oFKLVq1SpzXj9Cu3btAgUz6sj+qKOO8qMwjAACCOQsUNJeAgEBBBBAAAEEEECgUALHH3+83VtS4NFx200SBR5az+u37mjffzvdHrp/WKnVttl6a7vrnj/b8lVr7JwH/mpjXn7F9ABLgUcpKiYggAACCCCAQJEFVNPj5JNPDqRi2LBhNmvWrMC0bEa23377QPS7777bwh2WByJU8Eic06eCDD/07NnTHw0M//3vfw+MRxlRgYUfvv76a3800vB2XvOumuHee++1pUuXRpqXSAgggEBUAQo9okoRDwEEEEAAAQQQyFJg33272gsvPG/dOtW3d+7pkpy7XasG1r9nI3vy8eH2yMMPJKdr4JOJE6zv2WeUdFxZw2qVVPV/6aWX7OCDDw7EYQQBBBBAAAEEEIiLwEUXXRRIijqbVpNUb731VmB61JFevXoFoqrJrBtvvNFWrFgRmF6skTinL9xfxi+//JKS6bHHHrMZM/6//7iUMVJPbN++feCLW2+91dauXRuYVtbIgQceGGj+bOrUqYk+7+bNm1fWrHyPAAIIRBaocW1JiBybiAgggAACCCCAAAKRBHbcob19WtI0w2mHbG6PDdyt1Dx77dDEJkydY8+++J59M/0bO+Sww+3xR4fbbTffYNWrVzO9OammHbbZZptS8zIBAQQQQAABBBCIi0CjRo1syZIlNmnSpGSS1qxZY2PHjrWvvvrKfvzxx8T36mRbNUAmTJhQ8lLIC8m4HTt2TBSSuAmtW7e22bNn2xdffOEm2SeffGKPPvpoojmlX3/9NVEzQIUr3377bWJ5L7/8csn9U3ULd6yuBahGg7+sE044wbSOVOG5555LpNd997//+78W7lsjX+lT01Affvhhon+LH374IWHl175Qvye6D9R3+lOhQLgPFZdO96nt9JsG07B8t9hii0ShkcaHDx9ud911l5sl+al99vPPP5tcFT9VPxval++9915yHnVcr30pe82nP9X+ULNZb775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Y61Pnz6Bzb/xxhvtsMMOs6233jownREEEECgGALVi7FS1okAAggggAACCBRTQG+pNWrUwNasXmGTH94rcoHH+E8XWPdLJ9uCX9cl3vqjwKOYe5F1I4AAAggggMDGLqDaBY8++mhgM1W747HHHotU4BGY0RvhHs7DKMfgIYccYqNGjSrVTJgKPggIIIBAHAQo9IjDXiANCCCAAAIIIFBhAur8cs8997DqG9bYrNH7W/PN60Ra9+C/fm0nXz/Vlq9ab9dcc40NGTIk0nxEQgABBBBAAAEEECifwMiRIwMzqkmre++912rXrh2Ynu2ImmeaP39+trMR3xPYa6+97Pbbb/emmL3++uv2008/BaYxggACCBRDgEKPYqizTgQQQAABBBAoisDQoUPtoIO625aNzGaOPiByGu4cNcPuGjXb1m+oZvfff79deeWVkeclIgIIIIAAAggggED2AqtWrbLRo0cHZjznnHOsZs38tNQ+ZsyYwLIZyV5AzVmpLw8/vPTSS/4owwgggEBRBCj0KAo7K0UAAQQQQACBiha4+OKL7eKLL7Ltmte0KY/vF3n1f3zwS7vlqZlWt179RKeNetgmIIAAAggggAACCBRWYMKECYEOyLW24447Lm8rfeSRR2zdunV5Wd6KFSvs888/T9wrjh8/3mbNmmUbNmwo17KXLl2a6HNEhTJaVrg/k/IsVH2VfP311/bqq6/aK6+8Yl999ZWtXr26PIsKzKO+Ps4666zAtHHjxgXGGUEAAQSKIZCf4vFipJx1IoAAAggggAACEQV69uxpL7zwgu21Yx177bbSnVamW8yRf/zIPvl6jW266eb2xhtvJDpwTBeX6QgggAACCCCAAAL5E5gyZUpgYepAu3HjxoFp2Y60a9cukfmv+WbPnm3vv/++HXBA9Nq/4fVNmjTJrrjiClPfI+FQv359O+mkk2zgwIFWp07Zzal+9tlndumllybT5y9PNSruvPNOf1KkYRV0DBo0KFGIkmqGAw880AYPHmytWrVK9XWkadrGO+64IxlXhT9r1qwxFYgQEEAAgWIJUNOjWPKsFwEEEEAAAQQqRGC77bYreevuBTu6S6OsCjx6XfOpTZq+1pq3aJl4G26XXXapkPSyEgQQQAABBBBAAAFL1JzwHfbZZx9/tFzDWkaHDh2S8/71r39NDmczsH79envggQcSNU9SFXhoWcuWLUt0wn700Ufb9OnTMy7+xRdftGOOOSZlgYdmVF8ZAwYMyLgM/0vVMlFn7epw/KOPPvK/Cgyrr7t999038XJQ4IssRpo2bWoqTPJDWdvrx2UYAQQQKIQAhR6FUGWZCCCAAAIIIBALgR122MG+/XaGHdu1iT05qFPkNHW79BP74IsV1mbrbey7774rqemxaeR5iYgAAggggAACCCCQu8C0adMCC9lqq60C4+UZqVatmp155pnJWV977bVEU1TJCREH1NeIakhECaptodoQK1euTBn9iy++sAsvvDDld/7EbDoJVxNTquERNagZ2G+//TZq9FLxWrZsGZj2/fffB8YZQQABBCpagEKPihZnfQgggAACCCBQIQItWzQveVtumt1+Xlt7bOCukdY5b9Eq63TuBPvyh1V24IHdLPywHWkhREIAAQQQQAABBBDIWWDRokWBZWy55ZaB8fKO9OjRw9T0lAujRo1yg5E+VXhxyy23lIqrZq6eeeYZGzZsmHXr1i3w/YIFC+ypp54KTHMj9913nxtMft5666324Ycf2sSJExPzudopUfr3UF8dt912W3JZGlBn45qmwhD9adg3UByts7yhefPmgVmXLFkSGGcEAQQQqGgBCj0qWpz1IYAAAggggEDBBTZt0th+/nmuvXJzR+tzVJtI6/v4q8W2T79JNmvBWuvZs5fpzT8CAggggAACCCCAQHEEfv3118CK81HTQwtUZv8pp5ySXPbjjz9u6ug7alDhhQox/KC+48477zxT81lHHXWUDR8+3Hr16uVHSfR7oSav/KDaFeGOv9UsldLXokULU0GPmp8aO3asde3a1Z817fDTTz8d6PxcTU+99dZbdvLJJ1vHjh0TfxpW01YqDHFBnZyrVkp5QrjQI7yd5Vkm8yCAAAK5CFDokYse8yKAAAIIIIBArATmzZtn9erVsZUrltiUx/exvXeK1izVix/MtWOv/NyWLF9v5557ro0cOTJW20ViEEAAAQQQQACBqiSgPinCGef16tXLG4Ey/V1QAYYKBaKG8ePHB6KquaxOnYLNqNasWTPRwbkfUdvz73//259k7733XmBcBRv77bdfYJpGtDx1iB4lvPnmm4FoqsHRpEmTwDSNqEBFtVP8UN6+OMK1cKjp4asyjAACxRCg0KMY6qwTAQQQQAABBPIuMGnSJGvZsoVV27DGZj93gG3ZuFakdTz40vd29m3TbNWaDXbVVVfZ0KFDI81HJAQQQAABBBBAAIHCCKjvjUKG7bff3vbYY4/kKrLp0Dzc/Kn660gVVDNFTWn5YebMmf6ozZ49OzCeblmKtOuu0ZprnTFjRnKZ2267rXXu3Dk5Hh7o3r17YNKPP/4YGI86Eq4pU6NGjaizEg8BBBAoiEDNgiyVhSKAAAIIIIAAAhUo8Oijj1rfc86xzRtVs6+e3D/ymq9/fJoNfWGu1ahR0wYMGJAo9Ig8MxERQAABBBBAAAEECiagZqj82h6LFy+2xo0b5219qqGhPjMU1NTTd999Zw0bNsy4fGXuhwsq2rZtm3ae9u3b28svv5z8Plyo8NNPPyW/04AKKTKFHXfc0aZOnZo2itLn9/uxYsUKe+mll9LGV40aP/jz+tPLGp4zZ04gSoMGDQLjjCCAAAIVLUChR0WLsz4EEEAAAQQQyKuAqvqrM8a2zWrYxw/uG3nZF977uT07frHVrVs/0UHk0UcfHXleIiKAAAIIIIAAAggUVkD9TfiFHj///HNeCz0OP/zwRP8ebh3qhPyckpdoMoVw5r7ihjsE9+cPN/sULvQI1/zYYost/NlLDW+6aeamW8PpUwFNv379Si0n3YSFCxem+yrj9Llz5wa+p9AjwMEIAggUQYDmrYqAzioRQAABBBBAID8C6uRR7RR3alcrqwKP026abKPf/dWabLqZvfvuu0aBR372B0tBAAEEEEAAAQTyJRDO4FffbfkMtWvXNtX2cEEdmq9cudKNpvysXj27bLRwTYpws13h9YW/T5mIDBM32WSTDN+W/VXdunXLjpQixqxZswJTU/UhEojACAIIIFBgAWp6FBiYxSOAAAIIIIBAYQQOPPDARIHF4Xs2sqevDnYemWmNRw2aZJO+XmWtWm9t//rXv2yzzTbLFJ3vEEAAAQQQQAABBIogsPPOO9vkyZOTaw7XJkh+kcOAOjS/7777EktQjY9XX30149LUT0c4qNPudM1ihdPcpk2bwOytW7e2zz//PDlNTXi1aNEiOZ7tQKr0HXLIIZEXE7XfkPACs22mKzw/4wgggEC+BSj0yLcoy0MAAQQQQACBggt06NDBpkz5ws46Yku76/c7RVrf6rXrrfuln9q3s1fbLrvsmijwiDQjkRBAAAEEEEAAAQQqXED9V/jh73//u/Xs2dOflPPwNttsY3qRRn16KKi2R6ZQs2ZNU8GF3/fF9OnTrVOn1C/gTJkyJbA4FXL4oVWrVv6oqbmr8HYHIpQxopoiKrjwC4sGDx5sTZs2LWPO8n/9zTffBDy0pHDhTvmXzpwIIIBA+QSyq5dXvnUwFwIIIIAAAgggkDeB5s2bl3TgOMWuP3vryAUe02cus059J9qM2Wtsv/0PoMAjb3uDBSGAAAIIIIAAAoUR6NixY2DB6hA83GdFIEI5R04//fTknH5hhiaGm6fStHBn4yNGjNDkUkEFGG+88UZgeriQIzw+ZsyYQPzwyLfffhueVGp8++23D0y7++67U25HIFIOI0899VRg7q5du1q2zYAFFsAIAgggkAcBCj3ygMgiEEAAAQQQQKBiBLbYfDObP2+uPXhpO+t33DaRVjp+0nw7eMBnNv/Xdfbb3/7WXn/99UjzEQkBBBBAAAEEEECgeAKqsaDOzP2gzsbzHQ466KBS68m0jiOPPDLw9ahRo2z8+PGBaeqr4+qrrw5M07aEC3L22GOPQBwV7Hz66aeBaW7kvffeM3VMXlbo1atXIMrIkSPtxhtvtBUrVgSm52NETYJp+X445phj/FGGEUAAgaIIUOhRFHZWigACCCCAAALZCtStW8eWLl1k00d0seMPbB5p9ptHTLf/ufFLW7F6gx133HH29NNPR5qPSAgggAACCCCAAALFFVBtgVNPPTWQCDU/le/MezVZ5XdoHlhhipETTjihVPNNml8FC6qp8eSTT9opp5xSqpbHH//4R6tTp05giWqyVYUuftBLOk888URJzeapieauJk2aZLfccouddtppfrS0w126dDH1VeKHhx9+2Dp37myq9fHaa68lCla++OKLRO3n559/3u644w775z//6c8SafiFF14wFXz44YgjjvBHGUYAAQSKIlCtpKrehqKsmZUigAACCCCAAAIRBNRO8E477Wi1aqy3H5/dL8Ic/4ly16gZNnjEzJKRanbllVfatddeG3leIiKAAAIIIIAAAggUX0BNRKm5JD8ce+yxdu+995r6r4gStt5662S0M844w2644YbkuBuYNWuWqbAgHAYOHGjnn39+eLKpRsYFF1xQanq6Cerj4u233zYVsITDxx9/bOHaGeE4bly1RRYsWOBGEzVM2rZtmxx3A4sWLUq4hQsk3PepPvv162eXXXZZqq9STlOhTLiA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gAACCCCAAAIIIIAAAggggAACEqCmB8cBAggggAACCORVYM6cOVa3bh1bs2qpfTOia+QCj4EPfmkj3lhoVq26/eEPf6DAI697hYUhgAACCCCAAAIIIIAAAgggUDUEKPSoGvuZrUQAAQQQQKBCBEaPHm2tW7eyOjVW26zR+1vDetEqlZ5z+2f2xN8X2oaS9zHuvvtuu+GGGyokvawEAQQQQAABBBBAAAEEEEAAAQQ2LoFqG0rCxrVJbA0CCCCAAAIIFEug1iY1bf36dTZ/7IGRk9Drmk9twlerrXqNTeyRRx6x448/PvK8REQAAQQQQAABBBBAAAEEEEAAAQR8AWp6+BoMI4AAAggggEC5BX7++eeSlqmqWb26tazn1RMjLefgyybZxK/XWsNGTey1116jwCOSGpEQQAABBBBAAAEEEEAAAQQQQCCdAIUe6WSYjgACCCCAAAJZCZx37lm2605tbMjNZ9nn36238+76d9r55y1ebXv//hObPmuDNWvWwiZMmGD77LNP2vh8gQACCCCAAAIIIIAAAggggAACCEQRoNAjihJxEEAAAQQQQCCjwLx58+xvr79pp/bqaod128X++sDFNv7zVaa+OsLhk68XW7f+k23OIrPf/KadTZs2zVq2bBmOxjgCCCCAAAIIIIAAAggggAACCCCQtQCFHlmTMQMCCCCAAAIIhAUuvvA827bNlnbicV0SX3XYobU9/VB/e/ffq+zUGyclo7/4wVzredUUW7KyhnXuvId9/PHHye8YQAABBBBAAAEEEEAAAQQQQAABBHIVoCPzXAWZHwEEEEAAgSousHTpUtu6TUu77epT7IiDdw1ofPbF99bn4vus83Y1bf9dNrWrH/nBataqY4cffrg999xzgbiMIIAAAggggAACCCCAAAIIIIAAArkKUOiRqyDzI4AAAgggUMUFDjm4m82f+529PPLylBKz5iy0I08ebL8sWmG1a9e23r1724MPPpgyLhMRQAABBBBAAAEEEEAAAQQQQACBXARo3ioXPeZFAAEEEECgigts2LChpBPyidarx55pJKrZ8Gc+s9p1m9imm25qu+++OwUeaaSYjAACCCCAAAIIIIAAAggggAACuQvUzH0RLAEBBBBAAAEEqqpA375nW9OtGluf07uXIrj8xnH25jsfW4MGDe2oo46yhx56qFQcJiCAAAIIIIAAAggggAACCCCAAAL5FKB5q3xqsiwEEEAAAQSqmECTJg2t3fa72G1X9rD22zSxxb8ut5uHvmkvv/5P22yzze3444+3W2+9tYqpsLkIIIAAAggggAACCCCAAAIIIFAsAWp6FEue9SKAAAIIIFDJBU499VSrVbOGbdWild3x8Ee2Zuls+3zq99aqVRu7//4H7KSTTqrkW0jyEUAAAQQQQAABBBBAAAEEEECgsglQ06Oy7THSiwACCCCAQEwENtussbX7zba2bu0q+2LqDNt7733s3HPPNRWGEBBAAAEEEEAAAQQQQAABBBBAAIFiCFDToxjqrBMBBBBAAIFKLtCzZ09btbKksOOLr+zAbt3t4Ueest12262SbxXJRwABBBBAAAEEEEAAAQQQQACByi5AoUdl34OkHwEEEEAAgSIIdO60s82cOdOee+45a926dRFSwCoRQAABBBBAAAEEEEAAAQQQQACB0gI0b1XahCkIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQCQWqV8I0k2QEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoJQAhR6lSJiAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAClVGAQo/KuNdIMwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCJQSoCPzUiRMQAABBBBAAAEEEEAAAQQQQAABBBBAIHeBJYvW2oR3F9rPs1bbsiXrbdniNbZunVmzNrWtWava1rTlfz4326pW7itjCQgggAACCQE6MudAQAABBBBAAAEEEEAAAQQQQAABBBBAIE8CKuh4Y8wv9u20pfb5xKWRllqvfg3bsVN967RvI+uwRyNrtCnvKUeCIxICCCCQQoBCjxQoTEIAAQQQQOD/2DsP+CiKL44/SkIJvffeewdBBAERpVuxUFSwIBbEBlZUFEHEiv7tDQVBmhRBujRBlI703kMPvf3zmzjL7ObucpfcJVd+7/NZdnZ2Znbmuxtud96890iABEiABEiABEiABEiABEiABHwhcDrukvz40T5Z/scxOXfussRki1dk1MopJcpml+jo9BKdKUP8ll6i4rdTJy5K3MkL8dYfF+O3C7Lg94O2S5Uqn1Uq1oyRGg1zKGWI7SQPSIAESIAEPBKg0sMjHp4kARIgARIgARIgARIgARIgARIgARIgARIgAc8EZk88Kr9+v1+O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CZAACZAACZAACZBAahCg0iM1KPMaJEACJEACJEACJEACJEACbgmUKVNGLl26pM5v3rxZoqKi3JblCRIgARIgARIgARIgARIgARLwRIBKD090eI4ESIAESIAESIAESIAESCBgBK5cuSKlS5cW7CFbtmyRjBn5iRIw4GyYBEiABEiABEiABEiABCKAAL8oIuAmc4gkQAIkQAIkQAIkQAIkEGwELl++LOXKlbMUHtu3b5d06dIFWzfZHxIgARIgARIgARIgARIggRAjkD7E+svukgAJkAAJkAAJkAAJkAAJhDiBixcvCmJ4wKVV+vTpZdu2bVR4hPg9ZfdJgARIgARIgARIgARIIFgIUOkRLHeC/SABEiABEiABEiABEiCBCCAAhUflypUF+wwZMsimTZuU4iMChs4hkgAJkAAJkAAJkAAJkAAJpAIBKj1SATIvQQIkQAIkQAIkQAIkQAIkIHLhwgWpWrWqnD9/XsXu2LBhA2N48MEgARIgARIgARIgARIgARLwKwEqPfyKk42RAAmQAAmQAAmQAAmQAAm4InDu3DmpUaOGnD17VqKiomTdunVq76os80iABEiABEiABEiABEiABEgguQSo9EguOdYjARIgARIgARIgARIgARLwigAUHXXq1JHTp09LdHS0rF69WjJlyuRVXRYiARIgARIgARIgARIgARIgAV8IUOnhCy2WJQESIAESIAESIAESIAES8InAmTNnpF69ehIXFyeZM2eWFStWSJYsWXxqg4VJgARIgARIgARIgARIgARIwFsCVHp4S4rlSIAESIAESIAESIAESIAEfCJw6tQpadiwoZw8eVIpOpYvXy4xMTE+tcHCJEACJEACJEACJEACJEACJOALASo9fKHFsiRAAiRAAiRAAiRAAiRAAl4RgMKjSZMmcvz4ccmaNassXbpUsmXL5lVdFiIBEiABEiABEiABEiABEiCB5BKg0iO55FiPBEiABEiABEiABEiABEjAJQG4smratKkcPXpUWXYsXrxYcuTI4bIsM0mABEiABEiABEiABEiABEjAnwSo9PAnTbZFAiRAAiRAAiRAAiRAAhFO4MSJE9KsWTM5fPiwsuxYsGCB5MqVK8KpcPgkQAIkQAKRRgCK/5IlS0rFihUjbegcLwmQAAmkOQEqPdL8FrADJEACJEACJEACJEACJBAeBODKqmXLlhIb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gNUGrDngvqpXr15K6EAlP/74o7Lw0FYgoRY8dMfnz58v1atX16dC4cNGwQMSIAESIAESSJYARY9k8fAmCZAACYSMAEWPkKFlxSRAAiRAAiRAAiRAAiSQOgIQPsaOHSs9evRQBSF01KtXT4kdEEAghiBo+SeffCIIfB6uNGnSpESBWCl8hIs82yEBEiABEnAjgfPnz6tu072VG58e+0wCJOAFAhQ9vPAUOQYSIAESIAESIAESIAFPEXj55ZeV+KGDiWvrjhYtWsiMGTOkZcuWYR/v6NGjpWPHjna7FD5sFDwgARIgARIggUQELly4oM5p6ZEIC09IgARIIGwEMoetJTZEAiRAAiRAAiRAAiRAAiQQMAG4uYLAgTgesABB0vuAKwlyxiFDhsjll18un3/+uaoZwgfSE088ofb8QwIkQAIkQAIkIELRg68CEiABEogsAYoekeXP1kmABEiABEiABEiABEggWQIlSpRI9n64b7766quSL18+GTRokGqawke4nwDbIwESIAESiHYCFD2i/QmxfyRAAl4nQPdWXn/CHB8JkAAJkAAJkAAJkAAJBJlAnz59ZMCAAXatdHVlo+ABCZAACZAACdiWHozpwRcDCZAACUSGAEWPyHBnqyRAAiRAAiRAAiRAAiTgagL33HOPvPfee/YYKHzYKHhAAiRAAiQQ4wRo6RHjLwAOnwRIIOIEKHpE/BGwAyRAAiRAAiRAAiRAAiTgTgIdOnQQBDjXicKHJsE9CZAACZBALBOg6BHLT59jJwESiAYCFD2i4SmwDyRAAiRAAiRAAiRAAiTgUgKNGjWSyZMn272n8GGj4AEJkAAJkECMEjh//rwaOd1bxegLgMMmARKIOAGKHhF/BOwACZAACZAACZAACZAACbibQLVq1eSXX36xB0Hhw0bBAxIgARIggRgkQEuPGHzoHDIJkEBUEaDoEVWPg50hARIgARIgARIgARIgAXcSKFWqlKxZs8buPIUPGwUPSIAESIAEYowARY8Ye+AcLgmQQNQRoOgRdY+EHSIBEiABEiABEiABEiABdxLInTu3bNu2TS677DI1AAof7nyO7DUJkAAJkED6CGjRg+6t0seRpUmABEggrQQoeqSVHMuRAAmQAAmQAAmQAAmQAAn4JLBu3TopXry4ukfhwyciXiQBEiABEvAwAcb08PDD5dBIgARcQYCihyseEztJAiRAAiRAAiRAAiRAAu4isHDhQqlatarqNIUPdz079pYESIAESCB9BLSlR3x8fPoqYmkSIAESIIE0EaDokSZsLEQCJEACJEACJEACJEACJJASgalTp0r9+vVVNgofKdHifRIgARIgAa8Q0G6t9N4r4+I4SIAESMAtBCh6uOVJsZ8kQAIkQAIkQAIkQAIk4EICX331ldx8882q5xQ+XPgA2WUSIAESIIFUE6B7q1QjYwESIAESCCoBih5BxcnKSIAESIAESIAESIAESIAEnATef/996datm7pM4cNJh+ckQAIkQAJeI0D3Vl57ohwPCZCA2whQ9HDbE2N/SYAESIAESIAESIAESMCFBF577TXp3bu36jmFDxc+QHaZBEiABEggYAJa9KB7q4CRMSMJkAAJBJUARY+g4mRlJEACJEACJEACJEACJEAC/gg89dRT8uKLL6rbFD78UeJ1EiABEiABtxPQokdcXJzbh8L+kwAJkIArCVD0cOVjY6dJgARIgARIgARIgARIwJ0EevbsKQMHDlSdp/DhzmfIXpMACZAACSRPQMf0oOiRPCfeJQESIG9pDswAAEAASURBVIFQEaDoESqyrJcESIAESIAESIAESIAESMAngc6dO8tnn32m7lH48ImIF0mABEiABFxMQFt60L2Vix8iu04CJOBqAhQ9XP342HkSIAESIAESIAESIAEScCeBpk2bypQpU1TnKXy48xmy1yRAAiRAAr4JaNGDlh6++fAqCZAACYSaAEWPUBNm/SRAAiRAAiRAAiRAAiRAAj4JXHPNNbJgwQJ1j8KHT0S8SAIkQAIk4EICFD1c+NDYZRIgAU8RoOjhqcfJwZAACZAACZAACZAACZCAuwiUKFFCli5dKqVKlRIIH6+//rq7BsDekgAJkAAJkICDgBY96N7KAYanJEACJBAmAhQ9wgSazZAACZAACZAACZAACZAACfgmUKhQIeXqqn79+vLJJ5/IM8884zsjr5IACZAACZCACwho0YPurVzwsNhFEiABTxKg6OHJx8pBkQAJkAAJkAAJkAAJkIC7COTNm1dGjBghLVq0kDFjxsjDDz8s586dc9cg2FsSIAESIAESsAhQ9ODLgARIgAQiS4CiR2T5s3USIAESIAESIAESIAESIIFLBLJnzy4ff/yxtGnTRqZOnSo9e/aUw4cPkw8JkAAJkAAJuIrA+fPnVX/p3spVj42dJQES8BABih4eepgcCgmQAAmQAAmQAAmQAAm4nUDGjBll2LBh0rJlS5k3b54SPrZv3x7QsCCU3H777QHlZSYSIAESIAESCBUBWnqEiizrJQESIIHACFD0CIwTc5EACZAACZAACZAACZAACYSRAGJ7wNXV8uXLlfCxbt26FFvfsGGD/Pbbb/Ldd9+lmJcZSIAESIAESCBUBLToQUuPUBFmvSRAAiSQPAGKHsnz4V0SIAESIAESIAESIAESIIEIEfj000+lWbNm8tdffynhY8mSJcn25O6771b3v//++2Tz8SYJkAAJkAAJhJKAFj0YyDyUlFk3CZAACfgnQNHDPxveIQESIAESIAESIAESIAESiDCBkSNHSuPGjWXXrl1K+Pjpp5/89uiKK64QCB/z58+XuXPn+s3HGyRAAiRAAiQQSgI6pgdFj1BSZt0kQAIk4J8ARQ//bHiHBEiABEiABEiABEiABEggCgiMGjVKGjZsKMeOHVPCx+TJk/32qlOnTurehAkT/ObhDRIgARIgARIIJQFt6UH3VqGkzLpJgARIwD8Bih7+2fAOCZAACZAACZAACZAACZBAlBD44osvpF69eoIJpN69e8vXX3/ts2c1atSQ9u3bC4SRFStW+MzDiyRAAiRAAiQQSgJa7IiPjw9lM6ybBEiABEjADwGKHn7A8DIJkAAJkAAJkAAJkAAJkEB0EYDQceONN6pOPffcc4Jg575S586d1eVx48b5us1rJEACJEACJBBSAtq9lRY/QtoYKycBEiABEkhCgKJHEiS8QAIkQAIkQAIkQAIkQAIkEK0ExowZI7Vr11bde/3112XgwIFJuooYIPXr1/drDZKkAC+QAAmQAAmQQBAJ0L1VEGGyKhIgARJIAwGKHmmAxiIkQAIkQAIkQAIkQAIkQAKRIwALjuuvv151YMiQITJgwIAknenYsaO6NmjQoCT3eIEESIAESIAEQklAix50bxVKyqybBEiABPwToOjhnw3vkAAJkAAJkAAJkAAJkAAJRCkBBCpH/A6kESNGSL9+/RL1FKJHuXLllLXHvn37Et3jCQmQAAmQAAmEkoAWPejeKpSUWTcJkAAJ+CdA0cM/G94hARIgARIgARIgARIgARKIYgITJ06UatWqqR6OHTtWHn74Ybu3WbJkEQgf+/fvp5srmwoPSIAESIAEwkGAMT3CQZltkAAJkIB/AhQ9/LPhHRIgARIgARIgARIgARIggSgnMHnyZLn22mtVL6dOnSp333233WOIHjlz5qS1h02EByRAAiRAAuEgoC096N4qHLTZBgmQAAkkJUDRIykTXiEBEiABEiABEiABEiABEogCAhAx5s+fn2JPfvjhB9vV1bx586RTp06qTKlSpWjtkSI9ZiABEiABEgg2AS160L1VsMmyPhIgARIIjABFj8A4MRcJkAAJkAAJkAAJkAAJkECYCYwePVq6desmXbp0SdFFFVxd1apVS/Vw+fLl0qJFC3WsA5p//fXXsnfv3jCPgM2RAAmQAAnEIgGKHrH41DlmEiCBaCKQ6RUrRVOH2BcSIAESIAESIAESIAESIAESAAHE6zh79qzMmjVL5syZozZcv/rqqyVDhgw4TJRuvfVWWbx4sezcuVMOHTok48ePlxdeeEFWr14ta9eulezZs0u9evUSleEJCZAACZAACQSbQOHChVVMqaxZsyrhPtj1sz4SIAESIIHkCWSw/AvGJ5+Fd0mABEiABEiABEiABEiABEggcgQWLVoko0aNkmnTpqlOVKlSRW677Ta1IWaHM91///0yc+ZMdTlv3rzSr18/JX7kzp1bEAPkyiuvdBbhOQmQAAmQAAkEncCJEyckV65cQa+XFZIACZAACSRPgJYeyfPhXRIgARIgARIgARIgARIggQgTKFGihLRr104FLD958qQsWbJE5s6dK9OnT5fTp09LuXLlJEeOHHYv27dvL9u3b5f169crSxHE+ahcubLs2rVLMmbMKI0bN7bz8oAESIAESIAEQkUAlh5MJEACJEAC4SdAS4/wM2eLJEACJEACJEACJEACJEAC6SAAV1eI0TF79mxVS7FixQSurTp37iwIXq7Tiy++KIgLYqZMmTIpa4+qVaual3lMAiRAAiRAAiRAAiRAAiTgEQK09PDIg+QwSIAESIAESIAESIAESCBWCMA9VYcOHWzLj5UrVwpcYI0bN04FK8+XL58ULVpUmjZtKufPn5elS5faaODdFwFmdaBz+wYPSIAESIAESIAESIAESIAEPEGAlh6eeIwcBAmQAAmQAAmQAAmQAAnELoHly5eroOUTJ05U7q5AAu6wYPkB4ePNN9+Ujz76KBGgb775RurWrZvoGk9IgARIgARIgARIgARIgATcT4Cih/ufIUdAAiRAAiRAAiRAAiRAAiRwiQBcX40dO1Z+/PFHdaVmzZrKKuT3338XiCI6wb3V1KlT9Sn3JEACJEACJEACJEACJEACHiFA0cMjD5LDIAESIAESIAESIAESIAES+JfA4sWL5fvvv1dCB4KdFypUSHLmzClbt261M3Xv3l1effVV+5wHJEACJEACJEACJEACJEAC7idA0cP9z5AjIAESIAESIAESIAESIAES8EPgyJEj8vnnnyvxwxQ8dPY+ffrIE088oU+5JwESIAESIAESIAESIAEScDmBjC7vP7tPAiRAAiRAAiRAAiRAAiRAAn4JIKg5RI158+bJiBEjpEGDBony+hJCEmXgCQmQAAmQAAmQAAmQAAmQgKsI0NLDVY+LnSUBEiABEiABEiABEiABEkgvgd27d8t//vMfOXDggPz999/prY7lSYAESIAESIAESIAESIAEoogARY8oehjsCgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQNoJ0L1V2tmxJAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQBQRoOgRRQ+DXSEBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEkg7AYoeaWfHkiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAlFEgKJHFD0MdoUESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCDtBCh6pJ0dS5IACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACUQRAYoeUfQw2BUSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIG0E6DokXZ2LEkCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBBFBDJHUV/YFRIgARIgARIgARIgARIgARJwNYELFy7Ixo0b1RiyZs0q5cqV8zueixcvyoYNG9T9XLlyScmSJf3m5Q0SIAESIAESIAESIAESIIHACGSIt1JgWZmLBEiABEiABEiABEiABEiABEggOQIQPZo3by5///23yjZv3jwpU6aMzyIzZsyQBx54QN3r1KmTDBo0yGc+XiQBEiABEiABEiABEiABEgicAN1bBc6KOUmABEiABEiABEiABEiABEggWQKZM2eWfv362Xk+/PBD+9g8iIuLk8GDB9uXHnvsMfuYByRAAiRAAiRAAiRAAiRAAmknQNEj7exYkgRIgARIgARIgARIgARIgASSEGjZsqVUqVJFXR87dqzs3LkzSZ6ff/5Z1q9fr6537dpVypYtmyQPL5AACZAACZAACZAACZAACaSeAEWP1DNjCRIgARIgARIgARIgARIgARLwSyBjxoyJrD0++eSTRHnhYXjIkCH2td69e9vHvg7OnDkje/fuFViHpDadPn1ald2zZ4+cPHkytcWZnwRIgARIgARIgARIgARcR4Cih+seGTtMAiRAAiRAAiRAAiRAAiQQ7QSaNGkiNWrUUN0cNWqUEh50n3/55RdZuXKlOr333nulePHi+pa9R2yQoUOHCuqpVKmS1K5dW1mDdO7cWVasWGHncx4cOXJERowYIe3bt5fSpUtL5cqVVdk6derIVVddpa599dVXzmI8JwESIAESIAESIAESIAHPEKDo4ZlHyYGQAAmQAAmQAAmQAAmQAAlEC4EMGTIksvb49NNP7a6ZVh4PPfSQfV0fnDhxQm677TZ599137YDo+t6yZcukY8eOMm7cOH3J3qMcXGUNGDDAFlXsm8ZBvnz5jDMekgAJkAAJkAAJkAAJkIC3CGT21nA4GhIgARIgARIgARIgARIgARKIDgJ169YVbAsXLpThw4fLgw8+KJs3bxYIF0gQPAoXLpyksxBIdJ7LLrtMlcufP7/88ccfMn78eJX/lVdekRYtWsjll19ul0dgdB0nBBdvueUWZemRO3dugcstuMmCJUjVqlXtMjwgARIgARIgARIgARIgAa8RyGD5k4332qA4HhIgARIgARIgARIgARIgARKIBgLLly+XTp06qa48/PDDSriACIIEN1UQM8wEUaJ69er2pSVLliQSRkaPHi0vvviiuo99z5497bxwfaXFEgRQh0srJhIgARIgARIgARIgARKINQJ0bxVrT5zjJQESIAESIAESIAESIAESCBuBmjVrStOmTVV7H374obL6wEnfvn2TCB64vnHjRuxU6tKlSyLBAxfvuOMOgfUH0pYtW9Re/8maNas+lO+++y7JffsmD0iABEiABEiABEiABEjAwwTo3srDD5dDIwESiE0CMOCDH/FoTtrIMNr7Gc0M2TcSIAESIAH3EHjqqafkp59+sjsM0QIBzH2lHTt22JfxOandWdkXrYPs2bPLyZMnk8T7aN26tS2qwNIDW9GiRaVBgwbSuHFjadSokeTKlcusisckQAIkQAIkQAIkQAIk4DkCFD0890g5IBIggVgngAkSLSqYLPwJDOkRSQJpx1ce9Ev3R9/X52afU3Os6zHr9lU+0Hy+yvIaCZAACZAACaSFwNVXXy1t27aVqVOnquKPP/645MmTx2dV+/fvt69D8PAleugMED7MdNddd0mWLFnknXfekUOHDqlbe/bsUUHPdeDz559/Xnr16mV/DpvleUwCJEACJEACJEACJEACXiBA0cMLT5FjIAESIIFkCKRXTEim6jRPmOg+aQFC73Vb+r4+D+Y+0Lp1nwLNH8w+si4SIAESIAHvEahfv74teiQXawOWGTrhuFChQvo0yd6M/YGbCFbetWtXQWyPpUuXyoIFC+TXX3+VlStX2mXfeOMNyZcvn9x66632NR6QAAmQAAmQAAmQAAmQgJcIUPTw0tPkWEiABEjAIoDJ+kAm6vWkPvb6GOWcZfU9wHXeCwQ4yut6dV1676wzpfp1OZ1Pnzv7ges6j/Neas+DWVdq22Z+EiABEiCB2CNQtmxZe9Bt2rSRl156yT4P9ACxPerVq6e2fv36ydGjR2Xo0KEyfPhwVcX06dMpegQKk/lIgARIgARIgARIgARcR4Cih+seGTtMAiRAAskTSMtkf1xcnC1MmLX7ExXMPCkd++uPeR3HgbRllkkpP8WKlJ4M75MACZAACUQjgfLly6tA5XBdNWLECKlbt67cdNNN6erq5ZdfLjfffLMtehw5ciRd9YW68NlT8bJ0+SIZ+v5ggWuwypUry5VXXqm2/Pnzh7p51k8CJEACKRLYt2+frF69Wm2IlZQzZ0713q33BQsWlCJFivh1ZZhiA8xAAiRAAiSQLgIUPdKFj4VJgARIwD0E/IkEcIWBBEHBn/hgig3JjRhtYNN1mnn9iRD++mWWNY9Tm98sm5rjQMecmjqZlwRIgARIgARSIoAg57DueOaZZ1TW++67T4keLVu2lLx580q2bNkEcT/27t0rjz32WKLqhgwZIufOnZPixYvbeU+dOiWbNm2SL7/80s4LISGa0oXzIufPxsuFCyJxFxOsVjdt3CGLFi1Sm9nXJg1bSpt2reTm9q0lR44c5i0ekwAJkEBICfz5558yadIkmTNnjvz1118BtQURBOKH3uC2EMfY586dW9WRnMvDgBphJhIgARIggSQEMliTR/FJrvICCZAACZCAZwgk9zavJ/b95dH3A4Gh68DeFD30dV2HWad5z7yu82Jv5jGvp3Tsrz6znFl3IPnNsjwmARIgARIggdQQ+Prrr+W5555TRSZPnizVqlXzWxwWmE8++aR89913fvPgBibgzIl/TJwhcHly6YorrpCZM2dKgQIFkssWknvWsOSfI/Hyz9E4OXksXs6dtcSOc/GycfNK+X3VPPnnxFE5cfKotT8mp06fkD83Lvfbj8IFi0uTxi2lrSWANGxc228+3iABEiCB9BL46aefZOLEiUrwSG9d/spv27bN3y1eJwESIAESSAMBWnqkARqLkAAJkIBbCJiT+s4+m5P8ODbzmvec5VI691XW1zWzvZTqNO+bfXUem/lSc6z74qufqamHeUmABEiABEggGASweGDQoEEqIPnbb7+dKBC5WT/cq5QpU0Zdunjxohw/fty8negYFiRdunSR7t27h13wOLQ3To4egNgRL3Fx8bJv/05Zs36RrF630BI75ss/ltDhTLkvu1wqXFlNzl84J//8c1iOHT8sFy5aJiGX0r4Du2TM+JFqu65aHalbr47kL5BHucPiqmlNiXsSIIH0EIDQASu5pUuXpqeaFMv26dNHWbUhplPhwoVTzM8MJEACJEACKROgpUfKjJiDBEiABFxLQE/mYwC+JvT1fb1HHl/5ggVAt+OvP77aMcvgPs51P817aem3v1gmvvrBayRAAt4loN9XvDtCjsztBPB5BXdWiMUBQQRurgoVKiSZMyddw3bw4EE5fPiwnD9/XiCE5MmTR/Lly6fcqJiWmOFgcu5MvOzZGifLl6yTRctnyo7dG2XLtnWyZ1/CiuZclrBRpHApKV6kjBQtXEaKFCojxYqUtq6Vkdy58ibp4pGjB2TfgR2WaGJtB3bKfhxb25o/FyfKO3bsWKHwkQgJT0iABFJJ4L333pP//e9/iUrBdWD16tWlVKlSUqJECbVlz549UR59AlEa79vYO4/hhtBf+vDDD6Vt27b+bvM6CZAACZBAgAQoegQIitlIgARIwC0ETCHA7LNTFND5sNcTflpMMMsF61i3p+vT/dHX9Tnu62s6r7lHPud9s6yZ19exWTY15XzVxWskQALeIID3Bb4feONZchTRQ2DTnwdl4oQZsnDxLFm+cq7dsRrXNJSrKtWS6lXrSfkr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8bnXbj1XYZvN2FWuxtnIKHQbNQChH4yzlMeaCQvcR33pvHKZW9h7wX2vKD93jG452ut4NF/H5bZx3ai5+blea58qR1kgX6+1LCzOpJ6295nF6SdOHZXPmARIoLQIXHvttfL1118HBtWvXz/BE8NLL710ID8s4SrnUY7Dz99++23ZbLPN6lWvrq4O5HHtSOAABxiL8Bo0aJAceuihMmTIEPnuu++SvF555RV55plnZI899kjm8YIESECEa1jDvwu4hjX8PeAISIAE8k+gRf5FUiIJkAAJkAAJJM4piKPYh1LXr9fU+S1evDjpfqgpKYz0XiJGwNxymV9YW5XtvkfcPPca7f10rmNy+83mGuPBK2xurjyt5+ZFXbt108mNksF8EiCBxkng448/lrvuuisweOzugCulOAaPQEMncf/99zspXmZKAMaPp556StZcc81A0wsvvDCwqyZQyAQJNEMCXMNK86ZzDSvN+8JRkQAJZEaARo/MeLE2CZAACZBADAKqhEWMEKWIhbFD66aqZ4U0kX90RwGexlcFfBSfxjRl915jPjq/TOeQion2obEr230fab6+v5AOkxvWRtvmGuciW9siThVQrgZDnV+q+iwjARJoegQefPDBwKTg0ur666+X1q1bB/IzTUBh//PPP2fajPUdAnAndu+99zo5Yl2QvfTSS4E8JkigORPgGla6d59rWOneG46MBEggHgEaPeJxYi0SIAESIIEYBFQJixhK2PLy8noGD5RpPYgMq6d1EDeFoPPVHR5qEMDcm0Jw7xPmpvPL19yUH2Lty2Xn5vt9ho3Flaf1w+ppWSZx2FgwVv+lMrW+G6NM62s9N3bHr+N2ebh1eU0CJNB0CSxcuFAeffTRwAQPP/xwqajIjwfjxx9/PCCbicwJ4HDg3XbbLdDwiSeeCKSZIIHmSoBrWOnfea5hpX+POEISIIFoAvn5izhaPktIgARIgASaAQFfYQtFrBtQrkHrplLqhtVFXmNS7OIJfHDQ3QYYuyqodX5NJc7kvuh7IU4brav3Hmlt55ehjuZpnVTvQ62jshE3VHDnpWNwx4c8nZvW9eem7RiTAAk0HwLvvPNOPVdJOEw7X+HOO++Uww47zD7AkKtMnAWCc0c+/fRTu56ttdZasvrqq2dloFm0aJH897//tbLatWsnq666qqy77rrJ74dsxoq19dtvv7Vy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buYMET9A0QjDCuJ0AU9au66krrrqKtl3333rNcNP4OHDhyfPKqlXISQDBqGnn346pCQ8CwYp3ItZs2YlK8DYgbNXcG4AAwmQgJTsGgZD6jHHHBP7FsE134QJE0I/2++99574uzOiBPtrGHaYVFZW1qv+v//9T7D2x1kXtfFxxx0np59+uibTxlzD0iJiBRIggRInQPdWJX6DODwSIAESIAESIAESIAESIAESCCOw6qqr2h0ObhkU8yeeeKJ92tfNz+UaZ2vsuOOOsUXgaeKnnnpK/IPIwwSgDvzchxk8UB+uqPBkdDpZKI+r0INB6JZbbpGTTz45bEihedjpETd8+eWXMnTo0IDBA21hUKLBIy5F1msOBEp1Ddt1113lmmuuiXULNt10U4ELrKjPdp8+fQTnbqQLAwYMiG0cWXbZZeXVV1+1htV0crXc3W2ieVEx17AoMswnARJoTARo9GhMd4tjJQESIAESIAESIAESIAESIAGHwBFHHCHYheAGGBygQBs1apRMnTrVupuqrq52q4Ret23bNjQfme6B5loJrqKiAty84IyNAw44IPRMEDzRvM8++wjcTEEpmCr06tXLumfZbbfdAudxoA2MIvDBjwPTM3E/hbmedNJJdrfHnnvumdaogr6inqpeuHChfPXVVwKf/P/85z8F54bALZYb4LoL7sAYSIAEggRKdQ3be++9BYd4Yy11zwHS0WN3B9zq4UyNlVdeWbNDY+z0eP7558U/4wOVIWfIkCGCc45gYI4bYOjFeUnof6uttgodoysLLq+iAtewKDLMJwESaMwE6N6qMd89jp0ESIAESIAESIAESIAESKDZE4Crk7///e/23IwoGDhDwz+vI6puIfJ//fXXpF977OqA0SObANdU33zzjfVp36lTJ3s+hrrygmEHrrigoIRBpk2bNrHdfGEsOLsErrngtx/XaL/MMstYRSTiqAA3WjfccENUsX0aG096Rz0JHtmQBSTQTAiU+hqGdQdrC144a2jNNddMa2SIunVYp7BzDGeGYC1caaWVklXhUgpncmD9wqt169bJsjgXaIuziBCjH6xhWGthTEll1OYaFocu65AACTQ2AnQm2tjuGMdLAiRAAiRAAiRAAiRAAiRAAg4BuDp57LHH7KHZDz/8sFNSd4mDbxsy4IBzvHINMHDgyWi8/ACjQli+Xy8qDQVhjx497CuqTlg+FKFRAeee4El2GjyiCDGfBERKfQ3DugNXXHjlGrAW4LD0sNC+fXvBK9vQoUMHWX/99TNuzjUsY2RsQAIk0AgI0L1VI7hJHCIJkAAJkAAJkAAJkAAJkAAJpCKAnQhXXnmlPR9jv/32q/cU8vfff5+qOctyIIDdIW6A2xkc8I7D2RHT4OHS4TUJhBPgGhbOpRi5XMOKQZl9kAAJFJsA3VsVmzj7IwESIAESIAESIAESIAESIIECE1BXT7/88ovMnz/fPqEMVyoM+SeAc1PgqgY7WeByC0YPdbmV/94okQSaBwGuYcW7z1zDiseaPZEACRSPAI0exWPNnkiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABApIgO6tCgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAI0ehQQLkWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUjwCNHsVjzZ5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKSIBGjwLCpWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHiEaDRo3is2RMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEABCdDoUUC4FE0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFA8AjR6FI81eyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiggARo9CgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAI0ehQQLkWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUjwCNHsVjzZ5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKSIBGjwLCpWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHiEaDRo3is2RMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEABCdDoUUC4FE0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFA8AjR6FI81eyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiggARo9CgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAI0ehQQLkWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUjwCNHsVjzZ5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKSIBGjwLCpWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHiEaDRo3is2RMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEABCdDoUUC4FE0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFA8AjR6FI81eyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiggARo9CgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAL/D2QsXoszqvK7AAAAAElFTkSuQmCC" + } + }, + "cell_type": "markdown", + "id": "92ddc4f4-f7bf-4e0e-b5a5-5abd8a008b21", + "metadata": {}, + "source": [ + "# Self-Reflective RAG\n", + "\n", + "Self-reflection can enhance RAG, enabling correction of poor quality retrieval or generations.\n", + "\n", + "Several recent papers focus on this theme, but implementing the ideas can be tricky.\n", + "\n", + "Here we show how to implement self-reflective RAG using `Mistral` and `LangGraph`.\n", + "\n", + "In particular, we'll focus on the approach from one paper Corrective RAG (CRAG) [here](https://arxiv.org/pdf/2401.15884.pdf).\n", + "\n", + "![Screenshot 2024-02-07 at 1.21.51 PM.png](attachment:9db7f9db-55aa-48cb-95d5-bcde3f937589.png)\n", + "\n", + "## Dependencies\n", + "\n", + "Set `MISTRAL_API_KEY` and set up Subscription to activate it.\n", + "\n", + "Set `TAVILY_API_KEY` to enable web search [here](https://app.tavily.com/sign-in).\n", + "\n", + "If you want to run this locally, use [Ollama](https://ollama.ai/library/mistral/tags):\n", + "\n", + "* Download [Ollama app](https://ollama.ai/)\n", + "* Download Mistral e.g., `ollama pull mistral:7b-instruct`\n", + "\n", + "Optionally, use [LangSmith](https://docs.smith.langchain.com/) for tracing (shown at bottom)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "abc064ab-7de1-4d03-a987-cd3078438d61", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "mistral_api_key = os.environ.get(\"MISTRAL_API_KEY\")\n", + "tavily_api_key = os.environ.get(\"TAVILY_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "id": "6e2b6eed-3b3f-44b5-a34a-4ade1e94caf0", + "metadata": {}, + "source": [ + "## Indexing\n", + "\n", + "First, let's index a popular blog post on agents using [Mistral embeddings](https://python.langchain.com/docs/integrations/text_embedding/mistralai).\n", + "\n", + "We'll use a local vectorstore, [Chroma](https://python.langchain.com/docs/integrations/vectorstores/chroma)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "254ae533-79e0-42f4-b200-1ec9160e1d3d", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_mistralai import MistralAIEmbeddings\n", + "\n", + "# Load\n", + "url = \"https://lilianweng.github.io/posts/2023-06-23-agent/\"\n", + "loader = WebBaseLoader(url)\n", + "docs = loader.load()\n", + "\n", + "# Split\n", + "text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=500, chunk_overlap=100\n", + ")\n", + "all_splits = text_splitter.split_documents(docs)\n", + "\n", + "# Embed and index\n", + "embedding = MistralAIEmbeddings(mistral_api_key=mistral_api_key)\n", + "vectorstore = Chroma.from_documents(\n", + " documents=all_splits,\n", + " collection_name=\"rag-chroma\",\n", + " embedding=embedding,\n", + ")\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "attachments": { + "a2fac558-b18e-4610-bfa7-0d40c92e0ede.png": { + "image/png": "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eaXBgwfbP//5zyLThQQ05F944QWbOnVq2JW19y1btthNN91krGBb1gy3h4MOOqisFUvlEQERSILAxIkTrX379gmFxDnnnGNt2rSxESNGJJGTkohA5gisW7cuc5krZxHIAgGJiCxATuUSNGRZiIaVXV988UWbNGlSLLtvvvnGxo4da/n5+f714YcfGr1r7GP7yy+/9GlJx+elS5faxx9/bFOmTPH7yfejjz6yyy+/3AuVWMZuY9WqVf6ay5cv97t/+uknGz16dCzJ7Nmz/XXCjnnz5vlrMHpSlG3YsMHefvttI494o+zROnKc+o0bN84QVcuWLfOnMHIS6rFw4cJYWagnZZkwYYKva3SEJb5OZDR+/HjPl7wRDtiMGTPss88+85/JL7Dj2KZNm+zzzz+3l19+2f71r395puyXiYAIlC0C/Lbttttu2wmJWrVqGUKCzpPo70PZKr1KUxEIaCSiItzl8l3HquW7euWndq1atTKG6Gkws8LlqaeeakuWLPEVbN68uT3xxBO+YY4wYHSBxm7r1q2tT58+vqE8bNgw69mzp9HIHzVqlL355pu2ePFi/84UibfffrsdccQRPj8a0H/84x+tb9++dskll/i8mzVrZieeeKJvzDdq1MjuvPNO22GHHWz33Xe34cOHGy5RzJJy2WWX+cZ7nTp1EsJHyBx88MHWuXPn7dyYyH/BggV+Fc/999/fB0fi6nTYYYdZlSpVjOsiED744AO/uBSCYsiQITZmzBh7+umn7bnnnrMzzzzTmPbxq6++so4dO1rt2rXtjTfe8KIgvk7UDy7Tp0+3Dh062MiRI30+sAuzvSB2sJYtWxo+17feeqvPj3OrV69uu+yyi9+fsLLaKQIiUKoEEPtnnXWWFxL89jDyiR199NF+xJaOGTpRZCJQGgQkIkqDuq6ZVgKul1dWRgm8/vrr+c6dKf/cc8/NHzBgQP6+++6bv2LFivyZM2f6/Wzzco33fCcufC3OPvvs/CeffHK7Gp1yyin5F110kd//8MMP53/xxRexNL/+9a/zuVYwJwTynSjJdw34fDfvev61117rDx177LH5zz//fL774ct3s6Hku1GPfOeS5Mvy7bff+vRu9dh8J1BCVtu9cx3nk+z3cz75zJ8/P9/1/vvttWvX5juh4Ledm1O+6+3PP/zww/11uBbnYHfffXf+Nddc47dfffVVn6cTT/4858rg391IjC8biQqq06BBg/JvvPFGn48TJLFtrgPXeOM+OJexfBfA6csUf1yfRUAEyh4Bvv/81vB9D8ZvkesEyXedKWGX3kUgqwT4X8xzKROBXCWgkYi0SrL0Z0YP+DHHHONdbo477jirV6+en8qQXjX2Y4wS0IPPe2HG0D7mhEZhyfwMJ/T2OzHi04XzTjjhBHP/eK1p06a+l79r164+noGynH/++X60gBPCCEmii/zwww+24447+kPhnQ+4FVBXXA3o4cdwd3KNeWNGlUqVKvl9XDPecI+KWuXKlY2RkHAOx5i1JVGdOEb+GGwXLVrkt/mzevXq2HbYuP/+++3RRx817gXlZfSDEQqZCIhA2SCA2yW/M0ceeaQ1aNDAF+qOO+6whg0b+sXoBg4caO+8844feX3qqaf8iASjlDIRyDYBRiIY7ZeJQK4SkIgo43euRYsWxj89GsRXXnmluREF69evn28kE2jdv39/X4OqVbfeyp133tnHLtDgr1atmoX9JCrIxSgeAf98cRHCxYkGcpgZ6tBDD7WrrrrKN/J/+9vf+tNoeLveee/WhDhBAEQb7/F54/7kRhDMjaDY3LlzY4dxQUIIEftAQ56y4vLEj+zpp5/uXbJ23XVXQzDUqFHDmjRp4utJnMNI54ZEkHZhVlCdCjoHVzCM8hDcjosYLlUEa7KYFeXfe++9vduTG6EpKBvtFwERyDIBvpuffvqpMckEbksHHnig/41iRWuEBC6JPXr0MIKvjz/+eHv88ce9+2aWi6nLiUDsf7tQiECuElBgdY7cOf4R1q9f3/d8M40hDfz77rvP9+rTo++GwnxN6CHnn2OXLl1iPf6IDnz86fEgZiHYGWecYe3atfPxA+edd56PteAY/1gRL/vtt58/HkYkiElA0BDkHeInSE+e4ZrEIcQHRpMmGGIBIUEsgXOTCrv9KADxDfgv33zzzd53GQFEA965SPlASMpKPAV2yCGH+IY8jQHEEjEQTBdbkBVUp4LSI45ggkDgusRcICSI++Az5eflXMwKykL7RUAESoEAv1F/+9vffOcCcWBss4+1I/gdYFVrOh/ocGE0l+91cWa0K4Uq6ZLllADPYBgJL6dVVLXKOYFK+GGV8zqW6+rxz5Ce+eACRGW5pfTGsR/3oJIaIxAENiNekjGmq2NEIC8vr8jkjDAghghiRgQE45qMZNDrHzXyZSpYRiiioysEipOW4+wvbBSE/EpSJ65BUDtuUmy7uA3/Ob6M0fJqWwREoOwQwMUJ1yVmf2NElRHWu+66y0/WgCsTo5m4JspEQAREQASSJyARkTwrpRQBERABEchhAm5SCnOTMvjZ3Yj1chNC+FHXta6zZPgDD3gXxRyunoouAiIgAlklIHemrOLWxURABERABEqLADFN9957r7322mvenYlyMNX1RjciykiFTAREQAREIHkCGolInpVSioAIiIAIlCMCzOLEGjvPPvusd3UkfoJ1aWQiIAIiIAJFE5CIKJqRUoiACIiACJRjAizSSdA1C3mGiSTKcXVVNREQARFICwGJiLRgVCYiIAIiIAK5TIBJF9wClbbXXnvlcjVUdhEQARHIGgGJiKyh1oVEQAREQAREQAREQAREoHwQUGB1+biPqoUIiIAIiIAIiIAIiIAIZI2ARETWUOtCIiACIiACuU6ANXhwfQq2YcMGv4ZN+Kx3ERABEagoBCQiKsqdVj1FQAREQARSJnD11VfbsGHDYvkMHjzYTxsb26ENERABEaggBBQTUUFutKopAiIgAiKQOoHp06fb0UcfbaNGjbLly5fbfvvt51fCbtKkic/8m2++8SMVLGZXqVIlv2/u3Lk2YcIEv9p969atrV+/fqkXRDmIgAiIQCkTkIgo5Rugy4uACIiACOQWgcsuu8zatm1rCxcutEaNGtmll14o116VAAAlPklEQVTqK3DqqafakiVL/Hbz5s39dLHjx4+3Y445xgYMGGDs69ixo51zzjm5VWGVVgREQAQSEKiaYJ92iYAIiIAIiIAIFEDgwgsvjC1Kx4gExloTkydPtpEjR/rPTBW7aNEimzdvntWpU8fOOOMM22OPPaxevXr+uP6IgAiIQK4TkIjI9Tuo8ouACIiACGSVAKMQBx54oLVq1crq16/vrz1jxgxbunSpH3VgR7NmzWzBggV2yCGH2Pz58+2+++6zr7/+2m644QYbNGiQP0d/REAERCCXCcidKZfvnsouAiIgAiJQKgSuv/56a9GiRcw1af369bb77rvb8OHDrX///r5MVatWNfbzXrlyZXv00Uft8ccft9GjR5eozA+8Pd3Wb9pii1dusgN6Nbf6NSpZ68a1rHWjWiXKTyeVHoEvpi2zl79YYG2a5tmWzVtc/IxZnx3rW99OjUqv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RxP77d6trZqLl5GJQFklIBFRVu+MyiUCIiACIiACEQKbnXBYvHKDLXSConLlSrZTi7xtRiYiSbVZxgnMWrzWpi9cYz+v/sVWrvvFNm3a7BYFrGH7dW9qdWtqHeAyfvtUvP8QkIjQoyACIiACIiACIiACIiACIlAsAhonKxYuJRYBERABERABERABERABEZCI0DMgAiIgAiIgAiIgAiIgAiJQLAISEcXCpcQiIAIiIAIiIAIiIAIiIAISEXoGREAEREAEREAEREAEREAEikVAIqJYuJRYBERABERABERABERABERAIkLPgAiIgAiIgAiIgAiIgAiIQLEISEQUC5cSi4AIiIAIiIAIiIAIiIAIaEUTPQMiIAIiIAIikCUCM2fOtA8++MDmz59v9erVs/PPP9+qVtW/4izh12VEQATSSECLzaURprISAREQARHIPoG7777batasaeedd172L16MK44ePdpOPPFEf0bjxo2tevXqxj5Z2Sbw3Xff2WeffWa//vWvrVGjRmW7sCmUbuTIkTZnzhw77bTTUshFp1YkAnJnqkh3W3UVAREQgXJI4M0337R///vfZb5md9xxhy/j888/b2PHjpWAKPN3bGsBv/nmG7vxxhttyZIlOVLikhXzn//8p916660lO1lnVUgCGkOtkLddlRYBERCB3Cfw6aef2o8//mg///yzrV692p566qlYpX7729/60Ymnn37a8vPzbYcddrDevXvbW2+9ZZUqVbIjjjjCuxNxwmOPPWYbN260Zs2a2UEHHWT169eP5bNixQp79dVXrX///kaP9PTp0+3ggw+2rl27xtKwMWnSJBszZowvy+bNm61BgwZ21llnxVyVtmzZYl999ZXtu+++tueee25zLh9++eUXe/31123atGnWsmVLO+yww4zRCmzChAk2btw4v025Z8yYYaNGjbL99tvPdt11V5s3b553kerUqZN98cUXduSRR/prbdiwwX7zm99Y7dq1/blF/aFu7733nlHWo48+2r788ktfln79+tnChQvtnXfe8dds3769z+q1116zatWq2aGHHhrLmvuBoINb9+7d7ZBDDvG8SVDYveCevPzyy/6c3XffPZZfqDt1Ks+jALEKa0MEcoiA3Jly6GapqCIgAiIgAv8lcP3119u//vUvW7p0qd8ZGt18+PDDD70YoEHK8V69elnz5s3t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ZgHRx326/PLLvVBgPwIRkRfiUFgg7pxzzjFGrjC2maL1tttui82mRVwEgu/rr7/2afjzl7/8xcIid1zjiy++8EKDe85oRNSFKnaSNkQgTQQkItIEUtmIgAiIgAiIQDwBGvYzZ870MQmJ1oOIT5+tzzQyaXDSiI0GaGfr+rl4He4lC/fRuMeYGSl+Vqyi6sV0vJs2bdrOpSyct2LFCi86ECekrVmz5najCcRBIBg4Vr9+/XCq/epXv/IjTdxPpvYNAiWWQBsikGYCEhFpBqrsREAEREAEREAEyi8BGvqMMNBYb+9mUyor9uGHH/pYGspU2IJ4ZaW8KkfuE5CIyP17qBqIgAiIgAiIgAiIgAiIQFYJKLA6q7h1MREQAREQAREQAREQARHIfQISEbl/D1UDERABERABERABERABEcgqAYmIrOLWxURABERABERABERABEQg9wlIROT+PVQNREAEREAEREAEREAERCCrBCQisopbFxMBERABERABERABERCB3CcgEZH791A1EAEREAEREAEREAEREIGsEpCIyCpuXUwEREAEREAEREAEREAEcp+ARETu30PVQAREQAREQAREQAREQASySkAiIqu4dTEREAEREAEREAEREAERyH0CEhG5fw9VAxEQAREQAREQAREQARHIKgGJiKzi1sVEQAREQAREQAREQAREIPcJSETk/j1UDURABERABERABERABEQgqwQkIrKKWxcTAREQAREQAREQAREQgdwnIBGR+/dQNRABERABERABERABERCBrBKQiMgqbl1MBERABERABERABERABHKfgERE7t9D1UAEREAEREAEREAEREAEskpAIiKruHUxERABERABERABERABEch9AhIRuX8PVQMREAEREAEREAEREAERyCoBiYis4tbFREAEREAEREAEREAERCD3CUhE5P49VA1EQAREQAREQAREQAREIKsEJCKyilsXEwEREAEREAEREAEREIHcJyARkfv3UDUQAREQAREQAREQAREQgawSkIjIKm5dTAREQAREQAREQAREQARyn4BERO7fQ9VABERABERABERABERABLJKQCIiq7h1MREQAREQAREQAREQARHIfQISEbl/D1UDERABERABERABERABEcgqAYmIrOLWxURABERABERABERABEQg9wlIROT+PVQNREAEREAEREAEREAERCCrBCQisopbFxMBERABERABERABERCB3CcgEZH791A1EAEREAEREAEREAEREIGsEpCIyCpuXUwEREAEREAEREAEREAEcp+ARETu30PVQAREQAREQAREQAREQASySkAiIqu4dTEREAEREAEREAEREAERyH0CEhG5fw9VAxEQAREQAREQAREQARHIKgGJiKzi1sVEQAREQAREQAREQAREIPcJSETk/j1UDURABERABERABERABEQgqwT+H8glSqY2vticAAAAAElFTkSuQmCC" + } + }, + "cell_type": "markdown", + "id": "fe7fd10a-f64a-48de-a116-6d5890def1af", + "metadata": {}, + "source": [ + "## Corrective RAG\n", + "\n", + "Let's implement self-reflective RAG with some ideas from the CRAG (Corrective RAG) [paper](https://arxiv.org/pdf/2401.15884.pdf):\n", + "\n", + "* Grade documents for relevance relative to the question\n", + "* If any are irrelevant, then we will supplement the context with web search\n", + "* For web search, we will re-phrase the question and use Tavily\n", + "\n", + "Here is a schematic of our graph in more detail:\n", + "\n", + "![crag.png](attachment:a2fac558-b18e-4610-bfa7-0d40c92e0ede.png)\n", + "\n", + "We will implement this using [LangGraph](https://python.langchain.com/docs/langgraph): \n", + "\n", + "* See video [here](https://www.youtube.com/watch?ref=blog.langchain.dev&v=pbAd8O1Lvm4&feature=youtu.be)\n", + "* See blog post [here](https://blog.langchain.dev/agentic-rag-with-langgraph/)\n", + "\n", + "---\n", + "\n", + "### State\n", + "\n", + "Every node in our graph will modify `state`, which is dict that contains values (question, documents, etc) relevant to RAG." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "10028794-2fbc-43f9-aa4c-7fe3abd69c1e", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Annotated, Dict, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " \"\"\"\n", + " Represents the state of our graph.\n", + "\n", + " Attributes:\n", + " keys: A dictionary where each key is a string.\n", + " \"\"\"\n", + "\n", + " keys: Dict[str, any]" + ] + }, + { + "cell_type": "markdown", + "id": "0081ff31-4a91-4dbc-9977-8bcdc7dd0aeb", + "metadata": {}, + "source": [ + "### Nodes and Edges\n", + "\n", + "Every node in the graph we laid out above is a function.\n", + "\n", + "Each node will modify the state in some way.\n", + "\n", + "Each edge will choose which node to call next." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "447d1333-082d-479a-a6fa-0ac0df78bb9d", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain import hub\n", + "from langchain.output_parsers import PydanticOutputParser\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain.schema import Document\n", + "from langchain_community.chat_models import ChatOllama\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_core.runnables import RunnablePassthrough\n", + "from langchain_mistralai.chat_models import ChatMistralAI\n", + "\n", + "### Nodes ###\n", + "\n", + "\n", + "def retrieve(state):\n", + " \"\"\"\n", + " Retrieve documents\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, documents, that contains documents.\n", + " \"\"\"\n", + " print(\"---RETRIEVE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " local = state_dict[\"local\"]\n", + " documents = retriever.get_relevant_documents(question)\n", + " return {\"keys\": {\"documents\": documents, \"local\": local, \"question\": question}}\n", + "\n", + "\n", + "def generate(state):\n", + " \"\"\"\n", + " Generate answer\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, generation, that contains generation.\n", + " \"\"\"\n", + " print(\"---GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " local = state_dict[\"local\"]\n", + "\n", + " # Prompt\n", + " prompt = hub.pull(\"rlm/rag-prompt\")\n", + "\n", + " # LLM\n", + " if local == \"Yes\":\n", + " llm = ChatOllama(model=\"mistral:7b-instruct\", temperature=0)\n", + " else:\n", + " llm = ChatMistralAI(\n", + " model=\"mistral-medium\", temperature=0, mistral_api_key=mistral_api_key\n", + " )\n", + "\n", + " # Post-processing\n", + " def format_docs(docs):\n", + " return \"\\n\\n\".join(doc.page_content for doc in docs)\n", + "\n", + " # Chain\n", + " rag_chain = prompt | llm | StrOutputParser()\n", + "\n", + " # Run\n", + " generation = rag_chain.invoke({\"context\": documents, \"question\": question})\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "def grade_documents(state):\n", + " \"\"\"\n", + " Determines whether the retrieved documents are relevant to the question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " \"\"\"\n", + "\n", + " print(\"---CHECK RELEVANCE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " local = state_dict[\"local\"]\n", + "\n", + " # LLM\n", + " if local == \"Yes\":\n", + " llm = ChatOllama(model=\"mistral:7b-instruct\", format=\"json\", temperature=0)\n", + " else:\n", + " llm = ChatMistralAI(\n", + " mistral_api_key=mistral_api_key, temperature=0, model=\"mistral-medium\"\n", + " )\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " score: str = Field(description=\"Relevance score 'yes' or 'no'\")\n", + "\n", + " # Set up a parser + inject instructions into the prompt template.\n", + " parser = PydanticOutputParser(pydantic_object=grade)\n", + "\n", + " from langchain_core.output_parsers import JsonOutputParser\n", + "\n", + " parser = JsonOutputParser(pydantic_object=grade)\n", + "\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing relevance of a retrieved document to a user question. \\n \n", + " Here is the retrieved document: \\n\\n {context} \\n\\n\n", + " Here is the user question: {question} \\n\n", + " If the document contains keywords related to the user question, grade it as relevant. \\n\n", + " It does not need to be a stringent test. The goal is to filter out erroneous retrievals. \\n\n", + " Give a binary score 'yes' or 'no' score to indicate whether the document is relevant to the question. \\n\n", + " Provide the binary scor as a JSON with no premable or explaination and use these instructons to format the output: {format_instructions}\"\"\",\n", + " input_variables=[\"query\"],\n", + " partial_variables={\"format_instructions\": parser.get_format_instructions()},\n", + " )\n", + "\n", + " chain = prompt | llm | parser\n", + "\n", + " # Score\n", + " filtered_docs = []\n", + " search = \"No\" # Default do not opt for web search to supplement retrieval\n", + " for d in documents:\n", + " score = chain.invoke(\n", + " {\n", + " \"question\": question,\n", + " \"context\": d.page_content,\n", + " \"format_instructions\": parser.get_format_instructions(),\n", + " }\n", + " )\n", + " grade = score[\"score\"]\n", + " if grade == \"yes\":\n", + " print(\"---GRADE: DOCUMENT RELEVANT---\")\n", + " filtered_docs.append(d)\n", + " else:\n", + " print(\"---GRADE: DOCUMENT NOT RELEVANT---\")\n", + " search = \"Yes\" # Perform web search\n", + " continue\n", + "\n", + " return {\n", + " \"keys\": {\n", + " \"documents\": filtered_docs,\n", + " \"question\": question,\n", + " \"local\": local,\n", + " \"run_web_search\": search,\n", + " }\n", + " }\n", + "\n", + "\n", + "def transform_query(state):\n", + " \"\"\"\n", + " Transform the query to produce a better question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New value saved to question.\n", + " \"\"\"\n", + "\n", + " print(\"---TRANSFORM QUERY---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " local = state_dict[\"local\"]\n", + "\n", + " # Create a prompt template with format instructions and the query\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are generating questions that is well optimized for retrieval. \\n \n", + " Look at the input and try to reason about the underlying sematic intent / meaning. \\n \n", + " Here is the initial question:\n", + " \\n ------- \\n\n", + " {question} \n", + " \\n ------- \\n\n", + " Formulate an improved question: \"\"\",\n", + " input_variables=[\"question\"],\n", + " )\n", + "\n", + " # Grader\n", + " # LLM\n", + " if local == \"Yes\":\n", + " llm = ChatOllama(model=\"mistral:7b-instruct\", temperature=0)\n", + " else:\n", + " llm = ChatMistralAI(\n", + " mistral_api_key=mistral_api_key, temperature=0, model=\"mistral-medium\"\n", + " )\n", + "\n", + " # Prompt\n", + " chain = prompt | llm | StrOutputParser()\n", + " better_question = chain.invoke({\"question\": question})\n", + "\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": better_question, \"local\": local}\n", + " }\n", + "\n", + "\n", + "def web_search(state):\n", + " \"\"\"\n", + " Web search using Tavily.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " state (dict): Web results appended to documents.\n", + " \"\"\"\n", + "\n", + " print(\"---WEB SEARCH---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " local = state_dict[\"local\"]\n", + "\n", + " tool = TavilySearchResults()\n", + " docs = tool.invoke({\"query\": question})\n", + " web_results = \"\\n\".join([d[\"content\"] for d in docs])\n", + " web_results = Document(page_content=web_results)\n", + " documents.append(web_results)\n", + "\n", + " return {\"keys\": {\"documents\": documents, \"local\": local, \"question\": question}}\n", + "\n", + "\n", + "### Edges\n", + "\n", + "\n", + "def decide_to_generate(state):\n", + " \"\"\"\n", + " Determines whether to generate an answer, or re-generate a question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " \"\"\"\n", + "\n", + " print(\"---DECIDE TO GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " filtered_documents = state_dict[\"documents\"]\n", + " search = state_dict[\"run_web_search\"]\n", + "\n", + " if search == \"Yes\":\n", + " # All documents have been filtered check_relevance\n", + " # We will re-generate a new query\n", + " print(\"---DECISION: TRANSFORM QUERY and RUN WEB SEARCH---\")\n", + " return \"transform_query\"\n", + " else:\n", + " # We have relevant documents, so generate answer\n", + " print(\"---DECISION: GENERATE---\")\n", + " return \"generate\"" + ] + }, + { + "cell_type": "markdown", + "id": "6096626d-dfa5-48e0-8a24-3747b298bc67", + "metadata": {}, + "source": [ + "## Lay out our graph" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "0a63776c-f9cd-46ce-b8cf-95c066dc5b06", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "\n", + "from langgraph.graph import END, StateGraph\n", + "\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# Define the nodes\n", + "workflow.add_node(\"retrieve\", retrieve) # retrieve\n", + "workflow.add_node(\"grade_documents\", grade_documents) # grade documents\n", + "workflow.add_node(\"generate\", generate) # generatae\n", + "workflow.add_node(\"transform_query\", transform_query) # transform_query\n", + "workflow.add_node(\"web_search\", web_search) # web search\n", + "\n", + "# Build graph\n", + "workflow.set_entry_point(\"retrieve\")\n", + "workflow.add_edge(\"retrieve\", \"grade_documents\")\n", + "workflow.add_conditional_edges(\n", + " \"grade_documents\",\n", + " decide_to_generate,\n", + " {\n", + " \"transform_query\": \"transform_query\",\n", + " \"generate\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_edge(\"transform_query\", \"web_search\")\n", + "workflow.add_edge(\"web_search\", \"generate\")\n", + "workflow.add_edge(\"generate\", END)\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "ac0a868a-f0f9-4aa9-b955-a78da2359af8", + "metadata": {}, + "source": [ + "## Run it\n", + "\n", + "`Mistral API -` " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ab1d8df-a74e-4b48-a30b-e39bbfd5925a", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Run\n", + "inputs = {\n", + " \"keys\": {\n", + " \"question\": \"Explain how the different types of agent memory work?\",\n", + " \"local\": \"No\",\n", + " }\n", + "}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " pprint.pprint(f\"Output from node '{key}':\")\n", + " pprint.pprint(\"---\")\n", + " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "03ee2be9-2368-46ea-9edd-dc064a7c7c96", + "metadata": {}, + "source": [ + "`Locall (Ollama) -` " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16ea2032-59c7-433d-aca4-2828a1239074", + "metadata": {}, + "outputs": [], + "source": [ + "# Run\n", + "inputs = {\n", + " \"keys\": {\n", + " \"question\": \"Explain how the different types of agent memory work?\",\n", + " \"local\": \"Yes\",\n", + " }\n", + "}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " pprint.pprint(f\"Output from node '{key}':\")\n", + " pprint.pprint(\"---\")\n", + " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "0931b76a-3ea8-4f2f-9d27-242d48ec3fe3", + "metadata": {}, + "source": [ + "## Trace\n", + "\n", + "`Mistral API -` \n", + "\n", + "https://smith.langchain.com/public/1c9ce3f2-76bb-4514-a107-076823e9849e/r\n", + "\n", + "`Locall (Ollama) -` \n", + "\n", + "https://smith.langchain.com/public/6b626f5e-248d-4d52-b36b-5cc3bf0b95d3/r" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From addc79d29d36008d2de5ee37c31d5275712289a1 Mon Sep 17 00:00:00 2001 From: Lance Martin Date: Wed, 7 Feb 2024 16:07:33 -0800 Subject: [PATCH 009/108] Clean up docstrings --- examples/rag/langgraph_crag.ipynb | 54 +++++++++++------------ examples/rag/langgraph_crag_mistral.ipynb | 41 ++++++++--------- examples/rag/langgraph_self_rag.ipynb | 39 ++++++++-------- 3 files changed, 67 insertions(+), 67 deletions(-) diff --git a/examples/rag/langgraph_crag.ipynb b/examples/rag/langgraph_crag.ipynb index 8dc7750c9..f8a6e2d0e 100644 --- a/examples/rag/langgraph_crag.ipynb +++ b/examples/rag/langgraph_crag.ipynb @@ -132,12 +132,10 @@ "\n", "class GraphState(TypedDict):\n", " \"\"\"\n", - " Represents the state of an agent in the conversation.\n", + " Represents the state of our graph.\n", "\n", " Attributes:\n", - " keys: A dictionary where each key is a string and the value is expected to be a list or another structure\n", - " that supports addition with `operator.add`. This could be used, for instance, to accumulate messages\n", - " or other pieces of data throughout the graph.\n", + " keys: A dictionary where each key is a string.\n", " \"\"\"\n", "\n", " keys: Dict[str, any]" @@ -198,10 +196,10 @@ " Retrieve documents\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New key added to state, documents, that contains documents.\n", + " state (dict): New key added to state, documents, that contains retrieved documents\n", " \"\"\"\n", " print(\"---RETRIEVE---\")\n", " state_dict = state[\"keys\"]\n", @@ -215,10 +213,10 @@ " Generate answer\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New key added to state, generation, that contains generation.\n", + " state (dict): New key added to state, generation, that contains LLM generation\n", " \"\"\"\n", " print(\"---GENERATE---\")\n", " state_dict = state[\"keys\"]\n", @@ -250,10 +248,10 @@ " Determines whether the retrieved documents are relevant to the question.\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " state (dict): Updates documents key with relevant documents\n", " \"\"\"\n", "\n", " print(\"---CHECK RELEVANCE---\")\n", @@ -323,10 +321,10 @@ " Transform the query to produce a better question.\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New value saved to question.\n", + " state (dict): Updates question key with a re-phrased question\n", " \"\"\"\n", "\n", " print(\"---TRANSFORM QUERY---\")\n", @@ -358,13 +356,13 @@ "\n", "def web_search(state):\n", " \"\"\"\n", - " Web search using Tavily.\n", + " Web search based on the re-phrased question using Tavily API.\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " state (dict): Web results appended to documents.\n", + " state (dict): Updates documents key with appended web results\n", " \"\"\"\n", "\n", " print(\"---WEB SEARCH---\")\n", @@ -386,13 +384,13 @@ "\n", "def decide_to_generate(state):\n", " \"\"\"\n", - " Determines whether to generate an answer, or re-generate a question.\n", + " Determines whether to generate an answer or re-generate a question for web search.\n", "\n", " Args:\n", " state (dict): The current state of the agent, including all keys.\n", "\n", " Returns:\n", - " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " str: Next node to call\n", " \"\"\"\n", "\n", " print(\"---DECIDE TO GENERATE---\")\n", @@ -412,6 +410,14 @@ " return \"generate\"" ] }, + { + "cell_type": "markdown", + "id": "fa076e90-7132-4fcf-8507-db5990314c4f", + "metadata": {}, + "source": [ + "## Build Graph" + ] + }, { "cell_type": "code", "execution_count": null, @@ -490,18 +496,12 @@ "id": "a7e44593-1959-4abf-8405-5e23aa9398f5", "metadata": {}, "source": [ - "Traces -\n", + "LangSmith Traces - \n", " \n", - "[Trace](https://smith.langchain.com/public/7e0b9569-abfe-4337-b34b-842b1f93df63/r) and [Trace](https://smith.langchain.com/public/b40c5813-7caf-4cc8-b279-ee66060b2040/r)" + "* https://smith.langchain.com/public/7e0b9569-abfe-4337-b34b-842b1f93df63/r\n", + "\n", + "* https://smith.langchain.com/public/b40c5813-7caf-4cc8-b279-ee66060b2040/r" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "69eddb3e-57f4-4eea-8e40-4822fc50c729", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/examples/rag/langgraph_crag_mistral.ipynb b/examples/rag/langgraph_crag_mistral.ipynb index ecb821596..c3464a19a 100644 --- a/examples/rag/langgraph_crag_mistral.ipynb +++ b/examples/rag/langgraph_crag_mistral.ipynb @@ -37,7 +37,7 @@ "\n", "Here we show how to implement self-reflective RAG using `Mistral` and `LangGraph`.\n", "\n", - "In particular, we'll focus on the approach from one paper Corrective RAG (CRAG) [here](https://arxiv.org/pdf/2401.15884.pdf).\n", + "In particular, we'll focus on the approach from one paper focused on Corrective RAG (CRAG) [here](https://arxiv.org/pdf/2401.15884.pdf).\n", "\n", "![Screenshot 2024-02-07 at 1.21.51 PM.png](attachment:9db7f9db-55aa-48cb-95d5-bcde3f937589.png)\n", "\n", @@ -127,9 +127,10 @@ "\n", "Let's implement self-reflective RAG with some ideas from the CRAG (Corrective RAG) [paper](https://arxiv.org/pdf/2401.15884.pdf):\n", "\n", - "* Grade documents for relevance relative to the question\n", - "* If any are irrelevant, then we will supplement the context with web search\n", - "* For web search, we will re-phrase the question and use Tavily\n", + "* Grade documents for relevance relative to the question.\n", + "* If any are irrelevant, then we will supplement the context used for generation with web search.\n", + "* For web search, we will re-phrase the question and use Tavily API.\n", + "* We will then pass retrieved documents and web results to an LLM for final answer generation.\n", "\n", "Here is a schematic of our graph in more detail:\n", "\n", @@ -144,7 +145,7 @@ "\n", "### State\n", "\n", - "Every node in our graph will modify `state`, which is dict that contains values (question, documents, etc) relevant to RAG." + "Every node in our graph will modify `state`, which is dict that contains values (`question`, `documents`, etc) relevant to RAG." ] }, { @@ -215,10 +216,10 @@ " Retrieve documents\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New key added to state, documents, that contains documents.\n", + " state (dict): New key added to state, documents, that contains retrieved documents\n", " \"\"\"\n", " print(\"---RETRIEVE---\")\n", " state_dict = state[\"keys\"]\n", @@ -233,10 +234,10 @@ " Generate answer\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New key added to state, generation, that contains generation.\n", + " state (dict): New key added to state, generation, that contains generation\n", " \"\"\"\n", " print(\"---GENERATE---\")\n", " state_dict = state[\"keys\"]\n", @@ -274,10 +275,10 @@ " Determines whether the retrieved documents are relevant to the question.\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " state (dict): Updates documents key with relevant documents\n", " \"\"\"\n", "\n", " print(\"---CHECK RELEVANCE---\")\n", @@ -356,10 +357,10 @@ " Transform the query to produce a better question.\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New value saved to question.\n", + " state (dict): Updates question key with a re-phrased question\n", " \"\"\"\n", "\n", " print(\"---TRANSFORM QUERY---\")\n", @@ -400,10 +401,10 @@ "\n", "def web_search(state):\n", " \"\"\"\n", - " Web search using Tavily.\n", + " Web search based on the re-phrased question using Tavily API.\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", " state (dict): Web results appended to documents.\n", @@ -429,13 +430,13 @@ "\n", "def decide_to_generate(state):\n", " \"\"\"\n", - " Determines whether to generate an answer, or re-generate a question.\n", + " Determines whether to generate an answer or re-generate a question for web search.\n", "\n", " Args:\n", " state (dict): The current state of the agent, including all keys.\n", "\n", " Returns:\n", - " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " str: Next node to call\n", " \"\"\"\n", "\n", " print(\"---DECIDE TO GENERATE---\")\n", @@ -460,7 +461,7 @@ "id": "6096626d-dfa5-48e0-8a24-3747b298bc67", "metadata": {}, "source": [ - "## Lay out our graph" + "## Build Graph" ] }, { @@ -507,7 +508,7 @@ "id": "ac0a868a-f0f9-4aa9-b955-a78da2359af8", "metadata": {}, "source": [ - "## Run it\n", + "## Run\n", "\n", "`Mistral API -` " ] @@ -571,7 +572,7 @@ "id": "0931b76a-3ea8-4f2f-9d27-242d48ec3fe3", "metadata": {}, "source": [ - "## Trace\n", + "## LangSmith Traces\n", "\n", "`Mistral API -` \n", "\n", diff --git a/examples/rag/langgraph_self_rag.ipynb b/examples/rag/langgraph_self_rag.ipynb index 50f7dbef1..bb9f3ac70 100644 --- a/examples/rag/langgraph_self_rag.ipynb +++ b/examples/rag/langgraph_self_rag.ipynb @@ -141,12 +141,10 @@ "\n", "class GraphState(TypedDict):\n", " \"\"\"\n", - " Represents the state of an agent in the conversation.\n", + " Represents the state of our graph.\n", "\n", " Attributes:\n", - " keys: A dictionary where each key is a string and the value is expected to be a list or another structure\n", - " that supports addition with `operator.add`. This could be used, for instance, to accumulate messages\n", - " or other pieces of data throughout the graph.\n", + " keys: A dictionary where each key is a string.\n", " \"\"\"\n", "\n", " keys: Dict[str, any]" @@ -205,10 +203,10 @@ " Retrieve documents\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New key added to state, documents, that contains documents.\n", + " state (dict): New key added to state, documents, that contains retrieved documents\n", " \"\"\"\n", " print(\"---RETRIEVE---\")\n", " state_dict = state[\"keys\"]\n", @@ -222,10 +220,10 @@ " Generate answer\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New key added to state, generation, that contains generation.\n", + " state (dict): New key added to state, generation, that contains LLM generation\n", " \"\"\"\n", " print(\"---GENERATE---\")\n", " state_dict = state[\"keys\"]\n", @@ -257,10 +255,10 @@ " Determines whether the retrieved documents are relevant to the question.\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " state (dict): Updates documents key with relevant documents\n", " \"\"\"\n", "\n", " print(\"---CHECK RELEVANCE---\")\n", @@ -322,10 +320,10 @@ " Transform the query to produce a better question.\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " dict: New value saved to question.\n", + " state (dict): Updates question key with a re-phrased question\n", " \"\"\"\n", "\n", " print(\"---TRANSFORM QUERY---\")\n", @@ -357,13 +355,13 @@ "\n", "def prepare_for_final_grade(state):\n", " \"\"\"\n", - " Stage for final grade, passthrough state.\n", + " Passthrough state for final grade.\n", "\n", " Args:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", "\n", " Returns:\n", - " state (dict): The current state of the agent, including all keys.\n", + " state (dict): The current graph state\n", " \"\"\"\n", "\n", " print(\"---FINAL GRADE---\")\n", @@ -388,7 +386,7 @@ " state (dict): The current state of the agent, including all keys.\n", "\n", " Returns:\n", - " dict: New key added to state, filtered_documents, that contains relevant documents.\n", + " str: Next node to call\n", " \"\"\"\n", "\n", " print(\"---DECIDE TO GENERATE---\")\n", @@ -415,7 +413,7 @@ " state (dict): The current state of the agent, including all keys.\n", "\n", " Returns:\n", - " str: Binary decision score.\n", + " str: Binary decision\n", " \"\"\"\n", "\n", " print(\"---GRADE GENERATION vs DOCUMENTS---\")\n", @@ -479,7 +477,7 @@ " state (dict): The current state of the agent, including all keys.\n", "\n", " Returns:\n", - " str: Binary decision score.\n", + " str: Binary decision\n", " \"\"\"\n", "\n", " print(\"---GRADE GENERATION vs QUESTION---\")\n", @@ -540,7 +538,7 @@ "id": "61cd5797-1782-4d78-a277-8196d13f3e1b", "metadata": {}, "source": [ - "## Graph" + "## Build Graph" ] }, { @@ -634,9 +632,10 @@ "id": "548f1c5b-4108-4aae-8abb-ec171b511b92", "metadata": {}, "source": [ - "Trace - \n", + "LangSmith Traces - \n", " \n", "* https://smith.langchain.com/public/55d6180f-aab8-42bc-8799-dadce6247d9b/r\n", + "\n", "* https://smith.langchain.com/public/f85ebc95-81d9-47fc-91c6-b54e5b78f359/r" ] } From 09343a40136e78d163f79a6754a073f73bc1f26a Mon Sep 17 00:00:00 2001 From: Lance Martin Date: Wed, 7 Feb 2024 16:47:32 -0800 Subject: [PATCH 010/108] Minor updates --- examples/rag/langgraph_crag.ipynb | 156 +++++++++++++++++----- examples/rag/langgraph_crag_mistral.ipynb | 125 ++++++++++++++--- examples/rag/langgraph_self_rag.ipynb | 147 ++++++++++++++++---- 3 files changed, 344 insertions(+), 84 deletions(-) diff --git a/examples/rag/langgraph_crag.ipynb b/examples/rag/langgraph_crag.ipynb index f8a6e2d0e..a058d2aa8 100644 --- a/examples/rag/langgraph_crag.ipynb +++ b/examples/rag/langgraph_crag.ipynb @@ -20,9 +20,23 @@ "id": "8889a307-fa3f-4d38-9127-d41e4686ae47", "metadata": {}, "source": [ - "# CRAG\n", + "# Corrective RAG (CRAG)\n", "\n", - "Corrective-RAG is a recent paper that introduces an interesting approach for active RAG. \n", + "Self-reflection can enhance RAG, enabling correction of poor quality retrieval or generations.\n", + "\n", + "Several recent papers focus on this theme, but implementing the ideas can be tricky.\n", + "\n", + "Here we show how to implement ideas from the `Corrective RAG (CRAG)` paper [here](https://arxiv.org/pdf/2401.15884.pdf) using LangGraph.\n", + "\n", + "## Dependencies\n", + "\n", + "Set `OPENAI_API_KEY`\n", + "\n", + "Set `TAVILY_API_KEY` to enable web search [here](https://app.tavily.com/sign-in)\n", + "\n", + "## CRAG Detail\n", + "\n", + "Corrective-RAG (CRAG) is a recent paper that introduces an interesting approach for self-reflective RAG. \n", "\n", "The framework grades retrieved documents relative to the question:\n", "\n", @@ -41,22 +55,9 @@ "\n", "![Screenshot 2024-02-04 at 2.50.32 PM.png](attachment:5bfa38a2-78a1-4e99-80a2-d98c8a440ea2.png)\n", "\n", - "Paper -\n", - "\n", - "https://arxiv.org/pdf/2401.15884.pdf\n", - "\n", "---\n", "\n", - "Let's implement this from scratch using [LangGraph](https://python.langchain.com/docs/langgraph).\n", - "\n", - "We can make some simplifications:\n", - "\n", - "* Let's skip the knowledge refinement phase as a first pass. This can be added back as a node, if desired. \n", - "* If *any* document is irrelevant, let's opt to supplement retrieval with web search. \n", - "* We'll use [Tavily Search](https://python.langchain.com/docs/integrations/tools/tavily_search) for web search.\n", - "* Let's use query re-writing to optimize the query for web search.\n", - "\n", - "Set the `TAVILY_API_KEY`." + "Let's implement some of these ideas from scratch using [LangGraph](https://python.langchain.com/docs/langgraph)." ] }, { @@ -71,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "3a566a30-cf0e-4330-ad4d-9bf994bdfa86", "metadata": {}, "outputs": [], @@ -120,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "94b3945f-ef0f-458d-a443-f763903550b0", "metadata": {}, "outputs": [], @@ -157,14 +158,21 @@ "\n", "Each `edge` will choose which `node` to call next.\n", "\n", - "It will follow the graph diagram shown above.\n", + "We can make some simplifications from the paper:\n", + "\n", + "* Let's skip the knowledge refinement phase as a first pass. This can be added back as a node, if desired. \n", + "* If *any* document is irrelevant, let's opt to supplement retrieval with web search. \n", + "* We'll use [Tavily Search](https://python.langchain.com/docs/integrations/tools/tavily_search) for web search.\n", + "* Let's use query re-writing to optimize the query for web search.\n", + "\n", + "Here is our graph flow:\n", "\n", "![Screenshot 2024-02-04 at 1.32.52 PM.png](attachment:3b65f495-5fc4-497b-83e2-73844a97f6cc.png)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "efd639c5-82e2-45e6-a94a-6a4039646ef5", "metadata": {}, "outputs": [], @@ -174,7 +182,6 @@ "from typing import Annotated, Sequence, TypedDict\n", "\n", "from langchain import hub\n", - "from langchain.output_parsers import PydanticOutputParser\n", "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", "from langchain.prompts import PromptTemplate\n", "from langchain.schema import Document\n", @@ -186,7 +193,6 @@ "from langchain_core.runnables import RunnablePassthrough\n", "from langchain_core.utils.function_calling import convert_to_openai_tool\n", "from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n", - "from langgraph.prebuilt import ToolInvocation\n", "\n", "### Nodes ###\n", "\n", @@ -415,12 +421,14 @@ "id": "fa076e90-7132-4fcf-8507-db5990314c4f", "metadata": {}, "source": [ - "## Build Graph" + "## Build Graph\n", + "\n", + "The just follows the flow we outlined in the figure above." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "dedae17a-98c6-474d-90a7-9234b7c8cea0", "metadata": {}, "outputs": [], @@ -459,36 +467,110 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "f5b7c2fe-1fc7-4b76-bf93-ba701a40aa6b", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: GENERATE---\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('There are several types of memory in human brains, including sensory memory, '\n", + " 'which retains impressions of sensory information for a few seconds after the '\n", + " 'original stimuli have ended. Short-term memory is utilized for in-context '\n", + " 'learning, while long-term memory allows the agent to retain and recall '\n", + " 'information over extended periods by leveraging an external vector store and '\n", + " 'fast retrieval. Additionally, agents can use tool use to call external APIs '\n", + " 'for extra information that is missing from the model weights.')\n" + ] + } + ], "source": [ "# Run\n", "inputs = {\"keys\": {\"question\": \"Explain how the different types of agent memory work?\"}}\n", "for output in app.stream(inputs):\n", " for key, value in output.items():\n", - " pprint.pprint(f\"Output from node '{key}':\")\n", - " pprint.pprint(\"---\")\n", - " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", - " pprint.pprint(\"\\n---\\n\")" + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value['keys']['generation'])" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "2bee03de-a32c-4bbe-b37a-a13bb825e4cb", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: TRANSFORM QUERY and RUN WEB SEARCH---\n", + "---TRANSFORM QUERY---\n", + "\"Node 'transform_query':\"\n", + "'\\n---\\n'\n", + "---WEB SEARCH---\n", + "\"Node 'web_search':\"\n", + "'\\n---\\n'\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('The AlphaCodium paper uses a test-based, iterative approach for code '\n", + " 'generation. It employs a multi-stage, code-oriented flow that addresses the '\n", + " 'specific challenges of coding problems. Unlike traditional models, '\n", + " 'AlphaCodium actively engages in problem self-reflection, reasoning, and '\n", + " 'iterative code solution generation.')\n" + ] + } + ], "source": [ "# Correction for question not present in context\n", - "inputs = {\"keys\": {\"question\": \"What is the approach taken in the AlphaCodium paper?\"}}\n", + "inputs = {\"keys\": {\"question\": \"What is the approach for code generation taken in the AlphaCodium paper?\"}}\n", "for output in app.stream(inputs):\n", " for key, value in output.items():\n", - " pprint.pprint(f\"Output from node '{key}':\")\n", - " pprint.pprint(\"---\")\n", - " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", - " pprint.pprint(\"\\n---\\n\")" + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state \n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value['keys']['generation'])" ] }, { diff --git a/examples/rag/langgraph_crag_mistral.ipynb b/examples/rag/langgraph_crag_mistral.ipynb index c3464a19a..c1289061e 100644 --- a/examples/rag/langgraph_crag_mistral.ipynb +++ b/examples/rag/langgraph_crag_mistral.ipynb @@ -29,7 +29,7 @@ "id": "92ddc4f4-f7bf-4e0e-b5a5-5abd8a008b21", "metadata": {}, "source": [ - "# Self-Reflective RAG\n", + "# Corrective RAG\n", "\n", "Self-reflection can enhance RAG, enabling correction of poor quality retrieval or generations.\n", "\n", @@ -37,7 +37,7 @@ "\n", "Here we show how to implement self-reflective RAG using `Mistral` and `LangGraph`.\n", "\n", - "In particular, we'll focus on the approach from one paper focused on Corrective RAG (CRAG) [here](https://arxiv.org/pdf/2401.15884.pdf).\n", + "We'll focus on ideas from one paper, `Corrective RAG (CRAG)` [here](https://arxiv.org/pdf/2401.15884.pdf).\n", "\n", "![Screenshot 2024-02-07 at 1.21.51 PM.png](attachment:9db7f9db-55aa-48cb-95d5-bcde3f937589.png)\n", "\n", @@ -187,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 5, "id": "447d1333-082d-479a-a6fa-0ac0df78bb9d", "metadata": {}, "outputs": [], @@ -461,12 +461,14 @@ "id": "6096626d-dfa5-48e0-8a24-3747b298bc67", "metadata": {}, "source": [ - "## Build Graph" + "## Build Graph\n", + "\n", + "The just follows the flow we outlined in the figure above." ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 6, "id": "0a63776c-f9cd-46ce-b8cf-95c066dc5b06", "metadata": {}, "outputs": [], @@ -515,12 +517,48 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "3ab1d8df-a74e-4b48-a30b-e39bbfd5925a", - "metadata": { - "scrolled": true - }, - "outputs": [], + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: TRANSFORM QUERY and RUN WEB SEARCH---\n", + "---TRANSFORM QUERY---\n", + "\"Node 'transform_query':\"\n", + "'\\n---\\n'\n", + "---WEB SEARCH---\n", + "\"Node 'web_search':\"\n", + "'\\n---\\n'\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('Episodic memory stores specific events or experiences, making them unique to '\n", + " 'each individual. Semantic memory, on the other hand, involves general '\n", + " 'knowledge and facts that are not tied to personal experiences. Procedural '\n", + " 'memory is responsible for learning and remembering sequences of actions, '\n", + " \"such as riding a bike. These memory types contribute to an agent's learning \"\n", + " 'and decision-making processes by allowing it to recall past experiences '\n", + " '(episodic), understand and use information (semantic), and perform tasks '\n", + " '(procedural).')\n" + ] + } + ], "source": [ "# Run\n", "inputs = {\n", @@ -531,10 +569,14 @@ "}\n", "for output in app.stream(inputs):\n", " for key, value in output.items():\n", - " pprint.pprint(f\"Output from node '{key}':\")\n", - " pprint.pprint(\"---\")\n", - " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", - " pprint.pprint(\"\\n---\\n\")" + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value['keys']['generation'])" ] }, { @@ -547,10 +589,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "16ea2032-59c7-433d-aca4-2828a1239074", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: TRANSFORM QUERY and RUN WEB SEARCH---\n", + "---TRANSFORM QUERY---\n", + "\"Node 'transform_query':\"\n", + "'\\n---\\n'\n", + "---WEB SEARCH---\n", + "\"Node 'web_search':\"\n", + "'\\n---\\n'\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('There are three types of agent memory in artificial intelligence systems: '\n", + " 'sensory memory, short-term memory, and long-term memory. Sensory memory is '\n", + " 'the learning embedding representations for raw inputs such as text, image or '\n", + " 'other modalities. Short-term memory is in-context learning that is short and '\n", + " 'finite, restricted by the finite context window length of Transformer. '\n", + " 'Long-term memory is an external vector store that the agent can attend to at '\n", + " 'query time, accessible via fast retrieval. The external memory can alleviate '\n", + " 'the restriction of finite attention span by using approximate nearest '\n", + " 'neighbors (ANN) algorithms such as maximum inner product search (MIPS).')\n" + ] + } + ], "source": [ "# Run\n", "inputs = {\n", @@ -561,10 +642,14 @@ "}\n", "for output in app.stream(inputs):\n", " for key, value in output.items():\n", - " pprint.pprint(f\"Output from node '{key}':\")\n", - " pprint.pprint(\"---\")\n", - " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", - " pprint.pprint(\"\\n---\\n\")" + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value['keys']['generation'])" ] }, { diff --git a/examples/rag/langgraph_self_rag.ipynb b/examples/rag/langgraph_self_rag.ipynb index bb9f3ac70..b4b1766f3 100644 --- a/examples/rag/langgraph_self_rag.ipynb +++ b/examples/rag/langgraph_self_rag.ipynb @@ -22,9 +22,21 @@ "source": [ "# Self-RAG\n", "\n", - "Self-RAG is a recent paper that introduces an interesting approach for active RAG. \n", + "Self-reflection can enhance RAG, enabling correction of poor quality retrieval or generations.\n", "\n", - "The framework trains a single arbitrary LM (LLaMA2-7b, 13b) to generate tokens that govern the RAG process:\n", + "Several recent papers focus on this theme, but implementing the ideas can be tricky.\n", + "\n", + "Here we show how to implement ideas from the `Self RAG` paper [here](https://arxiv.org/abs/2310.11511) using LangGraph.\n", + "\n", + "## Dependencies\n", + "\n", + "Set `OPENAI_API_KEY`\n", + "\n", + "## Self-RAG Detail\n", + "\n", + "Self-RAG is a recent paper that introduces an interesting approach for self-reflective RAG. \n", + "\n", + "The framework trains an LLM (e.g., LLaMA2-7b or 13b) to generate tokens that govern the RAG process in a few ways:\n", "\n", "1. Should I retrieve from retriever, `R` -\n", "\n", @@ -59,13 +71,9 @@ "\n", "![Screenshot 2024-02-02 at 1.36.44 PM.png](attachment:ea6a57d2-f2ec-4061-840a-98deb3207248.png)\n", "\n", - "Paper -\n", - "\n", - "https://arxiv.org/abs/2310.11511\n", - "\n", "---\n", "\n", - "Let's implement this from scratch using [LangGraph](https://python.langchain.com/docs/langgraph)." + "Let's implement some of these ideas from scratch using [LangGraph](https://python.langchain.com/docs/langgraph)." ] }, { @@ -80,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "565a6d44-2c9f-4fff-b1ec-eea05df9350d", "metadata": {}, "outputs": [], @@ -129,7 +137,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "f1617e9e-66a8-4c1a-a1fe-cc936284c085", "metadata": {}, "outputs": [], @@ -166,14 +174,16 @@ "\n", "Each `edge` will choose which `node` to call next.\n", "\n", - "We can lay out `self-RAG` as a graph:\n", + "We can lay out `self-RAG` as a graph.\n", + "\n", + "Here is our graph flow:\n", "\n", "![Screenshot 2024-02-02 at 9.01.01 PM.png](attachment:e61fbd0c-e667-4160-a96c-82f95a560b44.png)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "add509d8-6682-4127-8d95-13dd37d79702", "metadata": {}, "outputs": [], @@ -183,7 +193,6 @@ "from typing import Annotated, Sequence, TypedDict\n", "\n", "from langchain import hub\n", - "from langchain.output_parsers import PydanticOutputParser\n", "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", "from langchain.prompts import PromptTemplate\n", "from langchain_community.vectorstores import Chroma\n", @@ -193,7 +202,6 @@ "from langchain_core.runnables import RunnablePassthrough\n", "from langchain_core.utils.function_calling import convert_to_openai_tool\n", "from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n", - "from langgraph.prebuilt import ToolInvocation\n", "\n", "### Nodes ###\n", "\n", @@ -538,12 +546,14 @@ "id": "61cd5797-1782-4d78-a277-8196d13f3e1b", "metadata": {}, "source": [ - "## Build Graph" + "## Build Graph\n", + "\n", + "The just follows the flow we outlined in the figure above." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "0e09ca9f-e36d-4ef4-a0d5-79fdbada9fe0", "metadata": {}, "outputs": [], @@ -596,35 +606,118 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "fb69dbb9-91ee-4868-8c3c-93af3cd885be", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: GENERATE---\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs DOCUMENTS---\n", + "---DECISION: SUPPORTED, MOVE TO FINAL GRADE---\n", + "---FINAL GRADE---\n", + "\"Node 'prepare_for_final_grade':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs QUESTION---\n", + "---DECISION: USEFUL---\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('Short-term memory is the stage of memory that stores information that we are '\n", + " 'currently aware of and needed to carry out complex cognitive tasks. It has a '\n", + " 'limited capacity and lasts for a short duration. Long-term memory, on the '\n", + " 'other hand, can store information for a long time and has unlimited storage '\n", + " 'capacity. It includes explicit/declarative memory for facts and events, and '\n", + " 'implicit/procedural memory for unconscious skills and routines.')\n" + ] + } + ], "source": [ "# Run\n", "inputs = {\"keys\": {\"question\": \"Explain how the different types of agent memory work?\"}}\n", "for output in app.stream(inputs):\n", " for key, value in output.items():\n", - " pprint.pprint(f\"Output from node '{key}':\")\n", - " pprint.pprint(\"---\")\n", - " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", - " pprint.pprint(\"\\n---\\n\")" + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value['keys']['generation'])" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "4138bc51-8c84-4b8a-8d24-f7f470721f6f", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: GENERATE---\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs DOCUMENTS---\n", + "---DECISION: SUPPORTED, MOVE TO FINAL GRADE---\n", + "---FINAL GRADE---\n", + "\"Node 'prepare_for_final_grade':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs QUESTION---\n", + "---DECISION: USEFUL---\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('Chain of thought prompting involves guiding the behavior of autoregressive '\n", + " 'language models by providing prompts or demonstrations that contain '\n", + " 'high-quality reasoning chains. This can be done through methods such as '\n", + " 'self-asking, interleaving retrieval with chain-of-thought reasoning, and '\n", + " 'complexity-based prompting for multi-step reasoning. These techniques aim to '\n", + " \"improve the model's ability to generate coherent and logical responses \"\n", + " 'without updating its weights.')\n" + ] + } + ], "source": [ "inputs = {\"keys\": {\"question\": \"Explain how chain of thought prompting works?\"}}\n", "for output in app.stream(inputs):\n", " for key, value in output.items():\n", - " pprint.pprint(f\"Output from node '{key}':\")\n", - " pprint.pprint(\"---\")\n", - " pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", - " pprint.pprint(\"\\n---\\n\")" + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value['keys']['generation'])" ] }, { From f2ad930cd4cf383ccaefd18d497aa2e0f459e5bd Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 7 Feb 2024 19:31:24 -0800 Subject: [PATCH 011/108] Add AsyncSqliteSaver --- langgraph/checkpoint/aiosqlite.py | 86 +++++++++++++++++++++++++++++++ langgraph/checkpoint/sqlite.py | 6 +++ poetry.lock | 17 +++++- pyproject.toml | 1 + tests/test_pregel_async.py | 52 +++++++++++++++++++ 5 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 langgraph/checkpoint/aiosqlite.py diff --git a/langgraph/checkpoint/aiosqlite.py b/langgraph/checkpoint/aiosqlite.py new file mode 100644 index 000000000..cda29dd27 --- /dev/null +++ b/langgraph/checkpoint/aiosqlite.py @@ -0,0 +1,86 @@ +import pickle +from contextlib import asynccontextmanager +from typing import Optional, final + +import aiosqlite +from langchain_core.pydantic_v1 import Field +from langchain_core.runnables import RunnableConfig +from langchain_core.runnables.utils import ConfigurableFieldSpec + +from langgraph.checkpoint.base import BaseCheckpointSaver, Checkpoint + + +class AsyncSqliteSaver(BaseCheckpointSaver): + conn: aiosqlite.Connection + + is_setup: bool = Field(False, init=False, repr=False) + + class Config: + arbitrary_types_allowed = True + + @classmethod + def from_conn_string(cls, conn_string: str) -> "AsyncSqliteSaver": + return AsyncSqliteSaver(conn=aiosqlite.connect(conn_string)) + + @property + def config_specs(self) -> list[ConfigurableFieldSpec]: + return [ + ConfigurableFieldSpec( + id="thread_id", + annotation=str, + name="Thread ID", + description=None, + default="", + is_shared=True, + ), + ] + + async def setup(self) -> None: + print("hello") + if self.is_setup: + return + + try: + await self.conn + await self.conn.executescript( + """ + CREATE TABLE IF NOT EXISTS checkpoints ( + thread_id TEXT PRIMARY KEY, + checkpoint BLOB + ); + """ + ) + await self.conn.commit() + + print("good bye") + + self.is_setup = True + except BaseException as e: + print(e) + raise e + + def get(self, config: RunnableConfig) -> Optional[Checkpoint]: + raise NotImplementedError + + def put(self, config: RunnableConfig, checkpoint: Checkpoint) -> None: + raise NotImplementedError + + async def aget(self, config: RunnableConfig) -> Optional[Checkpoint]: + await self.setup() + async with self.conn.execute( + "SELECT checkpoint FROM checkpoints WHERE thread_id = ?", + (config["configurable"]["thread_id"],), + ) as cursor: + if value := await cursor.fetchone(): + return pickle.loads(value[0]) + + async def aput(self, config: RunnableConfig, checkpoint: Checkpoint) -> None: + await self.setup() + await self.conn.execute( + "INSERT OR REPLACE INTO checkpoints (thread_id, checkpoint) VALUES (?, ?)", + ( + config["configurable"]["thread_id"], + pickle.dumps(checkpoint), + ), + ) + await self.conn.commit() diff --git a/langgraph/checkpoint/sqlite.py b/langgraph/checkpoint/sqlite.py index 2d6aad224..75958708e 100644 --- a/langgraph/checkpoint/sqlite.py +++ b/langgraph/checkpoint/sqlite.py @@ -79,3 +79,9 @@ class SqliteSaver(BaseCheckpointSaver): pickle.dumps(checkpoint), ), ) + + async def aget(self, config: RunnableConfig) -> Optional[Checkpoint]: + raise NotImplementedError + + async def aput(self, config: RunnableConfig, checkpoint: Checkpoint) -> None: + raise NotImplementedError diff --git a/poetry.lock b/poetry.lock index 63903270c..e1154fe65 100644 --- a/poetry.lock +++ b/poetry.lock @@ -110,6 +110,21 @@ files = [ [package.dependencies] frozenlist = ">=1.1.0" +[[package]] +name = "aiosqlite" +version = "0.19.0" +description = "asyncio bridge to the standard sqlite3 module" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosqlite-0.19.0-py3-none-any.whl", hash = "sha256:edba222e03453e094a3ce605db1b970c4b3376264e56f32e2a4959f948d66a96"}, + {file = "aiosqlite-0.19.0.tar.gz", hash = "sha256:95ee77b91c8d2808bd08a59fbebf66270e9090c3d92ffbf260dc0db0b979577d"}, +] + +[package.extras] +dev = ["aiounittest (==1.4.1)", "attribution (==1.6.2)", "black (==23.3.0)", "coverage[toml] (==7.2.3)", "flake8 (==5.0.4)", "flake8-bugbear (==23.3.12)", "flit (==3.7.1)", "mypy (==1.2.0)", "ufmt (==2.1.0)", "usort (==1.0.6)"] +docs = ["sphinx (==6.1.3)", "sphinx-mdinclude (==0.5.3)"] + [[package]] name = "annotated-types" version = "0.6.0" @@ -3714,4 +3729,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<4.0" -content-hash = "faf7cebfb8e64c2edefb69bacdbdd10d8399ea8b3ba9f46c4383e72bd3cd925a" +content-hash = "ca23b252b03db034e0da020db7769f4b1df7c49185ef2121d5db96d05b450af6" diff --git a/pyproject.toml b/pyproject.toml index 58808da0f..5a9c3574a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,6 +40,7 @@ jupyter = "^1.0.0" langchain = "^0.1.0" langchainhub = "^0.1.14" langchain-openai = "^0.0.2" +aiosqlite = "^0.19.0" [tool.ruff] select = [ "E", "F", "I" ] diff --git a/tests/test_pregel_async.py b/tests/test_pregel_async.py index e829e2919..37a2f667f 100644 --- a/tests/test_pregel_async.py +++ b/tests/test_pregel_async.py @@ -22,6 +22,7 @@ from langgraph.channels.binop import BinaryOperatorAggregate from langgraph.channels.context import Context from langgraph.channels.last_value import LastValue from langgraph.channels.topic import Topic +from langgraph.checkpoint.aiosqlite import AsyncSqliteSaver from langgraph.checkpoint.memory import MemorySaver from langgraph.graph import END, Graph, StateGraph from langgraph.graph.message import MessageGraph @@ -476,6 +477,57 @@ async def test_invoke_checkpoint(mocker: MockerFixture) -> None: assert checkpoint["channel_values"].get("total") == 5 +async def test_invoke_checkpoint_sqlite(mocker: MockerFixture) -> None: + add_one = mocker.Mock(side_effect=lambda x: x["total"] + x["input"]) + + def raise_if_above_10(input: int) -> int: + if input > 10: + raise ValueError("Input is too large") + return input + + one = ( + Channel.subscribe_to(["input"]).join(["total"]) + | add_one + | Channel.write_to("output", "total") + | raise_if_above_10 + ) + + memory = AsyncSqliteSaver.from_conn_string(":memory:") + + app = Pregel( + nodes={"one": one}, + channels={"total": BinaryOperatorAggregate(int, operator.add)}, + checkpointer=memory, + debug=True, + ) + + # total starts out as 0, so output is 0+2=2 + assert await app.ainvoke(2, {"configurable": {"thread_id": "1"}}) == 2 + checkpoint = await memory.aget({"configurable": {"thread_id": "1"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 2 + # total is now 2, so output is 2+3=5 + assert await app.ainvoke(3, {"configurable": {"thread_id": "1"}}) == 5 + checkpoint = await memory.aget({"configurable": {"thread_id": "1"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 7 + # total is now 2+5=7, so output would be 7+4=11, but raises ValueError + with pytest.raises(ValueError): + await app.ainvoke(4, {"configurable": {"thread_id": "1"}}) + # checkpoint is not updated + checkpoint = await memory.aget({"configurable": {"thread_id": "1"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 7 + # on a new thread, total starts out as 0, so output is 0+5=5 + assert await app.ainvoke(5, {"configurable": {"thread_id": "2"}}) == 5 + checkpoint = await memory.aget({"configurable": {"thread_id": "1"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 7 + checkpoint = await memory.aget({"configurable": {"thread_id": "2"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 5 + + async def test_invoke_two_processes_two_in_join_two_out(mocker: MockerFixture) -> None: add_one = mocker.Mock(side_effect=lambda x: x + 1) add_10_each = mocker.Mock(side_effect=lambda x: sorted(y + 10 for y in x)) From b0f0d6f3f7465dafc8da98be5c9bd86d8dd1fd21 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 7 Feb 2024 19:49:35 -0800 Subject: [PATCH 012/108] Fix errors being swallowed --- langgraph/pregel/__init__.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/langgraph/pregel/__init__.py b/langgraph/pregel/__init__.py index ad0b650d2..016f3a35b 100644 --- a/langgraph/pregel/__init__.py +++ b/langgraph/pregel/__init__.py @@ -392,11 +392,10 @@ class Pregel( finally: # cancel any pending tasks when generator is interrupted try: - futures + for task in futures: + task.cancel() except NameError: - return - for task in futures: - task.cancel() + pass async def _atransform( self, @@ -562,11 +561,10 @@ class Pregel( finally: # cancel any pending tasks when generator is interrupted try: - futures + for task in futures: + task.cancel() except NameError: - return - for task in futures: - task.cancel() + pass def invoke( self, From 736649df66c472eb0dc15182bf5c8f195abe0e7c Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 7 Feb 2024 19:49:52 -0800 Subject: [PATCH 013/108] Run failed tests first --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 29a0f5c91..6a4b86629 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ test: poetry run pytest test_watch: - poetry run ptw --snapshot-update --now . -- -vv -x tests + poetry run ptw --snapshot-update --now . -- -vv -x --ff tests ###################### # LINTING AND FORMATTING From 387eb0cedd9f4ed8471acffc108637546f9ed8fe Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 7 Feb 2024 19:50:28 -0800 Subject: [PATCH 014/108] Lint --- langgraph/checkpoint/aiosqlite.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/langgraph/checkpoint/aiosqlite.py b/langgraph/checkpoint/aiosqlite.py index cda29dd27..580a3a102 100644 --- a/langgraph/checkpoint/aiosqlite.py +++ b/langgraph/checkpoint/aiosqlite.py @@ -1,6 +1,5 @@ import pickle -from contextlib import asynccontextmanager -from typing import Optional, final +from typing import Optional import aiosqlite from langchain_core.pydantic_v1 import Field From eafb70b9abee263b99de3698910adbe05da79772 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 7 Feb 2024 19:51:25 -0800 Subject: [PATCH 015/108] Move aiosqlite to test deps --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5a9c3574a..7d19d2096 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,7 @@ syrupy = "^4.0.2" httpx = "^0.26.0" pytest-watcher = "^0.3.4" langchain = "^0.1.0" +aiosqlite = "^0.19.0" [tool.poetry.group.lint.dependencies] ruff = "^0.1.4" @@ -40,7 +41,6 @@ jupyter = "^1.0.0" langchain = "^0.1.0" langchainhub = "^0.1.14" langchain-openai = "^0.0.2" -aiosqlite = "^0.19.0" [tool.ruff] select = [ "E", "F", "I" ] From f2c2f88413d43d00871f4e727db40ca0277ff1f0 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 7 Feb 2024 19:53:19 -0800 Subject: [PATCH 016/108] Lock --- poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index e1154fe65..462f4e42e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3729,4 +3729,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<4.0" -content-hash = "ca23b252b03db034e0da020db7769f4b1df7c49185ef2121d5db96d05b450af6" +content-hash = "f489f2e9159e8db255a43027617c41a389afb5fe84ff94bf8521c0f98de8cd38" From c4f87cdccd50d998d6dc3fbb981a902bfd73f384 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 7 Feb 2024 20:02:36 -0800 Subject: [PATCH 017/108] Close the connection --- tests/test_pregel_async.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_pregel_async.py b/tests/test_pregel_async.py index 37a2f667f..db281e7c6 100644 --- a/tests/test_pregel_async.py +++ b/tests/test_pregel_async.py @@ -527,6 +527,8 @@ async def test_invoke_checkpoint_sqlite(mocker: MockerFixture) -> None: assert checkpoint is not None assert checkpoint["channel_values"].get("total") == 5 + await memory.conn.close() + async def test_invoke_two_processes_two_in_join_two_out(mocker: MockerFixture) -> None: add_one = mocker.Mock(side_effect=lambda x: x + 1) From 37bad4e30a978bc65f2f1273a892ffb6df6f4008 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 7 Feb 2024 20:05:05 -0800 Subject: [PATCH 018/108] Add human in the loop notebook --- README.md | 11 +- examples/human-in-the-loop.ipynb | 495 +++++++++++++++++++++++++++++++ langgraph/graph/graph.py | 20 +- langgraph/graph/state.py | 13 +- 4 files changed, 529 insertions(+), 10 deletions(-) create mode 100644 examples/human-in-the-loop.ipynb diff --git a/README.md b/README.md index 173831445..96f70c7db 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,7 @@ The path that is taken is not known until that node is run (the LLM decides). 1. Conditional Edge: after the agent is called, we should either: a. If the agent said to take an action, then the function to invoke tools should be called - + b. If the agent said that it was finished, then it should finish 2. Normal Edge: after the tools are invoked, it should always go back to the agent to decide what to do next @@ -469,7 +469,7 @@ It can often be tough to evaluation chat bots in multi-turn situations. One way ### Async If you are running LangGraph in async workflows, you may want to create the nodes to be async by default. -In order for a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/async.ipynb) +For a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/async.ipynb) ### Streaming Tokens @@ -479,7 +479,12 @@ For a guide on how to do this, see [this documentation](https://github.com/langc ### Persistence LangGraph comes with built-in persistence, allowing you to save the state of the graph at point and resume from there. -In order for a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/persistence.ipynb) +For a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/persistence.ipynb) + +### Human-in-the-loop + +LangGraph comes with built-in support for human-in-the-loop workflows. This is useful when you want to have a human review the current state before proceeding to a particular node. +For a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/human-in-the-loop.ipynb) ## Documentation diff --git a/examples/human-in-the-loop.ipynb b/examples/human-in-the-loop.ipynb new file mode 100644 index 000000000..694ad2f2e --- /dev/null +++ b/examples/human-in-the-loop.ipynb @@ -0,0 +1,495 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", + "metadata": {}, + "source": [ + "# Persistence\n", + "\n", + "When creating LangGraph agents, you can also set them up so that they persist their state. This allows you to do things like interact with an agent multiple times and have it remember previous interactions." + ] + }, + { + "cell_type": "markdown", + "id": "7cbd446a-808f-4394-be92-d45ab818953c", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "First we need to install the packages required" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install --quiet -U langchain langchain_openai tavily-python" + ] + }, + { + "cell_type": "markdown", + "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", + "metadata": {}, + "source": [ + "Next, we need to set API keys for OpenAI (the LLM we will use) and Tavily (the search tool we will use)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "OpenAI API Key: ········\n", + "Tavily API Key: ········\n" + ] + } + ], + "source": [ + "import os\n", + "import getpass\n", + "\n", + "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"OpenAI API Key:\")\n", + "os.environ[\"TAVILY_API_KEY\"] = getpass.getpass(\"Tavily API Key:\")" + ] + }, + { + "cell_type": "markdown", + "id": "f0ed46a8-effe-4596-b0e1-a6a29ee16f5c", + "metadata": {}, + "source": [ + "Optionally, we can set API key for [LangSmith tracing](https://smith.langchain.com/), which will give us best-in-class observability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95e25aec-7c9f-4a63-b143-225d0e9a79c3", + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass(\"LangSmith API Key:\")" + ] + }, + { + "cell_type": "markdown", + "id": "21ac643b-cb06-4724-a80c-2862ba4773f1", + "metadata": {}, + "source": [ + "## Set up the tools\n", + "\n", + "We will first define the tools we want to use.\n", + "For this simple example, we will use a built-in search tool via Tavily.\n", + "However, it is really easy to create your own tools - see documentation [here](https://python.langchain.com/docs/modules/agents/tools/custom_tools) on how to do that.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d7ef57dd-5d6e-4ad3-9377-a92201c1310e", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "\n", + "tools = [TavilySearchResults(max_results=1)]" + ] + }, + { + "cell_type": "markdown", + "id": "01885785-b71a-44d1-b1d6-7b5b14d53b58", + "metadata": {}, + "source": [ + "We can now wrap these tools in a simple ToolExecutor.\n", + "This is a real simple class that takes in a ToolInvocation and calls that tool, returning the output.\n", + "A ToolInvocation is any class with `tool` and `tool_input` attribute.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5cf3331e-ccb3-41c8-aeb9-a840a94d41e7", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.prebuilt import ToolExecutor\n", + "\n", + "tool_executor = ToolExecutor(tools)" + ] + }, + { + "cell_type": "markdown", + "id": "5497ed70-fce3-47f1-9cad-46f912bad6a5", + "metadata": {}, + "source": [ + "## Set up the model\n", + "\n", + "Now we need to load the chat model we want to use.\n", + "Importantly, this should satisfy two criteria:\n", + "\n", + "1. It should work with messages. We will represent all agent state in the form of messages, so it needs to be able to work well with them.\n", + "2. It should work with OpenAI function calling. This means it should either be an OpenAI model or a model that exposes a similar interface.\n", + "\n", + "Note: these model requirements are not requirements for using LangGraph - they are just requirements for this one example." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "892b54b9-75f0-4804-9ed0-88b5e5532989", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI\n", + "\n", + "# We will set streaming=True so that we can stream tokens\n", + "# See the streaming section for more information on this.\n", + "model = ChatOpenAI(temperature=0, streaming=True)" + ] + }, + { + "cell_type": "markdown", + "id": "a77995c0-bae2-4cee-a036-8688a90f05b9", + "metadata": {}, + "source": [ + "\n", + "After we've done this, we should make sure the model knows that it has these tools available to call.\n", + "We can do this by converting the LangChain tools into the format for OpenAI function calling, and then bind them to the model class.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "cd3cbae5-d92c-4559-a4aa-44721b80d107", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.utils.function_calling import convert_to_openai_function\n", + "\n", + "functions = [convert_to_openai_function(t) for t in tools]\n", + "model = model.bind_functions(functions)" + ] + }, + { + "cell_type": "markdown", + "id": "e03c5094-9297-4d19-a04e-3eedc75cefb4", + "metadata": {}, + "source": [ + "## Define the nodes\n", + "\n", + "We now need to define a few different nodes in our graph.\n", + "In `langgraph`, a node can be either a function or a [runnable](https://python.langchain.com/docs/expression_language/).\n", + "There are two main nodes we need for this:\n", + "\n", + "1. The agent: responsible for deciding what (if any) actions to take.\n", + "2. A function to invoke tools: if the agent decides to take an action, this node will then execute that action.\n", + "\n", + "We will also need to define some edges.\n", + "Some of these edges may be conditional.\n", + "The reason they are conditional is that based on the output of a node, one of several paths may be taken.\n", + "The path that is taken is not known until that node is run (the LLM decides).\n", + "\n", + "1. Conditional Edge: after the agent is called, we should either:\n", + " a. If the agent said to take an action, then the function to invoke tools should be called\n", + " b. If the agent said that it was finished, then it should finish\n", + "2. Normal Edge: after the tools are invoked, it should always go back to the agent to decide what to do next\n", + "\n", + "Let's define the nodes, as well as a function to decide how what conditional edge to take." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3b541bb9-900c-40d0-964d-7b5dfee30667", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.prebuilt import ToolInvocation\n", + "import json\n", + "from langchain_core.messages import FunctionMessage\n", + "\n", + "# Define the function that determines whether to continue or not\n", + "def should_continue(messages):\n", + " last_message = messages[-1]\n", + " # If there is no function call, then we finish\n", + " if \"function_call\" not in last_message.additional_kwargs:\n", + " return \"end\"\n", + " # Otherwise if there is, we continue\n", + " else:\n", + " return \"continue\"\n", + "\n", + "# Define the function that calls the model\n", + "def call_model(messages):\n", + " response = model.invoke(messages)\n", + " # We return a list, because this will get added to the existing list\n", + " return response\n", + "\n", + "# Define the function to execute tools\n", + "def call_tool(messages):\n", + " # Based on the continue condition\n", + " # we know the last message involves a function call\n", + " last_message = messages[-1]\n", + " # We construct an ToolInvocation from the function_call\n", + " action = ToolInvocation(\n", + " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", + " tool_input=json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"]),\n", + " )\n", + " # We call the tool_executor and get back a response\n", + " response = tool_executor.invoke(action)\n", + " # We use the response to create a FunctionMessage\n", + " function_message = FunctionMessage(content=str(response), name=action.tool)\n", + " # We return a list, because this will get added to the existing list\n", + " return function_message" + ] + }, + { + "cell_type": "markdown", + "id": "ffd6e892-946c-4899-8cc0-7c9291c1f73b", + "metadata": {}, + "source": [ + "## Define the graph\n", + "\n", + "We can now put it all together and define the graph!" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "812b4e70-4956-4415-8880-db48b3dcbad2", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import MessageGraph, END\n", + "# Define a new graph\n", + "workflow = MessageGraph()\n", + "\n", + "# Define the two nodes we will cycle between\n", + "workflow.add_node(\"agent\", call_model)\n", + "workflow.add_node(\"action\", call_tool)\n", + "\n", + "# Set the entrypoint as `agent`\n", + "# This means that this node is the first one called\n", + "workflow.set_entry_point(\"agent\")\n", + "\n", + "# We now add a conditional edge\n", + "workflow.add_conditional_edges(\n", + " # First, we define the start node. We use `agent`.\n", + " # This means these are the edges taken after the `agent` node is called.\n", + " \"agent\",\n", + " # Next, we pass in the function that will determine which node is called next.\n", + " should_continue,\n", + " # Finally we pass in a mapping.\n", + " # The keys are strings, and the values are other nodes.\n", + " # END is a special node marking that the graph should finish.\n", + " # What will happen is we will call `should_continue`, and then the output of that\n", + " # will be matched against the keys in this mapping.\n", + " # Based on which one it matches, that node will then be called.\n", + " {\n", + " # If `tools`, then we call the tool node.\n", + " \"continue\": \"action\",\n", + " # Otherwise we finish.\n", + " \"end\": END\n", + " }\n", + ")\n", + "\n", + "# We now add a normal edge from `tools` to `agent`.\n", + "# This means that after `tools` is called, `agent` node is called next.\n", + "workflow.add_edge('action', 'agent')" + ] + }, + { + "cell_type": "markdown", + "id": "bc9c8536-f90b-44fa-958d-5df016c66d8f", + "metadata": {}, + "source": [ + "**Persistence**\n", + "\n", + "To add in persistence, we pass in a checkpoint when compiling the graph" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "6845ed6a-d155-4105-9160-28849877248b", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.checkpoint.sqlite import SqliteSaver\n", + "\n", + "memory = SqliteSaver.from_conn_string(\":memory:\")" + ] + }, + { + "cell_type": "markdown", + "id": "cc7fa795-b3f8-4731-b37e-db7a802558ac", + "metadata": {}, + "source": [ + "**Interrupt**\n", + "\n", + "To always interrupt before a particular node, pass the name of the node to compile." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "79d29875-8aa8-434c-9f20-1c58346a6249", + "metadata": {}, + "outputs": [], + "source": [ + "# Finally, we compile it!\n", + "# This compiles it into a LangChain Runnable,\n", + "# meaning you can use it as you would any other runnable\n", + "app = workflow.compile(checkpointer=memory, interrupt_before=['action'])" + ] + }, + { + "cell_type": "markdown", + "id": "2a1b56c5-bd61-4192-8bdb-458a1e9f0159", + "metadata": {}, + "source": [ + "## Interacting with the Agent\n", + "\n", + "We can now interact with the agent and see that it stops before calling a tool.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "cfd140f0-a5a6-4697-8115-322242f197b5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "content='Hello Bob! How can I assist you today?'\n" + ] + } + ], + "source": [ + "from langchain_core.messages import HumanMessage\n", + "inputs = [HumanMessage(content=\"hi! I'm bob\")]\n", + "for event in app.stream(inputs, {\"configurable\": {\"thread_id\": \"2\"}}):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "08ae8246-11d5-40e1-8567-361e5bef8917", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "content='Your name is Bob.'\n" + ] + } + ], + "source": [ + "inputs = [HumanMessage(content=\"what is my name?\")]\n", + "for event in app.stream(inputs, {\"configurable\": {\"thread_id\": \"2\"}}):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "273d56a8-f40f-4a51-a27f-7c6bb2bda0ba", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "content='' additional_kwargs={'function_call': {'arguments': '{\\n \"query\": \"weather in San Francisco now\"\\n}', 'name': 'tavily_search_results_json'}}\n" + ] + } + ], + "source": [ + "inputs = [HumanMessage(content=\"what's the weather in sf now?\")]\n", + "for event in app.stream(inputs, {\"configurable\": {\"thread_id\": \"2\"}}):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + }, + { + "cell_type": "markdown", + "id": "1bca3814-db08-4b0b-8c0c-95b6c5440c81", + "metadata": {}, + "source": [ + "**Resume**\n", + "\n", + "We can now call the agent again with no inputs to continue, ie. run the tool as requested." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "51923913-20f7-4ee1-b9ba-d01f5fb2869b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "content='[{\\'url\\': \\'https://www.sfexaminer.com/news/climate/san-francisco-weather-forecast-calls-for-strongest-2024-rain/article_75347810-bfc3-11ee-abf6-e74c528e0583.html\\', \\'content\\': \"San Francisco is projected to receive 2.5 and 3 inches of rain, Clouser said, as well as gusts of wind up to 45 mph. Bay Area starting Wednesday at 4 a.m. and a 24-hour wind advisory in San Francisco starting at the same time. One of winter\\'s \\'stronger\\' storms to douse San Francisco On the heels of record-breaking heat to open the week, heavy rain is slated to pound the Bay Area on Wednesday.A series of historic storms last winter led to one of the wettest water years (Oct. 1 to Sept. 30) in The City\\'s history, highlighted by a 10-day stretch last January in which San Francisco...\"}]' name='tavily_search_results_json'\n", + "content=\"Currently, I couldn't retrieve the exact weather information for San Francisco. However, there is a forecast of heavy rain and gusts of wind up to 45 mph in San Francisco starting Wednesday at 4 a.m. You may want to check a reliable weather website or app for the most up-to-date weather conditions.\"\n" + ] + } + ], + "source": [ + "for event in app.stream(None, {\"configurable\": {\"thread_id\": \"2\"}}):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/langgraph/graph/graph.py b/langgraph/graph/graph.py index a0ac4a172..f3fa36085 100644 --- a/langgraph/graph/graph.py +++ b/langgraph/graph/graph.py @@ -1,6 +1,6 @@ from asyncio import iscoroutinefunction from collections import defaultdict -from typing import Any, Callable, Dict, NamedTuple, Optional +from typing import Any, Callable, Dict, NamedTuple, Optional, Sequence from langchain_core.runnables import Runnable from langchain_core.runnables.base import ( @@ -88,7 +88,7 @@ class Graph: def set_finish_point(self, key: str) -> None: return self.add_edge(key, END) - def validate(self) -> None: + def validate(self, interrupt: Optional[Sequence[str]] = None) -> None: all_starts = {src for src, _ in self.edges} | {src for src in self.branches} for node in self.nodes: if node not in all_starts: @@ -114,8 +114,17 @@ class Graph: if node not in all_ends: raise ValueError(f"Node `{node}` is not reachable") - def compile(self, checkpointer: Optional[BaseCheckpointSaver] = None) -> Pregel: - self.validate() + if interrupt: + for node in interrupt: + if node not in self.nodes: + raise ValueError(f"Node `{node}` is not present") + + def compile( + self, + checkpointer: Optional[BaseCheckpointSaver] = None, + interrupt_before: Optional[Sequence[str]] = None, + ) -> Pregel: + self.validate(interrupt=interrupt_before) outgoing_edges = defaultdict(list) for start, end in self.edges: @@ -145,4 +154,7 @@ class Graph: output=END, hidden=[f"{node}:inbox" for node in self.nodes], checkpointer=checkpointer, + interrupt=[f"{node}:inbox" for node in interrupt_before] + if interrupt_before + else [], ) diff --git a/langgraph/graph/state.py b/langgraph/graph/state.py index 88c526e2f..1bcef05cb 100644 --- a/langgraph/graph/state.py +++ b/langgraph/graph/state.py @@ -1,7 +1,7 @@ from collections import defaultdict from functools import partial from inspect import signature -from typing import Any, Optional, Type +from typing import Any, Optional, Sequence, Type from langchain_core.runnables import RunnableLambda, RunnablePassthrough from langchain_core.runnables.base import RunnableLike @@ -34,8 +34,12 @@ class StateGraph(Graph): ) return super().add_node(key, action) - def compile(self, checkpointer: Optional[BaseCheckpointSaver] = None) -> Pregel: - self.validate() + def compile( + self, + checkpointer: Optional[BaseCheckpointSaver] = None, + interrupt_before: Optional[Sequence[str]] = None, + ) -> Pregel: + self.validate(interrupt=interrupt_before) state_keys = list(self.channels) state_keys_read = state_keys[0] if state_keys == ["__root__"] else state_keys @@ -98,6 +102,9 @@ class StateGraph(Graph): output=END, hidden=[f"{node}:inbox" for node in self.nodes] + [START] + state_keys, checkpointer=checkpointer, + interrupt=[f"{node}:inbox" for node in interrupt_before] + if interrupt_before + else [], ) From 1af7615ff979e6590cedf5126b2c2306817adeb7 Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Wed, 7 Feb 2024 22:22:43 -0800 Subject: [PATCH 019/108] cr --- examples/human-in-the-loop.ipynb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/examples/human-in-the-loop.ipynb b/examples/human-in-the-loop.ipynb index 694ad2f2e..8d97da44e 100644 --- a/examples/human-in-the-loop.ipynb +++ b/examples/human-in-the-loop.ipynb @@ -5,9 +5,15 @@ "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", "metadata": {}, "source": [ - "# Persistence\n", + "# Human-in-the-loop\n", "\n", - "When creating LangGraph agents, you can also set them up so that they persist their state. This allows you to do things like interact with an agent multiple times and have it remember previous interactions." + "When creating LangGraph agents, it is often nice to add a human in the loop component.\n", + "This can be helpful when giving them access to tools.\n", + "Often in these situations you may want to manually approve an action before taking.\n", + "\n", + "This can be in several ways, but the primary supported way is to add an \"interupt\" before a node is executed.\n", + "This interupts execution at that node.\n", + "You can then resume from that spot to continue." ] }, { @@ -487,7 +493,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.6" + "version": "3.11.1" } }, "nbformat": 4, From c5290163468efe608090f56cf43974da9cc48c4e Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Thu, 8 Feb 2024 10:30:05 -0800 Subject: [PATCH 020/108] 0.0.24 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 7d19d2096..8df024914 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langgraph" -version = "0.0.23" +version = "0.0.24" description = "langgraph" authors = [] license = "LangGraph License" From bdd8a084ccad9bbe900af11981d04dbc8c7b2e85 Mon Sep 17 00:00:00 2001 From: Lance Martin Date: Thu, 8 Feb 2024 14:42:13 -0800 Subject: [PATCH 021/108] Updates to support running locally --- examples/rag/langgraph_crag_mistral.ipynb | 184 +++++++++++++++------- 1 file changed, 127 insertions(+), 57 deletions(-) diff --git a/examples/rag/langgraph_crag_mistral.ipynb b/examples/rag/langgraph_crag_mistral.ipynb index c1289061e..3026b79a0 100644 --- a/examples/rag/langgraph_crag_mistral.ipynb +++ b/examples/rag/langgraph_crag_mistral.ipynb @@ -2,26 +2,17 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "id": "19969669-b47f-47f3-b6d4-f7b155434840", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[33mWARNING: There was an error checking the latest version of pip.\u001b[0m\u001b[33m\n", - "\u001b[0m" - ] - } - ], + "outputs": [], "source": [ - "! pip install --quiet langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph tavily-python langchain-mistralai" + "! pip install --quiet langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph tavily-python langchain-mistralai gpt4all" ] }, { "attachments": { - "9db7f9db-55aa-48cb-95d5-bcde3f937589.png": { + "a65940f9-5c51-4d7c-9ca1-ae576e4bb51a.png": { "image/png": "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9WPuJCABCUhAAn1NAAXeaqutVv41U0r2ohAogb///e8XF198cbHmmmtWXoI4Sy21VIHf8JGWZorqNC9vv/12sdtuuw2UwYMy5lxHpWXP7U855ZS54K6HhZkbuYTTBafjkfZDLVdseGC9k1ia5SWOl26naz2kx0d7v2qGRqt8BUMA8VJWrc5Nj4+F/iLNc6v9SSaZpBYlHT1fO/DuBn1LLPF5cXi6PVQldppOP+wPpQ2mTNP9TsoV9x2dnJebOdHq/NiI0CpuN4/HC653km6/91+dlMW4EpCABCQgAQn0DwFnevRPXZgTCUhAAhKQgASGQIAZJvx95zvfKV2G3HHHHeWCsbj9iAV/53fffXeli5w47nCUW3E6U001VbzbdPvaa6+tc9fFotb4bGctA9JBMcTIYxZzTsvWNOHk4EgrmHDLFAsjnOeee+44KLudnpeN1OPA2CUNMyjitSHmnXfegsWJEdy3pAuQV2UtdsWUjs5nBHh8vCqNNBy3Z0FGaoZMuF4vf1kHhDUokGYj3jvJQy/6i06u38243COBT+wiKL1Guth4M5du8bm4bRvPkt6fL7300pBxpH0eC5m3YySI13BKL447wB122CENLk455ZRyHSDWAhoLMqj911hgbx4lIAEJSEACg0xAo8cg165lk4AEJCABCYwjAiiQWDScv+2226549tlnCxaLvf/++0sKKIMxGuTWNUhH0zZTIPYK6X333VdLGmXvOeec06AUQwmXrhFRO6liI50xgT//kZRYocV1MR5sv/32I5mFIV0LheIVV1xROzf15x8vzM2MhC996UvFNNNMU4vfzkbqioqF6auMHulo/Tj9OB3aOG64cqP0hztbIr7mSGyzTkJQ6j/wwAOVl+z0niCh4fQXlRkZ4QPxOhL0b6ztgJE0lXSWW65tpOe4XzTcQxg511lnnSyaN998MxseAlMj7ic/+cly7alwfCi/hx9+eHY9D9Laeeedi1/84hd1i6IP5Rojcc6g9l8jwc5rSEACEpCABCRQTUD3VtVsPCIBCUhAAhKQwBgmgD96ZkvEUjVSFwVorCxEWTQURWp8rU63H3vssdopKM9zo4BZ4PzWW2+txWtnI13IHcX6SApuXRZaaKHaJU844YTilltuqe3368ZZZ51VW0yYPLKQdizpouPM9Gil+IzPZzsdcY8rtpwwO+fee+/NHSrD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kD8WK//Upz5VzD///MW8885bMBukXaVpQ2IGSEACo06g6v5dZJFFio997GPlfb7CCisUH/nIR0Y9r2ZAAhKQgAQkIIGxQWCi/7wrYyOr5lICEpCABCQgAQlIQAISGE8EXnjhheKdd94ppphiimKyySbTj/94qnzLOm4IsJ4H6/Zwj08++eTlr7M5xk31W1AJSEACEpBATwho9OgJVhOVgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhgpAlMPNIX9HoSkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIoBcENHr0gqppSkACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkMOIENHqMOHIvKAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQQC8IaPToBVXTlMAYIPDmm2+OgVyaRQlIQAISkED3CAzis+/tt98u/v3vf3cPkimNGwK2nXFT1QNf0LfeequvyjiIz5q+AmxmxiUBn1njstottASGReA9wzrbkyUggTFH4Nlnny0OPfTQ4sorryyWW2654uCDDy7mmmuuMVeOfsjwYYcdVjzzzDOVWdltt92K+eabr/J4Px/42te+VrzwwgtlFldZZZVi3XXX7efs9k3eXnrppeL8888vHnnkkeKxxx4rfvvb3xbve9/7iplmmqmYeeaZi+OOO67c7psMD3BG7r333uK0006rLOG8885b7L777pXH2z1gnTcndcsttxTXXntt8fjjjxcPP/xw8fe//734wAc+UMw666zFmmuuWWy77bbFK6+8Uuyzzz7FO++8k01s4oknLo4//vjiPe8Z+mvr3XffXdBn0y422mij8tnHvTnW5cILLyyOOeaY4uWXXy6++tWvFttvv/1YL5L575DA6aefXtC+kbnnnrvYc88920rBttMWJiP1OQGUoEceeWRxxhlnFPPMM0+x3377FSuuuOKo5drvrFFD74UHnIDPrAGvYIsngR4RmOg/70qP0jZZCUhgCAT4cL3tttvqzvzc5z5XLLDAArUwRnSizItv32mmmabYbLPNanGqNiZMmFCcdNJJtcPrrLNOqYitBbjRNoEVVlihePLJJyvjo/xeZpllKo+PxAEUsijeUcA/+uijpTIe5TvtKfzNMsssDVlZcMEFi3/+859l+DbbbFMccMABDXEMqCdw/fXXl8omlLpV8uCDDxZTTz111WHDu0gAw+4OO+xQmeJiiy1WXHLJJZXH2zlgnVdTou/ByHDRRRdVRkJBv++++xYoiRZffPHKeBzAkPje9763aZxmB9dee+3i/vvvr0XhWYjxYyzLP/7xj2KRRRapK8INN9xQfPSjH60Lc2ewCWA4vPrqq8tC0h4uu+yylgW27bREZIQxQuDGG28stthii1puMarfeeedwzKS1xIbwobfWUOA5ikSaEHAZ1YLQB6WgAQqCQx9yFxlkh6QgASGQ+DWW28tjj766Loknn/++eKQQw6phaHE5qU6Fl7y2zF6hNGA4dx0P4T38nfLLbesKZ/WWGONUjHWy+uN17QvvfTSYtddd80W/4orrqiFb7rppuXIuLEw6rlf2w4f3eStmcBXg0czQmPrmHVeXV8Y5HkexUaGXOycwTUXb7hhr7/+ekNeHnjggRE1erz22mt1RvADDzywYNDBcOR3v/tdw+kPPfSQRo8GKgakBGw7KRH3xyoBBpPEwsCTv/3tb0U7z5eTTz65nCHC+dNPP305KzFOayjb6XdVuj+UND1HAmOJgO87Y6m2zKsEBp+ARo/Br2NLOAAErrvuujqjRzoTpJMirr/++sXtt99eO2WDDTaobY/UBh8jYTQ8IzfGqpx66qkFL3ZBmE2x9957h91R+2WENTMzfvrTn7aVh+9///vFX//61wIXGbiR6Wfpx7bDzKvDDz+8DtsnP/nJUumLq5HJJpusoE7eeOONujju9JbAZz/72YYRz7j2w73RcMU6b07wZz/7WYORYccddyyYXfOhD32ovBeee+652gzGGWaYoaGuMNqee+65zS/U5lFmiPDsu/jii2tnrLXWWrXtkdjABUt47nG9MJNuONdedNFFS55/+ctfasmMpluXWibc6HsCtp2+ryIz2CYB+vJ4sNiSSy7ZlsGD5HELGPrlbr2j9cN3VpvojCaBnhDwfacnWE1UAhIYIgGNHkME52kSGEkCf/zjH4s///nPtZf4m2++eciXZ2TptNNOWzBKGXciq6666pDTGu8nput1oNzuB9luu+0KZgzFgrKR+mYdg6effrqgDTH9Xxk+ARS88ahZZi+xdke/tIfhl3BspsCsmtT1z4wzztiVwljnzTF+85vfrIuAu520LuIIk0wyScPxVrNE4vPb2cbgRR4wTq+++urFEkss0c5pfR2H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mzx8X2t72gQ7v28fG/74XwNr7ljyoP7A8MdtwCX9bOcr77DHLuxjYz+fZSPHPG8PPfSQ9e7dOxCfEQQQQAABBBBAoJgC6hvCDyrIeOqpp6xv377+5MjD1Uqa9FTBxeTJk5PzDB482Jo2bZocL+ZARabP78si6jaPGTMmEPWOO+6wE088MTDNjahT8I8++siNlvkZ7rRe+1oFKLVq1SpzXj9Cu3btAgUz6sj+qKOO8qMwjAACCOQsUNJeAgEBBBBAAAEEEECgUALHH3+83VtS4NFx200SBR5az+u37mjffzvdHrp/WKnVttl6a7vrnj/b8lVr7JwH/mpjXn7F9ABLgUcpKiYggAACCCCAQJEFVNPj5JNPDqRi2LBhNmvWrMC0bEa23377QPS7777bwh2WByJU8Eic06eCDD/07NnTHw0M//3vfw+MRxlRgYUfvv76a3800vB2XvOumuHee++1pUuXRpqXSAgggEBUAQo9okoRDwEEEEAAAQQQyFJg33272gsvPG/dOtW3d+7pkpy7XasG1r9nI3vy8eH2yMMPJKdr4JOJE6zv2WeUdFxZw2qVVPV/6aWX7OCDDw7EYQQBBBBAAAEEEIiLwEUXXRRIijqbVpNUb731VmB61JFevXoFoqrJrBtvvNFWrFgRmF6skTinL9xfxi+//JKS6bHHHrMZM/6//7iUMVJPbN++feCLW2+91dauXRuYVtbIgQceGGj+bOrUqYk+7+bNm1fWrHyPAAIIRBaocW1JiBybiAgggAACCCCAAAKRBHbcob19WtI0w2mHbG6PDdyt1Dx77dDEJkydY8+++J59M/0bO+Sww+3xR4fbbTffYNWrVzO9OammHbbZZptS8zIBAQQQQAABBBCIi0CjRo1syZIlNmnSpGSS1qxZY2PHjrWvvvrKfvzxx8T36mRbNUAmTJhQ8lLIC8m4HTt2TBSSuAmtW7e22bNn2xdffOEm2SeffGKPPvpoojmlX3/9NVEzQIUr3377bWJ5L7/8csn9U3ULd6yuBahGg7+sE044wbSOVOG5555LpNd997//+78W7lsjX+lT01Affvhhon+LH374IWHl175Qvye6D9R3+lOhQLgPFZdO96nt9JsG07B8t9hii0ShkcaHDx9ud911l5sl+al99vPPP5tcFT9VPxval++9915yHnVcr30pe82nP9X+ULNZb775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Y61Pnz6Bzb/xxhvtsMMOs6233jownREEEECgGALVi7FS1okAAggggAACCBRTQG+pNWrUwNasXmGTH94rcoHH+E8XWPdLJ9uCX9cl3vqjwKOYe5F1I4AAAggggMDGLqDaBY8++mhgM1W747HHHotU4BGY0RvhHs7DKMfgIYccYqNGjSrVTJgKPggIIIBAHAQo9IjDXiANCCCAAAIIIFBhAur8cs8997DqG9bYrNH7W/PN60Ra9+C/fm0nXz/Vlq9ab9dcc40NGTIk0nxEQgABBBBAAAEEECifwMiRIwMzqkmre++912rXrh2Ynu2ImmeaP39+trMR3xPYa6+97Pbbb/emmL3++uv2008/BaYxggACCBRDgEKPYqizTgQQQAABBBAoisDQoUPtoIO625aNzGaOPiByGu4cNcPuGjXb1m+oZvfff79deeWVkeclIgIIIIAAAggggED2AqtWrbLRo0cHZjznnHOsZs38tNQ+ZsyYwLIZyV5AzVmpLw8/vPTSS/4owwgggEBRBCj0KAo7K0UAAQQQQACBiha4+OKL7eKLL7Ltmte0KY/vF3n1f3zwS7vlqZlWt179RKeNetgmIIAAAggggAACCBRWYMKECYEOyLW24447Lm8rfeSRR2zdunV5Wd6KFSvs888/T9wrjh8/3mbNmmUbNmwo17KXLl2a6HNEhTJaVrg/k/IsVH2VfP311/bqq6/aK6+8Yl999ZWtXr26PIsKzKO+Ps4666zAtHHjxgXGGUEAAQSKIZCf4vFipJx1IoAAAggggAACEQV69uxpL7zwgu21Yx177bbSnVamW8yRf/zIPvl6jW266eb2xhtvJDpwTBeX6QgggAACCCCAAAL5E5gyZUpgYepAu3HjxoFp2Y60a9cukfmv+WbPnm3vv/++HXBA9Nq/4fVNmjTJrrjiClPfI+FQv359O+mkk2zgwIFWp07Zzal+9tlndumllybT5y9PNSruvPNOf1KkYRV0DBo0KFGIkmqGAw880AYPHmytWrVK9XWkadrGO+64IxlXhT9r1qwxFYgQEEAAgWIJUNOjWPKsFwEEEEAAAQQqRGC77bYreevuBTu6S6OsCjx6XfOpTZq+1pq3aJl4G26XXXapkPSyEgQQQAABBBBAAAFL1JzwHfbZZx9/tFzDWkaHDh2S8/71r39NDmczsH79envggQcSNU9SFXhoWcuWLUt0wn700Ufb9OnTMy7+xRdftGOOOSZlgYdmVF8ZAwYMyLgM/0vVMlFn7epw/KOPPvK/Cgyrr7t999038XJQ4IssRpo2bWoqTPJDWdvrx2UYAQQQKIQAhR6FUGWZCCCAAAIIIBALgR122MG+/XaGHdu1iT05qFPkNHW79BP74IsV1mbrbey7774rqemxaeR5iYgAAggggAACCCCQu8C0adMCC9lqq60C4+UZqVatmp155pnJWV977bVEU1TJCREH1NeIakhECaptodoQK1euTBn9iy++sAsvvDDld/7EbDoJVxNTquERNagZ2G+//TZq9FLxWrZsGZj2/fffB8YZQQABBCpagEKPihZnfQgggAACCCBQIQItWzQveVtumt1+Xlt7bOCukdY5b9Eq63TuBPvyh1V24IHdLPywHWkhREIAAQQQQAABBBDIWWDRokWBZWy55ZaB8fKO9OjRw9T0lAujRo1yg5E+VXhxyy23lIqrZq6eeeYZGzZsmHXr1i3w/YIFC+ypp54KTHMj9913nxtMft5666324Ycf2sSJExPzudopUfr3UF8dt912W3JZGlBn45qmwhD9adg3UByts7yhefPmgVmXLFkSGGcEAQQQqGgBCj0qWpz1IYAAAggggEDBBTZt0th+/nmuvXJzR+tzVJtI6/v4q8W2T79JNmvBWuvZs5fpzT8CAggggAACCCCAQHEEfv3118CK81HTQwtUZv8pp5ySXPbjjz9u6ug7alDhhQox/KC+48477zxT81lHHXWUDR8+3Hr16uVHSfR7oSav/KDaFeGOv9UsldLXokULU0GPmp8aO3asde3a1Z817fDTTz8d6PxcTU+99dZbdvLJJ1vHjh0TfxpW01YqDHFBnZyrVkp5QrjQI7yd5Vkm8yCAAAK5CFDokYse8yKAAAIIIIBArATmzZtn9erVsZUrltiUx/exvXeK1izVix/MtWOv/NyWLF9v5557ro0cOTJW20ViEEAAAQQQQACBqiSgPinCGef16tXLG4Ey/V1QAYYKBaKG8ePHB6KquaxOnYLNqNasWTPRwbkfUdvz73//259k7733XmBcBRv77bdfYJpGtDx1iB4lvPnmm4FoqsHRpEmTwDSNqEBFtVP8UN6+OMK1cKjp4asyjAACxRCg0KMY6qwTAQQQQAABBPIuMGnSJGvZsoVV27DGZj93gG3ZuFakdTz40vd29m3TbNWaDXbVVVfZ0KFDI81HJAQQQAABBBBAAIHCCKjvjUKG7bff3vbYY4/kKrLp0Dzc/Kn660gVVDNFTWn5YebMmf6ozZ49OzCeblmKtOuu0ZprnTFjRnKZ2267rXXu3Dk5Hh7o3r17YNKPP/4YGI86Eq4pU6NGjaizEg8BBBAoiEDNgiyVhSKAAAIIIIAAAhUo8Oijj1rfc86xzRtVs6+e3D/ymq9/fJoNfWGu1ahR0wYMGJAo9Ig8MxERQAABBBBAAAEECiagZqj82h6LFy+2xo0b5219qqGhPjMU1NTTd999Zw0bNsy4fGXuhwsq2rZtm3ae9u3b28svv5z8Plyo8NNPPyW/04AKKTKFHXfc0aZOnZo2itLn9/uxYsUKe+mll9LGV40aP/jz+tPLGp4zZ04gSoMGDQLjjCCAAAIVLUChR0WLsz4EEEAAAQQQyKuAqvqrM8a2zWrYxw/uG3nZF977uT07frHVrVs/0UHk0UcfHXleIiKAAAIIIIAAAggUVkD9TfiFHj///HNeCz0OP/zwRP8ebh3qhPyckpdoMoVw5r7ihjsE9+cPN/sULvQI1/zYYost/NlLDW+6aeamW8PpUwFNv379Si0n3YSFCxem+yrj9Llz5wa+p9AjwMEIAggUQYDmrYqAzioRQAABBBBAID8C6uRR7RR3alcrqwKP026abKPf/dWabLqZvfvuu0aBR372B0tBAAEEEEAAAQTyJRDO4FffbfkMtWvXNtX2cEEdmq9cudKNpvysXj27bLRwTYpws13h9YW/T5mIDBM32WSTDN+W/VXdunXLjpQixqxZswJTU/UhEojACAIIIFBgAWp6FBiYxSOAAAIIIIBAYQQOPPDARIHF4Xs2sqevDnYemWmNRw2aZJO+XmWtWm9t//rXv2yzzTbLFJ3vEEAAAQQQQAABBIogsPPOO9vkyZOTaw7XJkh+kcOAOjS/7777EktQjY9XX30149LUT0c4qNPudM1ihdPcpk2bwOytW7e2zz//PDlNTXi1aNEiOZ7tQKr0HXLIIZEXE7XfkPACs22mKzw/4wgggEC+BSj0yLcoy0MAAQQQQACBggt06NDBpkz5ws46Yku76/c7RVrf6rXrrfuln9q3s1fbLrvsmijwiDQjkRBAAAEEEEAAAQQqXED9V/jh73//u/Xs2dOflPPwNttsY3qRRn16KKi2R6ZQs2ZNU8GF3/fF9OnTrVOn1C/gTJkyJbA4FXL4oVWrVv6oqbmr8HYHIpQxopoiKrjwC4sGDx5sTZs2LWPO8n/9zTffBDy0pHDhTvmXzpwIIIBA+QSyq5dXvnUwFwIIIIAAAgggkDeB5s2bl3TgOMWuP3vryAUe02cus059J9qM2Wtsv/0PoMAjb3uDBSGAAAIIIIAAAoUR6NixY2DB6hA83GdFIEI5R04//fTknH5hhiaGm6fStHBn4yNGjNDkUkEFGG+88UZgeriQIzw+ZsyYQPzwyLfffhueVGp8++23D0y7++67U25HIFIOI0899VRg7q5du1q2zYAFFsAIAgggkAcBCj3ygMgiEEAAAQQQQKBiBLbYfDObP2+uPXhpO+t33DaRVjp+0nw7eMBnNv/Xdfbb3/7WXn/99UjzEQkBBBBAAAEEEECgeAKqsaDOzP2gzsbzHQ466KBS68m0jiOPPDLw9ahRo2z8+PGBaeqr4+qrrw5M07aEC3L22GOPQBwV7Hz66aeBaW7kvffeM3VMXlbo1atXIMrIkSPtxhtvtBUrVgSm52NETYJp+X445phj/FGGEUAAgaIIUOhRFHZWigACCCCAAALZCtStW8eWLl1k00d0seMPbB5p9ptHTLf/ufFLW7F6gx133HH29NNPR5qPSAgggAACCCCAAALFFVBtgVNPPTWQCDU/le/MezVZ5XdoHlhhipETTjihVPNNml8FC6qp8eSTT9opp5xSqpbHH//4R6tTp05giWqyVYUuftBLOk888URJzeapieauJk2aZLfccouddtppfrS0w126dDH1VeKHhx9+2Dp37myq9fHaa68lCla++OKLRO3n559/3u644w775z//6c8SafiFF14wFXz44YgjjvBHGUYAAQSKIlCtpKrehqKsmZUigAACCCCAAAIRBNRO8E477Wi1aqy3H5/dL8Ic/4ly16gZNnjEzJKRanbllVfatddeG3leIiKAAAIIIIAAAggUX0BNRKm5JD8ce+yxdu+995r6r4gStt5662S0M844w2644YbkuBuYNWuWqbAgHAYOHGjnn39+eLKpRsYFF1xQanq6Cerj4u233zYVsITDxx9/bOHaGeE4bly1RRYsWOBGEzVM2rZtmxx3A4sWLUq4hQsk3PepPvv162eXXXZZqq9STlOhTLiA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gAACCCCAAAIIIIAAAggggAACEqCmB8cBAggggAACCORVYM6cOVa3bh1bs2qpfTOia+QCj4EPfmkj3lhoVq26/eEPf6DAI697hYUhgAACCCCAAAIIIIAAAgggUDUEKPSoGvuZrUQAAQQQQKBCBEaPHm2tW7eyOjVW26zR+1vDetEqlZ5z+2f2xN8X2oaS9zHuvvtuu+GGGyokvawEAQQQQAABBBBAAAEEEEAAAQQ2LoFqG0rCxrVJbA0CCCCAAAIIFEug1iY1bf36dTZ/7IGRk9Drmk9twlerrXqNTeyRRx6x448/PvK8REQAAQQQQAABBBBAAAEEEEAAAQR8AWp6+BoMI4AAAggggEC5BX7++eeSlqmqWb26tazn1RMjLefgyybZxK/XWsNGTey1116jwCOSGpEQQAABBBBAAAEEEEAAAQQQQCCdAIUe6WSYjgACCCCAAAJZCZx37lm2605tbMjNZ9nn36238+76d9r55y1ebXv//hObPmuDNWvWwiZMmGD77LNP2vh8gQACCCCAAAIIIIAAAggggAACCEQRoNAjihJxEEAAAQQQQCCjwLx58+xvr79pp/bqaod128X++sDFNv7zVaa+OsLhk68XW7f+k23OIrPf/KadTZs2zVq2bBmOxjgCCCCAAAIIIIAAAggggAACCCCQtQCFHlmTMQMCCCCAAAIIhAUuvvA827bNlnbicV0SX3XYobU9/VB/e/ffq+zUGyclo7/4wVzredUUW7KyhnXuvId9/PHHye8YQAABBBBAAAEEEEAAAQQQQAABBHIVoCPzXAWZHwEEEEAAgSousHTpUtu6TUu77epT7IiDdw1ofPbF99bn4vus83Y1bf9dNrWrH/nBataqY4cffrg999xzgbiMIIAAAggggAACCCCAAAIIIIAAArkKUOiRqyDzI4AAAgggUMUFDjm4m82f+529PPLylBKz5iy0I08ebL8sWmG1a9e23r1724MPPpgyLhMRQAABBBBAAAEEEEAAAQQQQACBXARo3ioXPeZFAAEEEECgigts2LChpBPyidarx55pJKrZ8Gc+s9p1m9imm25qu+++OwUeaaSYjAACCCCAAAIIIIAAAggggAACuQvUzH0RLAEBBBBAAAEEqqpA375nW9OtGluf07uXIrj8xnH25jsfW4MGDe2oo46yhx56qFQcJiCAAAIIIIAAAggggAACCCCAAAL5FKB5q3xqsiwEEEAAAQSqmECTJg2t3fa72G1X9rD22zSxxb8ut5uHvmkvv/5P22yzze3444+3W2+9tYqpsLkIIIAAAggggAACCCCAAAIIIFAsAWp6FEue9SKAAAIIIFDJBU499VSrVbOGbdWild3x8Ee2Zuls+3zq99aqVRu7//4H7KSTTqrkW0jyEUAAAQQQQAABBBBAAAEEEECgsglQ06Oy7THSiwACCCCAQEwENtussbX7zba2bu0q+2LqDNt7733s3HPPNRWGEBBAAAEEEEAAAQQQQAABBBBAAIFiCFDToxjqrBMBBBBAAIFKLtCzZ09btbKksOOLr+zAbt3t4Ueest12262SbxXJRwABBBBAAAEEEEAAAQQQQACByi5AoUdl34OkHwEEEEAAgSIIdO60s82cOdOee+45a926dRFSwCoRQAABBBBAAAEEEEAAAQQQQACB0gI0b1XahCkIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQCQWqV8I0k2QEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoJQAhR6lSJiAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAClVGAQo/KuNdIMwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCJQSoCPzUiRMQAABBBBAAAEEEEAAAQQQQAABBBBAIHeBJYvW2oR3F9rPs1bbsiXrbdniNbZunVmzNrWtWava1rTlfz4326pW7itjCQgggAACCQE6MudAQAABBBBAAAEEEEAAAQQQQAABBBBAIE8CKuh4Y8wv9u20pfb5xKWRllqvfg3bsVN967RvI+uwRyNrtCnvKUeCIxICCCCQQoBCjxQoTEIAAQQQQOD/2DsP+CiKL44/SkIJvffeewdBBAERpVuxUFSwIBbEBlZUFEHEiv7tDQVBmhRBujRBlI703kMPvf3zmzjL7ObucpfcJVd+7/NZdnZ2Znbmuxtud96890iABEiABEiABEiABEiABEiABHwhcDrukvz40T5Z/scxOXfussRki1dk1MopJcpml+jo9BKdKUP8ll6i4rdTJy5K3MkL8dYfF+O3C7Lg94O2S5Uqn1Uq1oyRGg1zKGWI7SQPSIAESIAEPBKg0sMjHp4kARIgARIgARIgARIgARIgARIgARIgARIgAc8EZk88Kr9+v1+O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CZAACZAACZAACZBAahCg0iM1KPMaJEACJEACJEACJEACJEACbgmUKVNGLl26pM5v3rxZoqKi3JblCRIgARIgARIgARIgARIgARLwRIBKD090eI4ESIAESIAESIAESIAESCBgBK5cuSKlS5cW7CFbtmyRjBn5iRIw4GyYBEiABEiABEiABEiABCKAAL8oIuAmc4gkQAIkQAIkQAIkQAIkEGwELl++LOXKlbMUHtu3b5d06dIFWzfZHxIgARIgARIgARIgARIggRAjkD7E+svukgAJkAAJkAAJkAAJkAAJhDiBixcvCmJ4wKVV+vTpZdu2bVR4hPg9ZfdJgARIgARIgARIgARIIFgIUOkRLHeC/SABEiABEiABEiABEiCBCCAAhUflypUF+wwZMsimTZuU4iMChs4hkgAJkAAJkAAJkAAJkAAJpAIBKj1SATIvQQIkQAIkQAIkQAIkQAIkIHLhwgWpWrWqnD9/XsXu2LBhA2N48MEgARIgARIgARIgARIgARLwKwEqPfyKk42RAAmQAAmQAAmQAAmQAAm4InDu3DmpUaOGnD17VqKiomTdunVq76os80iABEiABEiABEiABEiABEgguQSo9EguOdYjARIgARIgARIgARIgARLwigAUHXXq1JHTp09LdHS0rF69WjJlyuRVXRYiARIgARIgARIgARIgARIgAV8IUOnhCy2WJQESIAESIAESIAESIAES8InAmTNnpF69ehIXFyeZM2eWFStWSJYsWXxqg4VJgARIgARIgARIgARIgARIwFsCVHp4S4rlSIAESIAESIAESIAESIAEfCJw6tQpadiwoZw8eVIpOpYvXy4xMTE+tcHCJEACJEACJEACJEACJEACJOALASo9fKHFsiRAAiRAAiRAAiRAAiRAAl4RgMKjSZMmcvz4ccmaNassXbpUsmXL5lVdFiIBEiABEiABEiABEiABEiCB5BKg0iO55FiPBEiABEiABEiABEiABEjAJQG4smratKkcPXpUWXYsXrxYcuTI4bIsM0mABEiABEiABEiABEiABEjAnwSo9PAnTbZFAiRAAiRAAiRAAiRAAhFO4MSJE9KsWTM5fPiwsuxYsGCB5MqVK8KpcPgkQAIkQAKRRgCK/5IlS0rFihUjbegcLwmQAAmkOQEqPdL8FrADJEACJEACJEACJEACJBAeBODKqmXLlhIb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gNUGrDngvqpXr15K6EAlP/74o7Lw0FYgoRY8dMfnz58v1atX16dC4cNGwQMSIAESIAESSJYARY9k8fAmCZAACYSMAEWPkKFlxSRAAiRAAiRAAiRAAiSQOgIQPsaOHSs9evRQBSF01KtXT4kdEEAghiBo+SeffCIIfB6uNGnSpESBWCl8hIs82yEBEiABEnAjgfPnz6tu072VG58e+0wCJOAFAhQ9vPAUOQYSIAESIAESIAESIAFPEXj55ZeV+KGDiWvrjhYtWsiMGTOkZcuWYR/v6NGjpWPHjna7FD5sFDwgARIgARIggUQELly4oM5p6ZEIC09IgARIIGwEMoetJTZEAiRAAiRAAiRAAiRAAiQQMAG4uYLAgTgesABB0vuAKwlyxiFDhsjll18un3/+uaoZwgfSE088ofb8QwIkQAIkQAIkIELRg68CEiABEogsAYoekeXP1kmABEiABEiABEiABEggWQIlSpRI9n64b7766quSL18+GTRokGqawke4nwDbIwESIAESiHYCFD2i/QmxfyRAAl4nQPdWXn/CHB8JkAAJkAAJkAAJkAAJBJlAnz59ZMCAAXatdHVlo+ABCZAACZAACdiWHozpwRcDCZAACUSGAEWPyHBnqyRAAiRAAiRAAiRAAiTgagL33HOPvPfee/YYKHzYKHhAAiRAAiQQ4wRo6RHjLwAOnwRIIOIEKHpE/BGwAyRAAiRAAiRAAiRAAiTgTgIdOnQQBDjXicKHJsE9CZAACZBALBOg6BHLT59jJwESiAYCFD2i4SmwDyRAAiRAAiRAAiRAAiTgUgKNGjWSyZMn272n8GGj4AEJkAAJkECMEjh//rwaOd1bxegLgMMmARKIOAGKHhF/BOwACZAACZAACZAACZAACbibQLVq1eSXX36xB0Hhw0bBAxIgARIggRgkQEuPGHzoHDIJkEBUEaDoEVWPg50hARIgARIgARIgARIgAXcSKFWqlKxZs8buPIUPGwUPSIAESIAEYowARY8Ye+AcLgmQQNQRoOgRdY+EHSIBEiABEiABEiABEiABdxLInTu3bNu2TS677DI1AAof7nyO7DUJkAAJkED6CGjRg+6t0seRpUmABEggrQQoeqSVHMuRAAmQAAmQAAmQAAmQAAn4JLBu3TopXry4ukfhwyciXiQBEiABEvAwAcb08PDD5dBIgARcQYCihyseEztJAiRAAiRAAiRAAiRAAu4isHDhQqlatarqNIUPdz079pYESIAESCB9BLSlR3x8fPoqYmkSIAESIIE0EaDokSZsLEQCJEACJEACJEACJEACJJASgalTp0r9+vVVNgofKdHifRIgARIgAa8Q0G6t9N4r4+I4SIAESMAtBCh6uOVJsZ8kQAIkQAIkQAIkQAIk4EICX331ldx8882q5xQ+XPgA2WUSIAESIIFUE6B7q1QjYwESIAESCCoBih5BxcnKSIAESIAESIAESIAESIAEnATef/996datm7pM4cNJh+ckQAIkQAJeI0D3Vl57ohwPCZCA2whQ9HDbE2N/SYAESIAESIAESIAESMCFBF577TXp3bu36jmFDxc+QHaZBEiABEggYAJa9KB7q4CRMSMJkAAJBJUARY+g4mRlJEACJEACJEACJEACJEAC/gg89dRT8uKLL6rbFD78UeJ1EiABEiABtxPQokdcXJzbh8L+kwAJkIArCVD0cOVjY6dJgARIgARIgARIgARIwJ0EevbsKQMHDlSdp/DhzmfIXpMACZAACSRPQMf0oOiRPCfeJQESIG9pDswAAEAASURBVIFQEaDoESqyrJcESIAESIAESIAESIAESMAngc6dO8tnn32m7lH48ImIF0mABEiABFxMQFt60L2Vix8iu04CJOBqAhQ9XP342HkSIAESIAESIAESIAEScCeBpk2bypQpU1TnKXy48xmy1yRAAiRAAr4JaNGDlh6++fAqCZAACYSaAEWPUBNm/SRAAiRAAiRAAiRAAiRAAj4JXHPNNbJgwQJ1j8KHT0S8SAIkQAIk4EICFD1c+NDYZRIgAU8RoOjhqcfJwZAACZAACZAACZAACZCAuwiUKFFCli5dKqVKlRIIH6+//rq7BsDekgAJkAAJkICDgBY96N7KAYanJEACJBAmAhQ9wgSazZAACZAACZAACZAACZAACfgmUKhQIeXqqn79+vLJJ5/IM8884zsjr5IACZAACZCACwho0YPurVzwsNhFEiABTxKg6OHJx8pBkQAJkAAJkAAJkAAJkIC7COTNm1dGjBghLVq0kDFjxsjDDz8s586dc9cg2FsSIAESIAESsAhQ9ODLgARIgAQiS4CiR2T5s3USIAESIAESIAESIAESIIFLBLJnzy4ff/yxtGnTRqZOnSo9e/aUw4cPkw8JkAAJkAAJuIrA+fPnVX/p3spVj42dJQES8BABih4eepgcCgmQAAmQAAmQAAmQAAm4nUDGjBll2LBh0rJlS5k3b54SPrZv3x7QsCCU3H777QHlZSYSIAESIAESCBUBWnqEiizrJQESIIHACFD0CIwTc5EACZAACZAACZAACZAACYSRAGJ7wNXV8uXLlfCxbt26FFvfsGGD/Pbbb/Ldd9+lmJcZSIAESIAESCBUBLToQUuPUBFmvSRAAiSQPAGKHsnz4V0SIAESIAESIAESIAESIIEIEfj000+lWbNm8tdffynhY8mSJcn25O6771b3v//++2Tz8SYJkAAJkAAJhJKAFj0YyDyUlFk3CZAACfgnQNHDPxveIQESIAESIAESIAESIAESiDCBkSNHSuPGjWXXrl1K+Pjpp5/89uiKK64QCB/z58+XuXPn+s3HGyRAAiRAAiQQSgI6pgdFj1BSZt0kQAIk4J8ARQ//bHiHBEiABEiABEiABEiABEggCgiMGjVKGjZsKMeOHVPCx+TJk/32qlOnTurehAkT/ObhDRIgARIgARIIJQFt6UH3VqGkzLpJgARIwD8Bih7+2fAOCZAACZAACZAACZAACZBAlBD44osvpF69eoIJpN69e8vXX3/ts2c1atSQ9u3bC4SRFStW+MzDiyRAAiRAAiQQSgJa7IiPjw9lM6ybBEiABEjADwGKHn7A8DIJkAAJkAAJkAAJkAAJkEB0EYDQceONN6pOPffcc4Jg575S586d1eVx48b5us1rJEACJEACJBBSAtq9lRY/QtoYKycBEiABEkhCgKJHEiS8QAIkQAIkQAIkQAIkQAIkEK0ExowZI7Vr11bde/3112XgwIFJuooYIPXr1/drDZKkAC+QAAmQAAmQQBAJ0L1VEGGyKhIgARJIAwGKHmmAxiIkQAIkQAIkQAIkQAIkQAKRIwALjuuvv151YMiQITJgwIAknenYsaO6NmjQoCT3eIEESIAESIAEQklAix50bxVKyqybBEiABPwToOjhnw3vkAAJkAAJkAAJkAAJkAAJRCkBBCpH/A6kESNGSL9+/RL1FKJHuXLllLXHvn37Et3jCQmQAAmQAAmEkoAWPejeKpSUWTcJkAAJ+CdA0cM/G94hARIgARIgARIgARIgARKIYgITJ06UatWqqR6OHTtWHn74Ybu3WbJkEQgf+/fvp5srmwoPSIAESIAEwkGAMT3CQZltkAAJkIB/AhQ9/LPhHRIgARIgARIgARIgARIggSgnMHnyZLn22mtVL6dOnSp333233WOIHjlz5qS1h02EByRAAiRAAuEgoC096N4qHLTZBgmQAAkkJUDRIykTXiEBEiABEiABEiABEiABEogCAhAx5s+fn2JPfvjhB9vV1bx586RTp06qTKlSpWjtkSI9ZiABEiABEgg2AS160L1VsMmyPhIgARIIjABFj8A4MRcJkAAJkAAJkAAJkAAJkECYCYwePVq6desmXbp0SdFFFVxd1apVS/Vw+fLl0qJFC3WsA5p//fXXsnfv3jCPgM2RAAmQAAnEIgGKHrH41DlmEiCBaCKQ6RUrRVOH2BcSIAESIAESIAESIAESIAESAAHE6zh79qzMmjVL5syZozZcv/rqqyVDhgw4TJRuvfVWWbx4sezcuVMOHTok48ePlxdeeEFWr14ta9eulezZs0u9evUSleEJCZAACZAACQSbQOHChVVMqaxZsyrhPtj1sz4SIAESIIHkCWSw/AvGJ5+Fd0mABEiABEiABEiABEiABEggcgQWLVoko0aNkmnTpqlOVKlSRW677Ta1IWaHM91///0yc+ZMdTlv3rzSr18/JX7kzp1bEAPkyiuvdBbhOQmQAAmQAAkEncCJEyckV65cQa+XFZIACZAACSRPgJYeyfPhXRIgARIgARIgARIgARIggQgTKFGihLRr104FLD958qQsWbJE5s6dK9OnT5fTp09LuXLlJEeOHHYv27dvL9u3b5f169crSxHE+ahcubLs2rVLMmbMKI0bN7bz8oAESIAESIAEQkUAlh5MJEACJEAC4SdAS4/wM2eLJEACJEACJEACJEACJEAC6SAAV1eI0TF79mxVS7FixQSurTp37iwIXq7Tiy++KIgLYqZMmTIpa4+qVaual3lMAiRAAiRAAiRAAiRAAiTgEQK09PDIg+QwSIAESIAESIAESIAESCBWCMA9VYcOHWzLj5UrVwpcYI0bN04FK8+XL58ULVpUmjZtKufPn5elS5faaODdFwFmdaBz+wYPSIAESIAESIAESIAESIAEPEGAlh6eeIwcBAmQAAmQAAmQAAmQAAnELoHly5eroOUTJ05U7q5AAu6wYPkB4ePNN9+Ujz76KBGgb775RurWrZvoGk9IgARIgARIgARIgARIgATcT4Cih/ufIUdAAiRAAiRAAiRAAiRAAiRwiQBcX40dO1Z+/PFHdaVmzZrKKuT3338XiCI6wb3V1KlT9Sn3JEACJEACJEACJEACJEACHiFA0cMjD5LDIAESIAESIAESIAESIAES+JfA4sWL5fvvv1dCB4KdFypUSHLmzClbt261M3Xv3l1effVV+5wHJEACJEACJEACJEACJEAC7idA0cP9z5AjIAESIAESIAESIAESIAES8EPgyJEj8vnnnyvxwxQ8dPY+ffrIE088oU+5JwESIAESIAESIAESIAEScDmBjC7vP7tPAiRAAiRAAiRAAiRAAiRAAn4JIKg5RI158+bJiBEjpEGDBony+hJCEmXgCQmQAAmQAAmQAAmQAAmQgKsI0NLDVY+LnSUBEiABEiABEiABEiABEkgvgd27d8t//vMfOXDggPz999/prY7lSYAESIAESIAESIAESIAEoogARY8oehjsCgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQNoJ0L1V2tmxJAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQBQRoOgRRQ+DXSEBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEkg7AYoeaWfHkiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAlFEgKJHFD0MdoUESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCDtBCh6pJ0dS5IACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACUQRAYoeUfQw2BUSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIG0E6DokXZ2LEkCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBBFBDJHUV/YFRIgARIgARIgARIgARIgARJwNYELFy7Ixo0b1RiyZs0q5cqV8zueixcvyoYNG9T9XLlyScmSJf3m5Q0SIAESIAESIAESIAESIIHACGSIt1JgWZmLBEiABEiABEiABEiABEiABEggOQIQPZo3by5///23yjZv3jwpU6aMzyIzZsyQBx54QN3r1KmTDBo0yGc+XiQBEiABEiABEiABEiABEgicAN1bBc6KOUmABEiABEiABEiABEiABEggWQKZM2eWfv362Xk+/PBD+9g8iIuLk8GDB9uXHnvsMfuYByRAAiRAAiRAAiRAAiRAAmknQNEj7exYkgRIgARIgARIgARIgARIgASSEGjZsqVUqVJFXR87dqzs3LkzSZ6ff/5Z1q9fr6537dpVypYtmyQPL5AACZAACZAACZAACZAACaSeAEWP1DNjCRIgARIgARIgARIgARIgARLwSyBjxoyJrD0++eSTRHnhYXjIkCH2td69e9vHvg7OnDkje/fuFViHpDadPn1ald2zZ4+cPHkytcWZnwRIgARIgARIgARIgARcR4Cih+seGTtMAiRAAiRAAiRAAiRAAiQQ7QSaNGkiNWrUUN0cNWqUEh50n3/55RdZuXKlOr333nulePHi+pa9R2yQoUOHCuqpVKmS1K5dW1mDdO7cWVasWGHncx4cOXJERowYIe3bt5fSpUtL5cqVVdk6derIVVddpa599dVXzmI8JwESIAESIAESIAESIAHPEKDo4ZlHyYGQAAmQAAmQAAmQAAmQAAlEC4EMGTIksvb49NNP7a6ZVh4PPfSQfV0fnDhxQm677TZ599137YDo+t6yZcukY8eOMm7cOH3J3qMcXGUNGDDAFlXsm8ZBvnz5jDMekgAJkAAJkAAJkAAJkIC3CGT21nA4GhIgARIgARIgARIgARIgARKIDgJ169YVbAsXLpThw4fLgw8+KJs3bxYIF0gQPAoXLpyksxBIdJ7LLrtMlcufP7/88ccfMn78eJX/lVdekRYtWsjll19ul0dgdB0nBBdvueUWZemRO3dugcstuMmCJUjVqlXtMjwgARIgARIgARIgARIgAa8RyGD5k4332qA4HhIgARIgARIgARIgARIgARKIBgLLly+XTp06qa48/PDDSriACIIEN1UQM8wEUaJ69er2pSVLliQSRkaPHi0vvviiuo99z5497bxwfaXFEgRQh0srJhIgARIgARIgARIgARKINQJ0bxVrT5zjJQESIAESIAESIAESIAESCBuBmjVrStOmTVV7H374obL6wEnfvn2TCB64vnHjRuxU6tKlSyLBAxfvuOMOgfUH0pYtW9Re/8maNas+lO+++y7JffsmD0iABEiABEiABEiABEjAwwTo3srDD5dDIwESiE0CMOCDH/FoTtrIMNr7Gc0M2TcSIAESIAH3EHjqqafkp59+sjsM0QIBzH2lHTt22JfxOandWdkXrYPs2bPLyZMnk8T7aN26tS2qwNIDW9GiRaVBgwbSuHFjadSokeTKlcusisckQAIkQAIkQAIkQAIk4DkCFD0890g5IBIggVgngAkSLSqYLPwJDOkRSQJpx1ce9Ev3R9/X52afU3Os6zHr9lU+0Hy+yvIaCZAACZAACaSFwNVXXy1t27aVqVOnquKPP/645MmTx2dV+/fvt69D8PAleugMED7MdNddd0mWLFnknXfekUOHDqlbe/bsUUHPdeDz559/Xnr16mV/DpvleUwCJEACJEACJEACJEACXiBA0cMLT5FjIAESIIFkCKRXTEim6jRPmOg+aQFC73Vb+r4+D+Y+0Lp1nwLNH8w+si4SIAESIAHvEahfv74teiQXawOWGTrhuFChQvo0yd6M/YGbCFbetWtXQWyPpUuXyoIFC+TXX3+VlStX2mXfeOMNyZcvn9x66632NR6QAAmQAAmQAAmQAAmQgJcIUPTw0tPkWEiABEjAIoDJ+kAm6vWkPvb6GOWcZfU9wHXeCwQ4yut6dV1676wzpfp1OZ1Pnzv7ges6j/Neas+DWVdq22Z+EiABEiCB2CNQtmxZe9Bt2rSRl156yT4P9ACxPerVq6e2fv36ydGjR2Xo0KEyfPhwVcX06dMpegQKk/lIgARIgARIgARIgARcR4Cih+seGTtMAiRAAskTSMtkf1xcnC1MmLX7ExXMPCkd++uPeR3HgbRllkkpP8WKlJ4M75MACZAACUQjgfLly6tA5XBdNWLECKlbt67cdNNN6erq5ZdfLjfffLMtehw5ciRd9YW68NlT8bJ0+SIZ+v5ggWuwypUry5VXXqm2/Pnzh7p51k8CJEACKRLYt2+frF69Wm2IlZQzZ0713q33BQsWlCJFivh1ZZhiA8xAAiRAAiSQLgIUPdKFj4VJgARIwD0E/IkEcIWBBEHBn/hgig3JjRhtYNN1mnn9iRD++mWWNY9Tm98sm5rjQMecmjqZlwRIgARIgARSIoAg57DueOaZZ1TW++67T4keLVu2lLx580q2bNkEcT/27t0rjz32WKLqhgwZIufOnZPixYvbeU+dOiWbNm2SL7/80s4LISGa0oXzIufPxsuFCyJxFxOsVjdt3CGLFi1Sm9nXJg1bSpt2reTm9q0lR44c5i0ekwAJkEBICfz5558yadIkmTNnjvz1118BtQURBOKH3uC2EMfY586dW9WRnMvDgBphJhIgARIggSQEMliTR/FJrvICCZAACZCAZwgk9zavJ/b95dH3A4Gh68DeFD30dV2HWad5z7yu82Jv5jGvp3Tsrz6znFl3IPnNsjwmARIgARIggdQQ+Prrr+W5555TRSZPnizVqlXzWxwWmE8++aR89913fvPgBibgzIl/TJwhcHly6YorrpCZM2dKgQIFkssWknvWsOSfI/Hyz9E4OXksXs6dtcSOc/GycfNK+X3VPPnnxFE5cfKotT8mp06fkD83Lvfbj8IFi0uTxi2lrSWANGxc228+3iABEiCB9BL46aefZOLEiUrwSG9d/spv27bN3y1eJwESIAESSAMBWnqkARqLkAAJkIBbCJiT+s4+m5P8ODbzmvec5VI691XW1zWzvZTqNO+bfXUem/lSc6z74qufqamHeUmABEiABEggGASweGDQoEEqIPnbb7+dKBC5WT/cq5QpU0Zdunjxohw/fty8negYFiRdunSR7t27h13wOLQ3To4egNgRL3Fx8bJv/05Zs36RrF630BI75ss/ltDhTLkvu1wqXFlNzl84J//8c1iOHT8sFy5aJiGX0r4Du2TM+JFqu65aHalbr47kL5BHucPiqmlNiXsSIIH0EIDQASu5pUuXpqeaFMv26dNHWbUhplPhwoVTzM8MJEACJEACKROgpUfKjJiDBEiABFxLQE/mYwC+JvT1fb1HHl/5ggVAt+OvP77aMcvgPs51P817aem3v1gmvvrBayRAAt4loN9XvDtCjsztBPB5BXdWiMUBQQRurgoVKiSZMyddw3bw4EE5fPiwnD9/XiCE5MmTR/Lly6fcqJiWmOFgcu5MvOzZGifLl6yTRctnyo7dG2XLtnWyZ1/CiuZclrBRpHApKV6kjBQtXEaKFCojxYqUtq6Vkdy58ibp4pGjB2TfgR2WaGJtB3bKfhxb25o/FyfKO3bsWKHwkQgJT0iABFJJ4L333pP//e9/iUrBdWD16tWlVKlSUqJECbVlz549UR59AlEa79vYO4/hhtBf+vDDD6Vt27b+bvM6CZAACZBAgAQoegQIitlIgARIwC0ETCHA7LNTFND5sNcTflpMMMsF61i3p+vT/dHX9Tnu62s6r7lHPud9s6yZ19exWTY15XzVxWskQALeIID3Bb4feONZchTRQ2DTnwdl4oQZsnDxLFm+cq7dsRrXNJSrKtWS6lXrSfkrr7Wvp+dg4eLpMmHqR/L31rWSPVtOGTp4hLRoUzc9VbIsCZBAjBJAHKT+/fvLhAkTbAINGzaUdu3aqQ1Wc+lNhw4dUq4IT5w4IceOHZOpU6eq7QICG1kJ8Zoef/xxn8J2ettmeRIgARKIFQIUPWLlSXOcJEACMUPAnNTHoEM9kedsz9mm877ZH9zD6lUkrD7V95Irg7y4jy21K1Z1vbod1MVEAiQQmwT0+wj2eE9I7ftJbFLjqEkgZQLWv5R8OOgb+fyrobL/4C67QL0b2kizhrdIjWsb2NeCeXDRioA+beZoGTX2LcvC5YK0bXWr9OnbSypWqhDMZlgXCZCAhwmsXLlSXnnlFfn9998F8Y8gdNx8881Sq1atkI8a7gk/++wzGThwoGqrZs2aSvxo3LhxyNtmAyRAAiTgRQIUPbz4VDkmEiCBmCagJ/Y1hFBO8JttpbUdU/TQffZVr76GdnCc1vZ0G9yTAAnELgG8h+hNv5dQ9Ijd1wNHHjwCf/65Sd56Y7D8NO8Hu9Km9TtJs0a3KOsO+2IIDxAMfdQ3/5U5v3wrZUpVkAED3pBGTW4IYYusmgRIwO0EYGEBseGDDz5QQ7nlllsEcTbgwircacWKFfLOO+/IggULVNP333+/6kuuXLnC3RW2RwIkQAKuJkDRw9WPj50nARIggaQEtDig7+gJPX0erL0WK3T9ep+W+k0Rw9l/fY7609KGWT4tfWMZEiABbxDQ7wUYDd6/zPeUtLy3eIMKR0ECwSMwYvgoeW/IEDl6/JCqtGa1JtK10+NSrmzV4DWSiprmzBsv7494TpV4ss8L8tgTvVJRmllJgARihcDMmTNl6NChsmrVKilZsqQ8/fTT0qFDh4gPf9CgQTJ48GDVj6uuukoQ6wOBzplIgARIgAQCI0DRIzBOzEUCJEACJGARMCcNfU0SpnTfH0SU0/WZdTjz6zz6enJ5dR7sUU7n1ZOduM6V3aDARALeJaD/7/VejxTvCc73E32PexIggdQTeOD+h2XGzKl2wa6dnpBbOz5in0fqALE+3vmgt2r+/h6PS/+X+0aqK2yXBEggCgksW7ZMunbtKggsnjt3bvnyyy9VoPJo6ep///tfGTZsmOrONddcI5988okUK1YsWrrHfpAACZBAVBPIZPkrfCWqe8jOkQAJkAAJRA0BTBz6miz0NaGYmk47Jx91G859oHXqfiK/rttZFwWPQGkyHwm4mwDeD/R7gvk+YI5K3zev8ZgESCAwAn2feFp+mDLRzvxKv1FW7I7O9nkkD0qWqCClilWQhUuny+8rFsvJ4/HSsPGNkewS2yYBEogSArt27ZIHH3xQEFQcCVYVCFgeTal+/fqCWB9webV//35ljXLTTTdJjhw5oqmb7AsJkAAJRCUBih5R+VjYKRIgARKIHgKYDNQJQoEWEfQ15z6l+zp/cpOM/uow+4J6zAlM57FuR+91nXqvy+v73JMACXiPgP5/x16/f+lrerSw/sJ7C4VQTYR7EgicQP/+L8mYsV/bBb76eKWULF7OPo+GA6fwceGcSL36FD6i4dmwDyQQKQL47H/ooYeUiIA+PP/888riI1L9Sa5dBDKH4LF69WrZvXu3rF+/Xlq1aiVZsmRJrhjvkQAJkEDME6DoEfMvAQIgARIggeQJYIJQbzqnU3zAdWcendfXXpc3Jx/1NV2Xr3K6Db33lQfXdF3Y67z6mlnGbN+8zmMSIAHvENDvAXpE+n0Be33szKPzck8CJOCfwJtvvikjR46wM4z6YKnkuiyPfR5NBxA+Cl5RXJb8PluWLF0kcRczSN26daKpi+wLCZBAGAn069dPZsyYoVrs1q2b4DyaE6w7tm/frgSPbdu2ycaNG6Vdu3bqd04095t9IwESIIFIEqDoEUn6bJsESIAEXEhAiwd6klDvAxmKs6y/MqgzPUm3o1d2oy7dT3OfnjZYlgRIwF0E9PsC9ljhqZP5PqGvcU8CJJA8AQTYff/99+1Mg/5vihQuVNI+j8aDK0tfJbv2/C3bd26QxUsWSYUKFaVixYrR2FX2iQRIIIQE8P41YkSCYFujRg0VJyOEzQWtalh3wMpj8+bNajt58qQ0atQoaPWzIhIgARLwGoGMXhsQx0MCJEACJBA6AuakYaCtoIzedBldjz5Pbh9oXt0G9hA2tKsafT25NniPBEjA2wT0+wD2SBQ/vf28ObrQEli7dq189NHHdiP9+46QMqUr2+fRfHDLzQ9b1iiXqy4O++DTaO4q+0YCJBACAlu3bpXPP//crrlHjx72sRsOXnzxRSlbtqzq6vDhw+Wnn35yQ7fZRxIgARKICAGKHhHBzkZJgARIIPIE9OQfeuKcEDR75+seJgwDSWYbzvxmvb7y6ftmW/qar72/+nHdrMOZj+ckQALeJYD3Clh1mJYdeD/Q1h18b/Dus+fIQkdg2LCP5MyZ06qBpx8ZKjWru2elcamSFaVL+4dU39esWyFDh1D4CN0rhTWTQPQR+Oyzz+To0aOqYy1btpT27dtHXyeT6VHJkiWlf//+do4hQ4bI2bNn7XMekAAJkAAJ/EuAose/LHhEAiRAAjFFAJN9ekIQx3rTELSwoM+x13mwDyTp/P7y6vu6Pt0fPUGpr+vyZn5fx/7y6evckwAJxB4BvFeYIofzfSX2iHDEJJB2ApMnT5YffpisKoDgUbd267RXFqGSHVrfJ9WrNlCtfz5qhOzcsSdCPWGzJEAC4SSwYsUKV1t5aFaI76FjkPzxxx8C4YOJBEiABEggKQGKHkmZ8AoJkAAJxAQBCAxIviYA9b1ggPBXl7Ndfe4vf0p9SWu5lOrlfRIgAfcSwPuKc3PvaNhzEogsgdOnT8uwYQlurVo1vcOVgocmeEuHh9XhwUN7ZOhgWntoLtyTgJcJmG6t7rrrLqlTp45rh/vII49Ihw4dVP8/+OADWbBggWvHwo6TAAmQQKgIUPQIFVnWSwIkQAIRIuBv8h/Xzc2cCHR21bxnHpv5zLrM6zjW97TFhvM+6jQT8iNhNXbmzJltIQbl9T0zv/MYefz105mX5yRAAiRAAiRAAqkn8NFHH8m6dWskb54rpLMVG8PN6apKtaRJ/U5qCGO+HSEb/tri5uGw7yRAAikQmDt3rkycOFHlypMnj7gtloev4SG+R5UqVdSt9957z1cWXiMBEiCBmCZA0SOmHz8HTwIkEEsETKHBPA4Gg0CECd2Os+3kymohQ5d17pMr68zLcxIgARIgARIggbQT+PHHmarwnV2elAJXFEl7RVFSsmmDBNED3ZkxbW6U9IrdIAESCAWBGTNm2NVC8ChXrpx97taDggULSpcuXVT3Fy1aJOYY3Tom9psESIAEgkmAokcwabIuEiABEohyAimJCCl1HyKD3px59XWnEKHb1HuUQx6nFYev8iiTUvJnTZJSOd4nARIgARIgARIIjMDs2bNl/fp1cs1VdaV541sDKxTluapWqSO1ajRTvZw37+co7y27RwIkkB4CK1eutIu3atXKPnb7QceOHeWKK65Qw5g5M0GYdvuY2H8SIAESCBYBih7BIsl6SIAESCBKCAQiFKSlqymJGVrUcO61mKHb1PXofjrzm+e6jN7ruvReCye6Tp2PexIgARIgARIggeAR+OGHH1Rld3R+PHiVRkFNTet3Vr1YtmKebP/7aBT0iF0gARIINoFdu3ZZrvnWqWqbNGliu4QKdjuRqK9AgQIC4QNpwoQJsnfv3kh0g22SAAmQQFQSoOgRlY+FnSIBEiABbxDQwgZGA2HCtMrQ4kZ6RhqMOtLTPsuSAAmQAAmQgNcJnDlzRuAP/8oyV0nlCjU9Ndw6tVpIlYrXqzH9OGOWp8bGwZAACSQQMK08WrZs6TksOqA5BjZ9+nTPjY8DIgESIIG0EqDokVZyLEcCJEACMUogLUKDtswIFJnO79w7yyPwud6c93hOAiRAAiRAAiSQfgIQPI4ePSo3Xt86/ZVFYQ1NLwU0/2XBnCjsHbvkBQIbNmyQ3377zQtDceUYli1bpvqdP39+8aLoUa1aNdEuu7788ktXPiN2mgRIgARCQYCiRyiosk4SIAES8BABW3gQK55HhniROGtw1k7iEuJ7XMT1S5fUZdwytouIAyIZrGsZrPLYdBXIfQEmINYWZ+3OX9pQOrCEviHpfWClQpjrEgCM4II1aoz9gnWCc9zytal7YITNyIPrF62ScdbfhBsJV5CHiQRIgARIgATCRWDOnAQxoPZ1zcPVZFjbQZwSpKNHD4e1XTYWOwReeukluf3226VGjRry9NNPy5QpU+TCBes7MFNYCGjBCYIHhA8vpvr166thbdq0SRDUnIkESIAESEAkMyGQAAmQAAmQgD8CmIi/ePGisqbA9Dtm3zPEZZT4TOesQ0vuiM+uJvWzZrQm5jNYm5VU6HFjZt7KbV3MIBmsuhIm761jK9PFDNadjBcko1UigzWxjyI4ymCpIurYRwxz012WauzSH3/XzTzBPNYii9luAp14yYRhWtvFDOesD9lT1lizWGPKlnDRRyeALUHuAKaEQWOnrimuqDCHVTIhF9rJ5IONj6p5iQRIgARIgATSTQCrpMuWqSAlS5RPd13RWEHhQiWkUIHicuz4sWjsHvvkAQIDBgyQb7/9VqZOnSrjxo1TW9myZdXqfEzEQwxhCg2B8+fP2/E8vGjloalVrlxZH8rBgwftYx6QAAmQQCwToOgRy0+fYycBEiCBAAkgAODRo0eUeJHRsmG4kPGcZLyQ2TLQyCz58p6SfJedFslofKToSflL6kV8XJxkypRJsmTNKhkzXTIytMpKhvMSZ836QzzJnLWiJabksOSPi5I5YyYlgATYvbBng+gBgWL//v1qQwcsWxXr70XJFJfJOs4kWTOfluL5T0pGi8VFa7M0niRJ4bEyZM1icbFcdVm57DzxF1Aok2TKXsLikhOH1l2IREjWCRMJkAAJkAAJhJjA+vXr5e+//5ZmTW4OcUuRrb5sqSqy+PfZcvjwYc+uBI8s4dhuvWLFivL8889Lnz595Oeff5bZs2fLd999J8OGDVNbWUsAqV27tr0VL148toEFcfSmAFCpUqUg1hxdVcHFVZYsWQQiz6FDh6Krc+wNCZAACUSIgDFDFaEesFkSIAESIIGoJoDJ+CFDhsj48d9aVh7Wx4YleFyw5twzX8huTfyfklvb5ZZne5aXzPGWQye4v4Jcgfn6S6OCOBBvucKChcI56yJy2Mmawb9o3TidKZ8UqtDXKl/Vqh8lo3dSX1t5ICj7zJkz5YUXXlDDiYflSnwmy7rjrDWGM1KnWjZ558XrLfHjrGS1csBowzL5UHnxJwGV5fbLGu5ZDDkBnQ3oosXmdObLJF/JuyVbrhYWv+yW4GGJQfAPhvxMJEACJEACJBBiAnv37lUtFL6iVIhbimz1ZUtfrUSP5cuXS/Pm3nTjFVnCbB0EcubMKW3btlUb3FxB/Pj111/ll19+kTFjxqgN+erUqSM33HCD2uMYC4eY0kZACwDFihUTbF5NWa2FZRB11qxZQ0sPrz5kjosESCDVBCh6pBoZC5AACZBAbBFIsECwxmxN8sfHXZC4TGcSRAzMymey7DJOn5VsVjyOjBn1hH6CGyY9Lw9XT77cMSG+hxX0QskbcZZQADdQmWDOYCVdVp1E4R8IOeACf8wQP5AQtwSWGPDQnCk+o8SdPCvZ485ITutORgg5AHEpKX0Dl6B06MGCh3Ge2ao2Pu6sZIIFiGURI5IloTRFj0sUuSMBEiABEgg1gePHj6sm8ucrGeqmIlp/Qcu9FdLvv/9O0SOiTyJ2GscE/N133602WCNo8QN7xGTA9t5770mRIkVsAaRBgwZSqpS3BchgvwK0pUe5cuWCXXXU1XfNNdco0UMLPVHXQXaIBEiABMJMgKJHmIGzORIgARJwGwFYNmBiHxP0GTJawcbhvMm6ZhlQWxYKVkQOa4JfzdvryXtrgMZhomNz7BfxCWRN4GNyPy6TVb9lCpEhPnOCJYM1z++3oFlJFB1ntFxbWSqFWCFPLEb4g7+IgWINBacGFH2IfWIp5N8BoVwmq1D8RctOBIIJTEMsSxLXgfl3SDwiARIgARJwGYETJ06oHhcu4G3Ro3DBBNFjxYoVLntC7K4XCBQoUEA6duyotrNnzyoBZN68ecqieM+ePTJ58mS1wX1RixYt7A2WI0zJE9ACQCyIHrly5VIwtNCTPBneJQESIAHvE6Do4f1nzBGSAAmQQLoIQPBIED0sYQLWCHE5rJjlVjwPa44/gxW3Ii6zFZMDIkWqVIp4JXZYBiJWfdYxxAFrlv+iJapksOSUTMrqIV3dDmPhf2ULy1mVomDpFRYOS7AALrsnWuqwL6gDFeA98aWEMyWeoG5LCLpk5RFvMUoIdq6A+yrFayRAAiRAAiQQNAL//POPqstVH8tpGP3e/TtUKe3CMg1VsAgJBIVAtmzZpFmzZmp79tlnlfABd6rYEK8BwdCxFS1aVIkfXbt2lSpVqgSlbS9Wgjg9SBUqVPDi8BKN6cCBA+ocrxMmEiABEiABzKQwkQAJkAAJkIAfApjkiLfUDWwqNscl64X4TFZcjwyZraDdmNS3Jvet8gl//VTk67Ll2kr5trLm72EtAosGGDJkhFUDpAPfGoGvmiJ8Df21OFmWGHDWhbgeGayYHtmyIZKHNQyIF1YWf3xMCxBVwPiT0eKbAW7DrDqV4GTZjrgGizEOHpIACZAACbiTwOnTp93Z8VT2ev+BnapEwsKCVBZmdhIIEQFYcmgLkO3bt8vcuXNV/A/EAIEFyKhRo2Ts2LHSvXt3uffee5UrrBB1xbXVamu18uXLu3YMgXZcix5XXXVVoEWYjwRIgAQ8TYCih6cfLwdHAt4lcOGcyKkT8XLyeLxctCbPLa9CEmdZHiC8wskTp2T12uWyZdsG2bNvuxw/fsQyJrgoRYsUl6uqXCMNGtWVchULeRdOiEeGSXc4u9KT+P8epbbhS8KGEjkCK+tvBWZ0TFJcEj+soQRFmAAeVInKYDViqiNBaSAw5sxFAl4noN9XouN9xOu0OT63EdABlI8dS1gt7bb+B9rffQcSLD0CzR+OfOPHj5fdu3erGGJ4f8KGeGJ6c14z7+tjvUcZfaz3uh6MRR/rPfI48zmvmff1sd6Hur1A+OO9/eLFi8o6AnvEYUvpHHl0Pn0c6DlW14erHQSt1m2dOXNGPvroI7Vt27YtEDQxleeKK65Q492/f7/nx63HiIDmTCRAAiRAArT04GuABEjAhQS+GTVL8l1WSQoVLGr3/uixQ7Jk+U+yaNksWbV2kVxd6XopW6aKXJGvrOTKUUSKFCwpBw7tkRnTZ8n/vfGC1KnVRLp0vkVat2so2S/7dwYZXxa3bNkiWzbvlWNHj1mCyQlZtWqF4AvzqbPHrYnn87J582aBqTRcPuXJk0eZlHfu3FlatWpl94cHoSGAH9NIyt2W9WMW5/paaFr0X2vCRGmC0JEkl5/LSfLxAgmQQMQJUPSI+CNgB6KYQMGCBVXvtu/aKHWldRT3NH1di0bR46mnnkrfoFg65ggg+HmdOnVibtz/z95VAFhVNeHZ3qWW7m4p6ZYQEZEWFTCQUFEUFbAb5TdREAzERAVRMVBKKekQpEu6u3P7n+/cnbf35b5N2GWO3ndqzpw537372J25M+PrwBLWauPGjdS5c2dfpFl+Tjw9roX8JVn+ZukBFAFFIFMQUE+PTIFZN1EEFIH0QGD37t3Uv+8jlDdXcVq7cSnliyxEJ08fpTNnT7IxIp4K5C9CeXLno3Klq9KeA9tp49ZVFB4WQUUKl6LjJw9Rwzqtae2GJezxUYZWr1tGq1YvouFv5KbWN7aiESNfpzGjxtHID0aw1wjyJQTwm17R/HZYFF28eJ5CQ8Mpb94CVLBAcYqIiKAqla7nOpj3P0aLFy+m6dOnG6PHF198kR5HvaI8RAHoqtSX8SsqnIfNIVdmGz5gdMFbjNHR3mLmBlBQMMfq4sJmGRP+y4PoOqQIKAJXAAH5LrPX+HnWoggoAu4IiNFj38Ft7pPZaORIYnirq+VIPXr0uFpEyTA58L0LTyIk5/ZVBwcHk/0CLb6/ceH3MXkRxrXtad51zN6X9TiwtKX2NIa1cmUYSClkPHLkSBPuKoXLsjV5mTJlzPm2bt2arc+JhO2nT582P0/ly5fP1mfVwykCioAi4C8CavTwFymlUwQUgSuOwOhRn1DdGm3oAhshwravYaNDDsodl5dKl6xEHdvdQ7lz5eMrD50/f5YqVqhBuXLm4T+inL/mHnngdYJXyK49m2nD5n9ozvxfaMaMmTTlj58IvyxGhOekB+57kSqVr0HFi5WjyDz5fZ47KCiAckUG0NJ/ptNTzw+gjh0609Rpv/tck1UmM9uQ4A8u8selKCjRvxIF+2NvhBbQoggoAlkPASiy8B0n3yn4WYZSTYsioAg4I+AwerCnR3YtZ8+dolP8Eg1KZGTkVXFMvLEP5b6rsh8GAvuYv21fRgW70cEXP395eKKz85X9QJcdCv4dwb8prnVyYzIv69C3jyF/x9y5c00ODztOSFretGlTatKkifFEl3Wo1cvDjpTVLl68uPmZ2b59u/tkNhqZMmWKOU3lypXNC3rZ6Gh6FEVAEVAEUo2A/nWXauh0oSKgCKQXAp9++ilNmDCBLl+KYSVUIDVreiM1a9KUunZvz2/LW7v8t2Un/btqMz3Svyd9/OVr9MGbUyh/PivkQkrlyBtZgOrUam6ue3sMpjXrFtOr7/Rnj5FTxmDy9cR36ZH7X6frqtRLljXyiZw5mUDVKtxCn42aT/0ebUkdbr6L3nvjG8qVN4BKVsy6f9BZCsFkIchwAvwxaC92Y4y9bafJjLYll7NsmbGv7qEIKALph4AYUKEs0qIIKALuCBQsWNAM7mMP2gsXz1HOHLndibL4yLKVfzpO0KZNG0f7SjY0N8OVRD9le+N30fQy4Bw4cIB+//13c23atMkhCMLpdunShTp06GCMHY4JbfiFQOnSpWnnzp10+PDhbJvsfebMmQaLVq1a+YWJEikCioAicC0goEaPa+Eu6xkVgasUgVmzZlH/fvfThQsXqXrV+lS+VDnas387/fzzJPp03CgKeyiCGjZsRNdVq0hbNx+gsqWq0q9Tv6K6NZul2uDhCYratZpR+bLVOKxVPN3cugeHySpKbVp280Tqc6x4sbL00pOf0jPDetGUqT9R29a3U2TBQMrNxo8rUcRY4K9hQOghq6xBCg1pZ9oZYEdIhAwyZfr+fh4Ucl2tsvl5BCVTBK4ZBOTtWfmZhYJK3o7Vn+Vr5jHQg6YCgcKFCztW7TvwH1WtlPwLIY4FWaSxbOVfDklbt27taGtDEcgsBJYsWeIwdly4cMGxbfXq1Y2xA7koihVLymXoINCGXwjUqFHDGD02b96cLY0e+/bto+XLl5vQu127dvULEyVSBBQBReBaQECNHtfCXdYzKgJXGQJz5syhZ595jo4dO8kJxxvTA71forJlqrhJ+evUL2nBsp9o/Phv2SARQHOmHKSe/evRS0+NdaNNy8DJU8do777tVK1KA0L4q7SUZk1uoRtv6Eojxgyh5k1uZVZ50sIuVWvtxovkGHiiFaVgcmszYt7VPHQlZUnufFezbMnJrvOKwLWGgISkk+88Maji51ja1xomel5FwB8EEIoIbw4j1M7i5TOyndHj+InDtHr9AgNFo0aNSMJ5+YON0igCaUEgKiqKfvvtN0JYIuQHtJd27do5PDvs49pOHQJ33HGHMSrNmDGDsqNhU7w8YPBAeCstioAioAgoAhYCgQqEIqAIKAKZhcCuXbuoYYPG1LPHXVQgb3l6uO/r9L+XvvNo8IBM3Tr2o2l/zKLrqzflXgKHjmpFndr1Zq+QBukq8uJlMyhHRG4qXrRsuvB97YWvKJbjw48aO/SKeHmIUk8Og77rGOZkzNu8rL8Stch2JfbWPRUBRSB7IgADh1xyQvRhEEGtRRFQBDwj0L17dzMxf8kUOnHyiGeiLDq6cs1ch+QtWrRwtLWhCGQUAgizhITjMGw8/fTTDoMHkk8PHDjQKOfHjRtnQllllAzXGl/8bBctWpT+/PNPOn78eLY7/oIFluFWvTyy3a3VAykCikAaEVBPjzQCqMsVAUXAPwSWLFlKnTp2Nm8Ijv94KRUtUsqvhYd2x9E5TkzesllnemzA/yhvpBVb2q/FfhLt5ZBaOSJyUaUKNf1ckTzZjTd0oVlzJ9PRo2+QPTRE8ivTTuFJeSdGBJlDH237uMylXYK0c7iaZEn7abIWBwkDJLkORHr7s4Ix+z2y50Owj8tazNsVy+Dlyk9o06P2JAP4+rMvaLBeajsvkTk9ZHTlIfu5YmWX2y6L63qRWcZFVlkjtcwnV2O98BAvCdc1IrM/vIWXrLHzkjNjzvW5s9OlR9sfWdNjH+WhCGQnBBBaZ/jw4XTkyBGC4eO2jg9mm+OtWvu34yxq9HBAoY0MQGDRokXGqwPeHdHR0WaHsLAwuuWWW8wFI0h65QbJAPGzPMvbbruNPv74Y4K3x7333pvlzyMHWL9+PcHogeT2LVu2lGGtFQFFQBFQBBgB9fTQx0ARUAQyHIHJk/6kbl1u5/BRDWnMO3/4bfCAYOfOJFCunJF08tTRDDF4YI/jJw+houLFypg6PT5y546kMmXL0Jtvvpke7NLMA4o+UfbZlY9gbFdGp3kjZZAtEIASWpTT8uygH8ceTLjkWcJhMS70qFFc16Avz50h4A9ZFxsba4ZkTWpq4Yka670VyCeyoB0TE0OXLl2iixcvmhp9FMzhwlntcksbNa7UyOptjewrvI0gLh++9gSprBX50Uc7NUXWSi1y23lhDuP+FldeshZ1auX0d2+lUwQUgbQh0KlTJ8Ng/pLf+Lsmdd8raZMg/Vfv2r2JxNMDiudatWql/ybKURFgBODZcffdd9OPP/5oDB4IGTds2DBCyN/Ro0fTrbfeqgaPDH5S2rRpY3aAt0d2Kp999pk5TrduKc9HmZ1w0LMoAoqAIuAJAfX08ISKjikCikC6IbB9w2V6ffirdH2NptSxXereqhn+4njqcGd52rlrE5UvVy3dZBNGuXLkocvRlzi8VTkZSnN9z7130Yqh0wkhvfBHTb9+/ahUKf+8W9K8uQsDUSxC4YgitX1c2i5LtXsNIoDnY9WqVYREmvbnAuM5cuSgunXrUnCw868PoDt79ixt2LDBGBLssGGudOnSVK6c88/XmTNnaPXq1cboBoW3fS/7en/aZcuWNfxdn23XtZjHXnhbGX/0rl27lk6cOEGIqx0aGkp58+YlJA3FH8aQ19XrQPiD78GDB+m///5z3SLVffDGfhEREVSvXj3H3jC8INa3vBUKnLxhhftTsGBBKl68uDkP6Owyp1Q4nHHHjh0GM/uekBNx/qEgzJ07t19sgTtkWbduHZ0+fdqxBmPgXa1aNSpSpIhjXBuKgCJwdSEAo8fnn39Oe/f/R38vnkKtm2d9BdvsBT85QO7bt6+jrQ1FIL0RQJ6FJk2aELyJYOAoy7+3aMlcBOrXr0+1a9emhQsX0po1a0w7cyVI/92mTp1qvIc6dOhAd955Z/pvoBwVAUVAEcjiCDhrLbL4YVR8RUARuPoQ+HnyZKp5XSPauHUV1bm+eaoEzBGRk1o07Ui9H25GTRveTC8/8xl7f6RfgvDatZrTvEVTWEkYnir57ItOnzlhkpjPX/w7BbAv3T333GOUl7169aJz585RsWLFjPvxddddR0iql9HFrqiUvTAm4/4qRKEQzhGRg1+jt7iwKpUbQcwnhMJiAij6OLvpJ87JPlJj2FysKA0MtFZac7IgwLxRf27j7xRH89kqE0hxAfwmvUwLI1MHUFh4GAWywjWelaX2EhTPytNwVvaWbEPBQRyjn6w3URMo2Ek0nBkKd7i3x8bG8BzLFMC0AUFm77CAi9SgXAzljMB65z3Mfhhi2eJ5vwoha+i+G3NZYvA4RLamQ6lkwWCKOs6eAkEsF78VG+iNFT8nwSHWP8d8ayzmhmMCxTK3kGieY+gZOuYD/Jifmc+ojwR6//33zB+ErjsULFiAvv9+EhsxyjieIdDgrd/ly5fR4MFP8L10fQM4gceH0IABAxzs8Pxt27aNBg0aZJT5QXy//H0WHUxsKDzxxBP08MMPmyl5toUOfHFZxoNFNGHCBPrnn3+MkQaeHcDcMrpYzq9Tp/7B4Q8+pBo1alL79u35upUKFCjg4C38ly9fTs8//1wq5BbJXGvrrlaoUIEm8/cmjAooly9foueee4ZD5R1zwtx1NfrAMYC/eCIiwjl2dTFjwGnR4gZq3vwGioyMNPcJPzZBQcn/+hcTE01ff/0Vffvtt277AoMI/j744INRrMBp6TbvSTYYSoDze++9x/ivsJHwMx4SSiNGjDDhPayfItu0NhUBReCqQADKQoTfgcEYIa6yutHjwMEdJEaPbp17UuPGja8KnFWI7IkAlNK4tFxZBPC7In4fHTNmDH3xxRdXVpg07r5v3z4aMmSI+dvyySefTCM3Xa4IKAKKQPZEIPm/erPnufVUioAikEkIrN44j6pXbkHrt6ygnDn8eyPYk2jDnvuCKpStRguXTqdOPStRkcKl6MN3plLBAkU9kadorE3LbmyoGEx/zf2Rbu+S+jjVo8c+Tz9NGcu5QWrRw/1fo8bNatDIMcOMMnbatGmUJ08e2rt3L02fPt24sq9cudL84o3EhelZRCnrytPTuKcx+zpRROMtc7wND4U7VO6BCXEUy7rtwKB4ir4QSgnHWXnMCk2b1t9o/xNYUx8rGnqj9LdMAtiD1dwwm/AnsfHhPAUc/otbSCrMc9DMGnpQJhXIE4s5LgGs4GUtrmlDpouBoRRT8HoqVrIFG0SCmTeIZHNDZtHyGngxvPLKK3T50gUew4axbCIJovjYQCqQ4wJ9+ngtqpyfvQ88CGFYMg/sWY+NEfXaFbaYsyiWut/a8+zpKAo/dom9ItgoFMf0Qe6y4LzxbOCJTogxOwkFTgWDRwLjGxqdGP7J2sUYaAKs0yWOpHeVwKGeEO7pohNjKK0PHTpEmzdvMp4bkB3FgjiBVqxYbgx79mdK2jAuuRYowC9fvmyMHrjn8qy50nnv86LEYhkvLHnAR/bFtISo+uCDD+jTTz8xzzHmMY4aj5BFbz1LcXGxxii2ePEiWrp0CU2c+D0bgd6nihUrOjxcZD0wSrncIrVrDfkDTJgtS56kefzsYS/X8SQK59a5c2fp8OHDtH79Ovrppx+NFwXOj+8a3Ed/Cjx3gAGMLq4FckRFXaZ58+Yao4frvLc+9paz2GkQ4gy4W8+SfUbbioAicDUhAAPz0qVLae2GRbRwyR90Q1Mr5NXVJKO/ssyeP5n//blsXnjp/0Bff5cpnSKgCGRhBBDGrnfv3vTNN9/Q2LFj6aGHHsqyp4GhA79TDR482Px+l2UPooIrAoqAIpCBCPj3l28GCqCsFQFFIHsj8N/2NVSoQDEqUbRsmg/au9dQ+mz0HBr04P8ojL0yPhj7bJp5CoNmjdvTvIVTOITWZtqybTXNnvczvTdmKL018jG6+4GG1H9Qa3p39GA6dtzK/yHrpH765R409c9v6fkhH9GXH/5Nd90+iMoXa02PP/A+LZi7mlq2uJHfkGxvYvnC8NGzZ0/atGkT3X777fTDDz8Im3StoYxNjUJW1kkNoUyblfBxrKiGhwWuQKOhZEUtezzAyyKYdcbBrPW31yFxROF8RZg6gdsBfHHN9KFsDQlmfX4w90N4XQgrocPY1yOYDSrB7DkQzCYE1yuEDQQhbDwI5SvIeE/Ag4LNFbwmKOEy5Qw5zyaMKL5g8ggyhgRPoEL5igsKb17OF4wYzCuAPTPiY3mO+UEWDzIExmMvlg17Mh5BzMRcLFswe3UEsaEikN06ArkN9wwYQkK5NmfEOZ0uXsPYAINQ23goLw1nr44QliqAZbsaCowEuPDcuirf4cWERIr+KtQz8zz4g3D48OHmrb7o6BhzBhhcfMmK5x00OO/GjRsJyS+RgBTjWaXgfHIGhB3Dd83ff/9txvxYRiu4AABAAElEQVQ5w/79+00IL084AQcYKpA4E8YVLYqAInBtIIAwdDB8oPw87VPjLZkVT3702AGHl8ed3ftQzVpVs+IxVGZFQBFIBQKPP/44wasWnqcI55oVy1tvvUXLli2j1q1bU48ePbLiEVRmRUARUAQyBQH19MgUmHUTReDaRODUqVP8ZnQIHTi0M10BuK3T/YTLmwEiJZvt2r2ZZs75gTZt+YcOHt5LTzzf1SRNz8nhs+CZkj9fYbp0+SLn+yhLJYqVo7CwCDf2q1YvoMXL/6Rvxy5xyzlSsVxdwjWgdzx7eWyjqLhTdOncKtqxbb8JmQMPCiQwnDVrFr300ktUpkwZN/6pGTBGClZMuiqnU8rLWm8lGTYJp1l5n8DKYHhABHEbr2YjkBRCUSXACML/Owrrh9G1lPZJIbUcRDAIGHqLf2AQGynYVmGFreI9oF8GTyigE/kiFFU8GxwMX0zbvCdCuR/PxoMgNhUY7w1j8mBLgqkTGWAN87TOJQKij1Mg7A9fxuuAjR9Mx5/WXjZZOPqWKeAM3jD+YNp8mAa3eSwe+zAzmFMSOOQTdz0Wc5ZELI0VJpEQnjMBscyQ6ytdBDMYAZCTAZ4bQUEhBkco1qH43rNnjzESQEmO509qC2v3E2Aca1GY3K2I0t51Qvi5rvFkkMAY8mEgcSieXxbNITP4YA9caIMW50ORPdBGSDZ4eVStWtXQYMz8LJgb7vmm4hZ6kgdrpWDevo+MiyzSd61lHjVkZ2n5sgAEJoIpZMA8vGCQg+Xo0aMmhFSDBg0pV67cHvfGXpAL15IlS+j8+fOOc4CX65kQogzeJIULF3bgCB5aFAFFIPsi0L9/fw5nuNyEufrxtzH8kseQLHfYOQsm0/kLp6lUifI08NG+WU5+FVgRUARSjwByn8Hw8dhjjxnDx8SJE1PP7AqsRMSATz75xOz84IOpj1BwBUTXLRUBRUARyHQE1OiR6ZDrhopA9kbg4sWL9MILL9DKf1ZyguDTdOzYUfp4xyuseIumX6d+Sd069ks3AAoVLJYmXpN+/og+//YNCuV48k0b3UID+7/Oirsgur5mUzZ4JOZp8GOHrya+Q43qtXEzeNiXQqlepkwVM1S5vBU3OpxzRmzc/jf9MfN7Dhm0mdq2bUtdu3ald955x740xW1RTEIpisufIopS0Lqvs/gEsUWAUxHzPCuKWSlq1rDXA/spWIYBDx4J4IUQVzBgGLWs6Ge5DmAexrDBHMAvCApntijAP4NXiB4XEvGYvdjOZLMHwMgQSBxqiy0nlsEEa8ALRM4cILvBCbk8YMUwCURYVj4DTBhB3IfXCnJoOJekvjNHiwoGDhSYS8ISzxTA57e2SFprUSd9Wqv405Ak8uA2jDqBHB7LGrGmDTZJSzOlBaxwQfGNN8uOHz/BSaeLOpTgSEh+7JiVc8Lc80R6b88feCHc280335z4vOEY1ilhUIBCDXlX7AV7I8F3oUKFzL4BnINF+FeqVMm0zT1NXIQ2lPYff/yxqbHePA+JtwFJy7F/o0aN2AiQy4Tm2rJlC/37778m3wjWgj+Sj8IwiT+SwQPPDsaLFy/B8bk7OjCwy4ocJ3v37jGJ3e3jaCNZ9/XXX89GoyDDT+ZZXC4BxoAgY95qyIHz4Y3rYsVKGDLIdfz4ccIZEDrv4MH9iTjx88O02G/r1q0mR8eDDw4we+McgiGYyNlgsEbOGxhMZC/kNSlVqpTBxy4XvD1atmxlcpDYedlptK0IKALZCwF89yxZspR+njqWmjfqSKVLVc4yB9yybRX9On0cfycG0/DXRlCJkmkPk5plDq+CKgKKgEGgS5cuxoMXL8WMHDnShIjKCtDAYxcGGxQYPJo2bZoVxFYZFQFFQBG4Ygio0eOKQa8bKwLZDwEo2xBCJToqlmrXaE7lSkbSmvWLKQcbEP7btpYm/PRBuho90oLgN9+/R9/9OIpu7zyAHur3cqpZIQ79+k3L6d1hKQ9RdflSIFUocSM9PbANzV70DX0xfpRR9n766adOSZ9TKlxqFI9YY1cY2/eUcVPb9Pain7eMF9yztLb2pazGZk0ueNvWWYp9JoOSV9YY20OSOt/QQ0edggJWMMqwa4kxMhj+bAZxNXi4sYRsxpXE8vYISHQrgbHGEtJthecBnIcPZ47FNfxRjPcLhiEW6hQUw4etN/E4D9cWZ/BJKacUbOqFNF++fMZwgBwcMAZMmzaV7ruvr1GkI3E5FN8wVuA5Cg8PNzUMoHhmvD2PMCbAIAEaJOAWrMEfrvqnT592kgbKdySfbNOmjeEJo4e3Ap5Q4O/evdsYMNC2lPccloy9HmAAeP31101SUYyLYh+yQu4VK1aYeM8wEiBmcunSpR1byXnwh6a3PzYTOPTZTz/9REOHDjV7mZ+dRA4weHz44YccRz7UBRu+w3zT7bSOTW0NmUd9yy3tqUoV57As8FaBB8ZTTw01obnkvoAenmVIQtyr110msbmNraMJOnyXI6wXcBFDSLly5ahjx45uRo9169abZyJ//vwOHtpQBBSB7I0AwlwNHvwEvfbaa/TDlDH01KNjssyBP/z8OTboRtE7r39NrW6ql2XkVkEVAUUgfRGA8RbhrUaNGkURERFXfX4PvBAE7xT8LteiRQvzkmH6IqLcFAFFQBHIfgikUKWU/QDQEykCikD6IIA3vdu3b0/58xanz0Ytpmef+ISeePgt+vrjhTT6rd/p0fuHm7BRS5YjWfWVLbt2b6EvJ7xN9/YckiaDB06x8t/5RjHYsP6NqT5UdFQCtWhwLw3o8wpdvHDZuCzD8JHeBcpMTxf2gSJXlL9ou9J5ksVSylszsBPEs1eC6yVeHvC8cL1g2EByb6yJY/11HOfASMDF/zIZWnhauF4cvsptLJHGyIOAVDASOARmZkkdx2hSA0IgoTVGLEL2Z+Ammxac9vKwr2M+cY7xBRvDCwewF3RTcjmtdTZzGEOSfT4D28a7hw0GCLsGzwj0cc2dO9d4b+FQx48fM/k8IAaendq1axuJ8DyJgcBVRIzjEhoTXgwhxuBFxOtQPK219mfPIkNr8RBesgf68vwifw4MNQhRhTGZK1myJDVr1swYQEQGeHmBb86cOTlG8o300Ucfs+FiMhtZbjJn9rSPjLnW4AnjA8ZhNLAXFoP54QyQ3zpzUs1eTYwvDDPeisjraR48sbZKlSrmeyR37tyGH84uobv27NlNSFIOWozbSzx7buFatmypMWJhXu4HjCvNmjV3O8/27dvYyPIf83I+p52vthUBRSD7IYAwV3fccQctWTGD3v1wUJY44Gvv9jMhVx8d8BL16N06S8isQioCikDGIFCiRAkT9hOerG+++SaNHz8+YzZKB64ILQuDB7yg4Xks4a3SgbWyUAQUAUUgWyNgaRay9RH1cIqAIpDRCBw4cID69etH8bGBNOp/0yh3rjxOWyKvR9dO/ahwoRL02Tf/c5q7Ep0RHw6lGtc1pHt7DE7z9ouWz6BwD3k+UsO4af3O1PWWR6hAvuL03Xff0fz581PDJkVroPh0LVB0Jl2s1ua+K51DVcrrYfCAUwTn7vZ4ufKXPnaWNTJmjA1gjklPFzbyNI4xs4QV14bA6kMp7+RlIsOm5kWwsEhBEnMTCosHZMqxFzccbWveHNqMyRzXLLvD3oE5KYaOO/7WTGphbDFBmC07O2Gb0bV4SCB0FUIb4TnAGDwBTpw4bhTka9asJiS9RoH3Qq1atcxbaMnJBuU+FOpQ0oNvkuLfuid47lyLFdIKhhErtJW1DmsTcUqssQ78rXEo46G85+eNP8AXOUjwB6QYAqznHeGd8OxbsuTMmYtKlizlkE/4gQcu+96e2nYa53NY/FkapzODh6xxpnfuWbJaP5Ou+wolxosWLUrw0MH9whrIj3Lp0mUTtkpo7TU8bs6dO0v//LOChy38sRZy1a5dhz1eyrh5lpw/f47mzZvroLfz07YioAhkbwTefvttEyYwKxg+vvxuOK1ev4DatrqNnnr+/ux9Y/R0ioAi4BcCdevW5ZdcPjK/I7388sv0ww8p99z3a6M0ECEEMgwe+N0V5fPPPzdhWdPAUpcqAoqAInDNIGDT9lwzZ9aDKgKKQDoj8P57oyhPjhLUo5vvN/2+4UTfR4/tp3FfD09nCfxnF825RdZuWEKP3D/M/0U+KA8c3EXVqjbwQeF76vSZEyY81rC3H6AXXu9Nl6MuURXO+ZE/sgx99KGVpM43B/dZUYpK7U5hjUAx6q0kKVO9UbiPg5vr5U7le8S7RL7XOanHnTq+11kSJ0eT+fNJhhpPh/E0ljEy4hlCOXfuHCGcCQoMBXjTbP369aY9a9Ysh2IdIY6gbMc6K9m3WXLFPhCWSpT9EAIGAFwIDfDss8/SV199ZfJgxMaywStRuX/FhE3HjfGjjXMiJwfuF4wWUpJ+tt1/2oABvGNg1HL+fgighg0bmrwdXbt2E1aOet68eSbElWNAG4qAInBNIIDvV8TDR9i+q9nwMXrc0/THX19TWGgEfT5+5DVxb/SQioAi4B8CTZo0oQkTJhjip59+mqZMmeLfwkygwktwvXr1ol27dpndRowYQXXq1MmEnXULRUARUASyBwJJfwVnj/PoKRQBRSCTEYiKiqLp02bxS+9B1LRhO5+7I2F4+5t60cTJo02uD5/E6TQ5e97PNPGn0Q5uc/7+mXJE5KLrqqRPHOdXn/uCXn46daGoxn45jHr2q0svv9GXVqyaQ5v/+5dy5cxD9931JB3ht3nOnL5EP//8s0P2jGpA0SkX9nBWiia9RZ9R+1t8RQGbeQr9jD1P9uAuzwXq6tWrU1hYmPF8QN6LNWvWEH7+t2/f7lCQly1b1uGtAK8PrLsSRRT2CMtVvXoNh1EGsmAOBpmjR4/SG2+8Qbfddhs9//xznLh7OntBXGIK/DxY3hFSw4CAcqXOYzbnDzmX3BcZRy1jqOGxMnv2bJNcXmgwjvUFCxYwsatxJuEnNOgjUf2JEycMP/RxQSGABOwwnuA5wL1FkT137txJmzZt4r6GuBIstVYErhUEcuXKRV9++aX5t0EMH3ih42oox44foidf7krzFv1ixJk7b/bVIJbKoAgoAlcZAvg9Z9KkSUYqeFV8/fXXV1TCQ4cO0ZAhQ0zejlOnThlZXnzxRRNS8IoKppsrAoqAIpDFEPAeNDqLHUTFVQQUgSuDwPJFmzmcVX6Kir5MpUtVTFaIRx8cTjt3b6bnht1Nndv3odYtunA4p6KUP18hfiM7/b6S1m1cSl9+9w6t27CUGje4ySHXlv9WU+7ceR39tDbypJLXo091pE1bV1GXW/tQ43o3cb6EAhwmKweVKV3ZiHRvjyE0auxTJkF09+7d0yqmx/WisMSkKD9FMSoLWN9piszLeHrX2JelYKUpf5oPMYKk907e+bF618IBh8787b0LdgVn5L7DW6BcuXJUqFAh2rNnj/GeWLt2LeEPsSNHjji8CRo1amS8KEShLusz+wiyb+7cuejBBx9gz4XNdOHCBaOkF1nwzOFcOA+uyZMnU8WKFalv375GyY9wXlDy43FEOC0YSuxeI8Ins2v5GcUZ0bZ+diwpgDvkXLx4sflDGflMED4M45AdtEggHxkZadqCk5wBHjDw2gCddXbLaAVlAAxeGEc+lNy585jwZqABD+wzffp0atCgEe8j3LRWBBSBawUBxJj/+++/qXnz5sbj4+DhXXRfj+eods1mVwwCvEwy4uNBifmniH7//Xfz/XXFBNKNFQFF4KpGQAwfPXv2pFdeeYX+/fdfeuqpp0x418wUfNq0aSbXCF4okfLNN99Qy5Ytpau1IqAIKAKKgJ8IpJ+G0c8NlUwRUASyFwL79h9k74RIisydz++Dvf/Gz/Tx56/Qb9O+pGl/fUeXLl80ayPz5OcQKWeMAaVQweIcLmsg3dF1gN98QXjh4jn6esI7NH3WRI53GknYy/5H9+mzJ1jRGZsinulN/MMvHxuDx4Rxy6lY0dIe2Tdp2JbDcHWjWbN+ISiXETrC3+KqyJR1ruNQhIrCFHOu87LuWquNzUONHua24/mQZwNv99evX9/k78Czs23bNmMsgOEDNEia3bp1a/rrr78cz5Wsv3LPUADdcEMLwh+weGvPW8gtefa3bt1qjAU4C/64fOSRR6h8eRhz/cu3kdHnlJ9X2WfOnNm0Y8dOY9SAAWfHjh3GUPrff1tNbg6cC2twv9DGG9kDBz5iPD1ceYEncrOsXLnS0Mq9g7Hjuuus0GbgUaRIYTaa5DEJ7IUvDCr4noKnDPbIiCJ7yb0S+VHD+KJFEVAEriwCMBQjLAy853bv3ULD3r2P7uv5LHW99f5MFezkqaM06+8faNKvH5h9ixYpQZN+mGAM95kqiG6mCCgCWQ4BGD7w+0yXLl3M95kYPtDP6IKwsRMnTjSX7IXfwRDiCiFGtSgCioAioAikHAE1eqQcM12hCCgCNgSios9Trhy5KSY2xjaafHPg/cPoHk4kvmPXBv7j+D/Kw0aTY8cPstdIXtrOYzBUhARbIVSS55ZE8fIb/ejQ4d3Usd299HD/V5MmElvB7E2SN28h2rV7C5UrW9VtPjMGJv8+jjqxfN4MHiJDr+6DaMbcb2nQoEFGkSnjKalFMYg1oiyU9fY3uTEntK50Qm+v2URipTlmhSMKPq2W6abow+SvYCODgwfLwuxTxTAAychNJnFW1oMFEpWbPnpJRc7Iabl5X/4vHsmp+RnG1rw/0qFjXeLxkhYm10rcBkF+zHnAJrHtbWniEg/TPJOY3MPCVlDPPAWv4ASFOgwGN93UlqZOnWo8JJDcHLHc8ZY/6BD2qFKlSvTTTz+Zs0BJfTWUnDlz0DPPPGO8VPCm3IEDB41YeN7xqOEOoY3z4RyQG4YcKO/w5nKfPn3Z+6Mff2/kNXSCSWadTX4u7fthDNdbb71t5LfOgecdTwoMmFbSdrkH4kXXvn17TkhuGVDlHMIftJMn/2xClmFMPENgACpTBsZZi3dERIQxCOENRPDABezgLYOwWDlz5jRjQm+XO7m2Ed/sY1G6ygi5ZAwUIrvUGLPPo69FEVAEMg+B2rVrE74bevfuTfPnz6fxk96iPfu2sPHjOcobWSBDBYGx4695k9jgMYlOnj5q9mpYvymNHfchFSiQsXtn6MGUuSKgCGQqAvh9D99f8PbACzMIdwXjx4MPPkglSpRId1k8GTuwCbyPR40aRTVr1kz3PZWhIqAIKALXCgJq9LhW7rSeUxHIIAQKFMrFbw3npB0cssqfsplDOs1fPNUYOKpWrkPt2vSkOrWa+7PU0OzifcLDc3o0GKxet8gYYG5hnr17DfXIs2iRMuxZcoHmLPiV7i/7nEeajBxcv2k5HTm6nx7o82Ky20RG5qc3X/qOnni+G7300kv0+uuvJ7vGlSA5BaDMQ2kIxTb6ErJGeGHOUiqy0hMGhHiOX8PKeA78wyYDVq5CF4orFcUsxQczMrKIBSAV/AJgIAiIplg+QyivT0A/nhXawTBs2AoPG1KcNYHDAfFb4kEJbOaIj6FYpo3j+SAcDETOK21MvDd5S8vOgk1xgY2P4iSb0PEgTBsBzMyYOgwPGHDieDTz4gfhnkAZjvsfFRXNoUtuoOLFS7JHwD4ej6V//vnHoWRu3Lix8SCAEUSemavhDfwAzjcUHp6DBgx4mDp37kpvv/02zZkzh86ePctyMqR8RsvgQSYUFGQ3zyIjjYTtY8aMpoMHD5g/fhHWCfw8lfQ+M/ihJFaetsSsuZxpLGMd7pv8LCPHR40aNdj485yRX86HGj/3KMjTsmrVKtOW+4a5woULc3L6IrwOU/GczDyY2rZta948RKJ0wQsGj4UL55uEm9Z6yyBiGPr9YckOuXAlYeDZm0PO4Td7JVQEFIFMQQAG5nHjxtEHH3xAfy/+jfYd3MKhPDvQDY07UpHCpdJVBk/Gjpw5c7Ox+j4aPHiw+V5P1w2VmSKgCFwTCAwbNswYOf73v/8Z4wde6unYsaO5WrRokWYMvBk74FmNUKu4ihUrluZ9lIEioAgoAtcyAmr0uJbvvp5dEUgHBKJjLlCx4kVo284NtIc9NiQnhSfWcxf8RmPGPU/39XqKShQrR4uXz6QFS6bRYw+9QZXK+/cWy+ffvslKt1B69dnP3baI4Xj0y1bOpqGD3nObk4HGDdrQv2sX0Mw5k6hbx/5UIH9hmcqUesas76lUifImYbk/G1ar0piaN2lrkuulxujhzx6ggfJQFJ3eFYms9RRFLK9JCIAxIQ52BVPMVGLbGgGR0SpbulnMQUfrQoMuFKqJviNGyc9DhhS1o3hY65jjRiC8NhKC2ZDBOQwCwTCWAllBzWpUNkJYil2hD4yP5rEYXhHKtAkUw8aOgAROvM0EARTF42z14A76rvIaHmYicc7exlDiOpzJXjzhA9oAWQBi+xpmEIBz8MJAGGES54wtxs44A9tQnON5gFEASnG8xV+vXj3avXuXuWfYGopphDSC6z1yQoAOY+IpkIHi+cValPJ4vosXL07vvvsu7dq1i1asWEG//fYbrVu3LvEsluHPVW5ggD908abdfff18bmn958dn8vcJkXZj4nU8pRzINZ+jx692GOlD+XL5xyGEPsAF9Tnzp019xV7yv7IB1K2bFlC2K+QkBBMmYIwVnny5KGTJ08aoxgGsWbMmDEmJERaQlzhvOAlMqAv303W7tZnanGx87C3sV9687Tz17YicK0hgLeikeMD37PwEJww+T1z1a99I7Vt2YMa1muTaki27VhLazcuoc3/raIt21bRxUvnHLzuubs39evfhypUqOAY04YioAgoAqlBAN9jRYsWpfHjx5vwnz/88APhatCgAXXq1MkYQPz1JMPvTvjd0365ynTnnXcaY0e1alZYUdd57SsCioAioAikDAE1eqQML6VWBBQBFwQOHDhAhYoUoKL85h7CCXgzegx7+wE6cfIIDX3kPdqw+R+at+g3qnd9C26voG++f48GPfgGFS5U3IW7e7dUiYqcB+Rb9wkeqVqljskHsnDJdOrQ7m6PNDWrNaJiRUpT0SKl6Lsf3qfHH37LI11GDf69aAo1a9Q+RexffvIb6nx3Bbr99ttNsuUULfZBLEpFkHhTLLIe0KkEcrgo4wRh3DuwkJWdMA1wHeAp6hIrLE1JrERxb2dq+PEAjCdBXBsjBa+TJQ5aGXCRSeZZPc9hqiLYQMAERhY2arBBIYC9OBLI9s8dT8fGs7EjIZwVq9G84SV2XollAXJQCAsTxGeL4yuBDQ6ejmT2E1nQsbe5i/OgOImJ87jQGRoeg9yeNsL+HHDJMnwIQyYFXw+sQJHuRZTAqGHQgCIdRo/ffvuVld1JhqTy5cubBNkwEERFRTnkuBoUyfYzQB4o75HMG1fXrl1p+fLlHMrqN1q6dAmdPn3anFPW4CByBoS76t79dlb2RzrO59rAOuvnyunuu5J57VtrrekkGbzzQqxnKfC6AP72AmPBXXfdxSHyHuO3nS2jBe6hFPt+S5cuo8OHD5vvAjkH+P35558mT4sYHrAGbXj0oAgt+OLfg82bNxtlQAJ7UQV4/FKQ3b3XwtO+ZxIe3tfpjCKgCFxdCEBxh+vRRx81xo9ff/2VVv47l1aumUuhoWFUqEBxKpi/BCGPW6ECXHMf7ejoy/xvySXzO11UNOpLPBZF+w9so3WbltKpM8fcDoqY+3gzuk6dOm5zOqAIKAKKQGoR6Ny5M3sKd6bZs2eb77E//vjDeDrD2xnew1WrVuXcZ9c5LvTPnz9Pe/fudVz4XXPp0qUeRYBnBzxH8P0FQ7EWRUARUAQUgfRDwKYFSj+mykkRUASyNwL4oxUKKCgMkfS2Ue0OtGvvVgoLi/B48Ffe7M+KwHjqcPM9HN/5Pbqhya30w5f/Gtpa1RvT1D+/o7dGPUYP9X2J8ucrQgULFPXIB4NtWnWj738e43EeeUEa1W9DX018h265qQcraD1/xXXv8gC988Fg3quwCbXVsllHj/x8DZ44eTTFXiLnTJL2KGrVPOXJ8Pr3fpIm/jTGhJWZNWuWL9H8nvNPiWgpXEU5asJC8Q5QusM4wYGhKIQNCtC1snnB694WvfO0UFs7sHmBGwmwDKA2/N3pE9igARkCQYciTLgZExRAIayMpZjTbOhgxXQAK9+Z2BhugpMU9PE8kBB3gYICLlNEAnslxF40Ro8A5h3MuWlC46IpLj6EjSKcH8Rs4v4h22IebalBKbIHB7GBiC058IcJZAMGbDGeCuaDmYuR04UAeLDPBF/8Hx8Ne0GtjVpkcFmSYV2Et8Iz06pVK/bsyM2hn045vDnwRxredIOXh4RJg8Lcv2csw0Q2Bgg8u3JBMW+XCfkqbrrpJk523tx4OcycOdOEMECoJqFDDeX7hg0b6MiRI05GD/m5kBPgzLjwfec6JzSORzexIXRSYz/Z21qTdKdlHHtApldffdUR+gAhu7791jIICy/USIrZsWMnzrdS2cgka8Eb/GAswYVEmZjDmKwHDbx8kitYg7XAd8mSJSbhvcjqutbbuJ0ONHY6e9tOlx5t+1nTg5/yUAQUAXcE4BmGPB+4YEiF98f06dPpwKFd5nJf4d9IlSpVjJED+Yrwb5MWRUARUAQyCgH8vojroYcechhxjx8/bkKDSnhQf/cuU6YMIWl606ZNjaHDX28Rf/krnSKgCCgCioCFgGeNoKKjCCgCioAXBF588UXzNvSBvSfo4QGDWNFZlNat3sEJyTdy2KiFVK1KPaeVi5f9SWfOnmSDSDj9Nv0rTjB+D3W5tY+DBp4Xf82bTMGsLPt9+ng6eGQvNap3I/W4baCDxt4oX+Y68/bf0WMHPXqGvP3q93T3Aw3pzr51aNQbv1GpkhXsy027etUG1O7GO2ndxmX0yRevUKni5al8Of/diL+a8I4Jj/Xc4DEm4brbBl4Gvp88hpX1gVSpgn+hvOxsurR7mNZvWkJBIXH05JNP0ogRI+zTGdqGwhHK4UKFCvE+CPwEFT3yf7DxgRNgBLLR4NLBKM6L4VkM+3CS+hb2iMQZrqLjmCsbLWAcMMMeYjiBGqGggkL4TfUQtgCgCHNmHMBWgYvHt9HZIyPYaBFIwQmxbAgJpJCYQF7HScoTC+5BzOWLNLRhDopNyMUmBQ7RFchXXBiFcA6DhPA4ynUmiqIuWYYSu8zCAzW2NjJxDRrLIATzBKPEH5cvxzIvkxLd3HeHrDwvBWuCQlm+cP7nmM8uNOAH40wsTCbRyJ6CEZSkltXPnE8ohmHMgKIdSRxvuaUd/fjjD2YsR44c1KZNG4cBBB4hUrAuIxXWso+3GntDGY/LytthGTCEXmQLDw+ncuXKmT9kS5YsSS+88AIhDAEKzoAL62H0gPHAPg4euECDfSz6JI8LmTOLDD9pWbylJ7JIX2r8nLkW0GKv+vXrmxAuMDYgZwf+6N60aZMT5kePHuV79SOf6UXDBvJJQRu89u3bZ4w63mQQ+uRq8Fu8eLFJ9onvfBbLqVjYJO3vNJnYsctgl9U+7mldasZEHvDOCP6pkUnXKALZHYF27doRLoQW3LJlC+3YsYP+++8/0z548KDP45cqVYqaNWtmlIVIml62bFmf9DqpCCgCikB6I4Dft3ANHTrUhEvduXOnqfFddujQISpdujTnvttP+P0YF37HlDbypOFFoUqVKqW3WMpPEVAEFAFFwAMCavTwAIoOKQKKgGcE8DYL4pC+9sp79PhjT1Cblt0JBoTcufLS5Cmf0veTR1PbVndwksoSDgbNGrejyhVr0ao186ll884UwQmF7SVv3oJ07MRBeuPFb2noS92pSKFS9NWEt6lwwRLUuoW7R8SCxdM4JEK4SUxs52NvfzpqNg0c2p6GvfMAfT56rn3K0b7rjsdo154tVIGNHd/+OJJeeeYzx1xyjb53P01z5v9Cw0cMpMnj1yZH7phfxblEEP7LnzBejkW2RrtWvWnukm9M+B0k1YNi1lOxKwrt876UevY1znSWMhBu2sePHWOFLit1A1mRz3UAGz8CozkDRj6mORPLHhK+lZl2WdCG7hX6XKwKiGVjBiv9WafOY5jwoOnFIlOsN8/NejsZL4u/cIaCcx+kcG4HMgHnXKZgNsyw1LKYQ2AR5WZlbKeSPMl1YCxvGhjC43wOvi5wHpCwM5d4Lfcdq5JvJJ3HnIDiL8Wysc86Y4CVGd2NCaSCPPGcgN1m8zDSxrGBJyYkluIuMAEbdCALDEJGj5wSwdx2Td0AwlmJUr9nz560Z89uE+IIf9xJ7GEYRuRZgiIe9FeyiFIbirW//vrLGDUiIiIcCm551nHvJGcF3rrLmzevMXpgPQw9OIvd40HOiDkU6YPOaicZV2TOEw6Ygwwihyca+xjogSnoZS/IgDHk7rjttttM/g14bmAcdJj7/vvvea67CcEAfnaZQLdgwQKnsGT2PVPSBi8YXWBEqVy5itNS2VNqp0kPHX/pPCxNdgi8hT9k1qIIKAKZj0CtWrUIl70gTxAMIFAS4rsal72NPENaFAFFQBG4GhDA95OE8Lsa5FEZFAFFQBFQBNwR0N8c3THREUVAEfCCAJRqMHyM+2ys8djowF4bUpo2upm63VON+j3agm7r9ACHsrqbjp88RO9/9DQdOrybZkzeLaRO9bYd6zihZXeTgLxurRbU755nCfk/Rnw4hBNTnnfKzbHsn9n09gePcXis9pQnd14nPvZOrpx52FukDf38x2e0actKqla1vn3a0X7hyY9p4JO38hv+cYQE4+3b9nLMJdf49tOl1LlXZXqYjSufvDcjOXL64JNnORb1dhrCOU1SWxrUaUvrty7gmLFlCCGukFz5jjvu8MjOmxJVFH1YZKfBuL1vZ+qYYwVqAntJBLEbQxwbPhBqKiiUlaucOJx187w+ybBgX++1zfyMfcMQsDKX+1Dtw1cCvg2ei2VQwByWOxUoMll/GcLGF+gxQRlqnDXAz1bQMW4ZvAd08swHrIznCXubhCbq6a013uSw8UtsmuMw3wBO8A7+4GlkNPzBx50XqCCzzGGNFGRgiOH5APZWSdLLMr3hJ1SZV0M5LAri+vUb0KRJP5rN8dwEsYwoQUFsPOJj4pnxZfDAvFxYBw8fwQCGNSmOZy9xIIFDjsXFWV47Ios1xb5H7C0kY1gnZd++PfT000/xW8SbadmyJcbwgQSUVrJtxjORVmrkpRAvD5wtgQGP42cqIiInFS5cxGF0AH+skXWglUvmRAbnOunsIq/zvO8ejB0o2DeQfw4Rxk+O26FDR87787MxfABPiyaQY0ufo9dee5XGjRtnwnNBTuFx6dJFWrhwvsFVDCmYy5EjFyduv4/PXNjpXGYh8wbeyIWyZs0a6znnCRi9Lly4YEJcwSMG29gxwlrZ2+JjzYtByaK1jJrWvCWnxUdWoMZ9sXjJGe2zvtryXKYGe198dU4RUATSjkD+/PmpcePGaWekHBQBRUARUAQUAUVAEVAErnkE1OhxzT8CCoAikDIEEN5l48a19GjfUW4Lf/1uE707ejB9x54TyLuBJJRlSldhL4rP3WhlICcbKOYvmUq5ckbSU4PeN14QH7z1G4359AX67JvhNG3WBMrNNFu3r6WTp47SLW160vNDP5LlXuuLl85xzo5CnGPgglcaTAzmROavvvUATf59HLVtfbsj2a/PRTwJxd0kzktyZ5/ref399Oqzns84d8Fv9MLr9xLOedftg9g7pltyrH3O16zcmhYs/I6GDRtmYmMjzEPx4s4J4EWpCGUgSnJ9O41ZYPtI1I2aEcOPB+BBwYGOeAw5LzjMFfseWKpJ20J/mzCUiH4aClK+fNtO2Djjgbd9FPOGhmVl1ahh775GNhXiJKY4mbf8G0lUfrR4U+wCGRIl8rDILrnrNBS7vNZdeFfCTO/jmfL0xq08a8kJhHOdPXvWuP+DD5LWyloozZEMHUpp0BkMEhnu2bPHhGHCGlFeY6pgwUJUpEhRQws+mMO6M2fO0ODBg9n7YKPhD0+1RYsWEWIpDxo0yIRJQeg2rIHCfuvWrfT444+bEH5JZ2DjHhsWEEqlWLFihtYuE9aK7ElrMrOFB8TCqVix4nzeIfTYY4MYQyvROCSBfDg7YujfeWcPYyyxxomOHj1ivDPg6SIhwDBXqlRJ6tOnjwlrB2OI6xkRxgxjCFEjhirrXkazQWwS3X33vew9YxnDZK3r/cQ+uM/YG8Ym5E3xVoQH5tEuWbK0eQMcsvljwJB75g+tNxl0XBFQBBQBRUARUAQUAUVAEVAEFAFFIGsgoEaPrHGfVEpF4KpBAMqmli3aeZXnqcdG0sD7X2ePkIOUjxOF+/LIAJPQ4DA6zyGJGtRpRSVLlDd8g4NDaPAj73Doqeo0Y84kOnr8EDVv1J5u7zKAypZxDpniTZDTZ45TjgjOQ1GwmDcSM16pQi26qVV3mv33zwRPkubsReJvyZkjN709bBI99kwX+mz8/+iB+9zDTd3Yoiu9+9qPVLVyXU7QXsRf1l7pGtS9kX6Y8oFRGEMh+dFHHxFCXdmLKPdkTPq4d3alo12JKOOooRS0zwkfrRWB9EIAzxjCICFMFj+WRmkuz5wYLECDtoxDIQ9jHwoMFHZF/NChT7IR4zGHeFhz7tw5evnll40nAtaKkQY1FOzPPvus8faAx0doaKjx7jjGIdzA17VgfadOndh4mdNMgb/8rGAAbZHTda1737Ji+U/vziFpxNkohPFWrVpR69Y30syZ05PIuIUzINE5vEEiI5M85WBoOH36tJkH5jgLCsKWIfmw4CzyYh4XcKxbty7ziuT1p8wauS+7du1i3P+lBg0amXGsFSOV8DETiR8woAwfPtwnhvZ1CHH45ZdfsNGquZ2Nx7acx+OkDioCioAioAgoAoqAIqAIKAKKgCKgCGRLBKxX8LLl0fRQioAikBEIQAFWvqzv5Gs5OSwKclckZ/CAfMWKlWUFZiwtWzXHhKKyy9z51vtM6KivPppPTz72vt8Gj917tnJi9U1UtHBJI4edp6f23Xc+QadOH6UNm1d4mvY5VuO6htSfQ3J9M+k9gleHpwJDSnoYPIR3qya305Rfp5kwPbNnzzZJQGXOUw1loSgMpS19oUcfCk9RcMq41opARiGAZw7PG3TsuKAUd1WMuz6nUGCDRpTzsgbjdlr0ochHIknQYM5OizOBBoaRw4cP0969ewkGDxQo7kGPeRQo9zt27Eg333yzGZNxyCDFTi9jqO0y+TNup0lJG/uIDIgxfeedd3I+mTCHvJAZ8m7evJk+/HCMycWCc8LYgCTnknxesAItEm0ilj6Kp3NgrGrVqiaRusiKMfBAeLDly1eYNvbGmLcieGIebW+X3D/U8CwJ4FB72M+TbMLDorXuozdab3LpuCKgCCgCioAioAgoAoqAIqAIKAKKQNZFIOkv9qx7BpVcEVAEMgmBo0eP0okTJ6hGNc85MlIjRmhIKLVq1pkK5CtCr70zgPbu254aNo41x9gr5P2Pn6KY2Gi6vfMAx7ivBmTIxcnYfSnmfK2/+87HqUe3gSYXycIlzm9Xe1v3yx+ew2F5o7ePt2HPlJkzZxpFZY8ePejXX3+1T2tbEcgyCIiSnHXXbsWuDLdPelJyy7zMQWlfokQJGjlyJPXq1ct4aIiRImlPzwpz8MJ3AQwyMHh06tSZXn31VUKseRTZw3RcPkTZbq9dSBxdb+dzEPjVSDoD5MIFvg0bNqCWLVs6jJiyFwwdEyZMoPXr1xvabdu2GU8YbCXnAm2+fPmoadNm5vwyLuKgDyxxwcBy/fW1TBvz4C84r169mpBQXfbGOldewjPldRIv4S88XPvpt6fsoLUioAgoAoqAIqAIKAKKgCKgCCgCisDVjoAaPa72O6TyKQJXEQIICYNQJlu3bk5XqR59cDjVr9OS4uLjqOf99Wj4uw/5zR9GBuTUuPuBRtTlrqp0Z9/adJATpz/cbxg1rH+jX3xmzZtMBw/t5pwe3f2i90SEM9zWsT+99EYfmvSz75wj+w/spImTx9Cc+akzVkSE56AyJavR4kUrTE4CJBLWoghcywhA0e2q7IbBoly5cmywGGbCwCE8ValSpYziPTlFODwcatasSS+++CKHyHrJGDxE0Q+cva2HDFD840qtETW191HOj32RpwSyFymSFFIP85D73LnzJswVvDFWrVplPGJkrZytfPnyVLFiBb9EqVmzlsnJgTPDUIQCGTZu3EiHDh0yfeEvMpjBTPiQ+yR1JmypWygCioAioAgoAoqAIqAIKAKKgCKgCFwFCGhOj6vgJqgIikBWQWDZsmWUI0cOiov1HqoktWfp1f1RwvXdj6Pop9/GUs9+9Wj82CUUFhrmleWipTPoo89fouiYKKpxXQMOu1WNrq/RhOrUSj7OuzCFx8XEyaOpOq9Hfg972bJtNfOsTvAE8ac8zknRIyML0LivXzfJ2d9+dSKH+MrntvSz8Vbs+rQkNb+ucn1asWwdDRh4F+3bt89tDx1QBFKLAOvGqUePntSkSVPHW/tQGletep0xLPhSICM3Rrdut5lcD2waMOsRiqhevfpuhgIo5B966CHjsRQc7J5HIyXyN2rUyMgmXgZSg0d4eAS1aXMTX205afdRDru0jKZNm87G2y2c6PysSZrOgZVMKCfk7GjcuDF17tzZnAGeDBYvD64oLgICF1Hux8cnULVqNWjgwEf43Hi/xAqxhPkKFSo66FxYeOwix9E99/TmkFEXDYbYB0YFyJUnT6QTLytcmLVX6dJl6YUXXjS5U3AveBnTWlvAIHTy5ElOUl6YHnnkUTMInhiHjDBkoO2rgA5r6tevb3hERUWbtVZS8wCTJ+XyZStBvdCCHtjWq1fXF+tk55D4vGjRIon7uRu8fD2jyTJXAkVAEVAEFAFFQBFQBBQBRUARUAQUgSyPQAD/IZr4J3CWP4seQBFQBDIYASTN/vrr8XRX12epZfNOGbbbipVz6fnh91L1qg3og7c858nA5vc+1JTy5ilATw0aSaVLVUyRPPAQ+WnKWM79sYFuaNKRnh082m19/0Gt6YUhH1H5ctXc5nwNnDl7kp55pRet37ScGta70YTZqlq5DofQiqRf2cgyZtwLNPKNX3mutS82PudW/juf5i+fTJ99+T61aNGCVq5c6ZM+9ZN4cz2WhgwZQr/88gslsOY0JC6BYoJYIcqeOcEBHEasQig926QwBQWkzBjG752zWPxPEP8fHcu9YM4pwvwDWEkemLyO2elI4AVF86XLcRQRHswKYWua1dBG3ewPO+tfwwCKYT6sm6XwkET5nHby3UlI4DUBUMIGsCyxFB4WzMpmzqcAjbORxPd6p1lecyE4jPL1fotylr+B+bJhICGO70GQQc6JNh07eGNflNR24wEUyehjzj7uujVCGqHYjQBo4xJPAPCQfZLj58rfU19kQ+2rQOmOC3tDIY8rKirKLIHBBkZd5MKAnLiS4+dpLzmbzKFv5yPnFZmFzleNJORYh4J1OAP6MEzIvXDdA2fEGOjsa6UtvAxT2wfmwR98BQPhLWtRy5jIYh8TdqARGVDLPReZhS41tfBGLcXeljGtFQFFQBFQBBQBRUARUAQUAUVAEVAErj0EfL/Gd+3hoSdWBBQBHwjA04MSgujs+dM+qIhmz/uZ/l23kGJjY6hs6SrGg6JB3VY+19gnEZZqxOs/0mPPdKGX3+hLrz3/lX3atLduW0M7OVn5H5O2Uf58hdzmkxu4cPEs5YjIxQaPDh4NHlh/4uRh+vbHkfTKM595ZXfg4C6OWx/tlGQ9Mk9+GjvyT1qy/C+z/rV3H2SPlXBWJEKZHE997no6TQYPCFOsaBk6cGCfiZmf3BvZXoXXCUXAAwJQSEN5DCW2KLldyTwpuIUGinLMgw8U4p4U0RgTxbfsJetTU4OHp3088cK+kBHeAggDJftDZsiLAhr72f3ljbUiC3hAyY/avl742sewzleRn3GREbKLUQPrXHmhL/cBdGiLHHJG8HI9p9wvWQsaV94iv6x35SvnEDr0wQ8F/IXeDKTxw87PVc40stblioAioAgoAoqAIqAIKAKKgCKgCCgCWRgBNXpk4ZunoisCmY0A8nmcPXOOKpS7zuPWe/b+Ry/87z66ePEcv4HMCkVODr5h8wo6dGQv5ctbiBrUaUXPDfnQ41rXwdo1m1H3TvfTlBnjacas76l9215OJFNnfstvZEd4NXgcOryX3hz5KD3Q+3mqWb2x01p0brmpp7ncJmwDMRw269z5M7YR9+b3nJsjNi6GDSdj3CabNrqZcO3bv4N27t5El6MuUZnSlahqpTputJ4GYDRaumIW3dD0VrfpPHnycWieM3T8+HEqUKCA27wOKAJpQUCU3d4Uyd7GsSeU2lJEwS38ZBy18EAtbft8erXte2Mf9O1jIgtkFXnTurfwgbLf09mwf0qLyA3eKGII8cZHcIUHi/28WI++8LHLJ3Min/CQPex8MCZGErSF1r4W4yiyLjmZLWrvn+Bj52/nZx/3zkFnFAFFQBFQBBQBRUARUAQUAUVAEVAErgUE1OhxLdxlPaMikE4IXL4UQ8WLVjAeHK4s4dXwIhs8alZrREMfeZfKlKrCb1KHsmL+BCv8N9OEyR/Q3AW/0cKl0+jBPi9T1w59XVm49ZEjY9vODfTDrx/TqTPH6a7bBzloTp4+yvky8jr6rg3k6di2Yx2HpqrhOuV3P5S9M5AjxFcJ56TiVSrVJuQXqVm9EcHLw7WUKlmBcKW0/DTlU/p70e/UrMktHB4pSZEMPqdOHjXstm/bRWXKlEkpa6VXBLwiYFeCeyJKbt6+Rmil9jRnH8uItuztqjDHuCjKZV+hlX5qa+EjtSsfb+OudK59rEvNWtc1rn37PvY5e1uwwpi0sc4Tjeu4nX9a27Kf1MLPtS/jWisCioAioAgoAoqAIqAIKAKKgCKgCFx7CDhr0a698+uJFQFFIAUIHD543Cjfozlhrb0gzNTwEQPonjufMDk4kEgcIadycw6LkiXKU4tmHejTkX/RrN/2U797nqMmDW62L/fZ7t1jiPHoWPnv3zT2y2EO2iKFSnGOjLy0/8BOx5i9seLfuZzcvCHlzJHLPpzCNud34NBVvsoO9uCoWK46ffHdW8nS+uLjae7osQN04OBO+nrCO27T8C6B98y6tRs4wXRVt3kdUAQUAQsBu7EDI1COYwxeClKuRoW5yA057UYGkdlTLWv8pffEw58x2UewlP2kTm88ZT/IBt52/phDCK+U4OTPGZVGEVAEFAFFQBFQBBQBRUARUAQUAUUg6yKgRo+se+9UckUg0xEID41kY0ZhOnP2hNPeTzzflT0ZKrFB4xmncU+d27s8SEUKl/A05XEM+T1q12hKSAQeFX2Z3h092CgAK1WoSZcunacJP33gtg5Jvk+cPMIhp/wLpeXGIHEAYboq+vAUQbiqS5cucDJ0y/BRsEBRb6xSNf5Qv1cpgvOO/MMGH9dy+Mh+ys9Gj/Xr11LNmjVdp9OtL0pMMAxAWB0oGJE3mBNqB3CybuTtTuBE3RhHwJ6UXBY1OFuFOZohJEtH29sVj3m+OFuEgwbq6zgWD7JBPCMIV6LX9iaXRcrnQMMs5KVcB3Im9TgecpUBe+LivOtMJzSgs2jjeS3mTWGhwDeWE79b/1l9d1mwv/vF+dQTOYERNmRmiaytDfTTFwKiKHd6hvmeodiV5va2L35XYs4uu6vcdnk8ndU+n5K27JkcLq7zWOc65m1ff+UVOk98ZA7GDvvliVbHFAFFQBFQBBQBRUARUAQUAUVAEVAEri0E1Ohxbd1vPa0ikCYE8kYWNHHg9x/a6eADI8RFVvzDkyOjyr09h9D+gzvo7NmTdPLUURr45K2E8FYR4Tnp+IlDbtsuWzmLChYoRgXyF3ab83cgmj08znHCdiQ791Y2b13F3hYFaeWav6lT+3u9kaV6PCw0jG7jvCb7DmyntRuWOPHZtXeTkW312pVUp45/OUKcGKSwY96kjos1Ss2EICRmTqAQViBD+R/ABoIEDr+VwBr/BBhC5HL0E3X20Nu7XDEsB3T5KEFQmsZwomPwxMVjrhcYcC54HmfjA2qhxVowCuIZvuLYYhCdaCCI5dp53yQZwSmW5Y3ls7Adh3mzBwDT48Jy14uHeF/Oh8D0Zj9e6yqDNc5r2QLDSPE8DCWe8cEZcIl8MHRIGzgSDyTEx5kxZuLACnJo8Q8B5KmAMt5VIe9pzD+OGUslynzsAhm9ye8qBdaltaSEhzc8Xcc9ySTYp5TWlV7kTQk/T/LomCKgCCgCioAioAgoAoqAIqAIKAKKQPZCQI0e2et+6mkUgQxFoHGzWrR81Syat3AKXWAvCJQ583/hxObVM3TfXDnz0GvPf0UtmnbknCJlKZo9Pn789RNqXP8mWrV2oUmWbhfgr3k/UqXyqc/lAV7jJ75rDCf167a0s3ZqHzm63+Q3iWVjQK3qvnN/OC1MQadX90cpnI07k6eMc1q1bcd6Kl26LNWuXZvy5vWe28RpUSo7UCwiGXJ4eATnaQnhK5ivIArmC4aZ0KBgSoixjBHGcADjgTEgWDVbFHjeuohr9M0YGwXi+QJtfCzRhcBwOhMaQqcpiM5SMJ1N4NrtCqYLATzHbh3nDF0g0+LiMQqjywmBFHeZwwHxFjBgwP0jMHE/2Zd4L+OawXU8yx3IdQDGeK8EvuLimXdACO/tWYbzvP8ZpjnDtJYMkDeIzscH0QXeH/Kf4ATWZ0IDKYotGiYdC1uHYKxxx8cyigQYIlZwc80j/B/Lzf8FJYRwOwTab3P30q7WTuVDkAWW4TnFZQ9zBGW4jKNGuVoV5CKnQC1ySt+1Fno5F4wj/hpIXHmlpS9yovZV7PLaPTPs465tTzyFBnthHmdGQnMkjUdbiyKgCCgCioAioAgoAoqAIqAIKAKKgCKgicz1GVAEFAG/Ebh/wD10/NR++mDUaLr7wQacpPwUK5tCMtTLwy5cy+adCBfKxMlj6BR7fdS7/gZ65pWeNO3HnQ7SoKCQNBsh/mVjSmRkAQdPTw0kVz94eDfd23Owp2m/xlasnEs5cuYy+Ue8LYDhY9Qnz9CWbaupaqU6dP7COTpy/CCdPX+MbrjhBm/L0mVclI5QKEKxCLUxLijlQ1jJHxzIY9FRdPHYZQr2ovM0nhBO0liErI6mWNZRwtvjEieEz9ftAUqIzMfMQ1mZ6UV5yYrr6T/8SDNnzWYaVnBzX7YN5jBStQqE0B2lItn8wYGpWCEax0aPuEAOf+OFHbxKjEMFyxLABgvYR2LCQyiy610UWLSyCWHlJDo6WMNVAHtgLJ0zm76f+KNFwushSxwzDeX9K4cHUs+K+SgPDB68P8JvuRbo4XHWoGD2BDFnBmersOmGYsICKEdUoosHMwd/XFr8RwBKcnmOpfZ/deZSiqzJyQk6e0mO3k57NbRdjROu5/Elo9DKmVHLGNbJuC8eOqcIKAKKgCKgCCgCioAioAgoAoqAIpC9EVCjR/a+v3o6RSDdEXj22WdpwP2P083t2lJUVBTVrtnMrz3Wb1xGf875kXbt3WqUUm1adKNunfr7tdYT0V23D2KFdqxRene8swKN+vgZemLg24a0VvXGnOtjFJXhPCPICZLSsm3nejp+8jBdz3x8lYOHdhPCYKXFy+PXaV/QqdPH6aWnxlKJ4uU8btf51j708Rev0L9rFxmjx9SZ31JODru1eNksevzJCR7XpNegpZQP4Nwll+j8+fMcPYo9IVipj2wWIbFBHAYqnmIuEYWy5SKEPTbcCmvo3V8AtxS28HwI5tBYUO5fCgqlfDVaUUC+QhzeKpw9Htw4mQE2H9DB35fR0qOcYB5sbMyD2QiRG299F4TRgQ0ixtDAQrExJATxqlwLhpgHKhbF6gTxDmx8iKzUiMLL1uUxD5YKi5LXx8jLDwAAQABJREFUJtCx5XtYFus8Adw3LcYkLD6aAvOyIYPFDGCPkyC2rHj8B5c3T2B6dgmBAE7FOJ8wxtY5bVPm3La+hyaUwHib3l7EC8A+lh3aovBGDYW3XekNDFwV7FfTmSGfyOsquzc55byYl7XeaJMbF15SC70dM/sc9kNf5v3Z375e+LvWyfGx8xBaqV15aV8RUAQUAUVAEVAEFAFFQBFQBBQBRUAR8KiDUVgUAUVAEfCGwJG98fTwI4No2/bN1KZld3ph6EfeSM04koqP+2Y47WFjRz5Ogl66RAVO7BxHG7f8kyajB5gHcVglVgnT4IHv0PARD1OrGzobI8yw576gx57pTK+9+6DxRAkODuWwWGUoT+58HKIphwkhFBjIXgq8PpA9GMDnGHtOIGTXth3rKCeH0wri+RfZEOGrIL9IsSKlfZEkO1euzHW0c88vXg0eYBDC3jR1ajWnZf/MJhh7jhzda7xQipTIQxUqVEh2j/QggNIRQZdMnglLtc9sWfnJenUo9E0eDk8bWfYATzPG2AAviyC2S4TGQUEvxgNusnEFicLdCltK4tl8EMeXUXraSGCMgYmCV4KB8a4A11DexOTZcGXGZGYPGCV4IYww/DhQDFtLEgIjmAv/E+nR44SNG2YLTurONPEcCssqvCfHyUIOj7gEXs8Mw5gXbBowiHi0n/Cwp2OCXzDP4TJJPzBgOyu63oo9dJCdBvcQHjvZSVksynCp7edFW5TzruNXWz+5e2I/H9rJ0afkfHbernxlTsal7y9/O73w8Het0AkPT+tlTmi1VgQUAUVAEVAEFAFFQBFQBBQBRUARUASAgBo99DlQBBQBvxGIupRAs2Ysp78X/k5tW91Ozw350Ofaxctm0qtv3W9yQYz/ZAkVLVLSJ31qJ2+5qSd9+8P7NOztB+nX7zYaNqPf/p3++fdvWrN+CW3ftZ4OH9lHe/dvM94hYWERxtBhQiixAhE5OS5fvsB5K8JZxtKcK6Qtdbj5br/EOXn6mF903ojKs9Hjn1z5aObsH+iWm3p4I6PrazShaX9+Z+bPnDtFp9k75LF+fb3Sp+cEFIsO5SIU71DEO7J1o8/KfmyY6JSAphSjpzeTMmKreTKWLQIhnHg8IYAtH5wrI5bYy4NzWLiHxLLWJSBOFMJIoeYCAwMKKhhkYPiAh0cMWwiC2JgRyiG4EIYKaTHcCssFLxNHGoDEMyWYzbEHeFv8ndaacRwKsrBBxXiRWH0gYf3HHix8pvjAOA7hZXmawH7iCgUMSW6D2IwJYShh8wvbXWC68a+YhPOJHh5Q+DvuGy+3ez14UiD7t8PVQ2X3khDjBsZQcL6r9Yz2eyJye0LVTmeft99X0KTHOT3hBd52/q59u0ye2qCXkloZ7fdYeLnW2McXjq702lcEFAFFQBFQBBQBRUARUAQUAUVAEcj+CKjRI/vfYz2hIpB+CLAOa/W6xVS9an06duKQT77fTHqfVq6eT61v6ELPJ+MN4pORn5MTPltBHXtUpD4Db6CvP15oVjWo24pwSYEnx6VLFzhM0xk2dMQkhseywssEcx6QsNAIKlXSf8+JooVL0aEje2nB4mnUolkH2SZFdelSFeno8QO0as18n0aPTVtWOnKMrNu4lL1m8lOXLp1TtFdqiOGF4FBYsjHA8mRg6wYr602YK6PY5ATKifpNDyYC79sycTAnMkdB3g24RISCH7t+sE+CJ3ODoY2JjTIOGEYJKxYDyMlLrTBWrATlPtsbrA/YRxLlMwxsHziJmYLhgkNbwYBhJEpAdnOeNB3bAkMvzLhmmYGJVTAOA47Vy8keRiihxnTBcyC3pmyfWOOhJBKyROyB4v8/1aL8hbJYFMZy/7Kbl4ecC+iJgh1j9nEPyF6xIbuMyQkhtK50cjapXef96dt5e8JL5mUOfdcxT/sIjcylVkbhg1qeZ+EptdCgn9p9hJfWioAioAgoAoqAIqAIKAKKgCKgCCgC2Q8BqIK0KAKKgCLgFwIhnFQ5P4eoKligKF2O4kQOXsr470fQ7zPGU7UqdTPF4CFitL+pF+3mMFrIeeGp5MyR28hetkwVqli+BlWpVJuuq1zX5MlAPyUGD/Bv2rCd8Rj5jvOHnDl70tOWyY5Vrng9FS5YghOi76GhL95hwn65Lpo1bzItWjaDOt3Sm+Yt+M0o+W7reqcJVeRKm3n9RK28o3JX5/sji8mDYdkKmJwNUPzpm5OlzAdv38rORGMCM/NiVgALa9IngUXm3ycYOTMTTw7jROIfE+9Uzqyd6KAExiWGDiiLYeRALcprwUtqJwbZpHM1nk3uTVohTo+zibEAvDzxw/OD4mnO17jwNYt9rJd5f+rkDB5yBm+y+rOH0igCioAioAgoAoqAIqAIKAKKgCKgCGRPBPx/fTR7nl9PpQgoAilAgNNcUI1qtQlK/pLFy3NIpknsndDTicPSFbNoBo9Xr1KPHur3itOcv53TZ05wku6Z1KGdfyGmhO8jD7zO+TG20LS/JtBNrW+ncA5jlZGlXp0WVGVhLWOweHf0YHr68VEmb4i/ex49dpAKFypOD9z3Is2Z/zOt3bCUXnmzv8lLUq50VdqybTUdPrqfjh7bT/XrtKKO7e4h7BMdfZkeefQhf7fJZnSWScRVyXqlDnm1ySGKYCiMIVt6K4Sjo6Pp4sWLjjf/7bgHsntN7ty52dAC/5nkS0xMDHtdnU+e0AuFHfuIiAjCdbUVu4wpvRcppfd1dsjh63kQOWVPoQdPjMm46x6yTsa90cm8p9qVB2g88RGZPM154qtjioAioAgoAoqAIqAIKAKKgCKgCCgC1y4CavS4du+9nlwRSBUC111XjcqUrGwMCnv3b3fjMfn3cRTFXiD9733ObS65gZjYGBo99jljtIA3yQ1NO7ARIW9yy5zm33iJvTxYSRcWGuY0nlGdQQPeoDdHPsrJxffT4Odvo/vvfZ6aNGyb7HZrNyyhv+b+RPVrt6KypSvTs4PH0MIl09los4l++eNzWrFqLkWxcQOJ0vvd8yx1ubWP4Tnr75+pXdsulLdA5pwv2YNcAQJ5G/0KbG22hNIVCljUly9HXSkxzL6QQ/AQrw4RKL2Vw8gX8v3339P48eN5C+yL+GFSAozR4e2336KaNa/3qLQWStSQe8OGDfTkk08SjB9ByOvCYykrSc6qffv2pfvuu8/BI73PnjK5rPPJGl+yyJlRCx1qaQuP1NbgK7ztfGVfO1/My7h9jdC4zmEcY3aPDFknc/a19jMJL5lHbZfPPg5a4Wvfy06jbUVAEVAEFAFFQBFQBBQBRUARUAQUAUXAjoAaPexoaFsRUASSRSBfoUDq3XMw/e+9R+jkqaN0/sI5ypUzt1m3a/dm2rNvK7Vu3oVKl6qULC8QHD6ynz0cltBPU8bSf9vXUo6IXNSwbmvq1qF/ig0e4BcWFo7KFITg+nfNQqpb+4YM8/rAfq8++zkhh8nXE9+l9z9+iirNrEEP9X2VMagoojjVf8z4hqbM+Jpubn0HffHdm0z7CpUre53JC4LcIH3uesrQnzh5lArkL+xY+9L/+nCy9VD6/PNPHGPXYsOTwvTK4ZBSRX36SWpXBntTGKffbsTGzCj65ZdfaMuWLYmh1dxDIc2cOZOqV6/B875/vYC8ly9fpp07dxq+wcHOSdf9kzvJ6HH69Gn/lmQwlf3ZtCv5vW1rp/dGk5px+7Phy1AgMoJeQqNhP9c1djllDYxgCKFmLzJn3z85fpjHOlkr/Ow8XOURGq0VAUVAEVAEFAFFQBFQBBQBRUARUAQUAU8I+NZKeFqhY4qAInBNI5CvSCDVrF6PvROqEDw93hr5CA1/8RuDye69/1FoSBgnD2/tF0bwbJj0y0ecFP0gGysi6LXnvqJWN6Rfcu64uFh6+c2+NKDPS3RH14wNB9W75xC6qWV3Gv/9uyb/xhPPd6WcOfPQ3bc/bhK/581bkNZtWEZ/zfuR31qOp9y58prk5a8//zUbPKp6xEsMHjt2baTxE0fQVjYKvfbyCIrIFeCRXgevHQREQe1JWZxRKGzbto22b9+eqBBPMvZAFiiloaRevHgxPfjgQ5Q3b/IeWnalNi9NlwKersrzdGHsBxO5JyD1JQNklCJtX/RC629t5+nKV+bAS+ZkTPpS2/cDDc4nBffb1eCBOaEBD+GDGuulDzpvbcyh2GWy01qz+qkIKAKKgCKgCCgCioAioAgoAoqAIqAI+EZAjR6+8dFZRUARcEEgOIQof9EAuv+e5+jRZzrSiZNHaPPWVXQd5/BYv2k5e36coQrlqruscu8uWf4XjRr7DBUqUJxKlajIhpPxFBGew50wlSOLl/1JC5dO5aTYAVS5Yq1UcknZsuLFytBzQz40ychnzZ1M02dNNB4sk36JpQsXzxkjSE72ZDl4eLcxhNzSphcdZ/zi4mMoJCiUcufJb96QR3iwk6eOmKTsyPOxZdsaKlmiLLVo0Zzuf/iOlAml1BmGABS8opzNqE04sI8T63g2mAXEBVJgEHs5ZILtC+fDhbMuXbqEzp6FRwUU2PCyCCB5219w2LNnL+3du5fy5Mlj5IbC2pPSGvQYl9pOB57oQ6nuirHwstZBOW7Bgz6uzC6yJ+rUeCN4Mhyk5QzAy46l8BI5pY9axgRT+5yntp3OdQ/h5Q0D+1rwdu1jDLJLceUv41orAoqAIqAIKAKKgCKgCCgCioAioAgoAv4goEYPf1BSGkVAEXBCIH/hQCpTpgp7TzxM3/88hkZ/+iJ98v4MTmKc1yhBUfsqBw7uordGPUrh4TnZWFKXHn/oTV/kfs8hx8Bn499gD5RttP/gTrp0+QJ17/wAXV+jqeGxYtU8Wr1uER07fsAo2CLZyFC6ZCUrcbgXbwu/N7cRVq/agI0aDahz+/voywlv0XLOz3H58iWmYOUxK0fzReanlavn0z//zqPomGjOhZCDDUVV2YB0lD1lIoxxJG+eglSmdHmqWLEi5cobyPk9ztHoD0fYdtHmtYKAUeWzPpifHiLOfYGE4Zlh8AC+UGbjQt4NeHGgiDEiLCyMKlWqZHJzmAn+OHPmNK1cuZJq1KhhfsaCgz3/miFK7xw5chjeAQFJBgsozpHgHDQwgIgiHXKAH/aFghw6cuGDsG9oi9Jf5MmsWmTMrP287QMMBBOhkXuIvuuca1/WoMY6FOFpp7W3hc4Qp/BD1kot+6WQjZIrAopABiHw//bOA0CKIuvjb9kliWAAE4KygooJRcSAqKicOYFnAgWzZ87xzAFMqJ8YMIczY46YQJATM8oJiqeYwBxOQQR22f3qX8Obra7tnumJO7v7Lx2qK72q+vVMzc57Xa8WLVokzz77rIwdO9a4LlxPhgwZImussUaBeqNYEiCB5kLgrbfeki+//NJOF39T7L777vZsuOYyf84zMwJffPGFvP3228lGW2yxhay22mrJNC9IgARIIIpAuDYiqjbzSYAESMAQgHulynXLzdkep0j3buvKiGuOkcEHrScbrLOZMXwsl3bHxo23n2f8+C+Q806/1bjCGpA10xdffUTmfDfL7DR538RfWCNH+6WXM4rRlrLsMp1kyN9PkB2331e+/uYz+edlw+RHc9g4FLatWrWRjXttJTM/n2ZfDxjDzXo9N5Ejh58n2K2RjwDXXWPuukjKjAK3a5c1ZN+/D5VtBmwtG/dZR9q2M9tlloTq6mqZPn263HzzzUaZu549L2HOnDny54IfZPYPH1ml8g477CD/+Edh3XPpeBiXDgFXsWxHZYwdLcwPw2IGHQPOzPj888+TRhAoqSsrK+378oQTTrDGBoyrqqpaJkyYYBVjMEREBbTv27evNZjg2nxMkmHu3Lmy//77y7Rp05IGDxQmzrO53ex42toq4mtrYQBKNIRxBHIwXh1zUmCKC7TREKedWz+TdloXcZx+3Pr+tT8GV55eR9XRfNTTur58P402UXVVHtpE1fHlaRptw9pnKkflMW48BGCc/P3331MOuGXLlrL00kunrMPCwhN44IEH5IILLrAdvfHGG/ZcJyieogzahR8ReyABEkhFAH9D4bcFAj6n7dsnzl1M1UbL0A7tNeDvrnbt2mkyr/Fjjz0mDz/8cFJmly5dpF+/xENqycwSu/jll1/k22+/ldmzZ9vz6Lp37y544QEehsIS+OCDD+SMM85IdnLyySfLSSedlEzzggRIgASiCNDoEUWG+SRAAikJ4EDzil5l0q79ztK3zydyzKk7yyuTnpDll10hZbtvv/vKnHkxTkaef3/WBo+/FsyXS648UubO+924gPpE2i3VQXqssb5UVS+SzfsMlO5rrCu91tvCjgOHqx996k7Sc62N5XLT56qdK20+dpt8/8M31hXV9z9+IzM+fV+OOHE7Od8YYjbru33KOaQrxDkljz9zu9mdMV/OOesCOfq44ZFN8INkww03lDFjxiTr4EcHDnnGD41sFICuMhHts5GRHAwvGowA7qO5e+Y/E4xuH1d1KvriDEt3TkDZ9dNPP9r3EsYFY8O6665rdyLh/I5ff/3VDgg2mQ8//ND+KFx99dUjB4n3JAyQiO08nZ0eqkxDOco04Fr7RqztUa7Gj0ze6yovbhvUj1tXx5xL7PeHNIKOQdMaI1+vNUYeXriP2lbb2wznH7TxZaSqq/IcESkvVb5W0nRUH1qPcdMj8PPPP1ujZ7qZ4TtwnXXWkZ49e8phhx3GHQbpgBWg/J577glIhdJv8uTJMmDAgEB+qsRrr71mHjr5MVllp512SrpATGbyggRIIGcCf/75p91pq4KwG/eVV17RZNp40qRJcsghhyTrHXzwwXLRRRcl083xAn+rvPrqq3L55ZcLzrYLC9hxsO2228qxxx4rK620UlgV5pEACZAACTQQARo9Ggg8uyWBpkCg/XJlsmaHCvn2izIZfeUzsss+a8hv//sp5dTu+NcIWc4c6r3l5jumrJeq8M5/XW4PUV+tSw857bhrZJv+u4dWxx+q5408VCpXX0euG/lEoA6MH3j16b21zf9j7m9y/Ziz5fQL9pVzTrlRdhq4f6B+3MS9D10jL45/2G65HXPLaFlr7e5xmybrQembyxOuquBURXBSMC9IIAsC+BGNJ/JgiNMARTWMdfhx17Fjx6TRA+VwcYUf2YceeqhWD41V2a0xHHj5AWX4HLsBeYmXmxv/2pVX13f69pnUTS8tfQ30544VLdw8HY/W0VjraV03P12vbl2V77ZJV+7W9a9VnspAWvP8ukyTAAhg7YG7PLzuu+8+OeqoowRPd7Zt25aAikSga9euMmvWrEBvmSr1br/9dnn99deTMjbZZBMaPZI0eEEC+SPg7zjAroRMAgzSblh55ZXdZLO7xkNo+Ft24sSJKeeOs+xgIMbrmmuukb333jtlfRaSAAmQAAkUj0DCL0Tx+mNPJEACTYxAi3KRLj3KZYNNO8jRh59pXUvN+uLjyFl+OP1Nc8ZGYhdGZKUUBTj34s33XpH11+krI86/L9LgARFPv3CPUcZ+L2efPDqFxERRB+OW69zTx8jg3Q6XUTecJlPefjltG7/C3Q9cbQ0ea67ZXZ55bmxWBg9fZrZpGDyoVMyWHtuBAJTTeH3zzTf2yV7X9tCmTRtr9IBxzv9RvHhxjXWBsnDhwoKArHtfl2UsX+cEwyCuVVYq5TvqNUQI69fNw7Wb1jHqnDSNGOuBrgluvsrQWMtUhsbgpcZU1EnFS2X4sfbhx349pkkgisAtt9wiV1xxRVQx8wtA4PDDDw9I3Wabbezum0AmEyRAAiVBAN/N7pk7MBzjXJ644aefgg+urbLKKnGbNsl61113XVqDhz/xU045Re69914/m2kSIAESIIEGIsCdHg0Ent2SQFMj0MHs+tj3wIEy9ok77Pkaa1SuEzpFnLfRbbWeoWVxMj+e+Z707LGRnBXDkPHIEzfJButuJqt1XTOOaFvnpGOukM++mC4XX3mEHLTfKTJknxNitZ04+Rl59Kkxstrqq8m/7r+9YD5w4wwmTLkZp53WgVJSg/n9ZBWreLIWbowQzFEK0qLGuMwpW2wS1bJUeUtZ/KdIteOiSNtDEmTgHxzAXd7SfO0kddW4gO3duCpaaHy317aSxWU1Ul5r3B6Z3Lp6SCRCTU2tGcdy0qVLVzMuiMXT4igzh1zX/mV2yLSQ71q1laVr/pIW5bVmTMb4g7MfnF0EqF5h/MW3atVSWrQsl8VmCJBVYepVm07nL7WMEYwfiXUc0ENYgN955YLyslqjHDbyWtRUG/lVInPLZJGVg8HWlwCWOJy8leFSiwPKTUjMx1wYQbWLW5uxgZEJIe0TBYX5V9l++OFUMyYYCMAp4dqqU6cVpFu3NYyRs5VsvvkWApcIifoJV0o//viDzJkz255JU2buQbqQeMsldjbgHut7UOO69oCQOwgda53c6CvULVbw54u+/TyMJSofZaiPVyZzVJlu7MtCGiETHjp2jbUtzmBRWa6bMpvJf5odAbgGGT58eGDeOEfo448/ruea5a677pKdd95ZNttss0B9JgpDAGcovffee/asJuz6IPfCcKZUEsgXgVVXXTWwOwsu6eIaL1w3dBiP/1BLvsbYGOTg4OzRo4MPza2//vpy/PHHW8MvHgT5z3/+Y7+jnnrqqeSU4JZx8803T6Z5QQIkQAIk0LAEaPRoWP7snQSaFAG4wFlvg7WNItkoeyNCdXWVzDCGi2xD/y12Nq6xdkrbfOq0yeZg8/nmIPPM3VQdd+QlcsIZe8jkt8bJW++Nlz13OVg222SgOTsk/FDV6Z+8I6NuPFVatS6X226/SZZZxijNGzCoYjEfQ9Cnu/Gk2Pw/55uDtMUaCVpWt5Cq8sVSYcwEfyxaKAur20jLUOW2UcBCZ2x0/sZOYq6h7EwokauNgaPGKGfNM/cyv7XJ+6tCypaxlRK2kJAJYG5HHnmUUZAdbEth4EEwvchi81/r6oXSylhgaloY80WZ+YqrbW0NNGL7tVVt7cST7+XmXAijVDb/QakvZk61NcYIUmHOkmjfwQwzvbIeytv58+cvEYx5GXkmqlhcJX/9tVD+rKmQKjPDtmZLlHnWXgfgxAljSJVhoVwgxeQasjXyv1YLZKm/YFwyuShA0DiRKui/NTWLZcqUKYJ5Kmvcg7XXXtsejom8/v37mx+G15v5GkOTvR+11sXVrFmfW6NHnAFGKek1v04GJh8PgK9ohwyMPZ+fj7px5X6l49VxIkYeXsre7cWfh9s+rL621XrpWMStp3L9WNsjH+Px0359ppsvgQEDBoi/o0BpTJ8+3Z7n8d1332mWwPBB5XsSR8EvOnXqJPvss0/B+2EHJEACuRPo3LlzQEgmRg9/p0dzNnp89NFHAY44X+rRRx8NuFesrKyUPfbYQ3bffXc58cQTbf3HH39c1lprrUBbJkiABEiABBqOAI0eDceePZNAkyPw5ZdfCp7O/Pzrt2XLvnuGzm+1VXtIuVWMhhbHyvSVfWGNPvr4HfP0fGtZc40NwopT5vVcs7eccuzV8txL98nO5myP9z6YKDffeaGs3WNDWbP7Bmb3yOayWpc1pVPHleQTcwD6NTeeIcstt5xcNvJC2WCDzPtLOZgGLFSDB4YAv7ZVVVDfm/+MgaCmukJqzE4KqamSMnMGSUtTx5gKzL94BZXSRmebCCauNU9GGb2zUYAaw4CJzT4MY6owRo+FRq4xOiBYo0GiRei/7du3twp3V2kLw0Wt2XViZZs+FsM6U1YuMM6gr1p0tiRAkY96GCcMEdhdUmNeFcYqU2ZeLcwAaivCDBQqoS6GMUDdOBnV9JKptzBYTB8taqXtMuXSzhg8EqYVBYH2uMYgMDjTr9khgvlAMYzxoqS1+bfNAmPwWARjjMkwruRs0KZLkoWM4N8ZT/lCaY33g45xq622sgeJo+9u3boJDi3/9NNP7fhRF0zw4/Bvf9vB1ItmqYpw917mYz4qV2PIRB+lFtzxuWNEPl6ZcIkzP7c/le8yccvd8bh1cI16WtftV6/DyrSdzknr+rKZJgGXwHrrrSeXXXZZ4IwgGELiBHxv4Wndzz77zL5fu3fvLpWVlWYXXqs4zfNSB2OAixkNcA3YunVrm/TLsKNSx4b1du7cudpM3HZYX90zlpKVzAW+H9Xo+fvvv9u5w988HsaA25suXbqYHXrhP//mzZtnDdyuPP8an9sOHcxDARHBnxOq6XekNvntt9+MYfx3TdaL8aR01BjdylhncGYBDhfG3574LurRo0dOZ6K58nO5xkMAn3zyiX3/4ZwFHCiN9x+CzyjsQRm0d90ShdXR8eF94v69hvsTZ33Nlp8/fh0HYswVO2ARcN/x2cNvAwS8//D5w3tZgy8LO//inGnnt3M/Hyq7ucbY6eEG95wOf13BvXLPAfHPAEl3fg/uQ77XWKwP+Ox8//339rcVHrKJu1PFnXeu1xiDG4YMGRIweLhlf/vb36wbLKz1WIfihlz5gRU+X/jc6Av3E4Zq976mG4//eXLrZ/qZdtuGXeO3JNzm4n2D74Hll1/eng+INTLOuu/LxHsau0LnzJljv2uxcxTfA6nWTF8G0yRAAk2bQPhfvU17zpwdCZBAgQjA5cT1118vK3deXlZZvVy++yrhwsTtrqp6kfxnxltuVkGu53w7y/zB01F+n/uLdJXED81MOtpp4H5mp4g5wPmZ2+WQIWfICUeNlJmfTZXPZk2XV1571BzGvqJ0MQehv/P+BFmwcK7ss9+e9mmfTPoo1bqqsEyMDxr2ulBmjAn2BR9OxlwBA4HZn2H/w3VCXV9XH0p9lVBmiu21ZpgYLdDf4hZGq2/dURn3VmhjClDmB1WYan7dD/syqSpraV1UlRn3SC3R2hgdasqrbdUWZpQaWmAHBwaDYDqC4QM2BYyhBdw4oS2sDNgpkiagf1UwGctFcrbYQVI3NszF/KfztjJ1diZGAcqg5DaRliCrzBhurHsow92m0TZ5gUT+A+4Hxo74gw8+kNmzZycVKsiHUm7gwIF23vihhB8WvXr1skYPHQ1+hOAw86+//ka6detms10ewfcY5pmYdaLvurTmq9w4scrWOE6bUqijc9Vxa1rjXMeociEH175ct9zty6+r9fz22kbL/bTKQTtca1rrMSaBKALbbbddoAhKfCiFow40hxL8nHPOkbfffjvQThM4l2LEiBHWAKB5hYo//PBDGTx4cFL8mWeeKcccc4xNv/HGG3LQQQclyzBmHNaOgDlinBp22GEHue2222zykUcekXPPPVeLAvFrr70mlZWV9kDd888/P1CGBBRLN910U+iTyIccckgkMxUE5eObb76pyXoxlNw77rhjvXw3w+Xh5uv1888/LzB2RQUoyi6++GJrWA+rA+X6yJEjG8TFDBSQp556qrz77rv1hrbpppvKtddeK3hP6HsAlcaOHSsoc8PVV18tOABew4MPPij9+vXTZCAeNGiQNfxoJuS7bjc1X+Nc+aW6x1dddZXsu+++9hyws88+276PtV/EMGiBgb5HoPjE3xNugAIzncIWnwHI17Dnnnva3x+abs6xbyBwd2/g/bntttsm8YD9HXfckUzD0KAB96rYayzWuEsvvVSHkIwxlqOPPtp+bqDcL0ZwDYnoD0bhVGGFFVYQvOKEfH1HvfTSS3LGGWeEdomdKVhXsD707t07tI5m5vMzrTL9eNy4cYJ1DXMPC7jHMCwde+yx1tgVVsfPw2+U0047LVQmvmcuvPBCGj98aEyTQDMkEP34ZTOEwSmTAAnkRuDAAw+0T+OMGTNG/qyeJSt2qb/EVK7e0ypNP/o4XBmR2wjqWi8yLpfWXbuPTJ7yQl1mhleDdjtUDjvwLHs4+dAjN5MLLz9C7h/7f/LzL9+Zcz/+I088d6f88PPX0n/rTe0P8AzFl1x1/IGPF5SRiKGcbGF2KSBYBafRS8OggHLszoDuHUHPbLB6ayjwob9OvnABs4KRY86mgInBnOxhY+TCrVQL09A+F2hktzHNW6JvFY4OnIBxuC8tgkmgtRlVeVm1ca9mxmYMKItN1zjTY7F5wbVW8oVdCyZdC1lGQLkxfJhnpOy4EnVNPnaKxAyqwK01hhKc5QFjEP7DvhhwqrbbNIw8iAy8EqyqTf84S8SMfEmcuK5BvmmLsz4w3mQAmwg+yTo5XOh7AE9pPvPMM/apVBWHH5swcKy44gr2PaIGHyjncF/AAgH5MIi89tqEZJ6WaawyEWufuLbvNROH1UN5VL6Wabn7PlGZqFNKQceIMbkMkHbLkM4lKBOVgfsD+cjHS/vWem7fbj2Ua1lYDPnI16DykNY+ca1tcc1AAukI4P0CZb0b/vjjDzdpr/F+u//++60SNcrggYoTJ06ULbfcUp588sl6MvKdseKKKwZEwtWMBhg23OCm3aezUceX47Zzr/G0K9btMIMH6kHhhKeSfd/9roxSvsZ9hcIcOwmjwqxZs2S//fazylM9Pyiqbj7z//3vf8suu+wSavBAPxg73Lj98MMPgW7jjNHdLRRonGGi0PzwBDfex0OHDq1n8MBQMY8jjzxSXn31VTtyfK433HDDwCxefPHFQDosMWHChEA2Ps8MCQK+Syr3s+6uMaiNHboasH66bgQrKyu1KBkXco3FeyLM4IHO8b6BwhyGWXcNTQ6sABfYNeeGp59+OvD3sFsW9zrf/FwjlT8GGA/vuece2WuvveTkk09OubvOb+umM/1Mu21xjTHiMw+DfpTBA/Vwj2H02n777WXq1KnIShnwHQkjSZRMuBnDd0XY3wopBbOQBEigyRGor5FsclPkhEiABIpJAE8QwX0Cnrq64bZ/youTb5D3pr0sdz9wlVw9+lT59PNpssrKleaJmfoKi3yOs8uqa8gKnTrLlHdelpn//SBr0Zv3HSgXnX2HPHL3VBlzzUvy6D3T5MqLH5bVVl3TbN3/UxYt/l0uuOCCrOWXWkP8QQ7lJJTbuIYiPzQYvaYxTZgX3EfBeABFp/kX10bvnbB9JK6xe8JYS4yiM/iCBNsGTW07yMLXUjZPcWFAaIsxGcWseZUb8a2Me6uWi815GmYIdS8zR5s2yl7M0RhbWphNSRWmfUvTP+IWVpYRl0kwbU2vZg4YP64TJh6wWUInwMWyMjUrDJ/gK5EHbnZGtebsFPOCRMhMZGYysMzrQgmDH79QDroKauTD6LF4cY11XZFws7LQurdSNwjuewjt4aIDeapYx2h8xbimEzFoNY+Q+IyZN+OSoKyVh+bnEqMPN/iytVz7duv649My3Ev3hfeFKu5UnsZhclUOYxKIS8B3u9KxY8d6TZ999lm7w6NeQUQGfLDjSfNCBt9Y4T917faNp201uPWQBxeCGlK5AIGCKs7fJDAOFSKkGluu/WHXIc4WcRWzqWRCgeYeMJyqbq5lMGRAAZfOOAFF5AsvZP8wTi7jzBe/VPf4q6++qnf4c9iYsdtIg7vbCXkPPPCAFoXGcO2GJ9zd4O5ecPOb47Vv9HDXEuz0cAOMIHhABcF3Oee7yUKdQq6xTzzxBLpIGfA35VlnnZWyTr4Ke/bsGRCFz+4BBxxgXeoFCjJI5JtfKqOHOywYALDLMCrk+zOt/eA3AtbsOIZMbQOj1mGHHVbv/ajlGmNHYLr1Ft8VeBCTgQRIoHkTSO+7o3nz4exJgAQyJHDSSScJnr6A2wb8gTh16gP2j5JOHVeWanPOQcflVjEHgreXS646UvbY+WA56pD67hcy7DK0+qZ9tpMbb79ADj7gdBOfL6cff6107dI9tG6cTLhEWnGFzrbqV19/KhPfeFpati6TIX8fWhQXGXHGmEsdKChVGQrlJa5h/FDFZSJOqO5VhWoP/zZq+LpgzA0BffWSMhPh4e+k7hVGEBNQFQYTpBZDu9/SHCLeoqXd+dEC47E1TH7cgB0dti7+NQYWyDQvyA8My9ZJ5Bt7yBITi9bAYFEB/2RqfLGmFtvWuv0yRhBsGDGerkzAKIzRQq+XxNYggiIb9AKxrbDE6AHjE3IS5ZCRKF3SLM8R7j3eA/gMu09I6XsCT47dd9995p4m+CTubY11N4OhwGCGH9GI4XsfShD4Mkc6LEAuXpkE9/0a1i5TeWEyipHnzgOfNwT9zOVjDioLcn15flm6ch0b2ulYkecGlQlZrjzku2m3Da9JIB2BSZMmBZQbMHj4ShoYV6+88sqAKNSDomfddde1+TNmzJCLLrooIOuKK64oqFIE53dgHPp0svuUP9ZGN7hPrLqKStRxjR577723NT4jH09q4+8uDVOmTEn2BRdPcIkEFzU4F8U1AEAJhqd/3XDJJZcE2KAM/texayJugC91KLjUCIp2//jHPwJP/d9yyy3StWvXSJFwTxUW4BbJD6eccor079/fukOCwef//u//xD2AGE+Ow/VqlJseX1626bvuuqteU7grw5PGOGMDu0+uu+46ef3119O6EKsnKE8Z+eLn32PsbtEApTrOGUCAO6Jdd93V/o2M9xtckmmA+y8YMnHoNtrDRY0G7EaBMbKyslKzArHvOmyTTTaJvRMqIKiJJvQBFJ2eu9MD70M/wBjWrVu35Lqh5XiAzQ2FXmN1jYR7OHxu4KYL74Obb745YCiEwQsu3PwdQu5Y83GNHczrr79+YD3Be3OLLbaQ448/XoYPHx7bnRXGUwh+w4YNs6xgXIB8GATxHQNjFgwsrlEAxla4hYP7OT/k+zOt8m+99dbA2o983Ffs/MBh7/it8NZbb9mxuruQ8F7Azp9UrhD1/XLEEUdYwwqMdPhOhUsr3CcNN954oxx33HFpXeZpfcYkQAJNjwCNHk3vnnJGJNDgBPAjEwF/XOGP16233tqm8QfKs0+/LD9+N1fGT2gnL7zyoDz/8gOy3daD5MR/jLR18vXP+utsKmuZQ8x//HmOdF65m4y56yK55J93GWVduOI1k35vuuN888dad+PWavOAT+FMZJRaXVVIqrISSkpVYGKsNg23U0YND4NEQv+eUMIn52K08ZGqa1M1WabNjPED9o+E0ytjqCgz7qlgBDG7GhJ7HOorapN9hV2YDhJqY/ybuEK1ZL9eG+Qnjtv0CrJOYmLYzQLJ6N88DW9YYedJOSwwLgPbR9TIbKH5R80ceM/iGnwTzMxFwQLuNRSKOMAcQd8buFZFlj4ZiDwNWg87ANRg9vPPP8m0aR8Yo0elqQaXSglDGvrQ+to+HzFkFkJuPsYWJiPMeJDP8fuy3M80xhPGy6+Dem6eLxPlGqLKovK1HWMSiCIABaer1Ee93XffvV71hx56KKBcgdscuEByzzbYYIMNZLvttrNKIlWYQBEEY4PrPgs7JfxDbOt1mCYDCm9VykF5qP25Ckh3ZwfEoY6eVeIaR1CGw1k14FwlPfPCPRQa5WrY8M+AgEFDy1APCiZdq5FG8J9sRh6UaZkGXw4MNq5CC8quKMNGVF94iMZ3aQUf8fBbrwHXeOIfCrXx48fbbDDFE+TYhVGogEPUoZh1A1zx4AlnDTis995777V/E8MAUOyQb37uPYYvflWuQhmNACMGFMMaDjNPbsPtmuu2Bu9xGD3QHgpkPFChAYzw+yEs4NwaN7hGFze/uV77Bzi7a0kqo4fvUs8/GySfa2zUvcF7YMCAAclirKE33HCDYFcelPgaYEAMMzRqeT5iPKgDQzo+x/r+VrmjR4+2O5rwvoVRF+/jdKEQ/LDmuWugOwYY+EeNGpU8Cwpld955Z6jRA2X5/ExDHozQWAfdAGMW8mAI1oD7DaPEwQcfnDRWoE4qg4e2xdlWMHpowPcizkKCYcq9ZxjL2muvrdUYkwAJNDMC0MowkAAJkEBBCOBpEjV4oAM87Tj8kP3l9HOOkOdefEQmTXxbdt5pkIwzxo/t9+wsZ1ywn9x53+Xy9PN3ycefvi8fz3xPZsx8V6ZOmyzvTZ1kr3/86VtZXGN8EcUIO+9wgEyb/qb8bcDfjbK2Wh57+vYYrVJXOfOC/aVNu1ppv0zbjNxopJZanFIoLtUljavE9HuHghLKWLxSKSvVduG3zyZt7QTaEMaBAir1tZtCxfnkUn+MhZWO/nDP8bTYjBnT63efYQ7eb3hKO6HcDxrSMhTF6jkScD/zuMfuZxtl+tJu3HLk+W20HmMSyJXAO++8Yw+exs4EfeFwVvgix64GNRhoP/vvv79eJmM9I0AzsIPDNXhoPg6adQ9ARr5vfMCOEBzWncvLdRXj7mpQBSQMx6qAdJV8eOoaQevZhPnHf+pa88NiKOn8Q6+hCPWVY/pEfpiMUsvD94gb4OLGnw/KW7ZsKeedd55bVWbOnBlI5zuhDwioXBio8L71A74HTz/9dD+7KOli8oOyHIcR+8E/rN01APq7ieB+LezhCsj0XeXgDACGIAHXqIhzfjRgbUOA8VeDurzyjR6+m6x8rrHatxtvtdVW4q6FWoaHcGD0cAOMmu7fNG5ZPq+hRMfZT74BSPuAkQYK9muuuSagZNdyNy40P7cvXGN3G4zv2K2iAcbPqM+V1gmLs/lMwxWZG2DchBHJNXhoOcrAEkYk7ORxDcZax4/RBmeJ+gHfdb4hFEYPBhIggeZLgDs9mu+958xJoEEJmN9+0q378nLrHVfLrXK13HP3A/KU+cNy3PgHzNb4X+xT8diVUVVdZQwWVVLeosIaO6pNGj8cOy6/kvTtbZ7oO/h8c3bHyqFz6blmb9lr10PtLo9zTrlRVl657knJ0AZpMsc+afyCli+QKuP658gjG+aHa5ohpix2lZq4TiiiE018BacKUuODVXgWcHsBdgCgLzMs45ZKjS2lafnQH1pRzJRdY47hHmTmzE8DU8B8Mfe62H1uYokLLnsP6wwzMHrATRZctahve+XmcsS1pt1Y6+pAtB5i9/2L8rA8bdcU4zBOPi/l4s7fr6NMUcctQ76bdmXwmgTySQCKGLzihMsvvzxU2a0GBMiAwq9Pnz6R4nz//4VWiLi+8fH0KXZPuApGHCyuT69jLNh14vpqh3LHP1Q3cnKmAMaisIAHUZQT3G4ttdRSYdVKMs/dKYIBhhkVdOC4/3jpXFWpq+X5jv3zZmCU87+ftE88EY7767oy07JCxsXkB4Vl2PxhiJs/f35ymnCpowHKZdeVEAydkydPlgEDBmgVG+NeunMBy27dugXqMJHYGabvf5xrgO9zPMyiBuSNN944uRtKPx/umgSGvtFD5aGsEGss3ElFBewOc98fqIe5dOrUKapJ3vLR94QJE+wuCd+FonYCt3rwboDzaMAmLBSaX1if+BzCKOO6/MPnJ2qMYTKQl81n2j8vCztiwh5E0D7xfeS6wNP8qHjLLbeMdFvoPmiA9r/++muUGOaTAAk0AwI0ejSDm8wpkkBjIDD84CGCFwL+OMcP/5rFZdKmVQdp3bK9LFog8teftTLv9yr58suvZcLkZ8xukX/JfodsJEcdeoHsN+jo0Gn23XiAvP3eq9aV1lGHBJ/+C20QkTl+0pMyccpjUtGqRs44+QxpLE+WuQpNTA1KTFVkQiHtpiOmXlcHNog6fXZU9ezzzYHiZnhLOnEV6tmLLGRLsAPfphbwFBj88KorK50fnrbbfPPNraKsvNwYIc1h5gjgoO8lnOExZ843AS74YYoDB4cNG27O9bA32JaDnbbDDzN9X2p/yAvyTbTFuMIUKtoObXxZWtaU4iCb8Jm5dcKYaHlYWbhE5pJAwxDATlEcTB1mzMCa5SpC4SIKrnSigr7vtdxtizycEZBKOaPtUsWuocN3fQIFjGtowbqqQfPdp7PVlZXWSRe78ty6hx56qJtsVNeuwhADhx/4VME9Q8pvm6pdNmW+0cNV5ofJq6ysLLrRw2dQSH44YyUswICBV1TAU97uThgokf36OBPFDXvssYeb5PUSAv7OMJzP5hpSsRtJDYOqnPZ3l7lng+R7jQ27Uf6Y/ToYr6u8x+euGEYPjAO7JrB7CQeZw7Bx00031dvZAePSbrvtZt3p+a6UCskPf2PjswI2+P7AbkHkYXcG1iLfmIWyTI0e2Xym/R2UYTvz/HucSdr9jvXbpfqN4NdlmgRIoOkToNGj6d9jzpAEGh0BKOBc/9XBCZTLeputJdvucoqcc+7JcuVVl8vom86RRQv/koP2PyVYdUnq2CMukV9/+8koXLNb8qZ//I589uV7stIqy8nAgQPtH7WhHZVQpip13FgVm1A0IyCNcs0voeGX/FCUnfIt+QFnMED4J8cTlok51jXED2A8zQZlYEKhlDBMuQxgLLniisutOzltiR97OFRw//0PMD8c6z6DMF7MnTvXynJ/oPz55zz7vkQe3qt18hNPKuKwRg1ahvHgR6n73tY6TSnGfP3Pq6Y1xnxdDm6+ywKyVB7q+Gm3Lq9JoKEJnHDCCaEGD4zLVeYhDeUTfITHDb6bJxx+ns/gPzENo4draMGZF1AIYbeLKiBdJTWU5HEDdoX4h7zHbVvK9ZSLjjGT+wslXyGDa6BCP+kUsbka1LKZSzH5wYVcNgGHnrtGj+eee84qb2Hw1KBntWgau6QY6hPw1xx8Btw1B4ZY/M7COvPpp4ldva67MUh0jR75XmPrj1jEP4vEr6O7hTUf63yvXr00WZQYZ/Ng7cEZNTgjCYdku1yxkw/nTMAI4f7tVQh++FsYOx/vuOOO0LmDD175CNl8pn23gr7xP9dxNcQ6muuY2Z4ESKBhCCQ0Fg3TN3slARIggawIGP2ctOtQJh1XbiFXjDrH/Eg6Q554/jYZfnR/eeq5u+WPef+rJ3f55bL7Efbfz/8jI687Xn6f/5X1qR3mp7heZyWS4So0oUD2lZr4gxzKYvcP8/Ch4wn7JS8TGVW0SZpzVew3iJGB7R/ZbHgwh5bbhuY0c6PKNdcJY0z4GEorV1kGR4U5GChL5lVjksCSQJMVoMS9wYHvOPHd/G+OCF8iL9hzrinMBwExDBR4Ujqx0wNzSrzgDgE/SvGeQXW8b/DCe0vfQzgoeKml2ibLIA9l2AHy22+/Jt+D6Ov999+3RkS4NIAvZ5z/g9dOO+1ozhOZ4Rk8xPohhjKyX78trL96tw38f+scdCzooykFnR9i5Yq56sstx7zd+4K0tkPsGkVQpmm/DcoYSKDQBIYNGyZfffVV4HXZZZcFuoViBwbUsIBzHHIJMJgWMrjKQ/TjKiCheMT49SB1KKfdA1hRvzIDo0f0AyOQ1HhDLvfYP+w93xT896W/SzLf/fny4hw2X0x+yy23nD/EWGkY7A466KBAXSiWNeDvEtfogSfZ8/30uPbV2GNfwQwXo+rGCnMDO10roLTHe9g1euBewAWehlzeP5CRjzXWPScJMnMdE2RkGzAfuLHD+TKDBg0KiMHf0P45P7mO1eeHNQbGlyiDR2BAeUhk85n25zxv3rw8jIQiSIAESCBzAnWPXGbeli1IgARIoCQIXHTx+bLuemvL5SOuloefuFHuvH+k9Ou7o3Tt0kPWX6ev9Fp/i6zG+f6Hr8uoG06RXr17WmXv9ddfn5WcYjdyFaKqzMQYoBzVMk2nH1ud0rvWmDdsu9oFUmvOW6kpQ7qlUYkbRRSqRQVTllCpByvUGuNAWZl5kt9kV1sLilGQI2HGWarBVRgnFMR1zw7UmnNJDBgpr1ks5bU1UmOMAQkwCWOOtYVkMLEaWBbAHPcNlBabfyuMgcESyx8jzAkvBMRwH4H3jWs8gKGjV6+NzBPErWw93FG3HPXBY7XVutqdINgt0qpVq6Qc/JiePn2G+aG9avI9iDZ4whoKmwozLx3Dkg5Coz/+cA2adeyhJHTHE9q4kWaCS9jc3DzUcfnhXmhw8/UabbUNrvWlbRiTQEMTwJkNI0aMSBoAoJh74oknQg849Z8AxtixKzNu2HDDDeNWzape2FPX+uQ9/MUjqLsRPHkNBaUbsBMkbshGORVXdr7q6TqUiTwot90nqmH0dpWyqWT5/FPVzabMVzAXW7nncokafzH5hR1UHDUuPx8Hmv/rX/9KZsOVkLpl811y7bnnnsl6vAgS8N/zcHHkGj1Q7roHgksk102b76KtFNZYXTN1pv4YNb+YMc6huO6666y7Otf1Flw7wU2ihnzzw9/pMLi4YYcddhDsfEJfMPRiJwjuK743YYjJJWTzme7Zs2dgzcaDDZtttlkuw2BbEiABEsiKAI0eWWFjIxIggVIjgB9Ku+++uzzx2Isy5d9vy+uTx8ukKc9Ku3bLSoell5Htth4km2/yN1mjcp1YQ3/w0dHywqsPSGX3LtK58yqCw+tcJWMsIQ1YCUoFX5GJPFcZmu3wqlsYQ0dNS2m7EPr4MvnLWCoWGyV4nZo1KNkq7INZNoVdC+XGEtDCyCivNbsHjNGg2gjBoeal9uWkCmIM3OeanJq1Q1Qbw021MQiJtDJzK7c7M2ql2tgUEsaKZO26C2vpqUvqFUwltcaIAsOSsXagY+SY/0wfllB+DB+Yjyqhqqqq7I8j5KnhA2V4Ygu7OLQujCBuwPsK9ZZfvqP07LmO3VKPH1xwswI5OLx03LhxZifHNjYPchhSE9B7glp6HcbNL9M6mq8x5GgZrhGQ9vMSJfyXBBqWAJ5sPfHEE63hQ0cyatQo+1St774J72EYLj788EOtatv5OyyShUW+8F2DQAH5+eef21F0797dxt26dbMxFNi+SxJ9IttWSPOPvzanqV6UYt84AaOOzjvuALATxlXyDRkyRHbZZZe4zQtazzd6QNGY74Dv0bDg7woKq4O8YvLL5e9M/J3hHliNA98/+OAD2WijjWTSpEmB6dG1VQBHIOEbPbC7TM9YgLswrKHu+xbrjmv08M/XaOg1FmeSvPvuu4E5+mMMFBY5ASO7a/SA61Y35Jvf448/7oqXq6++OvSBAFSCsStXo0c2n2l/jZ84caLsu+++gXEzQQIkQALFIBCloypG3+yDBEiABPJKAE/cDD1okNwwZqS8N/UtOfusi2TwHgfIvPlz5dGnb5WTztlT9j2kt4wYday8+OojMnvOrED/n38xXR4Ye70MPWJTef2tp2TBot9ljz13k2uvvbZBt1EHBhkjoUpM/EhWhSfysvmjNdCdVc4bt1ZWEQ+lt9nNULbIKE1hvoBSP/y/FsagYcwbS14tTGz+MzKwk8FIMC0TuwzKzO6IFibPiCupAIauwgEslauO3Q7YHMTewlg7agyMRS1rZHGZMU6YydRg14epgD0a4S9lg7juP+yhKW9hdlyY9ubSYreEzXgKETBH+ODFD19c6zzxvll66aWtKwQ33x8D6kNRudFGG1rXWAk3WBhrQrH+5ptv1jtQETLQLh+h7p5ES0Md9xVds35JHPn1W+WWk2qsWqY9gKOyRBncH+gLabdM07i3bjuVxZgESoEAFNtws6IBxgBf2aNl/sGx+N7G+7wUAhSM7rkEMHrg/A6EyspKG3dbYvRAwneN0rVrV1unsf7jzg1z8H29x5mXr0DDztti76iIGqf7xDzqPProo1FVbX6cnRn++QZRbV577bWUfWlhKfPTMWp84IEH6qWNlefzzz+fzMe6AEMIQzgB3+CLQ8phQEJQV3ru+xafSdeA5hpEtIeGXGNxXpwbsIsi5980rsAcr30Xc2HG53zyc3ftYOi+iy13Oi+//LKbLNq17l7UDp999ll55513NMmYBEiABIpGoNQepi3axNkRCZBA0yZQYR6OP+HkQ+0kL77sbHngvsfk15+qZNzLY2XmZx/Kl998Kpebszqqq6tkqbZLS1X1Imndqo01buCHwH4H7CXYPRL2h39jIBelyFTFZyZzUAUpvDfV1FQZ901G6V9WJQvaVEmF2cIAo4bR9y8546O+ZOxwgO4pseMDCu6EIsqeU2EMKVVmR8Qio9ivLYeBoMoo91sZRT92gNSXVcwczFuVZv4PGDWC2HktUaxhuOXGmLPYKPlrjbGjwrj/WmTALFMOxbLOuv4Mas3cYcxI8KkrR3qRMTZw6IoAADfPSURBVD7gDJUqcCmrkAojv7YW5pD8Bb2/8On86quv2rNrdN76funTp4/ZxbH8kgPM6/et9cCpX78tjZ/tF6zCHZ+vFsYVGgLcXcF1C55AhHw8/QtFDFhqfypZ5Wk6XYyxoU3dfUncO+Thh3Eu8mE4cGVkOrZ0Y3fL3XHi2u1Lr7WOlmu+KwfXuBdqpNI66dr4MpgmgYYk0L59ezniiCOs+xAdxzXXXGMVPL6/8MGDB9vDY7Xegw8+aA0mp512Wl78yavcbGMYN/RA7WnTpiXFqOsqdzeH+1QulLu+AjzZuJFc6Bx1uFdccYXstttuAUOQlkXFOPsJLFQxC6MRDhO+4YYbxN9JEyWjUPm+ezTsOHrppZcE7mb8gHHjAYB0wTcU3XvvvQJjgOvbH2ccjB49Op0oW17K/PwJ4L1x1llnJbPh7gp/j7s7oPB593d8JRvwwj6o4n5ecFi5rj9qRMW5HhrcNQd5bpnWaag1Fju8/Pf50KFDdVgFi//5z39awxp2caRyGwiDJD6fbgg7ayaf/Pzvv19//dW6tXLHgOu7777b/t3t5xcjPWDAgMCajT6PP/54+32++eabF2MI7IMESIAELAEaPfhGIAESaPIE2rQrk0OP+rud5xFH7y9zf6uRRQvE+DqdI9NnfGQNH+2Wbi2dV11e1tuoq3Rdve6HQJOHk2aCqiRdd911Zd6f84wSFmdwJHYsLKxYKK0XGW4LF8t3i+cZhbxxcrXEAJAUa9NwfWX2epSXGT+z5pDrJUrwMmMQgCFlsXHVVNG+o7luad1dLUabBrR4YA46byiLVWGsc1JFMtJ4cksVG5hlGdqaQ97NBg3p8ecC+a16oVQZI1G1MejAEFI/1EqFUU7DINDCPA2snq5gFqo2nBYYXrKsMTYYxb3dL2KMHmCG3RP5DJgTlOQ4UBgvN4AFDBSpDoN17/sGG/SS++67L/QpPChswBP18Z6CYhLXvvLCleeOJeoaY0Mbla33DXlqCHHbZiIfsiCj0E8VYkzuuNCvG7QMsc7Pr6P1kY96aqzRetpO6zEmgVIngPUIPtM1QPGJJ78POOAAzbLxFltsYRWjDz/8cDL/9ttvt2sMDCdYb/D0M5RF2CGAHW1wMdW/f38phgIGikZ1z/LGG28kx6gGAewEUSUl3IBo8JVncBvoKijnzJmjVW2MXSSTJ09O5mHNhdE6XYCi3nfJgjbozw1wM+PK1zL4avcVcVq23nrr6aWNYbjAmRy4L/gO7dSpk+0HY8f9hYsj3Bc3gA8Otz/ppJOS2TAe4Ilv7AjC/YeiFrsS4U4R50jh/sIgjvJCBhjycQC3exYF5nb66acbl45b2/lB4YxdGTfffHOsofg7M6BYhTuvo48+2n4X49ysm266KWAIUMFjxoyxB3zjvqsLoHzyw/t4wQLzR3REwHkD7vdlqvdGmAgYO3HPcJ6HhpNPPlkvbax/dwUymQgQwENbursDRjgNavRwz5lwy1EvzOhR6DUWu1HwOcHfgzjvDWPHuB555BEduo2hTE+1syFQOcsEXL3i71i8ELbbbju7xuChOHCFZwGMFWsQvmfUGKvd4TwLP+STH9ZU/T5BP8cee6xcfPHFxr1sT/nrr79kxowZ8sILL9ix+eO4//777U5DrA19+/YVfN4K8ZnG++vss8+Wc889NzkErO8wYMKwifUJu0HwHYUxw4iL7zO8jjrqKLu7PNmQFyRAAiSQAwGjnzG/ihlIgARIgARIIIQAviLwpDvi8hZGKW+UqdUtjJLa6O+rjWur8gVmS41Rx9dWG4NIeasQCWaHg9m1Yfc54OvGKO9VAWt3OBgtf60xhog5H0SWhtK/QuDNqdwcbN0QAfNUJbm/u0PH435t1phDy1ssMdDYaRoWMObU1JjdKlWLTGqeMRIZgwYMIirAiYEEu1rABYxseklF8JFq406stXHvYhiVG8OJ1JTLYmNRwTko+C8fQeeDeftKcaTD8v1+VQbycY2X3meNNR91kOfWcRUkyM8moB3k6HgRQ4nmytOxaP9x+tH2eD9AceSONU77TOpoX2ijY8W1zsnPR323HsrdoO1S1XHr85oEikEACmkoWzTAsHHJJZdosl586aWXym233ZbMx+dwypQp9Q6yhiK4X79+9RRQyYYhF8cdd5xVTocU5TULuxugpPYDdr/pd81ee+0lU6dODVTZZ599rL92zYRicNNNN9VkrBgyofxPFdCPa0xJVTes7M4775Ttt98+rMjmQSkH9yZxQtT7Aevd8OHDxTUKpZOHXRhPP/10umo5l3/zzTf1DDVxhT700ENWoerXx1xhKEkV8FmAQQ+GBj9glxOerNaQL37bbrttRk+P47ObqZEC53ikOqgcOxf8s2J0nowTBLAT6pVXXqmHwz3/AQZfKKL98OSTT0rv3r39bMnnGnvGGWeIa6Su11lIBgzDmFOhd+HDyAjDbDZh5MiRkYbWfPEbP368HHLIIbGGh3nACKI7fdxGY8eOtd8nhfpMYwc5dri45225/Udd33HHHYIdNm7Ageyu0RuGUDft1sXOILzPNVx11VU8T0RhMCaBZkiAOz2a4U3nlEmABEggLgEoS/HUlSpjTdLsyzDqdqOjrzBulqSVUV6bRFnrDkYRH26ogAo7qZ5PXiRGoOpts8nDyFmiwPXqxB1rNvVUaYxY5wildiolMcpQN6FQhuukhKIf+djFUmaMIKaG1LaGkaiDeSXO6ch0WnZsFp5paRsbvsZTVGKfTTazDW+jc42adzZKflXihfVoOeGNFBF0PBHFkdnaTseL7f5QaH711VdOGwDVd52TnfISYy2zh6vihxR+dOcj6HvO5aFz8OXrnPz8sPr6PrbvnxScfVmFTuPHrwZ/Z4/mMyaBMAKHHnpowOgB5Q2UNb7v/2WXXda66BsxYkRsRfcXX3wR1mXe88KenIZvfXet7NGjRz2jR7du3XIei64JOQtKISBdH+eff749qyRMweqLDa7ZdaVY72655Rb7wpktcYIe3hynbi518PT8PffcI8ccc0xKoxsO6cbunueeey5td2AGH/j+U+RuwwsuuCCtYUTrNxS/dO8NHZ8b47wO7HLSs2/cMihRafBwiYRfY1dCWHANBngvhn0m/TNBVE5DrrF77LGHnHPOOaG7UHR8+YrDmMSRDUNTqp1l+eKHnScwDvtutcLGeOqpp8oJJ5wQavQIqx8nL+5nGn/rYbfMqFGjrKutOLJRx9/BGLcd65EACZBAGIFwDVVYTeaRAAmQAAk0WwL4sZxUsC4xENSYHQ0wVCDYsoRuOKGgd66t3lXTHkFk2y8icwFTgQ1LIq9qQZIYN4wX+gd8YJ5ej6ijLxQpD8RQSqOsZjF4IG1eyDdWChxPns2UrHzsIkk2TlwU6otb5+NNOzKpLBC7wVfQaz2tk2k/2i5VrH24Me4rnijHj9d8vKBo9eeaakypyvIlx+/DlYv7ANaF4O33myqt9wR13OtUbVjWtAn4Ckv3nIKwmUNJ57uzgvI7LMC4AOMkXOfhCdd0RspiHYYdZvRYa621AlOorKwMpJEIy6tXqRFkQImKp5NPPPHEtG5L4HosKuC9gqd7sdsDOwHCuPptUxkN/Lq5pAcMGGBdyuD8DD9gRwaU9dgRk+49qW3h4mrChAmhuyQgD+fbgEG6XTwqD3Ep83PHiWu4DAsLe++9d1g28zwCUZ8NN1/d63lNU56Tg/b5WGPTrfsYE97n+DxhPUef7tj9MeczDddLcKsFd3LueUtRfcAAj88qDJXpQr74weB5/fXXR44P33+6YyfumpNu7NmUd+jQQS666CJ56qmnBGsk7mm6AHdXfkjlYtevG+e95bdhmgRIoOkSoHurpntvOTMSIAESKAgBKJMRVJmqcUE6K7BQuO5yFcOp5qIKW1Usa12k3WtV+mtegafQYOKVAwYQNle3HHU0rXyQl6+gsl15cAMD38FwH1MXYKAJGmnqyqKuYGwqk4033ljgCxk+43MJOlaNwS6MX6Z9qDy0gzxNI85XH5mOCfXRf2JXVNJ6V1AXYdmMkW2aNgGcQwF3JYix4wjKEyheYEyhcqRh7j3WZ7iEwvkb+E7AE8G4FzgfAweTZ/I9gfMlZs+ebd0Z4hr3F4e/4/421CHw+NsCO1ZgeMcT93qOAmjjrA/3nIIo91bunYES8Msvv7R+7zGnSmMgUyUgdjXCsIOzwdwXmMb5bilFfjp3+PnHWQhquMLnFm7YuFtQCZVGnM0ai7UY9xcun9B+4cKF9qwY/L0AwwCMDQ2prHfJYp3COSP6WcPfNTiLCOdW5GONyYafjg9jwUM52B2BcWIdxdrnntkCQzLq4dwlPHSAGGtFQ32OcN+xPuKhA7wPMCZd/8E1k/VfOTAmARIggSgCdG8VRYb5JEACJEAC9QiowQMFcX5M1xNQAhn4wx8vBPxhHTUPreOX6x/jKsctTyWvBKae8xCUSTpBYfXAyWWVTkac8rB+0A75eK/ifuj9iiMvrA5kwQUNxh7VX1g7P89vqyw09uvHTatcd3zI03zIybWPuGPx6+kYmvrnwp8306VFAE+awq0QQ+kQwM6PKBc6mY4Syn+4BsOrVAK+M3BIL175CFAI+ofaq1zs9Mhkt4e207gU+enYrrzyyqTBA3k4x6ChFLU6Jsb1CWSzxuI+wogV58n/+j0WNwcHl+MV5TIs19Fkw0/7xN93MBTgFRVgBCmlAENRr169SmlIHAsJkEATJkCjRxO+uZwaCZAACeSDgCpQEeOP64ZSoOY6F9dgA1lx5uLOHW2QVgWutm/sXDCvVAHzQ1AWuMbcUxkTUK7tcF2IECVfx4kfVRdeeKF98i2X/vU+4wevPlmbjTxlkk8eOleMx5WLfDedzXhzaaPjwhgachy5zIFtSYAESIAEGoYAnv6G6x6cB6ABT/3HPbxZ2zAmARIgARIgARJo3gRo9Gje95+zJwESIIGUBFR5iUqplNwphZRAIQwemAuCGi00HTU8nXuY4lbballTV+y68wWvOPONUyeKfZx8yHfvkbZBPl54MrZ///6Bg4K1Tiax9oE4189AIZioTLzHca0x5qhlmcw3l7pu37myymUcbEsCJEACJND4CODgcvj+h/svuOxxAw6xztW9pCuP1yRAAiRAAiRAAk2fAI0eTf8ec4YkQAIkkBEBVXBrrIpTjTU/I6ENWFkNHhi/vjIdDtrpvLOVkWmfpVQfc9bgXmteQ8XufXHHoAp33DO9b255ptd6z0tp7piDjgdz1Gsda6ZzzKW+MnbHkIs8tiUBEiABEmj6BODTf+TIkfZ8l08//VS+++670EnjwPahQ4eGljGTBEiABEiABEiABKII0OgRRYb5JEACJNCMCKjSFLH7tHaYAlUVm8XGo4pV9Bs2Bi1HGa7duagS3G3nXofNBeUqC0zCZIS1a+x5LkfMJR2nhp5vqvGlKgsbt84dMdpm2t6VqbI0LxdZKgOxLxd5rmz3GmUa3HZRdbRuJnGh5GYyBtYlARIgARJofARw4LvrwipsBjB4XHHFFYHvubB6zCMBEiABEiABEiABnwCNHj4RpkmABEigmRKAYh8BClF9lQoKKFZd5aqO0x0fxow67s4OPYDaredeuzJ9RbCb1ms1fLgymuo12Oi8G3KOqe5RPsal8t356n1289L1pXJQT68LwU9laz/ah8Zh43Tb+O3C6qfL8+Whfqr+08ljOQmQAAmQQPMjgHM6osI222wjgwcPlr322iuqCvNJgARIgARIgARIICUBGj1S4mEhCZAACTRdAlBcqqLSVWKqwrchZ+6PDWndbYExu+PGtY5fDTcwdkQFla0yUQ9zVhkqW9v7ac1vSrHOHXNSPg09P3dMGEs+74Mv252r+35CfjY83Db5GreO2ZWHazftzkOvtV0+xqSy0vWpfTMmARIgARIIEthoo42kqqoqmdmxY8fkdXO7qKhIqCJWWWUV6dq1q1RWVsq2225rz+Nq3759c8PB+ZIACZAACZAACeSZQJn5AZs42TXPgimOBEiABEigNAm4y74aCVSJGUeJWsxZYazuGP3x6VwQ6zUMGDofd6xajjJcw62CGke0DzX4hLV3ZTW1a2WDeeHa51zs+brjQd+FuB9hfSDPzc+Eg76HXFaZtHfb+dfumPyyKDYYj7ZzxxFV35eraZWhacSZynDb8poESIAESIAElAC+Y/idojQYkwAJkAAJkAAJ5JMAjR75pElZJEACJFDiBPDjUpWYGkcZCRpyKjpOxPgxrMYIf0y+ojmqnspDe5035KrhA+1Ulv741tjvk+nCEdB7gx7S8Xfr6ojitElVJ0xmnLGgjt82VT863rixKzuuXLTRdtpG40z6hQy3nXsdVw7rkQAJkAAJkAAJkAAJkAAJkAAJkEAxCdDoUUza7IsESIAEGpCArwQtVeUlxgkDBManL8WmCljEGnAdZexw66Ce1tVrlPsc/D5VBuP8E8B90KD3AXl6rWVhsbbV+unaoJ5f15eBfiBH8zXt9++WR9Xx2+SS1nGnkuGOKR2LVHK0zJWHvHzIVNmMSYAESIAESIAESIAESIAESIAESKCQBHimRyHpUjYJkAAJlAgBKDD1VarKS1WyItYxauxi1HkgD8aOsDoo03pajlj7wDVe2Omh14gZGp5AnPug9zHuaLV+mGwtU1luOqy+Xy9VHa2baxy3D4wddTXOtt+4DLKVz3YkQAIkQAIkQAIkQAIkQAIkQAIkUEgC3OlRSLqUTQIkQAINTADKS1+BmQ+laL6mpWPTcWJsMGRovip7Na0x8rUsbCwqL6y+urHSdqkMJ1qnoWJ3/A01hnz3q3Py5aa6n27dsPZRbcPq+rLc95LWj5KnbbWeptPV13qFiPM9FldeQ86rEKwokwSaG4Hff/9dZs2aJT///LP89ttv0r17d+nTp09zw1CU+b711lsye/ZswcHknTp1kjXXXFNat25dlL7ZCQk0VQJcw4p3Z7mGFY81eyIBEigeAe70KB5r9kQCJEACRSUA5aW6iULH6gIK+aWgzMQ4XAVr1Pi0jsZaLwqm1sMc8ULazfPba51SYKJz8ses+Y091vvgzkP5u3lR19oeMdpF3TOtBzl+XS3TfK2jffoytb6Wa+zX0/xsY7+fOPK1jcb+ezuTsagMtInTdyayWZcESKB4BPBZHjdunDzyyCMyfvz4QMcnnXQSjR4BIvlLXHfddfLGG28EBA4ePFiGDRsmvXv3DuQzQQIkEE2Aa1g0m0KWcA0rJF3KJgESaCgCNHo0FHn2SwIkQAIFIqDKS8RQgvoKTD9doGGkFIux6Qvj0ZffCHXUcBNVx22Dujpv5Gsb7cstc9uhXkMEjCcsIF/HHlbe1PJS8VcW7pwzYYPPAGToK6ptqjFo33HqaN04McaE4M4xbh/aFu3jtkFdN7gykJ+tHFcmr0mABBqOwJw5c+Tss8+WiRMnhg5ilVVWCc1vSpkfffSRTJ8+PTmlgQMH2t0XyYwCXay66qr1JD/++OOC1/Dhw+XMM8+Udu3a1avDDBIggToCXMPEGqt/+uknC6VVq1ay++67S0VF4dV2XMPq3oe8IgESaDoECr96Nh1WnAkJkAAJNCoCuTz1XciJuopWNcq4edq35mkdzY+KUR9KW7z0WmPNj2rb0PkYpzvWUr13uXKKq1QHCzdoOm57t562hTz3feDydvvyr11ZflkuaXdc2dzvVOOCbFd+qrqYQ7ryXObJtiRAAsUhAGUhlGO//PJLZIcrr7xyaNmff/4pixYtSpZB0ZZKQT9v3jypqqqy9du0aSNt27ZNtm3oiwkTJsjVV1+dHMZVV10l++67bzJdqIvOnTtHir7nnntk5syZcvfdd5cUq8gBs4AEGoAA17AE9Ntuuy2wa2yjjTaSysrKgt8RrmEFR8wOSIAEGoAAjR4NAJ1dkgAJkEChCZSqElPP01BDhipn3fG6eW5+OmZhdVXxG1aWTl6xyzFGfRW771LqT++ZjgnpXO6ftlcZSIflabn2W6gYfbsh3/3q/FxDit+n9u/2rUy0jDEJkEDjIQC/9/vvv389g8dqq60mu+66q3WvBMXZSiutFDqpvn37CgwfGtZYYw37tLG7RmgZ+urVq5cm5ayzzpKjjz46mW6uFyeffLLstdde8uGHH8p7771nd3i4TN9880057rjj5Pbbb8/pO6258uW8mzYBrmENf3+5hjX8PeAISIAE8k+ARo/8M6VEEiABEmhQAmFKioYckKtwxdjc8bnXbj1XYZvN2FWuxtnIKHQbNQChH4yzlMeaCQvcR33pvHKZW9h7wX2vKD93jG452ut4NF/H5bZx3ai5+blea58qR1kgX6+1LCzOpJ6295nF6SdOHZXPmARIoLQIXHvttfL1118HBtWvXz/BE8NLL710ID8s4SrnUY7Dz99++23ZbLPN6lWvrq4O5HHtSOAABxiL8Bo0aJAceuihMmTIEPnuu++SvF555RV55plnZI899kjm8YIESECEa1jDvwu4hjX8PeAISIAE8k+gRf5FUiIJkAAJkAAJJM4piKPYh1LXr9fU+S1evDjpfqgpKYz0XiJGwNxymV9YW5XtvkfcPPca7f10rmNy+83mGuPBK2xurjyt5+ZFXbt108mNksF8EiCBxkng448/lrvuuisweOzugCulOAaPQEMncf/99zspXmZKAMaPp556StZcc81A0wsvvDCwqyZQyAQJNEMCXMNK86ZzDSvN+8JRkQAJZEaARo/MeLE2CZAACZBADAKqhEWMEKWIhbFD66aqZ4U0kX90RwGexlcFfBSfxjRl915jPjq/TOeQion2obEr230fab6+v5AOkxvWRtvmGuciW9siThVQrgZDnV+q+iwjARJoegQefPDBwKTg0ur666+X1q1bB/IzTUBh//PPP2fajPUdAnAndu+99zo5Yl2QvfTSS4E8JkigORPgGla6d59rWOneG46MBEggHgEaPeJxYi0SIAESIIEYBFQJixhK2PLy8noGD5RpPYgMq6d1EDeFoPPVHR5qEMDcm0Jw7xPmpvPL19yUH2Lty2Xn5vt9ho3Flaf1w+ppWSZx2FgwVv+lMrW+G6NM62s9N3bHr+N2ebh1eU0CJNB0CSxcuFAeffTRwAQPP/xwqajIjwfjxx9/PCCbicwJ4HDg3XbbLdDwiSeeCKSZIIHmSoBrWOnfea5hpX+POEISIIFoAvn5izhaPktIgARIgASaAQFfYQtFrBtQrkHrplLqhtVFXmNS7OIJfHDQ3QYYuyqodX5NJc7kvuh7IU4brav3Hmlt55ehjuZpnVTvQ62jshE3VHDnpWNwx4c8nZvW9eem7RiTAAk0HwLvvPNOPVdJOEw7X+HOO++Uww47zD7AkKtMnAWCc0c+/fRTu56ttdZasvrqq2dloFm0aJH897//tbLatWsnq666qqy77rrJ74dsxoq19dtvv7Vy//e//0m3bt2kR48eObkI03EMGzZMnn32WU3KxIkTBQc3L7PMMsk8XpBAcyTQmNawv/76Sz7//HP7wmcXa9gqq6yS1bozb948mTFjhsyePVuWX355exYQdunlErDGfvHFF/LZZ5/ZNbZ79+5SWVkprVq1ykWsbcs1LGeEFEACJNBABGj0aCDw7JYESIAEmhIBKGh9Ja07P7fMvXbruNdaR2O3rLFcq1Ja48Yy7kKPM5N76tf10/5Ycy335WWTTjcGXybqx2mjdTT25TBNAiTQ/AhAaeYGKKZyVaTjDAoYFBBwCPe///1v2Xrrrd1uMrr+4Ycf5JxzzhEc4h0WBgwYIJdffrlVHoaVu3m//PKLnHbaaTJ+/Hg3216vs8469jDkegVpMmB8uPjii+vtmNFm8Gs/cuRI2XzzzTUr43jTTTe1Z3soVwiA8adv374Zy2IDEmhKBBrDGjZ16lQ5++yzBWeP+AFG13333VfOOussadOmjV9cLz1t2jQ55ZRTkmusW2GHHXaQUaNGuVmxrrGuYI19++23Q+tvs802MmLECOnSpUtoeZxMrmFxKLEOCZBAKRIIPopbiiPkmEiABEiABEiABEiABEiABEiABAIEPvroo0A6F8W8CoKM9ddfX5Ny3333Ja8zvXjttddk2223jTR4QB7qbL/99inroB4UjjigPczgoeVDhw61OyiQjhOgJNxxxx0jDR6QMWvWLNlvv/3k0ksvFbiozCbAWO0bjsIUqNnIZhsSaMwESnkNw07tW265RbB7Lurz+ueff8pdd91lXdhhh0Wq8PTTT8vuu+8eavBAO5z1c+qpp6YSESjD7rT7779fBg4cGGnwQAPsLNtyyy3lySefDLTPJME1LBNarEsCJFBKBGj0KKW7wbGQAAmQAAmQAAmQAAmQAAmQQAwC2C3ghhVXXNFNZnUN5dbw4cOTbV988UXr9imZEfMCbmAgB0rBdAF14EYrSrEItzJ777233XmSShZ2gmC8cQLcyuyzzz5pZaqs2267TXC4e7YBBwK7AcYUBhJo7gRKeQ3DeUnYIREnYLcFdnwsWLAgtPr06dPl+OOPDy1zM2H4wNoUJ8BlHnZ4xA0nnniidX8Vt75fj2uYT4RpEiCBxkCARo/GcJc4RhIgARIgARIgARIgARIgARJwCODsCTessMIKbjLra+yogNsWDWPHjtXL2HGYmxYYQe655x77OuSQQ+rJuuaaa+rlIQMHqvvGkyOOOMI+GQ13Mc8884wMGjTItsW5IXHCtddeW68a3M6gr3HjxgmMHO6OF1TGbg8YYLIJvsJw7ty52YhhGxJoUgRKdQ2D8QJu9/wAN1cPP/yw3HzzzQLXfG6A0fWBBx5ws5LXN910U/JaL6644gqZMmWKvPvuu7adrjdx1jCca3TllVeqKBt37NjR5sEYghfK3XUcldBntoFrWLbk2I4ESKAhCdDo0ZD02TcJkAAJkAAJkAAJkAAJkAAJZEHgjz/+CLTKx04PCISibP/990/KhqECh+TGDf/5z3/kueeeC1S/5JJL7NkZUBTideGFF9qzMtxKeMoZ/vPdgH5Hjx7tZgmeWD733HNl7bXXtmeY9OrVS6677jo56aSTAvWiEthRgqe43QBDB+T26dNHcD4I/OvDHcx2222XrAal5hNPPJFMZ3LhKwz9e5eJLNYlgaZCwP8clMoaBuMFPu9uwHrwj3/8w57vs8suu8gdd9whgwcPdqvI1VdfXc9Ai8PFYYRwA9xSYY3t3LmzwFgN91PYSdavXz+3WuT1Qw89JK5xBGcxwfUfXPFtsMEG9oVruLaCMUTDCy+8EOleS+tExVzDosgwnwRIoJQJ0OhRyneHYyMBEiABEiABEiABEiABEiABjwD8ufu7H5ZaaimvVvZJKMw0QPkXdZaG1nHjyZMnu0nBYeAHHXRQIA+JIUOG2AO+3YLXX3/dTQr85ONAdTccddRRbjJ5feSRR9Z7sjlZ6FxMmjTJSYk9hBiGDj+0bNlSzjvvvED2zJkzA+m4iU6dOgWqzps3L5BmggSaG4FSXsNw1pAbsEutd+/ebpZUVFTYA87dTKzJMPq6wV8PYdjo37+/W8VeQx4ORI8TXn311UA17OBYdtllA3lIwKCC3SluSHf2iFvXveYa5tLgNQmQQGMhQKNHY7lTHCcJkAAJkAAJkAAJkAAJkAAJGAI4e6OQAbsoNtlkk2QXmRxo7j6BDAEweESNd9iwYck+cOG3/f777wPlMMb4Llu0AvLxxHS64PeB80KiAgw2eGn48ssv9TKj2N8pU15enlF7ViaBpkYgak3I1zxzWcP8s0ZwXkdYwM4UuAN0w5w5c9xkPaNtlCw02nDDDQNtoxLumUBYn7BDLSpsu+22gaJvvvkmkI6b4BoWlxTrkQAJlBKBilIaDMdCAiRAAiRAAiRAAiRAAiRAAiSQngCU/O5uj99//926e0rfMl4NPN0Mf/MIcJMChX/79u3TNvYNA67RwG/co0ePQBZcwbjBN3rAjUuqsPrqq6cqtmWuwhAZb731Vso2roHCb5uyoVP4ww8/OCmRDh06BNJMkEBzJFCKaxiU+/7ussrKysjbs9ZaawXc+flGBf9g8lTrITrBrjO44IsKGJ9ruMU5QzjXKCpgR40b3LZufrprrmHpCLGcBEigFAnQ6FGKd4VjIgESIAESIAESIAESIAESIIEUBOCr3TV6/Pjjj3k1euy44452V4X2gQN8Dz/88BQjShT5hgvfF7wrwHeZ4rf99ttv3erWXUsgw0sss8wyXk79pN/HcccdV79SRI7v5z+iWr3sn376KZAXtVslUIkJEmjiBEpxDfMNrbgFqT6vcCHlBt/o4e/88Nc8ty2ul1tuOT8rkPbHBwNNJmvYb7/9FpAXN8E1LC4p1iMBEiglAnRvVUp3g2MhARIgARIgARIgARIgARIggRgEfOWYr5SKISJlldatWwt2e2jAgeYLFizQZGSMszDcUFNT4yYD1/5TyIFCk1i0aFEgK5WsQMUUCX98KarWK2rTpk29vDgZvqJy+eWXj9OMdUigSRMoxTWsRYvMVGT+Gua77fLXTL880xucy/qFvtq2bZtpl7Y+17CssLERCZBAAxPgTo8GvgHsngRIgARIgARIgARIgARIgAQyJbDeeuvJhx9+mGzmux9JFuRwgTM0brrpJisBOz5eeOGFtNLgCsZ1oZLKGOOX+e6rOnfuHOgvHweAw32MO76tttpKYOCJE1ZeeeU41erV8e+N79arXgNmkEAzIFCKaxjO6fDD3LlzI137+Z/t1VZbLdC8a9eu8tFHHyXz4IbQX9eShTEuwsY3cODAGC0TVeKeG+IL9OfJNcwnxDQJkEApEqDRoxTvCsdEAiRAAiRAAiRAAiRAAiRAAikIQHnvhpdfflkGDRrkZuV83a1bN9lmm23smR4Qht0e6YKv9Pvkk09kwIABoc1Q5gb/TI5VVlnFLQ4YKwIFGSRgWHnxxReTLYYMGSK77LJLMp3vC/jgf/755wNie/bsGUgzQQLNkUAprmEVFRWCNcw1jH722WfSu3fv0Fs0Y8aMQD6MHG7o0qWLmxS4u/LnHaiQJoGdIjBcuAbvESNGSCo3gmlEpi3mGpYWESuQAAmUKIHM9u6V6CQ4LBIgARIgARIgARIgARIgARJoTgQ22GCDwHSfe+458V2QBCpkmTjwwAOTLV1FIDJ91y7I840ed999tyxevBhFgQBXVb4RxW/rPxH9+OOPS1VVVUCOm/D957tlet29e3e9tPH1118v+dhBEhDqJMaPHy/+WSB8StoBxMtmS6BU1zD/sPH7778/9B5hvXnllVcCZb6Rw09jDUsV/DOHwuquvfbagexrr702dC0OVMohwTUsB3hsSgIk0KAEaPRoUPzsnARIgARIgARIgARIgARIgAQyJ4CnfXEQsBtw2Hi+w3bbbVevn1R9oL4bcNDu6NGj3Sx7feONNwaepkbm9ttvH6gH5aN7iDCMB/fee2+gjiZg8HnppZc0GRlj54or8+OPP5bDDjtMfFdbkQIyLPDHu8cee2TtVz/DrlmdBEqaQKmuYTvvvHOA29ixY+W1114L5OGsjvPPPz+Qh/XYN+RssskmgTowTn/wwQeBPE1MnjxZsF6mC4MHDw5UefDBB+XSSy+Vv/76K5CfrwTXsHyRpBwSIIFiEyi/0IRid8r+SIAESIAESIAESIAESIAESIAEsicANyfwNf/2228nhXz66acybNgwyeSw2+uuuy7ZHkpI32iBg32h4JsyZUqynl70799f+vbtq0kb45Dub7/9VqZPn57Mf/PNN+W///2v4FwQ5I8ZM0buuuuuZDku4JrroIMOCuRhHq1atZJJkyYl8ydOnGh3Ziy99NI2b/bs2QJF4mmnnSY//vhjsh4udthhB8G5AW5YaqmlrE/9cePGJbMh49Zbb7Xt58+fL3/88Yd9YWcL3MjAHRZc3PgKzaSAiIuZM2fKZZddFig988wzxX+SPFCBCRJoJgRKdQ2D+7knn3xScP6GBqSxfv3888/y7rvvyiWXXCJvvPGGFtv4oosuko022iiQhzM4pk2bJu4OjoceesgakrG2LVq0SD7//HO76+3ss88OtEXi4IMPFv/Ad7jQgnHEXWPff/99u6ZCHtYv7F6DkRj9vvPOO3aNxFru7zyp16GXwTXMA8IkCZBAoyJQZrYk1zaqEXOwJEACJEACJEACJEACJEACJEAC1j98v379AiSwkwAum6BQjBPcczRgMIEyzw8wYmyxxRZ+tpx11lly9NFH18uHEWHLLbesl58qA8aMbuYMET9A0QjDCuJ0AU9au66krrrqKtl3333rNcNP4OHDhyfPKqlXISQDBqGnn346pCQ8CwYp3ItZs2YlK8DYgbNXcG4AAwmQgJTsGgZD6jHHHBP7FsE134QJE0I/2++99574uzOiBPtrGHaYVFZW1qv+v//9T7D2x1kXtfFxxx0np59+uibTxlzD0iJiBRIggRInQPdWJX6DODwSIAESIAESIAESIAESIAESCCOw6qqr2h0ObhkU8yeeeKJ92tfNz+UaZ2vsuOOOsUXgaeKnnnpK/IPIwwSgDvzchxk8UB+uqPBkdDpZKI+r0INB6JZbbpGTTz45bEihedjpETd8+eWXMnTo0IDBA21hUKLBIy5F1msOBEp1Ddt1113lmmuuiXULNt10U4ELrKjPdp8+fQTnbqQLAwYMiG0cWXbZZeXVV1+1htV0crXc3W2ieVEx17AoMswnARJoTARo9GhMd4tjJQESIAESIAESIAESIAESIAGHwBFHHCHYheAGGBygQBs1apRMnTrVupuqrq52q4Ret23bNjQfme6B5loJrqKiAty84IyNAw44IPRMEDzRvM8++wjcTEEpmCr06tXLumfZbbfdAudxoA2MIvDBjwPTM3E/hbmedNJJdrfHnnvumdaogr6inqpeuHChfPXVVwKf/P/85z8F54bALZYb4LoL7sAYSIAEggRKdQ3be++9BYd4Yy11zwHS0WN3B9zq4UyNlVdeWbNDY+z0eP7558U/4wOVIWfIkCGCc45gYI4bYOjFeUnof6uttgodoysLLq+iAtewKDLMJwESaMwE6N6qMd89jp0ESIAESIAESIAESIAESKDZE4Crk7///e/23IwoGDhDwz+vI6puIfJ//fXXpF977OqA0SObANdU33zzjfVp36lTJ3s+hrrygmEHrrigoIRBpk2bNrHdfGEsOLsErrngtx/XaL/MMstYRSTiqAA3WjfccENUsX0aG096Rz0JHtmQBSTQTAiU+hqGdQdrC144a2jNNddMa2SIunVYp7BzDGeGYC1caaWVklXhUgpncmD9wqt169bJsjgXaIuziBCjH6xhWGthTEll1OYaFocu65AACTQ2AnQm2tjuGMdLAiRAAiRAAiRAAiRAAiRAAg4BuDp57LHH7KHZDz/8sFNSd4mDbxsy4IBzvHINMHDgyWi8/ACjQli+Xy8qDQVhjx497CuqTlg+FKFRAeee4El2GjyiCDGfBERKfQ3DugNXXHjlGrAW4LD0sNC+fXvBK9vQoUMHWX/99TNuzjUsY2RsQAIk0AgI0L1VI7hJHCIJkAAJkAAJkAAJkAAJkAAJpCKAnQhXXnmlPR9jv/32q/cU8vfff5+qOctyIIDdIW6A2xkc8I7D2RHT4OHS4TUJhBPgGhbOpRi5XMOKQZl9kAAJFJsA3VsVmzj7IwESIAESIAESIAESIAESIIECE1BXT7/88ovMnz/fPqEMVyoM+SeAc1PgqgY7WeByC0YPdbmV/94okQSaBwGuYcW7z1zDiseaPZEACRSPAI0exWPNnkiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABApIgO6tCgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAI0ehQQLkWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUjwCNHsVjzZ5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKSIBGjwLCpWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHiEaDRo3is2RMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEABCdDoUUC4FE0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFA8AjR6FI81eyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiggARo9CgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAI0ehQQLkWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUjwCNHsVjzZ5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKSIBGjwLCpWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHiEaDRo3is2RMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEABCdDoUUC4FE0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFA8AjR6FI81eyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiggARo9CgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAI0ehQQLkWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUjwCNHsVjzZ5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKSIBGjwLCpWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHiEaDRo3is2RMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEABCdDoUUC4FE0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFA8AjR6FI81eyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiggARo9CgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAL/D2QsXoszqvK7AAAAAElFTkSuQmCC" } }, @@ -39,35 +30,71 @@ "\n", "We'll focus on ideas from one paper, `Corrective RAG (CRAG)` [here](https://arxiv.org/pdf/2401.15884.pdf).\n", "\n", - "![Screenshot 2024-02-07 at 1.21.51 PM.png](attachment:9db7f9db-55aa-48cb-95d5-bcde3f937589.png)\n", + "![Screenshot 2024-02-07 at 1.21.51 PM.png](attachment:a65940f9-5c51-4d7c-9ca1-ae576e4bb51a.png)\n", "\n", - "## Dependencies\n", + "## Setup\n", "\n", - "Set `MISTRAL_API_KEY` and set up Subscription to activate it.\n", + "### Using APIs \n", "\n", - "Set `TAVILY_API_KEY` to enable web search [here](https://app.tavily.com/sign-in).\n", + "* Set `MISTRAL_API_KEY` and set up Subscription to activate it.\n", + "* Set `TAVILY_API_KEY` to enable web search [here](https://app.tavily.com/sign-in).\n", "\n", - "If you want to run this locally, use [Ollama](https://ollama.ai/library/mistral/tags):\n", + "### Using CoLab \n", "\n", - "* Download [Ollama app](https://ollama.ai/)\n", - "* Download Mistral e.g., `ollama pull mistral:7b-instruct`\n", + "* [Here](https://colab.research.google.com/drive/1U5OcwWjoXZSud30q4XOk1UlIJNjaD3kX?usp=sharing) is a link to a CoLab for this notebook. \n", "\n", - "Optionally, use [LangSmith](https://docs.smith.langchain.com/) for tracing (shown at bottom)." + "### Running Locally \n", + "\n", + "If you want to run this locally (e.g., on your laptop), use [Ollama](https://ollama.ai/library/mistral/tags):\n", + "\n", + "* Download [Ollama app](https://ollama.ai/).\n", + "* Download a `Mistral` model e.g., `ollama pull mistral:7b-instruct`, from various Mistral versions [here](https://ollama.ai/library/mistral) and Mixtral versions [here](https://ollama.ai/library/mixtral) available.\n", + "* Download LLaMA2 `ollama pull llama2:latest` to use Ollama embeddings.\n", + "* Set flags indicating we will run locally and the Mistral model downloaded:\n", + " \n", + "```\n", + "run_local = \"Yes\"\n", + "local_llm = \"mistral:7b-instruct\"\n", + "```\n", + "\n", + "### Tracing \n", + "\n", + "* Optionally, use [LangSmith](https://docs.smith.langchain.com/) for tracing (shown at bottom) by setting: \n", + "\n", + "```\n", + "export LANGCHAIN_TRACING_V2=true\n", + "export LANGCHAIN_ENDPOINT=https://api.smith.langchain.com\n", + "export LANGCHAIN_API_KEY=\n", + "```" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "id": "abc064ab-7de1-4d03-a987-cd3078438d61", "metadata": {}, "outputs": [], "source": [ + "# Check API keys\n", "import os\n", "\n", "mistral_api_key = os.environ.get(\"MISTRAL_API_KEY\")\n", "tavily_api_key = os.environ.get(\"TAVILY_API_KEY\")" ] }, + { + "cell_type": "code", + "execution_count": 7, + "id": "9f644869-436e-4bf6-a267-b2465c7b5aef", + "metadata": {}, + "outputs": [], + "source": [ + "# Flags for running locally\n", + "\n", + "run_local = \"Yes\"\n", + "local_llm = \"mistral:instruct\"" + ] + }, { "cell_type": "markdown", "id": "6e2b6eed-3b3f-44b5-a34a-4ade1e94caf0", @@ -75,22 +102,41 @@ "source": [ "## Indexing\n", "\n", - "First, let's index a popular blog post on agents using [Mistral embeddings](https://python.langchain.com/docs/integrations/text_embedding/mistralai).\n", + "First, let's index a popular blog post on agents. \n", + "\n", + "We can use [Mistral embeddings](https://python.langchain.com/docs/integrations/text_embedding/mistralai).\n", + "\n", + "For local, we can use [GPT4All](https://python.langchain.com/docs/integrations/text_embedding/gpt4all), which is a CPU optimized SBERT model [here](https://docs.gpt4all.io/gpt4all_python_embedding.html).\n", "\n", "We'll use a local vectorstore, [Chroma](https://python.langchain.com/docs/integrations/vectorstores/chroma)." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "id": "254ae533-79e0-42f4-b200-1ec9160e1d3d", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bert_load_from_file: gguf version = 2\n", + "bert_load_from_file: gguf alignment = 32\n", + "bert_load_from_file: gguf data offset = 695552\n", + "bert_load_from_file: model name = BERT\n", + "bert_load_from_file: model architecture = bert\n", + "bert_load_from_file: model file type = 1\n", + "bert_load_from_file: bert tokenizer vocab = 30522\n" + ] + } + ], "source": [ "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", "from langchain_community.document_loaders import WebBaseLoader\n", "from langchain_community.vectorstores import Chroma\n", "from langchain_mistralai import MistralAIEmbeddings\n", + "from langchain_community.embeddings import GPT4AllEmbeddings\n", "\n", "# Load\n", "url = \"https://lilianweng.github.io/posts/2023-06-23-agent/\"\n", @@ -104,7 +150,12 @@ "all_splits = text_splitter.split_documents(docs)\n", "\n", "# Embed and index\n", - "embedding = MistralAIEmbeddings(mistral_api_key=mistral_api_key)\n", + "if run_local == \"Yes\":\n", + " embedding = GPT4AllEmbeddings()\n", + "else:\n", + " embedding = MistralAIEmbeddings(mistral_api_key=mistral_api_key)\n", + "\n", + "# Index\n", "vectorstore = Chroma.from_documents(\n", " documents=all_splits,\n", " collection_name=\"rag-chroma\",\n", @@ -150,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 9, "id": "10028794-2fbc-43f9-aa4c-7fe3abd69c1e", "metadata": {}, "outputs": [], @@ -187,7 +238,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 10, "id": "447d1333-082d-479a-a6fa-0ac0df78bb9d", "metadata": {}, "outputs": [], @@ -250,7 +301,7 @@ "\n", " # LLM\n", " if local == \"Yes\":\n", - " llm = ChatOllama(model=\"mistral:7b-instruct\", temperature=0)\n", + " llm = ChatOllama(model=local_llm, temperature=0)\n", " else:\n", " llm = ChatMistralAI(\n", " model=\"mistral-medium\", temperature=0, mistral_api_key=mistral_api_key\n", @@ -289,7 +340,7 @@ "\n", " # LLM\n", " if local == \"Yes\":\n", - " llm = ChatOllama(model=\"mistral:7b-instruct\", format=\"json\", temperature=0)\n", + " llm = ChatOllama(model=local_llm, format=\"json\", temperature=0)\n", " else:\n", " llm = ChatMistralAI(\n", " mistral_api_key=mistral_api_key, temperature=0, model=\"mistral-medium\"\n", @@ -315,7 +366,7 @@ " If the document contains keywords related to the user question, grade it as relevant. \\n\n", " It does not need to be a stringent test. The goal is to filter out erroneous retrievals. \\n\n", " Give a binary score 'yes' or 'no' score to indicate whether the document is relevant to the question. \\n\n", - " Provide the binary scor as a JSON with no premable or explaination and use these instructons to format the output: {format_instructions}\"\"\",\n", + " Provide the binary score as a JSON with no premable or explaination and use these instructons to format the output: {format_instructions}\"\"\",\n", " input_variables=[\"query\"],\n", " partial_variables={\"format_instructions\": parser.get_format_instructions()},\n", " )\n", @@ -377,14 +428,14 @@ " \\n ------- \\n\n", " {question} \n", " \\n ------- \\n\n", - " Formulate an improved question: \"\"\",\n", + " Provide an improved question without any premable, only respond with the updated question: \"\"\",\n", " input_variables=[\"question\"],\n", " )\n", "\n", " # Grader\n", " # LLM\n", " if local == \"Yes\":\n", - " llm = ChatOllama(model=\"mistral:7b-instruct\", temperature=0)\n", + " llm = ChatOllama(model=local_llm, temperature=0)\n", " else:\n", " llm = ChatMistralAI(\n", " mistral_api_key=mistral_api_key, temperature=0, model=\"mistral-medium\"\n", @@ -468,7 +519,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 11, "id": "0a63776c-f9cd-46ce-b8cf-95c066dc5b06", "metadata": {}, "outputs": [], @@ -564,7 +615,7 @@ "inputs = {\n", " \"keys\": {\n", " \"question\": \"Explain how the different types of agent memory work?\",\n", - " \"local\": \"No\",\n", + " \"local\": run_local,\n", " }\n", "}\n", "for output in app.stream(inputs):\n", @@ -589,7 +640,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "16ea2032-59c7-433d-aca4-2828a1239074", "metadata": {}, "outputs": [ @@ -601,34 +652,45 @@ "\"Node 'retrieve':\"\n", "'\\n---\\n'\n", "---CHECK RELEVANCE---\n", - "---GRADE: DOCUMENT NOT RELEVANT---\n", - "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", "---GRADE: DOCUMENT RELEVANT---\n", "---GRADE: DOCUMENT RELEVANT---\n", "\"Node 'grade_documents':\"\n", "'\\n---\\n'\n", "---DECIDE TO GENERATE---\n", - "---DECISION: TRANSFORM QUERY and RUN WEB SEARCH---\n", - "---TRANSFORM QUERY---\n", - "\"Node 'transform_query':\"\n", - "'\\n---\\n'\n", - "---WEB SEARCH---\n", - "\"Node 'web_search':\"\n", - "'\\n---\\n'\n", + "---DECISION: GENERATE---\n", "---GENERATE---\n", "\"Node 'generate':\"\n", "'\\n---\\n'\n", "\"Node '__end__':\"\n", "'\\n---\\n'\n", - "('There are three types of agent memory in artificial intelligence systems: '\n", - " 'sensory memory, short-term memory, and long-term memory. Sensory memory is '\n", - " 'the learning embedding representations for raw inputs such as text, image or '\n", - " 'other modalities. Short-term memory is in-context learning that is short and '\n", - " 'finite, restricted by the finite context window length of Transformer. '\n", - " 'Long-term memory is an external vector store that the agent can attend to at '\n", - " 'query time, accessible via fast retrieval. The external memory can alleviate '\n", - " 'the restriction of finite attention span by using approximate nearest '\n", - " 'neighbors (ANN) algorithms such as maximum inner product search (MIPS).')\n" + "(' In an LLM (large language model)-powered autonomous agent system, LLM '\n", + " 'functions as the agent’s brain, complemented by several key components: '\n", + " 'planning and memory.\\n'\n", + " '\\n'\n", + " 'Planning involves breaking down large tasks into smaller subgoals for '\n", + " 'efficient handling of complex tasks and self-criticism and refinement to '\n", + " 'improve results.\\n'\n", + " '\\n'\n", + " 'Memory includes short-term memory, which utilizes in-context learning, and '\n", + " 'long-term memory, providing the agent with the capability to retain and '\n", + " 'recall information over extended periods using an external vector store and '\n", + " 'fast retrieval. The agent also learns to call external APIs for missing '\n", + " 'information.\\n'\n", + " '\\n'\n", + " 'Types of Memory:\\n'\n", + " '1. Sensory Memory: retains impressions of sensory information for a few '\n", + " 'seconds.\\n'\n", + " '2. Short-Term Memory (STM) or Working Memory: stores information needed for '\n", + " 'complex cognitive tasks and lasts for 20-30 seconds.\\n'\n", + " '3. Long-Term Memory (LTM): stores information for a remarkably long time, '\n", + " 'with two subtypes: explicit/declarative memory and implicit/procedural '\n", + " 'memory.\\n'\n", + " '\\n'\n", + " 'The agent uses LLM as its core controller, which can be extended beyond '\n", + " 'generating well-written copies, stories, essays, and programs to a powerful '\n", + " 'general problem solver.')\n" ] } ], @@ -637,7 +699,7 @@ "inputs = {\n", " \"keys\": {\n", " \"question\": \"Explain how the different types of agent memory work?\",\n", - " \"local\": \"Yes\",\n", + " \"local\": run_local,\n", " }\n", "}\n", "for output in app.stream(inputs):\n", @@ -665,8 +727,16 @@ "\n", "`Locall (Ollama) -` \n", "\n", - "https://smith.langchain.com/public/6b626f5e-248d-4d52-b36b-5cc3bf0b95d3/r" + "https://smith.langchain.com/public/fd650c43-b0e9-48f4-8cb7-ca77c736d10d/r" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "deb28175-27a1-4afc-9747-2983e87fc881", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -685,7 +755,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.11.7" } }, "nbformat": 4, From ce5144fccd2947e1f71ece065eef2b7d1fdfcbee Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Fri, 9 Feb 2024 12:29:04 -0800 Subject: [PATCH 022/108] add plan-and-execute example --- .../plan-and-execute/plan-and-execute.ipynb | 494 ++++++++++++++++++ 1 file changed, 494 insertions(+) create mode 100644 examples/plan-and-execute/plan-and-execute.ipynb diff --git a/examples/plan-and-execute/plan-and-execute.ipynb b/examples/plan-and-execute/plan-and-execute.ipynb new file mode 100644 index 000000000..d191a20c5 --- /dev/null +++ b/examples/plan-and-execute/plan-and-execute.ipynb @@ -0,0 +1,494 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "79b5811c-1074-495f-9722-8325b5e717d3", + "metadata": {}, + "source": [ + "# Plan-and-Execute\n", + "\n", + "This notebook shows how to create a \"plan-and-execute\" style agent. This is heavily inspired by the [Plan-and-Solve](https://arxiv.org/abs/2305.04091) paper as well as the [Baby-AGI](https://github.com/yoheinakajima/babyagi) project.\n", + "\n", + "The core idea is to first come up with a multi-step plan, and then go through that plan one item at a time.\n", + "After accomplishing a particular task, you can then revisit the plan and modify as appropriate.\n", + "\n", + "This compares to a typical [ReAct](https://arxiv.org/abs/2210.03629) style agent where you think one step at a time.\n", + "The advantages of this \"plan-and-execute\" style agent are:\n", + "\n", + "1. Explicit long term planning (which even really strong LLMs can struggle with)\n", + "2. Ability to use smaller/weaker models for the execution step, only using larger/better models for the planning step" + ] + }, + { + "cell_type": "markdown", + "id": "a44a72d6-7e0c-4478-9d20-4c09000420a8", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "First, we need to install the packages required." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b451b58a-89bd-424f-8c06-0d9fe325e01b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3.11 -m pip install --upgrade pip\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install --quiet -U langchain langchain_openai tavily-python" + ] + }, + { + "cell_type": "markdown", + "id": "35f267b0-98db-4a59-8b2c-a23f795576ff", + "metadata": {}, + "source": [ + "Next, we need to set API keys for OpenAI (the LLM we will use) and Tavily (the search tool we will use)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ce438281-08d5-4804-afe7-e4089f7b016b", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import getpass\n", + "\n", + "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"OpenAI API Key:\")\n", + "os.environ[\"TAVILY_API_KEY\"] = getpass.getpass(\"Tavily API Key:\")" + ] + }, + { + "cell_type": "markdown", + "id": "be2d7981-3737-4134-8bef-d00d18d4e91d", + "metadata": {}, + "source": [ + "Optionally, we can set API key for LangSmith tracing, which will give us best-in-class observability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "01f460d1-f26f-47d1-ae76-de74d5d851de", + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass(\"LangSmith API Key:\")" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "e475c7f9-4c46-4f21-8ba6-2e4d67b09cae", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.environ[\"LANGCHAIN_PROJECT\"] = \"brex\"" + ] + }, + { + "cell_type": "markdown", + "id": "6c5fb09a-0311-44c2-b243-d0e80de78902", + "metadata": {}, + "source": [ + "## Define Tools\n", + "\n", + "We will first define the tools we want to use. For this simple example, we will use a built-in search tool via Tavily. However, it is really easy to create your own tools - see documentation [here](https://python.langchain.com/docs/modules/agents/tools/custom_tools) on how to do that." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "25b9ec62-0675-4715-811c-9b32c635b22f", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "\n", + "tools = [TavilySearchResults(max_results=3)]" + ] + }, + { + "cell_type": "markdown", + "id": "3dcda478-fa80-4e3e-bb35-0f622fe73a31", + "metadata": {}, + "source": [ + "## Define our Execution Agent\n", + "\n", + "Now we will create the execution agent we want to use to execute tasks. \n", + "Note that for this example, we will be using the same execution agent for each task, but this doesn't HAVE to be the case." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "72d233ca-1dbf-4b43-b680-b3bf39e3691f", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain import hub\n", + "from langchain.agents import create_openai_functions_agent\n", + "from langchain_openai import ChatOpenAI\n", + "# Get the prompt to use - you can modify this!\n", + "prompt = hub.pull(\"hwchase17/openai-functions-agent\")\n", + "# Choose the LLM that will drive the agent\n", + "llm = ChatOpenAI(model=\"gpt-4-turbo-preview\")\n", + "# Construct the OpenAI Functions agent\n", + "agent_runnable = create_openai_functions_agent(llm, tools, prompt)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "a3ea9bd3-87d9-4a78-aec6-8ab4bf34479b", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.prebuilt import create_agent_executor" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "998aebde-c204-494f-930c-14747ed34861", + "metadata": {}, + "outputs": [], + "source": [ + "agent_executor = create_agent_executor(agent_runnable, tools)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "746e697a-dec4-4342-a814-9b3456828169", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'input': 'who is the winnner of the us open',\n", + " 'chat_history': [],\n", + " 'agent_outcome': AgentFinish(return_values={'output': 'The winners of the US Open in 2023 are:\\n\\n- For tennis, Coco Gauff won her first Grand Slam title at the US Open 2023 with a comeback victory against Aryna Sabalenka. [Source](https://sports.yahoo.com/us-open-2023-coco-gauff-wins-1st-grand-slam-title-with-wild-comeback-vs-aryna-sabalenka-222431287.html)\\n\\n- In golf, Wyndham Clark won the 2023 US Open, marking his first major championship victory. The tournament took place at the Los Angeles Country Club. [Source](https://www.nbclosangeles.com/news/sports/golf/wyndham-clark-wins-2023-us-open-for-first-major-championship/3172672/)'}, log='The winners of the US Open in 2023 are:\\n\\n- For tennis, Coco Gauff won her first Grand Slam title at the US Open 2023 with a comeback victory against Aryna Sabalenka. [Source](https://sports.yahoo.com/us-open-2023-coco-gauff-wins-1st-grand-slam-title-with-wild-comeback-vs-aryna-sabalenka-222431287.html)\\n\\n- In golf, Wyndham Clark won the 2023 US Open, marking his first major championship victory. The tournament took place at the Los Angeles Country Club. [Source](https://www.nbclosangeles.com/news/sports/golf/wyndham-clark-wins-2023-us-open-for-first-major-championship/3172672/)'),\n", + " 'intermediate_steps': [(AgentActionMessageLog(tool='tavily_search_results_json', tool_input={'query': 'US Open winner 2023'}, log=\"\\nInvoking: `tavily_search_results_json` with `{'query': 'US Open winner 2023'}`\\n\\n\\n\", message_log=[AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{\"query\":\"US Open winner 2023\"}', 'name': 'tavily_search_results_json'}})]),\n", + " '[{\\'url\\': \\'https://sports.yahoo.com/us-open-2023-coco-gauff-wins-1st-grand-slam-title-with-wild-comeback-vs-aryna-sabalenka-222431287.html\\', \\'content\\': \\'— US Open Tennis (@usopen) September 9, 2023 — US Open Tennis (@usopen) September 9, 2023 US Open 2023: Coco Gauff wins 1st Grand Slam title with wild comeback vs. Aryna Sabalenka What a backhand winner from Coco Gauff! pic.twitter.com/JhDcFpsJ4E — US Open Tennis (@usopen) September 9, 2023— US Open Tennis (@usopen) September 9, 2023 Gauff got the momentum change the crowd was looking for early in the second set, breaking Sabalenka to go up 3-1 and holding serve from there to take ...\\'}, {\\'url\\': \\'https://www.nbclosangeles.com/news/sports/golf/wyndham-clark-wins-2023-us-open-for-first-major-championship/3172672/\\', \\'content\\': \"Wyndham Clark wins 2023 US Open for first major championship 2023 US Open features a record purse. Here\\'s how much the winning golfer will make Clark on Sunday claimed the 2023 US Open title at the Los Angeles Country Club, making it his first major championship US Open champion in 2011 and a four-time total major winner -- who recorded a nine-under.Clark on Sunday claimed the 2023 US Open title at the Los Angeles Country Club, making it his first major championship triumph. The 29-year-old finished the tournament going 10-under, just edging ...\"}, {\\'url\\': \\'https://www.sportingnews.com/us/golf/news/us-open-2023-live-scores-results-leaderboard/jbmxrpro5jc37drgq8e2lehn\\', \\'content\\': \\'MORE: Watch the 2023 U.S. Open live with Fubo (free trial) U.S. Open leaderboard 2023 Edition Who won the U.S. Open in 2023? Complete scores, results, highlights from Los Angeles Country Club The golf world headed to the City of Angels — Los Angeles — for the 2023 U.S. Open. MORE:\\\\xa0How much prize money does the U.S. Open winner make?Nick Brinkerhoff 06-19-2023 • 23 min read (Getty Images) The golf world headed to the City of Angels — Los Angeles — for the 2023 U.S. Open. And the tournament got its Hollywood ending....\\'}]')]}" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "agent_executor.invoke({\"input\": \"who is the winnner of the us open\", \"chat_history\": []})" + ] + }, + { + "cell_type": "markdown", + "id": "5cf66804-44b2-4904-b1a7-17ad70b551f5", + "metadata": {}, + "source": [ + "## Define the State\n", + "\n", + "Let's now start by defining the state the track for this agent.\n", + "\n", + "First, we will need to track the current plan. Let's represent that as a list of strings.\n", + "\n", + "Next, we should track previously executed steps. Let's represent that as a list of tuples (these tuples will contain the step and then the result)\n", + "\n", + "Finally, we need to have some state to represent the final response as well as the original input." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "8eeeaeea-8f10-4fbe-8e24-4e1a2381a009", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from typing import List, Tuple, Annotated, TypedDict\n", + "import operator\n", + "\n", + "\n", + "class PlanExecute(TypedDict):\n", + "\n", + " input: str \n", + " plan: List[str]\n", + " past_steps: Annotated[List[Tuple], operator.add]\n", + " response: str" + ] + }, + { + "cell_type": "markdown", + "id": "1dbd770a-9941-40a9-977e-4d55359eee21", + "metadata": {}, + "source": [ + "## Planning Step\n", + "\n", + "Let's now think about creating the planning step. This will use function calling to create a plan." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "4a88626d-6dfd-4488-87f0-a9a0dd6da44c", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.pydantic_v1 import BaseModel\n", + "\n", + "\n", + "class Plan(BaseModel):\n", + " \"\"\"Plan to follow in future\"\"\"\n", + " steps: List[str] = Field(description=\"different steps to follow, should be in sorted order\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "ec7b1867-1ea3-4df3-9a98-992a1c32ec49", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chains.openai_functions import create_structured_output_runnable\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "\n", + "planner_prompt = ChatPromptTemplate.from_template(\"\"\"For the given objective, come up with a simple step by step plan. \\\n", + "This plan should involve individual tasks, that if executed correctly will yield the correct answer. Do not add any superfluous steps. \\\n", + "The result of the final step should be the final answer. Make sure that each step has all the information needed - do not skip steps.\n", + "\n", + "{objective}\"\"\")\n", + "planner = create_structured_output_runnable(Plan, ChatOpenAI(model=\"gpt-4-turbo-preview\", temperature=0), planner_prompt)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "67ce37b7-e089-479b-bcb8-c3f5d9874613", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Plan(steps=['Identify the current year.', 'Search for the Australia Open winner of the current year.', 'Find the hometown of the identified winner.'])" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "planner.invoke({'objective': 'what is the hometown of the current Australia open winner?'})" + ] + }, + { + "cell_type": "markdown", + "id": "6e09ad9d-6f90-4bdc-bb43-b1ce94517c29", + "metadata": {}, + "source": [ + "## Re-Plan Step\n", + "\n", + "Now, let's create a step that re-does the plan based on the result of the previous step." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "ec2d12cc-016a-44d1-aa08-4c5ce1e8fe2a", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chains.openai_functions import create_openai_fn_runnable\n", + "class Response(BaseModel):\n", + " \"\"\"Response to user.\"\"\"\n", + " response: str\n", + "\n", + "replanner_prompt = ChatPromptTemplate.from_template(\"\"\"For the given objective, come up with a simple step by step plan. \\\n", + "This plan should involve individual tasks, that if executed correctly will yield the correct answer. Do not add any superfluous steps. \\\n", + "The result of the final step should be the final answer. Make sure that each step has all the information needed - do not skip steps.\n", + "\n", + "Your objective was this:\n", + "{input}\n", + "\n", + "Your original plan was this:\n", + "{plan}\n", + "\n", + "You have currently done the follow steps:\n", + "{past_steps}\n", + "\n", + "Update your plan accordingly. If no more steps are needed and you can return to the user, then respond with that. Otherwise, fill out the plan. Only add steps to the plan that still NEED to be done. Do not return previously done steps as part of the plan.\"\"\")\n", + "\n", + "\n", + "replanner = create_openai_fn_runnable([Plan, Response], ChatOpenAI(model=\"gpt-4-turbo-preview\", temperature=0), replanner_prompt)\n" + ] + }, + { + "cell_type": "markdown", + "id": "859abd13-6ba0-45ad-b341-e652dd5f755b", + "metadata": {}, + "source": [ + "## Create the Graph\n", + "\n", + "We can now create the graph!" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "6c8e0dad-bcea-4c9a-8922-0d820892e2d0", + "metadata": {}, + "outputs": [], + "source": [ + "async def execute_step(state: PlanExecute):\n", + " task = state['plan'][0]\n", + " agent_response = await agent_executor.ainvoke({\"input\": task, \"chat_history\": []})\n", + " return {\"past_steps\": (task, agent_response['agent_outcome'].return_values['output'])}\n", + "\n", + "async def plan_step(state: PlanExecute):\n", + " plan = await planner.ainvoke({\"objective\": state[\"input\"]})\n", + " return {\"plan\": plan.steps}\n", + "\n", + "async def replan_step(state: PlanExecute):\n", + " output = await replanner.ainvoke(state)\n", + " if isinstance(output, Response):\n", + " return {\"response\": output.response}\n", + " else:\n", + " return {\"plan\": output.steps}\n", + "\n", + "def should_end(state: PlanExecute):\n", + " if state['response']:\n", + " return True\n", + " else:\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "e954cea0-5ccc-46c2-a27b-f5b7185b597d", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, END\n", + "\n", + "workflow = StateGraph(PlanExecute)\n", + "\n", + "# Add the plan node\n", + "workflow.add_node(\"planner\", plan_step)\n", + "\n", + "# Add the execution step\n", + "workflow.add_node(\"agent\", execute_step)\n", + "\n", + "# Add a replan node\n", + "workflow.add_node(\"replan\", replan_step)\n", + "\n", + "workflow.set_entry_point(\"planner\")\n", + "\n", + "# From plan we go to agent\n", + "workflow.add_edge('planner', 'agent')\n", + "\n", + "# From agent, we replan\n", + "workflow.add_edge(\"agent\", \"replan\")\n", + "\n", + "workflow.add_conditional_edges(\n", + " \"replan\",\n", + " # Next, we pass in the function that will determine which node is called next.\n", + " should_end,\n", + " {\n", + " # If `tools`, then we call the tool node.\n", + " True: END,\n", + " False: \"agent\",\n", + " }\n", + ")\n", + "\n", + "# Finally, we compile it!\n", + "# This compiles it into a LangChain Runnable,\n", + "# meaning you can use it as you would any other runnable\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "b8ac1f67-e87a-427c-b4f7-44351295b788", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan': ['Identify the winner of the 2024 Australia Open.', \"Research the winner's biography to find their place of birth or hometown.\", 'Confirm the hometown of the 2024 Australia Open winner.']}\n", + "{'past_steps': ('Identify the winner of the 2024 Australia Open.', \"The winners of the 2024 Australian Open were Jannik Sinner in the men's singles category and Aryna Sabalenka in the women's singles category.\")}\n", + "{'plan': [\"Research Jannik Sinner's biography to find his place of birth or hometown.\", \"Research Aryna Sabalenka's biography to find her place of birth or hometown.\", 'Confirm the hometown of Jannik Sinner.', 'Confirm the hometown of Aryna Sabalenka.']}\n", + "{'past_steps': (\"Research Jannik Sinner's biography to find his place of birth or hometown.\", 'Jannik Sinner was born in Innichen, Italy. This town is also known as San Candido, which is mentioned as his hometown.')}\n", + "{'plan': [\"Research Aryna Sabalenka's biography to find her place of birth or hometown.\", 'Confirm the hometown of Aryna Sabalenka.']}\n", + "{'past_steps': (\"Research Aryna Sabalenka's biography to find her place of birth or hometown.\", 'Aryna Sabalenka was born in Minsk, the capital of Belarus.')}\n", + "{'response': 'The hometown of the 2024 Australia Open winners are Innichen (San Candido), Italy for Jannik Sinner and Minsk, Belarus for Aryna Sabalenka. No further steps are needed.'}\n" + ] + } + ], + "source": [ + "from langchain_core.messages import HumanMessage\n", + "config = {\"recursion_limit\": 50}\n", + "inputs = {\"input\": \"what is the hometown of the 2024 Australia open winner?\"}\n", + "async for event in app.astream(inputs, config=config):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c20341e-267d-4ba0-9a0b-dad055a76b1d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad8f7955-2cc9-4ebb-8c41-13abb3351a24", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From c7f3ecb9d9ad27dd1a02016bfe651a6b901650de Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Fri, 9 Feb 2024 16:04:05 -0800 Subject: [PATCH 023/108] Add LLM Compiler --- .../llm_compiler/LLMCompiler.ipynb | 884 ++++++++++++++++++ .../plan-and-execute/llm_compiler/__init__.py | 0 .../llm_compiler/ast_parser.py | 37 + .../llm_compiler/img/diagram.png | Bin 0 -> 253693 bytes .../llm_compiler/math_tools.py | 143 +++ .../llm_compiler/output_parser.py | 177 ++++ 6 files changed, 1241 insertions(+) create mode 100644 examples/plan-and-execute/llm_compiler/LLMCompiler.ipynb create mode 100644 examples/plan-and-execute/llm_compiler/__init__.py create mode 100644 examples/plan-and-execute/llm_compiler/ast_parser.py create mode 100644 examples/plan-and-execute/llm_compiler/img/diagram.png create mode 100644 examples/plan-and-execute/llm_compiler/math_tools.py create mode 100644 examples/plan-and-execute/llm_compiler/output_parser.py diff --git a/examples/plan-and-execute/llm_compiler/LLMCompiler.ipynb b/examples/plan-and-execute/llm_compiler/LLMCompiler.ipynb new file mode 100644 index 000000000..ba4fb12a2 --- /dev/null +++ b/examples/plan-and-execute/llm_compiler/LLMCompiler.ipynb @@ -0,0 +1,884 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0c8b472b-f3fb-46c2-841f-930a4692697b", + "metadata": {}, + "source": [ + "# LLMCompiler\n", + "\n", + "This notebook shows how to implement [LLMCompiler, by Kim, et. al](https://arxiv.org/abs/2312.04511) in LangGraph.\n", + "\n", + "LLMCompiler is an agent architecture intented on speeding up the latency of agentic tasks via fast, parallel tool execution. It has 3 main components:\n", + "\n", + "1. Planner: generate a DAG of tasks.\n", + "2. Task Fetching Unit: schedules and executes the tasks\n", + "3. Joiner: Responds to the user or triggers a second plan\n", + "\n", + "![diagram](./img/diagram.png)\n", + "\n", + "This notebook walks through each component and shows how to wire them together using LangGraph. \n", + "\n", + "\n", + "**First,** install the dependencies, and set up LangSmith for tracing to more easily debug and observe the agent." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "16bd5497-35ad-44f2-94d9-19ff39a5ffed", + "metadata": {}, + "outputs": [], + "source": [ + "# %pip install -U --quiet langchain_openai langsmith langgraph langchain numexpr" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "abbd6948-e9a3-47ca-89c7-7ac2fc5eca8b", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import getpass\n", + "\n", + "def _get_pass(var: str):\n", + " if var not in os.environ:\n", + " os.environ[var] = getpass.getpass(f\"{var}: \")\n", + "# Optional: Debug + trace calls using LangSmith\n", + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"True\"\n", + "os.environ[\"LANGCHAIN_PROJECT\"] = \"LLMCompiler\"\n", + "_get_pass(\"LANGCHAIN_API_KEY\")\n", + "_get_pass(\"OPENAI_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "id": "a61b48ee-8c6f-4863-913a-676f659287de", + "metadata": {}, + "source": [ + "## Part 1: Tools\n", + "\n", + "We'll first define the tools for the agent to use in our demo. We'll give it the class search engine + calculator combo.\n", + "\n", + "If you don't want to sign up for tavily, you can replace it with the free [DuckDuckGo](https://python.langchain.com/docs/integrations/tools/ddg)." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "e7476bb2-1a51-42f6-b7ae-82a0300bbf84", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "# Imported from the https://github.com/langchain-ai/langgraph/tree/main/examples/plan-and-execute repo\n", + "from math_tools import get_math_tool\n", + "\n", + "_get_pass(\"TAVILY_API_KEY\")\n", + "\n", + "calculate = get_math_tool(ChatOpenAI(model=\"gpt-4-turbo-preview\"))\n", + "search = TavilySearchResults(max_results=1, description='tavily_search_results_json(query=\"the search query\") - a search engine.')\n", + "\n", + "tools = [search, calculate]" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "152eecf3-6bef-4718-af71-a0b3c5a3b009", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'37'" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calculate.invoke({\"problem\": \"What's the temp of sf + 5?\", \"context\": [\"Thet empreature of sf is 32 degrees\"]})" + ] + }, + { + "cell_type": "markdown", + "id": "1abdedbd-d81b-4ee9-b46f-f29439ed1350", + "metadata": {}, + "source": [ + "# Part 2: Planner\n", + "\n", + "\n", + "Largely adapted from [the original source code](https://github.com/SqueezeAILab/LLMCompiler/blob/main/src/llm_compiler/output_parser.py), the planner accepts the input question and generates a task list to execute.\n", + "\n", + "If it is provided with a previous plan, it is instructed to re-plan, which is useful if, upon completion of the first batch of tasks, the agent must take more actions.\n", + "\n", + "The code below composes constructs the prompt template for the planner and composes it with LLM and output parser, defined in [output_parser.py](./output_parser.py). The output parser processes a task list in the following form:\n", + "\n", + "```plaintext\n", + "1. tool_1(arg1=\"arg1\", arg2=3.5, ...)\n", + "Thought: I then want to find out Y by using tool_2\n", + "2. tool_2(arg1=\"\", arg2=\"${1}\")'\n", + "3. join()\"\n", + "```\n", + "\n", + "The \"Thought\" lines are optional. The `${#}` placeholders are variables. These are used to route tool (task) outputs to other tools." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "15dd9639-691f-4906-9012-83fd6e9ac126", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================\u001b[1m System Message \u001b[0m================================\n", + "\n", + "Given a user query, create a plan to solve it with the utmost parallelizability. Each plan should comprise an action from the following \u001b[33;1m\u001b[1;3m{num_tools}\u001b[0m types:\n", + "\u001b[33;1m\u001b[1;3m{tool_descriptions}\u001b[0m\n", + "\u001b[33;1m\u001b[1;3m{num_tools}\u001b[0m. join(): Collects and combines results from prior actions.\n", + "\n", + " - An LLM agent is called upon invoking join() to either finalize the user query or wait until the plans are executed.\n", + " - join should always be the last action in the plan, and will be called in two scenarios:\n", + " (a) if the answer can be determined by gathering the outputs from tasks to generate the final response.\n", + " (b) if the answer cannot be determined in the planning phase before you execute the plans. Guidelines:\n", + " - Each action described above contains input/output types and description.\n", + " - You must strictly adhere to the input and output types for each action.\n", + " - The action descriptions contain the guidelines. You MUST strictly follow those guidelines when you use the actions.\n", + " - Each action in the plan should strictly be one of the above types. Follow the Python conventions for each action.\n", + " - Each action MUST have a unique ID, which is strictly increasing.\n", + " - Inputs for actions can either be constants or outputs from preceding actions. In the latter case, use the format $id to denote the ID of the previous action whose output will be the input.\n", + " - Always call join as the last action in the plan. Say '' after you call join\n", + " - Ensure the plan maximizes parallelizability.\n", + " - Only use the provided action types. If a query cannot be addressed using these, invoke the join action for the next steps.\n", + " - Never introduce new actions other than the ones provided.\n", + "\n", + "=============================\u001b[1m Messages Placeholder \u001b[0m=============================\n", + "\n", + "\u001b[33;1m\u001b[1;3m{messages}\u001b[0m\n", + "\n", + "================================\u001b[1m System Message \u001b[0m================================\n", + "\n", + "Remember, ONLY respond with the task list in the correct format! E.g.:\n", + "idx. tool(arg_name=args)\n", + "None\n" + ] + } + ], + "source": [ + "from typing import Sequence\n", + "\n", + "from langchain_core.language_models import BaseChatModel\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "from langchain_core.runnables import RunnableBranch\n", + "from langchain_core.tools import BaseTool\n", + "from langchain_core.messages import BaseMessage, FunctionMessage, HumanMessage, SystemMessage\n", + "\n", + "from output_parser import LLMCompilerPlanParser, Task\n", + "from langchain import hub\n", + "from langchain_openai import ChatOpenAI\n", + "\n", + "\n", + "prompt = hub.pull(\"wfh/llm-compiler\")\n", + "print(prompt.pretty_print())" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "45689d40-d8df-4316-a121-6ea9c87d2efe", + "metadata": {}, + "outputs": [], + "source": [ + "def create_planner(llm: BaseChatModel, tools: Sequence[BaseTool], base_prompt: ChatPromptTemplate):\n", + " tool_descriptions = \"\\n\".join(\n", + " f\"{i}. {tool.description}\\n\" for i, tool in enumerate(tools)\n", + " )\n", + " planner_prompt = base_prompt.partial(\n", + " replan=\"\",\n", + " num_tools=len(tools),\n", + " tool_descriptions=tool_descriptions,\n", + " )\n", + " replanner_prompt = base_prompt.partial(\n", + " replan=' - You are given \"Previous Plan\" which is the plan that the previous agent created along with the execution results '\n", + " \"(given as Observation) of each plan and a general thought (given as Thought) about the executed results.\"\n", + " 'You MUST use these information to create the next plan under \"Current Plan\".\\n'\n", + " ' - When starting the Current Plan, you should start with \"Thought\" that outlines the strategy for the next plan.\\n'\n", + " \" - In the Current Plan, you should NEVER repeat the actions that are already executed in the Previous Plan.\\n\"\n", + " \" - You must continue the task index from the end of the previous one. Do not repeat task indices.\",\n", + " num_tools=len(tools),\n", + " tool_descriptions=tool_descriptions,\n", + " )\n", + " \n", + " def should_replan(state: list):\n", + " # Context is passed as a system message\n", + " return isinstance(state[-1], SystemMessage)\n", + "\n", + " def wrap_messages(state: list):\n", + " return {\"messages\": state}\n", + "\n", + " def wrap_and_get_last_index(state: list):\n", + " next_task = 0\n", + " for message in state[::-1]:\n", + " if isinstance(message, FunctionMessage):\n", + " next_task = message.additional_kwargs[\"idx\"] + 1\n", + " break\n", + " state[-1].content = state[-1].content + f\" - Begin counting at : {next_task}\"\n", + " return {\"messages\": state}\n", + " \n", + " return (\n", + " RunnableBranch(\n", + " (should_replan, wrap_and_get_last_index | replanner_prompt),\n", + " wrap_messages | planner_prompt,\n", + " )\n", + " | llm\n", + " | LLMCompilerPlanParser(tools=tools)\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "bbdcb57b-5362-4b9e-88db-fb3fae443fb0", + "metadata": {}, + "outputs": [], + "source": [ + "llm = ChatOpenAI(model=\"gpt-4-turbo-preview\")\n", + "# This is the primary \"agent\" in our application\n", + "planner = create_planner(llm, tools, prompt)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "730490c6-6e3a-4173-82a1-9eb9d5eeff20", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "description='tavily_search_results_json(query=\"the search query\") - a search engine.' max_results=1 {'query': 'current temperature in San Francisco'}\n", + "---\n", + "name='math' description='math(problem: str, context: Optional[List[str]] = None, config: Optional[langchain_core.runnables.config.RunnableConfig] = None) - math(problem: str, context: Optional[list[str]]) -> float:\\n - Solves the provided math problem.\\n - `problem` can be either a simple math problem (e.g. \"1 + 3\") or a word problem (e.g. \"how many apples are there if there are 3 apples and 2 apples\").\\n - You cannot calculate multiple expressions in one call. For instance, `math(\\'1 + 3, 2 + 4\\')` does not work. If you need to calculate multiple expressions, you need to call them separately like `math(\\'1 + 3\\')` and then `math(\\'2 + 4\\')`\\n - Minimize the number of `math` actions as much as possible. For instance, instead of calling 2. math(\"what is the 10% of $1\") and then call 3. math(\"$1 + $2\"), you MUST call 2. math(\"what is the 110% of $1\") instead, which will reduce the number of math actions.\\n - You can optionally provide a list of strings as `context` to help the agent solve the problem. If there are multiple contexts you need to answer the question, you can provide them as a list of strings.\\n - `math` action will not see the output of the previous actions unless you provide it as `context`. You MUST provide the output of the previous actions as `context` if you need to do math on it.\\n - You MUST NEVER provide `search` type action\\'s outputs as a variable in the `problem` argument. This is because `search` returns a text blob that contains the information about the entity, not a number or value. Therefore, when you need to provide an output of `search` action, you MUST provide it as a `context` argument to `math` action. For example, 1. search(\"Barack Obama\") and then 2. math(\"age of $1\") is NEVER allowed. Use 2. math(\"age of Barack Obama\", context=[\"$1\"]) instead.\\n - When you ask a question about `context`, specify the units. For instance, \"what is xx in height?\" or \"what is xx in millions?\" instead of \"what is xx?\"' args_schema= func=.calculate_expression at 0x119a318a0> {'problem': 'pow($0, 3)', 'context': ['$0']}\n", + "---\n", + "join ()\n", + "---\n" + ] + } + ], + "source": [ + "example_question = \"What's the temperature in SF raised to the 3rd power?\"\n", + "\n", + "for task in planner.stream([HumanMessage(content=example_question)]):\n", + " print(task['tool'], task['args'])\n", + " print('---')" + ] + }, + { + "cell_type": "markdown", + "id": "5d0e795f-61ff-4553-9823-23e7624ca180", + "metadata": {}, + "source": [ + "## 3. Task Fetching Unit\n", + "\n", + "This component schedules the tasks. It receives a stream of tools of the following format:\n", + "\n", + "```typescript\n", + "{\n", + " tool: BaseTool,\n", + " dependencies: number[],\n", + "}\n", + "```\n", + "\n", + "The basic idea is to begin executing tools as soon as their dependencies are met. This is done through multi-threading." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "c1fbafdd-42d4-4575-8466-e5951cee71f4", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "outputs": [], + "source": [ + "from typing import Any, Union, Iterable, List, Tuple, Dict\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langchain_core.runnables import (\n", + " chain as as_runnable,\n", + ")\n", + "\n", + "from concurrent.futures import ThreadPoolExecutor, wait\n", + "import time\n", + "\n", + "\n", + "def _get_observations(messages: List[BaseMessage]) -> Dict[int, Any]:\n", + " # Get all previous tool responses\n", + " results = {}\n", + " for message in messages[::-1]:\n", + " if isinstance(message, FunctionMessage):\n", + " results[int(message.additional_kwargs[\"idx\"])] = message.content\n", + " return results\n", + "\n", + "class SchedulerInput(TypedDict):\n", + " messages: List[BaseMessage]\n", + " tasks: Iterable[Task]\n", + "\n", + "\n", + "def _execute_task(task, observations, config):\n", + " tool_to_use = task[\"tool\"]\n", + " if isinstance(tool_to_use, str):\n", + " return tool_to_use\n", + " args = task[\"args\"]\n", + " try:\n", + " if isinstance(args, str):\n", + " resolved_args = _resolve_arg(args, observations)\n", + " elif isinstance(args, dict):\n", + " resolved_args = {key: _resolve_arg(val, observations) for key, val in args.items()}\n", + " else:\n", + " # This will likely fail\n", + " resolved_args = args\n", + " except Exception as e:\n", + " return (\n", + " f\"ERROR(Failed to call {tool_to_use.name} with args {args}.)\"\n", + " f\" Args could not be resolved. Error: {repr(e)}\"\n", + " )\n", + " try:\n", + " return tool_to_use.invoke(resolved_args, config)\n", + " except Exception as e:\n", + " return (\n", + " f\"ERROR(Failed to call {tool_to_use.name} with args {args}.\"\n", + " + f\" Args resolved to {resolved_args}. Error: {repr(e)})\"\n", + " )\n", + "\n", + "\n", + "def _resolve_arg(arg: Union[str, Any], observations: Dict[int, Any]):\n", + " if isinstance(arg, str) and arg.startswith(\"$\"):\n", + " try:\n", + " stripped = arg[1:].replace(\".output\", \"\").strip(\"{}\")\n", + " idx = int(stripped)\n", + " except Exception:\n", + " return str(arg)\n", + " return str(observations[idx])\n", + " elif isinstance(arg, list):\n", + " return [_resolve_arg(a, observations) for a in arg]\n", + " else:\n", + " return str(arg)\n", + "\n", + "\n", + "@as_runnable\n", + "def schedule_task(task_inputs, config):\n", + " task: Task = task_inputs['task']\n", + " observations: Dict[int, Any] = task_inputs['observations']\n", + " try:\n", + " observation = _execute_task(task, observations, config)\n", + " except Exception:\n", + " import traceback\n", + " observation = traceback.format_exception() #repr(e) + \n", + " observations[task['idx']] = observation\n", + "\n", + "def schedule_pending_task(task: Task, observations: Dict[int, Any], retry_after: float = 0.2):\n", + " while True:\n", + " deps = task[\"dependencies\"]\n", + " if (\n", + " deps\n", + " and (\n", + " any([dep not in observations for dep in deps])\n", + " )\n", + " ):\n", + " # Dependencies not yet satisfied\n", + " time.sleep(retry_after)\n", + " continue\n", + " schedule_task.invoke({\"task\": task, \"observations\": observations})\n", + " break\n", + "\n", + "@as_runnable\n", + "def schedule_tasks(scheduler_input: SchedulerInput) -> List[FunctionMessage]:\n", + " \"\"\"Group the tasks into a DAG schedule.\"\"\"\n", + " # For streaming, we are making a few simplifying assumption:\n", + " # 1. The LLM does not create cyclic dependencies\n", + " # 2. That the LLM will not generate tasks with future deps\n", + " # If this ceases to be a good assumption, you can either\n", + " # adjust to do a proper topological sort (not-stream)\n", + " # or use a more complicated data structure\n", + " tasks = scheduler_input[\"tasks\"]\n", + " messages = scheduler_input[\"messages\"]\n", + " # If we are re-planning, we may have calls that depend on previous\n", + " # plans. Start with those.\n", + " observations = _get_observations(messages)\n", + " task_names = {}\n", + " originals = set(observations)\n", + " # ^^ We assume each task inserts a different key above to\n", + " # avoid race conditions...\n", + " futures = []\n", + " retry_after = 0.25 # Retry every quarter second\n", + " with ThreadPoolExecutor() as executor:\n", + " for task in tasks:\n", + " deps = task[\"dependencies\"]\n", + " task_names[task[\"idx\"]] = task[\"tool\"] if isinstance(task[\"tool\"], str) else task[\"tool\"].name\n", + " if (\n", + " # Depends on other tasks\n", + " deps\n", + " and (\n", + " any([dep not in observations for dep in deps])\n", + " )\n", + " ):\n", + " futures.append(executor.submit(schedule_pending_task, task, observations, retry_after))\n", + " else:\n", + " # No deps or all deps satisfied\n", + " # can schedule now\n", + " schedule_task.invoke(dict(task=task, observations=observations))\n", + " # futures.append(executor.submit(schedule_task.invoke dict(task=task, observations=observations)))\n", + "\n", + " # All tasks have been submitted or enqueued\n", + " # Wait for them to complete\n", + " wait(futures)\n", + " # Convert observations to new tool messages to add to the state\n", + " new_observations = {k: (task_names[k], observations[k]) for k in sorted(observations.keys() - originals)}\n", + " tool_messages = [\n", + " FunctionMessage(\n", + " name=name,\n", + " content=str(obs),\n", + " additional_kwargs={\"idx\": k}\n", + " ) for k, (name, obs) in new_observations.items()]\n", + " return tool_messages" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "052f6b16-103a-40e9-94dd-8fcc37e77ba4", + "metadata": {}, + "outputs": [], + "source": [ + "import itertools\n", + "\n", + "@as_runnable\n", + "def plan_and_schedule(messages: List[BaseMessage], config):\n", + " tasks = planner.stream(messages, config)\n", + " # Begin executing the planner immediately\n", + " tasks = itertools.chain([next(tasks)], tasks)\n", + " scheduled_tasks = schedule_tasks.invoke({\n", + " \"messages\": messages,\n", + " \"tasks\": tasks,\n", + " }, config)\n", + " return scheduled_tasks" + ] + }, + { + "cell_type": "markdown", + "id": "9efa15ae-817a-48c6-86ed-16bc112fedc5", + "metadata": {}, + "source": [ + "#### Example Plan\n", + "\n", + "We still haven't introduced any cycles in our computation graph, so this is all easily expressed in LCEL." + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "55142257-2674-4a47-988e-0d2810917329", + "metadata": {}, + "outputs": [], + "source": [ + "tool_messages = plan_and_schedule.invoke([HumanMessage(content=example_question)])" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "a98e0525-2fcf-4fa1-baf6-79858bb8a6bd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[FunctionMessage(content=\"[{'url': 'https://en.climate-data.org/north-america/united-states-of-america/california/san-francisco-385/t/september-9/', 'content': 'San Francisco Weather in September San Francisco weather in September San Francisco weather by month // weather averages 9.6 (49.2) 6.2 (43.2) 14 (57.3) Data: 1999 - 2019: avg. Sun hours San Francisco weather and climate for further months San Francisco weather in September // weather averages Airport close to San FranciscoJanuary February March April May June July August September October November December; Avg. Temperature °C (°F) 9.6 °C (49.2) °F. 10.5 °C (50.8) °F. 11.6 °C'}]\", additional_kwargs={'idx': 1}, name='tavily_search_results_json'),\n", + " FunctionMessage(content='1', additional_kwargs={'idx': 2}, name='math'),\n", + " FunctionMessage(content='join', additional_kwargs={'idx': 3}, name='join')]" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tool_messages" + ] + }, + { + "cell_type": "markdown", + "id": "563d5311-55f0-4ca1-afbd-01fd970cf3e3", + "metadata": {}, + "source": [ + "## 4. \"Joiner\" \n", + "\n", + "So now we have the planning and initial execution done. We need a component to process these outputs and either:\n", + "\n", + "1. Respond with the correct answer.\n", + "2. Loop with a new plan.\n", + "\n", + "The paper refers to this as the \"joiner\". It's another LLM call. We are using function calling to improve parsing reliability." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "942dab42-ad42-4ba2-90d5-49edbe4fae68", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain.chains.openai_functions import create_structured_output_runnable\n", + "from langchain_core.messages import AIMessage\n", + "\n", + "class FinalResponse(BaseModel):\n", + " \"\"\"The final response/answer.\"\"\"\n", + " response: str\n", + "\n", + "class Replan(BaseModel):\n", + " feedback: str = Field(description=\"Analysis of the previous attempts and recommendations on what needs to be fixed.\")\n", + "\n", + "class JoinOutputs(BaseModel):\n", + " \"\"\"Decide whether to replan or whether you can return the final response.\"\"\"\n", + " thought: str = Field(description=\"The chain of thought reasoning for the selected action\")\n", + " action: Union[FinalResponse, Replan]\n", + "\n", + "\n", + "joiner_prompt = hub.pull(\"wfh/llm-compiler-joiner\").partial(examples=\"\") # You can optionally add examples\n", + "llm = ChatOpenAI(model=\"gpt-4-turbo-preview\")\n", + "\n", + "runnable = create_structured_output_runnable(JoinOutputs, llm, joiner_prompt)" + ] + }, + { + "cell_type": "markdown", + "id": "fb50c4cd-947c-4a5d-a9f7-f0d92a10600f", + "metadata": {}, + "source": [ + "We will select only the most recent messages in the state, and format the output to be more useful for\n", + "the planner, should the agent need to loop." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "951a33cf-2a05-4a33-899a-0ab1d97122fa", + "metadata": {}, + "outputs": [], + "source": [ + "def _parse_joiner_output(decision: JoinOutputs) -> List[BaseMessage]:\n", + " response = [AIMessage(content=f\"Thought: {decision.thought}\")]\n", + " if isinstance(decision.action, Replan):\n", + " return response + [SystemMessage(content=f\"Context from last attempt: {decision.action.feedback}\")]\n", + " else:\n", + " return response + [AIMessage(content=decision.action.response)]\n", + "\n", + "\n", + "def select_recent_messages(messages: list) -> dict:\n", + " selected = []\n", + " for msg in messages[::-1]:\n", + " selected.append(msg)\n", + " if isinstance(msg, HumanMessage):\n", + " break\n", + " return {\"messages\": selected[::-1]}\n", + "\n", + "joiner = (\n", + " select_recent_messages\n", + " | runnable\n", + " | _parse_joiner_output\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "1e49d4b1-8266-4520-a566-1448b1c31c8f", + "metadata": {}, + "outputs": [], + "source": [ + "input_messages = [HumanMessage(content=example_question)] + tool_messages" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "31854dfd-b82f-4c24-9b58-6bae66777909", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[AIMessage(content=\"Thought: The information provided gives an average temperature for San Francisco in different months, but it doesn't specify the current temperature or any specific temperature to be raised to the 3rd power. Without the current temperature or a specific temperature value, it's impossible to calculate its value raised to the 3rd power.\"),\n", + " SystemMessage(content='Context from last attempt: The information provided is not sufficient to answer the question as it lacks the current temperature of San Francisco or any specific temperature value to be raised to the 3rd power. Need to find the current or a specific temperature to perform the calculation.')]" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "joiner.invoke(input_messages)" + ] + }, + { + "cell_type": "markdown", + "id": "b099e5ee-2c23-47d9-9387-0f64e02627d3", + "metadata": {}, + "source": [ + "## 5. Compose using LangGraph\n", + "\n", + "We'll define the agent as a stateful graph, with the main nodes being:\n", + "\n", + "1. Plan and execute (the DAG from the first step above)\n", + "2. Join: determine if we should finish or replan\n", + "3. Recontextualize: update the graph state based on the output from the joiner" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "768b5f11-e3d2-47be-8143-a7dcd8765243", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import MessageGraph, END\n", + "from typing import Dict\n", + "\n", + "graph_builder = MessageGraph()\n", + "\n", + "# 1. Define vertices\n", + "# We defined plan_and_schedule above already\n", + "# Assign each node to a state variable to update\n", + "graph_builder.add_node(\"plan_and_schedule\", plan_and_schedule)\n", + "graph_builder.add_node(\"join\", joiner)\n", + "\n", + "\n", + "## Define edges\n", + "graph_builder.add_edge(\"plan_and_schedule\", \"join\")\n", + "\n", + "### This condition determines looping logic\n", + "\n", + "\n", + "def should_continue(state: List[BaseMessage]):\n", + " if isinstance(state[-1], AIMessage):\n", + " return END\n", + " return \"plan_and_schedule\"\n", + "\n", + "graph_builder.add_conditional_edges(\n", + " start_key=\"join\",\n", + " # Next, we pass in the function that will determine which node is called next.\n", + " condition=should_continue,\n", + ")\n", + "graph_builder.set_entry_point(\"plan_and_schedule\")\n", + "chain = graph_builder.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "9f8c9849-8531-463d-a0ef-dcc3d9888b2d", + "metadata": {}, + "source": [ + "#### Simple question\n", + "\n", + "Let's ask a simple question of the agent." + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "5bc4584a-e31c-4065-805e-76a6db30676a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan_and_schedule': [FunctionMessage(content='[{\\'url\\': \\'https://www.statista.com/statistics/188087/gdp-of-the-us-federal-state-of-new-york-since-1997/\\', \\'content\\': \"Strategy and business building for the data-driven economy: U.S. real GDP of New York 2000-2022 Real gross domestic product of New York in the United States from 2000 to 2022 (in billion U.S. dollars) Economy U.S. New York metro area GDP 2001-2022 You only have access to basic statistics. U.S. state and local government outstanding debt 2021, by state Demographics Resident population in New York 1960-2022In 2022, the real gross domestic product (GDP) of New York was about 1.56 trillion U.S. dollars. This is an increase from the previous year, when the state\\'s GDP stood at 1.51 trillion...\"}]', additional_kwargs={'idx': 0}, name='tavily_search_results_json')]}\n", + "---\n", + "{'join': [AIMessage(content='Thought: The search result provides the information that in 2022, the real gross domestic product (GDP) of New York was about 1.56 trillion U.S. dollars.'), AIMessage(content='The GDP of New York in 2022 was about 1.56 trillion U.S. dollars.')]}\n", + "---\n", + "{'__end__': [HumanMessage(content=\"What's the GDP of New York?\"), FunctionMessage(content='[{\\'url\\': \\'https://www.statista.com/statistics/188087/gdp-of-the-us-federal-state-of-new-york-since-1997/\\', \\'content\\': \"Strategy and business building for the data-driven economy: U.S. real GDP of New York 2000-2022 Real gross domestic product of New York in the United States from 2000 to 2022 (in billion U.S. dollars) Economy U.S. New York metro area GDP 2001-2022 You only have access to basic statistics. U.S. state and local government outstanding debt 2021, by state Demographics Resident population in New York 1960-2022In 2022, the real gross domestic product (GDP) of New York was about 1.56 trillion U.S. dollars. This is an increase from the previous year, when the state\\'s GDP stood at 1.51 trillion...\"}]', additional_kwargs={'idx': 0}, name='tavily_search_results_json'), AIMessage(content='Thought: The search result provides the information that in 2022, the real gross domestic product (GDP) of New York was about 1.56 trillion U.S. dollars.'), AIMessage(content='The GDP of New York in 2022 was about 1.56 trillion U.S. dollars.')]}\n", + "---\n" + ] + } + ], + "source": [ + "for step in chain.stream([HumanMessage(content=\"What's the GDP of New York?\")]):\n", + " print(step)\n", + " print('---')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "b96efd08-5314-44f0-a694-3073b638adad", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The GDP of New York in 2022 was about 1.56 trillion U.S. dollars.\n" + ] + } + ], + "source": [ + "# Final answer\n", + "print(step[END][-1].content)" + ] + }, + { + "cell_type": "markdown", + "id": "33c65ef5-b4b2-4ab2-8c78-a551da7819b9", + "metadata": {}, + "source": [ + "#### Multi-hop question\n", + "\n", + "This question requires that the agent perform multiple searches." + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "0b3a0916-d8ca-4092-b91c-d9e2b05259d8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan_and_schedule': [FunctionMessage(content='[{\\'url\\': \\'https://savetheeaglesinternational.org/old-parrot/\\', \\'content\\': \"What Is The World\\'s Oldest Parrot? Living Long and Healthy Lives: A Look at the World’s Oldest Parrots certain parrot species are considered older: your parrot enters its senior years?One remarkable parrot that defied the odds and lived a long life is Cookie, a cockatoo who reached the impressive age of 83. Cookie spent his entire life at the Brookfield Zoo, serving as a testament to the exceptional care and environment provided by the zookeepers.\"}]', additional_kwargs={'idx': 1}, name='tavily_search_results_json'), FunctionMessage(content=\"[{'url': 'https://www.animalwised.com/how-long-does-a-parrot-live-3974.html', 'content': 'How Long Does a Parrot Live? How long does a parrot live in captivity? How long does a parrot live in the wild? Why do parrots live so long?Below is the average life expectancy of parrots in captivity, based on their species. Lovebirds. Lovebirds are members of the genus Agapornis, a small group of parrots in the parrot family Psittaculidae. The average life expectancy of a lovebird is between 12 and 15 years. Depending on care and circumstances, the bird can live up to 20 years ...'}]\", additional_kwargs={'idx': 2}, name='tavily_search_results_json'), FunctionMessage(content='join', additional_kwargs={'idx': 3}, name='join')]}\n", + "---\n", + "{'join': [AIMessage(content=\"Thought: The oldest parrot ever recorded is Cookie, a cockatoo, who lived to be 83 years old. However, the average lifespan provided is specifically for lovebirds, which is between 12 and 15 years. This information doesn't accurately reflect the average lifespan of all parrot species, which would be necessary to compare with Cookie's age accurately. Since parrots encompass a wide variety of species with different lifespans, the information on lovebirds' lifespan alone is insufficient for a comprehensive comparison.\"), SystemMessage(content=\"Context from last attempt: We need information on the average lifespan of parrots in general, not just lovebirds, to accurately compare with Cookie's age.\")]}\n", + "---\n", + "{'plan_and_schedule': [FunctionMessage(content='[{\\'url\\': \\'https://www.petmd.com/bird/how-long-do-parrots-live\\', \\'content\\': \"Average Parrot Lifespan and Aging How Long Do Parrots Live? How to Improve Your Parrot\\'s Lifespan Mcleod DVM, Lianne. The Spruce Pets. How Long do Pet Parrots and Other Birds Live?. 2023.Some pets, such as tortoises and parrots, may live for over 50 years. Because they are a lifelong commitment, lawyers often urge pet parents to provide documented plans for their pet parrots in their wills. Average Parrot Lifespan and Aging. Parrots are an incredibly diverse group of birds known by their scientific name: psittacines.\"}]', additional_kwargs={'idx': 4}, name='tavily_search_results_json')]}\n", + "---\n", + "{'join': [AIMessage(content=\"Thought: The information provided does not give a specific average lifespan for parrots in general, which is necessary for accurately comparing Cookie's age to the average lifespan of parrots. The search result mentions that parrots can live over 50 years but does not provide a detailed average lifespan applicable to all or most parrot species.\"), SystemMessage(content=\"Context from last attempt: We need information on the average lifespan of parrots in general to accurately compare with Cookie's age of 83 years. The provided information doesn't specify an average lifespan for parrots as a whole.\")]}\n", + "---\n", + "{'plan_and_schedule': [FunctionMessage(content='join', additional_kwargs={'idx': 5}, name='join')]}\n", + "---\n", + "{'join': [AIMessage(content=\"Thought: Despite multiple attempts, the specific average lifespan of parrots as a whole has not been provided. The information obtained mentions that parrots can live over 50 years, but a more precise average is necessary for a detailed comparison with Cookie's age of 83 years. However, it's clear that Cookie lived significantly longer than the average lifespan of many parrot species, including lovebirds which have an average lifespan of 12 to 15 years.\"), AIMessage(content=\"The oldest parrot on record is Cookie, a cockatoo, who lived to be 83 years old. While specific average lifespan information for all parrot species has not been provided, it's mentioned that some parrots can live over 50 years. This suggests that Cookie lived significantly longer than the average lifespan for many parrot species. For instance, lovebirds, a type of parrot, have an average lifespan of 12 to 15 years, indicating that Cookie's lifespan was exceptional among parrots.\")]}\n", + "---\n", + "{'__end__': [HumanMessage(content=\"What's the oldest parrot alive, and how much longer is that than the average?\"), FunctionMessage(content='[{\\'url\\': \\'https://savetheeaglesinternational.org/old-parrot/\\', \\'content\\': \"What Is The World\\'s Oldest Parrot? Living Long and Healthy Lives: A Look at the World’s Oldest Parrots certain parrot species are considered older: your parrot enters its senior years?One remarkable parrot that defied the odds and lived a long life is Cookie, a cockatoo who reached the impressive age of 83. Cookie spent his entire life at the Brookfield Zoo, serving as a testament to the exceptional care and environment provided by the zookeepers.\"}]', additional_kwargs={'idx': 1}, name='tavily_search_results_json'), FunctionMessage(content=\"[{'url': 'https://www.animalwised.com/how-long-does-a-parrot-live-3974.html', 'content': 'How Long Does a Parrot Live? How long does a parrot live in captivity? How long does a parrot live in the wild? Why do parrots live so long?Below is the average life expectancy of parrots in captivity, based on their species. Lovebirds. Lovebirds are members of the genus Agapornis, a small group of parrots in the parrot family Psittaculidae. The average life expectancy of a lovebird is between 12 and 15 years. Depending on care and circumstances, the bird can live up to 20 years ...'}]\", additional_kwargs={'idx': 2}, name='tavily_search_results_json'), FunctionMessage(content='join', additional_kwargs={'idx': 3}, name='join'), AIMessage(content=\"Thought: The oldest parrot ever recorded is Cookie, a cockatoo, who lived to be 83 years old. However, the average lifespan provided is specifically for lovebirds, which is between 12 and 15 years. This information doesn't accurately reflect the average lifespan of all parrot species, which would be necessary to compare with Cookie's age accurately. Since parrots encompass a wide variety of species with different lifespans, the information on lovebirds' lifespan alone is insufficient for a comprehensive comparison.\"), SystemMessage(content=\"Context from last attempt: We need information on the average lifespan of parrots in general, not just lovebirds, to accurately compare with Cookie's age. - Begin counting at : 4\"), FunctionMessage(content='[{\\'url\\': \\'https://www.petmd.com/bird/how-long-do-parrots-live\\', \\'content\\': \"Average Parrot Lifespan and Aging How Long Do Parrots Live? How to Improve Your Parrot\\'s Lifespan Mcleod DVM, Lianne. The Spruce Pets. How Long do Pet Parrots and Other Birds Live?. 2023.Some pets, such as tortoises and parrots, may live for over 50 years. Because they are a lifelong commitment, lawyers often urge pet parents to provide documented plans for their pet parrots in their wills. Average Parrot Lifespan and Aging. Parrots are an incredibly diverse group of birds known by their scientific name: psittacines.\"}]', additional_kwargs={'idx': 4}, name='tavily_search_results_json'), AIMessage(content=\"Thought: The information provided does not give a specific average lifespan for parrots in general, which is necessary for accurately comparing Cookie's age to the average lifespan of parrots. The search result mentions that parrots can live over 50 years but does not provide a detailed average lifespan applicable to all or most parrot species.\"), SystemMessage(content=\"Context from last attempt: We need information on the average lifespan of parrots in general to accurately compare with Cookie's age of 83 years. The provided information doesn't specify an average lifespan for parrots as a whole. - Begin counting at : 5\"), FunctionMessage(content='join', additional_kwargs={'idx': 5}, name='join'), AIMessage(content=\"Thought: Despite multiple attempts, the specific average lifespan of parrots as a whole has not been provided. The information obtained mentions that parrots can live over 50 years, but a more precise average is necessary for a detailed comparison with Cookie's age of 83 years. However, it's clear that Cookie lived significantly longer than the average lifespan of many parrot species, including lovebirds which have an average lifespan of 12 to 15 years.\"), AIMessage(content=\"The oldest parrot on record is Cookie, a cockatoo, who lived to be 83 years old. While specific average lifespan information for all parrot species has not been provided, it's mentioned that some parrots can live over 50 years. This suggests that Cookie lived significantly longer than the average lifespan for many parrot species. For instance, lovebirds, a type of parrot, have an average lifespan of 12 to 15 years, indicating that Cookie's lifespan was exceptional among parrots.\")]}\n", + "---\n" + ] + } + ], + "source": [ + "steps = chain.stream(\n", + " [HumanMessage(content=\"What's the oldest parrot alive, and how much longer is that than the average?\")],\n", + " {\n", + " \"recursion_limit\": 100,\n", + " },\n", + ")\n", + "for step in steps:\n", + " print(step)\n", + " print('---')" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "6c65c414-7668-4fdf-ba97-f42f659b1317", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The oldest parrot on record is Cookie, a cockatoo, who lived to be 83 years old. While specific average lifespan information for all parrot species has not been provided, it's mentioned that some parrots can live over 50 years. This suggests that Cookie lived significantly longer than the average lifespan for many parrot species. For instance, lovebirds, a type of parrot, have an average lifespan of 12 to 15 years, indicating that Cookie's lifespan was exceptional among parrots.\n" + ] + } + ], + "source": [ + "# Final answer\n", + "print(step[END][-1].content)" + ] + }, + { + "cell_type": "markdown", + "id": "1b859bc7-1a85-4d35-b57b-f67c87282403", + "metadata": {}, + "source": [ + "#### Multi-step math" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "38d3ea91-59ba-4267-8060-ed75bbc840c6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan_and_schedule': [FunctionMessage(content='3307.0', additional_kwargs={'idx': 0}, name='math'), FunctionMessage(content='7.565011820330969', additional_kwargs={'idx': 1}, name='math'), FunctionMessage(content='join', additional_kwargs={'idx': 2}, name='join')]}\n", + "{'join': [AIMessage(content='Thought: The first calculation resulted in 3307.0, and the second calculation gave 7.565011820330969. To find the sum of these two values, I will simply add them together.'), AIMessage(content='The sum of ((3*(4+5)/0.5)+3245) + 8 and 32/4.23 is approximately 3314.565.')]}\n", + "{'__end__': [HumanMessage(content=\"What's ((3*(4+5)/0.5)+3245) + 8? What's 32/4.23? What's the sum of those two values?\"), FunctionMessage(content='3307.0', additional_kwargs={'idx': 0}, name='math'), FunctionMessage(content='7.565011820330969', additional_kwargs={'idx': 1}, name='math'), FunctionMessage(content='join', additional_kwargs={'idx': 2}, name='join'), AIMessage(content='Thought: The first calculation resulted in 3307.0, and the second calculation gave 7.565011820330969. To find the sum of these two values, I will simply add them together.'), AIMessage(content='The sum of ((3*(4+5)/0.5)+3245) + 8 and 32/4.23 is approximately 3314.565.')]}\n" + ] + } + ], + "source": [ + "for step in chain.stream([HumanMessage(content=\"What's ((3*(4+5)/0.5)+3245) + 8? What's 32/4.23? What's the sum of those two values?\")]):\n", + " print(step)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "a6cf5fe0-f178-4197-950f-257711bff8d2", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The sum of ((3*(4+5)/0.5)+3245) + 8 and 32/4.23 is approximately 3314.565.\n" + ] + } + ], + "source": [ + "# Final answer\n", + "print(step[END][-1].content)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/plan-and-execute/llm_compiler/__init__.py b/examples/plan-and-execute/llm_compiler/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/examples/plan-and-execute/llm_compiler/ast_parser.py b/examples/plan-and-execute/llm_compiler/ast_parser.py new file mode 100644 index 000000000..1f7f0c9ae --- /dev/null +++ b/examples/plan-and-execute/llm_compiler/ast_parser.py @@ -0,0 +1,37 @@ +import ast +import re +from typing import Dict, Union + + +def get_args(s: str) -> Dict[str, Union[str, bool, int, list, dict, None]]: + # Extract the argument string + args_str = re.search(r"\((.*?)\)", s).group(1) + + # Split the arguments on comma, considering nested structures + args = re.split(r",(?![^[]*\]|[^(]*\))", args_str) + + # Create a dictionary from the split arguments + args_dict = {} + for arg in args: + key, value = arg.split("=", 1) + key = key.strip() + value = ast.literal_eval(value.strip()) + args_dict[key] = value + + return args_dict + + +if __name__ == "__main__": + # Should work on all these cases: + signatures = [ + 'func(a="foo", b=1, c=None, d=[1, 2, 3], e={"a": 1, "b": 2})', + 'another_func(idk={"nesting": {\'is\': ["fun", "right?"]}})', + 'once_more(a="How do you know that a = b?")', + ] + expected = [ + {"a": "foo", "b": 1, "c": None, "d": [1, 2, 3], "e": {"a": 1, "b": 2}}, + {"idk": {"nesting": {"is": ["fun", "right?"]}}}, + {"a": "How do you know that a = b?"}, + ] + for i, s in enumerate(signatures): + assert get_args(s) == expected[i] diff --git a/examples/plan-and-execute/llm_compiler/img/diagram.png b/examples/plan-and-execute/llm_compiler/img/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..01655a5ec4d11637ee426679e46d68773d6e2832 GIT binary patch literal 253693 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 Cb+mZ^ literal 0 HcmV?d00001 diff --git a/examples/plan-and-execute/llm_compiler/math_tools.py b/examples/plan-and-execute/llm_compiler/math_tools.py new file mode 100644 index 000000000..31b3cf65c --- /dev/null +++ b/examples/plan-and-execute/llm_compiler/math_tools.py @@ -0,0 +1,143 @@ +import math +import re +from typing import List, Optional + +import numexpr +from langchain.chains.openai_functions import create_structured_output_runnable +from langchain_community.chat_models import ChatOpenAI +from langchain_core.messages import SystemMessage +from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder +from langchain_core.pydantic_v1 import BaseModel, Field +from langchain_core.runnables import RunnableConfig +from langchain_core.tools import StructuredTool + +_MATH_DESCRIPTION = ( + "math(problem: str, context: Optional[list[str]]) -> float:\n" + " - Solves the provided math problem.\n" + ' - `problem` can be either a simple math problem (e.g. "1 + 3") or a word problem (e.g. "how many apples are there if there are 3 apples and 2 apples").\n' + " - You cannot calculate multiple expressions in one call. For instance, `math('1 + 3, 2 + 4')` does not work. " + "If you need to calculate multiple expressions, you need to call them separately like `math('1 + 3')` and then `math('2 + 4')`\n" + " - Minimize the number of `math` actions as much as possible. For instance, instead of calling " + '2. math("what is the 10% of $1") and then call 3. math("$1 + $2"), ' + 'you MUST call 2. math("what is the 110% of $1") instead, which will reduce the number of math actions.\n' + # Context specific rules below + " - You can optionally provide a list of strings as `context` to help the agent solve the problem. " + "If there are multiple contexts you need to answer the question, you can provide them as a list of strings.\n" + " - `math` action will not see the output of the previous actions unless you provide it as `context`. " + "You MUST provide the output of the previous actions as `context` if you need to do math on it.\n" + " - You MUST NEVER provide `search` type action's outputs as a variable in the `problem` argument. " + "This is because `search` returns a text blob that contains the information about the entity, not a number or value. " + "Therefore, when you need to provide an output of `search` action, you MUST provide it as a `context` argument to `math` action. " + 'For example, 1. search("Barack Obama") and then 2. math("age of $1") is NEVER allowed. ' + 'Use 2. math("age of Barack Obama", context=["$1"]) instead.\n' + " - When you ask a question about `context`, specify the units. " + 'For instance, "what is xx in height?" or "what is xx in millions?" instead of "what is xx?"\n' +) + + +_SYSTEM_PROMPT = """Translate a math problem into a expression that can be executed using Python's numexpr library. Use the output of running this code to answer the question. + +Question: ${{Question with math problem.}} +```text +${{single line mathematical expression that solves the problem}} +``` +...numexpr.evaluate(text)... +```output +${{Output of running the code}} +``` +Answer: ${{Answer}} + +Begin. + +Question: What is 37593 * 67? +ExecuteCode({{code: "37593 * 67"}}) +...numexpr.evaluate("37593 * 67")... +```output +2518731 +``` +Answer: 2518731 + +Question: 37593^(1/5) +ExecuteCode({{code: "37593**(1/5)"}}) +...numexpr.evaluate("37593**(1/5)")... +```output +8.222831614237718 +``` +Answer: 8.222831614237718 +""" + +_ADDITIONAL_CONTEXT_PROMPT = """The following additional context is provided from other functions.\ + Use it to substitute into any ${{#}} variables or other words in the problem.\ + \n\n${context}\n\nNote that context varibles are not defined in code yet.\ +You must extract the relevant numbers and directly put them in code.""" + + +class ExecuteCode(BaseModel): + """The input to the numexpr.evaluate() function.""" + + reasoning: str = Field( + ..., + description="The reasoning behind the code expression, including how context is included, if applicable.", + ) + + code: str = Field( + ..., + description="The simple code expresssion to execute by numexpr.evaluate().", + ) + + +def _evaluate_expression(expression: str) -> str: + try: + local_dict = {"pi": math.pi, "e": math.e} + output = str( + numexpr.evaluate( + expression.strip(), + global_dict={}, # restrict access to globals + local_dict=local_dict, # add common mathematical functions + ) + ) + except Exception as e: + raise ValueError( + f'Failed to evaluate "{expression}". Raised error: {repr(e)}.' + " Please try again with a valid numerical expression" + ) + + # Remove any leading and trailing brackets from the output + return re.sub(r"^\[|\]$", "", output) + + +def get_math_tool(llm: ChatOpenAI): + + prompt = ChatPromptTemplate.from_messages( + [ + ("system", _SYSTEM_PROMPT), + ("user", "{problem}"), + MessagesPlaceholder(variable_name="context", optional=True), + ] + ) + extractor = create_structured_output_runnable(ExecuteCode, llm, prompt) + + def calculate_expression( + problem: str, + context: Optional[List[str]] = None, + config: Optional[RunnableConfig] = None, + ): + chain_input = {"problem": problem} + if context: + context_str = "\n".join(context) + if context_str.strip(): + context_str = _ADDITIONAL_CONTEXT_PROMPT.format( + context=context_str.strip() + ) + chain_input["context"] = [SystemMessage(content=context_str)] + code_model = extractor.invoke(chain_input, config) + try: + return _evaluate_expression(code_model.code) + except Exception as e: + return repr(e) + + return StructuredTool.from_function( + name="math", + func=calculate_expression, + description=_MATH_DESCRIPTION, + ) diff --git a/examples/plan-and-execute/llm_compiler/output_parser.py b/examples/plan-and-execute/llm_compiler/output_parser.py new file mode 100644 index 000000000..daba5bb06 --- /dev/null +++ b/examples/plan-and-execute/llm_compiler/output_parser.py @@ -0,0 +1,177 @@ +import ast +import re +from typing import ( + Any, + Dict, + Iterator, + List, + Optional, + Sequence, + Tuple, + Union, +) + +from langchain_core.exceptions import OutputParserException +from langchain_core.messages import BaseMessage +from langchain_core.output_parsers.transform import BaseTransformOutputParser +from langchain_core.tools import BaseTool +from langchain_core.runnables import RunnableConfig +from typing_extensions import TypedDict + +THOUGHT_PATTERN = r"Thought: ([^\n]*)" +ACTION_PATTERN = r"\n*(\d+)\. (\w+)\((.*)\)(\s*#\w+\n)?" +# $1 or ${1} -> 1 +ID_PATTERN = r"\$\{?(\d+)\}?" +END_OF_PLAN = "" + + +### Helper functions + + +def _ast_parse(arg: str) -> Any: + try: + return ast.literal_eval(arg) + except: # noqa + return arg + + +def _parse_llm_compiler_action_args(args: str, tool: Union[str, BaseTool]) -> list[Any]: + """Parse arguments from a string.""" + if args == "": + return () + if isinstance(tool, str): + return () + extracted_args = {} + tool_key = None + prev_idx = None + for key in tool.args.keys(): + # Split if present + if f"{key}=" in args: + idx = args.index(f"{key}=") + if prev_idx is not None: + extracted_args[tool_key] = _ast_parse( + args[prev_idx:idx].strip().rstrip(",") + ) + args = args.split(f"{key}=", 1)[1] + tool_key = key + prev_idx = 0 + if prev_idx is not None: + extracted_args[tool_key] = _ast_parse( + args[prev_idx:].strip().rstrip(",").rstrip(")") + ) + return extracted_args + + +def default_dependency_rule(idx, args: str): + matches = re.findall(ID_PATTERN, args) + numbers = [int(match) for match in matches] + return idx in numbers + + +def _get_dependencies_from_graph( + idx: int, tool_name: str, args: Dict[str, Any] +) -> dict[str, list[str]]: + """Get dependencies from a graph.""" + if tool_name == "join": + return list(range(1, idx)) + return [i for i in range(1, idx) if default_dependency_rule(i, str(args))] + + +class Task(TypedDict): + idx: int + tool: BaseTool + args: list + dependencies: Dict[str, list] + thought: Optional[str] + + +def instantiate_task( + tools: Sequence[BaseTool], + idx: int, + tool_name: str, + args: Union[str, Any], + thought: Optional[str] = None, +) -> Task: + if tool_name == "join": + tool = "join" + else: + try: + tool = tools[[tool.name for tool in tools].index(tool_name)] + except ValueError as e: + raise OutputParserException(f"Tool {tool_name} not found.") from e + tool_args = _parse_llm_compiler_action_args(args, tool) + dependencies = _get_dependencies_from_graph(idx, tool_name, tool_args) + + return Task( + idx=idx, + tool=tool, + args=tool_args, + dependencies=dependencies, + thought=thought, + ) + + +class LLMCompilerPlanParser(BaseTransformOutputParser[dict], extra="allow"): + """Planning output parser.""" + + tools: List[BaseTool] + + def _transform(self, input: Iterator[Union[str, BaseMessage]]) -> Iterator[Task]: + texts = [] + # TODO: Cleanup tuple state tracking here. + thought = None + for chunk in input: + # Assume input is str. TODO: support vision/other formats + text = chunk if isinstance(chunk, str) else str(chunk.content) + for task, thought in self.ingest_token(text, texts, thought): + yield task + # Final possible task + if texts: + task, _ = self._parse_task("".join(texts), thought) + if task: + yield task + + def parse(self, text: str) -> List[Task]: + return list(self._transform([text])) + + def stream( + self, + input: str | BaseMessage, + config: RunnableConfig | None = None, + **kwargs: Any | None, + ) -> Iterator[Task]: + yield from self.transform([input], config, **kwargs) + + def ingest_token( + self, token: str, buffer: List[str], thought: Optional[str] + ) -> Iterator[Tuple[Optional[Task], str]]: + buffer.append(token) + if "\n" in token: + buffer_ = "".join(buffer).split("\n") + suffix = buffer_[-1] + for line in buffer_[:-1]: + task, thought = self._parse_task(line, thought) + if task: + yield task, thought + buffer.clear() + buffer.append(suffix) + + def _parse_task(self, line: str, thought: Optional[str] = None): + task = None + if match := re.match(THOUGHT_PATTERN, line): + # Optionally, action can be preceded by a thought + thought = match.group(1) + elif match := re.match(ACTION_PATTERN, line): + # if action is parsed, return the task, and clear the buffer + idx, tool_name, args, _ = match.groups() + idx = int(idx) + task = instantiate_task( + tools=self.tools, + idx=idx, + tool_name=tool_name, + args=args, + thought=thought, + ) + thought = None + # Else it is just dropped + return task, thought From ed3bf3c5ec605733f17a0eeee9176e300820b1cf Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Fri, 9 Feb 2024 16:04:36 -0800 Subject: [PATCH 024/108] del --- .../llm_compiler/LLMCompiler.ipynb | 1065 ----------------- .../llm_compiler/img/diagram.png | Bin 253693 -> 0 bytes .../llm_compiler/output_parser.py | 154 --- 3 files changed, 1219 deletions(-) delete mode 100644 examples/advanced_agents/llm_compiler/LLMCompiler.ipynb delete mode 100644 examples/advanced_agents/llm_compiler/img/diagram.png delete mode 100644 examples/advanced_agents/llm_compiler/output_parser.py diff --git a/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb b/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb deleted file mode 100644 index d42edc13f..000000000 --- a/examples/advanced_agents/llm_compiler/LLMCompiler.ipynb +++ /dev/null @@ -1,1065 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "0c8b472b-f3fb-46c2-841f-930a4692697b", - "metadata": {}, - "source": [ - "# Implementing LLMCompiler using LangGraph\n", - "By Kim, et. al [🔗](https://arxiv.org/abs/2312.04511)\n", - "\n", - "LLMCompiler is an agent architecture intented on speeding up the latency of agentic tasks via fast, parallel tool execution. It has 3 main components:\n", - "\n", - "1. Planner: generate a DAG of tasks.\n", - "2. Task Fetching Unit: schedules and executes the tasks\n", - "3. Joiner: Responds to the user or triggers a second plan\n", - "\n", - "\n", - "![diagram](./img/diagram.png)\n", - "\n", - "\n", - "This notebook walks through each component and shows how to wire them together using LangGraph. First, we will set up LangSmith for tracing, and configure our environment variables." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "abbd6948-e9a3-47ca-89c7-7ac2fc5eca8b", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import getpass\n", - "\n", - "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", - "os.environ[\"LANGCHAIN_PROJECT\"] = \"LLMCompiler\"\n", - "os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass(\"LangSmith API Key: \")\n", - "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"OpenAI API Key: \")" - ] - }, - { - "cell_type": "markdown", - "id": "1abdedbd-d81b-4ee9-b46f-f29439ed1350", - "metadata": {}, - "source": [ - "# Part 1: Planner\n", - "\n", - "\n", - "Largely adapted from [the original source code](https://github.com/SqueezeAILab/LLMCompiler/blob/main/src/llm_compiler/output_parser.py), the planner accepts the input question and generates a task list to execute.\n", - "\n", - "If it is provided with a previous plan, it is instructed to re-plan, which is useful if, upon completion of the first batch of tasks, the agent must take more actions.\n", - "\n", - "The code below composes constructs the prompt template for the planner and composes it with LLM and output parser, defined in [output_parser.py](./output_parser.py). The output parser processes a task list in the following form:\n", - "\n", - "```plaintext\n", - "1. tool_1(arg1=\"arg1\", arg2=3.5, ...)\n", - "Thought: I then want to find out Y by using tool_2\n", - "2. tool_2(arg1=\"\", arg2=\"${1}\")'\n", - "3. join()\"\n", - "```\n", - "\n", - "The \"Thought\" lines are optional. The `${#}` placeholders are variables. These are used to route tool (task) outputs to other tools." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "15dd9639-691f-4906-9012-83fd6e9ac126", - "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'llm_compiler'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 7\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain_core\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrunnables\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m RunnableBranch\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mlangchain_core\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtools\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m BaseTool\n\u001b[0;32m----> 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mllm_compiler\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01moutput_parser\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m LLMCompilerPlanParser\n\u001b[1;32m 9\u001b[0m END_OF_PLAN \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# The required extra \"tool\"\u001b[39;00m\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'llm_compiler'" - ] - } - ], - "source": [ - "from typing import Optional, Sequence\n", - "\n", - "from langchain.chat_models.base import BaseChatModel\n", - "from langchain_core.prompts import ChatPromptTemplate\n", - "from langchain_core.runnables import RunnableBranch\n", - "from langchain_core.tools import BaseTool\n", - "\n", - "from output_parser import LLMCompilerPlanParser\n", - "\n", - "END_OF_PLAN = \"\"\n", - "\n", - "\n", - "# The required extra \"tool\"\n", - "JOIN_DESCRIPTION = (\n", - " \"join():\\n\"\n", - " \" - Collects and combines results from prior actions.\\n\"\n", - " \" - A LLM agent is called upon invoking join to either finalize the user query or wait until the plans are executed.\\n\"\n", - " \" - join should always be the last action in the plan, and will be called in two scenarios:\\n\"\n", - " \" (a) if the answer can be determined by gathering the outputs from tasks to generate the final response.\\n\"\n", - " \" (b) if the answer cannot be determined in the planning phase before you execute the plans. \"\n", - ")\n", - "\n", - "planner_prompt_tmpl_str = (\n", - " \"Given a user query, create a plan to solve it with the utmost parallelizability. \"\n", - " \"Each plan should comprise an action from the following {num_tools} types:\\n\"\n", - " \"{tool_descriptions}\"\n", - " f\"\\n{{num_toolsp1}}. {JOIN_DESCRIPTION}\"\n", - " \"Guidelines:\\n\"\n", - " \" - Each action described above contains input/output types and description.\\n\"\n", - " \" - You must strictly adhere to the input and output types for each action.\\n\"\n", - " \" - The action descriptions contain the guidelines. You MUST strictly follow those guidelines when you use the actions.\\n\"\n", - " \" - Each action in the plan should strictly be one of the above types. Follow the Python conventions for each action.\\n\"\n", - " \" - Each action MUST have a unique ID, which is strictly increasing.\\n\"\n", - " \" - Inputs for actions can either be constants or outputs from preceding actions. \"\n", - " \"In the latter case, use the format $id to denote the ID of the previous action whose output will be the input.\\n\"\n", - " f\" - Always call join as the last action in the plan. Say '{END_OF_PLAN}' after you call join\\n\"\n", - " \" - Ensure the plan maximizes parallelizability.\\n\"\n", - " \" - Only use the provided action types. If a query cannot be addressed using these, invoke the join action for the next steps.\\n\"\n", - " \" - Never introduce new actions other than the ones provided.\\n\\n\"\n", - " \"{replan}\"\n", - " \"{examples}\"\n", - ")\n", - "\n", - "\n", - "def _generate_planner_prompt(\n", - " tools: Sequence[BaseTool],\n", - " example_prompt=str,\n", - "):\n", - " tool_descriptions = \"\\n\".join(\n", - " f\"{i+1}. {tool.name}: {tool.description}\" for i, tool in enumerate(tools)\n", - " )\n", - " planner_prompt_template = ChatPromptTemplate.from_messages(\n", - " [(\"system\", planner_prompt_tmpl_str), (\"user\", \"Question: {input}{context}\")]\n", - " ).partial(\n", - " tool_descriptions=tool_descriptions,\n", - " examples=\"Here are some examples:\\n\\n\" + example_prompt\n", - " if example_prompt\n", - " else \"\",\n", - " num_tools=len(tools),\n", - " num_toolsp1=len(tools) + 1,\n", - " )\n", - "\n", - " return planner_prompt_template\n", - "\n", - "\n", - "def create_planner(\n", - " llm: BaseChatModel,\n", - " example_prompt: str,\n", - " tools: Sequence[BaseTool],\n", - " stop: Optional[list[str]] = None,\n", - "):\n", - " og_planner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", - " replan=\"\",\n", - " context=\"\",\n", - " )\n", - " replanner_prompt = _generate_planner_prompt(tools, example_prompt).partial(\n", - " replan=' - You are given \"Previous Plan\" which is the plan that the previous agent created along with the execution results '\n", - " \"(given as Observation) of each plan and a general thought (given as Thought) about the executed results.\"\n", - " 'You MUST use these information to create the next plan under \"Current Plan\".\\n'\n", - " ' - When starting the Current Plan, you should start with \"Thought\" that outlines the strategy for the next plan.\\n'\n", - " \" - In the Current Plan, you should NEVER repeat the actions that are already executed in the Previous Plan.\\n\"\n", - " \" - You must continue the task index from the end of the previous one. Do not repeat task indices.\"\n", - " )\n", - " bound_llm = llm.bind(stop=stop)\n", - " return (\n", - " RunnableBranch(\n", - " ((lambda x: x.get(\"context\") is not None), replanner_prompt),\n", - " og_planner_prompt,\n", - " )\n", - " | bound_llm\n", - " | LLMCompilerPlanParser(tools=tools)\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "7feb5c82-b1a9-40ae-863a-0362fe3ce5ea", - "metadata": {}, - "source": [ - "#### Example usage\n", - "\n", - "Here's an example usage of the planner module." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "3fe074ea-7314-47a7-9a9f-a8e6191ea1f3", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Optional\n", - "\n", - "from langchain.tools import tool\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "\n", - "@tool\n", - "def get_user_id(first_name: str, last_name: str) -> Optional[int]:\n", - " \"\"\"Query the user IDs of everyone with the provided name.\"\"\"\n", - " student_ids = {\n", - " (\"Eric\", \"Zhang\"): 1432,\n", - " (\"Sam\", \"Van Damm\"): 8523,\n", - " (\"Will\", \"Van Damm\"): 2341,\n", - " }\n", - " return student_ids.get((first_name, last_name))\n", - "\n", - "\n", - "@tool\n", - "def get_scores(class_name: str, user_id: int) -> Optional[str]:\n", - " \"\"\"Query the class registry for grades of the provided user ID.\"\"\"\n", - " return {\n", - " (\"Geology\", 1432): \"A+\",\n", - " (\"Geology\", 8523): \"A\",\n", - " (\"Geology\", 2341): \"B\",\n", - " }.get((class_name, user_id))\n", - "\n", - "\n", - "examples = (\n", - " \"Question: What's the user ID for Johnny Drop Tables?\\n\"\n", - " '1. get_user_id(first_name=\"Johnny\", \"ast_name=\"Drop Tables\")\\n'\n", - " f\"2. join(){END_OF_PLAN}\\n\"\n", - " \"###\\n\"\n", - " \"\\n\"\n", - " \"Question: What was Eric Zhang's score in Calc?\\n\"\n", - " '1. get_user_id(\"Eric\")\\n'\n", - " '2. get_scores(\"calc\", \"$1\")\\n'\n", - " f\"3. join(){END_OF_PLAN}\\n\"\n", - " \"###\\n\"\n", - " \"\\n\"\n", - ")\n", - "\n", - "planner = create_planner(\n", - " ChatOpenAI(model=\"gpt-3.5-turbo\"),\n", - " example_prompt=examples,\n", - " tools=[get_user_id, get_scores],\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "55fb0f99-4e59-4e5a-b687-a90bb4d06d39", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{1: {'idx': 1,\n", - " 'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: str) -> Optional[int] - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", - " 'args': {'first_name': 'Sam', 'last_name': 'Van Damm'},\n", - " 'dependencies': [],\n", - " 'thought': None},\n", - " 2: {'idx': 2,\n", - " 'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: str) -> Optional[int] - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", - " 'args': {'first_name': 'Will', 'last_name': 'Van Damm'},\n", - " 'dependencies': [],\n", - " 'thought': None},\n", - " 3: {'idx': 3,\n", - " 'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", - " 'args': {'class_name': 'Calc BC', 'user_id': '$1'},\n", - " 'dependencies': [1],\n", - " 'thought': None},\n", - " 4: {'idx': 4,\n", - " 'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", - " 'args': {'class_name': 'Calc BC', 'user_id': '$2'},\n", - " 'dependencies': [2],\n", - " 'thought': None},\n", - " 5: {'idx': 5,\n", - " 'tool': 'join',\n", - " 'args': (),\n", - " 'dependencies': [1, 2, 3, 4],\n", - " 'thought': None}}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tasks = planner.invoke(\n", - " {\"input\": \"What are the Calc BC grades for Sam and Will Van Damm?\"}\n", - ")\n", - "tasks" - ] - }, - { - "cell_type": "markdown", - "id": "5d0e795f-61ff-4553-9823-23e7624ca180", - "metadata": {}, - "source": [ - "## 2. Task Fetching Unit\n", - "\n", - "This component schedules the tasks. In the paper, it's kept separate from the \"executor\", but here we create a single DAG defined in LangChain expression language.\n", - "\n", - "The basic idea is that, given a list of dicts of the form:\n", - "\n", - "```typescript\n", - "{\n", - " tool: BaseTool,\n", - " dependencies: number[],\n", - "}\n", - "```\n", - "\n", - "1. Create a topological sort of the tasks\n", - "2. Execute them on the previous step's output, ensuring to perform variable substitution where appropriate\n", - "\n", - "If we make the assumption that the tasks generated by the LLM are already sorted, we could adapt this to execute in a purely streaming fashion." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "c70a0e28-43db-4ea2-af48-8a2f310dce83", - "metadata": {}, - "outputs": [], - "source": [ - "import functools\n", - "from typing import Any, Union\n", - "\n", - "from langchain_core.runnables import (\n", - " RunnableLambda,\n", - " RunnableParallel,\n", - " RunnablePassthrough,\n", - ")\n", - "\n", - "\n", - "def _sort_tasks(data):\n", - " if not data:\n", - " return []\n", - " sorted_tasks = []\n", - " # Remove tasks already completed\n", - " min_idx = min([int(k) for k in data])\n", - " data = {\n", - " int(k): {\n", - " **v,\n", - " \"dependencies\": [dep for dep in v[\"dependencies\"] if dep >= min_idx],\n", - " }\n", - " for k, v in data.items()\n", - " }\n", - " while data:\n", - " no_deps = {k: v for k, v in data.items() if not v[\"dependencies\"]}\n", - " if not no_deps:\n", - " raise ValueError(\"We seem to have run into a circular dependency.\")\n", - "\n", - " sorted_tasks.append(no_deps)\n", - " data = {\n", - " k: {\n", - " **v,\n", - " \"dependencies\": [d for d in v[\"dependencies\"] if d not in no_deps],\n", - " }\n", - " for k, v in data.items()\n", - " if k not in no_deps\n", - " }\n", - " return sorted_tasks\n", - "\n", - "\n", - "def _resolve_arg(x: dict, arg: Union[str, Any]):\n", - " if isinstance(arg, str) and arg.startswith(\"$\"):\n", - " try:\n", - " return x[f\"task_{arg[1:]}\"]\n", - " except:\n", - " if arg.endswith(\".output\"):\n", - " return x[f\"task_{arg[1:-7]}\"]\n", - " raise\n", - " else:\n", - " return arg\n", - "\n", - "\n", - "def _execute_task(x, task):\n", - " tool_to_use = task[\"tool\"]\n", - " args = task[\"args\"]\n", - " if isinstance(args, str):\n", - " resolved_args = _resolve_arg(x, args)\n", - " elif isinstance(args, dict):\n", - " resolved_args = {key: _resolve_arg(x, val) for key, val in args.items()}\n", - " else:\n", - " # This will likely fail\n", - " resolved_args = args\n", - " try:\n", - " return tool_to_use.invoke(resolved_args)\n", - " except Exception as e:\n", - " return (\n", - " f\"ERROR(Failed to call tool {tool_to_use} with args {tool_to_use}.\"\n", - " + f\" Args resolved to {resolved_args}. Error: {repr(e)})\"\n", - " )\n", - "\n", - "\n", - "def construct_dag(tasks):\n", - " sorted_tasks = _sort_tasks(tasks)\n", - " chain = None\n", - " for idx, task_group in enumerate(sorted_tasks):\n", - " if len(task_group) == 1 and next(iter(task_group.values()))[\"tool\"] == \"join\":\n", - " step = lambda x: {\"join\": x}\n", - " else:\n", - " # Cascade all results forward\n", - " constructor = (\n", - " RunnableParallel if chain is None else RunnablePassthrough.assign\n", - " )\n", - " task_dict = {}\n", - " for idx, task in task_group.items():\n", - " task_dict[f\"task_{idx}\"] = RunnableLambda(\n", - " functools.partial(_execute_task, task=task)\n", - " ).with_config(run_name=f\"task_{idx}\")\n", - "\n", - " step = constructor(**task_dict).with_config(run_name=f\"TaskGroup{idx}\")\n", - " if chain is None:\n", - " chain = step\n", - " else:\n", - " chain |= step\n", - "\n", - " if chain is not None:\n", - " return chain | RunnablePassthrough.assign(tasks=lambda _: tasks)\n", - " return chain" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "87f11cea-3a8d-479c-8a9e-81223dbbc1f5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " +------------------------------+ \n", - " | ParallelInput | \n", - " +------------------------------+ \n", - " *** *** \n", - " ** ** \n", - " ** ** \n", - " +-------------+ +-------------+ \n", - " | Lambda(...) | | Lambda(...) | \n", - " +-------------+ +-------------+ \n", - " *** *** \n", - " ** ** \n", - " ** ** \n", - " +-------------------------------+ \n", - " | ParallelOutput | \n", - " +-------------------------------+ \n", - " * \n", - " * \n", - " * \n", - " +------------------------------+ \n", - " | ParallelInput | \n", - " +------------------------------+ \n", - " ***** * ***** \n", - " ***** * ***** \n", - " *** * *** \n", - "+-------------+ +-------------+ +-------------+ \n", - "| Lambda(...) | | Lambda(...) | | Passthrough | \n", - "+-------------+***** +-------------+ *****+-------------+ \n", - " ***** * ***** \n", - " ***** * ***** \n", - " *** * *** \n", - " +-------------------------------+ \n", - " | ParallelOutput | \n", - " +-------------------------------+ \n", - " * \n", - " * \n", - " * \n", - " +-------------------------------+ \n", - " | Lambda(lambda x: {'join': x}) | \n", - " +-------------------------------+ \n", - " * \n", - " * \n", - " * \n", - " +----------------------+ \n", - " | ParallelInput | \n", - " +----------------------+ \n", - " *** *** \n", - " *** *** \n", - " ** ** \n", - " +-------------------------+ +-------------+ \n", - " | Lambda(lambda _: tasks) | | Passthrough | \n", - " +-------------------------+ +-------------+ \n", - " *** *** \n", - " *** *** \n", - " ** ** \n", - " +-----------------------+ \n", - " | ParallelOutput | \n", - " +-----------------------+ \n" - ] - } - ], - "source": [ - "graph = construct_dag(tasks)\n", - "graph.get_graph().print_ascii()" - ] - }, - { - "cell_type": "markdown", - "id": "9efa15ae-817a-48c6-86ed-16bc112fedc5", - "metadata": {}, - "source": [ - "#### Example Plan\n", - "\n", - "We still haven't introduced any cycles in our computation graph, so this is all easily expressed in LCEL." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "133d124a-0d41-4c6d-a86a-34fa4cb1430f", - "metadata": {}, - "outputs": [], - "source": [ - "chain = planner | construct_dag" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "55142257-2674-4a47-988e-0d2810917329", - "metadata": {}, - "outputs": [], - "source": [ - "example_question = \"Did Sam Van Damm score higher than Eric Zhang in Geology?\"\n", - "task_results = chain.invoke({\"input\": example_question})\n", - "# task_results[\"join\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "9996d98f-0e73-471f-baa8-d8b72d10c7cf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'join': {'task_1': 8523,\n", - " 'task_2': 1432,\n", - " 'task_3': \"ERROR(Failed to call tool name='get_scores' description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.' args_schema= func= with args name='get_scores' description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.' args_schema= func=. Args resolved to {}. Error: ValidationError(model='get_scoresSchemaSchema', errors=[{'loc': ('class_name',), 'msg': 'field required', 'type': 'value_error.missing'}, {'loc': ('user_id',), 'msg': 'field required', 'type': 'value_error.missing'}]))\",\n", - " 'task_4': \"ERROR(Failed to call tool name='get_scores' description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.' args_schema= func= with args name='get_scores' description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.' args_schema= func=. Args resolved to {}. Error: ValidationError(model='get_scoresSchemaSchema', errors=[{'loc': ('class_name',), 'msg': 'field required', 'type': 'value_error.missing'}, {'loc': ('user_id',), 'msg': 'field required', 'type': 'value_error.missing'}]))\"},\n", - " 'tasks': {1: {'idx': 1,\n", - " 'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: str) -> Optional[int] - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", - " 'args': {'first_name': 'Sam', 'last_name': 'Van Damm'},\n", - " 'dependencies': [],\n", - " 'thought': None},\n", - " 2: {'idx': 2,\n", - " 'tool': StructuredTool(name='get_user_id', description='get_user_id(first_name: str, last_name: str) -> Optional[int] - Query the user IDs of everyone with the provided name.', args_schema=, func=),\n", - " 'args': {'first_name': 'Eric', 'last_name': 'Zhang'},\n", - " 'dependencies': [],\n", - " 'thought': None},\n", - " 3: {'idx': 3,\n", - " 'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", - " 'args': {},\n", - " 'dependencies': [],\n", - " 'thought': None},\n", - " 4: {'idx': 4,\n", - " 'tool': StructuredTool(name='get_scores', description='get_scores(class_name: str, user_id: int) -> Optional[str] - Query the class registry for grades of the provided user ID.', args_schema=, func=),\n", - " 'args': {},\n", - " 'dependencies': [],\n", - " 'thought': None},\n", - " 5: {'idx': 5,\n", - " 'tool': 'join',\n", - " 'args': (),\n", - " 'dependencies': [1, 2, 3, 4],\n", - " 'thought': None}}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "task_results" - ] - }, - { - "cell_type": "markdown", - "id": "563d5311-55f0-4ca1-afbd-01fd970cf3e3", - "metadata": {}, - "source": [ - "## 3. \"Joiner\" \n", - "\n", - "So now we have the planning and initial execution done. We need a component to process these outputs and either:\n", - "\n", - "1. Respond with the correct answer.\n", - "2. Loop with a new plan.\n", - "\n", - "The paper refers to this as the \"joiner\". It's another LLM call, defined below:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2978991e-45a4-44e6-9deb-f941f44fe93a", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.output_parsers import StrOutputParser\n", - "from typing_extensions import TypedDict\n", - "\n", - "\n", - "def format_task(task, idx):\n", - " tool = task[\"tool\"]\n", - " tool_name = tool if isinstance(tool, str) else tool.name # Handle join()\n", - " args = \", \".join([f\"{k}={v}\" for k, v in task[\"args\"].items()])\n", - " return f\"{idx}. {tool_name}({args})\"\n", - "\n", - "\n", - "def format_tasks(executor_output: dict):\n", - " tasks = executor_output[\"tasks\"]\n", - " prior_observations = executor_output.get(\"observations\")\n", - " joined_output = executor_output[\"join\"]\n", - " execution_results = []\n", - " for idx, task in tasks.items():\n", - " observation_idx = f\"task_{idx}\"\n", - " if observation_idx in joined_output:\n", - " observation = joined_output[observation_idx]\n", - " execution_results.append(f\"{format_task(task, idx)}\\n\\t=> {observation}\")\n", - " joined_results = \"\\n\".join(execution_results)\n", - " result = f\"Executed plan results:\\n{joined_results}\"\n", - " if prior_observations:\n", - " result += f\"\\nPrevious Results:\\n{prior_observations}\"\n", - " return result\n", - "\n", - "\n", - "def _parse_joiner_output(raw_answer: str) -> str:\n", - " thought, answer, is_replan = \"\", \"\", False # default values\n", - " raw_answers = raw_answer.split(\"\\n\")\n", - " for ans in raw_answers:\n", - " if ans.startswith(\"Action:\"):\n", - " answer = ans[ans.find(\"(\") + 1 : ans.find(\")\")]\n", - " is_replan = JOINER_REPLAN in ans\n", - " elif ans.startswith(\"Thought:\"):\n", - " thought = ans.split(\"Thought:\")[1].strip()\n", - " if is_replan:\n", - " return {\"thought\": thought, \"context\": answer}\n", - " else:\n", - " return {\"thought\": thought, \"answer\": answer}" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "b2feea5a-e0e4-4cff-8cb5-fdbfec95ba57", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.prompts import ChatPromptTemplate\n", - "\n", - "\n", - "def create_joiner(prompt, llm):\n", - " return (\n", - " (\n", - " lambda x: {\n", - " **x[\"plan\"],\n", - " \"input\": x[\"input\"],\n", - " \"context\": x.get(\"context\"),\n", - " \"observations\": x.get(\"observations\"),\n", - " }\n", - " )\n", - " | RunnablePassthrough.assign(scratchpad=format_tasks)\n", - " | ChatPromptTemplate.from_messages([(\"system\", prompt), (\"user\", \"{input}\")])\n", - " | llm\n", - " | StrOutputParser()\n", - " | _parse_joiner_output\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "942dab42-ad42-4ba2-90d5-49edbe4fae68", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'thought': 'The initial plan failed to get the scores for Sam Van Damm and Eric Zhang in Geology. In order to provide a final answer, I need these scores.',\n", - " 'context': \"We need to execute get_scores with class_name set to 'Geology' and user_id set to the respective IDs for Sam Van Damm (8523\"}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "JOINER_FINISH = \"Finish\"\n", - "JOINER_REPLAN = \"Replan\"\n", - "\n", - "system_prompt = (\n", - " \"Solve a question answering task. Here are some guidelines:\\n\"\n", - " \" - In the Assistant Scratchpad, you will be given results of a plan you have executed to answer the user's question.\\n\"\n", - " \" - Thought needs to reason about the question based on the Observations in 1-2 sentences.\\n\"\n", - " \" - Ignore irrelevant action results.\\n\"\n", - " \" - If the required information is present, give a concise but complete and helpful answer to the user's question.\\n\"\n", - " \" - If you are unable to give a satisfactory finishing answer, replan to get the required information.\"\n", - " \" Respond in the following format:\\n\\n\"\n", - " \"Thought: \\n\"\n", - " \"Action: \\n\"\n", - " \"Available actions:\\n\"\n", - " f\" (1) {JOINER_FINISH}(the final answer to return to the user): returns the answer and finishes the task.\\n\"\n", - " f\" (2) {JOINER_REPLAN}(the reasoning and other information that will help you plan again. Can be a line of any length): instructs why we must replan\\n\\n\"\n", - " \" Examples:\\n\"\n", - " \"Question: How many users are currently using the new product?\\n\"\n", - " \"...task returns the number 32,000\\n\"\n", - " \"Thought: I find no issue with the original plan, and the results satisfy everything in the user question.\\n\"\n", - " f\"Action: {JOINER_FINISH}(32,000 users currently use the new product)\\n###\\n\"\n", - " \"Question: How much cooler is it in NY than SF?\\n\"\n", - " \"...task results show SF is 57 degrees fahrenheit today, and they show in NY it has a high of 32 degrees fahrenheit \\n\"\n", - " \"Thought: I can answer by synthesizing the results.\\n\"\n", - " f\"Action: {JOINER_FINISH}(NY is 25 degrees cooler than SF today, as it has a high of 32 degrees Fahrenheit today, whereas in SF, it is 57 degrees Fahrenheit.)\\n###\\n\"\n", - " \"Question: Are the gophers beating the rabbits??\\n\"\n", - " \"...task returns the a score of 7 for rabbits but no other value...\\n\"\n", - " \"Thought: I need the gophers' score to make a final decision.\\n\"\n", - " f\"Action: {JOINER_REPLAN}(The rabbits have a score of 7, but I need the gophers' score.)\"\n", - " \"\\n\\nAssistant Scratchpad:\\n{scratchpad}\"\n", - ")\n", - "\n", - "\n", - "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-4\"))\n", - "joiner.invoke({\"plan\": task_results, \"input\": example_question})" - ] - }, - { - "cell_type": "markdown", - "id": "b099e5ee-2c23-47d9-9387-0f64e02627d3", - "metadata": {}, - "source": [ - "## Compose using LangGraph\n", - "\n", - "Now we have all the required pieces! Let's construct an LLMCompiler agent. We'll give it a search engine (Tavily) and a simple \"calculate\" function." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "565b08d2-d19c-4125-97f7-996fc01bc631", - "metadata": {}, - "outputs": [], - "source": [ - "os.environ[\"TAVILY_API_KEY\"] = (\n", - " os.environ.get(\"TAVILY_API_KEY\")\n", - " if \"TAVILY_API_KEY\" in os.environ\n", - " else getpass.getpass(\"Tavily API Key:\")\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "bd84ca4b-eacb-471d-9975-5449047b5bed", - "metadata": {}, - "outputs": [], - "source": [ - "from operator import add, mul, sub, truediv\n", - "from typing import Literal\n", - "\n", - "from langchain_community.agent_toolkits import GmailToolkit\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", - "from langchain_core.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def calculate(\n", - " arg1: float,\n", - " arg2: float,\n", - " op: Union[Literal[\"+\"], Literal[\"-\"], Literal[\"*\"], Literal[\"/\"]],\n", - "):\n", - " \"\"\"Calculate a mathematical operation on two arguments.\"\"\"\n", - " resolved_op = {\"+\": add, \"-\": sub, \"*\": mul, \"/\": truediv}\n", - " return resolved_op[op](arg1, arg2)\n", - "\n", - "\n", - "tools = [TavilySearchResults(max_results=1), calculate]" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "70566dff-d66e-4c8c-aed3-980522d175c2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4.0" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "calculate.invoke(dict(arg1=1, arg2=3, op=\"+\"))" - ] - }, - { - "cell_type": "markdown", - "id": "0ad5d62b-5898-4b9f-808f-c03620c2fe7a", - "metadata": {}, - "source": [ - "#### Defining the stateful graph\n", - "\n", - "We'll define the agent as a stateful graph, with the main nodes being:\n", - "\n", - "1. Plan and execute (the DAG from the first step above)\n", - "2. Join: determine if we should finish or replan\n", - "3. Recontextualize: update the graph state based on the output from the joiner\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "c5869ec6-b07f-4fb0-92a7-e6521f0c0bdd", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Dict\n", - "\n", - "MAX_ITERATIONS = 5\n", - "\n", - "\n", - "class GraphState(TypedDict):\n", - " input: str\n", - " plan: Dict\n", - " agent_output: Dict\n", - " observations: Dict\n", - " num_iterations: int # Maximum\n", - " context: str # Exra commentary for the joiner\n", - " stop_reason: str\n", - "\n", - "\n", - "def recontextualize(state):\n", - " # Insert a context string for the re-planner.\n", - " # This could alternatively call an LLM to provide additional logic\n", - " context = state[\"agent_output\"][\"context\"]\n", - " num_iterations = int(state.get(\"num_iterations\") or 1) + 1\n", - " formatted_tasks = format_tasks(state[\"plan\"])\n", - " context_str = f\"\\n\\nPrevious Plan:\\n{formatted_tasks}\\n\" f\"{context}\"\n", - " observations = state[\"observations\"] or {}\n", - " for task, observation in state[\"plan\"][\"join\"].items():\n", - " observations[task] = observation\n", - " return {\n", - " \"context\": context_str,\n", - " \"num_iterations\": num_iterations,\n", - " \"observations\": observations,\n", - " }\n", - "\n", - "\n", - "def add_stop_reason(state: GraphState):\n", - " # Helpful for letting the user know why the agent responded the way it did\n", - " num_iterations = int(state.get(\"num_iterations\") or 0)\n", - " if num_iterations >= MAX_ITERATIONS:\n", - " return {\"stop_reason\": \"end_max_iter\"}\n", - " if state[\"agent_output\"].get(\"answer\"):\n", - " return {\"stop_reason\": \"answer\"}\n", - " return {\"stop_reason\": None}" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "768b5f11-e3d2-47be-8143-a7dcd8765243", - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "\n", - "from langchain_core.tools import BaseTool\n", - "from langgraph.graph import END, StateGraph\n", - "\n", - "workflow = StateGraph(GraphState)\n", - "\n", - "# 1. Define vertices\n", - "\n", - "planner = create_planner(\n", - " llm=ChatOpenAI(model=\"gpt-4-1106-preview\"),\n", - " # Add more examples to improve reliability\n", - " example_prompt=(\n", - " \"Question: What's the capital of Myanmar?\\n\"\n", - " '1. tavily_search_results_json(query=\"Capital of Myanmar)\\n'\n", - " f\"2. join(){END_OF_PLAN}\\n\"\n", - " \"###\\n\"\n", - " \"\\n\"\n", - " ),\n", - " tools=tools,\n", - ")\n", - "\n", - "plan_and_execute = planner | construct_dag\n", - "joiner = create_joiner(system_prompt, ChatOpenAI(model=\"gpt-4-1106-preview\"))\n", - "\n", - "\n", - "# Assign each node to a state variable to update\n", - "workflow.add_node(\"plan_and_execute\", RunnablePassthrough.assign(plan=plan_and_execute))\n", - "workflow.add_node(\"join\", RunnablePassthrough.assign(agent_output=joiner))\n", - "workflow.add_node(\"recontextualize\", recontextualize)\n", - "workflow.add_node(\"provide_stop_reason\", add_stop_reason)\n", - "\n", - "\n", - "## Define edges\n", - "\n", - "workflow.add_edge(\"plan_and_execute\", \"join\")\n", - "workflow.add_edge(\"recontextualize\", \"plan_and_execute\")\n", - "workflow.add_edge(\"join\", \"provide_stop_reason\")\n", - "\n", - "### This condition determines looping logic\n", - "\n", - "\n", - "def should_continue(state):\n", - " if state[\"stop_reason\"] is None:\n", - " return \"continue\"\n", - " return \"end\"\n", - "\n", - "\n", - "workflow.add_conditional_edges(\n", - " start_key=\"provide_stop_reason\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " condition=should_continue,\n", - " conditional_edge_mapping={\n", - " # If it generates context, we must replan\n", - " \"continue\": \"recontextualize\",\n", - " # Otherwise we finish.\n", - " \"end\": END,\n", - " },\n", - ")\n", - "workflow.set_entry_point(\"plan_and_execute\")\n", - "chain = workflow.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "9f8c9849-8531-463d-a0ef-dcc3d9888b2d", - "metadata": {}, - "source": [ - "## Simple question\n", - "\n", - "Let's ask a simple question of the agent." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "5bc4584a-e31c-4065-805e-76a6db30676a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "In 2022, the real GDP of New York was about 1.56 trillion U.S. dollars.\n" - ] - } - ], - "source": [ - "result = chain.invoke({\"input\": \"What's the GDP of New York?\"})\n", - "print(result[\"agent_output\"][\"answer\"])" - ] - }, - { - "cell_type": "markdown", - "id": "33c65ef5-b4b2-4ab2-8c78-a551da7819b9", - "metadata": {}, - "source": [ - "## Multi-hop question" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "0b3a0916-d8ca-4092-b91c-d9e2b05259d8", - "metadata": {}, - "outputs": [], - "source": [ - "result = chain.invoke(\n", - " {\n", - " \"input\": \"What's the oldest parrot alive, and how much longer is that than the average?\"\n", - " },\n", - " {\n", - " \"recursion_limit\": 100,\n", - " },\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "6c65c414-7668-4fdf-ba97-f42f659b1317", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cookie, a cockatoo, was the oldest parrot alive, having reached the age of 83, which is 23 years longer than the maximum average lifespan of a cockatoo in captivity, which is 60 years.\n" - ] - } - ], - "source": [ - "print(result[\"agent_output\"][\"answer\"])" - ] - }, - { - "cell_type": "markdown", - "id": "1b859bc7-1a85-4d35-b57b-f67c87282403", - "metadata": {}, - "source": [ - "## Streaming" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "38d3ea91-59ba-4267-8060-ed75bbc840c6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Step: {'plan_and...\n", - "Step: {'join': {...\n", - "Step: {'provide_...\n", - "Step: {'recontex...\n", - "Step: {'plan_and...\n", - "Step: {'join': {...\n", - "Step: {'provide_...\n", - "Step: {'__end__'...\n", - "3307.0\n" - ] - } - ], - "source": [ - "last_step = None\n", - "for step in chain.stream({\"input\": \"What's ((3*(4+5)/0.5)+3245) + 8?\"}):\n", - " print(\"Step: \", str(step)[:10] + \"...\")\n", - " last_step = step\n", - "print(\"***\")\n", - "print(last_step[\"__end__\"][\"agent_output\"][\"answer\"])" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/advanced_agents/llm_compiler/img/diagram.png b/examples/advanced_agents/llm_compiler/img/diagram.png deleted file mode 100644 index 01655a5ec4d11637ee426679e46d68773d6e2832..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253693 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 Cb+mZ^ diff --git a/examples/advanced_agents/llm_compiler/output_parser.py b/examples/advanced_agents/llm_compiler/output_parser.py deleted file mode 100644 index e8590bb17..000000000 --- a/examples/advanced_agents/llm_compiler/output_parser.py +++ /dev/null @@ -1,154 +0,0 @@ -import re -from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple, Union -import ast - -from langchain_core.exceptions import OutputParserException -from langchain_core.messages import BaseMessage -from langchain_core.output_parsers import BaseOutputParser -from langchain_core.tools import BaseTool - -THOUGHT_PATTERN = r"Thought: ([^\n]*)" -ACTION_PATTERN = r"\n*(\d+)\. (\w+)\((.*)\)(\s*#\w+\n)?" -# $1 or ${1} -> 1 -ID_PATTERN = r"\$\{?(\d+)\}?" -END_OF_PLAN = "" - - -### Helper functions - - -def _ast_parse(arg: str) -> Any: - try: - return ast.literal_eval(arg) - except: # noqa - return arg - - -def _parse_llm_compiler_action_args(args: str, tool: Union[str, BaseTool]) -> list[Any]: - """Parse arguments from a string.""" - if args == "": - return () - if isinstance(tool, str): - return () - extracted_args = {} - tool_key = None - prev_idx = None - for key in tool.args.keys(): - # Split if present - if f"{key}=" in args: - idx = args.index(f"{key}=") - if prev_idx is not None: - # print(tool_key, flush=True) - # breakpoint() - extracted_args[tool_key] = _ast_parse( - args[prev_idx:idx].strip().rstrip(",") - ) - args = args.split(f"{key}=", 1)[1] - tool_key = key - prev_idx = 0 - if prev_idx is not None: - extracted_args[tool_key] = _ast_parse( - args[prev_idx:].strip().rstrip(",").rstrip(")") - ) - return extracted_args - - -def default_dependency_rule(idx, args: str): - matches = re.findall(ID_PATTERN, args) - numbers = [int(match) for match in matches] - return idx in numbers - - -def _get_dependencies_from_graph( - idx: int, tool_name: str, args: Dict[str, Any] -) -> dict[str, list[str]]: - """Get dependencies from a graph.""" - if tool_name == "join": - return list(range(1, idx)) - return [i for i in range(1, idx) if default_dependency_rule(i, str(args))] - - -def instantiate_task( - tools: Sequence[BaseTool], - idx: int, - tool_name: str, - args: Union[str, Any], - thought: Optional[str] = None, -) -> dict: - if tool_name == "join": - tool = "join" - else: - try: - tool = tools[[tool.name for tool in tools].index(tool_name)] - except ValueError as e: - raise OutputParserException(f"Tool {tool_name} not found.") from e - tool_args = _parse_llm_compiler_action_args(args, tool) - dependencies = _get_dependencies_from_graph(idx, tool_name, tool_args) - - return dict( - idx=idx, - tool=tool, - args=tool_args, - dependencies=dependencies, - thought=thought, - ) - - -class LLMCompilerPlanParser(BaseOutputParser[dict], extra="allow"): - """Planning output parser.""" - - tools: List[BaseTool] - - def _transform(self, input: Iterator[Union[str, BaseMessage]]) -> Iterator[dict]: - texts = [] - thought = None - for chunk in input: - # Assume input is str. TODO: support vision/other formats - text = chunk if isinstance(chunk, str) else str(chunk.content) - for task, thought in self.ingest_token(text, texts, thought): - yield {task["idx"]: task} - # Final possible task - if texts: - task, _ = self._parse_task("".join(texts), thought) - if task: - yield {task["idx"]: task} - - def parse(self, text: str): - task_dict = {} - for task in self._transform([text]): - task_dict.update(task) - return task_dict - - def ingest_token( - self, token: str, buffer: List[str], thought: Optional[str] - ) -> Iterator[Tuple[Optional[dict], str]]: - buffer.append(token) - if "\n" in token: - buffer_ = "".join(buffer).split("\n") - suffix = buffer_[-1] - for line in buffer_[:-1]: - task, thought = self._parse_task(line, thought) - if task: - yield task, thought - buffer.clear() - buffer.append(suffix) - - def _parse_task(self, line: str, thought: Optional[str] = None): - task = None - if match := re.match(THOUGHT_PATTERN, line): - # Optionally, action can be preceded by a thought - thought = match.group(1) - elif match := re.match(ACTION_PATTERN, line): - # if action is parsed, return the task, and clear the buffer - idx, tool_name, args, _ = match.groups() - idx = int(idx) - task = instantiate_task( - tools=self.tools, - idx=idx, - tool_name=tool_name, - args=args, - thought=thought, - ) - thought = None - # Else it is just dropped - return task, thought From c26a8675c39ad537c5edfb202fdf73ecc412bd26 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Fri, 9 Feb 2024 16:05:51 -0800 Subject: [PATCH 025/108] rename --- .../llm_compiler => llm-compiler}/LLMCompiler.ipynb | 0 .../llm_compiler => llm-compiler}/__init__.py | 0 .../llm_compiler => llm-compiler}/ast_parser.py | 0 .../llm_compiler => llm-compiler}/img/diagram.png | Bin .../llm_compiler => llm-compiler}/math_tools.py | 0 .../llm_compiler => llm-compiler}/output_parser.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename examples/{plan-and-execute/llm_compiler => llm-compiler}/LLMCompiler.ipynb (100%) rename examples/{plan-and-execute/llm_compiler => llm-compiler}/__init__.py (100%) rename examples/{plan-and-execute/llm_compiler => llm-compiler}/ast_parser.py (100%) rename examples/{plan-and-execute/llm_compiler => llm-compiler}/img/diagram.png (100%) rename examples/{plan-and-execute/llm_compiler => llm-compiler}/math_tools.py (100%) rename examples/{plan-and-execute/llm_compiler => llm-compiler}/output_parser.py (100%) diff --git a/examples/plan-and-execute/llm_compiler/LLMCompiler.ipynb b/examples/llm-compiler/LLMCompiler.ipynb similarity index 100% rename from examples/plan-and-execute/llm_compiler/LLMCompiler.ipynb rename to examples/llm-compiler/LLMCompiler.ipynb diff --git a/examples/plan-and-execute/llm_compiler/__init__.py b/examples/llm-compiler/__init__.py similarity index 100% rename from examples/plan-and-execute/llm_compiler/__init__.py rename to examples/llm-compiler/__init__.py diff --git a/examples/plan-and-execute/llm_compiler/ast_parser.py b/examples/llm-compiler/ast_parser.py similarity index 100% rename from examples/plan-and-execute/llm_compiler/ast_parser.py rename to examples/llm-compiler/ast_parser.py diff --git a/examples/plan-and-execute/llm_compiler/img/diagram.png b/examples/llm-compiler/img/diagram.png similarity index 100% rename from examples/plan-and-execute/llm_compiler/img/diagram.png rename to examples/llm-compiler/img/diagram.png diff --git a/examples/plan-and-execute/llm_compiler/math_tools.py b/examples/llm-compiler/math_tools.py similarity index 100% rename from examples/plan-and-execute/llm_compiler/math_tools.py rename to examples/llm-compiler/math_tools.py diff --git a/examples/plan-and-execute/llm_compiler/output_parser.py b/examples/llm-compiler/output_parser.py similarity index 100% rename from examples/plan-and-execute/llm_compiler/output_parser.py rename to examples/llm-compiler/output_parser.py From 61a854aabc12fa1af9161eaacbbd59d926da26f7 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Fri, 9 Feb 2024 16:07:23 -0800 Subject: [PATCH 026/108] format --- examples/llm-compiler/math_tools.py | 1 - examples/llm-compiler/output_parser.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/llm-compiler/math_tools.py b/examples/llm-compiler/math_tools.py index 31b3cf65c..74e7a0736 100644 --- a/examples/llm-compiler/math_tools.py +++ b/examples/llm-compiler/math_tools.py @@ -107,7 +107,6 @@ def _evaluate_expression(expression: str) -> str: def get_math_tool(llm: ChatOpenAI): - prompt = ChatPromptTemplate.from_messages( [ ("system", _SYSTEM_PROMPT), diff --git a/examples/llm-compiler/output_parser.py b/examples/llm-compiler/output_parser.py index daba5bb06..02ea60284 100644 --- a/examples/llm-compiler/output_parser.py +++ b/examples/llm-compiler/output_parser.py @@ -14,8 +14,8 @@ from typing import ( from langchain_core.exceptions import OutputParserException from langchain_core.messages import BaseMessage from langchain_core.output_parsers.transform import BaseTransformOutputParser -from langchain_core.tools import BaseTool from langchain_core.runnables import RunnableConfig +from langchain_core.tools import BaseTool from typing_extensions import TypedDict THOUGHT_PATTERN = r"Thought: ([^\n]*)" From a319cbf521fff440773b212fba26897707b883ae Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Fri, 9 Feb 2024 16:08:18 -0800 Subject: [PATCH 027/108] rm file --- examples/llm-compiler/ast_parser.py | 37 ----------------------------- 1 file changed, 37 deletions(-) delete mode 100644 examples/llm-compiler/ast_parser.py diff --git a/examples/llm-compiler/ast_parser.py b/examples/llm-compiler/ast_parser.py deleted file mode 100644 index 1f7f0c9ae..000000000 --- a/examples/llm-compiler/ast_parser.py +++ /dev/null @@ -1,37 +0,0 @@ -import ast -import re -from typing import Dict, Union - - -def get_args(s: str) -> Dict[str, Union[str, bool, int, list, dict, None]]: - # Extract the argument string - args_str = re.search(r"\((.*?)\)", s).group(1) - - # Split the arguments on comma, considering nested structures - args = re.split(r",(?![^[]*\]|[^(]*\))", args_str) - - # Create a dictionary from the split arguments - args_dict = {} - for arg in args: - key, value = arg.split("=", 1) - key = key.strip() - value = ast.literal_eval(value.strip()) - args_dict[key] = value - - return args_dict - - -if __name__ == "__main__": - # Should work on all these cases: - signatures = [ - 'func(a="foo", b=1, c=None, d=[1, 2, 3], e={"a": 1, "b": 2})', - 'another_func(idk={"nesting": {\'is\': ["fun", "right?"]}})', - 'once_more(a="How do you know that a = b?")', - ] - expected = [ - {"a": "foo", "b": 1, "c": None, "d": [1, 2, 3], "e": {"a": 1, "b": 2}}, - {"idk": {"nesting": {"is": ["fun", "right?"]}}}, - {"a": "How do you know that a = b?"}, - ] - for i, s in enumerate(signatures): - assert get_args(s) == expected[i] From f1523f3e8dc35bed5128187456379cee6524afe4 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Sat, 10 Feb 2024 11:39:38 -0800 Subject: [PATCH 028/108] Add interrupt_after arg to .compile() --- langgraph/graph/graph.py | 12 ++++++++---- langgraph/graph/state.py | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/langgraph/graph/graph.py b/langgraph/graph/graph.py index f3fa36085..cfc1401f8 100644 --- a/langgraph/graph/graph.py +++ b/langgraph/graph/graph.py @@ -123,8 +123,11 @@ class Graph: self, checkpointer: Optional[BaseCheckpointSaver] = None, interrupt_before: Optional[Sequence[str]] = None, + interrupt_after: Optional[Sequence[str]] = None, ) -> Pregel: - self.validate(interrupt=interrupt_before) + interrupt_before = interrupt_before or [] + interrupt_after = interrupt_after or [] + self.validate(interrupt=interrupt_before + interrupt_after) outgoing_edges = defaultdict(list) for start, end in self.edges: @@ -154,7 +157,8 @@ class Graph: output=END, hidden=[f"{node}:inbox" for node in self.nodes], checkpointer=checkpointer, - interrupt=[f"{node}:inbox" for node in interrupt_before] - if interrupt_before - else [], + interrupt=( + [f"{node}:inbox" for node in interrupt_before] + + [node for node in interrupt_after] + ), ) diff --git a/langgraph/graph/state.py b/langgraph/graph/state.py index fcfab0425..f011652d6 100644 --- a/langgraph/graph/state.py +++ b/langgraph/graph/state.py @@ -38,8 +38,11 @@ class StateGraph(Graph): self, checkpointer: Optional[BaseCheckpointSaver] = None, interrupt_before: Optional[Sequence[str]] = None, + interrupt_after: Optional[Sequence[str]] = None, ) -> Pregel: - self.validate(interrupt=interrupt_before) + interrupt_before = interrupt_before or [] + interrupt_after = interrupt_after or [] + self.validate(interrupt=interrupt_before + interrupt_after) state_keys = list(self.channels) state_keys_read = state_keys[0] if state_keys == ["__root__"] else state_keys @@ -102,9 +105,10 @@ class StateGraph(Graph): output=END, hidden=[f"{node}:inbox" for node in self.nodes] + [START] + state_keys, checkpointer=checkpointer, - interrupt=[f"{node}:inbox" for node in interrupt_before] - if interrupt_before - else [], + interrupt=( + [f"{node}:inbox" for node in interrupt_before] + + [node for node in interrupt_after] + ), ) From 979b73525666a087f4d3f9e4ec7b539789551c85 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 17 Jan 2024 10:32:33 -0800 Subject: [PATCH 029/108] Allow fan-in in stategraph --- langgraph/channels/last_value.py | 7 ++-- langgraph/graph/state.py | 8 ++++- tests/test_pregel.py | 60 ++++++++++++++++++++++++++++++++ tests/test_pregel_async.py | 60 ++++++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+), 4 deletions(-) diff --git a/langgraph/channels/last_value.py b/langgraph/channels/last_value.py index 858943c91..207423539 100644 --- a/langgraph/channels/last_value.py +++ b/langgraph/channels/last_value.py @@ -14,8 +14,9 @@ from langgraph.channels.base import ( class LastValue(Generic[Value], BaseChannel[Value, Value, Value]): """Stores the last value received, can receive at most one value per step.""" - def __init__(self, typ: Type[Value]) -> None: + def __init__(self, typ: Type[Value], guard: bool = True) -> None: self.typ = typ + self.guard = guard @property def ValueType(self) -> Type[Value]: @@ -29,7 +30,7 @@ class LastValue(Generic[Value], BaseChannel[Value, Value, Value]): @contextmanager def empty(self, checkpoint: Optional[Value] = None) -> Generator[Self, None, None]: - empty = self.__class__(self.typ) + empty = self.__class__(self.typ, self.guard) if checkpoint is not None: empty.value = checkpoint try: @@ -43,7 +44,7 @@ class LastValue(Generic[Value], BaseChannel[Value, Value, Value]): def update(self, values: Sequence[Value]) -> None: if len(values) == 0: return - if len(values) != 1: + if len(values) != 1 and self.guard: raise InvalidUpdateError("LastValue can only receive one value per step.") self.value = values[-1] diff --git a/langgraph/graph/state.py b/langgraph/graph/state.py index fcfab0425..19be561e9 100644 --- a/langgraph/graph/state.py +++ b/langgraph/graph/state.py @@ -70,6 +70,12 @@ class StateGraph(Graph): ) for key, node in self.nodes.items() } + node_inboxes = { + # we can take any value written to channel because all writers + # write the entire state as of that step, which is equal for all writers + f"{key}:inbox": LastValue(Any, guard=False) + for key in self.nodes + } for key in self.nodes: outgoing = outgoing_edges[key] @@ -97,7 +103,7 @@ class StateGraph(Graph): return Pregel( nodes=nodes, - channels=self.channels, + channels={**self.channels, **node_inboxes}, input=f"{START}:inbox", output=END, hidden=[f"{node}:inbox" for node in self.nodes] + [START] + state_keys, diff --git a/tests/test_pregel.py b/tests/test_pregel.py index f9fef277b..b22d1f689 100644 --- a/tests/test_pregel.py +++ b/tests/test_pregel.py @@ -1381,3 +1381,63 @@ def test_message_graph() -> None: ] }, ] + + +def test_in_one_fan_out_out_one_graph_state() -> None: + def sorted_add(x: list[str], y: list[str]) -> list[str]: + return sorted(operator.add(x, y)) + + class State(TypedDict, total=False): + query: str + answer: str + docs: Annotated[list[str], sorted_add] + + def rewrite_query(data: State) -> State: + return {"query": f'query: {data["query"]}'} + + def retriever_one(data: State) -> State: + return {"docs": ["doc1", "doc2"]} + + def retriever_two(data: State) -> State: + return {"docs": ["doc3", "doc4"]} + + def qa(data: State) -> State: + return {"answer": ",".join(data["docs"])} + + workflow = StateGraph(State) + + workflow.add_node("rewrite_query", rewrite_query) + workflow.add_node("retriever_one", retriever_one) + workflow.add_node("retriever_two", retriever_two) + workflow.add_node("qa", qa) + + workflow.set_entry_point("rewrite_query") + workflow.add_edge("rewrite_query", "retriever_one") + workflow.add_edge("rewrite_query", "retriever_two") + workflow.add_edge("retriever_one", "qa") + workflow.add_edge("retriever_two", "qa") + workflow.set_finish_point("qa") + + app = workflow.compile() + + assert app.invoke({"query": "what is weather in sf"}) == { + "query": "query: what is weather in sf", + "docs": ["doc1", "doc2", "doc3", "doc4"], + "answer": "doc1,doc2,doc3,doc4", + } + + assert [*app.stream({"query": "what is weather in sf"})] == [ + {"rewrite_query": {"query": "query: what is weather in sf"}}, + { + "retriever_two": {"docs": ["doc3", "doc4"]}, + "retriever_one": {"docs": ["doc1", "doc2"]}, + }, + {"qa": {"answer": "doc1,doc2,doc3,doc4"}}, + { + "__end__": { + "query": "query: what is weather in sf", + "answer": "doc1,doc2,doc3,doc4", + "docs": ["doc1", "doc2", "doc3", "doc4"], + } + }, + ] diff --git a/tests/test_pregel_async.py b/tests/test_pregel_async.py index db281e7c6..48e63f226 100644 --- a/tests/test_pregel_async.py +++ b/tests/test_pregel_async.py @@ -1435,3 +1435,63 @@ async def test_message_graph() -> None: ] }, ] + + +async def test_in_one_fan_out_out_one_graph_state() -> None: + def sorted_add(x: list[str], y: list[str]) -> list[str]: + return sorted(operator.add(x, y)) + + class State(TypedDict, total=False): + query: str + answer: str + docs: Annotated[list[str], sorted_add] + + async def rewrite_query(data: State) -> State: + return {"query": f'query: {data["query"]}'} + + async def retriever_one(data: State) -> State: + return {"docs": ["doc1", "doc2"]} + + async def retriever_two(data: State) -> State: + return {"docs": ["doc3", "doc4"]} + + async def qa(data: State) -> State: + return {"answer": ",".join(data["docs"])} + + workflow = StateGraph(State) + + workflow.add_node("rewrite_query", rewrite_query) + workflow.add_node("retriever_one", retriever_one) + workflow.add_node("retriever_two", retriever_two) + workflow.add_node("qa", qa) + + workflow.set_entry_point("rewrite_query") + workflow.add_edge("rewrite_query", "retriever_one") + workflow.add_edge("rewrite_query", "retriever_two") + workflow.add_edge("retriever_one", "qa") + workflow.add_edge("retriever_two", "qa") + workflow.set_finish_point("qa") + + app = workflow.compile() + + assert await app.ainvoke({"query": "what is weather in sf"}) == { + "query": "query: what is weather in sf", + "docs": ["doc1", "doc2", "doc3", "doc4"], + "answer": "doc1,doc2,doc3,doc4", + } + + assert [c async for c in app.astream({"query": "what is weather in sf"})] == [ + {"rewrite_query": {"query": "query: what is weather in sf"}}, + { + "retriever_two": {"docs": ["doc3", "doc4"]}, + "retriever_one": {"docs": ["doc1", "doc2"]}, + }, + {"qa": {"answer": "doc1,doc2,doc3,doc4"}}, + { + "__end__": { + "query": "query: what is weather in sf", + "answer": "doc1,doc2,doc3,doc4", + "docs": ["doc1", "doc2", "doc3", "doc4"], + } + }, + ] From 692d1ebe02149e440c0588a5ee3c615536e327f7 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 17 Jan 2024 13:50:40 -0800 Subject: [PATCH 030/108] WIP --- langgraph/channels/any_value.py | 55 ++++++++++++++++++++++ langgraph/channels/ephemeral_value.py | 67 +++++++++++++++++++++++++++ langgraph/channels/last_value.py | 7 ++- langgraph/graph/state.py | 11 +++-- 4 files changed, 132 insertions(+), 8 deletions(-) create mode 100644 langgraph/channels/any_value.py create mode 100644 langgraph/channels/ephemeral_value.py diff --git a/langgraph/channels/any_value.py b/langgraph/channels/any_value.py new file mode 100644 index 000000000..2cbb2c25a --- /dev/null +++ b/langgraph/channels/any_value.py @@ -0,0 +1,55 @@ +from contextlib import contextmanager +from typing import Generator, Generic, Optional, Sequence, Type + +from typing_extensions import Self + +from langgraph.channels.base import BaseChannel, EmptyChannelError, Value + + +class AnyValue(Generic[Value], BaseChannel[Value, Value, Value]): + """Stores the last value received, assumes that if multiple values are + received, they are all equal.""" + + def __init__(self, typ: Type[Value]) -> None: + self.typ = typ + + @property + def ValueType(self) -> Type[Value]: + """The type of the value stored in the channel.""" + return self.typ + + @property + def UpdateType(self) -> Type[Value]: + """The type of the update received by the channel.""" + return self.typ + + @contextmanager + def empty(self, checkpoint: Optional[Value] = None) -> Generator[Self, None, None]: + empty = self.__class__(self.typ) + if checkpoint is not None: + empty.value = checkpoint + try: + yield empty + finally: + try: + del empty.value + except AttributeError: + pass + + def update(self, values: Sequence[Value]) -> None: + if len(values) == 0: + return + + self.value = values[-1] + + def get(self) -> Value: + try: + return self.value + except AttributeError: + raise EmptyChannelError() + + def checkpoint(self) -> Value: + try: + return self.value + except AttributeError: + raise EmptyChannelError() diff --git a/langgraph/channels/ephemeral_value.py b/langgraph/channels/ephemeral_value.py new file mode 100644 index 000000000..2baa2f461 --- /dev/null +++ b/langgraph/channels/ephemeral_value.py @@ -0,0 +1,67 @@ +from contextlib import contextmanager +from typing import Generator, Generic, Optional, Sequence, Type + +from typing_extensions import Self + +from langgraph.channels.base import ( + BaseChannel, + EmptyChannelError, + InvalidUpdateError, + Value, +) + + +class EphemeralValue(Generic[Value], BaseChannel[Value, Value, Value]): + """Stores the value received in the step immediately preceding, clears after.""" + + def __init__(self, typ: Type[Value], guard: bool = True) -> None: + self.typ = typ + self.guard = guard + + @property + def ValueType(self) -> Type[Value]: + """The type of the value stored in the channel.""" + return self.typ + + @property + def UpdateType(self) -> Type[Value]: + """The type of the update received by the channel.""" + return self.typ + + @contextmanager + def empty(self, checkpoint: Optional[Value] = None) -> Generator[Self, None, None]: + empty = self.__class__(self.typ, self.guard) + if checkpoint is not None: + empty.value = checkpoint + try: + yield empty + finally: + try: + del empty.value + except AttributeError: + pass + + def update(self, values: Sequence[Value]) -> None: + if len(values) == 0: + try: + del self.value + except AttributeError: + pass + finally: + return + if len(values) != 1 and self.guard: + raise InvalidUpdateError("LastValue can only receive one value per step.") + + self.value = values[-1] + + def get(self) -> Value: + try: + return self.value + except AttributeError: + raise EmptyChannelError() + + def checkpoint(self) -> Value: + try: + return self.value + except AttributeError: + raise EmptyChannelError() diff --git a/langgraph/channels/last_value.py b/langgraph/channels/last_value.py index 207423539..858943c91 100644 --- a/langgraph/channels/last_value.py +++ b/langgraph/channels/last_value.py @@ -14,9 +14,8 @@ from langgraph.channels.base import ( class LastValue(Generic[Value], BaseChannel[Value, Value, Value]): """Stores the last value received, can receive at most one value per step.""" - def __init__(self, typ: Type[Value], guard: bool = True) -> None: + def __init__(self, typ: Type[Value]) -> None: self.typ = typ - self.guard = guard @property def ValueType(self) -> Type[Value]: @@ -30,7 +29,7 @@ class LastValue(Generic[Value], BaseChannel[Value, Value, Value]): @contextmanager def empty(self, checkpoint: Optional[Value] = None) -> Generator[Self, None, None]: - empty = self.__class__(self.typ, self.guard) + empty = self.__class__(self.typ) if checkpoint is not None: empty.value = checkpoint try: @@ -44,7 +43,7 @@ class LastValue(Generic[Value], BaseChannel[Value, Value, Value]): def update(self, values: Sequence[Value]) -> None: if len(values) == 0: return - if len(values) != 1 and self.guard: + if len(values) != 1: raise InvalidUpdateError("LastValue can only receive one value per step.") self.value = values[-1] diff --git a/langgraph/graph/state.py b/langgraph/graph/state.py index 19be561e9..785e1d05e 100644 --- a/langgraph/graph/state.py +++ b/langgraph/graph/state.py @@ -6,8 +6,10 @@ from typing import Any, Optional, Sequence, Type from langchain_core.runnables import RunnableLambda, RunnablePassthrough from langchain_core.runnables.base import RunnableLike +from langgraph.channels.any_value import AnyValue from langgraph.channels.base import BaseChannel, InvalidUpdateError from langgraph.channels.binop import BinaryOperatorAggregate +from langgraph.channels.ephemeral_value import EphemeralValue from langgraph.channels.last_value import LastValue from langgraph.checkpoint import BaseCheckpointSaver from langgraph.graph.graph import END, Graph @@ -71,11 +73,12 @@ class StateGraph(Graph): for key, node in self.nodes.items() } node_inboxes = { - # we can take any value written to channel because all writers - # write the entire state as of that step, which is equal for all writers - f"{key}:inbox": LastValue(Any, guard=False) + # we take any value written to channel because all writers + # write the entire state as of that step, which is equal for all + f"{key}:inbox": AnyValue(Any) for key in self.nodes } + node_outboxes = {key: EphemeralValue(Any) for key in self.nodes} for key in self.nodes: outgoing = outgoing_edges[key] @@ -103,7 +106,7 @@ class StateGraph(Graph): return Pregel( nodes=nodes, - channels={**self.channels, **node_inboxes}, + channels={**self.channels, **node_inboxes, **node_outboxes}, input=f"{START}:inbox", output=END, hidden=[f"{node}:inbox" for node in self.nodes] + [START] + state_keys, From 2535795f93f369823ab1e8980a5eaa12e7cfd0ac Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Sat, 10 Feb 2024 13:17:26 -0800 Subject: [PATCH 031/108] Comment --- langgraph/graph/state.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/langgraph/graph/state.py b/langgraph/graph/state.py index 785e1d05e..53613bf4a 100644 --- a/langgraph/graph/state.py +++ b/langgraph/graph/state.py @@ -78,7 +78,11 @@ class StateGraph(Graph): f"{key}:inbox": AnyValue(Any) for key in self.nodes } - node_outboxes = {key: EphemeralValue(Any) for key in self.nodes} + node_outboxes = { + # we clear outbox channels after each step + key: EphemeralValue(Any) + for key in self.nodes + } for key in self.nodes: outgoing = outgoing_edges[key] From 29edaaead8401f8a48e7d4d3a892c9e67ada3f38 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Sat, 10 Feb 2024 13:39:46 -0800 Subject: [PATCH 032/108] Warn if graph is mutated after being compiled --- langgraph/graph/graph.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/langgraph/graph/graph.py b/langgraph/graph/graph.py index cfc1401f8..22e075575 100644 --- a/langgraph/graph/graph.py +++ b/langgraph/graph/graph.py @@ -1,3 +1,4 @@ +import logging from asyncio import iscoroutinefunction from collections import defaultdict from typing import Any, Callable, Dict, NamedTuple, Optional, Sequence @@ -12,6 +13,8 @@ from langchain_core.runnables.base import ( from langgraph.checkpoint import BaseCheckpointSaver from langgraph.pregel import Channel, Pregel +logger = logging.getLogger(__name__) + END = "__end__" @@ -34,8 +37,14 @@ class Graph: self.edges = set[tuple[str, str]]() self.branches: defaultdict[str, list[Branch]] = defaultdict(list) self.support_multiple_edges = False + self.compiled = False def add_node(self, key: str, action: RunnableLike) -> None: + if self.compiled: + logger.warning( + "Adding a node to a graph that has already been compiled. This will " + "not be reflected in the compiled graph." + ) if key in self.nodes: raise ValueError(f"Node `{key}` already present.") if key == END: @@ -44,6 +53,11 @@ class Graph: self.nodes[key] = coerce_to_runnable(action) def add_edge(self, start_key: str, end_key: str) -> None: + if self.compiled: + logger.warning( + "Adding an edge to a graph that has already been compiled. This will " + "not be reflected in the compiled graph." + ) if start_key == END: raise ValueError("END cannot be a start node") if start_key not in self.nodes: @@ -64,6 +78,11 @@ class Graph: condition: Callable[..., str], conditional_edge_mapping: Optional[Dict[str, str]] = None, ) -> None: + if self.compiled: + logger.warning( + "Adding an edge to a graph that has already been compiled. This will " + "not be reflected in the compiled graph." + ) if start_key not in self.nodes: raise ValueError(f"Need to add_node `{start_key}` first") if iscoroutinefunction(condition): @@ -81,6 +100,11 @@ class Graph: self.branches[start_key].append(Branch(condition, conditional_edge_mapping)) def set_entry_point(self, key: str) -> None: + if self.compiled: + logger.warning( + "Setting the entry point of a graph that has already been compiled. " + "This will not be reflected in the compiled graph." + ) if key not in self.nodes: raise ValueError(f"Need to add_node `{key}` first") self.entry_point = key @@ -119,6 +143,8 @@ class Graph: if node not in self.nodes: raise ValueError(f"Node `{node}` is not present") + self.compiled = True + def compile( self, checkpointer: Optional[BaseCheckpointSaver] = None, From 38ef3d5218bd175c967760227006306ea0c6145d Mon Sep 17 00:00:00 2001 From: midas8181919 Date: Sat, 10 Feb 2024 23:10:32 +0000 Subject: [PATCH 033/108] replace function_call with tool_call --- langgraph/prebuilt/chat_agent_executor.py | 116 ++++++- tests/test_pregel.py | 361 +++++++++++++++++++++- 2 files changed, 475 insertions(+), 2 deletions(-) diff --git a/langgraph/prebuilt/chat_agent_executor.py b/langgraph/prebuilt/chat_agent_executor.py index bc7208107..83e48a392 100644 --- a/langgraph/prebuilt/chat_agent_executor.py +++ b/langgraph/prebuilt/chat_agent_executor.py @@ -5,7 +5,7 @@ from typing import Annotated, Sequence, TypedDict from langchain_core.agents import AgentAction from langchain_core.messages import BaseMessage, FunctionMessage from langchain_core.runnables import RunnableLambda -from langchain_core.utils.function_calling import convert_to_openai_function +from langchain_core.utils.function_calling import convert_to_openai_function, convert_to_openai_tool from langgraph.graph import END, StateGraph from langgraph.prebuilt.tool_executor import ToolExecutor @@ -124,3 +124,117 @@ def create_function_calling_executor(model, tools): # This compiles it into a LangChain Runnable, # meaning you can use it as you would any other runnable return workflow.compile() + +def create_tool_calling_executor(model, tools): + if isinstance(tools, ToolExecutor): + tool_executor = tools + tool_classes = tools.tools + else: + tool_executor = ToolExecutor(tools) + tool_classes = tools + model = model.bind(functions=[convert_to_openai_tool(t) for t in tool_classes]) + + # Define the function that determines whether to continue or not + def should_continue(state): + messages = state["messages"] + last_message = messages[-1] + # If there is no function call, then we finish + if "tool_call" not in last_message.additional_kwargs: + return "end" + # Otherwise if there is, we continue + else: + return "continue" + + # Define the function that calls the model + def call_model(state): + messages = state["messages"] + response = model.invoke(messages) + # We return a list, because this will get added to the existing list + return {"messages": [response]} + + async def acall_model(state): + messages = state["messages"] + response = await model.ainvoke(messages) + # We return a list, because this will get added to the existing list + return {"messages": [response]} + + # Define the function to execute tools + def _get_action(state): + messages = state["messages"] + # Based on the continue condition + # we know the last message involves a tool call + last_message = messages[-1] + # We construct an AgentAction from the tool_calls + return AgentAction( + tool=last_message.additional_kwargs["tool_calls"][0]["function"]["name"], + tool_input=json.loads( + last_message.additional_kwargs["tool_calls"][0]["function"]["arguments"] + ), + log="", + ) + + def call_tool(state): + action = _get_action(state) + # We call the tool_executor and get back a response + response = tool_executor.invoke(action) + # We use the response to create a FunctionMessage + function_message = FunctionMessage(content=str(response), name=action.tool) + # We return a list, because this will get added to the existing list + return {"messages": [function_message]} + + async def acall_tool(state): + action = _get_action(state) + # We call the tool_executor and get back a response + response = await tool_executor.ainvoke(action) + # We use the response to create a FunctionMessage + function_message = FunctionMessage(content=str(response), name=action.tool) + # We return a list, because this will get added to the existing list + return {"messages": [function_message]} + + # We create the AgentState that we will pass around + # This simply involves a list of messages + # We want steps to return messages to append to the list + # So we annotate the messages attribute with operator.add + class AgentState(TypedDict): + messages: Annotated[Sequence[BaseMessage], operator.add] + + # Define a new graph + workflow = StateGraph(AgentState) + + # Define the two nodes we will cycle between + workflow.add_node("agent", RunnableLambda(call_model, acall_model)) + workflow.add_node("action", RunnableLambda(call_tool, acall_tool)) + + # Set the entrypoint as `agent` + # This means that this node is the first one called + workflow.set_entry_point("agent") + + # We now add a conditional edge + workflow.add_conditional_edges( + # First, we define the start node. We use `agent`. + # This means these are the edges taken after the `agent` node is called. + "agent", + # Next, we pass in the function that will determine which node is called next. + should_continue, + # Finally we pass in a mapping. + # The keys are strings, and the values are other nodes. + # END is a special node marking that the graph should finish. + # What will happen is we will call `should_continue`, and then the output of that + # will be matched against the keys in this mapping. + # Based on which one it matches, that node will then be called. + { + # If `tools`, then we call the tool node. + "continue": "action", + # Otherwise we finish. + "end": END, + }, + ) + + # We now add a normal edge from `tools` to `agent`. + # This means that after `tools` is called, `agent` node is called next. + workflow.add_edge("action", "agent") + + # Finally, we compile it! + # This compiles it into a LangChain Runnable, + # meaning you can use it as you would any other runnable + return workflow.compile() diff --git a/tests/test_pregel.py b/tests/test_pregel.py index f9fef277b..696555f61 100644 --- a/tests/test_pregel.py +++ b/tests/test_pregel.py @@ -10,6 +10,7 @@ import pytest from langchain_core.runnables import RunnablePassthrough from pytest_mock import MockerFixture +from langchain_core._api import deprecated from langgraph.channels.base import InvalidUpdateError from langgraph.channels.binop import BinaryOperatorAggregate from langgraph.channels.context import Context @@ -20,7 +21,7 @@ from langgraph.checkpoint.sqlite import SqliteSaver from langgraph.graph import END, Graph from langgraph.graph.message import MessageGraph from langgraph.graph.state import StateGraph -from langgraph.prebuilt.chat_agent_executor import create_function_calling_executor +from langgraph.prebuilt.chat_agent_executor import create_function_calling_executor, create_tool_calling_executor from langgraph.prebuilt.tool_executor import ToolExecutor from langgraph.pregel import Channel, GraphRecursionError, Pregel from langgraph.pregel.reserved import ReservedChannels @@ -1061,7 +1062,365 @@ def test_conditional_graph_state() -> None: }, ] +def test_prebuilt_tool_chat() -> None: + from langchain.chat_models.fake import FakeMessagesListChatModel + from langchain_community.tools import tool + from langchain_core.messages import AIMessage, FunctionMessage, HumanMessage + class FakeFuntionChatModel(FakeMessagesListChatModel): + def bind_functions(self, functions: list): + return self + + @tool() + def search_api(query: str) -> str: + """Searches the API for the query.""" + return f"result for {query}" + + tools = [search_api] + + app = create_tool_calling_executor( + FakeFuntionChatModel( + responses=[ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": json.dumps("query"), + } + }] + }, + ), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": json.dumps("another"), + } + }] + }, + ), + AIMessage(content="answer"), + ] + ), + tools, + ) + + assert app.invoke( + {"messages": [HumanMessage(content="what is weather in sf")]} + ) == { + "messages": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] + }, + ), + FunctionMessage(content="result for query", name="search_api"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, + ), + FunctionMessage(content="result for another", name="search_api"), + AIMessage(content="answer"), + ] + } + + assert [ + *app.stream({"messages": [HumanMessage(content="what is weather in sf")]}) + ] == [ + { + "agent": { + "messages": [ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] + }, + ) + ] + } + }, + { + "action": { + "messages": [ + FunctionMessage(content="result for query", name="search_api") + ] + } + }, + { + "agent": { + "messages": [ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, + ) + ] + } + }, + { + "action": { + "messages": [ + FunctionMessage(content="result for another", name="search_api") + ] + } + }, + {"agent": {"messages": [AIMessage(content="answer")]}}, + { + "__end__": { + "messages": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] + }, + ), + FunctionMessage(content="result for query", name="search_api"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, + ), + FunctionMessage(content="result for another", name="search_api"), + AIMessage(content="answer"), + ] + } + }, + ] + + +def test_message_graph() -> None: + from langchain.chat_models.fake import FakeMessagesListChatModel + from langchain_community.tools import tool + from langchain_core.agents import AgentAction + from langchain_core.messages import AIMessage, FunctionMessage, HumanMessage + + class FakeFuntionChatModel(FakeMessagesListChatModel): + def bind_functions(self, functions: list): + return self + + @tool() + def search_api(query: str) -> str: + """Searches the API for the query.""" + return f"result for {query}" + + tools = [search_api] + + model = FakeFuntionChatModel( + responses=[ + AIMessage( + content="", + additional_kwargs={ + "function_call": { + "name": "search_api", + "arguments": json.dumps("query"), + } + }, + ), + AIMessage( + content="", + additional_kwargs={ + "function_call": { + "name": "search_api", + "arguments": json.dumps("another"), + } + }, + ), + AIMessage(content="answer"), + ] + ) + + tool_executor = ToolExecutor(tools) + + # Define the function that determines whether to continue or not + def should_continue(messages): + last_message = messages[-1] + # If there is no function call, then we finish + if "function_call" not in last_message.additional_kwargs: + return "end" + # Otherwise if there is, we continue + else: + return "continue" + + def call_tool(messages): + # Based on the continue condition + # we know the last message involves a function call + last_message = messages[-1] + # We construct an AgentAction from the function_call + action = AgentAction( + tool=last_message.additional_kwargs["function_call"]["name"], + tool_input=json.loads( + last_message.additional_kwargs["function_call"]["arguments"] + ), + log="", + ) + # We call the tool_executor and get back a response + response = tool_executor.invoke(action) + # We use the response to create a FunctionMessage + return FunctionMessage(content=str(response), name=action.tool) + + # Define a new graph + workflow = MessageGraph() + + # Define the two nodes we will cycle between + workflow.add_node("agent", model) + workflow.add_node("action", call_tool) + + # Set the entrypoint as `agent` + # This means that this node is the first one called + workflow.set_entry_point("agent") + + # We now add a conditional edge + workflow.add_conditional_edges( + # First, we define the start node. We use `agent`. + # This means these are the edges taken after the `agent` node is called. + "agent", + # Next, we pass in the function that will determine which node is called next. + should_continue, + # Finally we pass in a mapping. + # The keys are strings, and the values are other nodes. + # END is a special node marking that the graph should finish. + # What will happen is we will call `should_continue`, and then the output of that + # will be matched against the keys in this mapping. + # Based on which one it matches, that node will then be called. + { + # If `tools`, then we call the tool node. + "continue": "action", + # Otherwise we finish. + "end": END, + }, + ) + + # We now add a normal edge from `tools` to `agent`. + # This means that after `tools` is called, `agent` node is called next. + workflow.add_edge("action", "agent") + + # Finally, we compile it! + # This compiles it into a LangChain Runnable, + # meaning you can use it as you would any other runnable + app = workflow.compile() + + assert app.invoke(HumanMessage(content="what is weather in sf")) == [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "function_call": {"name": "search_api", "arguments": '"query"'} + }, + ), + FunctionMessage(content="result for query", name="search_api"), + AIMessage( + content="", + additional_kwargs={ + "function_call": {"name": "search_api", "arguments": '"another"'} + }, + ), + FunctionMessage(content="result for another", name="search_api"), + AIMessage(content="answer"), + ] + + assert [*app.stream([HumanMessage(content="what is weather in sf")])] == [ + { + "agent": AIMessage( + content="", + additional_kwargs={ + "function_call": {"name": "search_api", "arguments": '"query"'} + }, + ) + }, + {"action": FunctionMessage(content="result for query", name="search_api")}, + { + "agent": AIMessage( + content="", + additional_kwargs={ + "function_call": {"name": "search_api", "arguments": '"another"'} + }, + ) + }, + {"action": FunctionMessage(content="result for another", name="search_api")}, + {"agent": AIMessage(content="answer")}, + { + "__end__": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "function_call": {"name": "search_api", "arguments": '"query"'} + }, + ), + FunctionMessage(content="result for query", name="search_api"), + AIMessage( + content="", + additional_kwargs={ + "function_call": { + "name": "search_api", + "arguments": '"another"', + } + }, + ), + FunctionMessage(content="result for another", name="search_api"), + AIMessage(content="answer"), + ] + }, + ] + +@deprecated("*") def test_prebuilt_chat() -> None: from langchain.chat_models.fake import FakeMessagesListChatModel from langchain_community.tools import tool From acaa4567e158a184cd79cc648b4f19b5176087c2 Mon Sep 17 00:00:00 2001 From: midas8181919 Date: Sat, 10 Feb 2024 23:25:17 +0000 Subject: [PATCH 034/108] fix test --- tests/test_pregel.py | 98 ++++++++++++++++++++++++++++++++------------ 1 file changed, 72 insertions(+), 26 deletions(-) diff --git a/tests/test_pregel.py b/tests/test_pregel.py index 696555f61..6f0e3aad8 100644 --- a/tests/test_pregel.py +++ b/tests/test_pregel.py @@ -1244,8 +1244,7 @@ def test_prebuilt_tool_chat() -> None: }, ] - -def test_message_graph() -> None: +def test_tool_message_graph() -> None: from langchain.chat_models.fake import FakeMessagesListChatModel from langchain_community.tools import tool from langchain_core.agents import AgentAction @@ -1267,19 +1266,27 @@ def test_message_graph() -> None: AIMessage( content="", additional_kwargs={ - "function_call": { - "name": "search_api", - "arguments": json.dumps("query"), - } + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": json.dumps("query"), + } + }] }, ), AIMessage( content="", additional_kwargs={ - "function_call": { - "name": "search_api", - "arguments": json.dumps("another"), - } + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": json.dumps("another"), + } + }] }, ), AIMessage(content="answer"), @@ -1292,7 +1299,7 @@ def test_message_graph() -> None: def should_continue(messages): last_message = messages[-1] # If there is no function call, then we finish - if "function_call" not in last_message.additional_kwargs: + if "tool_calls" not in last_message.additional_kwargs: return "end" # Otherwise if there is, we continue else: @@ -1304,9 +1311,9 @@ def test_message_graph() -> None: last_message = messages[-1] # We construct an AgentAction from the function_call action = AgentAction( - tool=last_message.additional_kwargs["function_call"]["name"], + tool=last_message.additional_kwargs["tool_calls"][0]["function"]["name"], tool_input=json.loads( - last_message.additional_kwargs["function_call"]["arguments"] + last_message.additional_kwargs["tool_calls"][0]["function"]["arguments"] ), log="", ) @@ -1361,14 +1368,28 @@ def test_message_graph() -> None: AIMessage( content="", additional_kwargs={ - "function_call": {"name": "search_api", "arguments": '"query"'} + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] }, ), FunctionMessage(content="result for query", name="search_api"), AIMessage( content="", additional_kwargs={ - "function_call": {"name": "search_api", "arguments": '"another"'} + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] }, ), FunctionMessage(content="result for another", name="search_api"), @@ -1380,7 +1401,14 @@ def test_message_graph() -> None: "agent": AIMessage( content="", additional_kwargs={ - "function_call": {"name": "search_api", "arguments": '"query"'} + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] }, ) }, @@ -1389,8 +1417,15 @@ def test_message_graph() -> None: "agent": AIMessage( content="", additional_kwargs={ - "function_call": {"name": "search_api", "arguments": '"another"'} - }, + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, ) }, {"action": FunctionMessage(content="result for another", name="search_api")}, @@ -1401,18 +1436,29 @@ def test_message_graph() -> None: AIMessage( content="", additional_kwargs={ - "function_call": {"name": "search_api", "arguments": '"query"'} + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] }, ), FunctionMessage(content="result for query", name="search_api"), AIMessage( content="", additional_kwargs={ - "function_call": { - "name": "search_api", - "arguments": '"another"', - } - }, + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, ), FunctionMessage(content="result for another", name="search_api"), AIMessage(content="answer"), @@ -1565,7 +1611,7 @@ def test_prebuilt_chat() -> None: }, ] - +@deprecated("*") def test_message_graph() -> None: from langchain.chat_models.fake import FakeMessagesListChatModel from langchain_community.tools import tool @@ -1739,4 +1785,4 @@ def test_message_graph() -> None: AIMessage(content="answer"), ] }, - ] + ] \ No newline at end of file From b4269f64536b0a78abc0d92c0f5f036a6522c75d Mon Sep 17 00:00:00 2001 From: midas8181919 Date: Sun, 11 Feb 2024 02:04:09 +0000 Subject: [PATCH 035/108] finish test --- tests/test_pregel_async.py | 416 ++++++++++++++++++++++++++++++++++++- 1 file changed, 414 insertions(+), 2 deletions(-) diff --git a/tests/test_pregel_async.py b/tests/test_pregel_async.py index db281e7c6..24fa679b8 100644 --- a/tests/test_pregel_async.py +++ b/tests/test_pregel_async.py @@ -17,6 +17,7 @@ import pytest from langchain_core.runnables import RunnablePassthrough from pytest_mock import MockerFixture +from langchain_core._api import deprecated from langgraph.channels.base import InvalidUpdateError from langgraph.channels.binop import BinaryOperatorAggregate from langgraph.channels.context import Context @@ -26,7 +27,7 @@ from langgraph.checkpoint.aiosqlite import AsyncSqliteSaver from langgraph.checkpoint.memory import MemorySaver from langgraph.graph import END, Graph, StateGraph from langgraph.graph.message import MessageGraph -from langgraph.prebuilt.chat_agent_executor import create_function_calling_executor +from langgraph.prebuilt.chat_agent_executor import create_function_calling_executor, create_tool_calling_executor from langgraph.prebuilt.tool_executor import ToolExecutor from langgraph.pregel import Channel, GraphRecursionError, Pregel from langgraph.pregel.reserved import ReservedChannels @@ -1111,6 +1112,417 @@ async def test_conditional_graph_state() -> None: ] +async def test_prebuilt_tool_chat() -> None: + from langchain.chat_models.fake import FakeMessagesListChatModel + from langchain_community.tools import tool + from langchain_core.messages import AIMessage, FunctionMessage, HumanMessage + + class FakeFuntionChatModel(FakeMessagesListChatModel): + def bind_functions(self, functions: list): + return self + + @tool() + def search_api(query: str) -> str: + """Searches the API for the query.""" + return f"result for {query}" + + tools = [search_api] + + app = create_function_calling_executor( + FakeFuntionChatModel( + responses=[ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": json.dumps("query"), + } + }] + }, + ), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": json.dumps("another"), + } + }] + }, + ), + AIMessage(content="answer"), + ] + ), + tools, + ) + + assert await app.ainvoke( + {"messages": [HumanMessage(content="what is weather in sf")]} + ) == { + "messages": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] + }, + ), + FunctionMessage(content="result for query", name="search_api"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, + ), + FunctionMessage(content="result for another", name="search_api"), + AIMessage(content="answer"), + ] + } + + assert [ + c + async for c in app.astream( + {"messages": [HumanMessage(content="what is weather in sf")]} + ) + ] == [ + { + "agent": { + "messages": [ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] + }, + ) + ] + } + }, + { + "action": { + "messages": [ + FunctionMessage(content="result for query", name="search_api") + ] + } + }, + { + "agent": { + "messages": [ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, + ) + ] + } + }, + { + "action": { + "messages": [ + FunctionMessage(content="result for another", name="search_api") + ] + } + }, + {"agent": {"messages": [AIMessage(content="answer")]}}, + { + "__end__": { + "messages": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] + }, + ), + FunctionMessage(content="result for query", name="search_api"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, + ), + FunctionMessage(content="result for another", name="search_api"), + AIMessage(content="answer"), + ] + } + }, + ] + + +async def test_message_tool_graph() -> None: + from langchain.chat_models.fake import FakeMessagesListChatModel + from langchain_community.tools import tool + from langchain_core.agents import AgentAction + from langchain_core.messages import AIMessage, FunctionMessage, HumanMessage + + class FakeFuntionChatModel(FakeMessagesListChatModel): + def bind_functions(self, functions: list): + return self + + @tool() + def search_api(query: str) -> str: + """Searches the API for the query.""" + return f"result for {query}" + + tools = [search_api] + + model = FakeFuntionChatModel( + responses=[ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": json.dumps("query"), + } + }] + }, + ), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": json.dumps("another"), + } + }] + }, + ), + AIMessage(content="answer"), + ] + ) + + tool_executor = ToolExecutor(tools) + + # Define the function that determines whether to continue or not + def should_continue(messages): + last_message = messages[-1] + # If there is no function call, then we finish + if "tool_calls" not in last_message.additional_kwargs: + return "end" + # Otherwise if there is, we continue + else: + return "continue" + + async def call_tool(messages): + # Based on the continue condition + # we know the last message involves a function call + last_message = messages[-1] + # We construct an AgentAction from the function_call + action = AgentAction( + tool=last_message.additional_kwargs["tool_calls"][0]["fcuntion"]["name"], + tool_input=json.loads( + last_message.additional_kwargs["tool_calls"][0]["function"]["arguments"] + ), + log="", + ) + # We call the tool_executor and get back a response + response = await tool_executor.ainvoke(action) + # We use the response to create a FunctionMessage + return FunctionMessage(content=str(response), name=action.tool) + + # Define a new graph + workflow = MessageGraph() + + # Define the two nodes we will cycle between + workflow.add_node("agent", model) + workflow.add_node("action", call_tool) + + # Set the entrypoint as `agent` + # This means that this node is the first one called + workflow.set_entry_point("agent") + + # We now add a conditional edge + workflow.add_conditional_edges( + # First, we define the start node. We use `agent`. + # This means these are the edges taken after the `agent` node is called. + "agent", + # Next, we pass in the function that will determine which node is called next. + should_continue, + # Finally we pass in a mapping. + # The keys are strings, and the values are other nodes. + # END is a special node marking that the graph should finish. + # What will happen is we will call `should_continue`, and then the output of that + # will be matched against the keys in this mapping. + # Based on which one it matches, that node will then be called. + { + # If `tools`, then we call the tool node. + "continue": "action", + # Otherwise we finish. + "end": END, + }, + ) + + # We now add a normal edge from `tools` to `agent`. + # This means that after `tools` is called, `agent` node is called next. + workflow.add_edge("action", "agent") + + # Finally, we compile it! + # This compiles it into a LangChain Runnable, + # meaning you can use it as you would any other runnable + app = workflow.compile() + + assert await app.ainvoke(HumanMessage(content="what is weather in sf")) == [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] + }, + ), + FunctionMessage(content="result for query", name="search_api"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, + ), + FunctionMessage(content="result for another", name="search_api"), + AIMessage(content="answer"), + ] + + assert [ + c async for c in app.astream([HumanMessage(content="what is weather in sf")]) + ] == [ + { + "agent": AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] + }, + ) + }, + {"action": FunctionMessage(content="result for query", name="search_api")}, + { + "agent": AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, + ) + }, + {"action": FunctionMessage(content="result for another", name="search_api")}, + {"agent": AIMessage(content="answer")}, + { + "__end__": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call123", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "query", + } + }] + }, + ), + FunctionMessage(content="result for query", name="search_api"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [{ + "id": "tool_call234", + "type": "function", + "function":{ + "name": "search_api", + "arguments": "another", + } + }] + }, + ), + FunctionMessage(content="result for another", name="search_api"), + AIMessage(content="answer"), + ] + }, + ] + +@deprecated("*") async def test_prebuilt_chat() -> None: from langchain.chat_models.fake import FakeMessagesListChatModel from langchain_community.tools import tool @@ -1258,7 +1670,7 @@ async def test_prebuilt_chat() -> None: }, ] - +@deprecated("*") async def test_message_graph() -> None: from langchain.chat_models.fake import FakeMessagesListChatModel from langchain_community.tools import tool From 7cdae56e7e9e4c81b767a4cccceb0478b16f2396 Mon Sep 17 00:00:00 2001 From: midas8181919 Date: Sun, 11 Feb 2024 02:19:29 +0000 Subject: [PATCH 036/108] test it --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0109f16e4..84ae06147 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,7 +2,7 @@ name: test on: push: - branches: [master] + branches: [tool_call] pull_request: env: From e97cd22a186eefa4defff2924c3c67da56c97e8e Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Sun, 11 Feb 2024 21:14:07 -0800 Subject: [PATCH 037/108] add self discover notebook --- examples/self-discover/self-discover.ipynb | 479 +++++++++++++++++++++ 1 file changed, 479 insertions(+) create mode 100644 examples/self-discover/self-discover.ipynb diff --git a/examples/self-discover/self-discover.ipynb b/examples/self-discover/self-discover.ipynb new file mode 100644 index 000000000..fa337d58a --- /dev/null +++ b/examples/self-discover/self-discover.ipynb @@ -0,0 +1,479 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a38e5d2d-7587-4192-90f2-b58e6c62f08c", + "metadata": {}, + "source": [ + "# Self Discover\n", + "\n", + "An implementation of the [Self-Discover paper](https://arxiv.org/pdf/2402.03620.pdf).\n", + "\n", + "Based on [this implementation from @catid](https://github.com/catid/self-discover/tree/main?tab=readme-ov-file)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a18d8f24-5d9a-45c5-9739-6f3c4ed6c9c9", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9f554045-6e79-42d3-be4b-835bbbd0b78c", + "metadata": {}, + "outputs": [], + "source": [ + "model = ChatOpenAI(temperature=0, model=\"gpt-4-turbo-preview\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9e9925aa-638a-4862-823e-9803402b8f82", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain import hub\n", + "from langchain_core.prompts import PromptTemplate" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c4cc5c8c-f6a5-42c7-9ed5-780d79b3b29a", + "metadata": {}, + "outputs": [], + "source": [ + "select_prompt = hub.pull(\"hwchase17/self-discovery-select\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a5b53d29-f5b6-4f39-af97-bb6b133e1d18", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Select several reasoning modules that are crucial to utilize in order to solve the given task:\n", + "\n", + "All reasoning module descriptions:\n", + "\u001b[33;1m\u001b[1;3m{reasoning_modules}\u001b[0m\n", + "\n", + "Task: \u001b[33;1m\u001b[1;3m{task_description}\u001b[0m\n", + "\n", + "Select several modules are crucial for solving the task above:\n", + "\n" + ] + } + ], + "source": [ + "select_prompt.pretty_print()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "26eaa6bc-5202-4b22-9522-33f227c8eb55", + "metadata": {}, + "outputs": [], + "source": [ + "adapt_prompt = hub.pull(\"hwchase17/self-discovery-adapt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "dc30afb9-180d-417b-9935-f7ef166710b8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rephrase and specify each reasoning module so that it better helps solving the task:\n", + "\n", + "SELECTED module descriptions:\n", + "\u001b[33;1m\u001b[1;3m{selected_modules}\u001b[0m\n", + "\n", + "Task: \u001b[33;1m\u001b[1;3m{task_description}\u001b[0m\n", + "\n", + "Adapt each reasoning module description to better solve the task:\n", + "\n" + ] + } + ], + "source": [ + "adapt_prompt.pretty_print()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "a93253a9-8f50-49dd-8815-c3927bae1905", + "metadata": {}, + "outputs": [], + "source": [ + "structured_prompt = hub.pull(\"hwchase17/self-discovery-structure\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "8ea8dd78-4285-400b-83d2-c4a241903a79", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Operationalize the reasoning modules into a step-by-step reasoning plan in JSON format:\n", + "\n", + "Here's an example:\n", + "\n", + "Example task:\n", + "\n", + "If you follow these instructions, do you return to the starting point? Always face forward. Take 1 step backward. Take 9 steps left. Take 2 steps backward. Take 6 steps forward. Take 4 steps forward. Take 4 steps backward. Take 3 steps right.\n", + "\n", + "Example reasoning structure:\n", + "\n", + "{\n", + " \"Position after instruction 1\":\n", + " \"Position after instruction 2\":\n", + " \"Position after instruction n\":\n", + " \"Is final position the same as starting position\":\n", + "}\n", + "\n", + "Adapted module description:\n", + "\u001b[33;1m\u001b[1;3m{adapted_modules}\u001b[0m\n", + "\n", + "Task: \u001b[33;1m\u001b[1;3m{task_description}\u001b[0m\n", + "\n", + "Implement a reasoning structure for solvers to follow step-by-step and arrive at correct answer.\n", + "\n", + "Note: do NOT actually arrive at a conclusion in this pass. Your job is to generate a PLAN so that in the future you can fill it out and arrive at the correct conclusion for tasks like this\n" + ] + } + ], + "source": [ + "structured_prompt.pretty_print()" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "f3d4d79d-f414-4588-b476-4a35b3ba6fbf", + "metadata": {}, + "outputs": [], + "source": [ + "reasoning_prompt = hub.pull(\"hwchase17/self-discovery-reasoning\")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "23d1e32e-d12e-454a-8484-c08e250e3262", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Follow the step-by-step reasoning plan in JSON to correctly solve the task. Fill in the values following the keys by reasoning specifically about the task given. Do not simply rephrase the keys.\n", + " \n", + "Reasoning Structure:\n", + "\u001b[33;1m\u001b[1;3m{reasoning_structure}\u001b[0m\n", + "\n", + "Task: \u001b[33;1m\u001b[1;3m{task_description}\u001b[0m\n" + ] + } + ], + "source": [ + "reasoning_prompt.pretty_print()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "7b9af01d-da28-4785-b069-efea61905cfa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PromptTemplate(input_variables=['reasoning_structure', 'task_instance'], template='Follow the step-by-step reasoning plan in JSON to correctly solve the task. Fill in the values following the keys by reasoning specifically about the task given. Do not simply rephrase the keys.\\n \\nReasoning Structure:\\n{reasoning_structure}\\n\\nTask: {task_instance}')" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "reasoning_prompt" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "399bf160-e257-429f-b27e-66d4063f195f", + "metadata": {}, + "outputs": [], + "source": [ + "_prompt = \"\"\"Follow the step-by-step reasoning plan in JSON to correctly solve the task. Fill in the values following the keys by reasoning specifically about the task given. Do not simply rephrase the keys.\\n \\nReasoning Structure:\\n{reasoning_structure}\\n\\nTask: {task_description}\"\"\"\n", + "_prompt = PromptTemplate.from_template(_prompt)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "6e047e3a-b1c2-4a3b-abc7-eb84de6874e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'https://smith.langchain.com/hub/hwchase17/self-discovery-reasoning/48340707'" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hub.push(\"hwchase17/self-discovery-reasoning\", _prompt)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "7f66d61e-6dcd-4462-b67b-29c5de56e238", + "metadata": {}, + "outputs": [], + "source": [ + "class SelfDiscoverState(TypedDict):\n", + " reasoning_modules: str\n", + " task_description: str\n", + " selected_modules: Optional[str]\n", + " adapted_modules: Optional[str]\n", + " reasoning_structure: Optional[str]\n", + " answer: Optional[str]" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "5c3bd203-7dc1-457e-813f-283aaf059ec0", + "metadata": {}, + "outputs": [], + "source": [ + "def select(inputs):\n", + " select_chain = select_prompt | model | StrOutputParser()\n", + " return {\"selected_modules\": select_chain.invoke(inputs)}\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "86420da0-7cc2-4659-853e-9c3ef808e47c", + "metadata": {}, + "outputs": [], + "source": [ + "def adapt(inputs):\n", + " adapt_chain = adapt_prompt | model | StrOutputParser()\n", + " return {\"adapted_modules\": adapt_chain.invoke(inputs)}" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "270a3905-58a3-4650-96ca-e8254040285f", + "metadata": {}, + "outputs": [], + "source": [ + "def structure(inputs):\n", + " structure_chain = structured_prompt | model | StrOutputParser()\n", + " return {\"reasoning_structure\": structure_chain.invoke(inputs)}" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "55b486cc-36be-497e-9eba-9c8dc228f2d1", + "metadata": {}, + "outputs": [], + "source": [ + "def reason(inputs):\n", + " reasoning_chain = reasoning_prompt | model | StrOutputParser()\n", + " return {\"answer\": reasoning_chain.invoke(inputs)}" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "d9e2e4ce-dc9d-45a5-a218-34ab4fb62bc4", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, END\n", + "from typing import TypedDict, Optional" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "26276404-0134-40a0-a796-cc9927c153ee", + "metadata": {}, + "outputs": [], + "source": [ + "graph = StateGraph(SelfDiscoverState)\n", + "graph.add_node(\"select\", select)\n", + "graph.add_node(\"adapt\", adapt)\n", + "graph.add_node(\"structure\", structure)\n", + "graph.add_node(\"reason\", reason)\n", + "graph.add_edge(\"select\", \"adapt\")\n", + "graph.add_edge(\"adapt\", \"structure\")\n", + "graph.add_edge(\"structure\", \"reason\")\n", + "graph.add_edge(\"reason\", END)\n", + "graph.set_entry_point(\"select\")\n", + "app = graph.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "29fe385b-cf5d-4581-80e7-55462f5628bb", + "metadata": {}, + "outputs": [], + "source": [ + "reasoning_modules = [\n", + " \"1. How could I devise an experiment to help solve that problem?\",\n", + " \"2. Make a list of ideas for solving this problem, and apply them one by one to the problem to see if any progress can be made.\",\n", + " #\"3. How could I measure progress on this problem?\",\n", + " \"4. How can I simplify the problem so that it is easier to solve?\",\n", + " \"5. What are the key assumptions underlying this problem?\",\n", + " \"6. What are the potential risks and drawbacks of each solution?\",\n", + " \"7. What are the alternative perspectives or viewpoints on this problem?\",\n", + " \"8. What are the long-term implications of this problem and its solutions?\",\n", + " \"9. How can I break down this problem into smaller, more manageable parts?\",\n", + " \"10. Critical Thinking: This style involves analyzing the problem from different perspectives, questioning assumptions, and evaluating the evidence or information available. It focuses on logical reasoning, evidence-based decision-making, and identifying potential biases or flaws in thinking.\",\n", + " \"11. Try creative thinking, generate innovative and out-of-the-box ideas to solve the problem. Explore unconventional solutions, thinking beyond traditional boundaries, and encouraging imagination and originality.\",\n", + " #\"12. Seek input and collaboration from others to solve the problem. Emphasize teamwork, open communication, and leveraging the diverse perspectives and expertise of a group to come up with effective solutions.\",\n", + " \"13. Use systems thinking: Consider the problem as part of a larger system and understanding the interconnectedness of various elements. Focuses on identifying the underlying causes, feedback loops, and interdependencies that influence the problem, and developing holistic solutions that address the system as a whole.\",\n", + " \"14. Use Risk Analysis: Evaluate potential risks, uncertainties, and tradeoffs associated with different solutions or approaches to a problem. Emphasize assessing the potential consequences and likelihood of success or failure, and making informed decisions based on a balanced analysis of risks and benefits.\",\n", + " #\"15. Use Reflective Thinking: Step back from the problem, take the time for introspection and self-reflection. Examine personal biases, assumptions, and mental models that may influence problem-solving, and being open to learning from past experiences to improve future approaches.\",\n", + " \"16. What is the core issue or problem that needs to be addressed?\",\n", + " \"17. What are the underlying causes or factors contributing to the problem?\",\n", + " \"18. Are there any potential solutions or strategies that have been tried before? If yes, what were the outcomes and lessons learned?\",\n", + " \"19. What are the potential obstacles or challenges that might arise in solving this problem?\",\n", + " \"20. Are there any relevant data or information that can provide insights into the problem? If yes, what data sources are available, and how can they be analyzed?\",\n", + " \"21. Are there any stakeholders or individuals who are directly affected by the problem? What are their perspectives and needs?\",\n", + " \"22. What resources (financial, human, technological, etc.) are needed to tackle the problem effectively?\",\n", + " \"23. How can progress or success in solving the problem be measured or evaluated?\",\n", + " \"24. What indicators or metrics can be used?\",\n", + " \"25. Is the problem a technical or practical one that requires a specific expertise or skill set? Or is it more of a conceptual or theoretical problem?\",\n", + " \"26. Does the problem involve a physical constraint, such as limited resources, infrastructure, or space?\",\n", + " \"27. Is the problem related to human behavior, such as a social, cultural, or psychological issue?\",\n", + " \"28. Does the problem involve decision-making or planning, where choices need to be made under uncertainty or with competing objectives?\",\n", + " \"29. Is the problem an analytical one that requires data analysis, modeling, or optimization techniques?\",\n", + " \"30. Is the problem a design challenge that requires creative solutions and innovation?\",\n", + " \"31. Does the problem require addressing systemic or structural issues rather than just individual instances?\",\n", + " \"32. Is the problem time-sensitive or urgent, requiring immediate attention and action?\",\n", + " \"33. What kinds of solution typically are produced for this kind of problem specification?\",\n", + " \"34. Given the problem specification and the current best solution, have a guess about other possible solutions.\"\n", + " \"35. Let’s imagine the current best solution is totally wrong, what other ways are there to think about the problem specification?\"\n", + " \"36. What is the best way to modify this current best solution, given what you know about these kinds of problem specification?\"\n", + " \"37. Ignoring the current best solution, create an entirely new solution to the problem.\"\n", + " #\"38. Let’s think step by step.\"\n", + " \"39. Let’s make a step by step plan and implement it with good notation and explanation.\"\n", + "]\n", + "\n", + "\n", + "task_example = \"Lisa has 10 apples. She gives 3 apples to her friend and then buys 5 more apples from the store. How many apples does Lisa have now?\"\n", + "\n", + "task_example = \"\"\"This SVG path element draws a:\n", + "(A) circle (B) heptagon (C) hexagon (D) kite (E) line (F) octagon (G) pentagon(H) rectangle (I) sector (J) triangle\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "6cbfbe81-f751-42da-843a-f9003ace663d", + "metadata": {}, + "outputs": [], + "source": [ + "reasoning_modules_str = \"\\n\".join(reasoning_modules)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "d411c7aa-7017-4d67-88b5-43b5d161c34c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'select': {'selected_modules': \"To solve the task of identifying the shape drawn by the given SVG path element, the following reasoning modules are crucial:\\n\\n1. **Critical Thinking (10)**: This involves analyzing the SVG path commands and coordinates logically to understand the shape they form. It requires questioning assumptions (e.g., not assuming the shape based on a quick glance at the coordinates but rather analyzing the path commands) and evaluating the information given in the SVG path data.\\n\\n2. **Simplification (4)**: Simplifying the problem by breaking down the SVG path commands can make it easier to visualize and understand the shape being drawn. This might involve sketching the path based on the commands and coordinates or using a tool to render the SVG path.\\n\\n3. **Systems Thinking (13)**: Understanding the SVG path as part of a larger system (in this case, the SVG coordinate system and how path commands work) helps in comprehending how the individual commands come together to form a complete shape.\\n\\n4. **Analytical Problem Solving (29)**: This task requires data analysis skills to interpret the SVG path commands and coordinates. Understanding how 'M' (moveto), 'L' (lineto), and other commands work is essential for determining the shape.\\n\\n5. **Creative Thinking (11)**: While not as directly applicable as the other modules, creative thinking can aid in visualizing the shape that the path commands are intended to draw, especially if the shape is complex or if the path commands are not immediately clear.\\n\\n6. **Visualization (30)**: Although not explicitly listed, a module focused on visualization would be highly relevant here. Visualizing the path that the 'M' and 'L' commands create from the given coordinates can directly lead to identifying the shape.\\n\\nGiven the task's nature, modules focused on experimentation, risk analysis, stakeholder perspectives, and long-term implications (e.g., 1, 14, 21, 8) are less relevant. The task is primarily analytical and technical, requiring an understanding of SVG path syntax and geometry rather than broader problem-solving or decision-making strategies.\"}}\n", + "{'adapt': {'adapted_modules': \"1. **Detailed Path Analysis (10)**: This module focuses on a thorough examination of the SVG path commands and their corresponding coordinates to accurately deduce the shape they outline. It involves a critical approach where assumptions are set aside in favor of a detailed analysis of each command (e.g., 'M' for moveto, 'L' for lineto) and how these commands connect points in the SVG coordinate system to form a specific shape.\\n\\n2. **Path Decomposition (4)**: This involves breaking down the SVG path into more manageable segments or components to facilitate a clearer understanding of the overall shape. Techniques might include manually sketching the path as described by the commands and coordinates or utilizing digital tools to render the SVG path, thereby making the shape more apparent and easier to identify.\\n\\n3. **SVG System Analysis (13)**: Emphasizes the importance of understanding the SVG coordinate system and the functionality of path commands within this framework. This module is about seeing the SVG path not just as a series of commands but as part of the broader system of SVG graphics, where each command plays a specific role in shaping the final image.\\n\\n4. **Command Interpretation and Geometry (29)**: This module requires a deep dive into the syntax and semantics of SVG path commands, coupled with geometric reasoning to interpret the shape formed by these commands. Knowledge of how different commands like 'M' (moveto) and 'L' (lineto) contribute to the construction of geometric shapes is crucial for accurately identifying the shape in question.\\n\\n5. **Imaginative Visualization (11)**: While analytical skills are paramount, this module recognizes the role of creative thinking in visualizing the potential shapes that complex or ambiguous path commands might represent. It encourages thinking beyond the obvious and considering multiple geometric possibilities that fit the given path data.\\n\\n6. **Explicit Visualization (30)**: Directly focuses on the ability to visualize the trajectory formed by executing the SVG path commands, particularly 'M' and 'L'. This module is about using visualization techniques, whether mental or through software tools, to trace the path and see the resulting shape, thereby facilitating its identification.\\n\\nBy refining these modules to more directly address the task of interpreting SVG path elements, the process of identifying the drawn shape becomes more structured and focused on the specific skills and knowledge areas that are most relevant to the task.\"}}\n", + "{'structure': {'reasoning_structure': '```json\\n{\\n \"Step 1: Detailed Path Analysis\": {\\n \"Description\": \"Examine each SVG path command and its coordinates to understand the shape outline.\",\\n \"Actions\": [\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Move to starting point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"53.25,36.07\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"66.29,48.90\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"78.69,61.09\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Draw line to this point to close the shape.\"\\n }\\n ]\\n },\\n \"Step 2: Path Decomposition\": {\\n \"Description\": \"Break down the path into segments to simplify analysis.\",\\n \"Segments\": [\\n \"Segment 1: Move from (55.57,80.69) to (57.38,65.80)\",\\n \"Segment 2: Move from (57.38,65.80) to (48.90,57.46)\",\\n \"Segment 3: Move from (48.90,57.46) to (45.58,47.78)\",\\n \"Segment 4: Move from (45.58,47.78) to (53.25,36.07)\",\\n \"Segment 5: Move from (53.25,36.07) to (66.29,48.90)\",\\n \"Segment 6: Move from (66.29,48.90) to (78.69,61.09)\",\\n \"Segment 7: Move from (78.69,61.09) to (55.57,80.69)\"\\n ]\\n },\\n \"Step 3: SVG System Analysis\": {\\n \"Description\": \"Understand the role of each command within the SVG coordinate system.\",\\n \"Analysis\": [\\n {\\n \"Command\": \"M\",\\n \"Role\": \"Defines starting points for new sub-paths.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Role\": \"Creates straight lines between points.\"\\n }\\n ]\\n },\\n \"Step 4: Command Interpretation and Geometry\": {\\n \"Description\": \"Interpret the geometric shape formed by the path commands.\",\\n \"Geometric Principles\": [\\n \"Identify angles and lines created by \\'L\\' commands.\",\\n \"Determine the number of sides from the number of \\'L\\' commands.\"\\n ]\\n },\\n \"Step 5: Imaginative Visualization\": {\\n \"Description\": \"Visualize potential shapes that the path commands might represent.\",\\n \"Visualization Techniques\": [\\n \"Sketching the path based on command coordinates.\",\\n \"Mentally visualizing the path progression.\"\\n ]\\n },\\n \"Step 6: Explicit Visualization\": {\\n \"Description\": \"Use visualization tools to trace the path and see the resulting shape.\",\\n \"Tools\": [\\n \"Digital drawing software\",\\n \"SVG rendering tools\"\\n ]\\n },\\n \"Conclusion\": {\\n \"Description\": \"Based on the analysis and visualization, identify the shape.\",\\n \"Options\": [\\n \"Circle\",\\n \"Heptagon\",\\n \"Hexagon\",\\n \"Kite\",\\n \"Line\",\\n \"Octagon\",\\n \"Pentagon\",\\n \"Rectangle\",\\n \"Sector\",\\n \"Triangle\"\\n ],\\n \"Selected Option\": \"\"\\n }\\n}\\n```'}}\n", + "{'reason': {'answer': '```json\\n{\\n \"Step 1: Detailed Path Analysis\": {\\n \"Description\": \"Examine each SVG path command and its coordinates to understand the shape outline.\",\\n \"Actions\": [\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Move to starting point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"53.25,36.07\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"66.29,48.90\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"78.69,61.09\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Draw line to this point to close the shape.\"\\n }\\n ]\\n },\\n \"Step 2: Path Decomposition\": {\\n \"Description\": \"Break down the path into segments to simplify analysis.\",\\n \"Segments\": [\\n \"Segment 1: Move from (55.57,80.69) to (57.38,65.80)\",\\n \"Segment 2: Move from (57.38,65.80) to (48.90,57.46)\",\\n \"Segment 3: Move from (48.90,57.46) to (45.58,47.78)\",\\n \"Segment 4: Move from (45.58,47.78) to (53.25,36.07)\",\\n \"Segment 5: Move from (53.25,36.07) to (66.29,48.90)\",\\n \"Segment 6: Move from (66.29,48.90) to (78.69,61.09)\",\\n \"Segment 7: Move from (78.69,61.09) to (55.57,80.69)\"\\n ]\\n },\\n \"Step 3: SVG System Analysis\": {\\n \"Description\": \"Understand the role of each command within the SVG coordinate system.\",\\n \"Analysis\": [\\n {\\n \"Command\": \"M\",\\n \"Role\": \"Defines starting points for new sub-paths.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Role\": \"Creates straight lines between points.\"\\n }\\n ]\\n },\\n \"Step 4: Command Interpretation and Geometry\": {\\n \"Description\": \"Interpret the geometric shape formed by the path commands.\",\\n \"Geometric Principles\": [\\n \"Identify angles and lines created by \\'L\\' commands.\",\\n \"Determine the number of sides from the number of \\'L\\' commands.\"\\n ]\\n },\\n \"Step 5: Imaginative Visualization\": {\\n \"Description\": \"Visualize potential shapes that the path commands might represent.\",\\n \"Visualization Techniques\": [\\n \"Sketching the path based on command coordinates.\",\\n \"Mentally visualizing the path progression.\"\\n ]\\n },\\n \"Step 6: Explicit Visualization\": {\\n \"Description\": \"Use visualization tools to trace the path and see the resulting shape.\",\\n \"Tools\": [\\n \"Digital drawing software\",\\n \"SVG rendering tools\"\\n ]\\n },\\n \"Conclusion\": {\\n \"Description\": \"Based on the analysis and visualization, identify the shape.\",\\n \"Options\": [\\n \"Circle\",\\n \"Heptagon\",\\n \"Hexagon\",\\n \"Kite\",\\n \"Line\",\\n \"Octagon\",\\n \"Pentagon\",\\n \"Rectangle\",\\n \"Sector\",\\n \"Triangle\"\\n ],\\n \"Selected Option\": \"Pentagon\"\\n }\\n}\\n```'}}\n", + "{'__end__': {'reasoning_modules': '1. How could I devise an experiment to help solve that problem?\\n2. Make a list of ideas for solving this problem, and apply them one by one to the problem to see if any progress can be made.\\n4. How can I simplify the problem so that it is easier to solve?\\n5. What are the key assumptions underlying this problem?\\n6. What are the potential risks and drawbacks of each solution?\\n7. What are the alternative perspectives or viewpoints on this problem?\\n8. What are the long-term implications of this problem and its solutions?\\n9. How can I break down this problem into smaller, more manageable parts?\\n10. Critical Thinking: This style involves analyzing the problem from different perspectives, questioning assumptions, and evaluating the evidence or information available. It focuses on logical reasoning, evidence-based decision-making, and identifying potential biases or flaws in thinking.\\n11. Try creative thinking, generate innovative and out-of-the-box ideas to solve the problem. Explore unconventional solutions, thinking beyond traditional boundaries, and encouraging imagination and originality.\\n13. Use systems thinking: Consider the problem as part of a larger system and understanding the interconnectedness of various elements. Focuses on identifying the underlying causes, feedback loops, and interdependencies that influence the problem, and developing holistic solutions that address the system as a whole.\\n14. Use Risk Analysis: Evaluate potential risks, uncertainties, and tradeoffs associated with different solutions or approaches to a problem. Emphasize assessing the potential consequences and likelihood of success or failure, and making informed decisions based on a balanced analysis of risks and benefits.\\n16. What is the core issue or problem that needs to be addressed?\\n17. What are the underlying causes or factors contributing to the problem?\\n18. Are there any potential solutions or strategies that have been tried before? If yes, what were the outcomes and lessons learned?\\n19. What are the potential obstacles or challenges that might arise in solving this problem?\\n20. Are there any relevant data or information that can provide insights into the problem? If yes, what data sources are available, and how can they be analyzed?\\n21. Are there any stakeholders or individuals who are directly affected by the problem? What are their perspectives and needs?\\n22. What resources (financial, human, technological, etc.) are needed to tackle the problem effectively?\\n23. How can progress or success in solving the problem be measured or evaluated?\\n24. What indicators or metrics can be used?\\n25. Is the problem a technical or practical one that requires a specific expertise or skill set? Or is it more of a conceptual or theoretical problem?\\n26. Does the problem involve a physical constraint, such as limited resources, infrastructure, or space?\\n27. Is the problem related to human behavior, such as a social, cultural, or psychological issue?\\n28. Does the problem involve decision-making or planning, where choices need to be made under uncertainty or with competing objectives?\\n29. Is the problem an analytical one that requires data analysis, modeling, or optimization techniques?\\n30. Is the problem a design challenge that requires creative solutions and innovation?\\n31. Does the problem require addressing systemic or structural issues rather than just individual instances?\\n32. Is the problem time-sensitive or urgent, requiring immediate attention and action?\\n33. What kinds of solution typically are produced for this kind of problem specification?\\n34. Given the problem specification and the current best solution, have a guess about other possible solutions.35. Let’s imagine the current best solution is totally wrong, what other ways are there to think about the problem specification?36. What is the best way to modify this current best solution, given what you know about these kinds of problem specification?37. Ignoring the current best solution, create an entirely new solution to the problem.39. Let’s make a step by step plan and implement it with good notation and explanation.', 'task_description': 'This SVG path element draws a:\\n(A) circle (B) heptagon (C) hexagon (D) kite (E) line (F) octagon (G) pentagon(H) rectangle (I) sector (J) triangle', 'selected_modules': \"To solve the task of identifying the shape drawn by the given SVG path element, the following reasoning modules are crucial:\\n\\n1. **Critical Thinking (10)**: This involves analyzing the SVG path commands and coordinates logically to understand the shape they form. It requires questioning assumptions (e.g., not assuming the shape based on a quick glance at the coordinates but rather analyzing the path commands) and evaluating the information given in the SVG path data.\\n\\n2. **Simplification (4)**: Simplifying the problem by breaking down the SVG path commands can make it easier to visualize and understand the shape being drawn. This might involve sketching the path based on the commands and coordinates or using a tool to render the SVG path.\\n\\n3. **Systems Thinking (13)**: Understanding the SVG path as part of a larger system (in this case, the SVG coordinate system and how path commands work) helps in comprehending how the individual commands come together to form a complete shape.\\n\\n4. **Analytical Problem Solving (29)**: This task requires data analysis skills to interpret the SVG path commands and coordinates. Understanding how 'M' (moveto), 'L' (lineto), and other commands work is essential for determining the shape.\\n\\n5. **Creative Thinking (11)**: While not as directly applicable as the other modules, creative thinking can aid in visualizing the shape that the path commands are intended to draw, especially if the shape is complex or if the path commands are not immediately clear.\\n\\n6. **Visualization (30)**: Although not explicitly listed, a module focused on visualization would be highly relevant here. Visualizing the path that the 'M' and 'L' commands create from the given coordinates can directly lead to identifying the shape.\\n\\nGiven the task's nature, modules focused on experimentation, risk analysis, stakeholder perspectives, and long-term implications (e.g., 1, 14, 21, 8) are less relevant. The task is primarily analytical and technical, requiring an understanding of SVG path syntax and geometry rather than broader problem-solving or decision-making strategies.\", 'adapted_modules': \"1. **Detailed Path Analysis (10)**: This module focuses on a thorough examination of the SVG path commands and their corresponding coordinates to accurately deduce the shape they outline. It involves a critical approach where assumptions are set aside in favor of a detailed analysis of each command (e.g., 'M' for moveto, 'L' for lineto) and how these commands connect points in the SVG coordinate system to form a specific shape.\\n\\n2. **Path Decomposition (4)**: This involves breaking down the SVG path into more manageable segments or components to facilitate a clearer understanding of the overall shape. Techniques might include manually sketching the path as described by the commands and coordinates or utilizing digital tools to render the SVG path, thereby making the shape more apparent and easier to identify.\\n\\n3. **SVG System Analysis (13)**: Emphasizes the importance of understanding the SVG coordinate system and the functionality of path commands within this framework. This module is about seeing the SVG path not just as a series of commands but as part of the broader system of SVG graphics, where each command plays a specific role in shaping the final image.\\n\\n4. **Command Interpretation and Geometry (29)**: This module requires a deep dive into the syntax and semantics of SVG path commands, coupled with geometric reasoning to interpret the shape formed by these commands. Knowledge of how different commands like 'M' (moveto) and 'L' (lineto) contribute to the construction of geometric shapes is crucial for accurately identifying the shape in question.\\n\\n5. **Imaginative Visualization (11)**: While analytical skills are paramount, this module recognizes the role of creative thinking in visualizing the potential shapes that complex or ambiguous path commands might represent. It encourages thinking beyond the obvious and considering multiple geometric possibilities that fit the given path data.\\n\\n6. **Explicit Visualization (30)**: Directly focuses on the ability to visualize the trajectory formed by executing the SVG path commands, particularly 'M' and 'L'. This module is about using visualization techniques, whether mental or through software tools, to trace the path and see the resulting shape, thereby facilitating its identification.\\n\\nBy refining these modules to more directly address the task of interpreting SVG path elements, the process of identifying the drawn shape becomes more structured and focused on the specific skills and knowledge areas that are most relevant to the task.\", 'reasoning_structure': '```json\\n{\\n \"Step 1: Detailed Path Analysis\": {\\n \"Description\": \"Examine each SVG path command and its coordinates to understand the shape outline.\",\\n \"Actions\": [\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Move to starting point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"53.25,36.07\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"66.29,48.90\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"78.69,61.09\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Draw line to this point to close the shape.\"\\n }\\n ]\\n },\\n \"Step 2: Path Decomposition\": {\\n \"Description\": \"Break down the path into segments to simplify analysis.\",\\n \"Segments\": [\\n \"Segment 1: Move from (55.57,80.69) to (57.38,65.80)\",\\n \"Segment 2: Move from (57.38,65.80) to (48.90,57.46)\",\\n \"Segment 3: Move from (48.90,57.46) to (45.58,47.78)\",\\n \"Segment 4: Move from (45.58,47.78) to (53.25,36.07)\",\\n \"Segment 5: Move from (53.25,36.07) to (66.29,48.90)\",\\n \"Segment 6: Move from (66.29,48.90) to (78.69,61.09)\",\\n \"Segment 7: Move from (78.69,61.09) to (55.57,80.69)\"\\n ]\\n },\\n \"Step 3: SVG System Analysis\": {\\n \"Description\": \"Understand the role of each command within the SVG coordinate system.\",\\n \"Analysis\": [\\n {\\n \"Command\": \"M\",\\n \"Role\": \"Defines starting points for new sub-paths.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Role\": \"Creates straight lines between points.\"\\n }\\n ]\\n },\\n \"Step 4: Command Interpretation and Geometry\": {\\n \"Description\": \"Interpret the geometric shape formed by the path commands.\",\\n \"Geometric Principles\": [\\n \"Identify angles and lines created by \\'L\\' commands.\",\\n \"Determine the number of sides from the number of \\'L\\' commands.\"\\n ]\\n },\\n \"Step 5: Imaginative Visualization\": {\\n \"Description\": \"Visualize potential shapes that the path commands might represent.\",\\n \"Visualization Techniques\": [\\n \"Sketching the path based on command coordinates.\",\\n \"Mentally visualizing the path progression.\"\\n ]\\n },\\n \"Step 6: Explicit Visualization\": {\\n \"Description\": \"Use visualization tools to trace the path and see the resulting shape.\",\\n \"Tools\": [\\n \"Digital drawing software\",\\n \"SVG rendering tools\"\\n ]\\n },\\n \"Conclusion\": {\\n \"Description\": \"Based on the analysis and visualization, identify the shape.\",\\n \"Options\": [\\n \"Circle\",\\n \"Heptagon\",\\n \"Hexagon\",\\n \"Kite\",\\n \"Line\",\\n \"Octagon\",\\n \"Pentagon\",\\n \"Rectangle\",\\n \"Sector\",\\n \"Triangle\"\\n ],\\n \"Selected Option\": \"\"\\n }\\n}\\n```', 'answer': '```json\\n{\\n \"Step 1: Detailed Path Analysis\": {\\n \"Description\": \"Examine each SVG path command and its coordinates to understand the shape outline.\",\\n \"Actions\": [\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Move to starting point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"53.25,36.07\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"66.29,48.90\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"78.69,61.09\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Draw line to this point to close the shape.\"\\n }\\n ]\\n },\\n \"Step 2: Path Decomposition\": {\\n \"Description\": \"Break down the path into segments to simplify analysis.\",\\n \"Segments\": [\\n \"Segment 1: Move from (55.57,80.69) to (57.38,65.80)\",\\n \"Segment 2: Move from (57.38,65.80) to (48.90,57.46)\",\\n \"Segment 3: Move from (48.90,57.46) to (45.58,47.78)\",\\n \"Segment 4: Move from (45.58,47.78) to (53.25,36.07)\",\\n \"Segment 5: Move from (53.25,36.07) to (66.29,48.90)\",\\n \"Segment 6: Move from (66.29,48.90) to (78.69,61.09)\",\\n \"Segment 7: Move from (78.69,61.09) to (55.57,80.69)\"\\n ]\\n },\\n \"Step 3: SVG System Analysis\": {\\n \"Description\": \"Understand the role of each command within the SVG coordinate system.\",\\n \"Analysis\": [\\n {\\n \"Command\": \"M\",\\n \"Role\": \"Defines starting points for new sub-paths.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Role\": \"Creates straight lines between points.\"\\n }\\n ]\\n },\\n \"Step 4: Command Interpretation and Geometry\": {\\n \"Description\": \"Interpret the geometric shape formed by the path commands.\",\\n \"Geometric Principles\": [\\n \"Identify angles and lines created by \\'L\\' commands.\",\\n \"Determine the number of sides from the number of \\'L\\' commands.\"\\n ]\\n },\\n \"Step 5: Imaginative Visualization\": {\\n \"Description\": \"Visualize potential shapes that the path commands might represent.\",\\n \"Visualization Techniques\": [\\n \"Sketching the path based on command coordinates.\",\\n \"Mentally visualizing the path progression.\"\\n ]\\n },\\n \"Step 6: Explicit Visualization\": {\\n \"Description\": \"Use visualization tools to trace the path and see the resulting shape.\",\\n \"Tools\": [\\n \"Digital drawing software\",\\n \"SVG rendering tools\"\\n ]\\n },\\n \"Conclusion\": {\\n \"Description\": \"Based on the analysis and visualization, identify the shape.\",\\n \"Options\": [\\n \"Circle\",\\n \"Heptagon\",\\n \"Hexagon\",\\n \"Kite\",\\n \"Line\",\\n \"Octagon\",\\n \"Pentagon\",\\n \"Rectangle\",\\n \"Sector\",\\n \"Triangle\"\\n ],\\n \"Selected Option\": \"Pentagon\"\\n }\\n}\\n```'}}\n" + ] + } + ], + "source": [ + "for s in app.stream({\"task_description\": task_example, \"reasoning_modules\": reasoning_modules_str}):\n", + " print(s)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea8568d5-bdb6-45cd-8d04-1ab305786caa", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c14a291c-7c1b-43bc-807e-11180290985e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 0cc6ce3b504e2ebaee8f0fed9f3832d59315874b Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Mon, 12 Feb 2024 10:01:24 -0800 Subject: [PATCH 038/108] Lint --- langgraph/pregel/__init__.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/langgraph/pregel/__init__.py b/langgraph/pregel/__init__.py index 016f3a35b..d7fadd9e5 100644 --- a/langgraph/pregel/__init__.py +++ b/langgraph/pregel/__init__.py @@ -789,7 +789,7 @@ def _prepare_next_tasks( checkpoint["channel_versions"][chan] > seen[chan] for chan in proc.triggers ): - # If all channels subscribed by this process have been initialized + # If all channels subscribed by this process are not empty try: val: Any = { k: _read_channel( @@ -819,9 +819,11 @@ def _prepare_next_tasks( elif isinstance(proc, ChannelBatch): # If the channel read by this process was updated if checkpoint["channel_versions"][proc.channel] > seen[proc.channel]: - # Here we don't catch EmptyChannelError because the channel - # must be intialized if the previous `if` condition is true - val = channels[proc.channel].get() + # If the channel subscribed by this process is not empty + try: + val = channels[proc.channel].get() + except EmptyChannelError: + continue if proc.key is not None: val = [{proc.key: v} for v in val] From 899a76f82b600e133db31ee55b91091c451d139a Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Mon, 12 Feb 2024 12:46:06 -0800 Subject: [PATCH 039/108] add rewoo --- examples/rewoo/rewoo.ipynb | 319 +++++++++++++++++++++++++++++++++++++ 1 file changed, 319 insertions(+) create mode 100644 examples/rewoo/rewoo.ipynb diff --git a/examples/rewoo/rewoo.ipynb b/examples/rewoo/rewoo.ipynb new file mode 100644 index 000000000..092207771 --- /dev/null +++ b/examples/rewoo/rewoo.ipynb @@ -0,0 +1,319 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 23, + "id": "b3db60ea-d38b-4a55-a048-6c0222af6566", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "search = TavilySearchResults()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "c8836921-c89e-42b6-8c71-27aeaeac5368", + "metadata": {}, + "outputs": [], + "source": [ + "model = ChatOpenAI(temperature=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7e7faa92-30a1-4942-b3c7-acd3a7bfccbc", + "metadata": {}, + "outputs": [], + "source": [ + "prompt = \"\"\"For the following task, make plans that can solve the problem step by step. For each plan, indicate \\\n", + "which external tool together with tool input to retrieve evidence. You can store the evidence into a \\\n", + "variable #E that can be called by later tools. (Plan, #E1, Plan, #E2, Plan, ...)\n", + "\n", + "Tools can be one of the following:\n", + "(1) Google[input]: Worker that searches results from Google. Useful when you need to find short\n", + "and succinct answers about a specific topic. The input should be a search query.\n", + "(2) LLM[input]: A pretrained LLM like yourself. Useful when you need to act with general\n", + "world knowledge and common sense. Prioritize it when you are confident in solving the problem\n", + "yourself. Input can be any instruction.\n", + "\n", + "For example,\n", + "Task: Thomas, Toby, and Rebecca worked a total of 157 hours in one week. Thomas worked x\n", + "hours. Toby worked 10 hours less than twice what Thomas worked, and Rebecca worked 8 hours\n", + "less than Toby. How many hours did Rebecca work?\n", + "Plan: Given Thomas worked x hours, translate the problem into algebraic expressions and solve\n", + "with Wolfram Alpha. #E1 = WolframAlpha[Solve x + (2x − 10) + ((2x − 10) − 8) = 157]\n", + "Plan: Find out the number of hours Thomas worked. #E2 = LLM[What is x, given #E1]\n", + "Plan: Calculate the number of hours Rebecca worked. #E3 = Calculator[(2 ∗ #E2 − 10) − 8]\n", + "\n", + "Begin! \n", + "Describe your plans with rich details. Each Plan should be followed by only one #E.\n", + "\n", + "Task: {task}\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "72b4ab0f-7215-4f4b-9407-0ebad8b13b92", + "metadata": {}, + "outputs": [], + "source": [ + "task = \"what is the hometown of the 2024 australian open winner\"" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "56ecb45b-ea76-4303-a4f3-51406fe8312a", + "metadata": {}, + "outputs": [], + "source": [ + "result = model.invoke(prompt.format(task=task))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "8a733caa-d75b-422c-93aa-6ad913c995f3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Plan: Use Google to search for the 2024 Australian Open winner.\n", + "#E1 = Google[2024 Australian Open winner]\n", + "\n", + "Plan: Retrieve the name of the 2024 Australian Open winner from the search results.\n", + "#E2 = LLM[What is the name of the 2024 Australian Open winner, given #E1]\n", + "\n", + "Plan: Use Google to search for the hometown of the 2024 Australian Open winner.\n", + "#E3 = Google[hometown of 2024 Australian Open winner, given #E2]\n", + "\n", + "Plan: Retrieve the hometown of the 2024 Australian Open winner from the search results.\n", + "#E4 = LLM[What is the hometown of the 2024 Australian Open winner, given #E3]\n" + ] + } + ], + "source": [ + "print(result.content)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "8b14c889-0f96-40d3-9200-7dc9afc190ce", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "from typing import TypedDict, Annotated, List\n", + "import operator" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "id": "a3a0a670-686b-4767-92b7-b16fca748730", + "metadata": {}, + "outputs": [], + "source": [ + "class ReWOO(TypedDict):\n", + " task: str\n", + " plan_string: str\n", + " steps: List\n", + " results: dict\n", + " result: str" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "id": "3412cfc4-6796-4295-aea4-7eeb304e10bd", + "metadata": {}, + "outputs": [], + "source": [ + "def _get_current_task(state):\n", + " if state[\"results\"] is None:\n", + " return 1\n", + " if len(state[\"results\"]) == len(state[\"steps\"]):\n", + " return None\n", + " else:\n", + " return len(state[\"results\"]) + 1" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "id": "aa96fbac-28bc-4afe-ae35-ddb3383d1147", + "metadata": {}, + "outputs": [], + "source": [ + "def tool_execution(state):\n", + " _step =_get_current_task(state)\n", + " _, step_name, tool, tool_input = state[\"steps\"][_step - 1]\n", + " _results = state[\"results\"] or {}\n", + " for k, v in _results.items():\n", + " tool_input = tool_input.replace(k, v)\n", + " if tool == \"Google\":\n", + " result = search.invoke(tool_input)\n", + " elif tool == \"LLM\":\n", + " result = model.invoke(tool_input)\n", + " else:\n", + " raise ValueError\n", + " _results[step_name] = str(result)\n", + " return {\"results\": _results}" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "id": "c0eba982-6b8c-4ad9-8971-10c18d7c9b75", + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "# Regex to match expressions of the form E#... = ...[...]\n", + "regex_pattern = r\"Plan:\\s*(.+)\\s*(#E\\d+)\\s*=\\s*(\\w+)\\s*\\[([^\\]]+)\\]\"" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "id": "2791b020-c182-4b54-8912-f9e3396196b8", + "metadata": {}, + "outputs": [], + "source": [ + "def get_plan(state):\n", + " task = state[\"task\"]\n", + " result = model.invoke(prompt.format(task=task))\n", + " # Find all matches in the sample text\n", + " matches = re.findall(regex_pattern, result.content)\n", + " return {\"steps\": matches, \"plan_string\": result.content}" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "id": "9f60d611-9e15-4621-8c03-aabace7d2a8b", + "metadata": {}, + "outputs": [], + "source": [ + "solve_prompt = \"\"\"Solve the following task or problem. To solve the problem, we have made step-by-step Plan and \\\n", + "retrieved corresponding Evidence to each Plan. Use them with caution since long evidence might \\\n", + "contain irrelevant information.\n", + "\n", + "{plan}\n", + "\n", + "Now solve the question or task according to provided Evidence above. Respond with the answer\n", + "directly with no extra words.\n", + "\n", + "Task: {task}\n", + "Response:\"\"\"\n", + "def solve(state):\n", + " plan = \"\"\n", + " for _plan, step_name, tool, tool_input in state[\"steps\"]:\n", + " _results = state[\"results\"] or {}\n", + " for k, v in _results.items():\n", + " tool_input = tool_input.replace(k, v)\n", + " plan += f\"Plan: {_plan}\\n{step_name} = {tool}[{tool_input}]\"\n", + " prompt = solve_prompt.format(plan=plan, task=state[\"task\"])\n", + " result = model.invoke(prompt)\n", + " return {\"result\": result.content}" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "id": "73b235d7-fa83-4e84-9f2e-2908f16deb26", + "metadata": {}, + "outputs": [], + "source": [ + "def _route(state):\n", + " _step = _get_current_task(state)\n", + " if _step is None:\n", + " return \"solve\"\n", + " else:\n", + " return \"tool\"" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "id": "cf173aa1-ce31-4dca-8111-30c91e209652", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, END\n", + "\n", + "graph = StateGraph(ReWOO)\n", + "graph.add_node(\"plan\", get_plan)\n", + "graph.add_node(\"tool\", tool_execution)\n", + "graph.add_node(\"solve\", solve)\n", + "graph.add_edge(\"plan\", \"tool\")\n", + "graph.add_edge(\"solve\", END)\n", + "graph.add_conditional_edges(\"tool\", _route)\n", + "graph.set_entry_point(\"plan\")\n", + "app = graph.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "id": "badaca52-5d55-433f-8770-1bd50c10bf7f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan': {'steps': [('Use Google to search for the 2024 Australian Open winner.', '#E1', 'Google', '2024 Australian Open winner'), ('Retrieve the name of the 2024 Australian Open winner from the search results.', '#E2', 'LLM', 'What is the name of the 2024 Australian Open winner, given #E1'), ('Use Google to search for the hometown of the 2024 Australian Open winner.', '#E3', 'Google', 'hometown of 2024 Australian Open winner, given #E2'), ('Retrieve the hometown of the 2024 Australian Open winner from the search results.', '#E4', 'LLM', 'What is the hometown of the 2024 Australian Open winner, given #E3')], 'plan_string': 'Plan: Use Google to search for the 2024 Australian Open winner.\\n#E1 = Google[2024 Australian Open winner]\\n\\nPlan: Retrieve the name of the 2024 Australian Open winner from the search results.\\n#E2 = LLM[What is the name of the 2024 Australian Open winner, given #E1]\\n\\nPlan: Use Google to search for the hometown of the 2024 Australian Open winner.\\n#E3 = Google[hometown of 2024 Australian Open winner, given #E2]\\n\\nPlan: Retrieve the hometown of the 2024 Australian Open winner from the search results.\\n#E4 = LLM[What is the hometown of the 2024 Australian Open winner, given #E3]'}}\n", + "{'tool': {'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]'}}}\n", + "{'tool': {'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]', '#E2': \"content='The name of the 2024 Australian Open winner is Jannik Sinner.'\"}}}\n", + "{'tool': {'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]', '#E2': \"content='The name of the 2024 Australian Open winner is Jannik Sinner.'\", '#E3': '[{\\'url\\': \\'https://www.tennis.com/news/articles/soccer-mad-italy-is-now-obsessed-with-tennis-player-jannik-sinner-after-his-australian-open-title\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Play & Win Advertising Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title \\'Grandissimo\\': Italian Premier Giorgia Meloni welcomes home Australian Open champion Jannik Sinner First of many? Jannik Sinner\\'s five-set comeback sinks Daniil Medvedev in Australian Open finalJan 28, 2024 — Jan 28, 2024In Sinner\\'s tiny hometown of Sesto (population 1,860) near the Austrian border, about 70 people gathered inside the two-court indoor tennis\\\\xa0...\"}, {\\'url\\': \\'https://apnews.com/article/jannik-sinner-italy-australian-open-03573689c4c58c2851d1006e26546ac9\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev,Jan 28, 2024 — Jan 28, 2024Soccer-mad Italy has a new obsession. Jannik Sinner\\'s Australian Open performance on the tennis court has captured the country\\'s attention.\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/Jannik_Sinner\\', \\'content\\': \\'At the 2024 Australian Open, Sinner defeated world No. 1 Novak Djokovic in the semifinals to reach his first major Sinner is a major champion, having won the 2024 Australian Open.[3] He has won a further ten ATP Tour singles titles, Early in the year Sinner made the second round of the 2020 Australian Open, recording his first Grand Slam main draw a match since Janko Tipsarević in London in 2011.[59][60] Sinner played Daniil Medvedev next in the round robin stage,Since making his professional debut in 2018, Sinner has won 11 ATP Tour singles titles, including a Grand Slam at the 2024 Australian Open and a Masters 1000 at\\\\xa0...\\'}, {\\'url\\': \\'https://ausopen.com/players/italy/jannik-sinner\\', \\'content\\': \"Jannik Sinner weathered an early onslaught to reel in Daniil Medvedev, growing in potency to win the Australian Open the Australian Open 2024 final – his first Grand Slam singles title. Jannik Sinner will contest his first Grand Slam final after scuttling Novak Djokovic’s bid for a record-extending 11th Jannick Sinner has form and fitness on his side ahead of his meeting with Andrey Rublev.Jannik Sinner Press Conference | Australian Open 2024 Final. 15:02 · Player & Career Overview. Career Wins 73% · Men\\'s Singles. Final • Rod Laver Arena · Comeback\\\\xa0...\"}]'}}}\n", + "{'tool': {'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]', '#E2': \"content='The name of the 2024 Australian Open winner is Jannik Sinner.'\", '#E3': '[{\\'url\\': \\'https://www.tennis.com/news/articles/soccer-mad-italy-is-now-obsessed-with-tennis-player-jannik-sinner-after-his-australian-open-title\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Play & Win Advertising Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title \\'Grandissimo\\': Italian Premier Giorgia Meloni welcomes home Australian Open champion Jannik Sinner First of many? Jannik Sinner\\'s five-set comeback sinks Daniil Medvedev in Australian Open finalJan 28, 2024 — Jan 28, 2024In Sinner\\'s tiny hometown of Sesto (population 1,860) near the Austrian border, about 70 people gathered inside the two-court indoor tennis\\\\xa0...\"}, {\\'url\\': \\'https://apnews.com/article/jannik-sinner-italy-australian-open-03573689c4c58c2851d1006e26546ac9\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev,Jan 28, 2024 — Jan 28, 2024Soccer-mad Italy has a new obsession. Jannik Sinner\\'s Australian Open performance on the tennis court has captured the country\\'s attention.\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/Jannik_Sinner\\', \\'content\\': \\'At the 2024 Australian Open, Sinner defeated world No. 1 Novak Djokovic in the semifinals to reach his first major Sinner is a major champion, having won the 2024 Australian Open.[3] He has won a further ten ATP Tour singles titles, Early in the year Sinner made the second round of the 2020 Australian Open, recording his first Grand Slam main draw a match since Janko Tipsarević in London in 2011.[59][60] Sinner played Daniil Medvedev next in the round robin stage,Since making his professional debut in 2018, Sinner has won 11 ATP Tour singles titles, including a Grand Slam at the 2024 Australian Open and a Masters 1000 at\\\\xa0...\\'}, {\\'url\\': \\'https://ausopen.com/players/italy/jannik-sinner\\', \\'content\\': \"Jannik Sinner weathered an early onslaught to reel in Daniil Medvedev, growing in potency to win the Australian Open the Australian Open 2024 final – his first Grand Slam singles title. Jannik Sinner will contest his first Grand Slam final after scuttling Novak Djokovic’s bid for a record-extending 11th Jannick Sinner has form and fitness on his side ahead of his meeting with Andrey Rublev.Jannik Sinner Press Conference | Australian Open 2024 Final. 15:02 · Player & Career Overview. Career Wins 73% · Men\\'s Singles. Final • Rod Laver Arena · Comeback\\\\xa0...\"}]', '#E4': \"content='The hometown of the 2024 Australian Open winner, Jannik Sinner, is Sesto, a small town near the Austrian border in Italy.'\"}}}\n", + "{'solve': {'result': 'The hometown of the 2024 Australian Open winner, Jannik Sinner, is Sesto, Italy.'}}\n", + "{'__end__': {'task': 'what is the hometown of the 2024 australian open winner', 'plan_string': 'Plan: Use Google to search for the 2024 Australian Open winner.\\n#E1 = Google[2024 Australian Open winner]\\n\\nPlan: Retrieve the name of the 2024 Australian Open winner from the search results.\\n#E2 = LLM[What is the name of the 2024 Australian Open winner, given #E1]\\n\\nPlan: Use Google to search for the hometown of the 2024 Australian Open winner.\\n#E3 = Google[hometown of 2024 Australian Open winner, given #E2]\\n\\nPlan: Retrieve the hometown of the 2024 Australian Open winner from the search results.\\n#E4 = LLM[What is the hometown of the 2024 Australian Open winner, given #E3]', 'steps': [('Use Google to search for the 2024 Australian Open winner.', '#E1', 'Google', '2024 Australian Open winner'), ('Retrieve the name of the 2024 Australian Open winner from the search results.', '#E2', 'LLM', 'What is the name of the 2024 Australian Open winner, given #E1'), ('Use Google to search for the hometown of the 2024 Australian Open winner.', '#E3', 'Google', 'hometown of 2024 Australian Open winner, given #E2'), ('Retrieve the hometown of the 2024 Australian Open winner from the search results.', '#E4', 'LLM', 'What is the hometown of the 2024 Australian Open winner, given #E3')], 'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]', '#E2': \"content='The name of the 2024 Australian Open winner is Jannik Sinner.'\", '#E3': '[{\\'url\\': \\'https://www.tennis.com/news/articles/soccer-mad-italy-is-now-obsessed-with-tennis-player-jannik-sinner-after-his-australian-open-title\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Play & Win Advertising Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title \\'Grandissimo\\': Italian Premier Giorgia Meloni welcomes home Australian Open champion Jannik Sinner First of many? Jannik Sinner\\'s five-set comeback sinks Daniil Medvedev in Australian Open finalJan 28, 2024 — Jan 28, 2024In Sinner\\'s tiny hometown of Sesto (population 1,860) near the Austrian border, about 70 people gathered inside the two-court indoor tennis\\\\xa0...\"}, {\\'url\\': \\'https://apnews.com/article/jannik-sinner-italy-australian-open-03573689c4c58c2851d1006e26546ac9\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev,Jan 28, 2024 — Jan 28, 2024Soccer-mad Italy has a new obsession. Jannik Sinner\\'s Australian Open performance on the tennis court has captured the country\\'s attention.\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/Jannik_Sinner\\', \\'content\\': \\'At the 2024 Australian Open, Sinner defeated world No. 1 Novak Djokovic in the semifinals to reach his first major Sinner is a major champion, having won the 2024 Australian Open.[3] He has won a further ten ATP Tour singles titles, Early in the year Sinner made the second round of the 2020 Australian Open, recording his first Grand Slam main draw a match since Janko Tipsarević in London in 2011.[59][60] Sinner played Daniil Medvedev next in the round robin stage,Since making his professional debut in 2018, Sinner has won 11 ATP Tour singles titles, including a Grand Slam at the 2024 Australian Open and a Masters 1000 at\\\\xa0...\\'}, {\\'url\\': \\'https://ausopen.com/players/italy/jannik-sinner\\', \\'content\\': \"Jannik Sinner weathered an early onslaught to reel in Daniil Medvedev, growing in potency to win the Australian Open the Australian Open 2024 final – his first Grand Slam singles title. Jannik Sinner will contest his first Grand Slam final after scuttling Novak Djokovic’s bid for a record-extending 11th Jannick Sinner has form and fitness on his side ahead of his meeting with Andrey Rublev.Jannik Sinner Press Conference | Australian Open 2024 Final. 15:02 · Player & Career Overview. Career Wins 73% · Men\\'s Singles. Final • Rod Laver Arena · Comeback\\\\xa0...\"}]', '#E4': \"content='The hometown of the 2024 Australian Open winner, Jannik Sinner, is Sesto, a small town near the Austrian border in Italy.'\"}, 'result': 'The hometown of the 2024 Australian Open winner, Jannik Sinner, is Sesto, Italy.'}}\n" + ] + } + ], + "source": [ + "for s in app.stream({\"task\":task}):\n", + " print(s)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ba4a3cc6-ae26-47e5-aabe-5a30637c94b8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 2f110d181b3b1940bac8bea49edf43efea5bdfd9 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 12 Feb 2024 14:33:34 -0800 Subject: [PATCH 040/108] Add images + narration --- examples/llm-compiler/img/llm-compiler.png | Bin 0 -> 883760 bytes .../plan-and-execute/img/plan-and-execute.png | Bin 0 -> 1179176 bytes examples/rewoo/img/rewoo-paper-workflow.png | Bin 0 -> 240032 bytes examples/rewoo/img/rewoo.png | Bin 0 -> 848693 bytes examples/rewoo/rewoo.ipynb | 309 +++++++++++++----- 5 files changed, 233 insertions(+), 76 deletions(-) create mode 100644 examples/llm-compiler/img/llm-compiler.png create mode 100644 examples/plan-and-execute/img/plan-and-execute.png create mode 100644 examples/rewoo/img/rewoo-paper-workflow.png create mode 100644 examples/rewoo/img/rewoo.png diff --git a/examples/llm-compiler/img/llm-compiler.png b/examples/llm-compiler/img/llm-compiler.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9ec7a57697e7b2b5885e439a5486ef38045ae4 GIT binary patch literal 883760 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 z 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�Ot4F{!w4MW}Cet;U!4Cn_|B!dSZ)% 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�OQ8&z<3E$2adM5n!1q}*t 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

-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