{
    "log": {
      "version": "1.2",
      "creator": {
        "name": "Firefox",
        "version": "111.0.1"
      },
      "browser": {
        "name": "Firefox",
        "version": "111.0.1"
      },
      "pages": [
        {
          "startedDateTime": "2023-03-29T16:58:59.303-07:00",
          "id": "page_1",
          "title": "mitmproxy - an interactive HTTPS proxy",
          "pageTimings": {
            "onContentLoad": 208,
            "onLoad": 270
          }
        }
      ],
      "entries": [
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.303-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "Referer",
                "value": "https://www.google.com/"
              },
              {
                "name": "DNT",
                "value": "1"
              },
              {
                "name": "Alt-Used",
                "value": "mitmproxy.org"
              },
              {
                "name": "Connection",
                "value": "keep-alive"
              },
              {
                "name": "Upgrade-Insecure-Requests",
                "value": "1"
              },
              {
                "name": "Sec-Fetch-Dest",
                "value": "document"
              },
              {
                "name": "Sec-Fetch-Mode",
                "value": "navigate"
              },
              {
                "name": "Sec-Fetch-Site",
                "value": "cross-site"
              },
              {
                "name": "Sec-Fetch-User",
                "value": "?1"
              },
              {
                "name": "If-Modified-Since",
                "value": "Sat, 04 Mar 2023 18:02:08 GMT"
              },
              {
                "name": "If-None-Match",
                "value": "W/\"a1550c2bd25c5bcfef789d730f5bbddf\""
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": 625
          },
          "response": {
            "status": 304,
            "statusText": "Not Modified",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "age",
                "value": "32345"
              },
              {
                "name": "date",
                "value": "Wed, 29 Mar 2023 23:58:59 GMT"
              },
              {
                "name": "server",
                "value": "AmazonS3"
              },
              {
                "name": "etag",
                "value": "W/\"a1550c2bd25c5bcfef789d730f5bbddf\""
              },
              {
                "name": "vary",
                "value": "Accept-Encoding"
              },
              {
                "name": "x-cache",
                "value": "Hit from cloudfront"
              },
              {
                "name": "via",
                "value": "1.1 5fa120f79d5713714191c32768eca58c.cloudfront.net (CloudFront)"
              },
              {
                "name": "x-amz-cf-pop",
                "value": "SFO5-C1"
              },
              {
                "name": "alt-svc",
                "value": "h3=\":443\"; ma=86400"
              },
              {
                "name": "x-amz-cf-id",
                "value": "DPEkuUbeK1ZXMsRuUHqgk6iE4l7ShgyrJntkqIbLaSJ5646Ptc2Xew=="
              }
            ],
            "cookies": [],
            "content": {
              "mimeType": "text/html",
              "size": 23866,
              "text": "<!DOCTYPE html>\n<html lang=\"en-us\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\n    <link rel=\"icon\" type=\"image/png\" href=\"./favicon.ico\">\n    <title>mitmproxy - an interactive HTTPS proxy</title>\n    \n    \n    \n    <link rel=\"stylesheet\" href=\"./style.min.css\">\n    <link rel=\"alternate\" type=\"application/rss+xml\" href=\"https://mitmproxy.org/index.xml\" title=\"mitmproxy.org\" />\n    <meta name=\"generator\" content=\"Hugo 0.104.3\" />\n</head>\n<body>\n<nav class=\"navbar is-dark\" role=\"navigation\" aria-label=\"main navigation\">\n    <div class=\"container\">\n        <div class=\"navbar-brand\">\n            <a class=\"navbar-item\" href=\"./\">\n                <img src=\"./logo-navbar.png\" alt=\"mitmproxy\">\n            </a>\n            <button class=\"button navbar-burger is-dark\" data-target=\"topnav\">\n                <span></span>\n                <span></span>\n                <span></span>\n            </button>\n        </div>\n        <div id=\"topnav\" class=\"navbar-menu\">\n            <div class=\"navbar-start\">\n                <a class=\"navbar-item\" href=\"./posts\">\n                    Blog\n                </a>\n                <div class=\"navbar-item has-dropdown is-hoverable\">\n                    <a class=\"navbar-link\" href=\"https://docs.mitmproxy.org/stable\">\n                        Docs\n                    </a>\n                    <div class=\"navbar-dropdown is-boxed\">\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/stable\">\n                            v9 (latest release) </a>\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/archive/v8\">\n                            v8</a>\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/archive/v7\">\n                            v7</a>\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/archive/v6\">\n                            v6</a>\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/archive/v5\">\n                            v5</a>\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/archive/v4\">\n                            v4</a>\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/archive/v3\">\n                            v3</a>\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/archive/v2\">\n                            v2</a>\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/archive/v1\">\n                            v1</a>\n\n                        <hr class=\"navbar-divider\">\n\n                        <a class=\"navbar-item\" target=\"_blank\" href=\"https://docs.mitmproxy.org/dev\">\n                            dev</a>\n                    </div>\n                </div>\n                <a class=\"navbar-item\" href=\"./publications\">\n                    Publications\n                </a>\n            </div>\n            <div class=\"navbar-end\">\n                <div class=\"navbar-item is-hidden-touch\">\n                    <iframe src=\"./github-btn.html?user=mhils&type=sponsor&size=large\"\n                            frameborder=\"0\"\n                            scrolling=\"0\"\n                            width=\"115\"\n                            height=\"30\"></iframe>\n                    <iframe src=\"./github-btn.html?user=mitmproxy&repo=mitmproxy&type=star&count=true&size=large\"\n                            frameborder=\"0\"\n                            scrolling=\"0\"\n                            width=\"160\"\n                            height=\"30\"></iframe>\n                </div>\n            </div>\n        </div>\n    </div>\n</nav>\n<script>\n    document.addEventListener('DOMContentLoaded', function () {\n\n        \n        var $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);\n\n        \n        if ($navbarBurgers.length > 0) {\n\n            \n            $navbarBurgers.forEach(function ($el) {\n                $el.addEventListener('click', function () {\n\n                    \n                    var target = $el.dataset.target;\n                    var $target = document.getElementById(target);\n\n                    \n                    $el.classList.toggle('is-active');\n                    $target.classList.toggle('is-active');\n\n                });\n            });\n        }\n\n    });\n</script>\n\n<div id=\"home\">\n    <section id=\"intro\">\n        <div class=\"hero-body\">\n            <div class=\"container\">\n                <div class=\"columns\">\n                    <div class=\"column is-7\">\n                        <img src=\"./screenshot.png\" alt=\"screenshot of mitmproxy's interface\">\n                    </div>\n                    <div class=\"column is-hidden-mobile\"></div>\n                    <div class=\"column is-two-fifths\">\n                        <div>\n                            <h1 class=\"is-size-3\">\n                                <dfn id=\"definition\">mitmproxy</dfn> is a free\n                                and open source\n                                interactive HTTPS proxy.\n                            </h1>\n                            <br>\n                            <div id=\"install\" role=\"navigation\" aria-label=\"Installation\">\n                                <a id=\"install-windows-classic\"\n                                   class=\"button is-hidden is-primary is-medium\"\n                                   href=\"./downloads\">\n                                    Download Windows Installer\n                                </a>\n                                <div>\n                                <a id=\"install-windows-store\" class=\"button is-hidden is-black\" href=\"ms-windows-store://pdp/?ProductId=9NWNDLQMNZD7\">\n                                    <span class=\"icon\">\n                                    <svg width=20 height=20 xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 23\">\n                                        <path fill=\"#f35325\" d=\"M1 1h10v10H1z\"/>\n                                        <path fill=\"#81bc06\" d=\"M12 1h10v10H12z\"/>\n                                        <path fill=\"#05a6f0\" d=\"M1 12h10v10H1z\"/>\n                                        <path fill=\"#ffba08\" d=\"M12 12h10v10H12z\"/>\n                                    </svg>\n                                    </span>\n                                    <span>Get from Microsoft Store</span>\n                                </a>\n                                </div>\n                                <a id=\"install-linux\"\n                                   class=\"button is-hidden is-primary is-medium\"\n                                   href=\"./downloads\">\n                                    Download Linux Binaries\n                                </a>\n                                <pre id=\"install-macos\" class=\"shell-command is-hidden\">\n                                    <code>brew install mitmproxy</code>\n                                    <code class=\"copy is-hidden-touch\"\n                                          data-clipboard-text=\"brew install mitmproxy\">copy</code>\n                                </pre>\n                                <a id=\"install-docker\"\n                                   class=\"button is-hidden is-link is-medium\"\n                                   href=\"https://hub.docker.com/r/mitmproxy/mitmproxy/\">\n                                    Docker Hub\n                                </a>\n                                <a id=\"install-more\"\n                                   class=\"button is-hidden is-info is-medium\"\n                                   href=\"./downloads\">\n                                    More Downloads\n                                </a>\n                                <a id=\"install-default\"\n                                   class=\"button is-primary is-medium\"\n                                   href=\"./downloads\">\n                                    Download\n                                </a>\n                            </div>\n                            <p>\n                                <a class=\"has-text-dark\" href=\"./tags/releases/\">Release Notes (v9.0)</a>\n                                <span>\n                                –\n                                <a id=\"other-downloads\" class=\"has-text-dark\"\n                                   href=\"./downloads\">\n                                    Other Downloads\n                                </a>\n                                </span>\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n\n    <section id=\"features\">\n        <div class=\"hero-body\">\n            <div class=\"container\">\n                <div class=\"columns\" role=\"navigation\" aria-label=\"Features\">\n                    <a href=\"#mitmproxy\" class=\"column has-text-centered has-text-primary\">\n                        <i class=\"fas fa-2x fa-terminal\"></i>\n                        <div class=\"title\">Command Line</div>\n                    </a>\n                    <a href=\"#mitmweb\" class=\"column has-text-centered has-text-primary\">\n                        <i class=\"fab fa-2x fa-firefox-browser\"></i>\n                        <div class=\"title\">Web Interface</div>\n                    </a>\n                    <a href=\"#mitmdump\" class=\"column has-text-centered has-text-primary\">\n                        <i class=\"fas fa-2x fa-code\"></i>\n                        <div class=\"title\">Python API</div>\n                    </a>\n                </div>\n            </div>\n        </div>\n    </section>\n\n    <section id=\"mitmproxy\" class=\"feature\">\n        <div class=\"hero-body\">\n            <div class=\"container\">\n                <div class=\"columns is-centered\">\n                    <div class=\"column\">\n                        <img src=\"./screenshot.png\" alt=\"screenshot of mitmproxy's interface\">\n                    </div>\n                    <div class=\"column\">\n                        <h2 class=\"title\">Command Line</h2>\n                        <p>\n                            <kbd>mitmproxy</kbd> is your swiss-army knife for debugging, testing,\n                            privacy measurements, and penetration testing.\n                            It can be used to intercept, inspect, modify and replay web traffic such\n                            as\n                            HTTP/1, HTTP/2, WebSockets, or any other SSL/TLS-protected protocols.\n                            You can prettify and decode a variety of message types ranging from HTML\n                            to\n                            Protobuf,\n                            intercept specific messages on-the-fly,\n                            modify them before they reach their destination, and replay them\n                            to a client or server later on.\n                        </p>\n                    </div>\n\n                </div>\n            </div>\n        </div>\n    </section>\n\n    <section id=\"mitmweb\" class=\"feature\">\n        <div class=\"hero-body\">\n            <div class=\"container\">\n                <div class=\"columns is-centered\">\n                    <div class=\"column\">\n                        <img src=\"./mitmweb.png\"\n                             alt=\"screenshot of mitmweb's interface\"\n                             style=\"border: solid #93a1a1 1px;\">\n                    </div>\n                    <div class=\"column\">\n                        <h2 class=\"title\">Web Interface</h2>\n                        <p>\n                            Use mitmproxy's main features in a graphical interface with\n                            <kbd>mitmweb</kbd>. Do you like Chrome's DevTools? <kbd>mitmweb</kbd>\n                            gives\n                            you a similar experience for any other application or device,\n                            plus additional features such as request interception and replay.\n\n                        </p>\n                        <!--\n                        <a class=\"button is-info is-outlined\"\n                           href=\"http://share.mitmproxy.org/honeynet-demo/#/flows/b07c553b-1ffd-4414-924f-ca4412804a6d/response\">\n                            View Static Demo\n                        </a>-->\n                    </div>\n\n                </div>\n            </div>\n        </div>\n    </section>\n\n    <section id=\"mitmdump\" class=\"feature\">\n        <div class=\"hero-body\">\n            <div class=\"container\">\n                <div class=\"columns is-centered\">\n                    <div class=\"column\">\n                        <div class=\"sample-code\">\n                            <div class=\"filename\">addon.py</div>\n                            <pre><span\n                                    class=\"import\">from</span> mitmproxy <span\n                                    class=\"import\">import</span> http\n\n<span class=\"keyword\">def</span> <span class=\"method\">request</span>(flow: http.HTTPFlow):\n    <span class=\"comment\"># redirect to different host</span>\n    <span class=\"keyword\">if</span> flow.request.pretty_host == <span\n                                        class=\"str\">\"example.com\"</span>:\n        flow.request.host = <span class=\"str\">\"mitmproxy.org\"</span>\n    <span class=\"comment\"># answer from proxy</span>\n    <span class=\"keyword\">elif</span> flow.request.path.endswith(<span class=\"str\">\"/brew\"</span>):\n    \tflow.response = http.Response.make(\n            <span class=\"num\">418</span>, <strong>b</strong><span class=\"str\">\"I'm a teapot\"</span>,\n        )</pre>\n                        </div>\n                    </div>\n                    <div class=\"column\">\n                        <h2 class=\"title\">\n                            Python API\n                        </h2>\n                        <p>\n                            Write powerful addons and script mitmproxy with <kbd>mitmdump</kbd>.\n                            The scripting API offers full control over mitmproxy and makes it\n                            possible\n                            to automatically modify messages, redirect traffic, visualize messages,\n                            or\n                            implement custom commands.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n\n    <section id=\"ecosystem\" class=\"feature\">\n        <div class=\"hero-body\">\n            <div class=\"container\">\n                <div class=\"columns is-centered\">\n                    <div class=\"column\">\n                        <div style=\"margin: 0 auto\">\n                            <p class=\"is-size-5\"><i class=\"fab fa-twitter has-text-info\"></i> Latest\n                                Tweets</p>\n                            <div style=\"height: 500px; overflow-y: scroll\">\n                                <a href=\"https://twitter.com/mitmproxy/likes\" target=\"_blank\" aria-label=\"Open latest liked tweets by mitmproxy in new window.\">\n                                <img style=\"width: 100%; max-width: 430px\" alt=\"A screenshot of the latest liked tweets by @mitmproxy.\" src=\"./data/twitter-timeline.png\" loading=\"lazy\" title=\"🖼️ This is a screenshot to protect your privacy. ✨\">\n                                </a>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"column\">\n                        <h2 class=\"title\">Powerful Ecosystem</h2>\n                        <div class=\"content\" role=\"navigation\" aria-label=\"Ecosystem\">\n                            <p>\n                                Mitmproxy has a vibrant ecosystem of addons and tools building on it:\n                            </p>\n                            <ul>\n                                <li>\n                                    <a href=\"https://github.com/mitmproxy/mitmproxy/tree/main/examples/contrib\" class=\"has-text-link\">\n                                    mitmproxy/examples/contrib</a>, a collection of\n                                    community-contributed mitmproxy addons.\n                                </li>\n                                <li>\n                                    <a href=\"https://github.com/alufers/mitmproxy2swagger\" class=\"has-text-link\">\n                                    mitmproxy2swagger</a>, a tool for automatically converting mitmproxy captures to\n                                    OpenAPI 3.0 specifications.\n                                </li>\n                                <li>\n                                    <a href=\"https://github.com/soluble-ai/kubetap\" class=\"has-text-link\">\n                                    kubetap</a>, a kubectl plugin to interactively proxy Kubernetes Services.\n                                </li>\n                            </ul>\n                        </div>\n                        <h1 class=\"title is-4\">Sponsored By</h1>\n                        <div class=\"sponsors\">\n                        <a href=\"https://proxyman.io/\"><img alt=\"Proxyman\" src=\"./sponsors/proxyman.png\"></a>\n                        <a href=\"https://netograph.io/\"><img alt=\"Netograph.io\" src=\"./sponsors/netograph.svg\"></a>\n                        <span style=\"margin-left: .4em\">...and many <a href=\"https://github.com/sponsors/mhils\" class=\"has-text-link\">individual supporters!</a> ❤️</span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n\n    <section id=\"opensource\" class=\"feature\">\n        <div class=\"hero-body\">\n            <div class=\"container\">\n                <div class=\"columns is-centered\">\n                    <div class=\"column has-text-centered\">\n                        <i class=\"fas fa-code fa-8x has-text-danger\"></i>\n                    </div>\n                    <div class=\"column\">\n                        <h2 class=\"title\">Open Source</h2>\n                        <p>\n                            Mitmproxy is free and open source. Be part of the mitmproxy community\n                            and\n                            help improve your favorite HTTPS proxy.\n                        </p>\n                        <br>\n                        <div class=\"buttons\" role=\"navigation\" aria-label=\"Open Source Cummunity\">\n                            <a class=\"button is-dark\"\n                               href=\"https://github.com/mitmproxy/mitmproxy\">\n                            <span class=\"icon\">\n                                <i class=\"fab fa-github\"></i>\n                            </span>\n                                <span>GitHub</span>\n                            </a>\n                            <a class=\"button is-info\" href=\"https://github.com/mitmproxy/mitmproxy/discussions\">\n                            <span class=\"icon\">\n                                <i class=\"far fa-comments\"></i>\n                            </span>\n                                <span>Ask Questions</span>\n                            </a>\n                            <a class=\"button is-danger\" href=\"https://slack.mitmproxy.org\">\n                            <span class=\"icon\">\n                                <i class=\"fab fa-slack-hash\"></i>\n                            </span>\n                                <span>Developer Chat</span>\n                            </a>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n</div>\n<script src=\"./polyfills.js\"></script>\n<script src=\"./clipboard.min.js\"></script>\n<script src=\"./snapshots.js\"></script>\n<script>\n    document.getElementsByClassName(\"copy\")\n    // Copy\n    let clipboard = new ClipboardJS('.copy');\n    clipboard.on('success', function (e) {\n        let node = e.trigger;\n        node.classList.add(\"has-text-success\");\n        node.textContent = \"copied!\";\n        window.setTimeout(function(){\n            node.classList.remove(\"has-text-success\")\n            node.textContent = \"copy\"\n        }, 1000)\n    });\n\n    getLatestRelease(\"-windows-x64-installer.exe\").then(function (url) {\n        document.getElementById(\"install-windows-classic\").href = url;\n    })\n    getLatestRelease(\"-linux.tar.gz\").then(function (url) {\n        document.getElementById(\"install-linux\").href = url;\n    })\n\n    // OS Detection\n    let platform = window.navigator.platform.toLowerCase();\n    if (platform.includes(\"win\")) {\n        document.getElementById(\"install-default\").classList.add(\"is-hidden\");\n        document.getElementById(\"install-windows-classic\").classList.remove(\"is-hidden\");\n        document.getElementById(\"install-windows-store\").classList.remove(\"is-hidden\");\n    } else if (platform.includes(\"linux\") && !platform.includes(\"android\")) {\n        document.getElementById(\"install-default\").classList.add(\"is-hidden\");\n        document.getElementById(\"install-linux\").classList.remove(\"is-hidden\");\n    } else if (platform.includes(\"mac\") && !platform.includes(\"iPhone\") && !platform.includes(\"iPad\")) {\n        document.getElementById(\"install-default\").classList.add(\"is-hidden\");\n        document.getElementById(\"install-macos\").classList.remove(\"is-hidden\");\n    }\n\n    let install = document.querySelector(\"#install\");\n    install.style.height = install.clientHeight + \"px\";\n    document.getElementById(\"other-downloads\").addEventListener(\"click\", function (e) {\n        e.preventDefault();\n        document.getElementById(\"other-downloads\").parentElement.classList.add(\"is-hidden\");\n        install.style.height = \"0px\";\n        window.setTimeout(function () {\n            document.querySelectorAll(\"#install > *\").forEach(function (x) {\n                x.classList.remove(\"is-hidden\");\n            })\n            document.getElementById(\"install-default\").classList.add(\"is-hidden\");\n            install.style.height = install.scrollHeight + \"px\";\n        }, 300);\n    })\n</script>\n\n<footer class=\"footer\">\n    <div class=\"container\">\n        <div class=\"content\">\n            <div class=\"level\">\n                <div class=\"level-left\">\n                    <p>\n                        <strong>mitmproxy</strong>, a project by\n                        <a href=\"https://twitter.com/cortesi\">@cortesi</a>,\n                        <a href=\"https://twitter.com/maximilianhils\">@maximilianhils</a>, and\n                        <a href=\"https://twitter.com/raumfresser\">@raumfresser</a>.<br>\n                        Maintained by the <a href=\"https://github.com/orgs/mitmproxy/people\">core\n                        team</a>\n                        with the help of <a\n                            href=\"https://github.com/mitmproxy/mitmproxy/graphs/contributors\">our fantastic\n                        contributors</a>.<br>\n                        Code licensed <a\n                            href=\"https://github.com/mitmproxy/mitmproxy/blob/main/LICENSE\">MIT</a>,\n                        website © 2023 Mitmproxy Project.\n                        <br><br>\n                        <small>Also checkout <a href=\"https://pdoc.dev\">pdoc</a>, a Python API documentation generator built by the mitmproxy developers.</small>\n                    </p>\n                </div>\n                <div class=\"level-right\">\n                    <a class=\"button is-outlined is-info\" href=\"https://twitter.com/mitmproxy\">\n                        <span class=\"icon\">\n                            <i class=\"fab fa-twitter\"></i>\n                        </span>\n                        <span>Follow @mitmproxy</span>\n                    </a>\n                </div>\n            </div>\n        </div>\n    </div>\n</footer>\n\n</body>\n</html>\n\n"
            },
            "redirectURL": "",
            "headersSize": 386,
            "bodySize": 5509
          },
          "cache": {
            "afterRequest": {
              "expires": "4294967295",
              "lastFetched": "",
              "fetchCount": "",
              "_dataSize": "",
              "_lastModified": "1680134301",
              "_device": ""
            }
          },
          "timings": {
            "blocked": 17,
            "dns": 0,
            "connect": 0,
            "ssl": 0,
            "send": 0,
            "wait": 6,
            "receive": 0
          },
          "time": 23,
          "_securityState": "secure",
          "serverIPAddress": "13.35.121.55",
          "connection": "443"
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.418-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/logo-navbar.png",
            "httpVersion": "",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "image/avif,image/webp,*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": null
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "",
            "headers": [],
            "cookies": [],
            "content": {
              "mimeType": "image/png",
              "comment": "Response bodies are not included."
            },
            "redirectURL": "",
            "bodySize": -1
          },
          "cache": {},
          "timings": {},
          "time": 0
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.456-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/screenshot.png",
            "httpVersion": "",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "image/avif,image/webp,*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": null
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "",
            "headers": [],
            "cookies": [],
            "content": {
              "mimeType": "image/png",
              "comment": "Response bodies are not included."
            },
            "redirectURL": "",
            "bodySize": -1
          },
          "cache": {},
          "timings": {},
          "time": 0
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.457-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/mitmweb.png",
            "httpVersion": "",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "image/avif,image/webp,*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": null
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "",
            "headers": [],
            "cookies": [],
            "content": {
              "mimeType": "image/png",
              "comment": "Response bodies are not included."
            },
            "redirectURL": "",
            "bodySize": -1
          },
          "cache": {},
          "timings": {},
          "time": 0
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.457-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/sponsors/proxyman.png",
            "httpVersion": "",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "image/avif,image/webp,*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": null
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "",
            "headers": [],
            "cookies": [],
            "content": {
              "mimeType": "image/png",
              "comment": "Response bodies are not included."
            },
            "redirectURL": "",
            "bodySize": -1
          },
          "cache": {},
          "timings": {},
          "time": 0
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.458-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/sponsors/netograph.svg",
            "httpVersion": "",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "image/avif,image/webp,*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": null
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "",
            "headers": [],
            "cookies": [],
            "content": {
              "mimeType": "image/svg+xml",
              "comment": "Response bodies are not included."
            },
            "redirectURL": "",
            "bodySize": -1
          },
          "cache": {},
          "timings": {},
          "time": 0
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.495-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/polyfills.js",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "DNT",
                "value": "1"
              },
              {
                "name": "Alt-Used",
                "value": "mitmproxy.org"
              },
              {
                "name": "Connection",
                "value": "keep-alive"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              },
              {
                "name": "Sec-Fetch-Dest",
                "value": "script"
              },
              {
                "name": "Sec-Fetch-Mode",
                "value": "no-cors"
              },
              {
                "name": "Sec-Fetch-Site",
                "value": "same-origin"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": null
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "content-type",
                "value": "text/javascript"
              },
              {
                "name": "alt-svc",
                "value": "h3=\":443\"; ma=86400"
              },
              {
                "name": "age",
                "value": "14777"
              },
              {
                "name": "last-modified",
                "value": "Sat, 04 Mar 2023 16:01:12 GMT"
              },
              {
                "name": "server",
                "value": "AmazonS3"
              },
              {
                "name": "content-encoding",
                "value": "gzip"
              },
              {
                "name": "date",
                "value": "Wed, 29 Mar 2023 19:52:06 GMT"
              },
              {
                "name": "etag",
                "value": "W/\"542d62f852e229d44f16469475b7500b\""
              },
              {
                "name": "vary",
                "value": "Accept-Encoding"
              },
              {
                "name": "x-cache",
                "value": "Hit from cloudfront"
              },
              {
                "name": "via",
                "value": "1.1 28663e5849ed20a9d037ca8066957990.cloudfront.net (CloudFront)"
              },
              {
                "name": "x-amz-cf-pop",
                "value": "SFO5-C1"
              },
              {
                "name": "x-amz-cf-id",
                "value": "EufbwzXQheESUTNil_OCjKK8cvVL51cQpYfmF7iZSHloCTvVhfZ8yQ=="
              }
            ],
            "cookies": [],
            "content": {
              "mimeType": "text/javascript",
              "size": 11800,
              "text": "// https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js\n!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n():\"function\"==typeof define&&define.amd?define(n):n()}(0,function(){\"use strict\";function e(e){var n=this.constructor;return this.then(function(t){return n.resolve(e()).then(function(){return t})},function(t){return n.resolve(e()).then(function(){return n.reject(t)})})}function n(e){return!(!e||\"undefined\"==typeof e.length)}function t(){}function o(e){if(!(this instanceof o))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],c(e,this)}function r(e,n){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,o._immediateFn(function(){var t=1===e._state?n.onFulfilled:n.onRejected;if(null!==t){var o;try{o=t(e._value)}catch(r){return void f(n.promise,r)}i(n.promise,o)}else(1===e._state?i:f)(n.promise,e._value)})):e._deferreds.push(n)}function i(e,n){try{if(n===e)throw new TypeError(\"A promise cannot be resolved with itself.\");if(n&&(\"object\"==typeof n||\"function\"==typeof n)){var t=n.then;if(n instanceof o)return e._state=3,e._value=n,void u(e);if(\"function\"==typeof t)return void c(function(e,n){return function(){e.apply(n,arguments)}}(t,n),e)}e._state=1,e._value=n,u(e)}catch(r){f(e,r)}}function f(e,n){e._state=2,e._value=n,u(e)}function u(e){2===e._state&&0===e._deferreds.length&&o._immediateFn(function(){e._handled||o._unhandledRejectionFn(e._value)});for(var n=0,t=e._deferreds.length;t>n;n++)r(e,e._deferreds[n]);e._deferreds=null}function c(e,n){var t=!1;try{e(function(e){t||(t=!0,i(n,e))},function(e){t||(t=!0,f(n,e))})}catch(o){if(t)return;t=!0,f(n,o)}}var a=setTimeout;o.prototype[\"catch\"]=function(e){return this.then(null,e)},o.prototype.then=function(e,n){var o=new this.constructor(t);return r(this,new function(e,n,t){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof n?n:null,this.promise=t}(e,n,o)),o},o.prototype[\"finally\"]=e,o.all=function(e){return new o(function(t,o){function r(e,n){try{if(n&&(\"object\"==typeof n||\"function\"==typeof n)){var u=n.then;if(\"function\"==typeof u)return void u.call(n,function(n){r(e,n)},o)}i[e]=n,0==--f&&t(i)}catch(c){o(c)}}if(!n(e))return o(new TypeError(\"Promise.all accepts an array\"));var i=Array.prototype.slice.call(e);if(0===i.length)return t([]);for(var f=i.length,u=0;i.length>u;u++)r(u,i[u])})},o.resolve=function(e){return e&&\"object\"==typeof e&&e.constructor===o?e:new o(function(n){n(e)})},o.reject=function(e){return new o(function(n,t){t(e)})},o.race=function(e){return new o(function(t,r){if(!n(e))return r(new TypeError(\"Promise.race accepts an array\"));for(var i=0,f=e.length;f>i;i++)o.resolve(e[i]).then(t,r)})},o._immediateFn=\"function\"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){a(e,0)},o._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",e)};var l=function(){if(\"undefined\"!=typeof self)return self;if(\"undefined\"!=typeof window)return window;if(\"undefined\"!=typeof global)return global;throw Error(\"unable to locate global object\")}();\"Promise\"in l?l.Promise.prototype[\"finally\"]||(l.Promise.prototype[\"finally\"]=e):l.Promise=o});\n\n// https://cdn.jsdelivr.net/npm/whatwg-fetch@3.0.0/dist/fetch.umd.min.js\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e(t.WHATWGFetch={})}(this,function(a){\"use strict\";var r=\"URLSearchParams\"in self,o=\"Symbol\"in self&&\"iterator\"in Symbol,h=\"FileReader\"in self&&\"Blob\"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),n=\"FormData\"in self,i=\"ArrayBuffer\"in self;if(i)var e=[\"[object Int8Array]\",\"[object Uint8Array]\",\"[object Uint8ClampedArray]\",\"[object Int16Array]\",\"[object Uint16Array]\",\"[object Int32Array]\",\"[object Uint32Array]\",\"[object Float32Array]\",\"[object Float64Array]\"],s=ArrayBuffer.isView||function(t){return t&&-1<e.indexOf(Object.prototype.toString.call(t))};function u(t){if(\"string\"!=typeof t&&(t=String(t)),/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError(\"Invalid character in header field name\");return t.toLowerCase()}function f(t){return\"string\"!=typeof t&&(t=String(t)),t}function t(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return o&&(t[Symbol.iterator]=function(){return t}),t}function d(e){this.map={},e instanceof d?e.forEach(function(t,e){this.append(e,t)},this):Array.isArray(e)?e.forEach(function(t){this.append(t[0],t[1])},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}function c(t){if(t.bodyUsed)return Promise.reject(new TypeError(\"Already read\"));t.bodyUsed=!0}function p(r){return new Promise(function(t,e){r.onload=function(){t(r.result)},r.onerror=function(){e(r.error)}})}function y(t){var e=new FileReader,r=p(e);return e.readAsArrayBuffer(t),r}function l(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function b(){return this.bodyUsed=!1,this._initBody=function(t){var e;(this._bodyInit=t)?\"string\"==typeof t?this._bodyText=t:h&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:n&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:r&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():i&&h&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=l(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):i&&(ArrayBuffer.prototype.isPrototypeOf(t)||s(t))?this._bodyArrayBuffer=l(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText=\"\",this.headers.get(\"content-type\")||(\"string\"==typeof t?this.headers.set(\"content-type\",\"text/plain;charset=UTF-8\"):this._bodyBlob&&this._bodyBlob.type?this.headers.set(\"content-type\",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set(\"content-type\",\"application/x-www-form-urlencoded;charset=UTF-8\"))},h&&(this.blob=function(){var t=c(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error(\"could not read FormData body as blob\");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?c(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var t,e,r,o=c(this);if(o)return o;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=p(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),o=0;o<e.length;o++)r[o]=String.fromCharCode(e[o]);return r.join(\"\")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error(\"could not read FormData body as text\");return Promise.resolve(this._bodyText)},n&&(this.formData=function(){return this.text().then(v)}),this.json=function(){return this.text().then(JSON.parse)},this}d.prototype.append=function(t,e){t=u(t),e=f(e);var r=this.map[t];this.map[t]=r?r+\", \"+e:e},d.prototype.delete=function(t){delete this.map[u(t)]},d.prototype.get=function(t){return t=u(t),this.has(t)?this.map[t]:null},d.prototype.has=function(t){return this.map.hasOwnProperty(u(t))},d.prototype.set=function(t,e){this.map[u(t)]=f(e)},d.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},d.prototype.keys=function(){var r=[];return this.forEach(function(t,e){r.push(e)}),t(r)},d.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),t(e)},d.prototype.entries=function(){var r=[];return this.forEach(function(t,e){r.push([e,t])}),t(r)},o&&(d.prototype[Symbol.iterator]=d.prototype.entries);var m=[\"DELETE\",\"GET\",\"HEAD\",\"OPTIONS\",\"POST\",\"PUT\"];function w(t,e){var r,o,n=(e=e||{}).body;if(t instanceof w){if(t.bodyUsed)throw new TypeError(\"Already read\");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new d(t.headers)),this.method=t.method,this.mode=t.mode,this.signal=t.signal,n||null==t._bodyInit||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||\"same-origin\",!e.headers&&this.headers||(this.headers=new d(e.headers)),this.method=(r=e.method||this.method||\"GET\",o=r.toUpperCase(),-1<m.indexOf(o)?o:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,(\"GET\"===this.method||\"HEAD\"===this.method)&&n)throw new TypeError(\"Body not allowed for GET or HEAD requests\");this._initBody(n)}function v(t){var n=new FormData;return t.trim().split(\"&\").forEach(function(t){if(t){var e=t.split(\"=\"),r=e.shift().replace(/\\+/g,\" \"),o=e.join(\"=\").replace(/\\+/g,\" \");n.append(decodeURIComponent(r),decodeURIComponent(o))}}),n}function E(t,e){e||(e={}),this.type=\"default\",this.status=void 0===e.status?200:e.status,this.ok=200<=this.status&&this.status<300,this.statusText=\"statusText\"in e?e.statusText:\"OK\",this.headers=new d(e.headers),this.url=e.url||\"\",this._initBody(t)}w.prototype.clone=function(){return new w(this,{body:this._bodyInit})},b.call(w.prototype),b.call(E.prototype),E.prototype.clone=function(){return new E(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new d(this.headers),url:this.url})},E.error=function(){var t=new E(null,{status:0,statusText:\"\"});return t.type=\"error\",t};var A=[301,302,303,307,308];E.redirect=function(t,e){if(-1===A.indexOf(e))throw new RangeError(\"Invalid status code\");return new E(null,{status:e,headers:{location:t}})},a.DOMException=self.DOMException;try{new a.DOMException}catch(t){a.DOMException=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack},a.DOMException.prototype=Object.create(Error.prototype),a.DOMException.prototype.constructor=a.DOMException}function _(n,s){return new Promise(function(o,t){var e=new w(n,s);if(e.signal&&e.signal.aborted)return t(new a.DOMException(\"Aborted\",\"AbortError\"));var i=new XMLHttpRequest;function r(){i.abort()}i.onload=function(){var t,n,e={status:i.status,statusText:i.statusText,headers:(t=i.getAllResponseHeaders()||\"\",n=new d,t.replace(/\\r?\\n[\\t ]+/g,\" \").split(/\\r?\\n/).forEach(function(t){var e=t.split(\":\"),r=e.shift().trim();if(r){var o=e.join(\":\").trim();n.append(r,o)}}),n)};e.url=\"responseURL\"in i?i.responseURL:e.headers.get(\"X-Request-URL\");var r=\"response\"in i?i.response:i.responseText;o(new E(r,e))},i.onerror=function(){t(new TypeError(\"Network request failed\"))},i.ontimeout=function(){t(new TypeError(\"Network request failed\"))},i.onabort=function(){t(new a.DOMException(\"Aborted\",\"AbortError\"))},i.open(e.method,e.url,!0),\"include\"===e.credentials?i.withCredentials=!0:\"omit\"===e.credentials&&(i.withCredentials=!1),\"responseType\"in i&&h&&(i.responseType=\"blob\"),e.headers.forEach(function(t,e){i.setRequestHeader(e,t)}),e.signal&&(e.signal.addEventListener(\"abort\",r),i.onreadystatechange=function(){4===i.readyState&&e.signal.removeEventListener(\"abort\",r)}),i.send(void 0===e._bodyInit?null:e._bodyInit)})}_.polyfill=!0,self.fetch||(self.fetch=_,self.Headers=d,self.Request=w,self.Response=E),a.Headers=d,a.Request=w,a.Response=E,a.fetch=_,Object.defineProperty(a,\"__esModule\",{value:!0})});\n\n// https://cdn.jsdelivr.net/npm/mdn-polyfills@5.20.0/NodeList.prototype.forEach.js\nwindow.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(o,t){t=t||window;for(var i=0;i<this.length;i++)o.call(t,this[i],i,this)});\n\n// https://cdn.jsdelivr.net/npm/mdn-polyfills@5.20.0/String.prototype.includes.js\nString.prototype.includes||(String.prototype.includes=function(t,n){return\"number\"!=typeof n&&(n=0),!(n+t.length>this.length)&&-1!==this.indexOf(t,n)});\n"
            },
            "redirectURL": "",
            "headersSize": 0,
            "bodySize": 4002
          },
          "cache": {},
          "timings": {
            "blocked": 0,
            "dns": 0,
            "ssl": 0,
            "connect": 0,
            "send": 0,
            "wait": 0,
            "receive": 0
          },
          "time": 0,
          "_securityState": "secure"
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.498-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/clipboard.min.js",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "DNT",
                "value": "1"
              },
              {
                "name": "Alt-Used",
                "value": "mitmproxy.org"
              },
              {
                "name": "Connection",
                "value": "keep-alive"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              },
              {
                "name": "Sec-Fetch-Dest",
                "value": "script"
              },
              {
                "name": "Sec-Fetch-Mode",
                "value": "no-cors"
              },
              {
                "name": "Sec-Fetch-Site",
                "value": "same-origin"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": null
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "content-type",
                "value": "text/javascript"
              },
              {
                "name": "alt-svc",
                "value": "h3=\":443\"; ma=86400"
              },
              {
                "name": "age",
                "value": "28518"
              },
              {
                "name": "last-modified",
                "value": "Sat, 04 Mar 2023 16:01:11 GMT"
              },
              {
                "name": "server",
                "value": "AmazonS3"
              },
              {
                "name": "content-encoding",
                "value": "gzip"
              },
              {
                "name": "date",
                "value": "Wed, 29 Mar 2023 16:03:05 GMT"
              },
              {
                "name": "etag",
                "value": "W/\"af8ab36589315582ccdd82f22e84bffb\""
              },
              {
                "name": "vary",
                "value": "Accept-Encoding"
              },
              {
                "name": "x-cache",
                "value": "Hit from cloudfront"
              },
              {
                "name": "via",
                "value": "1.1 28663e5849ed20a9d037ca8066957990.cloudfront.net (CloudFront)"
              },
              {
                "name": "x-amz-cf-pop",
                "value": "SFO5-C1"
              },
              {
                "name": "x-amz-cf-id",
                "value": "UuHHTyGhTqqTO07G_oZCw7rxjb9RJUGTN3OW0EUS77RH4GiQ-LkAvw=="
              }
            ],
            "cookies": [],
            "content": {
              "mimeType": "text/javascript",
              "size": 10453,
              "text": "/*!\n * clipboard.js v2.0.6\n * https://clipboardjs.com/\n * \n * Licensed MIT © Zeno Rocha\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return o={},r.m=n=[function(t,e){t.exports=function(t){var e;if(\"SELECT\"===t.nodeName)t.focus(),e=t.value;else if(\"INPUT\"===t.nodeName||\"TEXTAREA\"===t.nodeName){var n=t.hasAttribute(\"readonly\");n||t.setAttribute(\"readonly\",\"\"),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute(\"readonly\"),e=t.value}else{t.hasAttribute(\"contenteditable\")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n,t.exports.TinyEmitter=n},function(t,e,n){var d=n(3),h=n(4);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error(\"Missing required arguments\");if(!d.string(e))throw new TypeError(\"Second argument must be a String\");if(!d.fn(n))throw new TypeError(\"Third argument must be a Function\");if(d.node(t))return s=e,f=n,(u=t).addEventListener(s,f),{destroy:function(){u.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,l=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,l)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,l)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError(\"First argument must be a String, HTMLElement, HTMLCollection, or NodeList\");var o,r,i,a,c,l,u,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&(\"[object NodeList]\"===e||\"[object HTMLCollection]\"===e)&&\"length\"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return\"string\"==typeof t||t instanceof String},n.fn=function(t){return\"[object Function]\"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(5);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return\"function\"==typeof t.addEventListener?i.apply(null,arguments):\"function\"==typeof n?i.bind(null,document).apply(null,arguments):(\"string\"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if(\"undefined\"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if(\"function\"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},function(t,e,n){\"use strict\";n.r(e);var o=n(0),r=n.n(o),i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function c(t){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,c),this.resolveOptions(t),this.initSelection()}var l=(function(t,e,n){return e&&a(t.prototype,e),n&&a(t,n),t}(c,[{key:\"resolveOptions\",value:function(t){var e=0<arguments.length&&void 0!==t?t:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=\"\"}},{key:\"initSelection\",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:\"selectFake\",value:function(){var t=this,e=\"rtl\"==document.documentElement.getAttribute(\"dir\");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener(\"click\",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement(\"textarea\"),this.fakeElem.style.fontSize=\"12pt\",this.fakeElem.style.border=\"0\",this.fakeElem.style.padding=\"0\",this.fakeElem.style.margin=\"0\",this.fakeElem.style.position=\"absolute\",this.fakeElem.style[e?\"right\":\"left\"]=\"-9999px\";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+\"px\",this.fakeElem.setAttribute(\"readonly\",\"\"),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=r()(this.fakeElem),this.copyText()}},{key:\"removeFake\",value:function(){this.fakeHandler&&(this.container.removeEventListener(\"click\",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:\"selectTarget\",value:function(){this.selectedText=r()(this.target),this.copyText()}},{key:\"copyText\",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:\"handleResult\",value:function(t){this.emitter.emit(t?\"success\":\"error\",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:\"clearSelection\",value:function(){this.trigger&&this.trigger.focus(),document.activeElement.blur(),window.getSelection().removeAllRanges()}},{key:\"destroy\",value:function(){this.removeFake()}},{key:\"action\",set:function(t){var e=0<arguments.length&&void 0!==t?t:\"copy\";if(this._action=e,\"copy\"!==this._action&&\"cut\"!==this._action)throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"')},get:function(){return this._action}},{key:\"target\",set:function(t){if(void 0!==t){if(!t||\"object\"!==(void 0===t?\"undefined\":i(t))||1!==t.nodeType)throw new Error('Invalid \"target\" value, use a valid Element');if(\"copy\"===this.action&&t.hasAttribute(\"disabled\"))throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');if(\"cut\"===this.action&&(t.hasAttribute(\"readonly\")||t.hasAttribute(\"disabled\")))throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');this._target=t}},get:function(){return this._target}}]),c),u=n(1),s=n.n(u),f=n(2),d=n.n(f),h=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},p=function(t,e,n){return e&&y(t.prototype,e),n&&y(t,n),t};function y(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var m=(function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(v,s.a),p(v,[{key:\"resolveOptions\",value:function(t){var e=0<arguments.length&&void 0!==t?t:{};this.action=\"function\"==typeof e.action?e.action:this.defaultAction,this.target=\"function\"==typeof e.target?e.target:this.defaultTarget,this.text=\"function\"==typeof e.text?e.text:this.defaultText,this.container=\"object\"===h(e.container)?e.container:document.body}},{key:\"listenClick\",value:function(t){var e=this;this.listener=d()(t,\"click\",function(t){return e.onClick(t)})}},{key:\"onClick\",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:\"defaultAction\",value:function(t){return b(\"action\",t)}},{key:\"defaultTarget\",value:function(t){var e=b(\"target\",t);if(e)return document.querySelector(e)}},{key:\"defaultText\",value:function(t){return b(\"text\",t)}},{key:\"destroy\",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:\"isSupported\",value:function(t){var e=0<arguments.length&&void 0!==t?t:[\"copy\",\"cut\"],n=\"string\"==typeof e?[e]:e,o=!!document.queryCommandSupported;return n.forEach(function(t){o=o&&!!document.queryCommandSupported(t)}),o}}]),v);function v(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,v);var n=function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,(v.__proto__||Object.getPrototypeOf(v)).call(this));return n.resolveOptions(e),n.listenClick(t),n}function b(t,e){var n=\"data-clipboard-\"+t;if(e.hasAttribute(n))return e.getAttribute(n)}e.default=m}],r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=6).default;function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}var n,o});"
            },
            "redirectURL": "",
            "headersSize": 0,
            "bodySize": 3389
          },
          "cache": {},
          "timings": {
            "blocked": 0,
            "dns": 0,
            "ssl": 0,
            "connect": 0,
            "send": 0,
            "wait": 0,
            "receive": 0
          },
          "time": 0,
          "_securityState": "secure"
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.500-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/snapshots.js",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "DNT",
                "value": "1"
              },
              {
                "name": "Alt-Used",
                "value": "mitmproxy.org"
              },
              {
                "name": "Connection",
                "value": "keep-alive"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              },
              {
                "name": "Sec-Fetch-Dest",
                "value": "script"
              },
              {
                "name": "Sec-Fetch-Mode",
                "value": "no-cors"
              },
              {
                "name": "Sec-Fetch-Site",
                "value": "same-origin"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": null
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "content-type",
                "value": "text/javascript"
              },
              {
                "name": "alt-svc",
                "value": "h3=\":443\"; ma=86400"
              },
              {
                "name": "age",
                "value": "76473"
              },
              {
                "name": "last-modified",
                "value": "Sat, 04 Mar 2023 16:01:14 GMT"
              },
              {
                "name": "server",
                "value": "AmazonS3"
              },
              {
                "name": "content-encoding",
                "value": "gzip"
              },
              {
                "name": "date",
                "value": "Wed, 29 Mar 2023 02:43:50 GMT"
              },
              {
                "name": "etag",
                "value": "W/\"20a8c9dba8b59dc27b96998053650836\""
              },
              {
                "name": "vary",
                "value": "Accept-Encoding"
              },
              {
                "name": "x-cache",
                "value": "Hit from cloudfront"
              },
              {
                "name": "via",
                "value": "1.1 28663e5849ed20a9d037ca8066957990.cloudfront.net (CloudFront)"
              },
              {
                "name": "x-amz-cf-pop",
                "value": "SFO5-C1"
              },
              {
                "name": "x-amz-cf-id",
                "value": "TOLqHpQWMFHQDWnv2yHHFWI5xkA3R13TTJQDJe1ARViKrgihxZdhxA=="
              }
            ],
            "cookies": [],
            "content": {
              "mimeType": "text/javascript",
              "size": 2219,
              "text": "const WEB_ROOT = \"https://snapshots.mitmproxy.org/\"\nconst BUCKET_URL = \"https://s3-us-west-2.amazonaws.com/snapshots.mitmproxy.org\";\nconst EXCLUDE = {\n    \"index.html\": true,\n    \"error.html\": true,\n    \"list.js\": true,\n}\n\nfunction sortByName(a, b) {\n    // 5.0 > 4.0 > 1.0 > a > b > z\n    let invert = (/^[0-9]/.test(a.name) && /^[0-9]/.test(b.name)) ? -1 : 1;\n    if (a.name > b.name) return invert;\n    if (a.name < b.name) return -invert;\n    return 0;\n}\n\nlet s3cache = {};\nfunction fetchS3(directory) {\n    let url = BUCKET_URL + \"?delimiter=/&prefix=\" + directory;\n    s3cache[url] = s3cache[url] || (fetch(url)\n        .then(function (response) {\n            return response.text()\n        })\n        .then(function (data) {\n            let s3 = (new DOMParser()).parseFromString(data, \"text/xml\");\n            let files = [];\n            s3.querySelectorAll(\"Contents\").forEach(function (item) {\n                if (item.querySelector(\"Key\").textContent in EXCLUDE) {\n                    return;\n                }\n                files.push({\n                    name: item.querySelector(\"Key\").textContent.replace(directory, \"\"),\n                    time: new Date(item.querySelector(\"LastModified\").textContent),\n                    size: parseInt(item.querySelector(\"Size\").textContent)\n                });\n            })\n            files.sort(sortByName);\n\n            let directories = [];\n            s3.querySelectorAll(\"CommonPrefixes\").forEach(function (item) {\n                directories.push({\n                    name: item.querySelector(\"Prefix\").textContent.replace(directory, \"\"),\n                });\n            })\n            directories.sort(sortByName);\n\n            return { directory: directory, files: files, directories: directories };\n        }));\n    return s3cache[url];\n}\n\n\nfunction getLatestRelease(suffix) {\n    return fetchS3(\"\").then(function (data) {\n        let latestVersion = data.directories\n            .map(function (x) {\n                return x.name.replace(\"/\", \"\")\n            })\n            .filter(function (x) {\n                return /^[\\d.]+$/.test(x);\n            })[0]\n        return WEB_ROOT + latestVersion + \"/mitmproxy-\" + latestVersion + suffix;\n    })\n}\n"
            },
            "redirectURL": "",
            "headersSize": 0,
            "bodySize": 831
          },
          "cache": {},
          "timings": {
            "blocked": 0,
            "dns": 0,
            "ssl": 0,
            "connect": 0,
            "send": 0,
            "wait": 0,
            "receive": 0
          },
          "time": 0,
          "_securityState": "secure"
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.527-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/github-btn.html?user=mhils&type=sponsor&size=large",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              },
              {
                "name": "DNT",
                "value": "1"
              },
              {
                "name": "Alt-Used",
                "value": "mitmproxy.org"
              },
              {
                "name": "Connection",
                "value": "keep-alive"
              },
              {
                "name": "Upgrade-Insecure-Requests",
                "value": "1"
              },
              {
                "name": "Sec-Fetch-Dest",
                "value": "iframe"
              },
              {
                "name": "Sec-Fetch-Mode",
                "value": "navigate"
              },
              {
                "name": "Sec-Fetch-Site",
                "value": "same-origin"
              },
              {
                "name": "If-Modified-Since",
                "value": "Sat, 04 Mar 2023 16:01:11 GMT"
              },
              {
                "name": "If-None-Match",
                "value": "W/\"8d3963829b6394c8c198172e36049e5e\""
              },
              {
                "name": "TE",
                "value": "trailers"
              }
            ],
            "cookies": [],
            "queryString": [
              {
                "name": "user",
                "value": "mhils"
              },
              {
                "name": "type",
                "value": "sponsor"
              },
              {
                "name": "size",
                "value": "large"
              }
            ],
            "headersSize": 653
          },
          "response": {
            "status": 304,
            "statusText": "Not Modified",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "age",
                "value": "13417"
              },
              {
                "name": "date",
                "value": "Wed, 29 Mar 2023 23:58:59 GMT"
              },
              {
                "name": "server",
                "value": "AmazonS3"
              },
              {
                "name": "etag",
                "value": "W/\"8d3963829b6394c8c198172e36049e5e\""
              },
              {
                "name": "vary",
                "value": "Accept-Encoding"
              },
              {
                "name": "x-cache",
                "value": "Hit from cloudfront"
              },
              {
                "name": "via",
                "value": "1.1 5fa120f79d5713714191c32768eca58c.cloudfront.net (CloudFront)"
              },
              {
                "name": "x-amz-cf-pop",
                "value": "SFO5-C1"
              },
              {
                "name": "alt-svc",
                "value": "h3=\":443\"; ma=86400"
              },
              {
                "name": "x-amz-cf-id",
                "value": "nnIrWtgAMt42ua4HYBtNAao6m_iD9WjIzLAFyURb8mjOr5MriSQXRA=="
              }
            ],
            "cookies": [],
            "content": {
              "mimeType": "text/html",
              "size": 9689,
              "text": "<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <!-- fork of https://github.com/mdo/github-buttons/ -->\n  <!-- using fetch() instead of JSONP for privacy and security reasons. -->\n  <!-- add sponsors icon -->\n    <style>\n        .github-me .gh-ico {\n            margin-top: 2px;\n            background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' viewBox='0 0 16 16' version='1.1' width='16' fill='%23bf3989'%3E%3Cpath fill-rule='evenodd' d='M4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.565 20.565 0 008 13.393a20.561 20.561 0 003.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.75.75 0 01-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5zM8 14.25l-.345.666-.002-.001-.006-.003-.018-.01a7.643 7.643 0 01-.31-.17 22.075 22.075 0 01-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.08 22.08 0 01-3.744 2.584l-.018.01-.006.003h-.002L8 14.25zm0 0l.345.666a.752.752 0 01-.69 0L8 14.25z'%3E%3C/path%3E%3C/svg%3E\");\n        }\n        .gh-ico {\n            margin-top: 1px;\n            margin-right: 6px !important;\n        }\n    </style>\n  <style>\nbody {\n  padding: 0;\n  margin: 0;\n  overflow: hidden;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif;\n  font-size: 11px;\n  font-weight: 500;\n  line-height: 14px;\n}\n.github-btn {\n  height: 20px;\n  overflow: hidden;\n}\n.gh-btn,\n.gh-count,\n.gh-ico {\n  float: left;\n}\n.gh-btn,\n.gh-count {\n  padding: 2px 5px 2px 4px;\n  color: #333;\n  text-decoration: none;\n  white-space: nowrap;\n  cursor: pointer;\n  border-radius: 3px;\n}\n.gh-btn {\n  background-color: #eee;\n  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fcfcfc), to(#eee));\n  background-image: linear-gradient(to bottom, #fcfcfc 0, #eee 100%);\n  background-repeat: no-repeat;\n  border: 1px solid #d5d5d5;\n}\n.gh-btn:hover,\n.gh-btn:focus {\n  text-decoration: none;\n  background-color: #ddd;\n  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #eee), to(#ddd));\n  background-image: linear-gradient(to bottom, #eee 0, #ddd 100%);\n  border-color: #ccc;\n}\n.gh-btn:active {\n  background-color: #dcdcdc;\n  background-image: none;\n  border-color: #b5b5b5;\n  box-shadow: inset 0 2px 4px rgba(0, 0, 0, .15);\n}\n.gh-ico {\n  width: 14px;\n  height: 14px;\n  margin-right: 4px;\n  background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='12 12 40 40'%3e%3cpath fill='%23333' d='M32 13.4c-10.5 0-19 8.5-19 19 0 8.4 5.5 15.5 13 18 1 .2 1.3-.4 1.3-.9v-3.2c-5.3 1.1-6.4-2.6-6.4-2.6-.9-2.1-2.1-2.7-2.1-2.7-1.7-1.2.1-1.1.1-1.1 1.9.1 2.9 2 2.9 2 1.7 2.9 4.5 2.1 5.5 1.6.2-1.2.7-2.1 1.2-2.6-4.2-.5-8.7-2.1-8.7-9.4 0-2.1.7-3.7 2-5.1-.2-.5-.8-2.4.2-5 0 0 1.6-.5 5.2 2 1.5-.4 3.1-.7 4.8-.7 1.6 0 3.3.2 4.7.7 3.6-2.4 5.2-2 5.2-2 1 2.6.4 4.6.2 5 1.2 1.3 2 3 2 5.1 0 7.3-4.5 8.9-8.7 9.4.7.6 1.3 1.7 1.3 3.5v5.2c0 .5.4 1.1 1.3.9 7.5-2.6 13-9.7 13-18.1 0-10.5-8.5-19-19-19z'/%3e%3c/svg%3e\") 0 0 / 100% 100% no-repeat;\n}\n.gh-count {\n  position: relative;\n  display: none; /* hidden to start */\n  margin-left: 4px;\n  background-color: #fafafa;\n  border: 1px solid #d4d4d4;\n}\n.gh-count:hover,\n.gh-count:focus {\n  color: #0366d6;\n}\n.gh-count::before,\n.gh-count::after {\n  position: absolute;\n  display: inline-block;\n  width: 0;\n  height: 0;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n.gh-count::before {\n  top: 50%;\n  left: -3px;\n  margin-top: -4px;\n  border-width: 4px 4px 4px 0;\n  border-right-color: #fafafa;\n}\n.gh-count::after {\n  top: 50%;\n  left: -4px;\n  z-index: -1;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #d4d4d4;\n}\n.github-btn-large {\n  height: 30px;\n}\n.github-btn-large .gh-btn,\n.github-btn-large .gh-count {\n  padding: 3px 10px 3px 8px;\n  font-size: 16px;\n  line-height: 22px;\n  border-radius: 4px;\n}\n.github-btn-large .gh-ico {\n  width: 20px;\n  height: 20px;\n}\n.github-btn-large .gh-count {\n  margin-left: 6px;\n}\n.github-btn-large .gh-count::before {\n  left: -5px;\n  margin-top: -6px;\n  border-width: 6px 6px 6px 0;\n}\n.github-btn-large .gh-count::after {\n  left: -6px;\n  margin-top: -7px;\n  border-width: 7px 7px 7px 0;\n}\n</style>\n</head>\n<body>\n  <span class=\"github-btn\" id=\"github-btn\">\n    <a class=\"gh-btn\" id=\"gh-btn\" href=\"#\" rel=\"noopener\" target=\"_blank\" aria-label=\"\">\n      <span class=\"gh-ico\" aria-hidden=\"true\"></span>\n      <span class=\"gh-text\" id=\"gh-text\"></span>\n    </a>\n    <a class=\"gh-count\" id=\"gh-count\" href=\"#\" rel=\"noopener\" target=\"_blank\" aria-label=\"\"></a>\n  </span>\n  <script>\n(function() {\n  'use strict';\n\n  // Read a page's GET URL variables and return them as an associative array.\n  // Source: https://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html\n  function getUrlParameters() {\n    var vars = [];\n    var hash;\n    var location = window.location;\n    var hashes = location.href.slice(location.href.indexOf('?') + 1).split('&');\n\n    for (var i = 0, len = hashes.length; i < len; i++) {\n      hash = hashes[i].split('=');\n      vars.push(hash[0]);\n      vars[hash[0]] = hash[1];\n    }\n\n    return vars;\n  }\n\n  // Add commas to numbers\n  function addCommas(n) {\n    return String(n).replace(/(\\d)(?=(\\d{3})+$)/g, '$1,');\n  }\n\n  var parameters = getUrlParameters();\n\n  // Parameters\n  var user = parameters.user;\n  var repo = parameters.repo;\n  var type = parameters.type;\n  var count = parameters.count;\n  var size = parameters.size;\n  var v = parameters.v;\n\n  // Elements\n  var button = document.querySelector('.gh-btn');\n  var mainButton = document.querySelector('.github-btn');\n  var text = document.querySelector('.gh-text');\n  var counter = document.querySelector('.gh-count');\n\n  // Constants\n  var LABEL_SUFFIX = ' on GitHub';\n  var GITHUB_URL = 'https://github.com/';\n  var API_URL = 'https://api.github.com/';\n  var REPO_URL = GITHUB_URL + user + '/' + repo;\n  var USER_REPO = user + '/' + repo;\n\n  window.callback = function(obj) {\n    if (obj.data.message === 'Not Found') {\n      return;\n    }\n\n    switch (type) {\n      case 'watch':\n        if (v === '2') {\n          counter.textContent = obj.data.subscribers_count && addCommas(obj.data.subscribers_count);\n          counter.setAttribute('aria-label', counter.textContent + ' watchers' + LABEL_SUFFIX);\n        } else {\n          counter.textContent = obj.data.stargazers_count && addCommas(obj.data.stargazers_count);\n          counter.setAttribute('aria-label', counter.textContent + ' stargazers' + LABEL_SUFFIX);\n        }\n\n        break;\n      case 'star':\n        counter.textContent = obj.data.stargazers_count && addCommas(obj.data.stargazers_count);\n        counter.setAttribute('aria-label', counter.textContent + ' stargazers' + LABEL_SUFFIX);\n        break;\n      case 'fork':\n        counter.textContent = obj.data.network_count && addCommas(obj.data.network_count);\n        counter.setAttribute('aria-label', counter.textContent + ' forks' + LABEL_SUFFIX);\n        break;\n      case 'follow':\n        counter.textContent = obj.data.followers && addCommas(obj.data.followers);\n        counter.setAttribute('aria-label', counter.textContent + ' followers' + LABEL_SUFFIX);\n        break;\n    }\n\n    // Show the count if asked and if it's not empty\n    if (count === 'true' && counter.textContent !== '') {\n      counter.style.display = 'block';\n      counter.removeAttribute('aria-hidden');\n    }\n  };\n\n  // Set href to be URL for repo\n  button.href = REPO_URL;\n\n  var title;\n\n  // Add the class, change the text label, set count link href\n  switch (type) {\n    case 'watch':\n      if (v === '2') {\n        mainButton.className += ' github-watchers';\n        text.textContent = 'Watch';\n        counter.href = REPO_URL + '/watchers';\n      } else {\n        mainButton.className += ' github-stargazers';\n        text.textContent = 'Star';\n        counter.href = REPO_URL + '/stargazers';\n      }\n\n      title = text.textContent + ' ' + USER_REPO;\n      break;\n    case 'star':\n      mainButton.className += ' github-stargazers';\n      text.textContent = 'Star';\n      counter.href = REPO_URL + '/stargazers';\n      title = text.textContent + ' ' + USER_REPO;\n      break;\n    case 'fork':\n      mainButton.className += ' github-forks';\n      text.textContent = 'Fork';\n      button.href = REPO_URL + '/fork';\n      counter.href = REPO_URL + '/network';\n      title = text.textContent + ' ' + USER_REPO;\n      break;\n    case 'follow':\n      mainButton.className += ' github-me';\n      text.textContent = 'Follow @' + user;\n      button.href = GITHUB_URL + user;\n      counter.href = GITHUB_URL + user + '?tab=followers';\n      title = text.textContent;\n      break;\n    case 'sponsor':\n      mainButton.className += ' github-me';\n      text.textContent = 'Sponsor';\n      button.href = GITHUB_URL + 'sponsors/' + user;\n      title = text.textContent;\n      break;\n  }\n\n  button.setAttribute('aria-label', title + LABEL_SUFFIX);\n  document.title = title + LABEL_SUFFIX;\n\n  // Change the size if requested\n  if (size === 'large') {\n    mainButton.className += ' github-btn-large';\n  }\n\n  // If count is not requested or type is sponsor,\n  // there's no need to make an API call\n  if (count !== 'true' || type === 'sponsor') {\n    return;\n  }\n\n  fetch(\n      '/data/github-stats.json',\n      {credentials: \"omit\", referrerPolicy: \"no-referrer\"}\n  ).then(function(response) { return response.json() }\n  ).then(function(json) { callback({data: json}) })\n})();\n\n</script>\n</body>\n</html>\n"
            },
            "redirectURL": "",
            "headersSize": 386,
            "bodySize": 3756
          },
          "cache": {
            "afterRequest": {
              "expires": "4294967295",
              "lastFetched": "",
              "fetchCount": "",
              "_dataSize": "",
              "_lastModified": "1680134302",
              "_device": ""
            }
          },
          "timings": {
            "blocked": -1,
            "dns": 0,
            "connect": 0,
            "ssl": 0,
            "send": 0,
            "wait": 6,
            "receive": 0
          },
          "time": 6,
          "_securityState": "secure",
          "serverIPAddress": "13.35.121.55",
          "connection": "443"
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.528-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/github-btn.html?user=mitmproxy&repo=mitmproxy&type=star&count=true&size=large",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              },
              {
                "name": "DNT",
                "value": "1"
              },
              {
                "name": "Alt-Used",
                "value": "mitmproxy.org"
              },
              {
                "name": "Connection",
                "value": "keep-alive"
              },
              {
                "name": "Upgrade-Insecure-Requests",
                "value": "1"
              },
              {
                "name": "Sec-Fetch-Dest",
                "value": "iframe"
              },
              {
                "name": "Sec-Fetch-Mode",
                "value": "navigate"
              },
              {
                "name": "Sec-Fetch-Site",
                "value": "same-origin"
              },
              {
                "name": "If-Modified-Since",
                "value": "Sat, 04 Mar 2023 16:01:11 GMT"
              },
              {
                "name": "If-None-Match",
                "value": "W/\"8d3963829b6394c8c198172e36049e5e\""
              },
              {
                "name": "TE",
                "value": "trailers"
              }
            ],
            "cookies": [],
            "queryString": [
              {
                "name": "user",
                "value": "mitmproxy"
              },
              {
                "name": "repo",
                "value": "mitmproxy"
              },
              {
                "name": "type",
                "value": "star"
              },
              {
                "name": "count",
                "value": "true"
              },
              {
                "name": "size",
                "value": "large"
              }
            ],
            "headersSize": 680
          },
          "response": {
            "status": 304,
            "statusText": "Not Modified",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "age",
                "value": "13417"
              },
              {
                "name": "date",
                "value": "Wed, 29 Mar 2023 23:58:59 GMT"
              },
              {
                "name": "server",
                "value": "AmazonS3"
              },
              {
                "name": "etag",
                "value": "W/\"8d3963829b6394c8c198172e36049e5e\""
              },
              {
                "name": "vary",
                "value": "Accept-Encoding"
              },
              {
                "name": "x-cache",
                "value": "Hit from cloudfront"
              },
              {
                "name": "via",
                "value": "1.1 5fa120f79d5713714191c32768eca58c.cloudfront.net (CloudFront)"
              },
              {
                "name": "x-amz-cf-pop",
                "value": "SFO5-C1"
              },
              {
                "name": "alt-svc",
                "value": "h3=\":443\"; ma=86400"
              },
              {
                "name": "x-amz-cf-id",
                "value": "PMTLvP_yUCVocnhd1i1ir7_FRAJRw0ayMhK3KaZKELDO3pxxoqLWjg=="
              }
            ],
            "cookies": [],
            "content": {
              "mimeType": "text/html",
              "size": 9689,
              "text": "<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <!-- fork of https://github.com/mdo/github-buttons/ -->\n  <!-- using fetch() instead of JSONP for privacy and security reasons. -->\n  <!-- add sponsors icon -->\n    <style>\n        .github-me .gh-ico {\n            margin-top: 2px;\n            background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' viewBox='0 0 16 16' version='1.1' width='16' fill='%23bf3989'%3E%3Cpath fill-rule='evenodd' d='M4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.565 20.565 0 008 13.393a20.561 20.561 0 003.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.75.75 0 01-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5zM8 14.25l-.345.666-.002-.001-.006-.003-.018-.01a7.643 7.643 0 01-.31-.17 22.075 22.075 0 01-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.08 22.08 0 01-3.744 2.584l-.018.01-.006.003h-.002L8 14.25zm0 0l.345.666a.752.752 0 01-.69 0L8 14.25z'%3E%3C/path%3E%3C/svg%3E\");\n        }\n        .gh-ico {\n            margin-top: 1px;\n            margin-right: 6px !important;\n        }\n    </style>\n  <style>\nbody {\n  padding: 0;\n  margin: 0;\n  overflow: hidden;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif;\n  font-size: 11px;\n  font-weight: 500;\n  line-height: 14px;\n}\n.github-btn {\n  height: 20px;\n  overflow: hidden;\n}\n.gh-btn,\n.gh-count,\n.gh-ico {\n  float: left;\n}\n.gh-btn,\n.gh-count {\n  padding: 2px 5px 2px 4px;\n  color: #333;\n  text-decoration: none;\n  white-space: nowrap;\n  cursor: pointer;\n  border-radius: 3px;\n}\n.gh-btn {\n  background-color: #eee;\n  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fcfcfc), to(#eee));\n  background-image: linear-gradient(to bottom, #fcfcfc 0, #eee 100%);\n  background-repeat: no-repeat;\n  border: 1px solid #d5d5d5;\n}\n.gh-btn:hover,\n.gh-btn:focus {\n  text-decoration: none;\n  background-color: #ddd;\n  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #eee), to(#ddd));\n  background-image: linear-gradient(to bottom, #eee 0, #ddd 100%);\n  border-color: #ccc;\n}\n.gh-btn:active {\n  background-color: #dcdcdc;\n  background-image: none;\n  border-color: #b5b5b5;\n  box-shadow: inset 0 2px 4px rgba(0, 0, 0, .15);\n}\n.gh-ico {\n  width: 14px;\n  height: 14px;\n  margin-right: 4px;\n  background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='12 12 40 40'%3e%3cpath fill='%23333' d='M32 13.4c-10.5 0-19 8.5-19 19 0 8.4 5.5 15.5 13 18 1 .2 1.3-.4 1.3-.9v-3.2c-5.3 1.1-6.4-2.6-6.4-2.6-.9-2.1-2.1-2.7-2.1-2.7-1.7-1.2.1-1.1.1-1.1 1.9.1 2.9 2 2.9 2 1.7 2.9 4.5 2.1 5.5 1.6.2-1.2.7-2.1 1.2-2.6-4.2-.5-8.7-2.1-8.7-9.4 0-2.1.7-3.7 2-5.1-.2-.5-.8-2.4.2-5 0 0 1.6-.5 5.2 2 1.5-.4 3.1-.7 4.8-.7 1.6 0 3.3.2 4.7.7 3.6-2.4 5.2-2 5.2-2 1 2.6.4 4.6.2 5 1.2 1.3 2 3 2 5.1 0 7.3-4.5 8.9-8.7 9.4.7.6 1.3 1.7 1.3 3.5v5.2c0 .5.4 1.1 1.3.9 7.5-2.6 13-9.7 13-18.1 0-10.5-8.5-19-19-19z'/%3e%3c/svg%3e\") 0 0 / 100% 100% no-repeat;\n}\n.gh-count {\n  position: relative;\n  display: none; /* hidden to start */\n  margin-left: 4px;\n  background-color: #fafafa;\n  border: 1px solid #d4d4d4;\n}\n.gh-count:hover,\n.gh-count:focus {\n  color: #0366d6;\n}\n.gh-count::before,\n.gh-count::after {\n  position: absolute;\n  display: inline-block;\n  width: 0;\n  height: 0;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n.gh-count::before {\n  top: 50%;\n  left: -3px;\n  margin-top: -4px;\n  border-width: 4px 4px 4px 0;\n  border-right-color: #fafafa;\n}\n.gh-count::after {\n  top: 50%;\n  left: -4px;\n  z-index: -1;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #d4d4d4;\n}\n.github-btn-large {\n  height: 30px;\n}\n.github-btn-large .gh-btn,\n.github-btn-large .gh-count {\n  padding: 3px 10px 3px 8px;\n  font-size: 16px;\n  line-height: 22px;\n  border-radius: 4px;\n}\n.github-btn-large .gh-ico {\n  width: 20px;\n  height: 20px;\n}\n.github-btn-large .gh-count {\n  margin-left: 6px;\n}\n.github-btn-large .gh-count::before {\n  left: -5px;\n  margin-top: -6px;\n  border-width: 6px 6px 6px 0;\n}\n.github-btn-large .gh-count::after {\n  left: -6px;\n  margin-top: -7px;\n  border-width: 7px 7px 7px 0;\n}\n</style>\n</head>\n<body>\n  <span class=\"github-btn\" id=\"github-btn\">\n    <a class=\"gh-btn\" id=\"gh-btn\" href=\"#\" rel=\"noopener\" target=\"_blank\" aria-label=\"\">\n      <span class=\"gh-ico\" aria-hidden=\"true\"></span>\n      <span class=\"gh-text\" id=\"gh-text\"></span>\n    </a>\n    <a class=\"gh-count\" id=\"gh-count\" href=\"#\" rel=\"noopener\" target=\"_blank\" aria-label=\"\"></a>\n  </span>\n  <script>\n(function() {\n  'use strict';\n\n  // Read a page's GET URL variables and return them as an associative array.\n  // Source: https://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html\n  function getUrlParameters() {\n    var vars = [];\n    var hash;\n    var location = window.location;\n    var hashes = location.href.slice(location.href.indexOf('?') + 1).split('&');\n\n    for (var i = 0, len = hashes.length; i < len; i++) {\n      hash = hashes[i].split('=');\n      vars.push(hash[0]);\n      vars[hash[0]] = hash[1];\n    }\n\n    return vars;\n  }\n\n  // Add commas to numbers\n  function addCommas(n) {\n    return String(n).replace(/(\\d)(?=(\\d{3})+$)/g, '$1,');\n  }\n\n  var parameters = getUrlParameters();\n\n  // Parameters\n  var user = parameters.user;\n  var repo = parameters.repo;\n  var type = parameters.type;\n  var count = parameters.count;\n  var size = parameters.size;\n  var v = parameters.v;\n\n  // Elements\n  var button = document.querySelector('.gh-btn');\n  var mainButton = document.querySelector('.github-btn');\n  var text = document.querySelector('.gh-text');\n  var counter = document.querySelector('.gh-count');\n\n  // Constants\n  var LABEL_SUFFIX = ' on GitHub';\n  var GITHUB_URL = 'https://github.com/';\n  var API_URL = 'https://api.github.com/';\n  var REPO_URL = GITHUB_URL + user + '/' + repo;\n  var USER_REPO = user + '/' + repo;\n\n  window.callback = function(obj) {\n    if (obj.data.message === 'Not Found') {\n      return;\n    }\n\n    switch (type) {\n      case 'watch':\n        if (v === '2') {\n          counter.textContent = obj.data.subscribers_count && addCommas(obj.data.subscribers_count);\n          counter.setAttribute('aria-label', counter.textContent + ' watchers' + LABEL_SUFFIX);\n        } else {\n          counter.textContent = obj.data.stargazers_count && addCommas(obj.data.stargazers_count);\n          counter.setAttribute('aria-label', counter.textContent + ' stargazers' + LABEL_SUFFIX);\n        }\n\n        break;\n      case 'star':\n        counter.textContent = obj.data.stargazers_count && addCommas(obj.data.stargazers_count);\n        counter.setAttribute('aria-label', counter.textContent + ' stargazers' + LABEL_SUFFIX);\n        break;\n      case 'fork':\n        counter.textContent = obj.data.network_count && addCommas(obj.data.network_count);\n        counter.setAttribute('aria-label', counter.textContent + ' forks' + LABEL_SUFFIX);\n        break;\n      case 'follow':\n        counter.textContent = obj.data.followers && addCommas(obj.data.followers);\n        counter.setAttribute('aria-label', counter.textContent + ' followers' + LABEL_SUFFIX);\n        break;\n    }\n\n    // Show the count if asked and if it's not empty\n    if (count === 'true' && counter.textContent !== '') {\n      counter.style.display = 'block';\n      counter.removeAttribute('aria-hidden');\n    }\n  };\n\n  // Set href to be URL for repo\n  button.href = REPO_URL;\n\n  var title;\n\n  // Add the class, change the text label, set count link href\n  switch (type) {\n    case 'watch':\n      if (v === '2') {\n        mainButton.className += ' github-watchers';\n        text.textContent = 'Watch';\n        counter.href = REPO_URL + '/watchers';\n      } else {\n        mainButton.className += ' github-stargazers';\n        text.textContent = 'Star';\n        counter.href = REPO_URL + '/stargazers';\n      }\n\n      title = text.textContent + ' ' + USER_REPO;\n      break;\n    case 'star':\n      mainButton.className += ' github-stargazers';\n      text.textContent = 'Star';\n      counter.href = REPO_URL + '/stargazers';\n      title = text.textContent + ' ' + USER_REPO;\n      break;\n    case 'fork':\n      mainButton.className += ' github-forks';\n      text.textContent = 'Fork';\n      button.href = REPO_URL + '/fork';\n      counter.href = REPO_URL + '/network';\n      title = text.textContent + ' ' + USER_REPO;\n      break;\n    case 'follow':\n      mainButton.className += ' github-me';\n      text.textContent = 'Follow @' + user;\n      button.href = GITHUB_URL + user;\n      counter.href = GITHUB_URL + user + '?tab=followers';\n      title = text.textContent;\n      break;\n    case 'sponsor':\n      mainButton.className += ' github-me';\n      text.textContent = 'Sponsor';\n      button.href = GITHUB_URL + 'sponsors/' + user;\n      title = text.textContent;\n      break;\n  }\n\n  button.setAttribute('aria-label', title + LABEL_SUFFIX);\n  document.title = title + LABEL_SUFFIX;\n\n  // Change the size if requested\n  if (size === 'large') {\n    mainButton.className += ' github-btn-large';\n  }\n\n  // If count is not requested or type is sponsor,\n  // there's no need to make an API call\n  if (count !== 'true' || type === 'sponsor') {\n    return;\n  }\n\n  fetch(\n      '/data/github-stats.json',\n      {credentials: \"omit\", referrerPolicy: \"no-referrer\"}\n  ).then(function(response) { return response.json() }\n  ).then(function(json) { callback({data: json}) })\n})();\n\n</script>\n</body>\n</html>\n"
            },
            "redirectURL": "",
            "headersSize": 386,
            "bodySize": 3756
          },
          "cache": {
            "afterRequest": {
              "expires": "4294967295",
              "lastFetched": "",
              "fetchCount": "",
              "_dataSize": "",
              "_lastModified": "1680134302",
              "_device": ""
            }
          },
          "timings": {
            "blocked": -1,
            "dns": 0,
            "connect": 0,
            "ssl": 0,
            "send": 0,
            "wait": 7,
            "receive": 0
          },
          "time": 7,
          "_securityState": "secure",
          "serverIPAddress": "13.35.121.55",
          "connection": "443"
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.543-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://s3-us-west-2.amazonaws.com/snapshots.mitmproxy.org?delimiter=/&prefix=",
            "httpVersion": "HTTP/1.1",
            "headers": [
              {
                "name": "Host",
                "value": "s3-us-west-2.amazonaws.com"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              },
              {
                "name": "Origin",
                "value": "https://mitmproxy.org"
              },
              {
                "name": "DNT",
                "value": "1"
              },
              {
                "name": "Connection",
                "value": "keep-alive"
              },
              {
                "name": "Sec-Fetch-Dest",
                "value": "empty"
              },
              {
                "name": "Sec-Fetch-Mode",
                "value": "cors"
              },
              {
                "name": "Sec-Fetch-Site",
                "value": "cross-site"
              }
            ],
            "cookies": [],
            "queryString": [
              {
                "name": "delimiter",
                "value": "/"
              },
              {
                "name": "prefix",
                "value": ""
              }
            ],
            "headersSize": 444
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "HTTP/1.1",
            "headers": [
              {
                "name": "x-amz-id-2",
                "value": "Wea5PituXz4XdzoNJ+QC6XDgoU/3V7l0magzJrS+LUtCBaNXHc1HwMDB2zvhYirPY8+6SfU08Bk="
              },
              {
                "name": "x-amz-request-id",
                "value": "299PK1CFMV40HV7M"
              },
              {
                "name": "Date",
                "value": "Wed, 29 Mar 2023 23:59:00 GMT"
              },
              {
                "name": "Access-Control-Allow-Origin",
                "value": "*"
              },
              {
                "name": "Access-Control-Allow-Methods",
                "value": "GET"
              },
              {
                "name": "Access-Control-Max-Age",
                "value": "3000"
              },
              {
                "name": "Vary",
                "value": "Origin, Access-Control-Request-Headers, Access-Control-Request-Method"
              },
              {
                "name": "x-amz-bucket-region",
                "value": "us-west-2"
              },
              {
                "name": "Content-Type",
                "value": "application/xml"
              },
              {
                "name": "Transfer-Encoding",
                "value": "chunked"
              },
              {
                "name": "Server",
                "value": "AmazonS3"
              }
            ],
            "cookies": [],
            "content": {
              "mimeType": "application/xml",
              "size": 3406,
              "text": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ListBucketResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\"><Name>snapshots.mitmproxy.org</Name><Prefix></Prefix><Marker></Marker><MaxKeys>1000</MaxKeys><Delimiter>/</Delimiter><IsTruncated>false</IsTruncated><Contents><Key>error.html</Key><LastModified>2018-03-07T22:33:17.000Z</LastModified><ETag>&quot;f5abfbae6b5f0fbf3002d22a00804488&quot;</ETag><Size>426</Size><StorageClass>STANDARD</StorageClass></Contents><Contents><Key>index.html</Key><LastModified>2018-03-07T22:33:11.000Z</LastModified><ETag>&quot;f5abfbae6b5f0fbf3002d22a00804488&quot;</ETag><Size>426</Size><StorageClass>STANDARD</StorageClass></Contents><Contents><Key>list.js</Key><LastModified>2018-03-07T22:33:14.000Z</LastModified><ETag>&quot;2662f70064b002b56bd6768e017efaa9&quot;</ETag><Size>6790</Size><StorageClass>STANDARD</StorageClass></Contents><CommonPrefixes><Prefix>0.15/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>0.16/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>0.17.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>0.17/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>0.18.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>0.18.2/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>0.18.3/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>0.18/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>0.19/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>1.0.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>1.0.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>1.0.2/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>2.0.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>2.0.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>2.0.2/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>3.0.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>3.0.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>3.0.2/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>3.0.3/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>3.0.4/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>4.0.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>4.0.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>4.0.2/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>4.0.3/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>4.0.4/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>5.0.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>5.0.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>5.1.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>5.1.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>5.2/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>5.3.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>6.0.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>6.0.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>6.0.2/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>7.0.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>7.0.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>7.0.2/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>7.0.3/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>7.0.4/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>8.0.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>8.1.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>8.1.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>9.0.0/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>9.0.1/</Prefix></CommonPrefixes><CommonPrefixes><Prefix>branches/</Prefix></CommonPrefixes></ListBucketResult>"
            },
            "redirectURL": "",
            "headersSize": 465,
            "bodySize": 3871
          },
          "cache": {},
          "timings": {
            "blocked": 89,
            "dns": 0,
            "connect": 32,
            "ssl": 66,
            "send": 0,
            "wait": 60,
            "receive": 0
          },
          "time": 247,
          "_securityState": "secure",
          "serverIPAddress": "52.218.234.208",
          "connection": "443"
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.639-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/data/github-stats.json",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "DNT",
                "value": "1"
              },
              {
                "name": "Connection",
                "value": "keep-alive"
              },
              {
                "name": "Sec-Fetch-Dest",
                "value": "empty"
              },
              {
                "name": "Sec-Fetch-Mode",
                "value": "cors"
              },
              {
                "name": "Sec-Fetch-Site",
                "value": "same-origin"
              },
              {
                "name": "If-Modified-Since",
                "value": "Wed, 29 Mar 2023 23:55:21 GMT"
              },
              {
                "name": "If-None-Match",
                "value": "W/\"07201abd774cb0523be31d94fffe67a3\""
              },
              {
                "name": "TE",
                "value": "trailers"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": 450
          },
          "response": {
            "status": 304,
            "statusText": "Not Modified",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "age",
                "value": "205"
              },
              {
                "name": "date",
                "value": "Wed, 29 Mar 2023 23:58:59 GMT"
              },
              {
                "name": "etag",
                "value": "W/\"07201abd774cb0523be31d94fffe67a3\""
              },
              {
                "name": "server",
                "value": "AmazonS3"
              },
              {
                "name": "vary",
                "value": "Accept-Encoding"
              },
              {
                "name": "x-cache",
                "value": "Hit from cloudfront"
              },
              {
                "name": "via",
                "value": "1.1 5fa120f79d5713714191c32768eca58c.cloudfront.net (CloudFront)"
              },
              {
                "name": "x-amz-cf-pop",
                "value": "SFO5-C1"
              },
              {
                "name": "alt-svc",
                "value": "h3=\":443\"; ma=86400"
              },
              {
                "name": "x-amz-cf-id",
                "value": "0okGWJw6nYo7R-4egQWE-WfonThN2EXyRSLO9MlCNKyMfD-2v1AU0Q=="
              }
            ],
            "cookies": [],
            "content": {
              "mimeType": "application/json",
              "size": 6986,
              "text": "{\n  \"id\": 519832,\n  \"node_id\": \"MDEwOlJlcG9zaXRvcnk1MTk4MzI=\",\n  \"name\": \"mitmproxy\",\n  \"full_name\": \"mitmproxy/mitmproxy\",\n  \"private\": false,\n  \"owner\": {\n    \"login\": \"mitmproxy\",\n    \"id\": 4652787,\n    \"node_id\": \"MDEyOk9yZ2FuaXphdGlvbjQ2NTI3ODc=\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/4652787?v=4\",\n    \"gravatar_id\": \"\",\n    \"url\": \"https://api.github.com/users/mitmproxy\",\n    \"html_url\": \"https://github.com/mitmproxy\",\n    \"followers_url\": \"https://api.github.com/users/mitmproxy/followers\",\n    \"following_url\": \"https://api.github.com/users/mitmproxy/following{/other_user}\",\n    \"gists_url\": \"https://api.github.com/users/mitmproxy/gists{/gist_id}\",\n    \"starred_url\": \"https://api.github.com/users/mitmproxy/starred{/owner}{/repo}\",\n    \"subscriptions_url\": \"https://api.github.com/users/mitmproxy/subscriptions\",\n    \"organizations_url\": \"https://api.github.com/users/mitmproxy/orgs\",\n    \"repos_url\": \"https://api.github.com/users/mitmproxy/repos\",\n    \"events_url\": \"https://api.github.com/users/mitmproxy/events{/privacy}\",\n    \"received_events_url\": \"https://api.github.com/users/mitmproxy/received_events\",\n    \"type\": \"Organization\",\n    \"site_admin\": false\n  },\n  \"html_url\": \"https://github.com/mitmproxy/mitmproxy\",\n  \"description\": \"An interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.\",\n  \"fork\": false,\n  \"url\": \"https://api.github.com/repos/mitmproxy/mitmproxy\",\n  \"forks_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/forks\",\n  \"keys_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/keys{/key_id}\",\n  \"collaborators_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/collaborators{/collaborator}\",\n  \"teams_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/teams\",\n  \"hooks_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/hooks\",\n  \"issue_events_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/issues/events{/number}\",\n  \"events_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/events\",\n  \"assignees_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/assignees{/user}\",\n  \"branches_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/branches{/branch}\",\n  \"tags_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/tags\",\n  \"blobs_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/git/blobs{/sha}\",\n  \"git_tags_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/git/tags{/sha}\",\n  \"git_refs_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/git/refs{/sha}\",\n  \"trees_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/git/trees{/sha}\",\n  \"statuses_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/statuses/{sha}\",\n  \"languages_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/languages\",\n  \"stargazers_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/stargazers\",\n  \"contributors_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/contributors\",\n  \"subscribers_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/subscribers\",\n  \"subscription_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/subscription\",\n  \"commits_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/commits{/sha}\",\n  \"git_commits_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/git/commits{/sha}\",\n  \"comments_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/comments{/number}\",\n  \"issue_comment_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/issues/comments{/number}\",\n  \"contents_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/contents/{+path}\",\n  \"compare_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/compare/{base}...{head}\",\n  \"merges_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/merges\",\n  \"archive_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/{archive_format}{/ref}\",\n  \"downloads_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/downloads\",\n  \"issues_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/issues{/number}\",\n  \"pulls_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/pulls{/number}\",\n  \"milestones_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/milestones{/number}\",\n  \"notifications_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/notifications{?since,all,participating}\",\n  \"labels_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/labels{/name}\",\n  \"releases_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/releases{/id}\",\n  \"deployments_url\": \"https://api.github.com/repos/mitmproxy/mitmproxy/deployments\",\n  \"created_at\": \"2010-02-16T04:10:13Z\",\n  \"updated_at\": \"2023-03-29T21:46:17Z\",\n  \"pushed_at\": \"2023-03-29T11:13:54Z\",\n  \"git_url\": \"git://github.com/mitmproxy/mitmproxy.git\",\n  \"ssh_url\": \"git@github.com:mitmproxy/mitmproxy.git\",\n  \"clone_url\": \"https://github.com/mitmproxy/mitmproxy.git\",\n  \"svn_url\": \"https://github.com/mitmproxy/mitmproxy\",\n  \"homepage\": \"https://mitmproxy.org\",\n  \"size\": 57388,\n  \"stargazers_count\": 30554,\n  \"watchers_count\": 30554,\n  \"language\": \"Python\",\n  \"has_issues\": true,\n  \"has_projects\": true,\n  \"has_downloads\": true,\n  \"has_wiki\": false,\n  \"has_pages\": false,\n  \"has_discussions\": true,\n  \"forks_count\": 3658,\n  \"mirror_url\": null,\n  \"archived\": false,\n  \"disabled\": false,\n  \"open_issues_count\": 260,\n  \"license\": {\n    \"key\": \"mit\",\n    \"name\": \"MIT License\",\n    \"spdx_id\": \"MIT\",\n    \"url\": \"https://api.github.com/licenses/mit\",\n    \"node_id\": \"MDc6TGljZW5zZTEz\"\n  },\n  \"allow_forking\": true,\n  \"is_template\": false,\n  \"web_commit_signoff_required\": false,\n  \"topics\": [\n    \"debugging\",\n    \"http\",\n    \"http2\",\n    \"man-in-the-middle\",\n    \"mitmproxy\",\n    \"proxy\",\n    \"python\",\n    \"security\",\n    \"ssl\",\n    \"tls\",\n    \"websocket\"\n  ],\n  \"visibility\": \"public\",\n  \"forks\": 3658,\n  \"open_issues\": 260,\n  \"watchers\": 30554,\n  \"default_branch\": \"main\",\n  \"temp_clone_token\": null,\n  \"organization\": {\n    \"login\": \"mitmproxy\",\n    \"id\": 4652787,\n    \"node_id\": \"MDEyOk9yZ2FuaXphdGlvbjQ2NTI3ODc=\",\n    \"avatar_url\": \"https://avatars.githubusercontent.com/u/4652787?v=4\",\n    \"gravatar_id\": \"\",\n    \"url\": \"https://api.github.com/users/mitmproxy\",\n    \"html_url\": \"https://github.com/mitmproxy\",\n    \"followers_url\": \"https://api.github.com/users/mitmproxy/followers\",\n    \"following_url\": \"https://api.github.com/users/mitmproxy/following{/other_user}\",\n    \"gists_url\": \"https://api.github.com/users/mitmproxy/gists{/gist_id}\",\n    \"starred_url\": \"https://api.github.com/users/mitmproxy/starred{/owner}{/repo}\",\n    \"subscriptions_url\": \"https://api.github.com/users/mitmproxy/subscriptions\",\n    \"organizations_url\": \"https://api.github.com/users/mitmproxy/orgs\",\n    \"repos_url\": \"https://api.github.com/users/mitmproxy/repos\",\n    \"events_url\": \"https://api.github.com/users/mitmproxy/events{/privacy}\",\n    \"received_events_url\": \"https://api.github.com/users/mitmproxy/received_events\",\n    \"type\": \"Organization\",\n    \"site_admin\": false\n  },\n  \"network_count\": 3658,\n  \"subscribers_count\": 619\n}\n"
            },
            "redirectURL": "",
            "headersSize": 384,
            "bodySize": 1821
          },
          "cache": {
            "afterRequest": {
              "expires": "4294967295",
              "lastFetched": "",
              "fetchCount": "",
              "_dataSize": "",
              "_lastModified": "1680134339",
              "_device": ""
            }
          },
          "timings": {
            "blocked": -1,
            "dns": 0,
            "connect": 0,
            "ssl": 0,
            "send": 0,
            "wait": 7,
            "receive": 0
          },
          "time": 7,
          "_securityState": "secure",
          "serverIPAddress": "13.35.121.55",
          "connection": "443"
        },
        {
          "pageref": "page_1",
          "startedDateTime": "2023-03-29T16:58:59.643-07:00",
          "request": {
            "bodySize": 0,
            "method": "GET",
            "url": "https://mitmproxy.org/favicon.ico",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "Host",
                "value": "mitmproxy.org"
              },
              {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0"
              },
              {
                "name": "Accept",
                "value": "image/avif,image/webp,*/*"
              },
              {
                "name": "Accept-Language",
                "value": "en-US,en;q=0.5"
              },
              {
                "name": "Accept-Encoding",
                "value": "gzip, deflate, br"
              },
              {
                "name": "DNT",
                "value": "1"
              },
              {
                "name": "Alt-Used",
                "value": "mitmproxy.org"
              },
              {
                "name": "Connection",
                "value": "keep-alive"
              },
              {
                "name": "Referer",
                "value": "https://mitmproxy.org/"
              },
              {
                "name": "Sec-Fetch-Dest",
                "value": "image"
              },
              {
                "name": "Sec-Fetch-Mode",
                "value": "no-cors"
              },
              {
                "name": "Sec-Fetch-Site",
                "value": "same-origin"
              }
            ],
            "cookies": [],
            "queryString": [],
            "headersSize": null
          },
          "response": {
            "status": 200,
            "statusText": "OK",
            "httpVersion": "HTTP/3",
            "headers": [
              {
                "name": "content-type",
                "value": "image/vnd.microsoft.icon"
              },
              {
                "name": "content-length",
                "value": "98065"
              },
              {
                "name": "age",
                "value": "62116"
              },
              {
                "name": "last-modified",
                "value": "Sat, 04 Mar 2023 16:01:11 GMT"
              },
              {
                "name": "server",
                "value": "AmazonS3"
              },
              {
                "name": "date",
                "value": "Wed, 29 Mar 2023 06:43:07 GMT"
              },
              {
                "name": "etag",
                "value": "\"0f8a699781bb4a5a204a467db88dd555\""
              },
              {
                "name": "vary",
                "value": "Accept-Encoding"
              },
              {
                "name": "x-cache",
                "value": "Hit from cloudfront"
              },
              {
                "name": "via",
                "value": "1.1 28663e5849ed20a9d037ca8066957990.cloudfront.net (CloudFront)"
              },
              {
                "name": "x-amz-cf-pop",
                "value": "SFO5-C1"
              },
              {
                "name": "alt-svc",
                "value": "h3=\":443\"; ma=86400"
              },
              {
                "name": "x-amz-cf-id",
                "value": "dkVeTGCIfZ6m6k9VkhQJKLdxjemd8oSJPwnCEX6Tdimqsa5n2CJybg=="
              }
            ],
            "cookies": [],
            "content": {
              "mimeType": "image/vnd.microsoft.icon",
              "size": 98065,
              "encoding": "base64",
              "text": "[encoded data, 130756 characters]"
            },
            "redirectURL": "",
            "headersSize": 0,
            "bodySize": 98065
          },
          "cache": {},
          "timings": {
            "blocked": 0,
            "dns": 0,
            "ssl": 0,
            "connect": 0,
            "send": 0,
            "wait": 0,
            "receive": 0
          },
          "time": 0,
          "_securityState": "secure"
        }
      ]
    }
  }