Full Code of facebook/proxygen for AI

main 2d72b64e5ce4 cached
1140 files
7.5 MB
2.0M tokens
6954 symbols
1 requests
Download .txt
Showing preview only (8,055K chars total). Download the full file or copy to clipboard to get everything.
Repository: facebook/proxygen
Branch: main
Commit: 2d72b64e5ce4
Files: 1140
Total size: 7.5 MB

Directory structure:
gitextract_yvh0wu4e/

├── .github/
│   ├── dependabot.yml
│   └── workflows/
│       ├── TagIt.yml
│       ├── close_stale.yml
│       ├── getdeps_linux.yml
│       ├── getdeps_mac.yml
│       └── publish_mvfst_interop.yml
├── .gitignore
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Doxyfile
├── LICENSE
├── README.md
├── build/
│   ├── README.md
│   ├── deps/
│   │   └── github_hashes/
│   │       ├── facebook/
│   │       │   ├── folly-rev.txt
│   │       │   ├── mvfst-rev.txt
│   │       │   └── wangle-rev.txt
│   │       └── facebookincubator/
│   │           └── fizz-rev.txt
│   └── fbcode_builder/
│       ├── .gitignore
│       ├── CMake/
│       │   ├── FBBuildOptions.cmake
│       │   ├── FBCMakeParseArgs.cmake
│       │   ├── FBCompilerSettings.cmake
│       │   ├── FBCompilerSettingsMSVC.cmake
│       │   ├── FBCompilerSettingsUnix.cmake
│       │   ├── FBPythonBinary.cmake
│       │   ├── FBPythonTestAddTests.cmake
│       │   ├── FBThriftCppLibrary.cmake
│       │   ├── FBThriftLibrary.cmake
│       │   ├── FBThriftPyLibrary.cmake
│       │   ├── FindCares.cmake
│       │   ├── FindDoubleConversion.cmake
│       │   ├── FindGMock.cmake
│       │   ├── FindGflags.cmake
│       │   ├── FindGlog.cmake
│       │   ├── FindLMDB.cmake
│       │   ├── FindLibEvent.cmake
│       │   ├── FindLibUnwind.cmake
│       │   ├── FindLibiberty.cmake
│       │   ├── FindPCRE.cmake
│       │   ├── FindPCRE2.cmake
│       │   ├── FindRe2.cmake
│       │   ├── FindSodium.cmake
│       │   ├── FindXxhash.cmake
│       │   ├── FindZstd.cmake
│       │   ├── Findibverbs.cmake
│       │   ├── RustStaticLibrary.cmake
│       │   ├── fb_py_test_main.py
│       │   ├── fb_py_win_main.c
│       │   └── make_fbpy_archive.py
│       ├── LICENSE
│       ├── README.md
│       ├── getdeps/
│       │   ├── __init__.py
│       │   ├── builder.py
│       │   ├── buildopts.py
│       │   ├── cache.py
│       │   ├── cargo.py
│       │   ├── copytree.py
│       │   ├── dyndeps.py
│       │   ├── envfuncs.py
│       │   ├── errors.py
│       │   ├── expr.py
│       │   ├── fetcher.py
│       │   ├── include_rewriter.py
│       │   ├── load.py
│       │   ├── manifest.py
│       │   ├── platform.py
│       │   ├── py_wheel_builder.py
│       │   ├── runcmd.py
│       │   ├── subcmd.py
│       │   └── test/
│       │       ├── expr_test.py
│       │       ├── fixtures/
│       │       │   └── duplicate/
│       │       │       ├── foo
│       │       │       └── subdir/
│       │       │           └── foo
│       │       ├── manifest_test.py
│       │       ├── platform_test.py
│       │       ├── retry_test.py
│       │       ├── scratch_test.py
│       │       └── strip_marker_test.py
│       ├── getdeps.py
│       ├── manifests/
│       │   ├── CLI11
│       │   ├── autoconf
│       │   ├── automake
│       │   ├── benchmark
│       │   ├── blake3
│       │   ├── boost
│       │   ├── boost-python
│       │   ├── bz2
│       │   ├── c-ares
│       │   ├── cabal
│       │   ├── cachelib
│       │   ├── cinderx-3_14
│       │   ├── cinderx-main
│       │   ├── clang
│       │   ├── clang19
│       │   ├── cmake
│       │   ├── cpptoml
│       │   ├── double-conversion
│       │   ├── double-conversion-python
│       │   ├── eden
│       │   ├── edencommon
│       │   ├── exprtk
│       │   ├── fast_float
│       │   ├── fatal
│       │   ├── fb303
│       │   ├── fboss
│       │   ├── fbthrift
│       │   ├── fbthrift-python
│       │   ├── fizz
│       │   ├── fizz-python
│       │   ├── fmt
│       │   ├── fmt-python
│       │   ├── folly
│       │   ├── folly-python
│       │   ├── gcc12
│       │   ├── gcc14
│       │   ├── gflags
│       │   ├── ghc
│       │   ├── git-lfs
│       │   ├── glean
│       │   ├── glog
│       │   ├── googletest
│       │   ├── gperf
│       │   ├── hexdump
│       │   ├── hsthrift
│       │   ├── iproute2
│       │   ├── jom
│       │   ├── jq
│       │   ├── katran
│       │   ├── libaio
│       │   ├── libaio-python
│       │   ├── libbpf
│       │   ├── libcurl
│       │   ├── libdwarf
│       │   ├── libdwarf-python
│       │   ├── libelf
│       │   ├── libevent
│       │   ├── libevent-python
│       │   ├── libffi
│       │   ├── libgit2
│       │   ├── libgpiod
│       │   ├── libiberty
│       │   ├── libiberty-python
│       │   ├── libibverbs
│       │   ├── libmnl
│       │   ├── libnl
│       │   ├── liboqs
│       │   ├── libsai
│       │   ├── libsodium
│       │   ├── libtool
│       │   ├── libunwind
│       │   ├── libusb
│       │   ├── libyaml
│       │   ├── llvm
│       │   ├── lmdb
│       │   ├── lz4
│       │   ├── lz4-python
│       │   ├── magic_enum
│       │   ├── mcrouter
│       │   ├── mononoke
│       │   ├── mononoke_integration
│       │   ├── moxygen
│       │   ├── mvfst
│       │   ├── mvfst-python
│       │   ├── ncurses
│       │   ├── nghttp2
│       │   ├── ninja
│       │   ├── nlohmann-json
│       │   ├── nmap
│       │   ├── numa
│       │   ├── openr
│       │   ├── openssl
│       │   ├── osxfuse
│       │   ├── patchelf
│       │   ├── pcre2
│       │   ├── perl
│       │   ├── pexpect
│       │   ├── proxygen
│       │   ├── python
│       │   ├── python-3_14
│       │   ├── python-click
│       │   ├── python-filelock
│       │   ├── python-main
│       │   ├── python-psutil
│       │   ├── python-ptyprocess
│       │   ├── python-pyyaml
│       │   ├── python-setuptools
│       │   ├── python-setuptools-69
│       │   ├── python-six
│       │   ├── python-toml
│       │   ├── ragel
│       │   ├── range-v3
│       │   ├── rdma-core
│       │   ├── re2
│       │   ├── rebalancer
│       │   ├── ripgrep
│       │   ├── rocksdb
│       │   ├── rust-shed
│       │   ├── sapling
│       │   ├── snappy
│       │   ├── sparsemap
│       │   ├── sqlite3
│       │   ├── systemd
│       │   ├── tabulate
│       │   ├── tree
│       │   ├── wangle
│       │   ├── wangle-python
│       │   ├── watchman
│       │   ├── xxhash
│       │   ├── xz
│       │   ├── yaml-cpp
│       │   ├── zlib
│       │   ├── zlib-python
│       │   ├── zstd
│       │   └── zstd-python
│       └── patches/
│           ├── boost_1_83_0.patch
│           ├── iproute2_oss.patch
│           ├── libiberty_install_pic_lib.patch
│           └── zlib_dont_build_more_than_needed.patch
├── cmake/
│   ├── FindGMock.cmake
│   ├── FindZstd.cmake
│   ├── ProxygenCompatAliases.cmake
│   ├── ProxygenFunctions.cmake
│   ├── ProxygenTest.cmake
│   ├── TARGETS.txt
│   └── proxygen-config.cmake.in
├── cmake_uninstall.cmake.in
├── getdeps.sh
└── proxygen/
    ├── .clang-format
    ├── .clang-tidy
    ├── CMakeLists.txt
    ├── VERSION
    ├── build.sh
    ├── external/
    │   ├── CMakeLists.txt
    │   └── http_parser/
    │       ├── CONTRIBUTIONS
    │       ├── LICENSE-MIT
    │       ├── README.md
    │       ├── http_parser.h
    │       ├── http_parser_cpp.cpp
    │       └── test.c
    ├── fuzzers/
    │   └── CMakeLists.txt
    ├── httpclient/
    │   ├── CMakeLists.txt
    │   └── samples/
    │       ├── CMakeLists.txt
    │       ├── H3Datagram/
    │       │   ├── CMakeLists.txt
    │       │   └── H3DatagramClient.cpp
    │       ├── curl/
    │       │   ├── CMakeLists.txt
    │       │   ├── CurlClient.cpp
    │       │   ├── CurlClient.h
    │       │   └── CurlClientMain.cpp
    │       ├── httperf2/
    │       │   ├── CMakeLists.txt
    │       │   ├── Client.cpp
    │       │   ├── Client.h
    │       │   ├── HTTPerf2.cpp
    │       │   ├── HTTPerf2.h
    │       │   ├── HTTPerfStats.h
    │       │   └── Main.cpp
    │       └── websocket/
    │           ├── CMakeLists.txt
    │           ├── WebSocketClient.cpp
    │           ├── WebSocketClient.h
    │           └── main.cpp
    ├── httpserver/
    │   ├── CMakeLists.txt
    │   ├── Filters.h
    │   ├── HTTPServer.cpp
    │   ├── HTTPServer.h
    │   ├── HTTPServerAcceptor.cpp
    │   ├── HTTPServerAcceptor.h
    │   ├── HTTPServerOptions.h
    │   ├── HTTPTransactionHandlerAdaptor.h
    │   ├── Mocks.h
    │   ├── PushHandler.h
    │   ├── RequestHandler.h
    │   ├── RequestHandlerAdaptor.cpp
    │   ├── RequestHandlerAdaptor.h
    │   ├── RequestHandlerFactory.h
    │   ├── ResponseBuilder.h
    │   ├── ResponseHandler.h
    │   ├── ScopedHTTPServer.h
    │   ├── SignalHandler.cpp
    │   ├── SignalHandler.h
    │   ├── filters/
    │   │   ├── CompressionFilter.h
    │   │   ├── DecompressionFilter.cpp
    │   │   ├── DecompressionFilter.h
    │   │   ├── DirectResponseHandler.h
    │   │   ├── RejectConnectFilter.h
    │   │   └── tests/
    │   │       ├── CMakeLists.txt
    │   │       ├── CompressionFilterTest.cpp
    │   │       └── DecompressionFilterTest.cpp
    │   ├── samples/
    │   │   ├── echo/
    │   │   │   ├── EchoHandler.cpp
    │   │   │   ├── EchoHandler.h
    │   │   │   ├── EchoServer.cpp
    │   │   │   ├── EchoStats.h
    │   │   │   └── test/
    │   │   │       ├── CMakeLists.txt
    │   │   │       └── EchoHandlerTest.cpp
    │   │   ├── hq/
    │   │   │   ├── CMakeLists.txt
    │   │   │   ├── ConnIdLogger.h
    │   │   │   ├── FizzContext.cpp
    │   │   │   ├── FizzContext.h
    │   │   │   ├── H1QDownstreamSession.h
    │   │   │   ├── H1QUpstreamSession.h
    │   │   │   ├── H2Server.cpp
    │   │   │   ├── H2Server.h
    │   │   │   ├── HQClient.cpp
    │   │   │   ├── HQClient.h
    │   │   │   ├── HQCommandLine.cpp
    │   │   │   ├── HQCommandLine.h
    │   │   │   ├── HQLoggerHelper.cpp
    │   │   │   ├── HQLoggerHelper.h
    │   │   │   ├── HQParams.cpp
    │   │   │   ├── HQParams.h
    │   │   │   ├── HQServer.cpp
    │   │   │   ├── HQServer.h
    │   │   │   ├── HQServerModule.cpp
    │   │   │   ├── HQServerModule.h
    │   │   │   ├── InsecureVerifierDangerousDoNotUseInProduction.h
    │   │   │   ├── SampleHandlers.cpp
    │   │   │   ├── SampleHandlers.h
    │   │   │   ├── devious/
    │   │   │   │   ├── CMakeLists.txt
    │   │   │   │   ├── DeviousBaton.cpp
    │   │   │   │   ├── DeviousBaton.h
    │   │   │   │   └── test/
    │   │   │   │       ├── CMakeLists.txt
    │   │   │   │       └── DeviousBatonTests.cpp
    │   │   │   ├── main.cpp
    │   │   │   ├── pusheen.txt
    │   │   │   └── quic-interop/
    │   │   │       ├── Dockerfile
    │   │   │       ├── README.md
    │   │   │       └── run_endpoint.sh
    │   │   ├── masque/
    │   │   │   └── MasqueClient.cpp
    │   │   ├── proxy/
    │   │   │   ├── ProxyHandler.cpp
    │   │   │   ├── ProxyHandler.h
    │   │   │   ├── ProxyServer.cpp
    │   │   │   ├── ProxyStats.h
    │   │   │   └── SessionWrapper.h
    │   │   ├── push/
    │   │   │   ├── PushRequestHandler.cpp
    │   │   │   ├── PushRequestHandler.h
    │   │   │   ├── PushServer.cpp
    │   │   │   ├── PushStats.h
    │   │   │   └── pusheen.txt
    │   │   ├── static/
    │   │   │   ├── StaticHandler.cpp
    │   │   │   ├── StaticHandler.h
    │   │   │   └── StaticServer.cpp
    │   │   └── websocket/
    │   │       ├── WebSocketHandler.cpp
    │   │       ├── WebSocketHandler.h
    │   │       └── main.cpp
    │   └── tests/
    │       ├── CMakeLists.txt
    │       ├── HTTPServerTest.cpp
    │       ├── RequestHandlerAdaptorTest.cpp
    │       └── certs/
    │           ├── ca_cert.pem
    │           ├── ca_key.pem
    │           ├── client_ca_cert.pem
    │           ├── client_ca_key.pem
    │           ├── client_cert.pem
    │           ├── client_key.pem
    │           ├── generate_certs.sh
    │           ├── test_cert1.pem
    │           ├── test_cert2.pem
    │           ├── test_key1.pem
    │           └── test_key2.pem
    ├── install.sh
    └── lib/
        ├── CMakeLists.txt
        ├── dns/
        │   ├── AsyncDNSStatsCollector.cpp
        │   ├── AsyncDNSStatsCollector.h
        │   ├── CAresResolver.cpp
        │   ├── CAresResolver.h
        │   ├── CMakeLists.txt
        │   ├── CachingDNSResolver.cpp
        │   ├── CachingDNSResolver.h
        │   ├── DNSModule.cpp
        │   ├── DNSModule.h
        │   ├── DNSResolver.cpp
        │   ├── DNSResolver.h
        │   ├── FutureDNSResolver.cpp
        │   ├── FutureDNSResolver.h
        │   ├── NaiveResolutionCallback.cpp
        │   ├── NaiveResolutionCallback.h
        │   ├── Rfc6724.cpp
        │   ├── Rfc6724.h
        │   ├── SyncDNSResolver.cpp
        │   ├── SyncDNSResolver.h
        │   └── test/
        │       ├── CAresResolverTest.cpp
        │       ├── CachingDNSResolverTest.cpp
        │       ├── DNSResolverTest.cpp
        │       ├── Dummies.h
        │       ├── FutureDNSResolverTest.cpp
        │       ├── MockDNSModule.cpp
        │       ├── MockDNSModule.h
        │       ├── MockDNSResolver.h
        │       ├── Mocks.h
        │       ├── Rfc6724Test.cpp
        │       ├── SyncDNSResolverTest.cpp
        │       └── SyncDNSResolverTest.h
        ├── healthcheck/
        │   ├── CMakeLists.txt
        │   ├── PoolHealthChecker.h
        │   ├── ServerHealthCheckerCallback.cpp
        │   └── ServerHealthCheckerCallback.h
        ├── http/
        │   ├── CMakeLists.txt
        │   ├── HQConnector.cpp
        │   ├── HQConnector.h
        │   ├── HTTP3ErrorCode.cpp
        │   ├── HTTP3ErrorCode.h
        │   ├── HTTPCommonHeaders.txt
        │   ├── HTTPConnector.cpp
        │   ├── HTTPConnector.h
        │   ├── HTTPConnectorWithFizz.cpp
        │   ├── HTTPConnectorWithFizz.h
        │   ├── HTTPConstants.cpp
        │   ├── HTTPConstants.h
        │   ├── HTTPException.cpp
        │   ├── HTTPException.h
        │   ├── HTTPHeaderSize.h
        │   ├── HTTPHeaders.cpp
        │   ├── HTTPHeaders.h
        │   ├── HTTPMessage.cpp
        │   ├── HTTPMessage.h
        │   ├── HTTPMessageFilters.cpp
        │   ├── HTTPMessageFilters.h
        │   ├── HTTPMethod.cpp
        │   ├── HTTPMethod.h
        │   ├── HTTPPriorityFunctions.cpp
        │   ├── HTTPPriorityFunctions.h
        │   ├── HeaderConstants.cpp
        │   ├── HeaderConstants.h
        │   ├── ProxyStatus.cpp
        │   ├── ProxyStatus.h
        │   ├── ProxygenErrorEnum.cpp
        │   ├── ProxygenErrorEnum.h
        │   ├── RFC2616.cpp
        │   ├── RFC2616.h
        │   ├── StatusTypeEnum.cpp
        │   ├── StatusTypeEnum.h
        │   ├── SynchronizedLruQuicPskCache.cpp
        │   ├── SynchronizedLruQuicPskCache.h
        │   ├── Types.h
        │   ├── Window.cpp
        │   ├── Window.h
        │   ├── codec/
        │   │   ├── CMakeLists.txt
        │   │   ├── CapsuleCodec.cpp
        │   │   ├── CapsuleCodec.h
        │   │   ├── CodecProtocol.cpp
        │   │   ├── CodecProtocol.h
        │   │   ├── CodecUtil.cpp
        │   │   ├── CodecUtil.h
        │   │   ├── ControlMessageRateLimitFilter.h
        │   │   ├── DebugFilter.h
        │   │   ├── DefaultHTTPCodecFactory.cpp
        │   │   ├── DefaultHTTPCodecFactory.h
        │   │   ├── DirectErrorsRateLimitFilter.h
        │   │   ├── ErrorCode.cpp
        │   │   ├── ErrorCode.h
        │   │   ├── FlowControlFilter.cpp
        │   │   ├── FlowControlFilter.h
        │   │   ├── HQControlCodec.cpp
        │   │   ├── HQControlCodec.h
        │   │   ├── HQFramedCodec.cpp
        │   │   ├── HQFramedCodec.h
        │   │   ├── HQFramer.cpp
        │   │   ├── HQFramer.h
        │   │   ├── HQMultiCodec.h
        │   │   ├── HQStreamCodec.cpp
        │   │   ├── HQStreamCodec.h
        │   │   ├── HQUnidirectionalCodec.cpp
        │   │   ├── HQUnidirectionalCodec.h
        │   │   ├── HQUtils.cpp
        │   │   ├── HQUtils.h
        │   │   ├── HTTP1xCodec.cpp
        │   │   ├── HTTP1xCodec.h
        │   │   ├── HTTP2Codec.cpp
        │   │   ├── HTTP2Codec.h
        │   │   ├── HTTP2Constants.cpp
        │   │   ├── HTTP2Constants.h
        │   │   ├── HTTP2Framer.cpp
        │   │   ├── HTTP2Framer.h
        │   │   ├── HTTPBinaryCodec.cpp
        │   │   ├── HTTPBinaryCodec.h
        │   │   ├── HTTPChecks.cpp
        │   │   ├── HTTPChecks.h
        │   │   ├── HTTPCodec.h
        │   │   ├── HTTPCodecFactory.cpp
        │   │   ├── HTTPCodecFactory.h
        │   │   ├── HTTPCodecFilter.cpp
        │   │   ├── HTTPCodecFilter.h
        │   │   ├── HTTPCodecPrinter.cpp
        │   │   ├── HTTPCodecPrinter.h
        │   │   ├── HTTPParallelCodec.cpp
        │   │   ├── HTTPParallelCodec.h
        │   │   ├── HTTPRequestVerifier.h
        │   │   ├── HTTPSettings.cpp
        │   │   ├── HTTPSettings.h
        │   │   ├── HeaderDecodeInfo.cpp
        │   │   ├── HeaderDecodeInfo.h
        │   │   ├── HeadersRateLimitFilter.h
        │   │   ├── QPACKDecoderCodec.h
        │   │   ├── QPACKEncoderCodec.h
        │   │   ├── RateLimitFilter.cpp
        │   │   ├── RateLimitFilter.h
        │   │   ├── ResetsRateLimitFilter.h
        │   │   ├── SettingsId.h
        │   │   ├── TransportDirection.cpp
        │   │   ├── TransportDirection.h
        │   │   ├── compress/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CompressionInfo.h
        │   │   │   ├── HPACKCodec.cpp
        │   │   │   ├── HPACKCodec.h
        │   │   │   ├── HPACKConstants.h
        │   │   │   ├── HPACKContext.cpp
        │   │   │   ├── HPACKContext.h
        │   │   │   ├── HPACKDecodeBuffer.cpp
        │   │   │   ├── HPACKDecodeBuffer.h
        │   │   │   ├── HPACKDecoder.cpp
        │   │   │   ├── HPACKDecoder.h
        │   │   │   ├── HPACKDecoderBase.cpp
        │   │   │   ├── HPACKDecoderBase.h
        │   │   │   ├── HPACKEncodeBuffer.cpp
        │   │   │   ├── HPACKEncodeBuffer.h
        │   │   │   ├── HPACKEncoder.cpp
        │   │   │   ├── HPACKEncoder.h
        │   │   │   ├── HPACKEncoderBase.cpp
        │   │   │   ├── HPACKEncoderBase.h
        │   │   │   ├── HPACKHeader.cpp
        │   │   │   ├── HPACKHeader.h
        │   │   │   ├── HPACKHeaderName.h
        │   │   │   ├── HPACKStreamingCallback.h
        │   │   │   ├── Header.h
        │   │   │   ├── HeaderCodec.h
        │   │   │   ├── HeaderIndexingStrategy.cpp
        │   │   │   ├── HeaderIndexingStrategy.h
        │   │   │   ├── HeaderPiece.h
        │   │   │   ├── HeaderTable.cpp
        │   │   │   ├── HeaderTable.h
        │   │   │   ├── Huffman.cpp
        │   │   │   ├── Huffman.h
        │   │   │   ├── Logging.cpp
        │   │   │   ├── Logging.h
        │   │   │   ├── NoPathIndexingStrategy.cpp
        │   │   │   ├── NoPathIndexingStrategy.h
        │   │   │   ├── QPACKCodec.cpp
        │   │   │   ├── QPACKCodec.h
        │   │   │   ├── QPACKContext.cpp
        │   │   │   ├── QPACKContext.h
        │   │   │   ├── QPACKDecoder.cpp
        │   │   │   ├── QPACKDecoder.h
        │   │   │   ├── QPACKEncoder.cpp
        │   │   │   ├── QPACKEncoder.h
        │   │   │   ├── QPACKHeaderTable.cpp
        │   │   │   ├── QPACKHeaderTable.h
        │   │   │   ├── QPACKStaticHeaderTable.cpp
        │   │   │   ├── QPACKStaticHeaderTable.h
        │   │   │   ├── StaticHeaderTable.cpp
        │   │   │   ├── StaticHeaderTable.h
        │   │   │   ├── experimental/
        │   │   │   │   ├── interop/
        │   │   │   │   │   └── QPACKInterop.cpp
        │   │   │   │   └── simulator/
        │   │   │   │       ├── CMakeLists.txt
        │   │   │   │       ├── CompressionScheme.h
        │   │   │   │       ├── CompressionSimulator.cpp
        │   │   │   │       ├── CompressionSimulator.h
        │   │   │   │       ├── CompressionTypes.h
        │   │   │   │       ├── CompressionUtils.cpp
        │   │   │   │       ├── CompressionUtils.h
        │   │   │   │       ├── HPACKQueue.h
        │   │   │   │       ├── HPACKQueueTests.cpp
        │   │   │   │       ├── HPACKScheme.h
        │   │   │   │       ├── Main.cpp
        │   │   │   │       ├── QMINScheme.h
        │   │   │   │       ├── QPACKScheme.h
        │   │   │   │       └── SimStreamingCallback.h
        │   │   │   └── test/
        │   │   │       ├── CMakeLists.txt
        │   │   │       ├── EncoderBenchmark.cpp
        │   │   │       ├── HPACKBenchmark.cpp
        │   │   │       ├── HPACKBufferTests.cpp
        │   │   │       ├── HPACKCodecTests.cpp
        │   │   │       ├── HPACKContextTests.cpp
        │   │   │       ├── HPACKHeaderTests.cpp
        │   │   │       ├── HTTPArchive.cpp
        │   │   │       ├── HTTPArchive.h
        │   │   │       ├── HeaderPieceTests.cpp
        │   │   │       ├── HeaderTableTests.cpp
        │   │   │       ├── HuffmanTests.cpp
        │   │   │       ├── LoggingTests.cpp
        │   │   │       ├── QPACKCodecTests.cpp
        │   │   │       ├── QPACKContextTests.cpp
        │   │   │       ├── QPACKHeaderTableTests.cpp
        │   │   │       ├── RFCExamplesTests.cpp
        │   │   │       ├── TestStreamingCallback.h
        │   │   │       ├── TestUtil.cpp
        │   │   │       └── TestUtil.h
        │   │   ├── test/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CapsuleCodecTest.cpp
        │   │   │   ├── CodecUtilTests.cpp
        │   │   │   ├── CrossCodecTest.cpp
        │   │   │   ├── DefaultHTTPCodecFactoryTest.cpp
        │   │   │   ├── FilterTests.cpp
        │   │   │   ├── HQCodecTest.cpp
        │   │   │   ├── HQFramerTest.cpp
        │   │   │   ├── HQFramerTest.h
        │   │   │   ├── HQMultiCodecTest.cpp
        │   │   │   ├── HTTP1xCodecTest.cpp
        │   │   │   ├── HTTP2CodecTest.cpp
        │   │   │   ├── HTTP2FramerTest.cpp
        │   │   │   ├── HTTP2FramerTest.h
        │   │   │   ├── HTTPBinaryCodecTest.cpp
        │   │   │   ├── HTTPParallelCodecTest.h
        │   │   │   ├── MockHTTPCodec.h
        │   │   │   ├── TestUtils.cpp
        │   │   │   └── TestUtils.h
        │   │   └── webtransport/
        │   │       ├── CMakeLists.txt
        │   │       ├── WebTransportCapsuleCodec.cpp
        │   │       ├── WebTransportCapsuleCodec.h
        │   │       ├── WebTransportFramer.cpp
        │   │       ├── WebTransportFramer.h
        │   │       └── test/
        │   │           ├── WebTransportCapsuleCodecTest.cpp
        │   │           └── WebTransportFramerTest.cpp
        │   ├── connpool/
        │   │   ├── CMakeLists.txt
        │   │   ├── Endpoint.h
        │   │   ├── ServerIdleSessionController.cpp
        │   │   ├── ServerIdleSessionController.h
        │   │   ├── SessionHolder.cpp
        │   │   ├── SessionHolder.h
        │   │   ├── SessionPool.cpp
        │   │   ├── SessionPool.h
        │   │   ├── ThreadIdleSessionController.cpp
        │   │   ├── ThreadIdleSessionController.h
        │   │   └── test/
        │   │       ├── CMakeLists.txt
        │   │       ├── SessionPoolTest.cpp
        │   │       └── SessionPoolTestFixture.h
        │   ├── coro/
        │   │   ├── CMakeLists.txt
        │   │   ├── HTTPBodyEventQueue.cpp
        │   │   ├── HTTPBodyEventQueue.h
        │   │   ├── HTTPByteEventHelpers.cpp
        │   │   ├── HTTPByteEventHelpers.h
        │   │   ├── HTTPByteEvents.h
        │   │   ├── HTTPCoroSession.cpp
        │   │   ├── HTTPCoroSession.h
        │   │   ├── HTTPError.cpp
        │   │   ├── HTTPError.h
        │   │   ├── HTTPEvents.cpp
        │   │   ├── HTTPEvents.h
        │   │   ├── HTTPFilterFactoryHandler.cpp
        │   │   ├── HTTPFilterFactoryHandler.h
        │   │   ├── HTTPFixedSource.h
        │   │   ├── HTTPHandlerChain.cpp
        │   │   ├── HTTPHandlerChain.h
        │   │   ├── HTTPHybridSource.h
        │   │   ├── HTTPSource.h
        │   │   ├── HTTPSourceFilter.cpp
        │   │   ├── HTTPSourceFilter.h
        │   │   ├── HTTPSourceFilterChain.h
        │   │   ├── HTTPSourceHolder.h
        │   │   ├── HTTPSourceReader.cpp
        │   │   ├── HTTPSourceReader.h
        │   │   ├── HTTPStreamSource.cpp
        │   │   ├── HTTPStreamSource.h
        │   │   ├── HTTPStreamSourceHolder.h
        │   │   ├── HTTPStreamSourceSink.cpp
        │   │   ├── HTTPStreamSourceSink.h
        │   │   ├── HTTPStreamSourceSinkFactory.h
        │   │   ├── HTTPTransactionAdaptorSource.cpp
        │   │   ├── HTTPTransactionAdaptorSource.h
        │   │   ├── benchmark/
        │   │   │   └── HTTPCoroBenchmark.cpp
        │   │   ├── client/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CertReloadSessionPool.cpp
        │   │   │   ├── CertReloadSessionPool.h
        │   │   │   ├── CoroDNSResolver.cpp
        │   │   │   ├── CoroDNSResolver.h
        │   │   │   ├── HTTPClient.cpp
        │   │   │   ├── HTTPClient.h
        │   │   │   ├── HTTPClientConnectionCache.cpp
        │   │   │   ├── HTTPClientConnectionCache.h
        │   │   │   ├── HTTPCoroConnector.cpp
        │   │   │   ├── HTTPCoroConnector.h
        │   │   │   ├── HTTPCoroSessionPool.cpp
        │   │   │   ├── HTTPCoroSessionPool.h
        │   │   │   ├── HTTPSessionFactory.h
        │   │   │   ├── main.cpp
        │   │   │   ├── samples/
        │   │   │   │   └── cocurl/
        │   │   │   │       ├── CMakeLists.txt
        │   │   │   │       └── CoCurl.cpp
        │   │   │   └── test/
        │   │   │       ├── CoroDNSResolverTests.cpp
        │   │   │       ├── HTTPClientTests.cpp
        │   │   │       ├── HTTPClientTestsCommon.cpp
        │   │   │       ├── HTTPClientTestsCommon.h
        │   │   │       ├── HTTPConnectIntegrationTest.cpp
        │   │   │       ├── MockHTTPClient.h
        │   │   │       └── certs/
        │   │   │           ├── test_cert1.pem
        │   │   │           └── test_key1.pem
        │   │   ├── filters/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CompressionFilter.cpp
        │   │   │   ├── CompressionFilter.h
        │   │   │   ├── CompressionFilterFactory.h
        │   │   │   ├── DecompressionFilter.cpp
        │   │   │   ├── DecompressionFilter.h
        │   │   │   ├── DecompressionFilterFactory.cpp
        │   │   │   ├── DecompressionFilterFactory.h
        │   │   │   ├── FilterFactory.h
        │   │   │   ├── HTTPRedirectHandler.cpp
        │   │   │   ├── HTTPRedirectHandler.h
        │   │   │   ├── Logger.cpp
        │   │   │   ├── Logger.h
        │   │   │   ├── MutateFilter.cpp
        │   │   │   ├── MutateFilter.h
        │   │   │   ├── RateLimitFilter.cpp
        │   │   │   ├── RateLimitFilter.h
        │   │   │   ├── RequestContextFilterFactory.cpp
        │   │   │   ├── RequestContextFilterFactory.h
        │   │   │   ├── ServerFilterFactory.h
        │   │   │   ├── StatsFilterUtil.cpp
        │   │   │   ├── StatsFilterUtil.h
        │   │   │   ├── Status1xxFilter.cpp
        │   │   │   ├── Status1xxFilter.h
        │   │   │   ├── TransformFilter.cpp
        │   │   │   ├── TransformFilter.h
        │   │   │   ├── VisitorFilter.cpp
        │   │   │   ├── VisitorFilter.h
        │   │   │   └── test/
        │   │   │       ├── CompressionFilterTests.cpp
        │   │   │       ├── DecompressionFilterTest.cpp
        │   │   │       ├── FakeServerStats.cpp
        │   │   │       ├── FakeServerStats.h
        │   │   │       ├── HTTPRedirectHandlerTest.cpp
        │   │   │       ├── LoggerTest.cpp
        │   │   │       ├── MutateFilterTest.cpp
        │   │   │       ├── RateLimitFilterTest.cpp
        │   │   │       ├── RequestContextFilterFactoryTest.cpp
        │   │   │       ├── Status1xxFilterTest.cpp
        │   │   │       ├── TransformFilterTest.cpp
        │   │   │       └── VisitorFilterTest.cpp
        │   │   ├── server/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── HTTPCoroAcceptor.cpp
        │   │   │   ├── HTTPCoroAcceptor.h
        │   │   │   ├── HTTPServer.cpp
        │   │   │   ├── HTTPServer.h
        │   │   │   ├── ScopedHTTPServer.h
        │   │   │   ├── handlers/
        │   │   │   │   ├── CMakeLists.txt
        │   │   │   │   ├── ExpectContinueWrapperHandler.cpp
        │   │   │   │   ├── ExpectContinueWrapperHandler.h
        │   │   │   │   └── test/
        │   │   │   │       └── ExpectContinueWrapperHandlerTest.cpp
        │   │   │   ├── samples/
        │   │   │   │   ├── echo/
        │   │   │   │   │   └── EchoServer.cpp
        │   │   │   │   ├── fwdproxy/
        │   │   │   │   │   ├── ConnectSource.h
        │   │   │   │   │   └── FwdProxyServer.cpp
        │   │   │   │   └── proxy/
        │   │   │   │       └── ProxyServer.cpp
        │   │   │   └── test/
        │   │   │       ├── HTTPServerTest.cpp
        │   │   │       └── certs/
        │   │   │           ├── test_cert1.pem
        │   │   │           ├── test_cert2.pem
        │   │   │           ├── test_key1.pem
        │   │   │           └── test_key2.pem
        │   │   ├── test/
        │   │   │   ├── HTTPCoroSessionTests.cpp
        │   │   │   ├── HTTPCoroSessionTests.h
        │   │   │   ├── HTTPDownstreamCoroSessionTests.cpp
        │   │   │   ├── HTTPFilterFactoryHandlerTests.cpp
        │   │   │   ├── HTTPHandlerChainTests.cpp
        │   │   │   ├── HTTPSourceTests.cpp
        │   │   │   ├── HTTPStreamSourceSinkTests.cpp
        │   │   │   ├── HTTPTestSources.h
        │   │   │   ├── HTTPTransactionAdaptorSourceTest.cpp
        │   │   │   ├── HTTPUpstreamCoroSessionTests.cpp
        │   │   │   ├── HttpWtUpstreamTests.cpp
        │   │   │   ├── Mocks.h
        │   │   │   ├── TestUtils.h
        │   │   │   └── WindowContainerTests.cpp
        │   │   ├── transport/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CoroSSLTransport.cpp
        │   │   │   ├── CoroSSLTransport.h
        │   │   │   ├── HTTPConnectAsyncTransport.cpp
        │   │   │   ├── HTTPConnectAsyncTransport.h
        │   │   │   ├── HTTPConnectStream.cpp
        │   │   │   ├── HTTPConnectStream.h
        │   │   │   ├── HTTPConnectTransport.cpp
        │   │   │   ├── HTTPConnectTransport.h
        │   │   │   └── test/
        │   │   │       ├── Client.cpp
        │   │   │       ├── CoroSSLTransportTest.cpp
        │   │   │       ├── HTTPConnectTransportTest.cpp
        │   │   │       ├── HTTPConnectTransportTest.h
        │   │   │       ├── TestCoroTransport.cpp
        │   │   │       └── TestCoroTransport.h
        │   │   └── util/
        │   │       ├── AwaitableKeepAlive.h
        │   │       ├── CMakeLists.txt
        │   │       ├── CancellableBaton.cpp
        │   │       ├── CancellableBaton.h
        │   │       ├── CoroWtSession.cpp
        │   │       ├── CoroWtSession.h
        │   │       ├── DetachableExecutor.cpp
        │   │       ├── DetachableExecutor.h
        │   │       ├── ExecutorSourceFilter.cpp
        │   │       ├── ExecutorSourceFilter.h
        │   │       ├── Refcount.h
        │   │       ├── TimedBaton.h
        │   │       ├── Transport.cpp
        │   │       ├── Transport.h
        │   │       ├── WindowContainer.h
        │   │       └── test/
        │   │           ├── AwaitableKeepAliveTest.cpp
        │   │           ├── CancellableBatonTest.cpp
        │   │           ├── DetachableExecutorTest.cpp
        │   │           ├── TestHelpers.h
        │   │           └── TimedBatonTest.cpp
        │   ├── experimental/
        │   │   ├── CMakeLists.txt
        │   │   ├── RFC1867.cpp
        │   │   ├── RFC1867.h
        │   │   └── test/
        │   │       └── RFC1867Test.cpp
        │   ├── gen_HTTPCommonHeaders.sh
        │   ├── observer/
        │   │   ├── CMakeLists.txt
        │   │   ├── HTTPSessionObserverContainer.h
        │   │   ├── HTTPSessionObserverInterface.cpp
        │   │   ├── HTTPSessionObserverInterface.h
        │   │   ├── HTTPTransactionObserverContainer.h
        │   │   ├── HTTPTransactionObserverInterface.cpp
        │   │   └── HTTPTransactionObserverInterface.h
        │   ├── session/
        │   │   ├── AckLatencyEvent.h
        │   │   ├── ByteEventTracker.cpp
        │   │   ├── ByteEventTracker.h
        │   │   ├── ByteEvents.cpp
        │   │   ├── ByteEvents.h
        │   │   ├── CMakeLists.txt
        │   │   ├── CodecErrorResponseHandler.cpp
        │   │   ├── CodecErrorResponseHandler.h
        │   │   ├── HQByteEventTracker.cpp
        │   │   ├── HQByteEventTracker.h
        │   │   ├── HQDownstreamSession.cpp
        │   │   ├── HQDownstreamSession.h
        │   │   ├── HQSession.cpp
        │   │   ├── HQSession.h
        │   │   ├── HQStreamBase.cpp
        │   │   ├── HQStreamBase.h
        │   │   ├── HQStreamDispatcher.cpp
        │   │   ├── HQStreamDispatcher.h
        │   │   ├── HQUpstreamSession.cpp
        │   │   ├── HQUpstreamSession.h
        │   │   ├── HTTP2PriorityQueue.cpp
        │   │   ├── HTTP2PriorityQueue.h
        │   │   ├── HTTPDefaultSessionCodecFactory.cpp
        │   │   ├── HTTPDefaultSessionCodecFactory.h
        │   │   ├── HTTPDirectResponseHandler.cpp
        │   │   ├── HTTPDirectResponseHandler.h
        │   │   ├── HTTPDownstreamSession.cpp
        │   │   ├── HTTPDownstreamSession.h
        │   │   ├── HTTPErrorPage.cpp
        │   │   ├── HTTPErrorPage.h
        │   │   ├── HTTPEvent.cpp
        │   │   ├── HTTPEvent.h
        │   │   ├── HTTPSession.cpp
        │   │   ├── HTTPSession.h
        │   │   ├── HTTPSessionAcceptor.cpp
        │   │   ├── HTTPSessionAcceptor.h
        │   │   ├── HTTPSessionActivityTracker.cpp
        │   │   ├── HTTPSessionActivityTracker.h
        │   │   ├── HTTPSessionBase.cpp
        │   │   ├── HTTPSessionBase.h
        │   │   ├── HTTPSessionController.h
        │   │   ├── HTTPSessionStats.h
        │   │   ├── HTTPTransaction.cpp
        │   │   ├── HTTPTransaction.h
        │   │   ├── HTTPTransactionEgressSM.cpp
        │   │   ├── HTTPTransactionEgressSM.h
        │   │   ├── HTTPTransactionIngressSM.cpp
        │   │   ├── HTTPTransactionIngressSM.h
        │   │   ├── HTTPUpstreamSession.cpp
        │   │   ├── HTTPUpstreamSession.h
        │   │   ├── QuicProtocolInfo.h
        │   │   ├── SecondaryAuthManager.cpp
        │   │   ├── SecondaryAuthManager.h
        │   │   ├── SecondaryAuthManagerBase.h
        │   │   ├── ServerPushLifecycle.h
        │   │   ├── SimpleController.cpp
        │   │   ├── SimpleController.h
        │   │   ├── TTLBAStats.h
        │   │   ├── TransactionByteEvents.h
        │   │   ├── WebTransportFilter.h
        │   │   └── test/
        │   │       ├── ByteEventTrackerMocks.h
        │   │       ├── ByteEventTrackerTest.cpp
        │   │       ├── CMakeLists.txt
        │   │       ├── DownstreamTransactionTest.cpp
        │   │       ├── HQByteEventTrackerTest.cpp
        │   │       ├── HQDownstreamSessionTest.cpp
        │   │       ├── HQDownstreamSessionTest.h
        │   │       ├── HQSessionMocks.h
        │   │       ├── HQSessionMocksTest.cpp
        │   │       ├── HQSessionTestCommon.cpp
        │   │       ├── HQSessionTestCommon.h
        │   │       ├── HQStreamBaseTest.cpp
        │   │       ├── HQStreamDispatcherTest.cpp
        │   │       ├── HQUpstreamSessionTest.cpp
        │   │       ├── HQUpstreamSessionTest.h
        │   │       ├── HTTP2PriorityQueueBench.cpp
        │   │       ├── HTTP2PriorityQueueTest.cpp
        │   │       ├── HTTPDefaultSessionCodecFactoryTest.cpp
        │   │       ├── HTTPDownstreamSessionTest.cpp
        │   │       ├── HTTPSessionAcceptorTest.cpp
        │   │       ├── HTTPSessionActivityTrackerTest.cpp
        │   │       ├── HTTPSessionBenchmark.cpp
        │   │       ├── HTTPSessionMocks.h
        │   │       ├── HTTPSessionTest.h
        │   │       ├── HTTPTransactionMocks.h
        │   │       ├── HTTPTransactionSMTest.cpp
        │   │       ├── HTTPTransactionTest.cpp
        │   │       ├── HTTPTransactionWebTransportTest.cpp
        │   │       ├── HTTPUpstreamSessionTest.cpp
        │   │       ├── MockByteEventTracker.h
        │   │       ├── MockCodecDownstreamTest.cpp
        │   │       ├── MockHTTPSessionStats.h
        │   │       ├── MockHTTPTransactionObserver.h
        │   │       ├── MockQuicSocketDriver.h
        │   │       ├── MockSecondaryAuthManager.h
        │   │       ├── MockSessionObserver.h
        │   │       ├── SecondaryAuthManagerTest.cpp
        │   │       ├── TestUtils.cpp
        │   │       ├── TestUtils.h
        │   │       ├── WebTransportFilterTest.cpp
        │   │       ├── test_cert1.key
        │   │       └── test_cert1.pem
        │   ├── sink/
        │   │   ├── CMakeLists.txt
        │   │   ├── FlowControlInfo.h
        │   │   ├── HTTPSink.h
        │   │   ├── HTTPTransactionSink.cpp
        │   │   ├── HTTPTransactionSink.h
        │   │   ├── HTTPTunnelSink.cpp
        │   │   ├── HTTPTunnelSink.h
        │   │   └── test/
        │   │       └── HTTPConnectSinkTest.cpp
        │   ├── stats/
        │   │   ├── ConnectionStats.cpp
        │   │   ├── ConnectionStats.h
        │   │   ├── HTTPCodecStats.cpp
        │   │   ├── HTTPCodecStats.h
        │   │   ├── HTTPCodecStatsFilter.cpp
        │   │   ├── HTTPCodecStatsFilter.h
        │   │   ├── HeaderCodecStats.cpp
        │   │   ├── HeaderCodecStats.h
        │   │   ├── HttpServerStats.h
        │   │   ├── ResponseCodeStatsMinute.cpp
        │   │   ├── ResponseCodeStatsMinute.h
        │   │   ├── TLResponseCodeStats.cpp
        │   │   ├── TLResponseCodeStats.h
        │   │   ├── ThreadLocalHTTPSessionStats.cpp
        │   │   └── ThreadLocalHTTPSessionStats.h
        │   ├── structuredheaders/
        │   │   ├── CMakeLists.txt
        │   │   ├── StructuredHeadersBuffer.cpp
        │   │   ├── StructuredHeadersBuffer.h
        │   │   ├── StructuredHeadersConstants.cpp
        │   │   ├── StructuredHeadersConstants.h
        │   │   ├── StructuredHeadersDecoder.cpp
        │   │   ├── StructuredHeadersDecoder.h
        │   │   ├── StructuredHeadersEncoder.cpp
        │   │   ├── StructuredHeadersEncoder.h
        │   │   ├── StructuredHeadersUtilities.cpp
        │   │   ├── StructuredHeadersUtilities.h
        │   │   └── test/
        │   │       ├── CMakeLists.txt
        │   │       ├── StructuredHeadersBufferTest.cpp
        │   │       ├── StructuredHeadersDecoderTest.cpp
        │   │       ├── StructuredHeadersEncoderTest.cpp
        │   │       ├── StructuredHeadersStandardTest.cpp
        │   │       └── StructuredHeadersUtilitiesTest.cpp
        │   ├── test/
        │   │   ├── CMakeLists.txt
        │   │   ├── HTTPCommonHeadersTests.cpp
        │   │   ├── HTTPConnectorWithFizzTest.cpp
        │   │   ├── HTTPHeadersBenchmark.cpp
        │   │   ├── HTTPMessageFilterTest.cpp
        │   │   ├── HTTPMessageTest.cpp
        │   │   ├── HTTPPriorityFunctionsTest.cpp
        │   │   ├── MockHTTPHeaders.h
        │   │   ├── MockHTTPMessageFilter.h
        │   │   ├── ProxyStatusTest.cpp
        │   │   ├── RFC2616Test.cpp
        │   │   └── WindowTest.cpp
        │   └── webtransport/
        │       ├── CMakeLists.txt
        │       ├── FlowController.h
        │       ├── HTTPWebTransport.cpp
        │       ├── HTTPWebTransport.h
        │       ├── QuicWebTransport.cpp
        │       ├── QuicWebTransport.h
        │       ├── QuicWtSession.cpp
        │       ├── QuicWtSession.h
        │       ├── StreamPriorityQueue.h
        │       ├── WebTransport.cpp
        │       ├── WebTransport.h
        │       ├── WebTransportImpl.cpp
        │       ├── WebTransportImpl.h
        │       ├── WtEgressContainer.cpp
        │       ├── WtEgressContainer.h
        │       ├── WtStreamManager.cpp
        │       ├── WtStreamManager.h
        │       ├── WtUtils.cpp
        │       ├── WtUtils.h
        │       └── test/
        │           ├── CMakeLists.txt
        │           ├── FakeSharedWebTransport.h
        │           ├── FlowControllerTest.cpp
        │           ├── Mocks.h
        │           ├── QuicWebTransportTest.cpp
        │           ├── QuicWtSessionTest.cpp
        │           ├── WebTransportAPITest.cpp
        │           └── WtStreamManagerTest.cpp
        ├── pools/
        │   └── generators/
        │       ├── CMakeLists.txt
        │       ├── FileServerListGenerator.cpp
        │       ├── FileServerListGenerator.h
        │       ├── MemberGroupConfig.h
        │       ├── ServerConfig.h
        │       ├── ServerListGenerator.cpp
        │       ├── ServerListGenerator.h
        │       └── coro/
        │           ├── CMakeLists.txt
        │           ├── CoroServerListGenerator.h
        │           ├── FileCoroServerListGenerator.cpp
        │           ├── FileCoroServerListGenerator.h
        │           ├── JsonFileCoroServerListGenerator.cpp
        │           ├── JsonFileCoroServerListGenerator.h
        │           ├── PlainTextFileCoroServerListGenerator.cpp
        │           └── PlainTextFileCoroServerListGenerator.h
        ├── sampling/
        │   ├── CMakeLists.txt
        │   ├── MultiSampled.h
        │   ├── Sampled.h
        │   ├── Sampling.cpp
        │   ├── Sampling.h
        │   ├── SamplingFunctions.h
        │   └── test/
        │       ├── CMakeLists.txt
        │       └── SamplingTest.cpp
        ├── services/
        │   ├── AcceptorConfiguration.h
        │   ├── CMakeLists.txt
        │   ├── HTTPAcceptor.h
        │   ├── RequestWorkerThread.cpp
        │   ├── RequestWorkerThread.h
        │   ├── RequestWorkerThreadNoExecutor.cpp
        │   ├── RequestWorkerThreadNoExecutor.h
        │   ├── Service.cpp
        │   ├── Service.h
        │   ├── ServiceConfiguration.h
        │   ├── ServiceWorker.h
        │   ├── WorkerThread.cpp
        │   ├── WorkerThread.h
        │   └── test/
        │       ├── AcceptorTest.cpp
        │       ├── CMakeLists.txt
        │       └── RequestWorkerThreadTest.cpp
        ├── ssl/
        │   ├── CMakeLists.txt
        │   ├── ProxygenSSL.h
        │   ├── ThreadLocalSSLStats.cpp
        │   └── ThreadLocalSSLStats.h
        ├── stats/
        │   ├── BaseStats.cpp
        │   ├── BaseStats.h
        │   ├── PeriodicStats.h
        │   ├── PeriodicStatsDataBase.h
        │   ├── ResourceData.h
        │   ├── ResourceStats.cpp
        │   ├── ResourceStats.h
        │   ├── gen_StatsWrapper.sh
        │   └── test/
        │       ├── BaseStatsTest.cpp
        │       ├── CMakeLists.txt
        │       ├── MockARLResourceStats.h
        │       ├── MockResources.h
        │       ├── PeriodicStatsTest.cpp
        │       ├── PeriodicStatsTestHelper.h
        │       ├── ResourceDataTest.cpp
        │       └── ResourceStatsTest.cpp
        ├── test/
        │   ├── CMakeLists.txt
        │   ├── TestAsyncTransport.cpp
        │   ├── TestAsyncTransport.h
        │   └── TestMain.cpp
        ├── transport/
        │   ├── AsyncUDPSocketFactory.cpp
        │   ├── AsyncUDPSocketFactory.h
        │   ├── CMakeLists.txt
        │   ├── ConnectUDPUtils.cpp
        │   ├── ConnectUDPUtils.h
        │   ├── H3DatagramAsyncSocket.cpp
        │   ├── H3DatagramAsyncSocket.h
        │   ├── PersistentFizzPskCache.cpp
        │   ├── PersistentFizzPskCache.h
        │   ├── PersistentQuicPskCache.cpp
        │   ├── PersistentQuicPskCache.h
        │   ├── PersistentQuicTokenCache.cpp
        │   ├── PersistentQuicTokenCache.h
        │   └── test/
        │       ├── AsyncUDPSocketFactoryTest.cpp
        │       ├── CMakeLists.txt
        │       ├── ConnectUDPUtilsTest.cpp
        │       ├── H3DatagramAsyncSocketTest.cpp
        │       ├── H3DatagramAsyncSocketTest.h
        │       ├── MockAsyncTransportCertificate.h
        │       ├── PersistentFizzPskCacheTest.cpp
        │       └── PersistentQuicPskCacheTest.cpp
        └── utils/
            ├── AcceptorAddress.h
            ├── AsyncTimeoutSet.cpp
            ├── AsyncTimeoutSet.h
            ├── CMakeLists.txt
            ├── CobHelper.h
            ├── CompressionFilterUtils.h
            ├── ConditionalGate.h
            ├── ConsistentHash.h
            ├── CryptUtil.cpp
            ├── CryptUtil.h
            ├── Exception.cpp
            ├── Exception.h
            ├── Export.h
            ├── FilterChain.h
            ├── HTTPTime.cpp
            ├── HTTPTime.h
            ├── Logging.cpp
            ├── Logging.h
            ├── NullTraceEventObserver.h
            ├── ParseURL.cpp
            ├── ParseURL.h
            ├── PerfectIndexMap.h
            ├── RendezvousHash.cpp
            ├── RendezvousHash.h
            ├── SafePathUtils.cpp
            ├── SafePathUtils.h
            ├── StateMachine.h
            ├── StreamCompressor.h
            ├── StreamDecompressor.h
            ├── TestUtils.h
            ├── Time.h
            ├── TraceEvent.cpp
            ├── TraceEvent.h
            ├── TraceEventContext.cpp
            ├── TraceEventContext.h
            ├── TraceEventObserver.h
            ├── URL.h
            ├── UnionBasedStatic.h
            ├── UtilInl.h
            ├── WeakRefCountedPtr.h
            ├── WheelTimerInstance.cpp
            ├── WheelTimerInstance.h
            ├── ZlibStreamCompressor.cpp
            ├── ZlibStreamCompressor.h
            ├── ZlibStreamDecompressor.cpp
            ├── ZlibStreamDecompressor.h
            ├── ZstdStreamCompressor.cpp
            ├── ZstdStreamCompressor.h
            ├── ZstdStreamDecompressor.cpp
            ├── ZstdStreamDecompressor.h
            ├── gen_perfect_hash_table.sh
            ├── gen_trace_event_constants.py
            ├── perfect_hash_table_template.cpp.gperf
            ├── perfect_hash_table_template.h
            ├── samples/
            │   ├── TraceEventType.txt
            │   └── TraceFieldType.txt
            └── test/
                ├── AsyncTimeoutSetTest.cpp
                ├── CMakeLists.txt
                ├── CompressionFilterUtilsTest.cpp
                ├── ConditionalGateTest.cpp
                ├── CryptUtilTest.cpp
                ├── GenericFilterTest.cpp
                ├── HTTPTimeTest.cpp
                ├── LoggingTests.cpp
                ├── MockTime.h
                ├── ParseURLTest.cpp
                ├── PerfectIndexMapBenchmark.cpp
                ├── PerfectIndexMapTest.cpp
                ├── RendezvousHashTest.cpp
                ├── TimeTest.cpp
                ├── TraceEventTest.cpp
                ├── URLTest.cpp
                ├── UtilTest.cpp
                ├── WeakRefCountedPtrTest.cpp
                ├── ZlibTests.cpp
                └── ZstdTests.cpp

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"


================================================
FILE: .github/workflows/TagIt.yml
================================================
on:
  push:
    tags:
      # Only match TagIt tags, which always start with this prefix
      - 'v20*'

name: TagIt

permissions:
  contents: read

jobs:
  build:
    permissions:
      contents: write  # for actions/create-release to create a release
    name: Release
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v6
      - name: Archive project
        id: archive_project
        run: |
          FILE_NAME=${GITHUB_REPOSITORY#*/}-${GITHUB_REF##*/}
          git archive ${{ github.ref }} -o ${FILE_NAME}.zip
          git archive ${{ github.ref }} -o ${FILE_NAME}.tar.gz
          echo "file_name=${FILE_NAME}" >> $GITHUB_OUTPUT
      - name: Compute digests
        id: compute_digests
        run: |
          echo "tgz_256=$(openssl dgst -sha256 ${{ steps.archive_project.outputs.file_name }}.tar.gz)" >> $GITHUB_OUTPUT
          echo "tgz_512=$(openssl dgst -sha512 ${{ steps.archive_project.outputs.file_name }}.tar.gz)" >> $GITHUB_OUTPUT
          echo "zip_256=$(openssl dgst -sha256 ${{ steps.archive_project.outputs.file_name }}.zip)" >> $GITHUB_OUTPUT
          echo "zip_512=$(openssl dgst -sha512 ${{ steps.archive_project.outputs.file_name }}.zip)" >> $GITHUB_OUTPUT
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: ${{ github.ref }}
          body: |
            Automated release from TagIt
            <details>
              <summary>File Hashes</summary>
              <ul>
                <li>${{ steps.compute_digests.outputs.zip_256 }}</li>
                <li>${{ steps.compute_digests.outputs.zip_512 }}</li>
                <li>${{ steps.compute_digests.outputs.tgz_256 }}</li>
                <li>${{ steps.compute_digests.outputs.tgz_512 }}</li>
              </ul>
            </details>
          draft: false
          prerelease: false
      - name: Upload zip
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./${{ steps.archive_project.outputs.file_name }}.zip
          asset_name: ${{ steps.archive_project.outputs.file_name }}.zip
          asset_content_type: application/zip
      - name: Upload tar.gz
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./${{ steps.archive_project.outputs.file_name }}.tar.gz
          asset_name: ${{ steps.archive_project.outputs.file_name }}.tar.gz
          asset_content_type: application/gzip


================================================
FILE: .github/workflows/close_stale.yml
================================================
name: Close inactive issues
on:
  schedule:
    - cron: "30 1 * * *"

jobs:
  close-issues:
    runs-on: ubuntu-latest
    permissions:
      issues: write
    steps:
      - uses: actions/stale@v9
        with:
          days-before-issue-stale: -1
          days-before-issue-close: 14
          stale-issue-label: "need-input"
          stale-issue-message: "This issue is stale because it has been open too long with no activity."
          close-issue-message: "This issue was closed because it has been inactive for two weeks since being marked as need-input."
          days-before-pr-stale: -1
          days-before-pr-close: -1
          repo-token: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/getdeps_linux.yml
================================================
# This file was @generated by getdeps.py

name: linux

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

permissions:
  contents: read  #  to fetch code (actions/checkout)

jobs:
  build:
    runs-on: ubuntu-22.04
    steps:
    - uses: actions/checkout@v6
    - name: Update system package info
      run: sudo --preserve-env=http_proxy apt-get update
    - name: Install system deps
      run: sudo --preserve-env=http_proxy python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive proxygen && sudo --preserve-env=http_proxy python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive patchelf
    - id: paths
      name: Query paths
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages query-paths --recursive --src-dir=. proxygen  >> "$GITHUB_OUTPUT"
    - name: Fetch ninja
      if: ${{ steps.paths.outputs.ninja_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests ninja
    - name: Fetch cmake
      if: ${{ steps.paths.outputs.cmake_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests cmake
    - name: Fetch c-ares
      if: ${{ steps.paths.outputs.c-ares_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests c-ares
    - name: Fetch zlib
      if: ${{ steps.paths.outputs.zlib_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zlib
    - name: Fetch zstd
      if: ${{ steps.paths.outputs.zstd_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zstd
    - name: Fetch boost
      if: ${{ steps.paths.outputs.boost_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests boost
    - name: Fetch double-conversion
      if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests double-conversion
    - name: Fetch fast_float
      if: ${{ steps.paths.outputs.fast_float_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fast_float
    - name: Fetch fmt
      if: ${{ steps.paths.outputs.fmt_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fmt
    - name: Fetch gflags
      if: ${{ steps.paths.outputs.gflags_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests gflags
    - name: Fetch glog
      if: ${{ steps.paths.outputs.glog_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests glog
    - name: Fetch googletest
      if: ${{ steps.paths.outputs.googletest_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests googletest
    - name: Fetch libaio
      if: ${{ steps.paths.outputs.libaio_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libaio
    - name: Fetch libdwarf
      if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libdwarf
    - name: Fetch libevent
      if: ${{ steps.paths.outputs.libevent_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libevent
    - name: Fetch lz4
      if: ${{ steps.paths.outputs.lz4_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests lz4
    - name: Fetch snappy
      if: ${{ steps.paths.outputs.snappy_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests snappy
    - name: Fetch openssl
      if: ${{ steps.paths.outputs.openssl_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests openssl
    - name: Fetch liboqs
      if: ${{ steps.paths.outputs.liboqs_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests liboqs
    - name: Fetch autoconf
      if: ${{ steps.paths.outputs.autoconf_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests autoconf
    - name: Fetch automake
      if: ${{ steps.paths.outputs.automake_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests automake
    - name: Fetch libtool
      if: ${{ steps.paths.outputs.libtool_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libtool
    - name: Fetch gperf
      if: ${{ steps.paths.outputs.gperf_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests gperf
    - name: Fetch libiberty
      if: ${{ steps.paths.outputs.libiberty_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libiberty
    - name: Fetch libsodium
      if: ${{ steps.paths.outputs.libsodium_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libsodium
    - name: Fetch libunwind
      if: ${{ steps.paths.outputs.libunwind_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libunwind
    - name: Fetch xz
      if: ${{ steps.paths.outputs.xz_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests xz
    - name: Fetch folly
      if: ${{ steps.paths.outputs.folly_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests folly
    - name: Fetch fizz
      if: ${{ steps.paths.outputs.fizz_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fizz
    - name: Fetch mvfst
      if: ${{ steps.paths.outputs.mvfst_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests mvfst
    - name: Fetch wangle
      if: ${{ steps.paths.outputs.wangle_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests wangle
    - name: Restore ninja from cache
      id: restore_ninja
      if: ${{ steps.paths.outputs.ninja_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.ninja_INSTALL }}
       key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
    - name: Build ninja
      if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests ninja
    - name: Save ninja to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.ninja_INSTALL }}
       key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
    - name: Restore cmake from cache
      id: restore_cmake
      if: ${{ steps.paths.outputs.cmake_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.cmake_INSTALL }}
       key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
    - name: Build cmake
      if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests cmake
    - name: Save cmake to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.cmake_INSTALL }}
       key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
    - name: Restore c-ares from cache
      id: restore_c-ares
      if: ${{ steps.paths.outputs.c-ares_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.c-ares_INSTALL }}
       key: ${{ steps.paths.outputs.c-ares_CACHE_KEY }}-install
    - name: Build c-ares
      if: ${{ steps.paths.outputs.c-ares_SOURCE && ! steps.restore_c-ares.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests c-ares
    - name: Save c-ares to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.c-ares_SOURCE && ! steps.restore_c-ares.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.c-ares_INSTALL }}
       key: ${{ steps.paths.outputs.c-ares_CACHE_KEY }}-install
    - name: Restore zlib from cache
      id: restore_zlib
      if: ${{ steps.paths.outputs.zlib_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.zlib_INSTALL }}
       key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
    - name: Build zlib
      if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests zlib
    - name: Save zlib to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.zlib_INSTALL }}
       key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
    - name: Restore zstd from cache
      id: restore_zstd
      if: ${{ steps.paths.outputs.zstd_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.zstd_INSTALL }}
       key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
    - name: Build zstd
      if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests zstd
    - name: Save zstd to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.zstd_INSTALL }}
       key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
    - name: Restore boost from cache
      id: restore_boost
      if: ${{ steps.paths.outputs.boost_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.boost_INSTALL }}
       key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
    - name: Build boost
      if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests boost
    - name: Save boost to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.boost_INSTALL }}
       key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
    - name: Restore double-conversion from cache
      id: restore_double-conversion
      if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
       key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
    - name: Build double-conversion
      if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests double-conversion
    - name: Save double-conversion to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
       key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
    - name: Restore fast_float from cache
      id: restore_fast_float
      if: ${{ steps.paths.outputs.fast_float_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.fast_float_INSTALL }}
       key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
    - name: Build fast_float
      if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fast_float
    - name: Save fast_float to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.fast_float_INSTALL }}
       key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
    - name: Restore fmt from cache
      id: restore_fmt
      if: ${{ steps.paths.outputs.fmt_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.fmt_INSTALL }}
       key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
    - name: Build fmt
      if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fmt
    - name: Save fmt to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.fmt_INSTALL }}
       key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
    - name: Restore gflags from cache
      id: restore_gflags
      if: ${{ steps.paths.outputs.gflags_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.gflags_INSTALL }}
       key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
    - name: Build gflags
      if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests gflags
    - name: Save gflags to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.gflags_INSTALL }}
       key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
    - name: Restore glog from cache
      id: restore_glog
      if: ${{ steps.paths.outputs.glog_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.glog_INSTALL }}
       key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
    - name: Build glog
      if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests glog
    - name: Save glog to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.glog_INSTALL }}
       key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
    - name: Restore googletest from cache
      id: restore_googletest
      if: ${{ steps.paths.outputs.googletest_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.googletest_INSTALL }}
       key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
    - name: Build googletest
      if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests googletest
    - name: Save googletest to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.googletest_INSTALL }}
       key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
    - name: Restore libaio from cache
      id: restore_libaio
      if: ${{ steps.paths.outputs.libaio_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libaio_INSTALL }}
       key: ${{ steps.paths.outputs.libaio_CACHE_KEY }}-install
    - name: Build libaio
      if: ${{ steps.paths.outputs.libaio_SOURCE && ! steps.restore_libaio.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libaio
    - name: Save libaio to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libaio_SOURCE && ! steps.restore_libaio.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libaio_INSTALL }}
       key: ${{ steps.paths.outputs.libaio_CACHE_KEY }}-install
    - name: Restore libdwarf from cache
      id: restore_libdwarf
      if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
       key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
    - name: Build libdwarf
      if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libdwarf
    - name: Save libdwarf to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
       key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
    - name: Restore libevent from cache
      id: restore_libevent
      if: ${{ steps.paths.outputs.libevent_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libevent_INSTALL }}
       key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
    - name: Build libevent
      if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libevent
    - name: Save libevent to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libevent_INSTALL }}
       key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
    - name: Restore lz4 from cache
      id: restore_lz4
      if: ${{ steps.paths.outputs.lz4_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.lz4_INSTALL }}
       key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
    - name: Build lz4
      if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests lz4
    - name: Save lz4 to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.lz4_INSTALL }}
       key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
    - name: Restore snappy from cache
      id: restore_snappy
      if: ${{ steps.paths.outputs.snappy_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.snappy_INSTALL }}
       key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
    - name: Build snappy
      if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests snappy
    - name: Save snappy to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.snappy_INSTALL }}
       key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
    - name: Restore openssl from cache
      id: restore_openssl
      if: ${{ steps.paths.outputs.openssl_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.openssl_INSTALL }}
       key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install
    - name: Build openssl
      if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests openssl
    - name: Save openssl to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.openssl_INSTALL }}
       key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install
    - name: Restore liboqs from cache
      id: restore_liboqs
      if: ${{ steps.paths.outputs.liboqs_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.liboqs_INSTALL }}
       key: ${{ steps.paths.outputs.liboqs_CACHE_KEY }}-install
    - name: Build liboqs
      if: ${{ steps.paths.outputs.liboqs_SOURCE && ! steps.restore_liboqs.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests liboqs
    - name: Save liboqs to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.liboqs_SOURCE && ! steps.restore_liboqs.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.liboqs_INSTALL }}
       key: ${{ steps.paths.outputs.liboqs_CACHE_KEY }}-install
    - name: Restore autoconf from cache
      id: restore_autoconf
      if: ${{ steps.paths.outputs.autoconf_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.autoconf_INSTALL }}
       key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
    - name: Build autoconf
      if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests autoconf
    - name: Save autoconf to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.autoconf_INSTALL }}
       key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
    - name: Restore automake from cache
      id: restore_automake
      if: ${{ steps.paths.outputs.automake_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.automake_INSTALL }}
       key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
    - name: Build automake
      if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests automake
    - name: Save automake to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.automake_INSTALL }}
       key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
    - name: Restore libtool from cache
      id: restore_libtool
      if: ${{ steps.paths.outputs.libtool_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libtool_INSTALL }}
       key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
    - name: Build libtool
      if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libtool
    - name: Save libtool to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libtool_INSTALL }}
       key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
    - name: Restore gperf from cache
      id: restore_gperf
      if: ${{ steps.paths.outputs.gperf_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.gperf_INSTALL }}
       key: ${{ steps.paths.outputs.gperf_CACHE_KEY }}-install
    - name: Build gperf
      if: ${{ steps.paths.outputs.gperf_SOURCE && ! steps.restore_gperf.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests gperf
    - name: Save gperf to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.gperf_SOURCE && ! steps.restore_gperf.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.gperf_INSTALL }}
       key: ${{ steps.paths.outputs.gperf_CACHE_KEY }}-install
    - name: Restore libiberty from cache
      id: restore_libiberty
      if: ${{ steps.paths.outputs.libiberty_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libiberty_INSTALL }}
       key: ${{ steps.paths.outputs.libiberty_CACHE_KEY }}-install
    - name: Build libiberty
      if: ${{ steps.paths.outputs.libiberty_SOURCE && ! steps.restore_libiberty.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libiberty
    - name: Save libiberty to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libiberty_SOURCE && ! steps.restore_libiberty.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libiberty_INSTALL }}
       key: ${{ steps.paths.outputs.libiberty_CACHE_KEY }}-install
    - name: Restore libsodium from cache
      id: restore_libsodium
      if: ${{ steps.paths.outputs.libsodium_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libsodium_INSTALL }}
       key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
    - name: Build libsodium
      if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libsodium
    - name: Save libsodium to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libsodium_INSTALL }}
       key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
    - name: Restore libunwind from cache
      id: restore_libunwind
      if: ${{ steps.paths.outputs.libunwind_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libunwind_INSTALL }}
       key: ${{ steps.paths.outputs.libunwind_CACHE_KEY }}-install
    - name: Build libunwind
      if: ${{ steps.paths.outputs.libunwind_SOURCE && ! steps.restore_libunwind.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libunwind
    - name: Save libunwind to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libunwind_SOURCE && ! steps.restore_libunwind.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libunwind_INSTALL }}
       key: ${{ steps.paths.outputs.libunwind_CACHE_KEY }}-install
    - name: Restore xz from cache
      id: restore_xz
      if: ${{ steps.paths.outputs.xz_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.xz_INSTALL }}
       key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
    - name: Build xz
      if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests xz
    - name: Save xz to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.xz_INSTALL }}
       key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
    - name: Restore folly from cache
      id: restore_folly
      if: ${{ steps.paths.outputs.folly_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.folly_INSTALL }}
       key: ${{ steps.paths.outputs.folly_CACHE_KEY }}-install
    - name: Build folly
      if: ${{ steps.paths.outputs.folly_SOURCE && ! steps.restore_folly.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests folly
    - name: Save folly to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.folly_SOURCE && ! steps.restore_folly.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.folly_INSTALL }}
       key: ${{ steps.paths.outputs.folly_CACHE_KEY }}-install
    - name: Restore fizz from cache
      id: restore_fizz
      if: ${{ steps.paths.outputs.fizz_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.fizz_INSTALL }}
       key: ${{ steps.paths.outputs.fizz_CACHE_KEY }}-install
    - name: Build fizz
      if: ${{ steps.paths.outputs.fizz_SOURCE && ! steps.restore_fizz.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fizz
    - name: Save fizz to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.fizz_SOURCE && ! steps.restore_fizz.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.fizz_INSTALL }}
       key: ${{ steps.paths.outputs.fizz_CACHE_KEY }}-install
    - name: Restore mvfst from cache
      id: restore_mvfst
      if: ${{ steps.paths.outputs.mvfst_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.mvfst_INSTALL }}
       key: ${{ steps.paths.outputs.mvfst_CACHE_KEY }}-install
    - name: Build mvfst
      if: ${{ steps.paths.outputs.mvfst_SOURCE && ! steps.restore_mvfst.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests mvfst
    - name: Save mvfst to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.mvfst_SOURCE && ! steps.restore_mvfst.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.mvfst_INSTALL }}
       key: ${{ steps.paths.outputs.mvfst_CACHE_KEY }}-install
    - name: Restore wangle from cache
      id: restore_wangle
      if: ${{ steps.paths.outputs.wangle_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.wangle_INSTALL }}
       key: ${{ steps.paths.outputs.wangle_CACHE_KEY }}-install
    - name: Build wangle
      if: ${{ steps.paths.outputs.wangle_SOURCE && ! steps.restore_wangle.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests wangle
    - name: Save wangle to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.wangle_SOURCE && ! steps.restore_wangle.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.wangle_INSTALL }}
       key: ${{ steps.paths.outputs.wangle_CACHE_KEY }}-install
    - name: Build proxygen
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --src-dir=. proxygen --project-install-prefix proxygen:/usr/local
    - name: Copy artifacts
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fixup-dyn-deps --strip --src-dir=. proxygen _artifacts/linux --project-install-prefix proxygen:/usr/local --final-install-prefix /usr/local
    - uses: actions/upload-artifact@v6
      with:
        name: proxygen
        path: _artifacts
    - name: Test proxygen
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages test --src-dir=. proxygen --project-install-prefix proxygen:/usr/local


================================================
FILE: .github/workflows/getdeps_mac.yml
================================================
# This file was @generated by getdeps.py

name: mac

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

permissions:
  contents: read  #  to fetch code (actions/checkout)

jobs:
  build:
    runs-on: macOS-latest
    steps:
    - uses: actions/checkout@v6
    - name: Install system deps
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages install-system-deps --recursive proxygen
    - id: paths
      name: Query paths
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages query-paths --recursive --src-dir=. proxygen  >> "$GITHUB_OUTPUT"
    - name: Fetch ninja
      if: ${{ steps.paths.outputs.ninja_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests ninja
    - name: Fetch cmake
      if: ${{ steps.paths.outputs.cmake_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests cmake
    - name: Fetch c-ares
      if: ${{ steps.paths.outputs.c-ares_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests c-ares
    - name: Fetch zlib
      if: ${{ steps.paths.outputs.zlib_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zlib
    - name: Fetch zstd
      if: ${{ steps.paths.outputs.zstd_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests zstd
    - name: Fetch boost
      if: ${{ steps.paths.outputs.boost_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests boost
    - name: Fetch double-conversion
      if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests double-conversion
    - name: Fetch fast_float
      if: ${{ steps.paths.outputs.fast_float_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fast_float
    - name: Fetch fmt
      if: ${{ steps.paths.outputs.fmt_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fmt
    - name: Fetch gflags
      if: ${{ steps.paths.outputs.gflags_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests gflags
    - name: Fetch glog
      if: ${{ steps.paths.outputs.glog_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests glog
    - name: Fetch googletest
      if: ${{ steps.paths.outputs.googletest_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests googletest
    - name: Fetch libdwarf
      if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libdwarf
    - name: Fetch lz4
      if: ${{ steps.paths.outputs.lz4_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests lz4
    - name: Fetch openssl
      if: ${{ steps.paths.outputs.openssl_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests openssl
    - name: Fetch snappy
      if: ${{ steps.paths.outputs.snappy_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests snappy
    - name: Fetch libevent
      if: ${{ steps.paths.outputs.libevent_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libevent
    - name: Fetch liboqs
      if: ${{ steps.paths.outputs.liboqs_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests liboqs
    - name: Fetch autoconf
      if: ${{ steps.paths.outputs.autoconf_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests autoconf
    - name: Fetch automake
      if: ${{ steps.paths.outputs.automake_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests automake
    - name: Fetch libtool
      if: ${{ steps.paths.outputs.libtool_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libtool
    - name: Fetch gperf
      if: ${{ steps.paths.outputs.gperf_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests gperf
    - name: Fetch libsodium
      if: ${{ steps.paths.outputs.libsodium_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests libsodium
    - name: Fetch xz
      if: ${{ steps.paths.outputs.xz_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests xz
    - name: Fetch folly
      if: ${{ steps.paths.outputs.folly_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests folly
    - name: Fetch fizz
      if: ${{ steps.paths.outputs.fizz_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests fizz
    - name: Fetch mvfst
      if: ${{ steps.paths.outputs.mvfst_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests mvfst
    - name: Fetch wangle
      if: ${{ steps.paths.outputs.wangle_SOURCE }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fetch --no-tests wangle
    - name: Restore ninja from cache
      id: restore_ninja
      if: ${{ steps.paths.outputs.ninja_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.ninja_INSTALL }}
       key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
    - name: Build ninja
      if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests ninja
    - name: Save ninja to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.ninja_SOURCE && ! steps.restore_ninja.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.ninja_INSTALL }}
       key: ${{ steps.paths.outputs.ninja_CACHE_KEY }}-install
    - name: Restore cmake from cache
      id: restore_cmake
      if: ${{ steps.paths.outputs.cmake_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.cmake_INSTALL }}
       key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
    - name: Build cmake
      if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests cmake
    - name: Save cmake to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.cmake_SOURCE && ! steps.restore_cmake.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.cmake_INSTALL }}
       key: ${{ steps.paths.outputs.cmake_CACHE_KEY }}-install
    - name: Restore c-ares from cache
      id: restore_c-ares
      if: ${{ steps.paths.outputs.c-ares_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.c-ares_INSTALL }}
       key: ${{ steps.paths.outputs.c-ares_CACHE_KEY }}-install
    - name: Build c-ares
      if: ${{ steps.paths.outputs.c-ares_SOURCE && ! steps.restore_c-ares.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests c-ares
    - name: Save c-ares to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.c-ares_SOURCE && ! steps.restore_c-ares.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.c-ares_INSTALL }}
       key: ${{ steps.paths.outputs.c-ares_CACHE_KEY }}-install
    - name: Restore zlib from cache
      id: restore_zlib
      if: ${{ steps.paths.outputs.zlib_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.zlib_INSTALL }}
       key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
    - name: Build zlib
      if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests zlib
    - name: Save zlib to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.zlib_SOURCE && ! steps.restore_zlib.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.zlib_INSTALL }}
       key: ${{ steps.paths.outputs.zlib_CACHE_KEY }}-install
    - name: Restore zstd from cache
      id: restore_zstd
      if: ${{ steps.paths.outputs.zstd_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.zstd_INSTALL }}
       key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
    - name: Build zstd
      if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests zstd
    - name: Save zstd to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.zstd_SOURCE && ! steps.restore_zstd.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.zstd_INSTALL }}
       key: ${{ steps.paths.outputs.zstd_CACHE_KEY }}-install
    - name: Restore boost from cache
      id: restore_boost
      if: ${{ steps.paths.outputs.boost_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.boost_INSTALL }}
       key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
    - name: Build boost
      if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests boost
    - name: Save boost to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.boost_SOURCE && ! steps.restore_boost.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.boost_INSTALL }}
       key: ${{ steps.paths.outputs.boost_CACHE_KEY }}-install
    - name: Restore double-conversion from cache
      id: restore_double-conversion
      if: ${{ steps.paths.outputs.double-conversion_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
       key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
    - name: Build double-conversion
      if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests double-conversion
    - name: Save double-conversion to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.double-conversion_SOURCE && ! steps.restore_double-conversion.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.double-conversion_INSTALL }}
       key: ${{ steps.paths.outputs.double-conversion_CACHE_KEY }}-install
    - name: Restore fast_float from cache
      id: restore_fast_float
      if: ${{ steps.paths.outputs.fast_float_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.fast_float_INSTALL }}
       key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
    - name: Build fast_float
      if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fast_float
    - name: Save fast_float to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.fast_float_SOURCE && ! steps.restore_fast_float.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.fast_float_INSTALL }}
       key: ${{ steps.paths.outputs.fast_float_CACHE_KEY }}-install
    - name: Restore fmt from cache
      id: restore_fmt
      if: ${{ steps.paths.outputs.fmt_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.fmt_INSTALL }}
       key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
    - name: Build fmt
      if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fmt
    - name: Save fmt to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.fmt_SOURCE && ! steps.restore_fmt.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.fmt_INSTALL }}
       key: ${{ steps.paths.outputs.fmt_CACHE_KEY }}-install
    - name: Restore gflags from cache
      id: restore_gflags
      if: ${{ steps.paths.outputs.gflags_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.gflags_INSTALL }}
       key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
    - name: Build gflags
      if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests gflags
    - name: Save gflags to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.gflags_SOURCE && ! steps.restore_gflags.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.gflags_INSTALL }}
       key: ${{ steps.paths.outputs.gflags_CACHE_KEY }}-install
    - name: Restore glog from cache
      id: restore_glog
      if: ${{ steps.paths.outputs.glog_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.glog_INSTALL }}
       key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
    - name: Build glog
      if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests glog
    - name: Save glog to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.glog_SOURCE && ! steps.restore_glog.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.glog_INSTALL }}
       key: ${{ steps.paths.outputs.glog_CACHE_KEY }}-install
    - name: Restore googletest from cache
      id: restore_googletest
      if: ${{ steps.paths.outputs.googletest_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.googletest_INSTALL }}
       key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
    - name: Build googletest
      if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests googletest
    - name: Save googletest to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.googletest_SOURCE && ! steps.restore_googletest.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.googletest_INSTALL }}
       key: ${{ steps.paths.outputs.googletest_CACHE_KEY }}-install
    - name: Restore libdwarf from cache
      id: restore_libdwarf
      if: ${{ steps.paths.outputs.libdwarf_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
       key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
    - name: Build libdwarf
      if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libdwarf
    - name: Save libdwarf to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libdwarf_SOURCE && ! steps.restore_libdwarf.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libdwarf_INSTALL }}
       key: ${{ steps.paths.outputs.libdwarf_CACHE_KEY }}-install
    - name: Restore lz4 from cache
      id: restore_lz4
      if: ${{ steps.paths.outputs.lz4_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.lz4_INSTALL }}
       key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
    - name: Build lz4
      if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests lz4
    - name: Save lz4 to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.lz4_SOURCE && ! steps.restore_lz4.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.lz4_INSTALL }}
       key: ${{ steps.paths.outputs.lz4_CACHE_KEY }}-install
    - name: Restore openssl from cache
      id: restore_openssl
      if: ${{ steps.paths.outputs.openssl_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.openssl_INSTALL }}
       key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install
    - name: Build openssl
      if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests openssl
    - name: Save openssl to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.openssl_SOURCE && ! steps.restore_openssl.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.openssl_INSTALL }}
       key: ${{ steps.paths.outputs.openssl_CACHE_KEY }}-install
    - name: Restore snappy from cache
      id: restore_snappy
      if: ${{ steps.paths.outputs.snappy_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.snappy_INSTALL }}
       key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
    - name: Build snappy
      if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests snappy
    - name: Save snappy to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.snappy_SOURCE && ! steps.restore_snappy.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.snappy_INSTALL }}
       key: ${{ steps.paths.outputs.snappy_CACHE_KEY }}-install
    - name: Restore libevent from cache
      id: restore_libevent
      if: ${{ steps.paths.outputs.libevent_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libevent_INSTALL }}
       key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
    - name: Build libevent
      if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libevent
    - name: Save libevent to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libevent_SOURCE && ! steps.restore_libevent.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libevent_INSTALL }}
       key: ${{ steps.paths.outputs.libevent_CACHE_KEY }}-install
    - name: Restore liboqs from cache
      id: restore_liboqs
      if: ${{ steps.paths.outputs.liboqs_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.liboqs_INSTALL }}
       key: ${{ steps.paths.outputs.liboqs_CACHE_KEY }}-install
    - name: Build liboqs
      if: ${{ steps.paths.outputs.liboqs_SOURCE && ! steps.restore_liboqs.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests liboqs
    - name: Save liboqs to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.liboqs_SOURCE && ! steps.restore_liboqs.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.liboqs_INSTALL }}
       key: ${{ steps.paths.outputs.liboqs_CACHE_KEY }}-install
    - name: Restore autoconf from cache
      id: restore_autoconf
      if: ${{ steps.paths.outputs.autoconf_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.autoconf_INSTALL }}
       key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
    - name: Build autoconf
      if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests autoconf
    - name: Save autoconf to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.autoconf_SOURCE && ! steps.restore_autoconf.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.autoconf_INSTALL }}
       key: ${{ steps.paths.outputs.autoconf_CACHE_KEY }}-install
    - name: Restore automake from cache
      id: restore_automake
      if: ${{ steps.paths.outputs.automake_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.automake_INSTALL }}
       key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
    - name: Build automake
      if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests automake
    - name: Save automake to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.automake_SOURCE && ! steps.restore_automake.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.automake_INSTALL }}
       key: ${{ steps.paths.outputs.automake_CACHE_KEY }}-install
    - name: Restore libtool from cache
      id: restore_libtool
      if: ${{ steps.paths.outputs.libtool_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libtool_INSTALL }}
       key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
    - name: Build libtool
      if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libtool
    - name: Save libtool to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libtool_SOURCE && ! steps.restore_libtool.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libtool_INSTALL }}
       key: ${{ steps.paths.outputs.libtool_CACHE_KEY }}-install
    - name: Restore gperf from cache
      id: restore_gperf
      if: ${{ steps.paths.outputs.gperf_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.gperf_INSTALL }}
       key: ${{ steps.paths.outputs.gperf_CACHE_KEY }}-install
    - name: Build gperf
      if: ${{ steps.paths.outputs.gperf_SOURCE && ! steps.restore_gperf.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests gperf
    - name: Save gperf to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.gperf_SOURCE && ! steps.restore_gperf.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.gperf_INSTALL }}
       key: ${{ steps.paths.outputs.gperf_CACHE_KEY }}-install
    - name: Restore libsodium from cache
      id: restore_libsodium
      if: ${{ steps.paths.outputs.libsodium_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.libsodium_INSTALL }}
       key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
    - name: Build libsodium
      if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests libsodium
    - name: Save libsodium to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.libsodium_SOURCE && ! steps.restore_libsodium.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.libsodium_INSTALL }}
       key: ${{ steps.paths.outputs.libsodium_CACHE_KEY }}-install
    - name: Restore xz from cache
      id: restore_xz
      if: ${{ steps.paths.outputs.xz_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.xz_INSTALL }}
       key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
    - name: Build xz
      if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests xz
    - name: Save xz to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.xz_SOURCE && ! steps.restore_xz.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.xz_INSTALL }}
       key: ${{ steps.paths.outputs.xz_CACHE_KEY }}-install
    - name: Restore folly from cache
      id: restore_folly
      if: ${{ steps.paths.outputs.folly_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.folly_INSTALL }}
       key: ${{ steps.paths.outputs.folly_CACHE_KEY }}-install
    - name: Build folly
      if: ${{ steps.paths.outputs.folly_SOURCE && ! steps.restore_folly.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests folly
    - name: Save folly to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.folly_SOURCE && ! steps.restore_folly.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.folly_INSTALL }}
       key: ${{ steps.paths.outputs.folly_CACHE_KEY }}-install
    - name: Restore fizz from cache
      id: restore_fizz
      if: ${{ steps.paths.outputs.fizz_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.fizz_INSTALL }}
       key: ${{ steps.paths.outputs.fizz_CACHE_KEY }}-install
    - name: Build fizz
      if: ${{ steps.paths.outputs.fizz_SOURCE && ! steps.restore_fizz.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests fizz
    - name: Save fizz to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.fizz_SOURCE && ! steps.restore_fizz.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.fizz_INSTALL }}
       key: ${{ steps.paths.outputs.fizz_CACHE_KEY }}-install
    - name: Restore mvfst from cache
      id: restore_mvfst
      if: ${{ steps.paths.outputs.mvfst_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.mvfst_INSTALL }}
       key: ${{ steps.paths.outputs.mvfst_CACHE_KEY }}-install
    - name: Build mvfst
      if: ${{ steps.paths.outputs.mvfst_SOURCE && ! steps.restore_mvfst.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests mvfst
    - name: Save mvfst to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.mvfst_SOURCE && ! steps.restore_mvfst.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.mvfst_INSTALL }}
       key: ${{ steps.paths.outputs.mvfst_CACHE_KEY }}-install
    - name: Restore wangle from cache
      id: restore_wangle
      if: ${{ steps.paths.outputs.wangle_SOURCE }}
      uses: actions/cache/restore@v4
      with:
       path: ${{ steps.paths.outputs.wangle_INSTALL }}
       key: ${{ steps.paths.outputs.wangle_CACHE_KEY }}-install
    - name: Build wangle
      if: ${{ steps.paths.outputs.wangle_SOURCE && ! steps.restore_wangle.outputs.cache-hit }}
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --no-tests wangle
    - name: Save wangle to cache
      uses: actions/cache/save@v4
      if: ${{ steps.paths.outputs.wangle_SOURCE && ! steps.restore_wangle.outputs.cache-hit }}
      with:
       path: ${{ steps.paths.outputs.wangle_INSTALL }}
       key: ${{ steps.paths.outputs.wangle_CACHE_KEY }}-install
    - name: Build proxygen
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages build --src-dir=. proxygen --project-install-prefix proxygen:/usr/local
    - name: Copy artifacts
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages fixup-dyn-deps --src-dir=. proxygen _artifacts/mac --project-install-prefix proxygen:/usr/local --final-install-prefix /usr/local
    - uses: actions/upload-artifact@v6
      with:
        name: proxygen
        path: _artifacts
    - name: Test proxygen
      run: python3 build/fbcode_builder/getdeps.py --allow-system-packages test --src-dir=. proxygen --project-install-prefix proxygen:/usr/local


================================================
FILE: .github/workflows/publish_mvfst_interop.yml
================================================
# Following instruction from https://docs.github.com/en/actions/publishing-packages/publishing-docker-images

name: Publish mvfst interop image

on:
  push:
    tags:
      # Build a new image weekly with each TagIt release
      - 'v20*'

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}/mvfst-interop

jobs:
  build-and-push-image:
    runs-on: ubuntu-latest

    permissions:
      contents: read
      packages: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v5

      - name: Log in to the Container registry
        uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

      - name: Build and push Docker image
        uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0
        with:
          context: .
          file: proxygen/httpserver/samples/hq/quic-interop/Dockerfile
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}


================================================
FILE: .gitignore
================================================
*~
\#*\#

# Build artifacts
.libs
*.log
*.trs
*.o
*.lo
*.a
*.la
gen-cpp
gen-cpp2

# Generated files
/proxygen/lib/http/HTTPCommonHeaders.cpp
/proxygen/lib/http/HTTPCommonHeaders.h
/proxygen/lib/utils/TraceEventType.cpp
/proxygen/lib/utils/TraceEventType.h
/proxygen/lib/utils/TraceFieldType.cpp
/proxygen/lib/utils/TraceFieldType.h
/proxygen/lib/stats/StatsWrapper.h
_build/

# common editor artifacts
*~
*.vscode*

# Generated document
html/
latex/


================================================
FILE: CMakeLists.txt
================================================
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

cmake_minimum_required(VERSION 3.10)
include(CheckCXXCompilerFlag)

project(
    proxygen
)

# Set for FetchContent to skip find_package(proxygen)
set(proxygen_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}"
  CACHE INTERNAL "proxygen source directory")

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_MODULE_PATH
  "${CMAKE_CURRENT_SOURCE_DIR}/cmake"
  # for in-fbsource builds
  "${CMAKE_CURRENT_SOURCE_DIR}/../opensource/fbcode_builder/CMake"
  # For shipit-transformed builds
  "${CMAKE_CURRENT_SOURCE_DIR}/build/fbcode_builder/CMake"
  ${CMAKE_MODULE_PATH})

option(BUILD_SHARED_LIBS
  "If enabled, build proxygen as a shared library.  \
  This is generally discouraged, since proxygen does not commit to having \
  a stable ABI."
  OFF
)
option(BUILD_SAMPLES
  "If enabled, proxygen will build various examples/samples"
  ON
)
# Mark BUILD_SHARED_LIBS as an "advanced" option, since enabling it
# is generally discouraged.
mark_as_advanced(BUILD_SHARED_LIBS)

include(FBBuildOptions)
fb_activate_static_library_option()

# PROXYGEN_FBCODE_ROOT is where the top level proxygen/ directory resides, so
# an #include <proxygen/path/to/file> will resolve to
# $PROXYGEN_FBCODE_ROOT/proxygen/path/to/file on disk
set(PROXYGEN_FBCODE_ROOT ${CMAKE_CURRENT_SOURCE_DIR})

# Similarly, PROXYGEN_GENERATED_ROOT is where the top level proxygen/ directory
# resides for generated files, so a #include <proxygen/path/to/generated/file>
# will be at $PROXYGEN_GENERATED_ROOT/proxygen/path/to/generated/file
set(PROXYGEN_GENERATED_ROOT ${CMAKE_CURRENT_BINARY_DIR}/generated)
file(MAKE_DIRECTORY ${PROXYGEN_GENERATED_ROOT})

# Build-time program requirements.
if(WIN32)
    find_program(PROXYGEN_PYTHON python)
else()
    find_program(PROXYGEN_PYTHON python3)
endif()

if(NOT PROXYGEN_PYTHON)
    message(FATAL_ERROR "python is required for the proxygen build")
endif()

find_program(PROXYGEN_GPERF gperf)
if(NOT PROXYGEN_GPERF)
    message(FATAL_ERROR "gperf is required for the proxygen build")
endif()

# Dependencies
#
# IMPORTANT: If you change this, make the analogous update in:
#   cmake/proxygen-config.cmake.in
find_package(fmt REQUIRED)
# If deps are being built from source (FetchContent), skip find_package
if (NOT DEFINED folly_SOURCE_DIR)
  find_package(folly REQUIRED)
endif()
if (NOT DEFINED fizz_SOURCE_DIR)
  find_package(fizz REQUIRED)
endif()
if (NOT DEFINED wangle_SOURCE_DIR)
  find_package(wangle REQUIRED)
endif()
if (NOT DEFINED mvfst_SOURCE_DIR)
  find_package(mvfst REQUIRED)
endif()
find_package(Zstd REQUIRED)
find_package(ZLIB REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(Threads)
find_package(Cares REQUIRED)
find_package(Glog REQUIRED)

# Propagate glog's required compile definition to all proxygen targets.
# glog 0.7+ requires GLOG_USE_GLOG_EXPORT but since glog::glog is linked
# PRIVATE on the monolithic library, OBJECT libraries don't inherit it.
get_target_property(_glog_defs glog::glog INTERFACE_COMPILE_DEFINITIONS)
if(_glog_defs)
  add_compile_definitions(${_glog_defs})
endif()

list(APPEND
    _PROXYGEN_COMMON_COMPILE_OPTIONS
    -Wall
    -Wextra
)

CHECK_CXX_COMPILER_FLAG(-Wnoexcept-type COMPILER_HAS_W_NOEXCEPT_TYPE)
if (COMPILER_HAS_W_NOEXCEPT_TYPE)
  list(APPEND _PROXYGEN_COMMON_COMPILE_OPTIONS -Wno-noexcept-type)
endif()
CHECK_CXX_COMPILER_FLAG(-Wunused-parameter COMPILER_HAS_W_UNUSED_PARAMETER)
if (COMPILER_HAS_W_UNUSED_PARAMETER)
  list(APPEND _PROXYGEN_COMMON_COMPILE_OPTIONS -Wno-unused-parameter)
endif()
CHECK_CXX_COMPILER_FLAG(-Wmissing-field-initializers COMPILER_HAS_W_MISSING_FIELD_INITIALIZERS)
if (COMPILER_HAS_W_MISSING_FIELD_INITIALIZERS)
  list(APPEND _PROXYGEN_COMMON_COMPILE_OPTIONS -Wno-missing-field-initializers)
endif()
CHECK_CXX_COMPILER_FLAG(-Wnullability-completeness COMPILER_HAS_W_NULLABILITY_COMPLETENESS)
if (COMPILER_HAS_W_NULLABILITY_COMPLETENESS)
    list(APPEND _PROXYGEN_COMMON_COMPILE_OPTIONS -Wno-nullability-completeness)
endif()
CHECK_CXX_COMPILER_FLAG(-Wdeprecated-register COMPILER_HAS_W_DEPRECATED_REGISTER)
if (COMPILER_HAS_W_DEPRECATED_REGISTER)
    list(APPEND _PROXYGEN_COMMON_COMPILE_OPTIONS -Wno-deprecated-register)
endif()
CHECK_CXX_COMPILER_FLAG(-Wregister COMPILER_HAS_W_REGISTER)
if (COMPILER_HAS_W_REGISTER)
    list(APPEND _PROXYGEN_COMMON_COMPILE_OPTIONS -Wno-register)
endif()
CHECK_CXX_COMPILER_FLAG(-Wunused-value COMPILER_HAS_W_UNUSED_VALUE)
if (COMPILER_HAS_W_UNUSED_VALUE)
    list(APPEND _PROXYGEN_COMMON_COMPILE_OPTIONS -Wno-unused-value)
endif()

SET(GFLAG_DEPENDENCIES "")
SET(PROXYGEN_EXTRA_LINK_LIBRARIES "")
SET(PROXYGEN_EXTRA_INCLUDE_DIRECTORIES "")

find_package(gflags CONFIG QUIET)
if (gflags_FOUND)
  message("module path: ${CMAKE_MODULE_PATH}")
  message(STATUS "Found gflags from package config")
  if (TARGET gflags-shared)
    list(APPEND GFLAG_DEPENDENCIES gflags-shared)
  elseif (TARGET gflags)
    list(APPEND GFLAG_DEPENDENCIES gflags)
  else()
    message(FATAL_ERROR
            "Unable to determine the target name for the GFlags package.")
  endif()
  list(APPEND CMAKE_REQUIRED_LIBRARIES ${GFLAGS_LIBRARIES})
  list(APPEND CMAKE_REQUIRED_INCLUDES ${GFLAGS_INCLUDE_DIR})
else()
  find_package(Gflags REQUIRED MODULE)
  list(APPEND PROXYGEN_EXTRA_LINK_LIBRARIES ${LIBGFLAGS_LIBRARY})
  list(APPEND PROXYGEN_EXTRA_INCLUDE_DIRECTORIES ${LIBGFLAGS_INCLUDE_DIR})
  list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBGFLAGS_LIBRARY})
  list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBGFLAGS_INCLUDE_DIR})
endif()

include(ProxygenTest)
include(ProxygenFunctions)

# Set PROXYGEN_DIR for proxygen_add_library to compute target names
set(PROXYGEN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/proxygen)

add_subdirectory(proxygen)

# Resolve deferred dependencies for granular libraries
# (monolithic proxygen target is manually maintained in proxygen/lib/CMakeLists.txt)
proxygen_resolve_deferred_dependencies()

if (NOT DEFINED LIB_INSTALL_DIR)
    set(LIB_INSTALL_DIR "lib")
endif()

if (NOT DEFINED INCLUDE_INSTALL_DIR)
    set(INCLUDE_INSTALL_DIR "include")
endif()

if (NOT DEFINED CMAKE_INSTALL_DIR)
    set(CMAKE_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/proxygen/")
endif()

install(
    EXPORT proxygen-exports
    FILE proxygen-targets.cmake
    NAMESPACE proxygen::
    DESTINATION ${CMAKE_INSTALL_DIR}
)
include(CMakePackageConfigHelpers)
configure_package_config_file(
    cmake/proxygen-config.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/proxygen-config.cmake
    INSTALL_DESTINATION ${CMAKE_INSTALL_DIR}
)
install(
    FILES ${CMAKE_CURRENT_BINARY_DIR}/proxygen-config.cmake
    DESTINATION ${CMAKE_INSTALL_DIR}
)

# uninstall target
if(NOT TARGET uninstall)
    configure_file(
        "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
        "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
        IMMEDIATE @ONLY)

    add_custom_target(uninstall
        COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to make participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
  advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
  address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at <opensource-conduct@fb.com>. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq



================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Proxygen
Here's a quick rundown of how to contribute to this project.

## Code of Conduct
The code of conduct is described in [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)

## Our Development Process
We develop on a private branch internally at Facebook. We regularly update
this github project with the changes from the internal repo. External pull
requests are cherry-picked into our repo and then pushed back out.

## Pull Requests
We actively welcome your pull requests.

1. Fork the repo and create your branch from `main`.
1. If you've added code that should be tested, add tests
1. If you've changed APIs, update the documentation.
1. Ensure the test suite passes.
1. Make sure your code lints.
1. If you haven't already, complete the Contributor License Agreement ("CLA").

## Contributor License Agreement ("CLA")
In order to accept your pull request, we need you to submit a CLA. You
only need
to do this once to work on any of Facebook's open source projects.

Complete your CLA here: <https://code.facebook.com/cla>

## Issues
We use GitHub issues to track public bugs. Please ensure your description
is clear and has sufficient instructions to be able to reproduce the issue.

Facebook has a [bounty program](https://www.facebook.com/whitehat/) for
the safe disclosure of security bugs. In those cases, please go through
the process outlined on that page and do not file a public issue.

## Coding Style
* 2 spaces for indentation rather than tabs
* 80 character line length
* Use `Type* foo` not `Type *foo`.
* Align parameters passed to functions.
* Prefer `std::make_unique<Foo>` to `new Foo`. In general, we discourage
use of raw `new` or `delete`.

## License
By contributing to Proxygen, you agree that your contributions will be
licensed under its BSD license.


================================================
FILE: Doxyfile
================================================
# Doxyfile 1.8.5

# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
#
# All text after a double hash (##) is considered a comment and is placed in
# front of the TAG it is preceding.
#
# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
# TAG = value [value, ...]
# For lists, items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (\" \").

#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------

# This tag specifies the encoding used for all characters in the config file
# that follow. The default is UTF-8 which is also the encoding used for all text
# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
# for the list of possible encodings.
# The default value is: UTF-8.

DOXYFILE_ENCODING      = UTF-8

# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
# double-quotes, unless you are using Doxywizard) that should identify the
# project for which the documentation is generated. This name is used in the
# title of most generated pages and in a few other places.
# The default value is: My Project.

PROJECT_NAME           = proxygen

# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER         =

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.

PROJECT_BRIEF          =

# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
# the documentation. The maximum height of the logo should not exceed 55 pixels
# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
# to the output directory.

PROJECT_LOGO           =

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.

OUTPUT_DIRECTORY       =

# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
# will distribute the generated files over these directories. Enabling this
# option can be useful when feeding doxygen a huge amount of source files, where
# putting all generated files in the same directory would otherwise causes
# performance problems for the file system.
# The default value is: NO.

#### OPTION GENERATED IN generate_doxygen.sh

CREATE_SUBDIRS         = NO

# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# Possible values are: Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-
# Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto, Farsi,
# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en,
# Korean, Korean-en, Latvian, Norwegian, Macedonian, Persian, Polish,
# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
# Turkish, Ukrainian and Vietnamese.
# The default value is: English.

OUTPUT_LANGUAGE        = English

# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
# The default value is: YES.

BRIEF_MEMBER_DESC      = YES

# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
# description of a member or function before the detailed description
#
# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
# The default value is: YES.

REPEAT_BRIEF           = YES

# This tag implements a quasi-intelligent brief description abbreviator that is
# used to form the text in various listings. Each string in this list, if found
# as the leading text of the brief description, will be stripped from the text
# and the result, after processing the whole list, is used as the annotated
# text. Otherwise, the brief description is used as-is. If left blank, the
# following values are used ($name is automatically replaced with the name of
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.

ABBREVIATE_BRIEF       =

# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# doxygen will generate a detailed section even if there is only a brief
# description.
# The default value is: NO.

ALWAYS_DETAILED_SEC    = NO

# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
# The default value is: NO.

INLINE_INHERITED_MEMB  = NO

# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
# shortest path that makes the file name unique will be used
# The default value is: YES.

FULL_PATH_NAMES        = YES

# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand
# part of the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the path to
# strip.
#
# Note that you can specify absolute paths here, but also relative paths, which
# will be relative from the directory where doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.

STRIP_FROM_PATH        =

# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
# header file to include in order to use a class. If left blank only the name of
# the header file containing the class definition is used. Otherwise one should
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.

STRIP_FROM_INC_PATH    =

# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
# support long names like on DOS, Mac, or CD-ROM.
# The default value is: NO.

SHORT_NAMES            = NO

# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
# first line (until the first dot) of a Javadoc-style comment as the brief
# description. If set to NO, the Javadoc-style will behave just like regular Qt-
# style comments (thus requiring an explicit @brief command for a brief
# description.)
# The default value is: NO.

JAVADOC_AUTOBRIEF      = NO

# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
# requiring an explicit \brief command for a brief description.)
# The default value is: NO.

QT_AUTOBRIEF           = NO

# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
# a brief description. This used to be the default behavior. The new default is
# to treat a multi-line C++ comment block as a detailed description. Set this
# tag to YES if you prefer the old behavior instead.
#
# Note that setting this tag to YES also means that rational rose comments are
# not recognized any more.
# The default value is: NO.

MULTILINE_CPP_IS_BRIEF = NO

# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
# documentation from any documented member that it re-implements.
# The default value is: YES.

INHERIT_DOCS           = YES

# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
# new page for each member. If set to NO, the documentation of a member will be
# part of the file/class/namespace that contains it.
# The default value is: NO.

SEPARATE_MEMBER_PAGES  = NO

# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
# uses this value to replace tabs by spaces in code fragments.
# Minimum value: 1, maximum value: 16, default value: 4.

TAB_SIZE               = 2

# This tag can be used to specify a number of aliases that act as commands in
# the documentation. An alias has the form:
# name=value
# For example adding
# "sideeffect=@par Side Effects:\n"
# will allow you to put the command \sideeffect (or @sideeffect) in the
# documentation, which will result in a user-defined paragraph with heading
# "Side Effects:". You can put \n's in the value part of an alias to insert
# newlines.

ALIASES                =

# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding "class=itcl::class"
# will allow you to use the command class in the itcl::class meaning.

TCL_SUBST              =

# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
# instance, some of the names that are used will be different. The list of all
# members will be omitted, etc.
# The default value is: NO.

OPTIMIZE_OUTPUT_FOR_C  = NO

# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
# Python sources only. Doxygen will then generate output that is more tailored
# for that language. For instance, namespaces will be presented as packages,
# qualified scopes will look different, etc.
# The default value is: NO.

OPTIMIZE_OUTPUT_JAVA   = NO

# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources. Doxygen will then generate output that is tailored for Fortran.
# The default value is: NO.

OPTIMIZE_FOR_FORTRAN   = NO

# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for VHDL.
# The default value is: NO.

OPTIMIZE_OUTPUT_VHDL   = NO

# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
# (default is Fortran), use: inc=Fortran f=C.
#
# Note For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen.

EXTENSION_MAPPING      =

# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
# documentation. See http://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you can
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
# case of backward compatibilities issues.
# The default value is: YES.

MARKDOWN_SUPPORT       = YES

# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by by putting a % sign in front of the word
# or globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.

AUTOLINK_SUPPORT       = YES

# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should set this
# tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string);
# versus func(std::string) {}). This also make the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
# The default value is: NO.

BUILTIN_STL_SUPPORT    = YES

# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
# The default value is: NO.

CPP_CLI_SUPPORT        = NO

# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
# will parse them like normal C++ but will assume all classes use public instead
# of private inheritance when no explicit protection keyword is present.
# The default value is: NO.

SIP_SUPPORT            = NO

# For Microsoft's IDL there are propget and propput attributes to indicate
# getter and setter methods for a property. Setting this option to YES will make
# doxygen to replace the get and set methods by a property in the documentation.
# This will only work if the methods are indeed getting or setting a simple
# type. If this is not the case, or you want to show the methods anyway, you
# should set this option to NO.
# The default value is: YES.

IDL_PROPERTY_SUPPORT   = YES

# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES, then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
# The default value is: NO.

DISTRIBUTE_GROUP_DOC   = NO

# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
# type (e.g. under the Public Functions section). Set it to NO to prevent
# subgrouping. Alternatively, this can be done per class using the
# \nosubgrouping command.
# The default value is: YES.

SUBGROUPING            = YES

# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
# are shown inside the group in which they are included (e.g. using \ingroup)
# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
# and RTF).
#
# Note that this feature does not work in combination with
# SEPARATE_MEMBER_PAGES.
# The default value is: NO.

INLINE_GROUPED_CLASSES = NO

# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
# with only public data fields or simple typedef fields will be shown inline in
# the documentation of the scope in which they are defined (i.e. file,
# namespace, or group documentation), provided this scope is documented. If set
# to NO, structs, classes, and unions are shown on a separate page (for HTML and
# Man pages) or section (for LaTeX and RTF).
# The default value is: NO.

INLINE_SIMPLE_STRUCTS  = NO

# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
# enum is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
# with name TypeT. When disabled the typedef will appear as a member of a file,
# namespace, or class. And the struct will be named TypeS. This can typically be
# useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
# The default value is: NO.

TYPEDEF_HIDES_STRUCT   = NO

# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
# cache is used to resolve symbols given their name and scope. Since this can be
# an expensive process and often the same symbol appears multiple times in the
# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
# doxygen will become slower. If the cache is too large, memory is wasted. The
# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
# symbols. At the end of a run doxygen will report the cache usage and suggest
# the optimal cache size from a speed point of view.
# Minimum value: 0, maximum value: 9, default value: 0.

LOOKUP_CACHE_SIZE      = 0

#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------

# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available. Private
# class members and static file members will be hidden unless the
# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
# Note: This will also disable the warnings about undocumented members that are
# normally produced when WARNINGS is set to YES.
# The default value is: NO.

EXTRACT_ALL            = YES

# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
# be included in the documentation.
# The default value is: NO.

EXTRACT_PRIVATE        = YES

# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
# scope will be included in the documentation.
# The default value is: NO.

EXTRACT_PACKAGE        = NO

# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
# included in the documentation.
# The default value is: NO.

EXTRACT_STATIC         = YES

# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
# locally in source files will be included in the documentation. If set to NO
# only classes defined in header files are included. Does not have any effect
# for Java sources.
# The default value is: YES.

EXTRACT_LOCAL_CLASSES  = YES

# This flag is only useful for Objective-C code. When set to YES local methods,
# which are defined in the implementation section but not in the interface are
# included in the documentation. If set to NO only methods in the interface are
# included.
# The default value is: NO.

EXTRACT_LOCAL_METHODS  = NO

# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base name of
# the file that contains the anonymous namespace. By default anonymous namespace
# are hidden.
# The default value is: NO.

EXTRACT_ANON_NSPACES   = NO

# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
# undocumented members inside documented classes or files. If set to NO these
# members will be included in the various overviews, but no documentation
# section is generated. This option has no effect if EXTRACT_ALL is enabled.
# The default value is: NO.

HIDE_UNDOC_MEMBERS     = NO

# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy. If set
# to NO these classes will be included in the various overviews. This option has
# no effect if EXTRACT_ALL is enabled.
# The default value is: NO.

HIDE_UNDOC_CLASSES     = NO

# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
# (class|struct|union) declarations. If set to NO these declarations will be
# included in the documentation.
# The default value is: NO.

HIDE_FRIEND_COMPOUNDS  = NO

# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
# documentation blocks found inside the body of a function. If set to NO these
# blocks will be appended to the function's detailed documentation block.
# The default value is: NO.

HIDE_IN_BODY_DOCS      = NO

# The INTERNAL_DOCS tag determines if documentation that is typed after a
# \internal command is included. If the tag is set to NO then the documentation
# will be excluded. Set it to YES to include the internal documentation.
# The default value is: NO.

INTERNAL_DOCS          = NO

# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
# names in lower-case letters. If set to YES upper-case letters are also
# allowed. This is useful if you have classes or files whose names only differ
# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
# The default value is: system dependent.

CASE_SENSE_NAMES       = YES

# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
# their full class and namespace scopes in the documentation. If set to YES the
# scope will be hidden.
# The default value is: NO.

HIDE_SCOPE_NAMES       = NO

# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.

SHOW_INCLUDE_FILES     = YES

# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
# files with double quotes in the documentation rather than with sharp brackets.
# The default value is: NO.

FORCE_LOCAL_INCLUDES   = NO

# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
# documentation for inline members.
# The default value is: YES.

INLINE_INFO            = YES

# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
# (detailed) documentation of file and class members alphabetically by member
# name. If set to NO the members will appear in declaration order.
# The default value is: YES.

SORT_MEMBER_DOCS       = YES

# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
# descriptions of file, namespace and class members alphabetically by member
# name. If set to NO the members will appear in declaration order.
# The default value is: NO.

SORT_BRIEF_DOCS        = NO

# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
# (brief and detailed) documentation of class members so that constructors and
# destructors are listed first. If set to NO the constructors will appear in the
# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
# member documentation.
# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
# detailed member documentation.
# The default value is: NO.

SORT_MEMBERS_CTORS_1ST = NO

# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
# of group names into alphabetical order. If set to NO the group names will
# appear in their defined order.
# The default value is: NO.

SORT_GROUP_NAMES       = NO

# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
# fully-qualified names, including namespaces. If set to NO, the class list will
# be sorted only by class name, not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the alphabetical
# list.
# The default value is: NO.

SORT_BY_SCOPE_NAME     = NO

# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
# type resolution of all parameters of a function it will reject a match between
# the prototype and the implementation of a member function even if there is
# only one candidate or it is obvious which candidate to choose by doing a
# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
# accept a match between prototype and implementation in such cases.
# The default value is: NO.

STRICT_PROTO_MATCHING  = NO

# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
# todo list. This list is created by putting \todo commands in the
# documentation.
# The default value is: YES.

GENERATE_TODOLIST      = YES

# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
# test list. This list is created by putting \test commands in the
# documentation.
# The default value is: YES.

GENERATE_TESTLIST      = YES

# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
# list. This list is created by putting \bug commands in the documentation.
# The default value is: YES.

GENERATE_BUGLIST       = YES

# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
# the deprecated list. This list is created by putting \deprecated commands in
# the documentation.
# The default value is: YES.

GENERATE_DEPRECATEDLIST= YES

# The ENABLED_SECTIONS tag can be used to enable conditional documentation
# sections, marked by \if <section_label> ... \endif and \cond <section_label>
# ... \endcond blocks.

ENABLED_SECTIONS       =

# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
# initial value of a variable or macro / define can have for it to appear in the
# documentation. If the initializer consists of more lines than specified here
# it will be hidden. Use a value of 0 to hide initializers completely. The
# appearance of the value of individual variables and macros / defines can be
# controlled using \showinitializer or \hideinitializer command in the
# documentation regardless of this setting.
# Minimum value: 0, maximum value: 10000, default value: 30.

MAX_INITIALIZER_LINES  = 30

# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
# the bottom of the documentation of classes and structs. If set to YES the list
# will mention the files that were used to generate the documentation.
# The default value is: YES.

SHOW_USED_FILES        = YES

# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
# will remove the Files entry from the Quick Index and from the Folder Tree View
# (if specified).
# The default value is: YES.

SHOW_FILES             = YES

# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
# page. This will remove the Namespaces entry from the Quick Index and from the
# Folder Tree View (if specified).
# The default value is: YES.

SHOW_NAMESPACES        = YES

# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
# popen()) the command command input-file, where command is the value of the
# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
# by doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.

FILE_VERSION_FILTER    =

# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option. You can
# optionally specify a file name after the option, if omitted DoxygenLayout.xml
# will be used as the name of the layout file.
#
# Note that if you run doxygen from a directory containing a file called
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty.

LAYOUT_FILE            =

# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
# the reference definitions. This must be a list of .bib files. The .bib
# extension is automatically appended if omitted. This requires the bibtex tool
# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
# For LaTeX the style of the bibliography can be controlled using
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
# search path. Do not use file names with spaces, bibtex cannot handle them. See
# also \cite for info how to create references.

CITE_BIB_FILES         =

#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------

# The QUIET tag can be used to turn on/off the messages that are generated to
# standard output by doxygen. If QUIET is set to YES this implies that the
# messages are off.
# The default value is: NO.

QUIET                  = NO

# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
# this implies that the warnings are on.
#
# Tip: Turn warnings on while writing the documentation.
# The default value is: YES.

WARNINGS               = YES

# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: YES.

WARN_IF_UNDOCUMENTED   = YES

# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some parameters
# in a documented function, or documenting parameters that don't exist or using
# markup commands wrongly.
# The default value is: YES.

WARN_IF_DOC_ERROR      = YES

# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
# value. If set to NO doxygen will only warn about wrong or incomplete parameter
# documentation, but not about the absence of documentation.
# The default value is: NO.

WARN_NO_PARAMDOC       = NO

# The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
# will be replaced by the file and line number from which the warning originated
# and the warning text. Optionally the format may contain $version, which will
# be replaced by the version of the file (if it could be obtained via
# FILE_VERSION_FILTER)
# The default value is: $file:$line: $text.

WARN_FORMAT            = "$file:$line: $text"

# The WARN_LOGFILE tag can be used to specify a file to which warning and error
# messages should be written. If left blank the output is written to standard
# error (stderr).

WARN_LOGFILE           =

#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------

# The INPUT tag is used to specify the files and/or directories that contain
# documented source files. You may enter file names like myfile.cpp or
# directories like /usr/src/myproject. Separate the files or directories with
# spaces.
# Note: If this tag is empty the current directory is searched.

INPUT                  =

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
# documentation (see: http://www.gnu.org/software/libiconv) for the list of
# possible encodings.
# The default value is: UTF-8.

INPUT_ENCODING         = UTF-8

# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
# *.h) to filter out the source-files in the directories. If left blank the
# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
# *.qsf, *.as and *.js.

#### OPTION GENERATED IN generate_doxygen.sh

FILE_PATTERNS          =

# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.

RECURSIVE              = YES

# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
#
# Note that relative paths are relative to the directory from which doxygen is
# run.

EXCLUDE                =

# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
# The default value is: NO.

#### OPTION GENERATED IN generate_doxygen.sh

EXCLUDE_SYMLINKS       = NO

# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories.
#
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*

EXCLUDE_PATTERNS       =

# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
#
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories use the pattern */test/*

EXCLUDE_SYMBOLS        =

# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
# command).

EXAMPLE_PATH           =

# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.

EXAMPLE_PATTERNS       =

# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
# irrespective of the value of the RECURSIVE tag.
# The default value is: NO.

EXAMPLE_RECURSIVE      = NO

# The IMAGE_PATH tag can be used to specify one or more files or directories
# that contain images that are to be included in the documentation (see the
# \image command).

IMAGE_PATH             =

# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
# by executing (via popen()) the command:
#
# <filter> <input-file>
#
# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
# name of an input file. Doxygen will then use the output that the filter
# program writes to standard output. If FILTER_PATTERNS is specified, this tag
# will be ignored.
#
# Note that the filter must not add or remove lines; it is applied before the
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.

INPUT_FILTER           =

# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form: pattern=filter
# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.

FILTER_PATTERNS        =

# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER ) will also be used to filter the input files that are used for
# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
# The default value is: NO.

FILTER_SOURCE_FILES    = NO

# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
# it is also possible to disable source filtering for a specific pattern using
# *.ext= (so without naming a filter).
# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.

FILTER_SOURCE_PATTERNS =

# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output.

USE_MDFILE_AS_MAINPAGE =

#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------

# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
# generated. Documented entities will be cross-referenced with these sources.
#
# Note: To get rid of all source code in the generated output, make sure that
# also VERBATIM_HEADERS is set to NO.
# The default value is: NO.

SOURCE_BROWSER         = YES

# Setting the INLINE_SOURCES tag to YES will include the body of functions,
# classes and enums directly into the documentation.
# The default value is: NO.

INLINE_SOURCES         = YES

# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
# special comment blocks from generated source code fragments. Normal C, C++ and
# Fortran comments will always remain visible.
# The default value is: YES.

STRIP_CODE_COMMENTS    = YES

# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# function all documented functions referencing it will be listed.
# The default value is: NO.

REFERENCED_BY_RELATION = YES

# If the REFERENCES_RELATION tag is set to YES then for each documented function
# all documented entities called/used by that function will be listed.
# The default value is: NO.

REFERENCES_RELATION    = YES

# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
# link to the documentation.
# The default value is: YES.

REFERENCES_LINK_SOURCE = YES

# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
# source code will show a tooltip with additional information such as prototype,
# brief description and links to the definition and documentation. Since this
# will make the HTML file larger and loading of large files a bit slower, you
# can opt to disable this feature.
# The default value is: YES.
# This tag requires that the tag SOURCE_BROWSER is set to YES.

SOURCE_TOOLTIPS        = YES

# If the USE_HTAGS tag is set to YES then the references to source code will
# point to the HTML generated by the htags(1) tool instead of doxygen built-in
# source browser. The htags tool is part of GNU's global source tagging system
# (see http://www.gnu.org/software/global/global.html). You will need version
# 4.8.6 or higher.
#
# To use it do the following:
# - Install the latest version of global
# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
# - Make sure the INPUT points to the root of the source tree
# - Run doxygen as normal
#
# Doxygen will invoke htags (and that will in turn invoke gtags), so these
# tools must be available from the command line (i.e. in the search path).
#
# The result: instead of the source browser generated by doxygen, the links to
# source code will now point to the output of htags.
# The default value is: NO.
# This tag requires that the tag SOURCE_BROWSER is set to YES.

USE_HTAGS              = NO

# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
# verbatim copy of the header file for each class for which an include is
# specified. Set to NO to disable this.
# See also: Section \class.
# The default value is: YES.

VERBATIM_HEADERS       = YES

#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------

# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
# compounds will be generated. Enable this if the project contains a lot of
# classes, structs, unions or interfaces.
# The default value is: YES.

ALPHABETICAL_INDEX     = NO

# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
# which the alphabetical index list will be split.
# Minimum value: 1, maximum value: 20, default value: 5.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.

COLS_IN_ALPHA_INDEX    = 5

# In case all classes in a project start with a common prefix, all classes will
# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
# can be used to specify a prefix (or a list of prefixes) that should be ignored
# while generating the index headers.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.

IGNORE_PREFIX          =

#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------

# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
# The default value is: YES.

GENERATE_HTML          = YES

# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_OUTPUT            = html

# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
# The default value is: .html.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_FILE_EXTENSION    = .html

# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
# each generated HTML page. If the tag is left blank doxygen will generate a
# standard header.
#
# To get valid HTML the header file that includes any scripts and style sheets
# that doxygen needs, which is dependent on the configuration options used (e.g.
# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
# default header using
# doxygen -w html new_header.html new_footer.html new_stylesheet.css
# YourConfigFile
# and then modify the file new_header.html. See also section "Doxygen usage"
# for information on how to generate the default header that doxygen normally
# uses.
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of doxygen. For a description
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_HEADER            =

# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank doxygen will generate a standard
# footer. See HTML_HEADER for more information on how to generate a default
# footer and what special commands can be used inside the footer. See also
# section "Doxygen usage" for information on how to generate the default footer
# that doxygen normally uses.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_FOOTER            =

# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
# sheet that is used by each HTML page. It can be used to fine-tune the look of
# the HTML output. If left blank doxygen will generate a default style sheet.
# See also section "Doxygen usage" for information on how to generate the style
# sheet that doxygen normally uses.
# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
# it is more robust and this tag (HTML_STYLESHEET) will in the future become
# obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_STYLESHEET        =

# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
# defined cascading style sheet that is included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
# standard style sheet and is therefor more robust against future updates.
# Doxygen will copy the style sheet file to the output directory. For an example
# see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_EXTRA_STYLESHEET  =

# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_EXTRA_FILES       =

# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the stylesheet and background images according to
# this color. Hue is specified as an angle on a colorwheel, see
# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
# purple, and 360 is red again.
# Minimum value: 0, maximum value: 359, default value: 220.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_HUE    = 220

# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use grayscales only. A
# value of 255 will produce the most vivid colors.
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_SAT    = 100

# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
# luminance component of the colors in the HTML output. Values below 100
# gradually make the output lighter, whereas values above 100 make the output
# darker. The value divided by 100 is the actual gamma applied, so 80 represents
# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
# change the gamma.
# Minimum value: 40, maximum value: 240, default value: 80.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_GAMMA  = 80

# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting this
# to NO can help when comparing the output of multiple runs.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_TIMESTAMP         = NO

# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_DYNAMIC_SECTIONS  = NO

# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
# shown in the various tree structured indices initially; the user can expand
# and collapse entries dynamically later on. Doxygen will expand the tree to
# such a level that at most the specified number of entries are visible (unless
# a fully collapsed tree already exceeds this amount). So setting the number of
# entries 1 will produce a full collapsed tree by default. 0 is a special value
# representing an infinite number of entries and will result in a full expanded
# tree by default.
# Minimum value: 0, maximum value: 9999, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_INDEX_NUM_ENTRIES = 100

# If the GENERATE_DOCSET tag is set to YES, additional index files will be
# generated that can be used as input for Apple's Xcode 3 integrated development
# environment (see: http://developer.apple.com/tools/xcode/), introduced with
# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
# Makefile in the HTML output directory. Running make will produce the docset in
# that directory and running make install will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
# for more information.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_DOCSET        = NO

# This tag determines the name of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# The default value is: Doxygen generated docs.
# This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_FEEDNAME        = "Doxygen generated docs"

# This tag specifies a string that should uniquely identify the documentation
# set bundle. This should be a reverse domain-name style string, e.g.
# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_BUNDLE_ID       = org.doxygen.Project

# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.
# The default value is: org.doxygen.Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_PUBLISHER_ID    = org.doxygen.Publisher

# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
# The default value is: Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_PUBLISHER_NAME  = Publisher

# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
# Windows.
#
# The HTML Help Workshop contains a compiler that can convert all HTML output
# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
# files are now used as the Windows 98 help format, and will replace the old
# Windows help format (.hlp) on all Windows platforms in the future. Compressed
# HTML files also contain an index, a table of contents, and you can search for
# words in the documentation. The HTML workshop also contains a viewer for
# compressed HTML files.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_HTMLHELP      = NO

# The CHM_FILE tag can be used to specify the file name of the resulting .chm
# file. You can add a path in front of the file if the result should not be
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

CHM_FILE               =

# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler ( hhc.exe). If non-empty
# doxygen will try to run the HTML help compiler on the generated index.hhp.
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

HHC_LOCATION           =

# The GENERATE_CHI flag controls if a separate .chi index file is generated (
# YES) or that it should be included in the master .chm file ( NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

GENERATE_CHI           = NO

# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

CHM_INDEX_ENCODING     =

# The BINARY_TOC flag controls whether a binary table of contents is generated (
# YES) or a normal table of contents ( NO) in the .chm file.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

BINARY_TOC             = NO

# The TOC_EXPAND flag can be set to YES to add extra items for group members to
# the table of contents of the HTML help documentation and to the tree view.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

TOC_EXPAND             = NO

# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
# (.qch) of the generated HTML documentation.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_QHP           = NO

# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
# the file name of the resulting .qch file. The path specified is relative to
# the HTML output folder.
# This tag requires that the tag GENERATE_QHP is set to YES.

QCH_FILE               =

# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_NAMESPACE          = org.doxygen.Project

# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
# Help Project output. For more information please see Qt Help Project / Virtual
# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
# folders).
# The default value is: doc.
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_VIRTUAL_FOLDER     = doc

# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
# filter to add. For more information please see Qt Help Project / Custom
# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
# filters).
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_CUST_FILTER_NAME   =

# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see Qt Help Project / Custom
# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
# filters).
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_CUST_FILTER_ATTRS  =

# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's filter section matches. Qt Help Project / Filter Attributes (see:
# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_SECT_FILTER_ATTRS  =

# The QHG_LOCATION tag can be used to specify the location of Qt's
# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
# generated .qhp file.
# This tag requires that the tag GENERATE_QHP is set to YES.

QHG_LOCATION           =

# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
# generated, together with the HTML files, they form an Eclipse help plugin. To
# install this plugin and make it available under the help contents menu in
# Eclipse, the contents of the directory containing the HTML and XML files needs
# to be copied into the plugins directory of eclipse. The name of the directory
# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
# After copying Eclipse needs to be restarted before the help appears.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_ECLIPSEHELP   = NO

# A unique identifier for the Eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have this
# name. Each documentation set should have its own identifier.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.

ECLIPSE_DOC_ID         = org.doxygen.Project

# If you want full control over the layout of the generated HTML pages it might
# be necessary to disable the index and replace it with your own. The
# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
# of each HTML page. A value of NO enables the index and the value YES disables
# it. Since the tabs in the index contain the same information as the navigation
# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

DISABLE_INDEX          = NO

# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information. If the tag
# value is set to YES, a side panel will be generated containing a tree-like
# index structure (just like the one that is generated for HTML Help). For this
# to work a browser that supports JavaScript, DHTML, CSS and frames is required
# (i.e. any modern browser). Windows users are probably better off using the
# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
# further fine-tune the look of the index. As an example, the default style
# sheet generated by doxygen has an example that shows how to put an image at
# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
# the same information as the tab index, you could consider setting
# DISABLE_INDEX to YES when enabling this option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_TREEVIEW      = YES

# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
# doxygen will group on one line in the generated HTML documentation.
#
# Note that a value of 0 will completely suppress the enum values from appearing
# in the overview section.
# Minimum value: 0, maximum value: 20, default value: 4.
# This tag requires that the tag GENERATE_HTML is set to YES.

ENUM_VALUES_PER_LINE   = 4

# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
# to set the initial width (in pixels) of the frame in which the tree is shown.
# Minimum value: 0, maximum value: 1500, default value: 250.
# This tag requires that the tag GENERATE_HTML is set to YES.

TREEVIEW_WIDTH         = 250

# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
# external symbols imported via tag files in a separate window.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

EXT_LINKS_IN_WINDOW    = NO

# Use this tag to change the font size of LaTeX formulas included as images in
# the HTML documentation. When you change the font size after a successful
# doxygen run you need to manually remove any form_*.png images from the HTML
# output directory to force them to be regenerated.
# Minimum value: 8, maximum value: 50, default value: 10.
# This tag requires that the tag GENERATE_HTML is set to YES.

FORMULA_FONTSIZE       = 10

# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are not
# supported properly for IE 6.0, but are supported on all modern browsers.
#
# Note that when changing this option you need to delete any form_*.png files in
# the HTML output directory before the changes have effect.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.

FORMULA_TRANSPARENT    = YES

# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
# http://www.mathjax.org) which uses client side Javascript for the rendering
# instead of using prerendered bitmaps. Use this if you do not have LaTeX
# installed or if you want to formulas look prettier in the HTML output. When
# enabled you may also need to install MathJax separately and configure the path
# to it using the MATHJAX_RELPATH option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

USE_MATHJAX            = NO

# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. See the MathJax site (see:
# http://docs.mathjax.org/en/latest/output.html) for more details.
# Possible values are: HTML-CSS (which is slower, but has the best
# compatibility), NativeMML (i.e. MathML) and SVG.
# The default value is: HTML-CSS.
# This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_FORMAT         = HTML-CSS

# When MathJax is enabled you need to specify the location relative to the HTML
# output directory using the MATHJAX_RELPATH option. The destination directory
# should contain the MathJax.js script. For instance, if the mathjax directory
# is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
# Content Delivery Network so you can quickly see the result without installing
# MathJax. However, it is strongly recommended to install a local copy of
# MathJax from http://www.mathjax.org before deployment.
# The default value is: http://cdn.mathjax.org/mathjax/latest.
# This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest

# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_EXTENSIONS     =

# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_CODEFILE       =

# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
# the HTML output. The underlying search engine uses javascript and DHTML and
# should work on any modern browser. Note that when using HTML help
# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
# there is already a search function so this one should typically be disabled.
# For large projects the javascript based search engine can be slow, then
# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
# search using the keyboard; to jump to the search box use <access key> + S
# (what the <access key> is depends on the OS and browser, but it is typically
# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
# key> to jump into the search results window, the results can be navigated
# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
# the search. The filter options can be selected when the cursor is inside the
# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
# to select a filter and <Enter> or <escape> to activate or cancel the filter
# option.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.

SEARCHENGINE           = NO

# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using Javascript. There
# are two flavours of web server based searching depending on the
# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
# searching and an index file used by the script. When EXTERNAL_SEARCH is
# enabled the indexing and searching needs to be provided by external tools. See
# the section "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.

SERVER_BASED_SEARCH    = NO

# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
# script for searching. Instead the search results are written to an XML file
# which needs to be processed by an external indexer. Doxygen will invoke an
# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
# search results.
#
# Doxygen ships with an example indexer ( doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see: http://xapian.org/).
#
# See the section "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.

EXTERNAL_SEARCH        = NO

# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will return the search results when EXTERNAL_SEARCH is enabled.
#
# Doxygen ships with an example indexer ( doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see: http://xapian.org/). See the section "External Indexing and
# Searching" for details.
# This tag requires that the tag SEARCHENGINE is set to YES.

SEARCHENGINE_URL       =

# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
# SEARCHDATA_FILE tag the name of this file can be specified.
# The default file is: searchdata.xml.
# This tag requires that the tag SEARCHENGINE is set to YES.

SEARCHDATA_FILE        = searchdata.xml

# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
# projects and redirect the results back to the right project.
# This tag requires that the tag SEARCHENGINE is set to YES.

EXTERNAL_SEARCH_ID     =

# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
# projects other than the one defined by this configuration file, but that are
# all added to the same external search index. Each project needs to have a
# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
# to a relative location where the documentation can be found. The format is:
# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
# This tag requires that the tag SEARCHENGINE is set to YES.

EXTRA_SEARCH_MAPPINGS  =

#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------

# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
# The default value is: YES.

GENERATE_LATEX         = YES

# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: latex.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_OUTPUT           = latex

# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked.
#
# Note that when enabling USE_PDFLATEX this option is only used for generating
# bitmaps for formulas in the HTML output, but not in the Makefile that is
# written to the output directory.
# The default file is: latex.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_CMD_NAME         = latex

# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
# index for LaTeX.
# The default file is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.

MAKEINDEX_CMD_NAME     = makeindex

# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

COMPACT_LATEX          = NO

# The PAPER_TYPE tag can be used to set the paper type that is used by the
# printer.
# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
# 14 inches) and executive (7.25 x 10.5 inches).
# The default value is: a4.
# This tag requires that the tag GENERATE_LATEX is set to YES.

PAPER_TYPE             = a4wide

# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
# that should be included in the LaTeX output. To get the times font for
# instance you can specify
# EXTRA_PACKAGES=times
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.

EXTRA_PACKAGES         =

# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
# generated LaTeX document. The header should contain everything until the first
# chapter. If it is left blank doxygen will generate a standard header. See
# section "Doxygen usage" for information on how to let doxygen write the
# default header to a separate file.
#
# Note: Only use a user-defined header if you know what you are doing! The
# following commands have a special meaning inside the header: $title,
# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
# replace them by respectively the title of the page, the current date and time,
# only the current date, the version number of doxygen, the project name (see
# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_HEADER           =

# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
# generated LaTeX document. The footer should contain everything after the last
# chapter. If it is left blank doxygen will generate a standard footer.
#
# Note: Only use a user-defined footer if you know what you are doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_FOOTER           =

# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
# directory. Note that the files will be copied as-is; there are no commands or
# markers available.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_EXTRA_FILES      =

# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
# contain links (just like the HTML output) instead of page references. This
# makes the output suitable for online browsing using a PDF viewer.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.

PDF_HYPERLINKS         = NO

# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
# the PDF file directly from the LaTeX files. Set this option to YES to get a
# higher quality PDF documentation.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.

USE_PDFLATEX           = NO

# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
# command to the generated LaTeX files. This will instruct LaTeX to keep running
# if errors occur, instead of asking the user for help. This option is also used
# when generating formulas in HTML.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_BATCHMODE        = NO

# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
# index chapters (such as File Index, Compound Index, etc.) in the output.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_HIDE_INDICES     = NO

# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
# code with syntax highlighting in the LaTeX output.
#
# Note that which sources are shown also depends on other settings such as
# SOURCE_BROWSER.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_SOURCE_CODE      = NO

# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
# The default value is: plain.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_BIB_STYLE        = plain

#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------

# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
# RTF output is optimized for Word 97 and may not look too pretty with other RTF
# readers/editors.
# The default value is: NO.

GENERATE_RTF           = NO

# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: rtf.
# This tag requires that the tag GENERATE_RTF is set to YES.

RTF_OUTPUT             = rtf

# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.

COMPACT_RTF            = NO

# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
# contain hyperlink fields. The RTF file will contain links (just like the HTML
# output) instead of page references. This makes the output suitable for online
# browsing using Word or some other Word compatible readers that support those
# fields.
#
# Note: WordPad (write) and others do not support links.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.

RTF_HYPERLINKS         = NO

# Load stylesheet definitions from file. Syntax is similar to doxygen's config
# file, i.e. a series of assignments. You only have to provide replacements,
# missing definitions are set to their default value.
#
# See also section "Doxygen usage" for information on how to generate the
# default style sheet that doxygen normally uses.
# This tag requires that the tag GENERATE_RTF is set to YES.

RTF_STYLESHEET_FILE    =

# Set optional variables used in the generation of an RTF document. Syntax is
# similar to doxygen's config file. A template extensions file can be generated
# using doxygen -e rtf extensionFile.
# This tag requires that the tag GENERATE_RTF is set to YES.

RTF_EXTENSIONS_FILE    =

#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------

# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
# classes and files.
# The default value is: NO.

GENERATE_MAN           = NO

# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it. A directory man3 will be created inside the directory specified by
# MAN_OUTPUT.
# The default directory is: man.
# This tag requires that the tag GENERATE_MAN is set to YES.

MAN_OUTPUT             = man

# The MAN_EXTENSION tag determines the extension that is added to the generated
# man pages. In case the manual section does not start with a number, the number
# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
# optional.
# The default value is: .3.
# This tag requires that the tag GENERATE_MAN is set to YES.

MAN_EXTENSION          = .3

# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
# will generate one additional man file for each entity documented in the real
# man page(s). These additional files only source the real man page, but without
# them the man command would be unable to find the correct page.
# The default value is: NO.
# This tag requires that the tag GENERATE_MAN is set to YES.

MAN_LINKS              = NO

#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------

# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
# captures the structure of the code including all documentation.
# The default value is: NO.

GENERATE_XML           = NO

# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: xml.
# This tag requires that the tag GENERATE_XML is set to YES.

XML_OUTPUT             = xml

# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
# validating XML parser to check the syntax of the XML files.
# This tag requires that the tag GENERATE_XML is set to YES.

XML_SCHEMA             =

# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
# validating XML parser to check the syntax of the XML files.
# This tag requires that the tag GENERATE_XML is set to YES.

XML_DTD                =

# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
# the XML output. Note that enabling this will significantly increase the size
# of the XML output.
# The default value is: YES.
# This tag requires that the tag GENERATE_XML is set to YES.

XML_PROGRAMLISTING     = YES

#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------

# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
# that can be used to generate PDF.
# The default value is: NO.

GENERATE_DOCBOOK       = NO

# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
# front of it.
# The default directory is: docbook.
# This tag requires that the tag GENERATE_DOCBOOK is set to YES.

DOCBOOK_OUTPUT         = docbook

#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------

# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
# Definitions (see http://autogen.sf.net) file that captures the structure of
# the code including all documentation. Note that this feature is still
# experimental and incomplete at the moment.
# The default value is: NO.

GENERATE_AUTOGEN_DEF   = NO

#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------

# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
# file that captures the structure of the code including all documentation.
#
# Note that this feature is still experimental and incomplete at the moment.
# The default value is: NO.

GENERATE_PERLMOD       = NO

# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
# output from the Perl module output.
# The default value is: NO.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.

PERLMOD_LATEX          = NO

# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
# formatted so it can be parsed by a human reader. This is useful if you want to
# understand what is going on. On the other hand, if this tag is set to NO the
# size of the Perl module output will be much smaller and Perl will parse it
# just the same.
# The default value is: YES.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.

PERLMOD_PRETTY         = YES

# The names of the make variables in the generated doxyrules.make file are
# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
# so different doxyrules.make files included by the same Makefile don't
# overwrite each other's variables.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.

PERLMOD_MAKEVAR_PREFIX =

#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------

# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
# C-preprocessor directives found in the sources and include files.
# The default value is: YES.

ENABLE_PREPROCESSING   = YES

# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
# in the source code. If set to NO only conditional compilation will be
# performed. Macro expansion can be done in a controlled way by setting
# EXPAND_ONLY_PREDEF to YES.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

MACRO_EXPANSION        = YES

# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and
# EXPAND_AS_DEFINED tags.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

EXPAND_ONLY_PREDEF     = NO

# If the SEARCH_INCLUDES tag is set to YES the includes files in the
# INCLUDE_PATH will be searched if a #include is found.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

SEARCH_INCLUDES        = YES

# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by the
# preprocessor.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.

INCLUDE_PATH           =

# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will be
# used.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

#### OPTION GENERATED IN generate_doxygen.sh

INCLUDE_FILE_PATTERNS  =

# The PREDEFINED tag can be used to specify one or more macro names that are
# defined before the preprocessor is started (similar to the -D option of e.g.
# gcc). The argument of the tag is a list of macros of the form: name or
# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
# is assumed. To prevent a macro definition from being undefined via #undef or
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

PREDEFINED             =

# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
# macro definition that is found in the sources will be used. Use the PREDEFINED
# tag if you want to use a different macro definition that overrules the
# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

EXPAND_AS_DEFINED      =

# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
# remove all refrences to function-like macros that are alone on a line, have an
# all uppercase name, and do not end with a semicolon. Such function macros are
# typically used for boiler-plate code, and will confuse the parser if not
# removed.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

SKIP_FUNCTION_MACROS   = YES

#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------

# The TAGFILES tag can be used to specify one or more tag files. For each tag
# file the location of the external documentation should be added. The format of
# a tag file without this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where loc1 and loc2 can be relative or absolute paths or URLs. See the
# section "Linking to external documentation" for more information about the use
# of tag files.
# Note: Each tag file must have an unique name (where the name does NOT include
# the path). If a tag file is not located in the directory in which doxygen is
# run, you must also specify the path to the tagfile here.

TAGFILES               =

# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
# tag file that is based on the input files it reads. See section "Linking to
# external documentation" for more information about the usage of tag files.

GENERATE_TAGFILE       =

# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
# class index. If set to NO only the inherited external classes will be listed.
# The default value is: NO.

ALLEXTERNALS           = NO

# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
# the modules index. If set to NO, only the current project's groups will be
# listed.
# The default value is: YES.

EXTERNAL_GROUPS        = YES

# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
# the related pages index. If set to NO, only the current project's pages will
# be listed.
# The default value is: YES.

EXTERNAL_PAGES         = YES

# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of 'which perl').
# The default file (with absolute path) is: /usr/bin/perl.

PERL_PATH              = /usr/bin/perl

#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------

# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
# NO turns the diagrams off. Note that this option also works with HAVE_DOT
# disabled, but it is recommended to install and use dot, since it yields more
# powerful graphs.
# The default value is: YES.

CLASS_DIAGRAMS         = YES

# You can define message sequence charts within doxygen comments using the \msc
# command. Doxygen will then run the mscgen tool (see:
# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
# documentation. The MSCGEN_PATH tag allows you to specify the directory where
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.

MSCGEN_PATH            =

# If set to YES, the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.

HIDE_UNDOC_RELATIONS   = YES

# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz (see:
# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# Bell Labs. The other options in this section have no effect if this option is
# set to NO
# The default value is: NO.

HAVE_DOT               = NO

# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
# to run in parallel. When set to 0 doxygen will base this on the number of
# processors available in the system. You can set it explicitly to a value
# larger than 0 to get control over the balance between CPU load and processing
# speed.
# Minimum value: 0, maximum value: 32, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_NUM_THREADS        = 0

# When you want a differently looking font n the dot files that doxygen
# generates you can specify the font name using DOT_FONTNAME. You need to make
# sure dot is able to find the font, which can be done by putting it in a
# standard location or by setting the DOTFONTPATH environment variable or by
# setting DOT_FONTPATH to the directory containing the font.
# The default value is: Helvetica.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTNAME           = Helvetica

# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
# dot graphs.
# Minimum value: 4, maximum value: 24, default value: 10.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTSIZE           = 10

# By default doxygen will tell dot to use the default font as specified with
# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
# the path where dot can find it using this tag.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTPATH           =

# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
# each documented class showing the direct and indirect inheritance relations.
# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

CLASS_GRAPH            = YES

# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
# graph for each documented class showing the direct and indirect implementation
# dependencies (inheritance, containment, and class references variables) of the
# class with other documented classes.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

COLLABORATION_GRAPH    = YES

# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
# groups, showing the direct groups dependencies.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

GROUP_GRAPHS           = YES

# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

UML_LOOK               = NO

# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
# class node. If there are many fields or methods and many nodes the graph may
# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
# number of items for each type to make the size more manageable. Set this to 0
# for no limit. Note that the threshold may be exceeded by 50% before the limit
# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
# but if the number exceeds 15, the total amount of fields shown is limited to
# 10.
# Minimum value: 0, maximum value: 100, default value: 10.
# This tag requires that the tag HAVE_DOT is set to YES.

UML_LIMIT_NUM_FIELDS   = 10

# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
# collaboration graphs will show the relations between templates and their
# instances.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

TEMPLATE_RELATIONS     = NO

# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then doxygen will generate a graph for each documented file showing the
# direct and indirect include dependencies of the file with other documented
# files.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

INCLUDE_GRAPH          = YES

# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
# set to YES then doxygen will generate a graph for each documented file showing
# the direct and indirect include dependencies of the file with other documented
# files.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

INCLUDED_BY_GRAPH      = YES

# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable call graphs for selected
# functions only using the \callgraph command.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

CALL_GRAPH             = YES

# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable caller graphs for selected
# functions only using the \callergraph command.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

CALLER_GRAPH           = YES

# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
# hierarchy of all classes instead of a textual one.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

GRAPHICAL_HIERARCHY    = YES

# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
# dependencies a directory has on other directories in a graphical way. The
# dependency relations are determined by the #include relations between the
# files in the directories.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

DIRECTORY_GRAPH        = YES

# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot.
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
# Possible values are: png, jpg, gif and svg.
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_IMAGE_FORMAT       = png

# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
#
# Note that this requires a modern browser other than Internet Explorer. Tested
# and working are Firefox, Chrome, Safari, and Opera.
# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
# the SVG files visible. Older versions of IE do not have SVG support.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

INTERACTIVE_SVG        = NO

# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_PATH               =

# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the \dotfile
# command).
# This tag requires that the tag HAVE_DOT is set to YES.

DOTFILE_DIRS           =

# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).

MSCFILE_DIRS           =

# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
# larger than this value, doxygen will truncate the graph, which is visualized
# by representing a node as a red box. Note that doxygen if the number of direct
# children of the root node in a graph is already larger than
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
# Minimum value: 0, maximum value: 10000, default value: 50.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_GRAPH_MAX_NODES    = 50

# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
# generated by dot. A depth value of 3 means that only nodes reachable from the
# root by following a path via at most 3 edges will be shown. Nodes that lay
# further from the root node will be omitted. Note that setting this option to 1
# or 2 may greatly reduce the computation time needed for large code bases. Also
# note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.

MAX_DOT_GRAPH_DEPTH    = 0

# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not seem
# to support this out of the box.
#
# Warning: Depending on the platform used, enabling this option may lead to
# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
# read).
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_TRANSPARENT        = NO

# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support
# this, this feature is disabled by default.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_MULTI_TARGETS      = NO

# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
# explaining the meaning of the various boxes and arrows in the dot generated
# graphs.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

GENERATE_LEGEND        = YES

# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
# files that are used to generate the various graphs.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_CLEANUP            = YES


================================================
FILE: LICENSE
================================================
BSD License

For Proxygen software

Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

 * Neither the name Facebook nor the names of its contributors may be used to
   endorse or promote products derived from this software without specific
   prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: README.md
================================================
## Proxygen: Facebook's C++ HTTP Libraries

[![Linux Build Status](https://github.com/facebook/proxygen/actions/workflows/getdeps_linux.yml/badge.svg)](https://github.com/facebook/proxygen/actions/workflows/getdeps_linux.yml)
[![macOS Build Status](https://github.com/facebook/proxygen/actions/workflows/getdeps_mac.yml/badge.svg)](https://github.com/facebook/proxygen/actions/workflows/getdeps_mac.yml)

This project comprises the core C++ HTTP abstractions used at
Facebook. Internally, it is used as the basis for building many HTTP
servers, proxies, and clients. This release focuses on the common HTTP
abstractions and our simple HTTPServer framework. Future releases will
provide simple client APIs as well. The framework supports HTTP/1.1,
SPDY/3, SPDY/3.1, HTTP/2, and HTTP/3. The goal is to provide a simple,
performant, and modern C++ HTTP library.

We have a Google group for general discussions at https://groups.google.com/d/forum/facebook-proxygen.

The [original blog post](https://engineering.fb.com/production-engineering/introducing-proxygen-facebook-s-c-http-framework/)
also has more background on the project.

## Learn More in This Intro Video
[![Explain Like I’m 5: Proxygen](https://img.youtube.com/vi/OsrBYHIYCYk/0.jpg)](https://www.youtube.com/watch?v=OsrBYHIYCYk)

### Installing

Note that currently this project has been tested on Ubuntu 18.04 and Mac OSX
although it likely works on many other platforms.

You will need at least 3 GiB of memory to compile `proxygen` and its
dependencies.

##### Easy Install

Just run `./build.sh` from the `proxygen/` directory to get and build all
the dependencies and `proxygen`. You can run the tests manually with `cd _build/ && make test`.
Then run `./install.sh` to install it. You can remove the temporary build directory (`_build`) and `./build.sh && ./install.sh`
to rebase the dependencies, and then rebuild and reinstall `proxygen`.

##### Package Managers

You can download and install proxygen using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager:

    git clone https://github.com/Microsoft/vcpkg.git
    cd vcpkg
    ./bootstrap-vcpkg.sh
    ./vcpkg integrate install
    ./vcpkg install proxygen

The proxygen port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.

##### Other Platforms

If you are running on another platform, you may need to install several
packages first. Proxygen and `folly` are all Autotools based projects.

### Introduction

Directory structure and contents:

| Directory                  | Purpose                                                                       |
|----------------------------|-------------------------------------------------------------------------------|
| `proxygen/external/`       | Contains non-installed 3rd-party code proxygen depends on.                    |
| `proxygen/lib/`            | Core networking abstractions.                                                 |
| `proxygen/lib/http/`       | HTTP specific code. (including HTTP/2 and HTTP/3)                             |
| `proxygen/lib/services/`   | Connection management and server code.                                        |
| `proxygen/lib/utils/`      | Miscellaneous helper code.                                                    |
| `proxygen/httpserver/`     | Contains code wrapping `proxygen/lib/` for building simple C++ http servers. We recommend building on top of these APIs. |

### Architecture

The central abstractions to understand in `proxygen/lib` are the session, codec,
transaction, and handler. These are the lowest level abstractions, and we
don't generally recommend building off of these directly.

When bytes are read off the wire, the `HTTPCodec` stored inside
`HTTPSession` parses these into higher-level objects and associates with
it a transaction identifier. The codec then calls into `HTTPSession` which
is responsible for maintaining the mapping between transaction identifier
and `HTTPTransaction` objects. Each HTTP request/response pair has a
separate `HTTPTransaction` object. Finally, `HTTPTransaction` forwards the
call to a handler object which implements `HTTPTransaction:: Handler`. The
handler is responsible for implementing business logic for the request or
response.

The handler then calls back into the transaction to generate egress
(whether the egress is a request or response). The call flows from the
transaction back to the session, which uses the codec to convert the
higher-level semantics of the particular call into the appropriate bytes
to send on the wire.

The same handler and transaction interfaces are used to both create requests
and handle responses. The API is generic enough to allow
both. `HTTPSession` is specialized slightly differently depending on
whether you are using the connection to issue or respond to HTTP
requests.

![Core Proxygen Architecture](CoreProxygenArchitecture.png)

Moving into higher levels of abstraction, `proxygen/HTTP server` has a
simpler set of APIs and is the recommended way to interface with `proxygen`
when acting as a server if you don't need the full control of the lower
level abstractions.

The basic components here are `HTTPServer`, `RequestHandlerFactory`, and
`RequestHandler`. An `HTTPServer` takes some configuration and is given a
`RequestHandlerFactory`. Once the server is started, the installed
`RequestHandlerFactory` spawns a `RequestHandler` for each HTTP
request. `RequestHandler` is a simple interface users of the library
implement. Subclasses of `RequestHandler` should use the inherited
protected member `ResponseHandler* downstream_` to send the response.

### Using it

Proxygen is a library. After installing it, you can build your C++
server. Try `cd` ing to the directory containing the echo server at
`proxygen/httpserver/samples/echo/`.

After building proxygen you can start the echo server with `_build/proxygen/httpserver/proxygen_echo`
and verify it works using curl in a different terminal:
```shell
$ curl -v http://localhost:11000/
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 11000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:11000
> Accept: */*
>
< HTTP/1.1 200 OK
< Request-Number: 1
< Date: Thu, 30 Oct 2014 17:07:36 GMT
< Connection: keep-alive
< Content-Length: 0
<
* Connection #0 to host localhost left intact
```

You can find other samples:
  * a simple server that supports HTTP/2 server push (`_build/proxygen/httpserver/proxygen_push`),
  * a simple server for static files (`_build/proxygen/httpserver/proxygen_static`)
  * a simple fwdproxy (`_build/proxygen/httpserver/proxygen_proxy`)
  * a curl-like client (`_build/proxygen/httpclient/samples/curl/proxygen_curl`)

### QUIC and HTTP/3

Proxygen supports HTTP/3!

It depends on Facebook's [mvfst](https://github.com/facebook/mvfst)
library for the [IETF QUIC](https://github.com/quicwg/base-drafts) transport
implementation.

This comes with a handy command-line utility that can be used as an HTTP/3
server and client.

Sample usage:
```shell
_build/proxygen/httpserver/hq --mode=server
_build/proxygen/httpserver/hq --mode=client --path=/
```
The utility supports the [qlog](https://github.com/quiclog/internet-drafts)
logging format; just start the server with the `--qlogger_path` option and many
knobs to tune both the quic transport and the http layer.

### Documentation

We use Doxygen for Proxygen's internal documentation. You can generate a
copy of these docs by running `doxygen Doxyfile` from the project
root. You'll want to look at `html/namespaceproxygen.html` to start. This
will also generate `folly` documentation.

### License
See [LICENSE](LICENSE).

### Contributing
Contributions to Proxygen are more than welcome. [Read the guidelines in CONTRIBUTING.md](CONTRIBUTING.md).
Make sure you've [signed the CLA](https://code.facebook.com/cla) before sending in a pull request.

### Whitehat

Facebook has a [bounty program](https://www.facebook.com/whitehat/) for
the safe disclosure of security bugs. If you find a vulnerability, please
go through the process outlined on that page and do not file a public issue.


================================================
FILE: build/README.md
================================================
# Building using `fbcode_builder`

Continuous integration builds are powered by `fbcode_builder`, a tiny tool
shared by several Facebook projects.  Its files are in `./fbcode_builder`
(on Github) or in `fbcode/opensource/fbcode_builder` (inside Facebook's
repo).

Start with the READMEs in the `fbcode_builder` directory.

`./fbcode_builder_config.py` contains the project-specific configuration.


================================================
FILE: build/deps/github_hashes/facebook/folly-rev.txt
================================================
Subproject commit 4321dae73b18961089fc62532ee6dc011cbf1915


================================================
FILE: build/deps/github_hashes/facebook/mvfst-rev.txt
================================================
Subproject commit b229e95977aa5d4c271da60775f2b4bdbc40262a


================================================
FILE: build/deps/github_hashes/facebook/wangle-rev.txt
================================================
Subproject commit dbe97d189ad17a732477ecf4defdcf8cdac2c013


================================================
FILE: build/deps/github_hashes/facebookincubator/fizz-rev.txt
================================================
Subproject commit 8d74917ae1e80269c6e8e9da44f9713269d9c2ec


================================================
FILE: build/fbcode_builder/.gitignore
================================================
# Facebook-internal CI builds don't have write permission outside of the
# source tree, so we install all projects into this directory.
/facebook_ci
__pycache__/
*.pyc


================================================
FILE: build/fbcode_builder/CMake/FBBuildOptions.cmake
================================================
# Copyright (c) Facebook, Inc. and its affiliates.

function (fb_activate_static_library_option)
  option(USE_STATIC_DEPS_ON_UNIX
    "If enabled, use static dependencies on unix systems. This is generally discouraged."
    OFF
  )
  # Mark USE_STATIC_DEPS_ON_UNIX as an "advanced" option, since enabling it
  # is generally discouraged.
  mark_as_advanced(USE_STATIC_DEPS_ON_UNIX)

  if(UNIX AND USE_STATIC_DEPS_ON_UNIX)
    SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE)
  endif()

  option(PREFER_STATIC_DEPS_ON_UNIX
    "If enabled, use static dependencies on unix systems as possible as we can. This is generally discouraged."
    OFF
  )
  # Mark PREFER_STATIC_DEPS_ON_UNIX as an "advanced" option, since enabling it
  # is generally discouraged.
  mark_as_advanced(PREFER_STATIC_DEPS_ON_UNIX)

  if(UNIX AND PREFER_STATIC_DEPS_ON_UNIX)
    SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so" PARENT_SCOPE)
  endif()
endfunction()


================================================
FILE: build/fbcode_builder/CMake/FBCMakeParseArgs.cmake
================================================
#
# Copyright (c) Facebook, Inc. and its affiliates.
#
# Helper function for parsing arguments to a CMake function.
#
# This function is very similar to CMake's built-in cmake_parse_arguments()
# function, with some improvements:
# - This function correctly handles empty arguments.  (cmake_parse_arguments()
#   ignores empty arguments.)
# - If a multi-value argument is specified more than once, the subsequent
#   arguments are appended to the original list rather than replacing it.  e.g.
#   if "SOURCES" is a multi-value argument, and the argument list contains
#   "SOURCES a b c SOURCES x y z" then the resulting value for SOURCES will be
#   "a;b;c;x;y;z" rather than "x;y;z"
# - This function errors out by default on unrecognized arguments.  You can
#   pass in an extra "ALLOW_UNPARSED_ARGS" argument to make it behave like
#   cmake_parse_arguments(), and return the unparsed arguments in a
#   <prefix>_UNPARSED_ARGUMENTS variable instead.
#
# It does look like cmake_parse_arguments() handled empty arguments correctly
# from CMake 3.0 through 3.3, but it seems like this was probably broken when
# it was turned into a built-in function in CMake 3.4.  Here is discussion and
# patches that fixed this behavior prior to CMake 3.0:
# https://cmake.org/pipermail/cmake-developers/2013-November/020607.html
#
# The one downside to this function over the built-in cmake_parse_arguments()
# is that I don't think we can achieve the PARSE_ARGV behavior in a non-builtin
# function, so we can't properly handle arguments that contain ";".  CMake will
# treat the ";" characters as list element separators, and treat it as multiple
# separate arguments.
#
function(fb_cmake_parse_args PREFIX OPTIONS ONE_VALUE_ARGS MULTI_VALUE_ARGS ARGS)
  foreach(option IN LISTS ARGN)
    if ("${option}" STREQUAL "ALLOW_UNPARSED_ARGS")
      set(ALLOW_UNPARSED_ARGS TRUE)
    else()
      message(
        FATAL_ERROR
        "unknown optional argument for fb_cmake_parse_args(): ${option}"
      )
    endif()
  endforeach()

  # Define all options as FALSE in the parent scope to start with
  foreach(var_name IN LISTS OPTIONS)
    set("${PREFIX}_${var_name}" "FALSE" PARENT_SCOPE)
  endforeach()

  # TODO: We aren't extremely strict about error checking for one-value
  # arguments here.  e.g., we don't complain if a one-value argument is
  # followed by another option/one-value/multi-value name rather than an
  # argument.  We also don't complain if a one-value argument is the last
  # argument and isn't followed by a value.

  list(APPEND all_args ${ONE_VALUE_ARGS})
  list(APPEND all_args ${MULTI_VALUE_ARGS})
  set(current_variable)
  set(unparsed_args)
  foreach(arg IN LISTS ARGS)
    list(FIND OPTIONS "${arg}" opt_index)
    if("${opt_index}" EQUAL -1)
      list(FIND all_args "${arg}" arg_index)
      if("${arg_index}" EQUAL -1)
        # This argument does not match an argument name,
        # must be an argument value
        if("${current_variable}" STREQUAL "")
          list(APPEND unparsed_args "${arg}")
        else()
          # Ugh, CMake lists have a pretty fundamental flaw: they cannot
          # distinguish between an empty list and a list with a single empty
          # element.  We track our own SEEN_VALUES_arg setting to help
          # distinguish this and behave properly here.
          if ("${SEEN_${current_variable}}" AND "${${current_variable}}" STREQUAL "")
            set("${current_variable}" ";${arg}")
          else()
            list(APPEND "${current_variable}" "${arg}")
          endif()
          set("SEEN_${current_variable}" TRUE)
        endif()
      else()
        # We found a single- or multi-value argument name
        set(current_variable "VALUES_${arg}")
        set("SEEN_${arg}" TRUE)
      endif()
    else()
      # We found an option variable
      set("${PREFIX}_${arg}" "TRUE" PARENT_SCOPE)
      set(current_variable)
    endif()
  endforeach()

  foreach(arg_name IN LISTS ONE_VALUE_ARGS)
    if(NOT "${SEEN_${arg_name}}")
      unset("${PREFIX}_${arg_name}" PARENT_SCOPE)
    elseif(NOT "${SEEN_VALUES_${arg_name}}")
      # If the argument was seen but a value wasn't specified, error out.
      # We require exactly one value to be specified.
      message(
        FATAL_ERROR "argument ${arg_name} was specified without a value"
      )
    else()
      list(LENGTH "VALUES_${arg_name}" num_args)
      if("${num_args}" EQUAL 0)
        # We know an argument was specified and that we called list(APPEND).
        # If CMake thinks the list is empty that means there is really a single
        # empty element in the list.
        set("${PREFIX}_${arg_name}" "" PARENT_SCOPE)
      elseif("${num_args}" EQUAL 1)
        list(GET "VALUES_${arg_name}" 0 arg_value)
        set("${PREFIX}_${arg_name}" "${arg_value}" PARENT_SCOPE)
      else()
        message(
          FATAL_ERROR "too many arguments specified for ${arg_name}: "
          "${VALUES_${arg_name}}"
        )
      endif()
    endif()
  endforeach()

  foreach(arg_name IN LISTS MULTI_VALUE_ARGS)
    # If this argument name was never seen, then unset the parent scope
    if (NOT "${SEEN_${arg_name}}")
      unset("${PREFIX}_${arg_name}" PARENT_SCOPE)
    else()
      # TODO: Our caller still won't be able to distinguish between an empty
      # list and a list with a single empty element.  We can tell which is
      # which, but CMake lists don't make it easy to show this to our caller.
      set("${PREFIX}_${arg_name}" "${VALUES_${arg_name}}" PARENT_SCOPE)
    endif()
  endforeach()

  # By default we fatal out on unparsed arguments, but return them to the
  # caller if ALLOW_UNPARSED_ARGS was specified.
  if (DEFINED unparsed_args)
    if ("${ALLOW_UNPARSED_ARGS}")
      set("${PREFIX}_UNPARSED_ARGUMENTS" "${unparsed_args}" PARENT_SCOPE)
    else()
      message(FATAL_ERROR "unrecognized arguments: ${unparsed_args}")
    endif()
  endif()
endfunction()


================================================
FILE: build/fbcode_builder/CMake/FBCompilerSettings.cmake
================================================
# Copyright (c) Facebook, Inc. and its affiliates.

# This file applies common compiler settings that are shared across
# a number of Facebook opensource projects.
# Please use caution and your best judgement before making changes
# to these shared compiler settings in order to avoid accidentally
# breaking a build in another project!

if (WIN32)
  include(FBCompilerSettingsMSVC)
else()
  include(FBCompilerSettingsUnix)
endif()


================================================
FILE: build/fbcode_builder/CMake/FBCompilerSettingsMSVC.cmake
================================================
# Copyright (c) Facebook, Inc. and its affiliates.

# This file applies common compiler settings that are shared across
# a number of Facebook opensource projects.
# Please use caution and your best judgement before making changes
# to these shared compiler settings in order to avoid accidentally
# breaking a build in another project!

add_compile_options(
  /wd4250 # 'class1' : inherits 'class2::member' via dominance
  /Zc:preprocessor # Enable conforming preprocessor for __VA_OPT__ support
)


================================================
FILE: build/fbcode_builder/CMake/FBCompilerSettingsUnix.cmake
================================================
# Copyright (c) Facebook, Inc. and its affiliates.

# This file applies common compiler settings that are shared across
# a number of Facebook opensource projects.
# Please use caution and your best judgement before making changes
# to these shared compiler settings in order to avoid accidentally
# breaking a build in another project!

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Wextra -Wno-deprecated -Wno-deprecated-declarations")


================================================
FILE: build/fbcode_builder/CMake/FBPythonBinary.cmake
================================================
# Copyright (c) Facebook, Inc. and its affiliates.

include(FBCMakeParseArgs)

#
# This file contains helper functions for building self-executin
Download .txt
gitextract_yvh0wu4e/

├── .github/
│   ├── dependabot.yml
│   └── workflows/
│       ├── TagIt.yml
│       ├── close_stale.yml
│       ├── getdeps_linux.yml
│       ├── getdeps_mac.yml
│       └── publish_mvfst_interop.yml
├── .gitignore
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Doxyfile
├── LICENSE
├── README.md
├── build/
│   ├── README.md
│   ├── deps/
│   │   └── github_hashes/
│   │       ├── facebook/
│   │       │   ├── folly-rev.txt
│   │       │   ├── mvfst-rev.txt
│   │       │   └── wangle-rev.txt
│   │       └── facebookincubator/
│   │           └── fizz-rev.txt
│   └── fbcode_builder/
│       ├── .gitignore
│       ├── CMake/
│       │   ├── FBBuildOptions.cmake
│       │   ├── FBCMakeParseArgs.cmake
│       │   ├── FBCompilerSettings.cmake
│       │   ├── FBCompilerSettingsMSVC.cmake
│       │   ├── FBCompilerSettingsUnix.cmake
│       │   ├── FBPythonBinary.cmake
│       │   ├── FBPythonTestAddTests.cmake
│       │   ├── FBThriftCppLibrary.cmake
│       │   ├── FBThriftLibrary.cmake
│       │   ├── FBThriftPyLibrary.cmake
│       │   ├── FindCares.cmake
│       │   ├── FindDoubleConversion.cmake
│       │   ├── FindGMock.cmake
│       │   ├── FindGflags.cmake
│       │   ├── FindGlog.cmake
│       │   ├── FindLMDB.cmake
│       │   ├── FindLibEvent.cmake
│       │   ├── FindLibUnwind.cmake
│       │   ├── FindLibiberty.cmake
│       │   ├── FindPCRE.cmake
│       │   ├── FindPCRE2.cmake
│       │   ├── FindRe2.cmake
│       │   ├── FindSodium.cmake
│       │   ├── FindXxhash.cmake
│       │   ├── FindZstd.cmake
│       │   ├── Findibverbs.cmake
│       │   ├── RustStaticLibrary.cmake
│       │   ├── fb_py_test_main.py
│       │   ├── fb_py_win_main.c
│       │   └── make_fbpy_archive.py
│       ├── LICENSE
│       ├── README.md
│       ├── getdeps/
│       │   ├── __init__.py
│       │   ├── builder.py
│       │   ├── buildopts.py
│       │   ├── cache.py
│       │   ├── cargo.py
│       │   ├── copytree.py
│       │   ├── dyndeps.py
│       │   ├── envfuncs.py
│       │   ├── errors.py
│       │   ├── expr.py
│       │   ├── fetcher.py
│       │   ├── include_rewriter.py
│       │   ├── load.py
│       │   ├── manifest.py
│       │   ├── platform.py
│       │   ├── py_wheel_builder.py
│       │   ├── runcmd.py
│       │   ├── subcmd.py
│       │   └── test/
│       │       ├── expr_test.py
│       │       ├── fixtures/
│       │       │   └── duplicate/
│       │       │       ├── foo
│       │       │       └── subdir/
│       │       │           └── foo
│       │       ├── manifest_test.py
│       │       ├── platform_test.py
│       │       ├── retry_test.py
│       │       ├── scratch_test.py
│       │       └── strip_marker_test.py
│       ├── getdeps.py
│       ├── manifests/
│       │   ├── CLI11
│       │   ├── autoconf
│       │   ├── automake
│       │   ├── benchmark
│       │   ├── blake3
│       │   ├── boost
│       │   ├── boost-python
│       │   ├── bz2
│       │   ├── c-ares
│       │   ├── cabal
│       │   ├── cachelib
│       │   ├── cinderx-3_14
│       │   ├── cinderx-main
│       │   ├── clang
│       │   ├── clang19
│       │   ├── cmake
│       │   ├── cpptoml
│       │   ├── double-conversion
│       │   ├── double-conversion-python
│       │   ├── eden
│       │   ├── edencommon
│       │   ├── exprtk
│       │   ├── fast_float
│       │   ├── fatal
│       │   ├── fb303
│       │   ├── fboss
│       │   ├── fbthrift
│       │   ├── fbthrift-python
│       │   ├── fizz
│       │   ├── fizz-python
│       │   ├── fmt
│       │   ├── fmt-python
│       │   ├── folly
│       │   ├── folly-python
│       │   ├── gcc12
│       │   ├── gcc14
│       │   ├── gflags
│       │   ├── ghc
│       │   ├── git-lfs
│       │   ├── glean
│       │   ├── glog
│       │   ├── googletest
│       │   ├── gperf
│       │   ├── hexdump
│       │   ├── hsthrift
│       │   ├── iproute2
│       │   ├── jom
│       │   ├── jq
│       │   ├── katran
│       │   ├── libaio
│       │   ├── libaio-python
│       │   ├── libbpf
│       │   ├── libcurl
│       │   ├── libdwarf
│       │   ├── libdwarf-python
│       │   ├── libelf
│       │   ├── libevent
│       │   ├── libevent-python
│       │   ├── libffi
│       │   ├── libgit2
│       │   ├── libgpiod
│       │   ├── libiberty
│       │   ├── libiberty-python
│       │   ├── libibverbs
│       │   ├── libmnl
│       │   ├── libnl
│       │   ├── liboqs
│       │   ├── libsai
│       │   ├── libsodium
│       │   ├── libtool
│       │   ├── libunwind
│       │   ├── libusb
│       │   ├── libyaml
│       │   ├── llvm
│       │   ├── lmdb
│       │   ├── lz4
│       │   ├── lz4-python
│       │   ├── magic_enum
│       │   ├── mcrouter
│       │   ├── mononoke
│       │   ├── mononoke_integration
│       │   ├── moxygen
│       │   ├── mvfst
│       │   ├── mvfst-python
│       │   ├── ncurses
│       │   ├── nghttp2
│       │   ├── ninja
│       │   ├── nlohmann-json
│       │   ├── nmap
│       │   ├── numa
│       │   ├── openr
│       │   ├── openssl
│       │   ├── osxfuse
│       │   ├── patchelf
│       │   ├── pcre2
│       │   ├── perl
│       │   ├── pexpect
│       │   ├── proxygen
│       │   ├── python
│       │   ├── python-3_14
│       │   ├── python-click
│       │   ├── python-filelock
│       │   ├── python-main
│       │   ├── python-psutil
│       │   ├── python-ptyprocess
│       │   ├── python-pyyaml
│       │   ├── python-setuptools
│       │   ├── python-setuptools-69
│       │   ├── python-six
│       │   ├── python-toml
│       │   ├── ragel
│       │   ├── range-v3
│       │   ├── rdma-core
│       │   ├── re2
│       │   ├── rebalancer
│       │   ├── ripgrep
│       │   ├── rocksdb
│       │   ├── rust-shed
│       │   ├── sapling
│       │   ├── snappy
│       │   ├── sparsemap
│       │   ├── sqlite3
│       │   ├── systemd
│       │   ├── tabulate
│       │   ├── tree
│       │   ├── wangle
│       │   ├── wangle-python
│       │   ├── watchman
│       │   ├── xxhash
│       │   ├── xz
│       │   ├── yaml-cpp
│       │   ├── zlib
│       │   ├── zlib-python
│       │   ├── zstd
│       │   └── zstd-python
│       └── patches/
│           ├── boost_1_83_0.patch
│           ├── iproute2_oss.patch
│           ├── libiberty_install_pic_lib.patch
│           └── zlib_dont_build_more_than_needed.patch
├── cmake/
│   ├── FindGMock.cmake
│   ├── FindZstd.cmake
│   ├── ProxygenCompatAliases.cmake
│   ├── ProxygenFunctions.cmake
│   ├── ProxygenTest.cmake
│   ├── TARGETS.txt
│   └── proxygen-config.cmake.in
├── cmake_uninstall.cmake.in
├── getdeps.sh
└── proxygen/
    ├── .clang-format
    ├── .clang-tidy
    ├── CMakeLists.txt
    ├── VERSION
    ├── build.sh
    ├── external/
    │   ├── CMakeLists.txt
    │   └── http_parser/
    │       ├── CONTRIBUTIONS
    │       ├── LICENSE-MIT
    │       ├── README.md
    │       ├── http_parser.h
    │       ├── http_parser_cpp.cpp
    │       └── test.c
    ├── fuzzers/
    │   └── CMakeLists.txt
    ├── httpclient/
    │   ├── CMakeLists.txt
    │   └── samples/
    │       ├── CMakeLists.txt
    │       ├── H3Datagram/
    │       │   ├── CMakeLists.txt
    │       │   └── H3DatagramClient.cpp
    │       ├── curl/
    │       │   ├── CMakeLists.txt
    │       │   ├── CurlClient.cpp
    │       │   ├── CurlClient.h
    │       │   └── CurlClientMain.cpp
    │       ├── httperf2/
    │       │   ├── CMakeLists.txt
    │       │   ├── Client.cpp
    │       │   ├── Client.h
    │       │   ├── HTTPerf2.cpp
    │       │   ├── HTTPerf2.h
    │       │   ├── HTTPerfStats.h
    │       │   └── Main.cpp
    │       └── websocket/
    │           ├── CMakeLists.txt
    │           ├── WebSocketClient.cpp
    │           ├── WebSocketClient.h
    │           └── main.cpp
    ├── httpserver/
    │   ├── CMakeLists.txt
    │   ├── Filters.h
    │   ├── HTTPServer.cpp
    │   ├── HTTPServer.h
    │   ├── HTTPServerAcceptor.cpp
    │   ├── HTTPServerAcceptor.h
    │   ├── HTTPServerOptions.h
    │   ├── HTTPTransactionHandlerAdaptor.h
    │   ├── Mocks.h
    │   ├── PushHandler.h
    │   ├── RequestHandler.h
    │   ├── RequestHandlerAdaptor.cpp
    │   ├── RequestHandlerAdaptor.h
    │   ├── RequestHandlerFactory.h
    │   ├── ResponseBuilder.h
    │   ├── ResponseHandler.h
    │   ├── ScopedHTTPServer.h
    │   ├── SignalHandler.cpp
    │   ├── SignalHandler.h
    │   ├── filters/
    │   │   ├── CompressionFilter.h
    │   │   ├── DecompressionFilter.cpp
    │   │   ├── DecompressionFilter.h
    │   │   ├── DirectResponseHandler.h
    │   │   ├── RejectConnectFilter.h
    │   │   └── tests/
    │   │       ├── CMakeLists.txt
    │   │       ├── CompressionFilterTest.cpp
    │   │       └── DecompressionFilterTest.cpp
    │   ├── samples/
    │   │   ├── echo/
    │   │   │   ├── EchoHandler.cpp
    │   │   │   ├── EchoHandler.h
    │   │   │   ├── EchoServer.cpp
    │   │   │   ├── EchoStats.h
    │   │   │   └── test/
    │   │   │       ├── CMakeLists.txt
    │   │   │       └── EchoHandlerTest.cpp
    │   │   ├── hq/
    │   │   │   ├── CMakeLists.txt
    │   │   │   ├── ConnIdLogger.h
    │   │   │   ├── FizzContext.cpp
    │   │   │   ├── FizzContext.h
    │   │   │   ├── H1QDownstreamSession.h
    │   │   │   ├── H1QUpstreamSession.h
    │   │   │   ├── H2Server.cpp
    │   │   │   ├── H2Server.h
    │   │   │   ├── HQClient.cpp
    │   │   │   ├── HQClient.h
    │   │   │   ├── HQCommandLine.cpp
    │   │   │   ├── HQCommandLine.h
    │   │   │   ├── HQLoggerHelper.cpp
    │   │   │   ├── HQLoggerHelper.h
    │   │   │   ├── HQParams.cpp
    │   │   │   ├── HQParams.h
    │   │   │   ├── HQServer.cpp
    │   │   │   ├── HQServer.h
    │   │   │   ├── HQServerModule.cpp
    │   │   │   ├── HQServerModule.h
    │   │   │   ├── InsecureVerifierDangerousDoNotUseInProduction.h
    │   │   │   ├── SampleHandlers.cpp
    │   │   │   ├── SampleHandlers.h
    │   │   │   ├── devious/
    │   │   │   │   ├── CMakeLists.txt
    │   │   │   │   ├── DeviousBaton.cpp
    │   │   │   │   ├── DeviousBaton.h
    │   │   │   │   └── test/
    │   │   │   │       ├── CMakeLists.txt
    │   │   │   │       └── DeviousBatonTests.cpp
    │   │   │   ├── main.cpp
    │   │   │   ├── pusheen.txt
    │   │   │   └── quic-interop/
    │   │   │       ├── Dockerfile
    │   │   │       ├── README.md
    │   │   │       └── run_endpoint.sh
    │   │   ├── masque/
    │   │   │   └── MasqueClient.cpp
    │   │   ├── proxy/
    │   │   │   ├── ProxyHandler.cpp
    │   │   │   ├── ProxyHandler.h
    │   │   │   ├── ProxyServer.cpp
    │   │   │   ├── ProxyStats.h
    │   │   │   └── SessionWrapper.h
    │   │   ├── push/
    │   │   │   ├── PushRequestHandler.cpp
    │   │   │   ├── PushRequestHandler.h
    │   │   │   ├── PushServer.cpp
    │   │   │   ├── PushStats.h
    │   │   │   └── pusheen.txt
    │   │   ├── static/
    │   │   │   ├── StaticHandler.cpp
    │   │   │   ├── StaticHandler.h
    │   │   │   └── StaticServer.cpp
    │   │   └── websocket/
    │   │       ├── WebSocketHandler.cpp
    │   │       ├── WebSocketHandler.h
    │   │       └── main.cpp
    │   └── tests/
    │       ├── CMakeLists.txt
    │       ├── HTTPServerTest.cpp
    │       ├── RequestHandlerAdaptorTest.cpp
    │       └── certs/
    │           ├── ca_cert.pem
    │           ├── ca_key.pem
    │           ├── client_ca_cert.pem
    │           ├── client_ca_key.pem
    │           ├── client_cert.pem
    │           ├── client_key.pem
    │           ├── generate_certs.sh
    │           ├── test_cert1.pem
    │           ├── test_cert2.pem
    │           ├── test_key1.pem
    │           └── test_key2.pem
    ├── install.sh
    └── lib/
        ├── CMakeLists.txt
        ├── dns/
        │   ├── AsyncDNSStatsCollector.cpp
        │   ├── AsyncDNSStatsCollector.h
        │   ├── CAresResolver.cpp
        │   ├── CAresResolver.h
        │   ├── CMakeLists.txt
        │   ├── CachingDNSResolver.cpp
        │   ├── CachingDNSResolver.h
        │   ├── DNSModule.cpp
        │   ├── DNSModule.h
        │   ├── DNSResolver.cpp
        │   ├── DNSResolver.h
        │   ├── FutureDNSResolver.cpp
        │   ├── FutureDNSResolver.h
        │   ├── NaiveResolutionCallback.cpp
        │   ├── NaiveResolutionCallback.h
        │   ├── Rfc6724.cpp
        │   ├── Rfc6724.h
        │   ├── SyncDNSResolver.cpp
        │   ├── SyncDNSResolver.h
        │   └── test/
        │       ├── CAresResolverTest.cpp
        │       ├── CachingDNSResolverTest.cpp
        │       ├── DNSResolverTest.cpp
        │       ├── Dummies.h
        │       ├── FutureDNSResolverTest.cpp
        │       ├── MockDNSModule.cpp
        │       ├── MockDNSModule.h
        │       ├── MockDNSResolver.h
        │       ├── Mocks.h
        │       ├── Rfc6724Test.cpp
        │       ├── SyncDNSResolverTest.cpp
        │       └── SyncDNSResolverTest.h
        ├── healthcheck/
        │   ├── CMakeLists.txt
        │   ├── PoolHealthChecker.h
        │   ├── ServerHealthCheckerCallback.cpp
        │   └── ServerHealthCheckerCallback.h
        ├── http/
        │   ├── CMakeLists.txt
        │   ├── HQConnector.cpp
        │   ├── HQConnector.h
        │   ├── HTTP3ErrorCode.cpp
        │   ├── HTTP3ErrorCode.h
        │   ├── HTTPCommonHeaders.txt
        │   ├── HTTPConnector.cpp
        │   ├── HTTPConnector.h
        │   ├── HTTPConnectorWithFizz.cpp
        │   ├── HTTPConnectorWithFizz.h
        │   ├── HTTPConstants.cpp
        │   ├── HTTPConstants.h
        │   ├── HTTPException.cpp
        │   ├── HTTPException.h
        │   ├── HTTPHeaderSize.h
        │   ├── HTTPHeaders.cpp
        │   ├── HTTPHeaders.h
        │   ├── HTTPMessage.cpp
        │   ├── HTTPMessage.h
        │   ├── HTTPMessageFilters.cpp
        │   ├── HTTPMessageFilters.h
        │   ├── HTTPMethod.cpp
        │   ├── HTTPMethod.h
        │   ├── HTTPPriorityFunctions.cpp
        │   ├── HTTPPriorityFunctions.h
        │   ├── HeaderConstants.cpp
        │   ├── HeaderConstants.h
        │   ├── ProxyStatus.cpp
        │   ├── ProxyStatus.h
        │   ├── ProxygenErrorEnum.cpp
        │   ├── ProxygenErrorEnum.h
        │   ├── RFC2616.cpp
        │   ├── RFC2616.h
        │   ├── StatusTypeEnum.cpp
        │   ├── StatusTypeEnum.h
        │   ├── SynchronizedLruQuicPskCache.cpp
        │   ├── SynchronizedLruQuicPskCache.h
        │   ├── Types.h
        │   ├── Window.cpp
        │   ├── Window.h
        │   ├── codec/
        │   │   ├── CMakeLists.txt
        │   │   ├── CapsuleCodec.cpp
        │   │   ├── CapsuleCodec.h
        │   │   ├── CodecProtocol.cpp
        │   │   ├── CodecProtocol.h
        │   │   ├── CodecUtil.cpp
        │   │   ├── CodecUtil.h
        │   │   ├── ControlMessageRateLimitFilter.h
        │   │   ├── DebugFilter.h
        │   │   ├── DefaultHTTPCodecFactory.cpp
        │   │   ├── DefaultHTTPCodecFactory.h
        │   │   ├── DirectErrorsRateLimitFilter.h
        │   │   ├── ErrorCode.cpp
        │   │   ├── ErrorCode.h
        │   │   ├── FlowControlFilter.cpp
        │   │   ├── FlowControlFilter.h
        │   │   ├── HQControlCodec.cpp
        │   │   ├── HQControlCodec.h
        │   │   ├── HQFramedCodec.cpp
        │   │   ├── HQFramedCodec.h
        │   │   ├── HQFramer.cpp
        │   │   ├── HQFramer.h
        │   │   ├── HQMultiCodec.h
        │   │   ├── HQStreamCodec.cpp
        │   │   ├── HQStreamCodec.h
        │   │   ├── HQUnidirectionalCodec.cpp
        │   │   ├── HQUnidirectionalCodec.h
        │   │   ├── HQUtils.cpp
        │   │   ├── HQUtils.h
        │   │   ├── HTTP1xCodec.cpp
        │   │   ├── HTTP1xCodec.h
        │   │   ├── HTTP2Codec.cpp
        │   │   ├── HTTP2Codec.h
        │   │   ├── HTTP2Constants.cpp
        │   │   ├── HTTP2Constants.h
        │   │   ├── HTTP2Framer.cpp
        │   │   ├── HTTP2Framer.h
        │   │   ├── HTTPBinaryCodec.cpp
        │   │   ├── HTTPBinaryCodec.h
        │   │   ├── HTTPChecks.cpp
        │   │   ├── HTTPChecks.h
        │   │   ├── HTTPCodec.h
        │   │   ├── HTTPCodecFactory.cpp
        │   │   ├── HTTPCodecFactory.h
        │   │   ├── HTTPCodecFilter.cpp
        │   │   ├── HTTPCodecFilter.h
        │   │   ├── HTTPCodecPrinter.cpp
        │   │   ├── HTTPCodecPrinter.h
        │   │   ├── HTTPParallelCodec.cpp
        │   │   ├── HTTPParallelCodec.h
        │   │   ├── HTTPRequestVerifier.h
        │   │   ├── HTTPSettings.cpp
        │   │   ├── HTTPSettings.h
        │   │   ├── HeaderDecodeInfo.cpp
        │   │   ├── HeaderDecodeInfo.h
        │   │   ├── HeadersRateLimitFilter.h
        │   │   ├── QPACKDecoderCodec.h
        │   │   ├── QPACKEncoderCodec.h
        │   │   ├── RateLimitFilter.cpp
        │   │   ├── RateLimitFilter.h
        │   │   ├── ResetsRateLimitFilter.h
        │   │   ├── SettingsId.h
        │   │   ├── TransportDirection.cpp
        │   │   ├── TransportDirection.h
        │   │   ├── compress/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CompressionInfo.h
        │   │   │   ├── HPACKCodec.cpp
        │   │   │   ├── HPACKCodec.h
        │   │   │   ├── HPACKConstants.h
        │   │   │   ├── HPACKContext.cpp
        │   │   │   ├── HPACKContext.h
        │   │   │   ├── HPACKDecodeBuffer.cpp
        │   │   │   ├── HPACKDecodeBuffer.h
        │   │   │   ├── HPACKDecoder.cpp
        │   │   │   ├── HPACKDecoder.h
        │   │   │   ├── HPACKDecoderBase.cpp
        │   │   │   ├── HPACKDecoderBase.h
        │   │   │   ├── HPACKEncodeBuffer.cpp
        │   │   │   ├── HPACKEncodeBuffer.h
        │   │   │   ├── HPACKEncoder.cpp
        │   │   │   ├── HPACKEncoder.h
        │   │   │   ├── HPACKEncoderBase.cpp
        │   │   │   ├── HPACKEncoderBase.h
        │   │   │   ├── HPACKHeader.cpp
        │   │   │   ├── HPACKHeader.h
        │   │   │   ├── HPACKHeaderName.h
        │   │   │   ├── HPACKStreamingCallback.h
        │   │   │   ├── Header.h
        │   │   │   ├── HeaderCodec.h
        │   │   │   ├── HeaderIndexingStrategy.cpp
        │   │   │   ├── HeaderIndexingStrategy.h
        │   │   │   ├── HeaderPiece.h
        │   │   │   ├── HeaderTable.cpp
        │   │   │   ├── HeaderTable.h
        │   │   │   ├── Huffman.cpp
        │   │   │   ├── Huffman.h
        │   │   │   ├── Logging.cpp
        │   │   │   ├── Logging.h
        │   │   │   ├── NoPathIndexingStrategy.cpp
        │   │   │   ├── NoPathIndexingStrategy.h
        │   │   │   ├── QPACKCodec.cpp
        │   │   │   ├── QPACKCodec.h
        │   │   │   ├── QPACKContext.cpp
        │   │   │   ├── QPACKContext.h
        │   │   │   ├── QPACKDecoder.cpp
        │   │   │   ├── QPACKDecoder.h
        │   │   │   ├── QPACKEncoder.cpp
        │   │   │   ├── QPACKEncoder.h
        │   │   │   ├── QPACKHeaderTable.cpp
        │   │   │   ├── QPACKHeaderTable.h
        │   │   │   ├── QPACKStaticHeaderTable.cpp
        │   │   │   ├── QPACKStaticHeaderTable.h
        │   │   │   ├── StaticHeaderTable.cpp
        │   │   │   ├── StaticHeaderTable.h
        │   │   │   ├── experimental/
        │   │   │   │   ├── interop/
        │   │   │   │   │   └── QPACKInterop.cpp
        │   │   │   │   └── simulator/
        │   │   │   │       ├── CMakeLists.txt
        │   │   │   │       ├── CompressionScheme.h
        │   │   │   │       ├── CompressionSimulator.cpp
        │   │   │   │       ├── CompressionSimulator.h
        │   │   │   │       ├── CompressionTypes.h
        │   │   │   │       ├── CompressionUtils.cpp
        │   │   │   │       ├── CompressionUtils.h
        │   │   │   │       ├── HPACKQueue.h
        │   │   │   │       ├── HPACKQueueTests.cpp
        │   │   │   │       ├── HPACKScheme.h
        │   │   │   │       ├── Main.cpp
        │   │   │   │       ├── QMINScheme.h
        │   │   │   │       ├── QPACKScheme.h
        │   │   │   │       └── SimStreamingCallback.h
        │   │   │   └── test/
        │   │   │       ├── CMakeLists.txt
        │   │   │       ├── EncoderBenchmark.cpp
        │   │   │       ├── HPACKBenchmark.cpp
        │   │   │       ├── HPACKBufferTests.cpp
        │   │   │       ├── HPACKCodecTests.cpp
        │   │   │       ├── HPACKContextTests.cpp
        │   │   │       ├── HPACKHeaderTests.cpp
        │   │   │       ├── HTTPArchive.cpp
        │   │   │       ├── HTTPArchive.h
        │   │   │       ├── HeaderPieceTests.cpp
        │   │   │       ├── HeaderTableTests.cpp
        │   │   │       ├── HuffmanTests.cpp
        │   │   │       ├── LoggingTests.cpp
        │   │   │       ├── QPACKCodecTests.cpp
        │   │   │       ├── QPACKContextTests.cpp
        │   │   │       ├── QPACKHeaderTableTests.cpp
        │   │   │       ├── RFCExamplesTests.cpp
        │   │   │       ├── TestStreamingCallback.h
        │   │   │       ├── TestUtil.cpp
        │   │   │       └── TestUtil.h
        │   │   ├── test/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CapsuleCodecTest.cpp
        │   │   │   ├── CodecUtilTests.cpp
        │   │   │   ├── CrossCodecTest.cpp
        │   │   │   ├── DefaultHTTPCodecFactoryTest.cpp
        │   │   │   ├── FilterTests.cpp
        │   │   │   ├── HQCodecTest.cpp
        │   │   │   ├── HQFramerTest.cpp
        │   │   │   ├── HQFramerTest.h
        │   │   │   ├── HQMultiCodecTest.cpp
        │   │   │   ├── HTTP1xCodecTest.cpp
        │   │   │   ├── HTTP2CodecTest.cpp
        │   │   │   ├── HTTP2FramerTest.cpp
        │   │   │   ├── HTTP2FramerTest.h
        │   │   │   ├── HTTPBinaryCodecTest.cpp
        │   │   │   ├── HTTPParallelCodecTest.h
        │   │   │   ├── MockHTTPCodec.h
        │   │   │   ├── TestUtils.cpp
        │   │   │   └── TestUtils.h
        │   │   └── webtransport/
        │   │       ├── CMakeLists.txt
        │   │       ├── WebTransportCapsuleCodec.cpp
        │   │       ├── WebTransportCapsuleCodec.h
        │   │       ├── WebTransportFramer.cpp
        │   │       ├── WebTransportFramer.h
        │   │       └── test/
        │   │           ├── WebTransportCapsuleCodecTest.cpp
        │   │           └── WebTransportFramerTest.cpp
        │   ├── connpool/
        │   │   ├── CMakeLists.txt
        │   │   ├── Endpoint.h
        │   │   ├── ServerIdleSessionController.cpp
        │   │   ├── ServerIdleSessionController.h
        │   │   ├── SessionHolder.cpp
        │   │   ├── SessionHolder.h
        │   │   ├── SessionPool.cpp
        │   │   ├── SessionPool.h
        │   │   ├── ThreadIdleSessionController.cpp
        │   │   ├── ThreadIdleSessionController.h
        │   │   └── test/
        │   │       ├── CMakeLists.txt
        │   │       ├── SessionPoolTest.cpp
        │   │       └── SessionPoolTestFixture.h
        │   ├── coro/
        │   │   ├── CMakeLists.txt
        │   │   ├── HTTPBodyEventQueue.cpp
        │   │   ├── HTTPBodyEventQueue.h
        │   │   ├── HTTPByteEventHelpers.cpp
        │   │   ├── HTTPByteEventHelpers.h
        │   │   ├── HTTPByteEvents.h
        │   │   ├── HTTPCoroSession.cpp
        │   │   ├── HTTPCoroSession.h
        │   │   ├── HTTPError.cpp
        │   │   ├── HTTPError.h
        │   │   ├── HTTPEvents.cpp
        │   │   ├── HTTPEvents.h
        │   │   ├── HTTPFilterFactoryHandler.cpp
        │   │   ├── HTTPFilterFactoryHandler.h
        │   │   ├── HTTPFixedSource.h
        │   │   ├── HTTPHandlerChain.cpp
        │   │   ├── HTTPHandlerChain.h
        │   │   ├── HTTPHybridSource.h
        │   │   ├── HTTPSource.h
        │   │   ├── HTTPSourceFilter.cpp
        │   │   ├── HTTPSourceFilter.h
        │   │   ├── HTTPSourceFilterChain.h
        │   │   ├── HTTPSourceHolder.h
        │   │   ├── HTTPSourceReader.cpp
        │   │   ├── HTTPSourceReader.h
        │   │   ├── HTTPStreamSource.cpp
        │   │   ├── HTTPStreamSource.h
        │   │   ├── HTTPStreamSourceHolder.h
        │   │   ├── HTTPStreamSourceSink.cpp
        │   │   ├── HTTPStreamSourceSink.h
        │   │   ├── HTTPStreamSourceSinkFactory.h
        │   │   ├── HTTPTransactionAdaptorSource.cpp
        │   │   ├── HTTPTransactionAdaptorSource.h
        │   │   ├── benchmark/
        │   │   │   └── HTTPCoroBenchmark.cpp
        │   │   ├── client/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CertReloadSessionPool.cpp
        │   │   │   ├── CertReloadSessionPool.h
        │   │   │   ├── CoroDNSResolver.cpp
        │   │   │   ├── CoroDNSResolver.h
        │   │   │   ├── HTTPClient.cpp
        │   │   │   ├── HTTPClient.h
        │   │   │   ├── HTTPClientConnectionCache.cpp
        │   │   │   ├── HTTPClientConnectionCache.h
        │   │   │   ├── HTTPCoroConnector.cpp
        │   │   │   ├── HTTPCoroConnector.h
        │   │   │   ├── HTTPCoroSessionPool.cpp
        │   │   │   ├── HTTPCoroSessionPool.h
        │   │   │   ├── HTTPSessionFactory.h
        │   │   │   ├── main.cpp
        │   │   │   ├── samples/
        │   │   │   │   └── cocurl/
        │   │   │   │       ├── CMakeLists.txt
        │   │   │   │       └── CoCurl.cpp
        │   │   │   └── test/
        │   │   │       ├── CoroDNSResolverTests.cpp
        │   │   │       ├── HTTPClientTests.cpp
        │   │   │       ├── HTTPClientTestsCommon.cpp
        │   │   │       ├── HTTPClientTestsCommon.h
        │   │   │       ├── HTTPConnectIntegrationTest.cpp
        │   │   │       ├── MockHTTPClient.h
        │   │   │       └── certs/
        │   │   │           ├── test_cert1.pem
        │   │   │           └── test_key1.pem
        │   │   ├── filters/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CompressionFilter.cpp
        │   │   │   ├── CompressionFilter.h
        │   │   │   ├── CompressionFilterFactory.h
        │   │   │   ├── DecompressionFilter.cpp
        │   │   │   ├── DecompressionFilter.h
        │   │   │   ├── DecompressionFilterFactory.cpp
        │   │   │   ├── DecompressionFilterFactory.h
        │   │   │   ├── FilterFactory.h
        │   │   │   ├── HTTPRedirectHandler.cpp
        │   │   │   ├── HTTPRedirectHandler.h
        │   │   │   ├── Logger.cpp
        │   │   │   ├── Logger.h
        │   │   │   ├── MutateFilter.cpp
        │   │   │   ├── MutateFilter.h
        │   │   │   ├── RateLimitFilter.cpp
        │   │   │   ├── RateLimitFilter.h
        │   │   │   ├── RequestContextFilterFactory.cpp
        │   │   │   ├── RequestContextFilterFactory.h
        │   │   │   ├── ServerFilterFactory.h
        │   │   │   ├── StatsFilterUtil.cpp
        │   │   │   ├── StatsFilterUtil.h
        │   │   │   ├── Status1xxFilter.cpp
        │   │   │   ├── Status1xxFilter.h
        │   │   │   ├── TransformFilter.cpp
        │   │   │   ├── TransformFilter.h
        │   │   │   ├── VisitorFilter.cpp
        │   │   │   ├── VisitorFilter.h
        │   │   │   └── test/
        │   │   │       ├── CompressionFilterTests.cpp
        │   │   │       ├── DecompressionFilterTest.cpp
        │   │   │       ├── FakeServerStats.cpp
        │   │   │       ├── FakeServerStats.h
        │   │   │       ├── HTTPRedirectHandlerTest.cpp
        │   │   │       ├── LoggerTest.cpp
        │   │   │       ├── MutateFilterTest.cpp
        │   │   │       ├── RateLimitFilterTest.cpp
        │   │   │       ├── RequestContextFilterFactoryTest.cpp
        │   │   │       ├── Status1xxFilterTest.cpp
        │   │   │       ├── TransformFilterTest.cpp
        │   │   │       └── VisitorFilterTest.cpp
        │   │   ├── server/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── HTTPCoroAcceptor.cpp
        │   │   │   ├── HTTPCoroAcceptor.h
        │   │   │   ├── HTTPServer.cpp
        │   │   │   ├── HTTPServer.h
        │   │   │   ├── ScopedHTTPServer.h
        │   │   │   ├── handlers/
        │   │   │   │   ├── CMakeLists.txt
        │   │   │   │   ├── ExpectContinueWrapperHandler.cpp
        │   │   │   │   ├── ExpectContinueWrapperHandler.h
        │   │   │   │   └── test/
        │   │   │   │       └── ExpectContinueWrapperHandlerTest.cpp
        │   │   │   ├── samples/
        │   │   │   │   ├── echo/
        │   │   │   │   │   └── EchoServer.cpp
        │   │   │   │   ├── fwdproxy/
        │   │   │   │   │   ├── ConnectSource.h
        │   │   │   │   │   └── FwdProxyServer.cpp
        │   │   │   │   └── proxy/
        │   │   │   │       └── ProxyServer.cpp
        │   │   │   └── test/
        │   │   │       ├── HTTPServerTest.cpp
        │   │   │       └── certs/
        │   │   │           ├── test_cert1.pem
        │   │   │           ├── test_cert2.pem
        │   │   │           ├── test_key1.pem
        │   │   │           └── test_key2.pem
        │   │   ├── test/
        │   │   │   ├── HTTPCoroSessionTests.cpp
        │   │   │   ├── HTTPCoroSessionTests.h
        │   │   │   ├── HTTPDownstreamCoroSessionTests.cpp
        │   │   │   ├── HTTPFilterFactoryHandlerTests.cpp
        │   │   │   ├── HTTPHandlerChainTests.cpp
        │   │   │   ├── HTTPSourceTests.cpp
        │   │   │   ├── HTTPStreamSourceSinkTests.cpp
        │   │   │   ├── HTTPTestSources.h
        │   │   │   ├── HTTPTransactionAdaptorSourceTest.cpp
        │   │   │   ├── HTTPUpstreamCoroSessionTests.cpp
        │   │   │   ├── HttpWtUpstreamTests.cpp
        │   │   │   ├── Mocks.h
        │   │   │   ├── TestUtils.h
        │   │   │   └── WindowContainerTests.cpp
        │   │   ├── transport/
        │   │   │   ├── CMakeLists.txt
        │   │   │   ├── CoroSSLTransport.cpp
        │   │   │   ├── CoroSSLTransport.h
        │   │   │   ├── HTTPConnectAsyncTransport.cpp
        │   │   │   ├── HTTPConnectAsyncTransport.h
        │   │   │   ├── HTTPConnectStream.cpp
        │   │   │   ├── HTTPConnectStream.h
        │   │   │   ├── HTTPConnectTransport.cpp
        │   │   │   ├── HTTPConnectTransport.h
        │   │   │   └── test/
        │   │   │       ├── Client.cpp
        │   │   │       ├── CoroSSLTransportTest.cpp
        │   │   │       ├── HTTPConnectTransportTest.cpp
        │   │   │       ├── HTTPConnectTransportTest.h
        │   │   │       ├── TestCoroTransport.cpp
        │   │   │       └── TestCoroTransport.h
        │   │   └── util/
        │   │       ├── AwaitableKeepAlive.h
        │   │       ├── CMakeLists.txt
        │   │       ├── CancellableBaton.cpp
        │   │       ├── CancellableBaton.h
        │   │       ├── CoroWtSession.cpp
        │   │       ├── CoroWtSession.h
        │   │       ├── DetachableExecutor.cpp
        │   │       ├── DetachableExecutor.h
        │   │       ├── ExecutorSourceFilter.cpp
        │   │       ├── ExecutorSourceFilter.h
        │   │       ├── Refcount.h
        │   │       ├── TimedBaton.h
        │   │       ├── Transport.cpp
        │   │       ├── Transport.h
        │   │       ├── WindowContainer.h
        │   │       └── test/
        │   │           ├── AwaitableKeepAliveTest.cpp
        │   │           ├── CancellableBatonTest.cpp
        │   │           ├── DetachableExecutorTest.cpp
        │   │           ├── TestHelpers.h
        │   │           └── TimedBatonTest.cpp
        │   ├── experimental/
        │   │   ├── CMakeLists.txt
        │   │   ├── RFC1867.cpp
        │   │   ├── RFC1867.h
        │   │   └── test/
        │   │       └── RFC1867Test.cpp
        │   ├── gen_HTTPCommonHeaders.sh
        │   ├── observer/
        │   │   ├── CMakeLists.txt
        │   │   ├── HTTPSessionObserverContainer.h
        │   │   ├── HTTPSessionObserverInterface.cpp
        │   │   ├── HTTPSessionObserverInterface.h
        │   │   ├── HTTPTransactionObserverContainer.h
        │   │   ├── HTTPTransactionObserverInterface.cpp
        │   │   └── HTTPTransactionObserverInterface.h
        │   ├── session/
        │   │   ├── AckLatencyEvent.h
        │   │   ├── ByteEventTracker.cpp
        │   │   ├── ByteEventTracker.h
        │   │   ├── ByteEvents.cpp
        │   │   ├── ByteEvents.h
        │   │   ├── CMakeLists.txt
        │   │   ├── CodecErrorResponseHandler.cpp
        │   │   ├── CodecErrorResponseHandler.h
        │   │   ├── HQByteEventTracker.cpp
        │   │   ├── HQByteEventTracker.h
        │   │   ├── HQDownstreamSession.cpp
        │   │   ├── HQDownstreamSession.h
        │   │   ├── HQSession.cpp
        │   │   ├── HQSession.h
        │   │   ├── HQStreamBase.cpp
        │   │   ├── HQStreamBase.h
        │   │   ├── HQStreamDispatcher.cpp
        │   │   ├── HQStreamDispatcher.h
        │   │   ├── HQUpstreamSession.cpp
        │   │   ├── HQUpstreamSession.h
        │   │   ├── HTTP2PriorityQueue.cpp
        │   │   ├── HTTP2PriorityQueue.h
        │   │   ├── HTTPDefaultSessionCodecFactory.cpp
        │   │   ├── HTTPDefaultSessionCodecFactory.h
        │   │   ├── HTTPDirectResponseHandler.cpp
        │   │   ├── HTTPDirectResponseHandler.h
        │   │   ├── HTTPDownstreamSession.cpp
        │   │   ├── HTTPDownstreamSession.h
        │   │   ├── HTTPErrorPage.cpp
        │   │   ├── HTTPErrorPage.h
        │   │   ├── HTTPEvent.cpp
        │   │   ├── HTTPEvent.h
        │   │   ├── HTTPSession.cpp
        │   │   ├── HTTPSession.h
        │   │   ├── HTTPSessionAcceptor.cpp
        │   │   ├── HTTPSessionAcceptor.h
        │   │   ├── HTTPSessionActivityTracker.cpp
        │   │   ├── HTTPSessionActivityTracker.h
        │   │   ├── HTTPSessionBase.cpp
        │   │   ├── HTTPSessionBase.h
        │   │   ├── HTTPSessionController.h
        │   │   ├── HTTPSessionStats.h
        │   │   ├── HTTPTransaction.cpp
        │   │   ├── HTTPTransaction.h
        │   │   ├── HTTPTransactionEgressSM.cpp
        │   │   ├── HTTPTransactionEgressSM.h
        │   │   ├── HTTPTransactionIngressSM.cpp
        │   │   ├── HTTPTransactionIngressSM.h
        │   │   ├── HTTPUpstreamSession.cpp
        │   │   ├── HTTPUpstreamSession.h
        │   │   ├── QuicProtocolInfo.h
        │   │   ├── SecondaryAuthManager.cpp
        │   │   ├── SecondaryAuthManager.h
        │   │   ├── SecondaryAuthManagerBase.h
        │   │   ├── ServerPushLifecycle.h
        │   │   ├── SimpleController.cpp
        │   │   ├── SimpleController.h
        │   │   ├── TTLBAStats.h
        │   │   ├── TransactionByteEvents.h
        │   │   ├── WebTransportFilter.h
        │   │   └── test/
        │   │       ├── ByteEventTrackerMocks.h
        │   │       ├── ByteEventTrackerTest.cpp
        │   │       ├── CMakeLists.txt
        │   │       ├── DownstreamTransactionTest.cpp
        │   │       ├── HQByteEventTrackerTest.cpp
        │   │       ├── HQDownstreamSessionTest.cpp
        │   │       ├── HQDownstreamSessionTest.h
        │   │       ├── HQSessionMocks.h
        │   │       ├── HQSessionMocksTest.cpp
        │   │       ├── HQSessionTestCommon.cpp
        │   │       ├── HQSessionTestCommon.h
        │   │       ├── HQStreamBaseTest.cpp
        │   │       ├── HQStreamDispatcherTest.cpp
        │   │       ├── HQUpstreamSessionTest.cpp
        │   │       ├── HQUpstreamSessionTest.h
        │   │       ├── HTTP2PriorityQueueBench.cpp
        │   │       ├── HTTP2PriorityQueueTest.cpp
        │   │       ├── HTTPDefaultSessionCodecFactoryTest.cpp
        │   │       ├── HTTPDownstreamSessionTest.cpp
        │   │       ├── HTTPSessionAcceptorTest.cpp
        │   │       ├── HTTPSessionActivityTrackerTest.cpp
        │   │       ├── HTTPSessionBenchmark.cpp
        │   │       ├── HTTPSessionMocks.h
        │   │       ├── HTTPSessionTest.h
        │   │       ├── HTTPTransactionMocks.h
        │   │       ├── HTTPTransactionSMTest.cpp
        │   │       ├── HTTPTransactionTest.cpp
        │   │       ├── HTTPTransactionWebTransportTest.cpp
        │   │       ├── HTTPUpstreamSessionTest.cpp
        │   │       ├── MockByteEventTracker.h
        │   │       ├── MockCodecDownstreamTest.cpp
        │   │       ├── MockHTTPSessionStats.h
        │   │       ├── MockHTTPTransactionObserver.h
        │   │       ├── MockQuicSocketDriver.h
        │   │       ├── MockSecondaryAuthManager.h
        │   │       ├── MockSessionObserver.h
        │   │       ├── SecondaryAuthManagerTest.cpp
        │   │       ├── TestUtils.cpp
        │   │       ├── TestUtils.h
        │   │       ├── WebTransportFilterTest.cpp
        │   │       ├── test_cert1.key
        │   │       └── test_cert1.pem
        │   ├── sink/
        │   │   ├── CMakeLists.txt
        │   │   ├── FlowControlInfo.h
        │   │   ├── HTTPSink.h
        │   │   ├── HTTPTransactionSink.cpp
        │   │   ├── HTTPTransactionSink.h
        │   │   ├── HTTPTunnelSink.cpp
        │   │   ├── HTTPTunnelSink.h
        │   │   └── test/
        │   │       └── HTTPConnectSinkTest.cpp
        │   ├── stats/
        │   │   ├── ConnectionStats.cpp
        │   │   ├── ConnectionStats.h
        │   │   ├── HTTPCodecStats.cpp
        │   │   ├── HTTPCodecStats.h
        │   │   ├── HTTPCodecStatsFilter.cpp
        │   │   ├── HTTPCodecStatsFilter.h
        │   │   ├── HeaderCodecStats.cpp
        │   │   ├── HeaderCodecStats.h
        │   │   ├── HttpServerStats.h
        │   │   ├── ResponseCodeStatsMinute.cpp
        │   │   ├── ResponseCodeStatsMinute.h
        │   │   ├── TLResponseCodeStats.cpp
        │   │   ├── TLResponseCodeStats.h
        │   │   ├── ThreadLocalHTTPSessionStats.cpp
        │   │   └── ThreadLocalHTTPSessionStats.h
        │   ├── structuredheaders/
        │   │   ├── CMakeLists.txt
        │   │   ├── StructuredHeadersBuffer.cpp
        │   │   ├── StructuredHeadersBuffer.h
        │   │   ├── StructuredHeadersConstants.cpp
        │   │   ├── StructuredHeadersConstants.h
        │   │   ├── StructuredHeadersDecoder.cpp
        │   │   ├── StructuredHeadersDecoder.h
        │   │   ├── StructuredHeadersEncoder.cpp
        │   │   ├── StructuredHeadersEncoder.h
        │   │   ├── StructuredHeadersUtilities.cpp
        │   │   ├── StructuredHeadersUtilities.h
        │   │   └── test/
        │   │       ├── CMakeLists.txt
        │   │       ├── StructuredHeadersBufferTest.cpp
        │   │       ├── StructuredHeadersDecoderTest.cpp
        │   │       ├── StructuredHeadersEncoderTest.cpp
        │   │       ├── StructuredHeadersStandardTest.cpp
        │   │       └── StructuredHeadersUtilitiesTest.cpp
        │   ├── test/
        │   │   ├── CMakeLists.txt
        │   │   ├── HTTPCommonHeadersTests.cpp
        │   │   ├── HTTPConnectorWithFizzTest.cpp
        │   │   ├── HTTPHeadersBenchmark.cpp
        │   │   ├── HTTPMessageFilterTest.cpp
        │   │   ├── HTTPMessageTest.cpp
        │   │   ├── HTTPPriorityFunctionsTest.cpp
        │   │   ├── MockHTTPHeaders.h
        │   │   ├── MockHTTPMessageFilter.h
        │   │   ├── ProxyStatusTest.cpp
        │   │   ├── RFC2616Test.cpp
        │   │   └── WindowTest.cpp
        │   └── webtransport/
        │       ├── CMakeLists.txt
        │       ├── FlowController.h
        │       ├── HTTPWebTransport.cpp
        │       ├── HTTPWebTransport.h
        │       ├── QuicWebTransport.cpp
        │       ├── QuicWebTransport.h
        │       ├── QuicWtSession.cpp
        │       ├── QuicWtSession.h
        │       ├── StreamPriorityQueue.h
        │       ├── WebTransport.cpp
        │       ├── WebTransport.h
        │       ├── WebTransportImpl.cpp
        │       ├── WebTransportImpl.h
        │       ├── WtEgressContainer.cpp
        │       ├── WtEgressContainer.h
        │       ├── WtStreamManager.cpp
        │       ├── WtStreamManager.h
        │       ├── WtUtils.cpp
        │       ├── WtUtils.h
        │       └── test/
        │           ├── CMakeLists.txt
        │           ├── FakeSharedWebTransport.h
        │           ├── FlowControllerTest.cpp
        │           ├── Mocks.h
        │           ├── QuicWebTransportTest.cpp
        │           ├── QuicWtSessionTest.cpp
        │           ├── WebTransportAPITest.cpp
        │           └── WtStreamManagerTest.cpp
        ├── pools/
        │   └── generators/
        │       ├── CMakeLists.txt
        │       ├── FileServerListGenerator.cpp
        │       ├── FileServerListGenerator.h
        │       ├── MemberGroupConfig.h
        │       ├── ServerConfig.h
        │       ├── ServerListGenerator.cpp
        │       ├── ServerListGenerator.h
        │       └── coro/
        │           ├── CMakeLists.txt
        │           ├── CoroServerListGenerator.h
        │           ├── FileCoroServerListGenerator.cpp
        │           ├── FileCoroServerListGenerator.h
        │           ├── JsonFileCoroServerListGenerator.cpp
        │           ├── JsonFileCoroServerListGenerator.h
        │           ├── PlainTextFileCoroServerListGenerator.cpp
        │           └── PlainTextFileCoroServerListGenerator.h
        ├── sampling/
        │   ├── CMakeLists.txt
        │   ├── MultiSampled.h
        │   ├── Sampled.h
        │   ├── Sampling.cpp
        │   ├── Sampling.h
        │   ├── SamplingFunctions.h
        │   └── test/
        │       ├── CMakeLists.txt
        │       └── SamplingTest.cpp
        ├── services/
        │   ├── AcceptorConfiguration.h
        │   ├── CMakeLists.txt
        │   ├── HTTPAcceptor.h
        │   ├── RequestWorkerThread.cpp
        │   ├── RequestWorkerThread.h
        │   ├── RequestWorkerThreadNoExecutor.cpp
        │   ├── RequestWorkerThreadNoExecutor.h
        │   ├── Service.cpp
        │   ├── Service.h
        │   ├── ServiceConfiguration.h
        │   ├── ServiceWorker.h
        │   ├── WorkerThread.cpp
        │   ├── WorkerThread.h
        │   └── test/
        │       ├── AcceptorTest.cpp
        │       ├── CMakeLists.txt
        │       └── RequestWorkerThreadTest.cpp
        ├── ssl/
        │   ├── CMakeLists.txt
        │   ├── ProxygenSSL.h
        │   ├── ThreadLocalSSLStats.cpp
        │   └── ThreadLocalSSLStats.h
        ├── stats/
        │   ├── BaseStats.cpp
        │   ├── BaseStats.h
        │   ├── PeriodicStats.h
        │   ├── PeriodicStatsDataBase.h
        │   ├── ResourceData.h
        │   ├── ResourceStats.cpp
        │   ├── ResourceStats.h
        │   ├── gen_StatsWrapper.sh
        │   └── test/
        │       ├── BaseStatsTest.cpp
        │       ├── CMakeLists.txt
        │       ├── MockARLResourceStats.h
        │       ├── MockResources.h
        │       ├── PeriodicStatsTest.cpp
        │       ├── PeriodicStatsTestHelper.h
        │       ├── ResourceDataTest.cpp
        │       └── ResourceStatsTest.cpp
        ├── test/
        │   ├── CMakeLists.txt
        │   ├── TestAsyncTransport.cpp
        │   ├── TestAsyncTransport.h
        │   └── TestMain.cpp
        ├── transport/
        │   ├── AsyncUDPSocketFactory.cpp
        │   ├── AsyncUDPSocketFactory.h
        │   ├── CMakeLists.txt
        │   ├── ConnectUDPUtils.cpp
        │   ├── ConnectUDPUtils.h
        │   ├── H3DatagramAsyncSocket.cpp
        │   ├── H3DatagramAsyncSocket.h
        │   ├── PersistentFizzPskCache.cpp
        │   ├── PersistentFizzPskCache.h
        │   ├── PersistentQuicPskCache.cpp
        │   ├── PersistentQuicPskCache.h
        │   ├── PersistentQuicTokenCache.cpp
        │   ├── PersistentQuicTokenCache.h
        │   └── test/
        │       ├── AsyncUDPSocketFactoryTest.cpp
        │       ├── CMakeLists.txt
        │       ├── ConnectUDPUtilsTest.cpp
        │       ├── H3DatagramAsyncSocketTest.cpp
        │       ├── H3DatagramAsyncSocketTest.h
        │       ├── MockAsyncTransportCertificate.h
        │       ├── PersistentFizzPskCacheTest.cpp
        │       └── PersistentQuicPskCacheTest.cpp
        └── utils/
            ├── AcceptorAddress.h
            ├── AsyncTimeoutSet.cpp
            ├── AsyncTimeoutSet.h
            ├── CMakeLists.txt
            ├── CobHelper.h
            ├── CompressionFilterUtils.h
            ├── ConditionalGate.h
            ├── ConsistentHash.h
            ├── CryptUtil.cpp
            ├── CryptUtil.h
            ├── Exception.cpp
            ├── Exception.h
            ├── Export.h
            ├── FilterChain.h
            ├── HTTPTime.cpp
            ├── HTTPTime.h
            ├── Logging.cpp
            ├── Logging.h
            ├── NullTraceEventObserver.h
            ├── ParseURL.cpp
            ├── ParseURL.h
            ├── PerfectIndexMap.h
            ├── RendezvousHash.cpp
            ├── RendezvousHash.h
            ├── SafePathUtils.cpp
            ├── SafePathUtils.h
            ├── StateMachine.h
            ├── StreamCompressor.h
            ├── StreamDecompressor.h
            ├── TestUtils.h
            ├── Time.h
            ├── TraceEvent.cpp
            ├── TraceEvent.h
            ├── TraceEventContext.cpp
            ├── TraceEventContext.h
            ├── TraceEventObserver.h
            ├── URL.h
            ├── UnionBasedStatic.h
            ├── UtilInl.h
            ├── WeakRefCountedPtr.h
            ├── WheelTimerInstance.cpp
            ├── WheelTimerInstance.h
            ├── ZlibStreamCompressor.cpp
            ├── ZlibStreamCompressor.h
            ├── ZlibStreamDecompressor.cpp
            ├── ZlibStreamDecompressor.h
            ├── ZstdStreamCompressor.cpp
            ├── ZstdStreamCompressor.h
            ├── ZstdStreamDecompressor.cpp
            ├── ZstdStreamDecompressor.h
            ├── gen_perfect_hash_table.sh
            ├── gen_trace_event_constants.py
            ├── perfect_hash_table_template.cpp.gperf
            ├── perfect_hash_table_template.h
            ├── samples/
            │   ├── TraceEventType.txt
            │   └── TraceFieldType.txt
            └── test/
                ├── AsyncTimeoutSetTest.cpp
                ├── CMakeLists.txt
                ├── CompressionFilterUtilsTest.cpp
                ├── ConditionalGateTest.cpp
                ├── CryptUtilTest.cpp
                ├── GenericFilterTest.cpp
                ├── HTTPTimeTest.cpp
                ├── LoggingTests.cpp
                ├── MockTime.h
                ├── ParseURLTest.cpp
                ├── PerfectIndexMapBenchmark.cpp
                ├── PerfectIndexMapTest.cpp
                ├── RendezvousHashTest.cpp
                ├── TimeTest.cpp
                ├── TraceEventTest.cpp
                ├── URLTest.cpp
                ├── UtilTest.cpp
                ├── WeakRefCountedPtrTest.cpp
                ├── ZlibTests.cpp
                └── ZstdTests.cpp
Download .txt
Showing preview only (617K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6954 symbols across 835 files)

FILE: build/fbcode_builder/CMake/fb_py_test_main.py
  class get_cpu_instr_counter (line 42) | class get_cpu_instr_counter:
    method read (line 43) | def read(self):
  class TestStatus (line 52) | class TestStatus:
  class PathMatcher (line 62) | class PathMatcher:
    method __init__ (line 63) | def __init__(self, include_patterns, omit_patterns):
    method omit (line 67) | def omit(self, path):
    method include (line 78) | def include(self, path):
  class DebugWipeFinder (line 82) | class DebugWipeFinder(PathFinder):
    method __init__ (line 88) | def __init__(self, matcher):
    method find_spec (line 91) | def find_spec(self, fullname, path=None, target=None):
  function optimize_for_coverage (line 128) | def optimize_for_coverage(cov, include_patterns, omit_patterns):
  class TeeStream (line 138) | class TeeStream:
    method __init__ (line 139) | def __init__(self, *streams):
    method write (line 142) | def write(self, data):
    method flush (line 146) | def flush(self):
    method isatty (line 150) | def isatty(self):
  class CallbackStream (line 154) | class CallbackStream:
    method __init__ (line 155) | def __init__(self, callback, bytes_callback=None, orig=None):
    method write (line 170) | def write(self, data):
    method flush (line 173) | def flush(self):
    method isatty (line 176) | def isatty(self):
    method fileno (line 179) | def fileno(self):
  class BuckTestResult (line 183) | class BuckTestResult(unittest.TextTestResult):
    method __init__ (line 191) | def __init__(
    method getResults (line 203) | def getResults(self):
    method startTest (line 206) | def startTest(self, test):
    method _find_next_test (line 227) | def _find_next_test(self, suite):
    method stopTest (line 245) | def stopTest(self, test):
    method stopTestRun (line 282) | def stopTestRun(self):
    method _withTest (line 288) | def _withTest(self, test):
    method _setStatus (line 293) | def _setStatus(self, test, status, message=None, stacktrace=None):
    method setStatus (line 302) | def setStatus(self, test, status, message=None, stacktrace=None):
    method setException (line 314) | def setException(self, test, status, excinfo):
    method addSuccess (line 323) | def addSuccess(self, test):
    method addError (line 327) | def addError(self, test, err):
    method addFailure (line 331) | def addFailure(self, test, err):
    method addSkip (line 335) | def addSkip(self, test, reason):
    method addExpectedFailure (line 339) | def addExpectedFailure(self, test, err):
    method addUnexpectedSuccess (line 343) | def addUnexpectedSuccess(self, test):
    method addStdout (line 347) | def addStdout(self, val):
    method addStdoutBytes (line 353) | def addStdoutBytes(self, val):
    method addStderr (line 357) | def addStderr(self, val):
    method addStderrBytes (line 363) | def addStderrBytes(self, val):
  class BuckTestRunner (line 368) | class BuckTestRunner(unittest.TextTestRunner):
    method __init__ (line 369) | def __init__(self, main_program, suite, show_output=True, **kwargs):
    method _makeResult (line 375) | def _makeResult(self):
  function _format_test_name (line 386) | def _format_test_name(test_class, attrname):
  class StderrLogHandler (line 390) | class StderrLogHandler(logging.StreamHandler):
    method __init__ (line 401) | def __init__(self):
    method stream (line 405) | def stream(self):
  class RegexTestLoader (line 409) | class RegexTestLoader(unittest.TestLoader):
    method __init__ (line 410) | def __init__(self, regex=None):
    method getTestCaseNames (line 414) | def getTestCaseNames(self, testCaseClass):
  class Loader (line 431) | class Loader:
    method __init__ (line 435) | def __init__(self, modules, regex=None):
    method load_all (line 439) | def load_all(self):
    method load_args (line 449) | def load_args(self, args):
  class MainProgram (line 486) | class MainProgram:
    method __init__ (line 495) | def __init__(self, argv):
    method init_option_parser (line 500) | def init_option_parser(self):
    method parse_options (line 580) | def parse_options(self, argv):
    method setup_logging (line 592) | def setup_logging(self):
    method create_loader (line 629) | def create_loader(self):
    method load_tests (line 634) | def load_tests(self):
    method get_tests (line 651) | def get_tests(self, test_suite):
    method run (line 662) | def run(self):
    method run_tests (line 680) | def run_tests(self, test_suite):
    method get_abbr_impl (line 704) | def get_abbr_impl(self):
    method start_coverage (line 718) | def start_coverage(self):
    method get_coverage (line 743) | def get_coverage(self):
    method convert_to_diff_cov_str (line 780) | def convert_to_diff_cov_str(self, analysis):
  function main (line 800) | def main(argv):

FILE: build/fbcode_builder/CMake/fb_py_win_main.c
  function locate_py_main (line 13) | int locate_py_main(int argc, wchar_t** argv) {
  function wmain (line 47) | int wmain() {

FILE: build/fbcode_builder/CMake/make_fbpy_archive.py
  class UsageError (line 19) | class UsageError(Exception):
    method __init__ (line 20) | def __init__(self, message):
    method __str__ (line 23) | def __str__(self):
  class BadManifestError (line 27) | class BadManifestError(UsageError):
    method __init__ (line 28) | def __init__(self, path, line_num, message):
  function parse_manifest (line 41) | def parse_manifest(manifest, path_map):
  function populate_install_tree (line 93) | def populate_install_tree(inst_dir, path_map):
  function build_pex (line 127) | def build_pex(args, path_map):
  function build_zipapp (line 157) | def build_zipapp(args, path_map):
  function create_main_module (line 177) | def create_main_module(args, inst_dir, path_map):
  function build_install_dir (line 198) | def build_install_dir(args, path_map):
  function ensure_directory (line 213) | def ensure_directory(path):
  function install_library (line 221) | def install_library(args, path_map):
  function parse_manifests (line 242) | def parse_manifests(args):
  function check_main_module (line 258) | def check_main_module(args, path_map):
  function main (line 303) | def main():

FILE: build/fbcode_builder/getdeps.py
  class UsageError (line 46) | class UsageError(Exception):
  class ValidateManifest (line 60) | class ValidateManifest(SubCmd):
    method run (line 61) | def run(self, args):
    method setup_parser (line 70) | def setup_parser(self, parser):
  class ShowHostType (line 75) | class ShowHostType(SubCmd):
    method run (line 76) | def run(self, args):
  class ProjectCmdBase (line 82) | class ProjectCmdBase(SubCmd):
    method run (line 83) | def run(self, args):
    method process_project_dir_arguments (line 120) | def process_project_dir_arguments(self, args, loader):
    method setup_parser (line 161) | def setup_parser(self, parser):
    method setup_project_cmd_parser (line 220) | def setup_project_cmd_parser(self, parser):
    method create_builder (line 223) | def create_builder(self, loader, manifest):
    method check_built (line 239) | def check_built(self, loader, manifest):
  class CachedProject (line 246) | class CachedProject:
    method __init__ (line 250) | def __init__(self, cache, loader, m):
    method is_cacheable (line 269) | def is_cacheable(self):
    method was_cached (line 273) | def was_cached(self):
    method download (line 277) | def download(self):
    method upload (line 302) | def upload(self):
  class FetchCmd (line 322) | class FetchCmd(ProjectCmdBase):
    method setup_project_cmd_parser (line 323) | def setup_project_cmd_parser(self, parser):
    method run_project_cmd (line 338) | def run_project_cmd(self, args, loader, manifest):
  class InstallSysDepsCmd (line 371) | class InstallSysDepsCmd(ProjectCmdBase):
    method setup_project_cmd_parser (line 372) | def setup_project_cmd_parser(self, parser):
    method run_project_cmd (line 409) | def run_project_cmd(self, args, loader, manifest):
  class ListDepsCmd (line 491) | class ListDepsCmd(ProjectCmdBase):
    method run_project_cmd (line 492) | def run_project_cmd(self, args, loader, manifest):
    method setup_project_cmd_parser (line 497) | def setup_project_cmd_parser(self, parser):
  function clean_dirs (line 507) | def clean_dirs(opts):
  class CleanCmd (line 516) | class CleanCmd(SubCmd):
    method run (line 517) | def run(self, args):
  class ShowScratchDirCmd (line 523) | class ShowScratchDirCmd(SubCmd):
    method run (line 524) | def run(self, args):
  class ShowBuildDirCmd (line 530) | class ShowBuildDirCmd(ProjectCmdBase):
    method run_project_cmd (line 531) | def run_project_cmd(self, args, loader, manifest):
    method setup_project_cmd_parser (line 541) | def setup_project_cmd_parser(self, parser):
  class ShowInstDirCmd (line 551) | class ShowInstDirCmd(ProjectCmdBase):
    method run_project_cmd (line 552) | def run_project_cmd(self, args, loader, manifest):
    method setup_project_cmd_parser (line 568) | def setup_project_cmd_parser(self, parser):
  class QueryPathsCmd (line 578) | class QueryPathsCmd(ProjectCmdBase):
    method run_project_cmd (line 579) | def run_project_cmd(self, args, loader, manifest):
    method setup_project_cmd_parser (line 600) | def setup_project_cmd_parser(self, parser):
  class ShowSourceDirCmd (line 610) | class ShowSourceDirCmd(ProjectCmdBase):
    method run_project_cmd (line 611) | def run_project_cmd(self, args, loader, manifest):
    method setup_project_cmd_parser (line 621) | def setup_project_cmd_parser(self, parser):
  class BuildCmd (line 631) | class BuildCmd(ProjectCmdBase):
    method run_project_cmd (line 632) | def run_project_cmd(self, args, loader, manifest):
    method compute_dep_change_status (line 757) | def compute_dep_change_status(self, m, built_marker, loader):
    method compute_source_change_status (line 793) | def compute_source_change_status(
    method setup_project_cmd_parser (line 834) | def setup_project_cmd_parser(self, parser):
  class FixupDeps (line 897) | class FixupDeps(ProjectCmdBase):
    method run_project_cmd (line 898) | def run_project_cmd(self, args, loader, manifest):
    method setup_project_cmd_parser (line 924) | def setup_project_cmd_parser(self, parser):
  class TestCmd (line 938) | class TestCmd(ProjectCmdBase):
    method run_project_cmd (line 939) | def run_project_cmd(self, args, loader, manifest):
    method setup_project_cmd_parser (line 953) | def setup_project_cmd_parser(self, parser):
  class DebugCmd (line 982) | class DebugCmd(ProjectCmdBase):
    method run_project_cmd (line 983) | def run_project_cmd(self, args, loader, manifest):
  class EnvCmd (line 991) | class EnvCmd(ProjectCmdBase):
    method setup_project_cmd_parser (line 992) | def setup_project_cmd_parser(self, parser):
    method run_project_cmd (line 1002) | def run_project_cmd(self, args, loader, manifest):
  class GenerateGitHubActionsCmd (line 1009) | class GenerateGitHubActionsCmd(ProjectCmdBase):
    method run_project_cmd (line 1021) | def run_project_cmd(self, args, loader, manifest):
    method get_run_on (line 1033) | def get_run_on(self, args):
    method write_job_for_platform (line 1066) | def write_job_for_platform(self, platform, args):  # noqa: C901
    method setup_project_cmd_parser (line 1415) | def setup_project_cmd_parser(self, parser):
  function get_arg_var_name (line 1486) | def get_arg_var_name(args):
  function parse_args (line 1494) | def parse_args():
  function main (line 1627) | def main():

FILE: build/fbcode_builder/getdeps/builder.py
  class BuilderBase (line 38) | class BuilderBase:
    method __init__ (line 39) | def __init__(
    method _get_cmd_prefix (line 79) | def _get_cmd_prefix(self) -> list[str]:
    method _check_cmd (line 101) | def _check_cmd(self, cmd: list[str], **kwargs: object) -> None:
    method _run_cmd (line 110) | def _run_cmd(
    method _reconfigure (line 143) | def _reconfigure(self, reconfigure: bool) -> bool:
    method _apply_patchfile (line 150) | def _apply_patchfile(self) -> None:
    method prepare (line 185) | def prepare(self, reconfigure: bool) -> None:
    method debug (line 191) | def debug(self, reconfigure: bool) -> None:
    method printenv (line 201) | def printenv(self, reconfigure: bool) -> None:
    method build (line 224) | def build(self, reconfigure: bool) -> None:
    method _job_weight_mib (line 254) | def _job_weight_mib(self) -> int:
    method num_jobs (line 273) | def num_jobs(self) -> int:
    method memory_limit_preexec_fn (line 277) | def memory_limit_preexec_fn(self) -> Callable[[], None] | None:
    method run_tests (line 285) | def run_tests(
    method _prepare (line 299) | def _prepare(self, reconfigure: bool) -> None:
    method _build (line 305) | def _build(self, reconfigure: bool) -> None:
    method _compute_env (line 312) | def _compute_env(self, env: Env | None = None) -> Env:
    method get_dev_run_script_path (line 325) | def get_dev_run_script_path(self) -> str:
    method get_dev_run_extra_path_dirs (line 329) | def get_dev_run_extra_path_dirs(
  class MakeBuilder (line 341) | class MakeBuilder(BuilderBase):
    method __init__ (line 342) | def __init__(
    method _make_binary (line 371) | def _make_binary(self) -> str | None:
    method _get_prefix (line 374) | def _get_prefix(self) -> list[str]:
    method _build (line 377) | def _build(self, reconfigure: bool) -> None:
    method run_tests (line 406) | def run_tests(
  class CMakeBootStrapBuilder (line 447) | class CMakeBootStrapBuilder(MakeBuilder):
    method _build (line 448) | def _build(self, reconfigure: bool) -> None:
  class AutoconfBuilder (line 459) | class AutoconfBuilder(BuilderBase):
    method __init__ (line 460) | def __init__(
    method _make_binary (line 493) | def _make_binary(self) -> str | None:
    method _build (line 496) | def _build(self, reconfigure: bool) -> None:
  class Iproute2Builder (line 540) | class Iproute2Builder(BuilderBase):
    method __init__ (line 545) | def __init__(
    method _build (line 567) | def _build(self, reconfigure: bool) -> None:
  class MesonBuilder (line 585) | class MesonBuilder(BuilderBase):
    method __init__ (line 588) | def __init__(
    method _build (line 610) | def _build(self, reconfigure: bool) -> None:
  class CMakeBuilder (line 644) | class CMakeBuilder(BuilderBase):
    method __init__ (line 757) | def __init__(
    method _invalidate_cache (line 801) | def _invalidate_cache(self) -> None:
    method _needs_reconfigure (line 813) | def _needs_reconfigure(self) -> bool:
    method _write_build_script (line 820) | def _write_build_script(self, **kwargs: object) -> None:
    method _compute_cmake_define_args (line 856) | def _compute_cmake_define_args(self, env: Env) -> list[str]:
    method _run_include_rewriter (line 924) | def _run_include_rewriter(self) -> None:
    method _build (line 941) | def _build(self, reconfigure: bool) -> None:
    method _build_targets (line 1005) | def _build_targets(self, targets: Sequence[str]) -> None:
    method _get_missing_test_executables (line 1044) | def _get_missing_test_executables(
    method run_tests (line 1082) | def run_tests(
  class NinjaBootstrap (line 1345) | class NinjaBootstrap(BuilderBase):
    method __init__ (line 1346) | def __init__(
    method _build (line 1368) | def _build(self, reconfigure: bool) -> None:
  class OpenSSLBuilder (line 1381) | class OpenSSLBuilder(BuilderBase):
    method __init__ (line 1382) | def __init__(
    method _build (line 1404) | def _build(self, reconfigure: bool) -> None:
  class Boost (line 1469) | class Boost(BuilderBase):
    method __init__ (line 1470) | def __init__(
    method _build (line 1499) | def _build(self, reconfigure: bool) -> None:
  class NopBuilder (line 1554) | class NopBuilder(BuilderBase):
    method __init__ (line 1555) | def __init__(
    method build (line 1569) | def build(self, reconfigure: bool) -> None:
  class SetupPyBuilder (line 1609) | class SetupPyBuilder(BuilderBase):
    method _build (line 1610) | def _build(self, reconfigure: bool) -> None:
    method run_tests (line 1640) | def run_tests(
  class SqliteBuilder (line 1667) | class SqliteBuilder(BuilderBase):
    method __init__ (line 1668) | def __init__(
    method _build (line 1690) | def _build(self, reconfigure: bool) -> None:

FILE: build/fbcode_builder/getdeps/buildopts.py
  function detect_project (line 34) | def detect_project(path: str) -> tuple[str | None, str | None]:
  class BuildOptions (line 53) | class BuildOptions:
    method __init__ (line 54) | def __init__(
    method manifests_dir (line 196) | def manifests_dir(self) -> str:
    method is_darwin (line 199) | def is_darwin(self) -> bool:
    method is_windows (line 202) | def is_windows(self) -> bool:
    method is_arm (line 205) | def is_arm(self) -> bool:
    method get_vcvars_path (line 208) | def get_vcvars_path(self) -> str | None:
    method is_linux (line 211) | def is_linux(self) -> bool:
    method is_freebsd (line 214) | def is_freebsd(self) -> bool:
    method get_num_jobs (line 217) | def get_num_jobs(self, job_weight: int) -> int:
    method get_context_generator (line 228) | def get_context_generator(
    method compute_env_for_install_dirs (line 251) | def compute_env_for_install_dirs(
    method add_homebrew_package_to_env (line 389) | def add_homebrew_package_to_env(self, package: str, env: Env) -> bool:
    method add_prefix_to_env (line 397) | def add_prefix_to_env(
  function list_win32_subst_letters (line 529) | def list_win32_subst_letters() -> dict[str, str]:
  function find_existing_win32_subst_for_path (line 545) | def find_existing_win32_subst_for_path(
  function find_unused_drive_letter (line 556) | def find_unused_drive_letter() -> str | None:
  function map_subst_path (line 580) | def map_subst_path(path: str) -> str:
  function _check_host_type (line 611) | def _check_host_type(args: argparse.Namespace, host_type: HostType | Non...
  function setup_build_options (line 623) | def setup_build_options(

FILE: build/fbcode_builder/getdeps/cache.py
  class ArtifactCache (line 11) | class ArtifactCache:
    method download_to_file (line 17) | def download_to_file(self, name: str, dest_file_name: str) -> bool:
    method upload_from_file (line 28) | def upload_from_file(self, name: str, source_file_name: str) -> None:
  function create_cache (line 38) | def create_cache() -> ArtifactCache | None:

FILE: build/fbcode_builder/getdeps/cargo.py
  class CargoBuilder (line 25) | class CargoBuilder(BuilderBase):
    method __init__ (line 26) | def __init__(
    method run_cargo (line 61) | def run_cargo(
    method build_source_dir (line 80) | def build_source_dir(self) -> str:
    method workspace_dir (line 83) | def workspace_dir(self) -> str:
    method manifest_dir (line 86) | def manifest_dir(self, manifest: str) -> str:
    method recreate_dir (line 89) | def recreate_dir(self, src: str, dst: str) -> None:
    method recreate_linked_dir (line 97) | def recreate_linked_dir(self, src: str, dst: str) -> None:
    method cargo_config_file (line 105) | def cargo_config_file(self) -> str:
    method _create_cargo_config (line 112) | def _create_cargo_config(self) -> dict[str, dict[str, str]]:
    method _prepare (line 178) | def _prepare(self, reconfigure: bool) -> None:
    method _build (line 187) | def _build(self, reconfigure: bool) -> None:
    method run_tests (line 223) | def run_tests(
    method _patchup_workspace (line 256) | def _patchup_workspace(self, dep_to_git: dict[str, dict[str, str]]) ->...
    method _resolve_config (line 325) | def _resolve_config(
    method _resolve_dep_to_git (line 360) | def _resolve_dep_to_git(self) -> dict[str, dict[str, str]]:
    method _resolve_dep_to_crates (line 448) | def _resolve_dep_to_crates(
    method _extract_crates_used (line 492) | def _extract_crates_used(
    method _resolve_crate_to_path (line 521) | def _resolve_crate_to_path(

FILE: build/fbcode_builder/getdeps/copytree.py
  function containing_repo_type (line 23) | def containing_repo_type(path: str) -> tuple[str | None, str | None]:
  function find_eden_root (line 36) | def find_eden_root(dirpath: str) -> str | None:
  function prefetch_dir_if_eden (line 55) | def prefetch_dir_if_eden(dirpath: str) -> None:
  function simple_copytree (line 73) | def simple_copytree(src_dir: str, dest_dir: str, symlinks: bool = False)...
  function _remove_readonly_and_try_again (line 106) | def _remove_readonly_and_try_again(
  function rmtree_more (line 134) | def rmtree_more(path: str) -> None:

FILE: build/fbcode_builder/getdeps/dyndeps.py
  function copyfile (line 29) | def copyfile(src: str, dest: str) -> None:
  class DepBase (line 34) | class DepBase:
    method __init__ (line 35) | def __init__(
    method list_dynamic_deps (line 53) | def list_dynamic_deps(self, objfile: str) -> list[str]:
    method interesting_dep (line 56) | def interesting_dep(self, d: str) -> bool:
    method process_deps (line 64) | def process_deps(
    method find_all_dependencies (line 97) | def find_all_dependencies(self, build_dir: str) -> list[str]:
    method munge_in_place (line 114) | def munge_in_place(self, objfile: str, final_lib_dir: str) -> None:
    method rewrite_dep (line 142) | def rewrite_dep(
    method resolve_loader_path (line 152) | def resolve_loader_path(self, dep: str) -> str | None:
    method list_objs_in_dir (line 163) | def list_objs_in_dir(
    method is_objfile (line 180) | def is_objfile(self, objfile: str) -> bool:
    method strip_debug_info (line 183) | def strip_debug_info(self, objfile: str) -> None:
    method check_call_verbose (line 188) | def check_call_verbose(self, args: list[str]) -> None:
  class WinDeps (line 193) | class WinDeps(DepBase):
    method __init__ (line 194) | def __init__(
    method find_dumpbin (line 204) | def find_dumpbin(self) -> str:
    method list_dynamic_deps (line 239) | def list_dynamic_deps(self, exe: str) -> list[str]:
    method rewrite_dep (line 254) | def rewrite_dep(
    method interesting_dep (line 282) | def interesting_dep(self, d: str) -> bool:
    method is_objfile (line 289) | def is_objfile(self, objfile: str) -> bool:
    method emit_dev_run_script (line 296) | def emit_dev_run_script(self, script_path: str, dep_dirs: list[str]) -...
    method compute_dependency_paths (line 312) | def compute_dependency_paths(self, build_dir: str) -> list[str]:
    method compute_dependency_paths_fast (line 328) | def compute_dependency_paths_fast(self, build_dir: str) -> list[str]:
    method read_custom_dep_dirs (line 344) | def read_custom_dep_dirs(self, build_dir: str) -> set[str]:
    method _get_dev_run_script_contents (line 364) | def _get_dev_run_script_contents(self, path_dirs: list[str]) -> str:
  class ElfDeps (line 382) | class ElfDeps(DepBase):
    method __init__ (line 383) | def __init__(
    method list_dynamic_deps (line 409) | def list_dynamic_deps(self, objfile: str) -> list[str]:
    method rewrite_dep (line 420) | def rewrite_dep(
    method is_objfile (line 436) | def is_objfile(self, objfile: str) -> bool:
    method strip_debug_info (line 444) | def strip_debug_info(self, objfile: str) -> None:
  class MachDeps (line 452) | class MachDeps(DepBase):
    method interesting_dep (line 453) | def interesting_dep(self, d: str) -> bool:
    method is_objfile (line 458) | def is_objfile(self, objfile: str) -> bool:
    method list_dynamic_deps (line 470) | def list_dynamic_deps(self, objfile: str) -> list[str]:
    method rewrite_dep (line 489) | def rewrite_dep(
  function create_dyn_dep_munger (line 514) | def create_dyn_dep_munger(

FILE: build/fbcode_builder/getdeps/envfuncs.py
  class Env (line 16) | class Env:
    method __init__ (line 17) | def __init__(self, src: Mapping[str, str] | None = None) -> None:
    method update (line 24) | def update(self, src: Mapping[str, str]) -> None:
    method copy (line 28) | def copy(self) -> Env:
    method _key (line 31) | def _key(self, key: str) -> str | None:
    method get (line 60) | def get(self, key: str, defval: str | None = None) -> str | None:
    method __getitem__ (line 66) | def __getitem__(self, key: str) -> str:
    method unset (line 72) | def unset(self, key: str) -> None:
    method __delitem__ (line 80) | def __delitem__(self, key: str) -> None:
    method __repr__ (line 83) | def __repr__(self) -> str:
    method set (line 86) | def set(self, key: str, value: str) -> None:
    method __setitem__ (line 107) | def __setitem__(self, key: str, value: str) -> None:
    method __iter__ (line 110) | def __iter__(self) -> Iterator[str]:
    method __len__ (line 113) | def __len__(self) -> int:
    method keys (line 116) | def keys(self) -> KeysView[str]:
    method values (line 119) | def values(self) -> ValuesView[str]:
    method items (line 122) | def items(self) -> ItemsView[str, str]:
  function add_path_entry (line 126) | def add_path_entry(
  function add_flag (line 145) | def add_flag(env: Env, name: str, flag: str, append: bool = True) -> None:
  function tpx_path (line 162) | def tpx_path() -> str:
  function path_search (line 166) | def path_search(
  function _perform_path_search (line 191) | def _perform_path_search(path: str, exename: str) -> str | None:

FILE: build/fbcode_builder/getdeps/errors.py
  class TransientFailure (line 9) | class TransientFailure(Exception):
  class ManifestNotFound (line 17) | class ManifestNotFound(Exception):
    method __init__ (line 18) | def __init__(self, manifest_name: str) -> None:

FILE: build/fbcode_builder/getdeps/expr.py
  function parse_expr (line 15) | def parse_expr(expr_text: str, valid_variables: set[str]) -> ExprNode:
  class ExprNode (line 44) | class ExprNode:
    method eval (line 45) | def eval(self, ctx: dict[str, str | None]) -> bool:
  class TrueExpr (line 49) | class TrueExpr(ExprNode):
    method eval (line 50) | def eval(self, ctx: dict[str, str | None]) -> bool:
    method __str__ (line 53) | def __str__(self) -> str:
  class NotExpr (line 57) | class NotExpr(ExprNode):
    method __init__ (line 58) | def __init__(self, node: ExprNode) -> None:
    method eval (line 61) | def eval(self, ctx: dict[str, str | None]) -> bool:
    method __str__ (line 64) | def __str__(self) -> str:
  class AllExpr (line 68) | class AllExpr(ExprNode):
    method __init__ (line 69) | def __init__(self, nodes: list[ExprNode]) -> None:
    method eval (line 72) | def eval(self, ctx: dict[str, str | None]) -> bool:
    method __str__ (line 78) | def __str__(self) -> str:
  class AnyExpr (line 85) | class AnyExpr(ExprNode):
    method __init__ (line 86) | def __init__(self, nodes: list[ExprNode]) -> None:
    method eval (line 89) | def eval(self, ctx: dict[str, str | None]) -> bool:
    method __str__ (line 95) | def __str__(self) -> str:
  class EqualExpr (line 102) | class EqualExpr(ExprNode):
    method __init__ (line 103) | def __init__(self, key: str, value: str) -> None:
    method eval (line 107) | def eval(self, ctx: dict[str, str | None]) -> bool:
    method __str__ (line 110) | def __str__(self) -> str:
  class Parser (line 114) | class Parser:
    method __init__ (line 115) | def __init__(self, text: str, valid_variables: set[str]) -> None:
    method parse (line 120) | def parse(self) -> ExprNode:
    method top (line 129) | def top(self) -> ExprNode:
    method ident (line 158) | def ident(self) -> str:
    method parse_not (line 164) | def parse_not(self) -> NotExpr:
    method parse_any (line 172) | def parse_any(self) -> AnyExpr:
    method parse_all (line 183) | def parse_all(self) -> AllExpr:

FILE: build/fbcode_builder/getdeps/fetcher.py
  function file_name_is_cmake_file (line 42) | def file_name_is_cmake_file(file_name: str) -> bool:
  class ChangeStatus (line 52) | class ChangeStatus:
    method __init__ (line 65) | def __init__(self, all_changed: bool = False) -> None:
    method record_change (line 76) | def record_change(self, file_name: str) -> None:
    method sources_changed (line 96) | def sources_changed(self) -> bool:
    method build_changed (line 103) | def build_changed(self) -> bool:
  class Fetcher (line 111) | class Fetcher(ABC):
    method update (line 117) | def update(self) -> ChangeStatus:
    method clean (line 126) | def clean(self) -> None:
    method hash (line 132) | def hash(self) -> str:
    method get_src_dir (line 146) | def get_src_dir(self) -> str:
  class LocalDirFetcher (line 152) | class LocalDirFetcher:
    method __init__ (line 159) | def __init__(self, path: str) -> None:
    method update (line 162) | def update(self) -> ChangeStatus:
    method hash (line 165) | def hash(self) -> str:
    method get_src_dir (line 168) | def get_src_dir(self) -> str:
    method clean (line 171) | def clean(self) -> None:
  class SystemPackageFetcher (line 175) | class SystemPackageFetcher:
    method __init__ (line 176) | def __init__(
    method packages_are_installed (line 188) | def packages_are_installed(self) -> bool:
    method update (line 224) | def update(self) -> ChangeStatus:
    method hash (line 228) | def hash(self) -> str:
    method get_src_dir (line 234) | def get_src_dir(self) -> None:
  class PreinstalledNopFetcher (line 238) | class PreinstalledNopFetcher(SystemPackageFetcher):
    method __init__ (line 239) | def __init__(self) -> None:
  class GitFetcher (line 243) | class GitFetcher(Fetcher):
    method __init__ (line 246) | def __init__(
    method _update (line 291) | def _update(self) -> ChangeStatus:
    method update (line 320) | def update(self) -> ChangeStatus:
    method _clone (line 326) | def _clone(self) -> None:
    method clean (line 347) | def clean(self) -> None:
    method hash (line 351) | def hash(self) -> str:
    method get_src_dir (line 354) | def get_src_dir(self) -> str:
  function does_file_need_update (line 358) | def does_file_need_update(
  function copy_if_different (line 392) | def copy_if_different(src_name: str, dest_name: str) -> bool:
  function filter_strip_marker (line 417) | def filter_strip_marker(dest_name: str, marker: str) -> None:
  function list_files_under_dir_newer_than_timestamp (line 442) | def list_files_under_dir_newer_than_timestamp(
  class ShipitPathMap (line 453) | class ShipitPathMap:
    method __init__ (line 454) | def __init__(self) -> None:
    method add_mapping (line 460) | def add_mapping(self, fbsource_dir: str, target_dir: str) -> None:
    method add_exclusion (line 468) | def add_exclusion(self, pattern: str) -> None:
    method _minimize_roots (line 472) | def _minimize_roots(self) -> None:
    method _sort_mapping (line 490) | def _sort_mapping(self) -> None:
    method _map_name (line 493) | def _map_name(self, norm_name: str, dest_root: str) -> str | None:
    method mirror (line 520) | def mirror(self, fbsource_root: str, dest_root: str) -> ChangeStatus:
  class FbsourceRepoData (line 594) | class FbsourceRepoData(NamedTuple):
  function get_fbsource_repo_data (line 602) | def get_fbsource_repo_data(build_options: BuildOptions) -> FbsourceRepoD...
  function is_public_commit (line 636) | def is_public_commit(build_options: BuildOptions) -> bool:  # noqa: C901
  class SimpleShipitTransformerFetcher (line 727) | class SimpleShipitTransformerFetcher(Fetcher):
    method __init__ (line 728) | def __init__(
    method clean (line 741) | def clean(self) -> None:
    method update (line 745) | def update(self) -> ChangeStatus:
    method hash (line 765) | def hash(self) -> str:
    method get_src_dir (line 771) | def get_src_dir(self) -> str:
  class SubFetcher (line 775) | class SubFetcher(Fetcher):
    method __init__ (line 778) | def __init__(self, base: Fetcher, subs: list[tuple[Fetcher, str]]) -> ...
    method update (line 782) | def update(self) -> ChangeStatus:
    method clean (line 794) | def clean(self) -> None:
    method hash (line 799) | def hash(self) -> str:
    method get_src_dir (line 805) | def get_src_dir(self) -> str:
  class ShipitTransformerFetcher (line 809) | class ShipitTransformerFetcher(Fetcher):
    method _shipit_paths (line 811) | def _shipit_paths(cls, build_options: BuildOptions) -> list[str]:
    method __init__ (line 824) | def __init__(
    method update (line 839) | def update(self) -> ChangeStatus:
    method clean (line 845) | def clean(self) -> None:
    method available (line 850) | def available(cls, build_options: BuildOptions) -> bool:
    method run_shipit (line 856) | def run_shipit(self) -> None:
    method hash (line 900) | def hash(self) -> str:
    method get_src_dir (line 904) | def get_src_dir(self) -> str:
  function download_url_to_file_with_progress (line 908) | def download_url_to_file_with_progress(url: str, file_name: str) -> None:
  class ArchiveFetcher (line 1011) | class ArchiveFetcher(Fetcher):
    method __init__ (line 1012) | def __init__(
    method _verify_hash (line 1034) | def _verify_hash(self) -> None:
    method _download_dir (line 1049) | def _download_dir(self) -> str:
    method _download (line 1056) | def _download(self) -> None:
    method clean (line 1074) | def clean(self) -> None:
    method update (line 1078) | def update(self) -> ChangeStatus:
    method hash (line 1148) | def hash(self) -> str:
    method get_src_dir (line 1151) | def get_src_dir(self) -> str:
  function homebrew_package_prefix (line 1155) | def homebrew_package_prefix(package: str) -> str | None:

FILE: build/fbcode_builder/getdeps/include_rewriter.py
  class IncludePathRewriter (line 27) | class IncludePathRewriter:
    method __init__ (line 43) | def __init__(self, mappings: list[tuple[str, str]], verbose: bool = Fa...
    method rewrite_file (line 65) | def rewrite_file(self, file_path: Path, dry_run: bool = False) -> bool:
    method process_directory (line 128) | def process_directory(self, source_dir: Path, dry_run: bool = False) -...
  function rewrite_includes_from_manifest (line 175) | def rewrite_includes_from_manifest(

FILE: build/fbcode_builder/getdeps/load.py
  class Loader (line 26) | class Loader:
    method _list_manifests (line 29) | def _list_manifests(self, build_opts: BuildOptions) -> Iterator[str]:
    method _load_manifest (line 39) | def _load_manifest(self, path: str) -> ManifestParser:
    method load_project (line 42) | def load_project(
    method load_all (line 55) | def load_all(self, build_opts: BuildOptions) -> dict[str, ManifestPars...
  class ResourceLoader (line 69) | class ResourceLoader(Loader):
    method __init__ (line 70) | def __init__(self, namespace: str, manifests_dir: str) -> None:
    method _list_manifests (line 74) | def _list_manifests(self, build_opts: BuildOptions) -> Iterator[str]:
    method _find_manifest (line 89) | def _find_manifest(self, project_name: str) -> str:
    method _load_manifest (line 97) | def _load_manifest(self, path: str) -> ManifestParser:
    method load_project (line 103) | def load_project(
  function patch_loader (line 114) | def patch_loader(namespace: str, manifests_dir: str = "manifests") -> None:
  function load_project (line 119) | def load_project(build_opts: BuildOptions, project_name: str) -> Manifes...
  function load_all_manifests (line 125) | def load_all_manifests(build_opts: BuildOptions) -> dict[str, ManifestPa...
  class ManifestLoader (line 129) | class ManifestLoader:
    method __init__ (line 137) | def __init__(
    method load_manifest (line 155) | def load_manifest(self, name: str) -> ManifestParser:
    method load_all_manifests (line 162) | def load_all_manifests(self) -> dict[str, ManifestParser]:
    method dependencies_of (line 177) | def dependencies_of(self, manifest: ManifestParser) -> list[ManifestPa...
    method manifests_in_dependency_order (line 185) | def manifests_in_dependency_order(
    method set_project_src_dir (line 263) | def set_project_src_dir(self, project_name: str, path: str) -> None:
    method set_project_build_dir (line 266) | def set_project_build_dir(self, project_name: str, path: str) -> None:
    method set_project_install_dir (line 269) | def set_project_install_dir(self, project_name: str, path: str) -> None:
    method set_project_install_prefix (line 272) | def set_project_install_prefix(self, project_name: str, path: str) -> ...
    method create_fetcher (line 275) | def create_fetcher(
    method get_project_hash (line 285) | def get_project_hash(self, manifest: ManifestParser) -> str:
    method _compute_project_hash (line 292) | def _compute_project_hash(self, manifest: ManifestParser) -> str:
    method _get_project_dir_name (line 368) | def _get_project_dir_name(self, manifest: ManifestParser) -> str:
    method get_project_install_dir (line 375) | def get_project_install_dir(self, manifest: ManifestParser) -> str:
    method get_project_build_dir (line 383) | def get_project_build_dir(self, manifest: ManifestParser) -> str:
    method get_project_install_prefix (line 391) | def get_project_install_prefix(self, manifest: ManifestParser) -> str ...
    method get_project_install_dir_respecting_install_prefix (line 394) | def get_project_install_dir_respecting_install_prefix(

FILE: build/fbcode_builder/getdeps/manifest.py
  function parse_conditional_section_name (line 166) | def parse_conditional_section_name(name: str, section_def: str) -> ExprN...
  function validate_allowed_fields (line 171) | def validate_allowed_fields(
  function validate_allow_values (line 192) | def validate_allow_values(
  function validate_section (line 208) | def validate_section(
  class ManifestParser (line 243) | class ManifestParser:
    method __init__ (line 244) | def __init__(self, file_name: str, fp: str | typing.IO[str] | None = N...
    method get (line 299) | def get(
    method get_dependencies (line 327) | def get_dependencies(self, ctx: ManifestContext) -> list[str]:
    method get_section_as_args (line 345) | def get_section_as_args(
    method get_section_as_ordered_pairs (line 377) | def get_section_as_ordered_pairs(
    method get_section_as_dict (line 403) | def get_section_as_dict(
    method update_hash (line 425) | def update_hash(self, hasher: hashlib._Hash, ctx: ManifestContext) -> ...
    method is_first_party_project (line 451) | def is_first_party_project(self) -> bool:
    method get_required_system_packages (line 455) | def get_required_system_packages(
    method _is_satisfied_by_preinstalled_environment (line 466) | def _is_satisfied_by_preinstalled_environment(self, ctx: ManifestConte...
    method get_repo_url (line 483) | def get_repo_url(self, ctx: ManifestContext) -> str | None:
    method _create_fetcher (line 486) | def _create_fetcher(
    method create_fetcher (line 574) | def create_fetcher(
    method get_builder_name (line 594) | def get_builder_name(self, ctx: ManifestContext) -> str:
    method create_builder (line 600) | def create_builder(  # noqa:C901
    method create_prepare_builders (line 817) | def create_prepare_builders(
    method create_cargo_builder (line 844) | def create_cargo_builder(
  class ManifestContext (line 876) | class ManifestContext:
    method __init__ (line 893) | def __init__(self, ctx_dict: dict[str, str | None]) -> None:
    method get (line 897) | def get(self, key: str) -> str | None:
    method set (line 900) | def set(self, key: str, value: str | None) -> None:
    method copy (line 904) | def copy(self) -> ManifestContext:
    method __str__ (line 907) | def __str__(self) -> str:
  class ContextGenerator (line 914) | class ContextGenerator:
    method __init__ (line 920) | def __init__(self, default_ctx: dict[str, str | None]) -> None:
    method set_value_for_project (line 924) | def set_value_for_project(
    method set_value_for_all_projects (line 933) | def set_value_for_all_projects(self, key: str, value: str | None) -> N...
    method get_context (line 938) | def get_context(self, project_name: str) -> ManifestContext:

FILE: build/fbcode_builder/getdeps/platform.py
  function is_windows (line 16) | def is_windows() -> bool:
  function get_linux_type (line 22) | def get_linux_type() -> tuple[str | None, str | None, str | None]:
  function _get_available_ram_linux (line 59) | def _get_available_ram_linux() -> int:
  function _get_available_ram_macos (line 90) | def _get_available_ram_macos() -> int:
  function _get_available_ram_windows (line 117) | def _get_available_ram_windows() -> int:
  function _get_available_ram_freebsd (line 148) | def _get_available_ram_freebsd() -> int:
  function get_available_ram (line 174) | def get_available_ram() -> int:
  function is_current_host_arm (line 192) | def is_current_host_arm() -> bool:
  class HostType (line 201) | class HostType:
    method __init__ (line 202) | def __init__(
    method is_windows (line 242) | def is_windows(self) -> bool:
    method is_arm (line 252) | def is_arm(self) -> bool:
    method is_darwin (line 255) | def is_darwin(self) -> bool:
    method is_linux (line 258) | def is_linux(self) -> bool:
    method is_freebsd (line 261) | def is_freebsd(self) -> bool:
    method as_tuple_string (line 264) | def as_tuple_string(self) -> str:
    method get_package_manager (line 271) | def get_package_manager(self) -> str | None:
    method from_tuple_string (line 287) | def from_tuple_string(s: str) -> HostType:
    method __eq__ (line 291) | def __eq__(self, b: object) -> bool:

FILE: build/fbcode_builder/getdeps/py_wheel_builder.py
  class PythonWheelBuilder (line 99) | class PythonWheelBuilder(BuilderBase):
    method _build (line 109) | def _build(self, reconfigure: bool) -> None:
    method _run_cmake_build (line 178) | def _run_cmake_build(self, reconfigure: bool) -> None:
    method _write_cmakelists (line 195) | def _write_cmakelists(
    method _write_cmake_config_template (line 222) | def _write_cmake_config_template(self) -> None:
    method _add_sources (line 229) | def _add_sources(
    method _parse_wheel_name (line 244) | def _parse_wheel_name(self) -> WheelNameInfo:
    method _read_wheel_metadata (line 281) | def _read_wheel_metadata(self, wheel_name: WheelNameInfo) -> email.mes...
  function _to_cmake_path (line 287) | def _to_cmake_path(path: str) -> str:

FILE: build/fbcode_builder/getdeps/runcmd.py
  class RunCommandError (line 21) | class RunCommandError(Exception):
  function make_memory_limit_preexec_fn (line 25) | def make_memory_limit_preexec_fn(
  function _print_env_diff (line 72) | def _print_env_diff(env: Env, log_fn: Callable[[str], None]) -> None:
  function check_cmd (line 94) | def check_cmd(
  function run_cmd (line 107) | def run_cmd(
  function _run_cmd (line 145) | def _run_cmd(
  function _pipe_output (line 218) | def _pipe_output(p: subprocess.Popen[bytes], log_fn: Callable[[str], Non...
  function _pipe_output (line 244) | def _pipe_output(p: subprocess.Popen[bytes], log_fn: Callable[[str], Non...

FILE: build/fbcode_builder/getdeps/subcmd.py
  class SubCmd (line 14) | class SubCmd:
    method run (line 18) | def run(self, args: argparse.Namespace) -> int:
    method setup_parser (line 22) | def setup_parser(self, parser: argparse.ArgumentParser) -> None:
  function add_subcommands (line 31) | def add_subcommands(
  function cmd (line 49) | def cmd(

FILE: build/fbcode_builder/getdeps/test/expr_test.py
  class ExprTest (line 14) | class ExprTest(unittest.TestCase):
    method test_equal (line 15) | def test_equal(self) -> None:
    method test_not_equal (line 22) | def test_not_equal(self) -> None:
    method test_bad_not (line 28) | def test_bad_not(self) -> None:
    method test_bad_variable (line 33) | def test_bad_variable(self) -> None:
    method test_all (line 38) | def test_all(self) -> None:
    method test_any (line 45) | def test_any(self) -> None:

FILE: build/fbcode_builder/getdeps/test/manifest_test.py
  class ManifestTest (line 16) | class ManifestTest(unittest.TestCase):
    method test_missing_section (line 17) | def test_missing_section(self) -> None:
    method test_missing_name (line 23) | def test_missing_name(self) -> None:
    method test_minimal (line 35) | def test_minimal(self) -> None:
    method test_minimal_with_fbsource_path (line 46) | def test_minimal_with_fbsource_path(self) -> None:
    method test_unknown_field (line 58) | def test_unknown_field(self) -> None:
    method test_invalid_section_name (line 75) | def test_invalid_section_name(self) -> None:
    method test_value_in_dependencies_section (line 90) | def test_value_in_dependencies_section(self) -> None:
    method test_invalid_conditional_section_name (line 110) | def test_invalid_conditional_section_name(self) -> None:
    method test_section_as_args (line 129) | def test_section_as_args(self) -> None:
    method test_section_as_dict (line 169) | def test_section_as_dict(self) -> None:
    method test_parse_common_manifests (line 207) | def test_parse_common_manifests(self) -> None:
    method test_mismatch_name (line 213) | def test_mismatch_name(self) -> None:
    method test_duplicate_manifest (line 226) | def test_duplicate_manifest(self) -> None:
    method assertRaisesRegex (line 235) | def assertRaisesRegex(self, *args, **kwargs):

FILE: build/fbcode_builder/getdeps/test/platform_test.py
  class PlatformTest (line 14) | class PlatformTest(unittest.TestCase):
    method test_create (line 15) | def test_create(self) -> None:
    method test_rendering_of_none (line 23) | def test_rendering_of_none(self) -> None:
    method test_is_methods (line 27) | def test_is_methods(self) -> None:

FILE: build/fbcode_builder/getdeps/test/retry_test.py
  class RetryTest (line 18) | class RetryTest(unittest.TestCase):
    method _get_build_opts (line 19) | def _get_build_opts(self) -> BuildOptions:
    method _get_manifest (line 24) | def _get_manifest(self) -> ManifestParser:
    method _get_archive_fetcher (line 29) | def _get_archive_fetcher(self) -> ArchiveFetcher:
    method test_no_retries (line 41) | def test_no_retries(
    method test_retries (line 77) | def test_retries(
    method test_all_retries (line 124) | def test_all_retries(

FILE: build/fbcode_builder/getdeps/test/scratch_test.py
  class Win32SubstTest (line 14) | class Win32SubstTest(unittest.TestCase):
    method test_no_existing_subst (line 15) | def test_no_existing_subst(self) -> None:
    method test_exact_match_returns_drive_path (line 29) | def test_exact_match_returns_drive_path(self) -> None:
    method test_multiple_exact_matches_returns_arbitrary_drive_path (line 45) | def test_multiple_exact_matches_returns_arbitrary_drive_path(self) -> ...
    method test_drive_letter_is_case_insensitive (line 58) | def test_drive_letter_is_case_insensitive(self) -> None:
    method test_path_components_are_case_insensitive (line 67) | def test_path_components_are_case_insensitive(self) -> None:

FILE: build/fbcode_builder/getdeps/test/strip_marker_test.py
  class ManifestStripMarkerTest (line 17) | class ManifestStripMarkerTest(unittest.TestCase):
    method test_default_strip_marker (line 18) | def test_default_strip_marker(self) -> None:
    method test_custom_strip_marker (line 28) | def test_custom_strip_marker(self) -> None:
  class FilterStripMarkerTest (line 40) | class FilterStripMarkerTest(unittest.TestCase):
    method _write_temp (line 41) | def _write_temp(self, content: str) -> str:
    method _read (line 48) | def _read(self, path: str) -> str:
    method test_single_line_removal (line 52) | def test_single_line_removal(self) -> None:
    method test_block_removal (line 60) | def test_block_removal(self) -> None:
    method test_no_marker_present_no_change (line 76) | def test_no_marker_present_no_change(self) -> None:
    method test_custom_marker_single_line (line 85) | def test_custom_marker_single_line(self) -> None:
    method test_custom_marker_block (line 94) | def test_custom_marker_block(self) -> None:
    method test_custom_marker_ignores_default (line 109) | def test_custom_marker_ignores_default(self) -> None:
    method test_mixed_single_and_block (line 119) | def test_mixed_single_and_block(self) -> None:
    method test_marker_with_regex_metacharacters (line 136) | def test_marker_with_regex_metacharacters(self) -> None:
    method test_binary_file_skipped (line 147) | def test_binary_file_skipped(self) -> None:

FILE: proxygen/external/http_parser/http_parser.h
  type __int8 (line 32) | typedef __int8 int8_t;
  type __int16 (line 34) | typedef __int16 int16_t;
  type __int32 (line 36) | typedef __int32 int32_t;
  type __int64 (line 38) | typedef __int64 int64_t;
  function namespace (line 45) | namespace proxygen {

FILE: proxygen/external/http_parser/http_parser_cpp.cpp
  type proxygen (line 33) | namespace proxygen {
  type state (line 281) | enum state
  type header_states (line 369) | enum header_states
  type http_host_state (line 388) | enum http_host_state
  function parse_url_char (line 478) | static enum state
  function http_parser_execute (line 630) | size_t http_parser_execute (http_parser *parser,
  function http_parser_execute_options (line 638) | size_t http_parser_execute_options (http_parser *parser,
  type http_method (line 2190) | enum http_method
  function http_parser_init (line 2196) | void
  type http_errno (line 2211) | enum http_errno
  type http_errno (line 2217) | enum http_errno
  function http_parse_host_char (line 2223) | static enum http_host_state
  function http_parse_host (line 2296) | static int
  function http_parser_parse_url (line 2370) | int
  function http_parser_parse_url_options (line 2377) | int
  function http_parser_pause (line 2495) | void

FILE: proxygen/external/http_parser/test.c
  type message (line 43) | struct message {
  type message (line 76) | struct message
  type message (line 81) | struct message
  type message (line 794) | struct message
  type message (line 1141) | struct message
  function request_url_cb (line 1206) | int
  function header_field_cb (line 1214) | int
  function header_value_cb (line 1230) | int
  function body_cb (line 1248) | int
  function count_body_cb (line 1258) | int
  function message_begin_cb (line 1267) | int
  function headers_complete_cb (line 1275) | int
  function message_complete_cb (line 1288) | int
  function response_reason_cb (line 1300) | int
  function chunk_header_cb (line 1308) | int
  function chunk_complete_cb (line 1326) | int
  function dontcall_message_begin_cb (line 1336) | int
  function dontcall_header_field_cb (line 1344) | int
  function dontcall_header_value_cb (line 1352) | int
  function dontcall_request_url_cb (line 1360) | int
  function dontcall_body_cb (line 1368) | int
  function dontcall_headers_complete_cb (line 1376) | int
  function dontcall_message_complete_cb (line 1385) | int
  function dontcall_response_reason_cb (line 1394) | int
  function dontcall_chunk_header_cb (line 1402) | int
  function dontcall_chunk_complete_cb (line 1410) | int
  function pause_message_begin_cb (line 1436) | int
  function pause_header_field_cb (line 1444) | int
  function pause_header_value_cb (line 1452) | int
  function pause_request_url_cb (line 1460) | int
  function pause_body_cb (line 1468) | int
  function pause_headers_complete_cb (line 1476) | int
  function pause_message_complete_cb (line 1484) | int
  function pause_response_reason_cb (line 1492) | int
  function pause_chunk_header_cb (line 1500) | int
  function pause_chunk_complete_cb (line 1508) | int
  function empty_cb (line 1516) | int empty_cb (http_parser *p) { return 0; }
  function empty_data_cb (line 1517) | int empty_data_cb (http_parser *p, const char *buf, size_t len) { return...
  function parser_init (line 1571) | void
  function parser_free (line 1588) | void
  function parse (line 1596) | size_t parse (const char *buf, size_t len)
  function parse_count_body (line 1605) | size_t parse_count_body (const char *buf, size_t len)
  function parse_pause (line 1614) | size_t parse_pause (const char *buf, size_t len)
  function check_str_eq (line 1626) | static inline int
  function check_num_eq (line 1646) | static inline int
  function message_eq (line 1667) | int
  function count_parsed_messages (line 1722) | size_t
  function upgrade_message_fix (line 1745) | void
  function print_error (line 1782) | static void
  type url_test (line 1826) | struct url_test {
  type url_test (line 1834) | struct url_test
  function dump_url (line 2316) | void
  function test_parse_url (line 2337) | void
  function test_message (line 2392) | void
  function test_message_count_body (line 2452) | void
  type http_errno (line 2489) | enum http_errno
  type http_errno (line 2495) | enum http_errno
  function test_lax_in_strict_mode (line 2523) | void
  function test_no_overflow_parse_url (line 2555) | void
  function test_header_overflow_error (line 2578) | void
  function test_no_overflow_long_body (line 2608) | void
  function test_multiple3 (line 2644) | void
  function test_scan (line 2701) | void
  function test_message_pause (line 2850) | void
  function test_on_message_begin_cb (line 2903) | void
  function main (line 2913) | int

FILE: proxygen/httpclient/samples/H3Datagram/H3DatagramClient.cpp
  class DatagramClient (line 55) | class DatagramClient
    method DatagramClient (line 63) | explicit DatagramClient(folly::EventBase* evb, H3DatagramAsyncSocket& ...
    method start (line 67) | void start() {
    method shutdown (line 81) | void shutdown() {
    method sendPing (line 88) | void sendPing() {
    method writePing (line 98) | virtual void writePing(std::unique_ptr<folly::IOBuf> buf) {
    method getReadBuffer (line 107) | void getReadBuffer(void** buf, size_t* len) noexcept override {
    method onDataAvailable (line 112) | void onDataAvailable(const folly::SocketAddress& client,
    method onReadError (line 139) | void onReadError(const folly::AsyncSocketException& ex) noexcept overr...
    method onReadClosed (line 143) | void onReadClosed() noexcept override {
    method timeoutExpired (line 147) | void timeoutExpired() noexcept override {
  function main (line 164) | int main(int argc, char* argv[]) {

FILE: proxygen/httpclient/samples/curl/CurlClient.cpp
  type CurlService (line 30) | namespace CurlService {
    type stat (line 67) | struct stat
    function HTTPHeaders (line 82) | HTTPHeaders CurlClient::parseHeaders(const std::string& headersString) {
    function string (line 313) | const string& CurlClient::getServerName() const {

FILE: proxygen/httpclient/samples/curl/CurlClient.h
  function detachTransaction (line 32) | void detachTransaction() noexcept override;
  function onUpgrade (line 47) | void onUpgrade(proxygen::UpgradeProtocol /*protocol*/) noexcept override {
  function onEgressResumed (line 50) | void onEgressResumed() noexcept override {
  function onEgressPaused (line 53) | void onEgressPaused() noexcept override {
  function detachTransaction (line 98) | void detachTransaction() noexcept override;
  function std (line 119) | const std::string& getServerName() const;
  function setHeadersLogging (line 131) | void setHeadersLogging(bool enabled) {
  function setEOMFunc (line 135) | void setEOMFunc(std::function<void()> eomFunc) {
  function setOnBodyFunc (line 139) | void setOnBodyFunc(
  function recvWindow_ (line 161) | int32_t recvWindow_{0}
  function h2c_ (line 164) | bool h2c_{false};

FILE: proxygen/httpclient/samples/curl/CurlClientMain.cpp
  function main (line 52) | int main(int argc, char* argv[]) {

FILE: proxygen/httpclient/samples/httperf2/Client.cpp
  function createTransportSettings (line 182) | static quic::TransportSettings createTransportSettings() {
  type linger (line 383) | struct linger

FILE: proxygen/httpclient/samples/httperf2/Client.h
  function setTransaction (line 103) | void setTransaction(proxygen::HTTPTransaction* txn) noexcept override {
  function detachTransaction (line 106) | void detachTransaction() noexcept override;
  function onChunkComplete (line 116) | void onChunkComplete() noexcept override {
  function onEOM (line 122) | void onEOM() noexcept override;
  function onEgressResumed (line 131) | void onEgressResumed() noexcept override {
  function class (line 143) | class InfoCollector : public ::proxygen::HTTPSession::InfoCallback {
  function outstandingTransactions_ (line 158) | uint32_t outstandingTransactions_{0}

FILE: proxygen/httpclient/samples/httperf2/HTTPerf2.cpp
  class ClientRunner (line 119) | class ClientRunner
  type proxygen (line 174) | namespace proxygen {
    function httperf2 (line 175) | int httperf2(folly::Optional<folly::SocketAddress> bindAddress,

FILE: proxygen/httpclient/samples/httperf2/HTTPerf2.h
  function namespace (line 20) | namespace proxygen {

FILE: proxygen/httpclient/samples/httperf2/HTTPerfStats.h
  function class (line 19) | class HTTPerfStats {
  function addConnection (line 65) | void addConnection(uint32_t connLat) {
  function addHandshake (line 70) | void addHandshake() {
  function addResume (line 74) | void addResume() {
  function addRequest (line 78) | void addRequest() {
  function addResponse (line 82) | void addResponse(uint32_t reqLat) {
  function addErrorLat (line 87) | void addErrorLat(uint32_t reqLat) {
  function addResponseCode (line 91) | void addResponseCode(uint32_t code) {
  function addBytesReceived (line 107) | void addBytesReceived(uint32_t count) {
  function addConnectError (line 111) | void addConnectError() {
  function addWriteError (line 115) | void addWriteError() {
  function addMessageError (line 119) | void addMessageError() {
  function addTimeoutError (line 123) | void addTimeoutError() {
  function addEOFResponse (line 127) | void addEOFResponse() {
  function addEOFError (line 131) | void addEOFError() {
  function merge (line 135) | void merge(const HTTPerfStats& stats) {

FILE: proxygen/httpclient/samples/httperf2/Main.cpp
  function main (line 13) | int main(int argc, char* argv[]) {

FILE: proxygen/httpclient/samples/websocket/WebSocketClient.cpp
  type websocketclient (line 19) | namespace websocketclient {

FILE: proxygen/httpclient/samples/websocket/WebSocketClient.h
  function namespace (line 16) | namespace websocketclient {

FILE: proxygen/httpclient/samples/websocket/main.cpp
  function main (line 28) | int main(int argc, char* argv[]) {

FILE: proxygen/httpserver/Filters.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/httpserver/HTTPServer.cpp
  type proxygen (line 25) | namespace proxygen {
    class AcceptorFactory (line 27) | class AcceptorFactory : public wangle::AcceptorFactory {
      method AcceptorFactory (line 29) | AcceptorFactory(std::shared_ptr<HTTPServerOptions> options,
      method newAcceptor (line 38) | std::shared_ptr<wangle::Acceptor> newAcceptor(
    class HandlerCallbacks (line 102) | class HandlerCallbacks : public IOThreadPoolExecutorBase::IOObserver {
      method HandlerCallbacks (line 104) | explicit HandlerCallbacks(std::shared_ptr<HTTPServerOptions> options)
      method registerEventBase (line 108) | void registerEventBase(folly::EventBase& evb) noexcept override {
      method unregisterEventBase (line 116) | void unregisterEventBase(folly::EventBase& evb) noexcept override {

FILE: proxygen/httpserver/HTTPServer.h
  function namespace (line 22) | namespace proxygen {

FILE: proxygen/httpserver/HTTPServerAcceptor.cpp
  type proxygen (line 19) | namespace proxygen {
    function HTTPTransactionHandler (line 91) | HTTPTransactionHandler* HTTPServerAcceptor::newHandler(

FILE: proxygen/httpserver/HTTPServerAcceptor.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/httpserver/HTTPServerOptions.h
  function zstdContentCompressionLevel (line 159) | int zstdContentCompressionLevel{8}
  function useExistingSocket (line 194) | void useExistingSocket(folly::AsyncServerSocket::UniquePtr socket) {
  function useExistingSocket (line 198) | void useExistingSocket(int socketFd) {

FILE: proxygen/httpserver/HTTPTransactionHandlerAdaptor.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/httpserver/Mocks.h
  function namespace (line 16) | namespace proxygen {

FILE: proxygen/httpserver/PushHandler.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/httpserver/RequestHandler.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/httpserver/RequestHandlerAdaptor.cpp
  type proxygen (line 16) | namespace proxygen {

FILE: proxygen/httpserver/RequestHandlerAdaptor.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/httpserver/RequestHandlerFactory.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/httpserver/ResponseBuilder.h
  function sendWithEOM (line 135) | void sendWithEOM() {
  function send (line 140) | void send() {
  type class (line 192) | enum class
  function sendEOM_ (line 235) | bool sendEOM_{false};

FILE: proxygen/httpserver/ResponseHandler.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/httpserver/ScopedHTTPServer.h
  function namespace (line 18) | namespace proxygen {
  function std (line 192) | inline std::unique_ptr<ScopedHTTPServer> ScopedHTTPServer::start(

FILE: proxygen/httpserver/SignalHandler.cpp
  type proxygen (line 16) | namespace proxygen {

FILE: proxygen/httpserver/SignalHandler.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/httpserver/filters/CompressionFilter.h
  function sendHeaders (line 35) | void sendHeaders(HTTPMessage& msg) noexcept override {
  function sendChunkHeader (line 64) | void sendChunkHeader(size_t len) noexcept override {
  function sendBody (line 79) | void sendBody(std::unique_ptr<folly::IOBuf> body) noexcept override {
  function sendEOM (line 115) | void sendEOM() noexcept override {
  function chunked_ (line 145) | bool chunked_{false};

FILE: proxygen/httpserver/filters/DecompressionFilter.cpp
  type proxygen (line 13) | namespace proxygen {
    function RequestHandler (line 63) | RequestHandler* DecompressionFilterFactory::onRequest(

FILE: proxygen/httpserver/filters/DecompressionFilter.h
  function namespace (line 15) | namespace proxygen {
  function class (line 48) | class DecompressionFilterFactory : public RequestHandlerFactory {

FILE: proxygen/httpserver/filters/DirectResponseHandler.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/httpserver/filters/RejectConnectFilter.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/httpserver/filters/tests/CompressionFilterTest.cpp
  type ZlibTest (line 37) | struct ZlibTest {
    method makeDecompressor (line 38) | static std::unique_ptr<StreamDecompressor> makeDecompressor() {
    method getExpectedEncoding (line 41) | static std::string getExpectedEncoding() {
    method getCompressionLevel (line 44) | static int32_t getCompressionLevel() {
  type ZstdTest (line 49) | struct ZstdTest {
    method makeDecompressor (line 50) | static std::unique_ptr<StreamDecompressor> makeDecompressor() {
    method getExpectedEncoding (line 53) | static std::string getExpectedEncoding() {
    method getCompressionLevel (line 56) | static int32_t getCompressionLevel() {
  class CompressionFilterTest (line 62) | class CompressionFilterTest : public Test {
    method SetUp (line 66) | void SetUp() override {
    method TearDown (line 73) | void TearDown() override {
    method exercise_compression (line 87) | void exercise_compression(bool expectCompression,
    method createResponseChain (line 245) | std::unique_ptr<folly::IOBuf> createResponseChain(
  function TYPED_TEST (line 268) | TYPED_TEST(CompressionFilterTest, NonchunkedCompression) {
  function TYPED_TEST (line 281) | TYPED_TEST(CompressionFilterTest, ChunkedCompression) {
  function TYPED_TEST (line 295) | TYPED_TEST(CompressionFilterTest, ParameterizedContenttype) {
  function TYPED_TEST (line 308) | TYPED_TEST(CompressionFilterTest, MixedcaseContenttype) {
  function TYPED_TEST (line 322) | TYPED_TEST(CompressionFilterTest, MultipleAcceptedEncodings) {
  function TYPED_TEST (line 337) | TYPED_TEST(CompressionFilterTest, ResponseAlreadyCompressedTest) {
  function TYPED_TEST (line 356) | TYPED_TEST(CompressionFilterTest, MultipleAcceptedEncodingsQvalues) {
  function TYPED_TEST (line 370) | TYPED_TEST(CompressionFilterTest, NoCompressibleAcceptedEncodings) {
  function TYPED_TEST (line 382) | TYPED_TEST(CompressionFilterTest, MissingAcceptedEncodings) {
  function TYPED_TEST (line 395) | TYPED_TEST(CompressionFilterTest, UncompressibleContenttype) {
  function TYPED_TEST (line 408) | TYPED_TEST(CompressionFilterTest, UncompressibleContenttypeParam) {
  function TYPED_TEST (line 422) | TYPED_TEST(CompressionFilterTest, TooSmallToCompress) {
  function TYPED_TEST (line 437) | TYPED_TEST(CompressionFilterTest, SmallChunksCompress) {
  function TYPED_TEST (line 455) | TYPED_TEST(CompressionFilterTest, MinimumCompressSizeEqualToRequestSize) {
  function TYPED_TEST (line 471) | TYPED_TEST(CompressionFilterTest, CompressionDisabledForEncoding) {
  function TYPED_TEST (line 488) | TYPED_TEST(CompressionFilterTest, NoResponseBody) {

FILE: proxygen/httpserver/filters/tests/DecompressionFilterTest.cpp
  function compressWithZstd (line 22) | std::unique_ptr<folly::IOBuf> compressWithZstd(const std::string& data) {
  class DecompressionFilterTest (line 30) | class DecompressionFilterTest : public Test {
    method SetUp (line 32) | void SetUp() override {
    method TearDown (line 37) | void TearDown() override {
  function TEST_F (line 54) | TEST_F(DecompressionFilterTest, ZstdContentEncodingInitializesDecompress...
  function TEST_F (line 86) | TEST_F(DecompressionFilterTest, NoContentEncodingPassesThrough) {
  function TEST_F (line 109) | TEST_F(DecompressionFilterTest, ValidZstdBodyDecompression) {
  function TEST_F (line 154) | TEST_F(DecompressionFilterTest, MultipleChunksDecompression) {
  function TEST_F (line 200) | TEST_F(DecompressionFilterTest, InvalidCompressedDataSendsAbort) {
  function TEST_F (line 230) | TEST_F(DecompressionFilterTest, PassThroughWithoutDecompressor) {
  function TEST_F (line 271) | TEST_F(DecompressionFilterTest, ContentLengthRemovedWhenDecompressing) {
  function TEST_F (line 297) | TEST_F(DecompressionFilterTest, UnsupportedEncodingPassesThrough) {
  function TEST_F (line 328) | TEST_F(DecompressionFilterTest, EOMPassThroughWithoutDecompressor) {
  function TEST_F (line 348) | TEST_F(DecompressionFilterTest, EmptyBodyWithZstdEncoding) {
  function TEST_F (line 370) | TEST_F(DecompressionFilterTest, FactoryCreatesFilterForZstd) {
  function TEST_F (line 391) | TEST_F(DecompressionFilterTest, FactoryCreatesFilterForNonZstd) {
  function TEST_F (line 411) | TEST_F(DecompressionFilterTest, FactoryCreatesFilterForGzip) {
  function TEST_F (line 432) | TEST_F(DecompressionFilterTest, LargeDataDecompression) {

FILE: proxygen/httpserver/samples/echo/EchoHandler.cpp
  type EchoService (line 23) | namespace EchoService {

FILE: proxygen/httpserver/samples/echo/EchoHandler.h
  function namespace (line 14) | namespace proxygen {
  function namespace (line 18) | namespace EchoService {

FILE: proxygen/httpserver/samples/echo/EchoServer.cpp
  class EchoHandlerFactory (line 35) | class EchoHandlerFactory : public RequestHandlerFactory {
    method onServerStart (line 37) | void onServerStart(folly::EventBase* /*evb*/) noexcept override {
    method onServerStop (line 41) | void onServerStop() noexcept override {
    method RequestHandler (line 45) | RequestHandler* onRequest(RequestHandler*, HTTPMessage*) noexcept over...
  function main (line 53) | int main(int argc, char* argv[]) {

FILE: proxygen/httpserver/samples/echo/EchoStats.h
  function namespace (line 13) | namespace EchoService {

FILE: proxygen/httpserver/samples/echo/test/EchoHandlerTest.cpp
  class MockEchoStats (line 20) | class MockEchoStats : public EchoStats {
  class EchoHandlerFixture (line 26) | class EchoHandlerFixture : public testing::Test {
    method SetUp (line 28) | void SetUp() override {
    method TearDown (line 34) | void TearDown() override {
  function TEST_F (line 49) | TEST_F(EchoHandlerFixture, OnProperRequestSendsResponse) {
  function TEST_F (line 67) | TEST_F(EchoHandlerFixture, ReplaysBodyProperly) {

FILE: proxygen/httpserver/samples/hq/ConnIdLogger.h
  function namespace (line 22) | namespace proxygen {
  function std (line 117) | const std::chrono::seconds kMaxAge{60};

FILE: proxygen/httpserver/samples/hq/FizzContext.cpp
  function createFizzServerContextImpl (line 143) | quic::samples::FizzServerContextPtr createFizzServerContextImpl(
  type quic::samples (line 202) | namespace quic::samples {
    function FizzServerContextPtr (line 204) | FizzServerContextPtr createFizzServerContext(
    function FizzServerContextPtr (line 213) | FizzServerContextPtr createFizzServerContextWithInsecureDefault(
    function FizzClientContextPtr (line 222) | FizzClientContextPtr createFizzClientContext(
    function createSSLContext (line 254) | wangle::SSLContextConfig createSSLContext(

FILE: proxygen/httpserver/samples/hq/FizzContext.h
  function namespace (line 18) | namespace quic::samples {

FILE: proxygen/httpserver/samples/hq/H1QDownstreamSession.h
  function onNewBidirectionalStream (line 38) | void onNewBidirectionalStream(quic::StreamId id) noexcept override {
  function onNewUnidirectionalStream (line 73) | void onNewUnidirectionalStream(quic::StreamId id) noexcept override {
  function onStopSending (line 80) | void onStopSending(quic::StreamId,
  function onConnectionEnd (line 83) | void onConnectionEnd() noexcept override {
  function onConnectionError (line 87) | void onConnectionError(quic::QuicError) noexcept override {
  function onConnectionEnd (line 91) | void onConnectionEnd(quic::QuicError /* error */) noexcept override {

FILE: proxygen/httpserver/samples/hq/H1QUpstreamSession.h
  function namespace (line 18) | namespace quic::samples {
  function onDestroy (line 71) | void onDestroy(const proxygen::HTTPSessionBase& session) override {
  function drain (line 78) | void drain() {
  function onNewBidirectionalStream (line 85) | void onNewBidirectionalStream(quic::StreamId id) noexcept override {
  function onNewUnidirectionalStream (line 93) | void onNewUnidirectionalStream(quic::StreamId id) noexcept override {
  function onStopSending (line 100) | void onStopSending(quic::StreamId,
  function onConnectionEnd (line 103) | void onConnectionEnd() noexcept override {
  function onConnectionError (line 108) | void onConnectionError(quic::QuicError) noexcept override {
  function onConnectionEnd (line 112) | void onConnectionEnd(quic::QuicError /* error */) noexcept override {

FILE: proxygen/httpserver/samples/hq/H2Server.cpp
  type quic::samples (line 14) | namespace quic::samples {
    function RequestHandler (line 31) | RequestHandler* H2Server::SampleHandlerFactory::onRequest(

FILE: proxygen/httpserver/samples/hq/H2Server.h
  function namespace (line 15) | namespace quic::samples {

FILE: proxygen/httpserver/samples/hq/HQClient.cpp
  type quic::samples (line 31) | namespace quic::samples {
    function startClient (line 363) | int startClient(const HQToolClientParams& params) {

FILE: proxygen/httpserver/samples/hq/HQClient.h
  function setOnBodyFunc (line 38) | void setOnBodyFunc(
  function onTransportReady (line 47) | void onTransportReady() noexcept override;
  function H1QUpstreamSession (line 108) | H1QUpstreamSession* h1qSession_{nullptr};

FILE: proxygen/httpserver/samples/hq/HQCommandLine.cpp
  type quic::samples (line 163) | namespace quic::samples {
    function initializeCommonSettings (line 192) | void initializeCommonSettings(HQToolParams& hqParams) {
    function initializeTransportSettings (line 221) | void initializeTransportSettings(HQToolParams& hqUberParams) {
    function initializeHttpServerSettings (line 342) | void initializeHttpServerSettings(HQToolServerParams& hqParams) {
    function initializeHttpClientSettings (line 359) | void initializeHttpClientSettings(HQToolClientParams& hqParams) {
    function initializeQLogSettings (line 400) | void initializeQLogSettings(HQBaseParams& hqParams) {
    function initializeFizzSettings (line 405) | void initializeFizzSettings(HQToolParams& toolParams) {
    function HQInvalidParams (line 427) | HQInvalidParams validate(const HQToolParams& params) {
    function HQInvalidParams (line 537) | const HQInvalidParams& HQToolParamsBuilderFromCmdline::invalidParams()
    function HQToolParams (line 542) | HQToolParams HQToolParamsBuilderFromCmdline::build() noexcept {
    function initializeParamsFromCmdline (line 546) | const folly::Expected<HQToolParams, HQInvalidParams>

FILE: proxygen/httpserver/samples/hq/HQCommandLine.h
  type class (line 17) | enum class
  type HQToolClientParams (line 21) | struct HQToolClientParams
  function migrateClient (line 37) | bool migrateClient{false};
  type HQToolServerParams (line 44) | struct HQToolServerParams
  function useInsecureDefaultCertificate (line 58) | bool useInsecureDefaultCertificate{false};
  function HQBaseParams (line 72) | [[nodiscard]] const HQBaseParams& baseParams() const {
  function else (line 75) | else if (mode == HQMode::SERVER) {
  function HQMode (line 90) | HQMode mode{HQMode::INVALID};
  function valid (line 108) | [[nodiscard]] bool valid() const noexcept;

FILE: proxygen/httpserver/samples/hq/HQLoggerHelper.h
  function namespace (line 20) | namespace quic::samples {

FILE: proxygen/httpserver/samples/hq/HQParams.cpp
  type quic::samples (line 11) | namespace quic::samples {

FILE: proxygen/httpserver/samples/hq/HQParams.h
  type HTTPVersion (line 29) | struct HTTPVersion {
  function major (line 32) | uint16_t major{1}
  function minor (line 33) | uint16_t minor{1}
  type HQBaseParams (line 50) | struct HQBaseParams {
  function prettyJson (line 75) | bool prettyJson{false};
  function HQBaseParams (line 81) | struct HQServerParams : public HQBaseParams {
  function HQBaseParams (line 90) | struct HQClientParams : public HQBaseParams {
  type HQInvalidParam (line 99) | struct HQInvalidParam {

FILE: proxygen/httpserver/samples/hq/HQServer.cpp
  class HQSessionController (line 43) | class HQSessionController
    method onTransportReady (line 77) | void onTransportReady(const proxygen::HTTPSessionBase&) override {
  function HTTPTransactionHandler (line 107) | HTTPTransactionHandler* HQSessionController::getRequestHandler(
  type quic::samples (line 138) | namespace quic::samples {
    function TakeoverProtocolVersion (line 377) | TakeoverProtocolVersion HQServer::getTakeoverProtocolVersion() const {

FILE: proxygen/httpserver/samples/hq/HQServer.h
  function namespace (line 22) | namespace proxygen {
  function namespace (line 26) | namespace quic::samples {

FILE: proxygen/httpserver/samples/hq/HQServerModule.cpp
  function sendKnobFrame (line 19) | void sendKnobFrame(HQSession* session, const folly::StringPiece str) {
  type quic::samples (line 38) | namespace quic::samples {
    function startServer (line 40) | void startServer(

FILE: proxygen/httpserver/samples/hq/HQServerModule.h
  function namespace (line 13) | namespace quic::samples {

FILE: proxygen/httpserver/samples/hq/InsecureVerifierDangerousDoNotUseInProduction.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/httpserver/samples/hq/SampleHandlers.cpp
  type quic::samples (line 24) | namespace quic::samples {
    function HTTPTransactionHandler (line 28) | HTTPTransactionHandler* Dispatcher::getRequestHandler(HTTPMessage* msg) {
    class WaitReleaseHandler (line 85) | class WaitReleaseHandler
    class ServerPushHandler (line 156) | class ServerPushHandler

FILE: proxygen/httpserver/samples/hq/SampleHandlers.h
  type HandlerParams (line 45) | struct HandlerParams {
  function explicit (line 75) | explicit BaseSampleHandler(const HandlerParams& params) : params_(params) {
  function setTransaction (line 78) | void setTransaction(proxygen::HTTPTransaction* txn) noexcept override {
  function detachTransaction (line 82) | void detachTransaction() noexcept override {
  function onChunkHeader (line 86) | void onChunkHeader(size_t /*length*/) noexcept override {
  function onChunkComplete (line 89) | void onChunkComplete() noexcept override {
  function onTrailers (line 92) | void onTrailers(
  function onUpgrade (line 96) | void onUpgrade(proxygen::UpgradeProtocol /*protocol*/) noexcept override {
  function onEgressPaused (line 99) | void onEgressPaused() noexcept override {
  function onEgressResumed (line 102) | void onEgressResumed() noexcept override {
  function maybeAddAltSvcHeader (line 105) | void maybeAddAltSvcHeader(proxygen::HTTPMessage& msg) const {
  function std (line 115) | static const std::string& getH1QFooter() {
  function getQueryParamAsNumber (line 152) | static uint32_t getQueryParamAsNumber(
  function onHeadersComplete (line 196) | void onHeadersComplete(
  function onBody (line 213) | void onBody(std::unique_ptr<folly::IOBuf> chain) noexcept override {
  function onEOM (line 216) | void onEOM() noexcept override {
  function onError (line 221) | void onError(const proxygen::HTTPException& /*error*/) noexcept override {
  function sendChunkRandomData (line 237) | void sendChunkRandomData(uint32_t chunkSize) {
  function sleepFutureCallback (line 248) | void sleepFutureCallback() {
  function totalChunkCount_ (line 272) | uint32_t totalChunkCount_{60};
  function onBody (line 428) | void onBody(std::unique_ptr<folly::IOBuf> /*chain*/) noexcept override {
  function onEOM (line 433) | void onEOM() noexcept override {
  function onError (line 437) | void onError(const proxygen::HTTPException& /*error*/) noexcept override {
  function onEgressPaused (line 442) | void onEgressPaused() noexcept override {
  function onEgressResumed (line 446) | void onEgressResumed() noexcept override {
  function sendError (line 495) | void sendError(const std::string& errorMsg) {
  function kMaxAllowedLength (line 507) | const uint64_t kMaxAllowedLength{1ULL * 1024 * 1024 * 1024}; // 1 GB

FILE: proxygen/httpserver/samples/hq/devious/DeviousBaton.cpp
  function makeBatonMessage (line 17) | std::unique_ptr<folly::IOBuf> makeBatonMessage(uint64_t padLen, uint8_t ...
  type devious (line 35) | namespace devious {
    function HTTPMessage (line 94) | HTTPMessage DeviousBaton::makeRequest(uint64_t version,

FILE: proxygen/httpserver/samples/hq/devious/DeviousBaton.h
  type class (line 18) | enum class
  function BatonStreamError (line 26) | enum class BatonStreamError {

FILE: proxygen/httpserver/samples/hq/devious/test/DeviousBatonTests.cpp
  type Message (line 20) | struct Message {
  function expectSendMessage (line 24) | folly::SemiFuture<Message> expectSendMessage(MockWebTransport& wt) {
  class DeviousBatonTest (line 49) | class DeviousBatonTest : public testing::TestWithParam<uint8_t> {}
  function TEST_P (line 51) | TEST_P(DeviousBatonTest, Basic) {

FILE: proxygen/httpserver/samples/hq/main.cpp
  function main (line 22) | int main(int argc, char* argv[]) {

FILE: proxygen/httpserver/samples/masque/MasqueClient.cpp
  function resolveAddress (line 49) | folly::SocketAddress resolveAddress(const std::string& host,
  class MasqueInteropClient (line 76) | class MasqueInteropClient
    method MasqueInteropClient (line 84) | explicit MasqueInteropClient(folly::EventBase* evb,
    method start (line 93) | void start() {
    method exitCode (line 117) | [[nodiscard]] int exitCode() const {
    method sendPayload (line 122) | void sendPayload() {
    method timeoutExpired (line 139) | void timeoutExpired() noexcept override {
    method getReadBuffer (line 145) | void getReadBuffer(void** buf, size_t* len) noexcept override {
    method onDataAvailable (line 150) | void onDataAvailable(const folly::SocketAddress& /*client*/,
    method onReadError (line 177) | void onReadError(const folly::AsyncSocketException& ex) noexcept overr...
    method onReadClosed (line 186) | void onReadClosed() noexcept override {
  function main (line 208) | int main(int argc, char* argv[]) {

FILE: proxygen/httpserver/samples/proxy/ProxyHandler.cpp
  type ProxyService (line 36) | namespace ProxyService {

FILE: proxygen/httpserver/samples/proxy/ProxyHandler.h
  function namespace (line 18) | namespace proxygen {
  function namespace (line 22) | namespace ProxyService {

FILE: proxygen/httpserver/samples/proxy/ProxyServer.cpp
  class ProxyHandlerFactory (line 38) | class ProxyHandlerFactory : public RequestHandlerFactory {
    method onServerStart (line 40) | void onServerStart(folly::EventBase* evb) noexcept override {
    method onServerStop (line 49) | void onServerStop() noexcept override {
    method RequestHandler (line 54) | RequestHandler* onRequest(RequestHandler*, HTTPMessage*) noexcept over...
    type TimerWrapper (line 59) | struct TimerWrapper {
  function main (line 66) | int main(int argc, char* argv[]) {

FILE: proxygen/httpserver/samples/proxy/ProxyStats.h
  function namespace (line 13) | namespace ProxyService {

FILE: proxygen/httpserver/samples/proxy/SessionWrapper.h
  function namespace (line 13) | namespace ProxyService {

FILE: proxygen/httpserver/samples/push/PushRequestHandler.cpp
  type PushService (line 19) | namespace PushService {
    function createLargeBody (line 25) | std::string createLargeBody() {

FILE: proxygen/httpserver/samples/push/PushRequestHandler.h
  function namespace (line 14) | namespace proxygen {
  function onEOM (line 31) | void onEOM() noexcept override;

FILE: proxygen/httpserver/samples/push/PushServer.cpp
  class PushRequestHandlerFactory (line 35) | class PushRequestHandlerFactory : public RequestHandlerFactory {
    method onServerStart (line 37) | void onServerStart(folly::EventBase* /*evb*/) noexcept override {
    method onServerStop (line 41) | void onServerStop() noexcept override {
    method RequestHandler (line 45) | RequestHandler* onRequest(RequestHandler*, HTTPMessage*) noexcept over...
  function main (line 53) | int main(int argc, char* argv[]) {

FILE: proxygen/httpserver/samples/push/PushStats.h
  function namespace (line 13) | namespace PushService {

FILE: proxygen/httpserver/samples/static/StaticHandler.cpp
  type StaticService (line 19) | namespace StaticService {

FILE: proxygen/httpserver/samples/static/StaticHandler.h
  function namespace (line 16) | namespace proxygen {
  function namespace (line 20) | namespace StaticService {

FILE: proxygen/httpserver/samples/static/StaticServer.cpp
  class StaticHandlerFactory (line 39) | class StaticHandlerFactory : public RequestHandlerFactory {
    method onServerStart (line 41) | void onServerStart(folly::EventBase* /*evb*/) noexcept override {
    method onServerStop (line 44) | void onServerStop() noexcept override {
    method RequestHandler (line 47) | RequestHandler* onRequest(RequestHandler*, HTTPMessage*) noexcept over...
  function main (line 54) | int main(int argc, char* argv[]) {

FILE: proxygen/httpserver/samples/websocket/WebSocketHandler.cpp
  type websockethandler (line 15) | namespace websockethandler {

FILE: proxygen/httpserver/samples/websocket/WebSocketHandler.h
  function namespace (line 15) | namespace proxygen {
  function namespace (line 19) | namespace websockethandler {

FILE: proxygen/httpserver/samples/websocket/main.cpp
  class WebSocketHandlerFactory (line 35) | class WebSocketHandlerFactory : public RequestHandlerFactory {
    method onServerStart (line 37) | void onServerStart(folly::EventBase* /*evb*/) noexcept override {
    method onServerStop (line 40) | void onServerStop() noexcept override {
    method RequestHandler (line 43) | RequestHandler* onRequest(RequestHandler*, HTTPMessage*) noexcept over...
  function main (line 50) | int main(int argc, char* argv[]) {

FILE: proxygen/httpserver/tests/HTTPServerTest.cpp
  class ServerThread (line 45) | class ServerThread {
    method ServerThread (line 52) | explicit ServerThread(HTTPServer* server) : server_(server) {
    method start (line 61) | bool start() {
  class WaitableServerThread (line 89) | class WaitableServerThread {
    method WaitableServerThread (line 97) | explicit WaitableServerThread(HTTPServer* server) : server_(server) {
    method start (line 107) | bool start(
    method exitThread (line 127) | void exitThread() {
  function TEST (line 132) | TEST(MultiBind, HandlesListenFailures) {
  function TEST (line 167) | TEST(HttpServerStartStop, TestRepeatStopCalls) {
  function TEST (line 180) | TEST(HttpServerStartStop, TestUseExistingIoExecutor) {
  class MockRequestHandlerFactory (line 193) | class MockRequestHandlerFactory : public RequestHandlerFactory {
  function TEST (line 203) | TEST(HttpServerStartStop, TestZeroThreadsMeansNumCPUs) {
  class AcceptorFactoryForTest (line 228) | class AcceptorFactoryForTest : public wangle::AcceptorFactory {
    method newAcceptor (line 230) | std::shared_ptr<wangle::Acceptor> newAcceptor(
  function TEST (line 238) | TEST(HttpServerStartStop, TestUseExistingAcceptorFactory) {
  class Cb (line 253) | class Cb : public folly::AsyncSocket::ConnectCallback {
    method Cb (line 255) | explicit Cb(folly::AsyncSSLSocket* sock) : sock_(sock) {
    method connectSuccess (line 257) | void connectSuccess() noexcept override {
    method connectErr (line 265) | void connectErr(const folly::AsyncSocketException&) noexcept override {
    method X509 (line 269) | const X509* getPeerCert() {
  function getSslContextConfig (line 281) | wangle::SSLContextConfig getSslContextConfig(bool useMultiCA) {
  function TEST (line 298) | TEST(SSL, SSLTest) {
  function TEST (line 324) | TEST(SSL, SSLTestWithMultiCAs) {
  class DummyFilterFactory (line 353) | class DummyFilterFactory : public RequestHandlerFactory {
    class DummyFilter (line 355) | class DummyFilter : public Filter {
      method DummyFilter (line 357) | explicit DummyFilter(RequestHandler* upstream) : Filter(upstream) {
    method RequestHandler (line 361) | RequestHandler* onRequest(RequestHandler* h, HTTPMessage*) noexcept ov...
    method onServerStart (line 365) | void onServerStart(folly::EventBase*) noexcept override {
    method onServerStop (line 367) | void onServerStop() noexcept override {
  class TestHandlerFactory (line 371) | class TestHandlerFactory : public RequestHandlerFactory {
    class TestHandler (line 373) | class TestHandler : public RequestHandler {
      method onRequest (line 374) | void onRequest(std::unique_ptr<HTTPMessage>) noexcept override {
      method onBody (line 376) | void onBody(std::unique_ptr<folly::IOBuf>) noexcept override {
      method onUpgrade (line 378) | void onUpgrade(UpgradeProtocol) noexcept override {
      method onEOM (line 381) | void onEOM() noexcept override {
      method requestComplete (line 399) | void requestComplete() noexcept override {
      method onError (line 403) | void onError(ProxygenError) noexcept override {
    method RequestHandler (line 408) | RequestHandler* onRequest(RequestHandler*, HTTPMessage*) noexcept over...
    method onServerStart (line 412) | void onServerStart(folly::EventBase*) noexcept override {
    method onServerStop (line 414) | void onServerStop() noexcept override {
  function setupServer (line 418) | std::pair<std::unique_ptr<HTTPServer>, std::unique_ptr<ServerThread>>
  function TEST (line 450) | TEST(SSL, TestAllowInsecureOnSecureServer) {
  function TEST (line 476) | TEST(SSL, DisallowInsecureOnSecureServer) {
  type SSLSessionReadCallback (line 510) | struct SSLSessionReadCallback
    method SSLSessionReadCallback (line 513) | SSLSessionReadCallback() {
    method setSSLSession (line 516) | void setSSLSession(
    method getSSLSession (line 525) | [[nodiscard]] folly::ssl::SSLSessionUniquePtr getSSLSession(
    method removeSSLSession (line 529) | bool removeSSLSession(const std::string&) noexcept override {
    method readDataAvailable (line 532) | void readDataAvailable(size_t) noexcept override {
    method getReadBuffer (line 534) | void getReadBuffer(void** buf, size_t* lenReturn) override {
    method readEOF (line 538) | void readEOF() noexcept override {
    method readErr (line 540) | void readErr(const folly::AsyncSocketException&) noexcept override {
  function TEST (line 549) | TEST(SSL, TestResumptionWithTicketsTLS12) {
  function TEST (line 588) | TEST(SSL, TestResumptionWithTickets) {
  function TEST (line 626) | TEST(SSL, TestResumptionAfterUpdateFails) {
  function TEST (line 697) | TEST(SSL, TestUpdateTLSCredentials) {
  function TEST (line 781) | TEST(GetListenSocket, TestNoBootstrap) {
  function TEST (line 791) | TEST(GetListenSocket, TestBootstrapWithNoBinding) {
  function TEST (line 805) | TEST(GetListenSocket, TestBootstrapWithBinding) {
  function TEST (line 816) | TEST(UseExistingSocket, TestWithExistingAsyncServerSocket) {
  function TEST (line 841) | TEST(UseExistingSocket, TestWithSocketFd) {
  function TEST (line 865) | TEST(UseExistingSocket, TestWithMultipleSocketFds) {
  class ScopedServerTest (line 898) | class ScopedServerTest : public testing::Test {
    method SetUp (line 900) | void SetUp() override {
    method createScopedServer (line 909) | std::unique_ptr<ScopedHTTPServer> createScopedServer() {
    method connectSSL (line 917) | std::unique_ptr<CurlClient> connectSSL(const std::string& caFile = "",
    method connectPlainText (line 937) | std::unique_ptr<CurlClient> connectPlainText() {
    method HTTPServerOptions (line 950) | virtual HTTPServerOptions createDefaultOpts() {
  function TEST_F (line 965) | TEST_F(ScopedServerTest, Start) {
  function TEST_F (line 972) | TEST_F(ScopedServerTest, StartStrictSSL) {
  function TEST_F (line 980) | TEST_F(ScopedServerTest, StartNotStrictSSL) {
  function TEST_F (line 992) | TEST_F(ScopedServerTest, StartSSLWithInsecure) {
  class ConnectionFilterTest (line 1012) | class ConnectionFilterTest : public ScopedServerTest {
    method HTTPServerOptions (line 1014) | HTTPServerOptions createDefaultOpts() override {
  function TEST_F (line 1043) | TEST_F(ConnectionFilterTest, Test) {

FILE: proxygen/httpserver/tests/RequestHandlerAdaptorTest.cpp
  type StubRequestHandlerAdaptor (line 20) | struct StubRequestHandlerAdaptor : public RequestHandlerAdaptor {
    method sendHeaders (line 23) | void sendHeaders(HTTPMessage& /*msg*/) noexcept override {
    method sendEOM (line 27) | void sendEOM() noexcept override {
  function testExpectHandling (line 34) | void testExpectHandling(bool handlerResponds) {
  function TEST (line 47) | TEST(RequestHandlerAdaptorTest, Expect) {
  function TEST (line 52) | TEST(RequestHandlerAdaptorTest, ExpectInvalid) {
  function TEST (line 68) | TEST(RequestHandlerAdaptorTest, onTimeoutError) {
  function TEST (line 83) | TEST(RequestHandlerAdaptorTest, onStreamAbortError) {
  function TEST (line 100) | TEST(RequestHandlerAdaptorTest, onGoaway) {

FILE: proxygen/lib/dns/AsyncDNSStatsCollector.cpp
  type proxygen (line 35) | namespace proxygen {

FILE: proxygen/lib/dns/AsyncDNSStatsCollector.h
  function namespace (line 19) | namespace proxygen {

FILE: proxygen/lib/dns/CAresResolver.cpp
  type HostentDeleter (line 37) | struct HostentDeleter {
  type AresDataDeleter (line 44) | struct AresDataDeleter {
  class NullStatsCollector (line 53) | class NullStatsCollector : public DNSResolver::StatsCollector {
    method NullStatsCollector (line 55) | NullStatsCollector() = default;
    method recordSuccess (line 57) | void recordSuccess(const std::vector<DNSResolver::Answer>& /*answers*/,
    method recordError (line 60) | void recordError(const folly::exception_wrapper& /*ew*/,
    method recordQueryResult (line 63) | void recordQueryResult(uint8_t /*rcode*/) noexcept override {
  type proxygen (line 457) | namespace proxygen {
    class CAresResolver::MultiQuery (line 469) | class CAresResolver::MultiQuery
      method MultiQuery (line 473) | MultiQuery(CAresResolver* resolver, std::string name)
      method resolve (line 479) | void resolve(ResolutionCallback* callback,
      method cancelResolutionImpl (line 498) | void cancelResolutionImpl() override {
      method resolutionSuccess (line 517) | void resolutionSuccess(std::vector<Answer> a) noexcept override {
      method resolutionError (line 534) | void resolutionError(const folly::exception_wrapper& ew) noexcept ov...
      method finish (line 551) | void finish() {
    class CAresResolver::SocketHandler (line 581) | class CAresResolver::SocketHandler : public folly::EventHandler {
      method SocketHandler (line 583) | SocketHandler(CAresResolver* resolver,
      method handlerReady (line 594) | void handlerReady(uint16_t events) noexcept override {
    type detail (line 1041) | namespace detail {
      function parseTxtRecords (line 1042) | folly::Expected<std::vector<DNSResolver::Answer>, ParseError> parseT...
      function parseSrvRecords (line 1067) | folly::Expected<std::vector<DNSResolver::Answer>, ParseError> parseS...
      function parseMxRecords (line 1090) | folly::Expected<std::vector<DNSResolver::Answer>, ParseError> parseM...

FILE: proxygen/lib/dns/CAresResolver.h
  function namespace (line 26) | namespace proxygen {

FILE: proxygen/lib/dns/CachingDNSResolver.cpp
  type proxygen (line 19) | namespace proxygen {

FILE: proxygen/lib/dns/CachingDNSResolver.h
  function namespace (line 21) | namespace proxygen {
  function resolutionError (line 172) | void resolutionError(const folly::exception_wrapper& ew) noexcept overri...
  function cancelResolutionImpl (line 195) | void cancelResolutionImpl() override {

FILE: proxygen/lib/dns/DNSModule.cpp
  type proxygen (line 25) | namespace proxygen {

FILE: proxygen/lib/dns/DNSModule.h
  function virtual (line 29) | virtual DNSResolver::UniquePtr provideDNSResolver(
  function setDNSPort (line 49) | void setDNSPort(uint16_t port) {
  function setDNSServers (line 58) | void setDNSServers(const std::list<folly::SocketAddress>& servers) {
  function setCacheParameters (line 67) | void setCacheParameters(size_t maxSize, size_t clearSize) {
  function setStaleCacheTTL (line 76) | void setStaleCacheTTL(size_t min, size_t factor) {
  function setStaleCacheSizeMultiplier (line 81) | void setStaleCacheSizeMultiplier(size_t multiplier) {
  function cacheClearSize_ (line 89) | size_t cacheClearSize_{256};

FILE: proxygen/lib/dns/DNSResolver.cpp
  type proxygen (line 21) | namespace proxygen {
    function describe (line 143) | std::string describe(const DNSResolver::ResolutionStatus status, bool ...
    function familyToString (line 170) | folly::StringPiece familyToString(sa_family_t family) {

FILE: proxygen/lib/dns/DNSResolver.h
  function namespace (line 27) | namespace proxygen {

FILE: proxygen/lib/dns/FutureDNSResolver.cpp
  type proxygen (line 11) | namespace proxygen {
    class FutureDNSResolutionCallback (line 13) | class FutureDNSResolutionCallback : public DNSResolver::ResolutionCall...
      method FutureDNSResolutionCallback (line 15) | explicit FutureDNSResolutionCallback(
      method resolutionError (line 20) | void resolutionError(const folly::exception_wrapper& ew) noexcept ov...
      method resolutionSuccess (line 25) | void resolutionSuccess(

FILE: proxygen/lib/dns/FutureDNSResolver.h
  function namespace (line 21) | namespace proxygen {

FILE: proxygen/lib/dns/NaiveResolutionCallback.cpp
  type proxygen (line 11) | namespace proxygen {
    function isDNSAnswer (line 17) | static bool isDNSAnswer(const DNSAnswer& a) {

FILE: proxygen/lib/dns/NaiveResolutionCallback.h
  function namespace (line 18) | namespace proxygen {

FILE: proxygen/lib/dns/Rfc6724.cpp
  type SortElement (line 51) | struct SortElement {
  type proxygen (line 67) | namespace proxygen {
    function rfc6724_sort (line 69) | void rfc6724_sort(vector<SocketAddress>& addrs,
  function find_src_addr (line 139) | static bool find_src_addr(const SocketAddress* addr, SocketAddress& srcA...
  function get_scope (line 202) | static int get_scope(const SocketAddress* addr) {
  function get_label (line 247) | static int get_label(const SocketAddress* addr) {
  function get_precedence (line 287) | static int get_precedence(const SocketAddress* addr) {
  function get_common_prefix (line 319) | static int get_common_prefix(const in6_addr* src, const in6_addr* dst) {
  function rfc6724_compare (line 344) | static int rfc6724_compare(const void* ptr1, const void* ptr2) {

FILE: proxygen/lib/dns/Rfc6724.h
  function namespace (line 35) | namespace proxygen {

FILE: proxygen/lib/dns/SyncDNSResolver.cpp
  type proxygen (line 17) | namespace proxygen {

FILE: proxygen/lib/dns/SyncDNSResolver.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/dns/test/CAresResolverTest.cpp
  class MockCAresResolver (line 20) | class MockCAresResolver : public CAresResolver {
  class MockQuery (line 35) | class MockQuery : public CAresResolver::Query {
  class CAresResolverTest (line 42) | class CAresResolverTest : public testing::Test {
    method SetUp (line 44) | void SetUp() override {
  class MockQueryWithCob (line 53) | class MockQueryWithCob : public MockQuery {
    method MockQueryWithCob (line 55) | MockQueryWithCob(CAresResolver* resolver,
  class MockResolutionCallback (line 69) | class MockResolutionCallback : public CAresResolver::ResolutionCallback {
    method resolutionSuccess (line 72) | void resolutionSuccess(
    method resolutionError (line 75) | void resolutionError(
  function TEST_F (line 80) | TEST_F(CAresResolverTest, ScheduleFallbackOnTimeout) {
  function TEST_F (line 95) | TEST_F(CAresResolverTest, DontScheduleFallbackOnTimeoutNoCob) {
  function TEST_F (line 110) | TEST_F(CAresResolverTest, ScheduleFallbackOnFailureDnscr) {
  function TEST_F (line 125) | TEST_F(CAresResolverTest, ScheduleFallbackOnFailureDnscrNoCob) {
  function TEST_F (line 178) | TEST_F(CAresResolverTest, TestParseTxtRecords) {
  class CNameMockResolver (line 203) | class CNameMockResolver : public CAresResolver {
    method query (line 207) | void query(const std::string& /*name*/,
    method queryFinished (line 227) | void queryFinished() override {
    method queryFinishedCount (line 231) | [[nodiscard]] int queryFinishedCount() const {
  function TEST_F (line 338) | TEST_F(CAresResolverTest, CheckForCNameSynchronousCallbackNoUAF) {

FILE: proxygen/lib/dns/test/CachingDNSResolverTest.cpp
  type CachingDNSParams (line 19) | struct CachingDNSParams {
  class CachingDNSResolverFixture (line 27) | class CachingDNSResolverFixture : public testing::Test {
    method SetUp (line 29) | void SetUp() override {
    method initializeResolverWithParams (line 33) | void initializeResolverWithParams(const CachingDNSParams& params) {
    method initializeWithDefaultParams (line 50) | void initializeWithDefaultParams() {
  function TEST_F (line 61) | TEST_F(CachingDNSResolverFixture, NoCrashWhileDestructing) {
  function TEST_F (line 67) | TEST_F(CachingDNSResolverFixture, ResolutionError) {
  function TEST_F (line 73) | TEST_F(CachingDNSResolverFixture, CacheHit) {
  function TEST_F (line 85) | TEST_F(CachingDNSResolverFixture, CacheClearAfterMax) {
  function TEST_F (line 103) | TEST_F(CachingDNSResolverFixture, CacheClearExpiredRecords) {
  function TEST_F (line 120) | TEST_F(CachingDNSResolverFixture, StaleCacheHitAfterFailure) {

FILE: proxygen/lib/dns/test/DNSResolverTest.cpp
  function h (line 21) | size_t h(const DNSResolver::Answer& a) {
  function TEST (line 27) | TEST(DNSResolverAnswerHashTest, EqualAnswersHaveEqualHash_Address) {
  function TEST (line 36) | TEST(DNSResolverAnswerHashTest, EqualAnswersHaveEqualHash_Name) {
  function TEST (line 46) | TEST(DNSResolverAnswerHashTest, EqualAnswersHaveEqualHash_CName) {
  function TEST (line 57) | TEST(DNSResolverAnswerHashTest, EqualAnswersHaveEqualHash_MX) {
  function TEST (line 66) | TEST(DNSResolverAnswerHashTest, DistinctAnswersBehaveInUnorderedSet) {
  function TEST (line 107) | TEST(DNSResolverAnswerHashTest, IgnoresTTLAndCreationTime) {
  function TEST (line 122) | TEST(DNSResolverAnswerHashTest, DifferentTypeNotEqual) {
  function TEST (line 132) | TEST(DNSResolverAnswerHashTest, DifferentAddressNotEqual) {
  function TEST (line 140) | TEST(DNSResolverAnswerHashTest, DifferentNameNotEqual) {
  function TEST (line 150) | TEST(DNSResolverAnswerHashTest, DifferentCanonicalNameNotEqual) {
  function TEST (line 161) | TEST(DNSResolverAnswerHashTest, DifferentPortNotEqual) {
  function TEST (line 172) | TEST(DNSResolverAnswerHashTest, DifferentPriorityNotEqual) {
  function TEST (line 182) | TEST(DNSResolverAnswerHashTest, SameCanonicalNameAndPortEqual) {
  function TEST (line 195) | TEST(DNSResolverAnswerHashTest, CanonicalNameAndPortInUnorderedSet) {

FILE: proxygen/lib/dns/test/Dummies.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/lib/dns/test/FutureDNSResolverTest.cpp
  type proxygen (line 21) | namespace proxygen {
    function invert (line 25) | std::map<V, K> invert(const std::map<K, V>& input) {
    class FakeResolverError (line 33) | class FakeResolverError : public std::runtime_error {
      method FakeResolverError (line 35) | explicit FakeResolverError(string message)
    class FakeDNSResolver (line 40) | class FakeDNSResolver : public DNSResolver {
      method FakeDNSResolver (line 42) | explicit FakeDNSResolver(
      method resolveAddress (line 56) | void resolveAddress(ResolutionCallback* cb,
      method resolveHostname (line 74) | void resolveHostname(
      method resolveMailExchange (line 95) | void resolveMailExchange(ResolutionCallback* cb,
      method setStatsCollector (line 124) | void setStatsCollector(DNSResolver::StatsCollector* collector) overr...
    class FutureDNSResolverTest (line 137) | class FutureDNSResolverTest : public ::testing::Test {
      method SetUp (line 142) | void SetUp() override {
    function TEST_F (line 175) | TEST_F(FutureDNSResolverTest, TestResolveAddressSuccess) {
    function TEST_F (line 189) | TEST_F(FutureDNSResolverTest, TestResolveAddressFail) {
    function TEST_F (line 195) | TEST_F(FutureDNSResolverTest, TestResolveHostnameSuccess) {
    function TEST_F (line 209) | TEST_F(FutureDNSResolverTest, TestResolveHostnameFail) {
    function TEST_F (line 215) | TEST_F(FutureDNSResolverTest, TestResolveMailExchangeSuccess) {
    function TEST_F (line 248) | TEST_F(FutureDNSResolverTest, TestResolveMailExchangeFail) {

FILE: proxygen/lib/dns/test/MockDNSModule.cpp
  type proxygen (line 11) | namespace proxygen {

FILE: proxygen/lib/dns/test/MockDNSModule.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/dns/test/MockDNSResolver.h
  function namespace (line 18) | namespace proxygen {

FILE: proxygen/lib/dns/test/Mocks.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/dns/test/Rfc6724Test.cpp
  function TEST (line 20) | TEST(SyncDNSResolver, Basic102) {
  function TEST_F (line 58) | TEST_F(SyncDNSResolverTest, Sorted) {
  function TEST_F (line 84) | TEST_F(SyncDNSResolverTest, SortedLocal) {
  function TEST_F (line 110) | TEST_F(SyncDNSResolverTest, Unsorted) {

FILE: proxygen/lib/dns/test/SyncDNSResolverTest.cpp
  function TEST_F (line 17) | TEST_F(SyncDNSResolverTest, Success) {
  function TEST_F (line 40) | TEST_F(SyncDNSResolverTest, EmptyResponseIsTreatedAsError) {
  function TEST_F (line 57) | TEST_F(SyncDNSResolverTest, AsyncSuccess) {
  function TEST_F (line 76) | TEST_F(SyncDNSResolverTest, Failure) {

FILE: proxygen/lib/dns/test/SyncDNSResolverTest.h
  function namespace (line 17) | namespace proxygen {

FILE: proxygen/lib/healthcheck/PoolHealthChecker.h
  function namespace (line 17) | namespace proxygen {

FILE: proxygen/lib/healthcheck/ServerHealthCheckerCallback.cpp
  type proxygen (line 11) | namespace proxygen {
    function serverDownInfoStr (line 13) | const std::string serverDownInfoStr(ServerDownInfo info) {

FILE: proxygen/lib/healthcheck/ServerHealthCheckerCallback.h
  function namespace (line 19) | namespace proxygen {

FILE: proxygen/lib/http/HQConnector.cpp
  type proxygen (line 24) | namespace proxygen {

FILE: proxygen/lib/http/HQConnector.h
  function setSupportedQuicVersions (line 45) | void setSupportedQuicVersions(
  function setH3Settings (line 49) | void setH3Settings(SettingsList settings) {
  function HQUpstreamSession (line 86) | HQUpstreamSession* session_{nullptr};

FILE: proxygen/lib/http/HTTP3ErrorCode.cpp
  type proxygen (line 12) | namespace proxygen {
    function toString (line 14) | std::string toString(HTTP3::ErrorCode code) {
    function getAllHTTP3ErrorCodes (line 65) | std::vector<HTTP3::ErrorCode> getAllHTTP3ErrorCodes() {

FILE: proxygen/lib/http/HTTP3ErrorCode.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/HTTPConnector.cpp
  type proxygen (line 24) | namespace proxygen {

FILE: proxygen/lib/http/HTTPConnector.h
  function namespace (line 22) | namespace proxygen {

FILE: proxygen/lib/http/HTTPConnectorWithFizz.cpp
  type proxygen (line 16) | namespace proxygen {

FILE: proxygen/lib/http/HTTPConnectorWithFizz.h
  function namespace (line 20) | namespace proxygen {

FILE: proxygen/lib/http/HTTPConstants.cpp
  type proxygen (line 11) | namespace proxygen {

FILE: proxygen/lib/http/HTTPConstants.h
  type class (line 51) | enum class
  function UpgradeProtocol (line 62) | enum class UpgradeProtocol : int {

FILE: proxygen/lib/http/HTTPException.cpp
  type proxygen (line 14) | namespace proxygen {
    function toHTTP3ErrorCode (line 16) | HTTP3::ErrorCode toHTTP3ErrorCode(proxygen::ErrorCode err) {

FILE: proxygen/lib/http/HTTPException.h
  function namespace (line 17) | namespace proxygen {

FILE: proxygen/lib/http/HTTPHeaderSize.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/HTTPHeaders.cpp
  type proxygen (line 63) | namespace proxygen {
    function HTTPHeaders (line 231) | HTTPHeaders& HTTPHeaders::operator=(const HTTPHeaders& hdrs) {
    function HTTPHeaders (line 239) | HTTPHeaders& HTTPHeaders::operator=(HTTPHeaders&& hdrs) {
    function HTTPHeaderCode (line 407) | HTTPHeaderCode* HTTPHeaders::codes() const noexcept {
    function HTTPHeaderCode (line 411) | HTTPHeaderCode* HTTPHeaders::codes(const uint8_t* memory,

FILE: proxygen/lib/http/HTTPHeaders.h
  function namespace (line 25) | namespace proxygen {

FILE: proxygen/lib/http/HTTPMessage.cpp
  type proxygen (line 22) | namespace proxygen {
    function httpPriorityToString (line 24) | std::string httpPriorityToString(const HTTPPriority& pri) {
    function HTTPMessage (line 151) | HTTPMessage& HTTPMessage::operator=(const HTTPMessage& message) {
    function HTTPMessage (line 197) | HTTPMessage& HTTPMessage::operator=(HTTPMessage&& message) {
    type FormattedDate (line 326) | struct FormattedDate {
      method string (line 330) | string formatDate() {
    function string (line 348) | string HTTPMessage::formatDateHeader() {
    function StringPiece (line 429) | const StringPiece HTTPMessage::getCookie(const string& name) const {
    function string (line 519) | const string* HTTPMessage::getQueryParamPtr(const string& name) const {
    function string (line 536) | const string& HTTPMessage::getQueryParam(const string& name) const {
    function HTTPQueryParamMap (line 566) | const HTTPQueryParamMap& HTTPMessage::getQueryParams() const {
    function StringPiece (line 699) | StringPiece HTTPMessage::trim(StringPiece sp) {
    function ParseURL (line 1003) | ParseURL HTTPMessage::setURLImplInternal(bool unparse, bool strict) {

FILE: proxygen/lib/http/HTTPMessage.h
  function namespace (line 28) | namespace proxygen {
  function std (line 219) | const std::string& getDstIP() const {
  function rawSetMethod (line 249) | void rawSetMethod(const std::string& method) {
  function rawSetURL (line 284) | void rawSetURL(const std::string& url) {
  function std (line 294) | const std::string& getPath() const {
  function std (line 313) | const std::string& getQueryString() const {
  function rawSetStatusMessage (line 349) | void rawSetStatusMessage(std::string msg) {
  function setVersionString (line 360) | void setVersionString(const std::string& ver) {
  function HTTPHeaders (line 389) | HTTPHeaders* getTrailers() {
  function HTTPHeaders (line 392) | const HTTPHeaders* getTrailers() const {
  function setTrailers (line 399) | void setTrailers(std::unique_ptr<HTTPHeaders>&& trailers) {
  function isHTTP1_0 (line 420) | bool isHTTP1_0() const;
  function setWantsKeepalive (line 474) | void setWantsKeepalive(bool wantsKeepaliveVal) {
  function setTrailersAllowed (line 491) | void setTrailersAllowed(bool trailersAllowedVal) {
  function getStatusCode (line 506) | uint16_t getStatusCode() const;
  function HTTPQueryParamMap (line 603) | const HTTPQueryParamMap& getQueryParams() const;
  function setMasque (line 688) | void setMasque() {
  function std (line 696) | const std::string& getScheme() const {
  function setSecureInfo (line 718) | void setSecureInfo(int ver, const char* cipher) {
  function setAdvancedProtocolString (line 724) | void setAdvancedProtocolString(const std::string& protocol) {
  function std (line 732) | const std::string* getAdvancedProtocolString() const {
  function std (line 742) | const std::string& getProtocolString() const {
  function normalizePriority (line 758) | static uint8_t normalizePriority(int8_t pri) {
  function setPriority (line 768) | void setPriority(int8_t pri) {
  function noexcept (line 780) | const noexcept {
  function setSeqNo (line 797) | void setSeqNo(int32_t seqNo) {
  function setIngressHeaderSize (line 807) | void setIngressHeaderSize(const HTTPHeaderSize& size) {
  function setStartTime (line 820) | void setStartTime(const TimePoint& startTime) {
  function computeKeepalive (line 855) | bool computeKeepalive() const;
  function parseQueryParams (line 926) | void parseQueryParams() const;
  function clear (line 1014) | void clear() {
  function copyFrom (line 1030) | void copyFrom(const Fields& other) {
  function moveFrom (line 1056) | void moveFrom(Fields&& other) {
  function mutable (line 1072) | mutable MessageType which_{MessageType::NONE};
  function Request (line 1097) | const Request& request() const {
  function Response (line 1116) | const Response& response() const {
  function string (line 1164) | string stripCntrlChars(const Str& str) {

FILE: proxygen/lib/http/HTTPMessageFilters.cpp
  type proxygen (line 11) | namespace proxygen {

FILE: proxygen/lib/http/HTTPMessageFilters.h
  function namespace (line 20) | namespace proxygen {
  function virtual (line 31) | virtual void setPrevFilter(HTTPMessageFilter* prev) noexcept {
  function virtual (line 38) | virtual void setPrevSink(HTTPSink* prev) noexcept {
  function onHeadersComplete (line 53) | void onHeadersComplete(std::unique_ptr<HTTPMessage> msg) noexcept overri...
  function onBody (line 56) | void onBody(std::unique_ptr<folly::IOBuf> chain) noexcept override {
  function onChunkHeader (line 59) | void onChunkHeader(size_t length) noexcept override {
  function onChunkComplete (line 62) | void onChunkComplete() noexcept override {
  function onTrailers (line 65) | void onTrailers(std::unique_ptr<HTTPHeaders> trailers) noexcept override {
  function onEOM (line 68) | void onEOM() noexcept override {
  function onUpgrade (line 71) | void onUpgrade(UpgradeProtocol protocol) noexcept override {
  function onError (line 74) | void onError(const HTTPException& error) noexcept override {
  function onInvariantViolation (line 78) | void onInvariantViolation(const HTTPException& error) noexcept final {
  function setTransaction (line 83) | void setTransaction(HTTPTransaction* txn) noexcept final {
  function detachTransaction (line 86) | void detachTransaction() noexcept final {
  function onEgressPaused (line 96) | void onEgressPaused() noexcept final {
  function onEgressResumed (line 99) | void onEgressResumed() noexcept final {
  function onPushedTransaction (line 102) | void onPushedTransaction(HTTPTransaction* txn) noexcept final {
  function virtual (line 106) | [[nodiscard]] virtual std::string_view getFilterName() const noexcept {
  function virtual (line 134) | virtual void nextOnBody(std::unique_ptr<folly::IOBuf> chain) {
  function virtual (line 137) | virtual void nextOnChunkHeader(size_t length) {
  function virtual (line 140) | virtual void nextOnChunkComplete() {
  function virtual (line 143) | virtual void nextOnTrailers(std::unique_ptr<HTTPHeaders> trailers) {
  function virtual (line 146) | virtual void nextOnEOM() {
  function virtual (line 149) | virtual void nextOnError(const HTTPException& ex) {
  function nextElementIsPaused_ (line 157) | bool nextElementIsPaused_{false};

FILE: proxygen/lib/http/HTTPMethod.cpp
  function StringVector (line 25) | const StringVector& getMethodStrings() {
  type proxygen (line 45) | namespace proxygen {
    function stringToMethod (line 47) | folly::Optional<HTTPMethod> stringToMethod(folly::StringPiece method) {

FILE: proxygen/lib/http/HTTPMethod.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/HTTPPriorityFunctions.cpp
  type proxygen (line 13) | namespace proxygen {
    function T (line 17) | T getWithDefault(StructuredHeaders::Dictionary& dict,
    function httpPriorityFromHTTPMessage (line 37) | folly::Optional<HTTPPriority> httpPriorityFromHTTPMessage(
    function httpPriorityFromString (line 43) | folly::Optional<HTTPPriority> httpPriorityFromString(

FILE: proxygen/lib/http/HTTPPriorityFunctions.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/HeaderConstants.cpp
  type proxygen::headers (line 11) | namespace proxygen::headers {

FILE: proxygen/lib/http/HeaderConstants.h
  function std (line 30) | constexpr std::string_view kWTProtocol{"wt-protocol"};

FILE: proxygen/lib/http/ProxyStatus.cpp
  type proxygen (line 25) | namespace proxygen {
    function StatusType (line 31) | StatusType ProxyStatus::getStatusType() const {
    function ProxyStatus (line 40) | ProxyStatus& ProxyStatus::setProxyStatusParameter(folly::StringPiece n...
    function ProxyStatus (line 51) | ProxyStatus& ProxyStatus::setProxy(const std::string& proxy) {
    function ProxyStatus (line 55) | ProxyStatus& ProxyStatus::setUpstreamIP(const std::string& upstreamIP) {
    function ProxyStatus (line 59) | ProxyStatus& ProxyStatus::setProxyError(const bool isProxyError) {
    function ProxyStatus (line 67) | ProxyStatus& ProxyStatus::setServerError(const bool isServerError) {
    function ProxyStatus (line 75) | ProxyStatus& ProxyStatus::setClientError(const bool isClientError) {
    function ProxyStatus (line 83) | ProxyStatus& ProxyStatus::setClientAddress(const std::string& clientAd...
    function ProxyStatus (line 87) | ProxyStatus& ProxyStatus::setDetails(const std::string& details) {

FILE: proxygen/lib/http/ProxyStatus.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/ProxygenErrorEnum.cpp
  type proxygen (line 17) | namespace proxygen {

FILE: proxygen/lib/http/ProxygenErrorEnum.h
  function namespace (line 11) | namespace proxygen {

FILE: proxygen/lib/http/RFC2616.cpp
  function strtoulWrapper (line 20) | bool strtoulWrapper(const char*& curs, const char* end, unsigned long& v...
  function equalsIgnoreCase (line 38) | bool equalsIgnoreCase(folly::StringPiece s1, folly::StringPiece s2) {
  type proxygen::RFC2616 (line 47) | namespace proxygen::RFC2616 {
    function BodyAllowed (line 49) | BodyAllowed isRequestBodyAllowed(folly::Optional<HTTPMethod> method) {
    function responseBodyMustBeEmpty (line 60) | bool responseBodyMustBeEmpty(unsigned status) {
    function bodyImplied (line 64) | bool bodyImplied(const HTTPHeaders& headers) {
    function parseQvalue (line 69) | double parseQvalue(const EncodingParams& params) {
    function parseQvalues (line 79) | bool parseQvalues(folly::StringPiece value, TokenPairVec& output) {
    function parseByteRangeSpec (line 100) | bool parseByteRangeSpec(folly::StringPiece value,
    function parseEncoding (line 167) | folly::Try<EncodingList> parseEncoding(const folly::StringPiece header) {
    function acceptsEncoding (line 216) | bool acceptsEncoding(const folly::StringPiece header,
    function acceptsEncoding (line 225) | bool acceptsEncoding(const EncodingList& encodings,

FILE: proxygen/lib/http/RFC2616.h
  function namespace (line 23) | namespace proxygen {

FILE: proxygen/lib/http/StatusTypeEnum.cpp
  type proxygen (line 17) | namespace proxygen {

FILE: proxygen/lib/http/StatusTypeEnum.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/SynchronizedLruQuicPskCache.cpp
  type proxygen (line 11) | namespace proxygen {

FILE: proxygen/lib/http/SynchronizedLruQuicPskCache.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/Types.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/lib/http/Window.cpp
  type proxygen (line 14) | namespace proxygen {

FILE: proxygen/lib/http/Window.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/CapsuleCodec.cpp
  type proxygen (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/CapsuleCodec.h
  type class (line 19) | enum class
  function class (line 24) | class Callback {
  function setCallback (line 43) | void setCallback(Callback* callback) {
  function noexcept (line 48) | canParseCapsule(uint64_t /*capsuleType*/) noexcept {
  function curCapsuleLength_ (line 60) | uint64_t curCapsuleLength_{0}
  function ParseState (line 64) | enum class ParseState : uint8_t {

FILE: proxygen/lib/http/codec/CodecProtocol.cpp
  type proxygen (line 17) | namespace proxygen {
    function CodecProtocol (line 33) | extern CodecProtocol getCodecProtocolFromStr(folly::StringPiece protoc...
    function isValidCodecProtocolStr (line 71) | extern bool isValidCodecProtocolStr(folly::StringPiece protocolStr) {
    function isHTTP1_1CodecProtocol (line 78) | extern bool isHTTP1_1CodecProtocol(CodecProtocol protocol) {
    function isHTTP2CodecProtocol (line 82) | extern bool isHTTP2CodecProtocol(CodecProtocol protocol) {
    function isHQCodecProtocol (line 86) | extern bool isHQCodecProtocol(CodecProtocol protocol) {
    function isHTTPBinaryCodecProtocol (line 90) | extern bool isHTTPBinaryCodecProtocol(CodecProtocol protocol) {
    function isParallelCodecProtocol (line 94) | extern bool isParallelCodecProtocol(CodecProtocol protocol) {
    function serverAcceptedUpgrade (line 98) | extern bool serverAcceptedUpgrade(const std::string& clientUpgrade,

FILE: proxygen/lib/http/codec/CodecProtocol.h
  function namespace (line 17) | namespace proxygen {

FILE: proxygen/lib/http/codec/CodecUtil.cpp
  type proxygen (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/CodecUtil.h
  function namespace (line 21) | namespace proxygen {

FILE: proxygen/lib/http/codec/ControlMessageRateLimitFilter.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/DebugFilter.h
  function namespace (line 15) | namespace proxygen {
  function shouldDumpStream (line 69) | bool shouldDumpStream(HTTPCodec::StreamID streamID) {
  function shouldTrackStream (line 74) | bool shouldTrackStream(const HTTPMessage& msg) {
  function onAbort (line 78) | void onAbort(StreamID streamID, ErrorCode code) override {
  function onError (line 87) | void onError(HTTPCodec::StreamID streamID,
  function onGoaway (line 99) | void onGoaway(uint64_t lastStream,
  function dump (line 111) | void dump() {
  function maxBufSize_ (line 125) | size_t maxBufSize_{10000};

FILE: proxygen/lib/http/codec/DefaultHTTPCodecFactory.cpp
  type proxygen (line 15) | namespace proxygen {

FILE: proxygen/lib/http/codec/DefaultHTTPCodecFactory.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/DirectErrorsRateLimitFilter.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/ErrorCode.cpp
  type proxygen (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/ErrorCode.h
  function namespace (line 20) | namespace proxygen {

FILE: proxygen/lib/http/codec/FlowControlFilter.cpp
  type proxygen (line 11) | namespace proxygen {
    function HTTPException (line 14) | HTTPException getException(const std::string& msg) {

FILE: proxygen/lib/http/codec/FlowControlFilter.h
  function namespace (line 14) | namespace folly {
  function namespace (line 18) | namespace proxygen {

FILE: proxygen/lib/http/codec/HQControlCodec.cpp
  function drainingId (line 19) | uint64_t drainingId(proxygen::TransportDirection dir) {
  type proxygen::hq (line 29) | namespace proxygen::hq {
    function ParseResult (line 33) | ParseResult HQControlCodec::checkFrameAllowed(FrameType type) {
    function ParseResult (line 73) | ParseResult HQControlCodec::parseCancelPush(Cursor& cursor,
    function ParseResult (line 80) | ParseResult HQControlCodec::parseSettings(Cursor& cursor,
    function ParseResult (line 127) | ParseResult HQControlCodec::parseGoaway(Cursor& cursor,
    function ParseResult (line 137) | ParseResult HQControlCodec::parseMaxPushId(Cursor& cursor,
    function ParseResult (line 144) | ParseResult HQControlCodec::parsePriorityUpdate(Cursor& cursor,
    function ParseResult (line 157) | ParseResult HQControlCodec::parsePushPriorityUpdate(Cursor& cursor,

FILE: proxygen/lib/http/codec/HQControlCodec.h
  function onUnidirectionalIngressEOF (line 57) | void onUnidirectionalIngressEOF() override {
  function isWaitingToDrain (line 68) | bool isWaitingToDrain() const override;
  function onIngress (line 74) | size_t onIngress(const folly::IOBuf& /*buf*/) override {
  function onIngressEOF (line 79) | void onIngressEOF() override {
  function HTTPSettings (line 99) | const HTTPSettings* getIngressSettings() const override {
  function HTTPSettings (line 104) | HTTPSettings* getEgressSettings() override {
  function HTTPSettings (line 109) | const HTTPSettings* getEgressSettings() const {
  function enableDoubleGoawayDrain (line 114) | void enableDoubleGoawayDrain() override {
  function disableDoubleGoawayDrain (line 118) | void disableDoubleGoawayDrain() override {
  function minUnseenPushID_ (line 165) | uint64_t minUnseenPushID_{kMaxPushId + 1};

FILE: proxygen/lib/http/codec/HQFramedCodec.cpp
  type proxygen::hq (line 20) | namespace proxygen::hq {
    function ParseResult (line 25) | ParseResult HQFramedCodec::parseFrame(Cursor& cursor) {

FILE: proxygen/lib/http/codec/HQFramedCodec.h
  function CodecProtocol (line 40) | CodecProtocol getProtocol() const override {
  function setParserPaused (line 69) | void setParserPaused(bool paused) override {
  function setResumeHook (line 80) | void setResumeHook(folly::Function<void()> resumeHook) {
  function onIngressUpgradeMessage (line 101) | bool onIngressUpgradeMessage(const HTTPMessage& /*msg*/) override {
  function generateConnectionPreface (line 106) | size_t generateConnectionPreface(folly::IOBufQueue& /*writeBuf*/) overri...
  function generateHeader (line 112) | void generateHeader(folly::IOBufQueue& /*writeBuf*/,
  function generatePushPromise (line 123) | void generatePushPromise(folly::IOBufQueue& /*writeBuf*/,
  function generateBody (line 134) | size_t generateBody(folly::IOBufQueue& /* writeBuf*/,
  function generateChunkHeader (line 144) | size_t generateChunkHeader(folly::IOBufQueue& /*writeBuf*/,
  function generateChunkTerminator (line 152) | size_t generateChunkTerminator(folly::IOBufQueue& /*writeBuf*/,
  function generateTrailers (line 158) | size_t generateTrailers(folly::IOBufQueue& /*writeBuf*/,
  function generatePadding (line 165) | size_t generatePadding(folly::IOBufQueue& /*writeBuf*/,
  function generateEOM (line 173) | size_t generateEOM(folly::IOBufQueue& /*writeBuf*/,
  function generateRstStream (line 180) | size_t generateRstStream(folly::IOBufQueue& /*writeBuf*/,
  function generateGoaway (line 188) | size_t generateGoaway(
  function generatePingRequest (line 198) | size_t generatePingRequest(
  function generatePingReply (line 206) | size_t generatePingReply(folly::IOBufQueue& /*writeBuf*/,
  function generateSettings (line 213) | size_t generateSettings(folly::IOBufQueue& /*writeBuf*/) override {
  function generateSettingsAck (line 219) | size_t generateSettingsAck(folly::IOBufQueue& /*writeBuf*/) override {
  function generateWindowUpdate (line 225) | size_t generateWindowUpdate(folly::IOBufQueue& /*writeBuf*/,
  function HTTPSettings (line 233) | const HTTPSettings* getIngressSettings() const override {
  function HTTPSettings (line 239) | HTTPSettings* getEgressSettings() override {
  function setHeaderCodecStats (line 262) | void setHeaderCodecStats(HeaderCodec::Stats* /*hcStats*/) override {
  function isRequest (line 267) | bool isRequest(StreamID /*id*/) const {
  function CompressionInfo (line 274) | CompressionInfo getCompressionInfo() const override {
  function pendingDataFrameBytes_ (line 354) | size_t pendingDataFrameBytes_{0}
  function receivedFrameCount_ (line 357) | uint64_t receivedFrameCount_{0}
  function FrameState (line 360) | enum class FrameState : uint8_t {

FILE: proxygen/lib/http/codec/HQFramer.cpp
  type proxygen::hq (line 21) | namespace proxygen::hq {
    function isGreaseId (line 23) | bool isGreaseId(uint64_t id) {
    function getGreaseId (line 30) | folly::Optional<uint64_t> getGreaseId(uint64_t n) {
    function ParseResult (line 37) | ParseResult parseData(folly::io::Cursor& cursor,
    function ParseResult (line 45) | ParseResult parseHeaders(folly::io::Cursor& cursor,
    function ParseResult (line 54) | static ParseResult parseIdOnlyFrame(folly::io::Cursor& cursor,
    function ParseResult (line 73) | ParseResult parseCancelPush(folly::io::Cursor& cursor,
    function decodeSettingValue (line 79) | folly::Expected<folly::Optional<SettingValue>, HTTP3::ErrorCode>
    function ParseResult (line 110) | ParseResult parseSettings(folly::io::Cursor& cursor,
    function ParseResult (line 139) | ParseResult parsePushPromise(folly::io::Cursor& cursor,
    function ParseResult (line 158) | ParseResult parseGoaway(folly::io::Cursor& cursor,
    function ParseResult (line 164) | ParseResult parseMaxPushId(folly::io::Cursor& cursor,
    function ParseResult (line 170) | ParseResult parsePriorityUpdate(folly::io::Cursor& cursor,
    function WriteResult (line 197) | WriteResult writeFrameHeader(IOBufQueue& queue,
    function WriteResult (line 216) | WriteResult writeSimpleFrame(IOBufQueue& queue,
    function WriteResult (line 229) | WriteResult writeData(IOBufQueue& queue,
    function WriteResult (line 234) | WriteResult writePadding(IOBufQueue& queue,
    function WriteResult (line 239) | WriteResult writeHeaders(IOBufQueue& queue,
    function WriteResult (line 244) | WriteResult writeCancelPush(folly::IOBufQueue& writeBuf,
    function WriteResult (line 262) | WriteResult writeSettings(IOBufQueue& queue,
    function WriteResult (line 302) | WriteResult writePushPromise(IOBufQueue& queue,
    function WriteResult (line 327) | WriteResult writeGoaway(folly::IOBufQueue& writeBuf,
    function WriteResult (line 345) | WriteResult writeMaxPushId(folly::IOBufQueue& writeBuf,
    function WriteResult (line 363) | WriteResult writePriorityUpdate(folly::IOBufQueue& writeBuf,
    function WriteResult (line 384) | WriteResult writePushPriorityUpdate(
    function WriteResult (line 406) | WriteResult writeStreamPreface(folly::IOBufQueue& writeBuf,
    function WriteResult (line 460) | WriteResult writeGreaseFrame(folly::IOBufQueue& writeBuf) noexcept {
    function WriteResult (line 474) | WriteResult writeWTStreamPreface(folly::IOBufQueue& writeBuf,

FILE: proxygen/lib/http/codec/HQFramer.h
  type class (line 41) | enum class
  type class (line 50) | enum class
  type class (line 55) | enum class
  type FrameHeader (line 90) | struct FrameHeader {
  type class (line 95) | enum class
  function WebTransportStreamType (line 373) | enum class WebTransportStreamType : uint8_t { UNI = 0, BIDI = 1 };

FILE: proxygen/lib/http/codec/HQMultiCodec.h
  function namespace (line 15) | namespace proxygen::hq {
  function std (line 140) | const std::string& getUserAgent() const override {
  function onIngressEOF (line 152) | void onIngressEOF() override {
  function isParserPaused (line 161) | bool isParserPaused() const override {
  function generateConnectionPreface (line 171) | size_t generateConnectionPreface(folly::IOBufQueue& /*writeBuf*/) overri...
  function generateSettingsAck (line 175) | size_t generateSettingsAck(folly::IOBufQueue& /*writeBuf*/) override {
  function generateBody (line 202) | size_t generateBody(folly::IOBufQueue& writeBuf,
  function generateTrailers (line 211) | size_t generateTrailers(folly::IOBufQueue& writeBuf,
  function generatePadding (line 217) | size_t generatePadding(folly::IOBufQueue& writeBuf,
  function generateEOM (line 223) | size_t generateEOM(folly::IOBufQueue& writeBuf, StreamID stream) override {
  function setHeaderCodecStats (line 227) | void setHeaderCodecStats(HeaderCodec::Stats* hcStats) override {
  function getDefaultWindowSize (line 236) | uint32_t getDefaultWindowSize() const override {
  function nextPushID (line 244) | uint64_t nextPushID() {
  function onIngressPushId (line 249) | void onIngressPushId(uint64_t pushId) {
  function HTTPCodec (line 263) | const HTTPCodec& getCurrentCodec() const {
  function HQStreamCodec (line 273) | const HQStreamCodec& getCodec(StreamID stream) const {
  function nextPushID_ (line 294) | uint64_t nextPushID_{0}
  function strictValidation_ (line 295) | bool strictValidation_{true};

FILE: proxygen/lib/http/codec/HQStreamCodec.cpp
  type proxygen::hq (line 19) | namespace proxygen::hq {
    function ParseResult (line 43) | ParseResult HQStreamCodec::checkFrameAllowed(FrameType type) {
    function ParseResult (line 69) | ParseResult HQStreamCodec::parseData(Cursor& cursor,
    function ParseResult (line 91) | ParseResult HQStreamCodec::parseHeaders(Cursor& cursor,
    function ParseResult (line 137) | ParseResult HQStreamCodec::parsePushPromise(Cursor& cursor,
    function CompressionInfo (line 432) | CompressionInfo HQStreamCodec::getCompressionInfo() const {

FILE: proxygen/lib/http/codec/HQStreamCodec.h
  function namespace (line 19) | namespace proxygen {

FILE: proxygen/lib/http/codec/HQUnidirectionalCodec.cpp
  type proxygen::hq (line 11) | namespace proxygen::hq {

FILE: proxygen/lib/http/codec/HQUnidirectionalCodec.h
  function namespace (line 17) | namespace proxygen::hq {

FILE: proxygen/lib/http/codec/HQUtils.cpp
  type proxygen::hq (line 13) | namespace proxygen::hq {
    function hqToHttpErrorCode (line 29) | proxygen::ErrorCode hqToHttpErrorCode(HTTP3::ErrorCode err) {
    function ProxygenError (line 60) | ProxygenError toProxygenError(quic::QuicErrorCode error, bool fromPeer) {
    function httpToHqSettingsId (line 82) | folly::Optional<hq::SettingId> httpToHqSettingsId(proxygen::SettingsId...
    function hqToHttpSettingsId (line 109) | folly::Optional<proxygen::SettingsId> hqToHttpSettingsId(hq::SettingId...

FILE: proxygen/lib/http/codec/HQUtils.h
  function namespace (line 20) | namespace proxygen::hq {

FILE: proxygen/lib/http/codec/HTTP1xCodec.cpp
  function u64toa (line 40) | unsigned u64toa(uint64_t value, char* dst) {
  function appendUint (line 61) | void appendUint(IOBufQueue& queue, size_t& len, uint64_t value) {
  function appendString (line 72) | void appendString(IOBufQueue& queue, size_t& len, StringPiece str) {
  function validateContentLen (line 80) | bool validateContentLen(const HTTPHeaders& hdrs) noexcept {
  function validateTransferEncoding (line 95) | bool validateTransferEncoding(const HTTPHeaders& hdrs) noexcept {
  type proxygen (line 107) | namespace proxygen {
    function http_parser_settings (line 183) | const http_parser_settings* HTTP1xCodec::getParserSettings() {
    function HTTP1xCodec (line 1394) | HTTP1xCodec HTTP1xCodec::makeResponseCodec(bool mayChunkEgress) {

FILE: proxygen/lib/http/codec/HTTP1xCodec.h
  function namespace (line 18) | namespace proxygen {

FILE: proxygen/lib/http/codec/HTTP2Codec.cpp
  type proxygen (line 33) | namespace proxygen {
    function ErrorCode (line 155) | ErrorCode HTTP2Codec::parseFrame(folly::io::Cursor& cursor) {
    function ErrorCode (line 264) | ErrorCode HTTP2Codec::handleEndStream() {
    function ErrorCode (line 296) | ErrorCode HTTP2Codec::parseAllData(Cursor& cursor) {
    function ErrorCode (line 317) | ErrorCode HTTP2Codec::parseDataFrameData(Cursor& cursor,
    function ErrorCode (line 399) | ErrorCode HTTP2Codec::parseHeaders(Cursor& cursor) {
    function ErrorCode (line 414) | ErrorCode HTTP2Codec::parseContinuation(Cursor& cursor) {
    function ErrorCode (line 424) | ErrorCode HTTP2Codec::parseHeadersImpl(
    function ErrorCode (line 714) | ErrorCode HTTP2Codec::parseRFC9218Priority(Cursor& cursor) {
    function ErrorCode (line 730) | ErrorCode HTTP2Codec::parseRstStream(Cursor& cursor) {
    function ErrorCode (line 748) | ErrorCode HTTP2Codec::parseSettings(Cursor& cursor) {
    function ErrorCode (line 771) | ErrorCode HTTP2Codec::handleSettings(const std::deque<SettingPair>& se...
    function ErrorCode (line 861) | ErrorCode HTTP2Codec::parsePushPromise(Cursor& cursor) {
    function ErrorCode (line 898) | ErrorCode HTTP2Codec::parsePing(Cursor& cursor) {
    function ErrorCode (line 913) | ErrorCode HTTP2Codec::parseGoaway(Cursor& cursor) {
    function ErrorCode (line 941) | ErrorCode HTTP2Codec::parseWindowUpdate(Cursor& cursor) {
    function ErrorCode (line 974) | ErrorCode HTTP2Codec::parseCertificateRequest(Cursor& cursor) {
    function ErrorCode (line 988) | ErrorCode HTTP2Codec::parseCertificate(Cursor& cursor) {
    function ErrorCode (line 1016) | ErrorCode HTTP2Codec::checkNewStream(uint32_t streamId, bool trailersA...

FILE: proxygen/lib/http/codec/HTTP2Codec.h
  function CodecProtocol (line 38) | CodecProtocol getProtocol() const override {
  function HTTPSettings (line 111) | const HTTPSettings* getIngressSettings() const override {
  function HTTPSettings (line 114) | HTTPSettings* getEgressSettings() override {
  function getDefaultWindowSize (line 117) | uint32_t getDefaultWindowSize() const override {
  function setHeaderCodecStats (line 132) | void setHeaderCodecStats(HeaderCodec::Stats* hcStats) override {
  function isRequest (line 136) | bool isRequest(StreamID id) const {
  function setReuseIOBufHeadroomForData (line 159) | void setReuseIOBufHeadroomForData(bool enabled) {
  function setHeaderIndexingStrategy (line 163) | void setHeaderIndexingStrategy(const HeaderIndexingStrategy* indexingStr...
  function HeaderIndexingStrategy (line 166) | const HeaderIndexingStrategy* getHeaderIndexingStrategy() const {
  function setAddDateHeaderToResponse (line 170) | void setAddDateHeaderToResponse(bool addDateHeader) {
  function setValidateHeaders (line 174) | void setValidateHeaders(bool validate) {
  function setStrictValidation (line 178) | void setStrictValidation(bool strict) {
  function setDebugLevel (line 182) | void setDebugLevel(uint64_t debugLevel) {
  type DeferredParseError (line 229) | struct DeferredParseError {
  function curCertId_ (line 304) | uint16_t curCertId_{0}
  function receivedFrameCount_ (line 321) | uint64_t receivedFrameCount_{0}
  type class (line 323) | enum class
  function pendingDataFrameBytes_ (line 333) | size_t pendingDataFrameBytes_{0}
  function pendingDataFramePaddingBytes_ (line 334) | size_t pendingDataFramePaddingBytes_{0}
  function strictValidation_ (line 350) | bool strictValidation_{false};

FILE: proxygen/lib/http/codec/HTTP2Constants.cpp
  type proxygen::http2 (line 11) | namespace proxygen::http2 {

FILE: proxygen/lib/http/codec/HTTP2Constants.h
  function namespace (line 15) | namespace proxygen::http2 {

FILE: proxygen/lib/http/codec/HTTP2Framer.cpp
  type proxygen::http2 (line 17) | namespace proxygen::http2 {
    function writePadding (line 35) | void writePadding(IOBufQueue& queue, folly::Optional<uint8_t> size) {
    function computeLengthAndType (line 49) | size_t computeLengthAndType(uint32_t length,
    function writeFrameHeader (line 78) | size_t writeFrameHeader(IOBufQueue& queue,
    function writeFrameHeader (line 119) | size_t writeFrameHeader(uint8_t* buf,
    function parseUint31 (line 151) | uint32_t parseUint31(Cursor& cursor) {
    function ErrorCode (line 156) | ErrorCode parseErrorCode(Cursor& cursor, ErrorCode& outCode) {
    function skipPriority (line 165) | void skipPriority(Cursor& cursor) {
    function ErrorCode (line 181) | ErrorCode parsePadding(Cursor& cursor,
    function ErrorCode (line 206) | ErrorCode skipPadding(Cursor& cursor, uint8_t length, bool verify) {
    function isValidFrameType (line 225) | bool isValidFrameType(FrameType type) {
    function frameAffectsCompression (line 257) | bool frameAffectsCompression(FrameType t) {
    function frameHasPadding (line 262) | bool frameHasPadding(const FrameHeader& header) {
    function ErrorCode (line 268) | ErrorCode parseFrameHeader(Cursor& cursor, FrameHeader& header) noexce...
    function ErrorCode (line 282) | ErrorCode parseData(Cursor& cursor,
    function ErrorCode (line 302) | ErrorCode parseDataBegin(Cursor& cursor,
    function ErrorCode (line 316) | ErrorCode parseDataEnd(Cursor& cursor,
    function ErrorCode (line 324) | ErrorCode parseHeaders(Cursor& cursor,
    function ErrorCode (line 346) | ErrorCode parseRFC9218Priority(Cursor& cursor,
    function ErrorCode (line 364) | ErrorCode parseRstStream(Cursor& cursor,
    function ErrorCode (line 377) | ErrorCode parseSettings(Cursor& cursor,
    function ErrorCode (line 402) | ErrorCode parsePushPromise(Cursor& cursor,
    function ErrorCode (line 431) | ErrorCode parsePing(Cursor& cursor,
    function ErrorCode (line 447) | ErrorCode parseGoaway(Cursor& cursor,
    function ErrorCode (line 470) | ErrorCode parseWindowUpdate(Cursor& cursor,
    function ErrorCode (line 481) | ErrorCode parseContinuation(Cursor& cursor,
    function ErrorCode (line 493) | ErrorCode parseAltSvc(Cursor& cursor,
    function ErrorCode (line 525) | ErrorCode parseCertificateRequest(
    function ErrorCode (line 546) | ErrorCode parseCertificate(
    function writeData (line 569) | size_t writeData(IOBufQueue& queue,
    function writePadding (line 595) | size_t writePadding(IOBufQueue& queue,
    function calculatePreHeaderBlockSize (line 615) | uint8_t calculatePreHeaderBlockSize(bool hasAssocStream,
    function writeHeaders (line 629) | size_t writeHeaders(uint8_t* header,
    function writeRFC9218Priority (line 657) | size_t writeRFC9218Priority(IOBufQueue& queue,
    function writeRstStream (line 676) | size_t writeRstStream(IOBufQueue& queue,
    function writeSettings (line 692) | size_t writeSettings(IOBufQueue& queue,
    function writeSettingsAck (line 707) | size_t writeSettingsAck(IOBufQueue& queue) {
    function writePushPromise (line 712) | size_t writePushPromise(uint8_t* header,
    function writePing (line 743) | size_t writePing(IOBufQueue& queue, uint64_t opaqueData, bool ack) noe...
    function writeGoaway (line 755) | size_t writeGoaway(IOBufQueue& queue,
    function writeWindowUpdate (line 775) | size_t writeWindowUpdate(IOBufQueue& queue,
    function writeContinuation (line 792) | size_t writeContinuation(IOBufQueue& queue,
    function writeAltSvc (line 808) | size_t writeAltSvc(IOBufQueue& queue,
    function writeCertificateRequest (line 833) | size_t writeCertificateRequest(folly::IOBufQueue& writeBuf,
    function writeCertificate (line 853) | size_t writeCertificate(folly::IOBufQueue& writeBuf,

FILE: proxygen/lib/http/codec/HTTP2Framer.h
  function namespace (line 24) | namespace proxygen::http2 {

FILE: proxygen/lib/http/codec/HTTPBinaryCodec.cpp
  type proxygen (line 25) | namespace proxygen {
    function encodeInteger (line 28) | folly::Expected<size_t, quic::TransportErrorCode> encodeInteger(
    function encodeString (line 39) | void encodeString(folly::StringPiece str, folly::io::QueueAppender& ap...
    function ParseResult (line 59) | ParseResult HTTPBinaryCodec::parseFramingIndicator(folly::io::Cursor& ...
    function ParseResult (line 87) | ParseResult HTTPBinaryCodec::parseKnownLengthString(
    function ParseResult (line 121) | ParseResult HTTPBinaryCodec::parseRequestControlData(folly::io::Cursor...
    function ParseResult (line 187) | ParseResult HTTPBinaryCodec::parseResponseControlData(folly::io::Curso...
    function ParseResult (line 204) | ParseResult HTTPBinaryCodec::parseSingleHeaderHelper(
    function ParseResult (line 242) | ParseResult HTTPBinaryCodec::parseKnownLengthHeadersHelper(
    function ParseResult (line 278) | ParseResult HTTPBinaryCodec::parseIndeterminateLengthHeadersHelper(
    function ParseResult (line 310) | ParseResult HTTPBinaryCodec::parseHeaders(folly::io::Cursor& cursor,
    function ParseResult (line 320) | ParseResult HTTPBinaryCodec::parseContent(folly::io::Cursor& cursor,
    function ParseResult (line 327) | ParseResult HTTPBinaryCodec::parseSingleContentHelper(folly::io::Curso...
    function ParseResult (line 357) | ParseResult HTTPBinaryCodec::parseKnownLengthContentHelper(
    function ParseResult (line 367) | ParseResult HTTPBinaryCodec::parseIndeterminateLengthContentHelper(
    function ParseResult (line 404) | ParseResult HTTPBinaryCodec::parseTrailers(folly::io::Cursor& cursor,

FILE: proxygen/lib/http/codec/HTTPBinaryCodec.h
  type class (line 19) | enum class
  function class (line 26) | class ParseResult {
  function CodecProtocol (line 63) | CodecProtocol getProtocol() const override {
  function StreamID (line 74) | StreamID createStream() override {
  function setCallback (line 77) | void setCallback(Callback* callback) override {
  function setParserPaused (line 83) | void setParserPaused(bool paused) override {
  function onIngressEOF (line 90) | void onIngressEOF() override;
  type class (line 213) | enum class
  function FramingIndicator (line 227) | enum class FramingIndicator : uint8_t {

FILE: proxygen/lib/http/codec/HTTPChecks.cpp
  type proxygen (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/HTTPChecks.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/HTTPCodec.h
  function namespace (line 23) | namespace proxygen {
  function virtual (line 636) | virtual size_t generatePingRequest(
  function virtual (line 646) | virtual size_t generatePingReply(folly::IOBufQueue& /* writeBuf */,
  function virtual (line 655) | virtual size_t generateSettings(folly::IOBufQueue& /* writeBuf */) {
  function virtual (line 663) | virtual size_t generateSettingsAck(folly::IOBufQueue& /* writeBuf */) {
  function virtual (line 673) | virtual size_t generateWindowUpdate(folly::IOBufQueue& /* writeBuf */,
  function virtual (line 683) | virtual size_t generatePriority(folly::IOBufQueue& /* writeBuf */,
  function virtual (line 693) | virtual size_t generatePushPriority(folly::IOBufQueue& /* writeBuf */,
  function virtual (line 703) | virtual size_t generateCertificateRequest(
  function virtual (line 714) | virtual size_t generateCertificate(
  function virtual (line 725) | virtual HTTPSettings* getEgressSettings() {
  function virtual (line 729) | [[nodiscard]] virtual const HTTPSettings* getIngressSettings() const {
  function virtual (line 737) | virtual void enableDoubleGoawayDrain() {
  function virtual (line 740) | virtual void disableDoubleGoawayDrain() {
  function virtual (line 746) | virtual void setHeaderCodecStats(HeaderCodec::Stats* /* stats */) {
  function virtual (line 766) | [[nodiscard]] virtual int8_t mapDependencyToPriority(

FILE: proxygen/lib/http/codec/HTTPCodecFactory.cpp
  type proxygen (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/HTTPCodecFactory.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/codec/HTTPCodecFilter.cpp
  type proxygen (line 11) | namespace proxygen {
    function CompressionInfo (line 136) | CompressionInfo PassThroughHTTPCodecFilter::getCompressionInfo() const {
    function CodecProtocol (line 140) | CodecProtocol PassThroughHTTPCodecFilter::getProtocol() const {
    function TransportDirection (line 148) | TransportDirection PassThroughHTTPCodecFilter::getTransportDirection()...
    function HTTPSettings (line 344) | HTTPSettings* PassThroughHTTPCodecFilter::getEgressSettings() {
    function HTTPSettings (line 348) | const HTTPSettings* PassThroughHTTPCodecFilter::getIngressSettings() c...

FILE: proxygen/lib/http/codec/HTTPCodecFilter.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/HTTPCodecPrinter.cpp
  type proxygen (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/HTTPCodecPrinter.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/HTTPParallelCodec.cpp
  type proxygen (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/HTTPParallelCodec.h
  function namespace (line 19) | namespace folly::io {
  function TransportDirection (line 33) | [[nodiscard]] TransportDirection getTransportDirection() const override {
  function setCallback (line 53) | void setCallback(Callback* callback) override {
  function setParserPaused (line 56) | void setParserPaused(bool /* paused */) override {
  function onIngressEOF (line 61) | void onIngressEOF() override {
  function isReusable (line 63) | [[nodiscard]] bool isReusable() const override;
  function enableDoubleGoawayDrain (line 68) | void enableDoubleGoawayDrain() override;
  function isInitiatedStream (line 81) | [[nodiscard]] bool isInitiatedStream(StreamID stream) const {
  function isInitiatedStream (line 85) | static bool isInitiatedStream(TransportDirection direction, StreamID str...
  function isStreamIngressEgressAllowed (line 91) | [[nodiscard]] bool isStreamIngressEgressAllowed(StreamID stream) const {
  function StreamID (line 100) | StreamID lastStreamID_{0}
  function StreamID (line 102) | StreamID ingressGoawayAck_{std::numeric_limits<uint32_t>::max()};

FILE: proxygen/lib/http/codec/HTTPRequestVerifier.h
  function reset (line 21) | void reset(HTTPMessage* msg) {
  function setMethod (line 32) | bool setMethod(folly::StringPiece method) {
  function setPath (line 48) | bool setPath(folly::StringPiece path,
  function setScheme (line 75) | bool setScheme(folly::StringPiece scheme) {
  function setAuthority (line 98) | bool setAuthority(folly::StringPiece authority,
  function setUpgradeProtocol (line 120) | bool setUpgradeProtocol(folly::StringPiece protocol, bool strictValidati...
  function validate (line 136) | bool validate() {
  function setMessage (line 162) | void setMessage(HTTPMessage* msg) {
  function setHasMethod (line 166) | void setHasMethod(bool hasMethod) {
  function setHasPath (line 170) | void setHasPath(bool hasPath) {
  function setHasScheme (line 174) | void setHasScheme(bool hasScheme) {
  function setHasAuthority (line 178) | void setHasAuthority(bool hasAuthority) {
  function setHasUpgradeProtocol (line 186) | void setHasUpgradeProtocol(bool val) {
  function hasUpgradeProtocol (line 190) | bool hasUpgradeProtocol() {
  function hasValidationError (line 194) | bool hasValidationError() {
  function hasUpgradeProtocol_ (line 206) | bool hasUpgradeProtocol_{false};

FILE: proxygen/lib/http/codec/HTTPSettings.cpp
  type proxygen (line 13) | namespace proxygen {
    function HTTPSetting (line 32) | const HTTPSetting* HTTPSettings::getSetting(SettingsId id) const {
    function SettingsValue (line 41) | SettingsValue HTTPSettings::getSetting(SettingsId id,

FILE: proxygen/lib/http/codec/HTTPSettings.h
  function namespace (line 22) | namespace proxygen {

FILE: proxygen/lib/http/codec/HeaderDecodeInfo.cpp
  type proxygen (line 17) | namespace proxygen {

FILE: proxygen/lib/http/codec/HeaderDecodeInfo.h
  function strictValidation_ (line 68) | bool strictValidation_{false};

FILE: proxygen/lib/http/codec/HeadersRateLimitFilter.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/QPACKDecoderCodec.h
  function namespace (line 15) | namespace proxygen::hq {

FILE: proxygen/lib/http/codec/QPACKEncoderCodec.h
  function namespace (line 16) | namespace proxygen::hq {

FILE: proxygen/lib/http/codec/RateLimitFilter.cpp
  type proxygen (line 15) | namespace proxygen {

FILE: proxygen/lib/http/codec/RateLimitFilter.h
  function namespace (line 16) | namespace proxygen {
  function class (line 84) | class RateLimitFilter : public PassThroughHTTPCodecFilter {

FILE: proxygen/lib/http/codec/ResetsRateLimitFilter.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/SettingsId.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/TransportDirection.cpp
  type proxygen (line 13) | namespace proxygen {
    function getTransportDirectionString (line 15) | std::string_view getTransportDirectionString(TransportDirection dir) {
    function TransportDirection (line 26) | TransportDirection operator!(TransportDirection dir) {

FILE: proxygen/lib/http/codec/TransportDirection.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/CompressionInfo.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKCodec.cpp
  type proxygen (line 26) | namespace proxygen {
    type compress (line 28) | namespace compress {
      function prepareHeaders (line 29) | uint32_t prepareHeaders(const vector<Header>& headers,

FILE: proxygen/lib/http/codec/compress/HPACKCodec.h
  function namespace (line 20) | namespace folly::io {
  function namespace (line 24) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKConstants.h
  function namespace (line 14) | namespace proxygen::HPACK {

FILE: proxygen/lib/http/codec/compress/HPACKContext.cpp
  type proxygen (line 11) | namespace proxygen {
    function HPACKHeader (line 101) | const HPACKHeader& HPACKContext::getHeader(uint32_t index) {

FILE: proxygen/lib/http/codec/compress/HPACKContext.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKDecodeBuffer.cpp
  type proxygen (line 19) | namespace proxygen {
    function DecodeError (line 51) | DecodeError HPACKDecodeBuffer::decodeLiteral(folly::fbstring& literal) {
    function DecodeError (line 55) | DecodeError HPACKDecodeBuffer::decodeLiteral(uint8_t nbit,
    function DecodeError (line 104) | DecodeError HPACKDecodeBuffer::decodeInteger(uint64_t& integer) {
    function DecodeError (line 108) | DecodeError HPACKDecodeBuffer::decodeInteger(uint8_t nbit, uint64_t& i...
    type HPACK (line 147) | namespace HPACK {

FILE: proxygen/lib/http/codec/compress/HPACKDecodeBuffer.h
  function reset (line 35) | void reset(folly::io::Cursor& cursorVal) {
  function reset (line 39) | void reset(folly::io::Cursor& cursorVal, uint32_t totalBytes) {
  function maxLiteralSize_ (line 95) | uint32_t maxLiteralSize_{std::numeric_limits<uint32_t>::max()};

FILE: proxygen/lib/http/codec/compress/HPACKDecoder.cpp
  type proxygen (line 15) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKDecoder.h
  function namespace (line 19) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKDecoderBase.cpp
  type proxygen (line 12) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKDecoderBase.h
  function namespace (line 16) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKEncodeBuffer.cpp
  type proxygen (line 20) | namespace proxygen {
    function string (line 137) | string HPACKEncodeBuffer::toBin() {

FILE: proxygen/lib/http/codec/compress/HPACKEncodeBuffer.h
  function setHuffmanLimits (line 28) | void setHuffmanLimits(std::pair<uint32_t, uint32_t> limits) {
  function setWriteBuf (line 105) | void setWriteBuf(folly::IOBufQueue* writeBuf) {
  function huffMin_ (line 124) | uint32_t huffMin_{0}
  function huffMax_ (line 125) | uint32_t huffMax_{std::numeric_limits<uint32_t>::max()};

FILE: proxygen/lib/http/codec/compress/HPACKEncoder.cpp
  type proxygen (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKEncoder.h
  function namespace (line 16) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKEncoderBase.cpp
  type proxygen (line 11) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKEncoderBase.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKHeader.cpp
  type proxygen (line 11) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKHeader.h
  function namespace (line 18) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HPACKHeaderName.h
  function namespace (line 20) | namespace proxygen {
  function HTTPHeaderCode (line 111) | [[nodiscard]] HTTPHeaderCode getHeaderCode() const {
  function copyAddress (line 155) | void copyAddress(const HPACKHeaderName& headerName) {
  function moveAddress (line 166) | void moveAddress(HPACKHeaderName&& goner) {
  function resetAddress (line 173) | void resetAddress() {
  function namespace (line 206) | namespace std {

FILE: proxygen/lib/http/codec/compress/HPACKStreamingCallback.h
  function namespace (line 15) | namespace proxygen::HPACK {

FILE: proxygen/lib/http/codec/compress/Header.h
  function namespace (line 14) | namespace proxygen::compress {

FILE: proxygen/lib/http/codec/compress/HeaderCodec.h
  function namespace (line 17) | namespace folly {
  function namespace (line 22) | namespace folly::io {
  type HeaderDecodeResult (line 28) | struct HeaderDecodeResult {
  type class (line 37) | enum class
  function class (line 39) | class Stats {
  function setEncodeHeadroom (line 63) | void setEncodeHeadroom(uint32_t headroom) {
  function virtual (line 67) | virtual void setMaxUncompressed(uint64_t maxUncompressed) {
  function setStats (line 78) | void setStats(Stats* stats) {
  function encodeHeadroom_ (line 84) | uint32_t encodeHeadroom_{0}
  function maxUncompressed_ (line 85) | uint64_t maxUncompressed_{kMaxUncompressed};

FILE: proxygen/lib/http/codec/compress/HeaderIndexingStrategy.cpp
  type proxygen (line 11) | namespace proxygen {
    function HeaderIndexingStrategy (line 13) | const HeaderIndexingStrategy* HeaderIndexingStrategy::getDefaultInstan...

FILE: proxygen/lib/http/codec/compress/HeaderIndexingStrategy.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/HeaderPiece.h
  function namespace (line 17) | namespace proxygen::compress {

FILE: proxygen/lib/http/codec/compress/HeaderTable.cpp
  type proxygen (line 13) | namespace proxygen {
    function HPACKHeader (line 105) | const HPACKHeader& HeaderTable::getHeader(uint32_t index) const {

FILE: proxygen/lib/http/codec/compress/HeaderTable.h
  function namespace (line 18) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/Huffman.cpp
  type proxygen::huffman (line 18) | namespace proxygen::huffman {
    function HuffTree (line 271) | const HuffTree& huffTree() {

FILE: proxygen/lib/http/codec/compress/Huffman.h
  function namespace (line 17) | namespace proxygen::huffman {

FILE: proxygen/lib/http/codec/compress/Logging.cpp
  type proxygen (line 18) | namespace proxygen {
    function ostream (line 20) | ostream& operator<<(ostream& os, const std::list<uint32_t>* refset) {
    function string (line 37) | string printDelta(const vector<HPACKHeader>& v1,

FILE: proxygen/lib/http/codec/compress/Logging.h
  function namespace (line 16) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/NoPathIndexingStrategy.cpp
  type proxygen (line 11) | namespace proxygen {
    function NoPathIndexingStrategy (line 13) | const NoPathIndexingStrategy* NoPathIndexingStrategy::getInstance() {

FILE: proxygen/lib/http/codec/compress/NoPathIndexingStrategy.h
  function namespace (line 13) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/QPACKCodec.cpp
  type proxygen (line 22) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/QPACKCodec.h
  function namespace (line 20) | namespace folly::io {
  function namespace (line 24) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/QPACKContext.cpp
  type proxygen (line 13) | namespace proxygen {
    function HPACKHeader (line 19) | const HPACKHeader& QPACKContext::getHeader(bool isStatic,

FILE: proxygen/lib/http/codec/compress/QPACKContext.h
  function namespace (line 15) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/QPACKDecoder.cpp
  type proxygen (line 19) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/QPACKDecoder.h
  function namespace (line 20) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/QPACKEncoder.cpp
  type proxygen (line 15) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/QPACKEncoder.h
  type EncodeResult (line 39) | struct EncodeResult {
  function setMaxVulnerable (line 86) | void setMaxVulnerable(uint32_t maxVulnerable) {
  function setMinFreeForTesting (line 92) | void setMinFreeForTesting(uint32_t minFree) {
  function dynamicReferenceAllowed (line 118) | bool dynamicReferenceAllowed() const;
  type OutstandingBlock (line 175) | struct OutstandingBlock {
  function maxInUseIndex (line 177) | uint32_t maxInUseIndex{0}
  function vulnerable (line 178) | bool vulnerable{false};
  function maxDepends_ (line 185) | uint32_t maxDepends_{0}
  function numVulnerable_ (line 187) | uint32_t numVulnerable_{0}
  function maxTableSize_ (line 188) | uint32_t maxTableSize_{0}
  function maxEncoderStreamBytes_ (line 189) | int64_t maxEncoderStreamBytes_{0}
  function numOutstandingBlocks_ (line 191) | uint32_t numOutstandingBlocks_{0}
  function maxNumOutstandingBlocks_ (line 192) | uint32_t maxNumOutstandingBlocks_{kDefaultMaxOutstandingListSize};

FILE: proxygen/lib/http/codec/compress/QPACKHeaderTable.cpp
  function getMinFree (line 25) | uint32_t getMinFree(uint32_t tableSize) {
  type proxygen (line 32) | namespace proxygen {
    function HPACKHeader (line 127) | const HPACKHeader& QPACKHeaderTable::getHeader(uint32_t index,

FILE: proxygen/lib/http/codec/compress/QPACKHeaderTable.h
  function namespace (line 18) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/QPACKStaticHeaderTable.cpp
  type proxygen (line 128) | namespace proxygen {
    function StaticHeaderTable (line 146) | const StaticHeaderTable& QPACKStaticHeaderTable::get() {

FILE: proxygen/lib/http/codec/compress/QPACKStaticHeaderTable.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/StaticHeaderTable.cpp
  type proxygen (line 88) | namespace proxygen {
    function StaticHeaderTable (line 122) | const StaticHeaderTable& StaticHeaderTable::get() {

FILE: proxygen/lib/http/codec/compress/StaticHeaderTable.h
  function namespace (line 14) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/experimental/interop/QPACKInterop.cpp
  function writeFrame (line 36) | void writeFrame(folly::io::QueueAppender& appender,
  function encodeBlocks (line 45) | void encodeBlocks(QPACKCodec& decoder,
  function encodeHar (line 99) | void encodeHar(QPACKCodec& decoder, const proxygen::HTTPArchive& har) {
  class Reader (line 109) | class Reader {
    method Reader (line 113) | explicit Reader(const std::string& fname) : filename(fname) {
    method read (line 117) | virtual ssize_t read() {
  class CompressedReader (line 142) | class CompressedReader : public Reader {
    method CompressedReader (line 150) | explicit CompressedReader(
    method onIngress (line 155) | void onIngress(folly::IOBufQueue& inbuf) override {
  function decodeAndVerify (line 179) | int decodeAndVerify(QPACKCodec& decoder, const proxygen::HTTPArchive& ha...
  class QIFCallback (line 216) | class QIFCallback : public HPACK::StreamingCallback {
    method QIFCallback (line 218) | QIFCallback(uint64_t id_, std::ofstream& of_) : id(id_), of(of_) {
    method onHeader (line 221) | void onHeader(const HPACKHeaderName& name,
    method onHeadersComplete (line 229) | void onHeadersComplete(HTTPHeaderSize /*decodedSize*/,
    method onDecodeError (line 234) | void onDecodeError(HPACK::DecodeError decodeError) override {
  function decodeToQIF (line 244) | int decodeToQIF(QPACKCodec& decoder) {
  function interopHAR (line 275) | int interopHAR(QPACKCodec& decoder) {
  type QIFReader (line 294) | struct QIFReader : public Reader {
    method QIFReader (line 301) | QIFReader() : Reader(FLAGS_input) {
    method read (line 305) | ssize_t read() override {
    method iseol (line 315) | static bool iseol(uint8_t ch) {
    method onIngress (line 319) | void onIngress(folly::IOBufQueue& input) override {
  function interopQIF (line 385) | int interopQIF(QPACKCodec& decoder) {
  function main (line 405) | int main(int argc, char** argv) {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/CompressionScheme.h
  function namespace (line 15) | namespace proxygen::compress {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/CompressionSimulator.cpp
  type proxygen::compress (line 33) | namespace proxygen::compress {
    function CompressionScheme (line 251) | CompressionScheme* CompressionSimulator::getScheme(StringPiece domain) {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/CompressionSimulator.h
  function namespace (line 20) | namespace proxygen::compress {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/CompressionTypes.h
  function namespace (line 13) | namespace proxygen::compress {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/CompressionUtils.cpp
  function combineCookieCrumbsSorted (line 21) | std::string combineCookieCrumbsSorted(std::vector<std::string> crumbs) {
  function containsAllHeaders (line 28) | bool containsAllHeaders(const HTTPHeaders& h1, const HTTPHeaders& h2) {
  type proxygen (line 79) | namespace proxygen {
    type compress (line 81) | namespace compress {
      function prepareMessageForCompression (line 83) | std::vector<compress::Header> prepareMessageForCompression(

FILE: proxygen/lib/http/codec/compress/experimental/simulator/CompressionUtils.h
  function namespace (line 17) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/HPACKQueue.h
  function namespace (line 18) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/HPACKQueueTests.cpp
  function bufLen (line 21) | uint64_t bufLen(const std::unique_ptr<IOBuf>& buf) {
  class HPACKQueueTests (line 30) | class HPACKQueueTests : public testing::TestWithParam<int> {
    method HPACKQueueTests (line 32) | HPACKQueueTests() : queue(std::make_unique<HPACKQueue>(server)) {
  function TEST_F (line 41) | TEST_F(HPACKQueueTests, QueueInline) {
  function TEST_F (line 56) | TEST_F(HPACKQueueTests, QueueReorder) {
  function TEST_F (line 80) | TEST_F(HPACKQueueTests, QueueReorderOoo) {
  function TEST_F (line 105) | TEST_F(HPACKQueueTests, QueueError) {
  function TEST_P (line 128) | TEST_P(HPACKQueueTests, QueueDeleted) {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/HPACKScheme.h
  function recvAck (line 41) | void recvAck(std::unique_ptr<Ack> /*ack*/) override {
  function FrameFlags (line 55) | FrameFlags flags{allowOOO_};
  function decode (line 59) | void decode(FrameFlags flags,
  function HPACKQueue (line 84) | HPACKQueue serverQueue_{server_};

FILE: proxygen/lib/http/codec/compress/experimental/simulator/Main.cpp
  function main (line 36) | int main(int argc, char* argv[]) {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/QMINScheme.h
  type qmin_index_type (line 25) | enum qmin_index_type {
  type qmin_encode_status (line 34) | enum qmin_encode_status {
  type qmin_ctl_out (line 39) | struct qmin_ctl_out {
  type qmin_enc (line 43) | struct qmin_enc
  type qmin_enc (line 44) | struct qmin_enc
  type qmin_ctl_out (line 46) | struct qmin_ctl_out
  function qmin_enc_cmds_in (line 50) | static ssize_t qmin_enc_cmds_in(struct qmin_enc * /*enc*/,
  function qmin_enc_encode (line 55) | static enum qmin_encode_status qmin_enc_encode(struct qmin_enc * /*enc*/,
  function qmin_enc_end_stream_headers (line 67) | static int qmin_enc_end_stream_headers(struct qmin_enc * /*enc*/) {
  type qmin_enc (line 70) | struct qmin_enc
  function qmin_enc_destroy (line 73) | static void qmin_enc_destroy(struct qmin_enc * /*enc*/) {
  type qmin_dec (line 75) | struct qmin_dec
  type qmin_dec (line 76) | struct qmin_dec
  type qmin_ctl_out (line 78) | struct qmin_ctl_out
  function qmin_dec_cmds_in (line 82) | static ssize_t qmin_dec_cmds_in(struct qmin_dec * /*dec*/,
  function qmin_dec_decode (line 87) | static ssize_t qmin_dec_decode(struct qmin_dec * /*dec*/,
  function qmin_dec_stream_done (line 96) | static int qmin_dec_stream_done(struct qmin_dec * /*dec*/,
  function qmin_dec_destroy (line 100) | static void qmin_dec_destroy(struct qmin_dec * /*dec*/) {
  type stream_chunk (line 109) | struct stream_chunk {
  type stream (line 116) | struct stream {
  function namespace (line 121) | namespace proxygen::compress {
  type stream_chunk (line 365) | struct stream_chunk
  function runLoopCallback (line 422) | void runLoopCallback() noexcept override {
  function write_ctl_msg (line 426) | void write_ctl_msg(const void *buf, size_t sz, unsigned idx) {
  function write_enc2dec (line 439) | static void write_enc2dec(void *ctx, const void *buf, size_t sz) {
  function write_dec2enc (line 444) | static void write_dec2enc(void *ctx, const void *buf, size_t sz) {
  type qmin_enc (line 451) | struct qmin_enc
  type qmin_dec (line 452) | struct qmin_dec
  type stream (line 460) | struct stream
  type qmin_ctl_out (line 463) | struct qmin_ctl_out

FILE: proxygen/lib/http/codec/compress/experimental/simulator/QPACKScheme.h
  function namespace (line 15) | namespace proxygen::compress {

FILE: proxygen/lib/http/codec/compress/experimental/simulator/SimStreamingCallback.h
  function namespace (line 17) | namespace proxygen::compress {
  function maybeMarkHolDelay (line 87) | void maybeMarkHolDelay() {
  function requestIndex (line 94) | uint16_t requestIndex{0}
  function seqn (line 96) | uint16_t seqn{0}
  function isPublic (line 102) | bool isPublic{false};

FILE: proxygen/lib/http/codec/compress/test/EncoderBenchmark.cpp
  function HTTPHeaders (line 18) | const HTTPHeaders& getHeaders() {
  function encoderBenchmark (line 40) | void encoderBenchmark(uint32_t iters, bool huffman, uint32_t tableSize) {
  function BENCHMARK (line 76) | BENCHMARK(EncoderHuffman4096, iters) {
  function BENCHMARK (line 80) | BENCHMARK(EncoderNoHuffman4096, iters) {
  function BENCHMARK (line 84) | BENCHMARK(EncoderHuffman0, iters) {
  function BENCHMARK (line 88) | BENCHMARK(EncoderNoHuffman0, iters) {
  function main (line 92) | int main(int argc, char** argv) {

FILE: proxygen/lib/http/codec/compress/test/HPACKBenchmark.cpp
  function encode (line 21) | unique_ptr<IOBuf> encode(vector<HPACKHeader>& headers, HPACKEncoder& enc...
  function encodeDecode (line 25) | void encodeDecode(vector<HPACKHeader>& headers,
  function getHeaders (line 36) | vector<HPACKHeader> getHeaders() {
  function encodeBench (line 59) | void encodeBench(int reencodes, int iters) {
  function encodeDecodeBench (line 69) | void encodeDecodeBench(int reencodes, int iters) {
  function BENCHMARK (line 80) | BENCHMARK(Encode, iters) {
  function BENCHMARK (line 84) | BENCHMARK(Encode1, iters) {
  function BENCHMARK (line 88) | BENCHMARK(Encode2, iters) {
  function BENCHMARK (line 92) | BENCHMARK(EncodeDecode, iters) {
  function BENCHMARK (line 96) | BENCHMARK(EncodeDecode1, iters) {
  function BENCHMARK (line 100) | BENCHMARK(EncodeDecode2, iters) {
  function main (line 104) | int main(int argc, char** argv) {

FILE: proxygen/lib/http/codec/compress/test/HPACKBufferTests.cpp
  class HPACKBufferTests (line 26) | class HPACKBufferTests : public testing::Test {
    method HPACKBufferTests (line 32) | HPACKBufferTests() : encoder_(512), decoder_(cursor_, 0, kMaxLiteralSi...
    method releaseData (line 37) | void releaseData() {
    method releaseData (line 41) | void releaseData(HPACKEncodeBuffer& encoder) {
    method resetDecoder (line 48) | void resetDecoder() {
    method resetDecoder (line 52) | void resetDecoder(IOBuf* buf) {
  function TEST_F (line 64) | TEST_F(HPACKBufferTests, EncodeInteger) {
  function TEST_F (line 94) | TEST_F(HPACKBufferTests, EncodePlainLiteral) {
  function TEST_F (line 105) | TEST_F(HPACKBufferTests, EncodePlainLiteralN) {
  function TEST_F (line 117) | TEST_F(HPACKBufferTests, EncodeHuffmanLiteral) {
  function TEST_F (line 128) | TEST_F(HPACKBufferTests, EncodeHuffmanLiteralN) {
  function TEST_F (line 139) | TEST_F(HPACKBufferTests, DecodeSingleByte) {
  function TEST_F (line 167) | TEST_F(HPACKBufferTests, DecodeMultiByte) {
  function TEST_F (line 205) | TEST_F(HPACKBufferTests, DecodeIntegerError) {
  function TEST_F (line 221) | TEST_F(HPACKBufferTests, DecodeLiteralError) {
  function TEST_F (line 241) | TEST_F(HPACKBufferTests, DecodeLiteralMultiBuffer) {
  function TEST_F (line 271) | TEST_F(HPACKBufferTests, DecodeHuffmanLiteralMultiBuffer) {
  function TEST_F (line 308) | TEST_F(HPACKBufferTests, DecodeHuffmanLiteralN) {
  function TEST_F (line 327) | TEST_F(HPACKBufferTests, DecodePlainLiteral) {
  function TEST_F (line 342) | TEST_F(HPACKBufferTests, DecodePlainLiteralN) {
  function TEST_F (line 357) | TEST_F(HPACKBufferTests, IntegerEncodeDecode) {
  function TEST_F (line 383) | TEST_F(HPACKBufferTests, IntegerOverflow) {
  function TEST_F (line 425) | TEST_F(HPACKBufferTests, IntegerMax) {
  function TEST_F (line 444) | TEST_F(HPACKBufferTests, EmptyIobufLiteral) {
  function TEST_F (line 467) | TEST_F(HPACKBufferTests, LargeLiteralError) {

FILE: proxygen/lib/http/codec/compress/test/HPACKCodecTests.cpp
  function isLowercase (line 28) | bool isLowercase(StringPiece str) {
  type DecodeResult (line 39) | struct DecodeResult {
  function decode (line 44) | folly::Expected<DecodeResult, HPACK::DecodeError> decode(
  function encodeDecode (line 56) | folly::Expected<DecodeResult, HPACK::DecodeError> encodeDecode(
  class HPACKCodecTests (line 65) | class HPACKCodecTests : public testing::Test {
  function TEST_F (line 71) | TEST_F(HPACKCodecTests, Request) {
  function TEST_F (line 79) | TEST_F(HPACKCodecTests, Response) {
  function TEST_F (line 92) | TEST_F(HPACKCodecTests, Headroom) {
  function TEST_F (line 108) | TEST_F(HPACKCodecTests, LowercasingHeaderNames) {
  function TEST_F (line 125) | TEST_F(HPACKCodecTests, MultivalueHeaders) {
  function TEST_F (line 146) | TEST_F(HPACKCodecTests, DecodeError) {
  function TEST_F (line 167) | TEST_F(HPACKCodecTests, HeaderCodecStats) {
  function TEST_F (line 209) | TEST_F(HPACKCodecTests, UncompressedSizeLimit) {
  function TEST_F (line 226) | TEST_F(HPACKCodecTests, SizeLimitStats) {
  function TEST_F (line 248) | TEST_F(HPACKCodecTests, DefaultHeaderIndexingStrategy) {
  class TestIndexingStrat (line 276) | class TestIndexingStrat : public HeaderIndexingStrategy {
    method indexHeader (line 278) | [[nodiscard]] bool indexHeader(const HPACKHeaderName&,
    method getHuffmanLimits (line 284) | [[nodiscard]] std::pair<uint32_t, uint32_t> getHuffmanLimits()
  function TEST_F (line 292) | TEST_F(HPACKCodecTests, CustomHeaderIndexingStrategy) {

FILE: proxygen/lib/http/codec/compress/test/HPACKContextTests.cpp
  class HPACKContextTests (line 25) | class HPACKContextTests : public testing::TestWithParam<bool> {}
  class TestContext (line 27) | class TestContext : public HPACKContext {
    method TestContext (line 30) | explicit TestContext(uint32_t tableSize) : HPACKContext(tableSize) {
    method add (line 33) | void add(const HPACKHeader& header) {
  function TEST_F (line 38) | TEST_F(HPACKContextTests, GetIndex) {
  function TEST_F (line 46) | TEST_F(HPACKContextTests, IsStatic) {
  function TEST_F (line 63) | TEST_F(HPACKContextTests, StaticTable) {
  function TEST_F (line 76) | TEST_F(HPACKContextTests, StaticTableHeaderNamesAreCommon) {
  function TEST_F (line 94) | TEST_F(HPACKContextTests,
  function TEST_F (line 105) | TEST_F(HPACKContextTests, StaticIndex) {
  function TEST_F (line 117) | TEST_F(HPACKContextTests, EncoderMultipleValues) {
  function TEST_F (line 133) | TEST_F(HPACKContextTests, DecoderLargeHeader) {
  function TEST_F (line 149) | TEST_F(HPACKContextTests, DecoderLargeHeaderClear) {
  function TEST_F (line 171) | TEST_F(HPACKContextTests, DecoderInvalidPeek) {
  function TEST_F (line 192) | TEST_F(HPACKContextTests, DecoderInvalidLiteralPeek) {
  function checkError (line 212) | void checkError(const IOBuf* buf, const HPACK::DecodeError err) {
  function TEST_F (line 219) | TEST_F(HPACKContextTests, DecodeErrors) {
  function TEST_F (line 280) | TEST_F(HPACKContextTests, ExcludeHeadersLargerThanTable) {
  function TEST_F (line 299) | TEST_F(HPACKContextTests, EncodeToWriteBuf) {
  function TEST_P (line 309) | TEST_P(HPACKContextTests, ContextUpdate) {

FILE: proxygen/lib/http/codec/compress/test/HPACKHeaderTests.cpp
  class HPACKHeaderTests (line 20) | class HPACKHeaderTests : public testing::Test {}
  function TEST_F (line 22) | TEST_F(HPACKHeaderTests, Size) {
  function TEST_F (line 27) | TEST_F(HPACKHeaderTests, Operators) {
  function TEST_F (line 49) | TEST_F(HPACKHeaderTests, HasValue) {
  function TEST_F (line 56) | TEST_F(HPACKHeaderTests, HeaderIndexingStrategyBasic) {
  class HPACKHeaderNameTest (line 68) | class HPACKHeaderNameTest : public testing::Test {}
  function HPACKHeaderName (line 70) | HPACKHeaderName destroyedHPACKHeaderName(std::string name) {
  function TEST_F (line 76) | TEST_F(HPACKHeaderNameTest, TestConstructor) {
  function TEST_F (line 88) | TEST_F(HPACKHeaderNameTest, TestCopyConstructor) {
  function TEST_F (line 103) | TEST_F(HPACKHeaderNameTest, TestMoveConstructor) {
  function TEST_F (line 114) | TEST_F(HPACKHeaderNameTest, TestAssignmentOperators) {
  function TEST_F (line 151) | TEST_F(HPACKHeaderNameTest, TestGetSize) {
  function TEST_F (line 159) | TEST_F(HPACKHeaderNameTest, TestOperators) {
  function TEST_F (line 175) | TEST_F(HPACKHeaderNameTest, TestIsCommonHeader) {

FILE: proxygen/lib/http/codec/compress/test/HTTPArchive.cpp
  function parseHTTPArchiveTime (line 28) | folly::Optional<std::chrono::steady_clock::time_point> parseHTTPArchiveT...
  function extractMessage (line 62) | proxygen::HTTPMessage extractMessage(folly::dynamic& obj,
  function extractMessageFromPublic (line 102) | proxygen::HTTPMessage extractMessageFromPublic(folly::dynamic& obj) {
  type proxygen (line 118) | namespace proxygen {
    function readFileToIOBuf (line 120) | std::unique_ptr<IOBuf> readFileToIOBuf(const std::string& filename) {

FILE: proxygen/lib/http/codec/compress/test/HTTPArchive.h
  function namespace (line 19) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/test/HeaderPieceTests.cpp
  class HeaderPieceTests (line 15) | class HeaderPieceTests : public testing::Test {}
  function TEST_F (line 17) | TEST_F(HeaderPieceTests, Basic) {

FILE: proxygen/lib/http/codec/compress/test/HeaderTableTests.cpp
  type proxygen (line 18) | namespace proxygen {
    class HeaderTableTests (line 20) | class HeaderTableTests : public testing::Test {
      method xcheck (line 22) | void xcheck(uint32_t internal, uint32_t external) {
      method resizeTable (line 27) | void resizeTable(HeaderTable& table, uint32_t newCapacity, uint32_t ...
      method resizeAndFillTable (line 34) | void resizeAndFillTable(HeaderTable& table,
    function TEST_F (line 53) | TEST_F(HeaderTableTests, IndexTranslation) {
    function TEST_F (line 68) | TEST_F(HeaderTableTests, Add) {
    function TEST_F (line 81) | TEST_F(HeaderTableTests, Evict) {
    function TEST_F (line 120) | TEST_F(HeaderTableTests, ReduceCapacity) {
    function TEST_F (line 137) | TEST_F(HeaderTableTests, Comparison) {
    function TEST_F (line 157) | TEST_F(HeaderTableTests, Print) {
    function TEST_F (line 165) | TEST_F(HeaderTableTests, IncreaseCapacity) {
    function TEST_F (line 189) | TEST_F(HeaderTableTests, VaryCapacity) {
    function TEST_F (line 214) | TEST_F(HeaderTableTests, VaryCapacityMalignHeadIndex) {
    function TEST_F (line 264) | TEST_F(HeaderTableTests, AddLargerThanTable) {
    function TEST_F (line 294) | TEST_F(HeaderTableTests, IncreaseLengthOfFullTable) {
    function TEST_F (line 323) | TEST_F(HeaderTableTests, SmallTable) {
    function TEST_F (line 332) | TEST_F(HeaderTableTests, TinyTable) {

FILE: proxygen/lib/http/codec/compress/test/HuffmanTests.cpp
  class HuffmanTests (line 23) | class HuffmanTests : public testing::Test {
  function TEST_F (line 28) | TEST_F(HuffmanTests, Codes) {
  function TEST_F (line 44) | TEST_F(HuffmanTests, Size) {
  function TEST_F (line 55) | TEST_F(HuffmanTests, Encode) {
  function TEST_F (line 79) | TEST_F(HuffmanTests, Decode) {
  function TEST_F (line 107) | TEST_F(HuffmanTests, NonPrintableDecode) {
  function TEST_F (line 126) | TEST_F(HuffmanTests, ExampleCom) {
  function TEST_F (line 143) | TEST_F(HuffmanTests, UserAgent) {
  function TEST_F (line 168) | TEST_F(HuffmanTests, FitInBuffer) {
  function treeDfs (line 197) | uint32_t treeDfs(const SuperHuffNode* allSnodes,
  class TestingHuffTree (line 260) | class TestingHuffTree : public HuffTree {
    method TestingHuffTree (line 262) | explicit TestingHuffTree(const HuffTree& tree) : HuffTree(tree) {
    method SuperHuffNode (line 265) | const SuperHuffNode* getInternalTable() {
    method TestingHuffTree (line 269) | static TestingHuffTree getHuffTree() {
  function TEST_F (line 275) | TEST_F(HuffmanTests, SanityChecks) {

FILE: proxygen/lib/http/codec/compress/test/LoggingTests.cpp
  class LoggingTests (line 20) | class LoggingTests : public testing::Test {}
  function TEST_F (line 22) | TEST_F(LoggingTests, Refset) {
  function TEST_F (line 31) | TEST_F(LoggingTests, DumpHeaderVector) {
  function TEST_F (line 40) | TEST_F(LoggingTests, PrintDelta) {
  function TEST_F (line 66) | TEST_F(LoggingTests, DumpBin) {

FILE: proxygen/lib/http/codec/compress/test/QPACKCodecTests.cpp
  function headersEq (line 28) | void headersEq(vector<Header>& headerVec, compress::HeaderPieceList& hea...
  class QPACKTests (line 41) | class QPACKTests : public testing::Test {
    method SetUp (line 43) | void SetUp() override {
    method controlAck (line 50) | void controlAck() {
    method headerAck (line 56) | void headerAck(uint64_t streamId) {
  function TEST_F (line 66) | TEST_F(QPACKTests, TestEncoderTableSize) {
  function TEST_F (line 75) | TEST_F(QPACKTests, TestSimple) {
  function TEST_F (line 93) | TEST_F(QPACKTests, TestAbsoluteIndex) {
  function TEST_F (line 124) | TEST_F(QPACKTests, TestWithQueue) {
  function TEST_F (line 192) | TEST_F(QPACKTests, HeaderCodecStats) {

FILE: proxygen/lib/http/codec/compress/test/QPACKContextTests.cpp
  function verifyDecode (line 24) | std::shared_ptr<bool> verifyDecode(
  function stringInOutput (line 57) | bool stringInOutput(IOBuf* stream, const std::string& expected) {
  function headerAck (line 63) | HPACK::DecodeError headerAck(QPACKDecoder& decoder,
  function cancelStream (line 69) | HPACK::DecodeError cancelStream(QPACKDecoder& decoder,
  function toFixedLengthString (line 75) | std::string toFixedLengthString(uint32_t i) {
  function TEST (line 81) | TEST(QPACKContextTests, StaticOnly) {
  function TEST (line 101) | TEST(QPACKContextTests, StaticNameIndex) {
  function TEST (line 131) | TEST(QPACKContextTests, Indexed) {
  function TEST (line 144) | TEST(QPACKContextTests, NameIndexed) {
  function TEST (line 159) | TEST(QPACKContextTests, NameIndexedInsert) {
  function TEST (line 175) | TEST(QPACKContextTests, PostBaseNameIndexedLiteral) {
  function TEST (line 195) | TEST(QPACKContextTests, TestOutstandingListTooLong) {
  function TEST (line 248) | TEST(QPACKContextTests, TestOutstandingListAckingAll) {
  function TEST (line 291) | TEST(QPACKContextTests, Unacknowledged) {
  function TEST (line 310) | TEST(QPACKContextTests, TestDraining) {
  function TEST (line 326) | TEST(QPACKContextTests, TestDuplicate) {
  function TEST (line 347) | TEST(QPACKContextTests, TestTableSizeUpdate) {
  function TEST (line 371) | TEST(QPACKContextTests, TestTableSizeUpdateMax) {
  function TEST (line 387) | TEST(QPACKContextTests, TestEncoderFlowControl) {
  function TEST (line 434) | TEST(QPACKContextTests, TestAcks) {
  function TEST (line 487) | TEST(QPACKContextTests, TestEncodeBlocksSelfEviction) {
  function TEST (line 508) | TEST(QPACKContextTests, TestImplicitAcks) {
  function TEST (line 538) | TEST(QPACKContextTests, TestDecodeQueue) {
  function TEST (line 553) | TEST(QPACKContextTests, TestDecodeQueueDelete) {
  function TEST (line 592) | TEST(QPACKContextTests, TestDecodeQueueResetSelf) {
  function TEST (line 612) | TEST(QPACKContextTests, TestEncoderStreamEndBlocked) {
  function TEST (line 630) | TEST(QPACKContextTests, TestEncoderStreamEndUnderflow) {
  function TEST (line 649) | TEST(QPACKContextTests, TestDecodeMaxUncompressed) {
  function TEST (line 661) | TEST(QPACKContextTests, TestDecoderStreamChunked) {
  function TEST (line 685) | TEST(QPACKContextTests, TestEncoderStreamReorder) {
  function TEST (line 714) | TEST(QPACKContextTests, TestEncoderTableLimit) {
  function TEST (line 722) | TEST(QPACKContextTests, TestDecodePartialControl) {
  function TEST (line 741) | TEST(QPACKContextTests, WrapRICBehind) {
  function TEST (line 788) | TEST(QPACKContextTests, WrapRICAhead) {
  function checkQError (line 851) | void checkQError(QPACKDecoder& decoder,
  function TEST (line 861) | TEST(QPACKContextTests, DecodeErrors) {
  function TEST (line 1013) | TEST(QPACKContextTests, TestEvictedNameReference) {
  function TEST (line 1037) | TEST(QPACKContextTests, TestFragmentTableSizeUpdate) {

FILE: proxygen/lib/http/codec/compress/test/QPACKHeaderTableTests.cpp
  type proxygen (line 15) | namespace proxygen {
    class QPACKHeaderTableTests (line 17) | class QPACKHeaderTableTests : public testing::Test {
    function TEST_F (line 23) | TEST_F(QPACKHeaderTableTests, Indexing) {
    function TEST_F (line 43) | TEST_F(QPACKHeaderTableTests, Eviction) {
    function TEST_F (line 62) | TEST_F(QPACKHeaderTableTests, BadEviction) {
    function TEST_F (line 87) | TEST_F(QPACKHeaderTableTests, Wrapcount) {
    function TEST_F (line 108) | TEST_F(QPACKHeaderTableTests, NameIndex) {
    function TEST_F (line 115) | TEST_F(QPACKHeaderTableTests, GetIndex) {
    function TEST_F (line 124) | TEST_F(QPACKHeaderTableTests, Duplication) {
    function TEST_F (line 173) | TEST_F(QPACKHeaderTableTests, CanEvictWithRoom) {
    function TEST_F (line 187) | TEST_F(QPACKHeaderTableTests, EvictNonDrained) {
    function TEST_F (line 215) | TEST_F(QPACKHeaderTableTests, BadSync) {
    function TEST_F (line 220) | TEST_F(QPACKHeaderTableTests, TinyTable) {

FILE: proxygen/lib/http/codec/compress/test/RFCExamplesTests.cpp
  class RFCRequestTest (line 26) | class RFCRequestTest : public testing::TestWithParam<RfcParam> {
    method RFCRequestTest (line 28) | RFCRequestTest() {
  class RFCResponseTest (line 53) | class RFCResponseTest : public testing::TestWithParam<RfcParam> {
    method RFCResponseTest (line 55) | RFCResponseTest() {
  function unhexlify (line 116) | std::string unhexlify(const std::string& input) {
  function TEST_P (line 123) | TEST_P(RFCRequestTest, RfcExampleRequest) {
  function TEST_P (line 147) | TEST_P(RFCResponseTest, RfcExampleResponse) {

FILE: proxygen/lib/http/codec/compress/test/TestStreamingCallback.h
  function namespace (line 17) | namespace proxygen {

FILE: proxygen/lib/http/codec/compress/test/TestUtil.cpp
  type proxygen::hpack (line 25) | namespace proxygen::hpack {
    function dumpToFile (line 27) | void dumpToFile(const string& filename, const IOBuf* buf) {
    function verifyHeaders (line 39) | void verifyHeaders(vector<HPACKHeader>& headers,
    function encodeDecode (line 55) | unique_ptr<IOBuf> encodeDecode(vector<HPACKHeader>& headers,
    function encodeDecode (line 71) | void encodeDecode(vector<HPACKHeader>& headers,
    function decode (line 93) | unique_ptr<HPACKDecoder::headers_t> decode(HPACKDecoder& decoder,
    function headersFromArray (line 106) | vector<compress::Header> headersFromArray(vector<vector<string>>& a) {
    function basicHeaders (line 114) | vector<compress::Header> basicHeaders() {

FILE: proxygen/lib/http/codec/compress/test/TestUtil.h
  function namespace (line 20) | namespace proxygen::hpack {

FILE: proxygen/lib/http/codec/test/CapsuleCodecTest.cpp
  class TestCapsuleCodecCallback (line 20) | class TestCapsuleCodecCallback : public CapsuleCodec::Callback {
  class TestCapsuleCodec (line 30) | class TestCapsuleCodec : public CapsuleCodec {
    method TestCapsuleCodec (line 32) | explicit TestCapsuleCodec(TestCapsuleCodecCallback* callback = nullptr)
    method canParseCapsule (line 36) | bool canParseCapsule(uint64_t capsuleType) noexcept override {
    method parseCapsule (line 40) | folly::Expected<folly::Unit, ErrorCode> parseCapsule(
  class CapsuleCodecTest (line 53) | class CapsuleCodecTest : public Test {
    method SetUp (line 55) | void SetUp() override {
  function generateStringCapsule (line 63) | quic::BufQueue generateStringCapsule(uint64_t type,
  function TEST_F (line 80) | TEST_F(CapsuleCodecTest, ValidCapsuleParsing) {
  function TEST_F (line 88) | TEST_F(CapsuleCodecTest, InvalidCapsuleType) {
  function TEST_F (line 98) | TEST_F(CapsuleCodecTest, TooLargePayloadAndEom) {
  function TEST_F (line 106) | TEST_F(CapsuleCodecTest, ParseUnderflowInvalidPayload) {
  function TEST_F (line 114) | TEST_F(CapsuleCodecTest, ParseUnderflowLength) {
  function TEST_F (line 128) | TEST_F(CapsuleCodecTest, SkipCapsule) {
  function TEST_F (line 135) | TEST_F(CapsuleCodecTest, SkipCapsuleMultiple) {
  function TEST_F (line 148) | TEST_F(CapsuleCodecTest, ParseUnderflowAndNotEom) {
  function TEST_F (line 177) | TEST_F(CapsuleCodecTest, MultipleCapsules) {

FILE: proxygen/lib/http/codec/test/CodecUtilTests.cpp
  type proxygen::test (line 15) | namespace proxygen::test {
    function input (line 17) | folly::ByteRange input(const char *str) {
    function TEST (line 21) | TEST(CodecUtil, validateURL) {
    function TEST (line 28) | TEST(CodecUtil, validateMethod) {
    function TEST (line 38) | TEST(CodecUtil, validateScheme) {
    function TEST (line 44) | TEST(CodecUtil, validateHeaderName) {
    function TEST (line 96) | TEST(CodecUtil, validateHeaderValue) {
    function TEST (line 162) | TEST(CodecUtil, hasGzipAndDeflate) {

FILE: proxygen/lib/http/codec/test/CrossCodecTest.cpp
  function parseBufWithH1Codec (line 18) | void parseBufWithH1Codec(FakeHTTPCodecCallback& callback,
  function TEST (line 32) | TEST(CrossCodecTest, ConnectRequestConversion) {

FILE: proxygen/lib/http/codec/test/DefaultHTTPCodecFactoryTest.cpp
  function TEST (line 19) | TEST(DefaultHTTPCodecFactoryTest, GetCodec) {
  class DefaultHTTPCodecFactoryValidationTest (line 39) | class DefaultHTTPCodecFactoryValidationTest
  function TEST_P (line 42) | TEST_P(DefaultHTTPCodecFactoryValidationTest, StrictValidation) {

FILE: proxygen/lib/http/codec/test/FilterTests.cpp
  function makeIOBuf (line 26) | std::unique_ptr<folly::IOBuf> makeIOBuf(const std::string& str) {
  class MockFlowControlCallback (line 31) | class MockFlowControlCallback : public FlowControlFilter::Callback {
  class FilterTest (line 37) | class FilterTest : public testing::Test {
    method FilterTest (line 39) | FilterTest()
  class HTTPChecksTest (line 54) | class HTTPChecksTest : public FilterTest {
    method SetUp (line 56) | void SetUp() override {
  class DebugFilterTest (line 61) | class DebugFilterTest : public FilterTest {
    method SetUp (line 63) | void SetUp() override {
  class FlowControlFilterTest (line 76) | class FlowControlFilterTest : public FilterTest {
    method SetUp (line 78) | void SetUp() override {
  function TEST_F (line 123) | TEST_F(DefaultFlowControl, FlowControlConstruct) {
  function TEST_F (line 152) | TEST_F(DefaultFlowControl, SendUpdate) {
  function TEST_F (line 166) | TEST_F(BigWindow, RecvTooMuch) {
  function TEST_F (line 191) | TEST_F(BigWindow, RemoteIncrease) {
  function TEST_F (line 229) | TEST_F(HTTPChecksTest, SendTraceBodyDeath) {
  function TEST_F (line 238) | TEST_F(HTTPChecksTest, SendGetBody) {
  function TEST_F (line 250) | TEST_F(HTTPChecksTest, RecvTraceBody) {
  function TEST_F (line 268) | TEST_F(DebugFilterTest, NoError) {
  function TEST_F (line 277) | TEST_F(DebugFilterTest, NoErrorGoaway) {
  function TEST_F (line 283) | TEST_F(DebugFilterTest, IngressGoaway) {
  function TEST_F (line 289) | TEST_F(DebugFilterTest, EgressGoaway) {
  function TEST_F (line 296) | TEST_F(DebugFilterTest, IngressRstTrackedStream) {
  function TEST_F (line 306) | TEST_F(DebugFilterTest, EgressRstTrackedStream) {
  function TEST_F (line 316) | TEST_F(DebugFilterTest, OnSessionError) {
  function TEST_F (line 323) | TEST_F(DebugFilterTest, OnStreamErrorTracked) {
  function TEST_F (line 334) | TEST_F(DebugFilterTest, OnStreamErrorPartialMsg) {

FILE: proxygen/lib/http/codec/test/HQCodecTest.cpp
  class FakeHQHTTPCodecCallback (line 28) | class FakeHQHTTPCodecCallback
    method onError (line 34) | void onError(HTTPCodec::StreamID streamId,
  type CodecType (line 41) | enum class CodecType {
  class HQCodecTestFixture (line 53) | class HQCodecTestFixture : public T {
    method SetUp (line 55) | void SetUp() override {
    method SetUpCodecs (line 60) | void SetUpCodecs() {
    method parse (line 68) | void parse() {
    method parseUpstream (line 73) | void parseUpstream() {
    method parseControl (line 78) | void parseControl(CodecType type) {
    method addAndCheckSimpleHeaders (line 99) | size_t addAndCheckSimpleHeaders() {
    method makeCodecs (line 113) | void makeCodecs() {
  class HQCodecTest (line 163) | class HQCodecTest : public HQCodecTestFixture<Test> {}
  function TEST_F (line 165) | TEST_F(HQCodecTest, DataFrame) {
  function TEST_F (line 176) | TEST_F(HQCodecTest, PriorityUpdate) {
  function TEST_F (line 187) | TEST_F(HQCodecTest, DataFrameStreaming) {
  function TEST_F (line 211) | TEST_F(HQCodecTest, PushPromiseFrame) {
  function TEST_F (line 230) | TEST_F(HQCodecTest, HeadersOverSize) {
  function TEST_F (line 268) | TEST_F(HQCodecTest, Trailers) {
  function TEST_F (line 310) | TEST_F(HQCodecTest, GenerateExtraHeaders) {
  function TEST_F (line 382) | TEST_F(HQCodecTest, qpack) {
  function TEST_F (line 386) | TEST_F(HQCodecTest, qpackBlocked) {
  function TEST_F (line 390) | TEST_F(HQCodecTest, qpackError) {
  function TEST_F (line 417) | TEST_F(HQCodecTest, qpackErrorShort) {
  function TEST_F (line 426) | TEST_F(HQCodecTest, extraHeaders) {
  function TEST_F (line 454) | TEST_F(HQCodecTest, MultipleHeaders) {
  function TEST_F (line 481) | TEST_F(HQCodecTest, InvalidHeaders) {
  function TEST_F (line 498) | TEST_F(HQCodecTest, ParserStopsAfterPushPromiseError) {
  function TEST_F (line 518) | TEST_F(HQCodecTest, ZeroLengthData) {
  function TEST_F (line 544) | TEST_F(HQCodecTest, ZeroLengthSettings) {
  function TEST_F (line 555) | TEST_F(HQCodecTest, InvalidSettings) {
  function TEST_F (line 567) | TEST_F(HQCodecTest, ZeroLengthTrailers) {
  function TEST_F (line 583) | TEST_F(HQCodecTest, TruncatedStream) {
  function TEST_F (line 603) | TEST_F(HQCodecTest, BasicConnect) {
  function TEST_F (line 618) | TEST_F(HQCodecTest, TemplateDrivenConnect) {
  function TEST_F (line 641) | TEST_F(HQCodecTest, TrimLwsInHeaderValue) {
  function TEST_F (line 668) | TEST_F(HQCodecTest, OnlyDataAfterConnect) {
  function TEST_F (line 688) | TEST_F(HQCodecTest, MultipleSettingsUpstream) {
  function TEST_F (line 699) | TEST_F(HQCodecTest, MultipleSettingsDownstream) {
  function TEST_F (line 710) | TEST_F(HQCodecTest, RfcPriorityCallback) {
  function TEST_F (line 719) | TEST_F(HQCodecTest, RfcPushPriorityCallback) {
  function TEST_F (line 728) | TEST_F(HQCodecTest, PriorityCallback) {
  function TEST_F (line 737) | TEST_F(HQCodecTest, PushPriorityCallback) {
  function TEST_F (line 772) | TEST_F(HQCodecTest, ServerGoaway) {
  function TEST_F (line 776) | TEST_F(HQCodecTest, ClientGoaway) {
  function TEST_F (line 780) | TEST_F(HQCodecTest, HighAscii) {
  function TEST_F (line 841) | TEST_F(HQCodecTest, WebTransportProtocol) {
  function TEST_F (line 858) | TEST_F(HQCodecTest, PaddingIgnored) {
  type FrameAllowedParams (line 884) | struct FrameAllowedParams {
  function frameParamsToTestName (line 890) | std::string frameParamsToTestName(
  class HQCodecTestFrameAllowed (line 954) | class HQCodecTestFrameAllowed
  function TEST_P (line 957) | TEST_P(HQCodecTestFrameAllowed, FrameAllowedOnCodec) {
  class HQCodecTestFrameBeforeSettings (line 1128) | class HQCodecTestFrameBeforeSettings
  function TEST_P (line 1131) | TEST_P(HQCodecTestFrameBeforeSettings, FrameAllowedOnControlCodec) {

FILE: proxygen/lib/http/codec/test/HQFramerTest.cpp
  function comparePushId (line 27) | bool comparePushId(PushId lhs, PushId rhs) {
  function isValidPushId (line 32) | bool isValidPushId(folly::Optional<PushId> maxAllowedPushId, PushId push...
  class HQFramerTestFixture (line 47) | class HQFramerTestFixture : public T {
    method HQFramerTestFixture (line 49) | HQFramerTestFixture() = default;
    method parse (line 52) | void parse(ParseResult parseError,
    method parse (line 64) | void parse(ParseResult parseError,
  class HQFramerTest (line 89) | class HQFramerTest : public HQFramerTestFixture<testing::Test> {}
  function TEST_F (line 91) | TEST_F(HQFramerTest, TestValidPushId) {
  function TEST_F (line 109) | TEST_F(HQFramerTest, TestWriteFrameHeaderManual) {
  function TEST_F (line 115) | TEST_F(HQFramerTest, TestWriteUnframedBytes) {
  function TEST_F (line 125) | TEST_F(HQFramerTest, DataFrameZeroLength) {
  function TEST_F (line 134) | TEST_F(HQFramerTest, TestWriteGreaseFrame) {
  function TEST_F (line 148) | TEST_F(HQFramerTest, TestWriteWebTransportStreamPreface) {
  type FrameHeaderLengthParams (line 165) | struct FrameHeaderLengthParams {
  type DataOnlyFrameParams (line 170) | struct DataOnlyFrameParams {
  class HQFramerTestDataOnlyFrames (line 179) | class HQFramerTestDataOnlyFrames
  function TEST_P (line 182) | TEST_P(HQFramerTestDataOnlyFrames, TestDataOnlyFrame) {
  function TEST_F (line 205) | TEST_F(HQFramerTest, ParsePushPromiseFrameOK) {
  type IdOnlyFrameParams (line 219) | struct IdOnlyFrameParams {
  class HQFramerTestIdOnlyFrames (line 226) | class HQFramerTestIdOnlyFrames
  function TEST_P (line 229) | TEST_P(HQFramerTestIdOnlyFrames, TestIdOnlyFrame) {
  function TEST_F (line 314) | TEST_F(HQFramerTest, SettingsFrameOK) {
  function TEST_F (line 333) | TEST_F(HQFramerTest, MaxPushIdFrameOK) {
  function TEST_F (line 347) | TEST_F(HQFramerTest, MaxPushIdFrameLargePushId) {
  function TEST_F (line 362) | TEST_F(HQFramerTest, MaxPushIdTooLarge) {
  type SettingsValuesParams (line 370) | struct SettingsValuesParams {
  class HQFramerTestSettingsValues (line 376) | class HQFramerTestSettingsValues
  function TEST_P (line 379) | TEST_P(HQFramerTestSettingsValues, ValueAllowed) {
  function TEST_F (line 417) | TEST_F(HQFramerTest, SettingsFrameEmpty) {
  function TEST_F (line 429) | TEST_F(HQFramerTest, SettingsFrameTrailingJunk) {
  function TEST_F (line 452) | TEST_F(HQFramerTest, SettingsFrameWriteError) {
  function TEST_F (line 460) | TEST_F(HQFramerTest, SettingsFrameUnknownId) {
  function TEST_F (line 473) | TEST_F(HQFramerTest, PriorityUpdate) {
  function TEST_F (line 486) | TEST_F(HQFramerTest, PriorityUpdateWithoutIncremental) {
  function TEST_F (line 499) | TEST_F(HQFramerTest, BadPriorityUpdate) {

FILE: proxygen/lib/http/codec/test/HQFramerTest.h
  function writeFrameHeaderManual (line 18) | size_t writeFrameHeaderManual(folly::IOBufQueue& queue,
  function appenderOp (line 57) | auto appenderOp = [&](auto val) { appender.writeBE<decltype(val)>(val); }
  function appenderOp (line 87) | auto appenderOp = [&](auto val) { appender.writeBE<decltype(val)>(val); }

FILE: proxygen/lib/http/codec/test/HQMultiCodecTest.cpp
  class HQMultiCodecTest (line 18) | class HQMultiCodecTest : public Test {
    method SetUp (line 20) | void SetUp() override {
  function TEST_F (line 29) | TEST_F(HQMultiCodecTest, Egress) {
  function TEST_F (line 57) | TEST_F(HQMultiCodecTest, Ingress) {
  function TEST_F (line 103) | TEST_F(HQMultiCodecTest, Generic) {

FILE: proxygen/lib/http/codec/test/HTTP1xCodecTest.cpp
  class HTTP1xCodecCallback (line 24) | class HTTP1xCodecCallback : public HTTPCodec::Callback {
    method HTTP1xCodecCallback (line 26) | HTTP1xCodecCallback() = default;
    method onMessageBegin (line 28) | void onMessageBegin(HTTPCodec::StreamID /*stream*/,
    method onPushMessageBegin (line 31) | void onPushMessageBegin(HTTPCodec::StreamID /*stream*/,
    method onHeadersComplete (line 35) | void onHeadersComplete(HTTPCodec::StreamID /*stream*/,
    method onBody (line 41) | void onBody(HTTPCodec::StreamID /*stream*/,
    method onChunkHeader (line 46) | void onChunkHeader(HTTPCodec::StreamID /*stream*/,
    method onChunkComplete (line 49) | void onChunkComplete(HTTPCodec::StreamID /*stream*/) override {
    method onTrailersComplete (line 51) | void onTrailersComplete(HTTPCodec::StreamID /*stream*/,
    method onMessageComplete (line 56) | void onMessageComplete(HTTPCodec::StreamID /*stream*/,
    method onError (line 60) | void onError(HTTPCodec::StreamID /*stream*/,
  function getSimpleRequestData (line 77) | unique_ptr<folly::IOBuf> getSimpleRequestData() {
  function getSimpleRequestDataQueue (line 82) | unique_ptr<folly::IOBuf> getSimpleRequestDataQueue() {
  function TEST (line 91) | TEST(HTTP1xCodecTest, TestSimpleHeaders) {
  function TEST (line 104) | TEST(HTTP1xCodecTest, TestSimpleHeadersQueue) {
  function TEST (line 114) | TEST(HTTP1xCodecTest, TestSimpleHeadersQueueWithPause) {
  function TEST (line 130) | TEST(HTTP1xCodecTest, Test09Req) {
  function TEST (line 147) | TEST(HTTP1xCodecTest, Test09ReqVers) {
  function TEST (line 159) | TEST(HTTP1xCodecTest, Test09Resp) {
  function TEST (line 180) | TEST(HTTP1xCodecTest, TestResponseSplit) {
  function TEST (line 204) | TEST(HTTP1xCodecTest, TestO9NoVersion) {
  function TEST (line 217) | TEST(HTTP1xCodecTest, TestKeepalive09_10) {
  function TEST (line 299) | TEST(HTTP1xCodecTest, TestBadHeaders) {
  function TEST (line 316) | TEST(HTTP1xCodecTest, TestHighAsciiUA) {
  function TEST (line 334) | TEST(HTTP1xCodecTest, TestBadURL) {
  function TEST (line 351) | TEST(HTTP1xCodecTest, TestUnderscoreAllowedInHost) {
  function TEST (line 369) | TEST(HTTP1xCodecTest, TestHeadRequestChunkedResponse) {
  function TEST (line 393) | TEST(HTTP1xCodecTest, TestGetRequestChunkedResponse) {
  function getChunkedRequest1st (line 435) | unique_ptr<folly::IOBuf> getChunkedRequest1st() {
  function getChunkedRequest2nd (line 440) | unique_ptr<folly::IOBuf> getChunkedRequest2nd() {
  function TEST (line 445) | TEST(HTTP1xCodecTest, TestChunkedHeaders) {
  function TEST (line 466) | TEST(HTTP1xCodecTest, TestChunkedUpstream) {
  function TEST (line 502) | TEST(HTTP1xCodecTest, TestBadPost100) {
  function TEST (line 546) | TEST(HTTP1xCodecTest, TestMultipleIdenticalContentLengthHeaders) {
  function TEST (line 564) | TEST(HTTP1xCodecTest, TestMultipleDistinctContentLengthHeaders) {
  function TEST (line 583) | TEST(HTTP1xCodecTest, TestCorrectTransferEncodingHeader) {
  function TEST (line 601) | TEST(HTTP1xCodecTest, TestFoldedTransferEncodingHeader) {
  function TEST (line 620) | TEST(HTTP1xCodecTest, TestBadTransferEncodingHeader) {
  function TEST (line 641) | TEST(HTTP1xCodecTest, TestMalformedChunkDelimiter) {
  function TEST (line 676) | TEST(HTTP1xCodecTest, Test1xxConnectionHeader) {
  function TEST (line 705) | TEST(HTTP1xCodecTest, TestChainedBody) {
  function TEST (line 727) | TEST(HT
Condensed preview — 1140 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,191K chars).
[
  {
    "path": ".github/dependabot.yml",
    "chars": 118,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n"
  },
  {
    "path": ".github/workflows/TagIt.yml",
    "chars": 2848,
    "preview": "on:\n  push:\n    tags:\n      # Only match TagIt tags, which always start with this prefix\n      - 'v20*'\n\nname: TagIt\n\npe"
  },
  {
    "path": ".github/workflows/close_stale.yml",
    "chars": 687,
    "preview": "name: Close inactive issues\non:\n  schedule:\n    - cron: \"30 1 * * *\"\n\njobs:\n  close-issues:\n    runs-on: ubuntu-latest\n "
  },
  {
    "path": ".github/workflows/getdeps_linux.yml",
    "chars": 31845,
    "preview": "# This file was @generated by getdeps.py\n\nname: linux\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches"
  },
  {
    "path": ".github/workflows/getdeps_mac.yml",
    "chars": 28558,
    "preview": "# This file was @generated by getdeps.py\n\nname: mac\n\non:\n  push:\n    branches:\n    - main\n  pull_request:\n    branches:\n"
  },
  {
    "path": ".github/workflows/publish_mvfst_interop.yml",
    "chars": 1357,
    "preview": "# Following instruction from https://docs.github.com/en/actions/publishing-packages/publishing-docker-images\n\nname: Publ"
  },
  {
    "path": ".gitignore",
    "chars": 450,
    "preview": "*~\n\\#*\\#\n\n# Build artifacts\n.libs\n*.log\n*.trs\n*.o\n*.lo\n*.a\n*.la\ngen-cpp\ngen-cpp2\n\n# Generated files\n/proxygen/lib/http/H"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 7126,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the B"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3356,
    "preview": "# Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1796,
    "preview": "# Contributing to Proxygen\nHere's a quick rundown of how to contribute to this project.\n\n## Code of Conduct\nThe code of "
  },
  {
    "path": "Doxyfile",
    "chars": 99385,
    "preview": "# Doxyfile 1.8.5\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) "
  },
  {
    "path": "LICENSE",
    "chars": 1535,
    "preview": "BSD License\n\nFor Proxygen software\n\nCopyright (c) Facebook, Inc. and its affiliates. All rights reserved.\n\nRedistributio"
  },
  {
    "path": "README.md",
    "chars": 8275,
    "preview": "## Proxygen: Facebook's C++ HTTP Libraries\n\n[![Linux Build Status](https://github.com/facebook/proxygen/actions/workflow"
  },
  {
    "path": "build/README.md",
    "chars": 397,
    "preview": "# Building using `fbcode_builder`\n\nContinuous integration builds are powered by `fbcode_builder`, a tiny tool\nshared by "
  },
  {
    "path": "build/deps/github_hashes/facebook/folly-rev.txt",
    "chars": 59,
    "preview": "Subproject commit 4321dae73b18961089fc62532ee6dc011cbf1915\n"
  },
  {
    "path": "build/deps/github_hashes/facebook/mvfst-rev.txt",
    "chars": 59,
    "preview": "Subproject commit b229e95977aa5d4c271da60775f2b4bdbc40262a\n"
  },
  {
    "path": "build/deps/github_hashes/facebook/wangle-rev.txt",
    "chars": 59,
    "preview": "Subproject commit dbe97d189ad17a732477ecf4defdcf8cdac2c013\n"
  },
  {
    "path": "build/deps/github_hashes/facebookincubator/fizz-rev.txt",
    "chars": 59,
    "preview": "Subproject commit 8d74917ae1e80269c6e8e9da44f9713269d9c2ec\n"
  },
  {
    "path": "build/fbcode_builder/.gitignore",
    "chars": 168,
    "preview": "# Facebook-internal CI builds don't have write permission outside of the\n# source tree, so we install all projects into "
  },
  {
    "path": "build/fbcode_builder/CMake/FBBuildOptions.cmake",
    "chars": 932,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\nfunction (fb_activate_static_library_option)\n  option(USE_STATIC_DEP"
  },
  {
    "path": "build/fbcode_builder/CMake/FBCMakeParseArgs.cmake",
    "chars": 5919,
    "preview": "#\n# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Helper function for parsing arguments to a CMake function.\n#\n# "
  },
  {
    "path": "build/fbcode_builder/CMake/FBCompilerSettings.cmake",
    "chars": 432,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\n# This file applies common compiler settings that are shared across\n"
  },
  {
    "path": "build/fbcode_builder/CMake/FBCompilerSettingsMSVC.cmake",
    "chars": 499,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\n# This file applies common compiler settings that are shared across\n"
  },
  {
    "path": "build/fbcode_builder/CMake/FBCompilerSettingsUnix.cmake",
    "chars": 442,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\n# This file applies common compiler settings that are shared across\n"
  },
  {
    "path": "build/fbcode_builder/CMake/FBPythonBinary.cmake",
    "chars": 26829,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\ninclude(FBCMakeParseArgs)\n\n#\n# This file contains helper functions f"
  },
  {
    "path": "build/fbcode_builder/CMake/FBPythonTestAddTests.cmake",
    "chars": 1768,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\n# Add a command to be emitted to the CTest file\nset(ctest_script)\nfu"
  },
  {
    "path": "build/fbcode_builder/CMake/FBThriftCppLibrary.cmake",
    "chars": 6967,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\ninclude(FBCMakeParseArgs)\n\n# Generate a C++ library from a thrift fi"
  },
  {
    "path": "build/fbcode_builder/CMake/FBThriftLibrary.cmake",
    "chars": 2331,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\ninclude(FBCMakeParseArgs)\ninclude(FBThriftPyLibrary)\ninclude(FBThrif"
  },
  {
    "path": "build/fbcode_builder/CMake/FBThriftPyLibrary.cmake",
    "chars": 3699,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n\ninclude(FBCMakeParseArgs)\ninclude(FBPythonBinary)\n\n# Generate a Pyth"
  },
  {
    "path": "build/fbcode_builder/CMake/FindCares.cmake",
    "chars": 833,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n# All rights reserved.\n#\n# This source code is licensed under the B"
  },
  {
    "path": "build/fbcode_builder/CMake/FindDoubleConversion.cmake",
    "chars": 557,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n\n# Finds libdouble-conversion.\n#\n# This module defines:\n# DOUBLE_CO"
  },
  {
    "path": "build/fbcode_builder/CMake/FindGMock.cmake",
    "chars": 2697,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n# Find libgmock\n#\n#  LIBGMOCK_DEFINES     - List of defines when usin"
  },
  {
    "path": "build/fbcode_builder/CMake/FindGflags.cmake",
    "chars": 4227,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n# Find libgflags.\n# There's a lot of compatibility cruft going on in "
  },
  {
    "path": "build/fbcode_builder/CMake/FindGlog.cmake",
    "chars": 1755,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n# - Try to find Glog\n# Once done, this will define\n#\n# GLOG_FOUND - s"
  },
  {
    "path": "build/fbcode_builder/CMake/FindLMDB.cmake",
    "chars": 536,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This software may be used and distributed according to the term"
  },
  {
    "path": "build/fbcode_builder/CMake/FindLibEvent.cmake",
    "chars": 2772,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n# - Find LibEvent (a cross event library)\n# This module defines\n# LIB"
  },
  {
    "path": "build/fbcode_builder/CMake/FindLibUnwind.cmake",
    "chars": 2559,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n#"
  },
  {
    "path": "build/fbcode_builder/CMake/FindLibiberty.cmake",
    "chars": 1073,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "build/fbcode_builder/CMake/FindPCRE.cmake",
    "chars": 309,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\ninclude(FindPackageHandleStandardArgs)\nfind_path(PCRE_INCLUDE_DIR NAM"
  },
  {
    "path": "build/fbcode_builder/CMake/FindPCRE2.cmake",
    "chars": 379,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\ninclude(FindPackageHandleStandardArgs)\nfind_path(PCRE2_INCLUDE_DIR NA"
  },
  {
    "path": "build/fbcode_builder/CMake/FindRe2.cmake",
    "chars": 538,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# This software may be used and distributed according to the terms "
  },
  {
    "path": "build/fbcode_builder/CMake/FindSodium.cmake",
    "chars": 9918,
    "preview": "# Written in 2016 by Henrik Steffen Gaßmann <henrik@gassmann.onl>\n#\n# To the extent possible under law, the author(s) ha"
  },
  {
    "path": "build/fbcode_builder/CMake/FindXxhash.cmake",
    "chars": 1157,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n#"
  },
  {
    "path": "build/fbcode_builder/CMake/FindZstd.cmake",
    "chars": 1195,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n#"
  },
  {
    "path": "build/fbcode_builder/CMake/Findibverbs.cmake",
    "chars": 3573,
    "preview": "# Copyright (c) Facebook, Inc. and its affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n#"
  },
  {
    "path": "build/fbcode_builder/CMake/RustStaticLibrary.cmake",
    "chars": 17577,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n\ninclude(FBCMakeParseArgs)\n\nset(\n  USE_CARGO_VENDOR AUTO CACHE STRI"
  },
  {
    "path": "build/fbcode_builder/CMake/fb_py_test_main.py",
    "chars": 25659,
    "preview": "#!/usr/bin/env python\n#\n# Copyright (c) Facebook, Inc. and its affiliates.\n#\n\"\"\"\nThis file contains the main module code"
  },
  {
    "path": "build/fbcode_builder/CMake/fb_py_win_main.c",
    "chars": 3286,
    "preview": "// Copyright (c) Facebook, Inc. and its affiliates.\n\n#define WIN32_LEAN_AND_MEAN\n\n#include <Windows.h>\n#include <stdio.h"
  },
  {
    "path": "build/fbcode_builder/CMake/make_fbpy_archive.py",
    "chars": 11476,
    "preview": "#!/usr/bin/env python3\n#\n# Copyright (c) Facebook, Inc. and its affiliates.\n#\nimport argparse\nimport collections\nimport "
  },
  {
    "path": "build/fbcode_builder/LICENSE",
    "chars": 1086,
    "preview": "MIT License\n\nCopyright (c) Facebook, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to any pers"
  },
  {
    "path": "build/fbcode_builder/README.md",
    "chars": 1945,
    "preview": "# Easy builds for Facebook projects\n\nThis directory contains tools designed to simplify continuous-integration\n(and othe"
  },
  {
    "path": "build/fbcode_builder/getdeps/__init__.py",
    "chars": 14,
    "preview": "# pyre-strict\n"
  },
  {
    "path": "build/fbcode_builder/getdeps/builder.py",
    "chars": 64005,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
  },
  {
    "path": "build/fbcode_builder/getdeps/buildopts.py",
    "chars": 29236,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/cache.py",
    "chars": 1588,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/cargo.py",
    "chars": 21723,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
  },
  {
    "path": "build/fbcode_builder/getdeps/copytree.py",
    "chars": 4566,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/dyndeps.py",
    "chars": 18378,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/envfuncs.py",
    "chars": 7023,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/errors.py",
    "chars": 578,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/expr.py",
    "chars": 5777,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/fetcher.py",
    "chars": 43173,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
  },
  {
    "path": "build/fbcode_builder/getdeps/include_rewriter.py",
    "chars": 7136,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
  },
  {
    "path": "build/fbcode_builder/getdeps/load.py",
    "chars": 16241,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/manifest.py",
    "chars": 33167,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/platform.py",
    "chars": 9522,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/py_wheel_builder.py",
    "chars": 11252,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/runcmd.py",
    "chars": 8939,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/subcmd.py",
    "chars": 2265,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/test/expr_test.py",
    "chars": 1817,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/test/fixtures/duplicate/foo",
    "chars": 22,
    "preview": "[manifest]\nname = foo\n"
  },
  {
    "path": "build/fbcode_builder/getdeps/test/fixtures/duplicate/subdir/foo",
    "chars": 22,
    "preview": "[manifest]\nname = foo\n"
  },
  {
    "path": "build/fbcode_builder/getdeps/test/manifest_test.py",
    "chars": 5681,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/test/platform_test.py",
    "chars": 1229,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/test/retry_test.py",
    "chars": 5602,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/test/scratch_test.py",
    "chars": 2750,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps/test/strip_marker_test.py",
    "chars": 4995,
    "preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the"
  },
  {
    "path": "build/fbcode_builder/getdeps.py",
    "chars": 61784,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the M"
  },
  {
    "path": "build/fbcode_builder/manifests/CLI11",
    "chars": 286,
    "preview": "[manifest]\nname = CLI11\n\n[download]\nurl = https://github.com/CLIUtils/CLI11/archive/v2.0.0.tar.gz\nsha256 = 2c672f17bf56e"
  },
  {
    "path": "build/fbcode_builder/manifests/autoconf",
    "chars": 301,
    "preview": "[manifest]\nname = autoconf\n\n[debs]\nautoconf\n\n[homebrew]\nautoconf\n\n[rpms]\nautoconf\n\n[pps]\nautoconf\n\n[download]\nurl = http"
  },
  {
    "path": "build/fbcode_builder/manifests/automake",
    "chars": 330,
    "preview": "[manifest]\nname = automake\n\n[homebrew]\nautomake\n\n[debs]\nautomake\n\n[rpms]\nautomake\n\n[pps]\nautomake\n\n[download]\nurl = http"
  },
  {
    "path": "build/fbcode_builder/manifests/benchmark",
    "chars": 285,
    "preview": "[manifest]\nname = benchmark\n\n[download]\nurl = https://github.com/google/benchmark/archive/refs/tags/v1.8.0.tar.gz\nsha256"
  },
  {
    "path": "build/fbcode_builder/manifests/blake3",
    "chars": 235,
    "preview": "[manifest]\nname = blake3\n\n[download]\nurl = https://github.com/BLAKE3-team/BLAKE3/archive/refs/tags/1.5.1.tar.gz\nsha256 ="
  },
  {
    "path": "build/fbcode_builder/manifests/boost",
    "chars": 2362,
    "preview": "[manifest]\nname = boost\n\n[download.not(os=windows)]\nurl = https://archives.boost.io/release/1.83.0/source/boost_1_83_0.t"
  },
  {
    "path": "build/fbcode_builder/manifests/boost-python",
    "chars": 2476,
    "preview": "[manifest]\nname = boost-python\n\n[download.not(os=windows)]\nurl = https://archives.boost.io/release/1.83.0/source/boost_1"
  },
  {
    "path": "build/fbcode_builder/manifests/bz2",
    "chars": 461,
    "preview": "[manifest]\nname = bz2\n\n[debs]\nlibbz2-dev\nbzip2\n\n[homebrew]\nbzip2\n\n[rpms]\nbzip2-devel\nbzip2\n\n[download]\nurl = https://sou"
  },
  {
    "path": "build/fbcode_builder/manifests/c-ares",
    "chars": 332,
    "preview": "[manifest]\nname = c-ares\n\n[download]\nurl = https://github.com/c-ares/c-ares/releases/download/v1.34.6/c-ares-1.34.6.tar."
  },
  {
    "path": "build/fbcode_builder/manifests/cabal",
    "chars": 290,
    "preview": "[manifest]\nname = cabal\n\n[download.os=linux]\nurl = https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-inst"
  },
  {
    "path": "build/fbcode_builder/manifests/cachelib",
    "chars": 1073,
    "preview": "[manifest]\nname = cachelib\nfbsource_path = fbcode/cachelib\nshipit_project = cachelib\nshipit_fbcode_builder = true\n\n[git]"
  },
  {
    "path": "build/fbcode_builder/manifests/cinderx-3_14",
    "chars": 507,
    "preview": "[manifest]\nname = cinderx-3_14\nfbsource_path = fbcode/cinderx\nshipit_project = facebookincubator/cinderx\n\n[git]\nrepo_url"
  },
  {
    "path": "build/fbcode_builder/manifests/cinderx-main",
    "chars": 819,
    "preview": "# For building CinderX against CPython main.\n# Note that externally this can be broken  because in that environment we w"
  },
  {
    "path": "build/fbcode_builder/manifests/clang",
    "chars": 46,
    "preview": "[manifest]\nname = clang\n\n[rpms]\nclang15-devel\n"
  },
  {
    "path": "build/fbcode_builder/manifests/clang19",
    "chars": 75,
    "preview": "[manifest]\nname = clang19\n\n[debs.os=linux]\nclang-19\n\n[rpms.os=linux]\nclang\n"
  },
  {
    "path": "build/fbcode_builder/manifests/cmake",
    "chars": 1127,
    "preview": "[manifest]\nname = cmake\n\n[homebrew]\ncmake\n\n# 18.04 cmake is too old\n[debs.not(all(distro=ubuntu,distro_vers=\"18.04\"))]\nc"
  },
  {
    "path": "build/fbcode_builder/manifests/cpptoml",
    "chars": 301,
    "preview": "[manifest]\nname = cpptoml\n\n[homebrew]\ncpptoml\n\n[download]\nurl = https://github.com/chadaustin/cpptoml/archive/refs/tags/"
  },
  {
    "path": "build/fbcode_builder/manifests/double-conversion",
    "chars": 390,
    "preview": "[manifest]\nname = double-conversion\n\n[download]\nurl = https://github.com/google/double-conversion/archive/v3.1.4.tar.gz\n"
  },
  {
    "path": "build/fbcode_builder/manifests/double-conversion-python",
    "chars": 486,
    "preview": "[manifest]\nname = double-conversion-python\n\n[download]\nurl = https://github.com/google/double-conversion/archive/v3.1.4."
  },
  {
    "path": "build/fbcode_builder/manifests/eden",
    "chars": 2936,
    "preview": "[manifest]\nname = eden\nfbsource_path = fbcode/eden\nshipit_project = eden\nshipit_fbcode_builder = true\n\n[git]\nrepo_url = "
  },
  {
    "path": "build/fbcode_builder/manifests/edencommon",
    "chars": 466,
    "preview": "[manifest]\nname = edencommon\nfbsource_path = fbcode/eden/common\nshipit_project = edencommon\nshipit_fbcode_builder = true"
  },
  {
    "path": "build/fbcode_builder/manifests/exprtk",
    "chars": 304,
    "preview": "[manifest]\nname = exprtk\n\n[download]\nurl = https://github.com/ArashPartow/exprtk/archive/refs/tags/0.0.1.tar.gz\nsha256 ="
  },
  {
    "path": "build/fbcode_builder/manifests/fast_float",
    "chars": 481,
    "preview": "[manifest]\nname = fast_float\n\n[download]\nurl = https://github.com/fastfloat/fast_float/archive/refs/tags/v8.0.0.tar.gz\ns"
  },
  {
    "path": "build/fbcode_builder/manifests/fatal",
    "chars": 482,
    "preview": "[manifest]\nname = fatal\nfbsource_path = fbcode/fatal\nshipit_project = fatal\n\n[git]\nrepo_url = https://github.com/faceboo"
  },
  {
    "path": "build/fbcode_builder/manifests/fb303",
    "chars": 594,
    "preview": "[manifest]\nname = fb303\nfbsource_path = fbcode/fb303\nshipit_project = fb303\nshipit_fbcode_builder = true\n\n[git]\nrepo_url"
  },
  {
    "path": "build/fbcode_builder/manifests/fboss",
    "chars": 1366,
    "preview": "[manifest]\nname = fboss\nfbsource_path = fbcode/fboss\nshipit_project = fboss\nshipit_fbcode_builder = true\n\n[git]\nrepo_url"
  },
  {
    "path": "build/fbcode_builder/manifests/fbthrift",
    "chars": 915,
    "preview": "[manifest]\nname = fbthrift\nfbsource_path = xplat/thrift\nshipit_project = fbthrift\nshipit_fbcode_builder = true\n\n[git]\nre"
  },
  {
    "path": "build/fbcode_builder/manifests/fbthrift-python",
    "chars": 1115,
    "preview": "[manifest]\nname = fbthrift-python\nfbsource_path = xplat/thrift\nshipit_project = fbthrift\nshipit_fbcode_builder = true\n\n["
  },
  {
    "path": "build/fbcode_builder/manifests/fizz",
    "chars": 559,
    "preview": "[manifest]\nname = fizz\nfbsource_path = fbcode/fizz\nshipit_project = fizz\nshipit_fbcode_builder = true\n\n[git]\nrepo_url = "
  },
  {
    "path": "build/fbcode_builder/manifests/fizz-python",
    "chars": 710,
    "preview": "[manifest]\nname = fizz-python\nfbsource_path = fbcode/fizz\nshipit_project = fizz\nshipit_fbcode_builder = true\n\n[git]\nrepo"
  },
  {
    "path": "build/fbcode_builder/manifests/fmt",
    "chars": 315,
    "preview": "[manifest]\nname = fmt\n\n[download]\nurl = https://github.com/fmtlib/fmt/archive/refs/tags/12.1.0.tar.gz\nsha256 = ea7de4299"
  },
  {
    "path": "build/fbcode_builder/manifests/fmt-python",
    "chars": 539,
    "preview": "[manifest]\nname = fmt-python\n\n[download]\nurl = https://github.com/fmtlib/fmt/archive/refs/tags/12.1.0.tar.gz\nsha256 = ea"
  },
  {
    "path": "build/fbcode_builder/manifests/folly",
    "chars": 1399,
    "preview": "[manifest]\nname = folly\nfbsource_path = fbcode/folly\nshipit_project = folly\nshipit_fbcode_builder = true\n\n[git]\nrepo_url"
  },
  {
    "path": "build/fbcode_builder/manifests/folly-python",
    "chars": 1535,
    "preview": "[manifest]\nname = folly-python\nfbsource_path = fbcode/folly\nshipit_project = folly\nshipit_fbcode_builder = true\n\n[git]\nr"
  },
  {
    "path": "build/fbcode_builder/manifests/gcc12",
    "chars": 87,
    "preview": "[manifest]\nname = gcc12\n\n[rpms.all(distro=centos_stream,distro_vers=9)]\ngcc-toolset-12\n"
  },
  {
    "path": "build/fbcode_builder/manifests/gcc14",
    "chars": 87,
    "preview": "[manifest]\nname = gcc14\n\n[rpms.all(distro=centos_stream,distro_vers=9)]\ngcc-toolset-14\n"
  },
  {
    "path": "build/fbcode_builder/manifests/gflags",
    "chars": 414,
    "preview": "[manifest]\nname = gflags\n\n[download]\nurl = https://github.com/gflags/gflags/archive/v2.2.2.tar.gz\nsha256 = 34af2f15cf736"
  },
  {
    "path": "build/fbcode_builder/manifests/ghc",
    "chars": 323,
    "preview": "[manifest]\nname = ghc\n\n[download.os=linux]\nurl = https://downloads.haskell.org/~ghc/9.2.8/ghc-9.2.8-x86_64-fedora27-linu"
  },
  {
    "path": "build/fbcode_builder/manifests/git-lfs",
    "chars": 144,
    "preview": "[manifest]\nname = git-lfs\n\n[rpms]\ngit-lfs\n\n[debs]\ngit-lfs\n\n[homebrew]\ngit-lfs\n\n# only used from system packages currentl"
  },
  {
    "path": "build/fbcode_builder/manifests/glean",
    "chars": 977,
    "preview": "[manifest]\nname = glean\nfbsource_path = fbcode/glean\nshipit_project = facebookincubator/Glean\nuse_shipit = true\n\n[shipit"
  },
  {
    "path": "build/fbcode_builder/manifests/glog",
    "chars": 564,
    "preview": "[manifest]\nname = glog\n\n[download]\nurl = https://github.com/google/glog/archive/v0.5.0.tar.gz\nsha256 = eede71f28371bf39a"
  },
  {
    "path": "build/fbcode_builder/manifests/googletest",
    "chars": 682,
    "preview": "[manifest]\nname = googletest\n\n[download]\nurl = https://github.com/google/googletest/archive/refs/tags/v1.17.0.tar.gz\nsha"
  },
  {
    "path": "build/fbcode_builder/manifests/gperf",
    "chars": 266,
    "preview": "[manifest]\nname = gperf\n\n[download]\nurl = https://ftpmirror.gnu.org/gnu/gperf/gperf-3.1.tar.gz\nsha256 = 588546b945bba4b7"
  },
  {
    "path": "build/fbcode_builder/manifests/hexdump",
    "chars": 132,
    "preview": "[manifest]\nname = hexdump\n\n[rpms]\nutil-linux\n\n[debs]\nbsdmainutils\n\n# only used from system packages currently\n[build]\nbu"
  },
  {
    "path": "build/fbcode_builder/manifests/hsthrift",
    "chars": 482,
    "preview": "[manifest]\nname = hsthrift\nfbsource_path = fbcode/common/hs\nshipit_project = facebookincubator/hsthrift\nuse_shipit = tru"
  },
  {
    "path": "build/fbcode_builder/manifests/iproute2",
    "chars": 333,
    "preview": "[manifest]\nname = iproute2\n\n[download]\nurl = https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.12."
  },
  {
    "path": "build/fbcode_builder/manifests/jom",
    "chars": 454,
    "preview": "# jom is compatible with MSVC nmake, but adds the /j<number of jobs> argment which \n# speeds up openssl build a lot\n[man"
  },
  {
    "path": "build/fbcode_builder/manifests/jq",
    "chars": 555,
    "preview": "[manifest]\nname = jq\n\n[rpms.distro=fedora]\njq\n\n[homebrew]\njq\n\n[download.not(os=windows)]\n# we use jq-1.7+ to get fix for"
  },
  {
    "path": "build/fbcode_builder/manifests/katran",
    "chars": 553,
    "preview": "[manifest]\nname = katran\nfbsource_path = fbcode/katran\nshipit_project = katran\nshipit_fbcode_builder = true\n\n[git]\nrepo_"
  },
  {
    "path": "build/fbcode_builder/manifests/libaio",
    "chars": 443,
    "preview": "[manifest]\nname = libaio\n\n[debs]\nlibaio-dev\n\n[rpms.distro=centos_stream]\nlibaio-devel\n\n[download]\nurl = https://pagure.i"
  },
  {
    "path": "build/fbcode_builder/manifests/libaio-python",
    "chars": 419,
    "preview": "[manifest]\nname = libaio-python\n\n[debs]\nlibaio-dev\n\n[rpms.distro=centos_stream]\nlibaio-devel\n\n[download]\nurl = https://p"
  },
  {
    "path": "build/fbcode_builder/manifests/libbpf",
    "chars": 516,
    "preview": "[manifest]\nname = libbpf\n\n[download]\nurl = https://github.com/libbpf/libbpf/archive/refs/tags/v1.6.2.tar.gz\nsha256 = 16f"
  },
  {
    "path": "build/fbcode_builder/manifests/libcurl",
    "chars": 941,
    "preview": "[manifest]\nname = libcurl\n\n[rpms]\nlibcurl-devel\nlibcurl-minimal\n\n[debs]\nlibcurl4-openssl-dev\n\n[pps]\nlibcurl-gnutls\n\n[dow"
  },
  {
    "path": "build/fbcode_builder/manifests/libdwarf",
    "chars": 293,
    "preview": "[manifest]\nname = libdwarf\n\n[rpms]\nlibdwarf-devel\nlibdwarf\n\n[debs]\nlibdwarf-dev\n\n[homebrew]\ndwarfutils\n\n[download]\nurl ="
  },
  {
    "path": "build/fbcode_builder/manifests/libdwarf-python",
    "chars": 389,
    "preview": "[manifest]\nname = libdwarf-python\n\n[rpms]\nlibdwarf-devel\nlibdwarf\n\n[debs]\nlibdwarf-dev\n\n[homebrew]\ndwarfutils\n\n[download"
  },
  {
    "path": "build/fbcode_builder/manifests/libelf",
    "chars": 422,
    "preview": "[manifest]\nname = libelf\n\n[rpms]\nelfutils-libelf-devel-static\n\n[debs]\nlibelf-dev\n\n[pps]\nlibelf\n\n[download]\nurl = https:/"
  },
  {
    "path": "build/fbcode_builder/manifests/libevent",
    "chars": 943,
    "preview": "[manifest]\nname = libevent\n\n[debs]\nlibevent-dev\n\n[homebrew]\nlibevent\n\n[rpms]\nlibevent-devel\n\n[pps]\nlibevent\n\n# Note that"
  },
  {
    "path": "build/fbcode_builder/manifests/libevent-python",
    "chars": 1136,
    "preview": "[manifest]\nname = libevent-python\n\n# NOTE: System packages (debs, rpms) removed because they don't include\n# LibeventCon"
  },
  {
    "path": "build/fbcode_builder/manifests/libffi",
    "chars": 325,
    "preview": "[manifest]\nname = libffi\n\n[debs]\nlibffi-dev\n\n[homebrew]\nlibffi\n\n[rpms]\nlibffi-devel\nlibffi\n\n[pps]\nlibffi\n\n[download]\nurl"
  },
  {
    "path": "build/fbcode_builder/manifests/libgit2",
    "chars": 820,
    "preview": "[manifest]\nname = libgit2\n\n[homebrew]\nlibgit2\n\n[rpms]\nlibgit2-devel\n\n[pps]\nlibgit2\n\n# Ubuntu 18.04 libgit2 has clash wit"
  },
  {
    "path": "build/fbcode_builder/manifests/libgpiod",
    "chars": 239,
    "preview": "[manifest]\nname = libgpiod\n\n[download]\nurl = https://cdn.kernel.org/pub/software/libs/libgpiod/libgpiod-1.6.tar.xz\nsha25"
  },
  {
    "path": "build/fbcode_builder/manifests/libiberty",
    "chars": 623,
    "preview": "[manifest]\nname = libiberty\n\n[rpms]\nbinutils-devel\nbinutils\n\n[debs.not(all(distro=ubuntu,distro_vers=\"24.04\"))]\nbinutils"
  },
  {
    "path": "build/fbcode_builder/manifests/libiberty-python",
    "chars": 705,
    "preview": "[manifest]\nname = libiberty-python\n\n[rpms]\nbinutils-devel\nbinutils\n\n[debs.not(all(distro=ubuntu,distro_vers=\"24.04\"))]\nb"
  },
  {
    "path": "build/fbcode_builder/manifests/libibverbs",
    "chars": 539,
    "preview": "[manifest]\nname = libibverbs\n\n[debs]\nlibibverbs-dev\nrdma-core\n\n[rpms]\nlibibverbs\nrdma-core-devel\n\n[download]\nurl = https"
  },
  {
    "path": "build/fbcode_builder/manifests/libmnl",
    "chars": 469,
    "preview": "[manifest]\nname = libmnl\n\n[rpms]\nlibmnl-devel\n\n# all centos 8 distros are missing this,\n# but its in fedora so may be ba"
  },
  {
    "path": "build/fbcode_builder/manifests/libnl",
    "chars": 337,
    "preview": "[manifest]\nname = libnl\n\n[rpms]\nlibnl3-devel\nlibnl3\n\n[debs]\nlibnl-3-dev\nlibnl-route-3-dev\n\n[pps]\nlibnl\n\n[download]\nurl ="
  },
  {
    "path": "build/fbcode_builder/manifests/liboqs",
    "chars": 391,
    "preview": "[manifest]\nname = liboqs\n\n[download]\nurl = https://github.com/open-quantum-safe/liboqs/archive/refs/tags/0.12.0.tar.gz\ns"
  },
  {
    "path": "build/fbcode_builder/manifests/libsai",
    "chars": 284,
    "preview": "[manifest]\nname = libsai\n\n[download]\nurl = https://github.com/opencomputeproject/SAI/archive/v1.16.3.tar.gz\nsha256 = 5c8"
  },
  {
    "path": "build/fbcode_builder/manifests/libsodium",
    "chars": 997,
    "preview": "[manifest]\nname = libsodium\n\n[debs]\nlibsodium-dev\n\n[homebrew]\nlibsodium\n\n[rpms]\nlibsodium-devel\nlibsodium-static\n\n[pps]\n"
  },
  {
    "path": "build/fbcode_builder/manifests/libtool",
    "chars": 359,
    "preview": "[manifest]\nname = libtool\n\n[homebrew]\nlibtool\n\n[rpms]\nlibtool\n\n[debs]\nlibtool\n\n[pps]\nlibtool\n\n[download]\nurl = https://f"
  },
  {
    "path": "build/fbcode_builder/manifests/libunwind",
    "chars": 710,
    "preview": "[manifest]\nname = libunwind\n\n[rpms]\nlibunwind-devel\nlibunwind\n\n# on ubuntu this brings in liblzma-dev, which in turn bre"
  },
  {
    "path": "build/fbcode_builder/manifests/libusb",
    "chars": 543,
    "preview": "[manifest]\nname = libusb\n\n[debs]\nlibusb-1.0-0-dev\n\n[homebrew]\nlibusb\n\n[rpms]\nlibusb-devel\nlibusb\n\n[pps]\nlibusb\n\n[downloa"
  },
  {
    "path": "build/fbcode_builder/manifests/libyaml",
    "chars": 266,
    "preview": "[manifest]\nname = libyaml\n\n[download]\nurl = https://pyyaml.org/download/libyaml/yaml-0.1.7.tar.gz\nsha256 = 8088e457264a9"
  },
  {
    "path": "build/fbcode_builder/manifests/llvm",
    "chars": 44,
    "preview": "[manifest]\nname = llvm\n\n[rpms]\nllvm15-devel\n"
  },
  {
    "path": "build/fbcode_builder/manifests/lmdb",
    "chars": 337,
    "preview": "[manifest]\nname = lmdb\n\n[build]\nbuilder = make\nsubdir = lmdb-LMDB_0.9.31/libraries/liblmdb\n\n[download]\nurl = https://git"
  },
  {
    "path": "build/fbcode_builder/manifests/lz4",
    "chars": 459,
    "preview": "[manifest]\nname = lz4\n\n[homebrew]\nlz4\n\n[rpms]\nlz4-devel\n# centos 8 and centos_stream 9 are missing this rpm\n[rpms.not(an"
  },
  {
    "path": "build/fbcode_builder/manifests/lz4-python",
    "chars": 555,
    "preview": "[manifest]\nname = lz4-python\n\n[homebrew]\nlz4\n\n[rpms]\nlz4-devel\n# centos 8 and centos_stream 9 are missing this rpm\n[rpms"
  },
  {
    "path": "build/fbcode_builder/manifests/magic_enum",
    "chars": 348,
    "preview": "[manifest]\nname = magic_enum\n\n[download]\nurl = https://github.com/Neargye/magic_enum/releases/download/v0.9.7/magic_enum"
  },
  {
    "path": "build/fbcode_builder/manifests/mcrouter",
    "chars": 557,
    "preview": "[manifest]\nname = mcrouter\nfbsource_path = fbcode/mcrouter\nshipit_project = mcrouter\nshipit_fbcode_builder = true\n\n[git]"
  },
  {
    "path": "build/fbcode_builder/manifests/mononoke",
    "chars": 1546,
    "preview": "[manifest]\nname = mononoke\nfbsource_path = fbcode/eden\nshipit_project = eden\nshipit_fbcode_builder = true\n\n[git]\nrepo_ur"
  },
  {
    "path": "build/fbcode_builder/manifests/mononoke_integration",
    "chars": 695,
    "preview": "[manifest]\nname = mononoke_integration\nfbsource_path = fbcode/eden\nshipit_project = eden\nshipit_fbcode_builder = true\n\n["
  },
  {
    "path": "build/fbcode_builder/manifests/moxygen",
    "chars": 574,
    "preview": "[manifest]\nname = moxygen\nfbsource_path = fbcode/moxygen\nshipit_project = moxygen\nshipit_fbcode_builder = true\n\n[git]\nre"
  },
  {
    "path": "build/fbcode_builder/manifests/mvfst",
    "chars": 491,
    "preview": "[manifest]\nname = mvfst\nfbsource_path = fbcode/quic\nshipit_project = mvfst\nshipit_fbcode_builder = true\n\n[git]\nrepo_url "
  },
  {
    "path": "build/fbcode_builder/manifests/mvfst-python",
    "chars": 635,
    "preview": "[manifest]\nname = mvfst-python\nfbsource_path = fbcode/quic\nshipit_project = mvfst\nshipit_fbcode_builder = true\n\n[git]\nre"
  },
  {
    "path": "build/fbcode_builder/manifests/ncurses",
    "chars": 448,
    "preview": "[manifest]\nname = ncurses\n\n[debs]\nlibncurses-dev\n\n[homebrew]\nncurses\n\n[rpms]\nncurses-devel\n\n[download]\nurl = https://ftp"
  },
  {
    "path": "build/fbcode_builder/manifests/nghttp2",
    "chars": 395,
    "preview": "[manifest]\nname = nghttp2\n\n[rpms]\nlibnghttp2-devel\nlibnghttp2\n\n[debs]\nlibnghttp2-dev\n\n[pps]\nlibnghttp2\n\n[download]\nurl ="
  },
  {
    "path": "build/fbcode_builder/manifests/ninja",
    "chars": 603,
    "preview": "[manifest]\nname = ninja\n\n[debs]\nninja-build\n\n[homebrew]\nninja\n\n[rpms]\nninja-build\n\n[pps]\nninja\n\n[download.os=windows]\nur"
  },
  {
    "path": "build/fbcode_builder/manifests/nlohmann-json",
    "chars": 252,
    "preview": "[manifest]\nname = nlohmann-json\n\n[download]\nurl = https://github.com/nlohmann/json/archive/refs/tags/v3.10.5.tar.gz\nsha2"
  },
  {
    "path": "build/fbcode_builder/manifests/nmap",
    "chars": 645,
    "preview": "[manifest]\nname = nmap\n\n[rpms]\nnmap\nnmap-ncat\n\n[debs]\nnmap\n\n# 18.04 combines ncat into the nmap package, newer need the "
  },
  {
    "path": "build/fbcode_builder/manifests/numa",
    "chars": 293,
    "preview": "[manifest]\nname = numa\n\n[download]\nurl = https://github.com/numactl/numactl/releases/download/v2.0.19/numactl-2.0.19.tar"
  },
  {
    "path": "build/fbcode_builder/manifests/openr",
    "chars": 598,
    "preview": "[manifest]\nname = openr\nfbsource_path = facebook/openr\nshipit_project = openr\nshipit_fbcode_builder = true\n\n[git]\nrepo_u"
  },
  {
    "path": "build/fbcode_builder/manifests/openssl",
    "chars": 742,
    "preview": "[manifest]\nname = openssl\n\n[debs]\nlibssl-dev\n\n[homebrew]\nopenssl\n# on homebrew need the matching curl and ca-\n\n[rpms]\nop"
  },
  {
    "path": "build/fbcode_builder/manifests/osxfuse",
    "chars": 261,
    "preview": "[manifest]\nname = osxfuse\n\n[download]\nurl = https://github.com/osxfuse/osxfuse/archive/osxfuse-3.8.3.tar.gz\nsha256 = 93b"
  },
  {
    "path": "build/fbcode_builder/manifests/patchelf",
    "chars": 275,
    "preview": "[manifest]\nname = patchelf\n\n[rpms]\npatchelf\n\n[debs]\npatchelf\n\n[pps]\npatchelf\n\n[download]\nurl = https://github.com/NixOS/"
  },
  {
    "path": "build/fbcode_builder/manifests/pcre2",
    "chars": 321,
    "preview": "[manifest]\nname = pcre2\n\n[homebrew]\npcre2\n\n[rpms]\npcre2-devel\npcre-static\n\n[debs]\nlibpcre2-dev\n\n[download]\nurl = https:/"
  },
  {
    "path": "build/fbcode_builder/manifests/perl",
    "chars": 263,
    "preview": "[manifest]\nname = perl\n\n[download.os=windows]\nurl = https://strawberryperl.com/download/5.28.1.1/strawberry-perl-5.28.1."
  },
  {
    "path": "build/fbcode_builder/manifests/pexpect",
    "chars": 326,
    "preview": "[manifest]\nname = pexpect\n\n[download]\nurl = https://files.pythonhosted.org/packages/0e/3e/377007e3f36ec42f1b84ec322ee121"
  },
  {
    "path": "build/fbcode_builder/manifests/proxygen",
    "chars": 520,
    "preview": "[manifest]\nname = proxygen\nfbsource_path = fbcode/proxygen\nshipit_project = proxygen\nshipit_fbcode_builder = true\n\n[git]"
  },
  {
    "path": "build/fbcode_builder/manifests/python",
    "chars": 1265,
    "preview": "[manifest]\nname = python\n\n[homebrew]\npython@3.10\n\n# sapling needs match statements with arrive in python 3.12 in centos "
  },
  {
    "path": "build/fbcode_builder/manifests/python-3_14",
    "chars": 319,
    "preview": "# This is primarily to support CinderX's CI, so it's not heavily configured.\n\n[manifest]\nname = python-3_14\n\n[download]\n"
  },
  {
    "path": "build/fbcode_builder/manifests/python-click",
    "chars": 339,
    "preview": "[manifest]\nname = python-click\n\n[download]\nurl = https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd1"
  },
  {
    "path": "build/fbcode_builder/manifests/python-filelock",
    "chars": 297,
    "preview": "[manifest]\nname = python-filelock\n\n[download]\nurl = https://files.pythonhosted.org/packages/31/24/ee722b92f23b9ebd87783e"
  },
  {
    "path": "build/fbcode_builder/manifests/python-main",
    "chars": 471,
    "preview": "# This is primarily to support CinderX's CI, so it's not heavily configured.\n\n[manifest]\nname = python-main\nfbsource_pat"
  },
  {
    "path": "build/fbcode_builder/manifests/python-psutil",
    "chars": 377,
    "preview": "[manifest]\nname = python-psutil\n\n[download]\nurl = https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839"
  },
  {
    "path": "build/fbcode_builder/manifests/python-ptyprocess",
    "chars": 305,
    "preview": "[manifest]\nname = python-ptyprocess\n\n[download]\nurl = https://files.pythonhosted.org/packages/d1/29/605c2cc68a9992d18dad"
  },
  {
    "path": "build/fbcode_builder/manifests/python-pyyaml",
    "chars": 355,
    "preview": "[manifest]\nname = python-pyyaml\n\n[download]\nurl = https://files.pythonhosted.org/packages/25/a2/b725b61ac76a75583ae7104b"
  },
  {
    "path": "build/fbcode_builder/manifests/python-setuptools",
    "chars": 517,
    "preview": "[manifest]\nname = python-setuptools\n\n[download]\nurl = https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea5"
  },
  {
    "path": "build/fbcode_builder/manifests/python-setuptools-69",
    "chars": 389,
    "preview": "[manifest]\nname = python-setuptools-69\n\n[download]\nurl = https://files.pythonhosted.org/packages/c0/7a/3da654f49c95d0cc6"
  },
  {
    "path": "build/fbcode_builder/manifests/python-six",
    "chars": 292,
    "preview": "[manifest]\nname = python-six\n\n[download]\nurl = https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce"
  },
  {
    "path": "build/fbcode_builder/manifests/python-toml",
    "chars": 294,
    "preview": "[manifest]\nname = python-toml\n\n[download]\nurl = https://files.pythonhosted.org/packages/a2/12/ced7105d2de62fa7c8fb5fce92"
  },
  {
    "path": "build/fbcode_builder/manifests/ragel",
    "chars": 261,
    "preview": "[manifest]\nname = ragel\n\n[debs]\nragel\n\n[homebrew]\nragel\n\n[rpms]\nragel\n\n[download]\nurl = https://www.colm.net/files/ragel"
  },
  {
    "path": "build/fbcode_builder/manifests/range-v3",
    "chars": 282,
    "preview": "[manifest]\nname = range-v3\n\n[download]\nurl = https://github.com/ericniebler/range-v3/archive/refs/tags/0.11.0.tar.gz\nsha"
  },
  {
    "path": "build/fbcode_builder/manifests/rdma-core",
    "chars": 70,
    "preview": "[manifest]\nname = rdma-core\n\n[debs]\nrdma-core\n\n[rpms]\nrdma-core-devel\n"
  },
  {
    "path": "build/fbcode_builder/manifests/re2",
    "chars": 287,
    "preview": "[manifest]\nname = re2\n\n[homebrew]\nre2\n\n[debs]\nlibre2-dev\n\n[rpms]\nre2\nre2-devel\n\n[pps]\nre2\n\n[download]\nurl = https://gith"
  },
  {
    "path": "build/fbcode_builder/manifests/rebalancer",
    "chars": 971,
    "preview": "[manifest]\nname = rebalancer\nfbsource_path = fbcode/algopt/rebalancer/\nshipit_project = rebalancer\nshipit_fbcode_builder"
  },
  {
    "path": "build/fbcode_builder/manifests/ripgrep",
    "chars": 144,
    "preview": "[manifest]\nname = ripgrep\n\n[rpms]\nripgrep\n\n[debs]\nripgrep\n\n[homebrew]\nripgrep\n\n# only used from system packages currentl"
  },
  {
    "path": "build/fbcode_builder/manifests/rocksdb",
    "chars": 1028,
    "preview": "[manifest]\nname = rocksdb\n\n[download]\nurl = https://github.com/facebook/rocksdb/archive/refs/tags/v8.7.3.zip\nsha256 = 36"
  },
  {
    "path": "build/fbcode_builder/manifests/rust-shed",
    "chars": 652,
    "preview": "[manifest]\nname = rust-shed\nfbsource_path = fbcode/common/rust/shed\nshipit_project = rust-shed\nshipit_fbcode_builder = t"
  },
  {
    "path": "build/fbcode_builder/manifests/sapling",
    "chars": 1651,
    "preview": "[manifest]\nname = sapling\nfbsource_path = fbcode/eden\nshipit_project = eden\nshipit_fbcode_builder = true\n\n[github.action"
  },
  {
    "path": "build/fbcode_builder/manifests/snappy",
    "chars": 537,
    "preview": "[manifest]\nname = snappy\n\n[homebrew]\nsnappy\n\n[debs]\nlibsnappy-dev\n\n[rpms]\nsnappy-devel\n\n[pps]\nsnappy\n\n[download]\nurl = h"
  },
  {
    "path": "build/fbcode_builder/manifests/sparsemap",
    "chars": 241,
    "preview": "[manifest]\nname = sparsemap\n\n[download]\nurl = https://github.com/Tessil/sparse-map/archive/refs/tags/v0.6.2.tar.gz\nsha25"
  },
  {
    "path": "build/fbcode_builder/manifests/sqlite3",
    "chars": 370,
    "preview": "[manifest]\nname = sqlite3\n\n[debs]\nlibsqlite3-dev\nsqlite3\n\n[homebrew]\nsqlite\n\n[rpms]\nsqlite-devel\nsqlite-libs\nsqlite\n\n[pp"
  }
]

// ... and 940 more files (download for full content)

About this extraction

This page contains the full source code of the facebook/proxygen GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1140 files (7.5 MB), approximately 2.0M tokens, and a symbol index with 6954 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!