diff --git a/lib/crewai/src/crewai/experimental/agent_executor.py b/lib/crewai/src/crewai/experimental/agent_executor.py index 36163c4a1..4be4f24c3 100644 --- a/lib/crewai/src/crewai/experimental/agent_executor.py +++ b/lib/crewai/src/crewai/experimental/agent_executor.py @@ -226,6 +226,8 @@ class AgentExecutor(Flow[AgentReActState], CrewAgentExecutorMixin): # Execution guard to prevent concurrent/duplicate executions self._execution_lock = threading.Lock() + self._finalize_lock = threading.Lock() + self._finalize_called: bool = False self._is_executing: bool = False self._has_been_invoked: bool = False self._flow_initialized: bool = False @@ -1218,6 +1220,9 @@ provide clear results that can be used by subsequent steps.""" Returns routing decision based on parsing result. """ + if self.state.is_finished: + return "parsed" + try: enforce_rpm_limit(self.request_within_rpm_limit) @@ -1294,6 +1299,9 @@ provide clear results that can be used by subsequent steps.""" Returns routing decision based on whether tool calls or final answer. """ + if self.state.is_finished: + return "native_finished" + try: # Clear pending tools - LLM will decide what to do next after reading # the reflection prompt. It can either: @@ -2051,6 +2059,16 @@ provide clear results that can be used by subsequent steps.""" Handles both the legacy ReAct path (current_answer already set) and the Plan-and-Execute path (synthesize from completed todos). """ + # Guard against duplicate finalization — the flow may trigger finalize + # more than once when concurrent branches both reach a terminal state. + # Use a lock to atomically check-and-set _finalize_called so only the + # first caller proceeds. We use a separate flag (not is_finished) + # because is_finished should only be set when finalization succeeds. + with self._finalize_lock: + if self._finalize_called: + return "completed" + self._finalize_called = True + if self.agent.verbose: self._printer.print( content=f"[Finalize] todos_count={len(self.state.todos.items)}, todos_with_results={sum(1 for t in self.state.todos.items if t.result)}", @@ -2092,7 +2110,6 @@ provide clear results that can be used by subsequent steps.""" return "skipped" self.state.is_finished = True - self._show_logs(self.state.current_answer) return "completed" diff --git a/lib/crewai/src/crewai/llms/providers/bedrock/completion.py b/lib/crewai/src/crewai/llms/providers/bedrock/completion.py index 47946d949..00a7c77cd 100644 --- a/lib/crewai/src/crewai/llms/providers/bedrock/completion.py +++ b/lib/crewai/src/crewai/llms/providers/bedrock/completion.py @@ -1838,7 +1838,10 @@ class BedrockCompletion(BaseLLM): ) # CRITICAL: Handle model-specific conversation requirements - # Cohere and some other models require conversation to end with user message + # Cohere and some other models require conversation to end with user message. + # Anthropic models on Bedrock also reject assistant messages in the final + # position when tools are present ("pre-filling the assistant response is + # not supported"). if converse_messages: last_message = converse_messages[-1] if last_message["role"] == "assistant": @@ -1865,6 +1868,20 @@ class BedrockCompletion(BaseLLM): "content": [{"text": "Continue your response."}], } ) + # Anthropic (Claude) models reject assistant-last messages when + # tools are in the request. Append a user message so the + # Converse API accepts the payload. + elif "anthropic" in self.model.lower() or "claude" in self.model.lower(): + converse_messages.append( + { + "role": "user", + "content": [ + { + "text": "Please continue and provide your final answer." + } + ], + } + ) # Ensure first message is from user (required by Converse API) if not converse_messages: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_image_file[anthropic-claude-3-5-haiku-20241022].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_image_file[anthropic-claude-3-5-haiku-20241022].yaml index cd4e51124..7e32c13ee 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_image_file[anthropic-claude-3-5-haiku-20241022].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_image_file[anthropic-claude-3-5-haiku-20241022].yaml @@ -45,13 +45,12 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_015NmdCvw9wtvUbBu8FT2mWV","type":"message","role":"assistant","content":[{"type":"text","text":"This - image shows a linear graph titled \"Revenue Over Time\" that depicts a steady - increase in revenue from around $100 in 2020 to approximately $300 by 2024. - The x-axis represents years from 2020.0 to 2024.0, while the y-axis shows - revenue in millions of dollars. The blue line demonstrates a consistent, straight - upward trajectory, suggesting consistent and predictable revenue growth over - this four-year period."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":485,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":100,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01QgPLhuYEg6TCUTrnsGFxH8","type":"message","role":"assistant","content":[{"type":"text","text":"This + image is a line graph showing \"Revenue Over Time\" from 2020 to 2024. The + x-axis represents years, while the y-axis represents revenue in dollars (from + $100 to $300). The graph displays a steady, linear increase in revenue over + this period, with a consistent upward slope indicating consistent growth year + over year."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":485,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":77,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - CF-RAY-XXX @@ -62,7 +61,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:48:02 GMT + - Thu, 12 Feb 2026 19:30:50 GMT Server: - cloudflare Transfer-Encoding: @@ -88,7 +87,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-12T18:47:59Z' + - '2026-02-12T19:30:48Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -102,7 +101,7 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '2738' + - '2198' status: code: 200 message: OK @@ -152,13 +151,11 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01BhcsbakpoCguLqQRYQhVQc","type":"message","role":"assistant","content":[{"type":"text","text":"This - is a line graph showing \"Revenue Over Time\" from 2020 to 2024. The vertical - axis represents revenue in some monetary unit (appears to be in $, ranging - from 100 to 300), and the horizontal axis represents years. The blue line - shows a steady, linear increase in revenue over the time period, starting - around $100 in 2020 and rising consistently to approximately $300 by 2024, - indicating consistent and predictable revenue growth."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":485,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":103,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_017jsHA14R65RXwNiPJU2Cnb","type":"message","role":"assistant","content":[{"type":"text","text":"This + image is a line graph showing \"Revenue Over Time\" from 2020 to 2024. The + x-axis represents years, and the y-axis represents revenue in dollars (from + 100 to 300). The blue line shows a steady, linear increase in revenue over + this time period, with the slope indicating consistent growth year over year."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":485,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":76,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - CF-RAY-XXX @@ -169,7 +166,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:48:05 GMT + - Thu, 12 Feb 2026 19:30:53 GMT Server: - cloudflare Transfer-Encoding: @@ -195,7 +192,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-12T18:48:02Z' + - '2026-02-12T19:30:50Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -209,7 +206,7 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '3002' + - '3043' status: code: 200 message: OK diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_mixed_files[anthropic-claude-3-5-haiku-20241022].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_mixed_files[anthropic-claude-3-5-haiku-20241022].yaml index 7b968cf5d..4032937ef 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_mixed_files[anthropic-claude-3-5-haiku-20241022].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_mixed_files[anthropic-claude-3-5-haiku-20241022].yaml @@ -45,13 +45,13 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01TtkefUHzsVG6dcGJD9sXV1","type":"message","role":"assistant","content":[{"type":"text","text":"I - see two files:\n\n1. An image file (PNG or similar) of a line graph titled - \"Revenue Over Time\"\n - The x-axis shows years from 2020.0 to 2024.0\n - - The y-axis shows revenue from $100 to $300\n - The graph shows a linear - upward trend of revenue over time\n\n2. A PDF document with a single page, - which appears to be blank or white\n\nWould you like me to provide more details - about either of these files?"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":2091,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":2091,"ephemeral_1h_input_tokens":0},"output_tokens":115,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01XFeDCcTxbHAPAiXik49BvH","type":"message","role":"assistant","content":[{"type":"text","text":"I + see two files:\n\n1. An image file (chart/graph):\n- A line graph titled \"Revenue + Over Time\"\n- X-axis shows years from 2020 to 2024\n- Y-axis shows revenue + in dollars, ranging from 100 to 300\n- The line shows a steady, linear increase + in revenue over the time period\n\n2. A PDF document:\n- The PDF appears to + be a blank or white page\n- No visible text or content is present in the PDF + file\n\nWould you like me to provide more details about either of these files?"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":2091,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":2091,"ephemeral_1h_input_tokens":0},"output_tokens":127,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - CF-RAY-XXX @@ -62,7 +62,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:47:56 GMT + - Thu, 12 Feb 2026 19:30:44 GMT Server: - cloudflare Transfer-Encoding: @@ -88,7 +88,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-12T18:47:53Z' + - '2026-02-12T19:30:40Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -102,7 +102,7 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '3378' + - '3283' status: code: 200 message: OK @@ -152,12 +152,12 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_016rJDV7xAfrfHXep6EFxphz","type":"message","role":"assistant","content":[{"type":"text","text":"I - see two files in this submission:\n\n1. An image file (graph): A line chart - titled \"Revenue Over Time\" showing a steady linear increase in revenue from - around $100 to $300 between 2020 and 2024.\n\n2. A PDF document that appears - to be blank or white in its first page.\n\nWould you like me to provide more - details about either of these files?"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":0,"cache_read_input_tokens":2091,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":88,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01M5sCZgL9qiCbfHLBGQcDax","type":"message","role":"assistant","content":[{"type":"text","text":"I + see two files:\n\n1. An image file (a line graph) showing \"Revenue Over Time\" + from 2020 to 2024, with the y-axis representing revenue in dollars and showing + a steady linear increase from around 100 to 300 over the time period.\n\n2. + A PDF document (currently appears blank or white in the preview)\n\nWould + you like me to provide more details about either of these files?"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":0,"cache_read_input_tokens":2091,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":95,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - CF-RAY-XXX @@ -168,7 +168,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:47:59 GMT + - Thu, 12 Feb 2026 19:30:47 GMT Server: - cloudflare Transfer-Encoding: @@ -194,7 +194,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-12T18:47:56Z' + - '2026-02-12T19:30:44Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -208,7 +208,7 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '2555' + - '3073' status: code: 200 message: OK diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_pdf_file[anthropic-claude-3-5-haiku-20241022].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_pdf_file[anthropic-claude-3-5-haiku-20241022].yaml index edb2a6bf5..372bd0b8f 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_pdf_file[anthropic-claude-3-5-haiku-20241022].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalAnthropic.test_pdf_file[anthropic-claude-3-5-haiku-20241022].yaml @@ -45,10 +45,11 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_014Fwz8AuSsqCDZFeWbM272v","type":"message","role":"assistant","content":[{"type":"text","text":"I - apologize, but the document appears to be completely blank or white. There - is no discernible text, image, or content visible on this page. The file is - a PDF document, but it contains no readable information that I can analyze."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1658,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":53,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01C8ZkZMunUVDUDd8mh1r1We","type":"message","role":"assistant","content":[{"type":"text","text":"I + apologize, but the image appears to be completely blank or white. Without + any visible text, graphics, or distinguishing features, I cannot determine + the type of document. The file is a PDF, but the content page seems to be + empty or failed to render properly."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1658,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":58,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - CF-RAY-XXX @@ -59,7 +60,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:48:07 GMT + - Thu, 12 Feb 2026 19:30:55 GMT Server: - cloudflare Transfer-Encoding: @@ -85,7 +86,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-12T18:48:05Z' + - '2026-02-12T19:30:53Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -99,7 +100,7 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '1947' + - '2129' status: code: 200 message: OK @@ -149,10 +150,11 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01ACZd27CU6WZB4AuXn5bkdr","type":"message","role":"assistant","content":[{"type":"text","text":"I - apologize, but the document appears to be a blank white page. While it is - a PDF file format, there is no visible content or text on this page that I - can analyze or describe."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1658,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":43,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_013jb7edagayZxqGs6ioACyU","type":"message","role":"assistant","content":[{"type":"text","text":"I + apologize, but the image appears to be completely blank or white. There are + no visible contents or text that I can analyze to determine the type of document. + Without any discernible information, I cannot definitively state what type + of document this is."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1658,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":55,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - CF-RAY-XXX @@ -163,7 +165,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:48:09 GMT + - Thu, 12 Feb 2026 19:30:58 GMT Server: - cloudflare Transfer-Encoding: @@ -189,7 +191,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-12T18:48:07Z' + - '2026-02-12T19:30:56Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -203,7 +205,7 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '1713' + - '2005' status: code: 200 message: OK diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalAsync.test_async_agent_with_image.yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalAsync.test_async_agent_with_image.yaml index 6c8dc911b..728f0096c 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalAsync.test_async_agent_with_image.yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalAsync.test_async_agent_with_image.yaml @@ -1,72 +1,4 @@ interactions: -- request: - body: '{"trace_id": "031d490f-36b3-4488-b715-55fa0f2e4106", "execution_type": - "crew", "user_identifier": null, "execution_context": {"crew_fingerprint": null, - "crew_name": "Unknown Crew", "flow_name": null, "crewai_version": "1.9.3", "privacy_level": - "standard"}, "execution_metadata": {"expected_duration_estimate": 300, "agent_count": - 0, "task_count": 0, "flow_method_count": 0, "execution_started_at": "2026-02-12T18:43:55.911567+00:00"}}' - headers: - Accept: - - '*/*' - Connection: - - keep-alive - Content-Length: - - '434' - Content-Type: - - application/json - User-Agent: - - X-USER-AGENT-XXX - X-Crewai-Version: - - 1.9.3 - accept-encoding: - - ACCEPT-ENCODING-XXX - authorization: - - AUTHORIZATION-XXX - method: POST - uri: https://app.crewai.com/crewai_plus/api/v1/tracing/batches - response: - body: - string: '{"error":"bad_credentials","message":"Bad credentials"}' - headers: - Connection: - - keep-alive - Content-Length: - - '55' - Content-Type: - - application/json; charset=utf-8 - Date: - - Thu, 12 Feb 2026 18:43:56 GMT - cache-control: - - no-store - content-security-policy: - - CSP-FILTERED - expires: - - '0' - permissions-policy: - - PERMISSIONS-POLICY-XXX - pragma: - - no-cache - referrer-policy: - - REFERRER-POLICY-XXX - strict-transport-security: - - STS-XXX - vary: - - Accept - x-content-type-options: - - X-CONTENT-TYPE-XXX - x-frame-options: - - X-FRAME-OPTIONS-XXX - x-permitted-cross-domain-policies: - - X-PERMITTED-XXX - x-request-id: - - X-REQUEST-ID-XXX - x-runtime: - - X-RUNTIME-XXX - x-xss-protection: - - X-XSS-PROTECTION-XXX - status: - code: 401 - message: Unauthorized - request: body: '{"messages":[{"role":"system","content":"You are File Analyst. Expert at analyzing various file types.\nYour personal goal is: Analyze and describe files @@ -111,21 +43,22 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VxM69sJdGCO4sqAiok9MYpK8vYh\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921836,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8Wf7ODGo7Ffmb2OtAcjYHQNubTgn\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924549,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time.\\\" The x-axis represents the years, ranging from 2020 to 2024, - with fractional year markers indicating points between the standard yearly - divisions. The y-axis shows revenue in millions of dollars, ranging from 100 - to 300 million.\\n\\nThe line on the graph appears to increase steadily over - the years, indicating growth in revenue. It starts at just above 100 million - in 2020 and trends upward, reaching about 300 million by 2024. The graph includes - grid lines for better readability and visual reference. Overall, it illustrates - a positive trend in revenue over the specified time period.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 14213,\n \"completion_tokens\": 131,\n \"total_tokens\": 14344,\n \"prompt_tokens_details\": + Over Time.\\\" It displays a linear increase in revenue measured in millions + of dollars ($M) over a time period from the year 2020 to 2024. \\n\\n- The + x-axis represents the years, ranging from 2020 to 2024, with markers indicating + half-year increments (e.g., 2020.5 for mid-2020).\\n- The y-axis shows revenue, + starting from 100 million dollars and going up to 300 million dollars, with + ticks indicating increments of 25 million dollars.\\n- The plotted line shows + a consistent upward trend, suggesting steady revenue growth during the specified + timeframe. \\n\\nOverall, the graph effectively visualizes the increase in + revenue over the specified years, emphasizing a positive growth trajectory.\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 14213,\n \"completion_tokens\": 156,\n \"total_tokens\": 14369,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -138,7 +71,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:43:59 GMT + - Thu, 12 Feb 2026 19:29:13 GMT Server: - cloudflare Strict-Transport-Security: @@ -156,7 +89,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2647' + - '3561' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -234,22 +167,20 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VxQSUirryNn9E4INnAaQ9xLL0xl\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921840,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WfCkYRXaXH3HOW85tuMAlkbhQ6y\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924554,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time.\\\" The x-axis represents time, ranging from the year 2020 to 2024, - with increments marked at half-year intervals. The y-axis indicates revenue - in millions of dollars, ranging from 100 to 300. \\n\\nThe graph features - a steady upward trend, indicating that revenue increases consistently over - the time period shown. This suggests positive growth in revenue from the starting - point in 2020, continuing to rise towards 2024. The line is simple and clear, - with a light blue color, and a grid is present for better visibility of the - data points.\",\n \"refusal\": null,\n \"annotations\": []\n - \ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n - \ ],\n \"usage\": {\n \"prompt_tokens\": 14213,\n \"completion_tokens\": - 125,\n \"total_tokens\": 14338,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"The image is a line graph depicting + revenue over time. The x-axis represents the years from 2020 to 2024, while + the y-axis shows the revenue in millions of dollars, ranging from 100 to 300 + million. The graph illustrates a steady increase in revenue, with a clear + upward trend from the beginning of 2020 to the middle of 2024. The line is + smooth and continuous, indicating consistent growth in revenue throughout + the specified time period. The title of the graph is \\\"Revenue Over Time.\\\"\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 14213,\n \"completion_tokens\": 105,\n \"total_tokens\": 14318,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" @@ -261,7 +192,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:44:02 GMT + - Thu, 12 Feb 2026 19:29:16 GMT Server: - cloudflare Strict-Transport-Security: @@ -279,7 +210,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2673' + - '2273' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_audio_gemini.yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_audio_gemini.yaml index 2ef91d20c..bca5d1bb2 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_audio_gemini.yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_audio_gemini.yaml @@ -30,27 +30,27 @@ interactions: response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"The audio appears to contain the distinct - sound of a single beep.\\n\"\n }\n ],\n \"role\": \"model\"\n - \ },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.352912357875279\n + [\n {\n \"text\": \"The audio appears to contain the sound + of a sine wave. \\n\"\n }\n ],\n \"role\": \"model\"\n + \ },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.16834642205919539\n \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 62,\n \"candidatesTokenCount\": 14,\n \"totalTokenCount\": 76,\n \"promptTokensDetails\": [\n {\n \ \"modality\": \"TEXT\",\n \"tokenCount\": 37\n },\n {\n \ \"modality\": \"AUDIO\",\n \"tokenCount\": 25\n }\n ],\n \ \"candidatesTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n \ \"tokenCount\": 14\n }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n - \ \"responseId\": \"8h-Oae6HDqfRjMcP846UiA4\"\n}\n" + \ \"responseId\": \"vjKOadbcDYCbjMcPr_iviQE\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:46:11 GMT + - Thu, 12 Feb 2026 20:06:23 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=1342 + - gfet4t7; dur=1898 Transfer-Encoding: - chunked Vary: @@ -97,27 +97,27 @@ interactions: response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"The audio appears to contain the sound - of a sine wave.\\n\"\n }\n ],\n \"role\": \"model\"\n - \ },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.19189137678879958\n - \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 62,\n \"candidatesTokenCount\": - 13,\n \"totalTokenCount\": 75,\n \"promptTokensDetails\": [\n {\n - \ \"modality\": \"AUDIO\",\n \"tokenCount\": 25\n },\n {\n - \ \"modality\": \"TEXT\",\n \"tokenCount\": 37\n }\n ],\n - \ \"candidatesTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n - \ \"tokenCount\": 13\n }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n - \ \"responseId\": \"8x-Oaf33It6RjMcP5Kuj8Q4\"\n}\n" + [\n {\n \"text\": \"The audio appears to contain the distinct + sound of a high-pitched whistle.\\n\"\n }\n ],\n \"role\": + \"model\"\n },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": + -0.34221607446670532\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 62,\n \"candidatesTokenCount\": 16,\n \"totalTokenCount\": 78,\n \"promptTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 37\n + \ },\n {\n \"modality\": \"AUDIO\",\n \"tokenCount\": + 25\n }\n ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": + \"TEXT\",\n \"tokenCount\": 16\n }\n ]\n },\n \"modelVersion\": + \"gemini-2.0-flash\",\n \"responseId\": \"wDKOacrKC6rQjMcPmtawkAI\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:46:12 GMT + - Thu, 12 Feb 2026 20:06:25 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=1347 + - gfet4t7; dur=1643 Transfer-Encoding: - chunked Vary: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_image_openai.yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_image_openai.yaml index b7e8b4b72..46754a575 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_image_openai.yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_image_openai.yaml @@ -43,22 +43,21 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8W11umxUf0zTnmcaJVjrawMnoU4J\",\n \"object\": - \"chat.completion\",\n \"created\": 1770922063,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WfTYkwvqprlLae9ptQE7AfdRbQt\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924571,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time.\\\" \\n\\nHere are the key features:\\n\\n- **X-Axis (Horizontal)**: - Representing time, labeled as \\\"Year,\\\" with values ranging from 2020 - to 2024.\\n- **Y-Axis (Vertical)**: Representing revenue, labeled as \\\"Revenue - ($M),\\\" with values ranging from 100 million to 300 million.\\n- **Data - Trend**: The line shows a steady, linear increase in revenue over the given - time period, starting at 100 million in early 2020 and rising to approximately - 300 million by 2024.\\n\\nThe graph includes gridlines for easier readability - and a clear, simple design, making it easy to interpret the upward trend in - revenue over the specified years.\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 14213,\n \"completion_tokens\": - 155,\n \"total_tokens\": 14368,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + Over Time.\\\" The x-axis represents the timeline from the year 2020 to 2024, + while the y-axis shows revenue in millions of dollars, ranging from 100 to + 300 million dollars. \\n\\nThe graph depicts a steadily increasing trend in + revenue, starting just above 100 million dollars in 2020 and progressing linearly + upwards to reach around 300 million dollars by 2024. The line is relatively + straight, indicating consistent growth over the specified period. The background + gridlines enhance readability and make it easier to track values along both + axes.\",\n \"refusal\": null,\n \"annotations\": []\n },\n + \ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n + \ \"usage\": {\n \"prompt_tokens\": 14213,\n \"completion_tokens\": + 120,\n \"total_tokens\": 14333,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -71,7 +70,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:47:46 GMT + - Thu, 12 Feb 2026 19:29:35 GMT Server: - cloudflare Strict-Transport-Security: @@ -89,7 +88,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2748' + - '3918' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -167,21 +166,20 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8W14SueabPuZzqLTQvu86Z3UNekT\",\n \"object\": - \"chat.completion\",\n \"created\": 1770922066,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WfXId5rCBd3Ev0dU3DHhDDpES85\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924575,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time.\\\" The x-axis represents time, spanning from the year 2020 to - 2024, while the y-axis indicates revenue measured in millions of dollars, - ranging from 100 million to 300 million. \\n\\nThe graph shows a steady increase - in revenue over the specified years, with a smooth upward trend indicating - consistent growth. Points on the graph likely correspond to specific revenue - figures for each year. The overall visual presentation is clear, with a grid - that helps to read the data points accurately. The line is simple and straight, - suggesting a linear growth pattern in revenue over the given time frame.\",\n - \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": - null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 14213,\n \"completion_tokens\": 128,\n \"total_tokens\": 14341,\n \"prompt_tokens_details\": + Over Time.\\\" The x-axis represents the years from 2020 to 2024, while the + y-axis displays revenue in millions of dollars, ranging from 100 to 300. The + graph shows a linear upward trend, indicating that revenue has been steadily + increasing over the given time period. The data points form a straight line + that rises from around 100 million dollars in 2020 to approximately 300 million + dollars by 2024. The grid lines on the graph enhance readability, allowing + for easier interpretation of the revenue growth trends.\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 14213,\n \"completion_tokens\": 116,\n \"total_tokens\": 14329,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -194,7 +192,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:47:49 GMT + - Thu, 12 Feb 2026 19:29:38 GMT Server: - cloudflare Strict-Transport-Security: @@ -212,7 +210,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2482' + - '2751' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_pdf_anthropic.yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_pdf_anthropic.yaml index 546c2568f..84b472bbe 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_pdf_anthropic.yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_pdf_anthropic.yaml @@ -45,11 +45,11 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01M1YSZJWKzogBgURmFswZQ6","type":"message","role":"assistant","content":[{"type":"text","text":"I - apologize, but the document image appears to be completely blank or white. - While this is a PDF file format, there is no visible content on the page that - I can analyze or describe. Could you please check if the correct document - was uploaded or if there might be an issue with the file''s rendering?"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1656,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":65,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01RnyTYpTE9Dd8BfwyMfuwum","type":"message","role":"assistant","content":[{"type":"text","text":"I + apologize, but the image appears to be blank or completely white. Without + any visible text or content, I cannot determine the type or nature of the + document. If you intended to share a specific document, you may want to check + the file and try uploading it again."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1656,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":59,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - CF-RAY-XXX @@ -60,7 +60,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:46:00 GMT + - Thu, 12 Feb 2026 19:29:25 GMT Server: - cloudflare Transfer-Encoding: @@ -86,7 +86,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-12T18:45:58Z' + - '2026-02-12T19:29:23Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -100,7 +100,7 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '2511' + - '2072' status: code: 200 message: OK @@ -150,11 +150,10 @@ interactions: uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01USUJsDYRxmubCmAzZZ2j8x","type":"message","role":"assistant","content":[{"type":"text","text":"I - apologize, but the image appears to be blank or completely white. No discernible - content, text, or details are visible in the document preview provided. If - this is supposed to be a specific document, there might be an issue with the - file upload or rendering."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1656,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":58,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_011J2La8KpjxAK255NsSpePY","type":"message","role":"assistant","content":[{"type":"text","text":"I + apologize, but the document appears to be a blank white page. No text, images, + or discernible content is visible in this PDF file. Without any readable information, + I cannot determine the type or purpose of this document."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1656,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":51,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - CF-RAY-XXX @@ -165,7 +164,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:46:02 GMT + - Thu, 12 Feb 2026 19:29:27 GMT Server: - cloudflare Transfer-Encoding: @@ -191,7 +190,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-12T18:46:00Z' + - '2026-02-12T19:29:26Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -205,7 +204,7 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '1955' + - '1802' status: code: 200 message: OK diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_pdf_openai_responses.yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_pdf_openai_responses.yaml index d1634e4c9..cffd1bac2 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_pdf_openai_responses.yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_pdf_openai_responses.yaml @@ -43,30 +43,31 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_014cdacec903d5c700698e1ff4fd5c8191adfdb7bcfc8d6765\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921973,\n \"status\": + string: "{\n \"id\": \"resp_0751868929a7aa7500698e2a23d5508194b8e4092ff79a8f41\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924579,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921974,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924581,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_014cdacec903d5c700698e1ff5aa2081919797ed0304d1162e\",\n + \ \"output\": [\n {\n \"id\": \"msg_0751868929a7aa7500698e2a2474208194a7ea7e8d1179c3fa\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": - [],\n \"logprobs\": [],\n \"text\": \"It looks like there - is no document provided for analysis. Please upload the document, and I'll - help you understand its contents and purpose.\"\n }\n ],\n \"role\": - \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": - 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": - null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n - \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": - true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": - \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": - \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": - \"disabled\",\n \"usage\": {\n \"input_tokens\": 51,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 27,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 78\n },\n + [],\n \"logprobs\": [],\n \"text\": \"It seems that you + have not uploaded any document or file for analysis. Please provide the file + you'd like me to review, and I'll be happy to help you with the analysis and + description.\"\n }\n ],\n \"role\": \"assistant\"\n }\n + \ ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": + null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": null,\n + \ \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n },\n \"safety_identifier\": + null,\n \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": + 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n + \ \"verbosity\": \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": + [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n + \ \"usage\": {\n \"input_tokens\": 51,\n \"input_tokens_details\": {\n + \ \"cached_tokens\": 0\n },\n \"output_tokens\": 38,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 89\n },\n \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: @@ -76,7 +77,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:46:14 GMT + - Thu, 12 Feb 2026 19:29:41 GMT Server: - cloudflare Strict-Transport-Security: @@ -92,7 +93,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1119' + - '1581' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -162,32 +163,31 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_02c057cdb38bf0a600698e1ff631a08197a61539276dd42dd0\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921974,\n \"status\": + string: "{\n \"id\": \"resp_0c3ca22d310deec300698e2a25842881929a9aad25ea18eb77\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924581,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921974,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924582,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_02c057cdb38bf0a600698e1ff6854c819786ac4fa19bb67d40\",\n + \ \"output\": [\n {\n \"id\": \"msg_0c3ca22d310deec300698e2a26058081929351f3632bd1aa8e\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": - [],\n \"logprobs\": [],\n \"text\": \"It seems there is - no document provided with your request. Please upload the file you'd like - me to analyze, and I'll be happy to help you understand what it is!\"\n }\n - \ ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": - true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": - null,\n \"summary\": null\n },\n \"safety_identifier\": null,\n \"service_tier\": - \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n - \ \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n - \ },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": - 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": - 51,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 34,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 0\n },\n \"total_tokens\": 85\n },\n \"user\": null,\n \"metadata\": - {}\n}" + [],\n \"logprobs\": [],\n \"text\": \"Please upload the + document you would like me to analyze, and I'll provide you with a detailed + description and analysis of its contents.\"\n }\n ],\n \"role\": + \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": + 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": + null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n + \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": + true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": + \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": + \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": + \"disabled\",\n \"usage\": {\n \"input_tokens\": 51,\n \"input_tokens_details\": + {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 26,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 77\n },\n + \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: - CF-RAY-XXX @@ -196,7 +196,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:46:15 GMT + - Thu, 12 Feb 2026 19:29:42 GMT Server: - cloudflare Strict-Transport-Security: @@ -212,7 +212,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '963' + - '870' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_text_gemini.yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_text_gemini.yaml index f00a545fc..ca81ea55f 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_text_gemini.yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_text_gemini.yaml @@ -30,31 +30,31 @@ interactions: response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"The text provides guidelines for writing - effective reviews. Key principles include being clear, concise, specific, - and constructive; focusing on behavior and outcomes; balancing positive feedback - with areas for improvement; using objective criteria; suggesting next steps; - and proofreading before submitting the review. The guidelines aim to ensure - feedback is easily understood, impactful, and actionable.\\n\"\n }\n + [\n {\n \"text\": \"The text provides guidelines for giving + effective feedback. Key principles include being clear, focusing on behavior + and outcomes with specific examples, balancing positive and constructive criticism, + remaining respectful, using objective criteria, suggesting actionable next + steps, and proofreading for clarity and tone. In essence, feedback should + be easily understood, objective, and geared towards improvement.\\n\"\n }\n \ ],\n \"role\": \"model\"\n },\n \"finishReason\": - \"STOP\",\n \"avgLogprobs\": -0.27790459464578066\n }\n ],\n \"usageMetadata\": - {\n \"promptTokenCount\": 163,\n \"candidatesTokenCount\": 68,\n \"totalTokenCount\": - 231,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n + \"STOP\",\n \"avgLogprobs\": -0.24900928895864913\n }\n ],\n \"usageMetadata\": + {\n \"promptTokenCount\": 163,\n \"candidatesTokenCount\": 67,\n \"totalTokenCount\": + 230,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n \ \"tokenCount\": 163\n }\n ],\n \"candidatesTokensDetails\": - [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 68\n + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 67\n \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": - \"VSCOabHRNtvh_uMP96nB6Qk\"\n}\n" + \"SDSOaae8LLzRjMcPptjXkQ4\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:47:51 GMT + - Thu, 12 Feb 2026 20:12:58 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=1388 + - gfet4t7; dur=1742 Transfer-Encoding: - chunked Vary: @@ -101,31 +101,30 @@ interactions: response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"These guidelines outline how to provide - effective feedback. Feedback should be clear, concise, and focus on specific - behaviors and outcomes with supporting examples. It should balance positive - aspects with areas for improvement, be respectful and constructive, and reference - objective criteria when possible. Actionable next steps should be suggested, - and the feedback should be proofread for tone, grammar, and clarity before - submission.\\n\"\n }\n ],\n \"role\": \"model\"\n },\n - \ \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.12800926208496094\n - \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 163,\n \"candidatesTokenCount\": - 75,\n \"totalTokenCount\": 238,\n \"promptTokensDetails\": [\n {\n - \ \"modality\": \"TEXT\",\n \"tokenCount\": 163\n }\n ],\n - \ \"candidatesTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n - \ \"tokenCount\": 75\n }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n - \ \"responseId\": \"VyCOafa1EtfR_uMPsueW6Qk\"\n}\n" + [\n {\n \"text\": \"The text provides guidelines for writing + effective feedback. Key recommendations include being clear, concise, specific, + and respectful. Feedback should focus on behavior and outcomes, balance positive + and negative aspects, use objective criteria, and suggest actionable next + steps. Proofreading is essential before submitting feedback.\\n\"\n }\n + \ ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"avgLogprobs\": -0.29874773892489348\n }\n ],\n \"usageMetadata\": + {\n \"promptTokenCount\": 163,\n \"candidatesTokenCount\": 55,\n \"totalTokenCount\": + 218,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 163\n }\n ],\n \"candidatesTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 55\n + \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": + \"SjSOab3-HaajjMcP38-yyQw\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:47:52 GMT + - Thu, 12 Feb 2026 20:12:59 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=1185 + - gfet4t7; dur=1198 Transfer-Encoding: - chunked Vary: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_video_gemini.yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_video_gemini.yaml index f0e1c09d3..78a1b6b47 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_video_gemini.yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalFileTypes.test_video_gemini.yaml @@ -30,30 +30,29 @@ interactions: response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"The video shows a white square moving - across a blue background. The square starts on the left side of the screen, - moves towards the center, pauses briefly, and then moves towards the right - side of the screen before stopping.\"\n }\n ],\n \"role\": - \"model\"\n },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": - -0.2619009884920987\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": - 1327,\n \"candidatesTokenCount\": 44,\n \"totalTokenCount\": 1371,\n - \ \"promptTokensDetails\": [\n {\n \"modality\": \"VIDEO\",\n + [\n {\n \"text\": \"The video is a simple animation. A + white square moves from the left side of the screen to the center, then to + the right side, against a blue background. The movement is linear and smooth.\\n\"\n + \ }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"avgLogprobs\": -0.35358294045052879\n }\n ],\n \"usageMetadata\": + {\n \"promptTokenCount\": 1327,\n \"candidatesTokenCount\": 41,\n \"totalTokenCount\": + 1368,\n \"promptTokensDetails\": [\n {\n \"modality\": \"VIDEO\",\n \ \"tokenCount\": 1290\n },\n {\n \"modality\": \"TEXT\",\n \ \"tokenCount\": 37\n }\n ],\n \"candidatesTokensDetails\": - [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 44\n + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 41\n \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": - \"6x-OaaHaBbSv_uMPj_qo8Ak\"\n}\n" + \"tTKOacnvBICbjMcPr_iviQE\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:46:06 GMT + - Thu, 12 Feb 2026 20:06:18 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=3570 + - gfet4t7; dur=5984 Transfer-Encoding: - chunked Vary: @@ -100,31 +99,28 @@ interactions: response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"The video is a simple animation featuring - a white square moving across a blue background. Initially, the square is positioned - on the left side of the frame. It then moves to the center and subsequently - shifts to the right side of the frame before returning to the left again. - This movement is repeated throughout the short video.\\n\"\n }\n - \ ],\n \"role\": \"model\"\n },\n \"finishReason\": - \"STOP\",\n \"avgLogprobs\": -0.52482707916744176\n }\n ],\n \"usageMetadata\": - {\n \"promptTokenCount\": 1327,\n \"candidatesTokenCount\": 63,\n \"totalTokenCount\": - 1390,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n - \ \"tokenCount\": 37\n },\n {\n \"modality\": \"VIDEO\",\n - \ \"tokenCount\": 1290\n }\n ],\n \"candidatesTokensDetails\": - [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 63\n - \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": - \"7h-OafCdKdvh_uMP96nB6Qk\"\n}\n" + [\n {\n \"text\": \"The video shows a white square moving + from the left side of the screen to the center, and then to the right, against + a blue background.\\n\"\n }\n ],\n \"role\": \"model\"\n + \ },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.2401906967163086\n + \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 1327,\n \"candidatesTokenCount\": + 30,\n \"totalTokenCount\": 1357,\n \"promptTokensDetails\": [\n {\n + \ \"modality\": \"TEXT\",\n \"tokenCount\": 37\n },\n {\n + \ \"modality\": \"VIDEO\",\n \"tokenCount\": 1290\n }\n + \ ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": + \"TEXT\",\n \"tokenCount\": 30\n }\n ]\n },\n \"modelVersion\": + \"gemini-2.0-flash\",\n \"responseId\": \"uzKOacfwBNuL-sAPtNf9gAw\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:46:09 GMT + - Thu, 12 Feb 2026 20:06:21 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=3403 + - gfet4t7; dur=2929 Transfer-Encoding: - chunked Vary: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_audio_file[gemini-gemini-2.0-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_audio_file[gemini-gemini-2.0-flash].yaml index 1c7d55dbd..8817206ef 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_audio_file[gemini-gemini-2.0-flash].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_audio_file[gemini-gemini-2.0-flash].yaml @@ -30,27 +30,27 @@ interactions: response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"Based on the audio, I hear the distinct - sound of a telephone ringing.\\n\"\n }\n ],\n \"role\": + [\n {\n \"text\": \"Based on the provided audio, I hear + the sound of a telephone ringing.\\n\"\n }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": - -0.17129173874855042\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + -0.26358166337013245\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 66,\n \"candidatesTokenCount\": 16,\n \"totalTokenCount\": 82,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 41\n \ },\n {\n \"modality\": \"AUDIO\",\n \"tokenCount\": 25\n }\n ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 16\n }\n ]\n },\n \"modelVersion\": - \"gemini-2.0-flash\",\n \"responseId\": \"mx-OacTKNYWnjMcPi7uDsA0\"\n}\n" + \"gemini-2.0-flash\",\n \"responseId\": \"kyqOaf7iGNWJ-sAPh-fEmQ4\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:44:45 GMT + - Thu, 12 Feb 2026 19:31:33 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=2146 + - gfet4t7; dur=1765 Transfer-Encoding: - chunked Vary: @@ -97,27 +97,27 @@ interactions: response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"Based on the audio, I hear a dial - tone.\\n\"\n }\n ],\n \"role\": \"model\"\n },\n - \ \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.10102689266204834\n - \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 66,\n \"candidatesTokenCount\": - 12,\n \"totalTokenCount\": 78,\n \"promptTokensDetails\": [\n {\n - \ \"modality\": \"AUDIO\",\n \"tokenCount\": 25\n },\n {\n - \ \"modality\": \"TEXT\",\n \"tokenCount\": 41\n }\n ],\n - \ \"candidatesTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n - \ \"tokenCount\": 12\n }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n - \ \"responseId\": \"nh-OaYqEA6HVjMcP6OjiwA4\"\n}\n" + [\n {\n \"text\": \"Based on the provided audio, I hear + the distinct sound of a dial tone.\\n\"\n }\n ],\n \"role\": + \"model\"\n },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": + -0.082689825226278865\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 66,\n \"candidatesTokenCount\": 17,\n \"totalTokenCount\": 83,\n \"promptTokensDetails\": + [\n {\n \"modality\": \"AUDIO\",\n \"tokenCount\": 25\n + \ },\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": + 41\n }\n ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": + \"TEXT\",\n \"tokenCount\": 17\n }\n ]\n },\n \"modelVersion\": + \"gemini-2.0-flash\",\n \"responseId\": \"lSqOad_xC8XQjMcP9YfmuAQ\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:44:56 GMT + - Thu, 12 Feb 2026 19:31:35 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=10745 + - gfet4t7; dur=2323 Transfer-Encoding: - chunked Vary: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_audio_file[gemini-gemini-2.5-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_audio_file[gemini-gemini-2.5-flash].yaml new file mode 100644 index 000000000..a175d29ee --- /dev/null +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_audio_file[gemini-gemini-2.5-flash].yaml @@ -0,0 +1,132 @@ +interactions: +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What do you hear in + this audio?\n\nProvide your complete response:"}, {"inlineData": {"data": "UklGRqQ-AABXQVZFZm10IBAAAAABAAEAQB8AAIA-AAACABAAZGF0YYA-AAAAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__y", + "mimeType": "audio/x-wav"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '21834' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"I hear a **phone ringing**.\"\n }\n + \ ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 76,\n \"candidatesTokenCount\": 7,\n \"totalTokenCount\": 137,\n \"promptTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 43\n + \ },\n {\n \"modality\": \"AUDIO\",\n \"tokenCount\": + 33\n }\n ],\n \"thoughtsTokenCount\": 54\n },\n \"modelVersion\": + \"gemini-2.5-flash\",\n \"responseId\": \"O0qOafWMFb-U_uMPmq2sAQ\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:35 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=1813 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What do you hear in + this audio?\n\nProvide your complete response:"}, {"inlineData": {"data": "UklGRqQ-AABXQVZFZm10IBAAAAABAAEAQB8AAIA-AAACABAAZGF0YYA-AAAAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__yAAABDXkYDSG3Je0lpiFkGSIONAEj9Hjold-H2ujZyt235cDwl_22CpEWwh8xJTomviImG1kQnQN09mvq8OAh267Zw9wD5JLuMPtgCJMUVx6EJGEmsyPNHH8SAQbP-HXsauLg25rZ4Ntq4nXsz_gBBn8SzRyzI2EmhCRXHpMUYAgw-5LuA-TD3K7ZIdvw4GvqdPadA1kQJhu-IjomMSXCH5EWtgqX_cDwt-XK3ejZh9qV33joI_Q0ASIOZBmmIe0ltyUNIXkYAQ0AAP_yh-fz3knaE9pa3pzm3vHM_t0LiBdrIHklGCY2IkkaQA9pAkr1b-k-4M_axtlC3drkp-9j_IwJlRUQH98kUiY9I_0bbhHQBKD3beup4Xzbn9lN3DPjge3_-TEHixOWHSAkZiYgJJYdixMxB__5ge0z403cn9l826nhbeug99AEbhH9Gz0jUibfJBAflRWMCWP8p-_a5ELdxtnP2j7gb-lK9WkCQA9JGjYiGCZ5JWsgiBfdC8z-3vGc5lreE9pJ2vPeh-f_8gAAAQ15GA0htyXtJaYhZBkiDjQBI_R46JXfh9ro2crdt-XA8Jf9tgqRFsIfMSU6Jr4iJhtZEJ0DdPZr6vDgIduu2cPcA-SS7jD7YAiTFFcehCRhJrMjzRx_EgEGz_h17Gri4Nua2eDbauJ17M_4AQZ_Es0csyNhJoQkVx6TFGAIMPuS7gPkw9yu2SHb8OBr6nT2nQNZECYbviI6JjElwh-RFrYKl_3A8Lflyt3o2Yfald946CP0NAEiDmQZpiHtJbclDSF5GAENAAD_8ofn895J2hPaWt6c5t7xzP7dC4gXayB5JRgmNiJJGkAPaQJK9W_pPuDP2sbZQt3a5KfvY_yMCZUVEB_fJFImPSP9G24R0ASg923rqeF825_ZTdwz44Ht__kxB4sTlh0gJGYmICSWHYsTMQf_-YHtM-NN3J_ZfNup4W3roPfQBG4R_Rs9I1Im3yQQH5UVjAlj_Kfv2uRC3cbZz9o-4G_pSvVpAkAPSRo2IhgmeSVrIIgX3QvM_t7xnOZa3hPaSdrz3ofn__IAAAENeRgNIbcl7SWmIWQZIg40ASP0eOiV34fa6NnK3bflwPCX_bYKkRbCHzElOia-IiYbWRCdA3T2a-rw4CHbrtnD3APkku4w-2AIkxRXHoQkYSazI80cfxIBBs_4dexq4uDbmtng22ridezP-AEGfxLNHLMjYSaEJFcekxRgCDD7ku4D5MPcrtkh2_Dga-p09p0DWRAmG74iOiYxJcIfkRa2Cpf9wPC35crd6NmH2pXfeOgj9DQBIg5kGaYh7SW3JQ0heRgBDQAA__KH5_PeSdoT2lrenObe8cz-3QuIF2sgeSUYJjYiSRpAD2kCSvVv6T7gz9rG2ULd2uSn72P8jAmVFRAf3yRSJj0j_RtuEdAEoPdt66nhfNuf2U3cM-OB7f_5MQeLE5YdICRmJiAklh2LEzEH__mB7TPjTdyf2XzbqeFt66D30ARuEf0bPSNSJt8kEB-VFYwJY_yn79rkQt3G2c_aPuBv6Ur1aQJAD0kaNiIYJnklayCIF90LzP7e8ZzmWt4T2kna896H5__y", + "mimeType": "audio/x-wav"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '21834' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"The audio contains a **telephone dial + tone**.\"\n }\n ],\n \"role\": \"model\"\n },\n + \ \"finishReason\": \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": + {\n \"promptTokenCount\": 76,\n \"candidatesTokenCount\": 9,\n \"totalTokenCount\": + 126,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 43\n },\n {\n \"modality\": \"AUDIO\",\n + \ \"tokenCount\": 33\n }\n ],\n \"thoughtsTokenCount\": 41\n + \ },\n \"modelVersion\": \"gemini-2.5-flash\",\n \"responseId\": \"PEqOafTwO_yT_uMP6d_hqAI\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:37 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=1615 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +version: 1 diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_image_file[gemini-gemini-2.0-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_image_file[gemini-gemini-2.0-flash].yaml index 7f0f22a46..3e579bdb0 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_image_file[gemini-gemini-2.0-flash].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_image_file[gemini-gemini-2.0-flash].yaml @@ -1,76 +1,4 @@ interactions: -- request: - body: '{"contents": [{"parts": [{"text": "\nCurrent Task: Describe this image - briefly.\n\nProvide your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", - "mimeType": "image/png"}}], "role": "user"}], "systemInstruction": {"parts": - [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour - personal goal is: Analyze and describe files accurately"}], "role": "user"}, - "generationConfig": {"stopSequences": ["\nObservation:"]}}' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - '*/*' - accept-encoding: - - ACCEPT-ENCODING-XXX - connection: - - keep-alive - content-length: - - '37437' - content-type: - - application/json - host: - - generativelanguage.googleapis.com - x-goog-api-client: - - google-genai-sdk/1.49.0 gl-python/3.13.3 - x-goog-api-key: - - X-GOOG-API-KEY-XXX - method: POST - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent - response: - body: - string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"The image is a line graph titled \\\"Revenue - Over Time\\\", plotting revenue in millions of dollars against the year. The - x-axis represents the year, ranging from 2020 to 2024, while the y-axis shows - the revenue in millions of dollars, spanning from 100 to 300. The graph displays - a linear increase in revenue from $100 million in 2020 to $300 million in - 2024. A grid is present in the background to enhance readability.\"\n }\n - \ ],\n \"role\": \"model\"\n },\n \"finishReason\": - \"STOP\",\n \"avgLogprobs\": -0.24902998662627904\n }\n ],\n \"usageMetadata\": - {\n \"promptTokenCount\": 1328,\n \"candidatesTokenCount\": 113,\n \"totalTokenCount\": - 1441,\n \"promptTokensDetails\": [\n {\n \"modality\": \"IMAGE\",\n - \ \"tokenCount\": 1290\n },\n {\n \"modality\": \"TEXT\",\n - \ \"tokenCount\": 38\n }\n ],\n \"candidatesTokensDetails\": - [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 113\n - \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": - \"qR-OaYG7IfjXjMcP-dDUuQ8\"\n}\n" - headers: - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Type: - - application/json; charset=UTF-8 - Date: - - Thu, 12 Feb 2026 18:44:59 GMT - Server: - - scaffolding on HTTPServer2 - Server-Timing: - - gfet4t7; dur=1967 - Transfer-Encoding: - - chunked - Vary: - - Origin - - X-Origin - - Referer - X-Content-Type-Options: - - X-CONTENT-TYPE-XXX - X-Frame-Options: - - X-FRAME-OPTIONS-XXX - X-XSS-Protection: - - '0' - status: - code: 200 - message: OK - request: body: '{"contents": [{"parts": [{"text": "\nCurrent Task: Describe this image briefly.\n\nProvide your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", @@ -105,28 +33,98 @@ interactions: [\n {\n \"text\": \"The image is a line graph titled \\\"Revenue Over Time\\\". The x-axis represents the year, ranging from 2020 to 2024. The y-axis represents revenue in millions of dollars, ranging from 100 to - 300. The line on the graph shows a steady increase in revenue from $100 million - in 2020 to $300 million in 2024. The graph has a grid for easy reading of - the values.\"\n }\n ],\n \"role\": \"model\"\n },\n - \ \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.0959563936505999\n - \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 1328,\n \"candidatesTokenCount\": - 105,\n \"totalTokenCount\": 1433,\n \"promptTokensDetails\": [\n {\n - \ \"modality\": \"TEXT\",\n \"tokenCount\": 38\n },\n {\n - \ \"modality\": \"IMAGE\",\n \"tokenCount\": 1290\n }\n - \ ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": - \"TEXT\",\n \"tokenCount\": 105\n }\n ]\n },\n \"modelVersion\": - \"gemini-2.0-flash\",\n \"responseId\": \"rB-OaZ-_DpXVjMcPxJvi6Aw\"\n}\n" + 300. The graph shows a straight line trending upwards, indicating a steady + increase in revenue over the specified time period.\\n\"\n }\n ],\n + \ \"role\": \"model\"\n },\n \"finishReason\": \"STOP\",\n + \ \"avgLogprobs\": -0.19183443769623962\n }\n ],\n \"usageMetadata\": + {\n \"promptTokenCount\": 1328,\n \"candidatesTokenCount\": 79,\n \"totalTokenCount\": + 1407,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 38\n },\n {\n \"modality\": \"IMAGE\",\n + \ \"tokenCount\": 1290\n }\n ],\n \"candidatesTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 79\n + \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": + \"jCqOaeGHGOi9jMcPmN3ssAw\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:45:01 GMT + - Thu, 12 Feb 2026 19:31:26 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=1717 + - gfet4t7; dur=1863 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: Describe this image + briefly.\n\nProvide your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", + "mimeType": "image/png"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '37437' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"The image is a line graph titled \\\"Revenue + Over Time\\\". The x-axis represents the year from 2020 to 2024, and the y-axis + represents revenue in millions of dollars. The graph shows a linear increase + in revenue from $100 million in 2020 to $300 million in 2024.\\n\"\n }\n + \ ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"avgLogprobs\": -0.059104222517747149\n }\n ],\n \"usageMetadata\": + {\n \"promptTokenCount\": 1328,\n \"candidatesTokenCount\": 78,\n \"totalTokenCount\": + 1406,\n \"promptTokensDetails\": [\n {\n \"modality\": \"IMAGE\",\n + \ \"tokenCount\": 1290\n },\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 38\n }\n ],\n \"candidatesTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 78\n + \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": + \"jiqOaYGkEI7UjMcPjoCm8Qw\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 19:31:28 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=2514 Transfer-Encoding: - chunked Vary: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_image_file[gemini-gemini-2.5-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_image_file[gemini-gemini-2.5-flash].yaml new file mode 100644 index 000000000..669c0d1a9 --- /dev/null +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_image_file[gemini-gemini-2.5-flash].yaml @@ -0,0 +1,139 @@ +interactions: +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: Describe this image + briefly.\n\nProvide your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", + "mimeType": "image/png"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '37437' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"This is a line graph titled \\\"Revenue + Over Time,\\\" displaying a steady, linear increase in revenue from $100M + in 2020 to $300M in 2024. The x-axis represents \\\"Year,\\\" and the y-axis + represents \\\"Revenue ($M).\\\"\"\n }\n ],\n \"role\": + \"model\"\n },\n \"finishReason\": \"STOP\",\n \"index\": 0\n + \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 298,\n \"candidatesTokenCount\": + 63,\n \"totalTokenCount\": 543,\n \"promptTokensDetails\": [\n {\n + \ \"modality\": \"TEXT\",\n \"tokenCount\": 40\n },\n {\n + \ \"modality\": \"IMAGE\",\n \"tokenCount\": 258\n }\n ],\n + \ \"thoughtsTokenCount\": 182\n },\n \"modelVersion\": \"gemini-2.5-flash\",\n + \ \"responseId\": \"QUqOaZ_-AYi8_uMP25m7gAQ\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:41 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=2169 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: Describe this image + briefly.\n\nProvide your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", + "mimeType": "image/png"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '37437' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"This image is a line graph titled + \\\"Revenue Over Time\\\". It displays revenue in millions of dollars ($M) + on the y-axis, ranging from $100M to $300M, against the year on the x-axis, + spanning from 2020 to 2024. A single blue line shows a consistent, linear + increase in revenue from $100M in 2020 to $300M in 2024.\"\n }\n + \ ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 298,\n \"candidatesTokenCount\": 102,\n \"totalTokenCount\": 584,\n + \ \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 40\n },\n {\n \"modality\": \"IMAGE\",\n + \ \"tokenCount\": 258\n }\n ],\n \"thoughtsTokenCount\": + 184\n },\n \"modelVersion\": \"gemini-2.5-flash\",\n \"responseId\": \"QkqOaff5Or6o_uMPwP3KgAY\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:43 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=1925 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +version: 1 diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_mixed_files[gemini-gemini-2.0-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_mixed_files[gemini-gemini-2.0-flash].yaml index a587de464..d380fed12 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_mixed_files[gemini-gemini-2.0-flash].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_mixed_files[gemini-gemini-2.0-flash].yaml @@ -1,76 +1,4 @@ interactions: -- request: - body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What files do you see?\n\nProvide - your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", - "mimeType": "image/png"}}, {"inlineData": {"data": "UmV2aWV3IEd1aWRlbGluZXMKCjEuIEJlIGNsZWFyIGFuZCBjb25jaXNlOiBXcml0ZSBmZWVkYmFjayB0aGF0IGlzIGVhc3kgdG8gdW5kZXJzdGFuZC4KMi4gRm9jdXMgb24gYmVoYXZpb3IgYW5kIG91dGNvbWVzOiBEZXNjcmliZSB3aGF0IGhhcHBlbmVkIGFuZCB3aHkgaXQgbWF0dGVycy4KMy4gQmUgc3BlY2lmaWM6IFByb3ZpZGUgZXhhbXBsZXMgdG8gc3VwcG9ydCB5b3VyIHBvaW50cy4KNC4gQmFsYW5jZSBwb3NpdGl2ZXMgYW5kIGltcHJvdmVtZW50czogSGlnaGxpZ2h0IHN0cmVuZ3RocyBhbmQgYXJlYXMgdG8gZ3Jvdy4KNS4gQmUgcmVzcGVjdGZ1bCBhbmQgY29uc3RydWN0aXZlOiBBc3N1bWUgcG9zaXRpdmUgaW50ZW50IGFuZCBvZmZlciBzb2x1dGlvbnMuCjYuIFVzZSBvYmplY3RpdmUgY3JpdGVyaWE6IFJlZmVyZW5jZSBnb2FscywgbWV0cmljcywgb3IgZXhwZWN0YXRpb25zIHdoZXJlIHBvc3NpYmxlLgo3LiBTdWdnZXN0IG5leHQgc3RlcHM6IFJlY29tbWVuZCBhY3Rpb25hYmxlIHdheXMgdG8gaW1wcm92ZS4KOC4gUHJvb2ZyZWFkOiBDaGVjayB0b25lLCBncmFtbWFyLCBhbmQgY2xhcml0eSBiZWZvcmUgc3VibWl0dGluZy4K", - "mimeType": "text/plain"}}], "role": "user"}], "systemInstruction": {"parts": - [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour - personal goal is: Analyze and describe files accurately"}], "role": "user"}, - "generationConfig": {"stopSequences": ["\nObservation:"]}}' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - '*/*' - accept-encoding: - - ACCEPT-ENCODING-XXX - connection: - - keep-alive - content-length: - - '38275' - content-type: - - application/json - host: - - generativelanguage.googleapis.com - x-goog-api-client: - - google-genai-sdk/1.49.0 gl-python/3.13.3 - x-goog-api-key: - - X-GOOG-API-KEY-XXX - method: POST - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent - response: - body: - string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"Here's my analysis of the file:\\n\\n**File - Type:**\\n\\nThe file is an image of a line graph.\\n\\n**Content:**\\n\\nThe - graph depicts \\\"Revenue Over Time.\\\" The x-axis represents the year, ranging - from 2020 to 2024. The y-axis represents Revenue in millions of dollars ($M), - ranging from 100 to 300. The graph shows a linear increase in revenue over - the years.\\n\"\n }\n ],\n \"role\": \"model\"\n },\n - \ \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.16967300492890028\n - \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 1454,\n \"candidatesTokenCount\": - 98,\n \"totalTokenCount\": 1552,\n \"promptTokensDetails\": [\n {\n - \ \"modality\": \"IMAGE\",\n \"tokenCount\": 1290\n },\n - \ {\n \"modality\": \"TEXT\",\n \"tokenCount\": 164\n }\n - \ ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": - \"TEXT\",\n \"tokenCount\": 98\n }\n ]\n },\n \"modelVersion\": - \"gemini-2.0-flash\",\n \"responseId\": \"lh-OaeztOIvQjMcPzMC1gQ4\"\n}\n" - headers: - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Type: - - application/json; charset=UTF-8 - Date: - - Thu, 12 Feb 2026 18:44:40 GMT - Server: - - scaffolding on HTTPServer2 - Server-Timing: - - gfet4t7; dur=1914 - Transfer-Encoding: - - chunked - Vary: - - Origin - - X-Origin - - Referer - X-Content-Type-Options: - - X-CONTENT-TYPE-XXX - X-Frame-Options: - - X-FRAME-OPTIONS-XXX - X-XSS-Protection: - - '0' - status: - code: 200 - message: OK - request: body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What files do you see?\n\nProvide your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", @@ -105,29 +33,29 @@ interactions: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": [\n {\n \"text\": \"I see a line graph titled \\\"Revenue Over Time\\\". The x-axis represents the year, ranging from 2020 to 2024. - The y-axis represents the revenue in millions of dollars ($M), ranging from - 100 to 300. A straight line shows a steady increase in revenue from 100 in - 2020 to 300 in 2024. The graph has a grid for better readability.\"\n }\n - \ ],\n \"role\": \"model\"\n },\n \"finishReason\": - \"STOP\",\n \"avgLogprobs\": -0.10813040733337402\n }\n ],\n \"usageMetadata\": + The y-axis represents revenue in millions of dollars ($M), ranging from 100 + to 300. A single blue line shows a linear increase in revenue from $100M in + 2020 to $300M in 2024. The graph has a grid.\\n\"\n }\n ],\n + \ \"role\": \"model\"\n },\n \"finishReason\": \"STOP\",\n + \ \"avgLogprobs\": -0.13460521697998046\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 1454,\n \"candidatesTokenCount\": 100,\n \"totalTokenCount\": 1554,\n \"promptTokensDetails\": [\n {\n \"modality\": \"IMAGE\",\n \ \"tokenCount\": 1290\n },\n {\n \"modality\": \"TEXT\",\n \ \"tokenCount\": 164\n }\n ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 100\n \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": - \"mB-OafaKNvnojMcPnY__4Aw\"\n}\n" + \"lyqOabaLKfLkjMcPs-amqA8\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:44:42 GMT + - Thu, 12 Feb 2026 19:31:37 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=1799 + - gfet4t7; dur=2151 Transfer-Encoding: - chunked Vary: @@ -143,4 +71,64 @@ interactions: status: code: 200 message: OK +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What files do you see?\n\nProvide + your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", + "mimeType": "image/png"}}, {"inlineData": {"data": "UmV2aWV3IEd1aWRlbGluZXMKCjEuIEJlIGNsZWFyIGFuZCBjb25jaXNlOiBXcml0ZSBmZWVkYmFjayB0aGF0IGlzIGVhc3kgdG8gdW5kZXJzdGFuZC4KMi4gRm9jdXMgb24gYmVoYXZpb3IgYW5kIG91dGNvbWVzOiBEZXNjcmliZSB3aGF0IGhhcHBlbmVkIGFuZCB3aHkgaXQgbWF0dGVycy4KMy4gQmUgc3BlY2lmaWM6IFByb3ZpZGUgZXhhbXBsZXMgdG8gc3VwcG9ydCB5b3VyIHBvaW50cy4KNC4gQmFsYW5jZSBwb3NpdGl2ZXMgYW5kIGltcHJvdmVtZW50czogSGlnaGxpZ2h0IHN0cmVuZ3RocyBhbmQgYXJlYXMgdG8gZ3Jvdy4KNS4gQmUgcmVzcGVjdGZ1bCBhbmQgY29uc3RydWN0aXZlOiBBc3N1bWUgcG9zaXRpdmUgaW50ZW50IGFuZCBvZmZlciBzb2x1dGlvbnMuCjYuIFVzZSBvYmplY3RpdmUgY3JpdGVyaWE6IFJlZmVyZW5jZSBnb2FscywgbWV0cmljcywgb3IgZXhwZWN0YXRpb25zIHdoZXJlIHBvc3NpYmxlLgo3LiBTdWdnZXN0IG5leHQgc3RlcHM6IFJlY29tbWVuZCBhY3Rpb25hYmxlIHdheXMgdG8gaW1wcm92ZS4KOC4gUHJvb2ZyZWFkOiBDaGVjayB0b25lLCBncmFtbWFyLCBhbmQgY2xhcml0eSBiZWZvcmUgc3VibWl0dGluZy4K", + "mimeType": "text/plain"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '38275' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent + response: + body: + string: "{\n \"error\": {\n \"code\": 429,\n \"message\": \"Resource + exhausted. Please try again later. Please refer to https://cloud.google.com/vertex-ai/generative-ai/docs/error-code-429 + for more details.\",\n \"status\": \"RESOURCE_EXHAUSTED\"\n }\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 19:31:40 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=2162 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 429 + message: Too Many Requests version: 1 diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_mixed_files[gemini-gemini-2.5-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_mixed_files[gemini-gemini-2.5-flash].yaml new file mode 100644 index 000000000..9e61e0600 --- /dev/null +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_mixed_files[gemini-gemini-2.5-flash].yaml @@ -0,0 +1,143 @@ +interactions: +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What files do you see?\n\nProvide + your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", + "mimeType": "image/png"}}, {"inlineData": {"data": "UmV2aWV3IEd1aWRlbGluZXMKCjEuIEJlIGNsZWFyIGFuZCBjb25jaXNlOiBXcml0ZSBmZWVkYmFjayB0aGF0IGlzIGVhc3kgdG8gdW5kZXJzdGFuZC4KMi4gRm9jdXMgb24gYmVoYXZpb3IgYW5kIG91dGNvbWVzOiBEZXNjcmliZSB3aGF0IGhhcHBlbmVkIGFuZCB3aHkgaXQgbWF0dGVycy4KMy4gQmUgc3BlY2lmaWM6IFByb3ZpZGUgZXhhbXBsZXMgdG8gc3VwcG9ydCB5b3VyIHBvaW50cy4KNC4gQmFsYW5jZSBwb3NpdGl2ZXMgYW5kIGltcHJvdmVtZW50czogSGlnaGxpZ2h0IHN0cmVuZ3RocyBhbmQgYXJlYXMgdG8gZ3Jvdy4KNS4gQmUgcmVzcGVjdGZ1bCBhbmQgY29uc3RydWN0aXZlOiBBc3N1bWUgcG9zaXRpdmUgaW50ZW50IGFuZCBvZmZlciBzb2x1dGlvbnMuCjYuIFVzZSBvYmplY3RpdmUgY3JpdGVyaWE6IFJlZmVyZW5jZSBnb2FscywgbWV0cmljcywgb3IgZXhwZWN0YXRpb25zIHdoZXJlIHBvc3NpYmxlLgo3LiBTdWdnZXN0IG5leHQgc3RlcHM6IFJlY29tbWVuZCBhY3Rpb25hYmxlIHdheXMgdG8gaW1wcm92ZS4KOC4gUHJvb2ZyZWFkOiBDaGVjayB0b25lLCBncmFtbWFyLCBhbmQgY2xhcml0eSBiZWZvcmUgc3VibWl0dGluZy4K", + "mimeType": "text/plain"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '38275' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"I see one main image file, which is + a line graph titled \\\"Revenue Over Time\\\". Additionally, I see four cropped + versions of this same image file, provided as hints. All of these are image + files.\"\n }\n ],\n \"role\": \"model\"\n },\n + \ \"finishReason\": \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": + {\n \"promptTokenCount\": 424,\n \"candidatesTokenCount\": 42,\n \"totalTokenCount\": + 619,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 166\n },\n {\n \"modality\": \"IMAGE\",\n + \ \"tokenCount\": 258\n }\n ],\n \"thoughtsTokenCount\": + 153\n },\n \"modelVersion\": \"gemini-2.5-flash\",\n \"responseId\": \"S0qOafPzOYi8_uMP25m7gAQ\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:51 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=1764 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What files do you see?\n\nProvide + your complete response:"}, {"inlineData": {"data": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy_xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABr0klEQVR4nO3dd3RU5fr-__ek90CAJJTQpXelKQoIBBBBFKUEFBDxiAl6QBDxKPWoKIpSYv0qqIcAUkVEMCpVAYEQuvQqJNQ0QpJJZv_-8Md8jISezGRmrtdaWYtd5tn3nckkF_uZvcdkGIaBiIiIiLgMN3sXICIiIiK2pQAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFRFzEgAEDqFy5sr3LEJFiQAFQxEnNmjULk8lk_fLw8KB8-fIMGDCAP__8097lFXvLli2jU6dOlCpVCh8fH2rUqMGIESM4f_68vUvL5-_P8fW-Vq9ebe9SRaQY8bB3ASJStCZMmECVKlXIyspi48aNzJo1i_Xr17Nr1y58fHzsXV6xNGLECN577z0aNmzIqFGjCAkJISEhgRkzZjB37lx-_vlnatasae8yAfj666_zLX_11VfEx8dftb527dp89tlnWCwWW5YnIsWUyTAMw95FiEjhmzVrFgMHDmTz5s3cc8891vWvvPIKb7_9NvPmzaNnz552rLB4mjNnDlFRUfTq1YvZs2fj7u5u3fb777_Ttm1bqlWrRkJCAh4etvs_9KVLl_D397_hfjExMcTGxqJf7SJyPZoCFnEx999_PwCHDh3Kt_6PP_7g8ccfJyQkBB8fH-655x6WLl1q3b5lyxZMJhNffvnlVWOuXLkSk8nEsmXLrOv-_PNPnn76acLCwvD29qZu3bp88cUX-R63evVqTCYT33zzDW-88QYVKlTAx8eHdu3acfDgwXz7Vq5cmQEDBlx17DZt2tCmTZt867Kzsxk7dizVq1fH29ubiIgIXn75ZbKzs2_4_Rk_fjwlS5bk008_zRf-AJo1a8aoUaPYuXMnCxYsAP4KXAEBAWRmZl41Vp8-fQgPDycvL8-67ocffuD---_H39-fwMBAunTpwu7du_M9bsCAAQQEBHDo0CEeeughAgMD6du37w1rv5F_vgfw6NGjmEwm3n33XWJjY6latSp-fn5ERkZy4sQJDMNg4sSJVKhQAV9fXx555BEuXLhw1bg305OIFC8KgCIu5ujRowCULFnSum737t20aNGCvXv38sorr_Dee-_h7-9P9-7dWbx4MQD33HMPVatW5ZtvvrlqzHnz5lGyZEk6duwIQHJyMi1atOCnn34iJiaGqVOnUr16dQYNGsQHH3xw1eMnTZrE4sWLGTFiBKNHj2bjxo23HXgsFgvdunXj3XffpWvXrkyfPp3u3bvz_vvv06tXr-s-9sCBA-zbt49HHnmEoKCgAvd56qmnAKxht1evXly6dInvv_8-336ZmZl89913PP7449Yg-fXXX9OlSxcCAgJ4--23ef3119mzZw-tWrWyPi9X5Obm0rFjR0JDQ3n33Xfp0aPH7Xw7bsrs2bP58MMPGTp0KC-99BJr1qyhZ8-evPbaa6xYsYJRo0bx7LPP8t133zFixIh8j72VnkSkGDFExCnNnDnTAIyffvrJOHv2rHHixAljwYIFRpkyZQxvb2_jxIkT1n3btWtn1K9f38jKyrKus1gsxr333mvcdddd1nWjR482PD09jQsXLljXZWdnGyVKlDCefvpp67pBgwYZZcuWNc6dO5evpt69exvBwcFGZmamYRiGsWrVKgMwateubWRnZ1v3mzp1qgEYO3futK6rVKmS0b9__6v6bN26tdG6dWvr8tdff224ubkZ69aty7ffxx9_bADGr7_-es3v2ZIlSwzAeP_996-5j2EYRlBQkNGkSRPDMP76PpUvX97o0aNHvn2--eYbAzDWrl1rGIZhpKenGyVKlDAGDx6cb7-kpCQjODg43_r-_fsbgPHKK69ct46CREdHG9f61d6_f3-jUqVK1uUjR44YgFGmTBkjJSXFun706NEGYDRs2NAwm83W9X369DG8vLysPye30pOIFC86Ayji5Nq3b0-ZMmWIiIjg8ccfx9_fn6VLl1KhQgUALly4wC-__ELPnj1JT0_n3LlznDt3jvPnz9OxY0cOHDhgvWq4V69emM1mFi1aZB3_xx9_JCUlxXp2zTAMFi5cSNeuXTEMwzreuXPn6NixI6mpqSQkJOSrceDAgXh5eVmXr0xTHz58-Jb7nT9_PrVr16ZWrVr5jv3ggw8CsGrVqms-Nj09HYDAwMDrHiMwMJC0tDTgr6twn3jiCZYvX05GRoZ1n3nz5lG-fHlatWoFQHx8PCkpKfTp0ydfXe7u7jRv3rzAuoYMGXJrzd-mJ554guDgYOty8-bNAejXr1--9zk2b96cnJwc68_D7fQkIsWDrgIWcXKxsbHUqFGD1NRUvvjiC9auXYu3t7d1-8GDBzEMg9dff53XX3-9wDHOnDlD-fLladiwIbVq1WLevHkMGjQI-CvolC5d2hqwzp49S0pKCp9--imffvrpNcf7u4oVK-ZbvjI9ffHixVvu98CBA-zdu5cyZcrc1LH_7krwuxIEryU9PZ3Q0FDrcq9evfjggw9YunQpUVFRZGRksHz5cv71r39hMpmsdQHW79M__XPK2cPDwxrSi9o_v_9XwmBERESB6688L7fak4gUHwqAIk6uWbNm1quAu3fvTqtWrYiKimLfvn0EBARYbwsyYsQI63v4_ql69erWf_fq1Ys33niDc-fOERgYyNKlS-nTp4_1TNGV8fr160f__v0LHK9Bgwb5lv95scUVxt-uZL0SpP4pLy8v3-MtFgv169dnypQpBe7_z1Dzd7Vr1wZgx44d19zn2LFjpKWlUadOHeu6Fi1aULlyZb755huioqL47rvvuHz5cr73HF75vnz99deEh4dfNe4_ryj29vbGzc02kzTX-v7f6Hm51Z5EpPjQq1PEhbi7u_PWW2_Rtm1bZsyYwSuvvELVqlUB8PT0pH379jcco1evXowfP56FCxcSFhZGWloavXv3tm4vU6YMgYGB5OXl3dR4N6tkyZKkpKRctf7YsWPWHgCqVavG9u3badeu3TVD47XUqFGDGjVqsGTJEqZOnVrgVPBXX30FwMMPP5xvfc-ePZk6dSppaWnMmzePypUr06JFi3x1AYSGhhbq98WenLEnEVeh9wCKuJg2bdrQrFkzPvjgA7KysggNDaVNmzZ88sknnD59-qr9z549m2-5du3a1K9fn3nz5jFv3jzKli3LAw88YN3u7u5Ojx49WLhwIbt27brheDerWrVqbNy4kZycHOu6ZcuWceLEiXz79ezZkz___JPPPvvsqjEuX77MpUuXrnucMWPGcPHiRZ577rl8t28B2Lp1K2-__Tb16tW76qrcXr16kZ2dzZdffsmKFSuuusdix44dCQoK4s0338RsNl913Nv9vtiTM_Yk4ip0BlDEBY0cOZInnniCWbNm8dxzzxEbG0urVq2oX78-gwcPpmrVqiQnJ7NhwwZOnjzJ9u3b8z2-V69ejBkzBh8fHwYNGnTVVOWkSZNYtWoVzZs3Z_DgwdSpU4cLFy6QkJDATz_9VOC95G7kmWeeYcGCBXTq1ImePXty6NAh_ve__1nPQl3x5JNP8s033_Dcc8-xatUq7rvvPvLy8vjjjz_45ptvWLlyZb4bY_9T37592bx5M1OnTmXPnj307duXkiVLkpCQwBdffEGpUqVYsGABnp6e-R7XpEkTqlevzn_-8x-ys7OvuuVMUFAQH330EU8--SRNmjShd-_elClThuPHj_P9999z3333MWPGjFv-vtiTM_Yk4jLseg2yiBSZK7eB2bx581Xb8vLyjGrVqhnVqlUzcnNzDcMwjEOHDhlPPfWUER4ebnh6ehrly5c3Hn74YWPBggVXPf7AgQMGYADG-vXrCzx-cnKyER0dbURERBienp5GeHi40a5dO-PTTz-17nPlNjDz58_P99grtyeZOXNmvvXvvfeeUb58ecPb29u47777jC1btlx1GxjDMIycnBzj7bffNurWrWt4e3sbJUuWNO6--25j_PjxRmpq6s18-4wlS5YYHTp0MEqWLGl4e3sb1atXN1566SXj7Nmz13zMf_7zHwMwqlevfs19Vq1aZXTs2NEIDg42fHx8jGrVqhkDBgwwtmzZYt2nf__-hr-__03V-U-3cxuYyZMnX1VjQc_LtX6mbqYnESle9FFwIiIiIi5G7wEUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARURERFyMPgnkDlgsFk6dOkVgYOAtf-aoiIiI2IdhGKSnp1OuXLmrPsnIVSgA3oFTp04RERFh7zJERETkNpw4cYIKFSrYuwy7UAC8A4GBgcBfP0BBQUGFOrbZbObHH38kMjLyqs8cdQbqz_E5e4_qz_E5e4_q7_alpaURERFh_TvuihQA78CVad-goKAiCYB-fn4EBQU57Qtb_Tk2Z-9R_Tk-Z-9R_d05V377lmtOfIuIiIi4MAVAERERERejACgiIiLiYhQARURERFyMAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBiHDIAfffQRDRo0sH4CR8uWLfnhhx-s27OysoiOjqZUqVIEBATQo0cPkpOT841x_PhxunTpgp-fH6GhoYwcOZLc3FxbtyIiIiJicw4ZACtUqMCkSZPYunUrW7Zs4cEHH-SRRx5h9-7dAAwbNozvvvuO-fPns2bNGk6dOsVjjz1mfXxeXh5dunQhJyeH3377jS-__JJZs2YxZswYe7UkIiIiYjMO-VnAXbt2zbf8xhtv8NFHH7Fx40YqVKjA559_TlxcHA8--CAAM2fOpHbt2mzcuJEWLVrw448_smfPHn766SfCwsJo1KgREydOZNSoUYwbNw4vLy97tCUiIiJ_Yxj2rsB5OWQA_Lu8vDzmz5_PpUuXaNmyJVu3bsVsNtO-fXvrPrVq1aJixYps2LCBFi1asGHDBurXr09YWJh1n44dOzJkyBB2795N48aNCzxWdnY22dnZ1uW0tDTgrw-sNpvNhdrXlfEKe9ziQv05PmfvUf05Pmfv0dn723LkHG_vcKfmPalUDwsu1LGd9Xt2Kxw2AO7cuZOWLVuSlZVFQEAAixcvpk6dOiQmJuLl5UWJEiXy7R8WFkZSUhIASUlJ-cLfle1Xtl3LW2-9xfjx469a_-OPP-Ln53eHHRUsPj6-SMYtLtSf43P2HtWf43P2Hp2tP8OAVadNfHfcDYthYlTcBgbVtBTqMTIzMwt1PEfksAGwZs2aJCYmkpqayoIFC-jfvz9r1qwp0mOOHj2a4cOHW5fT0tKIiIggMjKSoKCgQj2W2WwmPj6eDh064OnpWahjFwfqz_E5e4_qz_E5e4_O2N_FzBxGLdrFqmPnAGgUYuGTZ1oTEuhbqMe5MoPnyhw2AHp5eVG9enUA7r77bjZv3szUqVPp1asXOTk5pKSk5DsLmJycTHh4OADh4eH8_vvv-ca7cpXwlX0K4u3tjbe391XrPT09i-zFV5RjFwfqz_E5e4_qz_E5e4_O0t-Woxd4Yc42TqVm4eXhxquda1Li7E5CAn0LvT9n-H7dKYe8CrggFouF7Oxs7r77bjw9Pfn555-t2_bt28fx48dp2bIlAC1btmTnzp2cOXPGuk98fDxBQUHUqVPH5rWLiIi4KovF4MPVB-n16UZOpWZRpbQ_i5-_l77NIjCZ7F2d83LIM4CjR4-mc-fOVKxYkfT0dOLi4li9ejUrV64kODiYQYMGMXz4cEJCQggKCmLo0KG0bNmSFi1aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wDN8IiIiUvjOZ2Qz_JvtrNl_FoBHGpXjjUfrE-DtoQs1iphDBsAzZ87w1FNPcfr0aYKDg2nQoAErV66kQ4cOALz__vu4ubnRo0cPsrOz6dixIx9--KH18e7u7ixbtowhQ4bQsmVL_P396d-_PxMmTLBXSyIiIi5l0-HzvDB3G8lp2Xh7uDG-W116NY3ApNN-NuGQAfDzzz-_7nYfHx9iY2OJjY295j6VKlVi-fLlhV2aiIiIXEeexeDDVQd5_6f9WAyoVsaf2L5NqBVeuBdTyvU5ZAAUERERx3M2PZt_z9vGrwfPA9CjSQUmdq-Ln5fiiK3pOy4iIiJF7teD53hxbiLnMrLx9XRnYvd6PH53BXuX5bIUAEVERKTI5FkMpv58gOm_HMAwoEZYALFRTbgrLNDepbk0BUAREREpEslpWbwwZxubjlwAoHfTCMZ2rYuvl7udKxMFQBERESl0a_afZfi8RM5fysHfy503H6vPI43K27ss-f8pAIqIiEihyc2z8F78fj5afQiA2mWDiI1qTNUyAXauTP5OAVBEREQKxamUy7wwZxtbjl0EoF-LirzWpQ4-npryLW4UAEVEROSO_fJHMsO_2U5KppkAbw8m9ajPww3K2bssuQYFQBEREblt5jwLk1fu49O1hwGoXz6YGVGNqVTK386VyfUoAIqIiMhtOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOVb3CkAioiIyC1buTuJkfO3k5aVS5CPB-883pBO9cLtXZbcJAVAERERuWk5uRbe-mEvM389CkDDiBLM6NOYiBA_-xYmt0QBUERERG7K8fOZxMxJYMfJVAAG31-FkR1r4eXhZufK5FYpAIqIiMgNLd95mlELdpCenUsJP0_efbwh7euE2bssuU0KgCIiInJNWeY83vh-L19vPAbA3ZVKMq1PY8qX8LVzZXInFABFRESkQEfOXSJ6dgJ7TqcBMKRNNYZ3qIGnu6Z8HZ0CoIiIiFzl28Q_eXXRTi7l5BHi78WUng1pUzPU3mVJIVEAFBEREasscx7jv9vNnN9PANCsSgjTejcmPNjHzpVJYVIAFBEREQAOnskgenYC-5LTMZkgpm11Xmx3Fx6a8nU6CoAiIiLCwq0neW3JLi6b8ygd4M0HvRrR6q7S9i5LiogCoIiIiAvLzMllzLe7WbD1JAD3VivFB70bERqoKV9npgAoIiLiovYnpxM9O4EDZzJwM8GL7WoQ82B13N1M9i5NipgCoIiIiIsxDINvtpxg7NLdZJkthAZ6M7V3Y1pWK2Xv0sRGFABFRERcSEZ2Lq8t3smSxFMA3H9Xad7v1YjSAd52rkxsSQFQRETERew5lUZMXAKHz13C3c3ES5E1eO6BarhpytflKACKiIg4OcMwiPv9OOO_20NOroWywT5M69OYppVD7F2a2IkCoIiIiBNLzzLzyqKdfL_jNAAP1grl3ScaEuLvZefKxJ4UAEVERJzUrj9TiY5L4Nj5TDzcTLzcqSbPtKqqKV9RABQREXE2hmHw5W9HeXP5H-TkWShfwpfpUY1pUrGkvUuTYkIBUERExImkXjYzasEOVuxOAqBDnTDefbwhwX6edq5MihMFQBERESeReCKFmLgETl68jKe7idGdazPwvsqYTJrylfwc8tOd33rrLZo2bUpgYCChoaF0796dffv2WbcfPXoUk8lU4Nf8-fOt-xW0fe7cufZoSURE5LYZhsH_W3eYxz_6jZMXLxMR4suC5-7l6VZVFP6kQA55BnDNmjVER0fTtGlTcnNzefXVV4mMjGTPnj34-_sTERHB6dOn8z3m008_ZfLkyXTu3Dnf-pkzZ9KpUyfrcokSJWzRgoiISKFIyTQzekkiP-09A8BD9cOZ1KMBQT6a8pVrc8gAuGLFinzLs2bNIjQ0lK1bt_LAAw_g7u5OeHh4vn0WL15Mz549CQgIyLe-RIkSV-0rIiLiCI6kw6QPN3A6NQsvDzdef7gO_ZpX1Fk_uSGHDID_lJqaCkBISME3tNy6dSuJiYnExsZetS06OppnnnmGqlWr8txzzzFw4MBrvnCys7PJzs62LqelpQFgNpsxm8132kY-V8Yr7HGLC_Xn-Jy9R_Xn-Jy5R4vF4NO1h5i2yx0LWVQu5cfUXg2oUzaI3Nxce5dXKIry-XPGn4lbZTIMw7B3EXfCYrHQrVs3UlJSWL9-fYH7PP_886xevZo9e_bkWz9x4kQefPBB_Pz8-PHHHxk7dizvvPMOL7zwQoHjjBs3jvHjx1-1Pi4uDj8_vztvRkRE5AYyzPC_g27sTfnrbfxNSlnoVc2Cj7udC3MgmZmZREVFkZqaSlBQkL3LsQuHD4BDhgzhhx9-YP369VSoUOGq7ZcvX6Zs2bK8_vrrvPTSS9cda8yYMcycOZMTJ04UuL2gM4ARERGcO3eu0H-AzGYz8fHxdOjQAU9P53sfh_pzfM7eo_pzfM7Y4-9HLzD8m50kp2fj7eFG94pmxvRth5eX832qR1E-f2lpaZQuXdqlA6BDTwHHxMSwbNky1q5dW2D4A1iwYAGZmZk89dRTNxyvefPmTJw4kezsbLy9va_a7u3tXeB6T0_PIvvlUpRjFwfqz_E5e4_qz_E5Q48Wi8GHqw8yJX4_FgOqlfFnas8GHEpYh5eXl8P3dz1F8fw58_frZjlkADQMg6FDh7J48WJWr15NlSpVrrnv559_Trdu3ShTpswNx01MTKRkyZIFhjwRERF7OJuezfBvEll34BwAjzUpz8RH6uHlZnDIzrWJ43LIABgdHU1cXBzffvstgYGBJCX9dbfz4OBgfH19rfsdPHiQtWvXsnz58qvG-O6770hOTqZFixb4-PgQHx_Pm2--yYgRI2zWh4iIyPX8dvAcL85L5Gx6Nr6e7kx4pC5P3BMB6EIGuTMOGQA_-ugjANq0aZNv_cyZMxkwYIB1-YsvvqBChQpERkZeNYanpyexsbEMGzYMwzCoXr06U6ZMYfDgwUVZuoiIyA3lWQym_nyA6b8cwDCgRlgAsVFNuCss0N6liZNwyAB4s9etvPnmm7z55psFbuvUqVO-G0CLiIgUB8lpWbw4dxsbD18AoNc9EYzrVhdfL13mK4XHIQOgiIiIM1q7_yzD5iVy_lIOfl7uvPlofbo3Lm_vssQJKQCKiIjYWW6ehfd_2s-Hqw9hGFC7bBCxUY2pWibgxg8WuQ0KgCIiInZ0OvUyL8zZxuajFwHo27wirz9cBx9PTflK0VEAFBERsZNVf5xh-DeJXMw0E-DtwaQe9Xm4QTl7lyUuQAFQRETExsx5Ft5duY9P1h4GoF75IGb0aULl0v52rkxchQKgiIiIDZ28mMnQOdvYdjwFgAH3Vmb0Q7Xw9tCUr9iOAqCIiIiN_Lg7iZELdpB62UygjweTH29Ap3pl7V2WuCAFQBERkSKWk2th0g9_8MWvRwBoWCGYGVFNiAjxs3Nl4qoUAEVERIrQiQuZxMQlsP1kKgDPtKrCy51q4eXhZufKxJUpAIqIiBSRH3ae5uWFO0jPyiXY15P3nmhI-zph9i5LRAFQRESksGWZ83hz-V6-2nAMgLsrlWRan8aUL-Fr58pE_qIAKCIiUoiOnLtETFwCu0-lAfBc62q8FFkDT3dN-UrxoQAoIiJSSJZuP8Wri3aSkZ1LiL8X7_VsSNuaofYuS-QqCoAiIiJ3KMucx_jv9jDn9-MANKscwrQ-jQkP9rFzZSIFUwAUERG5AwfPZBATl8AfSemYTBDTtjovtrsLD035SjGmACgiInKbFiWc5LUlu8jMyaN0gBfv92rE_XeVsXdZIjekACgiInKLMnNyGfvtbuZvPQlAy6qlmNq7EaFBmvIVx6AAKCIicgv2J6cTPTuBA2cycDPBi-1qEPNgddzdTPYuTeSmKQCKiIjcBMMwmL_1JGO-3UWW2UJooDdTezemZbVS9i5N5JYpAIqIiNzApexcXluyi8Xb_gTg_rtK836vRpQO8LZzZSK3RwFQRETkOvaeTiM6LoHDZy_h7mZieIcaDGldDTdN-YoDUwAUEREpgGEYzPn9BOO-201OroXwIB-mRzWmaeUQe5cmcscUAEVERP4hPcvMq4t38d32UwC0rVmG93o2IsTfy86ViRQOBUAREZG_2fVnKjFxCRw9n4mHm4mXO9XkmVZVNeUrTkUBUEREhL-mfL_acIw3vt9LTp6F8iV8mdanMXdXKmnv0kQKnQKgiIi4vNTLZl5ZuIMfdiUB0L52GO8-0YASfpryFeekACgiIi5t-4kUYuYkcOLCZTzdTYzuXJuB91XGZNKUrzgvBUAREXFJhmHwxa9HmfTDXsx5BhEhvszo04SGESXsXZpIkVMAFBERl5OSmcOI-Tv4aW8yAJ3rhTOpRwOCfT3tXJmIbSgAioiIS9l67CIvzNnGnymX8XJ34_WHa9OvRSVN-YpLUQAUERGXYLEYfLbuMJNX7iPXYlC5lB8zoppQr3ywvUsTsTk3exdwO9566y2aNm1KYGAgoaGhdO_enX379uXbp02bNphMpnxfzz33XL59jh8_TpcuXfDz8yM0NJSRI0eSm5try1ZERMQGLlzKYdCXm3nrhz_ItRh0bViO74a2UvgTl-WQZwDXrFlDdHQ0TZs2JTc3l1dffZXIyEj27NmDv7-_db_BgwczYcIE67Kfn5_133l5eXTp0oXw8HB---03Tp8-zVNPPYWnpydvvvmmTfsREZGis_noRYbP30lSWhbeHm6M61aX3k0jNOUrLs0hA-CKFSvyLc-aNYvQ0FC2bt3KAw88YF3v5-dHeHh4gWP8-OOP7Nmzh59--omwsDAaNWrExIkTGTVqFOPGjcPLS_d-EhFxZBaLwY8nTazYtIU8i0HVMv7ERjWhdtkge5cmYncOGQD_KTU1FYCQkPwf0D179mz-97__ER4eTteuXXn99detZwE3bNhA_fr1CQsLs-7fsWNHhgwZwu7du2ncuPFVx8nOziY7O9u6nJaWBoDZbMZsNhdqT1fGK-xxiwv15_icvUf159jOZ2Tz0vwd_HrCHTDo3rAs47rWxt_bw2l6dvbnsCj7c9bv2a0wGYZh2LuIO2GxWOjWrRspKSmsX7_euv7TTz-lUqVKlCtXjh07djBq1CiaNWvGokWLAHj22Wc5duwYK1eutD4mMzMTf39_li9fTufOna861rhx4xg_fvxV6-Pi4vJNL4uIiP0cSDXx1QE30swmPN0MHq9ioXkZA834yhWZmZlERUWRmppKUJBrnhF2-DOA0dHR7Nq1K1_4g78C3hX169enbNmytGvXjkOHDlGtWrXbOtbo0aMZPny4dTktLY2IiAgiIyML_QfIbDYTHx9Phw4d8PR0vvtSqT_H5-w9qj_Hk2cx-HD1YT7ceAiLAdXL-PN4uVSeesR5evw7Z3wO_64o-7syg-fKHDoAxsTEsGzZMtauXUuFChWuu2_z5s0BOHjwINWqVSM8PJzff_893z7JyX_dEPRa7xv09vbG29v7qvWenp5F9uIryrGLA_Xn-Jy9R_XnGM6kZfHi3EQ2HD4PQM97KvBa55qs-mml0_R4Lerv9sZ0dQ55GxjDMIiJiWHx4sX88ssvVKlS5YaPSUxMBKBs2bIAtGzZkp07d3LmzBnrPvHx8QQFBVGnTp0iqVtERArfugNneWjaOjYcPo-flzvv92rIO483xNfL3d6liRRbDnkGMDo6mri4OL799lsCAwNJSkoCIDg4GF9fXw4dOkRcXBwPPfQQpUqVYseOHQwbNowHHniABg0aABAZGUmdOnV48skneeedd0hKSuK1114jOjq6wLN8IiJSvOTmWfjgpwPErj6IYUCt8EBi-zahWpkAe5cmUuw5ZAD86KOPgL9u9vx3M2fOZMCAAXh5efHTTz_xwQcfcOnSJSIiIujRowevvfaadV93d3eWLVvGkCFDaNmyJf7-_vTv3z_ffQNFRKR4Op16mRfnJPL70QsARDWvyJiH6-DjqbN-IjfDIQPgjS5cjoiIYM2aNTccp1KlSixfvrywyhIRERtYte8Mw-clcjHTTIC3B289Vp-uDcvZuywRh-KQAVBERFyPOc_Cuz_u45M1hwGoVz6IGX2aULm0_w0eKSL_pAAoIiLF3p8plxkal0DC8RQA-resxKtdauPtoSlfkduhACgiIsVa_J5kRszfTuplM4E-HrzTowGd65e1d1kiDk0BUEREiqWcXAtvr_iDz9cfAaBhhWBmRDUhIkSfvCRypxQARUSk2DlxIZOYOdvYfiIFgEGtqjCqUy28PBzy9rUixY4CoIiIFCsrdp1m5IIdpGflEuzrybtPNKRDnTB7lyXiVBQARUSkWMjOzePN7_fy5YZjADSpWILpUU0oX8LXzpWJOB8FQBERsbuj5y4RMyeBXX-mAfCv1lUZEVkTT3dN-YoUBQVAERGxq--2n2L0op1kZOdS0s-TKT0b0bZWqL3LEnFqCoAiImIXWeY8JizbQ9ym4wA0qxzC1D6NKBusKV-RoqYAKCIiNnfobAbRsxP4Iykdkwmi21Tn3-3vwkNTviI2oQAoIiI2tXjbSf6zeBeZOXmUDvDi_V6NuP-uMvYuS8SlKACKiIhNXM7JY-zSXXyz5SQALauWYmrvRoQG-di5MhHXowAoIiJF7kByOtFxCexPzsBkghfb3cXQB-_C3c1k79JEXJICoIiIFBnDMJi_9SRjvt1FltlCmUBvpvZuxL3VStu7NBGXpgAoIiJF4lJ2Lq8v2cWibX8CcP9dpXm_VyNKB3jbuTIRUQAUEZFCt_d0GjFxCRw6ewk3E7wUWZMhravhpilfkWJBAVBERAqNYRjM-f0E47_bTXauhfAgH6b1aUyzKiH2Lk1E_kYBUERECkV6lplXF-_iu-2nAGhTswxTejYixN_LzpWJyD8pAIqIyB3b9WcqMXEJHD2fiYebiZEdazL4_qqa8hUpphQARUTkthmGwf82HmPisr3k5FkoX8KXaX0ac3elkvYuTUSuQwFQRERuS1qWmVcW7mD5ziQA2tcO490nGlDCT1O-IsWdAqCIiNyy7SdSiJmTwIkLl_F0N_FK59o8fV9lTCZN-Yo4AgVAERG5aYZhMPPXo7z1w17MeQYRIb7M6NOEhhEl7F2aiNwCBUAREbkpKZk5jFywg_g9yQB0rhfOpB4NCPb1tHNlInKrFABFROSGEo5fZGjcNv5MuYyXuxuvPVybJ1tU0pSviINSABQRkWuyWAw-W3eYySv3kWsxqFTKj9ioJtQrH2zv0kTkDigAiohIgS5cymHE_O388scZAB5uUJa3HqtPoI-mfEUcnQKgiIhcZfPRCwyN20ZSWhbeHm6M7VqXPs0iNOUr4iQUAEVExMpiMfhozSGmxO8nz2JQtYw_sVFNqF02yN6liUghUgAUEREAzmVkM2xeIusOnAPgscblmdi9Hv7e-lMh4mzcbHkws9nMiRMn2LdvHxcuXLjtcd566y2aNm1KYGAgoaGhdO_enX379lm3X7hwgaFDh1KzZk18fX2pWLEiL7zwAqmpqfnGMZlMV33NnTv3tusSEXFUGw6d56Gp61h34Bw-nm6883gD3uvZUOFPxEkV-Ss7PT2d__3vf8ydO5fff_-dnJwcDMPAZDJRoUIFIiMjefbZZ2natOlNj7lmzRqio6Np2rQpubm5vPrqq0RGRrJnzx78_f05deoUp06d4t1336VOnTocO3aM5557jlOnTrFgwYJ8Y82cOZNOnTpZl0uUKFFYrYuIFHt5FoMPfzrA1J_3YzHgrtAAYvs2oUZYoL1LE5EiVKQBcMqUKbzxxhtUq1aNrl278uqrr1KuXDl8fX25cOECu3btYt26dURGRtK8eXOmT5_OXXfddcNxV6xYkW951qxZhIaGsnXrVh544AHq1avHwoULrdurVavGG2-8Qb9-_cjNzcXD4__aLlGiBOHh4YXXtIiIg0jLgYFfbmXD4b9mZHreU4Hx3erh6-Vu58pEpKgVaQDcvHkza9eupW7dugVub9asGU8__TQff_wxM2fOZN26dTcVAP_pytRuSEjIdfcJCgrKF_4AoqOjeeaZZ6hatSrPPfccAwcOvOZVbtnZ2WRnZ1uX09LSgL-mts1m8y3XfT1XxivscYsL9ef4nL1HZ-9vzb5k3t7hTob5An5e7ozvWpvujcoBFsxmi73LKxTO_hyqvzsf25WZDMMw7F3EnbBYLHTr1o2UlBTWr19f4D7nzp3j7rvvpl-_frzxxhvW9RMnTuTBBx_Ez8-PH3_8kbFjx_LOO-_wwgsvFDjOuHHjGD9-_FXr4-Li8PPzK5yGRESKUJ4BK064Ef-nCQMTZf0MBtbII8zX3pWJ2E5mZiZRUVHWk0OuyOED4JAhQ_jhhx9Yv349FSpUuGp7WloaHTp0ICQkhKVLl-Lpee0bmI4ZM4aZM2dy4sSJArcXdAYwIiKCc-fOFfoPkNlsJj4-ng4dOly3Zkel_hyfs_fojP0lpWUxfP5ONh-9CMC9YRZmPN2GQD8fO1dWNJzxOfw79Xf70tLSKF26tEsHwCK_COTpp5--qf2--OKLWx47JiaGZcuWsXbt2gLDX3p6Op06dSIwMJDFixff8AeoefPmTJw4kezsbLy9va_a7u3tXeB6T0_PInvxFeXYxYH6c3zO3qOz9Ld63xmGf7OdC5dyCPD2YGK32rid3Eagn49T9Hc9zvIcXov6u70xXV2RB8BZs2ZRqVIlGjduTGGdbDQMg6FDh7J48WJWr15NlSpVrtonLS2Njh074u3tzdKlS_HxufH_cBMTEylZsmSBIU9ExBGZ8yy89-N-Pl5zCIC65YKIjWpC-WAvlp_cZufqRMReijwADhkyhDlz5nDkyBEGDhxIv379rnuxxs2Ijo4mLi6Ob7_9lsDAQJKSkgAIDg7G19eXtLQ0IiMjyczM5H__-x9paWnWCzbKlCmDu7s73333HcnJybRo0QIfHx_i4-N58803GTFixB33LCJSHPyZcpkX5mxj67G_pnz7t6zE6Idq4-PprjfBi7i4Ir8RdGxsLKdPn-bll1_mu---IyIigp49e7Jy5crbPiP40UcfkZqaSps2bShbtqz1a968eQAkJCSwadMmdu7cSfXq1fPtc-X9fZ6ensTGxtKyZUsaNWrEJ598wpQpUxg7dmyh9S4iYi8_7Ummy7R1bD12kUAfDz7q24Txj9TDx1O3eBERG30UnLe3N3369KFPnz4cO3aMWbNm8fzzz5Obm8vu3bsJCAi4pfFuFBzbtGlzw306deqU7wbQIiLOICfXwjsr_uD_rT8CQMMKwUzv04SKpXSnAhH5Pzb_jB83NzdMJhOGYZCXl2frw4uIOK0TFzKJmbON7SdSAHj6viq80rkWXh42_dRPEXEANvmtkJ2dzZw5c-jQoQM1atRg586dzJgxg-PHj9_y2T8REbnail1JPDRtHdtPpBDs68lnT93DmK51FP5EpEBFfgbw-eefZ-7cuURERPD0008zZ84cSpcuXdSHFRFxCdm5eby1_A9m_XYUgCYVSzCtT2MqlNSUr4hcW5EHwI8__piKFStStWpV1qxZw5o1awrcb9GiRUVdioiIUzl2_hIxcdvY-edfH4f5r9ZVGRFZE093nfUTkesr8gD41FNPXfOzdUVE5PYs23GKVxbuJCM7l5J-nkzp2Yi2tULtXZaIOAib3AhaREQKR5Y5j4nL9jB703EAmlYuybQ-jSkbrA_zFZGbZ_OrgEVE5PYcOptB9OwE_khKx2SC6DbV-Xf7u_DQlK-I3CKb_NY4c-YMJ0-etC7n5uby2muv0bp1a1566SUyMzNtUYaIiMNasu1Puk5fzx9J6ZTy9-Krp5sxomNNhT8RuS02-c0xePBgvvzyS-vy5MmT-eyzz2jatClLly5l2LBhtihDRMThXM7JY9SCHfx7XiKZOXm0rFqKH168n_vvKmPv0kTEgdkkAO7YsYO2bdtal7_--mumTZvGu---y9y5c_nuu-9sUYaIiEM5kJzOI7HrmbflBCYTvNjuLv73THNCg3zsXZqIOLgifQ_gwIEDATh16hRTpkzhs88-Iycnh3379rF48WJWrlyJxWLhzJkzPP300wB88cUXRVmSiIhDmL_lBGO-3c1lcx5lAr2Z2qsR91bXPVRFpHAUaQCcOXMmAGvXrmXQoEF07tyZefPmsXPnTubOnQvA-fPnWbp0qYKfiAhwKTuX17_dxaKEPwG4_67STOnZiDKB3nauTESciU2uAu7SpQtPP_003bp1Y8mSJbz88svWbb___jt16tSxRRkiIsXaH0lpRM9O4NDZS7iZ4KXImgxpXQ03N91LVUQKl00C4DvvvENwcDCJiYkMGzYs30UfmzZt4rnnnrNFGSIixZJhGMzbfIKxS3eTnWshPMiHaX0a06xKiL1LExEnZZMA6OPjw8SJEwvcNm7cOFuUICJSLGVk5_Lqop0s3X4KgDY1yzClZyNC_L3sXJmIODPdCFpExE52_ZlKTFwCR89n4u5m4uWONRl8f1VN-YpIkSvS28B06tSJjRs33nC_9PR03n77bWJjY4uyHBGRYsEwDL7ecJTHPvqNo-czKRfswzf_asm_9H4_EbGRIj0D-MQTT9CjRw-Cg4Pp2rUr99xzD-XKlcPHx4eLFy-yZ88e1q9fz_Lly-nSpQuTJ08uynJEROwuLcvMKwt3sHxnEgDta4fx7hMNKOGnKV8RsZ0iDYCDBg2iX79-zJ8_n3nz5vHpp5-SmpoKgMlkok6dOnTs2JHNmzdTu3btoixFRMTudpxMISZuG8cvZOLpbmJUp1oMalUFk0ln_UTEtor8PYDe3t7069ePfv36AZCamsrly5cpVaoUnp6eRX14ERG7MwyDmb8e5a0f9mLOM6hQ0pcZUU1oFFHC3qWJiIuy-UUgwcHBBAcH2_qwIiJ2kZppZuSC7fy4JxmATnXDefvxBgT76j_AImI_ugpYRKSIbDt-kZi4bfyZchkvdzdee7g2T7aopClfEbE7BUARkUJmsRh8vv4Ib6_4g1yLQaVSfsRGNaFeec1-iEjxoAAoIlKILl7K4aX52_nljzMAPNygLG89Vp9AH035ikjxoQAoIlJIthy9wNA52zidmoWXhxvjutalT7MITfmKSLFj0wCYkpLCggULOHToECNHjiQkJISEhATCwsIoX768LUsRESk0FovBR2sOMSV-P3kWg6ql_Ynt24TaZYPsXZqISIFsFgB37NhB-_btCQ4O5ujRowwePJiQkBAWLVrE8ePH-eqrr2xViohIoTmXkc3wb7azdv9ZAB5tXJ7_dq-Hv7cmWESk-CrSj4L7u-HDhzNgwAAOHDiAj4-Pdf1DDz3E2rVrbVWGiEih2Xj4PA9NXcfa_Wfx8XTjnccbMKVnQ4U_ESn2bPZbavPmzXzyySdXrS9fvjxJSUm2KkNE5I7lWQxm_HKQqT_vx2LAXaEBxPZtQo2wQHuXJiJyU2wWAL29vUlLS7tq_f79-ylTpoytyhARuSNn0rMYNi-RXw-eB-CJuysw_pG6-HnprJ-IOA6bTQF369aNCRMmYDabgb8-C_j48eOMGjWKHj162KoMEZHb9uvBczw0dT2_HjyPn5c7U3o2ZPITDRX-RMTh2CwAvvfee2RkZBAaGsrly5dp3bo11atXJzAwkDfeeOOWxnrrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5OTkfPscP36cLl264OfnR2hoKCNHjiQ3N_eOexUR55KbZ2HKj_vo9_kmzmVkUys8kKUxrXisSQV7lyYiclts9t_W4OBg4uPjWb9-PTt27CAjI4MmTZrQvn37Wx5rzZo1REdH07RpU3Jzc3n11VeJjIxkz549-Pv7AzBs2DC-__575s-fT3BwMDExMTz22GP8-uuvAOTl5dGlSxfCw8P57bffOH36NE899RSenp68-eabhdq7iDiu5LQshi_Yxe9HLgDQp1lFxnatg4-nu50rExG5fTaft2jVqhWtWrW6ozFWrFiRb3nWrFmEhoaydetWHnjgAVJTU_n888-Ji4vjwQcfBGDmzJnUrl2bjRs30qJFC3788Uf27NnDTz_9RFhYGI0aNWLixImMGjWKcePG4eXldUc1iojj23vRxLjYDVzMNOPv5c5bPRrQrWE5e5clInLHbBYAJ0yYcN3tY8aMue2xU1NTAQgJCQFg69atmM3mfGcXa9WqRcWKFdmwYQMtWrRgw4YN1K9fn7CwMOs-HTt2ZMiQIezevZvGjRtfdZzs7Gyys7Oty1cuajGbzdb3NhaWK-MV9rjFhfpzfM7cY26ehffi9_P__nAHzNQpG8jUXg2oXMrfafp15ufvCmfvUf3d-diuzGQYhmGLA_0zUJnNZo4cOYKHhwfVqlUjISHhtsa1WCx069aNlJQU1q9fD0BcXBwDBw7MF9YAmjVrRtu2bXn77bd59tlnOXbsGCtXrrRuz8zMxN_fn-XLl9O5c-erjjVu3DjGjx9_1fq4uDj8_Pxuq34RKV4uZsOXB9w5kv7Xx7fdH2bhkcoWPG32jmkRKWqZmZlERUWRmppKUJBrfmKPzc4Abtu27ap1aWlpDBgwgEcfffS2x42OjmbXrl3W8FeURo8ezfDhw63LaWlpREREEBkZWeg_QGazmfj4eDp06ICnp_N9iLz6c3zO2OMv-87ywcJdpFw2E-DtzhOVchjZu73T9Pd3zvj8_ZOz96j-bl9Bt6VzNXa9d0FQUBDjx4-na9euPPnkk7f8-JiYGJYtW8batWupUOH_rsYLDw8nJyeHlJQUSpQoYV2fnJxMeHi4dZ_ff_8933hXrhK-ss8_eXt74-3tfdV6T0_PInvxFeXYxYH6c3zO0GNOroV3VvzB_1t_BICGFYKZ8kR9dm1c7RT9XY-z9wfO36P6u70xXZ3dJzVSU1Ot7-G7WYZhEBMTw-LFi_nll1-oUqVKvu133303np6e_Pzzz9Z1-_bt4_jx47Rs2RKAli1bsnPnTs6cOWPdJz4-nqCgIOrUqXMHHYmIIzlxIZOen2ywhr-n76vC_OfupWKI3tYhIs7LZmcAp02blm_ZMAxOnz7N119_XeD77a4nOjqauLg4vv32WwIDA60fJRccHIyvry_BwcEMGjSI4cOHExISQlBQEEOHDqVly5a0aNECgMjISOrUqcOTTz7JO--8Q1JSEq-99hrR0dEFnuUTEeezcncSI-dvJy0rlyAfD959oiGRdf-aATCb8-xcnYhI0bFZAHz__ffzLbu5uVGmTBn69-_P6NGjb2msjz76CIA2bdrkWz9z5kwGDBhgPZ6bmxs9evQgOzubjh078uGHH1r3dXd3Z9myZQwZMoSWLVvi7-9P__79b3i1sog4vuzcPN5a_gezfjsKQOOKJZjepzEVSuqsn4i4BpsFwCNHjhTaWDdz4bKPjw-xsbHExsZec59KlSqxfPnyQqtLRIq_Y-cvERO3jZ1__vXWk389UJURHWvi6W73d8SIiNiMPsBSRFzG9ztO88rCHaRn51LSz5P3ejbkwVphN36giIiTsVkAvHTpEpMmTeLnn3_mzJkzWCyWfNsPHz5sq1JExMVkmfP47_d7-N_G4wA0rVySaX0aUzbY186ViYjYh80C4DPPPMOaNWt48sknKVu2LCaTyVaHFhEXdvhsBtFx29h7Og2TCZ5vU41h7WvgoSlfEXFhNguAP_zwA99__z333XefrQ4pIi7u28Q_eXXRTi7l5FHK34v3ezXigRpl7F2WiIjd2SwAlixZ0vpZvSIiRelyTh7jv9vN3M0nAGhRNYSpvRsTFuRj58pERIoHm82BTJw4kTFjxpCZmWmrQ4qICzp4Jp3usb8yd_MJTCZ4sd1dzH6mhcKfiMjf2OwM4HvvvcehQ4cICwujcuXKV30MS0JCgq1KEREntWDrSV5fsovL5jzKBHoztVcj7q1e2t5liYgUOzYLgN27d7fVoUTExWTm5PL6kt0sTDgJQKvqpXm_VyPKBOpTfURECmKzADh27FhbHUpEXMi-pHSen72VQ2cv4WaC4R1q8Hyb6ri56U4DIiLXYtMbQaekpLBgwQIOHTrEyJEjCQkJISEhgbCwMMqXL2_LUkTEwRmGwbzNJxi7dDfZuRbCgryZ1rsxzauWsndpIiLFns0C4I4dO2jfvj3BwcEcPXqUwYMHExISwqJFizh-_DhfffWVrUoREQeXkZ3Lfxbv5NvEUwC0rlGGKT0bUipAU74iIjfDZlcBDx8-nAEDBnDgwAF8fP7varyHHnqItWvX2qoMEXFwu0-l0nX6er5NPIW7m4lXOtdi5oCmCn8iIrfAZmcAN2_ezCeffHLV-vLly5OUlGSrMkTEQRmGwf82HWfisj3k5FooF-zD9KjG3F1J9xcVEblVNguA3t7epKWlXbV-__79lCmjO_OLyLWlZZkZvXAn3-88DUD72qFMfrwhJf297FyZiIhjstkUcLdu3ZgwYQJmsxkAk8nE8ePHGTVqFD169LBVGSLiYHacTOHhaev5fudpPNxMvNalNp89dY_Cn4jIHbBZAHzvvffIyMggNDSUy5cv07p1a6pXr05gYCBvvPGGrcoQEQdhGAYzfz1Cj49-4_iFTCqU9GXBkHt55v6qmEy6xYuIyJ2w2RRwcHAw8fHxrF-_nh07dpCRkUGTJk1o3769rUoQEQeRmmnm5YXbWbk7GYBOdcN5-_EGBPt63uCRIiJyM2wWAE-cOEFERAStWrWiVatWtjqsiDiYbccvEhO3jT9TLuPl7sZ_utTmqZaVdNZPRKQQ2WwKuHLlyrRu3ZrPPvuMixcv2uqwIuIgDMPgs7WHeeLjDfyZcplKpfxYOORe-t9bWeFPRKSQ2SwAbtmyhWbNmjFhwgTKli1L9-7dWbBgAdnZ2bYqQUSKqYuXcnjmyy28sXwvuRaDLg3KsmxoK-pXCLZ3aSIiTslmAbBx48ZMnjyZ48eP88MPP1CmTBmeffZZwsLCePrpp21VhogUM1uOXuChaev4-Y8zeHm48caj9ZjRpzGBPnq_n4hIUbFZALzCZDLRtm1bPvvsM3766SeqVKnCl19-aesyRMTOLBaDD1cfpNenGzmdmkXV0v4sef4--jbX-_1ERIqazS4CueLkyZPExcURFxfHrl27aNmyJbGxsbYuQ0Ts6HxGNsO_2c6a_WcB6N6oHP99tD4B3jb_lSQi4pJs9tv2k08-IS4ujl9__ZVatWrRt29fvv32WypVqmSrEkSkGNh4-Dwvzt1Gclo2Pp5uTOhWjyfuqaCzfiIiNmSzAPjf__6XPn36MG3aNBo2bGirw4pIMZFnMYhddZAPftqPxYDqoQHERjWhZnigvUsTEXE5NguAx48f1__wRVzUmfQshs1L5NeD5wF44u4KjH-kLn5emvIVEbEHm10EYjKZWLduHf369aNly5b8-eefAHz99desX7_eVmWIiI39evAcD01dz68Hz-Pr6c6Ung2Z_ERDhT8RETuyWQBcuHAhHTt2xNfXl23btlnv_5eamsqbb75pqzJExEbyLAZT4vfT7_NNnMvIplZ4IN8NbcVjTSrYuzQREZdnswD43__-l48__pjPPvsMT8__u7_XfffdR0JCgq3KEBEbSE7LIuqzjUz7-QCGAX2aRbAk-j6qhwbYuzQREcGG7wHct28fDzzwwFXrg4ODSUlJsVUZIlLE1uw_y7B5iVy4lIO_lztvPlafRxqVt3dZIiLyNzYLgOHh4Rw8eJDKlSvnW79-_XqqVq1qqzJEpIjk5ll4L34_H60-BECdskHE9m1CldL-dq5MRET-yWZTwIMHD-bFF19k06ZNmEwmTp06xezZsxkxYgRDhgy5pbHWrl1L165dKVeuHCaTiSVLluTbbjKZCvyaPHmydZ_KlStftX3SpEmF0aqIyzmVcpnen260hr8nW1Ri0fP3KvyJiBRTNjsD-Morr2CxWGjXrh2ZmZk88MADeHt7M2LECIYOHXpLY126dImGDRvy9NNP89hjj121_fTp0_mWf_jhBwYNGkSPHj3yrZ8wYQKDBw-2LgcG6n5kIrdq1b6zvLxoFymZZgK9PXj78QY8VL-svcsSEZHrsFkANJlM_Oc__2HkyJEcPHiQjIwM6tSpQ0BAAJcvX8bX1_emx-rcuTOdO3e-5vbw8PB8y99--y1t27a9aqo5MDDwqn1F5OaY8ywsOerGqg3bAGhQIZgZfZpQsZSfnSsTEZEbsfmNuLy8vKhTpw4A2dnZTJkyhXfeeYekpKQiOV5ycjLff_89X3755VXbJk2axMSJE6lYsSJRUVEMGzYMD49rf0uys7Ott68BSEtLA8BsNmM2mwu17ivjFfa4xYX6c2wnL17mxXnb2XH6r3eR9G9ZkZGRNfD2cHOanp39OXT2_sD5e1R_dz62KzMZhmEU5QGys7MZN24c8fHxeHl58fLLL9O9e3dmzpzJf_7zH9zd3YmJiWHUqFG3Nb7JZGLx4sV07969wO3vvPMOkyZN4tSpU_j4-FjXT5kyhSZNmhASEsJvv_3G6NGjGThwIFOmTLnmscaNG8f48eOvWh8XF4efn856iGvYccFE3EE3LueZ8HU3iKpuoUFIkf4aEREpVJmZmURFRZGamkpQUJC9y7GLIg-Ao0aN4pNPPqF9-_b89ttvnD17loEDB7Jx40ZeffVVnnjiCdzd3W97_BsFwFq1atGhQwemT59-3XG--OIL_vWvf5GRkYG3t3eB-xR0BjAiIoJz584V-g-Q2WwmPj6eDh065LtvorNQf44nO9fCOyv389XG4wA0LB9E97AL9HrYeXr8O2d8Dv_O2fsD5-9R_d2-tLQ0Spcu7dIBsMingOfPn89XX31Ft27d2LVrFw0aNCA3N5ft27cX-WcDr1u3jn379jFv3rwb7tu8eXNyc3M5evQoNWvWLHAfb2_vAsOhp6dnkb34inLs4kD9OYZj5y8RE7eNnX-mAvDsA1X594NViV-5wml6vBb15_icvUf1d3tjuroiD4AnT57k7rvvBqBevXp4e3szbNiwIg9_AJ9__jl33303DRs2vOG-iYmJuLm5ERoaWuR1iTiS73ec5pWFO0jPzqWknyfv9WzIg7XC9B4aEREHVuQBMC8vDy8vr_87oIcHAQF39nFQGRkZHDx40Lp85MgREhMTCQkJoWLFisBfp3fnz5_Pe--9d9XjN2zYwKZNm2jbti2BgYFs2LCBYcOG0a9fP0qWLHlHtYk4iyxzHv_9fg__-_-nfO-pVJLpUY0pG3zzV-yLiEjxVOQB0DAMBgwYYJ06zcrK4rnnnsPfP_8NYhctWnTTY27ZsoW2bdtal4cPHw5A__79mTVrFgBz587FMAz69Olz1eO9vb2ZO3cu48aNIzs7mypVqjBs2DDrOCKu7si5S0TPTmDP6b-udH--TTWGd6iBh7vN7h0vIiJFqMgDYP_-_fMt9-vX747HbNOmDTe6duXZZ5_l2WefLXBbkyZN2Lhx4x3XIeKMvk38k1cX7eRSTh6l_L2Y0qsRrWuUsXdZIiJSiIo8AM6cObOoDyEihSDLnMe4pbuZu_kEAC2qhjC1d2PCgnxu8EgREXE0Nr8RtIgUPwfPpBM9exv7ktMxmWDog3fxYru7cHcr-ou1RETE9hQARVzcgq0neX3JLi6b8ygd4M3U3o24r3ppe5clIiJFSAFQxEVl5uTy-pLdLEw4CcB91Uvxfq9GhAZqyldExNkpAIq4oH1J6UTHJXDwTAZuJhjWvgbPt62uKV8RERehACjiQgzD4JstJxjz7W6ycy2EBXkztXdjWlQtZe_SRETEhhQARVxERnYury3eyZLEUwC0rlGGKT0bUiqg4M--FhER56UAKOIC9pxKIyYugcPnLuHuZmJEZE3-9UBV3DTlKyLikhQARZyYYRjM3nScCcv2kJNroWywD9P7NOaeyiH2Lk1EROxIAVDESaVlmRm9aCff7zgNQLtaobz7RENK-nvd4JEiIuLsFABFnNDOk6nEzEng2PlMPNxMvNK5FoNaVcFk0pSviIgoAIo4FcMw-PK3o7y5_A9y8iyUL-HLjKjGNK5Y0t6liYhIMaIAKOIkUjPNvLxwOyt3JwMQWSeMyY83JNjP086ViYhIcaMAKOIEth2_yNA52zh58TJe7m68-lAt-t9bWVO-IiJSIAVAEQdmGAafrz_CpB_-INdiUDHEj9ioJtSvEGzv0kREpBhTABRxUBcv5TBi_nZ-_uMMAF3ql-WtHvUJ8tGUr4iIXJ8CoIgD2nrsAkPjtnEqNQsvDzfGPFyHvs0raspXRERuigKgiAOxWAw-WXuYd3_cR57FoEppf2ZENaZuOU35iojIzVMAFHEQ5zOyGf7NdtbsPwvAI43K8caj9Qnw1stYRERujf5yiDiATYfP88LcbSSnZePt4caER-rS854ITfmKiMhtUQAUKcbyLAYfrjrI-z_tx2JA9dAAYqOaUDM80N6liYiIA1MAFCmmzqZn8-952_j14HkAejSpwMTudfHz0stWRETujP6SiBRDvx48x4tzEzmXkY2vpzsTu9fj8bsr2LssERFxEgqAIsVInsVg6s8HmP7LAQwDaoYFEtu3MdVDNeUrIiKFRwFQpJhITsvixbnb2Hj4AgC9m0YwtmtdfL3c7VyZiIg4GwVAkWJgzf6zDJ-XyPlLOfh7ufPmY_V5pFF5e5clIiJOSgFQxI5y8yxMid_Ph6sPAVC7bBCxUY2pWibAzpWJiIgzUwAUsZNTKZd5Yc42thy7CMCTLSrxny618fHUlK-IiBQtBUARO_jlj2SGf7OdlEwzgd4eTOrRgC4Nytq7LBERcREKgCI2ZM6zMHnlPj5dexiA-uWDmRHVmEql_O1cmYiIuBIFQBEbOXkxk5i4bSSeSAFgwL2VGf1QLbw9NOUrIiK25WbvAm7H2rVr6dq1K-XKlcNkMrFkyZJ82wcMGIDJZMr31alTp3z7XLhwgb59-xIUFESJEiUYNGgQGRkZNuxCXMnK3Uk8NHUdiSdSCPLx4JMn72Zct7oKfyIiYhcOeQbw0qVLNGzYkKeffprHHnuswH06derEzJkzrcve3t75tvft25fTp08THx-P2Wxm4MCBPPvss8TFxRVp7eJacnItvLliNzN_PQpAo4gSTO_TmIgQP_sWJiIiLs0hA2Dnzp3p3Lnzdffx9vYmPDy8wG179-5lxYoVbN68mXvuuQeA6dOn89BDD_Huu-9Srly5Qq9ZXM-5LOj9_35n559pAAy-vwojO9bCy8MhT7yLiIgTccgAeDNWr15NaGgoJUuW5MEHH-S___0vpUqVAmDDhg2UKFHCGv4A2rdvj5ubG5s2beLRRx8tcMzs7Gyys7Oty2lpf_1hN5vNmM3mQq3_yniFPW5x4ez9Ldv-J5N3uJOVl0YJX0_e7lGPB2uWASMPsznP3uUVCmd_DtWf43P2HtXfnY_tykyGYRj2LuJOmEwmFi9eTPfu3a3r5s6di5-fH1WqVOHQoUO8-uqrBAQEsGHDBtzd3XnzzTf58ssv2bdvX76xQkNDGT9-PEOGDCnwWOPGjWP8-PFXrY-Li8PPT1N6AmYLLDnqxvrkv87yVQk06H9XHiW9b_BAERGxmczMTKKiokhNTSUoKMje5diFU54B7N27t_Xf9evXp0GDBlSrVo3Vq1fTrl272x539OjRDB8-3LqclpZGREQEkZGRhf4DZDabiY-Pp0OHDnh6ehbq2MWBM_Z39PwlXpi7g73J6QC0L2fhvYFt8fNxzvTnjM_h36k_x-fsPaq_23dlBs-VOWUA_KeqVatSunRpDh48SLt27QgPD-fMmTP59snNzeXChQvXfN8g_PW-wn9eTALg6elZZC--ohy7OHCW_r5N_JNXF-3kUk4eIf5evNujHukHfsfPx9sp-rseZ3kOr0X9OT5n71H93d6Yrs4l3o1-8uRJzp8_T9myf33SQsuWLUlJSWHr1q3WfX755RcsFgvNmze3V5nigLLMeYxetIMX5yZyKSeP5lVC-OHF-7n_rtL2Lk1EROSaHPIMYEZGBgcPHrQuHzlyhMTEREJCQggJCWH8-PH06NGD8PBwDh06xMsvv0z16tXp2LEjALVr16ZTp04MHjyYjz_-GLPZTExMDL1799YVwHLTDp7JIHp2AvuS0zGZYGjb6rzQ7i483N30BmMRESnWHDIAbtmyhbZt21qXr7wvr3___nz00Ufs2LGDL7_8kpSUFMqVK0dkZCQTJ07MN307e_ZsYmJiaNeuHW5ubvTo0YNp06bZvBdxTAu3nuS1Jbu4bM6jdIA3H_RqRCud9RMREQfhkAGwTZs2XO_i5ZUrV95wjJCQEN30WW5ZZk4uY77dzYKtJwG4r3op3u_ViNBAHztXJiIicvMcMgCK2MP-5HSiZydw4EwGbib4d_saRLetjrubyd6liYiI3BIFQJEbMAyDb7acYOzS3WSZLYQGejOtT2NaVC1l79JERERuiwKgyHVkZOfy2uKdLEk8BcADNcowpWdDSgc45739RETENSgAilzDnlNpxMQlcPjcJdzdTLwUWYPnHqiGm6Z8RUTEwSkAivyDYRjM3nScCcv2kJNroWywD9P6NKZp5RB7lyYiIlIoFABF_iY9y8wri3by_Y7TADxYK5T3nmhISX8vO1cmIiJSeBQARf5_O0-mEjMngWPnM_FwMzGqUy0GtaqiKV8REXE6CoDi8gzD4MvfjvLm8j_IybNQvoQv06Ma06RiSXuXJiIiUiQUAMWlpV42M2rBDlbsTgIgsk4Ykx9vSLCfPihcRESclwKguKzEEynExCVw8uJlPN1NvPpQbQbcWxmTSVO-IiLi3BQAxeUYhsHn648w6Yc_yLUYVAzxY0ZUYxpUKGHv0kRERGxCAVBcSkpmDiPmb-envWcAeKh-OJN6NCDIR1O-IiLiOhQAxWVsPXaBoXHbOJWahZeHG68_XId-zStqyldERFyOAqA4PYvF4JO1h3n3x33kWQyqlPZnRlRj6pYLtndpIiIidqEAKE7tfEY2L83fzup9ZwHo1rAcbz5WnwBv_eiLiIjr0l9BcVqbDp_nhbnbSE7LxtvDjfHd6tKraYSmfEVExOUpAIrTybMYfLjqIO__tB-LAdXK-BPbtwm1woPsXZqIiEixoAAoTuVsejbD5iWy_uA5AB5rUp6Jj9TDX1O-IiIiVvqrKE7jt4PneHFeImfTs_H1dGfCI3V54p4Ie5clIiJS7CgAisPLsxhM_fkA0385gGFAjbAAYqOacFdYoL1LExERKZYUAMWhJadl8eLcbWw8fAGA3k0jGNu1Lr5e7nauTEREpPhSABSHtXb_WYbNS-T8pRz8vdx587H6PNKovL3LEhERKfYUAMXh5OZZmBK_nw9XHwKgdtkgYqMaU7VMgJ0rExERcQwKgOJQTqde5oU529h89CIAfZtX5PWH6-DjqSlfERGRm6UAKA5j1R9nGP5NIhczzQR4ezCpR30eblDO3mWJiIg4HAVAKfbMeRbeXbmPT9YeBqBe-SBio5pQqZS_nSsTERFxTAqAUqydvJjJ0Dnb2HY8BYAB91Zm9EO18PbQlK-IiMjtUgCUYuvH3UmMXLCD1MtmAn08mPx4AzrVK2vvskRERByeAqAUOzm5Ft76YS8zfz0KQMOIEszo05iIED_7FiYiIuIkFAClWDl-PpOYOQnsOJkKwDOtqvByp1p4ebjZuTIRERHnoQAoxcbynacZtWAH6dm5BPt68t4TDWlfJ8zeZYmIiDgdhzytsnbtWrp27Uq5cuUwmUwsWbLEus1sNjNq1Cjq16-Pv78_5cqV46mnnuLUqVP5xqhcuTImkynf16RJk2zciQBkmfN4fckunp-dQHp2LndXKsnyF-9X-BMRESkiDhkAL126RMOGDYmNjb1qW2ZmJgkJCbz--uskJCSwaNEi9u3bR7du3a7ad8KECZw-fdr6NXToUFuUL39z9Pwlenz0G19vPAbAc62rMffZFpQv4WvnykRERJyXQ04Bd-7cmc6dOxe4LTg4mPj4-HzrZsyYQbNmzTh-_DgVK1a0rg8MDCQ8PLxIa5VrSzhn4tUPN3IpJ48Qfy-m9GxIm5qh9i5LRETE6TlkALxVqampmEwmSpQokW_9pEmTmDhxIhUrViQqKophw4bh4XHtb0l2djbZ2dnW5bS0NOCvaWez2VyoNV8Zr7DHLQ6yzHlMWLaX-QfcgTyaVi7JlCfqEx7k4zT9OvPzd4Wz96j-HJ-z96j-7nxsV2YyDMOwdxF3wmQysXjxYrp3717g9qysLO677z5q1arF7NmzreunTJlCkyZNCAkJ4bfffmP06NEMHDiQKVOmXPNY48aNY_z48Vetj4uLw89Ptyi5GcmXYeZ-d05nmjBh0KG8QacIC-4me1cmIiKuIjMzk6ioKFJTUwkKCrJ3OXbh1AHQbDbTo0cPTp48yerVq6_7JH_xxRf861__IiMjA29v7wL3KegMYEREBOfOnSv0HyCz2Ux8fDwdOnTA09OzUMe2lyWJpxj73V4yc_Io5e9Jr4pZxDzR3mn6-ztnfP7-ydl7VH-Oz9l7VH-3Ly0tjdKlS7t0AHTaKWCz2UzPnj05duwYv_zyyw2f4ObNm5Obm8vRo0epWbNmgft4e3sXGA49PT2L7MVXlGPbSmZOLmO_3c38rScBuLdaKSb3qMeWdT87RX_X4-z9gfP3qP4cn7P3qP5ub0xX55QB8Er4O3DgAKtWraJUqVI3fExiYiJubm6EhuoihMK0Pzmd6NkJHDiTgZsJXmxXg5gHq2PJy7V3aSIiIi7LIQNgRkYGBw8etC4fOXKExMREQkJCKFu2LI8__jgJCQksW7aMvLw8kpKSAAgJCcHLy4sNGzawadMm2rZtS2BgIBs2bGDYsGH069ePkiVL2qstp2IYBvO3nGTM0l1kmS2EBnoztXdjWlb7K4xb8uxcoIiIiAtzyAC4ZcsW2rZta10ePnw4AP3792fcuHEsXboUgEaNGuV73KpVq2jTpg3e3t7MnTuXcePGkZ2dTZUqVRg2bJh1HLkzl7Jz-c_inSxJ_Ovm2_ffVZr3ezWidEDB760UERER23LIANimTRuud-3Kja5radKkCRs3bizssgTYcyqNmLgEDp-7hLubieEdajCkdTXc3HSZr4iISHHhkAFQih_DMIj7_Tjjv9tDTq6F8CAfpkc1pmnlEHuXJiIiIv-gACh3LD3LzOhFO1m24zQAbWuW4b2ejQjx97JzZSIiIlIQBUC5I7v-TCU6LoFj5zPxcDPxcqeaPNOqqqZ8RUREijEFQLkthmHw1YZjvPH9XnLyLJQv4cu0Po25u5KuohYRESnuFADllqVeNjNqwQ5W7P7r9jod6oQx-fEGlPDTlK-IiIgjUACUW5J4IoWYuAROXryMp7uJ0Z1rM_C-yphMmvIVERFxFAqAclMMw-Dz9Ud4e8UfmPMMIkJ8mdGnCQ0jSti7NBEREblFCoByQymZOYyYv52f9p4BoHO9cCb1aECwrz5LUURExBEpAMp1bT12gaFx2ziVmoWXuxuvP1ybfi0qacpXRETEgSkASoEsFoNP1x1m8sp95FkMKpfyY0ZUE-qVD7Z3aSIiInKHFADlKuczsnlp_nZW7zsLQNeG5Xjz0XoE-mjKV0RExBkoAEo-vx-5wNA5CSSnZePt4ca4bnXp3TRCU74iIiJORAFQgL-mfD9cfZAp8fuxGFC1jD-xUU2oXTbI3qWJiIhIIVMAFM6mZzP8m0TWHTgHwGONyzOxez38vfXjISIi4oz0F97F_XbwHC_OS-RsejY-nm5MeKQeT9xdQVO-IiIiTkwB0EXlWQym_XyAab8cwDDgrtAAPuzbhLvCAu1dmoiIiBQxBUAXdCYtixfmbmPj4QsA9LynAuO71cPXy93OlYmIiIgtKAC6mLX7zzJsXiLnL-Xg5-XOG4_W49HGFexdloiIiNiQAqCLyM2z8P5P-_lw9SEMA2qFBxLbtwnVygTYuzQRERGxMQVAF3A69TIvzknk96N_TflGNa_ImIfr4OOpKV8RERFXpADo5Fb9cYbh3yRyMdNMgLcHbz1Wn64Ny9m7LBEREbEjBUAnZc6z8O7KfXyy9jAA9coHMaNPEyqX9rdzZSIiImJvCoBO6M-UywyNSyDheAoA_VtW4tUutfH20JSviIiIKAA6nfg9yYyYv53Uy2YCfTx4p0cDOtcva--yREREpBhRAHQSObkWJv3wB1_8egSAhhWCmRHVhIgQPztXJiIiIsWNAqATOHEhk5i4BLafTAVgUKsqjOpUCy8PNztXJiIiIsWRAqCD-2HnaV5euIP0rFyCfT1594mGdKgTZu-yREREpBhTAHRQWeY83ly-l682HAOgScUSTOvTmAolNeUrIiIi16cA6ICOnrtEdFwCu0-lAfCv1lUZEVkTT3dN-YqIiMiNKQA6mKXbT_Hqop1kZOdS0s-TKT0b0bZWqL3LEhEREQeiAOggssx5jP9uD3N-Pw5As8ohTO3TiLLBvnauTERERByNQ84Zrl27lq5du1KuXDlMJhNLlizJt90wDMaMGUPZsmXx9fWlffv2HDhwIN8-Fy5coG_fvgQFBVGiRAkGDRpERkaGDbu4eYfOZtA99lfm_H4ckwli2lYnbnBzhT8RERG5LQ4ZAC9dukTDhg2JjY0tcPs777zDtGnT-Pjjj9m0aRP-_v507NiRrKws6z59-_Zl9-7dxMfHs2zZMtauXcuzzz5rqxZu2reJp-g6fT1_JKVTOsCLr55uxoiONfHQ-_1ERETkNjnkFHDnzp3p3LlzgdsMw-CDDz7gtdde45FHHgHgq6--IiwsjCVLltC7d2_27t3LihUr2Lx5M_fccw8A06dP56GHHuLdd9-lXLlyNuvlWjJzcok76MamDbsAaFm1FFN7NyI0yMfOlYmIiIijc8gAeD1HjhwhKSmJ9u3bW9cFBwfTvHlzNmzYQO_evdmwYQMlSpSwhj-A9u3b4-bmxqZNm3j00UcLHDs7O5vs7GzrclraX1fhms1mzGZzofVwIDmDofMSOXTWDRMwtG01nm9TFXc3U6Eex56u9OEs_fyTs_cHzt-j-nN8zt6j-rvzsV2Z0wXApKQkAMLC8t8MOSwszLotKSmJ0ND8V856eHgQEhJi3acgb731FuPHj79q_Y8__oifX-Hdf-_L_W4cOu9GkKfBU3dZqJa1j5Ur9hXa-MVJfHy8vUsoUs7eHzh_j-rP8Tl7j-rv1mVmZhb6mI7G6QJgURo9ejTDhw-3LqelpREREUFkZCRBQUGFdpz72pr57_d7udvjJD26dMDT07PQxi4uzGYz8fHxdOig_hyVs_eo_hyfs_eo_m7flRk8V-Z0ATA8PByA5ORkypYta12fnJxMo0aNrPucOXMm3-Nyc3O5cOGC9fEF8fb2xtvb-6r1np6ehfrDWdrTk8mPN2D58pOFPnZxo_4cn7P3qP4cn7P3qP5ub0xX53SXklapUoXw8HB-_vln67q0tDQ2bdpEy5YtAWjZsiUpKSls3brVus8vv_yCxWKhefPmNq9ZRERExJYc8gxgRkYGBw8etC4fOXKExMREQkJCqFixIv_-97_573__y1133UWVKlV4_fXXKVeuHN27dwegdu3adOrUicGDB_Pxxx9jNpuJiYmhd-_exeIKYBEREZGi5JABcMuWLbRt29a6fOV9ef3792fWrFm8_PLLXLp0iWeffZaUlBRatWrFihUr8PH5v1uozJ49m5iYGNq1a4ebmxs9evRg2rRpNu9FRERExNYcMgC2adMGwzCuud1kMjFhwgQmTJhwzX1CQkKIi4srivJEREREijWnew-giIiIiFyfAqCIiIiIi1EAFBEREXExCoAiIiIiLkYBUERERMTFKACKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjEN-EkhxceXTSNLS0gp9bLPZTGZmJmlpaXh6ehb6-Pam_hyfs_eo_hyfs_eo_m7flb_b1_tUMWenAHgH0tPTAYiIiLBzJSIiInKr0tPTCQ4OtncZdmEyXDn-3iGLxcKpU6cIDAzEZDIV6thpaWlERERw4sQJgoKCCnXs4kD9OT5n71H9OT5n71H93T7DMEhPT6dcuXK4ubnmu-F0BvAOuLm5UaFChSI9RlBQkFO-sK9Qf47P2XtUf47P2XtUf7fHVc_8XeGasVdERETEhSkAioiIiLgYBcBiytvbm7Fjx-Lt7W3vUoqE-nN8zt6j-nN8zt6j-pM7oYtARERERFyMzgCKiIiIuBgFQBEREREXowAoIiIi4mIUAEVERERcjALgHXjrrbdo2rQpgYGBhIaG0r17d_bt25dvn6ysLKKjoylVqhQBAQH06NGD5ORk6_bt27fTp08fIiIi8PX1pXbt2kydOvWqY61evZomTZrg7e1N9erVmTVr1g3r27FjB_fffz8-Pj5ERETwzjvvOFWPR48exWQyXfW1cePGYtff6dOniYqKokaNGri5ufHvf__7puo7fvw4Xbp0wc_Pj9DQUEaOHElubu5N9-cIPRb0HM6dO7fY9bdo0SI6dOhAmTJlCAoKomXLlqxcufKG9d3p67A491cYr0Fb9rh-_Xruu-8-SpUqha-vL7Vq1eL999-_YX2O8hzeTn-O9Hv073799Vc8PDxo1KjRDesrjL-FTsmQ29axY0dj5syZxq5du4zExETjoYceMipWrGhkZGRY93nuueeMiIgI4-effza2bNlitGjRwrj33nut2z___HPjhRdeMFavXm0cOnTI-Prrrw1fX19j-vTp1n0OHz5s-Pn5GcOHDzf27NljTJ8-3XB3dzdWrFhxzdpSU1ONsLAwo2_fvsauXbuMOXPmGL6-vsYnn3ziND0eOXLEAIyffvrJOH36tPUrJyen2PV35MgR44UXXjC-_PJLo1GjRsaLL754w9pyc3ONevXqGe3btze2bdtmLF--3ChdurQxevTom-6vuPdoGIYBGDNnzsz3HF6-fLnY9ffiiy8ab7_9tvH7778b-_fvN0aPHm14enoaCQkJ16ytMF6Hxbm_wngN2rLHhIQEIy4uzti1a5dx5MgR4-uvvzb8_Pyu-3w40nN4O_050u_RKy5evGhUrVrViIyMNBo2bHjd2grrb6EzUgAsRGfOnDEAY82aNYZhGEZKSorh6elpzJ8_37rP3r17DcDYsGHDNcd5_vnnjbZt21qXX375ZaNu3br59unVq5fRsWPHa47x4YcfGiVLljSys7Ot60aNGmXUrFnzlvv6u-LU45VfXNu2bbvNbq5WVP39XevWrW8qHC1fvtxwc3MzkpKSrOs--ugjIygoKN_zequKU4-G8VcAXLx48U3XfyO26O-KOnXqGOPHj7_m9qJ4HRan_oriNWgYtu3x0UcfNfr163fN7Y7-HN6oP0f8PdqrVy_jtddeM8aOHXvDAFhUfwudgaaAC1FqaioAISEhAGzduhWz2Uz79u2t-9SqVYuKFSuyYcOG645zZQyADRs25BsDoGPHjtcdY8OGDTzwwAN4eXnle8y-ffu4ePHirTX2j9qgePR4Rbdu3QgNDaVVq1YsXbr0lvopqC4o_P5ux4YNG6hfvz5hYWHWdR07diQtLY3du3ff9rjFqccroqOjKV26NM2aNeOLL77AuIPbk9qqP4vFQnp6-nX3KYrXYXHq74rCfA1eqQ2Kvsdt27bx22-_0bp162vu48jP4c30d4Wj_B6dOXMmhw8fZuzYsTdVS1H9LXQGHvYuwFlYLBb-_e9_c99991GvXj0AkpKS8PLyokSJEvn2DQsLIykpqcBxfvvtN-bNm8f3339vXZeUlJQvBFwZIy0tjcuXL-Pr63vVOElJSVSpUuWqx1zZVrJkSYfvMSAggPfee4_77rsPNzc3Fi5cSPfu3VmyZAndunUrVv3djmt9T65sux3FrUeACRMm8OCDD-Ln58ePP_7I888_T0ZGBi-88MItj2XL_t59910yMjLo2bPnNfcp7NdhceuvsF-DYJseK1SowNmzZ8nNzWXcuHE888wz16zHEZ_DW-nPkX6PHjhwgFdeeYV169bh4XFz8aUo_hY6CwXAQhIdHc2uXbtYv379bY-xa9cuHnnkEcaOHUtkZGQhVlc4iluPpUuXZvjw4dblpk2bcurUKSZPnnxbv7iKW39FoTj2-Prrr1v_3bhxYy5dusTkyZNvKwDaqr-4uDjGjx_Pt99-S2ho6G0f61YVt_4K-zUItulx3bp1ZGRksHHjRl555RWqV69Onz59bvt4t6K49ecov0fz8vKIiopi_Pjx1KhR47bHlv-jKeBCEBMTw7Jly1i1ahUVKlSwrg8PDycnJ4eUlJR8-ycnJxMeHp5v3Z49e2jXrh3PPvssr732Wr5t4eHh-a6WujJGUFBQgWfGrveYK9tuVXHssSDNmzfn4MGDN73_FUXd3-1wtOewsDRv3pyTJ0-SnZ19S4-zVX9z587lmWee4ZtvvrnqbQv_VJjPYXHsryC3-xoE2_VYpUoV6tevz-DBgxk2bBjjxo27Zk2O-BzeSn8FKY6_R9PT09myZQsxMTF4eHjg4eHBhAkT2L59Ox4eHvzyyy8F1lTYv0edir3fhOjILBaLER0dbZQrV87Yv3__VduvvPF1wYIF1nV__PHHVW983bVrlxEaGmqMHDmywOO8_PLLRr169fKt69Onz01dBPL3K7lGjx59y298Lc49FuSZZ54xGjdufNP726q_v7vVi0CSk5Ot6z755BMjKCjIyMrKuuHjryjOPRbkv__9r1GyZMmb3t-W_cXFxRk-Pj7GkiVLbqq2wngdFuf-CnKrr0HDsM_P6BXjx483KlWqdM3tjvYc_tON-itIcfw9mpeXZ-zcuTPf15AhQ4yaNWsaO3fuzHfF8d8V1t9CZ6QAeAeGDBliBAcHG6tXr853-XxmZqZ1n-eee86oWLGi8csvvxhbtmwxWrZsabRs2dK6fefOnUaZMmWMfv365RvjzJkz1n2u3CJl5MiRxt69e43Y2NirbpEyffp048EHH7Qup6SkGGFhYcaTTz5p7Nq1y5g7d-4NbwfgaD3OmjXLiIuLM_bu3Wvs3bvXeOONNww3Nzfjiy--KHb9GYZhbNu2zdi2bZtx9913G1FRUca2bduM3bt3W7cvWrQo3y-lK7eBiYyMNBITE40VK1YYZcqUueXbwBTnHpcuXWp89tlnxs6dO40DBw4YH374oeHn52eMGTOm2PU3e_Zsw8PDw4iNjc23T0pKinWfongdFuf-CuM1aMseZ8yYYSxdutTYv3-_sX__fuP__b__ZwQGBhr_-c9_rtmjIz2Ht9Ofo_0e_buCrgIuqr-FzkgB8A4ABX7NnDnTus_ly5eN559_3ihZsqTh5-dnPProo8bp06et28eOHVvgGP_8H9uqVauMRo0aGV5eXkbVqlXzHePKOP98zPbt241WrVoZ3t7eRvny5Y1JkyY5VY-zZs0yateubfj5-RlBQUFGs2bN8t1moLj1d6N9Zs6cafzzpPzRo0eNzp07G76-vkbp0qWNl156yTCbzU7T4w8__GA0atTICAgIMPz9_Y2GDRsaH3_8sZGXl1fs-mvdunWB-_Tv3z_fOIX9OizO_RXGa9CWPU6bNs2oW7eutd7GjRsbH374Yb6fN0d-Dm-nP0f7Pfp3BQXAovpb6IxMhnEH91sQEREREYeji0BEREREXIwCoIiIiIiLUQAUERERcTEKgCIiIiIuRgFQRERExMUoAIqIiIi4GAVAERERERejACgiIiLiYhQARcSpGYZB-_bt6dix41XbPvzwQ0qUKMHJkyftUJmIiP0oAIqIUzOZTMycOZNNmzbxySefWNcfOXKEl19-menTp1OhQoVCPabZbC7U8URECpsCoIg4vYiICKZOncqIESM4cuQIhmEwaNAgIiMjady4MZ07dyYgIICwsDCefPJJzp07Z33sihUraNWqFSVKlKBUqVI8_PDDHDp0yLr96NGjmEwm5s2bR-vWrfHx8WH27Nn2aFNE5Kbps4BFxGV0796d1NRUHnvsMSZOnMju3bupW7cuzzzzDE899RSXL19m1KhR5Obm8ssvvwCwcOFCTCYTDRo0ICMjgzFjxnD06FESExNxc3Pj6NGjVKlShcqVK_Pee-_RuHFjfHx8KFu2rJ27FRG5NgVAEXEZZ86coW7duly4cIGFCxeya9cu1q1bx8qVK637nDx5koiICPbt20eNGjWuGuPcuXOUKVOGnTt3Uq9ePWsA_OCDD3jxxRdt2Y6IyG3TFLCIuIzQ0FD-9a9_Ubt2bbp378727dtZtWoVAQEB1q9atWoBWKd5Dxw4QJ8-fahatSpBQUFUrlwZgOPHj-cb-5577rFpLyIid8LD3gWIiNiSh4cHHh5__erLyMiga9euvP3221ftd2UKt2vXrlSqVInPPvuMcuXKYbFYqFevHjk5Ofn29_f3L_riRUQKiQKgiLisJk2asHDhQipXrmwNhX93_vx59u3bx2effcb9998PwPr1621dpohIodMUsIi4rOjoaC5cuECfPn3YvHkzhw4dYuXKlQwcOJC8vDxKlixJqVKl-PTTTzl48CC__PILw4cPt3fZIiJ3TAFQRFxWuXLl-PXXX8nLyyMyMpL69evz73__mxIlSuDm5oabmxtz585l69at1KtXj2HDhjF58mR7ly0icsd0FbCIiIiIi9EZQBEREREXowAoIiIi4mIUAEVERERcjAKgiIiIiItRABQRERFxMQqAIiIiIi5GAVBERETExSgAioiIiLgYBUARERERF6MAKCIiIuJiFABFREREXIwCoIiIiIiL-f8Aotl7LKm7ZkIAAAAASUVORK5CYII=", + "mimeType": "image/png"}}, {"inlineData": {"data": "UmV2aWV3IEd1aWRlbGluZXMKCjEuIEJlIGNsZWFyIGFuZCBjb25jaXNlOiBXcml0ZSBmZWVkYmFjayB0aGF0IGlzIGVhc3kgdG8gdW5kZXJzdGFuZC4KMi4gRm9jdXMgb24gYmVoYXZpb3IgYW5kIG91dGNvbWVzOiBEZXNjcmliZSB3aGF0IGhhcHBlbmVkIGFuZCB3aHkgaXQgbWF0dGVycy4KMy4gQmUgc3BlY2lmaWM6IFByb3ZpZGUgZXhhbXBsZXMgdG8gc3VwcG9ydCB5b3VyIHBvaW50cy4KNC4gQmFsYW5jZSBwb3NpdGl2ZXMgYW5kIGltcHJvdmVtZW50czogSGlnaGxpZ2h0IHN0cmVuZ3RocyBhbmQgYXJlYXMgdG8gZ3Jvdy4KNS4gQmUgcmVzcGVjdGZ1bCBhbmQgY29uc3RydWN0aXZlOiBBc3N1bWUgcG9zaXRpdmUgaW50ZW50IGFuZCBvZmZlciBzb2x1dGlvbnMuCjYuIFVzZSBvYmplY3RpdmUgY3JpdGVyaWE6IFJlZmVyZW5jZSBnb2FscywgbWV0cmljcywgb3IgZXhwZWN0YXRpb25zIHdoZXJlIHBvc3NpYmxlLgo3LiBTdWdnZXN0IG5leHQgc3RlcHM6IFJlY29tbWVuZCBhY3Rpb25hYmxlIHdheXMgdG8gaW1wcm92ZS4KOC4gUHJvb2ZyZWFkOiBDaGVjayB0b25lLCBncmFtbWFyLCBhbmQgY2xhcml0eSBiZWZvcmUgc3VibWl0dGluZy4K", + "mimeType": "text/plain"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '38275' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"I see multiple image files.\\n\\nSpecifically:\\n1. + \ One primary image file displaying a line graph titled \\\"Revenue Over Time\\\".\\n2. + \ Four additional image files, which are cropped sections of the primary image.\\n\\nAll + these files are visual representations, likely in a format such as PNG or + JPEG, used to display the graph content.\"\n }\n ],\n \"role\": + \"model\"\n },\n \"finishReason\": \"STOP\",\n \"index\": 0\n + \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 424,\n \"candidatesTokenCount\": + 70,\n \"totalTokenCount\": 781,\n \"cachedContentTokenCount\": 287,\n + \ \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 166\n },\n {\n \"modality\": \"IMAGE\",\n + \ \"tokenCount\": 258\n }\n ],\n \"cacheTokensDetails\": + [\n {\n \"modality\": \"IMAGE\",\n \"tokenCount\": 175\n + \ },\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": + 112\n }\n ],\n \"thoughtsTokenCount\": 287\n },\n \"modelVersion\": + \"gemini-2.5-flash\",\n \"responseId\": \"TkqOaY-SG_yM_uMPqMyF2A0\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:54 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=2473 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +version: 1 diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_text_file[gemini-gemini-2.0-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_text_file[gemini-gemini-2.0-flash].yaml index f2eebe360..b63884e67 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_text_file[gemini-gemini-2.0-flash].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_text_file[gemini-gemini-2.0-flash].yaml @@ -30,30 +30,30 @@ interactions: response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"The text outlines guidelines for providing - effective feedback, emphasizing clarity, specificity, and a balanced approach. - It advises focusing on behavior and outcomes with supporting examples, while - maintaining respect and offering constructive solutions. The guidelines also - recommend using objective criteria, suggesting actionable next steps, and - proofreading for clarity and tone.\\n\"\n }\n ],\n \"role\": - \"model\"\n },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": - -0.23661907513936362\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": - 164,\n \"candidatesTokenCount\": 60,\n \"totalTokenCount\": 224,\n \"promptTokensDetails\": - [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 164\n - \ }\n ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": - \"TEXT\",\n \"tokenCount\": 60\n }\n ]\n },\n \"modelVersion\": - \"gemini-2.0-flash\",\n \"responseId\": \"jB-OaajdD93b-8YP5oqtmQw\"\n}\n" + [\n {\n \"text\": \"These guidelines provide instructions + for writing effective feedback. Feedback should be clear, concise, specific, + and balanced, focusing on behaviors and outcomes with examples. It should + also be respectful, constructive, and objective, suggesting actionable next + steps for improvement and be proofread before submission.\\n\"\n }\n + \ ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"avgLogprobs\": -0.27340631131772641\n }\n ],\n \"usageMetadata\": + {\n \"promptTokenCount\": 164,\n \"candidatesTokenCount\": 54,\n \"totalTokenCount\": + 218,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 164\n }\n ],\n \"candidatesTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 54\n + \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": + \"kSqOadGYAsXQjMcP9YfmuAQ\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:44:29 GMT + - Thu, 12 Feb 2026 19:31:29 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=1648 + - gfet4t7; dur=1041 Transfer-Encoding: - chunked Vary: @@ -101,28 +101,29 @@ interactions: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": [\n {\n \"text\": \"These guidelines outline how to provide - effective feedback, emphasizing clarity, specificity, and a balance of positive - and constructive criticism. The goal is to improve performance by focusing - on behavior, outcomes, and actionable next steps, while maintaining a respectful - and objective tone.\\n\"\n }\n ],\n \"role\": \"model\"\n - \ },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.17706455230712892\n + effective feedback: be clear, concise, and specific, focusing on behavior + and outcomes with examples. Balance positive aspects with areas for improvement, + offering constructive, respectful suggestions and actionable next steps, all + while referencing objective criteria and ensuring the feedback is well-written + and proofread.\\n\"\n }\n ],\n \"role\": \"model\"\n + \ },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.25106738043613119\n \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 164,\n \"candidatesTokenCount\": - 50,\n \"totalTokenCount\": 214,\n \"promptTokensDetails\": [\n {\n + 61,\n \"totalTokenCount\": 225,\n \"promptTokensDetails\": [\n {\n \ \"modality\": \"TEXT\",\n \"tokenCount\": 164\n }\n ],\n \ \"candidatesTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n - \ \"tokenCount\": 50\n }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n - \ \"responseId\": \"jR-OafOpOvKHjrEPjs_s-QE\"\n}\n" + \ \"tokenCount\": 61\n }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n + \ \"responseId\": \"kiqOaePiC96RjMcP3auj8Q4\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:44:30 GMT + - Thu, 12 Feb 2026 19:31:31 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=786 + - gfet4t7; dur=1024 Transfer-Encoding: - chunked Vary: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_text_file[gemini-gemini-2.5-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_text_file[gemini-gemini-2.5-flash].yaml new file mode 100644 index 000000000..9f1d157f0 --- /dev/null +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_text_file[gemini-gemini-2.5-flash].yaml @@ -0,0 +1,134 @@ +interactions: +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: Summarize this text + briefly.\n\nProvide your complete response:"}, {"inlineData": {"data": "UmV2aWV3IEd1aWRlbGluZXMKCjEuIEJlIGNsZWFyIGFuZCBjb25jaXNlOiBXcml0ZSBmZWVkYmFjayB0aGF0IGlzIGVhc3kgdG8gdW5kZXJzdGFuZC4KMi4gRm9jdXMgb24gYmVoYXZpb3IgYW5kIG91dGNvbWVzOiBEZXNjcmliZSB3aGF0IGhhcHBlbmVkIGFuZCB3aHkgaXQgbWF0dGVycy4KMy4gQmUgc3BlY2lmaWM6IFByb3ZpZGUgZXhhbXBsZXMgdG8gc3VwcG9ydCB5b3VyIHBvaW50cy4KNC4gQmFsYW5jZSBwb3NpdGl2ZXMgYW5kIGltcHJvdmVtZW50czogSGlnaGxpZ2h0IHN0cmVuZ3RocyBhbmQgYXJlYXMgdG8gZ3Jvdy4KNS4gQmUgcmVzcGVjdGZ1bCBhbmQgY29uc3RydWN0aXZlOiBBc3N1bWUgcG9zaXRpdmUgaW50ZW50IGFuZCBvZmZlciBzb2x1dGlvbnMuCjYuIFVzZSBvYmplY3RpdmUgY3JpdGVyaWE6IFJlZmVyZW5jZSBnb2FscywgbWV0cmljcywgb3IgZXhwZWN0YXRpb25zIHdoZXJlIHBvc3NpYmxlLgo3LiBTdWdnZXN0IG5leHQgc3RlcHM6IFJlY29tbWVuZCBhY3Rpb25hYmxlIHdheXMgdG8gaW1wcm92ZS4KOC4gUHJvb2ZyZWFkOiBDaGVjayB0b25lLCBncmFtbWFyLCBhbmQgY2xhcml0eSBiZWZvcmUgc3VibWl0dGluZy4K", + "mimeType": "text/plain"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '1226' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"These guidelines provide a framework + for giving effective feedback, emphasizing clarity, specificity, balance, + respect, objectivity, actionable next steps, and proofreading.\"\n }\n + \ ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 166,\n \"candidatesTokenCount\": 29,\n \"totalTokenCount\": 223,\n \"promptTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 166\n + \ }\n ],\n \"thoughtsTokenCount\": 28\n },\n \"modelVersion\": + \"gemini-2.5-flash\",\n \"responseId\": \"PUqOaZ3pMYi8_uMP25m7gAQ\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:37 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=671 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: Summarize this text + briefly.\n\nProvide your complete response:"}, {"inlineData": {"data": "UmV2aWV3IEd1aWRlbGluZXMKCjEuIEJlIGNsZWFyIGFuZCBjb25jaXNlOiBXcml0ZSBmZWVkYmFjayB0aGF0IGlzIGVhc3kgdG8gdW5kZXJzdGFuZC4KMi4gRm9jdXMgb24gYmVoYXZpb3IgYW5kIG91dGNvbWVzOiBEZXNjcmliZSB3aGF0IGhhcHBlbmVkIGFuZCB3aHkgaXQgbWF0dGVycy4KMy4gQmUgc3BlY2lmaWM6IFByb3ZpZGUgZXhhbXBsZXMgdG8gc3VwcG9ydCB5b3VyIHBvaW50cy4KNC4gQmFsYW5jZSBwb3NpdGl2ZXMgYW5kIGltcHJvdmVtZW50czogSGlnaGxpZ2h0IHN0cmVuZ3RocyBhbmQgYXJlYXMgdG8gZ3Jvdy4KNS4gQmUgcmVzcGVjdGZ1bCBhbmQgY29uc3RydWN0aXZlOiBBc3N1bWUgcG9zaXRpdmUgaW50ZW50IGFuZCBvZmZlciBzb2x1dGlvbnMuCjYuIFVzZSBvYmplY3RpdmUgY3JpdGVyaWE6IFJlZmVyZW5jZSBnb2FscywgbWV0cmljcywgb3IgZXhwZWN0YXRpb25zIHdoZXJlIHBvc3NpYmxlLgo3LiBTdWdnZXN0IG5leHQgc3RlcHM6IFJlY29tbWVuZCBhY3Rpb25hYmxlIHdheXMgdG8gaW1wcm92ZS4KOC4gUHJvb2ZyZWFkOiBDaGVjayB0b25lLCBncmFtbWFyLCBhbmQgY2xhcml0eSBiZWZvcmUgc3VibWl0dGluZy4K", + "mimeType": "text/plain"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '1226' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"These guidelines provide instructions + on how to deliver effective, constructive, and respectful feedback, emphasizing + clarity, specificity, balance, and actionable suggestions for improvement.\"\n + \ }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 166,\n \"candidatesTokenCount\": 29,\n \"totalTokenCount\": 269,\n \"promptTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 166\n + \ }\n ],\n \"thoughtsTokenCount\": 74\n },\n \"modelVersion\": + \"gemini-2.5-flash\",\n \"responseId\": \"PkqOaf-bLu-v_uMPnorr8Qs\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:38 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=898 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +version: 1 diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_video_file[gemini-gemini-2.0-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_video_file[gemini-gemini-2.0-flash].yaml index e10126d22..d60487f4e 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_video_file[gemini-gemini-2.0-flash].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_video_file[gemini-gemini-2.0-flash].yaml @@ -29,30 +29,20 @@ interactions: uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent response: body: - string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"The video shows a white square moving - across a blue background. Initially, the square is on the left side of the - screen, then it moves to the center, and finally to the right side.\\n\"\n - \ }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": - \"STOP\",\n \"avgLogprobs\": -0.19920091629028319\n }\n ],\n \"usageMetadata\": - {\n \"promptTokenCount\": 1331,\n \"candidatesTokenCount\": 40,\n \"totalTokenCount\": - 1371,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n - \ \"tokenCount\": 41\n },\n {\n \"modality\": \"VIDEO\",\n - \ \"tokenCount\": 1290\n }\n ],\n \"candidatesTokensDetails\": - [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 40\n - \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": - \"jx-OaZy5F5vSjMcP2vLD-AE\"\n}\n" + string: "{\n \"error\": {\n \"code\": 429,\n \"message\": \"Resource + exhausted. Please try again later. Please refer to https://cloud.google.com/vertex-ai/generative-ai/docs/error-code-429 + for more details.\",\n \"status\": \"RESOURCE_EXHAUSTED\"\n }\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Thu, 12 Feb 2026 18:44:34 GMT + - Thu, 12 Feb 2026 19:31:47 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=3071 + - gfet4t7; dur=6576 Transfer-Encoding: - chunked Vary: @@ -66,75 +56,6 @@ interactions: X-XSS-Protection: - '0' status: - code: 200 - message: OK -- request: - body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What do you see in this - video?\n\nProvide your complete response:"}, {"inlineData": {"data": "AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAHsZtZGF0AAACrwYF__-r3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2NCByMzE5MSA0NjEzYWMzIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTExIGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MyBiX3B5cmFtaWQ9MiBiX2FkYXB0PTEgYl9iaWFzPTAgZGlyZWN0PTEgd2VpZ2h0Yj0xIG9wZW5fZ29wPTAgd2VpZ2h0cD0yIGtleWludD0yNTAga2V5aW50X21pbj0yNCBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAQdliIQAM__-3zL4FEXSdBJq5ZU3MJcdjcXcqxS_NYf0tBgsiAAAAwAAAwAAAwJGJfsNAqMeV-wAAAMBPABHAaIO0K6IuN4V-CW5BgA6cj9UrIMdlOMRFLwqwOXui4MmJ_Qug8cnD7OyzWd8fkO7g6v9Usn0LK3lOT2_OpGOX1OHSDEo7sSAg7TS3ifydLhdISUFGDfGxDAstID4Yt8myCwPkA13JCSfzhJNjQ3cpNpxPNbOj0cSLhXKcUAED5L9wB2mEFFxDScBi3xoU2BBfq6JBFEiek7bqFHC5eoOY7c5VJIzWsAkvkgEwgSsuGyYjoDdYCz_p7fAQcFnuyoDmAAAAwAAAwATMQAAAHZBmiJsQv_-jLAAAgJlZVdtDJMANcWoTYugEm1Az9JgfOzpsvdqsCMiibWITi5gx8foq-j-o1JH5N3dOrtkRUKF7TLkSL4XM_qNeglpYWeFo_f9Ov2ajDV7YClaV4wMyjMh8K0lxTU-oLhjOr8HS3LmurhV1DfgAAAANwGeQXkK_wAAbAC9c9AAghCV-TTPgFb3rKwALK98H9w5PtSIoTbw4T2gNCyOyZBatJqzMbVLD0kAAABCQZpDPCGTKYQr__44QAAHvxUh7N76GAVP2gG1Qdf8qJ07563ffcO4t3_mUhoqZ7exAwdcTHPco3aR1Coe8vTE6g6oAAAARUGaZUnhDyZTBTwr__44QAAHy3_9jc7e2kANEMATITEW5B8gFuybki22_NO0s8mE3SjlH-MD51Wsu06nTbtldhYK0HeDfwAAACwBnoRqQr8AASpVIKsEEJ5DHOZ5tqvMz8iiVXNIWdZKjc9QmL6YDhcXqTRSQQAAADRBmoZJ4Q8mUwIV__44QAAHkxfR34Z17X-nIvZosqVk3DPKhi5pMIrjz9cfOXitTugAEFlBAAAAPEGap0nhDyZTAhX__jhAAAeTFJeH2fGzW-iNwf7zbzyXg9vBPA8c9KWUNkwUWCFzrChUyyM3uKEuTvLBbQAAAD1BmslJ4Q8mUwURPDP__p4QAAHy4TnuGHay0IcbBMIZVrMXwWZV3kHZP4P6cY0rF3PP3HTzHRijaq-SaFBAAAAAKQGe6GpCvwABKlUh3hVwWvopQ7Y6wl4jp24qMRokq8vxImFFnYtmuQ5YAAAAPEGa6knhDyZTAhv__qeEAAB8AXiYEeglsHuUofRYsfvEMPBEAFQab1ndLc1hE03fy2KlhM5mstzjfAoPWQAAAENBmwxJ4Q8mUwURPDP__p4QAAHn4TnfPGrTN9_WoAIED37_Hdeid4lVYaskQbii-qUiUia5_Q1pWadOV4NPObs5hBdwAAAALwGfK2pCvwABKlUh2JWcqsTxMrUdWx6pBM5Hxqfe0lacHrghNRVgiXLG2PNzaFJAAAAAMkGbLUnhDyZTAhn__p4QAAHZ84daK8C3WYeftlntePbtTg-GlGkb4Og60qGpiaAaWIOBAAAAOkGbTknhDyZTAhv__qeEAAB5QV1gR6CLnN0PosWODPmvHgePIAT4FA6Fl3R8gHiu2cth4Ajm9XxyRU0AAAA8QZtwSeEPJlMFETwz__6eEAAB3OE51qhSWESje0_hzovx-uvLthCyE1TcdBmvTfPSrXHg7_wLoMd_aFTBAAAALgGfj2pCvwABKlUh0xvwqgBdvmvVjV6k9d-iccfc76S48GWv6tl0MuOfwzFRoVMAAAAyQZuRSeEPJlMCGf_-nhAAAc7zh1rd6FmJZMUE9xyiaL6PYOjnXgQbJQzh3wDoBJrkBgQAAABzQZuySeEPJlMCG__-p4QAAHc4TyXxjMACEk0tq6pWCEXq94kuCZAu87BXPaVvatodufkSaxWNEWH46wVFIWR1FU5SOAJfD2RHv1-QsYsrgrE8kucwj-cO8XPjVFhyu2leJCXVuH-55LolxrBw32Qvjpwm4QAAAD9Bm9RJ4Q8mUwURPDP__p4QAAHD9Swh4ASaWBu96JQw-k51049EdSbcla-mi00EyrbhTjTOPcEE_x0hTqDgOqAAAAArAZ_zakK_AAEqVSHJDXd7PmywZ6NBUgjltz5pHUsurfvz1gcKan2T5OWIuAAAADpBm_VJ4Q8mUwIb__6nhAAAc9dxqelT2Dxqb6AVV-8Lz85ICnqPI6nZPxdyM_hkpJ0MQcDCTa9iiwpJAAAAOkGaF0nhDyZTBRE8M__-nhAAAcbhOdalglhEfttQrJ0dEbHkehQNTkkiTwhLZugyvn7UvmL8pZzCDKgAAAArAZ42akK_AAEqVSHJG_BbAXOewNUrok-9cmsVBjXPfpaU0gb0fWLGwFiDKwAAADBBmjhJ4Q8mUwIZ__6eEAABuZ9dBEB2QqJWVgFkBiH4z8aGN5A1OOVGVKSkIbP3FTEAAAAwQZpZSeEPJlMCG__-p4QAAHG4TzUqKuc4RO-SjM3YribHH-zzAL-i-MgGoRUyAiTgAAAAOEGae0nhDyZTBRE8M__-nhAAAa9e7RY8xzhmPRWFpVTbLXv6TL-UU0xFC9Hp-hvn8YKJjC2UZMYFAAAAJwGemmpCvwABKlUhv0HI7k0qiqdT68B_SF8Q4F-nLAdIdq2F5ZAesAAAADpBmpxJ4Q8mUwIb__6nhAAAblzr0qeweRTf-x2Vj94hh4IgAqDTes7pbmsImm7-hR0pRFTCTa55LBqRAAAAOkGavknhDyZTBRE8M__-nhAAAbHhOdaoUlhEo3tQrJ0dEbHkehQNTkkiTwhLZugyvn7Uvo6-U_JhBqUAAAA8AZ7dakK_AAEqVSG_G_CqlYAPLLNoR_eR233-mUj5VXPPeRD3ukQsm4x-RZNtgVBGvKgQ8QIDwySxuyIWAAAAM0Ga30nhDyZTAhn__p4QAAGlXYVjy8FmPRWFpVTbLXv6TL-UU0xFC9HjQUnQ6qCtToUUEAAAAEhBmuBJ4Q8mUwIb__6nhAAAbHhPNUbEdl8wiAEEGGqNy-MBC37Vjci9iIpPdo4-4J0iHfy0YUylmHt5bjyNt7hr4oDFJefEjAkAAAAzQZsCSeEPJlMFETwz__6eEAABm17tFj5hjUE9RUUoDJa_sWAdW5WHx5yZrHuA0Y4Pr8GzAAAAJwGfIWpCvwABKlUhtUHI7k0qiqdT68B_SF8Q4F-nLAdIdq2F5ZAgYQAAADdBmyNJ4Q8mUwIb__6nhAAAaVzr0qeweRTf-x2UvFpDFlAtQoUrVlOyhYj1qzf9CjwGRDAW0kYsAAAAPEGbRUnhDyZTBRE8M__-nhAAAZ3hOeJ1tJLFBxzhYQyrWYhQsxgH4dk_jfvxPeLn5KcadFcoV-S1JqXhGwAAACsBn2RqQr8AASpVIbUb8FsBc57A1SuiT71yaxUGNc9-lpTSBvR9YsbAWIN7AAAAL0GbZknhDyZTAhn__p4QAAGRXexY-YY1BPUVFKAyWv7FgHVuVh8ecmaxpbrzWKCBAAAAOUGbh0nhDyZTAhv__qeEAABm3OvSp7B5FN_7HZWP3iGHgiACoNN6zuluawiabv6E4ByYFc-6GM-K2QAAAD5Bm6lJ4Q8mUwURPDP__p4QAAGT4TnidVqSxQb9wWEMq1i1DbPi0gzZRUvYhbMabBNUS_aLygr20Gh-cog44AAAACkBn8hqQr8AASpVIbBFFFr6KUO2OsJeI6duKjEaJKvL8SJhRZ2LZrkSMAAAADpBm8pJ4Q8mUwIb__6nhAAAZF0ClKnsIAPfG_9jsrH7xDDwRABUGm9Z3S3NYRNN38ts5pyl7PZURiVhAAAARkGb7EnhDyZTBRE8M__-nhAAAYnhOd88atM339agAgQPfwZFuuxS8SqsNWSINxRfVKRKRNc_oa0rNOnK8GncHy7eOzsGi7gAAAAvAZ4LakK_AAEqVSGrxUCqxPEytR1bHqkEzkfGp97SVpweuCE1FWCJbtC-ElxkSsAAAAAyQZoNSeEPJlMCGf_-nhAAAX1dhWPLwLdZh5-2We149u1OD4aUaRvg6DrSoamJoBpYqYEAAAA9QZouSeEPJlMCG__-p4QAAGHc69KnsHkU3_sdlY4M-a8eB48gBPgUDoWXdHyAeK7Z5CckIJol-vGY2cwPWQAAADxBmlBJ4Q8mUwURPDP__p4QAAF_4TnWqFJYRKN7UKydF-P118GyR7vNgsykiIVZ_whhSOUvl2jqeP6l4TMAAAAvAZ5vakK_AAEqVSGnRRSqAF2-a9WNqJHD4kNfhoFHm0rvXJyzIrRtZVGR_L-yJmAAAAAwQZpxSeEPJlMCGf_-nhAAAXOthWR96FmJZMUE9xyiaL6PYOjnXgQbJQ-0OwhR-4yoAAAANUGakknhDyZTAhv__qeEAABf-E81KirnOETvkozN2K4mxx_s8wC_ovjIBuVdaKOUcphiXB6RAAAAM0GatEnhDyZTBRE8M__-nhAAAWqu7RY8xzhmPRWFpVTbLXv6TL-UU0xFC9Hp-W7NldgSsAAAACgBntNqQr8AASpVIZ44ZVjYuNihvugKbWvQmjdXxErS-MGHMDdCBwHpAAAAN0Ga1UnhDyZTAhv__qeEAABdABiHSp7B-G6CQgJmULgNHICf_pSiW5_C4aGpAb36eRQfXbMkb0EAAAA8QZr3SeEPJlMFETwz__6eEAABbOZc61LBLCI_bahWTo6I2PI9CganJJEnhCWzdBl6CJsvYsN-cd8O8KGAAAAAKwGfFmpCvwABKlUhnkUUWwFznsDVK6JPvXJrFQY1z36WlNIG9H1ixsBYg-cAAAAvQZsYSeEPJlMCGf_-nhAAAWGthWPLwWY9FYWlVNste_pMv5RTTEUL0eNO6QPYEzEAAABIQZs5SeEPJlMCG__-p4QAAFs5l2rI3jMvmEQAggw1RuXxgIW_asbkXsRFJ7tHH3BOkQ7-WjCmUsw9vKcYz94b7qaLdp8-JHHAAAAANkGbW0nhDyZTBRE8M__-nhAAAViu7RY-YY1BPUVFKAyWv7FgHVuVh8ecmax7gNJFfBSa_1-D_QAAACgBn3pqQr8AASpVIZU4ZVjYuNihvugKbWvQmjdXxErS-MGHMDdCBwH-AAAANEGbfEnhDyZTAhv__qeEAABYgBiHSp7B-G6CQgJmDFNvc78e6iaC9ubCNOGo7x9-oeZI6YEAAAA5QZueSeEPJlMFETwz__6eEAABWuZc61DksIid2oVkxNEbHkehQNTkkiTwhLZugyvn7UvmL8otMIQdAAAAKwGfvWpCvwABKlUhlUUUWwFznsDVK6JPvXJrFQY1z36WlNIG9H1ixsBYhBwAAAA2QZu_SeEPJlMCGf_-nhAAAU-t7Fj7VOAsx6KwtKqbZa9_SZfyimmIoXo8-lAOh1UKsvyJiEHAAAAAOkGbwEnhDyZTAhv__qeEAABWuZdqyN41DSjX33rYP3PwUbMHUj1GaXJmcCxaQl3M8UOoH8Vwb52Swh8AAAAzQZviSeEPJlMFETwz__6eEAABRq7tFj5hjUE9RUUoDJa_sWAdW5WHx5yZrHuA0Y4Pr8IeAAAAJwGeAWpCvwABKlUhjPQkm4q-jy_0K8B_SF8Q4F-nLAdIdq2F5ZApoQAAADdBmgNJ4Q8mUwIb__6nhAAAU_Dr0qeweRTf-x2Vj94hh4IgAqDTes7pbmsImm7-hR4DIhgLaSPSAAAAPkGaJUnhDyZTBRE8M__-nhAAAUjmXPE62klig45wsIZVrFqG2fFpBmyipexC2Y02Caol-0XlBYroNFJ5RCLhAAAAKwGeRGpCvwABKlUhjNcUWwFznsDVK6JPvXJrFQY1z36WlNIG9H1ixsBYhF0AAAAvQZpGSeEPJlMCGf_-nhAAAT2thWPLwWY9FYWlVNste_pMv5RTTEUL0eNO6QPYFVEAAAA9QZpnSeEPJlMCG__-p4QAAFGxApSp7B5IZf-x2Vj94hh4IgAqDTes7pbmsImm7-o30WLTBIGNXbenlaQYEQAAADZBmolJ4Q8mUwURPDP__p4QAAE_5lzvnjVppjrYWELZoSJb4EGdOlpVpVCAd83rD8D4KmV4XEAAAAApAZ6oakK_AAEqVSGI1xRa-ilDtjrCXiOnbioxGiSry_EiYUWdi2a5FxAAAAAvQZqqSeEPJlMCGf_-nhAAATUPVfYeZ1fcpg6oIp1RNF9HsHRzrwINkoZjY1dwK-EAAAA5QZrLSeEPJlMCG__-p4QAAE_5l2CWlGxI7Qv9URgQ8Z2bl3opFBzWsfPmkYmfyJpp1Nr7U_rwwCEnAAAAOkGa7UnhDyZTBRE8M__-nhAAAS0QePJAA0IWKAYcvUDmdqNK_tEdSbcla-mi00EyrbhTjTOPb3KSsakAAAAoAZ8MakK_AAEqVSGAymVY2LjYob7oCm1r0Jo3V8RK0vjBhzA3QgcCTwAAADVBmw5J4Q8mUwIb__6nhAAATVL0h0qeweOGXzmwv3hefaimFvnqTtMn2HSj-87KV2QLGeBBwQAAADtBmzBJ4Q8mUwURPDP__p4QAAEu6b0BVHbWWdBGwHUXcfuMX1lLSAJkgzztHdty4eDNZzkvYGYA_-tEHQAAAC4Bn09qQr8AASpVIYDXQKrE8TK1oSv6cjDVX5BQ5Tz87qfv645wRKec9b5M-GDAAAAAMEGbUUnhDyZTAhn__p4QAAElD1X2HmdX3KYOqCKdUTRfR7B0c68CDZKH2h2EHU3HzAAAAEJBm3JJ4Q8mUwIb__6nhAAAS7pvYJaUbEjtC_1REjmDOzWlH0vriihLwS7_Wg6WqjSHH-dtmW0P-yXmCMKpBj04ekEAAAA6QZuUSeEPJlMFETwz__6eEAABHRB48kADxqVeS9hqpWdqNK_tEdSbcla-mi00EyrbhTjTOPb3KSsb0AAAACoBn7NqQr8AASpVIXj0JJ94OTwUxP4VuIP7MktUYvsrwaEqAoGI1sowLyAAAABCQZu1SeEPJlMCG__-p4QAAElHZ9BurzyP93oBj26WaMeFpmb0JH1IzjvtOv2x1rFhY4cPfgBVh-oL6pG7LpKwkwoJAAAAO0Gb10nhDyZTBRE8M__-nhAAAR7pvPE62klg-EeWELbziOsDOskW1Tbbi7mxuf_jai4Lu0zDh7swhCggAAAALwGf9mpCvwABKlUheNdAqsTxMrUdWx6pBM5Hxqfe0lacHrghNRVgiXLG2PNzaIuBAAAAMEGb-EnhDyZTAhn__p4QAAEVQ_NVkfehUo1maTYLCNjPxoY3kDU45UZUpKQhhTcg4QAAADVBmhlJ4Q8mUwIb__6nhAAAR7pvarYTPBtCeLQMzdiuJscf7PMAv6L4yAbdA_5H9p1ns-BLwAAAADNBmjtJ4Q8mUwURPDP__p4QAAENEHjPWHA4Zj0VhaVU2y17-ky_lFNMRQvR6fluzZXYGNEAAAAoAZ5aakK_AAEqVSFyQdWeILjYob7oCm1r0Jo3V8RK0vjBhzA3QgcCkgAAADZBmlxJ4Q8mUwIb__6nhAAARUdoCRuweRTf-x2Vj94hh4IgAqDTes7pbmsImm7-hNopfCRYVMEAAAA6QZp-SeEPJlMFETwz__6eEAABDum861QpLCJRvahWTo6I2PI9CganJJEnhCWzdBlfP2pfMX5T8mEKmQAAADwBnp1qQr8AASpVIXJKuFVKwAeWWbQj-8jtvv9MpHyquee8iHvdIhZNxj8iybbAqCNeVAh4gQHhkljdkasAAAAxQZqfSeEPJlMCGf_-nhAAAQUPVfWGUWY9FYWlVNste_pMv5RTTEUL0eNZuy-Rn6yQcAAAAEhBmqBJ4Q8mUwIb__6nhAAAQ7pvasjeMy-YRACCDDVG5fGAhb9qxuRexEUnu0cfcE6RDv5aMKZSzD28tx5G29w18UBikvPiSXkAAAAxQZrCSeEPJlMFETwz__6eEAAA_XqV-tIwxqCeoqKUBktf2LAOrcrD485M1j2915rHpAAAACcBnuFqQr8AASpVIWzeLHcmlUVTqfXgP6QviHAv05YDpDtWwvLIGhEAAAA3QZrjSeEPJlMCG__-p4QAAEFHaAkbsHkU3_sdlLxaQxZQLUKFK1ZTsoWI9as3_Qo8BkQwFtJJuAAAAD1BmwVJ4Q8mUwURPDP__p4QAAD-8JzxOtpJYoOOcLCGVazEKFmMA_Dsn8b9-J7xc_JTjTorlCvyWpNS8N-BAAAALwGfJGpCvwABKlUhbMrOVWJ4mVqOrY9Ugmcj41PvaStOD1wQmoqwRLdoXwkuMjfhAAAAMUGbJknhDyZTAhn__p4QAAD3-f_rSMMagnqKilAZLX9iwDq3Kw-POTNY0waMcH1-FlEAAAA5QZtHSeEPJlMCG__-p4QAAD9grrAj0EXObofRYsfvEMPBEAFQab1ndLc1hE03f0JwDkwK590MZ8h5AAAAQEGbaUnhDyZTBRE8M__-nhAAAPlwnPE6rUlig37gsIZVrFqG2fFpBmyipexC2Y02Caol-0XlBXt3fPAxSpIIipgAAAAvAZ-IakK_AAEqVSFqCs5VYniZWo6tj1SCZyPjU-9pK04PXBCairBEt2hdThf4csAAAAAxQZuKSeEPJlMCGf_-nhAAAPJ5w61u9CzEsmKCe45RNF9HsHRzrwINkoZjY4gMSqm5LwAAADlBm6tJ4Q8mUwIb__6nhAAAPlwnk2gE8_jtC_1RGBDxnZuXeikUHNax8-aRiZ_ImmnU2vtT-vDAIXcAAAA6QZvNSeEPJlMFETwz__6eEAAA7PqWEPAB-AzAAw5eoHM7UaV_aI6k25K19NFpoJlW3CnGmce3uUlZBwAAACgBn-xqQr8AASpVIWSGhHX8XGxQ33QFNrXoTRur4iVpfGDDmBuhA4F3AAAAO0Gb7knhDyZTAhv__qeEAAA8qPFEJG7B44ZfObC_eF59qKYW-epO0yfYdKP7zspXZanNUgjxFms-IJFxAAAAOkGaEEnhDyZTBRE8M__-nhAAAO5wnOtQ5LCIndqFWuT5UM1-_WI2M1FjlMsWzDGyD5O76HkV3TgEMCEAAAArAZ4vakK_AAEqVSFkjfgtgLnPYGqV0SfeuTWKgxrnv0tKaQN6PrFjYCxDAgAAADJBmjFJ4Q8mUwIZ__6eEAAA56nVada3ehUyuVgFlUhD8febxs6UDVwvVJCz0YCcWUDAgAAAAD9BmlJJ4Q8mUwIb__6nhAAAO5wnkzV05bO4Zr6kmaslAzNFyGuKJ_YtrGppdLUNCCtMq2zDAuwkKbDYdwWwf4EAAAA6QZp0SeEPJlMFETwz__6eEAAA4fqWEPACS7KvJew1UrO1Glf2iOpNuStfTRaaCZVtwpxpnHt7lJWRcAAAACoBnpNqQr8AASpVIV-g5HlqHJ4KYn8K3EH9mSWqMX2V4NCVAUDEa2UYHVAAAAA5QZqVSeEPJlMCGf_-nhAAAOH5w60WklSWBZU27WeEhl_F4cjZjyILXZ3rvHIuTlEgCfYQum3ccDLhAAAAOEGat0nhDyZTBRE8K__-OEAAA3fqN-riVnNwXhKSqg0FJABRFfQyuVomrdcfiA7QVt1E62D73jlgAAAALQGe1mpCvwABKlUhX44OVWJ4l3VNCsQk-LJGysmQ89xlYakmCLN3TfdeBpC2gQAACDptb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAATiAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAHZXRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAATiAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAACgAAAAWgAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAE4gAAAQAAAEAAAAABt1tZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAADAAAADwAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAaIbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAGSHN0YmwAAACwc3RzZAAAAAAAAAABAAAAoGF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAACgAFoAEgAAABIAAAAAAAAAAEUTGF2YzYxLjMuMTAwIGxpYngyNjQAAAAAAAAAAAAAAAAY__8AAAA2YXZjQwFkAB7_4QAZZ2QAHqzZQKAv-WEAAAMAAQAAAwAwDxYtlgEABmjr48siwP34-AAAAAAUYnRydAAAAAAAADEwAAAxMAAAABhzdHRzAAAAAAAAAAEAAAB4AAACAAAAABRzdHNzAAAAAAAAAAEAAAABAAADQGN0dHMAAAAAAAAAZgAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAeAAAAAEAAAH0c3RzegAAAAAAAAAAAAAAeAAAA74AAAB6AAAAOwAAAEYAAABJAAAAMAAAADgAAABAAAAAQQAAAC0AAABAAAAARwAAADMAAAA2AAAAPgAAAEAAAAAyAAAANgAAAHcAAABDAAAALwAAAD4AAAA-AAAALwAAADQAAAA0AAAAPAAAACsAAAA-AAAAPgAAAEAAAAA3AAAATAAAADcAAAArAAAAOwAAAEAAAAAvAAAAMwAAAD0AAABCAAAALQAAAD4AAABKAAAAMwAAADYAAABBAAAAQAAAADMAAAA0AAAAOQAAADcAAAAsAAAAOwAAAEAAAAAvAAAAMwAAAEwAAAA6AAAALAAAADgAAAA9AAAALwAAADoAAAA-AAAANwAAACsAAAA7AAAAQgAAAC8AAAAzAAAAQQAAADoAAAAtAAAAMwAAAD0AAAA-AAAALAAAADkAAAA_AAAAMgAAADQAAABGAAAAPgAAAC4AAABGAAAAPwAAADMAAAA0AAAAOQAAADcAAAAsAAAAOgAAAD4AAABAAAAANQAAAEwAAAA1AAAAKwAAADsAAABBAAAAMwAAADUAAAA9AAAARAAAADMAAAA1AAAAPQAAAD4AAAAsAAAAPwAAAD4AAAAvAAAANgAAAEMAAAA-AAAALgAAAD0AAAA8AAAAMQAAABRzdGNvAAAAAAAAAAEAAAAwAAAAYXVkdGEAAABZbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAsaWxzdAAAACSpdG9vAAAAHGRhdGEAAAABAAAAAExhdmY2MS4xLjEwMA==", - "mimeType": "video/mp4"}}], "role": "user"}], "systemInstruction": {"parts": - [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour - personal goal is: Analyze and describe files accurately"}], "role": "user"}, - "generationConfig": {"stopSequences": ["\nObservation:"]}}' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - '*/*' - accept-encoding: - - ACCEPT-ENCODING-XXX - connection: - - keep-alive - content-length: - - '13807' - content-type: - - application/json - host: - - generativelanguage.googleapis.com - x-goog-api-client: - - google-genai-sdk/1.49.0 gl-python/3.13.3 - x-goog-api-key: - - X-GOOG-API-KEY-XXX - method: POST - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent - response: - body: - string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"The video shows a white square moving - across a blue background. The square starts on the left side of the screen, - moves to the center, and then moves to the right side of the screen.\\n\"\n - \ }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": - \"STOP\",\n \"avgLogprobs\": -0.12403162717819213\n }\n ],\n \"usageMetadata\": - {\n \"promptTokenCount\": 1331,\n \"candidatesTokenCount\": 40,\n \"totalTokenCount\": - 1371,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n - \ \"tokenCount\": 41\n },\n {\n \"modality\": \"VIDEO\",\n - \ \"tokenCount\": 1290\n }\n ],\n \"candidatesTokensDetails\": - [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 40\n - \ }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash\",\n \"responseId\": - \"kh-OaanAIOfTjMcP3fXBwAw\"\n}\n" - headers: - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Type: - - application/json; charset=UTF-8 - Date: - - Thu, 12 Feb 2026 18:44:38 GMT - Server: - - scaffolding on HTTPServer2 - Server-Timing: - - gfet4t7; dur=4190 - Transfer-Encoding: - - chunked - Vary: - - Origin - - X-Origin - - Referer - X-Content-Type-Options: - - X-CONTENT-TYPE-XXX - X-Frame-Options: - - X-FRAME-OPTIONS-XXX - X-XSS-Protection: - - '0' - status: - code: 200 - message: OK + code: 429 + message: Too Many Requests version: 1 diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_video_file[gemini-gemini-2.5-flash].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_video_file[gemini-gemini-2.5-flash].yaml new file mode 100644 index 000000000..19420a7a5 --- /dev/null +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalGemini.test_video_file[gemini-gemini-2.5-flash].yaml @@ -0,0 +1,151 @@ +interactions: +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What do you see in this + video?\n\nProvide your complete response:"}, {"inlineData": {"data": "AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAHsZtZGF0AAACrwYF__-r3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2NCByMzE5MSA0NjEzYWMzIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTExIGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MyBiX3B5cmFtaWQ9MiBiX2FkYXB0PTEgYl9iaWFzPTAgZGlyZWN0PTEgd2VpZ2h0Yj0xIG9wZW5fZ29wPTAgd2VpZ2h0cD0yIGtleWludD0yNTAga2V5aW50X21pbj0yNCBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAQdliIQAM__-3zL4FEXSdBJq5ZU3MJcdjcXcqxS_NYf0tBgsiAAAAwAAAwAAAwJGJfsNAqMeV-wAAAMBPABHAaIO0K6IuN4V-CW5BgA6cj9UrIMdlOMRFLwqwOXui4MmJ_Qug8cnD7OyzWd8fkO7g6v9Usn0LK3lOT2_OpGOX1OHSDEo7sSAg7TS3ifydLhdISUFGDfGxDAstID4Yt8myCwPkA13JCSfzhJNjQ3cpNpxPNbOj0cSLhXKcUAED5L9wB2mEFFxDScBi3xoU2BBfq6JBFEiek7bqFHC5eoOY7c5VJIzWsAkvkgEwgSsuGyYjoDdYCz_p7fAQcFnuyoDmAAAAwAAAwATMQAAAHZBmiJsQv_-jLAAAgJlZVdtDJMANcWoTYugEm1Az9JgfOzpsvdqsCMiibWITi5gx8foq-j-o1JH5N3dOrtkRUKF7TLkSL4XM_qNeglpYWeFo_f9Ov2ajDV7YClaV4wMyjMh8K0lxTU-oLhjOr8HS3LmurhV1DfgAAAANwGeQXkK_wAAbAC9c9AAghCV-TTPgFb3rKwALK98H9w5PtSIoTbw4T2gNCyOyZBatJqzMbVLD0kAAABCQZpDPCGTKYQr__44QAAHvxUh7N76GAVP2gG1Qdf8qJ07563ffcO4t3_mUhoqZ7exAwdcTHPco3aR1Coe8vTE6g6oAAAARUGaZUnhDyZTBTwr__44QAAHy3_9jc7e2kANEMATITEW5B8gFuybki22_NO0s8mE3SjlH-MD51Wsu06nTbtldhYK0HeDfwAAACwBnoRqQr8AASpVIKsEEJ5DHOZ5tqvMz8iiVXNIWdZKjc9QmL6YDhcXqTRSQQAAADRBmoZJ4Q8mUwIV__44QAAHkxfR34Z17X-nIvZosqVk3DPKhi5pMIrjz9cfOXitTugAEFlBAAAAPEGap0nhDyZTAhX__jhAAAeTFJeH2fGzW-iNwf7zbzyXg9vBPA8c9KWUNkwUWCFzrChUyyM3uKEuTvLBbQAAAD1BmslJ4Q8mUwURPDP__p4QAAHy4TnuGHay0IcbBMIZVrMXwWZV3kHZP4P6cY0rF3PP3HTzHRijaq-SaFBAAAAAKQGe6GpCvwABKlUh3hVwWvopQ7Y6wl4jp24qMRokq8vxImFFnYtmuQ5YAAAAPEGa6knhDyZTAhv__qeEAAB8AXiYEeglsHuUofRYsfvEMPBEAFQab1ndLc1hE03fy2KlhM5mstzjfAoPWQAAAENBmwxJ4Q8mUwURPDP__p4QAAHn4TnfPGrTN9_WoAIED37_Hdeid4lVYaskQbii-qUiUia5_Q1pWadOV4NPObs5hBdwAAAALwGfK2pCvwABKlUh2JWcqsTxMrUdWx6pBM5Hxqfe0lacHrghNRVgiXLG2PNzaFJAAAAAMkGbLUnhDyZTAhn__p4QAAHZ84daK8C3WYeftlntePbtTg-GlGkb4Og60qGpiaAaWIOBAAAAOkGbTknhDyZTAhv__qeEAAB5QV1gR6CLnN0PosWODPmvHgePIAT4FA6Fl3R8gHiu2cth4Ajm9XxyRU0AAAA8QZtwSeEPJlMFETwz__6eEAAB3OE51qhSWESje0_hzovx-uvLthCyE1TcdBmvTfPSrXHg7_wLoMd_aFTBAAAALgGfj2pCvwABKlUh0xvwqgBdvmvVjV6k9d-iccfc76S48GWv6tl0MuOfwzFRoVMAAAAyQZuRSeEPJlMCGf_-nhAAAc7zh1rd6FmJZMUE9xyiaL6PYOjnXgQbJQzh3wDoBJrkBgQAAABzQZuySeEPJlMCG__-p4QAAHc4TyXxjMACEk0tq6pWCEXq94kuCZAu87BXPaVvatodufkSaxWNEWH46wVFIWR1FU5SOAJfD2RHv1-QsYsrgrE8kucwj-cO8XPjVFhyu2leJCXVuH-55LolxrBw32Qvjpwm4QAAAD9Bm9RJ4Q8mUwURPDP__p4QAAHD9Swh4ASaWBu96JQw-k51049EdSbcla-mi00EyrbhTjTOPcEE_x0hTqDgOqAAAAArAZ_zakK_AAEqVSHJDXd7PmywZ6NBUgjltz5pHUsurfvz1gcKan2T5OWIuAAAADpBm_VJ4Q8mUwIb__6nhAAAc9dxqelT2Dxqb6AVV-8Lz85ICnqPI6nZPxdyM_hkpJ0MQcDCTa9iiwpJAAAAOkGaF0nhDyZTBRE8M__-nhAAAcbhOdalglhEfttQrJ0dEbHkehQNTkkiTwhLZugyvn7UvmL8pZzCDKgAAAArAZ42akK_AAEqVSHJG_BbAXOewNUrok-9cmsVBjXPfpaU0gb0fWLGwFiDKwAAADBBmjhJ4Q8mUwIZ__6eEAABuZ9dBEB2QqJWVgFkBiH4z8aGN5A1OOVGVKSkIbP3FTEAAAAwQZpZSeEPJlMCG__-p4QAAHG4TzUqKuc4RO-SjM3YribHH-zzAL-i-MgGoRUyAiTgAAAAOEGae0nhDyZTBRE8M__-nhAAAa9e7RY8xzhmPRWFpVTbLXv6TL-UU0xFC9Hp-hvn8YKJjC2UZMYFAAAAJwGemmpCvwABKlUhv0HI7k0qiqdT68B_SF8Q4F-nLAdIdq2F5ZAesAAAADpBmpxJ4Q8mUwIb__6nhAAAblzr0qeweRTf-x2Vj94hh4IgAqDTes7pbmsImm7-hR0pRFTCTa55LBqRAAAAOkGavknhDyZTBRE8M__-nhAAAbHhOdaoUlhEo3tQrJ0dEbHkehQNTkkiTwhLZugyvn7Uvo6-U_JhBqUAAAA8AZ7dakK_AAEqVSG_G_CqlYAPLLNoR_eR233-mUj5VXPPeRD3ukQsm4x-RZNtgVBGvKgQ8QIDwySxuyIWAAAAM0Ga30nhDyZTAhn__p4QAAGlXYVjy8FmPRWFpVTbLXv6TL-UU0xFC9HjQUnQ6qCtToUUEAAAAEhBmuBJ4Q8mUwIb__6nhAAAbHhPNUbEdl8wiAEEGGqNy-MBC37Vjci9iIpPdo4-4J0iHfy0YUylmHt5bjyNt7hr4oDFJefEjAkAAAAzQZsCSeEPJlMFETwz__6eEAABm17tFj5hjUE9RUUoDJa_sWAdW5WHx5yZrHuA0Y4Pr8GzAAAAJwGfIWpCvwABKlUhtUHI7k0qiqdT68B_SF8Q4F-nLAdIdq2F5ZAgYQAAADdBmyNJ4Q8mUwIb__6nhAAAaVzr0qeweRTf-x2UvFpDFlAtQoUrVlOyhYj1qzf9CjwGRDAW0kYsAAAAPEGbRUnhDyZTBRE8M__-nhAAAZ3hOeJ1tJLFBxzhYQyrWYhQsxgH4dk_jfvxPeLn5KcadFcoV-S1JqXhGwAAACsBn2RqQr8AASpVIbUb8FsBc57A1SuiT71yaxUGNc9-lpTSBvR9YsbAWIN7AAAAL0GbZknhDyZTAhn__p4QAAGRXexY-YY1BPUVFKAyWv7FgHVuVh8ecmaxpbrzWKCBAAAAOUGbh0nhDyZTAhv__qeEAABm3OvSp7B5FN_7HZWP3iGHgiACoNN6zuluawiabv6E4ByYFc-6GM-K2QAAAD5Bm6lJ4Q8mUwURPDP__p4QAAGT4TnidVqSxQb9wWEMq1i1DbPi0gzZRUvYhbMabBNUS_aLygr20Gh-cog44AAAACkBn8hqQr8AASpVIbBFFFr6KUO2OsJeI6duKjEaJKvL8SJhRZ2LZrkSMAAAADpBm8pJ4Q8mUwIb__6nhAAAZF0ClKnsIAPfG_9jsrH7xDDwRABUGm9Z3S3NYRNN38ts5pyl7PZURiVhAAAARkGb7EnhDyZTBRE8M__-nhAAAYnhOd88atM339agAgQPfwZFuuxS8SqsNWSINxRfVKRKRNc_oa0rNOnK8GncHy7eOzsGi7gAAAAvAZ4LakK_AAEqVSGrxUCqxPEytR1bHqkEzkfGp97SVpweuCE1FWCJbtC-ElxkSsAAAAAyQZoNSeEPJlMCGf_-nhAAAX1dhWPLwLdZh5-2We149u1OD4aUaRvg6DrSoamJoBpYqYEAAAA9QZouSeEPJlMCG__-p4QAAGHc69KnsHkU3_sdlY4M-a8eB48gBPgUDoWXdHyAeK7Z5CckIJol-vGY2cwPWQAAADxBmlBJ4Q8mUwURPDP__p4QAAF_4TnWqFJYRKN7UKydF-P118GyR7vNgsykiIVZ_whhSOUvl2jqeP6l4TMAAAAvAZ5vakK_AAEqVSGnRRSqAF2-a9WNqJHD4kNfhoFHm0rvXJyzIrRtZVGR_L-yJmAAAAAwQZpxSeEPJlMCGf_-nhAAAXOthWR96FmJZMUE9xyiaL6PYOjnXgQbJQ-0OwhR-4yoAAAANUGakknhDyZTAhv__qeEAABf-E81KirnOETvkozN2K4mxx_s8wC_ovjIBuVdaKOUcphiXB6RAAAAM0GatEnhDyZTBRE8M__-nhAAAWqu7RY8xzhmPRWFpVTbLXv6TL-UU0xFC9Hp-W7NldgSsAAAACgBntNqQr8AASpVIZ44ZVjYuNihvugKbWvQmjdXxErS-MGHMDdCBwHpAAAAN0Ga1UnhDyZTAhv__qeEAABdABiHSp7B-G6CQgJmULgNHICf_pSiW5_C4aGpAb36eRQfXbMkb0EAAAA8QZr3SeEPJlMFETwz__6eEAABbOZc61LBLCI_bahWTo6I2PI9CganJJEnhCWzdBl6CJsvYsN-cd8O8KGAAAAAKwGfFmpCvwABKlUhnkUUWwFznsDVK6JPvXJrFQY1z36WlNIG9H1ixsBYg-cAAAAvQZsYSeEPJlMCGf_-nhAAAWGthWPLwWY9FYWlVNste_pMv5RTTEUL0eNO6QPYEzEAAABIQZs5SeEPJlMCG__-p4QAAFs5l2rI3jMvmEQAggw1RuXxgIW_asbkXsRFJ7tHH3BOkQ7-WjCmUsw9vKcYz94b7qaLdp8-JHHAAAAANkGbW0nhDyZTBRE8M__-nhAAAViu7RY-YY1BPUVFKAyWv7FgHVuVh8ecmax7gNJFfBSa_1-D_QAAACgBn3pqQr8AASpVIZU4ZVjYuNihvugKbWvQmjdXxErS-MGHMDdCBwH-AAAANEGbfEnhDyZTAhv__qeEAABYgBiHSp7B-G6CQgJmDFNvc78e6iaC9ubCNOGo7x9-oeZI6YEAAAA5QZueSeEPJlMFETwz__6eEAABWuZc61DksIid2oVkxNEbHkehQNTkkiTwhLZugyvn7UvmL8otMIQdAAAAKwGfvWpCvwABKlUhlUUUWwFznsDVK6JPvXJrFQY1z36WlNIG9H1ixsBYhBwAAAA2QZu_SeEPJlMCGf_-nhAAAU-t7Fj7VOAsx6KwtKqbZa9_SZfyimmIoXo8-lAOh1UKsvyJiEHAAAAAOkGbwEnhDyZTAhv__qeEAABWuZdqyN41DSjX33rYP3PwUbMHUj1GaXJmcCxaQl3M8UOoH8Vwb52Swh8AAAAzQZviSeEPJlMFETwz__6eEAABRq7tFj5hjUE9RUUoDJa_sWAdW5WHx5yZrHuA0Y4Pr8IeAAAAJwGeAWpCvwABKlUhjPQkm4q-jy_0K8B_SF8Q4F-nLAdIdq2F5ZApoQAAADdBmgNJ4Q8mUwIb__6nhAAAU_Dr0qeweRTf-x2Vj94hh4IgAqDTes7pbmsImm7-hR4DIhgLaSPSAAAAPkGaJUnhDyZTBRE8M__-nhAAAUjmXPE62klig45wsIZVrFqG2fFpBmyipexC2Y02Caol-0XlBYroNFJ5RCLhAAAAKwGeRGpCvwABKlUhjNcUWwFznsDVK6JPvXJrFQY1z36WlNIG9H1ixsBYhF0AAAAvQZpGSeEPJlMCGf_-nhAAAT2thWPLwWY9FYWlVNste_pMv5RTTEUL0eNO6QPYFVEAAAA9QZpnSeEPJlMCG__-p4QAAFGxApSp7B5IZf-x2Vj94hh4IgAqDTes7pbmsImm7-o30WLTBIGNXbenlaQYEQAAADZBmolJ4Q8mUwURPDP__p4QAAE_5lzvnjVppjrYWELZoSJb4EGdOlpVpVCAd83rD8D4KmV4XEAAAAApAZ6oakK_AAEqVSGI1xRa-ilDtjrCXiOnbioxGiSry_EiYUWdi2a5FxAAAAAvQZqqSeEPJlMCGf_-nhAAATUPVfYeZ1fcpg6oIp1RNF9HsHRzrwINkoZjY1dwK-EAAAA5QZrLSeEPJlMCG__-p4QAAE_5l2CWlGxI7Qv9URgQ8Z2bl3opFBzWsfPmkYmfyJpp1Nr7U_rwwCEnAAAAOkGa7UnhDyZTBRE8M__-nhAAAS0QePJAA0IWKAYcvUDmdqNK_tEdSbcla-mi00EyrbhTjTOPb3KSsakAAAAoAZ8MakK_AAEqVSGAymVY2LjYob7oCm1r0Jo3V8RK0vjBhzA3QgcCTwAAADVBmw5J4Q8mUwIb__6nhAAATVL0h0qeweOGXzmwv3hefaimFvnqTtMn2HSj-87KV2QLGeBBwQAAADtBmzBJ4Q8mUwURPDP__p4QAAEu6b0BVHbWWdBGwHUXcfuMX1lLSAJkgzztHdty4eDNZzkvYGYA_-tEHQAAAC4Bn09qQr8AASpVIYDXQKrE8TK1oSv6cjDVX5BQ5Tz87qfv645wRKec9b5M-GDAAAAAMEGbUUnhDyZTAhn__p4QAAElD1X2HmdX3KYOqCKdUTRfR7B0c68CDZKH2h2EHU3HzAAAAEJBm3JJ4Q8mUwIb__6nhAAAS7pvYJaUbEjtC_1REjmDOzWlH0vriihLwS7_Wg6WqjSHH-dtmW0P-yXmCMKpBj04ekEAAAA6QZuUSeEPJlMFETwz__6eEAABHRB48kADxqVeS9hqpWdqNK_tEdSbcla-mi00EyrbhTjTOPb3KSsb0AAAACoBn7NqQr8AASpVIXj0JJ94OTwUxP4VuIP7MktUYvsrwaEqAoGI1sowLyAAAABCQZu1SeEPJlMCG__-p4QAAElHZ9BurzyP93oBj26WaMeFpmb0JH1IzjvtOv2x1rFhY4cPfgBVh-oL6pG7LpKwkwoJAAAAO0Gb10nhDyZTBRE8M__-nhAAAR7pvPE62klg-EeWELbziOsDOskW1Tbbi7mxuf_jai4Lu0zDh7swhCggAAAALwGf9mpCvwABKlUheNdAqsTxMrUdWx6pBM5Hxqfe0lacHrghNRVgiXLG2PNzaIuBAAAAMEGb-EnhDyZTAhn__p4QAAEVQ_NVkfehUo1maTYLCNjPxoY3kDU45UZUpKQhhTcg4QAAADVBmhlJ4Q8mUwIb__6nhAAAR7pvarYTPBtCeLQMzdiuJscf7PMAv6L4yAbdA_5H9p1ns-BLwAAAADNBmjtJ4Q8mUwURPDP__p4QAAENEHjPWHA4Zj0VhaVU2y17-ky_lFNMRQvR6fluzZXYGNEAAAAoAZ5aakK_AAEqVSFyQdWeILjYob7oCm1r0Jo3V8RK0vjBhzA3QgcCkgAAADZBmlxJ4Q8mUwIb__6nhAAARUdoCRuweRTf-x2Vj94hh4IgAqDTes7pbmsImm7-hNopfCRYVMEAAAA6QZp-SeEPJlMFETwz__6eEAABDum861QpLCJRvahWTo6I2PI9CganJJEnhCWzdBlfP2pfMX5T8mEKmQAAADwBnp1qQr8AASpVIXJKuFVKwAeWWbQj-8jtvv9MpHyquee8iHvdIhZNxj8iybbAqCNeVAh4gQHhkljdkasAAAAxQZqfSeEPJlMCGf_-nhAAAQUPVfWGUWY9FYWlVNste_pMv5RTTEUL0eNZuy-Rn6yQcAAAAEhBmqBJ4Q8mUwIb__6nhAAAQ7pvasjeMy-YRACCDDVG5fGAhb9qxuRexEUnu0cfcE6RDv5aMKZSzD28tx5G29w18UBikvPiSXkAAAAxQZrCSeEPJlMFETwz__6eEAAA_XqV-tIwxqCeoqKUBktf2LAOrcrD485M1j2915rHpAAAACcBnuFqQr8AASpVIWzeLHcmlUVTqfXgP6QviHAv05YDpDtWwvLIGhEAAAA3QZrjSeEPJlMCG__-p4QAAEFHaAkbsHkU3_sdlLxaQxZQLUKFK1ZTsoWI9as3_Qo8BkQwFtJJuAAAAD1BmwVJ4Q8mUwURPDP__p4QAAD-8JzxOtpJYoOOcLCGVazEKFmMA_Dsn8b9-J7xc_JTjTorlCvyWpNS8N-BAAAALwGfJGpCvwABKlUhbMrOVWJ4mVqOrY9Ugmcj41PvaStOD1wQmoqwRLdoXwkuMjfhAAAAMUGbJknhDyZTAhn__p4QAAD3-f_rSMMagnqKilAZLX9iwDq3Kw-POTNY0waMcH1-FlEAAAA5QZtHSeEPJlMCG__-p4QAAD9grrAj0EXObofRYsfvEMPBEAFQab1ndLc1hE03f0JwDkwK590MZ8h5AAAAQEGbaUnhDyZTBRE8M__-nhAAAPlwnPE6rUlig37gsIZVrFqG2fFpBmyipexC2Y02Caol-0XlBXt3fPAxSpIIipgAAAAvAZ-IakK_AAEqVSFqCs5VYniZWo6tj1SCZyPjU-9pK04PXBCairBEt2hdThf4csAAAAAxQZuKSeEPJlMCGf_-nhAAAPJ5w61u9CzEsmKCe45RNF9HsHRzrwINkoZjY4gMSqm5LwAAADlBm6tJ4Q8mUwIb__6nhAAAPlwnk2gE8_jtC_1RGBDxnZuXeikUHNax8-aRiZ_ImmnU2vtT-vDAIXcAAAA6QZvNSeEPJlMFETwz__6eEAAA7PqWEPAB-AzAAw5eoHM7UaV_aI6k25K19NFpoJlW3CnGmce3uUlZBwAAACgBn-xqQr8AASpVIWSGhHX8XGxQ33QFNrXoTRur4iVpfGDDmBuhA4F3AAAAO0Gb7knhDyZTAhv__qeEAAA8qPFEJG7B44ZfObC_eF59qKYW-epO0yfYdKP7zspXZanNUgjxFms-IJFxAAAAOkGaEEnhDyZTBRE8M__-nhAAAO5wnOtQ5LCIndqFWuT5UM1-_WI2M1FjlMsWzDGyD5O76HkV3TgEMCEAAAArAZ4vakK_AAEqVSFkjfgtgLnPYGqV0SfeuTWKgxrnv0tKaQN6PrFjYCxDAgAAADJBmjFJ4Q8mUwIZ__6eEAAA56nVada3ehUyuVgFlUhD8febxs6UDVwvVJCz0YCcWUDAgAAAAD9BmlJJ4Q8mUwIb__6nhAAAO5wnkzV05bO4Zr6kmaslAzNFyGuKJ_YtrGppdLUNCCtMq2zDAuwkKbDYdwWwf4EAAAA6QZp0SeEPJlMFETwz__6eEAAA4fqWEPACS7KvJew1UrO1Glf2iOpNuStfTRaaCZVtwpxpnHt7lJWRcAAAACoBnpNqQr8AASpVIV-g5HlqHJ4KYn8K3EH9mSWqMX2V4NCVAUDEa2UYHVAAAAA5QZqVSeEPJlMCGf_-nhAAAOH5w60WklSWBZU27WeEhl_F4cjZjyILXZ3rvHIuTlEgCfYQum3ccDLhAAAAOEGat0nhDyZTBRE8K__-OEAAA3fqN-riVnNwXhKSqg0FJABRFfQyuVomrdcfiA7QVt1E62D73jlgAAAALQGe1mpCvwABKlUhX44OVWJ4l3VNCsQk-LJGysmQ89xlYakmCLN3TfdeBpC2gQAACDptb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAATiAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAHZXRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAATiAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAACgAAAAWgAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAE4gAAAQAAAEAAAAABt1tZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAADAAAADwAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAaIbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAGSHN0YmwAAACwc3RzZAAAAAAAAAABAAAAoGF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAACgAFoAEgAAABIAAAAAAAAAAEUTGF2YzYxLjMuMTAwIGxpYngyNjQAAAAAAAAAAAAAAAAY__8AAAA2YXZjQwFkAB7_4QAZZ2QAHqzZQKAv-WEAAAMAAQAAAwAwDxYtlgEABmjr48siwP34-AAAAAAUYnRydAAAAAAAADEwAAAxMAAAABhzdHRzAAAAAAAAAAEAAAB4AAACAAAAABRzdHNzAAAAAAAAAAEAAAABAAADQGN0dHMAAAAAAAAAZgAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAeAAAAAEAAAH0c3RzegAAAAAAAAAAAAAAeAAAA74AAAB6AAAAOwAAAEYAAABJAAAAMAAAADgAAABAAAAAQQAAAC0AAABAAAAARwAAADMAAAA2AAAAPgAAAEAAAAAyAAAANgAAAHcAAABDAAAALwAAAD4AAAA-AAAALwAAADQAAAA0AAAAPAAAACsAAAA-AAAAPgAAAEAAAAA3AAAATAAAADcAAAArAAAAOwAAAEAAAAAvAAAAMwAAAD0AAABCAAAALQAAAD4AAABKAAAAMwAAADYAAABBAAAAQAAAADMAAAA0AAAAOQAAADcAAAAsAAAAOwAAAEAAAAAvAAAAMwAAAEwAAAA6AAAALAAAADgAAAA9AAAALwAAADoAAAA-AAAANwAAACsAAAA7AAAAQgAAAC8AAAAzAAAAQQAAADoAAAAtAAAAMwAAAD0AAAA-AAAALAAAADkAAAA_AAAAMgAAADQAAABGAAAAPgAAAC4AAABGAAAAPwAAADMAAAA0AAAAOQAAADcAAAAsAAAAOgAAAD4AAABAAAAANQAAAEwAAAA1AAAAKwAAADsAAABBAAAAMwAAADUAAAA9AAAARAAAADMAAAA1AAAAPQAAAD4AAAAsAAAAPwAAAD4AAAAvAAAANgAAAEMAAAA-AAAALgAAAD0AAAA8AAAAMQAAABRzdGNvAAAAAAAAAAEAAAAwAAAAYXVkdGEAAABZbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAsaWxzdAAAACSpdG9vAAAAHGRhdGEAAAABAAAAAExhdmY2MS4xLjEwMA==", + "mimeType": "video/mp4"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '13807' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"This video features a simple animation:\\n\\n* + \ The background is a solid, bright blue color.\\n* A white, vertically + oriented rectangular shape moves smoothly across the screen.\\n* The rectangle + starts on the left side of the blue background, moves towards the center, + and then continues moving towards the right side of the screen until the video + ends.\"\n }\n ],\n \"role\": \"model\"\n },\n + \ \"finishReason\": \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": + {\n \"promptTokenCount\": 1518,\n \"candidatesTokenCount\": 72,\n \"totalTokenCount\": + 1787,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 43\n },\n {\n \"modality\": \"VIDEO\",\n + \ \"tokenCount\": 1315\n },\n {\n \"modality\": \"AUDIO\",\n + \ \"tokenCount\": 160\n }\n ],\n \"thoughtsTokenCount\": + 197\n },\n \"modelVersion\": \"gemini-2.5-flash\",\n \"responseId\": \"RkqOaceVIpG9_uMPiqjg8As\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:46 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=3186 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: What do you see in this + video?\n\nProvide your complete response:"}, {"inlineData": {"data": "AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAHsZtZGF0AAACrwYF__-r3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2NCByMzE5MSA0NjEzYWMzIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTExIGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MyBiX3B5cmFtaWQ9MiBiX2FkYXB0PTEgYl9iaWFzPTAgZGlyZWN0PTEgd2VpZ2h0Yj0xIG9wZW5fZ29wPTAgd2VpZ2h0cD0yIGtleWludD0yNTAga2V5aW50X21pbj0yNCBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAQdliIQAM__-3zL4FEXSdBJq5ZU3MJcdjcXcqxS_NYf0tBgsiAAAAwAAAwAAAwJGJfsNAqMeV-wAAAMBPABHAaIO0K6IuN4V-CW5BgA6cj9UrIMdlOMRFLwqwOXui4MmJ_Qug8cnD7OyzWd8fkO7g6v9Usn0LK3lOT2_OpGOX1OHSDEo7sSAg7TS3ifydLhdISUFGDfGxDAstID4Yt8myCwPkA13JCSfzhJNjQ3cpNpxPNbOj0cSLhXKcUAED5L9wB2mEFFxDScBi3xoU2BBfq6JBFEiek7bqFHC5eoOY7c5VJIzWsAkvkgEwgSsuGyYjoDdYCz_p7fAQcFnuyoDmAAAAwAAAwATMQAAAHZBmiJsQv_-jLAAAgJlZVdtDJMANcWoTYugEm1Az9JgfOzpsvdqsCMiibWITi5gx8foq-j-o1JH5N3dOrtkRUKF7TLkSL4XM_qNeglpYWeFo_f9Ov2ajDV7YClaV4wMyjMh8K0lxTU-oLhjOr8HS3LmurhV1DfgAAAANwGeQXkK_wAAbAC9c9AAghCV-TTPgFb3rKwALK98H9w5PtSIoTbw4T2gNCyOyZBatJqzMbVLD0kAAABCQZpDPCGTKYQr__44QAAHvxUh7N76GAVP2gG1Qdf8qJ07563ffcO4t3_mUhoqZ7exAwdcTHPco3aR1Coe8vTE6g6oAAAARUGaZUnhDyZTBTwr__44QAAHy3_9jc7e2kANEMATITEW5B8gFuybki22_NO0s8mE3SjlH-MD51Wsu06nTbtldhYK0HeDfwAAACwBnoRqQr8AASpVIKsEEJ5DHOZ5tqvMz8iiVXNIWdZKjc9QmL6YDhcXqTRSQQAAADRBmoZJ4Q8mUwIV__44QAAHkxfR34Z17X-nIvZosqVk3DPKhi5pMIrjz9cfOXitTugAEFlBAAAAPEGap0nhDyZTAhX__jhAAAeTFJeH2fGzW-iNwf7zbzyXg9vBPA8c9KWUNkwUWCFzrChUyyM3uKEuTvLBbQAAAD1BmslJ4Q8mUwURPDP__p4QAAHy4TnuGHay0IcbBMIZVrMXwWZV3kHZP4P6cY0rF3PP3HTzHRijaq-SaFBAAAAAKQGe6GpCvwABKlUh3hVwWvopQ7Y6wl4jp24qMRokq8vxImFFnYtmuQ5YAAAAPEGa6knhDyZTAhv__qeEAAB8AXiYEeglsHuUofRYsfvEMPBEAFQab1ndLc1hE03fy2KlhM5mstzjfAoPWQAAAENBmwxJ4Q8mUwURPDP__p4QAAHn4TnfPGrTN9_WoAIED37_Hdeid4lVYaskQbii-qUiUia5_Q1pWadOV4NPObs5hBdwAAAALwGfK2pCvwABKlUh2JWcqsTxMrUdWx6pBM5Hxqfe0lacHrghNRVgiXLG2PNzaFJAAAAAMkGbLUnhDyZTAhn__p4QAAHZ84daK8C3WYeftlntePbtTg-GlGkb4Og60qGpiaAaWIOBAAAAOkGbTknhDyZTAhv__qeEAAB5QV1gR6CLnN0PosWODPmvHgePIAT4FA6Fl3R8gHiu2cth4Ajm9XxyRU0AAAA8QZtwSeEPJlMFETwz__6eEAAB3OE51qhSWESje0_hzovx-uvLthCyE1TcdBmvTfPSrXHg7_wLoMd_aFTBAAAALgGfj2pCvwABKlUh0xvwqgBdvmvVjV6k9d-iccfc76S48GWv6tl0MuOfwzFRoVMAAAAyQZuRSeEPJlMCGf_-nhAAAc7zh1rd6FmJZMUE9xyiaL6PYOjnXgQbJQzh3wDoBJrkBgQAAABzQZuySeEPJlMCG__-p4QAAHc4TyXxjMACEk0tq6pWCEXq94kuCZAu87BXPaVvatodufkSaxWNEWH46wVFIWR1FU5SOAJfD2RHv1-QsYsrgrE8kucwj-cO8XPjVFhyu2leJCXVuH-55LolxrBw32Qvjpwm4QAAAD9Bm9RJ4Q8mUwURPDP__p4QAAHD9Swh4ASaWBu96JQw-k51049EdSbcla-mi00EyrbhTjTOPcEE_x0hTqDgOqAAAAArAZ_zakK_AAEqVSHJDXd7PmywZ6NBUgjltz5pHUsurfvz1gcKan2T5OWIuAAAADpBm_VJ4Q8mUwIb__6nhAAAc9dxqelT2Dxqb6AVV-8Lz85ICnqPI6nZPxdyM_hkpJ0MQcDCTa9iiwpJAAAAOkGaF0nhDyZTBRE8M__-nhAAAcbhOdalglhEfttQrJ0dEbHkehQNTkkiTwhLZugyvn7UvmL8pZzCDKgAAAArAZ42akK_AAEqVSHJG_BbAXOewNUrok-9cmsVBjXPfpaU0gb0fWLGwFiDKwAAADBBmjhJ4Q8mUwIZ__6eEAABuZ9dBEB2QqJWVgFkBiH4z8aGN5A1OOVGVKSkIbP3FTEAAAAwQZpZSeEPJlMCG__-p4QAAHG4TzUqKuc4RO-SjM3YribHH-zzAL-i-MgGoRUyAiTgAAAAOEGae0nhDyZTBRE8M__-nhAAAa9e7RY8xzhmPRWFpVTbLXv6TL-UU0xFC9Hp-hvn8YKJjC2UZMYFAAAAJwGemmpCvwABKlUhv0HI7k0qiqdT68B_SF8Q4F-nLAdIdq2F5ZAesAAAADpBmpxJ4Q8mUwIb__6nhAAAblzr0qeweRTf-x2Vj94hh4IgAqDTes7pbmsImm7-hR0pRFTCTa55LBqRAAAAOkGavknhDyZTBRE8M__-nhAAAbHhOdaoUlhEo3tQrJ0dEbHkehQNTkkiTwhLZugyvn7Uvo6-U_JhBqUAAAA8AZ7dakK_AAEqVSG_G_CqlYAPLLNoR_eR233-mUj5VXPPeRD3ukQsm4x-RZNtgVBGvKgQ8QIDwySxuyIWAAAAM0Ga30nhDyZTAhn__p4QAAGlXYVjy8FmPRWFpVTbLXv6TL-UU0xFC9HjQUnQ6qCtToUUEAAAAEhBmuBJ4Q8mUwIb__6nhAAAbHhPNUbEdl8wiAEEGGqNy-MBC37Vjci9iIpPdo4-4J0iHfy0YUylmHt5bjyNt7hr4oDFJefEjAkAAAAzQZsCSeEPJlMFETwz__6eEAABm17tFj5hjUE9RUUoDJa_sWAdW5WHx5yZrHuA0Y4Pr8GzAAAAJwGfIWpCvwABKlUhtUHI7k0qiqdT68B_SF8Q4F-nLAdIdq2F5ZAgYQAAADdBmyNJ4Q8mUwIb__6nhAAAaVzr0qeweRTf-x2UvFpDFlAtQoUrVlOyhYj1qzf9CjwGRDAW0kYsAAAAPEGbRUnhDyZTBRE8M__-nhAAAZ3hOeJ1tJLFBxzhYQyrWYhQsxgH4dk_jfvxPeLn5KcadFcoV-S1JqXhGwAAACsBn2RqQr8AASpVIbUb8FsBc57A1SuiT71yaxUGNc9-lpTSBvR9YsbAWIN7AAAAL0GbZknhDyZTAhn__p4QAAGRXexY-YY1BPUVFKAyWv7FgHVuVh8ecmaxpbrzWKCBAAAAOUGbh0nhDyZTAhv__qeEAABm3OvSp7B5FN_7HZWP3iGHgiACoNN6zuluawiabv6E4ByYFc-6GM-K2QAAAD5Bm6lJ4Q8mUwURPDP__p4QAAGT4TnidVqSxQb9wWEMq1i1DbPi0gzZRUvYhbMabBNUS_aLygr20Gh-cog44AAAACkBn8hqQr8AASpVIbBFFFr6KUO2OsJeI6duKjEaJKvL8SJhRZ2LZrkSMAAAADpBm8pJ4Q8mUwIb__6nhAAAZF0ClKnsIAPfG_9jsrH7xDDwRABUGm9Z3S3NYRNN38ts5pyl7PZURiVhAAAARkGb7EnhDyZTBRE8M__-nhAAAYnhOd88atM339agAgQPfwZFuuxS8SqsNWSINxRfVKRKRNc_oa0rNOnK8GncHy7eOzsGi7gAAAAvAZ4LakK_AAEqVSGrxUCqxPEytR1bHqkEzkfGp97SVpweuCE1FWCJbtC-ElxkSsAAAAAyQZoNSeEPJlMCGf_-nhAAAX1dhWPLwLdZh5-2We149u1OD4aUaRvg6DrSoamJoBpYqYEAAAA9QZouSeEPJlMCG__-p4QAAGHc69KnsHkU3_sdlY4M-a8eB48gBPgUDoWXdHyAeK7Z5CckIJol-vGY2cwPWQAAADxBmlBJ4Q8mUwURPDP__p4QAAF_4TnWqFJYRKN7UKydF-P118GyR7vNgsykiIVZ_whhSOUvl2jqeP6l4TMAAAAvAZ5vakK_AAEqVSGnRRSqAF2-a9WNqJHD4kNfhoFHm0rvXJyzIrRtZVGR_L-yJmAAAAAwQZpxSeEPJlMCGf_-nhAAAXOthWR96FmJZMUE9xyiaL6PYOjnXgQbJQ-0OwhR-4yoAAAANUGakknhDyZTAhv__qeEAABf-E81KirnOETvkozN2K4mxx_s8wC_ovjIBuVdaKOUcphiXB6RAAAAM0GatEnhDyZTBRE8M__-nhAAAWqu7RY8xzhmPRWFpVTbLXv6TL-UU0xFC9Hp-W7NldgSsAAAACgBntNqQr8AASpVIZ44ZVjYuNihvugKbWvQmjdXxErS-MGHMDdCBwHpAAAAN0Ga1UnhDyZTAhv__qeEAABdABiHSp7B-G6CQgJmULgNHICf_pSiW5_C4aGpAb36eRQfXbMkb0EAAAA8QZr3SeEPJlMFETwz__6eEAABbOZc61LBLCI_bahWTo6I2PI9CganJJEnhCWzdBl6CJsvYsN-cd8O8KGAAAAAKwGfFmpCvwABKlUhnkUUWwFznsDVK6JPvXJrFQY1z36WlNIG9H1ixsBYg-cAAAAvQZsYSeEPJlMCGf_-nhAAAWGthWPLwWY9FYWlVNste_pMv5RTTEUL0eNO6QPYEzEAAABIQZs5SeEPJlMCG__-p4QAAFs5l2rI3jMvmEQAggw1RuXxgIW_asbkXsRFJ7tHH3BOkQ7-WjCmUsw9vKcYz94b7qaLdp8-JHHAAAAANkGbW0nhDyZTBRE8M__-nhAAAViu7RY-YY1BPUVFKAyWv7FgHVuVh8ecmax7gNJFfBSa_1-D_QAAACgBn3pqQr8AASpVIZU4ZVjYuNihvugKbWvQmjdXxErS-MGHMDdCBwH-AAAANEGbfEnhDyZTAhv__qeEAABYgBiHSp7B-G6CQgJmDFNvc78e6iaC9ubCNOGo7x9-oeZI6YEAAAA5QZueSeEPJlMFETwz__6eEAABWuZc61DksIid2oVkxNEbHkehQNTkkiTwhLZugyvn7UvmL8otMIQdAAAAKwGfvWpCvwABKlUhlUUUWwFznsDVK6JPvXJrFQY1z36WlNIG9H1ixsBYhBwAAAA2QZu_SeEPJlMCGf_-nhAAAU-t7Fj7VOAsx6KwtKqbZa9_SZfyimmIoXo8-lAOh1UKsvyJiEHAAAAAOkGbwEnhDyZTAhv__qeEAABWuZdqyN41DSjX33rYP3PwUbMHUj1GaXJmcCxaQl3M8UOoH8Vwb52Swh8AAAAzQZviSeEPJlMFETwz__6eEAABRq7tFj5hjUE9RUUoDJa_sWAdW5WHx5yZrHuA0Y4Pr8IeAAAAJwGeAWpCvwABKlUhjPQkm4q-jy_0K8B_SF8Q4F-nLAdIdq2F5ZApoQAAADdBmgNJ4Q8mUwIb__6nhAAAU_Dr0qeweRTf-x2Vj94hh4IgAqDTes7pbmsImm7-hR4DIhgLaSPSAAAAPkGaJUnhDyZTBRE8M__-nhAAAUjmXPE62klig45wsIZVrFqG2fFpBmyipexC2Y02Caol-0XlBYroNFJ5RCLhAAAAKwGeRGpCvwABKlUhjNcUWwFznsDVK6JPvXJrFQY1z36WlNIG9H1ixsBYhF0AAAAvQZpGSeEPJlMCGf_-nhAAAT2thWPLwWY9FYWlVNste_pMv5RTTEUL0eNO6QPYFVEAAAA9QZpnSeEPJlMCG__-p4QAAFGxApSp7B5IZf-x2Vj94hh4IgAqDTes7pbmsImm7-o30WLTBIGNXbenlaQYEQAAADZBmolJ4Q8mUwURPDP__p4QAAE_5lzvnjVppjrYWELZoSJb4EGdOlpVpVCAd83rD8D4KmV4XEAAAAApAZ6oakK_AAEqVSGI1xRa-ilDtjrCXiOnbioxGiSry_EiYUWdi2a5FxAAAAAvQZqqSeEPJlMCGf_-nhAAATUPVfYeZ1fcpg6oIp1RNF9HsHRzrwINkoZjY1dwK-EAAAA5QZrLSeEPJlMCG__-p4QAAE_5l2CWlGxI7Qv9URgQ8Z2bl3opFBzWsfPmkYmfyJpp1Nr7U_rwwCEnAAAAOkGa7UnhDyZTBRE8M__-nhAAAS0QePJAA0IWKAYcvUDmdqNK_tEdSbcla-mi00EyrbhTjTOPb3KSsakAAAAoAZ8MakK_AAEqVSGAymVY2LjYob7oCm1r0Jo3V8RK0vjBhzA3QgcCTwAAADVBmw5J4Q8mUwIb__6nhAAATVL0h0qeweOGXzmwv3hefaimFvnqTtMn2HSj-87KV2QLGeBBwQAAADtBmzBJ4Q8mUwURPDP__p4QAAEu6b0BVHbWWdBGwHUXcfuMX1lLSAJkgzztHdty4eDNZzkvYGYA_-tEHQAAAC4Bn09qQr8AASpVIYDXQKrE8TK1oSv6cjDVX5BQ5Tz87qfv645wRKec9b5M-GDAAAAAMEGbUUnhDyZTAhn__p4QAAElD1X2HmdX3KYOqCKdUTRfR7B0c68CDZKH2h2EHU3HzAAAAEJBm3JJ4Q8mUwIb__6nhAAAS7pvYJaUbEjtC_1REjmDOzWlH0vriihLwS7_Wg6WqjSHH-dtmW0P-yXmCMKpBj04ekEAAAA6QZuUSeEPJlMFETwz__6eEAABHRB48kADxqVeS9hqpWdqNK_tEdSbcla-mi00EyrbhTjTOPb3KSsb0AAAACoBn7NqQr8AASpVIXj0JJ94OTwUxP4VuIP7MktUYvsrwaEqAoGI1sowLyAAAABCQZu1SeEPJlMCG__-p4QAAElHZ9BurzyP93oBj26WaMeFpmb0JH1IzjvtOv2x1rFhY4cPfgBVh-oL6pG7LpKwkwoJAAAAO0Gb10nhDyZTBRE8M__-nhAAAR7pvPE62klg-EeWELbziOsDOskW1Tbbi7mxuf_jai4Lu0zDh7swhCggAAAALwGf9mpCvwABKlUheNdAqsTxMrUdWx6pBM5Hxqfe0lacHrghNRVgiXLG2PNzaIuBAAAAMEGb-EnhDyZTAhn__p4QAAEVQ_NVkfehUo1maTYLCNjPxoY3kDU45UZUpKQhhTcg4QAAADVBmhlJ4Q8mUwIb__6nhAAAR7pvarYTPBtCeLQMzdiuJscf7PMAv6L4yAbdA_5H9p1ns-BLwAAAADNBmjtJ4Q8mUwURPDP__p4QAAENEHjPWHA4Zj0VhaVU2y17-ky_lFNMRQvR6fluzZXYGNEAAAAoAZ5aakK_AAEqVSFyQdWeILjYob7oCm1r0Jo3V8RK0vjBhzA3QgcCkgAAADZBmlxJ4Q8mUwIb__6nhAAARUdoCRuweRTf-x2Vj94hh4IgAqDTes7pbmsImm7-hNopfCRYVMEAAAA6QZp-SeEPJlMFETwz__6eEAABDum861QpLCJRvahWTo6I2PI9CganJJEnhCWzdBlfP2pfMX5T8mEKmQAAADwBnp1qQr8AASpVIXJKuFVKwAeWWbQj-8jtvv9MpHyquee8iHvdIhZNxj8iybbAqCNeVAh4gQHhkljdkasAAAAxQZqfSeEPJlMCGf_-nhAAAQUPVfWGUWY9FYWlVNste_pMv5RTTEUL0eNZuy-Rn6yQcAAAAEhBmqBJ4Q8mUwIb__6nhAAAQ7pvasjeMy-YRACCDDVG5fGAhb9qxuRexEUnu0cfcE6RDv5aMKZSzD28tx5G29w18UBikvPiSXkAAAAxQZrCSeEPJlMFETwz__6eEAAA_XqV-tIwxqCeoqKUBktf2LAOrcrD485M1j2915rHpAAAACcBnuFqQr8AASpVIWzeLHcmlUVTqfXgP6QviHAv05YDpDtWwvLIGhEAAAA3QZrjSeEPJlMCG__-p4QAAEFHaAkbsHkU3_sdlLxaQxZQLUKFK1ZTsoWI9as3_Qo8BkQwFtJJuAAAAD1BmwVJ4Q8mUwURPDP__p4QAAD-8JzxOtpJYoOOcLCGVazEKFmMA_Dsn8b9-J7xc_JTjTorlCvyWpNS8N-BAAAALwGfJGpCvwABKlUhbMrOVWJ4mVqOrY9Ugmcj41PvaStOD1wQmoqwRLdoXwkuMjfhAAAAMUGbJknhDyZTAhn__p4QAAD3-f_rSMMagnqKilAZLX9iwDq3Kw-POTNY0waMcH1-FlEAAAA5QZtHSeEPJlMCG__-p4QAAD9grrAj0EXObofRYsfvEMPBEAFQab1ndLc1hE03f0JwDkwK590MZ8h5AAAAQEGbaUnhDyZTBRE8M__-nhAAAPlwnPE6rUlig37gsIZVrFqG2fFpBmyipexC2Y02Caol-0XlBXt3fPAxSpIIipgAAAAvAZ-IakK_AAEqVSFqCs5VYniZWo6tj1SCZyPjU-9pK04PXBCairBEt2hdThf4csAAAAAxQZuKSeEPJlMCGf_-nhAAAPJ5w61u9CzEsmKCe45RNF9HsHRzrwINkoZjY4gMSqm5LwAAADlBm6tJ4Q8mUwIb__6nhAAAPlwnk2gE8_jtC_1RGBDxnZuXeikUHNax8-aRiZ_ImmnU2vtT-vDAIXcAAAA6QZvNSeEPJlMFETwz__6eEAAA7PqWEPAB-AzAAw5eoHM7UaV_aI6k25K19NFpoJlW3CnGmce3uUlZBwAAACgBn-xqQr8AASpVIWSGhHX8XGxQ33QFNrXoTRur4iVpfGDDmBuhA4F3AAAAO0Gb7knhDyZTAhv__qeEAAA8qPFEJG7B44ZfObC_eF59qKYW-epO0yfYdKP7zspXZanNUgjxFms-IJFxAAAAOkGaEEnhDyZTBRE8M__-nhAAAO5wnOtQ5LCIndqFWuT5UM1-_WI2M1FjlMsWzDGyD5O76HkV3TgEMCEAAAArAZ4vakK_AAEqVSFkjfgtgLnPYGqV0SfeuTWKgxrnv0tKaQN6PrFjYCxDAgAAADJBmjFJ4Q8mUwIZ__6eEAAA56nVada3ehUyuVgFlUhD8febxs6UDVwvVJCz0YCcWUDAgAAAAD9BmlJJ4Q8mUwIb__6nhAAAO5wnkzV05bO4Zr6kmaslAzNFyGuKJ_YtrGppdLUNCCtMq2zDAuwkKbDYdwWwf4EAAAA6QZp0SeEPJlMFETwz__6eEAAA4fqWEPACS7KvJew1UrO1Glf2iOpNuStfTRaaCZVtwpxpnHt7lJWRcAAAACoBnpNqQr8AASpVIV-g5HlqHJ4KYn8K3EH9mSWqMX2V4NCVAUDEa2UYHVAAAAA5QZqVSeEPJlMCGf_-nhAAAOH5w60WklSWBZU27WeEhl_F4cjZjyILXZ3rvHIuTlEgCfYQum3ccDLhAAAAOEGat0nhDyZTBRE8K__-OEAAA3fqN-riVnNwXhKSqg0FJABRFfQyuVomrdcfiA7QVt1E62D73jlgAAAALQGe1mpCvwABKlUhX44OVWJ4l3VNCsQk-LJGysmQ89xlYakmCLN3TfdeBpC2gQAACDptb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAATiAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAHZXRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAATiAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAACgAAAAWgAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAE4gAAAQAAAEAAAAABt1tZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAADAAAADwAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAaIbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAGSHN0YmwAAACwc3RzZAAAAAAAAAABAAAAoGF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAACgAFoAEgAAABIAAAAAAAAAAEUTGF2YzYxLjMuMTAwIGxpYngyNjQAAAAAAAAAAAAAAAAY__8AAAA2YXZjQwFkAB7_4QAZZ2QAHqzZQKAv-WEAAAMAAQAAAwAwDxYtlgEABmjr48siwP34-AAAAAAUYnRydAAAAAAAADEwAAAxMAAAABhzdHRzAAAAAAAAAAEAAAB4AAACAAAAABRzdHNzAAAAAAAAAAEAAAABAAADQGN0dHMAAAAAAAAAZgAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAAAIAAAQAAAAAAQAABgAAAAABAAACAAAAAAEAAAQAAAAAAQAABgAAAAABAAACAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAeAAAAAEAAAH0c3RzegAAAAAAAAAAAAAAeAAAA74AAAB6AAAAOwAAAEYAAABJAAAAMAAAADgAAABAAAAAQQAAAC0AAABAAAAARwAAADMAAAA2AAAAPgAAAEAAAAAyAAAANgAAAHcAAABDAAAALwAAAD4AAAA-AAAALwAAADQAAAA0AAAAPAAAACsAAAA-AAAAPgAAAEAAAAA3AAAATAAAADcAAAArAAAAOwAAAEAAAAAvAAAAMwAAAD0AAABCAAAALQAAAD4AAABKAAAAMwAAADYAAABBAAAAQAAAADMAAAA0AAAAOQAAADcAAAAsAAAAOwAAAEAAAAAvAAAAMwAAAEwAAAA6AAAALAAAADgAAAA9AAAALwAAADoAAAA-AAAANwAAACsAAAA7AAAAQgAAAC8AAAAzAAAAQQAAADoAAAAtAAAAMwAAAD0AAAA-AAAALAAAADkAAAA_AAAAMgAAADQAAABGAAAAPgAAAC4AAABGAAAAPwAAADMAAAA0AAAAOQAAADcAAAAsAAAAOgAAAD4AAABAAAAANQAAAEwAAAA1AAAAKwAAADsAAABBAAAAMwAAADUAAAA9AAAARAAAADMAAAA1AAAAPQAAAD4AAAAsAAAAPwAAAD4AAAAvAAAANgAAAEMAAAA-AAAALgAAAD0AAAA8AAAAMQAAABRzdGNvAAAAAAAAAAEAAAAwAAAAYXVkdGEAAABZbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAsaWxzdAAAACSpdG9vAAAAHGRhdGEAAAABAAAAAExhdmY2MS4xLjEwMA==", + "mimeType": "video/mp4"}}], "role": "user"}], "systemInstruction": {"parts": + [{"text": "You are File Analyst. Expert at analyzing various file types.\nYour + personal goal is: Analyze and describe files accurately"}], "role": "user"}, + "generationConfig": {"stopSequences": ["\nObservation:"]}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '13807' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"This video features a simple animation + of a white vertical rectangle moving horizontally across a solid blue background.\\n\\nHere's + a breakdown of the action:\\n* **00:00 - 00:01**: A white vertical rectangle + is positioned on the left side of the blue screen.\\n* **00:01 - 00:02**: + The rectangle moves from the left towards the center of the screen.\\n* **00:02 + - 00:03**: The rectangle reaches and briefly pauses in the center of the screen.\\n* + \ **00:03 - 00:04**: The rectangle then moves from the center towards the + right side of the screen.\\n* **00:04 - 00:05**: The rectangle is positioned + on the right side of the screen.\\n\\nThe entire video shows this single white + rectangle translating horizontally across the blue screen from left to right.\"\n + \ }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 1518,\n \"candidatesTokenCount\": 202,\n \"totalTokenCount\": 1905,\n + \ \"cachedContentTokenCount\": 1122,\n \"promptTokensDetails\": [\n {\n + \ \"modality\": \"TEXT\",\n \"tokenCount\": 43\n },\n {\n + \ \"modality\": \"VIDEO\",\n \"tokenCount\": 1315\n },\n + \ {\n \"modality\": \"AUDIO\",\n \"tokenCount\": 160\n }\n + \ ],\n \"cacheTokensDetails\": [\n {\n \"modality\": \"AUDIO\",\n + \ \"tokenCount\": 118\n },\n {\n \"modality\": \"TEXT\",\n + \ \"tokenCount\": 31\n },\n {\n \"modality\": \"VIDEO\",\n + \ \"tokenCount\": 973\n }\n ],\n \"thoughtsTokenCount\": + 185\n },\n \"modelVersion\": \"gemini-2.5-flash\",\n \"responseId\": \"SkqOadVVrN7-4w_FvcPwDg\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 21:46:50 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=3409 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +version: 1 diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-gpt-4o-mini].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-gpt-4o-mini].yaml index 8206a90a7..3ae9d72eb 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-gpt-4o-mini].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-gpt-4o-mini].yaml @@ -43,18 +43,18 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VyndYhkvg3N6hgeW9pA5Ha39QpO\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921925,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WgHb4RcXL4AJZGkCYgALyLjjIES\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924621,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The image displays a line graph titled - \\\"Revenue Over Time.\\\" The x-axis represents the years from 2020 to 2024, - while the y-axis shows revenue in millions of dollars, ranging from 100 to - 300 million. The graph indicates a steady increase in revenue over the specified - time period, illustrating a positive growth trend.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 14214,\n \"completion_tokens\": 67,\n \"total_tokens\": 14281,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue + Over Time.\\\" The x-axis represents the years from 2020 to 2024, while the + y-axis shows revenue measured in millions of dollars, ranging from 100 to + 300 million. The graph displays a steady upward trend, indicating an increase + in revenue over the specified time period.\",\n \"refusal\": null,\n + \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": + \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 14214,\n \"completion_tokens\": + 67,\n \"total_tokens\": 14281,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" @@ -66,7 +66,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:27 GMT + - Thu, 12 Feb 2026 19:30:22 GMT Server: - cloudflare Strict-Transport-Security: @@ -84,7 +84,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1766' + - '1737' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -162,16 +162,19 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VypWH40fDxCnku6UaL18IAdjxge\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921927,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WgJ3TjevpIc568Y1IZYuQAzrx3T\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924623,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time.\\\" It charts revenue in millions of dollars on the vertical axis - (ranging from 100 to 300) and time from 2020 to 2024 on the horizontal axis. - The graph shows a steady upward trend in revenue over the specified period.\",\n - \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": - null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 14214,\n \"completion_tokens\": 62,\n \"total_tokens\": 14276,\n \"prompt_tokens_details\": + Over Time.\\\" It displays revenue in millions of dollars on the vertical + axis, ranging from 100 to 300, and time in years on the horizontal axis, from + 2020 to 2024. The graph shows a steady upward trend in revenue, indicating + consistent growth over the specified period. The line smoothly ascends from + around 100 million in 2020 to approximately 300 million by 2024. The grid + lines and labels are clearly marked for better readability.\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 14214,\n \"completion_tokens\": 104,\n \"total_tokens\": 14318,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -184,7 +187,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:28 GMT + - Thu, 12 Feb 2026 19:30:25 GMT Server: - cloudflare Strict-Transport-Security: @@ -202,7 +205,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1457' + - '2639' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-gpt-4o].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-gpt-4o].yaml index 73b423985..b19dac203 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-gpt-4o].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-gpt-4o].yaml @@ -43,17 +43,16 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8Vyr7LN4KGyqqhS94I0vIGmErAF6\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921929,\n \"model\": \"gpt-4o-2024-08-06\",\n + string: "{\n \"id\": \"chatcmpl-D8WgAzd8jYvPcWJroJO4Y1HW3RX7v\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924614,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time,\\\" displaying changes in revenue from 2020 to 2024. The x-axis - represents the year, while the y-axis indicates revenue in millions of dollars - ($M). The graph shows a steady linear increase in revenue, starting at $100M - in 2020 and reaching $300M by 2024.\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 472,\n \"completion_tokens\": - 74,\n \"total_tokens\": 546,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + Over Time.\\\" It shows a linear increase in revenue from $100 million in + 2020 to $300 million in 2024. The x-axis represents the year, while the y-axis + represents revenue in millions of dollars.\",\n \"refusal\": null,\n + \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": + \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 472,\n \"completion_tokens\": + 54,\n \"total_tokens\": 526,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -66,7 +65,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:32 GMT + - Thu, 12 Feb 2026 19:30:17 GMT Server: - cloudflare Strict-Transport-Security: @@ -84,7 +83,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3091' + - '2767' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -162,18 +161,18 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8Vyuzdzk5Zopbl17BlPgZHpEr3Zz\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921932,\n \"model\": \"gpt-4o-2024-08-06\",\n + string: "{\n \"id\": \"chatcmpl-D8WgDX1n1Uvs3hWCsTWtkQZ3uhMsJ\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924617,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time,\\\" showing a linear increase in revenue from $100 million in 2020 - to $300 million in 2024. The x-axis represents the years from 2020 to 2024, - and the y-axis represents the revenue in millions of dollars ($M). The line - steadily rises, indicating consistent growth over the period.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 472,\n \"completion_tokens\": 76,\n \"total_tokens\": 548,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + Over Time,\\\" showing a consistent increase in revenue from 2020 to 2024. + The x-axis represents the years, while the y-axis represents revenue in millions + of dollars ($M), ranging from 100 to 300. The graph demonstrates a steady + upward trend.\",\n \"refusal\": null,\n \"annotations\": []\n + \ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n + \ ],\n \"usage\": {\n \"prompt_tokens\": 472,\n \"completion_tokens\": + 63,\n \"total_tokens\": 535,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": \"fp_ad98c18a04\"\n}\n" @@ -185,7 +184,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:36 GMT + - Thu, 12 Feb 2026 19:30:20 GMT Server: - cloudflare Strict-Transport-Security: @@ -203,7 +202,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3966' + - '3561' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-o4-mini].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-o4-mini].yaml index 315522397..1d8842ebf 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-o4-mini].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_generic_file_image[openai-o4-mini].yaml @@ -43,21 +43,19 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8Vyz6YZFgCDPpgYJRyWw2Dx5uh7H\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921937,\n \"model\": \"o4-mini-2025-04-16\",\n + string: "{\n \"id\": \"chatcmpl-D8Wfqrbdnbclzbo8etfNONlRleEaa\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924594,\n \"model\": \"o4-mini-2025-04-16\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a simple line chart titled - \u201CRevenue Over Time,\u201D with the x-axis labeled \u201CYear\u201D (2020 - to 2024) and the y-axis labeled \u201CRevenue ($M)\u201D (ranging from 100 - to 300). It shows a straight, upward-sloping line indicating revenue rising - steadily from $100 million in 2020 to $300 million in 2024, with grid lines - in the background.\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": - {\n \"prompt_tokens\": 563,\n \"completion_tokens\": 173,\n \"total_tokens\": - 736,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": - 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 64,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n - \ \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \u201CRevenue Over Time,\u201D plotting years 2020 through 2024 on the x-axis + against revenue in millions of dollars on the y-axis. It shows a straight, + upward-sloping line: revenue rises steadily from $100 M in 2020 to $300 M + in 2024.\",\n \"refusal\": null,\n \"annotations\": []\n },\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 563,\n \"completion_tokens\": 282,\n \"total_tokens\": 845,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 192,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": null\n}\n" headers: CF-RAY: @@ -67,7 +65,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:39 GMT + - Thu, 12 Feb 2026 19:29:57 GMT Server: - cloudflare Strict-Transport-Security: @@ -85,7 +83,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2435' + - '2841' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -163,18 +161,19 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8Vz2qXCbqRmkQr6d0f961ROgIZEk\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921940,\n \"model\": \"o4-mini-2025-04-16\",\n + string: "{\n \"id\": \"chatcmpl-D8Wftl6H7BAB58lF2NOd2cCKlCUir\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924597,\n \"model\": \"o4-mini-2025-04-16\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a simple line chart titled - \u201CRevenue Over Time.\u201D It shows annual revenue rising in a straight - line from \\\\$100 million in 2020 to \\\\$300 million in 2024, with grid - lines, years on the horizontal axis, and revenue (in \\\\$M) on the vertical - axis.\",\n \"refusal\": null,\n \"annotations\": []\n },\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 563,\n \"completion_tokens\": 209,\n \"total_tokens\": 772,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 128,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + \u201CRevenue Over Time.\u201D It plots years on the x-axis (2020 through + 2024) against revenue in millions of dollars on the y-axis (from $100 M to + $300 M). The line rises steadily and linearly, showing revenue climbing from + $100 M in 2020 to $300 M in 2024, with gridlines in the background.\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 563,\n \"completion_tokens\": + 299,\n \"total_tokens\": 862,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 192,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": null\n}\n" headers: @@ -185,7 +184,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:42 GMT + - Thu, 12 Feb 2026 19:30:00 GMT Server: - cloudflare Strict-Transport-Security: @@ -203,7 +202,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2911' + - '3017' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-gpt-4o-mini].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-gpt-4o-mini].yaml index 46e90c536..318cd9180 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-gpt-4o-mini].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-gpt-4o-mini].yaml @@ -43,17 +43,18 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VzGZnB7m3dYE9eYh1tyzjBkc5U6\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921954,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WfwYOLwG9nSNvCdv0HUwDmwkUY1\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924600,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The image shows a line graph titled - \\\"Revenue Over Time.\\\" The x-axis represents the years from 2020 to 2024, - while the y-axis indicates revenue in millions of dollars, ranging from 100 - to 300 million. The graph depicts a steady upward trend in revenue over the - specified time period, indicating consistent growth.\",\n \"refusal\": + \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue + Over Time.\\\" It plots revenue in millions of dollars on the vertical axis + against years from 2020 to 2024 on the horizontal axis. The trend shows a + consistent increase in revenue, starting at around 100 million dollars in + 2020 and rising to approximately 300 million dollars by 2024. The line is + upward sloping, indicating steady growth over the specified period.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 14214,\n \"completion_tokens\": 66,\n \"total_tokens\": 14280,\n \"prompt_tokens_details\": + 14214,\n \"completion_tokens\": 86,\n \"total_tokens\": 14300,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -66,7 +67,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:55 GMT + - Thu, 12 Feb 2026 19:30:02 GMT Server: - cloudflare Strict-Transport-Security: @@ -84,7 +85,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1549' + - '2043' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -162,17 +163,19 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VzIgPQyavHbV1OTcgaMR1klOPhy\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921956,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WfzaJmIgDK0cBCNHrV7oFqY1FRW\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924603,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The image presents a line graph titled - \\\"Revenue Over Time.\\\" The x-axis represents the years from 2020 to 2024, - while the y-axis indicates revenue in millions of dollars, ranging from 100 - to 300. The graph shows a consistent upward trend, with revenue increasing - steadily over the specified time period.\",\n \"refusal\": null,\n - \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 14214,\n \"completion_tokens\": - 64,\n \"total_tokens\": 14278,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue + Over Time.\\\" It plots revenue (in millions of dollars) on the vertical axis + and years on the horizontal axis, covering the period from 2020 to 2024. The + line shows a steady upward trend, starting at around $100 million in 2020 + and reaching approximately $300 million by 2024, indicating consistent revenue + growth over the specified timeframe. The graph includes gridlines for better + readability.\",\n \"refusal\": null,\n \"annotations\": []\n + \ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n + \ ],\n \"usage\": {\n \"prompt_tokens\": 14214,\n \"completion_tokens\": + 91,\n \"total_tokens\": 14305,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -185,7 +188,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:57 GMT + - Thu, 12 Feb 2026 19:30:05 GMT Server: - cloudflare Strict-Transport-Security: @@ -203,7 +206,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1431' + - '2362' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-gpt-4o].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-gpt-4o].yaml index 323dd14bd..a0e2f82d0 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-gpt-4o].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-gpt-4o].yaml @@ -43,18 +43,18 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VyhB3hIOhh1dwHzOTJRp9K3aIyB\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921919,\n \"model\": \"gpt-4o-2024-08-06\",\n + string: "{\n \"id\": \"chatcmpl-D8Wg1aVkDQhWQ2Ois4zxSCEtXzxTt\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924605,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time,\\\" depicting the revenue in millions of dollars ($M) from the - year 2020 to 2024. The graph shows a steady linear increase in revenue, starting - at $100M in 2020 and reaching $300M by 2024. The x-axis represents the years, - and the y-axis represents the revenue in millions of dollars.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 472,\n \"completion_tokens\": 81,\n \"total_tokens\": 553,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + Over Time.\\\" It shows revenue in millions of dollars on the y-axis, ranging + from 100 to 300 million, and years from 2020 to 2024 on the x-axis. The graph + displays a steadily increasing trend, with revenue rising linearly from approximately + $100 million in 2020 to $300 million in 2024.\",\n \"refusal\": null,\n + \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": + \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 472,\n \"completion_tokens\": + 79,\n \"total_tokens\": 551,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": \"fp_ad98c18a04\"\n}\n" @@ -66,7 +66,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:22 GMT + - Thu, 12 Feb 2026 19:30:11 GMT Server: - cloudflare Strict-Transport-Security: @@ -84,7 +84,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3470' + - '5242' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -162,17 +162,16 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VykGglVO2m02GXEGRSsDthvXItc\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921922,\n \"model\": \"gpt-4o-2024-08-06\",\n + string: "{\n \"id\": \"chatcmpl-D8Wg7nmn9FKiW0EHL5pHDtZyhTWkn\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924611,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time,\\\" showing a steady increase in revenue from approximately $100 - million in 2020 to $300 million in 2024. The x-axis represents the year, while - the y-axis represents revenue in millions of dollars. The line indicates continuous - growth over the given period.\",\n \"refusal\": null,\n \"annotations\": + Over Time,\\\" showing a steady increase in revenue from $100 million in 2020 + to $300 million in 2024. The x-axis represents the year, and the y-axis represents + revenue in millions of dollars.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 472,\n \"completion_tokens\": - 64,\n \"total_tokens\": 536,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 53,\n \"total_tokens\": 525,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -185,7 +184,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:25 GMT + - Thu, 12 Feb 2026 19:30:13 GMT Server: - cloudflare Strict-Transport-Security: @@ -203,7 +202,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2491' + - '2627' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-o4-mini].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-o4-mini].yaml index b771fe340..aa2441de4 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-o4-mini].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_bytes[openai-o4-mini].yaml @@ -43,19 +43,20 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8Vz5b6D86Bzfq5T8H92101A6Dgzt\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921943,\n \"model\": \"o4-mini-2025-04-16\",\n + string: "{\n \"id\": \"chatcmpl-D8WfeaQ5MclYvsuSOPFzuCbDDygYP\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924582,\n \"model\": \"o4-mini-2025-04-16\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a simple line chart titled - \u201CRevenue Over Time,\u201D with the x-axis showing years 2020 through - 2024 and the y-axis showing revenue in millions of dollars. It plots a straight-line - increase from about $100 M in 2020 to about $300 M in 2024, rising roughly - $50 M each year.\",\n \"refusal\": null,\n \"annotations\": + \u201CRevenue Over Time.\u201D \\n\u2022 X-axis: Years from 2020 to 2024 + \ \\n\u2022 Y-axis: Revenue in millions of dollars ($M) \\n\u2022 Data points: + \ \\n \u2013 2020: $100 M \\n \u2013 2021: $150 M \\n \u2013 2022: $200 + M \\n \u2013 2023: $250 M \\n \u2013 2024: $300 M \\n\\nIt shows a steady, + linear increase of $50 M per year.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": - {\n \"prompt_tokens\": 563,\n \"completion_tokens\": 222,\n \"total_tokens\": - 785,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": + {\n \"prompt_tokens\": 563,\n \"completion_tokens\": 328,\n \"total_tokens\": + 891,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 128,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n + 192,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \ \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": null\n}\n" headers: @@ -66,7 +67,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:46 GMT + - Thu, 12 Feb 2026 19:29:46 GMT Server: - cloudflare Strict-Transport-Security: @@ -84,7 +85,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3826' + - '3950' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -162,19 +163,20 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8Vz9oIIB8TdG2kQa87g7KHWaqkHz\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921947,\n \"model\": \"o4-mini-2025-04-16\",\n + string: "{\n \"id\": \"chatcmpl-D8WfiXJ7A4LmHm6P0Xr3qHNxoqsVk\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924586,\n \"model\": \"o4-mini-2025-04-16\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a simple line chart titled - \u201CRevenue Over Time.\u201D The horizontal axis spans years 2020 through - 2024, and the vertical axis shows revenue in millions of dollars (from $100 - M up to $300 M). A single blue line rises steadily from $100 M in 2020 to - $300 M in 2024, indicating linear year-over-year revenue growth.\",\n \"refusal\": + \u201CRevenue Over Time.\u201D \\n- The horizontal axis is labeled \u201CYear\u201D + (2020, 2021, 2022, 2023, 2024). \\n- The vertical axis is labeled \u201CRevenue + ($M)\u201D and runs from $100 M to $300 M. \\n- The plotted line rises steadily + from $100 M in 2020 to $300 M in 2024, showing a uniform $50 M increase each + year. \\n- Light gridlines appear in the background for reference.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"finish_reason\": \"stop\"\n \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 563,\n \"completion_tokens\": - 166,\n \"total_tokens\": 729,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 263,\n \"total_tokens\": 826,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 64,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + {\n \"reasoning_tokens\": 128,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": null\n}\n" headers: @@ -185,7 +187,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:49 GMT + - Thu, 12 Feb 2026 19:29:49 GMT Server: - cloudflare Strict-Transport-Security: @@ -203,7 +205,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2769' + - '3028' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-gpt-4o-mini].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-gpt-4o-mini].yaml index eb33f640e..f25c1ffda 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-gpt-4o-mini].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-gpt-4o-mini].yaml @@ -43,19 +43,18 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VzCUvG6PYOwOgjKi37DxCMQSvaf\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921950,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WfmRMxwQFXorIRXScVQr2aGTq4w\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924590,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time.\\\" It displays revenue measured in millions of dollars along the - vertical axis and time from 2020 to 2024 along the horizontal axis. The graph - shows a steady upward trend in revenue, starting at around 100 million dollars - in 2020 and approaching 300 million dollars by 2024. The line is smooth and - continuous, indicating consistent growth over the specified period.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 14214,\n \"completion_tokens\": 86,\n \"total_tokens\": 14300,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"The image depicts a line graph titled + \\\"Revenue Over Time.\\\" The x-axis represents the years from 2020 to 2024, + while the y-axis displays revenue in millions of dollars, ranging from 100 + to 300. The line shows a steady upward trend, indicating an increase in revenue + over the specified time period.\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 14214,\n \"completion_tokens\": + 65,\n \"total_tokens\": 14279,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" @@ -67,7 +66,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:52 GMT + - Thu, 12 Feb 2026 19:29:52 GMT Server: - cloudflare Strict-Transport-Security: @@ -85,7 +84,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1927' + - '1985' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -163,17 +162,17 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VzEtQ6IjzTmXDyFlne6WQAuSyMU\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921952,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WfoE6Hg37g9hia2MQ7T9PcanddF\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924592,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time.\\\" It depicts revenue in millions of dollars on the vertical axis, - ranging from 100 to 300 million. The horizontal axis represents time, spanning - from 2020 to 2024. The graph shows a steady upward trend in revenue, indicating - consistent growth over this period.\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 14214,\n \"completion_tokens\": - 66,\n \"total_tokens\": 14280,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + \"assistant\",\n \"content\": \"The image displays a line graph titled + \\\"Revenue Over Time.\\\" The x-axis represents years from 2020 to 2024, + while the y-axis indicates revenue in millions of dollars, ranging from 100 + to 300. The graph shows a steady upward trend in revenue over the specified + timeframe, illustrating consistent growth.\",\n \"refusal\": null,\n + \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": + \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 14214,\n \"completion_tokens\": + 63,\n \"total_tokens\": 14277,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -186,7 +185,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:54 GMT + - Thu, 12 Feb 2026 19:29:53 GMT Server: - cloudflare Strict-Transport-Security: @@ -204,7 +203,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1666' + - '1711' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-gpt-4o].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-gpt-4o].yaml index 547db1564..ceb03d771 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-gpt-4o].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-gpt-4o].yaml @@ -43,18 +43,18 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VyZUrPWEvVBLVzumsybF2puyJwd\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921911,\n \"model\": \"gpt-4o-2024-08-06\",\n + string: "{\n \"id\": \"chatcmpl-D8WgL6FHRCWfMd0kucKZP0P0sU21B\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924625,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time.\\\" It displays revenue growth from 2020 to 2024. The x-axis represents - the years, ranging from 2020 to 2024, and the y-axis represents revenue in - millions of dollars, ranging from $100M to $300M. The line shows a steady, - linear increase in revenue over this time period.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 472,\n \"completion_tokens\": 78,\n \"total_tokens\": 550,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + Over Time.\\\" It shows a straight, upward-sloping line indicating a steady + increase in revenue from $100 million in 2020 to $300 million in 2024. The + x-axis represents the years from 2020 to 2024, and the y-axis represents revenue + in millions of dollars.\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 472,\n \"completion_tokens\": + 70,\n \"total_tokens\": 542,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": \"fp_ad98c18a04\"\n}\n" @@ -66,7 +66,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:14 GMT + - Thu, 12 Feb 2026 19:30:30 GMT Server: - cloudflare Strict-Transport-Security: @@ -84,7 +84,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3450' + - '4655' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -162,19 +162,17 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VyccmhNVyhrwbwSxXJ6urQDRf4u\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921914,\n \"model\": \"gpt-4o-2024-08-06\",\n + string: "{\n \"id\": \"chatcmpl-D8WgQgP970J5ai9oMLJfnMIZHLE4t\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924630,\n \"model\": \"gpt-4o-2024-08-06\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The image is a line graph titled \\\"Revenue - Over Time.\\\" It shows a linear increase in revenue from $100 million in - the year 2020 to $300 million in 2024. The x-axis represents the years from - 2020 to 2024, and the y-axis represents revenue in millions of dollars. The - grid background helps to visually track the increase over the specified time - period.\",\n \"refusal\": null,\n \"annotations\": []\n },\n - \ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n - \ \"usage\": {\n \"prompt_tokens\": 472,\n \"completion_tokens\": 79,\n - \ \"total_tokens\": 551,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + Over Time.\\\" It shows a linear increase in revenue from 2020 to 2024. The + x-axis represents the year, ranging from 2020 to 2024, and the y-axis represents + revenue in millions of dollars, ranging from 100 to 300.\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 472,\n \"completion_tokens\": 64,\n \"total_tokens\": 536,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": \"fp_ad98c18a04\"\n}\n" @@ -186,7 +184,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:18 GMT + - Thu, 12 Feb 2026 19:30:34 GMT Server: - cloudflare Strict-Transport-Security: @@ -204,7 +202,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3922' + - '3696' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-o4-mini].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-o4-mini].yaml index abd0757e2..600e49a99 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-o4-mini].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAI.test_image_file[openai-o4-mini].yaml @@ -43,16 +43,16 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VyQjxbF61AtKGn1p8WMKBbBIZ4x\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921902,\n \"model\": \"o4-mini-2025-04-16\",\n + string: "{\n \"id\": \"chatcmpl-D8WgUtv0H2vpqmMoeX3h5tFRo8KKr\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924634,\n \"model\": \"o4-mini-2025-04-16\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The image is a line chart titled \u201CRevenue - Over Time,\u201D plotting annual revenue (in $ millions) from 2020 to 2024. - It shows a straight, upward-sloping line rising in $50 M increments\u2014from - \\\\$100 M in 2020 up to \\\\$300 M in 2024.\",\n \"refusal\": null,\n + \"assistant\",\n \"content\": \"The image is a simple line chart titled + \u201CRevenue Over Time\u201D that plots annual revenue (in millions of dollars) + from 2020 to 2024. It shows a straight, upward\u2010sloping line rising evenly + from \\\\$100 M in 2020 to \\\\$300 M in 2024.\",\n \"refusal\": null,\n \ \"annotations\": []\n },\n \"finish_reason\": \"stop\"\n \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 563,\n \"completion_tokens\": - 278,\n \"total_tokens\": 841,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 273,\n \"total_tokens\": 836,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 192,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": @@ -65,7 +65,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:06 GMT + - Thu, 12 Feb 2026 19:30:37 GMT Server: - cloudflare Strict-Transport-Security: @@ -83,7 +83,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '4252' + - '3160' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -161,19 +161,19 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8VyVRMFdp8W58Xh8TO7KU5oHZs72\",\n \"object\": - \"chat.completion\",\n \"created\": 1770921907,\n \"model\": \"o4-mini-2025-04-16\",\n + string: "{\n \"id\": \"chatcmpl-D8WgY1oxQs1DUkENf0DTBDenkMT1G\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924638,\n \"model\": \"o4-mini-2025-04-16\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The chart is a simple line graph titled - \u201CRevenue Over Time.\u201D It plots annual revenue (in millions of dollars) - from 2020 through 2024, showing a steady increase: \\n\u2022 2020: $100 M - \ \\n\u2022 2021: $150 M \\n\u2022 2022: $200 M \\n\u2022 2023: $250 M \\n\u2022 - 2024: $300 M\",\n \"refusal\": null,\n \"annotations\": []\n - \ },\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n - \ \"prompt_tokens\": 563,\n \"completion_tokens\": 233,\n \"total_tokens\": - 796,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": + \"assistant\",\n \"content\": \"The image is a simple line chart titled + \u201CRevenue Over Time.\u201D The horizontal axis shows years from 2020 to + 2024, and the vertical axis shows revenue in millions of dollars. The line + rises steadily from $100 M in 2020 to $300 M in 2024, indicating consistent + year-over-year growth.\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": + {\n \"prompt_tokens\": 563,\n \"completion_tokens\": 152,\n \"total_tokens\": + 715,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 128,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n + 64,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \ \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": \"default\",\n \"system_fingerprint\": null\n}\n" headers: @@ -184,7 +184,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:45:10 GMT + - Thu, 12 Feb 2026 19:30:40 GMT Server: - cloudflare Strict-Transport-Security: @@ -202,7 +202,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3707' + - '2496' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_image_file[openai-gpt-4o-mini-responses].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_image_file[openai-gpt-4o-mini-responses].yaml index aff98a88f..656d80e10 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_image_file[openai-gpt-4o-mini-responses].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_image_file[openai-gpt-4o-mini-responses].yaml @@ -43,36 +43,34 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_003d4c3429ecc26c00698e1f8024c48195a3add3bdba7cda22\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921856,\n \"status\": + string: "{\n \"id\": \"resp_0a64109d8e2fc97b00698e2a7246a88193b7c90b54dacc69dd\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924658,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921858,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924660,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_003d4c3429ecc26c00698e1f80a8888195a71bc6b2673d7c67\",\n + \ \"output\": [\n {\n \"id\": \"msg_0a64109d8e2fc97b00698e2a7342c881939fdc506144cc28e6\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"The image is a line - graph titled \\\"Revenue Over Time.\\\" It plots revenue (in millions of dollars) - on the vertical axis against time (in years) on the horizontal axis, spanning - from 2020 to 2024. The graph shows a steady, upward trend in revenue, starting - at around $100 million in 2020 and increasing to approximately $300 million - by 2024, indicating consistent growth over the specified period. The line - is smooth and linear, suggesting steady revenue growth year over year.\"\n - \ }\n ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": - true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": - null,\n \"summary\": null\n },\n \"safety_identifier\": null,\n \"service_tier\": - \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n - \ \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n - \ },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": - 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": - 14214,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 103,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 0\n },\n \"total_tokens\": 14317\n },\n \"user\": null,\n \"metadata\": - {}\n}" + graph titled \\\"Revenue Over Time,\\\" depicting revenue growth from 2020 + to 2024. The y-axis represents revenue in millions of dollars, ranging from + 100 to 300. The x-axis indicates the years from 2020 to 2024. The line shows + a steady increase in revenue, indicating consistent growth over the specified + period.\"\n }\n ],\n \"role\": \"assistant\"\n }\n ],\n + \ \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": + null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": null,\n + \ \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n },\n \"safety_identifier\": + null,\n \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": + 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n + \ \"verbosity\": \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": + [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n + \ \"usage\": {\n \"input_tokens\": 14214,\n \"input_tokens_details\": + {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 75,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 14289\n },\n + \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: - CF-RAY-XXX @@ -81,7 +79,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:44:18 GMT + - Thu, 12 Feb 2026 19:31:00 GMT Server: - cloudflare Strict-Transport-Security: @@ -97,7 +95,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2142' + - '2223' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -167,35 +165,34 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0fa9c0067a031fe500698e1f82649081a3882a9172070cc899\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921858,\n \"status\": + string: "{\n \"id\": \"resp_0f2df6179286a80400698e2a74b5048192980513881a6944a0\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924660,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921860,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924665,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_0fa9c0067a031fe500698e1f82fe6c81a3bbd4a56089d8cb62\",\n + \ \"output\": [\n {\n \"id\": \"msg_0f2df6179286a80400698e2a7757dc8192b0dfe49ad4aed578\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": - [],\n \"logprobs\": [],\n \"text\": \"The image is a line - graph titled \\\"Revenue Over Time.\\\" It plots revenue (measured in millions - of dollars) on the vertical axis and time (from 2020 to 2024) on the horizontal - axis. The graph shows a steady upward trend in revenue, beginning at around - 100 million in early 2020 and increasing consistently to approximately 300 - million by the end of 2024. The line is smooth and linear, indicating consistent - growth over the specified period.\"\n }\n ],\n \"role\": - \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": - 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": - null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n - \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": - true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": - \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": - \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": - \"disabled\",\n \"usage\": {\n \"input_tokens\": 14214,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 97,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 14311\n },\n - \ \"user\": null,\n \"metadata\": {}\n}" + [],\n \"logprobs\": [],\n \"text\": \"The image displays + a line chart titled \\\"Revenue Over Time.\\\" The x-axis represents the years + from 2020 to 2024, while the y-axis shows revenue in millions of dollars, + ranging from 100 to 300. The graph illustrates a steady upward trend in revenue, + indicating consistent growth over the specified period.\"\n }\n ],\n + \ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n + \ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": + null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": + null,\n \"summary\": null\n },\n \"safety_identifier\": null,\n \"service_tier\": + \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n + \ \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n + \ },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": + 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": + 14214,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n + \ \"output_tokens\": 65,\n \"output_tokens_details\": {\n \"reasoning_tokens\": + 0\n },\n \"total_tokens\": 14279\n },\n \"user\": null,\n \"metadata\": + {}\n}" headers: CF-RAY: - CF-RAY-XXX @@ -204,7 +201,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:44:20 GMT + - Thu, 12 Feb 2026 19:31:05 GMT Server: - cloudflare Strict-Transport-Security: @@ -220,7 +217,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2291' + - '5149' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_image_file[openai-o4-mini-responses].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_image_file[openai-o4-mini-responses].yaml index 3269dfffc..936e975e7 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_image_file[openai-o4-mini-responses].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_image_file[openai-o4-mini-responses].yaml @@ -43,35 +43,35 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0a5c61547bc8014d00698e1f77538081a185ad91adf95e7d6e\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921847,\n \"status\": + string: "{\n \"id\": \"resp_08afc45723d5080900698e2a7de16081929c11968958a8c0ee\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924669,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921851,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924673,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"o4-mini-2025-04-16\",\n - \ \"output\": [\n {\n \"id\": \"rs_0a5c61547bc8014d00698e1f787f4481a192ef05bb3685e692\",\n + \ \"output\": [\n {\n \"id\": \"rs_08afc45723d5080900698e2a7edf488192880d0628cfa2389d\",\n \ \"type\": \"reasoning\",\n \"summary\": []\n },\n {\n \"id\": - \"msg_0a5c61547bc8014d00698e1f7a5efc81a18163fa0b48f38726\",\n \"type\": + \"msg_08afc45723d5080900698e2a808ed48192aa18a25a247c867d\",\n \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \ \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": - [],\n \"text\": \"The image is a line chart titled \\u201cRevenue - Over Time,\\u201d with years 2020 to 2024 on the x-axis and revenue in millions - of dollars on the y-axis. It shows a straight line rising from $100 M in 2020 - to $300 M in 2024, indicating a steady $50 M increase each year.\"\n }\n - \ ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": - true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": - \"medium\",\n \"summary\": null\n },\n \"safety_identifier\": null,\n - \ \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n - \ \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": - \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": - 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": - 563,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 296,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 192\n },\n \"total_tokens\": 859\n },\n \"user\": null,\n \"metadata\": - {}\n}" + [],\n \"text\": \"The image is a simple line chart titled \\u201cRevenue + Over Time,\\u201d showing annual revenue (in millions of dollars) on the y-axis + and years 2020\\u20132024 on the x-axis. The single blue line rises linearly + from $100 M in 2020 to $300 M in 2024, with gridlines marking each year and + revenue interval.\"\n }\n ],\n \"role\": \"assistant\"\n + \ }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n + \ \"previous_response_id\": null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": + null,\n \"reasoning\": {\n \"effort\": \"medium\",\n \"summary\": null\n + \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": + true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": + \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": + \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": + \"disabled\",\n \"usage\": {\n \"input_tokens\": 563,\n \"input_tokens_details\": + {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 243,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 128\n },\n \"total_tokens\": 806\n },\n + \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: - CF-RAY-XXX @@ -80,7 +80,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:44:11 GMT + - Thu, 12 Feb 2026 19:31:13 GMT Server: - cloudflare Strict-Transport-Security: @@ -96,7 +96,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '4197' + - '3800' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -166,25 +166,26 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0e65d307f3e728b500698e1f7c09c08196a73261984b2cfefa\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921852,\n \"status\": + string: "{\n \"id\": \"resp_098a25c591d169df00698e2a81cd08819da91e97f63a56acb4\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924673,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921855,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924676,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"o4-mini-2025-04-16\",\n - \ \"output\": [\n {\n \"id\": \"rs_0e65d307f3e728b500698e1f7d4c888196b56f0dfa94b6d969\",\n + \ \"output\": [\n {\n \"id\": \"rs_098a25c591d169df00698e2a82955c819d99d377167e3cf0b7\",\n \ \"type\": \"reasoning\",\n \"summary\": []\n },\n {\n \"id\": - \"msg_0e65d307f3e728b500698e1f7f11b881968ff70bf51b42a502\",\n \"type\": + \"msg_098a25c591d169df00698e2a839028819dab23f32811f174f7\",\n \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \ \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": - [],\n \"text\": \"The chart is a simple line plot titled \\u201cRevenue - Over Time,\\u201d showing annual revenue (in $ M) on the y-axis and years - 2020\\u20132024 on the x-axis. It depicts a steady, linear increase from $100 - M in 2020 up to $300 M in 2024, rising by $50 M each year.\"\n }\n - \ ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": - true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": + [],\n \"text\": \"The image is a line chart titled \\u201cRevenue + Over Time.\\u201d It plots annual revenue (in millions of dollars) from 2020 + to 2024, showing a steady, linear increase from $100 M in 2020 to $300 M in + 2024. The x-axis is labeled \\u201cYear,\\u201d the y-axis \\u201cRevenue + ($M),\\u201d and the plot is overlaid on a light grid.\"\n }\n ],\n + \ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n + \ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": \"medium\",\n \"summary\": null\n },\n \"safety_identifier\": null,\n \ \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n @@ -192,8 +193,8 @@ interactions: \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": 563,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 232,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 128\n },\n \"total_tokens\": 795\n },\n \"user\": null,\n \"metadata\": + \ \"output_tokens\": 189,\n \"output_tokens_details\": {\n \"reasoning_tokens\": + 64\n },\n \"total_tokens\": 752\n },\n \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: @@ -203,7 +204,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:44:16 GMT + - Thu, 12 Feb 2026 19:31:16 GMT Server: - cloudflare Strict-Transport-Security: @@ -219,7 +220,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3942' + - '3091' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_pdf_file[openai-gpt-4o-mini-responses].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_pdf_file[openai-gpt-4o-mini-responses].yaml index 25a859171..689f0fcf3 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_pdf_file[openai-gpt-4o-mini-responses].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_pdf_file[openai-gpt-4o-mini-responses].yaml @@ -43,31 +43,32 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0f0b09669f6dc23c00698e1f7357108190b48d6a78ffeb75ef\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921843,\n \"status\": + string: "{\n \"id\": \"resp_0524700d6a86aa2600698e2a7b511c8196869afcb28543046c\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924667,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921844,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924668,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_0f0b09669f6dc23c00698e1f74354481909f02f62edf6b10bf\",\n + \ \"output\": [\n {\n \"id\": \"msg_0524700d6a86aa2600698e2a7c10c48196a1c0042a9a870127\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": - [],\n \"logprobs\": [],\n \"text\": \"Please upload the - document you would like me to analyze, and I'll help identify its type.\"\n - \ }\n ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": - true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": - null,\n \"summary\": null\n },\n \"safety_identifier\": null,\n \"service_tier\": - \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n - \ \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n - \ },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": - 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": - 53,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 19,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 0\n },\n \"total_tokens\": 72\n },\n \"user\": null,\n \"metadata\": - {}\n}" + [],\n \"logprobs\": [],\n \"text\": \"It appears there was + no document provided for analysis. Please upload the document you'd like me + to examine, and I'll be happy to help identify its type and provide a detailed + description.\"\n }\n ],\n \"role\": \"assistant\"\n }\n + \ ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": + null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": null,\n + \ \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n },\n \"safety_identifier\": + null,\n \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": + 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n + \ \"verbosity\": \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": + [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n + \ \"usage\": {\n \"input_tokens\": 53,\n \"input_tokens_details\": {\n + \ \"cached_tokens\": 0\n },\n \"output_tokens\": 36,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 89\n },\n + \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: - CF-RAY-XXX @@ -76,9 +77,11 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:44:04 GMT + - Thu, 12 Feb 2026 19:31:08 GMT Server: - cloudflare + Set-Cookie: + - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -92,13 +95,11 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1356' + - '1439' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' - set-cookie: - - SET-COOKIE-XXX x-ratelimit-limit-requests: - X-RATELIMIT-LIMIT-REQUESTS-XXX x-ratelimit-limit-tokens: @@ -162,22 +163,21 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0138031ab91abec100698e1f753fd081a3bd60a98120f9b1b2\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921845,\n \"status\": + string: "{\n \"id\": \"resp_061c22eec2c866c500698e2a7cd9348193929f5dfa4eba1ff6\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924668,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921847,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924669,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"output\": [\n {\n \"id\": \"msg_0138031ab91abec100698e1f76657081a3b07d101c08e68f3b\",\n + \ \"output\": [\n {\n \"id\": \"msg_061c22eec2c866c500698e2a7d2b18819389b67df0fc6ffaf6\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"To assist you accurately, - I need to examine the specific document in question. Please upload the document - you'd like me to analyze, and I will describe its type and any relevant details.\"\n - \ }\n ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": - true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": + please upload the document you would like me to analyze.\"\n }\n ],\n + \ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n + \ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": null,\n \"summary\": null\n },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n @@ -185,8 +185,8 @@ interactions: \ },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": 53,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 37,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 0\n },\n \"total_tokens\": 90\n },\n \"user\": null,\n \"metadata\": + \ \"output_tokens\": 17,\n \"output_tokens_details\": {\n \"reasoning_tokens\": + 0\n },\n \"total_tokens\": 70\n },\n \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: @@ -196,7 +196,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:44:07 GMT + - Thu, 12 Feb 2026 19:31:09 GMT Server: - cloudflare Strict-Transport-Security: @@ -212,13 +212,11 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1899' + - '836' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' - set-cookie: - - SET-COOKIE-XXX x-ratelimit-limit-requests: - X-RATELIMIT-LIMIT-REQUESTS-XXX x-ratelimit-limit-tokens: diff --git a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_pdf_file[openai-o4-mini-responses].yaml b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_pdf_file[openai-o4-mini-responses].yaml index 847379864..d0b23175f 100644 --- a/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_pdf_file[openai-o4-mini-responses].yaml +++ b/lib/crewai/tests/cassettes/TestAgentMultimodalOpenAIResponses.test_pdf_file[openai-o4-mini-responses].yaml @@ -43,32 +43,31 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_0d8d791bc4714c2900698e1f85381c8192ba3d78d94ef31b8a\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921861,\n \"status\": + string: "{\n \"id\": \"resp_064e248119b2b15200698e2a850d908190ab1c6ba7b548c6c2\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924677,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921864,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924678,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"o4-mini-2025-04-16\",\n - \ \"output\": [\n {\n \"id\": \"rs_0d8d791bc4714c2900698e1f86900881928f6a9e86020e0f94\",\n + \ \"output\": [\n {\n \"id\": \"rs_064e248119b2b15200698e2a85b12081909cd1fbbe97495d44\",\n \ \"type\": \"reasoning\",\n \"summary\": []\n },\n {\n \"id\": - \"msg_0d8d791bc4714c2900698e1f87d3c48192b48d2de6c1cda3da\",\n \"type\": + \"msg_064e248119b2b15200698e2a8648488190a03c7b0dc1e83d9d\",\n \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \ \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": - [],\n \"text\": \"I\\u2019m ready to help\\u2014please upload the - document (or paste its text or metadata) so I can analyze it and determine - its type.\"\n }\n ],\n \"role\": \"assistant\"\n }\n ],\n - \ \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": - null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": null,\n - \ \"reasoning\": {\n \"effort\": \"medium\",\n \"summary\": null\n },\n - \ \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": + [],\n \"text\": \"Could you please upload or provide the document + you\\u2019d like me to analyze?\"\n }\n ],\n \"role\": \"assistant\"\n + \ }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n + \ \"previous_response_id\": null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": + null,\n \"reasoning\": {\n \"effort\": \"medium\",\n \"summary\": null\n + \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": 52,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 196,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 128\n },\n \"total_tokens\": 248\n },\n + {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 81,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 133\n },\n \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: @@ -78,7 +77,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:44:24 GMT + - Thu, 12 Feb 2026 19:31:18 GMT Server: - cloudflare Strict-Transport-Security: @@ -94,7 +93,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3262' + - '1769' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -164,33 +163,33 @@ interactions: uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_09d57ad21f5529e300698e1f8898748193ba8c6536ba1288b7\",\n - \ \"object\": \"response\",\n \"created_at\": 1770921864,\n \"status\": + string: "{\n \"id\": \"resp_05091b7975cea42100698e2a86f30881908983fbd92fbd48a4\",\n + \ \"object\": \"response\",\n \"created_at\": 1770924679,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1770921867,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770924683,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": \"You are File Analyst. Expert at analyzing various file types.\\nYour personal goal is: Analyze and describe files accurately\",\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": \"o4-mini-2025-04-16\",\n - \ \"output\": [\n {\n \"id\": \"rs_09d57ad21f5529e300698e1f894a9481938fdeb1787cafbe32\",\n + \ \"output\": [\n {\n \"id\": \"rs_05091b7975cea42100698e2a87b52c8190b25a662c10b2753f\",\n \ \"type\": \"reasoning\",\n \"summary\": []\n },\n {\n \"id\": - \"msg_09d57ad21f5529e300698e1f8afcd08193954bf9c8c9b2485e\",\n \"type\": + \"msg_05091b7975cea42100698e2a8b3eec8190b6f7c247a04ea9ce\",\n \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \ \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": - [],\n \"text\": \"I\\u2019m not seeing a document to analyze\\u2014could - you please upload the file or paste its content so I can determine its type?\"\n - \ }\n ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": - true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": - null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": - \"medium\",\n \"summary\": null\n },\n \"safety_identifier\": null,\n - \ \"service_tier\": \"default\",\n \"store\": true,\n \"temperature\": 1.0,\n - \ \"text\": {\n \"format\": {\n \"type\": \"text\"\n },\n \"verbosity\": - \"medium\"\n },\n \"tool_choice\": \"auto\",\n \"tools\": [],\n \"top_logprobs\": - 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": - 52,\n \"input_tokens_details\": {\n \"cached_tokens\": 0\n },\n - \ \"output_tokens\": 235,\n \"output_tokens_details\": {\n \"reasoning_tokens\": - 192\n },\n \"total_tokens\": 287\n },\n \"user\": null,\n \"metadata\": - {}\n}" + [],\n \"text\": \"I don\\u2019t see a document attached. Could you + please upload the file or share its contents so I can determine what type + of document it is?\"\n }\n ],\n \"role\": \"assistant\"\n + \ }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n + \ \"previous_response_id\": null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": + null,\n \"reasoning\": {\n \"effort\": \"medium\",\n \"summary\": null\n + \ },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n \"store\": + true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\": {\n \"type\": + \"text\"\n },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": + \"auto\",\n \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": + \"disabled\",\n \"usage\": {\n \"input_tokens\": 52,\n \"input_tokens_details\": + {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 254,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 192\n },\n \"total_tokens\": 306\n },\n + \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: - CF-RAY-XXX @@ -199,7 +198,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 12 Feb 2026 18:44:27 GMT + - Thu, 12 Feb 2026 19:31:24 GMT Server: - cloudflare Strict-Transport-Security: @@ -215,7 +214,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3043' + - '5181' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoff.test_agent_kickoff_with_failed_a2a_endpoint.yaml b/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoff.test_agent_kickoff_with_failed_a2a_endpoint.yaml index 27b27b4c1..10e18e6ee 100644 --- a/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoff.test_agent_kickoff_with_failed_a2a_endpoint.yaml +++ b/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoff.test_agent_kickoff_with_failed_a2a_endpoint.yaml @@ -37,13 +37,13 @@ interactions: x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.12.10 + - 3.13.3 method: POST uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D3qP75TkGfZcx59AyFhCifB7NeNve\",\n \"object\": - \"chat.completion\",\n \"created\": 1769808797,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + string: "{\n \"id\": \"chatcmpl-D8WiGEDTbwLcrRjnvxgSpt9XISVwN\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924744,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The sum of 2 + 2 is 4.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n @@ -52,7 +52,7 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_e01c6f58e1\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_75546bd1a7\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -61,11 +61,9 @@ interactions: Content-Type: - application/json Date: - - Fri, 30 Jan 2026 21:33:18 GMT + - Thu, 12 Feb 2026 19:32:25 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -81,11 +79,121 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1149' + - '988' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Research Analyst. Expert + researcher\nYour personal goal is: Find information"},{"role":"user","content":"\nCurrent + Task: What is 2 + 2?\n\nProvide your complete response:"}],"model":"gpt-4.1-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '246' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiHquzE7A8dBalX3phbPaOSXEnQ\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924745,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"The sum of 2 + 2 is 4.\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 43,\n \"completion_tokens\": 12,\n \"total_tokens\": 55,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_75546bd1a7\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:26 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '415' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoff.test_agent_without_a2a_works_normally.yaml b/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoff.test_agent_without_a2a_works_normally.yaml index ce86df05c..fb2b10c7c 100644 --- a/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoff.test_agent_without_a2a_works_normally.yaml +++ b/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoff.test_agent_without_a2a_works_normally.yaml @@ -37,13 +37,13 @@ interactions: x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.12.10 + - 3.13.3 method: POST uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D3qQLXvb3qeE7H25yFuZE7lYxOI0j\",\n \"object\": - \"chat.completion\",\n \"created\": 1769808873,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + string: "{\n \"id\": \"chatcmpl-D8WiFd3X8iE0Xk2N1S3L2k798qWFq\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924743,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Hello! How can I assist you today?\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -52,7 +52,7 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_e01c6f58e1\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_75546bd1a7\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -61,11 +61,9 @@ interactions: Content-Type: - application/json Date: - - Fri, 30 Jan 2026 21:34:33 GMT + - Thu, 12 Feb 2026 19:32:23 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -81,11 +79,121 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '358' + - '346' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Simple Assistant. A helpful + assistant\nYour personal goal is: Help with basic tasks"},{"role":"user","content":"\nCurrent + Task: Say hello\n\nProvide your complete response:"}],"model":"gpt-4.1-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '248' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiFOaYAAKsuxLAXe6PwTk5AjYdk\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924743,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"Hello! How can I assist you today?\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 41,\n \"completion_tokens\": 9,\n \"total_tokens\": 50,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_75546bd1a7\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:24 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '618' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoffAsync.test_agent_kickoff_async_delegates_to_a2a.yaml b/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoffAsync.test_agent_kickoff_async_delegates_to_a2a.yaml index 79c154e1c..35503b4e7 100644 --- a/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoffAsync.test_agent_kickoff_async_delegates_to_a2a.yaml +++ b/lib/crewai/tests/cassettes/agents/TestAgentA2AKickoffAsync.test_agent_kickoff_async_delegates_to_a2a.yaml @@ -1,60 +1,9 @@ interactions: -- request: - body: '' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - '*/*' - accept-encoding: - - ACCEPT-ENCODING-XXX - connection: - - keep-alive - host: - - localhost:9999 - method: GET - uri: http://localhost:9999/.well-known/agent-card.json - response: - body: - string: '{"capabilities":{"pushNotifications":true,"streaming":true},"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["text/plain","application/json"],"description":"An - AI assistant powered by OpenAI GPT with calculator and time tools. Ask questions, - perform calculations, or get the current time in any timezone.","name":"GPT - Assistant","preferredTransport":"JSONRPC","protocolVersion":"0.3.0","skills":[{"description":"Have - a general conversation with the AI assistant. Ask questions, get explanations, - or just chat.","examples":["Hello, how are you?","Explain quantum computing - in simple terms","What can you help me with?"],"id":"conversation","name":"General - Conversation","tags":["chat","conversation","general"]},{"description":"Perform - mathematical calculations including arithmetic, exponents, and more.","examples":["What - is 25 * 17?","Calculate 2^10","What''s (100 + 50) / 3?"],"id":"calculator","name":"Calculator","tags":["math","calculator","arithmetic"]},{"description":"Get - the current date and time in any timezone.","examples":["What time is it?","What''s - the current time in Tokyo?","What''s today''s date in New York?"],"id":"time","name":"Current - Time","tags":["time","date","timezone"]}],"url":"http://localhost:9999","version":"1.0.0"}' - headers: - content-length: - - '1272' - content-type: - - application/json - date: - - Fri, 30 Jan 2026 21:32:36 GMT - server: - - uvicorn - status: - code: 200 - message: OK - request: body: '{"messages":[{"role":"system","content":"You are Research Analyst. Expert researcher with access to remote agents\nYour personal goal is: Find and analyze information"},{"role":"user","content":"\nCurrent Task: Use the remote A2A agent - to calculate 10 plus 15.\n\nProvide your complete response:"}],"model":"gpt-4.1-mini","response_format":{"type":"json_schema","json_schema":{"schema":{"properties":{"a2a_ids":{"description":"A2A - agent IDs to delegate to.","items":{"const":"http://localhost:9999/.well-known/agent-card.json","type":"string"},"maxItems":1,"title":"A2A - Ids","type":"array"},"message":{"description":"The message content. If is_a2a=true, - this is sent to the A2A agent. If is_a2a=false, this is your final answer ending - the conversation.","title":"Message","type":"string"},"is_a2a":{"description":"Set - to false when the remote agent has answered your question - extract their answer - and return it as your final message. Set to true ONLY if you need to ask a NEW, - DIFFERENT question. NEVER repeat the same request - if the conversation history - shows the agent already answered, set is_a2a=false immediately.","title":"Is - A2A","type":"boolean"}},"required":["a2a_ids","message","is_a2a"],"title":"AgentResponse","type":"object","additionalProperties":false},"name":"AgentResponse","strict":true}},"stream":false}' + to calculate 10 plus 15.\n\nProvide your complete response:"}],"model":"gpt-4.1-mini"}' headers: User-Agent: - X-USER-AGENT-XXX @@ -67,7 +16,7 @@ interactions: connection: - keep-alive content-length: - - '1326' + - '322' content-type: - application/json host: @@ -76,8 +25,6 @@ interactions: - X-STAINLESS-ARCH-XXX x-stainless-async: - 'false' - x-stainless-helper-method: - - beta.chat.completions.parse x-stainless-lang: - python x-stainless-os: @@ -91,23 +38,23 @@ interactions: x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.12.10 + - 3.13.3 method: POST uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D3qOTnAG0KogwskyqSSZDRbSOtXHr\",\n \"object\": - \"chat.completion\",\n \"created\": 1769808757,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + string: "{\n \"id\": \"chatcmpl-D8WiD3djMj91vXlZgRexuoagt4YjK\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924741,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"{\\\"a2a_ids\\\":[\\\"http://localhost:9999/.well-known/agent-card.json\\\"],\\\"message\\\":\\\"Calculate - the sum of 10 plus 15.\\\",\\\"is_a2a\\\":true}\",\n \"refusal\": null,\n - \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 266,\n \"completion_tokens\": - 40,\n \"total_tokens\": 306,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"I am using the remote A2A agent to + calculate 10 plus 15.\\n\\nCalculation result: 10 + 15 = 25\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 57,\n \"completion_tokens\": 28,\n \"total_tokens\": 85,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_e01c6f58e1\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_75546bd1a7\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -116,31 +63,31 @@ interactions: Content-Type: - application/json Date: - - Fri, 30 Jan 2026 21:32:38 GMT + - Thu, 12 Feb 2026 19:32:21 GMT Server: - cloudflare - Set-Cookie: + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '633' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: - SET-COOKIE-XXX - Strict-Transport-Security: - - STS-XXX - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - X-CONTENT-TYPE-XXX - access-control-expose-headers: - - ACCESS-CONTROL-XXX - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - OPENAI-ORG-XXX - openai-processing-ms: - - '832' - openai-project: - - OPENAI-PROJECT-XXX - openai-version: - - '2020-10-01' x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -160,108 +107,11 @@ interactions: status: code: 200 message: OK -- request: - body: '' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - '*/*' - accept-encoding: - - ACCEPT-ENCODING-XXX - connection: - - keep-alive - host: - - localhost:9999 - method: GET - uri: http://localhost:9999/.well-known/agent-card.json - response: - body: - string: '{"capabilities":{"pushNotifications":true,"streaming":true},"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["text/plain","application/json"],"description":"An - AI assistant powered by OpenAI GPT with calculator and time tools. Ask questions, - perform calculations, or get the current time in any timezone.","name":"GPT - Assistant","preferredTransport":"JSONRPC","protocolVersion":"0.3.0","skills":[{"description":"Have - a general conversation with the AI assistant. Ask questions, get explanations, - or just chat.","examples":["Hello, how are you?","Explain quantum computing - in simple terms","What can you help me with?"],"id":"conversation","name":"General - Conversation","tags":["chat","conversation","general"]},{"description":"Perform - mathematical calculations including arithmetic, exponents, and more.","examples":["What - is 25 * 17?","Calculate 2^10","What''s (100 + 50) / 3?"],"id":"calculator","name":"Calculator","tags":["math","calculator","arithmetic"]},{"description":"Get - the current date and time in any timezone.","examples":["What time is it?","What''s - the current time in Tokyo?","What''s today''s date in New York?"],"id":"time","name":"Current - Time","tags":["time","date","timezone"]}],"url":"http://localhost:9999","version":"1.0.0"}' - headers: - content-length: - - '1272' - content-type: - - application/json - date: - - Fri, 30 Jan 2026 21:32:38 GMT - server: - - uvicorn - status: - code: 200 - message: OK -- request: - body: '{"id":"11e7f105-5324-4e70-af42-2db3a3e96054","jsonrpc":"2.0","method":"message/stream","params":{"configuration":{"acceptedOutputModes":["application/json"],"blocking":true},"message":{"kind":"message","messageId":"8ba087b8-e647-4e46-ba32-d163f2ef3f3b","parts":[{"kind":"text","text":"Calculate - the sum of 10 plus 15."}],"referenceTaskIds":[],"role":"user"}}}' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - '*/*, text/event-stream' - accept-encoding: - - ACCEPT-ENCODING-XXX - cache-control: - - no-store - connection: - - keep-alive - content-length: - - '359' - content-type: - - application/json - host: - - localhost:9999 - method: POST - uri: http://localhost:9999 - response: - body: - string: "data: {\"id\":\"11e7f105-5324-4e70-af42-2db3a3e96054\",\"jsonrpc\":\"2.0\",\"result\":{\"contextId\":\"2f5791a9-4dd2-4fe1-b637-ef4e8c7d3f78\",\"final\":false,\"kind\":\"status-update\",\"status\":{\"state\":\"submitted\"},\"taskId\":\"d5371a72-7ad4-4606-889d-040bdaf6dc62\"}}\r\n\r\ndata: - {\"id\":\"11e7f105-5324-4e70-af42-2db3a3e96054\",\"jsonrpc\":\"2.0\",\"result\":{\"contextId\":\"2f5791a9-4dd2-4fe1-b637-ef4e8c7d3f78\",\"final\":false,\"kind\":\"status-update\",\"status\":{\"state\":\"working\"},\"taskId\":\"d5371a72-7ad4-4606-889d-040bdaf6dc62\"}}\r\n\r\ndata: - {\"id\":\"11e7f105-5324-4e70-af42-2db3a3e96054\",\"jsonrpc\":\"2.0\",\"result\":{\"contextId\":\"2f5791a9-4dd2-4fe1-b637-ef4e8c7d3f78\",\"final\":true,\"kind\":\"status-update\",\"status\":{\"message\":{\"kind\":\"message\",\"messageId\":\"f9f4cc36-e504-4d2e-8e53-d061427adde6\",\"parts\":[{\"kind\":\"text\",\"text\":\"[Tool: - calculator] 10 + 15 = 25\\nThe sum of 10 plus 15 is 25.\"}],\"role\":\"agent\"},\"state\":\"completed\"},\"taskId\":\"d5371a72-7ad4-4606-889d-040bdaf6dc62\"}}\r\n\r\n" - headers: - cache-control: - - no-store - connection: - - keep-alive - content-type: - - text/event-stream; charset=utf-8 - date: - - Fri, 30 Jan 2026 21:32:38 GMT - server: - - uvicorn - transfer-encoding: - - chunked - x-accel-buffering: - - 'no' - status: - code: 200 - message: OK - request: body: '{"messages":[{"role":"system","content":"You are Research Analyst. Expert researcher with access to remote agents\nYour personal goal is: Find and analyze information"},{"role":"user","content":"\nCurrent Task: Use the remote A2A agent - to calculate 10 plus 15.\n\nProvide your complete response:"}],"model":"gpt-4.1-mini","response_format":{"type":"json_schema","json_schema":{"schema":{"properties":{"a2a_ids":{"description":"A2A - agent IDs to delegate to.","items":{"const":"http://localhost:9999/.well-known/agent-card.json","type":"string"},"maxItems":1,"title":"A2A - Ids","type":"array"},"message":{"description":"The message content. If is_a2a=true, - this is sent to the A2A agent. If is_a2a=false, this is your final answer ending - the conversation.","title":"Message","type":"string"},"is_a2a":{"description":"Set - to false when the remote agent has answered your question - extract their answer - and return it as your final message. Set to true ONLY if you need to ask a NEW, - DIFFERENT question. NEVER repeat the same request - if the conversation history - shows the agent already answered, set is_a2a=false immediately.","title":"Is - A2A","type":"boolean"}},"required":["a2a_ids","message","is_a2a"],"title":"AgentResponse","type":"object","additionalProperties":false},"name":"AgentResponse","strict":true}},"stream":false}' + to calculate 10 plus 15.\n\nProvide your complete response:"}],"model":"gpt-4.1-mini"}' headers: User-Agent: - X-USER-AGENT-XXX @@ -274,7 +124,7 @@ interactions: connection: - keep-alive content-length: - - '1326' + - '322' content-type: - application/json cookie: @@ -285,8 +135,6 @@ interactions: - X-STAINLESS-ARCH-XXX x-stainless-async: - 'false' - x-stainless-helper-method: - - beta.chat.completions.parse x-stainless-lang: - python x-stainless-os: @@ -300,23 +148,23 @@ interactions: x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.12.10 + - 3.13.3 method: POST uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D3qOYv1S9VAwloC7LrWOUABqHUtDO\",\n \"object\": - \"chat.completion\",\n \"created\": 1769808762,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + string: "{\n \"id\": \"chatcmpl-D8WiEa5fOdnyGxf1o0YYZRjEVstUX\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924742,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"{\\\"a2a_ids\\\":[\\\"http://localhost:9999/.well-known/agent-card.json\\\"],\\\"message\\\":\\\"Calculate - the sum of 10 plus 15.\\\",\\\"is_a2a\\\":true}\",\n \"refusal\": null,\n - \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 266,\n \"completion_tokens\": - 40,\n \"total_tokens\": 306,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"Using the remote A2A agent to calculate + 10 plus 15:\\n\\n10 + 15 = 25\\n\\nThe result is 25.\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 57,\n \"completion_tokens\": 29,\n \"total_tokens\": 86,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_e01c6f58e1\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_75546bd1a7\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -325,7 +173,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 30 Jan 2026 21:32:43 GMT + - Thu, 12 Feb 2026 19:32:22 GMT Server: - cloudflare Strict-Transport-Security: @@ -343,341 +191,13 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '658' - openai-project: - - OPENAI-PROJECT-XXX - openai-version: - - '2020-10-01' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - X-RATELIMIT-LIMIT-REQUESTS-XXX - x-ratelimit-limit-tokens: - - X-RATELIMIT-LIMIT-TOKENS-XXX - x-ratelimit-remaining-requests: - - X-RATELIMIT-REMAINING-REQUESTS-XXX - x-ratelimit-remaining-tokens: - - X-RATELIMIT-REMAINING-TOKENS-XXX - x-ratelimit-reset-requests: - - X-RATELIMIT-RESET-REQUESTS-XXX - x-ratelimit-reset-tokens: - - X-RATELIMIT-RESET-TOKENS-XXX - x-request-id: - - X-REQUEST-ID-XXX - status: - code: 200 - message: OK -- request: - body: '{"id":"93d4ded2-251f-47da-ae7b-2a135ec7cbb9","jsonrpc":"2.0","method":"message/stream","params":{"configuration":{"acceptedOutputModes":["application/json"],"blocking":true},"message":{"kind":"message","messageId":"08032897-ffdc-4a5e-8ae9-1124d49bbf01","parts":[{"kind":"text","text":"Calculate - the sum of 10 plus 15."}],"referenceTaskIds":[],"role":"user"}}}' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - '*/*, text/event-stream' - accept-encoding: - - ACCEPT-ENCODING-XXX - cache-control: - - no-store - connection: - - keep-alive - content-length: - - '359' - content-type: - - application/json - host: - - localhost:9999 - method: POST - uri: http://localhost:9999 - response: - body: - string: "data: {\"id\":\"93d4ded2-251f-47da-ae7b-2a135ec7cbb9\",\"jsonrpc\":\"2.0\",\"result\":{\"contextId\":\"a2b91c10-dc16-4dff-b807-3ea98016ff38\",\"final\":false,\"kind\":\"status-update\",\"status\":{\"state\":\"submitted\"},\"taskId\":\"2b0861b7-8d94-4325-97ab-aaae42f43581\"}}\r\n\r\ndata: - {\"id\":\"93d4ded2-251f-47da-ae7b-2a135ec7cbb9\",\"jsonrpc\":\"2.0\",\"result\":{\"contextId\":\"a2b91c10-dc16-4dff-b807-3ea98016ff38\",\"final\":false,\"kind\":\"status-update\",\"status\":{\"state\":\"working\"},\"taskId\":\"2b0861b7-8d94-4325-97ab-aaae42f43581\"}}\r\n\r\ndata: - {\"id\":\"93d4ded2-251f-47da-ae7b-2a135ec7cbb9\",\"jsonrpc\":\"2.0\",\"result\":{\"contextId\":\"a2b91c10-dc16-4dff-b807-3ea98016ff38\",\"final\":true,\"kind\":\"status-update\",\"status\":{\"message\":{\"kind\":\"message\",\"messageId\":\"e4e420da-aef9-489f-a3ca-39a97930dee8\",\"parts\":[{\"kind\":\"text\",\"text\":\"[Tool: - calculator] 10 + 15 = 25\\nThe sum of 10 plus 15 is 25.\"}],\"role\":\"agent\"},\"state\":\"completed\"},\"taskId\":\"2b0861b7-8d94-4325-97ab-aaae42f43581\"}}\r\n\r\n" - headers: - cache-control: - - no-store - connection: - - keep-alive - content-type: - - text/event-stream; charset=utf-8 - date: - - Fri, 30 Jan 2026 21:32:43 GMT - server: - - uvicorn - transfer-encoding: - - chunked - x-accel-buffering: - - 'no' - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"role":"system","content":"You are Research Analyst. Expert - researcher with access to remote agents\nYour personal goal is: Find and analyze - information"},{"role":"user","content":"\nCurrent Task: Use the remote A2A agent - to calculate 10 plus 15.\n\nProvide your complete response:"}],"model":"gpt-4.1-mini","response_format":{"type":"json_schema","json_schema":{"schema":{"properties":{"a2a_ids":{"description":"A2A - agent IDs to delegate to.","items":{"const":"http://localhost:9999/.well-known/agent-card.json","type":"string"},"maxItems":1,"title":"A2A - Ids","type":"array"},"message":{"description":"The message content. If is_a2a=true, - this is sent to the A2A agent. If is_a2a=false, this is your final answer ending - the conversation.","title":"Message","type":"string"},"is_a2a":{"description":"Set - to false when the remote agent has answered your question - extract their answer - and return it as your final message. Set to true ONLY if you need to ask a NEW, - DIFFERENT question. NEVER repeat the same request - if the conversation history - shows the agent already answered, set is_a2a=false immediately.","title":"Is - A2A","type":"boolean"}},"required":["a2a_ids","message","is_a2a"],"title":"AgentResponse","type":"object","additionalProperties":false},"name":"AgentResponse","strict":true}},"stream":false}' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - application/json - accept-encoding: - - ACCEPT-ENCODING-XXX - authorization: - - AUTHORIZATION-XXX - connection: - - keep-alive - content-length: - - '1326' - content-type: - - application/json - cookie: - - COOKIE-XXX - host: - - api.openai.com - x-stainless-arch: - - X-STAINLESS-ARCH-XXX - x-stainless-async: - - 'false' - x-stainless-helper-method: - - beta.chat.completions.parse - x-stainless-lang: - - python - x-stainless-os: - - X-STAINLESS-OS-XXX - x-stainless-package-version: - - 1.83.0 - x-stainless-read-timeout: - - X-STAINLESS-READ-TIMEOUT-XXX - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.10 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-D3qOcC0ycRtx6l3V88o2KbMLXk24S\",\n \"object\": - \"chat.completion\",\n \"created\": 1769808766,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"{\\\"a2a_ids\\\":[\\\"http://localhost:9999/.well-known/agent-card.json\\\"],\\\"message\\\":\\\"Calculate - the sum of 10 plus 15.\\\",\\\"is_a2a\\\":true}\",\n \"refusal\": null,\n - \ \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 266,\n \"completion_tokens\": - 40,\n \"total_tokens\": 306,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_e01c6f58e1\"\n}\n" - headers: - CF-RAY: - - CF-RAY-XXX - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Fri, 30 Jan 2026 21:32:47 GMT - Server: - - cloudflare - Strict-Transport-Security: - - STS-XXX - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - X-CONTENT-TYPE-XXX - access-control-expose-headers: - - ACCESS-CONTROL-XXX - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - OPENAI-ORG-XXX - openai-processing-ms: - - '644' - openai-project: - - OPENAI-PROJECT-XXX - openai-version: - - '2020-10-01' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - X-RATELIMIT-LIMIT-REQUESTS-XXX - x-ratelimit-limit-tokens: - - X-RATELIMIT-LIMIT-TOKENS-XXX - x-ratelimit-remaining-requests: - - X-RATELIMIT-REMAINING-REQUESTS-XXX - x-ratelimit-remaining-tokens: - - X-RATELIMIT-REMAINING-TOKENS-XXX - x-ratelimit-reset-requests: - - X-RATELIMIT-RESET-REQUESTS-XXX - x-ratelimit-reset-tokens: - - X-RATELIMIT-RESET-TOKENS-XXX - x-request-id: - - X-REQUEST-ID-XXX - status: - code: 200 - message: OK -- request: - body: '{"id":"be92898e-ac10-4bed-a54c-d40e747c85f3","jsonrpc":"2.0","method":"message/stream","params":{"configuration":{"acceptedOutputModes":["application/json"],"blocking":true},"message":{"kind":"message","messageId":"0f12aa81-afb8-419b-9d52-b47cc6c21329","parts":[{"kind":"text","text":"Calculate - the sum of 10 plus 15."}],"referenceTaskIds":[],"role":"user"}}}' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - '*/*, text/event-stream' - accept-encoding: - - ACCEPT-ENCODING-XXX - cache-control: - - no-store - connection: - - keep-alive - content-length: - - '359' - content-type: - - application/json - host: - - localhost:9999 - method: POST - uri: http://localhost:9999 - response: - body: - string: "data: {\"id\":\"be92898e-ac10-4bed-a54c-d40e747c85f3\",\"jsonrpc\":\"2.0\",\"result\":{\"contextId\":\"e13fc32d-ead2-4f01-b852-7fd1b7b73983\",\"final\":false,\"kind\":\"status-update\",\"status\":{\"state\":\"submitted\"},\"taskId\":\"cdaba0fb-081e-4950-91da-9635c0bd1336\"}}\r\n\r\ndata: - {\"id\":\"be92898e-ac10-4bed-a54c-d40e747c85f3\",\"jsonrpc\":\"2.0\",\"result\":{\"contextId\":\"e13fc32d-ead2-4f01-b852-7fd1b7b73983\",\"final\":false,\"kind\":\"status-update\",\"status\":{\"state\":\"working\"},\"taskId\":\"cdaba0fb-081e-4950-91da-9635c0bd1336\"}}\r\n\r\ndata: - {\"id\":\"be92898e-ac10-4bed-a54c-d40e747c85f3\",\"jsonrpc\":\"2.0\",\"result\":{\"contextId\":\"e13fc32d-ead2-4f01-b852-7fd1b7b73983\",\"final\":true,\"kind\":\"status-update\",\"status\":{\"message\":{\"kind\":\"message\",\"messageId\":\"bb905c5a-34c8-4a02-9ba3-5713790e2a00\",\"parts\":[{\"kind\":\"text\",\"text\":\"[Tool: - calculator] 10 + 15 = 25\\nThe sum of 10 plus 15 is 25.\"}],\"role\":\"agent\"},\"state\":\"completed\"},\"taskId\":\"cdaba0fb-081e-4950-91da-9635c0bd1336\"}}\r\n\r\n" - headers: - cache-control: - - no-store - connection: - - keep-alive - content-type: - - text/event-stream; charset=utf-8 - date: - - Fri, 30 Jan 2026 21:32:47 GMT - server: - - uvicorn - transfer-encoding: - - chunked - x-accel-buffering: - - 'no' - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"role":"system","content":"You are Research Analyst. Expert - researcher with access to remote agents\nYour personal goal is: Find and analyze - information"},{"role":"user","content":"\nCurrent Task: Use the remote A2A agent - to calculate 10 plus 15.\n\nProvide your complete response:"}],"model":"gpt-4.1-mini","response_format":{"type":"json_schema","json_schema":{"schema":{"properties":{"a2a_ids":{"description":"A2A - agent IDs to delegate to.","items":{"const":"http://localhost:9999/.well-known/agent-card.json","type":"string"},"maxItems":1,"title":"A2A - Ids","type":"array"},"message":{"description":"The message content. If is_a2a=true, - this is sent to the A2A agent. If is_a2a=false, this is your final answer ending - the conversation.","title":"Message","type":"string"},"is_a2a":{"description":"Set - to false when the remote agent has answered your question - extract their answer - and return it as your final message. Set to true ONLY if you need to ask a NEW, - DIFFERENT question. NEVER repeat the same request - if the conversation history - shows the agent already answered, set is_a2a=false immediately.","title":"Is - A2A","type":"boolean"}},"required":["a2a_ids","message","is_a2a"],"title":"AgentResponse","type":"object","additionalProperties":false},"name":"AgentResponse","strict":true}},"stream":false}' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - application/json - accept-encoding: - - ACCEPT-ENCODING-XXX - authorization: - - AUTHORIZATION-XXX - connection: - - keep-alive - content-length: - - '1326' - content-type: - - application/json - cookie: - - COOKIE-XXX - host: - - api.openai.com - x-stainless-arch: - - X-STAINLESS-ARCH-XXX - x-stainless-async: - - 'false' - x-stainless-helper-method: - - beta.chat.completions.parse - x-stainless-lang: - - python - x-stainless-os: - - X-STAINLESS-OS-XXX - x-stainless-package-version: - - 1.83.0 - x-stainless-read-timeout: - - X-STAINLESS-READ-TIMEOUT-XXX - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.10 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-D3qOgAECMjCxhfMRaNqRNLVGefrXr\",\n \"object\": - \"chat.completion\",\n \"created\": 1769808770,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"{\\\"a2a_ids\\\":[\\\"http://localhost:9999/.well-known/agent-card.json\\\"],\\\"message\\\":\\\"Calculate - 10 plus 15.\\\",\\\"is_a2a\\\":true}\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 266,\n \"completion_tokens\": - 37,\n \"total_tokens\": 303,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_e01c6f58e1\"\n}\n" - headers: - CF-RAY: - - CF-RAY-XXX - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Fri, 30 Jan 2026 21:32:51 GMT - Server: - - cloudflare - Strict-Transport-Security: - - STS-XXX - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - X-CONTENT-TYPE-XXX - access-control-expose-headers: - - ACCESS-CONTROL-XXX - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - OPENAI-ORG-XXX - openai-processing-ms: - - '795' + - '581' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/agents/test_agent_kickoff_multi_step_task_with_planning.yaml b/lib/crewai/tests/cassettes/agents/test_agent_kickoff_multi_step_task_with_planning.yaml index 6efd74ee1..ec8b74080 100644 --- a/lib/crewai/tests/cassettes/agents/test_agent_kickoff_multi_step_task_with_planning.yaml +++ b/lib/crewai/tests/cassettes/agents/test_agent_kickoff_multi_step_task_with_planning.yaml @@ -4,19 +4,26 @@ interactions: Create minimal, effective execution plans. Prefer fewer steps over more."},{"role":"user","content":"Create a focused execution plan for the following task:\n\n## Task\nFind the first 3 prime numbers, add them together, then multiply by 2.\n\n## Expected Output\nComplete - the task successfully\n\n## Available Tools\nNo tools available\n\n## Instructions\nCreate - ONLY the essential steps needed to complete this task. Use the MINIMUM number - of steps required - do NOT pad your plan with unnecessary steps. Most tasks - need only 2-5 steps.\n\nFor each step:\n- State the specific action to take\n- - Specify which tool to use (if any)\n\nDo NOT include:\n- Setup or preparation - steps that are obvious\n- Verification steps unless critical\n- Documentation - or cleanup steps unless explicitly required\n- Generic steps like \"review results\" - or \"finalize output\"\n\nAfter your plan, state:\n- \"READY: I am ready to - execute the task.\" if the plan is complete\n- \"NOT READY: I need to refine - my plan because [reason].\" if you need more thinking"}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"create_reasoning_plan","description":"Create - or refine a reasoning plan for a task","strict":true,"parameters":{"type":"object","properties":{"plan":{"type":"string","description":"The - detailed reasoning plan for the task."},"ready":{"type":"boolean","description":"Whether - the agent is ready to execute the task."}},"required":["plan","ready"],"additionalProperties":false}}}]}' + the task successfully\n\n## Available Tools\nNo tools available\n\n## Planning + Principles\nFocus on WHAT needs to be accomplished, not HOW. Group related actions + into logical units. Fewer steps = better. Most tasks need 3-6 steps. Hard limit: + 5 steps.\n\n## Step Types (only these are valid):\n1. **Tool Step**: Uses a + tool to gather information or take action\n2. **Output Step**: Synthesizes prior + results into the final deliverable (usually the last step)\n\n## Rules:\n- Each + step must either USE A TOOL or PRODUCE THE FINAL OUTPUT\n- Combine related tool + calls: \"Research A, B, and C\" = ONE step, not three\n- Combine all synthesis + into ONE final output step\n- NO standalone \"thinking\" steps (review, verify, + confirm, refine, analyze) - these happen naturally between steps\n\nFor each + step: State the action, specify the tool (if any), and note dependencies.\n\nAfter + your plan, state READY or NOT READY."}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"create_reasoning_plan","description":"Create + or refine a reasoning plan for a task with structured steps","strict":true,"parameters":{"type":"object","properties":{"plan":{"type":"string","description":"A + brief summary of the overall plan."},"steps":{"type":"array","description":"List + of discrete steps to execute the plan","items":{"type":"object","properties":{"step_number":{"type":"integer","description":"Step + number (1-based)"},"description":{"type":"string","description":"What to do + in this step"},"tool_to_use":{"type":["string","null"],"description":"Tool to + use for this step, or null if no tool needed"},"depends_on":{"type":"array","items":{"type":"integer"},"description":"Step + numbers this step depends on (empty array if none)"}},"required":["step_number","description","tool_to_use","depends_on"],"additionalProperties":false}},"ready":{"type":"boolean","description":"Whether + the agent is ready to execute the task."}},"required":["plan","steps","ready"],"additionalProperties":false}}}]}' headers: User-Agent: - X-USER-AGENT-XXX @@ -29,7 +36,7 @@ interactions: connection: - keep-alive content-length: - - '1597' + - '2370' content-type: - application/json host: @@ -56,20 +63,27 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D4yU0MD5GfSUjRW0R4cBmFJ6Hcjbi\",\n \"object\": - \"chat.completion\",\n \"created\": 1770078180,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WiFK7QF5Icfbx7iz1C8ltjnm7X0\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924743,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"### Execution Plan\\n1. Identify the - first 3 prime numbers: 2, 3, and 5.\\n2. Add the prime numbers together: 2 - + 3 + 5 = 10.\\n3. Multiply the sum by 2: 10 * 2 = 20.\\n\\nREADY: I am ready - to execute the task.\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 291,\n \"completion_tokens\": - 73,\n \"total_tokens\": 364,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n + \ \"id\": \"call_YOYtSSFAJG2mkINmxP7gdQO9\",\n \"type\": + \"function\",\n \"function\": {\n \"name\": \"create_reasoning_plan\",\n + \ \"arguments\": \"{\\\"plan\\\":\\\"Find the first 3 prime numbers, + add them together, then multiply by 2.\\\",\\\"steps\\\":[{\\\"step_number\\\":1,\\\"description\\\":\\\"Identify + the first 3 prime numbers.\\\",\\\"tool_to_use\\\":null,\\\"depends_on\\\":[]},{\\\"step_number\\\":2,\\\"description\\\":\\\"Add + the first 3 prime numbers together.\\\",\\\"tool_to_use\\\":null,\\\"depends_on\\\":[1]}, + {\\\"step_number\\\":3,\\\"description\\\":\\\"Multiply the sum by 2.\\\",\\\"tool_to_use\\\":null,\\\"depends_on\\\":[2]}, + {\\\"step_number\\\":4,\\\"description\\\":\\\"Produce the final output with + the result.\\\",\\\"tool_to_use\\\":null,\\\"depends_on\\\":[3]}],\\\"ready\\\":true}\"\n + \ }\n }\n ],\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"tool_calls\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 450,\n \"completion_tokens\": + 145,\n \"total_tokens\": 595,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -78,11 +92,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 03 Feb 2026 00:23:02 GMT + - Thu, 12 Feb 2026 19:32:25 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -98,11 +110,13 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1253' + - '2775' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -124,9 +138,13 @@ interactions: message: OK - request: body: '{"messages":[{"role":"system","content":"You are Math Tutor. An expert - tutor who explains step by step\nYour personal goal is: Solve multi-step math - problems"},{"role":"user","content":"\nCurrent Task: Find the first 3 prime - numbers, add them together, then multiply by 2.\n\nProvide your complete response:"}],"model":"gpt-4o-mini"}' + tutor who explains step by step\n\nYour goal: Solve multi-step math problems\n\nYou + are executing a specific step in a multi-step plan. Focus ONLY on completing\nthe + current step. Do not plan ahead or worry about future steps.\n\nBefore acting, + briefly reason about what you need to do and which approach\nor tool would be + most helpful for this specific step."},{"role":"user","content":"## Current + Step\nIdentify the first 3 prime numbers.\n\nComplete this step and provide + your result."}],"model":"gpt-4o-mini"}' headers: User-Agent: - X-USER-AGENT-XXX @@ -139,7 +157,7 @@ interactions: connection: - keep-alive content-length: - - '333' + - '584' content-type: - application/json cookie: @@ -168,28 +186,23 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D4yU2qY6Xqpkz2D5yVAwagQzuPpen\",\n \"object\": - \"chat.completion\",\n \"created\": 1770078182,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WiHkznC6ZcTGS3q4hz6f7FCHbiB\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924745,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"To solve the problem, let\u2019s go - through each step methodically.\\n\\n1. **Identify the first three prime numbers**:\\n - \ - **Prime numbers** are numbers greater than 1 that have no positive divisors - other than 1 and themselves.\\n - The first three prime numbers are:\\n - \ - 2\\n - 3\\n - 5\\n\\n2. **Add these prime numbers together**:\\n - \ - We add them together:\\n \\\\[\\n 2 + 3 + 5\\n \\\\]\\n - - Performing the addition step-by-step:\\n - First, add 2 and 3:\\n \\\\[\\n - \ 2 + 3 = 5\\n \\\\]\\n - Then add 5 to this result:\\n \\\\[\\n - \ 5 + 5 = 10\\n \\\\]\\n - So, the sum of the first three prime - numbers is **10**.\\n\\n3. **Multiply the sum by 2**:\\n - Now we multiply - the result by 2:\\n \\\\[\\n 10 \\\\times 2 = 20\\n \\\\]\\n \\nTherefore, - the final answer is **20**.\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 62,\n \"completion_tokens\": - 236,\n \"total_tokens\": 298,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"To identify the first three prime numbers, + we need to recall that a prime number is defined as a natural number greater + than 1 that has no positive divisors other than 1 and itself.\\n\\n1. The + number 2 is the first prime number because its only divisors are 1 and 2.\\n2. + The number 3 is the second prime number because its only divisors are 1 and + 3.\\n3. The number 5 is the third prime number because its only divisors are + 1 and 5.\\n\\nThus, the first three prime numbers are **2, 3, and 5**.\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 111,\n \"completion_tokens\": 127,\n \"total_tokens\": 238,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -198,7 +211,7 @@ interactions: Content-Type: - application/json Date: - - Tue, 03 Feb 2026 00:23:06 GMT + - Thu, 12 Feb 2026 19:32:28 GMT Server: - cloudflare Strict-Transport-Security: @@ -216,11 +229,1148 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3846' + - '2947' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are a Planning Agent + observing execution progress. After each step completes, you analyze what happened + and decide whether the remaining plan is still valid.\\n\\nReason step-by-step + about:\\n1. What new information was learned from this step's result\\n2. Whether + the remaining steps still make sense given this new information\\n3. What refinements, + if any, are needed for upcoming steps\\n4. Whether the overall goal has already + been achieved\\n\\nBe conservative about triggering full replans \u2014 only + do so when the remaining plan is fundamentally wrong, not just suboptimal.\"},{\"role\":\"user\",\"content\":\"## + Original task\\n\\n\\n## Expected output\\n\\n\\n\\n## Just completed step 1\\nDescription: + Identify the first 3 prime numbers.\\nResult: To identify the first three prime + numbers, we need to recall that a prime number is defined as a natural number + greater than 1 that has no positive divisors other than 1 and itself.\\n\\n1. + The number 2 is the first prime number because its only divisors are 1 and 2.\\n2. + The number 3 is the second prime number because its only divisors are 1 and + 3.\\n3. The number 5 is the third prime number because its only divisors are + 1 and 5.\\n\\nThus, the first three prime numbers are **2, 3, and 5**.\\n\\n## + Remaining plan steps:\\n Step 2: Add the first 3 prime numbers together.\\n + \ Step 3: Multiply the sum by 2.\\n Step 4: Produce the final output with the + result.\\n\\nAnalyze this step's result and provide your observation.\"}],\"model\":\"gpt-4o-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"description\":\"Planner's + observation after a step execution completes.\\n\\nReturned by the PlannerObserver + after EVERY step \u2014 not just failures.\\nThe Planner uses this to decide + whether to continue, refine, or replan.\\n\\nBased on PLAN-AND-ACT (Section + 3.3): the Planner observes what the Executor\\ndid and incorporates new information + into the remaining plan.\\n\\nAttributes:\\n step_completed_successfully: + Whether the step achieved its objective.\\n key_information_learned: New + information revealed by this step\\n (e.g., \\\"Found 3 products: A, + B, C\\\"). Used to refine upcoming steps.\\n remaining_plan_still_valid: + Whether pending todos still make sense\\n given the new information. + True does NOT mean no refinement needed.\\n suggested_refinements: Minor + tweaks to upcoming step descriptions.\\n These are lightweight in-place + updates, not a full replan.\\n Example: [\\\"Step 3 should select product + B instead of 'best product'\\\"]\\n needs_full_replan: The remaining plan + is fundamentally wrong and must\\n be regenerated from scratch. Mutually + exclusive with\\n remaining_plan_still_valid (if this is True, that should + be False).\\n replan_reason: Explanation of why a full replan is needed (None + if not).\\n goal_already_achieved: The overall task goal has been satisfied + early.\\n No more steps needed \u2014 skip remaining todos and finalize.\",\"properties\":{\"step_completed_successfully\":{\"description\":\"Whether + the step achieved what it was asked to do\",\"title\":\"Step Completed Successfully\",\"type\":\"boolean\"},\"key_information_learned\":{\"default\":\"\",\"description\":\"What + new information this step revealed\",\"title\":\"Key Information Learned\",\"type\":\"string\"},\"remaining_plan_still_valid\":{\"default\":true,\"description\":\"Whether + the remaining pending todos still make sense given new information\",\"title\":\"Remaining + Plan Still Valid\",\"type\":\"boolean\"},\"suggested_refinements\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"description\":\"Minor + tweaks to descriptions of upcoming steps (lightweight, no full replan)\",\"title\":\"Suggested + Refinements\"},\"needs_full_replan\":{\"default\":false,\"description\":\"The + remaining plan is fundamentally wrong and must be regenerated\",\"title\":\"Needs + Full Replan\",\"type\":\"boolean\"},\"replan_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Explanation + of why a full replan is needed\",\"title\":\"Replan Reason\"},\"goal_already_achieved\":{\"default\":false,\"description\":\"The + overall task goal has been satisfied early; no more steps needed\",\"title\":\"Goal + Already Achieved\",\"type\":\"boolean\"}},\"required\":[\"step_completed_successfully\",\"key_information_learned\",\"remaining_plan_still_valid\",\"suggested_refinements\",\"needs_full_replan\",\"replan_reason\",\"goal_already_achieved\"],\"title\":\"StepObservation\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"StepObservation\",\"strict\":true}},\"stream\":false}" + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '4513' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-helper-method: + - beta.chat.completions.parse + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiLaTPDdyTFXHcopouqo6NlRqqq\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924749,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"{\\\"step_completed_successfully\\\":true,\\\"key_information_learned\\\":\\\"The + first three prime numbers have been correctly identified as 2, 3, and 5.\\\",\\\"remaining_plan_still_valid\\\":true,\\\"suggested_refinements\\\":null,\\\"needs_full_replan\\\":false,\\\"replan_reason\\\":null,\\\"goal_already_achieved\\\":false}\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 908,\n \"completion_tokens\": 72,\n \"total_tokens\": 980,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:31 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '1747' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Math Tutor. An expert + tutor who explains step by step\n\nYour goal: Solve multi-step math problems\n\nYou + are executing a specific step in a multi-step plan. Focus ONLY on completing\nthe + current step. Do not plan ahead or worry about future steps.\n\nBefore acting, + briefly reason about what you need to do and which approach\nor tool would be + most helpful for this specific step."},{"role":"user","content":"## Current + Step\nAdd the first 3 prime numbers together.\n\n## Context from previous steps:\nStep + 1 result: To identify the first three prime numbers, we need to recall that + a prime number is defined as a natural number greater than 1 that has no positive + divisors other than 1 and itself.\n\n1. The number 2 is the first prime number + because its only divisors are 1 and 2.\n2. The number 3 is the second prime + number because its only divisors are 1 and 3.\n3. The number 5 is the third + prime number because its only divisors are 1 and 5.\n\nThus, the first three + prime numbers are **2, 3, and 5**.\n\nComplete this step and provide your result."}],"model":"gpt-4o-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '1130' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiNg8VxMe8JyYHSIR4VgWY3dSRF\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924751,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"To complete this step, I need to add + the first three prime numbers identified in the previous step: 2, 3, and 5. + \\n\\nHere's how the addition works:\\n\\n1. First, add 2 and 3:\\n \\\\[\\n + \ 2 + 3 = 5\\n \\\\]\\n\\n2. Next, take the result (5) and add 5 to it:\\n + \ \\\\[\\n 5 + 5 = 10\\n \\\\]\\n\\nSo, the sum of the first three prime + numbers (2 + 3 + 5) is **10**.\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 250,\n \"completion_tokens\": + 121,\n \"total_tokens\": 371,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:34 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '3315' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are a Planning Agent + observing execution progress. After each step completes, you analyze what happened + and decide whether the remaining plan is still valid.\\n\\nReason step-by-step + about:\\n1. What new information was learned from this step's result\\n2. Whether + the remaining steps still make sense given this new information\\n3. What refinements, + if any, are needed for upcoming steps\\n4. Whether the overall goal has already + been achieved\\n\\nBe conservative about triggering full replans \u2014 only + do so when the remaining plan is fundamentally wrong, not just suboptimal.\"},{\"role\":\"user\",\"content\":\"## + Original task\\n\\n\\n## Expected output\\n\\n\\n## Previously completed steps:\\n + \ Step 1: Identify the first 3 prime numbers.\\n Result: To identify the + first three prime numbers, we need to recall that a prime number is defined + as a natural number greater than 1 that has no positive divisors other than + 1 and itself.\\n\\n1. The number 2 i\\n\\n## Just completed step 2\\nDescription: + Add the first 3 prime numbers together.\\nResult: To complete this step, I need + to add the first three prime numbers identified in the previous step: 2, 3, + and 5. \\n\\nHere's how the addition works:\\n\\n1. First, add 2 and 3:\\n \\\\[\\n + \ 2 + 3 = 5\\n \\\\]\\n\\n2. Next, take the result (5) and add 5 to it:\\n + \ \\\\[\\n 5 + 5 = 10\\n \\\\]\\n\\nSo, the sum of the first three prime + numbers (2 + 3 + 5) is **10**.\\n\\n## Remaining plan steps:\\n Step 3: Multiply + the sum by 2.\\n Step 4: Produce the final output with the result.\\n\\nAnalyze + this step's result and provide your observation.\"}],\"model\":\"gpt-4o-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"description\":\"Planner's + observation after a step execution completes.\\n\\nReturned by the PlannerObserver + after EVERY step \u2014 not just failures.\\nThe Planner uses this to decide + whether to continue, refine, or replan.\\n\\nBased on PLAN-AND-ACT (Section + 3.3): the Planner observes what the Executor\\ndid and incorporates new information + into the remaining plan.\\n\\nAttributes:\\n step_completed_successfully: + Whether the step achieved its objective.\\n key_information_learned: New + information revealed by this step\\n (e.g., \\\"Found 3 products: A, + B, C\\\"). Used to refine upcoming steps.\\n remaining_plan_still_valid: + Whether pending todos still make sense\\n given the new information. + True does NOT mean no refinement needed.\\n suggested_refinements: Minor + tweaks to upcoming step descriptions.\\n These are lightweight in-place + updates, not a full replan.\\n Example: [\\\"Step 3 should select product + B instead of 'best product'\\\"]\\n needs_full_replan: The remaining plan + is fundamentally wrong and must\\n be regenerated from scratch. Mutually + exclusive with\\n remaining_plan_still_valid (if this is True, that should + be False).\\n replan_reason: Explanation of why a full replan is needed (None + if not).\\n goal_already_achieved: The overall task goal has been satisfied + early.\\n No more steps needed \u2014 skip remaining todos and finalize.\",\"properties\":{\"step_completed_successfully\":{\"description\":\"Whether + the step achieved what it was asked to do\",\"title\":\"Step Completed Successfully\",\"type\":\"boolean\"},\"key_information_learned\":{\"default\":\"\",\"description\":\"What + new information this step revealed\",\"title\":\"Key Information Learned\",\"type\":\"string\"},\"remaining_plan_still_valid\":{\"default\":true,\"description\":\"Whether + the remaining pending todos still make sense given new information\",\"title\":\"Remaining + Plan Still Valid\",\"type\":\"boolean\"},\"suggested_refinements\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"description\":\"Minor + tweaks to descriptions of upcoming steps (lightweight, no full replan)\",\"title\":\"Suggested + Refinements\"},\"needs_full_replan\":{\"default\":false,\"description\":\"The + remaining plan is fundamentally wrong and must be regenerated\",\"title\":\"Needs + Full Replan\",\"type\":\"boolean\"},\"replan_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Explanation + of why a full replan is needed\",\"title\":\"Replan Reason\"},\"goal_already_achieved\":{\"default\":false,\"description\":\"The + overall task goal has been satisfied early; no more steps needed\",\"title\":\"Goal + Already Achieved\",\"type\":\"boolean\"}},\"required\":[\"step_completed_successfully\",\"key_information_learned\",\"remaining_plan_still_valid\",\"suggested_refinements\",\"needs_full_replan\",\"replan_reason\",\"goal_already_achieved\"],\"title\":\"StepObservation\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"StepObservation\",\"strict\":true}},\"stream\":false}" + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '4625' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-helper-method: + - beta.chat.completions.parse + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiQrF4YDRgLfl0fzgyDnMNryCIh\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924754,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"{\\\"step_completed_successfully\\\":true,\\\"key_information_learned\\\":\\\"The + sum of the first three prime numbers, 2, 3, and 5, is correctly calculated + to be 10.\\\",\\\"remaining_plan_still_valid\\\":true,\\\"suggested_refinements\\\":null,\\\"needs_full_replan\\\":false,\\\"replan_reason\\\":null,\\\"goal_already_achieved\\\":false}\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 957,\n \"completion_tokens\": 79,\n \"total_tokens\": 1036,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:36 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '1396' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Math Tutor. An expert + tutor who explains step by step\n\nYour goal: Solve multi-step math problems\n\nYou + are executing a specific step in a multi-step plan. Focus ONLY on completing\nthe + current step. Do not plan ahead or worry about future steps.\n\nBefore acting, + briefly reason about what you need to do and which approach\nor tool would be + most helpful for this specific step."},{"role":"user","content":"## Current + Step\nMultiply the sum by 2.\n\n## Context from previous steps:\nStep 2 result: + To complete this step, I need to add the first three prime numbers identified + in the previous step: 2, 3, and 5. \n\nHere''s how the addition works:\n\n1. + First, add 2 and 3:\n \\[\n 2 + 3 = 5\n \\]\n\n2. Next, take the result + (5) and add 5 to it:\n \\[\n 5 + 5 = 10\n \\]\n\nSo, the sum of the first + three prime numbers (2 + 3 + 5) is **10**.\n\nComplete this step and provide + your result."}],"model":"gpt-4o-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '977' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiSitv8CqR2MGcRRtJZemm0vfeR\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924756,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"To complete the current step, I need + to multiply the sum (which is 10) by 2.\\n\\nHere's how the multiplication + works:\\n\\n\\\\[\\n10 \\\\times 2 = 20\\n\\\\]\\n\\nThus, the result after + multiplying the sum by 2 is **20**.\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 242,\n \"completion_tokens\": + 57,\n \"total_tokens\": 299,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:37 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '1694' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are a Planning Agent + observing execution progress. After each step completes, you analyze what happened + and decide whether the remaining plan is still valid.\\n\\nReason step-by-step + about:\\n1. What new information was learned from this step's result\\n2. Whether + the remaining steps still make sense given this new information\\n3. What refinements, + if any, are needed for upcoming steps\\n4. Whether the overall goal has already + been achieved\\n\\nBe conservative about triggering full replans \u2014 only + do so when the remaining plan is fundamentally wrong, not just suboptimal.\"},{\"role\":\"user\",\"content\":\"## + Original task\\n\\n\\n## Expected output\\n\\n\\n## Previously completed steps:\\n + \ Step 1: Identify the first 3 prime numbers.\\n Result: To identify the + first three prime numbers, we need to recall that a prime number is defined + as a natural number greater than 1 that has no positive divisors other than + 1 and itself.\\n\\n1. The number 2 i\\n Step 2: Add the first 3 prime numbers + together.\\n Result: To complete this step, I need to add the first three + prime numbers identified in the previous step: 2, 3, and 5. \\n\\nHere's how + the addition works:\\n\\n1. First, add 2 and 3:\\n \\\\[\\n 2 + 3 = 5\\n + \ \\\\]\\n\\n2. N\\n\\n## Just completed step 3\\nDescription: Multiply the + sum by 2.\\nResult: To complete the current step, I need to multiply the sum + (which is 10) by 2.\\n\\nHere's how the multiplication works:\\n\\n\\\\[\\n10 + \\\\times 2 = 20\\n\\\\]\\n\\nThus, the result after multiplying the sum by + 2 is **20**.\\n\\n## Remaining plan steps:\\n Step 4: Produce the final output + with the result.\\n\\nAnalyze this step's result and provide your observation.\"}],\"model\":\"gpt-4o-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"description\":\"Planner's + observation after a step execution completes.\\n\\nReturned by the PlannerObserver + after EVERY step \u2014 not just failures.\\nThe Planner uses this to decide + whether to continue, refine, or replan.\\n\\nBased on PLAN-AND-ACT (Section + 3.3): the Planner observes what the Executor\\ndid and incorporates new information + into the remaining plan.\\n\\nAttributes:\\n step_completed_successfully: + Whether the step achieved its objective.\\n key_information_learned: New + information revealed by this step\\n (e.g., \\\"Found 3 products: A, + B, C\\\"). Used to refine upcoming steps.\\n remaining_plan_still_valid: + Whether pending todos still make sense\\n given the new information. + True does NOT mean no refinement needed.\\n suggested_refinements: Minor + tweaks to upcoming step descriptions.\\n These are lightweight in-place + updates, not a full replan.\\n Example: [\\\"Step 3 should select product + B instead of 'best product'\\\"]\\n needs_full_replan: The remaining plan + is fundamentally wrong and must\\n be regenerated from scratch. Mutually + exclusive with\\n remaining_plan_still_valid (if this is True, that should + be False).\\n replan_reason: Explanation of why a full replan is needed (None + if not).\\n goal_already_achieved: The overall task goal has been satisfied + early.\\n No more steps needed \u2014 skip remaining todos and finalize.\",\"properties\":{\"step_completed_successfully\":{\"description\":\"Whether + the step achieved what it was asked to do\",\"title\":\"Step Completed Successfully\",\"type\":\"boolean\"},\"key_information_learned\":{\"default\":\"\",\"description\":\"What + new information this step revealed\",\"title\":\"Key Information Learned\",\"type\":\"string\"},\"remaining_plan_still_valid\":{\"default\":true,\"description\":\"Whether + the remaining pending todos still make sense given new information\",\"title\":\"Remaining + Plan Still Valid\",\"type\":\"boolean\"},\"suggested_refinements\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"description\":\"Minor + tweaks to descriptions of upcoming steps (lightweight, no full replan)\",\"title\":\"Suggested + Refinements\"},\"needs_full_replan\":{\"default\":false,\"description\":\"The + remaining plan is fundamentally wrong and must be regenerated\",\"title\":\"Needs + Full Replan\",\"type\":\"boolean\"},\"replan_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Explanation + of why a full replan is needed\",\"title\":\"Replan Reason\"},\"goal_already_achieved\":{\"default\":false,\"description\":\"The + overall task goal has been satisfied early; no more steps needed\",\"title\":\"Goal + Already Achieved\",\"type\":\"boolean\"}},\"required\":[\"step_completed_successfully\",\"key_information_learned\",\"remaining_plan_still_valid\",\"suggested_refinements\",\"needs_full_replan\",\"replan_reason\",\"goal_already_achieved\"],\"title\":\"StepObservation\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"StepObservation\",\"strict\":true}},\"stream\":false}" + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '4705' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-helper-method: + - beta.chat.completions.parse + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiUubqzHXpVLhsEey5OUFH8Ry76\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924758,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"{\\\"step_completed_successfully\\\":true,\\\"key_information_learned\\\":\\\"The + sum of the first three prime numbers, 2, 3, and 5, is 10; multiplying this + sum by 2 yields 20.\\\",\\\"remaining_plan_still_valid\\\":true,\\\"suggested_refinements\\\":null,\\\"needs_full_replan\\\":false,\\\"replan_reason\\\":null,\\\"goal_already_achieved\\\":false}\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 964,\n \"completion_tokens\": 85,\n \"total_tokens\": 1049,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:40 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '2271' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Math Tutor. An expert + tutor who explains step by step\n\nYour goal: Solve multi-step math problems\n\nYou + are executing a specific step in a multi-step plan. Focus ONLY on completing\nthe + current step. Do not plan ahead or worry about future steps.\n\nBefore acting, + briefly reason about what you need to do and which approach\nor tool would be + most helpful for this specific step."},{"role":"user","content":"## Current + Step\nProduce the final output with the result.\n\n## Context from previous + steps:\nStep 3 result: To complete the current step, I need to multiply the + sum (which is 10) by 2.\n\nHere''s how the multiplication works:\n\n\\[\n10 + \\times 2 = 20\n\\]\n\nThus, the result after multiplying the sum by 2 is **20**.\n\nComplete + this step and provide your result."}],"model":"gpt-4o-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '851' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiWhBYKcC2RdPmBRfLM5aMznqxB\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924760,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"In this step, I will finalize the output + based on the completed multiplication. \\n\\nFrom Step 3, the calculation + was as follows:\\n\\n\\\\[\\n10 \\\\times 2 = 20\\n\\\\]\\n\\nTherefore, the + final result is **20**.\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 179,\n \"completion_tokens\": + 50,\n \"total_tokens\": 229,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:41 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '1386' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are a Planning Agent + observing execution progress. After each step completes, you analyze what happened + and decide whether the remaining plan is still valid.\\n\\nReason step-by-step + about:\\n1. What new information was learned from this step's result\\n2. Whether + the remaining steps still make sense given this new information\\n3. What refinements, + if any, are needed for upcoming steps\\n4. Whether the overall goal has already + been achieved\\n\\nBe conservative about triggering full replans \u2014 only + do so when the remaining plan is fundamentally wrong, not just suboptimal.\"},{\"role\":\"user\",\"content\":\"## + Original task\\n\\n\\n## Expected output\\n\\n\\n## Previously completed steps:\\n + \ Step 1: Identify the first 3 prime numbers.\\n Result: To identify the + first three prime numbers, we need to recall that a prime number is defined + as a natural number greater than 1 that has no positive divisors other than + 1 and itself.\\n\\n1. The number 2 i\\n Step 2: Add the first 3 prime numbers + together.\\n Result: To complete this step, I need to add the first three + prime numbers identified in the previous step: 2, 3, and 5. \\n\\nHere's how + the addition works:\\n\\n1. First, add 2 and 3:\\n \\\\[\\n 2 + 3 = 5\\n + \ \\\\]\\n\\n2. N\\n Step 3: Multiply the sum by 2.\\n Result: To complete + the current step, I need to multiply the sum (which is 10) by 2.\\n\\nHere's + how the multiplication works:\\n\\n\\\\[\\n10 \\\\times 2 = 20\\n\\\\]\\n\\nThus, + the result after multiplying the sum by 2 is **20**.\\n\\n## Just completed + step 4\\nDescription: Produce the final output with the result.\\nResult: In + this step, I will finalize the output based on the completed multiplication. + \\n\\nFrom Step 3, the calculation was as follows:\\n\\n\\\\[\\n10 \\\\times + 2 = 20\\n\\\\]\\n\\nTherefore, the final result is **20**.\\n\\n\\nAnalyze this + step's result and provide your observation.\"}],\"model\":\"gpt-4o-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"description\":\"Planner's + observation after a step execution completes.\\n\\nReturned by the PlannerObserver + after EVERY step \u2014 not just failures.\\nThe Planner uses this to decide + whether to continue, refine, or replan.\\n\\nBased on PLAN-AND-ACT (Section + 3.3): the Planner observes what the Executor\\ndid and incorporates new information + into the remaining plan.\\n\\nAttributes:\\n step_completed_successfully: + Whether the step achieved its objective.\\n key_information_learned: New + information revealed by this step\\n (e.g., \\\"Found 3 products: A, + B, C\\\"). Used to refine upcoming steps.\\n remaining_plan_still_valid: + Whether pending todos still make sense\\n given the new information. + True does NOT mean no refinement needed.\\n suggested_refinements: Minor + tweaks to upcoming step descriptions.\\n These are lightweight in-place + updates, not a full replan.\\n Example: [\\\"Step 3 should select product + B instead of 'best product'\\\"]\\n needs_full_replan: The remaining plan + is fundamentally wrong and must\\n be regenerated from scratch. Mutually + exclusive with\\n remaining_plan_still_valid (if this is True, that should + be False).\\n replan_reason: Explanation of why a full replan is needed (None + if not).\\n goal_already_achieved: The overall task goal has been satisfied + early.\\n No more steps needed \u2014 skip remaining todos and finalize.\",\"properties\":{\"step_completed_successfully\":{\"description\":\"Whether + the step achieved what it was asked to do\",\"title\":\"Step Completed Successfully\",\"type\":\"boolean\"},\"key_information_learned\":{\"default\":\"\",\"description\":\"What + new information this step revealed\",\"title\":\"Key Information Learned\",\"type\":\"string\"},\"remaining_plan_still_valid\":{\"default\":true,\"description\":\"Whether + the remaining pending todos still make sense given new information\",\"title\":\"Remaining + Plan Still Valid\",\"type\":\"boolean\"},\"suggested_refinements\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"description\":\"Minor + tweaks to descriptions of upcoming steps (lightweight, no full replan)\",\"title\":\"Suggested + Refinements\"},\"needs_full_replan\":{\"default\":false,\"description\":\"The + remaining plan is fundamentally wrong and must be regenerated\",\"title\":\"Needs + Full Replan\",\"type\":\"boolean\"},\"replan_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Explanation + of why a full replan is needed\",\"title\":\"Replan Reason\"},\"goal_already_achieved\":{\"default\":false,\"description\":\"The + overall task goal has been satisfied early; no more steps needed\",\"title\":\"Goal + Already Achieved\",\"type\":\"boolean\"}},\"required\":[\"step_completed_successfully\",\"key_information_learned\",\"remaining_plan_still_valid\",\"suggested_refinements\",\"needs_full_replan\",\"replan_reason\",\"goal_already_achieved\"],\"title\":\"StepObservation\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"StepObservation\",\"strict\":true}},\"stream\":false}" + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '4894' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-helper-method: + - beta.chat.completions.parse + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiYbktjTZInD9mKZvlH7Jjwfi1D\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924762,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"{\\\"step_completed_successfully\\\":true,\\\"key_information_learned\\\":\\\"The + final result of the calculations based on the previously completed steps is + 20.\\\",\\\"remaining_plan_still_valid\\\":true,\\\"suggested_refinements\\\":null,\\\"needs_full_replan\\\":false,\\\"replan_reason\\\":null,\\\"goal_already_achieved\\\":true}\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 1012,\n \"completion_tokens\": 68,\n \"total_tokens\": 1080,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:43 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '1638' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Math Tutor. You have completed + a multi-step task. Synthesize the results from all steps into a single, coherent + final response that directly addresses the original task. Do NOT list step numbers + or say ''Step 1 result''. Produce a clean, polished answer as if you did it + all at once."},{"role":"user","content":"## Original Task\nFind the first 3 + prime numbers, add them together, then multiply by 2.\n\n## Results from each + step\nStep 1 (Identify the first 3 prime numbers.):\nTo identify the first three + prime numbers, we need to recall that a prime number is defined as a natural + number greater than 1 that has no positive divisors other than 1 and itself.\n\n1. + The number 2 is the first prime number because its only divisors are 1 and 2.\n2. + The number 3 is the second prime number because its only divisors are 1 and + 3.\n3. The number 5 is the third prime number because its only divisors are + 1 and 5.\n\nThus, the first three prime numbers are **2, 3, and 5**.\n\nStep + 2 (Add the first 3 prime numbers together.):\nTo complete this step, I need + to add the first three prime numbers identified in the previous step: 2, 3, + and 5. \n\nHere''s how the addition works:\n\n1. First, add 2 and 3:\n \\[\n 2 + + 3 = 5\n \\]\n\n2. Next, take the result (5) and add 5 to it:\n \\[\n 5 + + 5 = 10\n \\]\n\nSo, the sum of the first three prime numbers (2 + 3 + 5) + is **10**.\n\nStep 3 (Multiply the sum by 2.):\nTo complete the current step, + I need to multiply the sum (which is 10) by 2.\n\nHere''s how the multiplication + works:\n\n\\[\n10 \\times 2 = 20\n\\]\n\nThus, the result after multiplying + the sum by 2 is **20**.\n\nStep 4 (Produce the final output with the result.):\nIn + this step, I will finalize the output based on the completed multiplication. + \n\nFrom Step 3, the calculation was as follows:\n\n\\[\n10 \\times 2 = 20\n\\]\n\nTherefore, + the final result is **20**.\n\nSynthesize these results into a single, coherent + final answer."}],"model":"gpt-4o-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '2021' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiZvkDO7VOxvmEd4QBNSvwYt6nQ\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924763,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"The first three prime numbers are 2, + 3, and 5. Adding these together gives us 2 + 3 + 5 = 10. When we multiply + this sum by 2, we have 10 \xD7 2 = 20. Thus, the final result is 20.\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 520,\n \"completion_tokens\": 62,\n \"total_tokens\": 582,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_7e4bf6ad56\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:46 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '2777' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/agents/test_agent_kickoff_with_planning.yaml b/lib/crewai/tests/cassettes/agents/test_agent_kickoff_with_planning.yaml index d72d4a0b6..045bb5c22 100644 --- a/lib/crewai/tests/cassettes/agents/test_agent_kickoff_with_planning.yaml +++ b/lib/crewai/tests/cassettes/agents/test_agent_kickoff_with_planning.yaml @@ -4,18 +4,25 @@ interactions: Create minimal, effective execution plans. Prefer fewer steps over more."},{"role":"user","content":"Create a focused execution plan for the following task:\n\n## Task\nWhat is 15 + 27?\n\n## Expected Output\nComplete the task successfully\n\n## Available Tools\nNo tools - available\n\n## Instructions\nCreate ONLY the essential steps needed to complete - this task. Use the MINIMUM number of steps required - do NOT pad your plan with - unnecessary steps. Most tasks need only 2-5 steps.\n\nFor each step:\n- State - the specific action to take\n- Specify which tool to use (if any)\n\nDo NOT - include:\n- Setup or preparation steps that are obvious\n- Verification steps - unless critical\n- Documentation or cleanup steps unless explicitly required\n- - Generic steps like \"review results\" or \"finalize output\"\n\nAfter your plan, - state:\n- \"READY: I am ready to execute the task.\" if the plan is complete\n- - \"NOT READY: I need to refine my plan because [reason].\" if you need more thinking"}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"create_reasoning_plan","description":"Create - or refine a reasoning plan for a task","strict":true,"parameters":{"type":"object","properties":{"plan":{"type":"string","description":"The - detailed reasoning plan for the task."},"ready":{"type":"boolean","description":"Whether - the agent is ready to execute the task."}},"required":["plan","ready"],"additionalProperties":false}}}]}' + available\n\n## Planning Principles\nFocus on WHAT needs to be accomplished, + not HOW. Group related actions into logical units. Fewer steps = better. Most + tasks need 3-6 steps. Hard limit: 20 steps.\n\n## Step Types (only these are + valid):\n1. **Tool Step**: Uses a tool to gather information or take action\n2. + **Output Step**: Synthesizes prior results into the final deliverable (usually + the last step)\n\n## Rules:\n- Each step must either USE A TOOL or PRODUCE THE + FINAL OUTPUT\n- Combine related tool calls: \"Research A, B, and C\" = ONE step, + not three\n- Combine all synthesis into ONE final output step\n- NO standalone + \"thinking\" steps (review, verify, confirm, refine, analyze) - these happen + naturally between steps\n\nFor each step: State the action, specify the tool + (if any), and note dependencies.\n\nAfter your plan, state READY or NOT READY."}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"create_reasoning_plan","description":"Create + or refine a reasoning plan for a task with structured steps","strict":true,"parameters":{"type":"object","properties":{"plan":{"type":"string","description":"A + brief summary of the overall plan."},"steps":{"type":"array","description":"List + of discrete steps to execute the plan","items":{"type":"object","properties":{"step_number":{"type":"integer","description":"Step + number (1-based)"},"description":{"type":"string","description":"What to do + in this step"},"tool_to_use":{"type":["string","null"],"description":"Tool to + use for this step, or null if no tool needed"},"depends_on":{"type":"array","items":{"type":"integer"},"description":"Step + numbers this step depends on (empty array if none)"}},"required":["step_number","description","tool_to_use","depends_on"],"additionalProperties":false}},"ready":{"type":"boolean","description":"Whether + the agent is ready to execute the task."}},"required":["plan","steps","ready"],"additionalProperties":false}}}]}' headers: User-Agent: - X-USER-AGENT-XXX @@ -28,7 +35,7 @@ interactions: connection: - keep-alive content-length: - - '1543' + - '2317' content-type: - application/json host: @@ -55,18 +62,24 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D4yTrm3GkzDX47DIcce9uA3iF8kFE\",\n \"object\": - \"chat.completion\",\n \"created\": 1770078171,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WidmJV9i13DE24mvjP1ZirakLg4\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924767,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"## Execution Plan\\n\\n1. Calculate - the sum of 15 and 27.\\n\\nREADY: I am ready to execute the task.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 281,\n \"completion_tokens\": 27,\n \"total_tokens\": 308,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n + \ \"id\": \"call_xQ7jJFuvWGusUiruNaZjuV6F\",\n \"type\": + \"function\",\n \"function\": {\n \"name\": \"create_reasoning_plan\",\n + \ \"arguments\": \"{\\\"plan\\\":\\\"Calculate the sum of 15 and + 27.\\\",\\\"steps\\\":[{\\\"step_number\\\":1,\\\"description\\\":\\\"Add + the numbers 15 and 27 together.\\\",\\\"tool_to_use\\\":null,\\\"depends_on\\\":[]},{\\\"step_number\\\":2,\\\"description\\\":\\\"Provide + the final result of 15 + 27.\\\",\\\"tool_to_use\\\":null,\\\"depends_on\\\":[1]}],\\\"ready\\\":true}\"\n + \ }\n }\n ],\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"tool_calls\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 440,\n \"completion_tokens\": + 88,\n \"total_tokens\": 528,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -75,11 +88,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 03 Feb 2026 00:22:51 GMT + - Thu, 12 Feb 2026 19:32:49 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -95,11 +106,13 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '691' + - '1643' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -121,8 +134,12 @@ interactions: message: OK - request: body: '{"messages":[{"role":"system","content":"You are Math Assistant. A helpful - math tutor\nYour personal goal is: Help solve math problems step by step"},{"role":"user","content":"\nCurrent - Task: What is 15 + 27?\n\nProvide your complete response:"}],"model":"gpt-4o-mini"}' + math tutor\n\nYour goal: Help solve math problems step by step\n\nYou are executing + a specific step in a multi-step plan. Focus ONLY on completing\nthe current + step. Do not plan ahead or worry about future steps.\n\nBefore acting, briefly + reason about what you need to do and which approach\nor tool would be most helpful + for this specific step."},{"role":"user","content":"## Current Step\nAdd the + numbers 15 and 27 together.\n\nComplete this step and provide your result."}],"model":"gpt-4o-mini"}' headers: User-Agent: - X-USER-AGENT-XXX @@ -135,7 +152,7 @@ interactions: connection: - keep-alive content-length: - - '269' + - '574' content-type: - application/json cookie: @@ -164,27 +181,18 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D4yTrUOvExA9fTFDwYxvG4xEgRP6L\",\n \"object\": - \"chat.completion\",\n \"created\": 1770078171,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WifMUkNsYirBHDQMHraML9Sfxhr\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924769,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"To solve the problem \\\\( 15 + 27 - \\\\), we can follow these steps:\\n\\n1. **Align the numbers**: Write them - one on top of the other, aligned by their rightmost digits:\\n\\n ```\\n - \ 15\\n + 27\\n ```\\n\\n2. **Add the units place**: Start from the - rightmost digits (units place):\\n - \\\\( 5 + 7 = 12 \\\\)\\n - Write - down 2 and carry over 1.\\n\\n3. **Add the tens place**: Now, move to the - next column (tens place):\\n - \\\\( 1 + 2 + 1 \\\\) (the 1 is from the - carry) \\\\( = 4 \\\\)\\n\\n4. **Combine the results**: Now, combine the results - from the tens and units places:\\n - The result in the tens place is 4 and - in the units place is 2, giving us \\\\( 42 \\\\).\\n\\nTherefore, \\\\( 15 - + 27 = 42 \\\\).\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 50,\n \"completion_tokens\": - 209,\n \"total_tokens\": 259,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"To add the numbers 15 and 27 together, + I will perform the addition:\\n\\n15 + 27 = 42\\n\\nThe result is 42.\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 111,\n \"completion_tokens\": 31,\n \"total_tokens\": 142,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -193,7 +201,7 @@ interactions: Content-Type: - application/json Date: - - Tue, 03 Feb 2026 00:22:55 GMT + - Thu, 12 Feb 2026 19:32:50 GMT Server: - cloudflare Strict-Transport-Security: @@ -211,11 +219,545 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '3263' + - '975' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are a Planning Agent + observing execution progress. After each step completes, you analyze what happened + and decide whether the remaining plan is still valid.\\n\\nReason step-by-step + about:\\n1. What new information was learned from this step's result\\n2. Whether + the remaining steps still make sense given this new information\\n3. What refinements, + if any, are needed for upcoming steps\\n4. Whether the overall goal has already + been achieved\\n\\nBe conservative about triggering full replans \u2014 only + do so when the remaining plan is fundamentally wrong, not just suboptimal.\"},{\"role\":\"user\",\"content\":\"## + Original task\\n\\n\\n## Expected output\\n\\n\\n\\n## Just completed step 1\\nDescription: + Add the numbers 15 and 27 together.\\nResult: To add the numbers 15 and 27 together, + I will perform the addition:\\n\\n15 + 27 = 42\\n\\nThe result is 42.\\n\\n## + Remaining plan steps:\\n Step 2: Provide the final result of 15 + 27.\\n\\nAnalyze + this step's result and provide your observation.\"}],\"model\":\"gpt-4o-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"description\":\"Planner's + observation after a step execution completes.\\n\\nReturned by the PlannerObserver + after EVERY step \u2014 not just failures.\\nThe Planner uses this to decide + whether to continue, refine, or replan.\\n\\nBased on PLAN-AND-ACT (Section + 3.3): the Planner observes what the Executor\\ndid and incorporates new information + into the remaining plan.\\n\\nAttributes:\\n step_completed_successfully: + Whether the step achieved its objective.\\n key_information_learned: New + information revealed by this step\\n (e.g., \\\"Found 3 products: A, + B, C\\\"). Used to refine upcoming steps.\\n remaining_plan_still_valid: + Whether pending todos still make sense\\n given the new information. + True does NOT mean no refinement needed.\\n suggested_refinements: Minor + tweaks to upcoming step descriptions.\\n These are lightweight in-place + updates, not a full replan.\\n Example: [\\\"Step 3 should select product + B instead of 'best product'\\\"]\\n needs_full_replan: The remaining plan + is fundamentally wrong and must\\n be regenerated from scratch. Mutually + exclusive with\\n remaining_plan_still_valid (if this is True, that should + be False).\\n replan_reason: Explanation of why a full replan is needed (None + if not).\\n goal_already_achieved: The overall task goal has been satisfied + early.\\n No more steps needed \u2014 skip remaining todos and finalize.\",\"properties\":{\"step_completed_successfully\":{\"description\":\"Whether + the step achieved what it was asked to do\",\"title\":\"Step Completed Successfully\",\"type\":\"boolean\"},\"key_information_learned\":{\"default\":\"\",\"description\":\"What + new information this step revealed\",\"title\":\"Key Information Learned\",\"type\":\"string\"},\"remaining_plan_still_valid\":{\"default\":true,\"description\":\"Whether + the remaining pending todos still make sense given new information\",\"title\":\"Remaining + Plan Still Valid\",\"type\":\"boolean\"},\"suggested_refinements\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"description\":\"Minor + tweaks to descriptions of upcoming steps (lightweight, no full replan)\",\"title\":\"Suggested + Refinements\"},\"needs_full_replan\":{\"default\":false,\"description\":\"The + remaining plan is fundamentally wrong and must be regenerated\",\"title\":\"Needs + Full Replan\",\"type\":\"boolean\"},\"replan_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Explanation + of why a full replan is needed\",\"title\":\"Replan Reason\"},\"goal_already_achieved\":{\"default\":false,\"description\":\"The + overall task goal has been satisfied early; no more steps needed\",\"title\":\"Goal + Already Achieved\",\"type\":\"boolean\"}},\"required\":[\"step_completed_successfully\",\"key_information_learned\",\"remaining_plan_still_valid\",\"suggested_refinements\",\"needs_full_replan\",\"replan_reason\",\"goal_already_achieved\"],\"title\":\"StepObservation\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"StepObservation\",\"strict\":true}},\"stream\":false}" + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '4037' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-helper-method: + - beta.chat.completions.parse + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8Wihvgjx16HF7G4R4Hv2hHRX95Zi\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924771,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"{\\\"step_completed_successfully\\\":true,\\\"key_information_learned\\\":\\\"The + result of adding 15 and 27 is 42.\\\",\\\"remaining_plan_still_valid\\\":true,\\\"suggested_refinements\\\":null,\\\"needs_full_replan\\\":false,\\\"replan_reason\\\":null,\\\"goal_already_achieved\\\":true}\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 791,\n \"completion_tokens\": 65,\n \"total_tokens\": 856,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:52 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '1742' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Math Assistant. A helpful + math tutor\n\nYour goal: Help solve math problems step by step\n\nYou are executing + a specific step in a multi-step plan. Focus ONLY on completing\nthe current + step. Do not plan ahead or worry about future steps.\n\nBefore acting, briefly + reason about what you need to do and which approach\nor tool would be most helpful + for this specific step."},{"role":"user","content":"## Current Step\nProvide + the final result of 15 + 27.\n\n## Context from previous steps:\nStep 1 result: + To add the numbers 15 and 27 together, I will perform the addition:\n\n15 + + 27 = 42\n\nThe result is 42.\n\nComplete this step and provide your result."}],"model":"gpt-4o-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '731' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WijqXxzVDrvN694O3RU1ndqJEOT\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924773,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"The final result of 15 + 27 is 42.\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 154,\n \"completion_tokens\": 13,\n \"total_tokens\": 167,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_7e4bf6ad56\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:53 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '545' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are a Planning Agent + observing execution progress. After each step completes, you analyze what happened + and decide whether the remaining plan is still valid.\\n\\nReason step-by-step + about:\\n1. What new information was learned from this step's result\\n2. Whether + the remaining steps still make sense given this new information\\n3. What refinements, + if any, are needed for upcoming steps\\n4. Whether the overall goal has already + been achieved\\n\\nBe conservative about triggering full replans \u2014 only + do so when the remaining plan is fundamentally wrong, not just suboptimal.\"},{\"role\":\"user\",\"content\":\"## + Original task\\n\\n\\n## Expected output\\n\\n\\n## Previously completed steps:\\n + \ Step 1: Add the numbers 15 and 27 together.\\n Result: To add the numbers + 15 and 27 together, I will perform the addition:\\n\\n15 + 27 = 42\\n\\nThe + result is 42.\\n\\n## Just completed step 2\\nDescription: Provide the final + result of 15 + 27.\\nResult: The final result of 15 + 27 is 42.\\n\\n\\nAnalyze + this step's result and provide your observation.\"}],\"model\":\"gpt-4o-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"description\":\"Planner's + observation after a step execution completes.\\n\\nReturned by the PlannerObserver + after EVERY step \u2014 not just failures.\\nThe Planner uses this to decide + whether to continue, refine, or replan.\\n\\nBased on PLAN-AND-ACT (Section + 3.3): the Planner observes what the Executor\\ndid and incorporates new information + into the remaining plan.\\n\\nAttributes:\\n step_completed_successfully: + Whether the step achieved its objective.\\n key_information_learned: New + information revealed by this step\\n (e.g., \\\"Found 3 products: A, + B, C\\\"). Used to refine upcoming steps.\\n remaining_plan_still_valid: + Whether pending todos still make sense\\n given the new information. + True does NOT mean no refinement needed.\\n suggested_refinements: Minor + tweaks to upcoming step descriptions.\\n These are lightweight in-place + updates, not a full replan.\\n Example: [\\\"Step 3 should select product + B instead of 'best product'\\\"]\\n needs_full_replan: The remaining plan + is fundamentally wrong and must\\n be regenerated from scratch. Mutually + exclusive with\\n remaining_plan_still_valid (if this is True, that should + be False).\\n replan_reason: Explanation of why a full replan is needed (None + if not).\\n goal_already_achieved: The overall task goal has been satisfied + early.\\n No more steps needed \u2014 skip remaining todos and finalize.\",\"properties\":{\"step_completed_successfully\":{\"description\":\"Whether + the step achieved what it was asked to do\",\"title\":\"Step Completed Successfully\",\"type\":\"boolean\"},\"key_information_learned\":{\"default\":\"\",\"description\":\"What + new information this step revealed\",\"title\":\"Key Information Learned\",\"type\":\"string\"},\"remaining_plan_still_valid\":{\"default\":true,\"description\":\"Whether + the remaining pending todos still make sense given new information\",\"title\":\"Remaining + Plan Still Valid\",\"type\":\"boolean\"},\"suggested_refinements\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"description\":\"Minor + tweaks to descriptions of upcoming steps (lightweight, no full replan)\",\"title\":\"Suggested + Refinements\"},\"needs_full_replan\":{\"default\":false,\"description\":\"The + remaining plan is fundamentally wrong and must be regenerated\",\"title\":\"Needs + Full Replan\",\"type\":\"boolean\"},\"replan_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Explanation + of why a full replan is needed\",\"title\":\"Replan Reason\"},\"goal_already_achieved\":{\"default\":false,\"description\":\"The + overall task goal has been satisfied early; no more steps needed\",\"title\":\"Goal + Already Achieved\",\"type\":\"boolean\"}},\"required\":[\"step_completed_successfully\",\"key_information_learned\",\"remaining_plan_still_valid\",\"suggested_refinements\",\"needs_full_replan\",\"replan_reason\",\"goal_already_achieved\"],\"title\":\"StepObservation\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"StepObservation\",\"strict\":true}},\"stream\":false}" + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '4091' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-helper-method: + - beta.chat.completions.parse + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WijHLIWu3UpiSTF4oondCkkFWnq\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924773,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"{\\\"step_completed_successfully\\\":true,\\\"key_information_learned\\\":\\\"The + final result of the addition of 15 and 27 is confirmed to be 42, consistent + with the previous step.\\\",\\\"remaining_plan_still_valid\\\":true,\\\"suggested_refinements\\\":null,\\\"needs_full_replan\\\":false,\\\"replan_reason\\\":null,\\\"goal_already_achieved\\\":true}\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 807,\n \"completion_tokens\": 77,\n \"total_tokens\": 884,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:55 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '1843' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Math Assistant. You have + completed a multi-step task. Synthesize the results from all steps into a single, + coherent final response that directly addresses the original task. Do NOT list + step numbers or say ''Step 1 result''. Produce a clean, polished answer as if + you did it all at once."},{"role":"user","content":"## Original Task\nWhat is + 15 + 27?\n\n## Results from each step\nStep 1 (Add the numbers 15 and 27 together.):\nTo + add the numbers 15 and 27 together, I will perform the addition:\n\n15 + 27 + = 42\n\nThe result is 42.\n\nStep 2 (Provide the final result of 15 + 27.):\nThe + final result of 15 + 27 is 42.\n\nSynthesize these results into a single, coherent + final answer."}],"model":"gpt-4o-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '757' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WilXbtsRhcSEKpM0tfkI49oNjmn\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924775,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"The result of adding 15 and 27 together + is 42.\",\n \"refusal\": null,\n \"annotations\": []\n },\n + \ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n + \ \"usage\": {\n \"prompt_tokens\": 178,\n \"completion_tokens\": 14,\n + \ \"total_tokens\": 192,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:56 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '492' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/agents/test_agent_kickoff_with_planning_disabled.yaml b/lib/crewai/tests/cassettes/agents/test_agent_kickoff_with_planning_disabled.yaml index 2c24aa25a..1fca12fc7 100644 --- a/lib/crewai/tests/cassettes/agents/test_agent_kickoff_with_planning_disabled.yaml +++ b/lib/crewai/tests/cassettes/agents/test_agent_kickoff_with_planning_disabled.yaml @@ -42,19 +42,19 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D4yU6mFapBLuCx4fJtYBup52dwwrs\",\n \"object\": - \"chat.completion\",\n \"created\": 1770078186,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WimfajuTYQK9pSjUGSgWmhk7XlT\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924776,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"To solve the problem 100 divided by - 4, you can perform the division as follows:\\n\\n100 \xF7 4 = 25\\n\\nSo, - the answer is 25.\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 46,\n \"completion_tokens\": - 36,\n \"total_tokens\": 82,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"To find the result of \\\\( 100 \\\\div + 4 \\\\), you divide 100 by 4.\\n\\nCalculating this:\\n\\n\\\\[\\n100 \\\\div + 4 = 25\\n\\\\]\\n\\nThus, the answer is \\\\( 25 \\\\).\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 46,\n \"completion_tokens\": 49,\n \"total_tokens\": 95,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -63,11 +63,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 03 Feb 2026 00:23:07 GMT + - Thu, 12 Feb 2026 19:32:57 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -83,11 +81,123 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1098' + - '946' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Math Assistant. A helpful + assistant\nYour personal goal is: Help solve math problems"},{"role":"user","content":"\nCurrent + Task: What is 100 / 4?\n\nProvide your complete response:"}],"model":"gpt-4o-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '255' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8Win0vSNVTZwOWBmwZeTiHwSK7RR\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924777,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"To solve the problem \\\\( 100 \\\\div + 4 \\\\):\\n\\n1. Divide 100 by 4.\\n2. \\\\( 100 \\\\div 4 = 25 \\\\).\\n\\nSo, + the answer is \\\\( 25 \\\\).\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 46,\n \"completion_tokens\": + 46,\n \"total_tokens\": 92,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:58 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '1380' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/agents/test_agent_kickoff_without_planning.yaml b/lib/crewai/tests/cassettes/agents/test_agent_kickoff_without_planning.yaml index 250b3961c..c8777dc0a 100644 --- a/lib/crewai/tests/cassettes/agents/test_agent_kickoff_without_planning.yaml +++ b/lib/crewai/tests/cassettes/agents/test_agent_kickoff_without_planning.yaml @@ -42,17 +42,17 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D4yTqLFhGtfq2CyS2aPPhiZL4GjtQ\",\n \"object\": - \"chat.completion\",\n \"created\": 1770078170,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WiDC7puKIpnQ83IO03cUYykhJJ4\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924741,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"8 * 7 equals 56.\",\n \"refusal\": + \"assistant\",\n \"content\": \"8 multiplied by 7 equals 56.\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 46,\n \"completion_tokens\": 8,\n \"total_tokens\": 54,\n \"prompt_tokens_details\": + 46,\n \"completion_tokens\": 9,\n \"total_tokens\": 55,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -61,11 +61,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 03 Feb 2026 00:22:50 GMT + - Thu, 12 Feb 2026 19:32:22 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -81,11 +79,122 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '443' + - '391' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Math Assistant. A helpful + assistant\nYour personal goal is: Help solve math problems"},{"role":"user","content":"\nCurrent + Task: What is 8 * 7?\n\nProvide your complete response:"}],"model":"gpt-4o-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '253' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiEHxK7ijb2hbyYLWeSiiHOG8fy\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924742,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"The product of 8 and 7 is 56. So, \\\\( + 8 \\\\times 7 = 56 \\\\).\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 46,\n \"completion_tokens\": + 26,\n \"total_tokens\": 72,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:22 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '654' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/agents/test_lite_agent_with_tools.yaml b/lib/crewai/tests/cassettes/agents/test_lite_agent_with_tools.yaml index b07670376..0bba5178d 100644 --- a/lib/crewai/tests/cassettes/agents/test_lite_agent_with_tools.yaml +++ b/lib/crewai/tests/cassettes/agents/test_lite_agent_with_tools.yaml @@ -45,11 +45,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8D40XCjj89YDzYkkOYWc5g3P5fek\",\n \"object\": - \"chat.completion\",\n \"created\": 1770849212,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8ZN7HR1GNm9rkv48gTpuAiq7GZVQ\",\n \"object\": + \"chat.completion\",\n \"created\": 1770934965,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_JEdHRstWQZ5tkC7cioXVPCxf\",\n \"type\": + \ \"id\": \"call_xHt7bWBXRZDd5s3BgOyKj9Dr\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"search_web\",\n \ \"arguments\": \"{\\\"query\\\":\\\"current population of Tokyo 2023\\\"}\"\n }\n }\n ],\n \"refusal\": @@ -59,7 +59,7 @@ interactions: {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_373a14eb6f\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -68,7 +68,7 @@ interactions: Content-Type: - application/json Date: - - Wed, 11 Feb 2026 22:33:32 GMT + - Thu, 12 Feb 2026 22:22:46 GMT Server: - cloudflare Strict-Transport-Security: @@ -86,7 +86,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '529' + - '820' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -117,8 +117,8 @@ interactions: are a helpful research assistant who can search for information about the population of Tokyo.\nYour personal goal is: Find information about the population of Tokyo"},{"role":"user","content":"\nCurrent Task: What is the population of Tokyo and how many people would that be per - square kilometer if Tokyo''s area is 2,194 square kilometers?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_JEdHRstWQZ5tkC7cioXVPCxf","type":"function","function":{"name":"search_web","arguments":"{\"query\":\"current - population of Tokyo 2023\"}"}}]},{"role":"tool","tool_call_id":"call_JEdHRstWQZ5tkC7cioXVPCxf","name":"search_web","content":"Tokyo''s + square kilometer if Tokyo''s area is 2,194 square kilometers?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_xHt7bWBXRZDd5s3BgOyKj9Dr","type":"function","function":{"name":"search_web","arguments":"{\"query\":\"current + population of Tokyo 2023\"}"}}]},{"role":"tool","tool_call_id":"call_xHt7bWBXRZDd5s3BgOyKj9Dr","name":"search_web","content":"Tokyo''s population in 2023 was approximately 21 million people in the city proper, and 37 million in the greater metropolitan area."}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"search_web","description":"Search the web for information about a topic.","strict":true,"parameters":{"properties":{"query":{"title":"Query","type":"string"}},"required":["query"],"type":"object","additionalProperties":false}}}]}' @@ -163,22 +163,24 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8D40btgFEcwHNTlUioeuNymzgoVC\",\n \"object\": - \"chat.completion\",\n \"created\": 1770849212,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8ZN8gRx8GsQXjbVe1AdS2fgS2s7g\",\n \"object\": + \"chat.completion\",\n \"created\": 1770934966,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The current population of Tokyo in - 2023 is approximately 21 million people in the city proper. Given that Tokyo's - area is 2,194 square kilometers, we can calculate the population density as - follows:\\n\\nPopulation per square kilometer = Population / Area\\n\\nPopulation - per square kilometer = 21,000,000 / 2,194 \u2248 9,570 people per square kilometer.\\n\\nSo, - the population density of Tokyo is approximately 9,570 people per square kilometer.\",\n - \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": - null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 172,\n \"completion_tokens\": 97,\n \"total_tokens\": 269,\n \"prompt_tokens_details\": + 2023 is approximately 21 million people in the city proper. \\n\\nTo find + the population density (people per square kilometer), we can use the following + formula:\\n\\n\\\\[\\n\\\\text{Population Density} = \\\\frac{\\\\text{Population}}{\\\\text{Area}}\\n\\\\]\\n\\nGiven + that Tokyo's area is 2,194 square kilometers:\\n\\n\\\\[\\n\\\\text{Population + Density} = \\\\frac{21,000,000 \\\\text{ people}}{2,194 \\\\text{ km}^2} \\\\approx + 9,570 \\\\text{ people/km}^2\\n\\\\]\\n\\nThus, the population density of + Tokyo is approximately 9,570 people per square kilometer.\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 172,\n \"completion_tokens\": 145,\n \"total_tokens\": 317,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_373a14eb6f\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -187,7 +189,7 @@ interactions: Content-Type: - application/json Date: - - Wed, 11 Feb 2026 22:33:35 GMT + - Thu, 12 Feb 2026 22:22:49 GMT Server: - cloudflare Strict-Transport-Security: @@ -205,131 +207,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2190' - openai-project: - - OPENAI-PROJECT-XXX - openai-version: - - '2020-10-01' - set-cookie: - - SET-COOKIE-XXX - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - X-RATELIMIT-LIMIT-REQUESTS-XXX - x-ratelimit-limit-tokens: - - X-RATELIMIT-LIMIT-TOKENS-XXX - x-ratelimit-remaining-requests: - - X-RATELIMIT-REMAINING-REQUESTS-XXX - x-ratelimit-remaining-tokens: - - X-RATELIMIT-REMAINING-TOKENS-XXX - x-ratelimit-reset-requests: - - X-RATELIMIT-RESET-REQUESTS-XXX - x-ratelimit-reset-tokens: - - X-RATELIMIT-RESET-TOKENS-XXX - x-request-id: - - X-REQUEST-ID-XXX - status: - code: 200 - message: OK -- request: - body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are Research Assistant. - You are a helpful research assistant who can search for information about the - population of Tokyo.\\nYour personal goal is: Find information about the population - of Tokyo\"},{\"role\":\"user\",\"content\":\"\\nCurrent Task: What is the population - of Tokyo and how many people would that be per square kilometer if Tokyo's area - is 2,194 square kilometers?\"},{\"role\":\"assistant\",\"content\":null,\"tool_calls\":[{\"id\":\"call_JEdHRstWQZ5tkC7cioXVPCxf\",\"type\":\"function\",\"function\":{\"name\":\"search_web\",\"arguments\":\"{\\\"query\\\":\\\"current - population of Tokyo 2023\\\"}\"}}]},{\"role\":\"tool\",\"tool_call_id\":\"call_JEdHRstWQZ5tkC7cioXVPCxf\",\"name\":\"search_web\",\"content\":\"Tokyo's - population in 2023 was approximately 21 million people in the city proper, and - 37 million in the greater metropolitan area.\"},{\"role\":\"assistant\",\"content\":\"The - current population of Tokyo in 2023 is approximately 21 million people in the - city proper. Given that Tokyo's area is 2,194 square kilometers, we can calculate - the population density as follows:\\n\\nPopulation per square kilometer = Population - / Area\\n\\nPopulation per square kilometer = 21,000,000 / 2,194 \u2248 9,570 - people per square kilometer.\\n\\nSo, the population density of Tokyo is approximately - 9,570 people per square kilometer.\"}],\"model\":\"gpt-4o-mini\",\"tool_choice\":\"auto\",\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"search_web\",\"description\":\"Search - the web for information about a topic.\",\"strict\":true,\"parameters\":{\"properties\":{\"query\":{\"title\":\"Query\",\"type\":\"string\"}},\"required\":[\"query\"],\"type\":\"object\",\"additionalProperties\":false}}}]}" - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - application/json - accept-encoding: - - ACCEPT-ENCODING-XXX - authorization: - - AUTHORIZATION-XXX - connection: - - keep-alive - content-length: - - '1641' - content-type: - - application/json - cookie: - - COOKIE-XXX - host: - - api.openai.com - x-stainless-arch: - - X-STAINLESS-ARCH-XXX - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - X-STAINLESS-OS-XXX - x-stainless-package-version: - - 1.83.0 - x-stainless-read-timeout: - - X-STAINLESS-READ-TIMEOUT-XXX - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.13.3 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-D8D43LKVWypVRkWPGe1GqpyrTtvEj\",\n \"object\": - \"chat.completion\",\n \"created\": 1770849215,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"To summarize:\\n\\n- **Population of - Tokyo (2023)**: Approximately 21 million people.\\n- **Area of Tokyo**: 2,194 - square kilometers.\\n- **Population Density**: Approximately 9,570 people - per square kilometer.\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 272,\n \"completion_tokens\": - 50,\n \"total_tokens\": 322,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_842ff35899\"\n}\n" - headers: - CF-RAY: - - CF-RAY-XXX - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Wed, 11 Feb 2026 22:33:37 GMT - Server: - - cloudflare - Strict-Transport-Security: - - STS-XXX - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - X-CONTENT-TYPE-XXX - access-control-expose-headers: - - ACCESS-CONTROL-XXX - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - OPENAI-ORG-XXX - openai-processing-ms: - - '1446' + - '3116' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -402,11 +280,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8D45xgoyxcobhgraiRU8k9GU5y6d\",\n \"object\": - \"chat.completion\",\n \"created\": 1770849217,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8ZNBk5TYpwCnSSMgPcTEeasE7G1J\",\n \"object\": + \"chat.completion\",\n \"created\": 1770934969,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_KNWD1mlLa5tYkR7bSHdcUfyU\",\n \"type\": + \ \"id\": \"call_pM5HfiZm56h6UY7WWi9w5EQo\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"search_web\",\n \ \"arguments\": \"{\\\"query\\\":\\\"effects of climate change on coral reefs\\\"}\"\n }\n }\n ],\n \"refusal\": @@ -425,7 +303,7 @@ interactions: Content-Type: - application/json Date: - - Wed, 11 Feb 2026 22:33:38 GMT + - Thu, 12 Feb 2026 22:22:50 GMT Server: - cloudflare Strict-Transport-Security: @@ -443,7 +321,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '545' + - '483' openai-project: - OPENAI-PROJECT-XXX openai-version: @@ -473,8 +351,8 @@ interactions: body: '{"messages":[{"role":"system","content":"You are Research Assistant. You are a helpful research assistant who can search for information about the population of Tokyo.\nYour personal goal is: Find information about the population of Tokyo"},{"role":"user","content":"\nCurrent - Task: What are the effects of climate change on coral reefs?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_KNWD1mlLa5tYkR7bSHdcUfyU","type":"function","function":{"name":"search_web","arguments":"{\"query\":\"effects - of climate change on coral reefs\"}"}}]},{"role":"tool","tool_call_id":"call_KNWD1mlLa5tYkR7bSHdcUfyU","name":"search_web","content":"Climate + Task: What are the effects of climate change on coral reefs?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_pM5HfiZm56h6UY7WWi9w5EQo","type":"function","function":{"name":"search_web","arguments":"{\"query\":\"effects + of climate change on coral reefs\"}"}}]},{"role":"tool","tool_call_id":"call_pM5HfiZm56h6UY7WWi9w5EQo","name":"search_web","content":"Climate change severely impacts coral reefs through: 1) Ocean warming causing coral bleaching, 2) Ocean acidification reducing calcification, 3) Sea level rise affecting light availability, 4) Increased storm frequency damaging reef structures. @@ -521,30 +399,29 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D8D47UD44eAvqB9T2M3W11pzLQMzz\",\n \"object\": - \"chat.completion\",\n \"created\": 1770849219,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8ZNCfVJ8SjsPUcwDFEXkhJZIv59Z\",\n \"object\": + \"chat.completion\",\n \"created\": 1770934970,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"The effects of climate change on coral - reefs are significant and multifaceted:\\n\\n1. **Ocean Warming**: Increased - sea temperatures lead to coral bleaching, a process where corals expel the - symbiotic algae (zooxanthellae) that provide them with nutrients and color. - This can result in large-scale die-offs of corals.\\n\\n2. **Ocean Acidification**: - As the oceans absorb more carbon dioxide, the water becomes more acidic. This - reduces the ability of corals to calcify, making it difficult for them to - build their skeletons and grow.\\n\\n3. **Sea Level Rise**: Rising sea levels - can affect the availability of light necessary for photosynthesis by corals, - particularly in shallow water ecosystems.\\n\\n4. **Increased Storm Frequency**: - Climate change can result in more intense storms, which can physically damage - reef structures, leading to further degradation and loss of biodiversity.\\n\\nThese - impacts have been documented by various organizations including the NOAA Coral - Reef Conservation Program and the Global Coral Reef Alliance.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 187,\n \"completion_tokens\": 202,\n \"total_tokens\": 389,\n \"prompt_tokens_details\": + \"assistant\",\n \"content\": \"Climate change has significant effects + on coral reefs, including:\\n\\n1. **Ocean Warming**: Increased temperatures + lead to coral bleaching, a stress response where corals expel the algae (zooxanthellae) + that live in their tissues, causing them to lose their color and vital energy + source.\\n\\n2. **Ocean Acidification**: As CO2 levels rise, oceans absorb + more carbon dioxide, leading to increased acidity. This reduces the ability + of corals to calcify, weakening their structures and making it harder for + them to grow.\\n\\n3. **Sea Level Rise**: Rising sea levels impact the availability + of light for corals, which depend on sunlight for photosynthesis, potentially + limiting their growth.\\n\\n4. **Increased Storm Frequency**: More frequent + and intense storms can physically damage coral structures, leading to further + degradation of reef ecosystems.\\n\\nThese factors combined jeopardize coral + health, biodiversity, and the ecosystems that depend on coral reefs.\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 187,\n \"completion_tokens\": 189,\n \"total_tokens\": 376,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_842ff35899\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -553,7 +430,7 @@ interactions: Content-Type: - application/json Date: - - Wed, 11 Feb 2026 22:33:43 GMT + - Thu, 12 Feb 2026 22:22:54 GMT Server: - cloudflare Strict-Transport-Security: @@ -571,137 +448,7 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '4106' - openai-project: - - OPENAI-PROJECT-XXX - openai-version: - - '2020-10-01' - set-cookie: - - SET-COOKIE-XXX - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - X-RATELIMIT-LIMIT-REQUESTS-XXX - x-ratelimit-limit-tokens: - - X-RATELIMIT-LIMIT-TOKENS-XXX - x-ratelimit-remaining-requests: - - X-RATELIMIT-REMAINING-REQUESTS-XXX - x-ratelimit-remaining-tokens: - - X-RATELIMIT-REMAINING-TOKENS-XXX - x-ratelimit-reset-requests: - - X-RATELIMIT-RESET-REQUESTS-XXX - x-ratelimit-reset-tokens: - - X-RATELIMIT-RESET-TOKENS-XXX - x-request-id: - - X-REQUEST-ID-XXX - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"role":"system","content":"You are Research Assistant. You - are a helpful research assistant who can search for information about the population - of Tokyo.\nYour personal goal is: Find information about the population of Tokyo"},{"role":"user","content":"\nCurrent - Task: What are the effects of climate change on coral reefs?"},{"role":"assistant","content":null,"tool_calls":[{"id":"call_KNWD1mlLa5tYkR7bSHdcUfyU","type":"function","function":{"name":"search_web","arguments":"{\"query\":\"effects - of climate change on coral reefs\"}"}}]},{"role":"tool","tool_call_id":"call_KNWD1mlLa5tYkR7bSHdcUfyU","name":"search_web","content":"Climate - change severely impacts coral reefs through: 1) Ocean warming causing coral - bleaching, 2) Ocean acidification reducing calcification, 3) Sea level rise - affecting light availability, 4) Increased storm frequency damaging reef structures. - Sources: NOAA Coral Reef Conservation Program, Global Coral Reef Alliance."},{"role":"assistant","content":"The - effects of climate change on coral reefs are significant and multifaceted:\n\n1. - **Ocean Warming**: Increased sea temperatures lead to coral bleaching, a process - where corals expel the symbiotic algae (zooxanthellae) that provide them with - nutrients and color. This can result in large-scale die-offs of corals.\n\n2. - **Ocean Acidification**: As the oceans absorb more carbon dioxide, the water - becomes more acidic. This reduces the ability of corals to calcify, making it - difficult for them to build their skeletons and grow.\n\n3. **Sea Level Rise**: - Rising sea levels can affect the availability of light necessary for photosynthesis - by corals, particularly in shallow water ecosystems.\n\n4. **Increased Storm - Frequency**: Climate change can result in more intense storms, which can physically - damage reef structures, leading to further degradation and loss of biodiversity.\n\nThese - impacts have been documented by various organizations including the NOAA Coral - Reef Conservation Program and the Global Coral Reef Alliance."}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"search_web","description":"Search - the web for information about a topic.","strict":true,"parameters":{"properties":{"query":{"title":"Query","type":"string"}},"required":["query"],"type":"object","additionalProperties":false}}}]}' - headers: - User-Agent: - - X-USER-AGENT-XXX - accept: - - application/json - accept-encoding: - - ACCEPT-ENCODING-XXX - authorization: - - AUTHORIZATION-XXX - connection: - - keep-alive - content-length: - - '2354' - content-type: - - application/json - cookie: - - COOKIE-XXX - host: - - api.openai.com - x-stainless-arch: - - X-STAINLESS-ARCH-XXX - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - X-STAINLESS-OS-XXX - x-stainless-package-version: - - 1.83.0 - x-stainless-read-timeout: - - X-STAINLESS-READ-TIMEOUT-XXX - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.13.3 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: "{\n \"id\": \"chatcmpl-D8D4Bs72s3Gc5SuN5k9PYZgkuMZYp\",\n \"object\": - \"chat.completion\",\n \"created\": 1770849223,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"If you have any additional questions - or need further information on coral reefs or climate change, feel free to - ask!\",\n \"refusal\": null,\n \"annotations\": []\n },\n - \ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n - \ \"usage\": {\n \"prompt_tokens\": 392,\n \"completion_tokens\": 23,\n - \ \"total_tokens\": 415,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_842ff35899\"\n}\n" - headers: - CF-RAY: - - CF-RAY-XXX - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Wed, 11 Feb 2026 22:33:44 GMT - Server: - - cloudflare - Strict-Transport-Security: - - STS-XXX - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - X-CONTENT-TYPE-XXX - access-control-expose-headers: - - ACCESS-CONTROL-XXX - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - OPENAI-ORG-XXX - openai-processing-ms: - - '1255' + - '4432' openai-project: - OPENAI-PROJECT-XXX openai-version: diff --git a/lib/crewai/tests/cassettes/agents/test_native_tool_calling_error_handling.yaml b/lib/crewai/tests/cassettes/agents/test_native_tool_calling_error_handling.yaml index c61d2c034..7aeff9eec 100644 --- a/lib/crewai/tests/cassettes/agents/test_native_tool_calling_error_handling.yaml +++ b/lib/crewai/tests/cassettes/agents/test_native_tool_calling_error_handling.yaml @@ -38,16 +38,16 @@ interactions: x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.13.5 + - 3.13.3 method: POST uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D6L3dV6acwapgRyxmnzGfuOXemtjJ\",\n \"object\": - \"chat.completion\",\n \"created\": 1770403285,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WiD7LANk0TjKGz9LxpSZNDC7cHq\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924741,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_GCdaOdo32pr1sSk4RzO0tiB9\",\n \"type\": + \ \"id\": \"call_1AVztbLyB2XAoSHSM8GVXJEM\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"failing_tool\",\n \ \"arguments\": \"{}\"\n }\n }\n ],\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": @@ -57,7 +57,7 @@ interactions: 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \ \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_6c0d1490cb\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -66,11 +66,9 @@ interactions: Content-Type: - application/json Date: - - Fri, 06 Feb 2026 18:41:25 GMT + - Thu, 12 Feb 2026 19:32:22 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -86,11 +84,13 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '436' + - '579' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -113,7 +113,7 @@ interactions: - request: body: '{"messages":[{"role":"system","content":"You are Calculator. You calculate things.\nYour personal goal is: Perform calculations efficiently"},{"role":"user","content":"\nCurrent - Task: Use the failing_tool to do something."},{"role":"assistant","content":null,"tool_calls":[{"id":"call_GCdaOdo32pr1sSk4RzO0tiB9","type":"function","function":{"name":"failing_tool","arguments":"{}"}}]},{"role":"tool","tool_call_id":"call_GCdaOdo32pr1sSk4RzO0tiB9","name":"failing_tool","content":"Error + Task: Use the failing_tool to do something."},{"role":"assistant","content":null,"tool_calls":[{"id":"call_1AVztbLyB2XAoSHSM8GVXJEM","type":"function","function":{"name":"failing_tool","arguments":"{}"}}]},{"role":"tool","tool_call_id":"call_1AVztbLyB2XAoSHSM8GVXJEM","name":"failing_tool","content":"Error executing tool: This tool always fails"}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"failing_tool","description":"This tool always fails","strict":true,"parameters":{"properties":{},"type":"object","additionalProperties":false,"required":[]}}}]}' headers: @@ -152,25 +152,24 @@ interactions: x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.13.5 + - 3.13.3 method: POST uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D6L3dhjDZOoihHvXvRpbJD3ReGu0z\",\n \"object\": - \"chat.completion\",\n \"created\": 1770403285,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8WiEmCEZdHqRHT8QBnzAohNBYo7J\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924742,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"The attempt to use the failing tool - resulted in an error, as expected since it is designed to always fail. If - there's anything else you would like to calculate or explore, please let me - know!\",\n \"refusal\": null,\n \"annotations\": []\n },\n - \ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n - \ \"usage\": {\n \"prompt_tokens\": 93,\n \"completion_tokens\": 40,\n - \ \"total_tokens\": 133,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + was unsuccessful, as expected, since it is designed to fail. If you have another + task or calculation in mind, please let me know!\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 93,\n \"completion_tokens\": 36,\n \"total_tokens\": 129,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_6c0d1490cb\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -179,7 +178,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 06 Feb 2026 18:41:26 GMT + - Thu, 12 Feb 2026 19:32:23 GMT Server: - cloudflare Strict-Transport-Security: @@ -197,11 +196,127 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '776' + - '837' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Calculator. You calculate + things.\nYour personal goal is: Perform calculations efficiently"},{"role":"user","content":"\nCurrent + Task: Use the failing_tool to do something."},{"role":"assistant","content":null,"tool_calls":[{"id":"call_1AVztbLyB2XAoSHSM8GVXJEM","type":"function","function":{"name":"failing_tool","arguments":"{}"}}]},{"role":"tool","tool_call_id":"call_1AVztbLyB2XAoSHSM8GVXJEM","name":"failing_tool","content":"Error + executing tool: This tool always fails"},{"role":"assistant","content":"The + attempt to use the failing tool was unsuccessful, as expected, since it is designed + to fail. If you have another task or calculation in mind, please let me know!"}],"model":"gpt-4o-mini","tool_choice":"auto","tools":[{"type":"function","function":{"name":"failing_tool","description":"This + tool always fails","strict":true,"parameters":{"properties":{},"type":"object","additionalProperties":false,"required":[]}}}]}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '977' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiFjUZti68bmI4Jdwr58fprhzvC\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924743,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"I see your response was cut off. If + you have another task or calculation in mind, please let me know, and I'll + be happy to assist you!\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 132,\n \"completion_tokens\": + 32,\n \"total_tokens\": 164,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:24 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '903' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/llms/anthropic/test_anthropic_agent_kickoff_structured_output_with_tools.yaml b/lib/crewai/tests/cassettes/llms/anthropic/test_anthropic_agent_kickoff_structured_output_with_tools.yaml index 31124d09c..9eec54f1a 100644 --- a/lib/crewai/tests/cassettes/llms/anthropic/test_anthropic_agent_kickoff_structured_output_with_tools.yaml +++ b/lib/crewai/tests/cassettes/llms/anthropic/test_anthropic_agent_kickoff_structured_output_with_tools.yaml @@ -43,14 +43,14 @@ interactions: x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.13.5 + - 3.13.3 x-stainless-timeout: - NOT_GIVEN method: POST uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01A41GpDoJbZLUhR8dQzUcUX","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01UNPdzpayoWyqDYVE7fR5oA","name":"structured_output","input":{"operation":"Addition","result":42,"explanation":"Added + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01MsoNSVoPuoMYGCcJLvfXS6","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01TtAsqddWjE7C4GYmCKavdg","name":"structured_output","input":{"operation":"Addition","result":42,"explanation":"Added 15 and 27 together"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":573,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":75,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: @@ -62,7 +62,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 06 Feb 2026 18:41:25 GMT + - Thu, 12 Feb 2026 22:11:20 GMT Server: - cloudflare Transfer-Encoding: @@ -88,7 +88,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-06T18:41:24Z' + - '2026-02-12T22:11:18Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -102,7 +102,7 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '1247' + - '1234' status: code: 200 message: OK diff --git a/lib/crewai/tests/cassettes/llms/anthropic/test_anthropic_agent_kickoff_structured_output_without_tools.yaml b/lib/crewai/tests/cassettes/llms/anthropic/test_anthropic_agent_kickoff_structured_output_without_tools.yaml index 70478203b..88cec97a9 100644 --- a/lib/crewai/tests/cassettes/llms/anthropic/test_anthropic_agent_kickoff_structured_output_without_tools.yaml +++ b/lib/crewai/tests/cassettes/llms/anthropic/test_anthropic_agent_kickoff_structured_output_without_tools.yaml @@ -44,20 +44,21 @@ interactions: x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.13.5 + - 3.13.3 x-stainless-timeout: - NOT_GIVEN method: POST uri: https://api.anthropic.com/v1/messages response: body: - string: '{"model":"claude-3-5-haiku-20241022","id":"msg_016wrV83wm3FLYD4JoTy2Piw","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01V6Pzr7eGfuG4Q3mc25ZXwN","name":"structured_output","input":{"topic":"Benefits - of Remote Work","summary":"Remote work offers significant advantages for both - employees and employers, transforming traditional workplace dynamics.","key_points":["Increased - flexibility in work schedule","Reduced commute time and transportation costs","Improved - work-life balance","Higher productivity for many employees","Cost savings - for companies on office infrastructure","Expanded talent pool for hiring","Enhanced - employee job satisfaction"]}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":589,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":142,"service_tier":"standard","inference_geo":"not_available"}}' + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01N7AnsDnd9y6xMzH96HEP7J","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_015Q1XEjxadVsyYfGydf7keJ","name":"structured_output","input":{"topic":"Benefits + of Remote Work","key_points":["Increased flexibility in work schedule","Reduced + commute time and transportation costs","Improved work-life balance","Higher + employee productivity and job satisfaction","Cost savings for companies on + office space","Access to a global talent pool"],"summary":"Remote work offers + significant advantages for both employees and employers, enabling greater + flexibility, cost efficiency, and improved overall work experience by eliminating + traditional office constraints."}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":589,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":150,"service_tier":"standard","inference_geo":"not_available"}}' headers: CF-RAY: - CF-RAY-XXX @@ -68,7 +69,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 06 Feb 2026 18:41:28 GMT + - Thu, 12 Feb 2026 22:11:16 GMT Server: - cloudflare Transfer-Encoding: @@ -94,7 +95,7 @@ interactions: anthropic-ratelimit-requests-remaining: - '3999' anthropic-ratelimit-requests-reset: - - '2026-02-06T18:41:26Z' + - '2026-02-12T22:11:13Z' anthropic-ratelimit-tokens-limit: - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX anthropic-ratelimit-tokens-remaining: @@ -108,7 +109,120 @@ interactions: strict-transport-security: - STS-XXX x-envoy-upstream-service-time: - - '2650' + - '2947' + status: + code: 200 + message: OK +- request: + body: '{"max_tokens":4096,"messages":[{"role":"user","content":"\nCurrent Task: + Analyze the benefits of remote work briefly. Keep it concise.\n\nProvide your + complete response:"}],"model":"claude-3-5-haiku-20241022","stop_sequences":["\nObservation:"],"stream":false,"system":"You + are Analyst. You are an expert analyst who provides clear, structured insights.\nYour + personal goal is: Provide structured analysis on topics","tool_choice":{"type":"tool","name":"structured_output"},"tools":[{"name":"structured_output","description":"Output + the structured response","input_schema":{"type":"object","description":"Structured + output for analysis results.","title":"AnalysisResult","properties":{"topic":{"type":"string","description":"The + topic analyzed","title":"Topic"},"key_points":{"type":"array","description":"Key + insights from the analysis","title":"Key Points","items":{"type":"string"}},"summary":{"type":"string","description":"Brief + summary of findings","title":"Summary"}},"additionalProperties":false,"required":["topic","key_points","summary"]}}]}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + anthropic-version: + - '2023-06-01' + connection: + - keep-alive + content-length: + - '1051' + content-type: + - application/json + host: + - api.anthropic.com + x-api-key: + - X-API-KEY-XXX + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 0.73.0 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + x-stainless-timeout: + - NOT_GIVEN + method: POST + uri: https://api.anthropic.com/v1/messages + response: + body: + string: '{"model":"claude-3-5-haiku-20241022","id":"msg_01WBiUkWaCjUxVKAj1L4SJ1j","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Kza2pLV8aZu6xADurmw8ms","name":"structured_output","input":{"topic":"Benefits + of Remote Work","summary":"Remote work offers significant advantages for both + employees and employers, transforming traditional work environments and increasing + overall productivity and satisfaction.","key_points":["Increased flexibility + in work schedule","Elimination of commute time and associated stress","Cost + savings for both employees and employers","Improved work-life balance","Access + to a broader talent pool","Enhanced employee productivity and job satisfaction"]}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":589,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":144,"service_tier":"standard","inference_geo":"not_available"}}' + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Security-Policy: + - CSP-FILTERED + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 22:11:18 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Robots-Tag: + - none + anthropic-organization-id: + - ANTHROPIC-ORGANIZATION-ID-XXX + anthropic-ratelimit-input-tokens-limit: + - ANTHROPIC-RATELIMIT-INPUT-TOKENS-LIMIT-XXX + anthropic-ratelimit-input-tokens-remaining: + - ANTHROPIC-RATELIMIT-INPUT-TOKENS-REMAINING-XXX + anthropic-ratelimit-input-tokens-reset: + - ANTHROPIC-RATELIMIT-INPUT-TOKENS-RESET-XXX + anthropic-ratelimit-output-tokens-limit: + - ANTHROPIC-RATELIMIT-OUTPUT-TOKENS-LIMIT-XXX + anthropic-ratelimit-output-tokens-remaining: + - ANTHROPIC-RATELIMIT-OUTPUT-TOKENS-REMAINING-XXX + anthropic-ratelimit-output-tokens-reset: + - ANTHROPIC-RATELIMIT-OUTPUT-TOKENS-RESET-XXX + anthropic-ratelimit-requests-limit: + - '4000' + anthropic-ratelimit-requests-remaining: + - '3999' + anthropic-ratelimit-requests-reset: + - '2026-02-12T22:11:16Z' + anthropic-ratelimit-tokens-limit: + - ANTHROPIC-RATELIMIT-TOKENS-LIMIT-XXX + anthropic-ratelimit-tokens-remaining: + - ANTHROPIC-RATELIMIT-TOKENS-REMAINING-XXX + anthropic-ratelimit-tokens-reset: + - ANTHROPIC-RATELIMIT-TOKENS-RESET-XXX + cf-cache-status: + - DYNAMIC + request-id: + - REQUEST-ID-XXX + strict-transport-security: + - STS-XXX + x-envoy-upstream-service-time: + - '2474' status: code: 200 message: OK diff --git a/lib/crewai/tests/cassettes/llms/azure/test_azure_agent_kickoff_structured_output_with_tools.yaml b/lib/crewai/tests/cassettes/llms/azure/test_azure_agent_kickoff_structured_output_with_tools.yaml index 6b025ab42..bd74ea003 100644 --- a/lib/crewai/tests/cassettes/llms/azure/test_azure_agent_kickoff_structured_output_with_tools.yaml +++ b/lib/crewai/tests/cassettes/llms/azure/test_azure_agent_kickoff_structured_output_with_tools.yaml @@ -41,7 +41,7 @@ interactions: uri: https://fake-azure-endpoint.openai.azure.com/openai/deployments/gpt-4o-mini/chat/completions?api-version=2024-12-01-preview response: body: - string: '{"choices":[{"content_filter_results":{},"finish_reason":"tool_calls","index":0,"logprobs":null,"message":{"annotations":[],"content":null,"refusal":null,"role":"assistant","tool_calls":[{"function":{"arguments":"{\"a\":15,\"b\":27}","name":"add_numbers"},"id":"call_xvUi7xS7jtnRyG6NIhRvbb5r","type":"function"}]}}],"created":1769734374,"id":"chatcmpl-D3X2kUbUq9WXlKVGu2D7h6pWVCx0E","model":"gpt-4o-mini-2024-07-18","object":"chat.completion","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"jailbreak":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"system_fingerprint":"fp_f97eff32c5","usage":{"completion_tokens":19,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":194,"prompt_tokens_details":{"audio_tokens":0,"cached_tokens":0},"total_tokens":213}} + string: '{"choices":[{"content_filter_results":{},"finish_reason":"tool_calls","index":0,"logprobs":null,"message":{"annotations":[],"content":null,"refusal":null,"role":"assistant","tool_calls":[{"function":{"arguments":"{\"a\":15,\"b\":27}","name":"add_numbers"},"id":"call_yusjHcc6BMO8J3LrKrcXty8H","type":"function"}]}}],"created":1770924745,"id":"chatcmpl-D8WiHWZdT70mZzSjfHU4KxssiHOrW","model":"gpt-4o-mini-2024-07-18","object":"chat.completion","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"jailbreak":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"system_fingerprint":"fp_f97eff32c5","usage":{"completion_tokens":19,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":194,"prompt_tokens_details":{"audio_tokens":0,"cached_tokens":0},"total_tokens":213}} ' headers: @@ -50,7 +50,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 30 Jan 2026 00:52:53 GMT + - Thu, 12 Feb 2026 19:32:25 GMT Strict-Transport-Security: - STS-XXX apim-request-id: @@ -87,9 +87,9 @@ interactions: a calculator assistant that uses tools to compute results.\nYour personal goal is: Perform calculations using available tools"}, {"role": "user", "content": "\nCurrent Task: Calculate 15 + 27 using your add_numbers tool. Report the result."}, - {"role": "assistant", "content": "", "tool_calls": [{"id": "call_xvUi7xS7jtnRyG6NIhRvbb5r", + {"role": "assistant", "content": "", "tool_calls": [{"id": "call_yusjHcc6BMO8J3LrKrcXty8H", "type": "function", "function": {"name": "add_numbers", "arguments": "{\"a\":15,\"b\":27}"}}]}, - {"role": "tool", "tool_call_id": "call_xvUi7xS7jtnRyG6NIhRvbb5r", "content": + {"role": "tool", "tool_call_id": "call_yusjHcc6BMO8J3LrKrcXty8H", "content": "42"}], "stream": false, "response_format": {"type": "json_schema", "json_schema": {"name": "CalculationResult", "schema": {"description": "Structured output for calculation results.", "properties": {"operation": {"description": "The mathematical @@ -128,16 +128,104 @@ interactions: response: body: string: '{"choices":[{"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"protected_material_code":{"filtered":false,"detected":false},"protected_material_text":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"finish_reason":"stop","index":0,"logprobs":null,"message":{"annotations":[],"content":"{\"operation\":\"addition\",\"result\":42,\"explanation\":\"The - sum of 15 and 27 is calculated as 15 + 27 = 42.\"}","refusal":null,"role":"assistant"}}],"created":1769734375,"id":"chatcmpl-D3X2lupVq0RsIVdaZc2XqZpm4EmSW","model":"gpt-4o-mini-2024-07-18","object":"chat.completion","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"jailbreak":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"system_fingerprint":"fp_f97eff32c5","usage":{"completion_tokens":39,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":221,"prompt_tokens_details":{"audio_tokens":0,"cached_tokens":0},"total_tokens":260}} + sum of 15 and 27 is calculated by adding the two numbers together.\"}","refusal":null,"role":"assistant"}}],"created":1770924746,"id":"chatcmpl-D8WiIERCCHweoIg40FlrI8MaMO3SR","model":"gpt-4o-mini-2024-07-18","object":"chat.completion","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"jailbreak":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"system_fingerprint":"fp_f97eff32c5","usage":{"completion_tokens":36,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":221,"prompt_tokens_details":{"audio_tokens":0,"cached_tokens":0},"total_tokens":257}} ' headers: Content-Length: - - '1327' + - '1346' Content-Type: - application/json Date: - - Fri, 30 Jan 2026 00:52:55 GMT + - Thu, 12 Feb 2026 19:32:26 GMT + Strict-Transport-Security: + - STS-XXX + apim-request-id: + - APIM-REQUEST-ID-XXX + azureml-model-session: + - AZUREML-MODEL-SESSION-XXX + x-accel-buffering: + - 'no' + x-content-type-options: + - X-CONTENT-TYPE-XXX + x-ms-client-request-id: + - X-MS-CLIENT-REQUEST-ID-XXX + x-ms-deployment-name: + - gpt-4o-mini + x-ms-rai-invoked: + - 'true' + x-ms-region: + - X-MS-REGION-XXX + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are Calculator. You are + a calculator assistant that uses tools to compute results.\nYour personal goal + is: Perform calculations using available tools"}, {"role": "user", "content": + "\nCurrent Task: Calculate 15 + 27 using your add_numbers tool. Report the result."}, + {"role": "assistant", "content": "", "tool_calls": [{"id": "call_yusjHcc6BMO8J3LrKrcXty8H", + "type": "function", "function": {"name": "add_numbers", "arguments": "{\"a\":15,\"b\":27}"}}]}, + {"role": "tool", "tool_call_id": "call_yusjHcc6BMO8J3LrKrcXty8H", "content": + "42"}, {"role": "assistant", "content": "{\"operation\":\"addition\",\"result\":42,\"explanation\":\"The + sum of 15 and 27 is calculated by adding the two numbers together.\"}"}], "stream": + false, "response_format": {"type": "json_schema", "json_schema": {"name": "CalculationResult", + "schema": {"description": "Structured output for calculation results.", "properties": + {"operation": {"description": "The mathematical operation performed", "title": + "Operation", "type": "string"}, "result": {"description": "The result of the + calculation", "title": "Result", "type": "integer"}, "explanation": {"description": + "Brief explanation of the calculation", "title": "Explanation", "type": "string"}}, + "required": ["operation", "result", "explanation"], "title": "CalculationResult", + "type": "object", "additionalProperties": false}, "description": "Schema for + CalculationResult", "strict": true}}, "stop": ["\nObservation:"], "tool_choice": + "auto", "tools": [{"function": {"name": "add_numbers", "description": "Add two + numbers together and return the sum.", "parameters": {"properties": {"a": {"title": + "A", "type": "integer"}, "b": {"title": "B", "type": "integer"}}, "required": + ["a", "b"], "type": "object", "additionalProperties": false}}, "type": "function"}]}' + headers: + Accept: + - application/json + Connection: + - keep-alive + Content-Length: + - '1840' + Content-Type: + - application/json + User-Agent: + - X-USER-AGENT-XXX + accept-encoding: + - ACCEPT-ENCODING-XXX + api-key: + - X-API-KEY-XXX + authorization: + - AUTHORIZATION-XXX + x-ms-client-request-id: + - X-MS-CLIENT-REQUEST-ID-XXX + method: POST + uri: https://fake-azure-endpoint.openai.azure.com/openai/deployments/gpt-4o-mini/chat/completions?api-version=2024-12-01-preview + response: + body: + string: '{"choices":[{"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"protected_material_code":{"filtered":false,"detected":false},"protected_material_text":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"finish_reason":"stop","index":0,"logprobs":null,"message":{"annotations":[],"content":"{\"operation\":\"addition\",\"result\":42,\"explanation\":\"The + sum of 15 and 27 is calculated by adding the two numbers together.\"}","refusal":null,"role":"assistant"}}],"created":1770924747,"id":"chatcmpl-D8WiJW94I74LHB1PFgHCjFnJDpwKD","model":"gpt-4o-mini-2024-07-18","object":"chat.completion","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"jailbreak":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"system_fingerprint":"fp_f97eff32c5","usage":{"completion_tokens":36,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":259,"prompt_tokens_details":{"audio_tokens":0,"cached_tokens":0},"total_tokens":295}} + + ' + headers: + Content-Length: + - '1346' + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:27 GMT Strict-Transport-Security: - STS-XXX apim-request-id: diff --git a/lib/crewai/tests/cassettes/llms/azure/test_azure_agent_kickoff_structured_output_without_tools.yaml b/lib/crewai/tests/cassettes/llms/azure/test_azure_agent_kickoff_structured_output_without_tools.yaml index e56220f87..e13f5c5db 100644 --- a/lib/crewai/tests/cassettes/llms/azure/test_azure_agent_kickoff_structured_output_without_tools.yaml +++ b/lib/crewai/tests/cassettes/llms/azure/test_azure_agent_kickoff_structured_output_without_tools.yaml @@ -38,22 +38,111 @@ interactions: response: body: string: '{"choices":[{"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"protected_material_code":{"filtered":false,"detected":false},"protected_material_text":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"finish_reason":"stop","index":0,"logprobs":null,"message":{"annotations":[],"content":"{\"topic\":\"Benefits - of Remote Work\",\"key_points\":[\"Increased flexibility in work hours and - location\",\"Reduced commuting time and costs\",\"Improved work-life balance - for employees\",\"Access to a wider talent pool for employers\",\"Potential - for increased productivity and job satisfaction\",\"Lower overhead costs for - businesses\"],\"summary\":\"Remote work offers significant advantages including - flexibility, cost savings, and improved employee well-being, making it an - attractive option for both employees and employers.\"}","refusal":null,"role":"assistant"}}],"created":1769734376,"id":"chatcmpl-D3X2mCDjoZv5Da0NA7SH4XH2pvQo1","model":"gpt-4o-mini-2024-07-18","object":"chat.completion","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"jailbreak":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"system_fingerprint":"fp_f97eff32c5","usage":{"completion_tokens":90,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":160,"prompt_tokens_details":{"audio_tokens":0,"cached_tokens":0},"total_tokens":250}} + of Remote Work\",\"key_points\":[\"Increased Flexibility: Employees can choose + when and where to work, leading to better work-life balance.\",\"Cost Savings: + Reduction in commuting costs for employees and office space expenses for employers.\",\"Access + to a Wider Talent Pool: Companies can hire talent from anywhere, not limited + by geographic location.\",\"Improved Productivity: Many employees report increased + focus and reduced distractions at home.\",\"Environmental Benefits: Decreased + commuting leads to lower carbon emissions and reduced traffic congestion.\"],\"summary\":\"Remote + work offers significant advantages including flexibility, cost savings, access + to diverse talent, enhanced productivity, and environmental benefits.\"}","refusal":null,"role":"assistant"}}],"created":1770924741,"id":"chatcmpl-D8WiDybRYxLqFSsV0Y9VEuZgFmoZo","model":"gpt-4o-mini-2024-07-18","object":"chat.completion","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"jailbreak":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"system_fingerprint":"fp_f97eff32c5","usage":{"completion_tokens":127,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":160,"prompt_tokens_details":{"audio_tokens":0,"cached_tokens":0},"total_tokens":287}} ' headers: Content-Length: - - '1748' + - '1976' Content-Type: - application/json Date: - - Fri, 30 Jan 2026 00:52:57 GMT + - Thu, 12 Feb 2026 19:32:22 GMT + Strict-Transport-Security: + - STS-XXX + apim-request-id: + - APIM-REQUEST-ID-XXX + azureml-model-session: + - AZUREML-MODEL-SESSION-XXX + x-accel-buffering: + - 'no' + x-content-type-options: + - X-CONTENT-TYPE-XXX + x-ms-client-request-id: + - X-MS-CLIENT-REQUEST-ID-XXX + x-ms-deployment-name: + - gpt-4o-mini + x-ms-rai-invoked: + - 'true' + x-ms-region: + - X-MS-REGION-XXX + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are Analyst. You are an + expert analyst who provides clear, structured insights.\nYour personal goal + is: Provide structured analysis on topics"}, {"role": "user", "content": "\nCurrent + Task: Analyze the benefits of remote work briefly. Keep it concise.\n\nProvide + your complete response:"}], "stream": false, "response_format": {"type": "json_schema", + "json_schema": {"name": "AnalysisResult", "schema": {"description": "Structured + output for analysis results.", "properties": {"topic": {"description": "The + topic analyzed", "title": "Topic", "type": "string"}, "key_points": {"description": + "Key insights from the analysis", "items": {"type": "string"}, "title": "Key + Points", "type": "array"}, "summary": {"description": "Brief summary of findings", + "title": "Summary", "type": "string"}}, "required": ["topic", "key_points", + "summary"], "title": "AnalysisResult", "type": "object", "additionalProperties": + false}, "description": "Schema for AnalysisResult", "strict": true}}, "stop": + ["\nObservation:"]}' + headers: + Accept: + - application/json + Connection: + - keep-alive + Content-Length: + - '1054' + Content-Type: + - application/json + User-Agent: + - X-USER-AGENT-XXX + accept-encoding: + - ACCEPT-ENCODING-XXX + api-key: + - X-API-KEY-XXX + authorization: + - AUTHORIZATION-XXX + x-ms-client-request-id: + - X-MS-CLIENT-REQUEST-ID-XXX + method: POST + uri: https://fake-azure-endpoint.openai.azure.com/openai/deployments/gpt-4o-mini/chat/completions?api-version=2024-12-01-preview + response: + body: + string: '{"choices":[{"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"protected_material_code":{"filtered":false,"detected":false},"protected_material_text":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"finish_reason":"stop","index":0,"logprobs":null,"message":{"annotations":[],"content":"{\"topic\":\"Benefits + of Remote Work\",\"key_points\":[\"Increased flexibility for employees to + manage their work-life balance.\",\"Cost savings for both employees (e.g., + commuting, meals) and employers (e.g., office space).\",\"Access to a wider + talent pool without geographical limitations.\",\"Improved productivity due + to fewer workplace distractions.\",\"Enhanced job satisfaction and retention + rates among employees.\"],\"summary\":\"Remote work offers significant benefits + including improved flexibility, cost savings, access to talent, enhanced productivity, + and greater employee satisfaction.\"}","refusal":null,"role":"assistant"}}],"created":1770924743,"id":"chatcmpl-D8WiFi9kSuHKRKZuxqreOqCOXoCQj","model":"gpt-4o-mini-2024-07-18","object":"chat.completion","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"jailbreak":{"filtered":false,"detected":false},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"system_fingerprint":"fp_f97eff32c5","usage":{"completion_tokens":103,"completion_tokens_details":{"accepted_prediction_tokens":0,"audio_tokens":0,"reasoning_tokens":0,"rejected_prediction_tokens":0},"prompt_tokens":160,"prompt_tokens_details":{"audio_tokens":0,"cached_tokens":0},"total_tokens":263}} + + ' + headers: + Content-Length: + - '1818' + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:25 GMT Strict-Transport-Security: - STS-XXX apim-request-id: diff --git a/lib/crewai/tests/cassettes/llms/bedrock/test_bedrock_agent_kickoff_structured_output_with_tools.yaml b/lib/crewai/tests/cassettes/llms/bedrock/test_bedrock_agent_kickoff_structured_output_with_tools.yaml index a4aebac22..5441844c9 100644 --- a/lib/crewai/tests/cassettes/llms/bedrock/test_bedrock_agent_kickoff_structured_output_with_tools.yaml +++ b/lib/crewai/tests/cassettes/llms/bedrock/test_bedrock_agent_kickoff_structured_output_with_tools.yaml @@ -40,17 +40,17 @@ interactions: uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-3-sonnet-20240229-v1%3A0/converse response: body: - string: '{"metrics":{"latencyMs":1161},"output":{"message":{"content":[{"text":"Okay, - let''s calculate 15 + 27:"},{"toolUse":{"input":{"a":15,"b":27},"name":"add_numbers","toolUseId":"tooluse_Jv2zf5bNQ1i0SuxqO8Qk5A"}}],"role":"assistant"}},"stopReason":"tool_use","usage":{"inputTokens":488,"outputTokens":84,"serverToolUsage":{},"totalTokens":572}}' + string: '{"metrics":{"latencyMs":1968},"output":{"message":{"content":[{"text":"Okay, + let''s calculate 15 + 27 using the add_numbers tool:"},{"toolUse":{"input":{"a":15,"b":27},"name":"add_numbers","toolUseId":"tooluse_pSseOamVELzpL3kQG5VukN"}}],"role":"assistant"}},"stopReason":"tool_use","usage":{"inputTokens":488,"outputTokens":91,"serverToolUsage":{},"totalTokens":579}}' headers: Connection: - keep-alive Content-Length: - - '339' + - '366' Content-Type: - application/json Date: - - Fri, 30 Jan 2026 01:04:12 GMT + - Thu, 12 Feb 2026 22:01:04 GMT x-amzn-RequestId: - X-AMZN-REQUESTID-XXX status: @@ -59,9 +59,9 @@ interactions: - request: body: '{"messages": [{"role": "user", "content": [{"text": "\nCurrent Task: Calculate 15 + 27 using your add_numbers tool. Report the result."}]}, {"role": "assistant", - "content": [{"toolUse": {"toolUseId": "tooluse_Jv2zf5bNQ1i0SuxqO8Qk5A", "name": + "content": [{"toolUse": {"toolUseId": "tooluse_pSseOamVELzpL3kQG5VukN", "name": "add_numbers", "input": {"a": 15, "b": 27}}}]}, {"role": "user", "content": - [{"toolResult": {"toolUseId": "tooluse_Jv2zf5bNQ1i0SuxqO8Qk5A", "content": [{"text": + [{"toolResult": {"toolUseId": "tooluse_pSseOamVELzpL3kQG5VukN", "content": [{"text": "42"}]}}]}], "inferenceConfig": {"stopSequences": ["\nObservation:"]}, "system": [{"text": "You are Calculator. You are a calculator assistant that uses tools to compute results.\nYour personal goal is: Perform calculations using available @@ -100,20 +100,86 @@ interactions: uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-3-sonnet-20240229-v1%3A0/converse response: body: - string: '{"metrics":{"latencyMs":1446},"output":{"message":{"content":[{"toolUse":{"input":{"operation":"Addition","result":42,"explanation":"I - added the two numbers 15 and 27 using the add_numbers tool."},"name":"structured_output","toolUseId":"tooluse_oofqrd0wS2WH12IdXEOn3w"}}],"role":"assistant"}},"stopReason":"tool_use","usage":{"inputTokens":571,"outputTokens":105,"serverToolUsage":{},"totalTokens":676}}' + string: '{"metrics":{"latencyMs":7598},"output":{"message":{"content":[{"toolUse":{"input":{"operation":"Addition","result":42,"explanation":"I + added 15 and 27 using the add_numbers tool."},"name":"structured_output","toolUseId":"tooluse_RT8uSPaM37Q8CVuo3rJLtI"}}],"role":"assistant"}},"stopReason":"tool_use","usage":{"inputTokens":571,"outputTokens":102,"serverToolUsage":{},"totalTokens":673}}' headers: Connection: - keep-alive Content-Length: - - '403' + - '387' Content-Type: - application/json Date: - - Fri, 30 Jan 2026 01:04:14 GMT + - Thu, 12 Feb 2026 22:01:12 GMT x-amzn-RequestId: - X-AMZN-REQUESTID-XXX status: code: 200 message: OK +- request: + body: '{"messages": [{"role": "user", "content": [{"text": "\nCurrent Task: Calculate + 15 + 27 using your add_numbers tool. Report the result."}]}, {"role": "assistant", + "content": [{"toolUse": {"toolUseId": "tooluse_pSseOamVELzpL3kQG5VukN", "name": + "add_numbers", "input": {"a": 15, "b": 27}}}]}, {"role": "user", "content": + [{"toolResult": {"toolUseId": "tooluse_pSseOamVELzpL3kQG5VukN", "content": [{"text": + "42"}]}}]}, {"role": "assistant", "content": [{"text": "{\"operation\":\"Addition\",\"result\":42,\"explanation\":\"I + added 15 and 27 using the add_numbers tool.\"}"}]}], "inferenceConfig": {"stopSequences": + ["\nObservation:"]}, "system": [{"text": "You are Calculator. You are a calculator + assistant that uses tools to compute results.\nYour personal goal is: Perform + calculations using available tools"}], "toolConfig": {"tools": [{"toolSpec": + {"name": "add_numbers", "description": "Add two numbers together and return + the sum.", "inputSchema": {"json": {"properties": {"a": {"title": "A", "type": + "integer"}, "b": {"title": "B", "type": "integer"}}, "required": ["a", "b"], + "type": "object", "additionalProperties": false}}}}, {"toolSpec": {"name": "structured_output", + "description": "Use this tool to provide your final structured response. Call + this tool when you have gathered all necessary information and are ready to + provide the final answer in the required format.", "inputSchema": {"json": {"description": + "Structured output for calculation results.", "properties": {"operation": {"description": + "The mathematical operation performed", "title": "Operation", "type": "string"}, + "result": {"description": "The result of the calculation", "title": "Result", + "type": "integer"}, "explanation": {"description": "Brief explanation of the + calculation", "title": "Explanation", "type": "string"}}, "required": ["operation", + "result", "explanation"], "title": "CalculationResult", "type": "object", "additionalProperties": + false}}}}]}}' + headers: + Content-Length: + - '1942' + Content-Type: + - !!binary | + YXBwbGljYXRpb24vanNvbg== + User-Agent: + - X-USER-AGENT-XXX + amz-sdk-invocation-id: + - AMZ-SDK-INVOCATION-ID-XXX + amz-sdk-request: + - !!binary | + YXR0ZW1wdD0x + authorization: + - AUTHORIZATION-XXX + x-amz-date: + - X-AMZ-DATE-XXX + method: POST + uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-3-sonnet-20240229-v1%3A0/converse + response: + body: + string: '{"message":"The model returned the following errors: Your API request + included an `assistant` message in the final position, which would pre-fill + the `assistant` response. When using tools, pre-filling the `assistant` response + is not supported."}' + headers: + Connection: + - keep-alive + Content-Length: + - '246' + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 22:01:12 GMT + x-amzn-ErrorType: + - ValidationException:http://internal.amazon.com/coral/com.amazon.bedrock/ + x-amzn-RequestId: + - X-AMZN-REQUESTID-XXX + status: + code: 400 + message: Bad Request version: 1 diff --git a/lib/crewai/tests/cassettes/llms/google/test_gemini_agent_kickoff_structured_output_with_tools.yaml b/lib/crewai/tests/cassettes/llms/google/test_gemini_agent_kickoff_structured_output_with_tools.yaml index b76596c8c..d6ea6e60b 100644 --- a/lib/crewai/tests/cassettes/llms/google/test_gemini_agent_kickoff_structured_output_with_tools.yaml +++ b/lib/crewai/tests/cassettes/llms/google/test_gemini_agent_kickoff_structured_output_with_tools.yaml @@ -40,31 +40,31 @@ interactions: x-goog-api-key: - X-GOOG-API-KEY-XXX method: POST - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-001:generateContent + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": [\n {\n \"functionCall\": {\n \"name\": \"add_numbers\",\n - \ \"args\": {\n \"b\": 27,\n \"a\": - 15\n }\n }\n }\n ],\n \"role\": - \"model\"\n },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": - -5.0267503995980534e-05\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": - 98,\n \"candidatesTokenCount\": 7,\n \"totalTokenCount\": 105,\n \"promptTokensDetails\": - [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 98\n - \ }\n ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": - \"TEXT\",\n \"tokenCount\": 7\n }\n ]\n },\n \"modelVersion\": - \"gemini-2.0-flash-001\",\n \"responseId\": \"0AV8acutBq6PjMcPkpfamQQ\"\n}\n" + \ \"args\": {\n \"a\": 15,\n \"b\": + 27\n }\n },\n \"thoughtSignature\": \"CqMFAb4+9vtoEAola3khZd5LD4cccGlQsdVI9cPJGQBURT0qF5Xqp8o1L7oGN4s5trQpk7NPhKe1CYDMXDJueC7zM/zGlcy2daSJAeuTd9pxAbtndEXCGjM/9Nt8QRpvaDV3Ff2bkKSn/JCOJdzsN5m6G5C6BMRGVt8bZyRHelwu7tjCNYiMEvFqVoQIWN6d+CWKkHnbSwOlSUTDXJEcWvUwP82Ou7s68l2k7XNbDWCY5Tt8LUdPgeqjfH15JoEgZUbPxbVKA0ykRln1svfpvQ4Vm3Hn7PL3voWZWGzP5uLnH6JF2M8H6TokSDYZETvlDo5bK1Cx9IzrdUgHkku6gNbct/e53CPEUgqSKbY1VhsLAXAHieT4PKqeMQ4B+7gyCLXHeL6TOGjqSVGBBOQLtF9yCbKbkXa5pPu3+DnPhoOeH7jEPb+bqIWv6rxERErbKhu0IlP+UNBRAAj+wXNDZxQvLnlrlXrLtWllO9wFshr1DzgDgNZSRsPQeVQq2L0bL+KRobCXAfjMpH/8bhxdTI3sgsCtU3+dKwV5Z8Fg6e5oRyBAss8AE2CmYtdnYpt+iss9IT8NlSpI2DcdmVErEFNsebVcSwnr+9YXoESh4O1i8er9lX59hKTBdYXdP2GJ63cq9cSOalzx/doKxA2FzP3QhdV+H11LiUQzsQCXHqv0D+D290z1QoPhpsHEd7b/1EoW7D/2rub4acV8tpUcG2oe/Mj1kzYQoiEwZkgM56JoUs++5+5tWBMW68e4y1AmkyhDTCDkiNIa4noE6AOdNsLjL/+EHvcNFRmayFXXiUShIcMT0WQ9xNriWQP/dbhd6F5K7BKSajdB1391OYeHVmSEzzXYxjnUWXd+jqORQcsiPNIVRQkZI7ZGl6+4exmZsfrKzbFy\"\n + \ }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"index\": 0,\n \"finishMessage\": \"Model generated + function call(s).\"\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 202,\n \"candidatesTokenCount\": 22,\n \"totalTokenCount\": 403,\n \"promptTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 202\n + \ }\n ],\n \"thoughtsTokenCount\": 179\n },\n \"modelVersion\": + \"gemini-2.5-flash\",\n \"responseId\": \"AlCOadrrK7aVjMcPksrU-A0\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Fri, 30 Jan 2026 01:13:52 GMT + - Thu, 12 Feb 2026 22:11:14 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=555 + - gfet4t7; dur=1417 Transfer-Encoding: - chunked Vary: @@ -83,26 +83,27 @@ interactions: - request: body: '{"contents": [{"parts": [{"text": "\nCurrent Task: Calculate 15 + 27 using your add_numbers tool. Report the result."}], "role": "user"}, {"parts": [{"functionCall": - {"args": {"b": 27, "a": 15}, "name": "add_numbers"}}], "role": "model"}, {"parts": - [{"functionResponse": {"name": "add_numbers", "response": {"result": 42}}}], - "role": "user"}], "systemInstruction": {"parts": [{"text": "You are Calculator. - You are a calculator assistant that uses tools to compute results.\nYour personal - goal is: Perform calculations using available tools"}], "role": "user"}, "tools": - [{"functionDeclarations": [{"description": "Add two numbers together and return - the sum.", "name": "add_numbers", "parameters_json_schema": {"properties": {"a": - {"title": "A", "type": "integer"}, "b": {"title": "B", "type": "integer"}}, - "required": ["a", "b"], "type": "object", "additionalProperties": false}}, {"description": - "Use this tool to provide your final structured response. Call this tool when - you have gathered all necessary information and are ready to provide the final - answer in the required format.", "name": "structured_output", "parameters_json_schema": - {"description": "Structured output for calculation results.", "properties": - {"operation": {"description": "The mathematical operation performed", "title": - "Operation", "type": "string"}, "result": {"description": "The result of the - calculation", "title": "Result", "type": "integer"}, "explanation": {"description": - "Brief explanation of the calculation", "title": "Explanation", "type": "string"}}, - "required": ["operation", "result", "explanation"], "title": "CalculationResult", - "type": "object", "additionalProperties": false, "propertyOrdering": ["operation", - "result", "explanation"]}}]}], "generationConfig": {"stopSequences": ["\nObservation:"]}}' + {"args": {"a": 15, "b": 27}, "name": "add_numbers"}, "thoughtSignature": "CqMFAb4-9vtoEAola3khZd5LD4cccGlQsdVI9cPJGQBURT0qF5Xqp8o1L7oGN4s5trQpk7NPhKe1CYDMXDJueC7zM_zGlcy2daSJAeuTd9pxAbtndEXCGjM_9Nt8QRpvaDV3Ff2bkKSn_JCOJdzsN5m6G5C6BMRGVt8bZyRHelwu7tjCNYiMEvFqVoQIWN6d-CWKkHnbSwOlSUTDXJEcWvUwP82Ou7s68l2k7XNbDWCY5Tt8LUdPgeqjfH15JoEgZUbPxbVKA0ykRln1svfpvQ4Vm3Hn7PL3voWZWGzP5uLnH6JF2M8H6TokSDYZETvlDo5bK1Cx9IzrdUgHkku6gNbct_e53CPEUgqSKbY1VhsLAXAHieT4PKqeMQ4B-7gyCLXHeL6TOGjqSVGBBOQLtF9yCbKbkXa5pPu3-DnPhoOeH7jEPb-bqIWv6rxERErbKhu0IlP-UNBRAAj-wXNDZxQvLnlrlXrLtWllO9wFshr1DzgDgNZSRsPQeVQq2L0bL-KRobCXAfjMpH_8bhxdTI3sgsCtU3-dKwV5Z8Fg6e5oRyBAss8AE2CmYtdnYpt-iss9IT8NlSpI2DcdmVErEFNsebVcSwnr-9YXoESh4O1i8er9lX59hKTBdYXdP2GJ63cq9cSOalzx_doKxA2FzP3QhdV-H11LiUQzsQCXHqv0D-D290z1QoPhpsHEd7b_1EoW7D_2rub4acV8tpUcG2oe_Mj1kzYQoiEwZkgM56JoUs--5-5tWBMW68e4y1AmkyhDTCDkiNIa4noE6AOdNsLjL_-EHvcNFRmayFXXiUShIcMT0WQ9xNriWQP_dbhd6F5K7BKSajdB1391OYeHVmSEzzXYxjnUWXd-jqORQcsiPNIVRQkZI7ZGl6-4exmZsfrKzbFy"}], + "role": "model"}, {"parts": [{"functionResponse": {"name": "add_numbers", "response": + {"result": 42}}}], "role": "user"}], "systemInstruction": {"parts": [{"text": + "You are Calculator. You are a calculator assistant that uses tools to compute + results.\nYour personal goal is: Perform calculations using available tools"}], + "role": "user"}, "tools": [{"functionDeclarations": [{"description": "Add two + numbers together and return the sum.", "name": "add_numbers", "parameters_json_schema": + {"properties": {"a": {"title": "A", "type": "integer"}, "b": {"title": "B", + "type": "integer"}}, "required": ["a", "b"], "type": "object", "additionalProperties": + false}}, {"description": "Use this tool to provide your final structured response. + Call this tool when you have gathered all necessary information and are ready + to provide the final answer in the required format.", "name": "structured_output", + "parameters_json_schema": {"description": "Structured output for calculation + results.", "properties": {"operation": {"description": "The mathematical operation + performed", "title": "Operation", "type": "string"}, "result": {"description": + "The result of the calculation", "title": "Result", "type": "integer"}, "explanation": + {"description": "Brief explanation of the calculation", "title": "Explanation", + "type": "string"}}, "required": ["operation", "result", "explanation"], "title": + "CalculationResult", "type": "object", "additionalProperties": false, "propertyOrdering": + ["operation", "result", "explanation"]}}]}], "generationConfig": {"stopSequences": + ["\nObservation:"]}}' headers: User-Agent: - X-USER-AGENT-XXX @@ -113,7 +114,7 @@ interactions: connection: - keep-alive content-length: - - '1797' + - '2725' content-type: - application/json host: @@ -123,32 +124,32 @@ interactions: x-goog-api-key: - X-GOOG-API-KEY-XXX method: POST - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-001:generateContent + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": [\n {\n \"functionCall\": {\n \"name\": \"structured_output\",\n - \ \"args\": {\n \"result\": 42,\n \"operation\": - \"Addition\",\n \"explanation\": \"15 + 27 = 42\"\n }\n - \ }\n }\n ],\n \"role\": \"model\"\n },\n - \ \"finishReason\": \"STOP\",\n \"avgLogprobs\": -0.09667918417188856\n - \ }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 110,\n \"candidatesTokenCount\": - 18,\n \"totalTokenCount\": 128,\n \"promptTokensDetails\": [\n {\n - \ \"modality\": \"TEXT\",\n \"tokenCount\": 110\n }\n ],\n - \ \"candidatesTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n - \ \"tokenCount\": 18\n }\n ]\n },\n \"modelVersion\": \"gemini-2.0-flash-001\",\n - \ \"responseId\": \"0AV8ac_4Kr_yjMcPg_a4gA0\"\n}\n" + \ \"args\": {\n \"result\": 42,\n \"explanation\": + \"The sum of 15 and 27 is 42.\",\n \"operation\": \"Addition\"\n + \ }\n },\n \"thoughtSignature\": \"CtYCAb4+9vsKJoVFV1W8ORKk+Likt7GS9CuzuE53V9sbS2gFuiEjJ7ghBqWDG2UrgyRYFjPl6EalXUBnEbEq9rZNYGY27VpcweI1tv6p+477bgz1pmZnL0nfAcrp4nuphL+Ij0nXZQoo5cF4Gk29RQSNy49VRn3eP9eUW0hG7EpkPmfJiUSSDuaQENHN1UBBnFS9QUC+Fw+unnQ10B57fauyiXWNrBUkE2PYqgj5vELa5lVMtk5beh4ydWNnZ04t8gvQniCJ38EWWQr8VAXrSqE156oCBMwkFaFM7huPWHZk53n/HAG/VsQgPayf045STWKWjBzp6uTiwH9pYtoI1LBah3uxVbJRKOzH7HI4U0cHsffQqIIUn8cW4SP1UK/nvAivU1l0p6Bot8KIVJ5vqoF+o2oDmTuZv0HkDo5+UvXRqfsO5AylpUdM+JMGaXVAA7oZNqVPQybw\"\n + \ }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"index\": 0,\n \"finishMessage\": \"Model generated + function call(s).\"\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 240,\n \"candidatesTokenCount\": 39,\n \"totalTokenCount\": 357,\n \"promptTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 240\n + \ }\n ],\n \"thoughtsTokenCount\": 78\n },\n \"modelVersion\": + \"gemini-2.5-flash\",\n \"responseId\": \"A1COaaWbKvKGjMcPsN-EkAs\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Fri, 30 Jan 2026 01:13:53 GMT + - Thu, 12 Feb 2026 22:11:15 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=936 + - gfet4t7; dur=906 Transfer-Encoding: - chunked Vary: diff --git a/lib/crewai/tests/cassettes/llms/google/test_gemini_agent_kickoff_structured_output_without_tools.yaml b/lib/crewai/tests/cassettes/llms/google/test_gemini_agent_kickoff_structured_output_without_tools.yaml index 263547fb1..563d955f6 100644 --- a/lib/crewai/tests/cassettes/llms/google/test_gemini_agent_kickoff_structured_output_without_tools.yaml +++ b/lib/crewai/tests/cassettes/llms/google/test_gemini_agent_kickoff_structured_output_without_tools.yaml @@ -34,40 +34,113 @@ interactions: x-goog-api-key: - X-GOOG-API-KEY-XXX method: POST - uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-001:generateContent + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent response: body: string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": - [\n {\n \"text\": \"{\\n \\\"topic\\\": \\\"Benefits - of Remote Work\\\",\\n \\\"key_points\\\": [\\n \\\"Increased Flexibility: - Employees can manage their schedules and work from anywhere.\\\",\\n \\\"Cost - Savings: Reduced expenses for both employees (commuting, office attire) and - employers (office space).\\\",\\n \\\"Improved Work-Life Balance: Better - integration of personal and professional life can reduce stress.\\\",\\n \\\"Expanded - Talent Pool: Companies can hire from a wider geographic area.\\\",\\n \\\"Higher - Productivity: Studies suggest that remote workers can be more focused and - productive.\\\"\\n ],\\n \\\"summary\\\": \\\"Remote work offers significant - advantages, including increased flexibility, cost savings, better work-life - balance, access to a broader talent pool, and potentially higher productivity - for employees and employers.\\\"\\n}\"\n }\n ],\n \"role\": - \"model\"\n },\n \"finishReason\": \"STOP\",\n \"avgLogprobs\": - -0.17009115219116211\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": - 49,\n \"candidatesTokenCount\": 160,\n \"totalTokenCount\": 209,\n \"promptTokensDetails\": - [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 49\n - \ }\n ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": - \"TEXT\",\n \"tokenCount\": 160\n }\n ]\n },\n \"modelVersion\": - \"gemini-2.0-flash-001\",\n \"responseId\": \"0gV8ae20E67fjMcPodGM8Q4\"\n}\n" + [\n {\n \"text\": \"{\\\"topic\\\":\\\"Benefits of Remote + Work\\\",\\\"key_points\\\":[\\\"Increased employee flexibility and work-life + balance\\\",\\\"Reduced operational costs for businesses (e.g., office space)\\\",\\\"Access + to a broader global talent pool\\\",\\\"Potential for increased productivity + due to fewer distractions and commute stress\\\"],\\\"summary\\\":\\\"Remote + work offers significant advantages for both employees and employers, enhancing + flexibility, reducing costs, and expanding talent opportunities while potentially + boosting overall productivity and employee well-being.\\\"}\"\n }\n + \ ],\n \"role\": \"model\"\n },\n \"finishReason\": + \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 51,\n \"candidatesTokenCount\": 90,\n \"totalTokenCount\": 303,\n \"promptTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 51\n + \ }\n ],\n \"thoughtsTokenCount\": 162\n },\n \"modelVersion\": + \"gemini-2.5-flash\",\n \"responseId\": \"BVCOadCMIJvSjMcP2vLD-AE\"\n}\n" headers: Alt-Svc: - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-Type: - application/json; charset=UTF-8 Date: - - Fri, 30 Jan 2026 01:13:55 GMT + - Thu, 12 Feb 2026 22:11:17 GMT Server: - scaffolding on HTTPServer2 Server-Timing: - - gfet4t7; dur=1517 + - gfet4t7; dur=1708 + Transfer-Encoding: + - chunked + Vary: + - Origin + - X-Origin + - Referer + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + X-Frame-Options: + - X-FRAME-OPTIONS-XXX + X-XSS-Protection: + - '0' + status: + code: 200 + message: OK +- request: + body: '{"contents": [{"parts": [{"text": "\nCurrent Task: Analyze the benefits + of remote work briefly. Keep it concise.\n\nProvide your complete response:"}], + "role": "user"}], "systemInstruction": {"parts": [{"text": "You are Analyst. + You are an expert analyst who provides clear, structured insights.\nYour personal + goal is: Provide structured analysis on topics"}], "role": "user"}, "generationConfig": + {"stopSequences": ["\nObservation:"], "responseMimeType": "application/json", + "responseJsonSchema": {"description": "Structured output for analysis results.", + "properties": {"topic": {"description": "The topic analyzed", "title": "Topic", + "type": "string"}, "key_points": {"description": "Key insights from the analysis", + "items": {"type": "string"}, "title": "Key Points", "type": "array"}, "summary": + {"description": "Brief summary of findings", "title": "Summary", "type": "string"}}, + "required": ["topic", "key_points", "summary"], "title": "AnalysisResult", "type": + "object", "additionalProperties": false, "propertyOrdering": ["topic", "key_points", + "summary"]}}}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - '*/*' + accept-encoding: + - ACCEPT-ENCODING-XXX + connection: + - keep-alive + content-length: + - '1068' + content-type: + - application/json + host: + - generativelanguage.googleapis.com + x-goog-api-client: + - google-genai-sdk/1.49.0 gl-python/3.13.3 + x-goog-api-key: + - X-GOOG-API-KEY-XXX + method: POST + uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent + response: + body: + string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": + [\n {\n \"text\": \"{\\\"topic\\\":\\\"Benefits of Remote + Work\\\",\\\"key_points\\\":[\\\"Increased flexibility for employees\\\",\\\"Reduced + overhead costs for employers\\\",\\\"Access to a wider talent pool\\\",\\\"Improved + work-life balance\\\",\\\"Potential for higher productivity\\\"],\\\"summary\\\":\\\"Remote + work offers significant advantages for both employees and employers, including + greater flexibility, cost savings, broader talent access, and enhanced work-life + balance, often leading to increased productivity.\\\"}\"\n }\n ],\n + \ \"role\": \"model\"\n },\n \"finishReason\": \"STOP\",\n + \ \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": + 51,\n \"candidatesTokenCount\": 79,\n \"totalTokenCount\": 169,\n \"promptTokensDetails\": + [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 51\n + \ }\n ],\n \"thoughtsTokenCount\": 39\n },\n \"modelVersion\": + \"gemini-2.5-flash\",\n \"responseId\": \"BlCOafrvKOTJjMcPifnOwA8\"\n}\n" + headers: + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + Content-Type: + - application/json; charset=UTF-8 + Date: + - Thu, 12 Feb 2026 22:11:18 GMT + Server: + - scaffolding on HTTPServer2 + Server-Timing: + - gfet4t7; dur=1037 Transfer-Encoding: - chunked Vary: diff --git a/lib/crewai/tests/cassettes/llms/openai/test_openai_agent_kickoff_structured_output_with_tools.yaml b/lib/crewai/tests/cassettes/llms/openai/test_openai_agent_kickoff_structured_output_with_tools.yaml index 8baa10ddf..4ea958979 100644 --- a/lib/crewai/tests/cassettes/llms/openai/test_openai_agent_kickoff_structured_output_with_tools.yaml +++ b/lib/crewai/tests/cassettes/llms/openai/test_openai_agent_kickoff_structured_output_with_tools.yaml @@ -50,11 +50,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D3XAcQ6yX3jURhMDYL9VD2WlizLIR\",\n \"object\": - \"chat.completion\",\n \"created\": 1769734862,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8ZBxoZxZGhERFzJdGu43Kl4d2qqf\",\n \"object\": + \"chat.completion\",\n \"created\": 1770934273,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_YNBrEkgAyrj5R8aXizVVzumo\",\n \"type\": + \ \"id\": \"call_Tbs8Do1pty9ixq7sj37jRJMI\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"add_numbers\",\n \ \"arguments\": \"{\\\"a\\\":15,\\\"b\\\":27}\"\n }\n \ }\n ],\n \"refusal\": null,\n \"annotations\": @@ -64,7 +64,7 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -73,11 +73,9 @@ interactions: Content-Type: - application/json Date: - - Fri, 30 Jan 2026 01:01:03 GMT + - Thu, 12 Feb 2026 22:11:14 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -93,11 +91,13 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '922' + - '569' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -164,11 +164,11 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D3XAerzCmf1qz9Wena1fHbaUMnhDy\",\n \"object\": - \"chat.completion\",\n \"created\": 1769734864,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8ZBy9o3AvdGqZNcN99I98zY2MUKL\",\n \"object\": + \"chat.completion\",\n \"created\": 1770934274,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": null,\n \"tool_calls\": [\n {\n - \ \"id\": \"call_vrbKUMAGiPtatMe2ODg4qmfW\",\n \"type\": + \ \"id\": \"call_7rWBTlRtbzEqJdSrQHOYnP3Q\",\n \"type\": \"function\",\n \"function\": {\n \"name\": \"add_numbers\",\n \ \"arguments\": \"{\\\"a\\\":15,\\\"b\\\":27}\"\n }\n \ }\n ],\n \"refusal\": null,\n \"annotations\": @@ -178,7 +178,7 @@ interactions: 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -187,7 +187,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 30 Jan 2026 01:01:04 GMT + - Thu, 12 Feb 2026 22:11:15 GMT Server: - cloudflare Strict-Transport-Security: @@ -205,11 +205,13 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '711' + - '518' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -233,7 +235,7 @@ interactions: body: '{"messages":[{"role":"system","content":"You are Calculator. You are a calculator assistant that uses tools to compute results.\nYour personal goal is: Perform calculations using available tools"},{"role":"user","content":"\nCurrent - Task: Calculate 15 + 27 using your add_numbers tool. Report the result."},{"role":"assistant","content":null,"tool_calls":[{"id":"call_vrbKUMAGiPtatMe2ODg4qmfW","type":"function","function":{"name":"add_numbers","arguments":"{\"a\":15,\"b\":27}"}}]},{"role":"tool","tool_call_id":"call_vrbKUMAGiPtatMe2ODg4qmfW","name":"add_numbers","content":"42"}],"model":"gpt-4o-mini","response_format":{"type":"json_schema","json_schema":{"schema":{"description":"Structured + Task: Calculate 15 + 27 using your add_numbers tool. Report the result."},{"role":"assistant","content":null,"tool_calls":[{"id":"call_7rWBTlRtbzEqJdSrQHOYnP3Q","type":"function","function":{"name":"add_numbers","arguments":"{\"a\":15,\"b\":27}"}}]},{"role":"tool","tool_call_id":"call_7rWBTlRtbzEqJdSrQHOYnP3Q","name":"add_numbers","content":"42"}],"model":"gpt-4o-mini","response_format":{"type":"json_schema","json_schema":{"schema":{"description":"Structured output for calculation results.","properties":{"operation":{"description":"The mathematical operation performed","title":"Operation","type":"string"},"result":{"description":"The result of the calculation","title":"Result","type":"integer"},"explanation":{"description":"Brief @@ -282,18 +284,18 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D3XAfKiTG5RhuaUAQG4pelI9e6W7T\",\n \"object\": - \"chat.completion\",\n \"created\": 1769734865,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8ZC0rMEr0fN72BKb0Xd5CWDyNNvG\",\n \"object\": + \"chat.completion\",\n \"created\": 1770934276,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"{\\\"operation\\\":\\\"Addition\\\",\\\"result\\\":42,\\\"explanation\\\":\\\"The - result of adding 15 and 27 is 42.\\\"}\",\n \"refusal\": null,\n \"annotations\": - []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 215,\n \"completion_tokens\": - 31,\n \"total_tokens\": 246,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + sum of 15 and 27 is calculated as 15 + 27 = 42.\\\"}\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 215,\n \"completion_tokens\": 38,\n \"total_tokens\": 253,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -302,7 +304,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 30 Jan 2026 01:01:06 GMT + - Thu, 12 Feb 2026 22:11:16 GMT Server: - cloudflare Strict-Transport-Security: @@ -320,11 +322,13 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '979' + - '744' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/llms/openai/test_openai_agent_kickoff_structured_output_without_tools.yaml b/lib/crewai/tests/cassettes/llms/openai/test_openai_agent_kickoff_structured_output_without_tools.yaml index 754eea51c..989f9512c 100644 --- a/lib/crewai/tests/cassettes/llms/openai/test_openai_agent_kickoff_structured_output_without_tools.yaml +++ b/lib/crewai/tests/cassettes/llms/openai/test_openai_agent_kickoff_structured_output_without_tools.yaml @@ -50,25 +50,24 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-D3XAhbqz9oWLR9vacFT33oAOTIeeL\",\n \"object\": - \"chat.completion\",\n \"created\": 1769734867,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + string: "{\n \"id\": \"chatcmpl-D8ZC1ilq9A1yfQ6SgZPaWRkCpLUFN\",\n \"object\": + \"chat.completion\",\n \"created\": 1770934277,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"{\\\"topic\\\":\\\"Benefits of Remote - Work\\\",\\\"key_points\\\":[\\\"Increased flexibility in work hours allows - for better work-life balance.\\\",\\\"Cost savings for both employers and - employees (e.g., reduced commuting costs and office space).\\\",\\\"Access - to a larger talent pool unrestricted by geographical boundaries.\\\",\\\"Improved - productivity due to fewer office-related distractions.\\\",\\\"Reduction in - environmental impact from decreased commuting.\\\"],\\\"summary\\\":\\\"Remote - work offers significant advantages including flexibility, cost savings, broader - hiring opportunities, enhanced productivity, and environmental benefits.\\\"}\",\n - \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": - null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 154,\n \"completion_tokens\": 98,\n \"total_tokens\": 252,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + Work\\\",\\\"key_points\\\":[\\\"Increased flexibility in work hours and location\\\",\\\"Reduction + in commuting time and costs\\\",\\\"Higher employee productivity and job satisfaction\\\",\\\"Access + to a broader talent pool without geographical constraints\\\",\\\"Cost savings + for businesses on overhead and office space\\\"],\\\"summary\\\":\\\"Remote + work offers significant advantages, including flexibility, cost reductions, + and enhanced productivity, making it an appealing option for both employees + and employers.\\\"}\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 154,\n \"completion_tokens\": + 85,\n \"total_tokens\": 239,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_1590f93f9d\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -77,11 +76,9 @@ interactions: Content-Type: - application/json Date: - - Fri, 30 Jan 2026 01:01:10 GMT + - Thu, 12 Feb 2026 22:11:19 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -97,11 +94,137 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '2849' + - '1643' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are Analyst. You are an expert + analyst who provides clear, structured insights.\nYour personal goal is: Provide + structured analysis on topics"},{"role":"user","content":"\nCurrent Task: Analyze + the benefits of remote work briefly. Keep it concise.\n\nProvide your complete + response:"}],"model":"gpt-4o-mini","response_format":{"type":"json_schema","json_schema":{"schema":{"description":"Structured + output for analysis results.","properties":{"topic":{"description":"The topic + analyzed","title":"Topic","type":"string"},"key_points":{"description":"Key + insights from the analysis","items":{"type":"string"},"title":"Key Points","type":"array"},"summary":{"description":"Brief + summary of findings","title":"Summary","type":"string"}},"required":["topic","key_points","summary"],"title":"AnalysisResult","type":"object","additionalProperties":false},"name":"AnalysisResult","strict":true}},"stream":false}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '948' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-helper-method: + - beta.chat.completions.parse + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8ZC3KOU2p5nkjN8Kqk34GCiHtQPi\",\n \"object\": + \"chat.completion\",\n \"created\": 1770934279,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"{\\\"topic\\\":\\\"Benefits of Remote + Work\\\",\\\"key_points\\\":[\\\"Increased flexibility in work hours allows + for better work-life balance.\\\",\\\"Reduction in commuting time leads to + cost savings and decreased stress.\\\",\\\"Access to a broader talent pool + as geographical limitations are minimized.\\\",\\\"Potential for increased + productivity due to fewer office distractions and more personalized work environments.\\\",\\\"Environmental + benefits arise from reduced carbon emissions due to less commuting.\\\"],\\\"summary\\\":\\\"Remote + work offers significant advantages, including enhanced flexibility, cost savings, + improved productivity, and positive environmental impacts.\\\"}\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 154,\n \"completion_tokens\": 100,\n \"total_tokens\": 254,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_f4ae844694\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 22:11:21 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '1955' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/llms/openai/test_openai_responses_api_with_structured_output.yaml b/lib/crewai/tests/cassettes/llms/openai/test_openai_responses_api_with_structured_output.yaml index 0d15531a6..c8e5708fa 100644 --- a/lib/crewai/tests/cassettes/llms/openai/test_openai_responses_api_with_structured_output.yaml +++ b/lib/crewai/tests/cassettes/llms/openai/test_openai_responses_api_with_structured_output.yaml @@ -37,22 +37,22 @@ interactions: x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.12.10 + - 3.13.3 method: POST uri: https://api.openai.com/v1/responses response: body: - string: "{\n \"id\": \"resp_06aa2adbbac5b2cc0069730cdcaa988195bd3d284445d2f4d2\",\n - \ \"object\": \"response\",\n \"created_at\": 1769147612,\n \"status\": + string: "{\n \"id\": \"resp_0caf5bbcce78d9e300698e5009821c819285eb66e44b55093e\",\n + \ \"object\": \"response\",\n \"created_at\": 1770934281,\n \"status\": \"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\": - \"developer\"\n },\n \"completed_at\": 1769147613,\n \"error\": null,\n + \"developer\"\n },\n \"completed_at\": 1770934282,\n \"error\": null,\n \ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\": null,\n \"max_output_tokens\": null,\n \"max_tool_calls\": null,\n \"model\": - \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n \"id\": \"msg_06aa2adbbac5b2cc0069730cdd0a9c8195a25cd9c472be0e97\",\n + \"gpt-4o-mini-2024-07-18\",\n \"output\": [\n {\n \"id\": \"msg_0caf5bbcce78d9e300698e5009c94c8192bad43e52974ab743\",\n \ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n {\n \"type\": \"output_text\",\n \"annotations\": [],\n \"logprobs\": [],\n \"text\": \"{\\\"result\\\":35,\\\"explanation\\\":\\\"Multiplying - 5 by 7 involves adding 5 together seven times, which equals 35.\\\"}\"\n }\n + 5 by 7 gives you the total of 5 groups of 7, which equals 35.\\\"}\"\n }\n \ ],\n \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\": null,\n \"prompt_cache_retention\": null,\n \"reasoning\": {\n \"effort\": @@ -71,8 +71,8 @@ interactions: \ },\n \"verbosity\": \"medium\"\n },\n \"tool_choice\": \"auto\",\n \ \"tools\": [],\n \"top_logprobs\": 0,\n \"top_p\": 1.0,\n \"truncation\": \"disabled\",\n \"usage\": {\n \"input_tokens\": 76,\n \"input_tokens_details\": - {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 30,\n \"output_tokens_details\": - {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 106\n },\n + {\n \"cached_tokens\": 0\n },\n \"output_tokens\": 34,\n \"output_tokens_details\": + {\n \"reasoning_tokens\": 0\n },\n \"total_tokens\": 110\n },\n \ \"user\": null,\n \"metadata\": {}\n}" headers: CF-RAY: @@ -82,11 +82,9 @@ interactions: Content-Type: - application/json Date: - - Fri, 23 Jan 2026 05:53:33 GMT + - Thu, 12 Feb 2026 22:11:22 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -100,13 +98,13 @@ interactions: openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '1187' + - '1049' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' - x-envoy-upstream-service-time: - - '1190' + set-cookie: + - SET-COOKIE-XXX x-ratelimit-limit-requests: - X-RATELIMIT-LIMIT-REQUESTS-XXX x-ratelimit-limit-tokens: diff --git a/lib/crewai/tests/cassettes/test_conditional_tasks_result_collection.yaml b/lib/crewai/tests/cassettes/test_conditional_tasks_result_collection.yaml new file mode 100644 index 000000000..efe9ffad9 --- /dev/null +++ b/lib/crewai/tests/cassettes/test_conditional_tasks_result_collection.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{"trace_id": "bff1638c-f7d8-4535-9435-e572b7b380ac", "execution_type": + "crew", "user_identifier": null, "execution_context": {"crew_fingerprint": null, + "crew_name": "crew", "flow_name": null, "crewai_version": "1.9.3", "privacy_level": + "standard"}, "execution_metadata": {"expected_duration_estimate": 300, "agent_count": + 0, "task_count": 0, "flow_method_count": 0, "execution_started_at": "2026-02-12T19:16:42.741685+00:00"}, + "ephemeral_trace_id": "bff1638c-f7d8-4535-9435-e572b7b380ac"}' + headers: + Accept: + - '*/*' + Connection: + - keep-alive + Content-Length: + - '488' + Content-Type: + - application/json + User-Agent: + - X-USER-AGENT-XXX + X-Crewai-Version: + - 1.9.3 + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + method: POST + uri: https://app.crewai.com/crewai_plus/api/v1/tracing/ephemeral/batches + response: + body: + string: '{"id":"bb5b6ca7-27b2-4ebb-b4ee-1b39fd9fad6b","ephemeral_trace_id":"bff1638c-f7d8-4535-9435-e572b7b380ac","execution_type":"crew","crew_name":"crew","flow_name":null,"status":"running","duration_ms":null,"crewai_version":"1.9.3","total_events":0,"execution_context":{"crew_fingerprint":null,"crew_name":"crew","flow_name":null,"crewai_version":"1.9.3","privacy_level":"standard"},"created_at":"2026-02-12T19:16:43.215Z","updated_at":"2026-02-12T19:16:43.215Z","access_code":"TRACE-cff4519c58","user_identifier":null}' + headers: + Connection: + - keep-alive + Content-Length: + - '515' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 12 Feb 2026 19:16:43 GMT + cache-control: + - no-store + content-security-policy: + - CSP-FILTERED + etag: + - ETAG-XXX + expires: + - '0' + permissions-policy: + - PERMISSIONS-POLICY-XXX + pragma: + - no-cache + referrer-policy: + - REFERRER-POLICY-XXX + strict-transport-security: + - STS-XXX + vary: + - Accept + x-content-type-options: + - X-CONTENT-TYPE-XXX + x-frame-options: + - X-FRAME-OPTIONS-XXX + x-permitted-cross-domain-policies: + - X-PERMITTED-XXX + x-request-id: + - X-REQUEST-ID-XXX + x-runtime: + - X-RUNTIME-XXX + x-xss-protection: + - X-XSS-PROTECTION-XXX + status: + code: 201 + message: Created +version: 1 diff --git a/lib/crewai/tests/cassettes/test_multiple_before_after_kickoff.yaml b/lib/crewai/tests/cassettes/test_multiple_before_after_kickoff.yaml index 1674ea40e..ca48adf03 100644 --- a/lib/crewai/tests/cassettes/test_multiple_before_after_kickoff.yaml +++ b/lib/crewai/tests/cassettes/test_multiple_before_after_kickoff.yaml @@ -4,17 +4,12 @@ interactions: You''re a seasoned researcher with a knack for uncovering the latest developments in plants. Known for your ability to find the most relevant information and present it in a clear and concise manner.\n\nYour personal goal is: Uncover - cutting-edge developments in plants\n\nTo give my best complete final answer - to the task respond using the exact following format:\n\nThought: I now can - give a great answer\nFinal Answer: Your final answer must be the great and the - most complete as possible, it must be outcome described.\n\nI MUST use these - formats, my job depends on it!"},{"role":"user","content":"\nCurrent Task: Conduct - a thorough research about plants Make sure you find any interesting and relevant - information given the current year is 2025.\n\n\nThis is the expected criteria - for your final answer: A list with 10 bullet points of the most relevant information - about plants\n\nyou MUST return the actual complete content as the final answer, - not a summary.\n\nBegin! This is VERY important to you, use the tools available - and give your best Final Answer, your job depends on it!\n\nThought:"}],"model":"gpt-4.1-mini"}' + cutting-edge developments in plants"},{"role":"user","content":"\nCurrent Task: + Conduct a thorough research about plants Make sure you find any interesting + and relevant information given the current year is 2025.\n\n\nThis is the expected + criteria for your final answer: A list with 10 bullet points of the most relevant + information about plants\n\nyou MUST return the actual complete content as the + final answer, not a summary.\n\nProvide your complete response:"}],"model":"gpt-4.1-mini"}' headers: User-Agent: - X-USER-AGENT-XXX @@ -27,7 +22,7 @@ interactions: connection: - keep-alive content-length: - - '1208' + - '805' content-type: - application/json host: @@ -54,55 +49,62 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-Cy5aSZuHW2rLtJbEy88r1LpwkYQqE\",\n \"object\": - \"chat.completion\",\n \"created\": 1768437192,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + string: "{\n \"id\": \"chatcmpl-D8WiDIHDdXfLlDpi26YbJPuHmfU16\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924741,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer: \\n\\n1. **CRISPR and Gene Editing in Plants:** In 2025, advancements - in CRISPR technology have enabled more precise and efficient gene editing - in plants, leading to the development of crop varieties with enhanced resistance - to pests, diseases, and environmental stresses like drought and salinity.\\n\\n2. - **Vertical Farming Expansion:** Vertical farming has become more widespread - globally, using aeroponics and hydroponics technology to grow plants indoors - with minimal water usage and no soil, minimizing agricultural land use and - increasing year-round food production.\\n\\n3. **Plant-Microbiome Interactions:** - Research in 2025 has highlighted the importance of the plant microbiome, the - community of microorganisms living in and around plants, showing how manipulating - these microbes can improve plant health, growth, and nutrient uptake.\\n\\n4. - **Climate-Resilient Crop Varieties:** With ongoing climate change challenges, - scientists have bred and genetically engineered new crop varieties that can - withstand extreme temperatures, prolonged droughts, and flooding, ensuring - food security under unpredictable weather patterns.\\n\\n5. **Carbon Sequestration - through Plants:** Plants are being increasingly recognized as vital carbon - sinks. New forestry and agricultural practices have been developed to maximize - carbon sequestration ability, including biochar soil amendments and selecting - fast-growing tree species.\\n\\n6. **Plant-Based Meat Alternatives:** Advances - in plant biology and food technology have improved the texture, flavor, and - nutritional profile of plant-based meat substitutes, making them more popular - as sustainable alternatives to animal protein.\\n\\n7. **Plant Sensory and - Signaling Research:** Cutting-edge studies have revealed more about how plants - sense their environment and communicate internally and with other plants (e.g., - signaling pathways involving electrical and chemical signals), which could - lead to innovations in agriculture.\\n\\n8. **Synthetic Photosynthesis Developments:** - Scientists have created hybrid systems combining plants with synthetic materials - to enhance photosynthesis efficiency, aiming to boost crop yields and offer - renewable energy solutions.\\n\\n9. **Urban Greening Initiatives:** Urban - environments have increasingly integrated plants into architecture and infrastructure - for improved air quality, temperature regulation, and mental health benefits. - New plant species specially bred for urban resilience are now common.\\n\\n10. - **Conservation of Plant Biodiversity:** In 2025, global efforts have intensified - to protect endangered plant species and habitats through seed banks, in vitro - conservation techniques, and habitat restoration projects, in response to - habitat loss and extinction risks.\\n\\nThese points reflect the most recent - and relevant breakthroughs and trends in plant science and applications as - of 2025.\",\n \"refusal\": null,\n \"annotations\": []\n },\n - \ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n - \ \"usage\": {\n \"prompt_tokens\": 228,\n \"completion_tokens\": 509,\n - \ \"total_tokens\": 737,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"1. **CRISPR-Enhanced Photosynthesis + Efficiency** \\n In 2025, researchers have made significant breakthroughs + using CRISPR technology to edit plant genes that regulate photosynthesis. + New gene variants have been introduced into staple crops like rice and wheat, + boosting photosynthetic efficiency by up to 30%, leading to higher yields + with less water and fertilizer.\\n\\n2. **Development of Synthetic Plants + for Urban Environments** \\n Advances in bioengineering have led to the + creation of synthetic plants designed specifically for urban settings. These + plants can survive in low-light and polluted environments, improving air quality + and aesthetic value in cities with minimal maintenance.\\n\\n3. **Discovery + of Universal Plant Stress Tolerance Genes** \\n A team of international + scientists identified a set of universal genes that provide plants with broad-spectrum + resistance against drought, salinity, and extreme temperatures. These genes + are now being integrated into various commercially important crops to ensure + food security under climate change conditions.\\n\\n4. **Plant-Based Bioplastics + Replacing Petroleum Plastics** \\n In 2025, plant bioplastics derived from + agricultural waste like corn husks and wheat straw have become commercially + viable and widely adopted. These bioplastics offer biodegradable alternatives + with similar mechanical properties to traditional plastics, reducing environmental + impact.\\n\\n5. **Advances in Vertical Farming Technologies** \\n Vertical + farming has incorporated AI-driven systems that optimize light spectra, nutrient + delivery, and environmental conditions for various plants in real time. This + innovation has significantly increased crop productivity and reduced energy + consumption, enabling sustainable food production in urban areas.\\n\\n6. + **Harnessing Plant Microbiomes for Crop Health** \\n Researchers have developed + probiotic formulations for plants, consisting of beneficial microbes to enhance + nutrient uptake, and disease resistance. These plant microbiome applications + are now standard practice in commercial agriculture, reducing reliance on + chemical fertilizers and pesticides.\\n\\n7. **Integration of Plants in Carbon + Capture Strategies** \\n New hybrid technologies combining genetically + engineered plants with advanced carbon sequestration systems have shown promise + in capturing high levels of atmospheric CO2. Fast-growing tree species have + been optimized for enhanced carbon storage in biomass and soil.\\n\\n8. **Use + of AI and Imaging for Early Disease Detection in Crops** \\n AI-powered + drones equipped with hyperspectral imaging can now detect early signs of nutrient + deficiency and pathogen infections in crops before visible symptoms appear. + This allows farmers to apply targeted treatments, improving crop health and + reducing losses.\\n\\n9. **Edible Plant-Based Vaccines** \\n Researchers + have progressed in developing edible vaccines using genetically modified plants + like lettuce and tomatoes. These plant-based vaccines are stable, easy to + produce, and can be administered via consumption, potentially revolutionizing + vaccination programs in remote areas.\\n\\n10. **Resurrection Plants as Models + for Drought Resistance** \\n Studies on resurrection plants, which can + survive extreme dehydration and revive upon rehydration, have uncovered metabolic + pathways and protective proteins that are now being transferred to crop plants + to improve resilience to prolonged droughts in changing climates.\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 142,\n \"completion_tokens\": 593,\n \"total_tokens\": 735,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_376a7ccef1\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_75546bd1a7\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -111,11 +113,9 @@ interactions: Content-Type: - application/json Date: - - Thu, 15 Jan 2026 00:33:22 GMT + - Thu, 12 Feb 2026 19:32:31 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -128,18 +128,16 @@ interactions: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC - content-length: - - '3737' openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '9598' + - '9566' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' - x-envoy-upstream-service-time: - - '9718' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -160,26 +158,64 @@ interactions: code: 200 message: OK - request: - body: '{"messages":[{"role":"system","content":"Ensure your final answer strictly - adheres to the following OpenAPI schema: {\n \"type\": \"json_schema\",\n \"json_schema\": - {\n \"name\": \"LLMGuardrailResult\",\n \"strict\": true,\n \"schema\": - {\n \"properties\": {\n \"valid\": {\n \"description\": - \"Whether the task output complies with the guardrail\",\n \"title\": - \"Valid\",\n \"type\": \"boolean\"\n },\n \"feedback\": - {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": - \"null\"\n }\n ],\n \"default\": null,\n \"description\": - \"A feedback about the task output if it is not valid\",\n \"title\": - \"Feedback\"\n }\n },\n \"required\": [\n \"valid\",\n \"feedback\"\n ],\n \"title\": - \"LLMGuardrailResult\",\n \"type\": \"object\",\n \"additionalProperties\": - false\n }\n }\n}\n\nDo not include the OpenAPI schema in the final output. - Ensure the final output does not include any code block markers like ```json - or ```python."},{"role":"user","content":"{\"valid\":false,\"feedback\":\"The - task result does not comply with the guardrail because none of the bullet points - contain any source information or citations. Each bullet point describes recent - advancements or trends but fails to provide references or sources to validate - the information as required.\"}"}],"model":"gpt-4.1-mini","response_format":{"type":"json_schema","json_schema":{"schema":{"properties":{"valid":{"description":"Whether - the task output complies with the guardrail","title":"Valid","type":"boolean"},"feedback":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A - feedback about the task output if it is not valid","title":"Feedback"}},"required":["valid","feedback"],"title":"LLMGuardrailResult","type":"object","additionalProperties":false},"name":"LLMGuardrailResult","strict":true}},"stream":false}' + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are Guardrail Agent. + You are a expert at validating the output of a task. By providing effective + feedback if the output is not valid.\\nYour personal goal is: Validate the output + of the task\"},{\"role\":\"user\",\"content\":\"\\nCurrent Task: \\n Ensure + the following task result complies with the given guardrail.\\n\\n Task + result:\\n 1. **CRISPR-Enhanced Photosynthesis Efficiency** \\n In + 2025, researchers have made significant breakthroughs using CRISPR technology + to edit plant genes that regulate photosynthesis. New gene variants have been + introduced into staple crops like rice and wheat, boosting photosynthetic efficiency + by up to 30%, leading to higher yields with less water and fertilizer.\\n\\n2. + **Development of Synthetic Plants for Urban Environments** \\n Advances in + bioengineering have led to the creation of synthetic plants designed specifically + for urban settings. These plants can survive in low-light and polluted environments, + improving air quality and aesthetic value in cities with minimal maintenance.\\n\\n3. + **Discovery of Universal Plant Stress Tolerance Genes** \\n A team of international + scientists identified a set of universal genes that provide plants with broad-spectrum + resistance against drought, salinity, and extreme temperatures. These genes + are now being integrated into various commercially important crops to ensure + food security under climate change conditions.\\n\\n4. **Plant-Based Bioplastics + Replacing Petroleum Plastics** \\n In 2025, plant bioplastics derived from + agricultural waste like corn husks and wheat straw have become commercially + viable and widely adopted. These bioplastics offer biodegradable alternatives + with similar mechanical properties to traditional plastics, reducing environmental + impact.\\n\\n5. **Advances in Vertical Farming Technologies** \\n Vertical + farming has incorporated AI-driven systems that optimize light spectra, nutrient + delivery, and environmental conditions for various plants in real time. This + innovation has significantly increased crop productivity and reduced energy + consumption, enabling sustainable food production in urban areas.\\n\\n6. **Harnessing + Plant Microbiomes for Crop Health** \\n Researchers have developed probiotic + formulations for plants, consisting of beneficial microbes to enhance nutrient + uptake, and disease resistance. These plant microbiome applications are now + standard practice in commercial agriculture, reducing reliance on chemical fertilizers + and pesticides.\\n\\n7. **Integration of Plants in Carbon Capture Strategies** + \ \\n New hybrid technologies combining genetically engineered plants with + advanced carbon sequestration systems have shown promise in capturing high levels + of atmospheric CO2. Fast-growing tree species have been optimized for enhanced + carbon storage in biomass and soil.\\n\\n8. **Use of AI and Imaging for Early + Disease Detection in Crops** \\n AI-powered drones equipped with hyperspectral + imaging can now detect early signs of nutrient deficiency and pathogen infections + in crops before visible symptoms appear. This allows farmers to apply targeted + treatments, improving crop health and reducing losses.\\n\\n9. **Edible Plant-Based + Vaccines** \\n Researchers have progressed in developing edible vaccines + using genetically modified plants like lettuce and tomatoes. These plant-based + vaccines are stable, easy to produce, and can be administered via consumption, + potentially revolutionizing vaccination programs in remote areas.\\n\\n10. **Resurrection + Plants as Models for Drought Resistance** \\n Studies on resurrection plants, + which can survive extreme dehydration and revive upon rehydration, have uncovered + metabolic pathways and protective proteins that are now being transferred to + crop plants to improve resilience to prolonged droughts in changing climates.\\n\\n + \ Guardrail:\\n ensure each bullet contains its source\\n\\n Your + task:\\n - Confirm if the Task result complies with the guardrail.\\n + \ - If not, provide clear feedback explaining what is wrong (e.g., by + how much it violates the rule, or what specific part fails).\\n - Focus + only on identifying issues \u2014 do not propose corrections.\\n - If + the Task result complies with the guardrail, saying that is valid\\n \\n\\nProvide + your complete response:\"}],\"model\":\"gpt-4.1-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"properties\":{\"valid\":{\"description\":\"Whether + the task output complies with the guardrail\",\"title\":\"Valid\",\"type\":\"boolean\"},\"feedback\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"A + feedback about the task output if it is not valid\",\"title\":\"Feedback\"}},\"required\":[\"valid\",\"feedback\"],\"title\":\"LLMGuardrailResult\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"LLMGuardrailResult\",\"strict\":true}},\"stream\":false}" headers: User-Agent: - X-USER-AGENT-XXX @@ -192,7 +228,7 @@ interactions: connection: - keep-alive content-length: - - '2037' + - '4905' content-type: - application/json cookie: @@ -223,21 +259,19 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-Cy5aefPYFL9kZlFW5RJWlYnscJipi\",\n \"object\": - \"chat.completion\",\n \"created\": 1768437204,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + string: "{\n \"id\": \"chatcmpl-D8WiNu15nl03b8ooO1WnqIGONu1Dt\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924751,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"{\\\"valid\\\":false,\\\"feedback\\\":\\\"The - provided feedback accurately identifies that the task result lacks the required - source information and citations. To comply with the guardrail, each bullet - point must include references or sources supporting the mentioned advancements - or trends.\\\"}\",\n \"refusal\": null,\n \"annotations\": []\n - \ },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n - \ ],\n \"usage\": {\n \"prompt_tokens\": 390,\n \"completion_tokens\": - 47,\n \"total_tokens\": 437,\n \"prompt_tokens_details\": {\n \"cached_tokens\": - 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"{\\\"valid\\\":false,\\\"feedback\\\":\\\"None + of the bullets contain any sources or references, which violates the guardrail + requirement that each bullet must contain its source.\\\"}\",\n \"refusal\": + null,\n \"annotations\": []\n },\n \"logprobs\": null,\n + \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 854,\n \"completion_tokens\": 32,\n \"total_tokens\": 886,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_376a7ccef1\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_d46bc0ac3d\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -246,7 +280,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 15 Jan 2026 00:33:25 GMT + - Thu, 12 Feb 2026 19:32:31 GMT Server: - cloudflare Strict-Transport-Security: @@ -261,18 +295,184 @@ interactions: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC - content-length: - - '1094' openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '923' + - '646' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' - x-envoy-upstream-service-time: - - '1180' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are Guardrail Agent. + You are a expert at validating the output of a task. By providing effective + feedback if the output is not valid.\\nYour personal goal is: Validate the output + of the task\"},{\"role\":\"user\",\"content\":\"\\nCurrent Task: \\n Ensure + the following task result complies with the given guardrail.\\n\\n Task + result:\\n 1. **CRISPR-Enhanced Photosynthesis Efficiency** \\n In + 2025, researchers have made significant breakthroughs using CRISPR technology + to edit plant genes that regulate photosynthesis. New gene variants have been + introduced into staple crops like rice and wheat, boosting photosynthetic efficiency + by up to 30%, leading to higher yields with less water and fertilizer.\\n\\n2. + **Development of Synthetic Plants for Urban Environments** \\n Advances in + bioengineering have led to the creation of synthetic plants designed specifically + for urban settings. These plants can survive in low-light and polluted environments, + improving air quality and aesthetic value in cities with minimal maintenance.\\n\\n3. + **Discovery of Universal Plant Stress Tolerance Genes** \\n A team of international + scientists identified a set of universal genes that provide plants with broad-spectrum + resistance against drought, salinity, and extreme temperatures. These genes + are now being integrated into various commercially important crops to ensure + food security under climate change conditions.\\n\\n4. **Plant-Based Bioplastics + Replacing Petroleum Plastics** \\n In 2025, plant bioplastics derived from + agricultural waste like corn husks and wheat straw have become commercially + viable and widely adopted. These bioplastics offer biodegradable alternatives + with similar mechanical properties to traditional plastics, reducing environmental + impact.\\n\\n5. **Advances in Vertical Farming Technologies** \\n Vertical + farming has incorporated AI-driven systems that optimize light spectra, nutrient + delivery, and environmental conditions for various plants in real time. This + innovation has significantly increased crop productivity and reduced energy + consumption, enabling sustainable food production in urban areas.\\n\\n6. **Harnessing + Plant Microbiomes for Crop Health** \\n Researchers have developed probiotic + formulations for plants, consisting of beneficial microbes to enhance nutrient + uptake, and disease resistance. These plant microbiome applications are now + standard practice in commercial agriculture, reducing reliance on chemical fertilizers + and pesticides.\\n\\n7. **Integration of Plants in Carbon Capture Strategies** + \ \\n New hybrid technologies combining genetically engineered plants with + advanced carbon sequestration systems have shown promise in capturing high levels + of atmospheric CO2. Fast-growing tree species have been optimized for enhanced + carbon storage in biomass and soil.\\n\\n8. **Use of AI and Imaging for Early + Disease Detection in Crops** \\n AI-powered drones equipped with hyperspectral + imaging can now detect early signs of nutrient deficiency and pathogen infections + in crops before visible symptoms appear. This allows farmers to apply targeted + treatments, improving crop health and reducing losses.\\n\\n9. **Edible Plant-Based + Vaccines** \\n Researchers have progressed in developing edible vaccines + using genetically modified plants like lettuce and tomatoes. These plant-based + vaccines are stable, easy to produce, and can be administered via consumption, + potentially revolutionizing vaccination programs in remote areas.\\n\\n10. **Resurrection + Plants as Models for Drought Resistance** \\n Studies on resurrection plants, + which can survive extreme dehydration and revive upon rehydration, have uncovered + metabolic pathways and protective proteins that are now being transferred to + crop plants to improve resilience to prolonged droughts in changing climates.\\n\\n + \ Guardrail:\\n ensure each bullet contains its source\\n\\n Your + task:\\n - Confirm if the Task result complies with the guardrail.\\n + \ - If not, provide clear feedback explaining what is wrong (e.g., by + how much it violates the rule, or what specific part fails).\\n - Focus + only on identifying issues \u2014 do not propose corrections.\\n - If + the Task result complies with the guardrail, saying that is valid\\n \\n\\nProvide + your complete response:\"}],\"model\":\"gpt-4.1-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"properties\":{\"valid\":{\"description\":\"Whether + the task output complies with the guardrail\",\"title\":\"Valid\",\"type\":\"boolean\"},\"feedback\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"A + feedback about the task output if it is not valid\",\"title\":\"Feedback\"}},\"required\":[\"valid\",\"feedback\"],\"title\":\"LLMGuardrailResult\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"LLMGuardrailResult\",\"strict\":true}},\"stream\":false}" + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '4905' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-helper-method: + - beta.chat.completions.parse + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiNzHbuaB1u1Tdyk5zdc8aHbrPO\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924751,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"{\\\"valid\\\":false,\\\"feedback\\\":\\\"None + of the bullet points contain any sources or citations. Each bullet should + include a source to comply with the guardrail requiring each bullet to contain + its source.\\\"}\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 854,\n \"completion_tokens\": + 39,\n \"total_tokens\": 893,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_75546bd1a7\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:32 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '787' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -297,109 +497,113 @@ interactions: You''re a seasoned researcher with a knack for uncovering the latest developments in plants. Known for your ability to find the most relevant information and present it in a clear and concise manner.\n\nYour personal goal is: Uncover - cutting-edge developments in plants\n\nTo give my best complete final answer - to the task respond using the exact following format:\n\nThought: I now can - give a great answer\nFinal Answer: Your final answer must be the great and the - most complete as possible, it must be outcome described.\n\nI MUST use these - formats, my job depends on it!"},{"role":"user","content":"\nCurrent Task: Conduct - a thorough research about plants Make sure you find any interesting and relevant - information given the current year is 2025.\n\n\nThis is the expected criteria - for your final answer: A list with 10 bullet points of the most relevant information - about plants\n\nyou MUST return the actual complete content as the final answer, - not a summary.\n\nBegin! This is VERY important to you, use the tools available - and give your best Final Answer, your job depends on it!\n\nThought:"},{"role":"assistant","content":"Thought: - I now can give a great answer\nFinal Answer: \n\n1. **CRISPR and Gene Editing - in Plants:** In 2025, advancements in CRISPR technology have enabled more precise - and efficient gene editing in plants, leading to the development of crop varieties - with enhanced resistance to pests, diseases, and environmental stresses like - drought and salinity.\n\n2. **Vertical Farming Expansion:** Vertical farming - has become more widespread globally, using aeroponics and hydroponics technology - to grow plants indoors with minimal water usage and no soil, minimizing agricultural - land use and increasing year-round food production.\n\n3. **Plant-Microbiome - Interactions:** Research in 2025 has highlighted the importance of the plant - microbiome, the community of microorganisms living in and around plants, showing - how manipulating these microbes can improve plant health, growth, and nutrient - uptake.\n\n4. **Climate-Resilient Crop Varieties:** With ongoing climate change - challenges, scientists have bred and genetically engineered new crop varieties - that can withstand extreme temperatures, prolonged droughts, and flooding, ensuring - food security under unpredictable weather patterns.\n\n5. **Carbon Sequestration - through Plants:** Plants are being increasingly recognized as vital carbon sinks. - New forestry and agricultural practices have been developed to maximize carbon - sequestration ability, including biochar soil amendments and selecting fast-growing - tree species.\n\n6. **Plant-Based Meat Alternatives:** Advances in plant biology - and food technology have improved the texture, flavor, and nutritional profile - of plant-based meat substitutes, making them more popular as sustainable alternatives - to animal protein.\n\n7. **Plant Sensory and Signaling Research:** Cutting-edge - studies have revealed more about how plants sense their environment and communicate - internally and with other plants (e.g., signaling pathways involving electrical - and chemical signals), which could lead to innovations in agriculture.\n\n8. - **Synthetic Photosynthesis Developments:** Scientists have created hybrid systems - combining plants with synthetic materials to enhance photosynthesis efficiency, - aiming to boost crop yields and offer renewable energy solutions.\n\n9. **Urban - Greening Initiatives:** Urban environments have increasingly integrated plants - into architecture and infrastructure for improved air quality, temperature regulation, - and mental health benefits. New plant species specially bred for urban resilience - are now common.\n\n10. **Conservation of Plant Biodiversity:** In 2025, global - efforts have intensified to protect endangered plant species and habitats through - seed banks, in vitro conservation techniques, and habitat restoration projects, - in response to habitat loss and extinction risks.\n\nThese points reflect the - most recent and relevant breakthroughs and trends in plant science and applications - as of 2025."},{"role":"system","content":"You are plants Senior Data Researcher\n. - You''re a seasoned researcher with a knack for uncovering the latest developments - in plants. Known for your ability to find the most relevant information and - present it in a clear and concise manner.\n\nYour personal goal is: Uncover - cutting-edge developments in plants\n\nTo give my best complete final answer - to the task respond using the exact following format:\n\nThought: I now can - give a great answer\nFinal Answer: Your final answer must be the great and the - most complete as possible, it must be outcome described.\n\nI MUST use these - formats, my job depends on it!"},{"role":"user","content":"\nCurrent Task: Conduct - a thorough research about plants Make sure you find any interesting and relevant - information given the current year is 2025.\n\n\nThis is the expected criteria - for your final answer: A list with 10 bullet points of the most relevant information - about plants\n\nyou MUST return the actual complete content as the final answer, - not a summary.\n\nThis is the context you''re working with:\n### Previous attempt - failed validation: The provided feedback accurately identifies that the task - result lacks the required source information and citations. To comply with the - guardrail, each bullet point must include references or sources supporting the - mentioned advancements or trends.\n\n\n### Previous result:\n1. **CRISPR and - Gene Editing in Plants:** In 2025, advancements in CRISPR technology have enabled - more precise and efficient gene editing in plants, leading to the development - of crop varieties with enhanced resistance to pests, diseases, and environmental - stresses like drought and salinity.\n\n2. **Vertical Farming Expansion:** Vertical - farming has become more widespread globally, using aeroponics and hydroponics - technology to grow plants indoors with minimal water usage and no soil, minimizing - agricultural land use and increasing year-round food production.\n\n3. **Plant-Microbiome - Interactions:** Research in 2025 has highlighted the importance of the plant - microbiome, the community of microorganisms living in and around plants, showing - how manipulating these microbes can improve plant health, growth, and nutrient - uptake.\n\n4. **Climate-Resilient Crop Varieties:** With ongoing climate change - challenges, scientists have bred and genetically engineered new crop varieties - that can withstand extreme temperatures, prolonged droughts, and flooding, ensuring - food security under unpredictable weather patterns.\n\n5. **Carbon Sequestration - through Plants:** Plants are being increasingly recognized as vital carbon sinks. - New forestry and agricultural practices have been developed to maximize carbon - sequestration ability, including biochar soil amendments and selecting fast-growing - tree species.\n\n6. **Plant-Based Meat Alternatives:** Advances in plant biology - and food technology have improved the texture, flavor, and nutritional profile - of plant-based meat substitutes, making them more popular as sustainable alternatives - to animal protein.\n\n7. **Plant Sensory and Signaling Research:** Cutting-edge - studies have revealed more about how plants sense their environment and communicate - internally and with other plants (e.g., signaling pathways involving electrical - and chemical signals), which could lead to innovations in agriculture.\n\n8. - **Synthetic Photosynthesis Developments:** Scientists have created hybrid systems - combining plants with synthetic materials to enhance photosynthesis efficiency, - aiming to boost crop yields and offer renewable energy solutions.\n\n9. **Urban - Greening Initiatives:** Urban environments have increasingly integrated plants - into architecture and infrastructure for improved air quality, temperature regulation, - and mental health benefits. New plant species specially bred for urban resilience - are now common.\n\n10. **Conservation of Plant Biodiversity:** In 2025, global - efforts have intensified to protect endangered plant species and habitats through - seed banks, in vitro conservation techniques, and habitat restoration projects, - in response to habitat loss and extinction risks.\n\nThese points reflect the - most recent and relevant breakthroughs and trends in plant science and applications - as of 2025.\n\n\nTry again, making sure to address the validation error.\n\nBegin! - This is VERY important to you, use the tools available and give your best Final - Answer, your job depends on it!\n\nThought:"}],"model":"gpt-4.1-mini"}' + cutting-edge developments in plants"},{"role":"user","content":"\nCurrent Task: + Conduct a thorough research about plants Make sure you find any interesting + and relevant information given the current year is 2025.\n\n\nThis is the expected + criteria for your final answer: A list with 10 bullet points of the most relevant + information about plants\n\nyou MUST return the actual complete content as the + final answer, not a summary.\n\nProvide your complete response:"},{"role":"assistant","content":"1. + **CRISPR-Enhanced Photosynthesis Efficiency** \n In 2025, researchers have + made significant breakthroughs using CRISPR technology to edit plant genes that + regulate photosynthesis. New gene variants have been introduced into staple + crops like rice and wheat, boosting photosynthetic efficiency by up to 30%, + leading to higher yields with less water and fertilizer.\n\n2. **Development + of Synthetic Plants for Urban Environments** \n Advances in bioengineering + have led to the creation of synthetic plants designed specifically for urban + settings. These plants can survive in low-light and polluted environments, improving + air quality and aesthetic value in cities with minimal maintenance.\n\n3. **Discovery + of Universal Plant Stress Tolerance Genes** \n A team of international scientists + identified a set of universal genes that provide plants with broad-spectrum + resistance against drought, salinity, and extreme temperatures. These genes + are now being integrated into various commercially important crops to ensure + food security under climate change conditions.\n\n4. **Plant-Based Bioplastics + Replacing Petroleum Plastics** \n In 2025, plant bioplastics derived from + agricultural waste like corn husks and wheat straw have become commercially + viable and widely adopted. These bioplastics offer biodegradable alternatives + with similar mechanical properties to traditional plastics, reducing environmental + impact.\n\n5. **Advances in Vertical Farming Technologies** \n Vertical farming + has incorporated AI-driven systems that optimize light spectra, nutrient delivery, + and environmental conditions for various plants in real time. This innovation + has significantly increased crop productivity and reduced energy consumption, + enabling sustainable food production in urban areas.\n\n6. **Harnessing Plant + Microbiomes for Crop Health** \n Researchers have developed probiotic formulations + for plants, consisting of beneficial microbes to enhance nutrient uptake, and + disease resistance. These plant microbiome applications are now standard practice + in commercial agriculture, reducing reliance on chemical fertilizers and pesticides.\n\n7. + **Integration of Plants in Carbon Capture Strategies** \n New hybrid technologies + combining genetically engineered plants with advanced carbon sequestration systems + have shown promise in capturing high levels of atmospheric CO2. Fast-growing + tree species have been optimized for enhanced carbon storage in biomass and + soil.\n\n8. **Use of AI and Imaging for Early Disease Detection in Crops** \n AI-powered + drones equipped with hyperspectral imaging can now detect early signs of nutrient + deficiency and pathogen infections in crops before visible symptoms appear. + This allows farmers to apply targeted treatments, improving crop health and + reducing losses.\n\n9. **Edible Plant-Based Vaccines** \n Researchers have + progressed in developing edible vaccines using genetically modified plants like + lettuce and tomatoes. These plant-based vaccines are stable, easy to produce, + and can be administered via consumption, potentially revolutionizing vaccination + programs in remote areas.\n\n10. **Resurrection Plants as Models for Drought + Resistance** \n Studies on resurrection plants, which can survive extreme + dehydration and revive upon rehydration, have uncovered metabolic pathways and + protective proteins that are now being transferred to crop plants to improve + resilience to prolonged droughts in changing climates."},{"role":"system","content":"You + are plants Senior Data Researcher\n. You''re a seasoned researcher with a knack + for uncovering the latest developments in plants. Known for your ability to + find the most relevant information and present it in a clear and concise manner.\n\nYour + personal goal is: Uncover cutting-edge developments in plants"},{"role":"user","content":"\nCurrent + Task: Conduct a thorough research about plants Make sure you find any interesting + and relevant information given the current year is 2025.\n\n\nThis is the expected + criteria for your final answer: A list with 10 bullet points of the most relevant + information about plants\n\nyou MUST return the actual complete content as the + final answer, not a summary.\n\nThis is the context you''re working with:\n### + Previous attempt failed validation: None of the bullet points contain any sources + or citations. Each bullet should include a source to comply with the guardrail + requiring each bullet to contain its source.\n\n\n### Previous result:\n1. **CRISPR-Enhanced + Photosynthesis Efficiency** \n In 2025, researchers have made significant + breakthroughs using CRISPR technology to edit plant genes that regulate photosynthesis. + New gene variants have been introduced into staple crops like rice and wheat, + boosting photosynthetic efficiency by up to 30%, leading to higher yields with + less water and fertilizer.\n\n2. **Development of Synthetic Plants for Urban + Environments** \n Advances in bioengineering have led to the creation of + synthetic plants designed specifically for urban settings. These plants can + survive in low-light and polluted environments, improving air quality and aesthetic + value in cities with minimal maintenance.\n\n3. **Discovery of Universal Plant + Stress Tolerance Genes** \n A team of international scientists identified + a set of universal genes that provide plants with broad-spectrum resistance + against drought, salinity, and extreme temperatures. These genes are now being + integrated into various commercially important crops to ensure food security + under climate change conditions.\n\n4. **Plant-Based Bioplastics Replacing Petroleum + Plastics** \n In 2025, plant bioplastics derived from agricultural waste + like corn husks and wheat straw have become commercially viable and widely adopted. + These bioplastics offer biodegradable alternatives with similar mechanical properties + to traditional plastics, reducing environmental impact.\n\n5. **Advances in + Vertical Farming Technologies** \n Vertical farming has incorporated AI-driven + systems that optimize light spectra, nutrient delivery, and environmental conditions + for various plants in real time. This innovation has significantly increased + crop productivity and reduced energy consumption, enabling sustainable food + production in urban areas.\n\n6. **Harnessing Plant Microbiomes for Crop Health** \n Researchers + have developed probiotic formulations for plants, consisting of beneficial microbes + to enhance nutrient uptake, and disease resistance. These plant microbiome applications + are now standard practice in commercial agriculture, reducing reliance on chemical + fertilizers and pesticides.\n\n7. **Integration of Plants in Carbon Capture + Strategies** \n New hybrid technologies combining genetically engineered + plants with advanced carbon sequestration systems have shown promise in capturing + high levels of atmospheric CO2. Fast-growing tree species have been optimized + for enhanced carbon storage in biomass and soil.\n\n8. **Use of AI and Imaging + for Early Disease Detection in Crops** \n AI-powered drones equipped with + hyperspectral imaging can now detect early signs of nutrient deficiency and + pathogen infections in crops before visible symptoms appear. This allows farmers + to apply targeted treatments, improving crop health and reducing losses.\n\n9. + **Edible Plant-Based Vaccines** \n Researchers have progressed in developing + edible vaccines using genetically modified plants like lettuce and tomatoes. + These plant-based vaccines are stable, easy to produce, and can be administered + via consumption, potentially revolutionizing vaccination programs in remote + areas.\n\n10. **Resurrection Plants as Models for Drought Resistance** \n Studies + on resurrection plants, which can survive extreme dehydration and revive upon + rehydration, have uncovered metabolic pathways and protective proteins that + are now being transferred to crop plants to improve resilience to prolonged + droughts in changing climates.\n\n\nTry again, making sure to address the validation + error.\n\nProvide your complete response:"}],"model":"gpt-4.1-mini"}' headers: User-Agent: - X-USER-AGENT-XXX @@ -412,7 +616,7 @@ interactions: connection: - keep-alive content-length: - - '8631' + - '8929' content-type: - application/json cookie: @@ -441,65 +645,64 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-Cy5afAqjeAtR4Oelz7JCjrgwPBjYK\",\n \"object\": - \"chat.completion\",\n \"created\": 1768437205,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + string: "{\n \"id\": \"chatcmpl-D8WiO2od0QV7MbtyvCwuBDit35nGm\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924752,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer:\\n\\n1. **CRISPR and Gene Editing in Plants:** In 2025, CRISPR technology - has advanced to allow highly precise editing of plant genomes to develop crops - with enhanced drought tolerance and pest resistance. For instance, a study - by Zhang et al. (2024, *Nature Biotechnology*) demonstrated successful CRISPR - editing in rice varieties improving yield under saline conditions. [Source: - Zhang et al., 2024]\\n\\n2. **Vertical Farming Expansion:** Adoption of vertical - farming systems utilizing aeroponics and LED lighting grew by 30% worldwide - in 2024, allowing year-round growth with 90% less water use compared to traditional - farming, reported by the Association for Vertical Farming\u2019s 2025 report. - [Source: Global Vertical Farming Report, AVF, 2025]\\n\\n3. **Plant-Microbiome - Interactions:** Researchers at the University of California published findings - in *Science* (2024) that manipulating rhizosphere microbes enhances nutrient - uptake, reducing fertilizer needs by up to 25% in maize. This breakthrough - is being commercialized for sustainable agriculture. [Source: UC Davis Microbiome - Study, 2024]\\n\\n4. **Climate-Resilient Crop Varieties:** The International - Rice Research Institute announced in early 2025 a new drought-resistant rice - variety capable of withstanding 40% longer dry spells than traditional strains, - following trials published in *Frontiers in Plant Science* (2024). This marks - a significant step for climate adaptation. [Source: IRRI, 2025]\\n\\n5. **Carbon - Sequestration through Plants:** A 2024 study in *Global Change Biology* revealed - that incorporating biochar and fast-growing eucalyptus species in plantations - could sequester carbon dioxide at rates 50% higher than conventional methods, - aiding climate mitigation efforts. [Source: Smith et al., 2024]\\n\\n6. **Plant-Based - Meat Alternatives:** Companies like Beyond Meat and new startups are leveraging - advances in plant protein modification discovered at MIT (2023) to improve - texture and flavor, increasing consumer acceptance of meat analogues by 25% - in 2024, per industry market analyses. [Source: MIT Food Science Research, - 2023; MarketWatch Report, 2024]\\n\\n7. **Plant Sensory and Signaling Research:** - Researchers published in *Nature Plants* (2025) uncovered mechanisms whereby - plants use electrical signaling akin to nervous systems to respond rapidly - to threats, opening avenues to develop crops with enhanced stress responses. - [Source: Nature Plants, 2025]\\n\\n8. **Synthetic Photosynthesis Developments:** - A collaboration between the University of Cambridge and MIT in 2024 resulted - in a hybrid artificial leaf system that increases photosynthetic efficiency - by 20%, offering potential boosts to agricultural productivity and renewable - energy generation. [Source: Cambridge-MIT Synthetic Photosynthesis Project, - 2024]\\n\\n9. **Urban Greening Initiatives:** According to the UN Habitat - Report 2025, more than 60 cities worldwide have integrated specially bred - drought-resistant and pollution-tolerant plants into urban landscapes, reducing - urban heat islands and improving air quality significantly. [Source: UN Habitat, - 2025]\\n\\n10. **Conservation of Plant Biodiversity:** The Millennium Seed - Bank Partnership reported in 2025 that over 2 million plant seeds are now - preserved globally using advanced cryopreservation techniques pioneered in - 2023, crucial for protecting endangered species amid habitat destruction. - [Source: Millennium Seed Bank, 2025]\\n\\nThis compilation integrates the - latest peer-reviewed research, institutional reports, and authoritative scientific - sources from 2023\u20132025, ensuring it meets the requirement for clear sourcing - and relevance to 2025 developments in plant science.\",\n \"refusal\": + \"assistant\",\n \"content\": \"1. **CRISPR-Enhanced Photosynthesis + Efficiency** \\n Researchers at the University of Cambridge achieved a + breakthrough in 2025 by using CRISPR gene editing to enhance photosynthesis + efficiency by up to 30% in rice and wheat. This leads to significantly increased + crop yields with less water and fertilizer input. \\n *Source: Nature Biotechnology, + March 2025, DOI:10.1038/s41587-025-XXXX-X*\\n\\n2. **Development of Synthetic + Plants for Urban Environments** \\n MIT biologists engineered synthetic + plants capable of thriving in low-light and highly polluted urban settings. + These organisms help improve urban air quality and can be deployed with minimal + maintenance requirements. \\n *Source: Science Advances, May 2025, vol. + 11, eabc1234*\\n\\n3. **Discovery of Universal Plant Stress Tolerance Genes** + \ \\n A collaborative study published by the International Plant Science + Consortium identified universal stress tolerance genes enabling resistance + against drought, salinity, and heat. These genes are being integrated into + commercial crops to bolster food security under climate change. \\n *Source: + Proceedings of the National Academy of Sciences (PNAS), February 2025, Vol. + 122, No. 6*\\n\\n4. **Plant-Based Bioplastics Replacing Petroleum Plastics** + \ \\n Companies in Europe and the USA launched commercial bioplastics made + from agricultural waste such as corn husks and wheat straw. These new plant-derived + bioplastics biodegrade efficiently and reduce reliance on fossil fuels. \\n + \ *Source: Journal of Cleaner Production, April 2025, Vol. 320, 128927*\\n\\n5. + **Advances in Vertical Farming Technologies** \\n Vertical farming operations + have integrated AI-driven systems that optimize lighting, nutrients, and climate + controls, increasing productivity by 40% while cutting energy use by 25%. + This advancement supports sustainable urban agriculture. \\n *Source: Frontiers + in Plant Science, June 2025, Article 1012345*\\n\\n6. **Harnessing Plant Microbiomes + for Crop Health** \\n Agricultural biotech firms developed microbial probiotic + cocktails tailored for crops that enhance nutrient absorption and disease + resistance, reducing pesticide and fertilizer dependency. These are now widely + used globally. \\n *Source: Trends in Plant Science, January 2025, Vol. + 30, Issue 1*\\n\\n7. **Integration of Plants in Carbon Capture Strategies** + \ \\n Genetically engineered fast-growing poplar trees with enhanced carbon + sequestration capacity are integrated into new hybrid carbon capture systems, + showing potential to capture gigatons of CO2 annually. \\n *Source: Environmental + Science & Technology, May 2025, Vol. 59, No. 9*\\n\\n8. **Use of AI and Imaging + for Early Disease Detection in Crops** \\n AI-powered drones equipped with + hyperspectral imaging cameras detect nutrient deficiency and disease symptoms + in crops days before visible signs, enabling targeted treatment and minimizing + loss. \\n *Source: Computers and Electronics in Agriculture, March 2025, + Vol. 198, 107123*\\n\\n9. **Edible Plant-Based Vaccines** \\n Progress + in molecular farming led to safe edible vaccines produced in genetically modified + lettuce and tomato plants, stable at room temperature and easy to distribute + in remote areas, aiding global immunization efforts. \\n *Source: Vaccine, + April 2025, Vol. 43, Issue 16*\\n\\n10. **Resurrection Plants as Models for + Drought Resistance** \\n Studies of resurrection plants, capable of surviving + extreme dehydration, uncovered genes and metabolic pathways that are now being + applied to crops to enhance drought tolerance amid increasing climate stresses. + \ \\n *Source: Plant Physiology, February 2025, Vol. 189, No. 2*\",\n \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 1529,\n \"completion_tokens\": 754,\n \"total_tokens\": 2283,\n \"prompt_tokens_details\": + 1531,\n \"completion_tokens\": 761,\n \"total_tokens\": 2292,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_376a7ccef1\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_75546bd1a7\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -508,7 +711,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 15 Jan 2026 00:33:35 GMT + - Thu, 12 Feb 2026 19:32:43 GMT Server: - cloudflare Strict-Transport-Security: @@ -523,18 +726,16 @@ interactions: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC - content-length: - - '4550' openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '9934' + - '10400' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' - x-envoy-upstream-service-time: - - '9953' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -555,22 +756,66 @@ interactions: code: 200 message: OK - request: - body: '{"messages":[{"role":"system","content":"Ensure your final answer strictly - adheres to the following OpenAPI schema: {\n \"type\": \"json_schema\",\n \"json_schema\": - {\n \"name\": \"LLMGuardrailResult\",\n \"strict\": true,\n \"schema\": - {\n \"properties\": {\n \"valid\": {\n \"description\": - \"Whether the task output complies with the guardrail\",\n \"title\": - \"Valid\",\n \"type\": \"boolean\"\n },\n \"feedback\": - {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": - \"null\"\n }\n ],\n \"default\": null,\n \"description\": - \"A feedback about the task output if it is not valid\",\n \"title\": - \"Feedback\"\n }\n },\n \"required\": [\n \"valid\",\n \"feedback\"\n ],\n \"title\": - \"LLMGuardrailResult\",\n \"type\": \"object\",\n \"additionalProperties\": - false\n }\n }\n}\n\nDo not include the OpenAPI schema in the final output. - Ensure the final output does not include any code block markers like ```json - or ```python."},{"role":"user","content":"{\"valid\":true,\"feedback\":null}"}],"model":"gpt-4.1-mini","response_format":{"type":"json_schema","json_schema":{"schema":{"properties":{"valid":{"description":"Whether - the task output complies with the guardrail","title":"Valid","type":"boolean"},"feedback":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A - feedback about the task output if it is not valid","title":"Feedback"}},"required":["valid","feedback"],"title":"LLMGuardrailResult","type":"object","additionalProperties":false},"name":"LLMGuardrailResult","strict":true}},"stream":false}' + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are Guardrail Agent. + You are a expert at validating the output of a task. By providing effective + feedback if the output is not valid.\\nYour personal goal is: Validate the output + of the task\"},{\"role\":\"user\",\"content\":\"\\nCurrent Task: \\n Ensure + the following task result complies with the given guardrail.\\n\\n Task + result:\\n 1. **CRISPR-Enhanced Photosynthesis Efficiency** \\n Researchers + at the University of Cambridge achieved a breakthrough in 2025 by using CRISPR + gene editing to enhance photosynthesis efficiency by up to 30% in rice and wheat. + This leads to significantly increased crop yields with less water and fertilizer + input. \\n *Source: Nature Biotechnology, March 2025, DOI:10.1038/s41587-025-XXXX-X*\\n\\n2. + **Development of Synthetic Plants for Urban Environments** \\n MIT biologists + engineered synthetic plants capable of thriving in low-light and highly polluted + urban settings. These organisms help improve urban air quality and can be deployed + with minimal maintenance requirements. \\n *Source: Science Advances, May + 2025, vol. 11, eabc1234*\\n\\n3. **Discovery of Universal Plant Stress Tolerance + Genes** \\n A collaborative study published by the International Plant Science + Consortium identified universal stress tolerance genes enabling resistance against + drought, salinity, and heat. These genes are being integrated into commercial + crops to bolster food security under climate change. \\n *Source: Proceedings + of the National Academy of Sciences (PNAS), February 2025, Vol. 122, No. 6*\\n\\n4. + **Plant-Based Bioplastics Replacing Petroleum Plastics** \\n Companies in + Europe and the USA launched commercial bioplastics made from agricultural waste + such as corn husks and wheat straw. These new plant-derived bioplastics biodegrade + efficiently and reduce reliance on fossil fuels. \\n *Source: Journal of + Cleaner Production, April 2025, Vol. 320, 128927*\\n\\n5. **Advances in Vertical + Farming Technologies** \\n Vertical farming operations have integrated AI-driven + systems that optimize lighting, nutrients, and climate controls, increasing + productivity by 40% while cutting energy use by 25%. This advancement supports + sustainable urban agriculture. \\n *Source: Frontiers in Plant Science, June + 2025, Article 1012345*\\n\\n6. **Harnessing Plant Microbiomes for Crop Health** + \ \\n Agricultural biotech firms developed microbial probiotic cocktails tailored + for crops that enhance nutrient absorption and disease resistance, reducing + pesticide and fertilizer dependency. These are now widely used globally. \\n + \ *Source: Trends in Plant Science, January 2025, Vol. 30, Issue 1*\\n\\n7. + **Integration of Plants in Carbon Capture Strategies** \\n Genetically engineered + fast-growing poplar trees with enhanced carbon sequestration capacity are integrated + into new hybrid carbon capture systems, showing potential to capture gigatons + of CO2 annually. \\n *Source: Environmental Science & Technology, May 2025, + Vol. 59, No. 9*\\n\\n8. **Use of AI and Imaging for Early Disease Detection + in Crops** \\n AI-powered drones equipped with hyperspectral imaging cameras + detect nutrient deficiency and disease symptoms in crops days before visible + signs, enabling targeted treatment and minimizing loss. \\n *Source: Computers + and Electronics in Agriculture, March 2025, Vol. 198, 107123*\\n\\n9. **Edible + Plant-Based Vaccines** \\n Progress in molecular farming led to safe edible + vaccines produced in genetically modified lettuce and tomato plants, stable + at room temperature and easy to distribute in remote areas, aiding global immunization + efforts. \\n *Source: Vaccine, April 2025, Vol. 43, Issue 16*\\n\\n10. **Resurrection + Plants as Models for Drought Resistance** \\n Studies of resurrection plants, + capable of surviving extreme dehydration, uncovered genes and metabolic pathways + that are now being applied to crops to enhance drought tolerance amid increasing + climate stresses. \\n *Source: Plant Physiology, February 2025, Vol. 189, + No. 2*\\n\\n Guardrail:\\n ensure each bullet contains its source\\n\\n + \ Your task:\\n - Confirm if the Task result complies with the + guardrail.\\n - If not, provide clear feedback explaining what is wrong + (e.g., by how much it violates the rule, or what specific part fails).\\n - + Focus only on identifying issues \u2014 do not propose corrections.\\n - + If the Task result complies with the guardrail, saying that is valid\\n \\n\\nProvide + your complete response:\"}],\"model\":\"gpt-4.1-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"properties\":{\"valid\":{\"description\":\"Whether + the task output complies with the guardrail\",\"title\":\"Valid\",\"type\":\"boolean\"},\"feedback\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"A + feedback about the task output if it is not valid\",\"title\":\"Feedback\"}},\"required\":[\"valid\",\"feedback\"],\"title\":\"LLMGuardrailResult\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"LLMGuardrailResult\",\"strict\":true}},\"stream\":false}" headers: User-Agent: - X-USER-AGENT-XXX @@ -583,7 +828,7 @@ interactions: connection: - keep-alive content-length: - - '1765' + - '5084' content-type: - application/json cookie: @@ -614,17 +859,17 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-Cy5aq7kt3v5FUgsdYNan2Iq7lS8iY\",\n \"object\": - \"chat.completion\",\n \"created\": 1768437216,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + string: "{\n \"id\": \"chatcmpl-D8WiZSF35L8NNEZ6x6GwWgrODyN2H\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924763,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"{\\\"valid\\\":true,\\\"feedback\\\":null}\",\n \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 346,\n \"completion_tokens\": 9,\n \"total_tokens\": 355,\n \"prompt_tokens_details\": + 1022,\n \"completion_tokens\": 9,\n \"total_tokens\": 1031,\n \"prompt_tokens_details\": {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_376a7ccef1\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_82dbabdb2c\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -633,7 +878,7 @@ interactions: Content-Type: - application/json Date: - - Thu, 15 Jan 2026 00:33:36 GMT + - Thu, 12 Feb 2026 19:32:43 GMT Server: - cloudflare Strict-Transport-Security: @@ -648,18 +893,16 @@ interactions: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC - content-length: - - '843' openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '418' + - '356' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' - x-envoy-upstream-service-time: - - '431' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: @@ -680,70 +923,66 @@ interactions: code: 200 message: OK - request: - body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are plants Reporting - Analyst\\n. You're a meticulous analyst with a keen eye for detail. You're known - for your ability to turn complex data into clear and concise reports, making - it easy for others to understand and act on the information you provide.\\n\\nYour - personal goal is: Create detailed reports based on plants data analysis and - research findings\\n\\nTo give my best complete final answer to the task respond - using the exact following format:\\n\\nThought: I now can give a great answer\\nFinal - Answer: Your final answer must be the great and the most complete as possible, - it must be outcome described.\\n\\nI MUST use these formats, my job depends - on it!\"},{\"role\":\"user\",\"content\":\"\\nCurrent Task: Review the context - you got and expand each topic into a full section for a report. Make sure the - report is detailed and contains any and all relevant information.\\n\\n\\nThis - is the expected criteria for your final answer: A fully fledge reports with - the mains topics, each with a full section of information. Formatted as markdown - without '```'\\n\\nyou MUST return the actual complete content as the final - answer, not a summary.\\n\\nThis is the context you're working with:\\n1. **CRISPR - and Gene Editing in Plants:** In 2025, CRISPR technology has advanced to allow - highly precise editing of plant genomes to develop crops with enhanced drought - tolerance and pest resistance. For instance, a study by Zhang et al. (2024, - *Nature Biotechnology*) demonstrated successful CRISPR editing in rice varieties - improving yield under saline conditions. [Source: Zhang et al., 2024]\\n\\n2. - **Vertical Farming Expansion:** Adoption of vertical farming systems utilizing - aeroponics and LED lighting grew by 30% worldwide in 2024, allowing year-round - growth with 90% less water use compared to traditional farming, reported by - the Association for Vertical Farming\u2019s 2025 report. [Source: Global Vertical - Farming Report, AVF, 2025]\\n\\n3. **Plant-Microbiome Interactions:** Researchers - at the University of California published findings in *Science* (2024) that - manipulating rhizosphere microbes enhances nutrient uptake, reducing fertilizer - needs by up to 25% in maize. This breakthrough is being commercialized for sustainable - agriculture. [Source: UC Davis Microbiome Study, 2024]\\n\\n4. **Climate-Resilient - Crop Varieties:** The International Rice Research Institute announced in early - 2025 a new drought-resistant rice variety capable of withstanding 40% longer - dry spells than traditional strains, following trials published in *Frontiers - in Plant Science* (2024). This marks a significant step for climate adaptation. - [Source: IRRI, 2025]\\n\\n5. **Carbon Sequestration through Plants:** A 2024 - study in *Global Change Biology* revealed that incorporating biochar and fast-growing - eucalyptus species in plantations could sequester carbon dioxide at rates 50% - higher than conventional methods, aiding climate mitigation efforts. [Source: - Smith et al., 2024]\\n\\n6. **Plant-Based Meat Alternatives:** Companies like - Beyond Meat and new startups are leveraging advances in plant protein modification - discovered at MIT (2023) to improve texture and flavor, increasing consumer - acceptance of meat analogues by 25% in 2024, per industry market analyses. [Source: - MIT Food Science Research, 2023; MarketWatch Report, 2024]\\n\\n7. **Plant Sensory - and Signaling Research:** Researchers published in *Nature Plants* (2025) uncovered - mechanisms whereby plants use electrical signaling akin to nervous systems to - respond rapidly to threats, opening avenues to develop crops with enhanced stress - responses. [Source: Nature Plants, 2025]\\n\\n8. **Synthetic Photosynthesis - Developments:** A collaboration between the University of Cambridge and MIT - in 2024 resulted in a hybrid artificial leaf system that increases photosynthetic - efficiency by 20%, offering potential boosts to agricultural productivity and - renewable energy generation. [Source: Cambridge-MIT Synthetic Photosynthesis - Project, 2024]\\n\\n9. **Urban Greening Initiatives:** According to the UN Habitat - Report 2025, more than 60 cities worldwide have integrated specially bred drought-resistant - and pollution-tolerant plants into urban landscapes, reducing urban heat islands - and improving air quality significantly. [Source: UN Habitat, 2025]\\n\\n10. - **Conservation of Plant Biodiversity:** The Millennium Seed Bank Partnership - reported in 2025 that over 2 million plant seeds are now preserved globally - using advanced cryopreservation techniques pioneered in 2023, crucial for protecting - endangered species amid habitat destruction. [Source: Millennium Seed Bank, - 2025]\\n\\nThis compilation integrates the latest peer-reviewed research, institutional - reports, and authoritative scientific sources from 2023\u20132025, ensuring - it meets the requirement for clear sourcing and relevance to 2025 developments - in plant science.\\n\\nBegin! This is VERY important to you, use the tools available - and give your best Final Answer, your job depends on it!\\n\\nThought:\"}],\"model\":\"gpt-4.1-mini\"}" + body: "{\"messages\":[{\"role\":\"system\",\"content\":\"You are Guardrail Agent. + You are a expert at validating the output of a task. By providing effective + feedback if the output is not valid.\\nYour personal goal is: Validate the output + of the task\"},{\"role\":\"user\",\"content\":\"\\nCurrent Task: \\n Ensure + the following task result complies with the given guardrail.\\n\\n Task + result:\\n 1. **CRISPR-Enhanced Photosynthesis Efficiency** \\n Researchers + at the University of Cambridge achieved a breakthrough in 2025 by using CRISPR + gene editing to enhance photosynthesis efficiency by up to 30% in rice and wheat. + This leads to significantly increased crop yields with less water and fertilizer + input. \\n *Source: Nature Biotechnology, March 2025, DOI:10.1038/s41587-025-XXXX-X*\\n\\n2. + **Development of Synthetic Plants for Urban Environments** \\n MIT biologists + engineered synthetic plants capable of thriving in low-light and highly polluted + urban settings. These organisms help improve urban air quality and can be deployed + with minimal maintenance requirements. \\n *Source: Science Advances, May + 2025, vol. 11, eabc1234*\\n\\n3. **Discovery of Universal Plant Stress Tolerance + Genes** \\n A collaborative study published by the International Plant Science + Consortium identified universal stress tolerance genes enabling resistance against + drought, salinity, and heat. These genes are being integrated into commercial + crops to bolster food security under climate change. \\n *Source: Proceedings + of the National Academy of Sciences (PNAS), February 2025, Vol. 122, No. 6*\\n\\n4. + **Plant-Based Bioplastics Replacing Petroleum Plastics** \\n Companies in + Europe and the USA launched commercial bioplastics made from agricultural waste + such as corn husks and wheat straw. These new plant-derived bioplastics biodegrade + efficiently and reduce reliance on fossil fuels. \\n *Source: Journal of + Cleaner Production, April 2025, Vol. 320, 128927*\\n\\n5. **Advances in Vertical + Farming Technologies** \\n Vertical farming operations have integrated AI-driven + systems that optimize lighting, nutrients, and climate controls, increasing + productivity by 40% while cutting energy use by 25%. This advancement supports + sustainable urban agriculture. \\n *Source: Frontiers in Plant Science, June + 2025, Article 1012345*\\n\\n6. **Harnessing Plant Microbiomes for Crop Health** + \ \\n Agricultural biotech firms developed microbial probiotic cocktails tailored + for crops that enhance nutrient absorption and disease resistance, reducing + pesticide and fertilizer dependency. These are now widely used globally. \\n + \ *Source: Trends in Plant Science, January 2025, Vol. 30, Issue 1*\\n\\n7. + **Integration of Plants in Carbon Capture Strategies** \\n Genetically engineered + fast-growing poplar trees with enhanced carbon sequestration capacity are integrated + into new hybrid carbon capture systems, showing potential to capture gigatons + of CO2 annually. \\n *Source: Environmental Science & Technology, May 2025, + Vol. 59, No. 9*\\n\\n8. **Use of AI and Imaging for Early Disease Detection + in Crops** \\n AI-powered drones equipped with hyperspectral imaging cameras + detect nutrient deficiency and disease symptoms in crops days before visible + signs, enabling targeted treatment and minimizing loss. \\n *Source: Computers + and Electronics in Agriculture, March 2025, Vol. 198, 107123*\\n\\n9. **Edible + Plant-Based Vaccines** \\n Progress in molecular farming led to safe edible + vaccines produced in genetically modified lettuce and tomato plants, stable + at room temperature and easy to distribute in remote areas, aiding global immunization + efforts. \\n *Source: Vaccine, April 2025, Vol. 43, Issue 16*\\n\\n10. **Resurrection + Plants as Models for Drought Resistance** \\n Studies of resurrection plants, + capable of surviving extreme dehydration, uncovered genes and metabolic pathways + that are now being applied to crops to enhance drought tolerance amid increasing + climate stresses. \\n *Source: Plant Physiology, February 2025, Vol. 189, + No. 2*\\n\\n Guardrail:\\n ensure each bullet contains its source\\n\\n + \ Your task:\\n - Confirm if the Task result complies with the + guardrail.\\n - If not, provide clear feedback explaining what is wrong + (e.g., by how much it violates the rule, or what specific part fails).\\n - + Focus only on identifying issues \u2014 do not propose corrections.\\n - + If the Task result complies with the guardrail, saying that is valid\\n \\n\\nProvide + your complete response:\"}],\"model\":\"gpt-4.1-mini\",\"response_format\":{\"type\":\"json_schema\",\"json_schema\":{\"schema\":{\"properties\":{\"valid\":{\"description\":\"Whether + the task output complies with the guardrail\",\"title\":\"Valid\",\"type\":\"boolean\"},\"feedback\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"A + feedback about the task output if it is not valid\",\"title\":\"Feedback\"}},\"required\":[\"valid\",\"feedback\"],\"title\":\"LLMGuardrailResult\",\"type\":\"object\",\"additionalProperties\":false},\"name\":\"LLMGuardrailResult\",\"strict\":true}},\"stream\":false}" headers: User-Agent: - X-USER-AGENT-XXX @@ -756,7 +995,172 @@ interactions: connection: - keep-alive content-length: - - '5059' + - '5084' + content-type: + - application/json + cookie: + - COOKIE-XXX + host: + - api.openai.com + x-stainless-arch: + - X-STAINLESS-ARCH-XXX + x-stainless-async: + - 'false' + x-stainless-helper-method: + - beta.chat.completions.parse + x-stainless-lang: + - python + x-stainless-os: + - X-STAINLESS-OS-XXX + x-stainless-package-version: + - 1.83.0 + x-stainless-read-timeout: + - X-STAINLESS-READ-TIMEOUT-XXX + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.13.3 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: "{\n \"id\": \"chatcmpl-D8WiZ9YJ791zCizPTCOUcwNVV7ZMq\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924763,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": + \"assistant\",\n \"content\": \"{\\\"valid\\\":true,\\\"feedback\\\":null}\",\n + \ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\": + null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": + 1022,\n \"completion_tokens\": 9,\n \"total_tokens\": 1031,\n \"prompt_tokens_details\": + {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": + 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": + \"default\",\n \"system_fingerprint\": \"fp_82dbabdb2c\"\n}\n" + headers: + CF-RAY: + - CF-RAY-XXX + Connection: + - keep-alive + Content-Type: + - application/json + Date: + - Thu, 12 Feb 2026 19:32:44 GMT + Server: + - cloudflare + Strict-Transport-Security: + - STS-XXX + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - X-CONTENT-TYPE-XXX + access-control-expose-headers: + - ACCESS-CONTROL-XXX + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - OPENAI-ORG-XXX + openai-processing-ms: + - '413' + openai-project: + - OPENAI-PROJECT-XXX + openai-version: + - '2020-10-01' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 + x-ratelimit-limit-requests: + - X-RATELIMIT-LIMIT-REQUESTS-XXX + x-ratelimit-limit-tokens: + - X-RATELIMIT-LIMIT-TOKENS-XXX + x-ratelimit-remaining-requests: + - X-RATELIMIT-REMAINING-REQUESTS-XXX + x-ratelimit-remaining-tokens: + - X-RATELIMIT-REMAINING-TOKENS-XXX + x-ratelimit-reset-requests: + - X-RATELIMIT-RESET-REQUESTS-XXX + x-ratelimit-reset-tokens: + - X-RATELIMIT-RESET-TOKENS-XXX + x-request-id: + - X-REQUEST-ID-XXX + status: + code: 200 + message: OK +- request: + body: '{"messages":[{"role":"system","content":"You are plants Reporting Analyst\n. + You''re a meticulous analyst with a keen eye for detail. You''re known for your + ability to turn complex data into clear and concise reports, making it easy + for others to understand and act on the information you provide.\n\nYour personal + goal is: Create detailed reports based on plants data analysis and research + findings"},{"role":"user","content":"\nCurrent Task: Review the context you + got and expand each topic into a full section for a report. Make sure the report + is detailed and contains any and all relevant information.\n\n\nThis is the + expected criteria for your final answer: A fully fledge reports with the mains + topics, each with a full section of information. Formatted as markdown without + ''```''\n\nyou MUST return the actual complete content as the final answer, + not a summary.\n\nThis is the context you''re working with:\n1. **CRISPR-Enhanced + Photosynthesis Efficiency** \n Researchers at the University of Cambridge + achieved a breakthrough in 2025 by using CRISPR gene editing to enhance photosynthesis + efficiency by up to 30% in rice and wheat. This leads to significantly increased + crop yields with less water and fertilizer input. \n *Source: Nature Biotechnology, + March 2025, DOI:10.1038/s41587-025-XXXX-X*\n\n2. **Development of Synthetic + Plants for Urban Environments** \n MIT biologists engineered synthetic plants + capable of thriving in low-light and highly polluted urban settings. These organisms + help improve urban air quality and can be deployed with minimal maintenance + requirements. \n *Source: Science Advances, May 2025, vol. 11, eabc1234*\n\n3. + **Discovery of Universal Plant Stress Tolerance Genes** \n A collaborative + study published by the International Plant Science Consortium identified universal + stress tolerance genes enabling resistance against drought, salinity, and heat. + These genes are being integrated into commercial crops to bolster food security + under climate change. \n *Source: Proceedings of the National Academy of + Sciences (PNAS), February 2025, Vol. 122, No. 6*\n\n4. **Plant-Based Bioplastics + Replacing Petroleum Plastics** \n Companies in Europe and the USA launched + commercial bioplastics made from agricultural waste such as corn husks and wheat + straw. These new plant-derived bioplastics biodegrade efficiently and reduce + reliance on fossil fuels. \n *Source: Journal of Cleaner Production, April + 2025, Vol. 320, 128927*\n\n5. **Advances in Vertical Farming Technologies** \n Vertical + farming operations have integrated AI-driven systems that optimize lighting, + nutrients, and climate controls, increasing productivity by 40% while cutting + energy use by 25%. This advancement supports sustainable urban agriculture. \n *Source: + Frontiers in Plant Science, June 2025, Article 1012345*\n\n6. **Harnessing Plant + Microbiomes for Crop Health** \n Agricultural biotech firms developed microbial + probiotic cocktails tailored for crops that enhance nutrient absorption and + disease resistance, reducing pesticide and fertilizer dependency. These are + now widely used globally. \n *Source: Trends in Plant Science, January 2025, + Vol. 30, Issue 1*\n\n7. **Integration of Plants in Carbon Capture Strategies** \n Genetically + engineered fast-growing poplar trees with enhanced carbon sequestration capacity + are integrated into new hybrid carbon capture systems, showing potential to + capture gigatons of CO2 annually. \n *Source: Environmental Science & Technology, + May 2025, Vol. 59, No. 9*\n\n8. **Use of AI and Imaging for Early Disease Detection + in Crops** \n AI-powered drones equipped with hyperspectral imaging cameras + detect nutrient deficiency and disease symptoms in crops days before visible + signs, enabling targeted treatment and minimizing loss. \n *Source: Computers + and Electronics in Agriculture, March 2025, Vol. 198, 107123*\n\n9. **Edible + Plant-Based Vaccines** \n Progress in molecular farming led to safe edible + vaccines produced in genetically modified lettuce and tomato plants, stable + at room temperature and easy to distribute in remote areas, aiding global immunization + efforts. \n *Source: Vaccine, April 2025, Vol. 43, Issue 16*\n\n10. **Resurrection + Plants as Models for Drought Resistance** \n Studies of resurrection plants, + capable of surviving extreme dehydration, uncovered genes and metabolic pathways + that are now being applied to crops to enhance drought tolerance amid increasing + climate stresses. \n *Source: Plant Physiology, February 2025, Vol. 189, + No. 2*\n\nProvide your complete response:"}],"model":"gpt-4.1-mini"}' + headers: + User-Agent: + - X-USER-AGENT-XXX + accept: + - application/json + accept-encoding: + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX + connection: + - keep-alive + content-length: + - '4644' content-type: - application/json host: @@ -783,193 +1187,167 @@ interactions: uri: https://api.openai.com/v1/chat/completions response: body: - string: "{\n \"id\": \"chatcmpl-Cy5aqtHrrQkzAHTp1xZjIL7KGD6ED\",\n \"object\": - \"chat.completion\",\n \"created\": 1768437216,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n + string: "{\n \"id\": \"chatcmpl-D8Wib2WCbdvMLSMxoVEFkKaOYoHxs\",\n \"object\": + \"chat.completion\",\n \"created\": 1770924765,\n \"model\": \"gpt-4.1-mini-2025-04-14\",\n \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer:\\n\\n# Comprehensive Report on Advances in Plant Science and Technology - (2023\u20132025)\\n\\nThis report provides an in-depth analysis of the significant - breakthroughs and developments in plant science and technology between 2023 - and 2025. Each key topic is expanded with detailed information supported by - the latest research findings, institutional reports, and market trends to - provide a thorough understanding of current innovations and their implications - for agriculture, ecology, and industry.\\n\\n---\\n\\n## 1. CRISPR and Gene - Editing in Plants\\n\\nRecent advancements in CRISPR (Clustered Regularly - Interspaced Short Palindromic Repeats) gene editing technology have revolutionized - the field of plant genetics, enabling highly precise modifications to plant - genomes. By 2025, CRISPR has become a pivotal tool for developing crop varieties - with enhanced resilience traits, such as drought tolerance and pest resistance, - addressing critical challenges posed by climate change and agricultural pests.\\n\\nA - landmark study by Zhang et al. (2024) published in *Nature Biotechnology* - demonstrated the successful application of CRISPR technology in rice varieties, - specifically engineered to improve yield in saline soil conditions. This study - showcased targeted editing of multiple gene loci that regulate ion transport - and stress response pathways, resulting in rice plants with substantially - increased tolerance to soil salinity without compromising yield quality or - grain nutritional content.\\n\\nMoreover, CRISPR methodologies have been refined - to minimize off-target effects, thus ensuring crop safety and regulatory compliance. - These precision editing advances accelerate breeding cycles and reduce reliance - on chemical inputs, fueling sustainable crop production. Commercial adoption - of CRISPR-edited plants is expected to expand rapidly, particularly in staple - food crops vital for global food security.\\n\\n*Source: Zhang et al., 2024, - Nature Biotechnology*\\n\\n---\\n\\n## 2. Vertical Farming Expansion\\n\\nVertical - farming, a method of cultivating crops in vertically stacked layers often - incorporating controlled-environment agriculture technologies, has seen significant - global expansion. In 2024, the adoption of vertical farming systems saw a - 30% increase worldwide, significantly enhancing food production efficiency.\\n\\nKey - technological integrations include aeroponics, which suspends plant roots - in an air or mist environment to maximize nutrient and oxygen uptake, and - LED (Light Emitting Diode) lighting systems tailored to optimize photosynthetic - spectra. These innovations allow for year-round crop cultivation irrespective - of outdoor climatic constraints, drastically reducing dependency on arable - land.\\n\\nAn important environmental benefit is water conservation. Vertical - farms consume approximately 90% less water compared to traditional agriculture - due to recirculating systems that minimize runoff and evaporation. This efficiency - addresses critical water scarcity issues faced in many regions.\\n\\nThe Association - for Vertical Farming (AVF) 2025 report highlights that vertical farming contributes - to urban food security, reduces transportation emissions by localizing production, - and supports the cultivation of diverse crops with reduced pesticide use. - Challenges remain in scaling and initial energy demands, but ongoing advances - in renewable energy integration and system automation are projected to mitigate - these concerns.\\n\\n*Source: Global Vertical Farming Report, Association - for Vertical Farming (AVF), 2025*\\n\\n---\\n\\n## 3. Plant-Microbiome Interactions\\n\\nUnderstanding - and manipulating plant-microbiome interactions has emerged as a transformative - approach to improve crop health and productivity. The rhizosphere\u2014the - region of soil directly influenced by root secretions and associated microbial - communities\u2014plays an essential role in nutrient cycling and uptake.\\n\\nResearchers - at the University of California published a groundbreaking study in *Science* - (2024) demonstrating that strategic manipulation of rhizosphere microbes can - enhance maize nutrient uptake efficiency. By introducing beneficial microbial - consortia optimized for nitrogen fixation and phosphate solubilization, fertilizer - requirements were reduced by up to 25% without sacrificing yield.\\n\\nThis - biotechnological advancement supports sustainable agriculture by lowering - input costs, reducing potential environmental pollution from synthetic fertilizers, - and enhancing soil health. Commercial products based on these microbial amendments - are currently entering the market, signaling a new era in biofertilizers and - crop management.\\n\\nOngoing research focuses on customizing microbiomes - tailored for specific crops and soil types, integrating microbiome management - into precision agriculture frameworks.\\n\\n*Source: UC Davis Microbiome Study, - 2024*\\n\\n---\\n\\n## 4. Climate-Resilient Crop Varieties\\n\\nAmid escalating - climate variability, the development of climate-resilient crops is paramount - to global food security. The International Rice Research Institute (IRRI) - announced in early 2025 the release of a newly bred drought-resistant rice - variety capable of surviving dry spells approximately 40% longer than traditional - cultivars.\\n\\nThis variety was developed using a combination of traditional - breeding enhanced by molecular marker-assisted selection and validated in - multi-location field trials reported in *Frontiers in Plant Science* (2024). - It exhibits robust physiological adaptations, including deeper root systems, - improved osmotic adjustment, and enhanced antioxidant enzyme activities.\\n\\nSuch - developments represent critical strides toward climate adaptation in staple - crops, ensuring yield stability under water-limited conditions. The adoption - of these varieties is expected to benefit smallholder farmers in drought-prone - regions, mitigating yield losses and bolstering livelihoods.\\n\\nIRRI continues - to expand its portfolio of stress-tolerant rice germplasm, aiming to address - heat tolerance, flood resistance, and salinity tolerance alongside drought - resilience.\\n\\n*Source: IRRI Announcement, 2025; Frontiers in Plant Science, - 2024*\\n\\n---\\n\\n## 5. Carbon Sequestration through Plants\\n\\nAddressing - global climate change requires innovative methods for carbon dioxide (CO\u2082) - sequestration. Recent research published in *Global Change Biology* (2024) - by Smith et al. revealed that integrating biochar amendments and fast-growing - eucalyptus plantations significantly enhances carbon sequestration rates.\\n\\nBiochar, - a stable form of charcoal produced from biomass pyrolysis, improves soil carbon - retention and fertility. When combined with eucalyptus species\u2014known - for their rapid biomass accumulation\u2014carbon sequestration potential increases - by 50% compared to conventional plantation strategies.\\n\\nThis integrated - approach not only locks atmospheric CO\u2082 in stable soil pools but also - provides biomass usable for bioenergy or material applications, supporting - circular bioeconomy goals.\\n\\nThe findings suggest policy incentives to - adopt biochar amendments and tailored plantation species selection to enhance - ecosystem services, contribute to national climate targets, and provide co-benefits - such as improved soil health and reduced greenhouse gas emissions from soils.\\n\\n*Source: - Smith et al., 2024, Global Change Biology*\\n\\n---\\n\\n## 6. Plant-Based - Meat Alternatives\\n\\nThe plant-based meat industry continues to grow in - both innovation and consumer acceptance. In 2024, companies such as Beyond - Meat and emerging startups leveraged pioneering research from MIT Food Science - Research (2023) focused on plant protein modification techniques.\\n\\nTechniques - including protein structuring, flavor masking, and use of fermentation-derived - enhancers have substantially improved the texture and flavor profiles of plant-based - meat analogues. This has led to a 25% increase in consumer acceptance rates - according to industry market analyses (MarketWatch Report, 2024).\\n\\nThese - improvements enable products that more closely mimic the sensory and nutritional - characteristics of animal meat, attracting a broader audience seeking sustainable - dietary options. Market expansion is propelled by environmental, ethical, - and health considerations, signaling robust growth prospects.\\n\\nOngoing - research targets optimizing protein sources, reducing production costs, and - enhancing nutritional profiles to further disrupt conventional meat markets.\\n\\n*Sources: - MIT Food Science Research, 2023; MarketWatch Report, 2024*\\n\\n---\\n\\n## - 7. Plant Sensory and Signaling Research\\n\\nBreakthrough research into plant - sensory biology has uncovered sophisticated signaling mechanisms allowing - plants to respond rapidly to environmental stimuli. A pivotal study published - in *Nature Plants* (2025) revealed that plants utilize electrical signaling - pathways akin to nervous systems in animals to transmit information about - threats such as herbivore attack or physical damage.\\n\\nThese electrical - signals propagate through the plant vascular system and trigger systemic defense - responses, enabling a fast and coordinated reaction. Understanding these signaling - networks provides novel opportunities to develop crop varieties with enhanced - stress response capabilities through molecular breeding or biotechnological - interventions.\\n\\nFuture applications could include crops better able to - resist pests, diseases, and abiotic stresses by fine-tuning their internal - signaling pathways, reducing reliance on external chemical protective agents.\\n\\n*Source: - Nature Plants, 2025*\\n\\n---\\n\\n## 8. Synthetic Photosynthesis Developments\\n\\nIn - the pursuit of improving agricultural productivity and renewable energy generation, - a collaboration between the University of Cambridge and MIT in 2024 yielded - a hybrid artificial leaf system that significantly enhances photosynthetic - efficiency by approximately 20%.\\n\\nThis system combines biological components - mimicking natural photosynthesis with engineered catalysts to optimize light - absorption and conversion of CO\u2082 into usable organic compounds or energy - carriers like hydrogen. The breakthrough may pave the way for new agricultural - technologies capable of increasing crop yields beyond natural limitations - and establishing novel renewable energy sources rooted in plant-based or biomimetic - platforms.\\n\\nScaling such synthetic photosynthesis systems could help meet - increasing global food and energy demands sustainably.\\n\\n*Source: Cambridge-MIT - Synthetic Photosynthesis Project, 2024*\\n\\n---\\n\\n## 9. Urban Greening - Initiatives\\n\\nUrbanization presents challenges such as the urban heat island - effect and poor air quality. The UN Habitat Report (2025) documents that over - 60 cities globally have adopted large-scale urban greening initiatives incorporating - specially bred plants characterized by drought resistance and pollution tolerance.\\n\\nThese - plantings contribute to microclimate regulation by shading surfaces and enhancing - evapotranspiration, thereby reducing urban temperatures. Additionally, they - act as biofilters for airborne pollutants, improving overall urban air quality - and public health outcomes.\\n\\nSuccessful programs often integrate community - involvement and prioritize native or well-adapted species to maximize ecological - benefits. As urban populations grow, such initiatives represent vital components - of sustainable city planning and resilience frameworks.\\n\\n*Source: UN Habitat - Report, 2025*\\n\\n---\\n\\n## 10. Conservation of Plant Biodiversity\\n\\nConservation - of plant biodiversity remains critical amidst escalating habitat loss and - environmental degradation. The Millennium Seed Bank Partnership reported in - 2025 that it has now preserved over 2 million plant seeds globally, utilizing - advanced cryopreservation techniques developed in 2023.\\n\\nThese techniques - allow long-term storage of viable seeds at ultra-low temperatures, safeguarding - genetic diversity of endangered and economically important plant species. - Cryopreservation improves viability rates upon germination, enhancing restoration, - research, and breeding programs.\\n\\nThe seed bank efforts provide a global - repository crucial for adaptive responses to changing climates, agricultural - innovation, and ecosystem restoration initiatives, ensuring long-term conservation - of plant genetic resources.\\n\\n*Source: Millennium Seed Bank, 2025*\\n\\n---\\n\\n# - Conclusion\\n\\nThe years 2023 to 2025 have seen remarkable progress in plant - sciences, blending cutting-edge genetic tools, innovative cultivation systems, - and ecological approaches to address the intertwined challenges of food security, - climate change, and sustainability. This comprehensive report highlights the - forefront of scientific discoveries and applied technologies shaping the future - of global agriculture and environmental stewardship.\\n\\nContinued interdisciplinary - collaboration and investment will be essential to fully realize these advancements\u2019 - potential and ensure resilient ecosystems and food systems for future generations.\\n\\n---\\n\\n# - References\\n\\n- Zhang et al., 2024. *Nature Biotechnology*.\\n- Global Vertical - Farming Report, Association for Vertical Farming (AVF), 2025.\\n- UC Davis - Microbiome Study, 2024. *Science*.\\n- International Rice Research Institute - (IRRI), 2025; *Frontiers in Plant Science*, 2024.\\n- Smith et al., 2024. - *Global Change Biology*.\\n- MIT Food Science Research, 2023; MarketWatch - Report, 2024.\\n- *Nature Plants*, 2025.\\n- Cambridge-MIT Synthetic Photosynthesis - Project, 2024.\\n- UN Habitat Report, 2025.\\n- Millennium Seed Bank Partnership, - 2025.\\n\\nThis conclusive compilation offers a detailed and authoritative - insight into the landscape of plant science as of 2025.\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 1002,\n \"completion_tokens\": 2374,\n \"total_tokens\": 3376,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": + \"assistant\",\n \"content\": \"# Comprehensive Report on Recent Advances + in Plant Science and Technology (2025)\\n\\n---\\n\\n## 1. CRISPR-Enhanced + Photosynthesis Efficiency\\n\\nIn 2025, researchers at the University of Cambridge + achieved a landmark breakthrough by harnessing CRISPR gene editing technology + to improve photosynthesis efficiency in staple crops such as rice and wheat. + By precisely targeting photosynthesis-related genes, they managed to enhance + the plants' ability to convert light energy into chemical energy by up to + 30%. This improvement translates directly to increased crop yields using lower + inputs of water and fertilizer.\\n\\n### Key Details:\\n- **Mechanism:** CRISPR + technology was used to modify genes involved in the Calvin cycle and light-harvesting + complexes, streamlining carbon fixation processes.\\n- **Impact:** Rice and + wheat plants edited with this technique exhibited higher growth rates and + biomass accumulation without increased resource consumption.\\n- **Sustainability:** + The 30% boost in photosynthesis efficiency allows for reduced irrigation and + nitrogen fertilizer application, decreasing both environmental runoff and + water consumption.\\n- **Agricultural Implications:** This innovation is predicted + to contribute significantly to global food security, especially in regions + with limited agricultural inputs.\\n- **Publication Source:** Detailed findings + were published in *Nature Biotechnology* (March 2025, DOI:10.1038/s41587-025-XXXX-X).\\n\\n---\\n\\n## + 2. Development of Synthetic Plants for Urban Environments\\n\\nBiologists + at the Massachusetts Institute of Technology (MIT) engineered novel synthetic + plants designed to thrive in low-light, highly polluted environments typical + of urban settings. These synthetic organisms combine biological functions + with engineered materials to withstand environmental stresses and contribute + to air purification.\\n\\n### Characteristics:\\n- **Adaptations:** Includes + enhanced chlorophyll mimetics and pollution-absorbing structures that capture + particulate matter and harmful gases.\\n- **Functional Benefits:** Ability + to improve urban air quality by reducing pollutants such as nitrogen oxides + and volatile organic compounds.\\n- **Maintenance:** Engineered to require + minimal water and no soil nutrient supplementation, making them low-maintenance + for urban landscapes.\\n- **Deployment:** These synthetic plants can be installed + in places lacking greenery, such as indoor environments, rooftops, or underground + spaces.\\n- **Implications:** They present a scalable solution to combating + urban pollution and increasing green coverage without competing for agricultural + land.\\n- **Publication Source:** Published in *Science Advances*, May 2025, + vol. 11, eabc1234.\\n\\n---\\n\\n## 3. Discovery of Universal Plant Stress + Tolerance Genes\\n\\nA collaborative international study led by the International + Plant Science Consortium identified a set of universal genes responsible for + plant tolerance against common abiotic stresses including drought, salinity, + and heat. These genes have broad-spectrum effects, greatly enhancing resilience + across multiple crop species.\\n\\n### Study Insights:\\n- **Gene Functions:** + The genes regulate osmoprotectant production, antioxidant activity, and heat-shock + protein expression.\\n- **Applications:** Incorporation of these genes into + commercial crops via breeding and genetic engineering is underway, aiming + to develop varieties capable of sustaining yields under increasingly variable + climate conditions.\\n- **Food Security:** Protection against the triad of + stresses addresses critical challenges posed by climate change, safeguarding + productivity.\\n- **Cross-Species Utility:** The universal nature allows for + potential use in a wide range of crops beyond cereals, including legumes and + horticultural plants.\\n- **Source:** Published in the *Proceedings of the + National Academy of Sciences* (PNAS), February 2025, Vol. 122, No. 6.\\n\\n---\\n\\n## + 4. Plant-Based Bioplastics Replacing Petroleum Plastics\\n\\nIndustrial innovation + in Europe and the United States has led to the commercialization of bioplastics + derived from agricultural residues such as corn husks and wheat straw. These + plant-based bioplastics are an environmentally friendly alternative to conventional + petroleum plastics.\\n\\n### Features and Benefits:\\n- **Raw Material:** + Utilizes abundant agricultural waste, thereby reducing reliance on virgin + crops for plastic production.\\n- **Biodegradability:** These materials efficiently + biodegrade in natural environments, minimizing accumulation of persistent + plastic waste.\\n- **Carbon Footprint:** Substantially lowers greenhouse gas + emissions during production compared to petroleum-based plastics.\\n- **Applications:** + Used in packaging, disposable cutlery, and agricultural mulch films.\\n- **Industrial + Adoption:** Production facilities are scaling up to meet growing global demand + for sustainable plastic alternatives.\\n- **Reference:** Reported by *Journal + of Cleaner Production*, April 2025, Vol. 320, 128927.\\n\\n---\\n\\n## 5. + Advances in Vertical Farming Technologies\\n\\nVertical farming enterprises + have incorporated state-of-the-art AI-driven systems to optimize environmental + parameters including lighting spectra, nutrient delivery, and climate control. + These enhancements have yielded a 40% increase in productivity coupled with + a 25% reduction in energy consumption.\\n\\n### Technical Innovations:\\n- + **AI Integration:** Machine learning algorithms analyze sensor data in real-time + to adjust LED lighting duration and intensity, nutrient dosing, and humidity/temperature.\\n- + **Resource Efficiency:** Optimized inputs lead to less water and fertilizer + use, aligning with principles of sustainable agriculture.\\n- **Scalability:** + Compact vertical farms can be installed within urban centers, shortening food + supply chains and reducing carbon emissions related to transportation.\\n- + **Crop Diversity:** Suitable for leafy greens, herbs, and small fruiting plants.\\n- + **Environmental Impact:** This technology promotes year-round, pesticide-free + cultivation with minimal land footprint.\\n- **Source:** Detailed study in + *Frontiers in Plant Science*, June 2025, Article 1012345.\\n\\n---\\n\\n## + 6. Harnessing Plant Microbiomes for Crop Health\\n\\nAgricultural biotechnology + companies have developed microbial probiotic cocktails customized for specific + crops to enhance nutrient absorption and bolster disease resistance. These + microbiome interventions reduce the need for chemical pesticides and fertilizers.\\n\\n### + Microbiome Insights:\\n- **Functionality:** Beneficial microbes such as nitrogen-fixing + bacteria, phosphate solubilizers, and biocontrol agents are formulated into + consortia tailored to crop species and environmental conditions.\\n- **Benefits:** + Improved root health, enhanced nutrient uptake efficiency, and suppression + of soil pathogens contribute to higher yields and sustainability.\\n- **Global + Adoption:** These products have achieved widespread use across various agricultural + systems worldwide.\\n- **Environmental Advantages:** Lower chemical inputs + help mitigate soil degradation, water contamination, and biodiversity loss.\\n- + **Reference:** Discussed in *Trends in Plant Science*, January 2025, Vol. + 30, Issue 1.\\n\\n---\\n\\n## 7. Integration of Plants in Carbon Capture Strategies\\n\\nGenetically + engineered fast-growing poplar trees with superior carbon sequestration capabilities + have been integrated into innovative hybrid carbon capture and storage (CCS) + systems. These systems aim to capture gigatons of CO2 annually, contributing + to climate change mitigation.\\n\\n### System Highlights:\\n- **Genetic Engineering:** + Enhanced photosynthetic rates and wood biomass accumulation improve carbon + uptake.\\n- **Hybrid Approach:** Combines biological sequestration by trees + with engineered mechanical/chemical capture units for maximal efficiency.\\n- + **Deployment Scale:** Large-scale plantations of modified poplars could act + as significant carbon sinks.\\n- **Potential Impact:** Could complement existing + CCS efforts and provide renewable biomass for bioenergy with carbon capture.\\n- + **Research Publication:** Reported in *Environmental Science & Technology*, + May 2025, Vol. 59, No. 9.\\n\\n---\\n\\n## 8. Use of AI and Imaging for Early + Disease Detection in Crops\\n\\nAgricultural operations have begun employing + AI-powered drones equipped with hyperspectral imaging technology to detect + nutrient deficiencies and early disease symptoms ahead of visible manifestation + in crops.\\n\\n### Technology Details:\\n- **Hyperspectral Imaging:** Captures + reflectance across a wide range of wavelengths, revealing biochemical and + physiological changes not visible to the naked eye.\\n- **AI Analysis:** Machine + learning models interpret complex spectral data to identify patterns indicative + of specific stressors.\\n- **Benefits:** Enables targeted interventions such + as localized pesticide or nutrient application, reducing overall chemical + usage and crop loss.\\n- **Operational Efficiency:** Early detection allows + timely management decisions, optimizing resource use and improving yield outcomes.\\n- + **Source:** Described in *Computers and Electronics in Agriculture*, March + 2025, Vol. 198, 107123.\\n\\n---\\n\\n## 9. Edible Plant-Based Vaccines\\n\\nProgress + in molecular farming has enabled the production of safe, stable edible vaccines + within genetically modified lettuce and tomato plants. These vaccines are + stable at room temperature and can be distributed easily, particularly benefiting + remote or resource-limited regions.\\n\\n### Advantages:\\n- **Production:** + Vaccine antigens are expressed in plant tissues, eliminating cold chain requirements.\\n- + **Delivery:** Oral immunization through consuming raw or minimally processed + plant products simplifies administration.\\n- **Safety:** Reduced risk of + contamination or adverse reactions compared to traditional injectable vaccines.\\n- + **Public Health Impact:** Offers the potential to increase immunization coverage + globally, especially where healthcare infrastructure is limited.\\n- **Scientific + Publication:** Reported in *Vaccine*, April 2025, Vol. 43, Issue 16.\\n\\n---\\n\\n## + 10. Resurrection Plants as Models for Drought Resistance\\n\\nIn-depth studies + on resurrection plants, which can survive extreme desiccation and resume normal + function upon rehydration, have elucidated specific genes and metabolic pathways + responsible for their remarkable drought tolerance.\\n\\n### Research Findings:\\n- + **Molecular Pathways:** Include protective synthesis of late embryogenesis + abundant (LEA) proteins, antioxidative systems, and osmoprotectants.\\n- **Gene + Application:** These molecular traits are being incorporated into crop breeding + and genetic engineering programs to improve drought tolerance.\\n- **Climate + Adaptation:** Enhanced drought resilience is critical as climate change intensifies + water scarcity in many agricultural regions.\\n- **Implications:** Provides + a valuable natural blueprint for developing crops that can maintain productivity + under severe water deficit.\\n- **Published Work:** Presented in *Plant Physiology*, + February 2025, Vol. 189, No. 2.\\n\\n---\\n\\n# Conclusion\\n\\nThe plant + science innovations detailed in this report represent significant strides + in addressing global challenges including climate change adaptation, food + security, environmental sustainability, and human health. From cutting-edge + gene editing to AI-driven agritech, these advances harness the full potential + of botanical systems and their interactions, paving the way for a resilient + and sustainable agricultural and environmental future.\\n\\n---\\n\\n**References + are available upon request or can be found within the respective journal citations + provided in each section.**\",\n \"refusal\": null,\n \"annotations\": + []\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n + \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 936,\n \"completion_tokens\": + 2076,\n \"total_tokens\": 3012,\n \"prompt_tokens_details\": {\n \"cached_tokens\": + 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_376a7ccef1\"\n}\n" + \"default\",\n \"system_fingerprint\": \"fp_82dbabdb2c\"\n}\n" headers: CF-RAY: - CF-RAY-XXX @@ -978,11 +1356,9 @@ interactions: Content-Type: - application/json Date: - - Thu, 15 Jan 2026 00:34:10 GMT + - Thu, 12 Feb 2026 19:33:17 GMT Server: - cloudflare - Set-Cookie: - - SET-COOKIE-XXX Strict-Transport-Security: - STS-XXX Transfer-Encoding: @@ -995,18 +1371,16 @@ interactions: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC - content-length: - - '14595' openai-organization: - OPENAI-ORG-XXX openai-processing-ms: - - '33277' + - '32659' openai-project: - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' - x-envoy-upstream-service-time: - - '33516' + set-cookie: + - SET-COOKIE-XXX x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: diff --git a/lib/crewai/tests/cassettes/utilities/test_llm_emits_event_with_lite_agent.yaml b/lib/crewai/tests/cassettes/utilities/test_llm_emits_event_with_lite_agent.yaml index 4d4405703..269248e89 100644 --- a/lib/crewai/tests/cassettes/utilities/test_llm_emits_event_with_lite_agent.yaml +++ b/lib/crewai/tests/cassettes/utilities/test_llm_emits_event_with_lite_agent.yaml @@ -1,113 +1,60 @@ interactions: - request: - body: '{"messages": [{"role": "system", "content": "You are Speaker. You are a - helpful assistant that just says hi\nYour personal goal is: Just say hi\n\nTo - give my best complete final answer to the task respond using the exact following - format:\n\nThought: I now can give a great answer\nFinal Answer: Your final - answer must be the great and the most complete as possible, it must be outcome - described.\n\nI MUST use these formats, my job depends on it!"}, {"role": "user", - "content": "say hi!"}], "model": "gpt-4o-mini", "stop": ["\nObservation:"], - "stream": true, "stream_options": {"include_usage": true}}' + body: '{"messages":[{"role":"system","content":"You are Speaker. You are a helpful + assistant that just says hi\nYour personal goal is: Just say hi"},{"role":"user","content":"\nCurrent + Task: say hi!\n\nProvide your complete response:"}],"model":"gpt-4o-mini","stream":true,"stream_options":{"include_usage":true}}' headers: + User-Agent: + - X-USER-AGENT-XXX accept: - application/json accept-encoding: - - gzip, deflate, zstd + - ACCEPT-ENCODING-XXX + authorization: + - AUTHORIZATION-XXX connection: - keep-alive content-length: - - '602' + - '306' content-type: - application/json host: - api.openai.com - user-agent: - - OpenAI/Python 1.78.0 x-stainless-arch: - - arm64 + - X-STAINLESS-ARCH-XXX x-stainless-async: - 'false' x-stainless-lang: - python x-stainless-os: - - MacOS + - X-STAINLESS-OS-XXX x-stainless-package-version: - - 1.78.0 - x-stainless-raw-response: - - 'true' + - 1.83.0 x-stainless-read-timeout: - - '600.0' + - X-STAINLESS-READ-TIMEOUT-XXX x-stainless-retry-count: - '0' x-stainless-runtime: - CPython x-stainless-runtime-version: - - 3.11.12 + - 3.13.3 method: POST uri: https://api.openai.com/v1/chat/completions response: body: - string: 'data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null} + string: 'data: {"id":"chatcmpl-D8ZItPnwwRY5ixhmIpypUuRxGxvBw","object":"chat.completion.chunk","created":1770934703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f4ae844694","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"8TE0JJ57s"} - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":"Thought"},"logprobs":null,"finish_reason":null}],"usage":null} + data: {"id":"chatcmpl-D8ZItPnwwRY5ixhmIpypUuRxGxvBw","object":"chat.completion.chunk","created":1770934703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f4ae844694","choices":[{"index":0,"delta":{"content":"Hi"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"KQ97uynzx"} - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":":"},"logprobs":null,"finish_reason":null}],"usage":null} + data: {"id":"chatcmpl-D8ZItPnwwRY5ixhmIpypUuRxGxvBw","object":"chat.completion.chunk","created":1770934703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f4ae844694","choices":[{"index":0,"delta":{"content":"!"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"pL0sWWqccW"} - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" - I"},"logprobs":null,"finish_reason":null}],"usage":null} + data: {"id":"chatcmpl-D8ZItPnwwRY5ixhmIpypUuRxGxvBw","object":"chat.completion.chunk","created":1770934703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f4ae844694","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"OY2qD"} - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" - now"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" - can"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" - give"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" - a"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" - great"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" - answer"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" \n"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":"Final"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" - Answer"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":":"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":" - Hi"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{"content":"!"},"logprobs":null,"finish_reason":null}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null} - - - data: {"id":"chatcmpl-BoGFzpBc0nuAKcVrYlEEztNwzrUG6","object":"chat.completion.chunk","created":1751318591,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_34a54ae93c","choices":[],"usage":{"prompt_tokens":99,"completion_tokens":15,"total_tokens":114,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}}} + data: {"id":"chatcmpl-D8ZItPnwwRY5ixhmIpypUuRxGxvBw","object":"chat.completion.chunk","created":1770934703,"model":"gpt-4o-mini-2024-07-18","service_tier":"default","system_fingerprint":"fp_f4ae844694","choices":[],"usage":{"prompt_tokens":45,"completion_tokens":2,"total_tokens":47,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"3Y4n9GrnQOW"} data: [DONE] @@ -116,55 +63,53 @@ interactions: ' headers: CF-RAY: - - 9580b92adce5e838-GRU + - CF-RAY-XXX Connection: - keep-alive Content-Type: - text/event-stream; charset=utf-8 Date: - - Mon, 30 Jun 2025 21:23:12 GMT + - Thu, 12 Feb 2026 22:18:23 GMT Server: - cloudflare - Set-Cookie: - - __cf_bm=nhFmL5HNobQWdbf2Sd9Z8X9ad5zXKG7Ln7MlzuiuwP8-1751318592-1.0.1.1-5qDyF6nVC5d8PDerEmHSOgyWEYdzMdgyFRXqgiJB3FSyWWnvzL4PyVp6LGx9z0P5iTX8PNbxfUOEOYX.7bFaK6p.CyxLaXK7WpnQ3zeasG8; - path=/; expires=Mon, 30-Jun-25 21:53:12 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=APKo781sOKEk.HlN5nFBT1Mkid8Lj04kw6JPleI78bU-1751318592001-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Strict-Transport-Security: + - STS-XXX Transfer-Encoding: - chunked X-Content-Type-Options: - - nosniff + - X-CONTENT-TYPE-XXX access-control-expose-headers: - - X-Request-ID + - ACCESS-CONTROL-XXX alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - - crewai-iuxna1 + - OPENAI-ORG-XXX openai-processing-ms: - - '321' + - '257' + openai-project: + - OPENAI-PROJECT-XXX openai-version: - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - x-envoy-upstream-service-time: - - '326' + set-cookie: + - SET-COOKIE-XXX + x-openai-proxy-wasm: + - v0.1 x-ratelimit-limit-requests: - - '30000' + - X-RATELIMIT-LIMIT-REQUESTS-XXX x-ratelimit-limit-tokens: - - '150000000' + - X-RATELIMIT-LIMIT-TOKENS-XXX x-ratelimit-remaining-requests: - - '29999' + - X-RATELIMIT-REMAINING-REQUESTS-XXX x-ratelimit-remaining-tokens: - - '149999896' + - X-RATELIMIT-REMAINING-TOKENS-XXX x-ratelimit-reset-requests: - - 2ms + - X-RATELIMIT-RESET-REQUESTS-XXX x-ratelimit-reset-tokens: - - 0s + - X-RATELIMIT-RESET-TOKENS-XXX x-request-id: - - req_0b0f668953604810c182b1e83e9709fe + - X-REQUEST-ID-XXX status: code: 200 message: OK diff --git a/lib/crewai/tests/llms/google/test_google.py b/lib/crewai/tests/llms/google/test_google.py index 1c3ed5ce6..ec7f15b47 100644 --- a/lib/crewai/tests/llms/google/test_google.py +++ b/lib/crewai/tests/llms/google/test_google.py @@ -956,7 +956,7 @@ def test_gemini_agent_kickoff_structured_output_without_tools(): role="Analyst", goal="Provide structured analysis on topics", backstory="You are an expert analyst who provides clear, structured insights.", - llm=LLM(model="google/gemini-2.0-flash-001"), + llm=LLM(model="google/gemini-2.5-flash"), tools=[], verbose=True, ) @@ -998,7 +998,7 @@ def test_gemini_agent_kickoff_structured_output_with_tools(): role="Calculator", goal="Perform calculations using available tools", backstory="You are a calculator assistant that uses tools to compute results.", - llm=LLM(model="google/gemini-2.0-flash-001"), + llm=LLM(model="google/gemini-2.5-flash"), tools=[add_numbers], verbose=True, ) diff --git a/lib/crewai/tests/test_agent_multimodal.py b/lib/crewai/tests/test_agent_multimodal.py index 785d09d2d..9ce80a34d 100644 --- a/lib/crewai/tests/test_agent_multimodal.py +++ b/lib/crewai/tests/test_agent_multimodal.py @@ -51,7 +51,7 @@ ANTHROPIC_MODELS = [ ] GEMINI_MODELS = [ - "gemini/gemini-2.0-flash", + "gemini/gemini-2.5-flash", ] @@ -432,4 +432,4 @@ class TestAgentMultimodalAsync: assert result assert result.raw - assert len(result.raw) > 0 \ No newline at end of file + assert len(result.raw) > 0 diff --git a/lib/crewai/tests/utilities/test_events.py b/lib/crewai/tests/utilities/test_events.py index 81ef321d6..6b7c1783c 100644 --- a/lib/crewai/tests/utilities/test_events.py +++ b/lib/crewai/tests/utilities/test_events.py @@ -1254,7 +1254,7 @@ def test_llm_emits_event_with_lite_agent(): success = condition.wait_for( lambda: len(completed_event) >= 1 and len(started_event) >= 1 - and len(stream_event) >= 15, + and len(stream_event) >= 1, timeout=10, ) assert success, "Timeout waiting for all events" @@ -1262,7 +1262,7 @@ def test_llm_emits_event_with_lite_agent(): assert len(completed_event) == 1 assert len(failed_event) == 0 assert len(started_event) == 1 - assert len(stream_event) == 15 + assert len(stream_event) >= 1 all_events = completed_event + failed_event + started_event + stream_event all_agent_roles = [event.agent_role for event in all_events] @@ -1271,8 +1271,9 @@ def test_llm_emits_event_with_lite_agent(): all_task_name = [event.task_name for event in all_events if event.task_name] # ensure all events have the agent + task props set - assert len(all_agent_roles) == 17 - assert len(all_agent_id) == 17 + expected_total = 1 + 1 + len(stream_event) # completed + started + stream + assert len(all_agent_roles) == expected_total + assert len(all_agent_id) == expected_total assert len(all_task_id) == 0 assert len(all_task_name) == 0