 


  <!doctype html>
<!--
 Generated by Apache Maven Doxia  at $dateFormat.format( $currentDate )  Rendered using Reflow Maven Skin 2.3.0 (http://devacfr.github.io/reflow-maven-skin)
-->
<html  xml:lang="en" lang="en">
        <head>
    <meta charset="UTF-8" />
    <title>Apache OpenMeetings Project &#x2013; Project Licenses</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="" />
      <meta http-equiv="content-language" content="en" />
                                                        <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-web 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>
                        </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">$dateFormat.applyPattern( $format )    $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateValue</li>
        </ol>
    </nav>
        <section> 
 <h2 id="overview1">Overview</h2> 
 <a name="Overview"></a> 
 <p>Typically the licenses listed for the project are that of the project itself, and not of dependencies.</p> 
</section> 
<section> 
 <h2 id="project-licenses">Project Licenses</h2> 
 <a name="Project_Licenses"></a> 
 <section> 
  <h3 id="the-apache-software-license-version-20">The Apache Software License, Version 2.0</h3> 
  <a name="The_Apache_Software_License.2C_Version_2.0"></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"> 
      <ul class="nav navbar-nav navbar-justified"> 
       <li> 
        <form class="visible-xs"> 
         <div class="input-group" style="width: 100%;"> 
          <script>
                    (function() {
                    var cx = '005703438322411770421:5mgshgrgx2u';
                    var gcse = document.createElement('script');
                    gcse.type = 'text/javascript';
                    gcse.async = true;
                    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
                    '//cse.google.com/cse.js?cx=' + cx;
                    var s = document.getElementsByTagName('script')[0];
                    s.parentNode.insertBefore(gcse, s);
                    })();
                  </script> 
          <gcse:searchbox-only></gcse:searchbox-only> 
         </div> 
        </form> </li> 
       <li><a href="https://www.apache.org/index.html#news">News</a></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">Overview</a></li> 
         <li><a href="https://www.apache.org/foundation/how-it-works.html">Process</a></li> 
         <li><a href="https://www.apache.org/foundation/governance/">Governance</a></li> 
         <li><a href="https://www.apache.org/theapacheway/index.html">The Apache Way</a></li> 
         <li><a href="https://www.apache.org/foundation/governance/members.html">Membership</a></li> 
         <li><a href="https://community.apache.org/">Community</a></li> 
         <li><a href="https://diversity.apache.org/">Diversity &amp; Inclusion</a></li> 
         <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li> 
         <li><a href="https://www.apache.org/foundation/glossary.html">Glossary</a></li> 
         <li><a href="https://www.apache.org/apache-name">About Our Name</a></li> 
         <li><a href="https://www.apache.org/foundation/preFAQ.html">FAQ</a></li> 
         <li><a href="https://www.apache.org/foundation/contributing.html">Support Apache</a></li> 
         <li><a href="https://www.apache.org/press/">Media/Analysts</a></li> 
         <li><a href="https://www.apache.org/foundation/contact.html">Contact</a></li> 
        </ul> </li> 
       <li class="dropdown"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Make a Donation&nbsp;<span class="caret"></span></a> 
        <ul class="dropdown-menu" role="menu"> 
         <li><a href="https://www.apache.org/foundation/contributing.html">Donate Now</a></li> 
         <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via Credit Card</a></li> 
         <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via ACH</a></li> 
         <li><a href="https://donate.apache.org/">&nbsp;&nbsp;Via PayPal</a></li> 
         <li><a href="https://www.redbubble.com/people/comdev">Buy Swag</a></li> 
         <li><a href="https://smile.amazon.com/gp/chpf/homepage/ref=smi_se_scyc_srch_stsr?q=apache+software+foundation&amp;orig=%2F">Shop smile.amazon.com</a></li> 
         <li><a href="https://www.apache.org/foundation/sponsorship.html">ASF Sponsorship</a></li> 
         <li><a href="https://www.apache.org/foundation/thanks#targeted-sponsors">Targeted Sponsorship</a></li> 
         <li><a href="https://www.apache.org/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li> 
        </ul> </li> 
       <li class="dropdown"> <a href="https://www.apache.org/licenses/#" class="dropdopwn-toggle" data-toggle="dropdown">The Apache Way&nbsp;<span class="caret"></span></a> 
        <ul class="dropdown-menu" role="menu"> 
         <li><a href="https://www.apache.org/theapacheway/index.html">The Apache Way</a></li> 
         <li><a href="https://s.apache.org/GhnI">Sustainable Open Source</a></li> 
         <li><a href="https://www.apache.org/foundation/how-it-works.html">How it Works</a></li> 
         <li><a href="https://www.apache.org/foundation/how-it-works.html#meritocracy">Merit</a></li> 
         <li><a href="https://blogs.apache.org/foundation/category/SuccessAtApache">Success at Apache</a></li> 
        </ul> </li> 
       <li class="dropdown"> <a href="https://www.apache.org/licenses/#" class="dropdopwn-toggle" data-toggle="dropdown">Join Us&nbsp;<span class="caret"></span></a> 
        <ul class="dropdown-menu" role="menu"> 
         <li><a href="https://community.apache.org/gettingStarted/101.html">Getting Started</a></li> 
         <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li> 
         <li><a href="https://www.apachecon.com/">ApacheCon</a></li> 
         <li><a href="http://community.apache.org/calendars/">Community Events</a></li> 
         <li><a href="https://www.apache.org/travel/">Travel Assistance</a></li> 
         <li><a href="https://community.apache.org/gsoc.html">Summer of Code</a></li> 
         <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li> 
         <li><a href="https://community.apache.org/contributors/etiquette">Etiquette</a></li> 
         <li class="dropdown dropdown-submenu visible-xs"> <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/index.html#projects-list">Project List</a></li> 
           <li><a href="https://www.apache.org/foundation/how-it-works.html#management">How they work</a></li> 
           <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li> 
           <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li> 
           <li><a href="https://projects.apache.org/projects.html?name">Names</a></li> 
           <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li> 
           <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li> 
           <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li> 
           <li><a href="https://incubator.apache.org/">Apache Incubator</a></li> 
           <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li> 
           <li><a href="https://www.apache.org/foundation/marks/">Brand Management</a></li> 
          </ul> </li> 
         <li class="drowpdown dropdown-submenu visible-xs"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret"></span></a> 
          <ul class="dropdown-menu" role="menu"> 
           <li><a href="https://www.apache.org/foundation/how-it-works.html#roles">Roles</a></li> 
           <li><a href="https://www.apache.org/foundation/members.html">Members</a></li> 
           <li><a href="https://community.apache.org/contributors/">Committers</a></li> 
           <li><a href="https://www.apache.org/foundation/#who-runs-the-asf">Board of Directors</a></li> 
           <li><a href="https://www.apache.org/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li> 
           <li><a href="https://community.zones.apache.org/map.html">Location Map</a></li> 
           <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li> 
           <li><a href="https://people.apache.org/">Committer Directory</a></li> 
          </ul> </li> 
         <li class="drowpdown dropdown-submenu visible-xs"> <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/about/">Community Development</a></li> 
           <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li> 
           <li><a href="https://community.apache.org/">Get Involved</a></li> 
           <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li> 
           <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li> 
           <li><a href="https://community.apache.org/calendars/">Community Events</a></li> 
           <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li> 
           <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li> 
          </ul> </li> 
         <li class="drowpdown dropdown-submenu visible-xs"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret"></span></a> 
          <ul class="dropdown-menu" role="menu"> 
           <li><a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a></li> 
           <li><a href="https://www.apache.org/foundation/license-faq.html">Licensing FAQ</a></li> 
           <li><a href="https://www.apache.org/licenses/contributor-agreements.html">Contributor License Agreements</a></li> 
           <li><a href="https://www.apache.org/licenses/contributor-agreements.html#grants">Software Grants</a></li> 
           <li><a href="https://www.apache.org/foundation/marks/list/">Trademarks</a></li> 
           <li><a href="https://www.apache.org/licenses/exports/">Exports</a></li> 
          </ul> </li> 
         <li class="drowpdown dropdown-submenu visible-xs"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret"></span></a> 
          <ul class="dropdown-menu" role="menu"> 
           <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsor the ASF</a></li> 
           <li><a href="https://www.apache.org/foundation/thanks">Sponsor Thanks</a></li> 
           <li><a href="https://www.apache.org/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li> 
           <li><a href="https://www.apache.org/foundation/contributing.html">Individual Donations</a></li> 
           <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li> 
          </ul> </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/">Distribution</a></li> 
         <li><a href="https://projects.apache.org/releases.html">Releases</a></li> 
         <li><a href="https://status.apache.org/">Infrastructure Status</a></li> 
         <li><a href="https://www.apache.org/uptime/">Infrastructure Statistics</a></li> 
        </ul> </li> 
       <li class="dropdown hidden-xs"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" 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 class="input-group" style="width: 100%; padding: 0 5px;"> 
           <script async src="https://cse.google.com/cse.js?cx=cb41d2753d228d8b7"></script> 
           <div class="gcse-search"></div> 
          </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/"><img class="img-responsive" style="width: 100%;" src="https://www.apache.org/events/current-event-125x125.png" alt="Apache Events"></a> --> 
    <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.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"> 
    <h2 class="text-center" id="community-led-development-the-apache-way">Community-led development "The&nbsp;Apache&nbsp;Way"</h2> 
    <ul class="nav navbar-nav navbar-justified"> 
     <li class="drowpdown"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Projects&nbsp;<span class="caret hidden-sm"></span></a> 
      <ul class="dropdown-menu" role="menu"> 
       <li><a href="https://www.apache.org/index.html#projects-list">Project List</a></li> 
       <li><a href="https://www.apache.org/foundation/how-it-works.html#management">How they work</a></li> 
       <li><a href="https://community.apache.org/projectIndependence.html">Independence</a></li> 
       <li><a href="https://projects.apache.org/committees.html?date">Date Founded</a></li> 
       <li><a href="https://projects.apache.org/projects.html?name">Names</a></li> 
       <li><a href="https://projects.apache.org/projects.html?category">Categories</a></li> 
       <li><a href="https://projects.apache.org/projects.html?language">Languages</a></li> 
       <li><a href="https://projects.apache.org/statistics.html">Statistics</a></li> 
       <li><a href="https://incubator.apache.org/">Apache Incubator</a></li> 
       <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li> 
       <li><a href="https://www.apache.org/foundation/marks/">Brand Management</a></li> 
       <li><a href="https://www.apache.org/foundation/glossary.html">Glossary of Terms</a></li> 
      </ul> </li> 
     <li class="dropdown"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">People&nbsp;<span class="caret hidden-sm"></span></a> 
      <ul class="dropdown-menu" role="menu"> 
       <li><a href="https://www.apache.org/foundation/how-it-works.html#roles">Roles</a></li> 
       <li><a href="https://www.apache.org/foundation/members.html">Members</a></li> 
       <li><a href="https://community.apache.org/contributors/">Committers</a></li> 
       <li><a href="https://www.apache.org/foundation/#who-runs-the-asf">Board of Directors</a></li> 
       <li><a href="https://www.apache.org/foundation/#who-runs-the-asf">Officers &amp; Project VPs</a></li> 
       <li><a href="https://diversity.apache.org/">Diversity &amp; Inclusion</a></li> 
       <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li> 
       <li><a href="https://people.apache.org/">Committer Directory</a></li> 
       <li><a href="https://community.zones.apache.org/map.html">Heat Map</a></li> 
      </ul> </li> 
     <li class="dropdown"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Community&nbsp;<span class="caret hidden-sm"></span></a> 
      <ul class="dropdown-menu" role="menu"> 
       <li><a href="https://community.apache.org/about/">Community Development</a></li> 
       <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a></li> 
       <li><a href="https://community.apache.org/">Get Involved</a></li> 
       <li><a href="https://community.apache.org/mentoringprogramme.html">Mentoring</a></li> 
       <li><a href="https://helpwanted.apache.org/">Help Wanted</a></li> 
       <li><a href="https://community.apache.org/calendars/">Community Events</a></li> 
       <li><a href="https://community.apache.org/newbiefaq.html">FAQ</a></li> 
       <li><a href="https://community.apache.org/lists.html">Mailing Lists</a></li> 
      </ul> </li> 
     <li class="dropdown"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">License&nbsp;<span class="caret hidden-sm"></span></a> 
      <ul class="dropdown-menu" role="menu"> 
       <li><a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a></li> 
       <li><a href="https://www.apache.org/foundation/license-faq.html">Licensing FAQ</a></li> 
       <li><a href="https://www.apache.org/licenses/contributor-agreements.html">Contributor License Agreements</a></li> 
       <li><a href="https://www.apache.org/licenses/contributor-agreements.html#grants">Software Grants</a></li> 
       <li><a href="https://www.apache.org/foundation/marks/list/">Trademarks</a></li> 
       <li><a href="https://www.apache.org/licenses/exports/">Exports</a></li> 
      </ul> </li> 
     <li class="dropdown"> <a href="https://www.apache.org/licenses/#" class="dropdown-toggle" data-toggle="dropdown" role="button">Sponsors&nbsp;<span class="caret hidden-sm"></span></a> 
      <ul class="dropdown-menu" role="menu"> 
       <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsor the ASF</a></li> 
       <li><a href="https://www.apache.org/foundation/thanks">Sponsor Thanks</a></li> 
       <li><a href="https://www.apache.org/foundation/contributing.html#CorporateGiving">Corporate Giving</a></li> 
       <li><a href="https://www.apache.org/foundation/contributing.html">Individual Donations</a></li> 
       <li><a href="https://www.redbubble.com/people/comdev/">Buy Stuff</a></li> 
      </ul> </li> 
    </ul> 
   </div> 
   <div class="sideImg"> 
    <a href="https://www.apache.org/foundation/contributing.html"><img class="img-responsive img-fluid" src="https://www.apache.org/img/support-apache.jpg" alt="Apache Support Logo"></a> 
   </div> 
  </header> 
  <main id="maincontent"> 
   <div class="container"> 
    <div class="page-header">
     <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>
    </div> 
    <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. <br> <br> 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. </li> 
     </ol> 
     <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-1"> 
     </div> 
     <div class="col-sm-2"> 
      <h5 class="white" id="community">Community</h5> 
      <ul class="list-unstyled white" role="menu"> 
       <li><a href="http://community.apache.org/">Overview</a></li> 
       <li><a href="https://www.apache.org/foundation/conferences.html">Conferences</a></li> 
       <li><a href="http://community.apache.org/gsoc.html">Summer of Code</a></li> 
       <li><a href="http://community.apache.org/newcomers/">Getting Started</a></li> 
       <li><a href="https://www.apache.org/foundation/how-it-works.html">The Apache Way</a></li> 
       <li><a href="https://www.apache.org/travel/">Travel Assistance</a></li> 
       <li><a href="https://www.apache.org/foundation/getinvolved.html">Get Involved</a></li> 
       <li><a href="https://www.apache.org/foundation/policies/conduct.html">Code of Conduct</a></li> 
       <li><a href="http://community.apache.org/newbiefaq.html">Community FAQ</a></li> 
       <li><a href="https://www.apache.org/memorials/">Memorials</a></li> 
      </ul> 
     </div> 
     <div class="col-sm-2"> 
      <h5 class="white" id="innovation">Innovation</h5> 
      <ul class="list-unstyled white" role="menu"> 
       <li><a href="http://incubator.apache.org/">Incubator</a></li> 
       <li><a href="http://labs.apache.org/">Labs</a></li> 
       <li><a href="https://www.apache.org/licenses/">Licensing</a></li> 
       <li><a href="https://www.apache.org/foundation/license-faq.html">Licensing FAQ</a></li> 
       <li><a href="https://www.apache.org/foundation/marks/">Trademark Policy</a></li> 
       <li><a href="https://www.apache.org/foundation/contact.html">Contacts</a></li> 
      </ul> 
     </div> 
     <div class="col-sm-2"> 
      <h5 class="white" id="tech-operations">Tech Operations</h5> 
      <ul class="list-unstyled white" role="menu"> 
       <li><a href="https://www.apache.org/dev/">Developer Information</a></li> 
       <li><a href="https://www.apache.org/dev/infrastructure.html">Infrastructure</a></li> 
       <li><a href="https://www.apache.org/security/">Security</a></li> 
       <li><a href="http://status.apache.org">Status</a></li> 
       <li><a href="https://www.apache.org/foundation/contact.html">Contacts</a></li> 
      </ul> 
     </div> 
     <div class="col-sm-2"> 
      <h5 class="white" id="press">Press</h5> 
      <ul class="list-unstyled white" role="menu"> 
       <li><a href="https://www.apache.org/press/">Overview</a></li> 
       <li><a href="https://blogs.apache.org/">ASF News</a></li> 
       <li><a href="https://blogs.apache.org/foundation/">Announcements</a></li> 
       <li><a href="https://twitter.com/TheASF">Twitter Feed</a></li> 
       <li><a href="https://www.apache.org/press/#contact">Contacts</a></li> 
      </ul> 
     </div> 
     <div class="col-sm-2"> 
      <h5 class="white" id="legal">Legal</h5> 
      <ul class="list-unstyled white" role="menu"> 
       <li><a href="https://www.apache.org/legal/">Legal Affairs</a></li> 
       <li><a href="https://www.apache.org/legal/dmca.html">DMCA</a></li> 
       <li><a href="https://www.apache.org/licenses/">Licensing</a></li> 
       <li><a href="https://www.apache.org/foundation/marks/">Trademark Policy</a></li> 
       <li><a href="https://www.apache.org/foundation/records/">Public Records</a></li> 
       <li><a href="https://www.apache.org/foundation/policies/privacy.html">Privacy Policy</a></li> 
       <li><a href="https://www.apache.org/licenses/exports/">Export Information</a></li> 
       <li><a href="https://www.apache.org/foundation/license-faq.html">Licensing FAQ</a></li> 
       <li><a href="https://www.apache.org/foundation/contact.html">Contacts</a></li> 
      </ul> 
     </div> 
     <div class="col-sm-1"> 
     </div> 
    </div> 
    <hr class="col-lg-12 hr-white"> 
    <div class="row"> 
     <div class="col-lg-12"> 
      <p class="text-center">Copyright © 2022 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-2.1.1.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="h2">
        <a class="nav-link" href="#overview1" title="Overview">Overview</a>
    </li>
        <li class="h2">
        <a class="nav-link" href="#project-licenses" title="Project Licenses">Project Licenses</a>
    </li>
    <ul class="nav flex-column flex-nowrap nav-collapsible">
            <li class="h3">
        <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>
    </ul>
        <li class="h2">
        <a class="nav-link" href="#community-led-development-the-apache-way" title="Community-led development "The Apache Way"">Community-led development "The Apache Way"</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="#innovation" title="Innovation">Innovation</a>
    </li>
    <li class="h5">
        <a class="nav-link" href="#tech-operations" title="Tech Operations">Tech Operations</a>
    </li>
    <li class="h5">
        <a class="nav-link" href="#press" title="Press">Press</a>
    </li>
    <li class="h5">
        <a class="nav-link" href="#legal" title="Legal">Legal</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>
                </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-${currentYear}
                 <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" crossorigin="anonymous"></script>
    <script src="../js/bootstrap.min.js" crossorigin="anonymous"></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" crossorigin="anonymous"></script>
    <script src="../js/anchor.min.js" crossorigin="anonymous"></script>
    </body>
</html>
