{{!
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.
}}

<h2>Configuration</h2>

<div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">Security</h3>
  </div>
  <ul class="list-group">
   {{#security_configs}}
    <li class="list-group-item">
      <span class="glyphicon glyphicon-lock text-success
          {{^secure}}glyphicon-hide{{/secure}}"></span>
      {{name}}: {{value}}
      <small>(<a href="#{{id}}" data-toggle="collapse">?</a>)</small>
      <div id="{{id}}" class="collapse text-muted">{{comment}}</div>
    </li>
   {{/security_configs}}
  </ul>
</div>

<div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">Time Source</h3>
  </div>
  <ul class="list-group">
   {{#time_source_configs}}
    <li class="list-group-item">
      {{name}}: {{value}}
      <small>(<a href="#{{id}}" data-toggle="collapse">?</a>)</small>
      <div id="{{id}}" class="collapse text-muted">{{comment}}</div>
    </li>
   {{/time_source_configs}}
  </ul>
</div>
