<!---
  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.
-->
{{ partial "header.html" . }}

<body>

  {{ partial "navbar.html" . }}

  <div class="container-fluid">
    <div class="row">
      {{ partial "sidebar.html" . }}
      <div class="col-sm-10 col-sm-offset-2 col-md-10 col-md-offset-2 main">



        <div class="col-md-9">
            <nav aria-label="breadcrumb">
                <ol class="breadcrumb">
                  <li class="breadcrumb-item"><a href="/">Home</a></li>
                  <li class="breadcrumb-item" aria-current="page"><a href="{{.CurrentSection.Permalink}}">{{.CurrentSection.Title}}</a></li>
                  <li class="breadcrumb-item active" aria-current="page">{{ .Title }}</li>
                </ol>
              </nav>

          <div class="col-md-9">
            <h1>{{.Title}}</h1>
          </div>

          {{ .Content }}

          {{ with .PrevInSection }}
          <a class="btn  btn-success btn-lg" href="{{ .Permalink }}">Next >></a>
          {{ end }}
        </div>
      </div>
    </div>
  </div>

  {{ partial "footer.html" . }}

</body>

</html>