


  <!doctype html>
<!--
Generated by Apache Maven Doxia 2023-12-18
, Rendered using Reflow Maven Skin 2.3.4 (http://devacfr.github.io/reflow-maven-skin)
-->
<html  xml:lang="" lang="">
        <head>
    <meta charset="UTF-8" />
    <title>Apache OpenMeetings Project – Project Licenses</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="" />
      <meta http-equiv="content-language" content="" />
                                                    <link href="../css/themes/cerulean/bootstrap.min.css" rel="stylesheet" />
        <link href="../css/fontawesome/all.min.css" rel="stylesheet" />
    <link href="../css/reflow-skin.css" rel="stylesheet" />
    
    <link rel="stylesheet" href="../js/styles/github.min.css" />

    <link href="../css/lightbox.css" rel="stylesheet" />
    <link href="../css/site.css" rel="stylesheet" />
    <link href="../css/print.css" rel="stylesheet" media="print" />
<link rel="stylesheet" href="../css/site.css"/>  </head> <!-- end : head -->
<body class="page-licenses project-openmeetings-db anchorjs-enabled scrolltop-smooth-enabled m-toc-sidebar-enabled m-toc-sidebar-expanded m-toc-sidebar-autoexpandable toc-sidebar-fixed">
    <nav id="m-top-navbar" class="navbar navbar-expand-lg fixed-top navbar-dark bg-primary">
<div class="container">            <a class="navbar-brand mb-0 h1" href="../index.html">
            <span class="color-highlight">Apache</span> OpenMeetings
            </a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#top-navbar-collapse-1" aria-controls="top-navbar-collapse-1" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="top-navbar-collapse-1">
                <ul class="nav navbar-nav ml-auto">
                    <li class="nav-item " ><a  href="../demo.html"  title="Demo"  class="nav-link" >Demo</a></li>
                    <li class="nav-item " ><a  href="../downloads.html"  title="Download"  class="nav-link" >Download</a></li>
                    <li class="nav-item " ><a  href="https://cwiki.apache.org/confluence/display/OPENMEETINGS"  title="Wiki"   class="externalLink nav-link" >Wiki</a></li>
                    <li class="nav-item dropdown">
                <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Parent Project <b class="caret"></b></a>
                        <div class="dropdown-menu">
                            <a href="../index.html" title="Openmeetings"  class="dropdown-item ">Openmeetings</a>
                        </div>
                    </li>
                    <li class="nav-item dropdown">
                <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Project <b class="caret"></b></a>
                        <div class="dropdown-menu">
                            <a href="index.html" title="About"  class="dropdown-item ">About</a>
                            <a href="project-info.html" title="Info"  class="dropdown-item ">Info</a>
                            <a href="summary.html" title="Summary"  class="dropdown-item ">Summary</a>
                            <a href="https://www.apache.org/licenses/" title="License"  class="dropdown-item ">License</a>
                            <a href="dependencies.html" title="Dependencies"  class="dropdown-item ">Dependencies</a>
                            <a href="dependency-convergence.html" title="Dependency Convergence"  class="dropdown-item ">Dependency Convergence</a>
                            <a href="rat-report.html" title="RAT Report"  class="dropdown-item ">RAT Report</a>
                            <a href="apidocs/index.html" title="JavaDoc" target="_blank" class="dropdown-item ">JavaDoc</a>
                        </div>
                    </li>
                </ul><!--/ul.navbar-nav -->
            </div><!--/.nav-collapse -->
</div> <!--/.container -->    </nav> <!--/.navbar -->
    <div class="main-body">
    <div class="header text-light bg-secondary" role="main">
        <div class="container container-fluid">
    <div id="banner" class="header--banner">
        <div class="row m-1">
          <div class="col-md-12">
            <div class="float-left header--banner--left bannerLeft">
                    <a href="../index.html">
            <img class="float-left m-2 img-fluid" src="../images/logo.png" alt="Apache OpenMeetings" />
            </a>
            </div>
            <div class="float-right header--banner--right bannerRight">
                    <a href="https://apache.org">
            <img class="float-left m-2 img-fluid" src="https://apache.org/img/asf_logo.png" alt="Apache" />
            </a>
            </div>
          </div>
        </div>
    </div>
        </div>
    </div> <!-- end : header -->
    <div class="row mt-5">
        <div class="d-xs-none d-sm-none d-md-none d-lg-block col-lg-2">
        </div>
        <main class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-8" role="main">
    <nav aria-label="breadcrumb">
        <ol class="breadcrumb">
            <li class="publishDate version-date">Last Published: 2023-12-18
</li>
        </ol>
    </nav>
        <section>
 <div class="page-header">
  <h1 id="overview1">Overview</h1>
 </div><a id="overview"></a>
 <p>Typically the licenses listed for the project are that of the project itself, and not of dependencies.</p>
</section>
<section>
 <h1 id="project-licenses">Project Licenses</h1><a id="project_licenses"></a>
 <section>
  <h2 id="the-apache-software-license-version-20">The Apache Software License, Version 2.0</h2><a id="the_apache_software_license2c_version_20"></a><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0">[Original text]</a>
  <p>Copy of the license follows:</p> <!-- Navigation -->
  <header>
   <div id="skiptocontent">
    <a href="https://www.apache.org/licenses/#maincontent">Skip to Main Content</a>
   </div>
   <nav class="navbar navbar-inverse navbar-fixed-top mainmenu">
    <div class="container">
     <div class="navbar-header">
      <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#mainnav-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
     </div>
     <div class="collapse navbar-collapse" id="mainnav-collapse">
      <div class="upper-nav">
       <div class="header-social-icons">
        <a target="_blank" href="https://infra.apache.org/slack.html"><img src="https://www.apache.org/images/slack-icon.svg" alt="slack icon" class="img-fluid"></a> <a target="_blank" href="https://github.com/apache"><img src="https://www.apache.org/images/github-mark-white.svg" alt="github icon" class="img-fluid"></a> <a target="_blank" href="https://www.linkedin.com/company/the-apache-software-foundation/"><img src="https://www.apache.org/images/linkedin-icon.png" alt="linkedIn icon" class="img-fluid"></a> <a target="_blank" href="https://www.youtube.com/c/TheApacheFoundation"><img src="https://www.apache.org/images/youtube-icon.svg" alt="youtube icon" class="img-fluid"></a> <a target="_blank" href="https://twitter.com/TheASF"><img src="https://www.apache.org/images/x-icon.svg" alt="X icon" class="img-fluid"></a>
       </div> <a href="https://donate.apache.org/48ff" target="_blank" class="btn btn-default" onclick="_paq.push(['trackEvent', 'click', 'Make a Donation Button']);">Make a Donation</a>
      </div>
      <ul class="nav navbar-nav navbar-justified">
       <li class="dropdown"><a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
         <li><a href="https://community.apache.org/" target="_blank">Contributor Getting Started</a></li>
         <li><a href="https://community.apache.org/contributors/" target="_blank">Becoming a Committer</a></li>
         <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li>
         <li><a href="https://www.apache.org/community-resources/">Community Resources</a></li>
         <li><a href="https://communityovercode.org/" target="_blank">Community Over Code</a></li>
         <li><a href="https://events.apache.org/" target="_blank">Events</a></li>
         <li><a href="https://www.redbubble.com/people/comdev/shop" target="_blank">Store</a></li>
        </ul></li>
       <li class="dropdown"><a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
         <li><a href="https://www.apache.org/projects">Projects</a></li>
         <li><a href="https://incubator.apache.org/" target="_blank">Incubator Projects</a></li>
         <li><a href="https://projects.apache.org/" target="_blank">Projects Directory </a></li>
         <li><a href="https://www.apache.org/foundation/mailinglists">Mailing Lists </a></li>
         <li><a href="https://www.apache.org/security">Report a Vulnerability</a></li>
        </ul></li>
       <li class="dropdown"><a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Downloads&nbsp;<span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
         <li><a href="https://downloads.apache.org/" target="_blank">Distributions</a></li>
         <li><a href="https://projects.apache.org/releases.html" target="_blank">Releases</a></li>
         <li><a href="https://status.apache.org/" target="_blank">Infrastructure Status</a></li>
         <li><a href="https://infra-reports.apache.org/#uptime" target="_blank">Infrastructure Statistics</a></li>
        </ul></li>
       <li class="dropdown"><a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Learn&nbsp;<span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
         <li><a href="https://news.apache.org/" target="_blank">Blog</a></li>
         <li><a href="https://www.apache.org/foundation/how-it-works">How the ASF Works</a></li>
         <li><a href="https://www.apache.org/theapacheway/">The Apache Way</a></li>
         <li><a href="https://www.apache.org/legal/">Legal &amp; Trademark</a></li>
         <li><a href="https://www.apache.org/licenses">Licenses</a></li>
         <li><a href="https://www.apache.org/foundation/glossary">Glossary</a></li>
         <li><a href="https://www.apache.org/foundation/faq">FAQ</a></li>
        </ul></li>
       <li class="dropdown"><a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Resources &amp; Tools&nbsp;<span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
         <li><a href="https://www.apache.org/dev/">Developer Information</a></li>
         <li><a href="https://cwiki.apache.org/" target="_blank">Wiki</a></li>
         <li><a href="https://issues.apache.org/" target="_blank">Issues</a></li>
         <li><a href="https://infra.apache.org/slack.html" target="_blank">Slack</a></li>
         <li><a href="https://selfserve.apache.org/" target="_blank">Self Serve Portal</a></li>
         <li><a href="https://infra.apache.org/" target="_blank">Infrastructure</a></li>
         <li><a href="https://whimsy.apache.org/" target="_blank">Whimsy</a></li>
         <li><a href="https://www.apache.org/foundation/press/kit/">Brand Guidelines</a></li>
         <li><a href="https://www.apache.org/logos/">Project Logos</a></li>
        </ul></li>
       <li class="dropdown"><a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">About&nbsp;<span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
         <li><a href="https://www.apache.org/foundation/">About</a></li>
         <li><a href="https://www.apache.org/foundation/sponsors">Our Sponsors</a></li>
         <li><a href="https://www.apache.org/foundation/sponsorship">Corporate Sponsorship</a></li>
         <li><a href="https://www.apache.org/foundation/individual-supporters">Individual Supporters</a></li>
         <li><a href="https://www.apache.org/foundation/leadership">Leadership</a></li>
         <li><a href="https://www.apache.org/foundation/members">Members</a></li>
         <li><a href="https://diversity.apache.org/" target="_blank">Diversity &amp; Inclusion</a></li>
         <li><a href="https://www.apache.org/press/">Newsroom</a></li>
         <li><a href="https://www.apache.org/foundation/contact">Contact</a></li>
        </ul></li>
       <li class="dropdown"><a href="https://www.apache.org/licenses/#" class="dropdown-toggle hidden-xs" data-toggle="dropdown" role="button"><span class="glyphicon glyphicon-search" aria-hidden="true"></span><span class="sr-only">Search</span></a>
        <ul class="dropdown-menu search-form" role="search">
         <li>
          <div id="pagefind-search" class="input-group" style="width: 100%; padding: 0 5px;"></div></li>
        </ul></li>
      </ul>
     </div>
    </div>
   </nav>
  </header> <!-- / Navigation -->
  <header id="main-header" class="container">
   <div class="sideImg">
    <a class="visible-home" href="https://events.apache.org/x/current-event.html"> <img class="img-responsive img-fluid" style="width: 125px;" src="https://www.apache.org/events/current-event-125x125.png" alt="Apache Events"> <!-- STALE: <img class="img-responsive" style="width: 125px;" src="https://www.apachecon.com/event-images/default-square-light.png" alt="ApacheCon 2021 Coming Soon!" /> --> </a> <a class="hidden-home" href="https://www.apache.org/"><img class="img-responsive img-fluid" src="https://www.apache.org/img/asf-estd-1999-logo.jpg" alt="The Apache Software Foundation"></a>
   </div>
   <div class="main">
    <img class="img-responsive center-block visible-home img-fluid" src="https://www.apache.org/img/asf-estd-1999-logo.jpg" alt="Apache 20th Anniversary Logo">
   </div>
  </header>
  <main id="maincontent">
   <div class="container">
    <h1 id="apache-license-version-201">Apache License, Version 2.0<a class="headerlink" href="https://www.apache.org/licenses/#apache-license-version-20" title="Permalink">¶</a></h1>
    <ul>
     <li>Text version: <a href="https://www.apache.org/licenses/LICENSE-2.0.txt">https://www.apache.org/licenses/LICENSE-2.0.txt</a></li>
     <li>SPDX short identifier: <a href="https://spdx.org/licenses/Apache-2.0.html">Apache-2.0</a></li>
     <li>OSI Approved License: <a href="https://opensource.org/licenses/Apache-2.0">https://opensource.org/licenses/Apache-2.0</a></li>
    </ul>
    <p>The 2.0 version of the Apache License, approved by the ASF in 2004, helps us achieve our goal of providing reliable and long-lived software products through collaborative, open-source software development.</p>
    <p>All packages produced by the ASF are implicitly licensed under the Apache License, Version 2.0, unless otherwise explicitly stated.</p>
    <div style="margin: 3em 10%; font-family:serif;text-align:justify; border: 1px solid black; padding: 2em;   box-shadow: 4px 8px #888888;">
     <p style="text-align:center"><strong>Apache License<br>Version 2.0, January 2004<br></strong> <strong><a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a></strong></p>
     <p>TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION</p>
     <p><strong><a name="definitions">1. Definitions</a></strong>.</p>
     <div style="margin-left: 1em;">
      <p>"<strong>License</strong>" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.</p>
      <p>"<strong>Licensor</strong>" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.</p>
      <p>"<strong>Legal Entity</strong>" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "<strong>control</strong>" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.</p>
      <p>"<strong>You</strong>" (or "<strong>Your</strong>") shall mean an individual or Legal Entity exercising permissions granted by this License.</p>
      <p>"<strong>Source</strong>" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.</p>
      <p>"<strong>Object</strong>" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.</p>
      <p>"<strong>Work</strong>" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).</p>
      <p>"<strong>Derivative Works</strong>" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.</p>
      <p>"<strong>Contribution</strong>" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "<strong>submitted</strong>" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "<strong>Not a Contribution.</strong>"</p>
      <p>"<strong>Contributor</strong>" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.</p>
     </div>
     <p><strong><a name="copyright">2. Grant of Copyright License</a></strong>. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.</p>
     <p><strong><a name="patent">3. Grant of Patent License</a></strong>. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.</p>
     <p><strong><a name="redistribution">4. Redistribution</a></strong>. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:</p>
     <ol style="list-style: lower-latin;">
      <li>You must give any other recipients of the Work or Derivative Works a copy of this License; and</li>
      <li>You must cause any modified files to carry prominent notices stating that You changed the files; and</li>
      <li>You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and</li>
      <li>If the Work includes a "<strong>NOTICE</strong>" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.</li>
     </ol>
     <p>You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.</p>
     <p><strong><a name="contributions">5. Submission of Contributions</a></strong>. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.</p>
     <p><strong><a name="trademarks">6. Trademarks</a></strong>. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.</p>
     <p><strong><a name="no-warranty">7. Disclaimer of Warranty</a></strong>. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.</p>
     <p><strong><a name="no-liability">8. Limitation of Liability</a></strong>. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.</p>
     <p><strong><a name="additional">9. Accepting Warranty or Additional Liability</a></strong>. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.</p>
     <p>END OF TERMS AND CONDITIONS</p>
    </div>
    <h2 id="how-to-apply-the-apache-license-to-your-work">How to apply the Apache License to your work<a class="headerlink" href="https://www.apache.org/licenses/#apply" title="Permalink">¶</a></h2>
    <p>Include a copy of the Apache License, typically in a file called LICENSE, in your work, and consider also including a NOTICE file that references the License.</p>
    <p>To apply the Apache License to specific files in your work, attach the following boilerplate declaration, replacing the fields enclosed by brackets "[]" with your own identifying information. (Don't include the brackets!) Enclose the text in the appropriate comment syntax for the file format. We also recommend that you include a file or class name and description of purpose on the same "printed page" as the copyright notice for easier identification within third-party archives.</p>
    <pre><code>Copyright [yyyy] [name of copyright owner]

Licensed 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.
</code></pre>
   </div>
  </main> <!-- Footer -->
  <footer class="bg-primary">
   <div class="container">
    <div class="row">
     <br>
     <div class="col-sm-2">
      <h5 class="white" id="community">Community</h5>
      <ul class="list-unstyled white" role="menu">
       <li><a href="https://community.apache.org/" target="_blank">Contributor Getting Started</a></li>
       <li><a href="https://community.apache.org/contributors/" target="_blank">Becoming a Committer</a></li>
       <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li>
       <li><a href="https://www.apache.org/community-resources/">Community Resources</a></li>
       <li><a href="https://communityovercode.org/" target="_blank">Community Over Code</a></li>
       <li><a href="https://events.apache.org/" target="_blank">Events</a></li>
       <li><a href="https://www.redbubble.com/people/comdev/shop" target="_blank">Store</a></li>
      </ul>
     </div>
     <div class="col-sm-2">
      <h5 class="white" id="projects">Projects</h5>
      <ul class="list-unstyled white" role="menu">
       <li><a href="https://www.apache.org/projects">Projects</a></li>
       <li><a href="https://incubator.apache.org/" target="_blank">Incubator Projects</a></li>
       <li><a href="https://projects.apache.org/" target="_blank">Projects Directory </a></li>
       <li><a href="https://www.apache.org/foundation/mailinglists">Mailing Lists </a></li>
       <li><a href="https://www.apache.org/security">Report a Vulnerability</a></li>
      </ul>
     </div>
     <div class="col-sm-2">
      <h5 class="white" id="downloads">Downloads</h5>
      <ul class="list-unstyled white" role="menu">
       <li><a href="https://downloads.apache.org/" target="_blank">Distributions</a></li>
       <li><a href="https://projects.apache.org/releases.html" target="_blank">Releases</a></li>
       <li><a href="https://status.apache.org/" target="_blank">Infrastructure Status</a></li>
       <li><a href="https://infra-reports.apache.org/#uptime" target="_blank">Infrastructure Statistics</a></li>
      </ul>
     </div>
     <div class="col-sm-2">
      <h5 class="white" id="learn">Learn</h5>
      <ul class="list-unstyled white" role="menu">
       <li><a href="https://news.apache.org/" target="_blank">Blog</a></li>
       <li><a href="https://www.apache.org/foundation/how-it-works">How the ASF Works</a></li>
       <li><a href="https://www.apache.org/theapacheway/">The Apache Way</a></li>
       <li><a href="https://www.apache.org/legal/">Legal &amp; Trademark</a></li>
       <li><a href="https://www.apache.org/licenses">Licenses</a></li>
       <li><a href="https://www.apache.org/foundation/glossary">Glossary</a></li>
       <li><a href="https://www.apache.org/foundation/faq">FAQ</a></li>
      </ul>
     </div>
     <div class="col-sm-2">
      <h5 class="white" id="resources--tools">Resources &amp; Tools</h5>
      <ul class="list-unstyled white" role="menu">
       <li><a href="https://www.apache.org/dev/">Developer Information</a></li>
       <li><a href="https://cwiki.apache.org/" target="_blank">Wiki</a></li>
       <li><a href="https://issues.apache.org/" target="_blank">Issues</a></li>
       <li><a href="https://infra.apache.org/slack.html" target="_blank">Slack</a></li>
       <li><a href="https://selfserve.apache.org/" target="_blank">Self Serve Portal</a></li>
       <li><a href="https://infra.apache.org/" target="_blank">Infrastructure</a></li>
       <li><a href="https://whimsy.apache.org/" target="_blank">Whimsy</a></li>
       <li><a href="https://www.apache.org/foundation/press/kit/">Brand Guidelines</a></li>
       <li><a href="https://www.apache.org/logos/">Project Logos</a></li>
      </ul>
     </div>
     <div class="col-sm-2">
      <h5 class="white" id="about">About</h5>
      <ul class="list-unstyled white" role="menu">
       <li><a href="https://www.apache.org/foundation/">About</a></li>
       <li><a href="https://www.apache.org/foundation/sponsors">Our Sponsors</a></li>
       <li><a href="https://www.apache.org/foundation/sponsorship">Corporate Sponsorship</a></li>
       <li><a href="https://www.apache.org/foundation/individual-supporters">Individual Supporters</a></li>
       <li><a href="https://www.apache.org/foundation/leadership">Leadership</a></li>
       <li><a href="https://www.apache.org/foundation/members">Members</a></li>
       <li><a href="https://diversity.apache.org/" target="_blank">Diversity &amp; Inclusion</a></li>
       <li><a href="https://www.apache.org/press/">Newsroom</a></li>
       <li><a href="https://www.apache.org/foundation/contact">Contact</a></li>
       <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank">Privacy Policy</a></li>
      </ul>
     </div>
    </div>
    <hr class="col-lg-12 hr-white">
    <div class="row">
     <div class="col-lg-12">
      <p class="text-center">Copyright © 2023 The Apache Software Foundation, Licensed under the <a class="white" href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
      <p class="text-center">Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
     </div>
    </div>
   </div>
  </footer> <!-- / Footer -->
  <script src="/js/jquery.min.js"></script>
  <script src="/js/bootstrap.js"></script>
  <script src="/js/slideshow.js"></script>
  <script>
    (function($){
      $(document).ready(function(){
        $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
          event.preventDefault();
          event.stopPropagation();
          $(this).parent().siblings().removeClass('open');
          $(this).parent().toggleClass('open');
          console.log('WOrked');
        });
      });
    })(jQuery);
  </script>
 </section>
