=========================================================================
==  NOTICE file corresponding to the section 4 d of                    ==
==  the Apache License, Version 2.0,                                   ==
==  in this case for the Apache Ivy distribution.                      ==
=========================================================================

This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
   
Portions of Ivy were originally developed by
Jayasoft SARL (http://www.jayasoft.fr/)
and are licensed to the Apache Software Foundation under the
"Software Grant License Agreement"
   
SSH and SFTP support is provided by the JCraft JSch package, 
which is open source software, available under
the terms of a BSD style license.  
The original software and related information is available
at http://www.jcraft.com/jsch/. 