Skip to content

Instantly share code, notes, and snippets.

@zitterbewegung
Last active April 21, 2024 01:13
Show Gist options
  • Select an option

  • Save zitterbewegung/b4e00c11c61ae3310485d19c53e1d897 to your computer and use it in GitHub Desktop.

Select an option

Save zitterbewegung/b4e00c11c61ae3310485d19c53e1d897 to your computer and use it in GitHub Desktop.

Revisions

  1. zitterbewegung revised this gist Apr 21, 2024. No changes.
  2. zitterbewegung revised this gist Apr 21, 2024. No changes.
  3. zitterbewegung revised this gist Apr 21, 2024. 2 changed files with 0 additions and 0 deletions.
    File renamed without changes.
    File renamed without changes.
  4. zitterbewegung created this gist Apr 21, 2024.
    249 changes: 249 additions & 0 deletions openai_CVE_autohack.ipynb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,249 @@
    {
    "cells": [
    {
    "cell_type": "code",
    "execution_count": 1,
    "id": "880c83e5-599b-4763-a63b-7cd581b21ff0",
    "metadata": {},
    "outputs": [],
    "source": [
    "from openai import OpenAI\n",
    "client = OpenAI()\n",
    " \n",
    "assistant = client.beta.assistants.create(\n",
    " name=\"CVE implementor\",\n",
    " instructions=\"You are a cybersecurity analyist Write and run code to implement CVEs.\",\n",
    " tools=[{\"type\": \"code_interpreter\"}],\n",
    " model=\"gpt-4-turbo\",\n",
    ")\n",
    "\n",
    "thread = client.beta.threads.create()"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 1,
    "id": "adcc8541-e525-4c6a-bd88-9ab8c28cc748",
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "Assistant Received: {\"output\": \"Hello, World!\\n\", \"errors\": \"\", \"exit_status\": 0}\n"
    ]
    }
    ],
    "source": [
    "import subprocess\n",
    "import json\n",
    "\n",
    "def execute_bash_command(command):\n",
    " \"\"\"\n",
    " Executes a Bash command in a safe manner and returns the output, errors, and exit status.\n",
    " \n",
    " Args:\n",
    " command (str): The Bash command to execute.\n",
    " \n",
    " Returns:\n",
    " dict: A dictionary containing the output, errors, and exit status.\n",
    " \"\"\"\n",
    " try:\n",
    " # Execute the command, capture output and error\n",
    " result = subprocess.run(command, shell=True, text=True, capture_output=True, check=False)\n",
    " \n",
    " return {\n",
    " \"output\": result.stdout,\n",
    " \"errors\": result.stderr,\n",
    " \"exit_status\": result.returncode\n",
    " }\n",
    " except Exception as e:\n",
    " return {\n",
    " \"output\": \"\",\n",
    " \"errors\": str(e),\n",
    " \"exit_status\": -1\n",
    " }\n",
    "\n",
    "def assistant_interact(command):\n",
    " \"\"\"\n",
    " This function simulates an interaction where the OpenAI Assistant sends a Bash command\n",
    " and receives a response which it can then parse or use in conversation.\n",
    " \n",
    " Args:\n",
    " command (str): A Bash command received from the OpenAI Assistant.\n",
    " \n",
    " Returns:\n",
    " str: A JSON string containing the output, errors, and exit status.\n",
    " \"\"\"\n",
    " result = execute_bash_command(command)\n",
    " return json.dumps(result)\n",
    "\n",
    "# Example interaction:\n",
    "if __name__ == \"__main__\":\n",
    " # Simulating a command sent by the OpenAI Assistant\n",
    " command_request = \"echo Hello, World!\"\n",
    " response = assistant_interact(command_request)\n",
    " print(\"Assistant Received:\", response)\n"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": null,
    "id": "287dd94e-68fe-4f31-a97f-993658f13613",
    "metadata": {},
    "outputs": [],
    "source": [
    "# Step 1: Upgrade to Python SDK v1.2 with pip install --upgrade openai\n",
    "# Step 2: Install Tavily Python SDK with pip install tavily-python\n",
    "# Step 3: Build an OpenAI assistant with Python SDK documentation - https://platform.openai.com/docs/assistants/overview\n",
    "\n",
    "import os\n",
    "import json\n",
    "import time\n",
    "from openai import OpenAI\n",
    "from tavily import TavilyClient\n",
    "\n",
    "# Initialize clients with API keys\n",
    "client = OpenAI(api_key=os.environ[\"OPENAI_API_KEY\"])\n",
    "tavily_client = TavilyClient(api_key=os.environ[\"TAVILY_API_KEY\"])\n",
    "\n",
    "assistant_prompt_instruction = \"\"\"You are a finance expert. \n",
    "Your goal is to provide answers based on information from the internet. \n",
    "You must use the provided Tavily search API function to find relevant online information. \n",
    "You should never use your own knowledge to answer questions.\n",
    "Please include relevant url sources in the end of your answers.\n",
    "\"\"\"\n",
    "\n",
    "# Function to perform a Tavily search\n",
    "def tavily_search(query):\n",
    " search_result = tavily_client.get_search_context(query, search_depth=\"advanced\", max_tokens=8000)\n",
    " return search_result\n",
    "\n",
    "# Function to wait for a run to complete\n",
    "def wait_for_run_completion(thread_id, run_id):\n",
    " while True:\n",
    " time.sleep(1)\n",
    " run = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run_id)\n",
    " print(f\"Current run status: {run.status}\")\n",
    " if run.status in ['completed', 'failed', 'requires_action']:\n",
    " return run\n",
    "\n",
    "# Function to handle tool output submission\n",
    "def submit_tool_outputs(thread_id, run_id, tools_to_call):\n",
    " tool_output_array = []\n",
    " for tool in tools_to_call:\n",
    " output = None\n",
    " tool_call_id = tool.id\n",
    " function_name = tool.function.name\n",
    " function_args = tool.function.arguments\n",
    "\n",
    " if function_name == \"tavily_search\":\n",
    " output = tavily_search(query=json.loads(function_args)[\"query\"])\n",
    "\n",
    " if output:\n",
    " tool_output_array.append({\"tool_call_id\": tool_call_id, \"output\": output})\n",
    "\n",
    " return client.beta.threads.runs.submit_tool_outputs(\n",
    " thread_id=thread_id,\n",
    " run_id=run_id,\n",
    " tool_outputs=tool_output_array\n",
    " )\n",
    "\n",
    "# Function to print messages from a thread\n",
    "def print_messages_from_thread(thread_id):\n",
    " messages = client.beta.threads.messages.list(thread_id=thread_id)\n",
    " for msg in messages:\n",
    " print(f\"{msg.role}: {msg.content[0].text.value}\")\n",
    "\n",
    "# Create an assistant\n",
    "assistant = client.beta.assistants.create(\n",
    " instructions=assistant_prompt_instruction,\n",
    " model=\"gpt-4-1106-preview\",\n",
    " tools=[{\"type\": \"code_interpreter\"},{\"type\": \"execute_bash_command\"} {\n",
    " \"type\": \"function\",\n",
    " \"function\": {\n",
    " \"name\": \"tavily_search\",\n",
    " \"description\": \"Get information on recent events from the web.\",\n",
    " \"parameters\": {\n",
    " \"type\": \"object\",\n",
    " \"properties\": {\n",
    " \"query\": {\"type\": \"string\", \"description\": \"The search query to use. For example: 'Latest news on Nvidia stock performance'\"},\n",
    " },\n",
    " \"required\": [\"query\"]\n",
    " }\n",
    " }\n",
    " }]\n",
    ")\n",
    "assistant_id = assistant.id\n",
    "print(f\"Assistant ID: {assistant_id}\")\n",
    "\n",
    "# Create a thread\n",
    "thread = client.beta.threads.create()\n",
    "print(f\"Thread: {thread}\")\n",
    "\n"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": null,
    "id": "2f00410a-f859-4e10-ae89-d38f3b39ff39",
    "metadata": {},
    "outputs": [],
    "source": [
    "# Ongoing conversation loop\n",
    "while True:\n",
    " user_input = input(\"You: \")\n",
    " if user_input.lower() == 'exit':\n",
    " break\n",
    "\n",
    " # Create a message\n",
    " message = client.beta.threads.messages.create(\n",
    " thread_id=thread.id,\n",
    " role=\"user\",\n",
    " content=user_input,\n",
    " )\n",
    "\n",
    " # Create a run\n",
    " run = client.beta.threads.runs.create(\n",
    " thread_id=thread.id,\n",
    " assistant_id=assistant_id,\n",
    " )\n",
    " print(f\"Run ID: {run.id}\")\n",
    "\n",
    " # Wait for run to complete\n",
    " run = wait_for_run_completion(thread.id, run.id)\n",
    "\n",
    " if run.status == 'failed':\n",
    " print(run.error)\n",
    " continue\n",
    " elif run.status == 'requires_action':\n",
    " run = submit_tool_outputs(thread.id, run.id, run.required_action.submit_tool_outputs.tool_calls)\n",
    " run = wait_for_run_completion(thread.id, run.id)\n",
    "\n",
    " # Print messages from the thread\n",
    " print_messages_from_thread(thread.id)"
    ]
    }
    ],
    "metadata": {
    "kernelspec": {
    "display_name": "Python 3 (ipykernel)",
    "language": "python",
    "name": "python3"
    },
    "language_info": {
    "codemirror_mode": {
    "name": "ipython",
    "version": 3
    },
    "file_extension": ".py",
    "mimetype": "text/x-python",
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
    "version": "3.10.12"
    }
    },
    "nbformat": 4,
    "nbformat_minor": 5
    }
    331 changes: 331 additions & 0 deletions zero_days_llms.ipynb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,331 @@
    {
    "cells": [
    {
    "cell_type": "code",
    "execution_count": 1,
    "id": "39d00988-5c3a-48b7-830a-0f22ebab5601",
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "Note: you may need to restart the kernel to use updated packages.\n",
    "Note: you may need to restart the kernel to use updated packages.\n",
    "Note: you may need to restart the kernel to use updated packages.\n",
    "Note: you may need to restart the kernel to use updated packages.\n",
    "/bin/bash: line 1: npm: command not found\n"
    ]
    }
    ],
    "source": [
    "%pip install --upgrade --quiet langchain\n",
    "%pip install --quiet langchainhub\n",
    "%pip install --upgrade --quiet playwright > /dev/null\n",
    "%pip install --upgrade --quiet lxml\n",
    "%pip install ---upgrade --quiet pytest-playwright\n",
    "!npm init --silent playwright@latest"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 2,
    "id": "0d1c4048-17aa-4e57-99e9-0fde2bea485a",
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "Downloading Chromium 124.0.6367.29 (playwright build v1112)\u001b[2m from https://playwright.azureedge.net/builds/chromium/1112/chromium-linux.zip\u001b[22m\n",
    "\u001b[1G155.3 MiB [ ] 0% 0.0s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 140.6s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 126.5s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 87.8s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 70.9s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 86.6s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 77.7s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 71.6s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 69.8s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 64.8s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 63.3s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 59.4s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 58.6s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 58.4s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 58.5s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 58.0s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 57.7s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 59.1s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 58.7s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 58.5s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 56.8s\u001b[0K\u001b[1G155.3 MiB [ ] 0% 56.6s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 56.2s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 54.5s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 55.7s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 55.3s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 55.4s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 55.1s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 54.0s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 54.2s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 54.0s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 52.9s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 52.0s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 53.4s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 53.3s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 53.1s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 52.1s\u001b[0K\u001b[1G155.3 MiB [ ] 1% 52.6s\u001b[0K\u001b[1G155.3 MiB [ ] 2% 51.9s\u001b[0K\u001b[1G155.3 MiB [ ] 2% 51.5s\u001b[0K\u001b[1G155.3 MiB [ ] 2% 52.0s\u001b[0K\u001b[1G155.3 MiB [ ] 2% 52.1s\u001b[0K\u001b[1G155.3 MiB [ ] 2% 51.3s\u001b[0K\u001b[1G155.3 MiB [ ] 2% 51.0s\u001b[0K\u001b[1G155.3 MiB [ ] 2% 51.4s\u001b[0K\u001b[1G155.3 MiB [ ] 2% 51.2s\u001b[0K\u001b[1G155.3 MiB [ ] 2% 50.5s\u001b[0K\u001b[1G155.3 MiB [= ] 2% 50.4s\u001b[0K\u001b[1G155.3 MiB [= ] 2% 49.8s\u001b[0K\u001b[1G155.3 MiB [= ] 2% 49.3s\u001b[0K\u001b[1G155.3 MiB [= ] 2% 48.8s\u001b[0K\u001b[1G155.3 MiB [= ] 2% 48.3s\u001b[0K\u001b[1G155.3 MiB [= ] 2% 47.7s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 47.2s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 46.7s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 47.1s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 46.5s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 46.9s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 46.2s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 47.0s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 46.8s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 46.2s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 45.7s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 45.8s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 46.1s\u001b[0K\u001b[1G155.3 MiB [= ] 3% 45.5s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 45.6s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 45.5s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 45.1s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 44.8s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 44.4s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 44.7s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 44.2s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 44.4s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 44.2s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 43.6s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 43.9s\u001b[0K\u001b[1G155.3 MiB [= ] 4% 43.5s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 43.1s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 42.7s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 43.0s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 42.7s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 42.3s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 42.8s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 42.5s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 42.2s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 42.3s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 41.9s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 42.1s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 41.8s\u001b[0K\u001b[1G155.3 MiB [= ] 5% 41.7s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 41.6s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 41.4s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 41.2s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 41.3s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 41.2s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 40.9s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 40.5s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 40.8s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 40.5s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 40.2s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 40.1s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 40.0s\u001b[0K\u001b[1G155.3 MiB [= ] 6% 40.1s\u001b[0K\u001b[1G155.3 MiB [= ] 7% 39.9s\u001b[0K\u001b[1G155.3 MiB [= ] 7% 39.6s\u001b[0K\u001b[1G155.3 MiB [= ] 7% 39.4s\u001b[0K\u001b[1G155.3 MiB [= ] 7% 39.2s\u001b[0K\u001b[1G155.3 MiB [== ] 7% 39.0s\u001b[0K\u001b[1G155.3 MiB [== ] 7% 38.6s\u001b[0K\u001b[1G155.3 MiB [== ] 7% 38.5s\u001b[0K\u001b[1G155.3 MiB [== ] 7% 38.4s\u001b[0K\u001b[1G155.3 MiB [== ] 7% 38.5s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 38.2s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 38.1s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 37.8s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 37.7s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 37.6s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 37.4s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 37.3s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 37.0s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 37.1s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 39.5s\u001b[0K\u001b[1G155.3 MiB [== ] 8% 39.4s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 39.3s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 39.2s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 39.0s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 39.1s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 38.9s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 38.7s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 38.6s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 38.7s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 38.5s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 38.4s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 38.8s\u001b[0K\u001b[1G155.3 MiB [== ] 9% 38.7s\u001b[0K\u001b[1G155.3 MiB [== ] 10% 38.5s\u001b[0K\u001b[1G155.3 MiB [== ] 10% 38.2s\u001b[0K\u001b[1G155.3 MiB [== ] 10% 38.0s\u001b[0K\u001b[1G155.3 MiB [== ] 10% 37.9s\u001b[0K\u001b[1G155.3 MiB [== ] 10% 37.7s\u001b[0K\u001b[1G155.3 MiB [== ] 10% 37.5s\u001b[0K\u001b[1G155.3 MiB [== ] 10% 37.4s\u001b[0K\u001b[1G155.3 MiB [== ] 10% 37.5s\u001b[0K\u001b[1G155.3 MiB [== ] 10% 37.3s\u001b[0K\u001b[1G155.3 MiB [== ] 11% 37.0s\u001b[0K\u001b[1G155.3 MiB [== ] 11% 37.1s\u001b[0K\u001b[1G155.3 MiB [== ] 11% 36.9s\u001b[0K\u001b[1G155.3 MiB [== ] 11% 36.7s\u001b[0K\u001b[1G155.3 MiB [== ] 11% 36.5s\u001b[0K\u001b[1G155.3 MiB [== ] 11% 36.4s\u001b[0K\u001b[1G155.3 MiB [== ] 11% 36.3s\u001b[0K\u001b[1G155.3 MiB [== ] 12% 36.3s\u001b[0K\u001b[1G155.3 MiB [== ] 12% 36.1s\u001b[0K\u001b[1G155.3 MiB [== ] 12% 35.8s\u001b[0K\u001b[1G155.3 MiB [== ] 12% 35.7s\u001b[0K\u001b[1G155.3 MiB [== ] 12% 35.5s\u001b[0K\u001b[1G155.3 MiB [=== ] 12% 35.3s\u001b[0K\u001b[1G155.3 MiB [=== ] 12% 35.2s\u001b[0K\u001b[1G155.3 MiB [=== ] 12% 35.0s\u001b[0K\u001b[1G155.3 MiB [=== ] 12% 35.1s\u001b[0K\u001b[1G155.3 MiB [=== ] 12% 34.9s\u001b[0K\u001b[1G155.3 MiB [=== ] 13% 34.7s\u001b[0K\u001b[1G155.3 MiB [=== ] 13% 34.6s\u001b[0K\u001b[1G155.3 MiB [=== ] 13% 34.4s\u001b[0K\u001b[1G155.3 MiB [=== ] 13% 34.2s\u001b[0K\u001b[1G155.3 MiB [=== ] 13% 34.1s\u001b[0K\u001b[1G155.3 MiB [=== ] 13% 34.0s\u001b[0K\u001b[1G155.3 MiB [=== ] 13% 34.1s\u001b[0K\u001b[1G155.3 MiB [=== ] 14% 33.9s\u001b[0K\u001b[1G155.3 MiB [=== ] 14% 33.8s\u001b[0K\u001b[1G155.3 MiB [=== ] 14% 33.6s\u001b[0K\u001b[1G155.3 MiB [=== ] 14% 33.5s\u001b[0K\u001b[1G155.3 MiB [=== ] 14% 33.4s\u001b[0K\u001b[1G155.3 MiB [=== ] 14% 33.3s\u001b[0K\u001b[1G155.3 MiB [=== ] 14% 33.1s\u001b[0K\u001b[1G155.3 MiB [=== ] 14% 33.0s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.8s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.9s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.8s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.9s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.7s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.5s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.4s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.2s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.1s\u001b[0K\u001b[1G155.3 MiB [=== ] 15% 32.0s\u001b[0K\u001b[1G155.3 MiB [=== ] 16% 31.8s\u001b[0K\u001b[1G155.3 MiB [=== ] 16% 31.7s\u001b[0K\u001b[1G155.3 MiB [=== ] 16% 31.5s\u001b[0K\u001b[1G155.3 MiB [=== ] 16% 31.4s\u001b[0K\u001b[1G155.3 MiB [=== ] 16% 31.2s\u001b[0K\u001b[1G155.3 MiB [=== ] 16% 31.3s\u001b[0K\u001b[1G155.3 MiB [=== ] 16% 31.2s\u001b[0K\u001b[1G155.3 MiB [=== ] 16% 31.1s\u001b[0K\u001b[1G155.3 MiB [=== ] 17% 30.9s\u001b[0K\u001b[1G155.3 MiB [=== ] 17% 30.8s\u001b[0K\u001b[1G155.3 MiB [=== ] 17% 30.7s\u001b[0K\u001b[1G155.3 MiB [=== ] 17% 30.6s\u001b[0K\u001b[1G155.3 MiB [=== ] 17% 30.5s\u001b[0K\u001b[1G155.3 MiB [==== ] 17% 30.5s\u001b[0K\u001b[1G155.3 MiB [==== ] 17% 30.4s\u001b[0K\u001b[1G155.3 MiB [==== ] 17% 30.2s\u001b[0K\u001b[1G155.3 MiB [==== ] 17% 30.1s\u001b[0K\u001b[1G155.3 MiB [==== ] 18% 30.0s\u001b[0K\u001b[1G155.3 MiB [==== ] 18% 29.8s\u001b[0K\u001b[1G155.3 MiB [==== ] 18% 29.7s\u001b[0K\u001b[1G155.3 MiB [==== ] 18% 29.6s\u001b[0K\u001b[1G155.3 MiB [==== ] 18% 29.7s\u001b[0K\u001b[1G155.3 MiB [==== ] 18% 29.5s\u001b[0K\u001b[1G155.3 MiB [==== ] 18% 29.4s\u001b[0K\u001b[1G155.3 MiB [==== ] 19% 29.3s\u001b[0K\u001b[1G155.3 MiB [==== ] 19% 29.1s\u001b[0K\u001b[1G155.3 MiB [==== ] 19% 29.0s\u001b[0K\u001b[1G155.3 MiB [==== ] 19% 28.9s\u001b[0K\u001b[1G155.3 MiB [==== ] 19% 28.8s\u001b[0K\u001b[1G155.3 MiB [==== ] 19% 28.7s\u001b[0K\u001b[1G155.3 MiB [==== ] 20% 28.5s\u001b[0K\u001b[1G155.3 MiB [==== ] 20% 28.4s\u001b[0K\u001b[1G155.3 MiB [==== ] 20% 28.3s\u001b[0K\u001b[1G155.3 MiB [==== ] 20% 28.2s\u001b[0K\u001b[1G155.3 MiB [==== ] 20% 28.1s\u001b[0K\u001b[1G155.3 MiB [==== ] 20% 28.0s\u001b[0K\u001b[1G155.3 MiB [==== ] 20% 27.8s\u001b[0K\u001b[1G155.3 MiB [==== ] 21% 27.7s\u001b[0K\u001b[1G155.3 MiB [==== ] 21% 27.6s\u001b[0K\u001b[1G155.3 MiB [==== ] 21% 27.5s\u001b[0K\u001b[1G155.3 MiB [==== ] 21% 27.3s\u001b[0K\u001b[1G155.3 MiB [==== ] 21% 27.2s\u001b[0K\u001b[1G155.3 MiB [==== ] 21% 27.0s\u001b[0K\u001b[1G155.3 MiB [==== ] 22% 26.8s\u001b[0K\u001b[1G155.3 MiB [==== ] 22% 26.9s\u001b[0K\u001b[1G155.3 MiB [==== ] 22% 26.8s\u001b[0K\u001b[1G155.3 MiB [==== ] 22% 26.9s\u001b[0K\u001b[1G155.3 MiB [==== ] 22% 27.0s\u001b[0K\u001b[1G155.3 MiB [===== ] 22% 26.8s\u001b[0K\u001b[1G155.3 MiB [===== ] 22% 26.6s\u001b[0K\u001b[1G155.3 MiB [===== ] 22% 26.7s\u001b[0K\u001b[1G155.3 MiB [===== ] 23% 26.5s\u001b[0K\u001b[1G155.3 MiB [===== ] 23% 26.3s\u001b[0K\u001b[1G155.3 MiB [===== ] 23% 26.1s\u001b[0K\u001b[1G155.3 MiB [===== ] 23% 25.9s\u001b[0K\u001b[1G155.3 MiB [===== ] 23% 26.0s\u001b[0K\u001b[1G155.3 MiB [===== ] 23% 25.7s\u001b[0K\u001b[1G155.3 MiB [===== ] 23% 25.8s\u001b[0K\u001b[1G155.3 MiB [===== ] 24% 25.6s\u001b[0K\u001b[1G155.3 MiB [===== ] 24% 25.5s\u001b[0K\u001b[1G155.3 MiB [===== ] 24% 25.4s\u001b[0K\u001b[1G155.3 MiB [===== ] 24% 25.2s\u001b[0K\u001b[1G155.3 MiB [===== ] 24% 25.0s\u001b[0K\u001b[1G155.3 MiB [===== ] 25% 24.9s\u001b[0K\u001b[1G155.3 MiB [===== ] 25% 24.8s\u001b[0K\u001b[1G155.3 MiB [===== ] 25% 24.7s\u001b[0K\u001b[1G155.3 MiB [===== ] 25% 24.5s\u001b[0K\u001b[1G155.3 MiB [===== ] 25% 24.4s\u001b[0K\u001b[1G155.3 MiB [===== ] 25% 24.3s\u001b[0K\u001b[1G155.3 MiB [===== ] 26% 24.2s\u001b[0K\u001b[1G155.3 MiB [===== ] 26% 24.0s\u001b[0K\u001b[1G155.3 MiB [===== ] 26% 23.8s\u001b[0K\u001b[1G155.3 MiB [===== ] 27% 23.6s\u001b[0K\u001b[1G155.3 MiB [===== ] 27% 23.3s\u001b[0K\u001b[1G155.3 MiB [===== ] 27% 23.4s\u001b[0K\u001b[1G155.3 MiB [====== ] 27% 23.3s\u001b[0K\u001b[1G155.3 MiB [====== ] 27% 23.0s\u001b[0K\u001b[1G155.3 MiB [====== ] 28% 22.8s\u001b[0K\u001b[1G155.3 MiB [====== ] 28% 22.7s\u001b[0K\u001b[1G155.3 MiB [====== ] 28% 22.6s\u001b[0K\u001b[1G155.3 MiB [====== ] 28% 22.5s\u001b[0K\u001b[1G155.3 MiB [====== ] 28% 22.4s\u001b[0K\u001b[1G155.3 MiB [====== ] 28% 22.2s\u001b[0K\u001b[1G155.3 MiB [====== ] 29% 22.0s\u001b[0K\u001b[1G155.3 MiB [====== ] 29% 21.9s\u001b[0K\u001b[1G155.3 MiB [====== ] 29% 22.0s\u001b[0K\u001b[1G155.3 MiB [====== ] 29% 21.8s\u001b[0K\u001b[1G155.3 MiB [====== ] 29% 21.7s\u001b[0K\u001b[1G155.3 MiB [====== ] 30% 21.5s\u001b[0K\u001b[1G155.3 MiB [====== ] 30% 21.4s\u001b[0K\u001b[1G155.3 MiB [====== ] 30% 21.2s\u001b[0K\u001b[1G155.3 MiB [====== ] 30% 21.0s\u001b[0K\u001b[1G155.3 MiB [====== ] 30% 20.9s\u001b[0K\u001b[1G155.3 MiB [====== ] 31% 20.8s\u001b[0K\u001b[1G155.3 MiB [====== ] 31% 20.5s\u001b[0K\u001b[1G155.3 MiB [====== ] 31% 20.3s\u001b[0K\u001b[1G155.3 MiB [====== ] 32% 20.3s\u001b[0K\u001b[1G155.3 MiB [====== ] 32% 20.2s\u001b[0K\u001b[1G155.3 MiB [====== ] 32% 20.1s\u001b[0K\u001b[1G155.3 MiB [======= ] 32% 20.0s\u001b[0K\u001b[1G155.3 MiB [======= ] 33% 19.9s\u001b[0K\u001b[1G155.3 MiB [======= ] 33% 19.6s\u001b[0K\u001b[1G155.3 MiB [======= ] 33% 19.7s\u001b[0K\u001b[1G155.3 MiB [======= ] 33% 19.6s\u001b[0K\u001b[1G155.3 MiB [======= ] 34% 19.4s\u001b[0K\u001b[1G155.3 MiB [======= ] 34% 19.3s\u001b[0K\u001b[1G155.3 MiB [======= ] 34% 19.2s\u001b[0K\u001b[1G155.3 MiB [======= ] 34% 19.1s\u001b[0K\u001b[1G155.3 MiB [======= ] 34% 19.0s\u001b[0K\u001b[1G155.3 MiB [======= ] 35% 18.8s\u001b[0K\u001b[1G155.3 MiB [======= ] 35% 18.5s\u001b[0K\u001b[1G155.3 MiB [======= ] 35% 18.6s\u001b[0K\u001b[1G155.3 MiB [======= ] 35% 18.4s\u001b[0K\u001b[1G155.3 MiB [======= ] 35% 18.3s\u001b[0K\u001b[1G155.3 MiB [======= ] 36% 18.3s\u001b[0K\u001b[1G155.3 MiB [======= ] 36% 18.1s\u001b[0K\u001b[1G155.3 MiB [======= ] 36% 17.9s\u001b[0K\u001b[1G155.3 MiB [======= ] 36% 17.7s\u001b[0K\u001b[1G155.3 MiB [======= ] 37% 17.5s\u001b[0K\u001b[1G155.3 MiB [======== ] 37% 17.3s\u001b[0K\u001b[1G155.3 MiB [======== ] 38% 17.0s\u001b[0K\u001b[1G155.3 MiB [======== ] 38% 16.9s\u001b[0K\u001b[1G155.3 MiB [======== ] 38% 16.7s\u001b[0K\u001b[1G155.3 MiB [======== ] 38% 16.6s\u001b[0K\u001b[1G155.3 MiB [======== ] 39% 16.4s\u001b[0K\u001b[1G155.3 MiB [======== ] 39% 16.3s\u001b[0K\u001b[1G155.3 MiB [======== ] 39% 16.1s\u001b[0K\u001b[1G155.3 MiB [======== ] 40% 15.9s\u001b[0K\u001b[1G155.3 MiB [======== ] 40% 15.8s\u001b[0K\u001b[1G155.3 MiB [======== ] 40% 15.7s\u001b[0K\u001b[1G155.3 MiB [======== ] 40% 15.5s\u001b[0K\u001b[1G155.3 MiB [======== ] 41% 15.5s\u001b[0K\u001b[1G155.3 MiB [======== ] 41% 15.3s\u001b[0K\u001b[1G155.3 MiB [======== ] 41% 15.2s\u001b[0K\u001b[1G155.3 MiB [======== ] 41% 15.1s\u001b[0K\u001b[1G155.3 MiB [======== ] 42% 15.0s\u001b[0K\u001b[1G155.3 MiB [======== ] 42% 14.9s\u001b[0K\u001b[1G155.3 MiB [========= ] 42% 14.7s\u001b[0K\u001b[1G155.3 MiB [========= ] 42% 14.6s\u001b[0K\u001b[1G155.3 MiB [========= ] 43% 14.5s\u001b[0K\u001b[1G155.3 MiB [========= ] 43% 14.3s\u001b[0K\u001b[1G155.3 MiB [========= ] 43% 14.2s\u001b[0K\u001b[1G155.3 MiB [========= ] 44% 14.1s\u001b[0K\u001b[1G155.3 MiB [========= ] 44% 14.0s\u001b[0K\u001b[1G155.3 MiB [========= ] 44% 13.8s\u001b[0K\u001b[1G155.3 MiB [========= ] 44% 13.7s\u001b[0K\u001b[1G155.3 MiB [========= ] 45% 13.7s\u001b[0K\u001b[1G155.3 MiB [========= ] 45% 13.5s\u001b[0K\u001b[1G155.3 MiB [========= ] 45% 13.4s\u001b[0K\u001b[1G155.3 MiB [========= ] 45% 13.3s\u001b[0K\u001b[1G155.3 MiB [========= ] 46% 13.2s\u001b[0K\u001b[1G155.3 MiB [========= ] 46% 13.0s\u001b[0K\u001b[1G155.3 MiB [========= ] 46% 12.9s\u001b[0K\u001b[1G155.3 MiB [========= ] 47% 12.8s\u001b[0K\u001b[1G155.3 MiB [========= ] 47% 12.7s\u001b[0K\u001b[1G155.3 MiB [========== ] 47% 12.6s\u001b[0K\u001b[1G155.3 MiB [========== ] 47% 12.5s\u001b[0K\u001b[1G155.3 MiB [========== ] 48% 12.3s\u001b[0K\u001b[1G155.3 MiB [========== ] 48% 12.2s\u001b[0K\u001b[1G155.3 MiB [========== ] 49% 12.0s\u001b[0K\u001b[1G155.3 MiB [========== ] 49% 11.8s\u001b[0K\u001b[1G155.3 MiB [========== ] 49% 11.7s\u001b[0K\u001b[1G155.3 MiB [========== ] 50% 11.5s\u001b[0K\u001b[1G155.3 MiB [========== ] 50% 11.4s\u001b[0K\u001b[1G155.3 MiB [========== ] 50% 11.3s\u001b[0K\u001b[1G155.3 MiB [========== ] 51% 11.2s\u001b[0K\u001b[1G155.3 MiB [========== ] 51% 11.1s\u001b[0K\u001b[1G155.3 MiB [========== ] 51% 11.0s\u001b[0K\u001b[1G155.3 MiB [========== ] 52% 10.9s\u001b[0K\u001b[1G155.3 MiB [========== ] 52% 10.7s\u001b[0K\u001b[1G155.3 MiB [=========== ] 52% 10.7s\u001b[0K\u001b[1G155.3 MiB [=========== ] 52% 10.6s\u001b[0K\u001b[1G155.3 MiB [=========== ] 53% 10.5s\u001b[0K\u001b[1G155.3 MiB [=========== ] 53% 10.4s\u001b[0K\u001b[1G155.3 MiB [=========== ] 53% 10.3s\u001b[0K\u001b[1G155.3 MiB [=========== ] 53% 10.2s\u001b[0K\u001b[1G155.3 MiB [=========== ] 54% 10.1s\u001b[0K\u001b[1G155.3 MiB [=========== ] 54% 10.0s\u001b[0K\u001b[1G155.3 MiB [=========== ] 54% 9.9s\u001b[0K\u001b[1G155.3 MiB [=========== ] 55% 9.8s\u001b[0K\u001b[1G155.3 MiB [=========== ] 55% 9.7s\u001b[0K\u001b[1G155.3 MiB [=========== ] 55% 9.6s\u001b[0K\u001b[1G155.3 MiB [=========== ] 55% 9.5s\u001b[0K\u001b[1G155.3 MiB [=========== ] 56% 9.5s\u001b[0K\u001b[1G155.3 MiB [=========== ] 56% 9.3s\u001b[0K\u001b[1G155.3 MiB [=========== ] 56% 9.2s\u001b[0K\u001b[1G155.3 MiB [=========== ] 57% 9.1s\u001b[0K\u001b[1G155.3 MiB [============ ] 57% 9.0s\u001b[0K\u001b[1G155.3 MiB [============ ] 57% 8.9s\u001b[0K\u001b[1G155.3 MiB [============ ] 58% 8.8s\u001b[0K\u001b[1G155.3 MiB [============ ] 58% 8.7s\u001b[0K\u001b[1G155.3 MiB [============ ] 58% 8.6s\u001b[0K\u001b[1G155.3 MiB [============ ] 59% 8.5s\u001b[0K\u001b[1G155.3 MiB [============ ] 59% 8.4s\u001b[0K\u001b[1G155.3 MiB [============ ] 59% 8.3s\u001b[0K\u001b[1G155.3 MiB [============ ] 60% 8.3s\u001b[0K\u001b[1G155.3 MiB [============ ] 60% 8.1s\u001b[0K\u001b[1G155.3 MiB [============ ] 60% 8.0s\u001b[0K\u001b[1G155.3 MiB [============ ] 61% 8.0s\u001b[0K\u001b[1G155.3 MiB [============ ] 61% 7.8s\u001b[0K\u001b[1G155.3 MiB [============ ] 61% 7.7s\u001b[0K\u001b[1G155.3 MiB [============ ] 62% 7.6s\u001b[0K\u001b[1G155.3 MiB [============= ] 62% 7.5s\u001b[0K\u001b[1G155.3 MiB [============= ] 62% 7.4s\u001b[0K\u001b[1G155.3 MiB [============= ] 63% 7.4s\u001b[0K\u001b[1G155.3 MiB [============= ] 63% 7.2s\u001b[0K\u001b[1G155.3 MiB [============= ] 63% 7.1s\u001b[0K\u001b[1G155.3 MiB [============= ] 64% 7.1s\u001b[0K\u001b[1G155.3 MiB [============= ] 64% 7.0s\u001b[0K\u001b[1G155.3 MiB [============= ] 64% 6.9s\u001b[0K\u001b[1G155.3 MiB [============= ] 65% 6.8s\u001b[0K\u001b[1G155.3 MiB [============= ] 66% 6.6s\u001b[0K\u001b[1G155.3 MiB [============= ] 66% 6.4s\u001b[0K\u001b[1G155.3 MiB [============= ] 67% 6.3s\u001b[0K\u001b[1G155.3 MiB [============== ] 67% 6.2s\u001b[0K\u001b[1G155.3 MiB [============== ] 67% 6.1s\u001b[0K\u001b[1G155.3 MiB [============== ] 68% 6.1s\u001b[0K\u001b[1G155.3 MiB [============== ] 68% 6.0s\u001b[0K\u001b[1G155.3 MiB [============== ] 68% 5.9s\u001b[0K\u001b[1G155.3 MiB [============== ] 69% 5.9s\u001b[0K\u001b[1G155.3 MiB [============== ] 69% 5.8s\u001b[0K\u001b[1G155.3 MiB [============== ] 69% 5.7s\u001b[0K\u001b[1G155.3 MiB [============== ] 70% 5.6s\u001b[0K\u001b[1G155.3 MiB [============== ] 71% 5.4s\u001b[0K\u001b[1G155.3 MiB [============== ] 71% 5.3s\u001b[0K\u001b[1G155.3 MiB [============== ] 72% 5.2s\u001b[0K\u001b[1G155.3 MiB [============== ] 72% 5.1s\u001b[0K\u001b[1G155.3 MiB [=============== ] 72% 5.1s\u001b[0K\u001b[1G155.3 MiB [=============== ] 73% 4.9s\u001b[0K\u001b[1G155.3 MiB [=============== ] 73% 4.8s\u001b[0K\u001b[1G155.3 MiB [=============== ] 74% 4.7s\u001b[0K\u001b[1G155.3 MiB [=============== ] 74% 4.6s\u001b[0K\u001b[1G155.3 MiB [=============== ] 74% 4.5s\u001b[0K\u001b[1G155.3 MiB [=============== ] 75% 4.5s\u001b[0K\u001b[1G155.3 MiB [=============== ] 75% 4.4s\u001b[0K\u001b[1G155.3 MiB [=============== ] 75% 4.3s\u001b[0K\u001b[1G155.3 MiB [=============== ] 76% 4.2s\u001b[0K\u001b[1G155.3 MiB [=============== ] 76% 4.1s\u001b[0K\u001b[1G155.3 MiB [=============== ] 77% 4.1s\u001b[0K\u001b[1G155.3 MiB [================ ] 77% 4.0s\u001b[0K\u001b[1G155.3 MiB [================ ] 77% 3.9s\u001b[0K\u001b[1G155.3 MiB [================ ] 78% 3.8s\u001b[0K\u001b[1G155.3 MiB [================ ] 78% 3.7s\u001b[0K\u001b[1G155.3 MiB [================ ] 79% 3.6s\u001b[0K\u001b[1G155.3 MiB [================ ] 79% 3.5s\u001b[0K\u001b[1G155.3 MiB [================ ] 80% 3.5s\u001b[0K\u001b[1G155.3 MiB [================ ] 80% 3.4s\u001b[0K\u001b[1G155.3 MiB [================ ] 80% 3.3s\u001b[0K\u001b[1G155.3 MiB [================ ] 81% 3.2s\u001b[0K\u001b[1G155.3 MiB [================ ] 81% 3.1s\u001b[0K\u001b[1G155.3 MiB [================ ] 82% 3.0s\u001b[0K\u001b[1G155.3 MiB [================= ] 82% 2.9s\u001b[0K\u001b[1G155.3 MiB [================= ] 83% 2.9s\u001b[0K\u001b[1G155.3 MiB [================= ] 83% 2.8s\u001b[0K\u001b[1G155.3 MiB [================= ] 83% 2.7s\u001b[0K\u001b[1G155.3 MiB [================= ] 84% 2.6s\u001b[0K\u001b[1G155.3 MiB [================= ] 84% 2.5s\u001b[0K\u001b[1G155.3 MiB [================= ] 85% 2.5s\u001b[0K\u001b[1G155.3 MiB [================= ] 85% 2.4s\u001b[0K\u001b[1G155.3 MiB [================= ] 85% 2.3s\u001b[0K\u001b[1G155.3 MiB [================= ] 86% 2.3s\u001b[0K\u001b[1G155.3 MiB [================= ] 87% 2.1s\u001b[0K\u001b[1G155.3 MiB [================== ] 87% 2.0s\u001b[0K\u001b[1G155.3 MiB [================== ] 88% 1.9s\u001b[0K\u001b[1G155.3 MiB [================== ] 88% 1.8s\u001b[0K\u001b[1G155.3 MiB [================== ] 89% 1.7s\u001b[0K\u001b[1G155.3 MiB [================== ] 90% 1.6s\u001b[0K\u001b[1G155.3 MiB [================== ] 90% 1.5s\u001b[0K\u001b[1G155.3 MiB [================== ] 90% 1.4s\u001b[0K\u001b[1G155.3 MiB [================== ] 91% 1.4s\u001b[0K\u001b[1G155.3 MiB [================== ] 91% 1.3s\u001b[0K\u001b[1G155.3 MiB [=================== ] 92% 1.1s\u001b[0K\u001b[1G155.3 MiB [=================== ] 93% 1.1s\u001b[0K\u001b[1G155.3 MiB [=================== ] 93% 1.0s\u001b[0K\u001b[1G155.3 MiB [=================== ] 94% 0.9s\u001b[0K\u001b[1G155.3 MiB [=================== ] 94% 0.8s\u001b[0K\u001b[1G155.3 MiB [=================== ] 95% 0.8s\u001b[0K\u001b[1G155.3 MiB [=================== ] 95% 0.7s\u001b[0K\u001b[1G155.3 MiB [=================== ] 96% 0.6s\u001b[0K\u001b[1G155.3 MiB [=================== ] 96% 0.5s\u001b[0K\u001b[1G155.3 MiB [=================== ] 97% 0.4s\u001b[0K\u001b[1G155.3 MiB [====================] 97% 0.3s\u001b[0K\u001b[1G155.3 MiB [====================] 98% 0.3s\u001b[0K\u001b[1G155.3 MiB [====================] 98% 0.2s\u001b[0K\u001b[1G155.3 MiB [====================] 99% 0.1s\u001b[0K\u001b[1G155.3 MiB [====================] 100% 0.0s\u001b[0K\n",
    "Chromium 124.0.6367.29 (playwright build v1112) downloaded to /home/r2q2/.cache/ms-playwright/chromium-1112\n",
    "Downloading FFMPEG playwright build v1009\u001b[2m from https://playwright.azureedge.net/builds/ffmpeg/1009/ffmpeg-linux.zip\u001b[22m\n",
    "\u001b[1G2.6 MiB [ ] 0% 0.0s\u001b[0K\u001b[1G2.6 MiB [ ] 1% 1.5s\u001b[0K\u001b[1G2.6 MiB [= ] 3% 1.4s\u001b[0K\u001b[1G2.6 MiB [= ] 6% 1.1s\u001b[0K\u001b[1G2.6 MiB [== ] 8% 1.1s\u001b[0K\u001b[1G2.6 MiB [=== ] 13% 0.8s\u001b[0K\u001b[1G2.6 MiB [=== ] 14% 0.8s\u001b[0K\u001b[1G2.6 MiB [==== ] 20% 0.7s\u001b[0K\u001b[1G2.6 MiB [===== ] 27% 0.6s\u001b[0K\u001b[1G2.6 MiB [====== ] 32% 0.5s\u001b[0K\u001b[1G2.6 MiB [======= ] 34% 0.5s\u001b[0K\u001b[1G2.6 MiB [======== ] 42% 0.4s\u001b[0K\u001b[1G2.6 MiB [========== ] 48% 0.4s\u001b[0K\u001b[1G2.6 MiB [=========== ] 56% 0.3s\u001b[0K\u001b[1G2.6 MiB [============= ] 64% 0.2s\u001b[0K\u001b[1G2.6 MiB [=============== ] 73% 0.2s\u001b[0K\u001b[1G2.6 MiB [================ ] 82% 0.1s\u001b[0K\u001b[1G2.6 MiB [================== ] 90% 0.1s\u001b[0K\u001b[1G2.6 MiB [=================== ] 94% 0.0s\u001b[0K\u001b[1G2.6 MiB [====================] 100% 0.0s\u001b[0K\n",
    "FFMPEG playwright build v1009 downloaded to /home/r2q2/.cache/ms-playwright/ffmpeg-1009\n",
    "Downloading Firefox 124.0 (playwright build v1447)\u001b[2m from https://playwright.azureedge.net/builds/firefox/1447/firefox-ubuntu-22.04.zip\u001b[22m\n",
    "\u001b[1G85.4 MiB [ ] 0% 0.0s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 91.6s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 112.9s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 87.8s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 65.6s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 64.5s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 56.6s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 51.2s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 50.5s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 47.3s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 41.5s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 39.9s\u001b[0K\u001b[1G85.4 MiB [ ] 0% 41.3s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 38.7s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 39.6s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 38.1s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 35.8s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 34.3s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 33.7s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 32.1s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 32.0s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 30.8s\u001b[0K\u001b[1G85.4 MiB [ ] 1% 30.4s\u001b[0K\u001b[1G85.4 MiB [ ] 2% 29.4s\u001b[0K\u001b[1G85.4 MiB [ ] 2% 27.9s\u001b[0K\u001b[1G85.4 MiB [ ] 2% 28.3s\u001b[0K\u001b[1G85.4 MiB [= ] 2% 26.9s\u001b[0K\u001b[1G85.4 MiB [= ] 2% 25.8s\u001b[0K\u001b[1G85.4 MiB [= ] 2% 24.5s\u001b[0K\u001b[1G85.4 MiB [= ] 3% 24.6s\u001b[0K\u001b[1G85.4 MiB [= ] 3% 24.1s\u001b[0K\u001b[1G85.4 MiB [= ] 3% 23.7s\u001b[0K\u001b[1G85.4 MiB [= ] 3% 23.3s\u001b[0K\u001b[1G85.4 MiB [= ] 3% 22.3s\u001b[0K\u001b[1G85.4 MiB [= ] 3% 22.2s\u001b[0K\u001b[1G85.4 MiB [= ] 4% 21.3s\u001b[0K\u001b[1G85.4 MiB [= ] 4% 21.5s\u001b[0K\u001b[1G85.4 MiB [= ] 4% 21.3s\u001b[0K\u001b[1G85.4 MiB [= ] 4% 20.4s\u001b[0K\u001b[1G85.4 MiB [= ] 5% 19.6s\u001b[0K\u001b[1G85.4 MiB [= ] 5% 19.3s\u001b[0K\u001b[1G85.4 MiB [= ] 5% 18.7s\u001b[0K\u001b[1G85.4 MiB [= ] 5% 18.0s\u001b[0K\u001b[1G85.4 MiB [= ] 5% 17.8s\u001b[0K\u001b[1G85.4 MiB [= ] 6% 17.4s\u001b[0K\u001b[1G85.4 MiB [= ] 6% 17.3s\u001b[0K\u001b[1G85.4 MiB [= ] 6% 16.8s\u001b[0K\u001b[1G85.4 MiB [= ] 6% 16.2s\u001b[0K\u001b[1G85.4 MiB [= ] 7% 16.1s\u001b[0K\u001b[1G85.4 MiB [= ] 7% 15.4s\u001b[0K\u001b[1G85.4 MiB [== ] 7% 15.5s\u001b[0K\u001b[1G85.4 MiB [== ] 7% 15.2s\u001b[0K\u001b[1G85.4 MiB [== ] 8% 14.9s\u001b[0K\u001b[1G85.4 MiB [== ] 8% 14.4s\u001b[0K\u001b[1G85.4 MiB [== ] 9% 13.7s\u001b[0K\u001b[1G85.4 MiB [== ] 9% 13.8s\u001b[0K\u001b[1G85.4 MiB [== ] 9% 13.3s\u001b[0K\u001b[1G85.4 MiB [== ] 9% 13.2s\u001b[0K\u001b[1G85.4 MiB [== ] 10% 12.8s\u001b[0K\u001b[1G85.4 MiB [== ] 10% 12.6s\u001b[0K\u001b[1G85.4 MiB [== ] 10% 12.4s\u001b[0K\u001b[1G85.4 MiB [== ] 10% 12.1s\u001b[0K\u001b[1G85.4 MiB [== ] 11% 11.9s\u001b[0K\u001b[1G85.4 MiB [== ] 11% 11.7s\u001b[0K\u001b[1G85.4 MiB [== ] 11% 11.4s\u001b[0K\u001b[1G85.4 MiB [== ] 12% 11.2s\u001b[0K\u001b[1G85.4 MiB [=== ] 12% 10.9s\u001b[0K\u001b[1G85.4 MiB [=== ] 12% 10.8s\u001b[0K\u001b[1G85.4 MiB [=== ] 13% 10.4s\u001b[0K\u001b[1G85.4 MiB [=== ] 14% 10.1s\u001b[0K\u001b[1G85.4 MiB [=== ] 14% 10.0s\u001b[0K\u001b[1G85.4 MiB [=== ] 14% 9.8s\u001b[0K\u001b[1G85.4 MiB [=== ] 15% 9.6s\u001b[0K\u001b[1G85.4 MiB [=== ] 15% 9.3s\u001b[0K\u001b[1G85.4 MiB [=== ] 15% 9.2s\u001b[0K\u001b[1G85.4 MiB [=== ] 16% 9.3s\u001b[0K\u001b[1G85.4 MiB [=== ] 16% 8.9s\u001b[0K\u001b[1G85.4 MiB [=== ] 16% 8.8s\u001b[0K\u001b[1G85.4 MiB [=== ] 17% 8.8s\u001b[0K\u001b[1G85.4 MiB [==== ] 17% 8.6s\u001b[0K\u001b[1G85.4 MiB [==== ] 17% 8.8s\u001b[0K\u001b[1G85.4 MiB [==== ] 18% 8.8s\u001b[0K\u001b[1G85.4 MiB [==== ] 18% 9.1s\u001b[0K\u001b[1G85.4 MiB [==== ] 19% 8.6s\u001b[0K\u001b[1G85.4 MiB [==== ] 19% 8.7s\u001b[0K\u001b[1G85.4 MiB [==== ] 19% 8.9s\u001b[0K\u001b[1G85.4 MiB [==== ] 19% 9.7s\u001b[0K\u001b[1G85.4 MiB [==== ] 20% 9.7s\u001b[0K\u001b[1G85.4 MiB [==== ] 21% 9.3s\u001b[0K\u001b[1G85.4 MiB [==== ] 21% 9.6s\u001b[0K\u001b[1G85.4 MiB [==== ] 22% 9.6s\u001b[0K\u001b[1G85.4 MiB [===== ] 22% 9.6s\u001b[0K\u001b[1G85.4 MiB [===== ] 23% 9.6s\u001b[0K\u001b[1G85.4 MiB [===== ] 24% 9.6s\u001b[0K\u001b[1G85.4 MiB [===== ] 24% 10.0s\u001b[0K\u001b[1G85.4 MiB [===== ] 25% 9.6s\u001b[0K\u001b[1G85.4 MiB [===== ] 26% 9.6s\u001b[0K\u001b[1G85.4 MiB [===== ] 26% 9.7s\u001b[0K\u001b[1G85.4 MiB [===== ] 26% 10.1s\u001b[0K\u001b[1G85.4 MiB [===== ] 27% 9.9s\u001b[0K\u001b[1G85.4 MiB [===== ] 27% 10.0s\u001b[0K\u001b[1G85.4 MiB [===== ] 27% 10.1s\u001b[0K\u001b[1G85.4 MiB [====== ] 27% 10.1s\u001b[0K\u001b[1G85.4 MiB [====== ] 27% 10.2s\u001b[0K\u001b[1G85.4 MiB [====== ] 27% 10.7s\u001b[0K\u001b[1G85.4 MiB [====== ] 28% 10.5s\u001b[0K\u001b[1G85.4 MiB [====== ] 28% 10.6s\u001b[0K\u001b[1G85.4 MiB [====== ] 28% 10.7s\u001b[0K\u001b[1G85.4 MiB [====== ] 29% 10.6s\u001b[0K\u001b[1G85.4 MiB [====== ] 29% 10.5s\u001b[0K\u001b[1G85.4 MiB [====== ] 29% 10.6s\u001b[0K\u001b[1G85.4 MiB [====== ] 30% 10.6s\u001b[0K\u001b[1G85.4 MiB [====== ] 30% 10.7s\u001b[0K\u001b[1G85.4 MiB [====== ] 30% 10.6s\u001b[0K\u001b[1G85.4 MiB [====== ] 31% 10.5s\u001b[0K\u001b[1G85.4 MiB [====== ] 31% 10.4s\u001b[0K\u001b[1G85.4 MiB [====== ] 31% 10.3s\u001b[0K\u001b[1G85.4 MiB [====== ] 32% 10.3s\u001b[0K\u001b[1G85.4 MiB [======= ] 32% 10.2s\u001b[0K\u001b[1G85.4 MiB [======= ] 33% 10.1s\u001b[0K\u001b[1G85.4 MiB [======= ] 33% 10.0s\u001b[0K\u001b[1G85.4 MiB [======= ] 33% 9.9s\u001b[0K\u001b[1G85.4 MiB [======= ] 34% 9.9s\u001b[0K\u001b[1G85.4 MiB [======= ] 34% 9.8s\u001b[0K\u001b[1G85.4 MiB [======= ] 34% 9.7s\u001b[0K\u001b[1G85.4 MiB [======= ] 35% 9.7s\u001b[0K\u001b[1G85.4 MiB [======= ] 35% 9.6s\u001b[0K\u001b[1G85.4 MiB [======= ] 35% 9.5s\u001b[0K\u001b[1G85.4 MiB [======= ] 36% 9.5s\u001b[0K\u001b[1G85.4 MiB [======= ] 36% 9.4s\u001b[0K\u001b[1G85.4 MiB [======= ] 36% 9.5s\u001b[0K\u001b[1G85.4 MiB [======= ] 36% 9.4s\u001b[0K\u001b[1G85.4 MiB [======= ] 36% 9.5s\u001b[0K\u001b[1G85.4 MiB [======= ] 37% 9.5s\u001b[0K\u001b[1G85.4 MiB [======= ] 37% 9.4s\u001b[0K\u001b[1G85.4 MiB [======== ] 37% 9.4s\u001b[0K\u001b[1G85.4 MiB [======== ] 38% 9.3s\u001b[0K\u001b[1G85.4 MiB [======== ] 38% 9.2s\u001b[0K\u001b[1G85.4 MiB [======== ] 38% 9.1s\u001b[0K\u001b[1G85.4 MiB [======== ] 39% 9.1s\u001b[0K\u001b[1G85.4 MiB [======== ] 39% 9.0s\u001b[0K\u001b[1G85.4 MiB [======== ] 40% 8.9s\u001b[0K\u001b[1G85.4 MiB [======== ] 40% 8.8s\u001b[0K\u001b[1G85.4 MiB [======== ] 41% 8.7s\u001b[0K\u001b[1G85.4 MiB [======== ] 41% 8.6s\u001b[0K\u001b[1G85.4 MiB [======== ] 41% 8.5s\u001b[0K\u001b[1G85.4 MiB [======== ] 42% 8.5s\u001b[0K\u001b[1G85.4 MiB [========= ] 42% 8.4s\u001b[0K\u001b[1G85.4 MiB [========= ] 42% 8.3s\u001b[0K\u001b[1G85.4 MiB [========= ] 43% 8.3s\u001b[0K\u001b[1G85.4 MiB [========= ] 43% 8.2s\u001b[0K\u001b[1G85.4 MiB [========= ] 44% 8.1s\u001b[0K\u001b[1G85.4 MiB [========= ] 44% 8.0s\u001b[0K\u001b[1G85.4 MiB [========= ] 45% 7.9s\u001b[0K\u001b[1G85.4 MiB [========= ] 45% 7.8s\u001b[0K\u001b[1G85.4 MiB [========= ] 46% 7.7s\u001b[0K\u001b[1G85.4 MiB [========= ] 46% 7.6s\u001b[0K\u001b[1G85.4 MiB [========= ] 47% 7.5s\u001b[0K\u001b[1G85.4 MiB [========== ] 47% 7.4s\u001b[0K\u001b[1G85.4 MiB [========== ] 48% 7.3s\u001b[0K\u001b[1G85.4 MiB [========== ] 48% 7.2s\u001b[0K\u001b[1G85.4 MiB [========== ] 49% 7.1s\u001b[0K\u001b[1G85.4 MiB [========== ] 50% 7.0s\u001b[0K\u001b[1G85.4 MiB [========== ] 50% 6.9s\u001b[0K\u001b[1G85.4 MiB [========== ] 51% 6.9s\u001b[0K\u001b[1G85.4 MiB [========== ] 51% 6.8s\u001b[0K\u001b[1G85.4 MiB [========== ] 51% 6.7s\u001b[0K\u001b[1G85.4 MiB [========== ] 52% 6.6s\u001b[0K\u001b[1G85.4 MiB [=========== ] 52% 6.6s\u001b[0K\u001b[1G85.4 MiB [=========== ] 53% 6.5s\u001b[0K\u001b[1G85.4 MiB [=========== ] 53% 6.4s\u001b[0K\u001b[1G85.4 MiB [=========== ] 54% 6.3s\u001b[0K\u001b[1G85.4 MiB [=========== ] 54% 6.2s\u001b[0K\u001b[1G85.4 MiB [=========== ] 55% 6.2s\u001b[0K\u001b[1G85.4 MiB [=========== ] 55% 6.1s\u001b[0K\u001b[1G85.4 MiB [=========== ] 55% 6.0s\u001b[0K\u001b[1G85.4 MiB [=========== ] 56% 6.0s\u001b[0K\u001b[1G85.4 MiB [=========== ] 56% 5.9s\u001b[0K\u001b[1G85.4 MiB [=========== ] 57% 5.8s\u001b[0K\u001b[1G85.4 MiB [=========== ] 57% 5.9s\u001b[0K\u001b[1G85.4 MiB [=========== ] 57% 5.8s\u001b[0K\u001b[1G85.4 MiB [============ ] 57% 5.7s\u001b[0K\u001b[1G85.4 MiB [============ ] 57% 5.8s\u001b[0K\u001b[1G85.4 MiB [============ ] 58% 5.8s\u001b[0K\u001b[1G85.4 MiB [============ ] 58% 5.7s\u001b[0K\u001b[1G85.4 MiB [============ ] 58% 5.6s\u001b[0K\u001b[1G85.4 MiB [============ ] 59% 5.6s\u001b[0K\u001b[1G85.4 MiB [============ ] 59% 5.5s\u001b[0K\u001b[1G85.4 MiB [============ ] 60% 5.4s\u001b[0K\u001b[1G85.4 MiB [============ ] 61% 5.3s\u001b[0K\u001b[1G85.4 MiB [============ ] 61% 5.4s\u001b[0K\u001b[1G85.4 MiB [============ ] 61% 5.3s\u001b[0K\u001b[1G85.4 MiB [============ ] 61% 5.2s\u001b[0K\u001b[1G85.4 MiB [============ ] 62% 5.2s\u001b[0K\u001b[1G85.4 MiB [============ ] 62% 5.1s\u001b[0K\u001b[1G85.4 MiB [============= ] 62% 5.1s\u001b[0K\u001b[1G85.4 MiB [============= ] 62% 5.0s\u001b[0K\u001b[1G85.4 MiB [============= ] 63% 5.0s\u001b[0K\u001b[1G85.4 MiB [============= ] 63% 4.9s\u001b[0K\u001b[1G85.4 MiB [============= ] 64% 4.9s\u001b[0K\u001b[1G85.4 MiB [============= ] 64% 4.8s\u001b[0K\u001b[1G85.4 MiB [============= ] 65% 4.7s\u001b[0K\u001b[1G85.4 MiB [============= ] 65% 4.6s\u001b[0K\u001b[1G85.4 MiB [============= ] 66% 4.6s\u001b[0K\u001b[1G85.4 MiB [============= ] 66% 4.5s\u001b[0K\u001b[1G85.4 MiB [============= ] 67% 4.4s\u001b[0K\u001b[1G85.4 MiB [============== ] 67% 4.3s\u001b[0K\u001b[1G85.4 MiB [============== ] 68% 4.3s\u001b[0K\u001b[1G85.4 MiB [============== ] 68% 4.2s\u001b[0K\u001b[1G85.4 MiB [============== ] 69% 4.1s\u001b[0K\u001b[1G85.4 MiB [============== ] 69% 4.0s\u001b[0K\u001b[1G85.4 MiB [============== ] 70% 4.0s\u001b[0K\u001b[1G85.4 MiB [============== ] 70% 3.9s\u001b[0K\u001b[1G85.4 MiB [============== ] 71% 3.8s\u001b[0K\u001b[1G85.4 MiB [============== ] 71% 3.7s\u001b[0K\u001b[1G85.4 MiB [============== ] 72% 3.7s\u001b[0K\u001b[1G85.4 MiB [=============== ] 72% 3.6s\u001b[0K\u001b[1G85.4 MiB [=============== ] 73% 3.6s\u001b[0K\u001b[1G85.4 MiB [=============== ] 73% 3.5s\u001b[0K\u001b[1G85.4 MiB [=============== ] 74% 3.4s\u001b[0K\u001b[1G85.4 MiB [=============== ] 74% 3.3s\u001b[0K\u001b[1G85.4 MiB [=============== ] 75% 3.3s\u001b[0K\u001b[1G85.4 MiB [=============== ] 75% 3.2s\u001b[0K\u001b[1G85.4 MiB [=============== ] 76% 3.1s\u001b[0K\u001b[1G85.4 MiB [=============== ] 76% 3.0s\u001b[0K\u001b[1G85.4 MiB [=============== ] 77% 3.0s\u001b[0K\u001b[1G85.4 MiB [================ ] 77% 2.9s\u001b[0K\u001b[1G85.4 MiB [================ ] 78% 2.9s\u001b[0K\u001b[1G85.4 MiB [================ ] 78% 2.8s\u001b[0K\u001b[1G85.4 MiB [================ ] 79% 2.7s\u001b[0K\u001b[1G85.4 MiB [================ ] 80% 2.6s\u001b[0K\u001b[1G85.4 MiB [================ ] 80% 2.5s\u001b[0K\u001b[1G85.4 MiB [================ ] 81% 2.5s\u001b[0K\u001b[1G85.4 MiB [================ ] 81% 2.4s\u001b[0K\u001b[1G85.4 MiB [================ ] 82% 2.3s\u001b[0K\u001b[1G85.4 MiB [================= ] 82% 2.3s\u001b[0K\u001b[1G85.4 MiB [================= ] 83% 2.2s\u001b[0K\u001b[1G85.4 MiB [================= ] 83% 2.1s\u001b[0K\u001b[1G85.4 MiB [================= ] 84% 2.1s\u001b[0K\u001b[1G85.4 MiB [================= ] 84% 2.0s\u001b[0K\u001b[1G85.4 MiB [================= ] 85% 2.0s\u001b[0K\u001b[1G85.4 MiB [================= ] 85% 1.9s\u001b[0K\u001b[1G85.4 MiB [================= ] 85% 1.8s\u001b[0K\u001b[1G85.4 MiB [================= ] 86% 1.8s\u001b[0K\u001b[1G85.4 MiB [================= ] 86% 1.7s\u001b[0K\u001b[1G85.4 MiB [================= ] 87% 1.7s\u001b[0K\u001b[1G85.4 MiB [================== ] 87% 1.6s\u001b[0K\u001b[1G85.4 MiB [================== ] 88% 1.6s\u001b[0K\u001b[1G85.4 MiB [================== ] 88% 1.5s\u001b[0K\u001b[1G85.4 MiB [================== ] 88% 1.4s\u001b[0K\u001b[1G85.4 MiB [================== ] 89% 1.4s\u001b[0K\u001b[1G85.4 MiB [================== ] 89% 1.3s\u001b[0K\u001b[1G85.4 MiB [================== ] 90% 1.3s\u001b[0K\u001b[1G85.4 MiB [================== ] 90% 1.2s\u001b[0K\u001b[1G85.4 MiB [================== ] 91% 1.2s\u001b[0K\u001b[1G85.4 MiB [================== ] 91% 1.1s\u001b[0K\u001b[1G85.4 MiB [================== ] 92% 1.0s\u001b[0K\u001b[1G85.4 MiB [=================== ] 92% 0.9s\u001b[0K\u001b[1G85.4 MiB [=================== ] 93% 0.9s\u001b[0K\u001b[1G85.4 MiB [=================== ] 93% 0.8s\u001b[0K\u001b[1G85.4 MiB [=================== ] 94% 0.8s\u001b[0K\u001b[1G85.4 MiB [=================== ] 94% 0.7s\u001b[0K\u001b[1G85.4 MiB [=================== ] 95% 0.6s\u001b[0K\u001b[1G85.4 MiB [=================== ] 95% 0.5s\u001b[0K\u001b[1G85.4 MiB [=================== ] 96% 0.5s\u001b[0K\u001b[1G85.4 MiB [=================== ] 96% 0.4s\u001b[0K\u001b[1G85.4 MiB [=================== ] 97% 0.4s\u001b[0K\u001b[1G85.4 MiB [=================== ] 97% 0.3s\u001b[0K\u001b[1G85.4 MiB [====================] 97% 0.3s\u001b[0K\u001b[1G85.4 MiB [====================] 98% 0.2s\u001b[0K\u001b[1G85.4 MiB [====================] 98% 0.1s\u001b[0K\u001b[1G85.4 MiB [====================] 99% 0.1s\u001b[0K\u001b[1G85.4 MiB [====================] 99% 0.0s\u001b[0K\u001b[1G85.4 MiB [====================] 100% 0.0s\u001b[0K\n",
    "Firefox 124.0 (playwright build v1447) downloaded to /home/r2q2/.cache/ms-playwright/firefox-1447\n",
    "Downloading Webkit 17.4 (playwright build v1992)\u001b[2m from https://playwright.azureedge.net/builds/webkit/1992/webkit-ubuntu-22.04.zip\u001b[22m\n",
    "\u001b[1G86.5 MiB [ ] 0% 0.0s\u001b[0K\u001b[1G86.5 MiB [ ] 0% 31.7s\u001b[0K\u001b[1G86.5 MiB [ ] 0% 62.4s\u001b[0K\u001b[1G86.5 MiB [ ] 0% 39.9s\u001b[0K\u001b[1G86.5 MiB [ ] 0% 53.9s\u001b[0K\u001b[1G86.5 MiB [ ] 0% 44.9s\u001b[0K\u001b[1G86.5 MiB [ ] 0% 40.2s\u001b[0K\u001b[1G86.5 MiB [ ] 0% 37.1s\u001b[0K\u001b[1G86.5 MiB [ ] 0% 34.8s\u001b[0K\u001b[1G86.5 MiB [ ] 0% 32.5s\u001b[0K\u001b[1G86.5 MiB [ ] 1% 30.3s\u001b[0K\u001b[1G86.5 MiB [ ] 1% 30.4s\u001b[0K\u001b[1G86.5 MiB [ ] 1% 29.2s\u001b[0K\u001b[1G86.5 MiB [ ] 1% 27.9s\u001b[0K\u001b[1G86.5 MiB [ ] 1% 28.2s\u001b[0K\u001b[1G86.5 MiB [ ] 1% 28.0s\u001b[0K\u001b[1G86.5 MiB [ ] 1% 26.8s\u001b[0K\u001b[1G86.5 MiB [ ] 1% 26.2s\u001b[0K\u001b[1G86.5 MiB [ ] 2% 25.1s\u001b[0K\u001b[1G86.5 MiB [ ] 2% 24.0s\u001b[0K\u001b[1G86.5 MiB [= ] 2% 23.7s\u001b[0K\u001b[1G86.5 MiB [= ] 2% 22.3s\u001b[0K\u001b[1G86.5 MiB [= ] 2% 22.8s\u001b[0K\u001b[1G86.5 MiB [= ] 3% 21.5s\u001b[0K\u001b[1G86.5 MiB [= ] 3% 21.8s\u001b[0K\u001b[1G86.5 MiB [= ] 3% 20.6s\u001b[0K\u001b[1G86.5 MiB [= ] 3% 21.1s\u001b[0K\u001b[1G86.5 MiB [= ] 3% 20.3s\u001b[0K\u001b[1G86.5 MiB [= ] 4% 19.9s\u001b[0K\u001b[1G86.5 MiB [= ] 4% 19.1s\u001b[0K\u001b[1G86.5 MiB [= ] 4% 18.5s\u001b[0K\u001b[1G86.5 MiB [= ] 4% 18.4s\u001b[0K\u001b[1G86.5 MiB [= ] 4% 18.3s\u001b[0K\u001b[1G86.5 MiB [= ] 5% 17.8s\u001b[0K\u001b[1G86.5 MiB [= ] 5% 17.3s\u001b[0K\u001b[1G86.5 MiB [= ] 5% 17.1s\u001b[0K\u001b[1G86.5 MiB [= ] 5% 16.6s\u001b[0K\u001b[1G86.5 MiB [= ] 6% 16.2s\u001b[0K\u001b[1G86.5 MiB [= ] 6% 15.9s\u001b[0K\u001b[1G86.5 MiB [= ] 6% 16.0s\u001b[0K\u001b[1G86.5 MiB [= ] 6% 15.5s\u001b[0K\u001b[1G86.5 MiB [= ] 6% 15.3s\u001b[0K\u001b[1G86.5 MiB [= ] 7% 14.8s\u001b[0K\u001b[1G86.5 MiB [== ] 7% 14.3s\u001b[0K\u001b[1G86.5 MiB [== ] 8% 13.6s\u001b[0K\u001b[1G86.5 MiB [== ] 8% 13.0s\u001b[0K\u001b[1G86.5 MiB [== ] 8% 13.2s\u001b[0K\u001b[1G86.5 MiB [== ] 9% 12.7s\u001b[0K\u001b[1G86.5 MiB [== ] 9% 12.3s\u001b[0K\u001b[1G86.5 MiB [== ] 10% 11.8s\u001b[0K\u001b[1G86.5 MiB [== ] 11% 11.3s\u001b[0K\u001b[1G86.5 MiB [== ] 11% 10.9s\u001b[0K\u001b[1G86.5 MiB [== ] 11% 10.8s\u001b[0K\u001b[1G86.5 MiB [== ] 12% 10.4s\u001b[0K\u001b[1G86.5 MiB [=== ] 12% 10.2s\u001b[0K\u001b[1G86.5 MiB [=== ] 13% 10.0s\u001b[0K\u001b[1G86.5 MiB [=== ] 13% 9.8s\u001b[0K\u001b[1G86.5 MiB [=== ] 13% 9.7s\u001b[0K\u001b[1G86.5 MiB [=== ] 14% 9.3s\u001b[0K\u001b[1G86.5 MiB [=== ] 14% 9.2s\u001b[0K\u001b[1G86.5 MiB [=== ] 15% 8.9s\u001b[0K\u001b[1G86.5 MiB [=== ] 15% 8.6s\u001b[0K\u001b[1G86.5 MiB [=== ] 16% 8.5s\u001b[0K\u001b[1G86.5 MiB [=== ] 16% 8.4s\u001b[0K\u001b[1G86.5 MiB [=== ] 17% 8.1s\u001b[0K\u001b[1G86.5 MiB [==== ] 17% 8.0s\u001b[0K\u001b[1G86.5 MiB [==== ] 18% 7.9s\u001b[0K\u001b[1G86.5 MiB [==== ] 18% 7.8s\u001b[0K\u001b[1G86.5 MiB [==== ] 18% 7.7s\u001b[0K\u001b[1G86.5 MiB [==== ] 19% 7.5s\u001b[0K\u001b[1G86.5 MiB [==== ] 20% 7.3s\u001b[0K\u001b[1G86.5 MiB [==== ] 20% 7.2s\u001b[0K\u001b[1G86.5 MiB [==== ] 21% 7.0s\u001b[0K\u001b[1G86.5 MiB [==== ] 21% 6.8s\u001b[0K\u001b[1G86.5 MiB [===== ] 22% 6.6s\u001b[0K\u001b[1G86.5 MiB [===== ] 22% 6.5s\u001b[0K\u001b[1G86.5 MiB [===== ] 23% 6.3s\u001b[0K\u001b[1G86.5 MiB [===== ] 24% 6.2s\u001b[0K\u001b[1G86.5 MiB [===== ] 25% 6.0s\u001b[0K\u001b[1G86.5 MiB [===== ] 25% 5.9s\u001b[0K\u001b[1G86.5 MiB [===== ] 26% 5.7s\u001b[0K\u001b[1G86.5 MiB [===== ] 27% 5.6s\u001b[0K\u001b[1G86.5 MiB [====== ] 27% 5.5s\u001b[0K\u001b[1G86.5 MiB [====== ] 28% 5.3s\u001b[0K\u001b[1G86.5 MiB [====== ] 29% 5.2s\u001b[0K\u001b[1G86.5 MiB [====== ] 30% 5.0s\u001b[0K\u001b[1G86.5 MiB [====== ] 30% 4.9s\u001b[0K\u001b[1G86.5 MiB [====== ] 31% 4.9s\u001b[0K\u001b[1G86.5 MiB [====== ] 31% 4.8s\u001b[0K\u001b[1G86.5 MiB [======= ] 33% 4.5s\u001b[0K\u001b[1G86.5 MiB [======= ] 34% 4.4s\u001b[0K\u001b[1G86.5 MiB [======= ] 35% 4.3s\u001b[0K\u001b[1G86.5 MiB [======= ] 35% 4.2s\u001b[0K\u001b[1G86.5 MiB [======= ] 36% 4.1s\u001b[0K\u001b[1G86.5 MiB [======= ] 37% 4.0s\u001b[0K\u001b[1G86.5 MiB [======== ] 37% 3.9s\u001b[0K\u001b[1G86.5 MiB [======== ] 38% 3.8s\u001b[0K\u001b[1G86.5 MiB [======== ] 39% 3.7s\u001b[0K\u001b[1G86.5 MiB [======== ] 40% 3.7s\u001b[0K\u001b[1G86.5 MiB [======== ] 40% 3.6s\u001b[0K\u001b[1G86.5 MiB [======== ] 41% 3.5s\u001b[0K\u001b[1G86.5 MiB [======== ] 42% 3.4s\u001b[0K\u001b[1G86.5 MiB [========= ] 42% 3.4s\u001b[0K\u001b[1G86.5 MiB [========= ] 43% 3.3s\u001b[0K\u001b[1G86.5 MiB [========= ] 44% 3.2s\u001b[0K\u001b[1G86.5 MiB [========= ] 45% 3.1s\u001b[0K\u001b[1G86.5 MiB [========= ] 46% 3.1s\u001b[0K\u001b[1G86.5 MiB [========= ] 46% 3.0s\u001b[0K\u001b[1G86.5 MiB [========= ] 47% 3.0s\u001b[0K\u001b[1G86.5 MiB [========== ] 48% 2.9s\u001b[0K\u001b[1G86.5 MiB [========== ] 49% 2.8s\u001b[0K\u001b[1G86.5 MiB [========== ] 51% 2.7s\u001b[0K\u001b[1G86.5 MiB [=========== ] 52% 2.6s\u001b[0K\u001b[1G86.5 MiB [=========== ] 53% 2.5s\u001b[0K\u001b[1G86.5 MiB [=========== ] 54% 2.5s\u001b[0K\u001b[1G86.5 MiB [=========== ] 56% 2.4s\u001b[0K\u001b[1G86.5 MiB [=========== ] 57% 2.3s\u001b[0K\u001b[1G86.5 MiB [============ ] 57% 2.3s\u001b[0K\u001b[1G86.5 MiB [============ ] 58% 2.2s\u001b[0K\u001b[1G86.5 MiB [============ ] 59% 2.2s\u001b[0K\u001b[1G86.5 MiB [============ ] 60% 2.2s\u001b[0K\u001b[1G86.5 MiB [============ ] 61% 2.1s\u001b[0K\u001b[1G86.5 MiB [============ ] 62% 2.1s\u001b[0K\u001b[1G86.5 MiB [============= ] 63% 2.0s\u001b[0K\u001b[1G86.5 MiB [============= ] 64% 2.0s\u001b[0K\u001b[1G86.5 MiB [============= ] 65% 1.9s\u001b[0K\u001b[1G86.5 MiB [============= ] 66% 1.8s\u001b[0K\u001b[1G86.5 MiB [============= ] 67% 1.8s\u001b[0K\u001b[1G86.5 MiB [============== ] 67% 1.8s\u001b[0K\u001b[1G86.5 MiB [============== ] 68% 1.7s\u001b[0K\u001b[1G86.5 MiB [============== ] 69% 1.7s\u001b[0K\u001b[1G86.5 MiB [============== ] 69% 1.6s\u001b[0K\u001b[1G86.5 MiB [============== ] 70% 1.6s\u001b[0K\u001b[1G86.5 MiB [============== ] 71% 1.5s\u001b[0K\u001b[1G86.5 MiB [============== ] 72% 1.5s\u001b[0K\u001b[1G86.5 MiB [=============== ] 72% 1.4s\u001b[0K\u001b[1G86.5 MiB [=============== ] 73% 1.4s\u001b[0K\u001b[1G86.5 MiB [=============== ] 74% 1.3s\u001b[0K\u001b[1G86.5 MiB [=============== ] 75% 1.3s\u001b[0K\u001b[1G86.5 MiB [=============== ] 76% 1.2s\u001b[0K\u001b[1G86.5 MiB [=============== ] 77% 1.2s\u001b[0K\u001b[1G86.5 MiB [================ ] 77% 1.2s\u001b[0K\u001b[1G86.5 MiB [================ ] 78% 1.1s\u001b[0K\u001b[1G86.5 MiB [================ ] 79% 1.1s\u001b[0K\u001b[1G86.5 MiB [================ ] 79% 1.0s\u001b[0K\u001b[1G86.5 MiB [================ ] 80% 1.0s\u001b[0K\u001b[1G86.5 MiB [================ ] 81% 1.0s\u001b[0K\u001b[1G86.5 MiB [================ ] 81% 0.9s\u001b[0K\u001b[1G86.5 MiB [================= ] 82% 0.9s\u001b[0K\u001b[1G86.5 MiB [================= ] 83% 0.9s\u001b[0K\u001b[1G86.5 MiB [================= ] 84% 0.8s\u001b[0K\u001b[1G86.5 MiB [================= ] 85% 0.8s\u001b[0K\u001b[1G86.5 MiB [================= ] 86% 0.7s\u001b[0K\u001b[1G86.5 MiB [================= ] 87% 0.7s\u001b[0K\u001b[1G86.5 MiB [================== ] 87% 0.6s\u001b[0K\u001b[1G86.5 MiB [================== ] 88% 0.6s\u001b[0K\u001b[1G86.5 MiB [================== ] 89% 0.5s\u001b[0K\u001b[1G86.5 MiB [================== ] 90% 0.5s\u001b[0K\u001b[1G86.5 MiB [================== ] 91% 0.5s\u001b[0K\u001b[1G86.5 MiB [=================== ] 92% 0.4s\u001b[0K\u001b[1G86.5 MiB [=================== ] 93% 0.3s\u001b[0K\u001b[1G86.5 MiB [=================== ] 94% 0.3s\u001b[0K\u001b[1G86.5 MiB [=================== ] 95% 0.2s\u001b[0K\u001b[1G86.5 MiB [=================== ] 96% 0.2s\u001b[0K\u001b[1G86.5 MiB [=================== ] 97% 0.1s\u001b[0K\u001b[1G86.5 MiB [====================] 98% 0.1s\u001b[0K\u001b[1G86.5 MiB [====================] 99% 0.0s\u001b[0K\u001b[1G86.5 MiB [====================] 100% 0.0s\u001b[0K\n",
    "Webkit 17.4 (playwright build v1992) downloaded to /home/r2q2/.cache/ms-playwright/webkit-1992\n",
    "Playwright Host validation warning: \n",
    "╔══════════════════════════════════════════════════════╗\n",
    "║ Host system is missing dependencies to run browsers. ║\n",
    "║ Missing libraries: ║\n",
    "║ libgstcodecparsers-1.0.so.0 ║\n",
    "║ libflite.so.1 ║\n",
    "║ libflite_usenglish.so.1 ║\n",
    "║ libflite_cmu_grapheme_lang.so.1 ║\n",
    "║ libflite_cmu_grapheme_lex.so.1 ║\n",
    "║ libflite_cmu_indic_lang.so.1 ║\n",
    "║ libflite_cmu_indic_lex.so.1 ║\n",
    "║ libflite_cmulex.so.1 ║\n",
    "║ libflite_cmu_time_awb.so.1 ║\n",
    "║ libflite_cmu_us_awb.so.1 ║\n",
    "║ libflite_cmu_us_kal16.so.1 ║\n",
    "║ libflite_cmu_us_kal.so.1 ║\n",
    "║ libflite_cmu_us_rms.so.1 ║\n",
    "║ libflite_cmu_us_slt.so.1 ║\n",
    "║ libx264.so ║\n",
    "╚══════════════════════════════════════════════════════╝\n",
    " at validateDependenciesLinux \u001b[90m(/home/r2q2/tonei/\u001b[39m.venv/lib/python3.10/site-packages/playwright/driver/package/lib/server/registry/dependencies.js:216:9\u001b[90m)\u001b[39m\n",
    "\u001b[90m at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\u001b[39m\n",
    " at async Registry._validateHostRequirements \u001b[90m(/home/r2q2/tonei/\u001b[39m.venv/lib/python3.10/site-packages/playwright/driver/package/lib/server/registry/index.js:587:43\u001b[90m)\u001b[39m\n",
    " at async Registry._validateHostRequirementsForExecutableIfNeeded \u001b[90m(/home/r2q2/tonei/\u001b[39m.venv/lib/python3.10/site-packages/playwright/driver/package/lib/server/registry/index.js:685:7\u001b[90m)\u001b[39m\n",
    " at async Registry.validateHostRequirementsForExecutablesIfNeeded \u001b[90m(/home/r2q2/tonei/\u001b[39m.venv/lib/python3.10/site-packages/playwright/driver/package/lib/server/registry/index.js:674:43\u001b[90m)\u001b[39m\n",
    " at async t.<anonymous> \u001b[90m(/home/r2q2/tonei/\u001b[39m.venv/lib/python3.10/site-packages/playwright/driver/package/lib/cli/program.js:119:7\u001b[90m)\u001b[39m\n"
    ]
    }
    ],
    "source": [
    "!playwright install"
    ]
    },
    {
    "cell_type": "raw",
    "id": "d3769cb9-bb5d-4c40-a5c7-8b6e00547baf",
    "metadata": {},
    "source": [
    "In this section, we describe our LLM agent that can exploit vulnerabilities. Our agent consists of a:\n",
    "\n",
    "1. base LLM,\n",
    "2. prompt,\n",
    "3. agent framework, and\n",
    "4. tools.\n",
    "We show a system diagram in Figure 1.\n",
    "\n",
    "We vary the base LLM in our evaluation, but note that only GPT-4 is capable of exploiting vulnerabilities in our dataset. Every other method fails.\n",
    "\n",
    "We use the ReAct agent framework as implemented in LangChain. For the OpenAI models, we use the Assistants API.\n",
    "\n",
    "We give the agent access to tools, including access to:\n",
    "\n",
    "1. web browsing elements (retrieving HTML, clicking on elements, etc.),\n",
    "2. a terminal,\n",
    "3. web search results,\n",
    "4. file creation and editing, and\n",
    "5. a code interpreter."
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 2,
    "id": "5693e427-e9db-429b-b2ff-a5df375c4b34",
    "metadata": {},
    "outputs": [],
    "source": [
    "from langchain import hub\n",
    "from langchain.agents import AgentExecutor, create_react_agent\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "from langchain_openai import OpenAI\n",
    "from langchain.agents import Tool\n",
    "from langchain_experimental.utilities import PythonREPL\n",
    "from langchain_community.tools import ShellTool\n",
    "# If this is your first time using playwright, you'll have to install a browser executable.\n",
    "# Running `playwright install` by default installs a chromium browser executable.\n",
    "# playwright install\n",
    "from langchain_community.agent_toolkits import PlayWrightBrowserToolkit\n",
    "\n",
    "from langchain_community.tools.playwright.utils import (\n",
    " create_async_playwright_browser, # A synchronous browser is available, though it isn't compatible with jupyter.\\n\", },\n",
    ")\n",
    "# This import is required only for jupyter notebooks, since they have their own eventloop\n",
    "import nest_asyncio\n"
    ]
    },
    {
    "cell_type": "markdown",
    "id": "9ca83b7a-2943-4687-957c-04f06b9daea5",
    "metadata": {},
    "source": [
    "# Tools"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 4,
    "id": "2799406b-be9a-4b8c-8ddb-799ddf29e2c7",
    "metadata": {},
    "outputs": [
    {
    "ename": "Error",
    "evalue": "BrowserType.launch: Executable doesn't exist at /home/r2q2/.cache/ms-playwright/chromium-1112/chrome-linux/chrome\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝",
    "output_type": "error",
    "traceback": [
    "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
    "\u001b[0;31mError\u001b[0m Traceback (most recent call last)",
    "Cell \u001b[0;32mIn[4], line 5\u001b[0m\n\u001b[1;32m 1\u001b[0m tools \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 3\u001b[0m nest_asyncio\u001b[38;5;241m.\u001b[39mapply()\n\u001b[0;32m----> 5\u001b[0m async_browser \u001b[38;5;241m=\u001b[39m \u001b[43mcreate_async_playwright_browser\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m toolkit \u001b[38;5;241m=\u001b[39m PlayWrightBrowserToolkit\u001b[38;5;241m.\u001b[39mfrom_browser(async_browser\u001b[38;5;241m=\u001b[39masync_browser)\n\u001b[1;32m 7\u001b[0m tools\u001b[38;5;241m.\u001b[39mappend(toolkit\u001b[38;5;241m.\u001b[39mget_tools())\n",
    "File \u001b[0;32m~/tonei/.venv/lib/python3.10/site-packages/langchain_community/tools/playwright/utils.py:69\u001b[0m, in \u001b[0;36mcreate_async_playwright_browser\u001b[0;34m(headless, args)\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mplaywright\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01masync_api\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m async_playwright\n\u001b[1;32m 68\u001b[0m browser \u001b[38;5;241m=\u001b[39m run_async(async_playwright()\u001b[38;5;241m.\u001b[39mstart())\n\u001b[0;32m---> 69\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrun_async\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbrowser\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mchromium\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlaunch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mheadless\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheadless\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n",
    "File \u001b[0;32m~/tonei/.venv/lib/python3.10/site-packages/langchain_community/tools/playwright/utils.py:104\u001b[0m, in \u001b[0;36mrun_async\u001b[0;34m(coro)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Run an async coroutine.\u001b[39;00m\n\u001b[1;32m 96\u001b[0m \n\u001b[1;32m 97\u001b[0m \u001b[38;5;124;03mArgs:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 101\u001b[0m \u001b[38;5;124;03m T: The result of the coroutine.\u001b[39;00m\n\u001b[1;32m 102\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 103\u001b[0m event_loop \u001b[38;5;241m=\u001b[39m asyncio\u001b[38;5;241m.\u001b[39mget_event_loop()\n\u001b[0;32m--> 104\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mevent_loop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcoro\u001b[49m\u001b[43m)\u001b[49m\n",
    "File \u001b[0;32m~/tonei/.venv/lib/python3.10/site-packages/nest_asyncio.py:98\u001b[0m, in \u001b[0;36m_patch_loop.<locals>.run_until_complete\u001b[0;34m(self, future)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[1;32m 96\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 97\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEvent loop stopped before Future completed.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 98\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
    "File \u001b[0;32m/usr/lib/python3.10/asyncio/futures.py:201\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 199\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__log_traceback \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 200\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 201\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\u001b[38;5;241m.\u001b[39mwith_traceback(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception_tb)\n\u001b[1;32m 202\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n",
    "File \u001b[0;32m/usr/lib/python3.10/asyncio/tasks.py:232\u001b[0m, in \u001b[0;36mTask.__step\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 228\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 229\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 230\u001b[0m \u001b[38;5;66;03m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[1;32m 231\u001b[0m \u001b[38;5;66;03m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[0;32m--> 232\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mcoro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 234\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39mthrow(exc)\n",
    "File \u001b[0;32m~/tonei/.venv/lib/python3.10/site-packages/playwright/async_api/_generated.py:13882\u001b[0m, in \u001b[0;36mBrowserType.launch\u001b[0;34m(self, executable_path, channel, args, ignore_default_args, handle_sigint, handle_sigterm, handle_sighup, timeout, env, headless, devtools, proxy, downloads_path, slow_mo, traces_dir, chromium_sandbox, firefox_user_prefs)\u001b[0m\n\u001b[1;32m 13767\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mlaunch\u001b[39m(\n\u001b[1;32m 13768\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 13769\u001b[0m \u001b[38;5;241m*\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 13790\u001b[0m ] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 13791\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mBrowser\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 13792\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"BrowserType.launch\u001b[39;00m\n\u001b[1;32m 13793\u001b[0m \n\u001b[1;32m 13794\u001b[0m \u001b[38;5;124;03m Returns the browser instance.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 13878\u001b[0m \u001b[38;5;124;03m Browser\u001b[39;00m\n\u001b[1;32m 13879\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 13881\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m mapping\u001b[38;5;241m.\u001b[39mfrom_impl(\n\u001b[0;32m> 13882\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_impl_obj\u001b[38;5;241m.\u001b[39mlaunch(\n\u001b[1;32m 13883\u001b[0m executablePath\u001b[38;5;241m=\u001b[39mexecutable_path,\n\u001b[1;32m 13884\u001b[0m channel\u001b[38;5;241m=\u001b[39mchannel,\n\u001b[1;32m 13885\u001b[0m args\u001b[38;5;241m=\u001b[39mmapping\u001b[38;5;241m.\u001b[39mto_impl(args),\n\u001b[1;32m 13886\u001b[0m ignoreDefaultArgs\u001b[38;5;241m=\u001b[39mmapping\u001b[38;5;241m.\u001b[39mto_impl(ignore_default_args),\n\u001b[1;32m 13887\u001b[0m handleSIGINT\u001b[38;5;241m=\u001b[39mhandle_sigint,\n\u001b[1;32m 13888\u001b[0m handleSIGTERM\u001b[38;5;241m=\u001b[39mhandle_sigterm,\n\u001b[1;32m 13889\u001b[0m handleSIGHUP\u001b[38;5;241m=\u001b[39mhandle_sighup,\n\u001b[1;32m 13890\u001b[0m timeout\u001b[38;5;241m=\u001b[39mtimeout,\n\u001b[1;32m 13891\u001b[0m env\u001b[38;5;241m=\u001b[39mmapping\u001b[38;5;241m.\u001b[39mto_impl(env),\n\u001b[1;32m 13892\u001b[0m headless\u001b[38;5;241m=\u001b[39mheadless,\n\u001b[1;32m 13893\u001b[0m devtools\u001b[38;5;241m=\u001b[39mdevtools,\n\u001b[1;32m 13894\u001b[0m proxy\u001b[38;5;241m=\u001b[39mproxy,\n\u001b[1;32m 13895\u001b[0m downloadsPath\u001b[38;5;241m=\u001b[39mdownloads_path,\n\u001b[1;32m 13896\u001b[0m slowMo\u001b[38;5;241m=\u001b[39mslow_mo,\n\u001b[1;32m 13897\u001b[0m tracesDir\u001b[38;5;241m=\u001b[39mtraces_dir,\n\u001b[1;32m 13898\u001b[0m chromiumSandbox\u001b[38;5;241m=\u001b[39mchromium_sandbox,\n\u001b[1;32m 13899\u001b[0m firefoxUserPrefs\u001b[38;5;241m=\u001b[39mmapping\u001b[38;5;241m.\u001b[39mto_impl(firefox_user_prefs),\n\u001b[1;32m 13900\u001b[0m )\n\u001b[1;32m 13901\u001b[0m )\n",
    "File \u001b[0;32m~/tonei/.venv/lib/python3.10/site-packages/playwright/_impl/_browser_type.py:94\u001b[0m, in \u001b[0;36mBrowserType.launch\u001b[0;34m(self, executablePath, channel, args, ignoreDefaultArgs, handleSIGINT, handleSIGTERM, handleSIGHUP, timeout, env, headless, devtools, proxy, downloadsPath, slowMo, tracesDir, chromiumSandbox, firefoxUserPrefs)\u001b[0m\n\u001b[1;32m 91\u001b[0m params \u001b[38;5;241m=\u001b[39m locals_to_params(\u001b[38;5;28mlocals\u001b[39m())\n\u001b[1;32m 92\u001b[0m normalize_launch_params(params)\n\u001b[1;32m 93\u001b[0m browser \u001b[38;5;241m=\u001b[39m cast(\n\u001b[0;32m---> 94\u001b[0m Browser, from_channel(\u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_channel\u001b[38;5;241m.\u001b[39msend(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlaunch\u001b[39m\u001b[38;5;124m\"\u001b[39m, params))\n\u001b[1;32m 95\u001b[0m )\n\u001b[1;32m 96\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_did_launch_browser(browser)\n\u001b[1;32m 97\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m browser\n",
    "File \u001b[0;32m~/tonei/.venv/lib/python3.10/site-packages/playwright/_impl/_connection.py:59\u001b[0m, in \u001b[0;36mChannel.send\u001b[0;34m(self, method, params)\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msend\u001b[39m(\u001b[38;5;28mself\u001b[39m, method: \u001b[38;5;28mstr\u001b[39m, params: Dict \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[0;32m---> 59\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection\u001b[38;5;241m.\u001b[39mwrap_api_call(\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28;01mlambda\u001b[39;00m: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minner_send(method, params, \u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m 61\u001b[0m )\n",
    "File \u001b[0;32m~/tonei/.venv/lib/python3.10/site-packages/playwright/_impl/_connection.py:513\u001b[0m, in \u001b[0;36mConnection.wrap_api_call\u001b[0;34m(self, cb, is_internal)\u001b[0m\n\u001b[1;32m 511\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m cb()\n\u001b[1;32m 512\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m error:\n\u001b[0;32m--> 513\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m rewrite_error(error, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mparsed_st[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mapiName\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00merror\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 514\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 515\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_api_zone\u001b[38;5;241m.\u001b[39mset(\u001b[38;5;28;01mNone\u001b[39;00m)\n",
    "\u001b[0;31mError\u001b[0m: BrowserType.launch: Executable doesn't exist at /home/r2q2/.cache/ms-playwright/chromium-1112/chrome-linux/chrome\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝"
    ]
    }
    ],
    "source": [
    "tools = []\n",
    "\n",
    "nest_asyncio.apply()\n",
    "\n",
    "async_browser = create_async_playwright_browser()\n",
    "toolkit = PlayWrightBrowserToolkit.from_browser(async_browser=async_browser)\n",
    "tools.append(toolkit.get_tools())\n"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 7,
    "id": "d78b0047-67c4-4982-8abd-1d4248407397",
    "metadata": {},
    "outputs": [],
    "source": [
    "\n",
    "shell_tool = ShellTool()\n",
    "\n",
    "shell_tool.description = shell_tool.description + f\"args {shell_tool.args}\".replace(\n",
    " \"{\", \"{{\"\n",
    ").replace(\"}\", \"}}\")\n",
    "self_ask_with_search = initialize_agent(\n",
    " [shell_tool], llm, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True\n",
    ")\n",
    "self_ask_with_search.run(\n",
    " \"Download the langchain.com webpage and grep for all urls. Return only a sorted list of them. Be sure to use double quotes.\"\n",
    ")\n",
    "tools.append(shell_tool)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 3,
    "id": "eb6fe7cb-1203-4d8b-aa95-491eb0fa8abc",
    "metadata": {},
    "outputs": [],
    "source": [
    "tools.append([TavilySearchResults(max_results=1))"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": null,
    "id": "9e97afa2-32c8-436a-a876-15130085dc0d",
    "metadata": {},
    "outputs": [],
    "source": []
    },
    {
    "cell_type": "code",
    "execution_count": 9,
    "id": "611a9a02-b85b-4d94-922e-3567088d8d67",
    "metadata": {},
    "outputs": [
    {
    "data": {
    "text/plain": [
    "[CopyFileTool(root_dir='/tmp/tmppf02o4_b'),\n",
    " DeleteFileTool(root_dir='/tmp/tmppf02o4_b'),\n",
    " FileSearchTool(root_dir='/tmp/tmppf02o4_b'),\n",
    " MoveFileTool(root_dir='/tmp/tmppf02o4_b'),\n",
    " ReadFileTool(root_dir='/tmp/tmppf02o4_b'),\n",
    " WriteFileTool(root_dir='/tmp/tmppf02o4_b'),\n",
    " ListDirectoryTool(root_dir='/tmp/tmppf02o4_b')]"
    ]
    },
    "execution_count": 9,
    "metadata": {},
    "output_type": "execute_result"
    }
    ],
    "source": [
    "from tempfile import TemporaryDirectory\n",
    "\n",
    "from langchain_community.agent_toolkits import FileManagementToolkit\n",
    "\n",
    "# We'll make a temporary directory to avoid clutter\n",
    "working_directory = TemporaryDirectory()\n",
    "toolkit = FileManagementToolkit(\n",
    " root_dir=str(working_directory.name)\n",
    ") # If you don't provide a root_dir, operations will default to the current working directory\n",
    "toolkit.get_tools()\n",
    "tools.extend(toolkit)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 1,
    "id": "ff327c5c-0a0d-43e7-ad2f-d27c97a2d845",
    "metadata": {},
    "outputs": [],
    "source": [
    "import getpass\n",
    "import os\n",
    "\n",
    "# os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n",
    "# os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass()"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 8,
    "id": "6958d839-c555-4b5d-9640-a3da1b2e9672",
    "metadata": {},
    "outputs": [],
    "source": [
    "# Get the prompt to use - you can modify this!\n",
    "prompt = hub.pull(\"hwchase17/react\") #prompt is probably broken into system and user as well for this"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": null,
    "id": "0744628c-121e-4c87-b5c5-5a72fcea05da",
    "metadata": {},
    "outputs": [],
    "source": [
    "# Choose the LLM to use\n",
    "llm = OpenAI()\n",
    "\n",
    "# Construct the ReAct agent\n",
    "agent = create_react_agent(llm, tools, prompt)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": null,
    "id": "115ebc53-7f10-43fd-a3a4-662c8bb050a4",
    "metadata": {},
    "outputs": [],
    "source": [
    "# Create an agent executor by passing in the agent and tools\n",
    "agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)"
    ]
    }
    ],
    "metadata": {
    "kernelspec": {
    "display_name": "Python 3 (ipykernel)",
    "language": "python",
    "name": "python3"
    },
    "language_info": {
    "codemirror_mode": {
    "name": "ipython",
    "version": 3
    },
    "file_extension": ".py",
    "mimetype": "text/x-python",
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
    "version": "3.10.12"
    }
    },
    "nbformat": 4,
    "nbformat_minor": 5
    }