Files
2023-11-20 11:57:03 -08:00

321 lines
26 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>About CodeQL packs &#8212; CodeQL</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=93459777" />
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="About QL packs" href="about-ql-packs.html" />
<link rel="prev" title="CodeQL CLI reference" href="codeql-cli-reference.html" />
<title>CodeQL docs</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<link rel="stylesheet" href="../_static/primer.css" type="text/css" />
</head><body>
<header class="Header">
<div class="Header-item--full">
<a href="https://codeql.github.com/docs" class="Header-link f2 d-flex flex-items-center">
<!-- <%= octicon "mark-github", class: "mr-2", height: 32 %> -->
<svg height="32" class="octicon octicon-mark-github mr-2" viewBox="0 0 16 16" version="1.1" width="32"
aria-hidden="true">
<path fill-rule="evenodd"
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z">
</path>
</svg>
<span class="hide-sm">CodeQL documentation</span>
</a>
</div>
<div class="Header-item hide-sm hide-md">
<script src="https://addsearch.com/js/?key=93b4d287e2fc079a4089412b669785d5&categories=!0xhelp.semmle.com,0xcodeql.github.com,1xdocs,1xcodeql-standard-libraries,1xcodeql-query-help"></script>
</div>
<div class="Header-item">
<details class="dropdown details-reset details-overlay d-inline-block">
<summary class="btn bg-gray-dark text-white border" aria-haspopup="true">
CodeQL resources
<div class="dropdown-caret"></div>
</summary>
<ul class="dropdown-menu dropdown-menu-se dropdown-menu-dark">
<li><a class="dropdown-item" href="https://codeql.github.com/docs/codeql-overview">CodeQL overview</a></li>
<li class="dropdown-divider" role="separator"></li>
<div class="dropdown-header">
CodeQL tools
</div>
<li><a class="dropdown-item" href="https://codeql.github.com/docs/codeql-for-visual-studio-code">CodeQL for VS Code</a>
<li><a class="dropdown-item" href="https://codeql.github.com/docs/codeql-cli">CodeQL CLI</a>
</li>
<li class="dropdown-divider" role="separator"></li>
<div class="dropdown-header">
CodeQL guides
</div>
<li><a class="dropdown-item" href="https://codeql.github.com/docs/writing-codeql-queries">Writing CodeQL queries</a></li>
<li><a class="dropdown-item" href="https://codeql.github.com/docs/codeql-language-guides">CodeQL language guides</a>
<li class="dropdown-divider" role="separator"></li>
<div class="dropdown-header">
Reference docs
</div>
<li><a class="dropdown-item" href="https://codeql.github.com/docs/ql-language-reference/">QL language
reference</a>
<li><a class="dropdown-item" href="https://codeql.github.com/codeql-standard-libraries">CodeQL
standard-libraries</a>
<li><a class="dropdown-item" href="https://codeql.github.com/codeql-query-help">CodeQL
query help</a>
<li class="dropdown-divider" role="separator"></li>
<div class="dropdown-header">
Source files
</div>
<li><a class="dropdown-item" href="https://github.com/github/codeql">CodeQL repository</a>
</ul>
</details>
</div>
</header>
<main class="bg-gray-light clearfix">
<nav class="SideNav position-sticky top-0 col-lg-3 col-md-3 float-left p-4 hide-sm hide-md overflow-y-auto">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../codeql-overview/index.html">CodeQL overview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../codeql-for-visual-studio-code/index.html">CodeQL for Visual Studio Code</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">CodeQL CLI</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="using-the-codeql-cli.html">Using the CodeQL CLI</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="codeql-cli-reference.html">CodeQL CLI reference</a><ul class="current">
<li class="toctree-l3 current"><a class="current reference internal" href="#">About CodeQL packs</a></li>
<li class="toctree-l3"><a class="reference internal" href="about-ql-packs.html">About QL packs</a></li>
<li class="toctree-l3"><a class="reference internal" href="query-reference-files.html">Query reference files</a></li>
<li class="toctree-l3"><a class="reference internal" href="sarif-output.html">SARIF output</a></li>
<li class="toctree-l3"><a class="reference internal" href="exit-codes.html">Exit codes</a></li>
<li class="toctree-l3"><a class="reference internal" href="extractor-options.html">Extractor options</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference external" href="https://codeql.github.com/docs/codeql-cli/manual">CodeQL CLI manual</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../writing-codeql-queries/index.html">Writing CodeQL queries</a></li>
<li class="toctree-l1"><a class="reference internal" href="../codeql-language-guides/index.html">CodeQL language guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ql-language-reference/index.html">QL language reference</a></li>
</ul>
</nav>
<div class="body col-sm-12 col-md-9 col-lg-9 float-left border-left">
<div class="hide-lg hide-xl px-4 pt-4">
<div class="related" role="navigation" aria-label="related navigation">
<ul>
<li class="nav-item nav-item-0"><a href="../contents.html">CodeQL</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="index.html"
>CodeQL CLI</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="codeql-cli-reference.html"
accesskey="U">CodeQL CLI reference</a> &#187;</li>
</ul>
</div>
</div>
<article class="p-4 col-lg-10 col-md-10 col-sm-12">
<section id="about-codeql-packs">
<span id="id1"></span><h1>About CodeQL packs<a class="headerlink" href="#about-codeql-packs" title="Link to this heading"></a></h1>
<blockquote class="pull-quote">
<div><p>Note</p>
<p>The CodeQL package management functionality, including CodeQL packs, is currently available as a beta release and is subject to change. During the beta release, CodeQL packs are available only using GitHub Packages - the GitHub Container registry. To use this beta functionality, install version 2.6.0 or higher of the CodeQL CLI bundle from: <a class="reference external" href="https://github.com/github/codeql-action/releases">https://github.com/github/codeql-action/releases</a>.</p>
</div></blockquote>
<p>CodeQL packs are used to create, share, depend on, and run CodeQL queries and libraries. You can publish your own CodeQL packs and download packs created by others. CodeQL packs contain queries, library files, query suites, and metadata.</p>
<p>There are two types of CodeQL packs: query packs and library packs.</p>
<ul class="simple">
<li><p>Query packs are designed to be run. When a query pack is published, the bundle includes all the transitive dependencies and a compilation cache. This ensures consistent and efficient execution of the queries in the pack.</p></li>
<li><p>Library packs are designed to be used by query packs (or other library packs) and do not contain queries themselves. The libraries are not compiled and there is no compilation cache included when the pack is published.</p></li>
</ul>
<p>You can use the package management commands in the CodeQL CLI to create CodeQL packs, add dependencies to packs, and install or update dependencies. For more information, see “<a class="reference internal" href="creating-and-working-with-codeql-packs.html#creating-and-working-with-codeql-packs"><span class="std std-ref">Creating and working with CodeQL packs</span></a>.” You can also publish and download CodeQL packs using the CodeQL CLI. For more information, see “<a class="reference internal" href="publishing-and-using-codeql-packs.html"><span class="doc">Publishing and using CodeQL packs</span></a>.”</p>
<section id="codeql-pack-structure">
<h2>CodeQL pack structure<a class="headerlink" href="#codeql-pack-structure" title="Link to this heading"></a></h2>
<p>A CodeQL pack must contain a file called <code class="docutils literal notranslate"><span class="pre">qlpack.yml</span></code> in its root directory. In the <code class="docutils literal notranslate"><span class="pre">qlpack.yml</span></code> file, the <code class="docutils literal notranslate"><span class="pre">name:</span></code> field must have a value that follows the format of <code class="docutils literal notranslate"><span class="pre">&lt;scope&gt;/&lt;pack&gt;</span></code>, where <code class="docutils literal notranslate"><span class="pre">&lt;scope&gt;</span></code> is the GitHub organization or user account that the pack will be published to and <code class="docutils literal notranslate"><span class="pre">&lt;pack&gt;</span></code> is the name of the pack. The other
files and directories within the pack should be logically organized. For example, typically:</p>
<ul class="simple">
<li><p>Queries are organized into directories for specific categories.</p></li>
<li><p>Queries for specific products, libraries, and frameworks are organized into
their own top-level directories.</p></li>
</ul>
</section>
<section id="about-qlpack-yml-files">
<h2>About <code class="docutils literal notranslate"><span class="pre">qlpack.yml</span></code> files<a class="headerlink" href="#about-qlpack-yml-files" title="Link to this heading"></a></h2>
<p>When executing query-related commands, CodeQL first looks in siblings of the installation directory (and their subdirectories) for <code class="docutils literal notranslate"><span class="pre">qlpack.yml</span></code> files.
Then it checks the package cache for CodeQL packs which have been downloaded. This means that when you are developing queries locally, the local packages
in the installation directory override packages of the same name in the package cache, so that you can test your local changes.</p>
<p>The metadata in each <cite>qlpack.yml`</cite> file tells
CodeQL how to compile any queries in the pack, what libraries the pack depends on, and where to
find query suite definitions.</p>
<p>The contents of the CodeQL pack (queries or libraries used in CodeQL analysis) is
included in the same directory as <code class="docutils literal notranslate"><span class="pre">qlpack.yml</span></code>, or its subdirectories.</p>
<p>The location of <code class="docutils literal notranslate"><span class="pre">qlpack.yml</span></code> defines the library path for the content
of the CodeQL pack. That is, for all <code class="docutils literal notranslate"><span class="pre">.ql</span></code> and <code class="docutils literal notranslate"><span class="pre">.qll</span></code> files in the pack,
CodeQL will resolve all import statements relative to the <code class="docutils literal notranslate"><span class="pre">qlpack.yml</span></code> at the
packs root.</p>
<section id="qlpack-yml-properties">
<span id="codeqlpack-yml-properties"></span><h3><code class="docutils literal notranslate"><span class="pre">qlpack.yml</span></code> properties<a class="headerlink" href="#qlpack-yml-properties" title="Link to this heading"></a></h3>
<p>The following properties are supported in <code class="docutils literal notranslate"><span class="pre">qlpack.yml</span></code> files.</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Property</p></th>
<th class="head"><p>Example</p></th>
<th class="head"><p>Required</p></th>
<th class="head"><p>Purpose</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">name</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">octo-org/security-queries</span></code></p></td>
<td><p>All packs</p></td>
<td><p>The scope, where the CodeQL pack is published, and the name of the pack defined using alphanumeric characters and hyphens. It must be unique as CodeQL cannot differentiate between CodeQL packs with identical names. Name components cannot start or end with a hyphen. Additionally, a period is not allowed in pack names at all. Use the pack name to specify queries to run using <code class="docutils literal notranslate"><span class="pre">database</span> <span class="pre">analyze</span></code> and to define dependencies between QL packs (see examples below).</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">version</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">0.0.0</span></code></p></td>
<td><p>All packs</p></td>
<td><p>A version range for this CodeQL pack. This must be a valid semantic version that meets the <a class="reference external" href="https://semver.org/spec/v2.0.0.html">SemVer v2.0.0 specification</a>.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">dependencies</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">codeql/javascript-all:</span> <span class="pre">^1.2.3</span></code></p></td>
<td><p>Optional</p></td>
<td><p>The names and version ranges of any CodeQL packs that this pack depends on, as a mapping. This gives the pack access to any libraries, database schema, and query suites defined in the dependency. For more information, see <a class="reference external" href="https://docs.npmjs.com/cli/v6/using-npm/semver#ranges">SemVer ranges</a> in the NPM documentation.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">suites</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">octo-org-query-suites</span></code></p></td>
<td><p>Optional</p></td>
<td><p>The path to a directory in the pack that contains the query suites you want to make known to the CLI, defined relative to the pack directory. QL pack users can run “well-known” suites stored in this directory by specifying the pack name, without providing their full path. This is not supported for CodeQL packs downloaded from a package registry. For more information about query suites, see “<a class="reference internal" href="creating-codeql-query-suites.html"><span class="doc">Creating CodeQL query suites</span></a>.”</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">extractor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">javascript</span></code></p></td>
<td><p>All test packs</p></td>
<td><p>The CodeQL language extractor to use when the CLI creates a database in the pack. For more information about testing queries, see “<a class="reference internal" href="testing-custom-queries.html"><span class="doc">Testing custom queries</span></a>.”</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">tests</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">.</span></code></p></td>
<td><p>Optional for test packs</p></td>
<td><p>The path to a directory within the pack that contains tests, defined relative to the pack directory. Use <code class="docutils literal notranslate"><span class="pre">.</span></code> to specify the whole pack. Any queries in this directory are run as tests when <code class="docutils literal notranslate"><span class="pre">test</span> <span class="pre">run</span></code> is run with the <code class="docutils literal notranslate"><span class="pre">--strict-test-discovery</span></code> option. These queries are ignored by query suite definitions that use <code class="docutils literal notranslate"><span class="pre">queries</span></code> or <code class="docutils literal notranslate"><span class="pre">qlpack</span></code> instructions to ask for all queries in a particular pack.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">dbscheme</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">semmlecode.python.dbscheme</span></code></p></td>
<td><p>Core language packs only</p></td>
<td><p>The path to the <a class="reference internal" href="../codeql-overview/codeql-glossary.html#codeql-database-schema"><span class="std std-ref">database schema</span></a> for all libraries and queries written for this CodeQL language (see example below).</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">upgrades</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">.</span></code></p></td>
<td><p>Core language packs only</p></td>
<td><p>The path to a directory within the pack that contains upgrade scripts, defined relative to the pack directory. The <code class="docutils literal notranslate"><span class="pre">database</span> <span class="pre">upgrade</span></code> action uses these scripts to update databases that were created by an older version of an extractor so theyre compatible with the current extractor (see <a class="reference external" href="#upgrade-scripts-for-a-language">Upgrade scripts for a language</a> below.)</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">authors</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">example&#64;github.com</span></code></p></td>
<td><p>All packs</p></td>
<td><p>Metadata that will be displayed on the packaging search page in the packages section of the account that the CodeQL pack is published to.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">licenses</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">(LGPL-2.1</span> <span class="pre">AND</span> <span class="pre">MIT)</span></code></p></td>
<td><p>All packs</p></td>
<td><p>Metadata that will be displayed on the packaging search page in the packages section of the account that the CodeQL pack is published to. For a list of allowed licenses, see <a class="reference external" href="https://spdx.org/licenses/">SPDX License List</a> in the SPDX Specification.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">description</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">Human-readable</span> <span class="pre">description</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">contents</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">CodeQL</span> <span class="pre">pack.</span></code></p></td>
<td><p>All packs</p></td>
<td><p>Metadata that will be displayed on the packaging search page in the packages section of the account that the CodeQL pack is published to.</p></td>
</tr>
</tbody>
</table>
</section>
</section>
</section>
</article>
<!-- GitHub footer, with links to terms and privacy statement -->
<div class="px-3 px-md-6 f6 py-4 d-sm-flex flex-justify-between flex-row-reverse flex-items-center border-top">
<ul class="list-style-none d-flex flex-items-center mb-3 mb-sm-0 lh-condensed-ultra">
<li class="mr-3">
<a href="https://twitter.com/github" title="GitHub on Twitter" style="color: #959da5;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 273.5 222.3" class="d-block" height="18">
<path
d="M273.5 26.3a109.77 109.77 0 0 1-32.2 8.8 56.07 56.07 0 0 0 24.7-31 113.39 113.39 0 0 1-35.7 13.6 56.1 56.1 0 0 0-97 38.4 54 54 0 0 0 1.5 12.8A159.68 159.68 0 0 1 19.1 10.3a56.12 56.12 0 0 0 17.4 74.9 56.06 56.06 0 0 1-25.4-7v.7a56.11 56.11 0 0 0 45 55 55.65 55.65 0 0 1-14.8 2 62.39 62.39 0 0 1-10.6-1 56.24 56.24 0 0 0 52.4 39 112.87 112.87 0 0 1-69.7 24 119 119 0 0 1-13.4-.8 158.83 158.83 0 0 0 86 25.2c103.2 0 159.6-85.5 159.6-159.6 0-2.4-.1-4.9-.2-7.3a114.25 114.25 0 0 0 28.1-29.1"
fill="currentColor"></path>
</svg>
</a>
</li>
<li class="mr-3">
<a href="https://www.facebook.com/GitHub" title="GitHub on Facebook" style="color: #959da5;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.3 15.4" class="d-block" height="18">
<path
d="M14.5 0H.8a.88.88 0 0 0-.8.9v13.6a.88.88 0 0 0 .8.9h7.3v-6h-2V7.1h2V5.4a2.87 2.87 0 0 1 2.5-3.1h.5a10.87 10.87 0 0 1 1.8.1v2.1h-1.3c-1 0-1.1.5-1.1 1.1v1.5h2.3l-.3 2.3h-2v5.9h3.9a.88.88 0 0 0 .9-.8V.8a.86.86 0 0 0-.8-.8z"
fill="currentColor"></path>
</svg>
</a>
</li>
<li class="mr-3">
<a href="https://www.youtube.com/github" title="GitHub on YouTube" style="color: #959da5;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.17 13.6" class="d-block" height="16">
<path
d="M18.77 2.13A2.4 2.4 0 0 0 17.09.42C15.59 0 9.58 0 9.58 0a57.55 57.55 0 0 0-7.5.4A2.49 2.49 0 0 0 .39 2.13 26.27 26.27 0 0 0 0 6.8a26.15 26.15 0 0 0 .39 4.67 2.43 2.43 0 0 0 1.69 1.71c1.52.42 7.5.42 7.5.42a57.69 57.69 0 0 0 7.51-.4 2.4 2.4 0 0 0 1.68-1.71 25.63 25.63 0 0 0 .4-4.67 24 24 0 0 0-.4-4.69zM7.67 9.71V3.89l5 2.91z"
fill="currentColor"></path>
</svg>
</a>
</li>
<li class="mr-3 flex-self-start">
<a href="https://www.linkedin.com/company/github" title="GitHub on Linkedin" style="color: #959da5;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" class="d-block" height="18">
<path
d="M3.94 2A2 2 0 1 1 2 0a2 2 0 0 1 1.94 2zM4 5.48H0V18h4zm6.32 0H6.34V18h3.94v-6.57c0-3.66 4.77-4 4.77 0V18H19v-7.93c0-6.17-7.06-5.94-8.72-2.91z"
fill="currentColor"></path>
</svg>
</a>
</li>
<li>
<a href="https://github.com/github" title="GitHub's organization" style="color: #959da5;">
<svg version="1.1" width="20" height="20" viewBox="0 0 16 16" class="octicon octicon-mark-github"
aria-hidden="true">
<path fill-rule="evenodd"
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z">
</path>
</svg>
</a>
</li>
</ul>
<ul class="list-style-none d-flex text-gray">
<li class="mr-3">&copy;
<script type="text/javascript">document.write(new Date().getFullYear());</script> GitHub, Inc.</li>
<li class="mr-3"><a
href="https://docs.github.com/github/site-policy/github-terms-of-service"
class="link-gray">Terms </a></li>
<li><a href="https://docs.github.com/github/site-policy/github-privacy-statement"
class="link-gray">Privacy </a></li>
</ul>
</div>
</div>
</main>
<script type="text/javascript">
$(document).ready(function () {
$(".toggle > *").hide();
$(".toggle .name").show();
$(".toggle .name").click(function () {
$(this).parent().children().not(".name").toggle(400);
$(this).parent().children(".name").toggleClass("open");
})
});
</script>
</body>
</html>