<!DOCTYPE html>
<html>
  <head>
    <!-- This page was generated by CAT-SOOP {cs_version}.  miau. -->

    <meta charset="UTF-8" />
    <title>{cs_title}</title>
    <link rel="icon" href="{cs_icon_url}" type="image/gif" />

    <!-- include catsoop base css -->
    <link rel="stylesheet" type="text/css" href="{cs_theme}" />

    <!-- set up JS namespace for catsoop -->
    <script type="text/javascript">
    // @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3
    var catsoop = {{plugins: {{}}}};

    function toggleResponsiveHeader(){{
        document.getElementsByTagName('header')[0].classList.toggle('responsive');
    }}

    function toggleAttribute(elt, attr){{
        elt.setAttribute(attr, elt.getAttribute(attr) === "true" ? "false" : "true");
    }}

    catsoop.topMenuFocus = function(event) {{
        var elt = event.target;
        var target = event.relatedTarget;
        if (elt.classList.contains('menu-submenu')){{
            var topmenu = elt.parentNode.parentNode;
            if (target && !target.classList.contains("menu-submenu") && target !== topmenu.children[1]) {{
                clearMenu(topmenu);
            }}
        }}else if (!target.classList.contains('cs_top_menu_item')){{
            clearMenu(elt.parentNode);
        }}
    }}

    window.addEventListener('DOMContentLoaded', function(){{
        var menu_boxes = document.getElementsByClassName('dropdown-checkbox');
        for(var i=0; i<menu_boxes.length; i++){{
            menu_boxes[i].checked = false;
        }}
    }});

    function clearMenu(menu){{
       menu.children[1].checked = false;
    }}
    // @license-end
    </script>

    <!-- dark mode -->
    <script type="text/javascript" src="BASE/js/darkreader/darkreader.min.js"></script>
    <script type="text/javascript">
    // @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3
    catsoop.dark_mode_settings = {cs_rendered_dark_mode_settings};
    if (catsoop.dark_mode_settings === null){{
        catsoop.dark_mode_settings = JSON.parse(localStorage.getItem('catsoop_dark_mode_settings'));
        if (catsoop.dark_mode_settings === null){{
            catsoop.dark_mode_settings = {cs_dark_mode_default_settings!r};
        }}
    }}
    localStorage.setItem('catsoop_dark_mode_settings', JSON.stringify(catsoop.dark_mode_settings));
    catsoop.dark_mode = catsoop.dark_mode_settings.mode;
    delete catsoop.dark_mode_settings.mode;
    if (catsoop.dark_mode === 'enabled' || catsoop.dark_mode === 'auto'){{
        DarkReader[catsoop.dark_mode == 'enabled' ? 'enable' : 'auto'](catsoop.dark_mode_settings);
    }}
    {cs_dark_mode_javascript}
    // @license-end
    </script>

    <!-- load in mathjax and CAT-SOOP-specific math rendering  -->
    <script type="text/javascript">
    // @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3
    MathJax = {{
      startup: {{
        typeset: false,
      }}
    }}

    catsoop.render_math = function (elt) {{
        if(elt.classList.contains('cs_displaymath')){{
            var b = "\\[";
            var e = "\\]";
        }}else{{
            var b = "\\(";
            var e = "\\)";
        }}
        elt.innerText = b + elt.innerText + e;
        MathJax.typeset([elt]);
        elt.classList.remove('cs_math_to_render');
    }}


    catsoop.render_all_math = function (elt){{
        if (elt === null) {{
            return;
        }}
        var mathelts = elt.getElementsByClassName('cs_math_to_render');
        while(mathelts.length > 0){{
            catsoop.render_math(mathelts[0]);
        }}
    }}
    document.addEventListener("DOMContentLoaded", function(event) {{
          catsoop.render_all_math(document);
    }});
    // @license-end
    </script>
    <script id="MathJax-script" src="BASE/js/mathjax/tex-chtml-full-speech.js"></script>

    <!-- load in diagram stuff -->
    <script type="text/javascript" src="BASE/js/cs_diagrams.js"></script>
    <script type="text/javascript">
        catsoop.diagram_sources = {{}};
    </script>

    <!-- Syntax Highlighting -->
    <script type="text/javascript" src="BASE/js/highlight/highlight.min.js"></script>
    <script type="text/javascript" src="BASE/js/highlightjs-line-numbers.js"></script>
    <script type="text/javascript">
    // @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3
    catsoop.syntax_highlighting = function (elt) {{
        if (elt === null) {{
            return;
        }}
        elt.querySelectorAll('pre > code:not(.highlighted)').forEach((block) => {{
            hljs.highlightBlock(block);
            var wrap = document.createElement("section");
            wrap.setAttribute("aria-label", "Code block");
            block.parentNode.replaceWith(wrap);
            wrap.append(block.parentNode);
            block.classList.add('highlighted');
        }});
        elt.querySelectorAll('code.highlight-lines').forEach(function(b){{
            hljs.lineNumbersBlock(b);
            if ((b.innerHTML.trim().match(/\r\n|\r|\n/g) || []).length > 0){{
                b.parentElement.style = "padding-left: 0px !important;"
                b.classList.add('hljs');
            }}
            b.classList.remove('highlight-lines');
        }});
    }}
    window.addEventListener('DOMContentLoaded', function(){{
        catsoop.syntax_highlighting(document);
    }});
    // @license-end
    </script>
    <style>
      :root {{
        --cs-base-bg-color: {cs_base_color};
        --cs-light-bg-color: {cs_light_color};
        --cs-base-font-color: {cs_base_font_color};
        --cs-light-font-color: {cs_light_font_color};
    }}
    </style>

    {cs_scripts}

    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
  </head>
  <body style="margin: 0px;">
    <header id="cs_header">
        <div class="nav-container" aria-role="menubar">
            <div class="cs_header_text"><a href="{cs_home_link}">{cs_header}</a></div>
            {cs_top_menu_html}
        </div>
    </header>
   <nav id="cs_breadcrumbs" class="cs_navigation cs_top_navigation" aria-label="Breadcrumbs">{cs_breadcrumbs_html}</nav>
    <div id="cs_body" class="cs_body">
      <div class="cs_left_menu"></div>
      <div class="cs_content">
        <div class="cs_page_body" role="main">
          <center><h1 class="cs_content_header">{cs_content_header}</h1></center>
          {cs_content}
          <div id="cs_footnotes" style="display:none;"></div>
        </div>
      </div>
      <div class="cs_right_menu"></div>
    </div>
    <footer>
    <nav id="cs_bottom_navigation" class="cs_navigation cs_bottom_navigation" aria-label="Breadcrumbs">{cs_breadcrumbs_html}</nav>
    <div class="cs_footer">
      {cs_footer}
      <pre class="catsooplogo" style="font-size:50%;">{cs_base_logo_text}</pre>
      Powered by <a target='_blank' href='https://catsoop.org'>CAT-SOOP</a> v{cs_version} {cs_version_codename}.<br/>
      CAT-SOOP is <a href="https://www.fsf.org/about/what-is-free-software" target="_blank">Free/Libre Software</a>, available under the terms<br/>of the <a href="BASE/_util/license" target="_blank">GNU Affero General Public License, version 3</a>.<br/>
      <a href="BASE/_util/source.zip" download target="_blank">Download Source Code</a><br/>
      <a href="BASE/_util/jslicense.html" rel="jslicense" target="_blank">Javascript License Information</a>
    </div>
  </footer>
  </body>
</html>
