flexrag

View on PyPIReverse Dependencies (0)

0.1.12 flexrag-0.1.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
flexrag-0.1.12-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
flexrag-0.1.12-cp313-cp313-win_amd64.whl
flexrag-0.1.12-cp313-cp313-win32.whl
flexrag-0.1.12-cp313-cp313-musllinux_1_2_x86_64.whl
flexrag-0.1.12-cp313-cp313-musllinux_1_2_i686.whl
flexrag-0.1.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
flexrag-0.1.12-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
flexrag-0.1.12-cp312-cp312-win_amd64.whl
flexrag-0.1.12-cp312-cp312-win32.whl
flexrag-0.1.12-cp312-cp312-musllinux_1_2_x86_64.whl
flexrag-0.1.12-cp312-cp312-musllinux_1_2_i686.whl
flexrag-0.1.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
flexrag-0.1.12-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
flexrag-0.1.12-cp311-cp311-win_amd64.whl
flexrag-0.1.12-cp311-cp311-win32.whl
flexrag-0.1.12-cp311-cp311-musllinux_1_2_x86_64.whl
flexrag-0.1.12-cp311-cp311-musllinux_1_2_i686.whl

Wheel Details

Project: flexrag
Version: 0.1.12
Filename: flexrag-0.1.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Download: [link]
Size: 1153738
MD5: 47897eda034cd949f0462458f2838a6a
SHA256: 0f6b0ca73defb8ce7ee55ef3e8c48444bc5ac48172b873fa6b43320bb1612416
Uploaded: 2025-02-26 09:14:39 +0000

dist-info

METADATA

Metadata-Version: 2.2
Name: flexrag
Version: 0.1.12
Summary: A RAG Framework for Information Retrieval and Generation.
Author: Zhuocheng Zhang
Author-Email: zhuocheng_zhang[at]outlook.com
Home-Page: https://github.com/ictnlp/flexrag
License: MIT License
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.11
Requires-Dist: numpy (<2.0.0)
Requires-Dist: tenacity
Requires-Dist: hydra-core (>=1.3)
Requires-Dist: omegaconf (>=2.3.0)
Requires-Dist: pillow
Requires-Dist: accelerate (>=0.26.0)
Requires-Dist: colorama
Requires-Dist: rouge
Requires-Dist: sacrebleu (>=2.4.2)
Requires-Dist: pytrec_eval (>=0.5)
Requires-Dist: datasets (>=3.2.0)
Requires-Dist: openai (>=1.30.1)
Requires-Dist: anthropic
Requires-Dist: cohere
Requires-Dist: ollama
Requires-Dist: vllm (>=0.6.0)
Requires-Dist: sentence_transformers
Requires-Dist: transformers (>=4.44.0)
Requires-Dist: mixedbread-ai
Requires-Dist: voyageai
Requires-Dist: lmdb
Requires-Dist: cloudpickle
Requires-Dist: unidecode
Requires-Dist: sacremoses
Requires-Dist: opencc
Requires-Dist: pandas
Requires-Dist: pylance
Requires-Dist: bm25s
Requires-Dist: elasticsearch (>=8.14.0)
Requires-Dist: torch (>=2.3.0)
Requires-Dist: beautifulsoup4
Requires-Dist: typesense
Requires-Dist: httpx
Requires-Dist: scipy
Requires-Dist: gradio (>=5.8.0)
Requires-Dist: regex
Requires-Dist: nltk
Requires-Dist: faiss-cpu
Requires-Dist: scann (>=1.3.2); extra == "scann"
Requires-Dist: annoy (>1.17.0); extra == "annoy"
Requires-Dist: llama_cpp_python (>=0.2.84); extra == "llamacpp"
Requires-Dist: minference (>=0.1.5); extra == "minference"
Requires-Dist: duckduckgo_search; extra == "web"
Requires-Dist: serpapi; extra == "web"
Requires-Dist: pyppeteer; extra == "web"
Requires-Dist: docling; extra == "docs"
Requires-Dist: markitdown; extra == "docs"
Requires-Dist: llama_cpp_python (>=0.2.84); extra == "all"
Requires-Dist: minference (>=0.1.5); extra == "all"
Requires-Dist: PySocks (>=1.7.1); extra == "all"
Requires-Dist: duckduckgo_search; extra == "all"
Requires-Dist: serpapi; extra == "all"
Requires-Dist: docling; extra == "all"
Requires-Dist: markitdown; extra == "all"
Requires-Dist: annoy (>1.17.0); extra == "all"
Requires-Dist: black; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: sphinx; extra == "dev"
Requires-Dist: sphinx-autobuild; extra == "dev"
Requires-Dist: myst-parser; extra == "dev"
Provides-Extra: scann
Provides-Extra: annoy
Provides-Extra: llamacpp
Provides-Extra: minference
Provides-Extra: web
Provides-Extra: docs
Provides-Extra: all
Provides-Extra: dev
Description-Content-Type: text/markdown
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary
License-File: LICENSE
[Description omitted; length: 5028 characters]