</section>        </main>
        <div class="d-none d-sm-none d-md-none d-lg-none d-xl-block col-xl-2">
            <div id="m-toc-sidebar" class="d-print-none m-toc-sidebar-enabled m-toc-sidebar-expanded m-toc-sidebar-autoexpandable toc-sidebar-fixed">
                <nav id="m-toc-sidebar-nav flex-column">
                <ul class="m-nav--sidebar nav flex-column flex-nowrap">
    <li class="h1">
        <a class="nav-link" href="#overview1" title="Overview">Overview</a>
    </li>
        <li class="h1">
        <a class="nav-link" href="#project-licenses" title="Project Licenses">Project Licenses</a>
    </li>
    <li class="h2">
        <a class="nav-link" href="#the-apache-software-license-version-20" title="The Apache Software License, Version 2.0">The Apache Software License, Version 2.0</a>
    </li>
        <li class="h1">
        <a class="nav-link" href="#apache-license-version-201" title="Apache License, Version 2.0¶">Apache License, Version 2.0¶</a>
    </li>
    <li class="h2">
        <a class="nav-link" href="#how-to-apply-the-apache-license-to-your-work" title="How to apply the Apache License to your work¶">How to apply the Apache License to your work¶</a>
    </li>
    <ul class="nav flex-column flex-nowrap nav-collapsible">
            <li class="h5">
        <a class="nav-link" href="#community" title="Community">Community</a>
    </li>
    <li class="h5">
        <a class="nav-link" href="#projects" title="Projects">Projects</a>
    </li>
    <li class="h5">
        <a class="nav-link" href="#downloads" title="Downloads">Downloads</a>
    </li>
    <li class="h5">
        <a class="nav-link" href="#learn" title="Learn">Learn</a>
    </li>
    <li class="h5">
        <a class="nav-link" href="#resources--tools" title="Resources & Tools">Resources & Tools</a>
    </li>
    <li class="h5">
        <a class="nav-link" href="#about" title="About">About</a>
    </li>
    </ul>
                    </ul>
                </nav>
           </div>
        </div>
    </div> <!-- row: end -->
