=========================================================================
==  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/.

The documentation distributed with Ivy uses jQuery,
which is open source software, available under 
the terms of a MIT license.
The original software and related information is available
at http://jquery.com/