# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

2CEEA6AB43BCAE1979B2A6D85FC0CA429877E5AB;org.ow2.asm:asm:9.9.1
0235BA8B489512805AC13A8F9EA77A1CA5EBE3E8;aopalliance:aopalliance:1.0
1194890E6F56EC29177673F2F12D0B8E627DEC98;org.apache.httpcomponents:httpclient:4.5.14
51CF043C87253C9F58B539C9F7E44C8894223850;org.apache.httpcomponents:httpcore:4.4.16
AEAFFD00D57023A2C947393ED251F0354F0985FC;com.google.guava:failureaccess:1.0.3
A461452D3E31BEBF2706323F8738EC44B19C96E1;commons-cli:commons-cli:1.11.0
D95F998DB5F89900FE895DAF6CD2CDDCB2F1D64B;commons-codec:commons-codec:1.21.0
48B8230771E573B54CE6E867A9001E75977FE78E;com.google.code.gson:gson:2.13.2
4381275EFDEF6DDFAE38F002C31E84CD001C97F0;com.google.errorprone:error_prone_annotations:2.41.0
C376B13067CC99A5774403530953F7B05A91E218;com.google.guava:guava:33.6.0-jre
E7BA4C25BEC3761840F67C73F166C0D509D01D1D;com.google.inject:guice:5.1.0:classes
C8DC6E80D4FF74B0ECE025CF7EFA583C49CECF70;org.fusesource.jansi:jansi:2.4.3
7425A601C1C7EC76645A78D22B8C6A627EDEE507;org.jspecify:jspecify:1.0.0
6975DA39A7040257BD51D21A231B76C915872D38;javax.inject:javax.inject:1
D877E195A05ACA4A2F1AD2FF14BFEC1393AF4B5E;org.slf4j:jcl-over-slf4j:1.7.36
934C04D3CFEF185A8008E7BF34331B79730A9D43;javax.annotation:javax.annotation-api:1.3.2
1176C6579A8A68508C3479EF72D514E71C98DDCA;org.apache.maven:maven-artifact:3.9.16
D23AD247143E3B0FB6DE5B61C56D46BBA6513F9B;org.apache.maven:maven-builder-support:3.9.16
98607B3EDD15524059443FBE5A78B895C74CB0EF;org.apache.maven:maven-compat:3.9.16
1F2B4176F1395310A9BCE323919189CEC51F7115;org.apache.maven:maven-core:3.9.16
52830CBE05B41B4EFA66F5C9B3A55E9E44D5B8C0;org.apache.maven:maven-embedder:3.9.16
6F93DBC874EF321B0C3734DEE41A6D17E18CEEBD;org.apache.maven:maven-model:3.9.16
EB7A9CA8CC2D61D7C6430DD2EE16F71628B2046D;org.apache.maven:maven-model-builder:3.9.16
4509EBC6C30856368A5786859342EEF9B43AB27A;org.apache.maven:maven-plugin-api:3.9.16
D2013B76825DE9D844D5894E17FB4A894E8E8AE1;org.apache.maven:maven-repository-metadata:3.9.16
2FE7E86E3C193121789470507CF4FADD5BD7AD59;org.apache.maven.resolver:maven-resolver-api:1.9.27
219C1F8C3289B9382B1F86FC278430D3A22968C3;org.apache.maven.resolver:maven-resolver-connector-basic:1.9.27
876FC89223D9572CADE60A1B8158846724548D07;org.apache.maven.resolver:maven-resolver-impl:1.9.27
72C89AD87BE374309A7308EE144949360ED482E8;org.apache.maven.resolver:maven-resolver-named-locks:1.9.27
92FAACF3D46FE4B971689B4839B0D9AAF438CE48;org.apache.maven:maven-resolver-provider:3.9.16
FB64E47ACDC73F938B4D5B6464EF7A6351F983D5;org.apache.maven.resolver:maven-resolver-spi:1.9.27
6931510AEC55201631D9D904A7D4F8F81541A335;org.apache.maven.resolver:maven-resolver-transport-http:1.9.27
23AF71B8583C0EF51004590196DE12C410DBCCF6;org.apache.maven.resolver:maven-resolver-transport-wagon:1.9.27
89A2B09002672807C05B3B10AFCCBCB9CFCD8486;org.apache.maven.resolver:maven-resolver-transport-file:1.9.27
7EE4446AF6AAB27475765EC9C9DC1FB2B082AF2B;org.apache.maven.resolver:maven-resolver-util:1.9.27
AB466FE1CB5B80D1B5E6F6B5BA3F87DFC56F75B6;org.apache.maven:maven-settings:3.9.16
31321459AEE3DD0A12D72A9FB71BFAC31B0FB529;org.apache.maven:maven-settings-builder:3.9.16
BFA28296272A5915B08DE9F11F34A94B0A818FD0;org.apache.maven.shared:maven-shared-utils:3.4.2
B9BE9600688720D79CE2374C167CBCEBA8EE9F6D;org.apache.maven:maven-slf4j-provider:3.9.16
D9C2D6FF4B461AB9492EDB1CD9D8239CFB41F4CA;org.eclipse.sisu:org.eclipse.sisu.inject:1.0.0
873767E95597C9E31749123A408BD4949C29A46C;org.eclipse.sisu:org.eclipse.sisu.plexus:1.0.0
425EA8E534716B4BFF1EA90F39BD76BE951D651B;org.codehaus.plexus:plexus-cipher:2.0
6586BA9F3137D7AC7B9789F1FCF7C4E192482905;org.codehaus.plexus:plexus-classworlds:2.11.0
A506F84636EA7AE370D04167DD155C103E616F68;org.codehaus.plexus:plexus-component-annotations:2.2.0
5DD1B1FBACA263AD5BAA169FBD8E804C789C9DB5;org.codehaus.plexus:plexus-interpolation:1.29
F89C5080614FFD0764E49861895DBEDDE1B47237;org.codehaus.plexus:plexus-sec-dispatcher:2.0
9DCE1B9C69B197F453223E45A2CB9FA0CD48B424;org.codehaus.plexus:plexus-utils:3.6.1
6C62681A2F655B49963A5983B8B0950A6120AE14;org.slf4j:slf4j-api:1.7.36
A09F59BE3767DBFF0401828463D1752A9CB0C551;org.apache.maven.wagon:wagon-file:3.5.3
673D54E78F83C4700C8250A48C61F4C70EEF9BC3;org.apache.maven.wagon:wagon-http:3.5.3
635C3D5718A70E3ECFD78F2FEF99BB6E0ABAED58;org.apache.maven.wagon:wagon-http-shared:3.5.3
39C44EBB3945DEE359665272D8ACB83F9460491B;org.apache.maven.wagon:wagon-provider-api:3.5.3