</div> <!-- .main-body: end -->
    <div id="m_scrolltop" class="m-scrolltop">
		<i class="fa fa-arrow-up"></i>
    </div>
  <!-- Footer -->
<footer class="footer-light bg-light">
    <div class="container">
        <div class="row">
                        <div class="col bottom-nav">
                <ul class="nav flex-column nav-list">
                    <li class="nav-header">
Parent Project
                    </li>
                    <li class="nav-item "><a  href="../index.html"  title="Openmeetings"  class="nav-link" >Openmeetings</a></li>
                </ul>
            </div>
            <div class="col bottom-nav">
                <ul class="nav flex-column nav-list">
                    <li class="nav-header">
Project
                    </li>
                    <li class="nav-item "><a  href="index.html"  title="About"  class="nav-link" >About</a></li>
                    <li class="nav-item "><a  href="project-info.html"  title="Info"  class="nav-link" >Info</a></li>
                    <li class="nav-item "><a  href="summary.html"  title="Summary"  class="nav-link" >Summary</a></li>
                    <li class="nav-item "><a  href="https://www.apache.org/licenses/"  title="License"   class="externalLink nav-link" >License</a></li>
                    <li class="nav-item "><a  href="dependencies.html"  title="Dependencies"  class="nav-link" >Dependencies</a></li>
                    <li class="nav-item "><a  href="dependency-convergence.html"  title="Dependency Convergence"  class="nav-link" >Dependency Convergence</a></li>
                    <li class="nav-item "><a  href="rat-report.html"  title="RAT Report"  class="nav-link" >RAT Report</a></li>
                    <li class="nav-item "><a  href="apidocs/index.html"  title="JavaDoc"  target="_blank"  class="nav-link" >JavaDoc</a></li>
                </ul>
            </div>
        </div> <!-- END: .row -->
    </div> <!-- END: .container -->