WHEEL

Wheel-Version: 1.0
Generator: setuptools (75.8.1)
Root-Is-Purelib: false
Tag: cp313-cp313-manylinux_2_17_x86_64
Tag: cp313-cp313-manylinux2014_x86_64

RECORD

Path Digest Size
flexrag-0.1.12.dist-info/LICENSE sha256=axJS-Ks3eUsdSw26cT156q-1FyWu87a_E44eAIyG6Mo 1071
flexrag-0.1.12.dist-info/WHEEL sha256=FI0-kiJ0pZ-PcDGyVTK97mrAyaNHapiKRTo2H8pUbec 151
flexrag-0.1.12.dist-info/METADATA sha256=hz6CMeY1Pan7-G0PBjJvXHlKCCSwrhFuvGtOyDcm6Hc 8345
flexrag-0.1.12.dist-info/top_level.txt sha256=TRxl6_6Go0HBAQmCBoz5QPKcX-IFbYgrYg2dYg_GtGo 8
flexrag-0.1.12.dist-info/RECORD
flexrag/__init__.py sha256=Z2WOT1GxYhyQf8Q65hNbonB6ZC_7l5fx2B6zfZ5Fjac 288
flexrag/common_dataclass.py sha256=No8hSZ9cSR6bWisTx5SVp45Mw9XoBFLwUUVnwyYZniM 2765
flexrag/utils.py sha256=x1vyGKpgWtbiUOlvnzb4tE9X0ZvSVddaONA-GO6Z04k 21074
flexrag/context_refine/refiner.py sha256=cUA5bYU2qFMGU3Jw2iJM0JBv2VBjNkffKR_EW41NGe4 656
flexrag/context_refine/__init__.py sha256=AFgIbHUNDsQFErLPI671alcha3ivuXeI_t6RkPQnoOA 633
flexrag/context_refine/arranger.py sha256=k2B_31K1aN3o6ruEOkUTGFNxFKzsYsUR8z4CXuJYNVE 2144
flexrag/context_refine/summarizer.py sha256=agQHLnYy9Ud9B6-VCQ3AJqSQdSCXMDSpD1-cTh-Zh20 10184
flexrag/document_parser/markitdown_parser.py sha256=4tMdU3MgbYPf_CwaFgfr2bv9GI_cbHi-pKthG9o3iv4 642
flexrag/document_parser/__init__.py sha256=Ew8WA7GOyNNFnuciVkTlI3hMrnIE4zeymAJZx1VIKyE 435
flexrag/document_parser/document_parser_base.py sha256=S5y8HwAvP85v31_OP5d6P0aSL31guOpC_ofcIkkbohE 831
flexrag/document_parser/docling_parser.py sha256=FSoFYQDoif6Ex0P9bwzqcraXiVzEs2AfyakoiW8U_Fw 1912
flexrag/datasets/retrieval_dataset.py sha256=n7Ff-Brxil6Bo79zyxccw-9R0jfplMUPUKCSX10w3jo 3644
flexrag/datasets/__init__.py sha256=mVAHJkTzGCJBIWZy8oddYuDmLRVtgLTAGN7PII72IUg 888
flexrag/datasets/hf_dataset.py sha256=Qt8yAzXARIxXjT7YXt1akygfK41U9sv87pg3WlZKmxs 3223
flexrag/datasets/line_delimited_dataset.py sha256=pKCjx7VPEPPZLtuP7WcCU0CUL2_GPvVpfimd5hrDM7g 4500
flexrag/datasets/document_dataset.py sha256=FvWn5N2irKivclHBUJx0q0yw3UVcAomveHy2vl-StzU 1743
flexrag/datasets/rag_dataset.py sha256=757Qp1E7gX1LUEJPLOYfTzWeFBa-DGE2ozP8Cto7R_Y 8043
flexrag/datasets/dataset.py sha256=MIYVtOKYSn0MTOozIc3qJoL6F5GieLUkJjEBpTx-yR4 4461
flexrag/prompt/__init__.py sha256=SJo2ciZyPs4vcP008OzJHG-7S-CyFOx4M6JecW1Seug 313
flexrag/prompt/prompt_base.py sha256=x83-KPmAvBRSiLy2pRYo3lxd683XmHolBsvJZ_qZ514 11896
flexrag/prompt/template.py sha256=mkKLvFQzw9P7n3umVMP9LTmAXSmjUMCz2l_8N11y5BA 6730
flexrag/metrics/evaluator.py sha256=vJpmYZ7xYJSGYHY0_-sLfC2DL6HX7qd1kRFbqJcPam8 3772
flexrag/metrics/xfinder.py sha256=DOTumhWa5wLldg5rhWPa630cTHrq9xB8mIk0ttvLOwQ 1996
flexrag/metrics/retrieval_metrics.py sha256=mhX1eufXT4Zhd2jZAQhnE6jAOkNZYliuvnCvT0ctbL4 11346
flexrag/metrics/__init__.py sha256=OKA96wJjtwfybBLLz32yuq_LSUFj3a0Ut0j0MhFbyZM 1079
flexrag/metrics/matching_metrics.py sha256=QpJ2HDAWlYX7BbCJeyF51xNiuGR8W_yQUtzeWCfS3mU 3046
flexrag/metrics/lib_rel.cpp sha256=L1w2NYpz2sKuPF_ifg4L0hQOuyc-YebiZeOmByB896k 732
flexrag/metrics/generation_metrics.py sha256=S0tF6xJIcLFpExpG7geAtOPEyb_PeDLZKjZfTAkZGWo 4950
flexrag/metrics/xfinder_utils.py sha256=50JqWwO-kSTWfoc0TgAK2U4GtKoE3RsIMSLLeKIU8U4 24157
flexrag/metrics/metrics_base.py sha256=TE0CmTntWopJW9bcNsqnmlpPnf0jR8NEtwEjXN-aczI 2762
flexrag/metrics/lib_rel.cpython-313-x86_64-linux-gnu.so sha256=K3IbxucilphddV5bvpnmlm1B1HBp7z5BRd20IVvemcM 3152904
flexrag/entrypoints/cache.py sha256=EIHpStjB1OEd42Uvd-1Usc0bMokWcykuu7Hmydfw5YY 994
flexrag/entrypoints/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
flexrag/entrypoints/run_retriever.py sha256=nloXNEFpwh7o5oXfsu8SqkSOeqg2utgO7pVQxkJrzO8 3722
flexrag/entrypoints/rebuild_index.py sha256=pVfl8G5WfC9NcVs41j0D6woJ-3fZ6ttlnnMtjqIwoSc 623
flexrag/entrypoints/run_interactive.py sha256=kfiRfueVOIdbLKE-r7H84SGt9MLm9F3kUPg8Hl-vJws 4463
flexrag/entrypoints/evaluate.py sha256=6qGfINSDJ0pKdsuA-uneMqwPVwHqSs4_Oy5WstAo9Gw 1889
flexrag/entrypoints/combine_outputs.py sha256=Y6diH_UwRbGkgm_WNLM2PipZ-can1H7a08Ucb1xy2DQ 2696
flexrag/entrypoints/prepare_index.py sha256=jGJSyMg5CEWxQDJg0z0YDsyz7EYqVry70mcYxCPkSoI 2143
flexrag/entrypoints/run_assistant.py sha256=qGjNYeuKDQ9yaKpIrNhgBiOQ9iGHG1zZ9OIZvJRjlf8 4078
flexrag/entrypoints/assets/flexrag.png sha256=MPSIBbdfVcR2fZ1jCzZAeHFaxStFimkzHrxnqROZ3NI 80305
flexrag/entrypoints/assets/flexrag-wide.png sha256=DeBipwzc0AhW2oH714NPFGRdqJCBYqHBk8pibwjVFJ0 112959
flexrag/entrypoints/assets/user.png sha256=07OJY2nS4dDb47Qc1PJDLPSVYBLv2KOzrDSlTsLisyI 12583
flexrag/entrypoints/assets/robot.png sha256=JA0UGH_S3uwG-zNtMEOcUFQqvvz2opT10ThtwA6ijb8 14911
flexrag/chunking/__init__.py sha256=gKKPGFqQY_HG31pQI996lyU2k_h0hwgEtkW1E1avrlY 737
flexrag/chunking/basic_chunkers.py sha256=S8stoOs22OmgLP5xQ9hJnzGoYgCJoGvtLTBVD7xkJs8 11321
flexrag/chunking/semantic_chunker.py sha256=BJKeSBADaNnS7VE11VcfsO2rXMOYBesc-lZudB_NPpk 10439
flexrag/chunking/sentence_splitter.py sha256=5XlSpoX_V4ykxFE8puh6UNrAcrzF7o1v641kTLxmhrk 4992
flexrag/chunking/chunker_base.py sha256=9d3wS57HZ6aJVjvht-eg-_2E-dB9TW1syjhQM3I_sXU 638
flexrag/cache/__init__.py sha256=lFbZgRctdnfzzdDYXMpbs_YIOYXPXsVb8T89Ew022qw 1003
flexrag/cache/serializer.py sha256=HRn4PBj2jR4KP85hr5qBelUbGaRdOtrR7RJkWcn1nmM 1996
flexrag/cache/persistent_cache.py sha256=lDfosMW-iCqZ4gw4EBVRZ3ZJENWrkQjFTxf7qQNXx8s 7855
flexrag/cache/backends.py sha256=etYFBIy_HEfhapl4vAEtA32yhjdR5J9s6UmHl_rwfKk 3592
flexrag/text_process/basic_processors.py sha256=TRwlMvyUZ2IYYMp7bCmhOQOeMycszIQfU8odndRp2XY 4518
flexrag/text_process/basic_filters.py sha256=PvjAvScJEl81LiWDB_2fYrSbvXUxe7ecV8_5aFlu6TQ 2505
flexrag/text_process/__init__.py sha256=3_1EoEoCXtvl0KXiPi4ya1CmuRsHIqr9Ic_jv-KxU9U 762
flexrag/text_process/processor.py sha256=fFXC0eGp3iEr3OSsB0IwlTYQArZLeGeVmhgoHu1KYLk 935
flexrag/text_process/pipeline.py sha256=BuBAkC57M1KAstEJcakgw6Fr-qh55B_hDrcVwgZd4CU 1614
flexrag/text_process/utils.py sha256=VpoCTIWb58cEVjfhYwpXwbbRFVb8BsexZJ3MNcsufnw 1867
flexrag/text_process/normalize_tokens.py sha256=PdTtkbob1czpoATb4_XpTodkHRYQBynMl6ITwRdhBoo 4893
flexrag/models/model_base.py sha256=RGMqjHwgAyv4HTfuzUSCw_XgV59C5U5Ft0sLU0imADQ 9263
flexrag/models/__init__.py sha256=2PzxNf9UCUFrR2cvOtsOGGn4joO_fmR_k5B_P_348eg 2102
flexrag/models/openai_model.py sha256=XlBi6fzQfjI6XDTnNPlOThJ5pcz82emVboOXT1uT9NI 10470
flexrag/models/cohere_model.py sha256=qjKM9T1JBggk9F_J4crHkxoYJf5QCfA-NHJDX3XeNsE 2856
flexrag/models/sentence_transformers_model.py sha256=ZHQk8N8iCj0_qlX9RXg9ESv5wcvzWPvpwgBLbIFc1Q4 3807
flexrag/models/anthropic_model.py sha256=q-oGoJNtiClIVfIOqNoLJmKH7MYJrxMv-pVmGRJSQU8 5589
flexrag/models/tokenizer.py sha256=8Qd2ZnfbgJ8hxUi6kYj0tIeeRJCxk5dGU6r_A5O0bmk 6797
flexrag/models/jina_model.py sha256=ggs2UuAlurZb6MbD1BnlxY7IXSfEa0g0PzmohE9aPkI 3339
flexrag/models/llamacpp_model.py sha256=wYONlgR22pQhrjh-IZpZPN4i3GYzG5C_Oll5_5NsB_s 4637
flexrag/models/utils.py sha256=7e5t386xwsqn3dQUUvJZkGOynlUoKL7DpxnNrv2eQgg 6754
flexrag/models/ollama_model.py sha256=niEOgKQVBs5hdL4P_BbWhBjMTVhuWk-oFDJwpD4KFa4 10837
flexrag/models/hf_model.py sha256=vm0KQkWvj61L9HG1auPtIkSstMJiOxXd6LETimDm9Yc 24845
flexrag/models/vllm_model.py sha256=_1g3hzPZbit0sMPZXQ4gTKeHJuDhSHUL_Yb4wJxOMGc 5395
flexrag/ranker/mixedbread_ranker.py sha256=t6vFui1QqdANmN4x0RYnAxpOU0CokHsthcE10w8PbNs 2394
flexrag/ranker/__init__.py sha256=RIr3eLsxqK1NEqxQ6quDbF_f1cbs8knMuE4orFyV6MI 1170
flexrag/ranker/jina_ranker.py sha256=YPLUneqDzb5pOvDFDy4qubKWF90aX1PAB8fi0tT388o 2950
flexrag/ranker/hf_ranker.py sha256=HfwEGtCfOqAlzC9olH3WO6ArCGnLikJZaJYnzAY7pTw 12115
flexrag/ranker/voyage_ranker.py sha256=NSkXbDx79rBsYbSjQk2ic1kc-dW4sUmyLBaUcWWwX3A 2113
flexrag/ranker/cohere_ranker.py sha256=xBq_Q_e9GHf6mIqk2mUrZ0s1QGz-l1THx7_KUsZx6Ys 2307
flexrag/ranker/ranker.py sha256=KZX1bQoX8Bvl8WWRb3ay_BtsB-VClxCjUyaBb54Bid4 4364
flexrag/ranker/gpt_ranker.py sha256=Rlb3669d8ILXiRccmbWcJ7PCTQV0BZnF1qoOpdTjqjs 5589
flexrag/ranker/ranker_prompts/rankgpt_prompt.json sha256=Ez9AcQ_dq0sD632lJipZStK-lcAIXyJBdxs7PzGPqnA 973
flexrag/retriever/__init__.py sha256=iUKrGDtTZLXFwBtOlJYyk4-WLOCwRuEJI4MKmmZYMKs 1650
flexrag/retriever/hyde_retriever.py sha256=w7HusQ0rWDPXGwteVfcHtLRPYasZdAds1ja_Js-1Z_s 3046
flexrag/retriever/elastic_retriever.py sha256=v350Ye-lCHDNWcUBVa42NDxEDcCKnkwtyVewB0I77EY 8053
flexrag/retriever/dense_retriever.py sha256=Y4H4RpKA5_tc5yr2HbhuLa7YqBqK2mErqXHh6GIwaJI 14600
flexrag/retriever/retriever_base.py sha256=lAmWM56f6uc7X7KkJBdpmoAQLwGy6mVmdWXcdMzONVM 18521
flexrag/retriever/typesense_retriever.py sha256=rMrT_fqjDXX-1UJZ717kqwVma0VylsxnAmJIoIiD6-Q 5836
flexrag/retriever/bm25s_retriever.py sha256=CQjCh6SZJYqoMZRWg1_1LpKpu3nEtfa5FY47-b5zBLM 6715
flexrag/retriever/index/index_base.py sha256=nBaHdsrN12akgjVlgB1xh0-lCm5O14A7xpIXeQLKqlg 6462
flexrag/retriever/index/annoy_index.py sha256=Jpa9tRTzufvKqSon-_g6lsKM4lUz74-HkDqUJK6qFEc 7486
flexrag/retriever/index/__init__.py sha256=3vHPPQwOUkDls2CrJXF8MN4BHJn03bEAhoQzvI1j5Us 571
flexrag/retriever/index/scann_index.py sha256=0dUFazTymVWMLIxjZE-KQoTQQgZMjQGKyzA7KKXrgBQ 6992
flexrag/retriever/index/faiss_index.py sha256=ARz0DXzL729WKyGK-wVW6PbxsHwr51ERRK7Ea4sYSa8 14693
flexrag/retriever/web_retrievers/__init__.py sha256=OQJ88_gQBZ6FZgnJa3ZGVI9sH3FsPT9uvehDw4VTP9Y 1709
flexrag/retriever/web_retrievers/web_downloader.py sha256=o-wOQHs4FXmf8Gx2olgxFX5j434dGXUcd9f1Bi173jg 7172
flexrag/retriever/web_retrievers/web_retriever.py sha256=3QJfyl24ecxL31bI7_0pftgvnEL0RnmNYixocoz0yhc 11295
flexrag/retriever/web_retrievers/wikipedia_retriever.py sha256=vFgO6a1A9lMLFa7NdKls-dUyRo_tNs0gCI75rqLPerE 4125
flexrag/retriever/web_retrievers/web_reader.py sha256=eBW2Vr2mN4bdsKKA69I0t_7OTdo2fg5JXbRAmYgAk6M 10787
flexrag/assistant/document_chat_assistant.py sha256=umBhDTeEPLJzj_hYXT71UjKFeif4gxDM0OwBSWkKiSQ 3507
flexrag/assistant/__init__.py sha256=IWftIsEfuP86n37Xj2l_Eb5V3C5RZeHFjetariBMVk0 746
flexrag/assistant/modular_rag_assistant.py sha256=Bd-OluWbvbJ687A-861SbX0S63halHSJEFjBmx45DcE 5972
flexrag/assistant/chatqa_assistant.py sha256=Ox8D-moWjkextmFRpmHIirOx9vWM0m-PdDsZfad2QWI 2477
flexrag/assistant/assistant.py sha256=MTkZjNe2hmWlRZNWW7M7LvdRK5lXyIcRUskRGSsv5ro 2066
flexrag/assistant/online_assistant.py sha256=CwOLujxYnamItPOfCHWwc3cH-Yaq0O7zkzyzgcf6LTY 8260
flexrag/assistant/basic_assistant.py sha256=G70_KyX7rsd1ak8EvIV1wbwiF0c7F_lBO14YCS-W41Q 2534
flexrag/assistant/assistant_prompts/shortform_generate_prompt_with_context.json sha256=MWlkJE0h2bsujOd6oc2vRje6Cp2nHq7vy2MdcigkdI0 317
flexrag/assistant/assistant_prompts/longform_generate_prompt_without_context.json sha256=z6pf_Dl87ET9JSHFZdcNQoWVKUPQuz0euKsK9YaB-ps 148
flexrag/assistant/assistant_prompts/longform_generate_prompt_with_context.json sha256=vVUdL_tiBcwUHQdbafFZsebcvyWiFufNbpGrPor1zic 258
flexrag/assistant/assistant_prompts/shortform_generate_prompt_without_context.json sha256=QnafhP3v5P584bER8T60FUabPi8fyG1aUywAfpeS6wY 207

top_level.txt

flexrag