</footer>
  <div class="container subfooter text-center">
    <div class="row">
      <div class="col-md-12">
        <p class="copyright">Copyright &copy;2012-2023
                 <a href="https://apache.org">Apache Software Foundation</a>
. All Rights Reserved.</p>
      </div>
    </div>
  </div>

  <!-- Le javascript
  ================================================== -->
  <!-- Placed at the end of the document so the pages load faster -->
    <script src="../js/jquery.min.js" crossorigin="anonymous"></script>
    <script src="../js/popper.min.js"></script>
    <script src="../js/bootstrap.min.js" ></script>

  <script src="../js/lightbox.min.js" crossorigin="anonymous"></script>
            	<script src="../js/highlight.min.js" crossorigin="anonymous"></script>
                    
<script src="https://www.apachecon.com/event-images/snippet.js"></script>        
<script src="../js/site.js" type="text/javascript"></script>        
<div class="text-center">Apache OpenMeetings, OpenMeetings, Apache, the Apache feather, and the Apache OpenMeetings project logo</div>        
<div class="text-center">are trademarks of the Apache Software Foundation.</div>        
<div class="text-center">
  <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy policy</a>
</div>  <script src="../js/reflow-skin.js"></script>
    <script src="../js/anchor.min.js"></script>
    </body>
</html>
