Alex Garcia's Blog

Vector search in 7 different programming languages using SQL

May 23rd, 2024 by Alex Garcia

As part of the sqlite-vec project, I provide multiple "bindings" to various programming languages and runtimes, including:

This article won't be about how I created the bindings — for that, see this blog post for Python, this one for Node.js, and this one for Ruby. Instead, I want to compare all these languages together, in the specific context of vector search with sqlite-vec.

Here's the goal: For every programming language and runtime listed above, we are going to write a single-file script that does the following:

  1. Loads the sqlite-vec SQLite extension
  2. Prints the SQLite version and sqlite-vec version, using the sqlite_version() and vec_version() SQL functions.
  3. Create a vec0 virtual table and populate it with 4-dimensional vectors.
  4. Query the vec0 table to find the 3 closest vectors to a query vector (KNN-style query).

For the 4-dimensional vectors, we will use this "database" of five vectors:

[0.1, 0.1, 0.1, 0.1]
[0.2, 0.2, 0.2, 0.2]
[0.3, 0.3, 0.3, 0.3]
[0.4, 0.4, 0.4, 0.4]
[0.5, 0.5, 0.5, 0.5]

With id values of 1, 2, 3, 4, and 5, respectively. The query vector is:

[0.3, 0.3, 0.3, 0.3]

From eye-balling it, we can see the closest vector will always be #3 with a distance of 0, since both vectors have equal values. The next two closest vectors will be #2 and #4.

Let's get into the code! For reference, these examples can be found in the sqlite-vec examples directory. Feel free to skip to a specific language, or head to the bottom for some high-level notes:

Baseline: pure SQL

As a baseline, here's this logic in pure SQL:

.load ../../dist/vec0
.mode table
.header on

select sqlite_version(), vec_version();

CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4]);

INSERT INTO vec_items(rowid, embedding)
  select
    value ->> 0,
    value ->> 1
  from json_each('[
    [1, [0.1, 0.1, 0.1, 0.1]],
    [2, [0.2, 0.2, 0.2, 0.2]],
    [3, [0.3, 0.3, 0.3, 0.3]],
    [4, [0.4, 0.4, 0.4, 0.4]],
    [5, [0.5, 0.5, 0.5, 0.5]]
  ]');

SELECT
  rowid,
  distance
FROM vec_items
WHERE embedding MATCH '[0.3, 0.3, 0.3, 0.3]'
ORDER BY distance
LIMIT 3;

And the output, using the SQLite CLI (v3.45.1):

$ sqlite3 < demo.sql
+------------------+----------------+
| sqlite_version() | vec_version()  |
+------------------+----------------+
| 3.45.1           | v0.0.1-alpha.9 |
+------------------+----------------+
+-------+-------------------+
| rowid |     distance      |
+-------+-------------------+
| 3     | 0.0               |
| 4     | 0.199999988079071 |
| 2     | 0.200000017881393 |
+-------+-------------------+

Fairly straightforward! There's little boilerplate, only a few dot-commands at the top to load the extension and configure the output.

One interesting note: SQLite doesn't have "vectors" or "lists" as a native datatype. However, we can use SQLite's builtin JSON functions like json_each() and ->> to help when bulk-inserting vectors. sqlite-vec will automatically recognize and parse vectors provided as JSON, so we're good to go!

Python

Here's the Python implementation of the "simple" demo, using Python's builtin sqlite3 library and the sqlite-vec PyPi package:

Show Python code
import sqlite3
import sqlite_vec

from typing import List
import struct


def serialize_f32(vector: List[float]) -> bytes:
    """serializes a list of floats into a compact "raw bytes" format"""
    return struct.pack("%sf" % len(vector), *vector)


db = sqlite3.connect(":memory:")
db.enable_load_extension(True)
sqlite_vec.load(db)
db.enable_load_extension(False)

sqlite_version, vec_version = db.execute(
    "select sqlite_version(), vec_version()"
).fetchone()
print(f"sqlite_version={sqlite_version}, vec_version={vec_version}")

items = [
    (1, [0.1, 0.1, 0.1, 0.1]),
    (2, [0.2, 0.2, 0.2, 0.2]),
    (3, [0.3, 0.3, 0.3, 0.3]),
    (4, [0.4, 0.4, 0.4, 0.4]),
    (5, [0.5, 0.5, 0.5, 0.5]),
]
query = [0.3, 0.3, 0.3, 0.3]

db.execute("CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4])")

with db:
    for item in items:
        db.execute(
            "INSERT INTO vec_items(rowid, embedding) VALUES (?, ?)",
            [item[0], serialize_f32(item[1])],
        )

rows = db.execute(
    """
      SELECT
        rowid,
        distance
      FROM vec_items
      WHERE embedding MATCH ?
      ORDER BY distance
      LIMIT 3
    """,
    [serialize_f32(query)],
).fetchall()

print(rows)

And the output:

$ python demo.py
sqlite_version=3.45.1, vec_version=v0.0.1-alpha.9
[(3, 0.0), (4, 0.19999998807907104), (2, 0.20000001788139343)]

Having SQLite in the standard library for your programming language is great! Nothing extra to install, just works out of the box. However, sometimes your version of SQLite can "lag", especially if you haven't upgraded in a bit. And since sqlite-vec relies on "new" SQLite features for performance/developer experience upgrades, it can get a little annoying.

We can insert vectors as JSON strings or in a compact binary format. In general, the compact binary format is faster to generate. We do have a build a helper function, serialize_f32(), which is a bit cumbersome, but it's only a single line.

Ruby

Here's the Ruby implementation of the "simple" demo, using the sqlite3 gem and the sqlite-vec gem:

Show Ruby code
require 'sqlite3'
require 'sqlite_vec'


db = SQLite3::Database.new(':memory:')
db.enable_load_extension(true)
SqliteVec.load(db)
db.enable_load_extension(false)

sqlite_version, vec_version = db.execute("select sqlite_version(), vec_version()").first
puts "sqlite_version=#{sqlite_version}, vec_version=#{vec_version}"

db.execute("CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4])")

items = [
  [1, [0.1, 0.1, 0.1, 0.1]],
  [2, [0.2, 0.2, 0.2, 0.2]],
  [3, [0.3, 0.3, 0.3, 0.3]],
  [4, [0.4, 0.4, 0.4, 0.4]],
  [5, [0.5, 0.5, 0.5, 0.5]],
]

db.transaction do
  items.each do |item|
    db.execute("INSERT INTO vec_items(rowid, embedding) VALUES (?, ?)", [item[0], item[1].pack("f*")])
  end
end

query = [0.3, 0.3, 0.3, 0.3]
rows = db.execute(<<-SQL, [query.pack("f*")])
  SELECT
    rowid,
    distance
  FROM vec_items
  WHERE embedding MATCH ?
  ORDER BY distance
  LIMIT 3
SQL

puts rows

And the output:

sqlite_version=3.45.3, vec_version=v0.0.1-alpha.3
3
0.0
4
0.19999998807907104
2
0.20000001788139343

In Ruby we can use .pack("f*") to convert an array of floats into a vector BLOB. That's nice! We can also use a heredoc for the SQL (<<-SQL) which gave me SQL syntax highlighting in my editor, which is neat.

Node.js

Here's the Node.js implementation of the "simple" demo, using better-sqlite3 npm package and the sqlite-vec npm package:

Show Node.js code
import * as sqliteVec from "sqlite-vec";
import Database from "better-sqlite3";

const db = new Database(":memory:");
sqliteVec.load(db);

const { sqlite_version, vec_version } = db
  .prepare(
    "select sqlite_version() as sqlite_version, vec_version() as vec_version;",
  )
  .get();

console.log(`sqlite_version=${sqlite_version}, vec_version=${vec_version}`);

const items = [
  [1, [0.1, 0.1, 0.1, 0.1]],
  [2, [0.2, 0.2, 0.2, 0.2]],
  [3, [0.3, 0.3, 0.3, 0.3]],
  [4, [0.4, 0.4, 0.4, 0.4]],
  [5, [0.5, 0.5, 0.5, 0.5]],
];
const query = [0.3, 0.3, 0.3, 0.3];

db.exec("CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4])");

const insertStmt = db.prepare(
  "INSERT INTO vec_items(rowid, embedding) VALUES (?, ?)",
);

const insertVectors = db.transaction((items) => {
  for (const [id, vector] of items) {
    insertStmt.run(BigInt(id), new Float32Array(vector));
  }
});

insertVectors(items);

const rows = db
  .prepare(
    `
  SELECT
    rowid,
    distance
  FROM vec_items
  WHERE embedding MATCH ?
  ORDER BY distance
  LIMIT 3
`,
  )
  .all(new Float32Array(query));

console.log(rows);

And the output:

$ node demo.mjs
sqlite_version=3.45.3, vec_version=v0.0.1-alpha.8
[
  { rowid: 3, distance: 0 },
  { rowid: 4, distance: 0.19999998807907104 },
  { rowid: 2, distance: 0.20000001788139343 }
]

I'm a big fan of the better-sqlite3 package! The API make a lot of sense and is easy to work with. For coverting an array of numbers to a vector BLOB, all we need to do is wrap it with new Float32Array() and better-sqlite3 will bind is as a BLOB. Pretty neat!

Bun

Here's the Bun implementation of the "simple" demo, using Buns's builtin bun:sqlite library and the sqlite-vec npm package:

Show Bun code
import { Database } from "bun:sqlite";
Database.setCustomSQLite("/usr/local/opt/sqlite3/lib/libsqlite3.dylib");

const db = new Database(":memory:");
//sqliteVec.load(db);
db.loadExtension("../../dist/vec0");

const { sqlite_version, vec_version } = db
  .prepare(
    "select sqlite_version() as sqlite_version, vec_version() as vec_version;",
  )
  .get();

console.log(`sqlite_version=${sqlite_version}, vec_version=${vec_version}`);

const items = [
  [1, [0.1, 0.1, 0.1, 0.1]],
  [2, [0.2, 0.2, 0.2, 0.2]],
  [3, [0.3, 0.3, 0.3, 0.3]],
  [4, [0.4, 0.4, 0.4, 0.4]],
  [5, [0.5, 0.5, 0.5, 0.5]],
];
const query = [0.3, 0.3, 0.3, 0.3];

db.exec("CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4])");

const insertStmt = db.prepare(
  "INSERT INTO vec_items(rowid, embedding) VALUES (?, vec_f32(?))",
);

const insertVectors = db.transaction((items) => {
  for (const [id, vector] of items) {
    insertStmt.run(BigInt(id), new Float32Array(vector));
  }
});

insertVectors(items);

const rows = db
  .prepare(
    `
  SELECT
    rowid,
    distance
  FROM vec_items
  WHERE embedding MATCH ?
  ORDER BY distance
  LIMIT 3
`,
  )
  .all(new Float32Array(query));

console.log(rows);

And the output:

$ bun demo.ts
sqlite_version=3.45.1, vec_version=v0.0.1-alpha.9
[
  {
    rowid: 3,
    distance: 0,
  }, {
    rowid: 4,
    distance: 0.19999998807907104,
  }, {
    rowid: 2,
    distance: 0.20000001788139343,
  }
]

Very similar to the Node.js demo! The only real difference is that the builtin bun:sqlite package is used instead of better-sqlite3, which already has a similar API to better-sqlite3, so little code changes are needed. However, bun:sqlite will by default use the system-level SQLite library, with on MacOS doesn't allow extensions. So I needed to use Database.setCustomSQLite() to point to the brew version of SQLite instead.

Although technically, Bun is compatible with Node.js, so theoretically we could also run the Node.js version with Bun without fuss. Though when I try on my x86 Mac, it fails for me:

$ bun ../simple-node/demo.mjs
dyld[11775]: missing symbol called
Killed: 9

Deno (almost!)

Here's the Deno implementation of the "simple" demo, using Deno's jsr:@db/sqlite library and the sqlite-vec npm package:

Show Deno code
import { Database } from "jsr:@db/sqlite@0.11";
import * as sqliteVec from "npm:sqlite-vec@0.0.1-alpha.9";

const db = new Database(":memory:");
db.enableLoadExtension = true;
sqliteVec.load(db);
db.enableLoadExtension = false;

const [sqlite_version, vec_version] = db
  .prepare("select sqlite_version(), vec_version()")
  .value<[string, string]>()!;
console.log(`sqlite_version=${sqlite_version}, vec_version=${vec_version}`);

const items = [
  [1, [0.1, 0.1, 0.1, 0.1]],
  [2, [0.2, 0.2, 0.2, 0.2]],
  [3, [0.3, 0.3, 0.3, 0.3]],
  [4, [0.4, 0.4, 0.4, 0.4]],
  [5, [0.5, 0.5, 0.5, 0.5]],
];
const query = [0.3, 0.3, 0.3, 0.3];

db.exec("CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4])");

const insertStmt = db.prepare(
  "INSERT INTO vec_items(rowid, embedding) VALUES (?, ?)"
);

const insertVectors = db.transaction((items) => {
  for (const [id, vector] of items) {
    insertStmt.run(BigInt(id), new Uint8Array(new Float32Array(vector).buffer));
  }
});

insertVectors(items);

const rows = db
  .prepare(
    `
  SELECT
    rowid,
    distance
  FROM vec_items
  WHERE embedding MATCH ?
  ORDER BY distance
  LIMIT 5
`
  )
  .all([new Uint8Array(new Float32Array(query).buffer)]);

console.log(rows);

db.close();

And the output:

$ deno run -A --unstable-ffi demo.ts
error: Error getting response at https://registry.npmjs.org/sqlite-vec for package "sqlite-vec": invalid type: null, expected a sequence at line 1 column 916
    at file:///Users/.../demo.ts:2:28

But if fails! This is because of an obscure bug that should fix on the next version of Deno. Long story short, I published an old version of the sqlite-vec NPM package with an error on the package.json file, which broke Deno/npm compatability. Thankfully, the Deno team put out a fix quickly, so hopefully we don't have to wait long for Deno 1.44!

Nonetheless, I really like Deno's SQLite client library, specifically the jsr:@db/sqlite package. Deno's FFI support is a little awkward, but it's really fast and has an even nicer API than better-sqlite3, on my opinion.

Client-side JavaScript

sqlite-vec can be compiled to WASM to be used in the browser, using the official SQLite WASM build. There is a sqlite-vec-wasm-demo NPM package that contains a pre-comiled WASM build of the SQLite library with sqlite-vec statically compiled in, that can be used like so:

Show WASM code
<html>
  <body>
    <h1>sqlite-vec demo/simple-wasm</h1>

    <div id="target"></div>
    <script type="module">
      import {default as init} from "https://cdn.jsdelivr.net/npm/sqlite-vec-wasm-demo@latest/sqlite3.mjs";

      function log(msg) {
        const pre = document.querySelector('#target').appendChild(document.createElement("pre"));
        pre.textContent = msg;
      }

      const sqlite3 = await init();
      const db = new sqlite3.oo1.DB(":memory:");

      const [sqlite_version, vec_version] = db.selectArray('select sqlite_version(), vec_version();')
      log(`sqlite_version=${sqlite_version}, vec_version=${vec_version}`);

      const items = [
        [1, [0.1, 0.1, 0.1, 0.1]],
        [2, [0.2, 0.2, 0.2, 0.2]],
        [3, [0.3, 0.3, 0.3, 0.3]],
        [4, [0.4, 0.4, 0.4, 0.4]],
        [5, [0.5, 0.5, 0.5, 0.5]],
      ];
      const query = [0.3, 0.3, 0.3, 0.3];

      db.exec('CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4]);');
      const stmt = db.prepare("INSERT INTO vec_items(rowid, embedding) VALUES (?, ?)");
      for(const item of items) {
        stmt
        .bind(1, item[0])
        .bind(2, new Float32Array(item[1]).buffer)
        .stepReset();
      }
      stmt.finalize();

      const rows = db
        .selectArrays(
          `
        SELECT
          rowid,
          distance
        FROM vec_items
        WHERE embedding MATCH ?
        ORDER BY distance
        LIMIT 3
      `, new Float32Array(query).buffer
        );

      log(JSON.stringify(rows));
    </script>
  </body>
</html>
`

If you open that in a web browser, you will see:

sqlite_version=3.45.3, vec_version=v0.0.1-alpha.9
[[3,0],[4,0.19999998807907104],[2,0.20000001788139343]]

The JavaScript bindings are from the SQLite team, which are a bit awkward, like new sqlite3.oo1.DB(":memory:"). But just like the other JavaScript runtimes, we can use new Float32Array(vector).buffer to bind vectors as BLOBs rather easily!

Go

Here's the Go implementation of the "simple" demo, using the mattn/go-sqlite3 CGO SQLite module and the cgo/sqlite-vec Go module:

Show Go code








<!DOCTYPE html>
<html
  lang="en"
  
  data-color-mode="auto" data-light-theme="light" data-dark-theme="dark"
  data-a11y-animated-images="system" data-a11y-link-underlines="true"
  
  >




  <head>
    <meta charset="utf-8">
  <link rel="dns-prefetch" href="https://github.githubassets.com">
  <link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
  <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  <link rel="preconnect" href="https://github.githubassets.com" crossorigin>
  <link rel="preconnect" href="https://avatars.githubusercontent.com">

<script type="importmap">{"imports":{"react":"https://github.githubassets.com/assets/react-e27d1b3e03961e68.js","react-dom":"https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js","react-dom/client":"https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js","react-is":"https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js","react-reconciler":"https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js","react/compiler-runtime":"https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js","react/jsx-dev-runtime":"https://github.githubassets.com/assets/react-jsx-dev-runtime-ea55d68667d559e5.js","react/jsx-runtime":"https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js","scheduler":"https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js"}}</script>
<meta name="react-profiling" content="0" data-turbo-transient="true" />
<meta name="react-import-map" content="react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@777f63f87cd0" data-turbo-track="reload" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-e27d1b3e03961e68.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js" />

      <link crossorigin="anonymous" rel="preload" as="script" href="https://github.githubassets.com/assets/global-banner-disable-1cb0d0bbec22f0f7.js" />

    <link rel="preload" href="https://github.githubassets.com/assets/MonaSansVF-wdth-wght-opsz-902d64c7ad02.woff2" as="font" type="font/woff2" crossorigin>


  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-5c4e9fc574bf49f3.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-fb37c309e0603a69.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-afff6c53aef9b9d1.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-c409873d7987dffa.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-5c4e9fc574bf49f3.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-fb37c309e0603a69.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-0f910d8806d5761b.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-a7abd4d4c49ac593.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-5fc4c4a9cb41e596.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-ed0cee9214dedabd.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-afff6c53aef9b9d1.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-c409873d7987dffa.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-78a2491d538dab5a.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-c26b63d7c532d0a2.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-a6f60cea68c08405.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-f66faf28b2ea18b6.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-6701f6218c53cf5b.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-7037fa46ae124d97.css" />

  <style type="text/css">
    :root {
      --tab-size-preference: 4;
    }

    pre, code {
      tab-size: var(--tab-size-preference);
    }
  </style>

    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-97df7784617ce1ea.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-9be9fe6313f476af.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-f65d5aef412a9712.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-7a418ea859d1654d.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-72bd7d974b5ac1cc.css" />

  

  <script type="application/json" id="client-env">{"locale":"en","featureFlags":["actions_caches_react_shell","actions_enable_background_steps","actions_new_hosted_runner_image_select_sizes_and_versions","actions_runners_react_shell","activity_diff_file_tree","activity_repos_file_tree","activity_repos_overview_header","activity_repos_overview_sidebar","agent_author_search_expansion","agent_author_search_expansion_ui_pulls","alternate_user_config_repo","async_conversion_coverage_enabled","billing_billable_licenses_cost_center_bucket_fix","billing_budget_expiration","billing_cost_center_list_assigned_resources","billing_discount_threshold_notification","code_quality_enablement_banner_targeting","code_quality_remove_preview","code_view_raf_sticky_lines","codespaces_prebuild_region_target_update","coding_agent_third_party_model_ui","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_automation_repo_mcp_servers","copilot_automations_pagination","copilot_base_model_policy_row","copilot_chat_auto_mode_v2","copilot_chat_clear_model_selection_for_default_change","copilot_chat_early_task_provisioning","copilot_chat_persist_session_drafts","copilot_chat_vision_dotcom_chat_ga_gate","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_fix_failed_workflows_all_skus","copilot_hide_hovercard","copilot_immersive_task_hyperlinking","copilot_mc_cli_resume_any_users_task","copilot_mission_control_agent_merge_fix_ci","copilot_mission_control_agent_merge_resolve_conflicts","copilot_mission_control_awps_batching","copilot_mission_control_early_stop","copilot_mission_control_managed_sandbox_environments","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_sandbox_remote_bypass","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_policy_page_focus_mode","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_automation_resource_scoped_writes","copilot_swe_agent_discussion_comment_trigger","copilot_swe_agent_discussion_opened_trigger","copilot_swe_agent_discussion_updated_trigger","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_assigned_trigger","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_issue_labeled_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_assigned_trigger","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_labeled_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_ready_for_review_trigger","copilot_swe_agent_pull_request_review_requested_trigger","copilot_swe_agent_pull_request_review_submitted_trigger","copilot_swe_agent_pull_request_synchronize_trigger","copilot_swe_agent_sub_issue_added_trigger","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_task_scoped_alive_channel","copilot_token_based_billing","copilot_unconfigured_is_inherited","copilot_user_can_upgrade_plan_field","copilot_workbench_sunset_redirect","dashboard_agents_module_auth_token_check","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","fgpat_permissions_selector_redesign","glc_code_quality_repo_settings_workflow_config","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_ubb_individual_budget_banner","issue_fields_multi_select","issue_inline_avatars","issue_pinned_views","issue_pinned_views_team_vs_personal","issue_relative_time_micro","issues_dashboard_sso_structured_errors","issues_expanded_file_types","issues_hide_closed_sub_issues","issues_index_data_router","issues_lazy_load_comment_box_suggestions","issues_react_chrome_container_query_fix","labels_archiving","labels_archiving_info","landing_pages_ninetailed","lifecycle_label_name_updates","marketing_cookie_consent_banner","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_queue_restricted_pushers_warning","merge_status_header_feedback","milestone_closed_issues_prioritization","milestone_show_data_router","octocaptcha_origin_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","prs_copilot_app_open_action","prs_css_anchor_positioning","prs_new_conversation_comments_api_live_updates","pull_request_copilot_attribution_header","pull_request_overview_merge_control","pull_request_overview_panel_edit_description","pull_request_persister","pull_request_stacks_navigation_shortcuts","pull_request_virtualization_image_estimate","pull_request_virtualization_loader_batching","pull_request_virtualization_scroll_compensation","pull_request_virtualization_scroll_intent","quick_search_lazy_suggestions","react_blob_isolate_code_lines","react_blob_ssr_content_visibility","react_data_router_tanstack_allowed","react_logged_out_repository_header","react_query_props_with_key","react_sandbox_future_tanstack","repo_app_turbo","repo_issues_sidebar_layout","repo_pulls_dashboard_declutter","repo_pulls_dashboard_ga","repo_pulls_dashboard_persistence","repo_pulls_dashboard_sidebar_links","repos_contributors_limited_default_range","review_involves_filter","rule_ignored_file_paths","rulesets_actor_list_editor","sample_network_conn_type","security_center_artifact_filters_popover","see_who_reacted","semantic_similarity_duplicate_issue_detection","session_logs_ungroup_reasoning_text","set_sha256_on_repo_creation_form","site_banner_desktop_copilot_app","site_ghca_pixel_mona","site_github_app_ga_page","site_github_app_ga_page_highlight","site_github_app_mobile_native_share","site_global_banner_dev_days_attendee","site_global_nav_spark_models_removed","speculation_rules_ui_service","suggest_custom_property_values_copilot","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","thread_resolution_reason","update_issue_suggestions","viewscreen_sandbox","warn_inaccessible_attachments","webp_support","workstream_plugin_bootstrap"],"githubDomain":"https://github.com","copilotApiOverrideUrl":"https://api.githubcopilot.com","cmcApiUrl":"https://api.github.com/cmc_internal/api"}</script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/high-contrast-cookie-b752d992928a526c.js"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-runtime-c128009fb524b3f4.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-foundation-2f08c823163591a8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-runtime-633ad94fa06c334b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fetch-utilities-0fb4c544a797ec0d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ser-7c872b58ac9f1b39.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tp-7e9817cf5c068979.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/environment-5316d8cd234e3e78.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-runtime.bef03fb24bb03be8.module.css" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/catalyst-52ed81112a548e10.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/selector-observer-e8810f64c443fb9b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/relative-time-element-0417f617ad744a0d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/by-9da36843ba9d191d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ja9-9a1160b939f2cd52.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3h-55903cf2303047ad.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hk-f1498fec45311acd.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jz5-7aa1ff0a0e750f41.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hj-1d800d09e9a8720a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j0-9697c1c8f5cbf523.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/github-elements-7ec3c50ca6c74c56.js" defer="defer"></script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/element-registry-342e010a52e32e80.js" defer="defer"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/runtime-helpers-5e0b3ae3c4036207.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aria-live-524a06aa946df6fc.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hotkey-b1ee53c2200b172a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-core-cbaead6ed565f666.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/a9-ca3bc10b816bcc1f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ur-21ec1e439ee2d87c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4t-4c39f7195fc42cc8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/pb-53cfff089eaac51b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6n-afcf86ccabc4cad2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/zj-4d9cf83cf08e1643.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wo-6991af5b3829ffe8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/nfv-a6c14301d3ea6d67.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b5-a2fde30ce0c692b9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sw-9d0489dbf9a9c942.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ttf-7d5abe1b447ced2c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sj-c7a44023ee90d468.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0pd-c46d8dfae89c2b64.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/behaviors-e223b791d26bdafa.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-core.ff7ae80249f28ed3.module.css" />
  

  <title>Page not found · GitHub · GitHub</title>



  <meta name="route-pattern" content="/:user_id/:repository/raw/*name(/*path)" data-turbo-transient>
  <meta name="route-controller" content="blob" data-turbo-transient>
  <meta name="route-action" content="raw" data-turbo-transient>
  <meta name="fetch-nonce" content="v2:d637ee42-fa4a-59e6-3e71-2535ef4f81bd">

    
  <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb">


  <meta name="request-id" content="E547:FCCC5:97E6A:C65D7:6AC690E6" data-turbo-transient="true" /><meta name="html-safe-nonce" content="ef1e9930c73fb97d03f923e7283b7ca09e6064a6cedb0e54a947ba482c849cc5" data-turbo-transient="true" /><meta name="visitor-payload" content="eyJyZWZlcnJlciI6bnVsbCwicmVxdWVzdF9pZCI6IkU1NDc6RkNDQzU6OTdFNkE6QzY1RDc6NkFDNjkwRTYiLCJ2aXNpdG9yX2lkIjoiNzIyMzcyMzU3NDQ1MTE0Njk4MiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImNlbnRyYWx1cyJ9" data-turbo-transient="true" /><meta name="visitor-hmac" content="24120262bc90eb5e73d79cfe669e611e03442aac8538cdbe2f59dfdc87382a7e" data-turbo-transient="true" />


    <meta name="hovercard-subject-tag" content="repository:789538509" data-turbo-transient>


  <meta name="github-keyboard-shortcuts" content="copilot" data-turbo-transient="true" />
  

  <meta name="selected-link" value="/asg017/sqlite-vec/raw/main/examples/simple-go/demo.go" data-turbo-transient>
  <link rel="assets" href="https://github.githubassets.com/">

    <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">

<meta name="octolytics-url" content="https://collector.github.com/github/collect" />

<meta name="octolytics-page-type" content="marketing" />



  

  




    <meta name="user-login" content="">

  

    <meta name="viewport" content="width=device-width">

    

      <meta name="description" content="GitHub is where people build software. More than 225 million people use GitHub to discover, fork, and contribute to over 800 million projects.">

      <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">

    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
    <meta property="fb:app_id" content="1401488693436528">
    <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/asg017/sqlite-vec/raw/main/examples/simple-go/demo.go" />

      <meta property="og:url" content="https://github.com">
  <meta property="og:site_name" content="GitHub">
  <meta property="og:title" content="Build software better, together">
  <meta property="og:description" content="GitHub is where people build software. More than 225 million people use GitHub to discover, fork, and contribute to over 800 million projects.">
  <meta property="og:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png">
  <meta property="og:image:type" content="image/png">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="1200">
  <meta property="og:image" content="https://github.githubassets.com/assets/github-mark-57519b92ca4e.png">
  <meta property="og:image:type" content="image/png">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="620">
  <meta property="og:image" content="https://github.githubassets.com/assets/github-octocat-13c86b8b336d.png">
  <meta property="og:image:type" content="image/png">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="620">

  <meta property="twitter:site" content="github">
  <meta property="twitter:site:id" content="13334762">
  <meta property="twitter:creator" content="github">
  <meta property="twitter:creator:id" content="13334762">
  <meta property="twitter:card" content="summary_large_image">
  <meta property="twitter:title" content="GitHub">
  <meta property="twitter:description" content="GitHub is where people build software. More than 225 million people use GitHub to discover, fork, and contribute to over 800 million projects.">
  <meta property="twitter:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png">
  <meta property="twitter:image:width" content="1200">
  <meta property="twitter:image:height" content="1200">




      <meta name="hostname" content="github.com">



        <meta name="expected-hostname" content="github.com">


  <meta http-equiv="x-pjax-version" content="49ae03689b30877d371cb1d95bb9a3ff833e1aafd959b91e2611e9d9c655a8c7" data-turbo-track="reload">
  <meta http-equiv="x-pjax-csp-version" content="c4a65e47b0c850e1157ae8e66298070851d7e3b558038de5a3b4ff7a93e630ed" data-turbo-track="reload">
  <meta http-equiv="x-pjax-css-version" content="c4d0e8c275605ef38c43e2be717931727fd93a93f2c788e65560d5c9d32dd988" data-turbo-track="reload">
  <meta http-equiv="x-pjax-js-version" content="6abe253ca310b0ff3644312f7c6dc1c8a6ac91a8119f724a6a8f2c73301c8e1e" data-turbo-track="reload">

  <meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">

      <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-fc66f42389671ba7.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/error-62737703d0263328.css" />
  <meta name="is_logged_out_page" content="true">

  



      <link rel="canonical" href="https://github.com/asg017/sqlite-vec/raw/main/examples/simple-go/demo.go" data-turbo-transient>


    <meta name="turbo-body-classes" content="logged-out env-production page-responsive min-height-full d-flex flex-column">
  <meta name="disable-turbo" content="false">


  <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">


  <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">

  <meta name="release" content="2117dfc842d4cbaf8b833937bfad9277bfd180d6" data-turbo-track="reload">
  <meta name="ui-target" content="full">

  <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000">
  <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
  <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon">

<meta name="theme-color" content="#1e2327">
<meta name="color-scheme" content="light dark" />


  <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">

  </head>

  <body class="logged-out env-production page-responsive min-height-full d-flex flex-column" style="word-wrap: break-word;" >
    <div data-turbo-body class="logged-out env-production page-responsive min-height-full d-flex flex-column" style="word-wrap: break-word;" >
      <div id="__primerPortalRoot__" style="z-index: 1000; position: absolute; width: 100%;" data-turbo-permanent></div>
      

    <div class="position-relative header-wrapper js-header-wrapper ">
      <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 tmp-py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>

      <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
    <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
</span>      
      <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/qmp-c7cfba40cf5a93b0.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/t7l-a9404625ec30bbc7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gzu-6ad9a0527a5d7afd.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bi-3a42b8714e06c4d0.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/qc-1bbbe8787ea1cd4b.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-1112f927e6a05370.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.5adb626158d0d1a2.module.css" />

<react-partial
  partial-name="keyboard-shortcuts-dialog"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>





      

          <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-install-banner-partial-942939de95073771.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-install-banner-partial.74c245acee0d9064.module.css" />

<react-partial
  partial-name="app-install-banner-partial"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>


          

                <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fz-e662bc3745e171e7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jag-3559ee48016881a2.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tua-4998592d21eb16f7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/8i-ea1b3f2e11ed8cd3.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-header-0874f86d6f71d307.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.05b219cdb8e80c43.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/8i.5d9e6dcb0dade694.module.css" />

<react-partial
  partial-name="marketing-header"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"color_mode":"dark","logged_in":false,"marketing_page":false,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2Fgithub.com%2Fasg017%2Fsqlite-vec%2Fraw%2Fmain%2Fexamples%2Fsimple-go%2Fdemo.go","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2Fasg017%2Fsqlite-vec%2Fraw%2Fmain%2Fexamples%2Fsimple-go%2Fdemo.go\u0026source=header","signup_enabled":true,"is_signup_controller":false,"show_search_and_nav":true,"hide_search":false,"private_mode_enabled":false,"should_use_dotcom_links":true,"auth_hydro_click":"{\"event_type\":\"authentication.click\",\"payload\":{\"location_in_page\":\"site header menu\",\"repository_id\":null,\"auth_type\":\"SIGN_UP\",\"originating_url\":\"https://github.com/asg017/sqlite-vec/raw/main/examples/simple-go/demo.go\",\"user_id\":null}}","auth_hydro_click_hmac":"12f26594a90437f38fe154e57b686734c74f9093b316fe096545707f7ab62a4d","overlay":false,"fixed":false}}</script>
  <div data-target="react-partial.reactRoot"><div data-color-mode="dark" data-light-theme="light" data-dark-theme="dark"><header class="MarketingHeader-module__root__Tk7n3 HeaderMktg header-logged-out" role="banner" data-marketing-header="true" data-color-mode="dark" data-light-theme="light" data-dark-theme="dark" data-is-top="true"><h2 class="MarketingHeader-module__visuallyHidden__sqKsl">Navigation Menu</h2><button type="button" class="MarketingHeader-module__backdrop__sw4RU" aria-label="Close navigation menu"></button><div class="MarketingHeader-module__bar__mBSyE"><div class="MarketingHeader-module__topRow__yeury"><div class="MarketingHeader-module__toggleSlot__hDxbh"><button type="button" class="HeaderMenuToggle-module__toggle__i8EiC" aria-label="Toggle navigation" aria-expanded="false"><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span></button></div><a href="/" aria-label="Homepage" class="HeaderLogo-module__logo__UFyHI" data-analytics-event="{&quot;action&quot;:&quot;homepage&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;logo&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;homepage_link_logo_header&quot;}"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path></svg></a><div class="AuthCTAs-module__mobileActions__NNzeV"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fasg017%2Fsqlite-vec%2Fraw%2Fmain%2Fexamples%2Fsimple-go%2Fdemo.go" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/asg017/sqlite-vec/raw/main/examples/simple-go/demo.go&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12f26594a90437f38fe154e57b686734c74f9093b316fe096545707f7ab62a4d"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_3dd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_3dd_">Appearance settings</div></div></div><div class="MarketingHeader-module__menu__GIy3y"><div class="MarketingHeader-module__menuWrapper__owstH"><nav class="MarketingNavigation-module__nav__W0KYY" aria-label="Global"><ul class="MarketingNavigation-module__list__tFbMb"><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_nd_">Platform<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5knd_">AI CODE CREATION</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot" data-analytics-event="{&quot;action&quot;:&quot;github_copilot&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>GitHub Copilot</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Write better code with AI</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/ai/github-app" data-analytics-event="{&quot;action&quot;:&quot;github_copilot_app&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_app_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.766 11.328c-2.063-.25-3.516-1.734-3.516-3.656 0-.781.281-1.625.75-2.188-.203-.515-.172-1.609.063-2.062.625-.078 1.468.25 1.968.703.594-.187 1.219-.281 1.985-.281.765 0 1.39.094 1.953.265.484-.437 1.344-.765 1.969-.687.218.422.25 1.515.046 2.047.5.593.766 1.39.766 2.203 0 1.922-1.453 3.375-3.547 3.64.531.344.89 1.094.89 1.954v1.625c0 .468.391.734.86.547C13.781 14.359 16 11.53 16 8.03 16 3.61 12.406 0 7.984 0 3.563 0 0 3.61 0 8.031a7.88 7.88 0 0 0 5.172 7.422c.422.156.828-.125.828-.547v-1.25c-.219.094-.5.156-.75.156-1.031 0-1.64-.562-2.078-1.609-.172-.422-.36-.672-.719-.719-.187-.015-.25-.093-.25-.187 0-.188.313-.328.625-.328.453 0 .844.281 1.25.86.313.452.64.655 1.031.655s.641-.14 1-.5c.266-.265.47-.5.657-.656"></path></svg>GitHub Copilot app</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Direct agents from issue to merge</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/mcp" data-analytics-event="{&quot;action&quot;:&quot;mcp_registry&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;mcp_registry_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mcp NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.52 1.12a3.578 3.578 0 0 1 6.078 2.98 3.578 3.578 0 0 1 2.982 6.08l-3.292 3.293a.252.252 0 0 0 0 .354l.843.843a.749.749 0 1 1-1.06 1.06l-.844-.843a1.75 1.75 0 0 1 0-2.474L13.52 9.12a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0L7.731 9.03A.75.75 0 0 1 6.67 7.97l2.85-2.85a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0l-4.799 4.8A.75.75 0 0 1 .72 5.92Z"></path><path d="M7.52 3.12a.749.749 0 1 1 1.06 1.06L5.731 7.03A2.079 2.079 0 0 0 8.67 9.97l2.85-2.85a.749.749 0 1 1 1.06 1.06l-2.849 2.85A3.578 3.578 0 0 1 4.67 5.97Z"></path></svg>MCP Registry</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Integrate external tools</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9knd_">DEVELOPER WORKFLOWS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/actions" data-analytics-event="{&quot;action&quot;:&quot;actions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;actions_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-workflow NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path></svg>Actions</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Automate any workflow</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/codespaces" data-analytics-event="{&quot;action&quot;:&quot;codespaces&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;codespaces_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codespaces NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg>Codespaces</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Instant dev environments</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/issues" data-analytics-event="{&quot;action&quot;:&quot;issues&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;issues_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-issue-opened NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg>Issues</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Plan and track work</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-review" data-analytics-event="{&quot;action&quot;:&quot;code_review&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_review_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg>Code Review</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Manage code changes</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-quality" data-analytics-event="{&quot;action&quot;:&quot;code_quality&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_quality_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codescan-checkmark NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.28 6.28a.75.75 0 1 0-1.06-1.06L6.25 8.19l-.97-.97a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.06 0l3.5-3.5Z"></path><path d="M7.5 15a7.5 7.5 0 1 1 5.807-2.754l2.473 2.474a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2.474-2.473A7.472 7.472 0 0 1 7.5 15Zm0-13.5a6 6 0 1 0 4.094 10.386.748.748 0 0 1 .293-.292 6.002 6.002 0 0 0 1.117-6.486A6.002 6.002 0 0 0 7.5 1.5Z"></path></svg>Code Quality</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enforce quality at merge</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dknd_">APPLICATION SECURITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Find and fix vulnerabilities</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/code-security" data-analytics-event="{&quot;action&quot;:&quot;code_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code-square NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>Code security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Secure your code as you build</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/secret-protection" data-analytics-event="{&quot;action&quot;:&quot;secret_protection&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;secret_protection_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-lock NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M4 4a4 4 0 0 1 8 0v2h.25c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 12.25 15h-8.5A1.75 1.75 0 0 1 2 13.25v-5.5C2 6.784 2.784 6 3.75 6H4Zm8.25 3.5h-8.5a.25.25 0 0 0-.25.25v5.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25ZM10.5 6V4a2.5 2.5 0 1 0-5 0v2Z"></path></svg>Secret protection</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Stop leaks before they start</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ NavGroup-module__hasSeparator__FnMrN"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_hknd_">EXPLORE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_hknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/why-github" data-analytics-event="{&quot;action&quot;:&quot;why_github&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;why_github_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Why GitHub</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog" data-analytics-event="{&quot;action&quot;:&quot;blog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;blog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Blog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog/changelog" data-analytics-event="{&quot;action&quot;:&quot;changelog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;changelog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Changelog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/marketplace" data-analytics-event="{&quot;action&quot;:&quot;marketplace&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;marketplace_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Marketplace</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/features" data-analytics-event="{&quot;action&quot;:&quot;view_all_features&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_features_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all features</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_17d_">Solutions<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_17d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5l7d_">BY COMPANY SIZE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprises&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Enterprises</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/team" data-analytics-event="{&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Small and medium teams</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise/startups" data-analytics-event="{&quot;action&quot;:&quot;startups&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Startups</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/nonprofits" data-analytics-event="{&quot;action&quot;:&quot;nonprofits&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Nonprofits</span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9l7d_">BY USE CASE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/app-modernization" data-analytics-event="{&quot;action&quot;:&quot;app_modernization&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;app_modernization_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">App Modernization</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devsecops" data-analytics-event="{&quot;action&quot;:&quot;devsecops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevSecOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/ci-cd" data-analytics-event="{&quot;action&quot;:&quot;ci/cd&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ci/cd_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">CI/CD</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/use-case" data-analytics-event="{&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all use cases</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dl7d_">BY INDUSTRY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dl7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/healthcare" data-analytics-event="{&quot;action&quot;:&quot;healthcare&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Healthcare</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/financial-services" data-analytics-event="{&quot;action&quot;:&quot;financial_services&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Financial services</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/manufacturing" data-analytics-event="{&quot;action&quot;:&quot;manufacturing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Manufacturing</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/government" data-analytics-event="{&quot;action&quot;:&quot;government&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Government</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/industry" data-analytics-event="{&quot;action&quot;:&quot;view_all_industries&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all industries</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions" data-analytics-event="{&quot;action&quot;:&quot;view_all_solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_solutions_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all solutions</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_1nd_">Resources<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_1nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5lnd_">EXPLORE BY TOPIC</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=ai" data-analytics-event="{&quot;action&quot;:&quot;ai&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">AI</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=software-development" data-analytics-event="{&quot;action&quot;:&quot;software_development&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Software Development</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=security" data-analytics-event="{&quot;action&quot;:&quot;security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources/articles" data-analytics-event="{&quot;action&quot;:&quot;view_all_topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_topics_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all topics</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9lnd_">EXPLORE BY TYPE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/customer-stories" data-analytics-event="{&quot;action&quot;:&quot;customer_stories&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer stories</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/events" data-analytics-event="{&quot;action&quot;:&quot;events__webinars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;events__webinars_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Events &amp; webinars</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/whitepapers" data-analytics-event="{&quot;action&quot;:&quot;ebooks__reports&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ebooks__reports_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Ebooks &amp; reports</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/executive-insights" data-analytics-event="{&quot;action&quot;:&quot;business_insights&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;business_insights_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Business insights</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://skills.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_skills&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_skills_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Skills</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dlnd_">SUPPORT &amp; SERVICES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dlnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://support.github.com" data-analytics-event="{&quot;action&quot;:&quot;customer_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_support_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer support</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/orgs/community/discussions" data-analytics-event="{&quot;action&quot;:&quot;community_forum&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;community_forum_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Community forum</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trust-center" data-analytics-event="{&quot;action&quot;:&quot;trust_center&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trust_center_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trust center</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/partners" data-analytics-event="{&quot;action&quot;:&quot;partners&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Partners</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources" data-analytics-event="{&quot;action&quot;:&quot;view_all_resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_resources_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all resources</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_27d_">Open Source<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_27d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5m7d_">COMMUNITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/open-source/sponsors" data-analytics-event="{&quot;action&quot;:&quot;github_sponsors&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sponsor-tiers NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.586 1C12.268 1 13.5 2.37 13.5 4.25c0 1.745-.996 3.359-2.622 4.831-.166.15-.336.297-.509.438l1.116 5.584a.75.75 0 0 1-.991.852l-2.409-.876a.25.25 0 0 0-.17 0l-2.409.876a.75.75 0 0 1-.991-.852L5.63 9.519a13.78 13.78 0 0 1-.51-.438C3.497 7.609 2.5 5.995 2.5 4.25 2.5 2.37 3.732 1 5.414 1c.963 0 1.843.403 2.474 1.073L8 2.198l.112-.125a3.385 3.385 0 0 1 2.283-1.068L10.586 1Zm-3.621 9.495-.718 3.594 1.155-.42a1.75 1.75 0 0 1 1.028-.051l.168.051 1.154.42-.718-3.592c-.199.13-.37.235-.505.314l-.169.097a.75.75 0 0 1-.72 0 9.54 9.54 0 0 1-.515-.308l-.16-.105ZM10.586 2.5c-.863 0-1.611.58-1.866 1.459-.209.721-1.231.721-1.44 0C7.025 3.08 6.277 2.5 5.414 2.5 4.598 2.5 4 3.165 4 4.25c0 1.23.786 2.504 2.128 3.719.49.443 1.018.846 1.546 1.198l.325.21.076-.047.251-.163a13.341 13.341 0 0 0 1.546-1.198C11.214 6.754 12 5.479 12 4.25c0-1.085-.598-1.75-1.414-1.75Z"></path></svg>GitHub Sponsors</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Fund open source developers</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9m7d_">PROGRAMS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://securitylab.github.com" data-analytics-event="{&quot;action&quot;:&quot;security_lab&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_lab_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security Lab</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://maintainers.github.com" data-analytics-event="{&quot;action&quot;:&quot;maintainer_community&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;maintainer_community_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Maintainer Community</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://stars.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_stars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_stars_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Stars</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://archiveprogram.github.com" data-analytics-event="{&quot;action&quot;:&quot;archive_program&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;archive_program_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Archive Program</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dm7d_">REPOSITORIES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dm7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/topics" data-analytics-event="{&quot;action&quot;:&quot;topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Topics</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trending" data-analytics-event="{&quot;action&quot;:&quot;trending&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trending</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/collections" data-analytics-event="{&quot;action&quot;:&quot;collections&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_2nd_">Enterprise<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_2nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5mnd_">ENTERPRISE SOLUTIONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-stack NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.122.392a1.75 1.75 0 0 1 1.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 0 1-1.756 0L2.119 5.456a1.251 1.251 0 0 1 0-2.162ZM8.125 1.69a.248.248 0 0 0-.25 0l-4.63 2.685 4.63 2.685a.248.248 0 0 0 .25 0l4.63-2.685ZM1.601 7.789a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0L1.874 8.814A.75.75 0 0 1 1.6 7.789Zm0 3.5a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0l-5.248-3.044a.75.75 0 0 1-.273-1.025Z"></path></svg>Enterprise platform</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">AI-powered developer platform</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9mnd_">AVAILABLE ADD-ONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade security features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot/copilot-business" data-analytics-event="{&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>Copilot for Business</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade AI features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise/premium-support" data-analytics-event="{&quot;action&quot;:&quot;premium_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg>Premium Support</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade 24/7 support</span></span></a></li></ul></div></li></ul></div></div></li><li><a href="https://github.com/pricing" data-analytics-event="{&quot;action&quot;:&quot;pricing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;pricing&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;pricing_link_pricing_navbar&quot;}" class="MarketingNavigation-module__navLink__hUomM">Pricing</a></li></ul></nav><div class="MarketingHeader-module__ctaContainer__tBmPz"><div class="HeaderSearch-module__searchSlot__oVOUS"><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderSearch-module__trigger__zsF9q" type="button" aria-haspopup="dialog" aria-expanded="false" aria-label="Search or jump to, type / to search" data-analytics-event="{&quot;action&quot;:&quot;searchbar&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;context&quot;:&quot;global&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"><span class="HeaderSearch-module__content__kMpxU"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search HeaderSearch-module__icon__wcrHX" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg><span class="HeaderSearch-module__label__d1iWG">Search</span><kbd class="HeaderSearch-module__kbd__HNG0o" aria-hidden="true">/</kbd></span></span></span></button><div class="d-none"></div></div><div class="AuthCTAs-module__signInWrap__q2P60"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq AuthCTAs-module__desktopActionGap__UZuXT AuthCTAs-module__hiddenBelowLg__BfKBw" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fasg017%2Fsqlite-vec%2Fraw%2Fmain%2Fexamples%2Fsimple-go%2Fdemo.go" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/asg017/sqlite-vec/raw/main/examples/simple-go/demo.go&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12f26594a90437f38fe154e57b686734c74f9093b316fe096545707f7ab62a4d"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a></div><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--secondary___gHnw_ Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2Fasg017%2Fsqlite-vec%2Fraw%2Fmain%2Fexamples%2Fsimple-go%2Fdemo.go&amp;source=header" data-analytics-event="{&quot;action&quot;:&quot;sign_up&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_up_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/asg017/sqlite-vec/raw/main/examples/simple-go/demo.go&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12f26594a90437f38fe154e57b686734c74f9093b316fe096545707f7ab62a4d"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-secondary___eJ0_a">Sign up</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_fbd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_fbd_">Appearance settings</div></div></div></div></div><div class="MarketingHeader-module__bottomBorder__uZT38" aria-hidden="true"></div></header></div></div>
</react-partial>



      <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full">
  
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>

    <button id="icon-button-7cc49778-9805-4124-bb30-ef48a0a890f5" aria-labelledby="tooltip-6abc7c16-e4a7-43d6-806a-fb6b20bc722f" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close">  <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
</button><tool-tip id="tooltip-6abc7c16-e4a7-43d6-806a-fb6b20bc722f" for="icon-button-7cc49778-9805-4124-bb30-ef48a0a890f5" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>


  
</div>
    </div>

  <div id="start-of-content" class="show-on-focus"></div>








    <div id="js-flash-container" class="flash-container" data-turbo-replace>






  <template class="js-flash-template">
    
<div class="flash flash-full   {{ className }}">
  <div >
    <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    <div aria-atomic="true" role="alert" class="js-flash-alert">
      
      <div>{{ message }}</div>

    </div>
  </div>
</div>
  </template>
</div>


    






  <div
    class="application-main d-flex flex-auto flex-column"
    data-commit-hovercards-enabled
    data-discussion-hovercards-enabled
    data-issue-and-pr-hovercards-enabled
    data-project-hovercards-enabled
  >
        <main class="font-mktg " >
    


  <div class="position-relative" style="z-index: 0; --not-found-height: clamp(clamp(240px, calc(100vw - 280px), 370px), min(56.3vw, calc(100dvh - 390px)), 529px)">
    <div class="position-absolute overflow-hidden width-full top-0 left-0" style="height: var(--not-found-height)" data-hpc>
      <img data-static-error-asset="404-background" alt="" class="position-absolute" height="415" width="940" style="inset: 0; z-index: 1; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: center 48%;"
      src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI1OSIgaGVpZ2h0PSI0NjUiIHZpZXdCb3g9IjAgMCAxMjU5IDQ2NSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMTczLjEyMUgxMjU5VjBIMFYxNzMuMTIxWiIgZmlsbD0iIzcxQkJFNyIvPgo8cGF0aCBkPSJNMCAxNzMuMTIxSDEyNTlWMEgwVjE3My4xMjFaIiBmaWxsPSJ1cmwoI3BhaW50MF9yYWRpYWxfM18xMDQpIi8+CjxwYXRoIGQ9Ik0wIDE3Mi4zMjJDMCAxNzIuMzIyIDM4My42NSAxNjUuMzUzIDYyOS41IDE2NS4zNTNDMTExOS4xOSAxNjUuMzUzIDEyNTkgMTcyLjMyMiAxMjU5IDE3Mi4zMjJWNDY0LjMxN0gwVjE3Mi4zMjJaIiBmaWxsPSIjRjFEQ0IxIi8+CjxwYXRoIGQ9Ik0wIDE3Mi4zMjJDMCAxNzIuMzIyIDM4My42NSAxNjUuMzUzIDYyOS41IDE2NS4zNTNDMTExOS4xOSAxNjUuMzUzIDEyNTkgMTcyLjMyMiAxMjU5IDE3Mi4zMjJWNDY0LjMxN0gwVjE3Mi4zMjJaIiBmaWxsPSJ1cmwoI3BhaW50MV9yYWRpYWxfM18xMDQpIi8+CjxkZWZzPgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50MF9yYWRpYWxfM18xMDQiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjEyLjU0NSAxOTAuODMyKSByb3RhdGUoLTkwKSBzY2FsZSgxOTAuODMyIDIwNzEuODkpIj4KPHN0b3Agb2Zmc2V0PSIwLjM2NiIgc3RvcC1jb2xvcj0iIzAwNUY5NyIgc3RvcC1vcGFjaXR5PSIwIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNUY5NyIgc3RvcC1vcGFjaXR5PSIwLjMiLz4KPC9yYWRpYWxHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzNfMTA0IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDYxMi41NDUgMjE4Ljc5MSkgcm90YXRlKDkwKSBzY2FsZSgyNDUuNTI3IDE0MzAuMTMpIj4KPHN0b3Agb2Zmc2V0PSIwLjM2NiIgc3RvcC1vcGFjaXR5PSIwLjA2Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwLjIiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K">
    </div>
    <div
      class="position-relative width-full mx-auto overflow-hidden"
      style="z-index: 2; max-width: 806px; clear: both; padding: 0 var(--base-size-8); height: var(--not-found-height);"
    >
      <img data-static-error-asset="404-illustration"
        alt="404 &ldquo;This is not the web page you are looking for&rdquo;"
        class="d-block width-full"
        width="806"
        height="275"
        style="height: auto; position: relative; top: 50%; transform: translateY(-50%);"
        src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODA1IiBoZWlnaHQ9IjI3NCIgdmlld0JveD0iMCAwIDgwNSAyNzQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik00NTIuNjUgMjI1Ljg3MkM0NTAuMTAxIDIyMS40NTYgNDM4LjAyMiAyMjMuMjQ2IDQzNS40OTUgMjE4LjY4M0M0MzQuNTI2IDIxNi45MzIgNDM3LjgzMyAyMTYuODMzIDQ0MS4wMTQgMjE3LjY4NUw2NTkuMzg5IDI2MS4wMTVDNjgwLjI4IDI2NS4xNiA3MDEuNzg4IDI2NS4wOTMgNzIyLjY1MiAyNjAuODE3TDc4My41MDEgMjQ2LjY3MkM4MDIuNzgxIDI0MS42MjIgNzk4LjU0MSAyMjguMzEgNzg1LjQ2MSAyMjQuNzUzTDY5MS4wNCAyMDIuMzI3TDQyMC45NjEgMTk4LjIxOUM0MDEuODc1IDE5OC4yMTkgMzg2LjQwMiAyMDMuMDIzIDM4Ni40MDIgMjA4Ljk0OEMzODYuNDAyIDIxMS44NzQgMzkwLjE3MyAyMTQuNTI1IDM5Ni4yODggMjE2LjQ2QzM4OS4zNDEgMjE3LjQ2MiAzODMuNjQ1IDIxOS4xNTcgMzgwLjEyOCAyMjEuMjYxQzMzMy45OTIgMjIxLjM2MyAyOTYuNjk0IDIzMi45MzYgMjk2LjY5NCAyNDcuMTk4QzI5Ni42OTQgMjYxLjUyMyAzMzQuMzI1IDI3My4xMzYgMzgwLjc0NSAyNzMuMTM2QzQyNy4xNjUgMjczLjEzNiA0NjQuNzk3IDI2MS41MjMgNDY0Ljc5NyAyNDcuMTk4QzQ2NC43OTcgMjQwLjUzOCA0NTguMTU1IDIzNC45NTIgNDQ0Ljc4OCAyMzAuMzU5QzQ0OC44NDMgMjMwLjM1OSA0NTMuOTY0IDIyOC4xNDggNDUyLjY1IDIyNS44NzJaIiBmaWxsPSIjQjI5QzZGIi8+CjxwYXRoIGQ9Ik00NTkuMzg2IDY2LjI0N0g1NzAuMjg0QzU3Ny4wNjYgNTQuMzk5IDU2Ny44MjkgNDMuOTEgNTU1LjMwOSAzNi4xNjhMNDYwLjIwNiAzNi45MTFDNDM4LjU4IDQ3LjI4NiA0MjcuNzA1IDYxLjc3NSA0MjQuMzk5IDcwLjg5NUw0NTkuMzg2IDc2LjgxOVY2Ni4yNDdaIiBmaWxsPSIjRUVENEEyIi8+CjxwYXRoIGQ9Ik01NzAuMjg0IDY2LjI0N0g2MzAuMDgzQzYyNS4wODggNTguNDEgNjEyLjE1OCA0Ni4xNjggNTkwLjI3IDM2Ljk1QzU4My43OCAzNi41NDMgNTY0LjI1OCAzNi4yNTkgNTU1LjMwOSAzNi4xNjhDNTY3LjgyOSA0My45MSA1NzcuMDY2IDU0LjM5OSA1NzAuMjg0IDY2LjI0N1oiIGZpbGw9IiNFNkNBOTYiLz4KPHBhdGggZD0iTTY5OC40MzUgMTEzLjg5OUw2NTcuODcyIDExMC41NTJMNjIzLjIxNiAxMTMuMDM4TDYxOC4xODEgMTEzLjRMNjEzLjI0NyAxMTMuNzU0TDU5Mi44OTEgMTE1LjIxNEw1ODcuNTc1IDExNS41OTZMNTgzLjI0NiAxMTUuOTA2TDUyOC44OTUgMTE5LjgwNlYxMjMuOTQxTDY5OC40MzUgMTEzLjg5OVoiIGZpbGw9IiNENkJBODYiLz4KPHBhdGggZD0iTTUyOC44OTUgMjQuNTIzQzUyNi43NDUgMjQuNDU5IDUyNC41NTggMjQuNDI2NyA1MjIuMzM1IDI0LjQyNkM0OTcuNDk3IDI0LjQyNiA0NzguMTQ0IDI4Ljk2OCA0NjMuNDAzIDM1LjQ0M0w1NTIuNTUyIDM0LjUzNUM1NDQuNTY4IDMwLjAwNCA1MzUuNjgzIDI2LjU1NyA1MjguODk1IDI0LjUyM1oiIGZpbGw9IiNGMUQ3QTQiLz4KPHBhdGggZD0iTTUyOC44OTUgMjQuNTIzQzUzNS42ODMgMjYuNTU3IDU0NC41NjggMzAuMDA0IDU1Mi41NTIgMzQuNTM1QzU2MS43MjIgMzQuNDc3IDU4MS4zNDkgMzQuNTc0IDU4Ni40OTYgMzUuNDI3QzU3MS4zNDQgMjkuNTY4IDU1Mi4yNDIgMjUuMjE1IDUyOC44OTUgMjQuNTIzWiIgZmlsbD0iI0U2Q0E5NiIvPgo8cGF0aCBkPSJNNTUyLjU1MiAzNC41MzVDNTUzLjQ4NSAzNS4wNjUgNTU0LjQwNCAzNS42MDkzIDU1NS4zMDkgMzYuMTY4QzU2NC4yNTggMzYuMjU5IDU4My43OCAzNi41NDMgNTkwLjI3IDM2Ljk1QzU4OS4wMTkgMzYuNDI0MSA1ODcuNzYxIDM1LjkxNjQgNTg2LjQ5NiAzNS40MjdDNTgxLjM0OSAzNC41NzQgNTYxLjcyMiAzNC40NzcgNTUyLjU1MiAzNC41MzVaIiBmaWxsPSIjREFDMjhGIi8+CjxwYXRoIGQ9Ik01NTIuNTUyIDM0LjUzNUw0NjMuNDAzIDM1LjQ0M0M0NjIuMzEyIDM1LjkyMjMgNDYxLjI0NiAzNi40MTE3IDQ2MC4yMDYgMzYuOTExTDU1NS4zMDkgMzYuMTY4QzU1NC40IDM1LjYwNyA1NTMuNDgxIDM1LjA2MjYgNTUyLjU1MiAzNC41MzVaIiBmaWxsPSIjREVDNDk0Ii8+CjxwYXRoIGQ9Ik02MTguMTgxIDExMy40Vjc3Ljg5NEw2MTMuMjQ3IDc3Ljk2NVYxMTMuNzU0TDYxOC4xODEgMTEzLjRaIiBmaWxsPSIjQzdCNjkwIi8+CjxwYXRoIGQ9Ik01OTIuODkxIDc4LjI1OFYxMTUuMjE0TDYxMy4yNDcgMTEzLjc1NFY3Ny45NjVMNTkyLjg5MSA3OC4yNThaIiBmaWxsPSIjODc3QjVGIi8+CjxwYXRoIGQ9Ik02MjMuMjE2IDcyLjk0Mkg1ODcuNTc1VjExNS41OTZMNTkyLjg5MSAxMTUuMjE0Vjc4LjI1OEw2MTMuMjQ3IDc3Ljk2NUw2MTguMTgxIDc3Ljg5NFYxMTMuNEw2MjMuMjE2IDExMy4wMzhWNzIuOTQyWiIgZmlsbD0iI0E2OTc3MyIvPgo8cGF0aCBkPSJNNTI4Ljg5NSAxMTkuODA2TDU4My4yNDYgMTE1LjkwNkw1ODAuMzYxIDEwMi4yM0w1NzkuNzkzIDk5LjUzNEw1NzkuMzQ1IDk3LjQxMkw1NzguOTkzIDk1Ljc0TDU3Ni45IDg1LjgxNkw1NzYuMTY4IDgyLjM0M0w1NzQuMTg1IDcyLjk0Mkg2MjMuMjE2VjExMy4wMzhMNjU3Ljg3MiAxMTAuNTUyTDY1Ni4wMzMgMTAwLjkzMkw2NTUuMzAxIDk3LjA5N0w2NTQuOTEgOTUuMDU2TDY1NC41ODMgOTMuMzQ1TDY1Mi44ODIgODQuNDQyTDY1Mi4wNzIgODAuMjA1TDY0OS40MDUgNjYuMjQ3SDUyOC44OTVWMTE5LjgwNloiIGZpbGw9IiNCNUEyN0IiLz4KPHBhdGggZD0iTTU4Ny41NzUgNzIuOTQySDU3NC4xODVMNTc2LjE2OCA4Mi4zNDNMNTc2LjkgODUuODE2TDU3OC45OTMgOTUuNzRMNTc5LjM0NSA5Ny40MTJMNTc5Ljc5MyA5OS41MzRMNTgwLjM2MSAxMDIuMjNMNTgzLjI0NiAxMTUuOTA2TDU4Ny41NzUgMTE1LjU5NlY3Mi45NDJaTTQ1OS4zODYgNjYuMjQ3SDUyOC44OTVWMTE5LjgwNkw0NTkuMzg2IDEyMi4zNjZWNjYuMjQ3WiIgZmlsbD0iI0UxQzg5QyIvPgo8cGF0aCBkPSJNNTI4Ljg5NSAxMjMuOTQxVjExOS44MDZMNDU5LjM4NiAxMjIuMzY2TDUyOC44OTUgMTIzLjk0MVoiIGZpbGw9IiNENkJBODYiLz4KPHBhdGggZD0iTTUyOC44OTYgODkuOTk2Vjg1LjYxN0w1NzYuNjYxIDg0LjI4M0w1ODcuNTY2IDg0LjYwN0g1OTIuODQzVjg4Ljc2MUg1ODcuNTY2TDU3Ny4zNDggODguNDI0TDUyOC44OTYgODkuOTk2Wk01MjguODY1IDEwOC4wOTNWMTAyLjcxNEw1NzkuODY4IDk5LjkwOUw1ODcuNTY2IDEwMC41NDVMNTkyLjkwNCAxMDAuMzIxVjEwNS40NzZMNTg3LjU2NiAxMDUuN0w1ODAuOTU1IDEwNS4wMjdMNTI4Ljg2NSAxMDguMDkzWk01MjguODk2IDk5Ljg4NlY5Ny44NDZMNTc4Ljk2IDk1LjdMNTg3LjY0MiA5NS45MjJMNTkyLjg5MiA5NS43Vjk3Ljg1NUw1ODcuNjQzIDk4LjA3Nkw1NzkuNDU4IDk3LjY1NEw1MjguODk2IDk5Ljg4NlpNNjIzLjIxOCA4NS4xMUw2MTguMTc5IDg1LjI4NVY4OS4xMzNMNjIzLjIxNSA4OC45NTlMNjIzLjIxOCA4Ny4yOTJMNjUzLjI0MiA4Ni4zNzVMNjUyLjYzNCA4My4yN0w2MjMuMjE4IDg0LjAzOFY4NS4xMVpNNjIzLjIxOCA5NC4wMTZMNjE4LjE3IDk0LjI4OFY5Ni4xMzdMNjIzLjIxNSA5NS44N0w2MjMuMjE4IDk0LjcwN0w2NTQuNTk1IDkzLjM4NEw2NTQuMzUyIDkxLjkzNUw2MjMuMjE4IDkzLjI4Vjk0LjAxNlpNNjIzLjIyOCA5OC4wNTdMNjE4LjE3IDk4LjM2N1YxMDMuNDc2TDYyMy4yMjggMTAzLjIwM1YxMDIuMDczTDY1NS44NzIgMTAwLjE1NUw2NTUuMDM0IDk1LjY5MUw2MjMuMjI4IDk3LjE0NVY5OC4wNTdaIiBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIwLjEiLz4KPHBhdGggZD0iTTU2Ny45NzEgMzguNDQ4QzU2Ny4wMDMgNDEuNDgzIDU1OS40MDYgNDIuNTM2IDU1MS4wMDIgNDAuNzk4QzU0Mi41OTkgMzkuMDYgNTM2LjU3MSAzNS4xOTEgNTM3LjUzOSAzMi4xNTVDNTM4LjUwNyAyOS4xMTkgNTQ2LjEwNCAyOC4wNjcgNTU0LjUwOCAyOS44MDVDNTYyLjkxMiAzMS41NDMgNTY4LjkzOSAzNS40MTIgNTY3Ljk3MSAzOC40NDhaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMl8xMDMpIi8+CjxwYXRoIGQ9Ik01NjMuNTEyIDE3LjY4NEg1NDIuODg5QzU0My4wNDMgMTkuMjM1MSA1NDMuNTQ2IDIwLjczMTQgNTQ0LjM1OSAyMi4wNjEzQzU0NS4xNzIgMjMuMzkxMiA1NDYuMjc1IDI0LjUyMDUgNTQ3LjU4NSAyNS4zNjVINTU4LjgxN0M1NjAuMTI3IDI0LjUyMDQgNTYxLjIyOSAyMy4zOTEgNTYyLjA0MiAyMi4wNjExQzU2Mi44NTUgMjAuNzMxMiA1NjMuMzU4IDE5LjIzNSA1NjMuNTEyIDE3LjY4NFpNNTUzLjIwMSA2LjI5NEM1NTguNTc3IDYuMjk0IDU2Mi45OTYgMTAuMzg3IDU2My41MTIgMTUuNjI3SDU0Mi44ODlDNTQzLjQwNiAxMC4zODcgNTQ3LjgyNSA2LjI5NCA1NTMuMjAxIDYuMjk0WiIgZmlsbD0iI0VBRDlCMSIvPgo8cGF0aCBkPSJNNTQyLjg4OSAxNS42MjdDNTQyLjgyMiAxNi4zMTEgNTQyLjgyMiAxNyA1NDIuODg5IDE3LjY4NEg1NjMuNTEyQzU2My41ODEgMTcuMDAwMSA1NjMuNTgxIDE2LjMxMDkgNTYzLjUxMiAxNS42MjdINTQyLjg4OVoiIGZpbGw9IiNDQ0JFOTUiLz4KPHBhdGggZD0iTTU1OC44MTcgNDEuNjM0VjI1LjM2NUg1NDcuNTg1VjM5LjkzN0M1NDguNzExIDQwLjI3MjkgNTQ5Ljg1MiA0MC41NjAxIDU1MS4wMDMgNDAuNzk4QzU1My43NjMgNDEuMzY5IDU1Ni40MzcgNDEuNjM3IDU1OC44MTcgNDEuNjM0WiIgZmlsbD0iI0QyQkU5MyIvPgo8cGF0aCBkPSJNNTYzLjUxMyAxNS42MjdDNTYyLjk5NiAxMC4zODcgNTU4LjU3NyA2LjI5NCA1NTMuMjAxIDYuMjk0QzU1Mi4zMDkgNi4yOTQgNTUxLjQ0MiA2LjQwNyA1NTAuNjE2IDYuNjE5QzU1NS4yOTYgOC4zMjUgNTYyLjgwOSAxNC40NjMgNTU1LjQxNiAyNS4zNjVINTU4LjgxN0M1NjAuNDIgMjQuMzMxNSA1NjEuNzA3IDIyLjg3NTQgNTYyLjUzNiAyMS4xNTcxQzU2My4zNjUgMTkuNDM4OSA1NjMuNzAzIDE3LjUyNTIgNTYzLjUxMyAxNS42MjdaIiBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIwLjEiLz4KPHBhdGggZD0iTTU1Ny44ODMgNDEuNjIyQzU1Ny4zNTQgNDEuNjA3MyA1NTYuODI1IDQxLjU4MDcgNTU2LjI5NyA0MS41NDJWMjEuODg2QzU1Ni4yOTcgMjEuNzUzNCA1NTYuMzUgMjEuNjI2MiA1NTYuNDQzIDIxLjUzMjVDNTU2LjUzNyAyMS40Mzg3IDU1Ni42NjQgMjEuMzg2IDU1Ni43OTcgMjEuMzg2SDU1Ny4zODNDNTU3LjUxNiAyMS4zODYgNTU3LjY0MyAyMS40Mzg3IDU1Ny43MzcgMjEuNTMyNUM1NTcuODMgMjEuNjI2MiA1NTcuODgzIDIxLjc1MzQgNTU3Ljg4MyAyMS44ODZWNDEuNjIyWiIgZmlsbD0iI0IwOUM3QyIvPgo8cGF0aCBkPSJNNTQ2LjUwOSAzOS41OTlDNTQ1Ljk3NSAzOS40MjE2IDU0NS40NDYgMzkuMjMwMiA1NDQuOTIzIDM5LjAyNVYyMS44ODZDNTQ0LjkyMyAyMS43NTM0IDU0NC45NzYgMjEuNjI2MiA1NDUuMDY5IDIxLjUzMjVDNTQ1LjE2MyAyMS40Mzg3IDU0NS4yOSAyMS4zODYgNTQ1LjQyMyAyMS4zODZINTQ2LjAwOUM1NDYuMTQyIDIxLjM4NiA1NDYuMjY5IDIxLjQzODcgNTQ2LjM2MiAyMS41MzI1QzU0Ni40NTYgMjEuNjI2MiA1NDYuNTA5IDIxLjc1MzQgNTQ2LjUwOSAyMS44ODZWMzkuNTk5WiIgZmlsbD0iI0EzOTI2MyIvPgo8cGF0aCBkPSJNNTUwLjYxNiA2LjYyMUM1NTAuMDY4IDYuNzYxNjcgNTQ5LjU0IDYuOTQ0IDU0OS4wMzEgNy4xNjhWMS4yMTZDNTQ5LjAzMSAxLjA4MzQgNTQ5LjA4NCAwLjk1NjIxOCA1NDkuMTc3IDAuODYyNDVDNTQ5LjI3MSAwLjc2ODY4MSA1NDkuMzk4IDAuNzE2MDAzIDU0OS41MzEgMC43MTYwMDNINTUwLjExNkM1NTAuMjQ5IDAuNzE2MDAzIDU1MC4zNzYgMC43Njg2ODEgNTUwLjQ3IDAuODYyNDVDNTUwLjU2MyAwLjk1NjIxOCA1NTAuNjE2IDEuMDgzNCA1NTAuNjE2IDEuMjE2VjYuNjIxWiIgZmlsbD0iIzgyODg3RCIvPgo8cGF0aCBkPSJNNTIxLjA2NiAxMzkuODk4QzQ5Ny4xNDQgMTQwLjY5NSA0NDguODg4IDE0Mi4yOSA0NDcuMjQ4IDE0Mi4yOUwzOTguNjcxIDE2MS41MDZMNDMwLjc1NyAxOTYuMzI5QzQ4Ny4zMjEgMjA0LjkxNSA2MDAuMjA4IDIyMi42MDYgNjQ0LjU2OSAyMjkuMTUxQzY0OC44MzMgMjI5Ljc4IDY1My4wNDggMjMwLjMwNSA2NTcuMjA1IDIzMC43MzZDNjYxLjEyNSAyMjkuMzE0IDY2NC40NzUgMjI2LjkwMyA2NjYuOTQ4IDIyNC42MzRDNjQ5LjEyIDIyNC4wNTIgNDYwLjMyOSAxOTUuMzkzIDQ1NS45MTUgMTk0Ljg0MkM0NTEuNTAxIDE5NC4yOTEgNDQ3LjQ0NiAxODguMzg4IDQ0Ny45OTcgMTc0Ljg3MUM0NDguNDM5IDE2NC4wNTYgNDU2Ljg4NiAxNjEuMzcgNDYwLjQyNiAxNjEuNkM0OTIuNjExIDE2NC45NTYgNTY4Ljc2MSAxNzUuMDgxIDYwMS4wOTMgMTc4LjUwMUM2MzMuNDI1IDE4MS45MjEgNjYyLjc5NCAxODQuNDM5IDY3NC4yNDIgMTg0Ljg0OUM2NjguMzk0IDE4My40MDUgNjE4Ljk2NSAxNzUuMDk2IDU5My4wMzMgMTcyLjIwN0M2MTMuMTI1IDE3My43MjQgNjUzLjQ5NyAxNzYuODQxIDY3NC4yNDIgMTc3LjE3MkM3MDAuMTc0IDE3Ny41ODYgNzg2LjY1MSAxNzQuMzc1IDc5Mi42NDEgMTYyLjg3N0M3OTEuNjc1IDE2Mi4zMjEgNzkwLjY1NyAxNjEuODYyIDc4OS42MDEgMTYxLjUwNkM3ODIuMzQxIDE1OS4wMDUgNzUxLjI3IDE1NC40NTYgNzM0Ljc4OSAxNTMuMjI2TDUyMS4wNjYgMTM5Ljg5OFoiIGZpbGw9IiNCMzhGNkYiLz4KPHBhdGggZD0iTTY3NS4wNDcgMTg3LjQ0OUw2NzQuMjQyIDE4NC44NDlDNjYyLjc5NCAxODQuNDM5IDYzMy40MjUgMTgxLjkyMiA2MDEuMDkzIDE3OC41MDFDNTY4Ljc2MSAxNzUuMDggNDkyLjYxMSAxNjQuOTU2IDQ2MC40MjYgMTYxLjZDNDU2Ljg4NiAxNjEuMzcgNDQ4LjQzOSAxNjQuMDU2IDQ0Ny45OTcgMTc0Ljg3MUM0NDcuNDQ2IDE4OC4zODggNDUxLjUwMSAxOTQuMjkgNDU1LjkxNSAxOTQuODQyQzQ2MC4zMjkgMTk1LjM5NCA2NDkuMTIgMjI0LjA1MiA2NjYuOTQ4IDIyNC42MzRDNjY4LjgyNSAyMjIuOTEzIDY3MC4xOTcgMjIxLjI3MyA2NzAuOTMyIDIyMC4yMDhDNjUwLjAxNCAyMjAuNjgxIDU0OC42OTggMjA0LjA3NyA1MDEuMTQ1IDE5Ni4zMjlDNTAyLjMwNiAxOTQuNDcxIDUwNC43NjggMTg5LjMzOSA1MDUuMzI1IDE4My42NzNDNTA1Ljg4MiAxNzguMDA3IDUwMi4zMDYgMTcxLjg2OCA1MDAuNDQ4IDE2OS41MDdDNTE1LjY4MiAxNzIuMzg3IDY0Ny41NyAxODYuOTQ1IDY3NS4wNDcgMTg3LjQ0OVoiIGZpbGw9IiM2QjU3NDUiLz4KPHBhdGggZD0iTTY3Ni43MjUgMjA0LjYyMkM2NzcuMDU2IDE5OS4yNzYgNjc1LjY5IDE5MC43ODUgNjc1LjA0NyAxODcuNDQ5QzY0Ny41NyAxODYuOTQ1IDUxNS42ODIgMTcyLjM4NyA1MDAuNDQ4IDE2OS41MDdDNTAyLjMwNiAxNzEuODY4IDUwNS44ODIgMTc4LjAwNyA1MDUuMzI1IDE4My42NzNDNTA0Ljc2OCAxODkuMzM5IDUwMi4zMDYgMTk0LjQ3MSA1MDEuMTQ1IDE5Ni4zMjlDNTQ4LjY5OCAyMDQuMDc3IDY1MC4wMTQgMjIwLjY4MSA2NzAuOTMyIDIyMC4yMDhDNjcyLjcyNSAyMTcuMjQgNjc2LjM5NCAyMDkuOTY3IDY3Ni43MjUgMjA0LjYyMloiIGZpbGw9IiNCREE3OEEiLz4KPHBhdGggZD0iTTY3NS4wNDcgMTg3LjQ0OUM2NzUuNjkgMTkwLjc4NSA2NzcuMDU2IDE5OS4yNzYgNjc2LjcyNSAyMDQuNjIyQzY3Ni4zOTQgMjA5Ljk2OCA2NzIuNzI1IDIxNy4yNCA2NzAuOTMyIDIyMC4yMDhDNjg2Ljk0NCAyMjEuMDczIDcyMy40NCAyMjEuODcxIDc0MS4zMjkgMjE4LjE0NUM3NjMuNjkxIDIxMy40ODYgNzY3Ljk5MSAyMTQuOTIgNzY3LjkyMSAxOTguMjIxQzc2Ny44NjEgMTg0Ljg2MyA3NjEuNzMxIDE4Mi45NTYgNzU4LjY3MSAxODMuNjczQzc1MC43ODkgMTg0LjkzNSA3MzAuMzM1IDE4Ny41NTQgNzExLjU4NyAxODcuOTMxQzY5My42NDEgMTg4LjI5MiA2ODYuNTQxIDE4Ny45MDkgNjc1LjA0NyAxODcuNDQ5WiIgZmlsbD0iI0FCOTI3NiIvPgo8cGF0aCBkPSJNNjc0LjI0MiAxODQuODQ5TDY3NS4wNDcgMTg3LjQ0OUM2ODYuNTQxIDE4Ny45MDkgNjkzLjY0MSAxODguMjkyIDcxMS41ODcgMTg3LjkzMUM3MzAuMzM1IDE4Ny41NTQgNzUwLjc4OSAxODQuOTM1IDc1OC42NzEgMTgzLjY3M0M3NjEuNzMxIDE4Mi45NTYgNzY3Ljg2MSAxODQuODYzIDc2Ny45MjEgMTk4LjIyMUM3NjcuOTkxIDIxNC45MiA3NjMuNjkxIDIxMy40ODYgNzQxLjMyOSAyMTguMTQ1QzcyMy40NCAyMjEuODcxIDY4Ni45NDQgMjIxLjA3MyA2NzAuOTMyIDIyMC4yMDhDNjcwLjE5NyAyMjEuMjczIDY2OC44MjUgMjIyLjkxMyA2NjYuOTQ4IDIyNC42MzRDNjgwLjM5MyAyMjQuOTI3IDcxMC43MjcgMjI0LjYzNCA3MjcuNDYzIDIyMy40MjJDNzQ0LjAyMSAyMjIuMjIzIDc1My43NzcgMjIwLjc4NyA3NTcuODkzIDIxOS42NDhDNzY1LjE4MSAyMTcuNjI5IDc3MS4xNzEgMjE1LjYxOSA3NzEuMTcxIDIwMC4wODhDNzcxLjE3MSAxODguNjE0IDc2OS40OTEgMTc4Ljk1NiA3NTYuMDM0IDE4MC44MzFDNzEzLjkzNSAxODYuNjk4IDY5MC4xNzYgMTg1LjYyIDY3NC4yNDIgMTg0Ljg0OVoiIGZpbGw9IiM1RDQ5MzkiLz4KPHBhdGggZD0iTTc4NS42ODEgMjAxLjY0OEM3ODQuMzExIDE5NC4zNjQgNzg1LjQ0MSAxODcuMTY1IDc4Ny4xOTEgMTgyLjY3OUM3ODguMzExIDE3OS44MTIgNzkwLjgyMSAxNzcuMTcgNzkzLjczMSAxNzUuMDAxQzc5NS4wNjEgMTc0LjAxNiA3OTYuNDU4IDE3My4xMjQgNzk3LjkxMSAxNzIuMzMxQzc5Ny45MTEgMTY5LjAxNSA3OTYuOTExIDE2NS4zNyA3OTIuNjQxIDE2Mi44NzdDNzg2LjY1MSAxNzQuMzc1IDcwMC4xNzQgMTc3LjU4NiA2NzQuMjQyIDE3Ny4xNzJDNjUzLjQ5NyAxNzYuODQxIDYxMy4xMjUgMTczLjcyNCA1OTMuMDMzIDE3Mi4yMDdDNjE4Ljk2NSAxNzUuMDk2IDY2OC4zOTQgMTgzLjQwNSA2NzQuMjQyIDE4NC44NDlDNjkwLjE3NiAxODUuNjIgNzEzLjkzNSAxODYuNjk4IDc1Ni4wMzQgMTgwLjgzMUM3NjkuNDkxIDE3OC45NTYgNzcxLjE3MSAxODguNjE0IDc3MS4xNzEgMjAwLjA4OEM3NzEuMTcxIDIxNS42MTkgNzY1LjE4MSAyMTcuNjI5IDc1Ny44OTMgMjE5LjY0OEM3NTMuNzc3IDIyMC43ODcgNzQ0LjAyMSAyMjIuMjIzIDcyNy40NjMgMjIzLjQyMkM3MTAuNzI3IDIyNC42MzQgNjgwLjM5MyAyMjQuOTI3IDY2Ni45NDggMjI0LjYzNEM2NjQuNDc1IDIyNi45MDMgNjYxLjEyNSAyMjkuMzE0IDY1Ny4yMDUgMjMwLjczNkM3MDcuMTI0IDIzNS45MTYgNzQ4Ljg0NCAyMjcuNjI1IDc2OC41MDEgMjI0LjMwMkM3ODguNzQxIDIyMC44ODIgNzk4LjM1MSAyMTUuNjA5IDc5Ny45MTEgMjExLjMwM0M3OTIuMjgxIDIxMS4zOSA3ODYuODkxIDIwOC4xMzggNzg1LjY4MSAyMDEuNjQ4WiIgZmlsbD0iIzlFN0E1QiIvPgo8cGF0aCBkPSJNNzk4LjI5MSAxNzYuNjQ0Qzc5My4zNjEgMTc3Ljg5IDc4OC4wODEgMTgzLjEwNCA3ODcuODcxIDE5NC4yNzlDNzg3LjY1MSAyMDYuNDE2IDc5NC41NDEgMjA3Ljc2OSA3OTcuOTExIDIwOC4yMjRMNzk3Ljk3MSAyMDguMTczQzc5OC4zOTEgMjA3Ljc4MiA3OTguNjMxIDIwNy41NTUgNzk4LjYzMSAyMDYuNDE2TDc5OC4yOTEgMTc2LjY0NFoiIGZpbGw9IiNBQTkxNzMiLz4KPHBhdGggZD0iTTc4Ny4xOTEgMTgyLjY3OUM3ODUuNDQxIDE4Ny4xNjUgNzg0LjMxMSAxOTQuMzY0IDc4NS42ODEgMjAxLjY0OEM3ODYuODkxIDIwOC4xMzggNzkyLjI4MSAyMTEuMzkgNzk3LjkxMSAyMTEuMzAzVjIwOC4yMjRDNzk0LjU0MSAyMDcuNzY5IDc4Ny42NTEgMjA2LjQxNiA3ODcuODcxIDE5NC4yNzlDNzg4LjA4MSAxODMuMTA0IDc5My4zNjEgMTc3Ljg5IDc5OC4yOTEgMTc2LjY0NEw3OTMuNzMxIDE3NS4wMDFDNzkwLjgyMSAxNzcuMTcgNzg4LjMxMSAxNzkuODEyIDc4Ny4xOTEgMTgyLjY3OVoiIGZpbGw9IiM1RjRDM0EiLz4KPHBhdGggZD0iTTQ0My4xMjcgMTg0LjAyNEM0NDIuMjYzIDE5NC44NTggNDM2LjgzNCAyMDMuMzMyIDQzMS4wMDEgMjAyLjk1MUM0MjUuMTY4IDIwMi41NyA0MjEuMTQgMTkzLjQ3NiA0MjIuMDA0IDE4Mi42NDFDNDIyLjg2NyAxNzEuODA3IDQyOC4yOTYgMTYzLjMzMyA0MzQuMTI5IDE2My43MTRDNDM5Ljk2MiAxNjQuMDk1IDQ0My45OSAxNzMuMTg5IDQ0My4xMjcgMTg0LjAyNFoiIGZpbGw9IiM2QjU3NDUiLz4KPHBhdGggZD0iTTQ0MC44MzkgMTgzLjcxMUM0NDAuMzU4IDE5Mi4zMTUgNDM2LjQzOCAxOTkuMTIxIDQzMi4wODMgMTk4LjkxMUM0MjcuNzI3IDE5OC43MDIgNDI0LjU4NyAxOTEuNTU4IDQyNS4wNjcgMTgyLjk1NEM0MjUuNTQ3IDE3NC4zNSA0MjkuNDY5IDE2Ny41NDQgNDMzLjgyNCAxNjcuNzU0QzQzOC4xNzkgMTY3Ljk2MyA0NDEuMzIgMTc1LjEwNyA0NDAuODM5IDE4My43MTFaIiBmaWxsPSIjMkIyNDI0Ii8+CjxwYXRoIGQ9Ik01MjYuMjgxIDE1MC4yMjJMNDgyLjQ5OSAxNDUuMjc2QzQ4MC40NDcgMTM5LjcwNyA0ODAuMDU2IDEyNi4yMjUgNDgwLjExNyAxMjAuMTc5TDUxOC45NTMgMTIyLjE5NUw1MjYuMjgxIDE1MC4yMjJaIiBmaWxsPSIjOUU4MDY0Ii8+CjxwYXRoIGQ9Ik01MzIuOTcgMTAxLjAzM0M1MzIuOTcgMTExLjMwOCA1MjguOTcxIDExOS43NDMgNTIzLjg3MSAxMjAuNjMxQzUyMy41NzcgMTIwLjY4MyA1MjMuMjc5IDEyMC43MDkgNTIyLjk4IDEyMC43MDhDNTE3LjQ2MiAxMjAuNzA4IDUxMi45OSAxMTEuODk5IDUxMi45OSAxMDEuMDMzQzUxMi45OSA5MC4xNjcgNTE3LjQ2MiA4MS4zNTggNTIyLjk4IDgxLjM1OEM1MjMuOTQzIDgxLjM1OCA1MjQuODc1IDgxLjYyNyA1MjUuNzU2IDgyLjEyOEM1MjkuOTIzIDg0LjQ5NyA1MzIuOTcgOTIuMDY0IDUzMi45NyAxMDEuMDMzWiIgZmlsbD0iIzUwNDEzNSIvPgo8cGF0aCBkPSJNNTMwLjkyMyAxMDEuNDk3QzUzMC45MjMgMTA5LjY0MyA1MjcuNzY2IDExNi4yNDYgNTIzLjg3MSAxMTYuMjQ2QzUxOS45NzYgMTE2LjI0NiA1MTYuODE4IDEwOS42NDMgNTE2LjgxOCAxMDEuNDk3QzUxNi44MTggOTMuMzUxIDUxOS45NzYgODYuNzQ3IDUyMy44NzEgODYuNzQ3QzUyNy43NjYgODYuNzQ3IDUzMC45MjMgOTMuMzUxIDUzMC45MjMgMTAxLjQ5N1oiIGZpbGw9IiMyQTIzMjMiLz4KPHBhdGggZD0iTTUwNC40NzUgNzcuMTUyQzQ5MS44MzYgNzcuMDM5IDQ2OC43NzggODEuNTgzIDQ1OC44MjkgODMuODY5VjExOS4zN0M0NjcuNjYgMTIwLjYzMiA0ODEuMjkzIDEyMi4yIDQ5My45NCAxMjIuODc1QzUwMy4wNjMgMTE5LjQ2IDUwOS4xMDMgMTE1Ljg0OSA1MDkuNzY5IDk3LjkzMUM1MTAuMzAyIDgzLjU5NiA1MTguNzk4IDgwLjMxOCA1MjIuOTggODAuNDcxQzUxOS41OTYgNzguOTI2IDUxMy41MzEgNzcuMjM0IDUwNC40NzUgNzcuMTUyWiIgZmlsbD0iI0FEOEM2OSIvPgo8cGF0aCBkPSJNNTIyLjk4IDEyMC43MDhDNTE3LjQ2MiAxMjAuNzA4IDUxMi45OSAxMTEuODk5IDUxMi45OSAxMDEuMDMzQzUxMi45OSA5MC4xNjcgNTE3LjQ2MiA4MS4zNTggNTIyLjk4IDgxLjM1OEM1MjMuOTQzIDgxLjM1OCA1MjQuODc1IDgxLjYyNyA1MjUuNzU2IDgyLjEyOEM1MjUuMjM4IDgxLjY3MSA1MjQuMzE5IDgxLjA4MyA1MjIuOTggODAuNDcxQzUxOC43OTggODAuMzE4IDUxMC4zMDIgODMuNTk2IDUwOS43NjkgOTcuOTMxQzUwOS4xMDMgMTE1Ljg0OSA1MDMuMDYzIDExOS40NiA0OTMuOTQgMTIyLjg3NUM1MDcuMjczIDEyMy41ODcgNTE5LjUxMSAxMjMuMzA2IDUyMy44NzEgMTIwLjYzMUM1MjMuNTc3IDEyMC42ODMgNTIzLjI3OSAxMjAuNzA5IDUyMi45OCAxMjAuNzA4WiIgZmlsbD0iI0EzODI2MiIvPgo8cGF0aCBkPSJNNTg5LjY3IDEyMi4yODlDNTY1LjU4MiAxMjQuMDQ3IDUzMy4xNDkgMTQzLjUxNiA1MDAuODg0IDE1Ni40NzJDNTA5LjE5OCAxNTMuODc3IDU2OS42ODIgMTUwLjAyMyA2MTAuMTQxIDE1MC4zMThDNjExLjQ0IDEyOS42MzIgNjA4LjI1NiAxMjUuNDA4IDU5OS4zMDkgMTIyLjY2OUM1OTYuMTExIDEyMi4yMDQgNTkyLjg4MSAxMjIuMDU0IDU4OS42NyAxMjIuMjg5WiIgZmlsbD0iIzNDQTlERSIgZmlsbC1vcGFjaXR5PSIwLjciLz4KPHBhdGggZD0iTTY0MC4zNTYgMTUyLjAzNUM2NDIuMzAzIDE1Mi4zNjggNjQzLjQ5MyAxNTIuNzIxIDY0NC4wMDcgMTUzLjA4OEM2MzkuODkyIDE0Mi4zMDggNjIwLjI3NyAxMjUuNzE1IDU5OS4zMDkgMTIyLjY2OUM2MDguMjU2IDEyNS40MDggNjExLjQ0IDEyOS42MzIgNjEwLjE0MSAxNTAuMzE4QzYyMy4wMTYgMTUwLjQxMiA2MzMuODYzIDE1MC45MjcgNjQwLjM1NiAxNTIuMDM1WiIgZmlsbD0iIzIxODlDMiIgZmlsbC1vcGFjaXR5PSIwLjciLz4KPHBhdGggZD0iTTUwMC4xODMgMTU2Ljc1M0M0OTkuNTQ3IDE1Ny4xMTQgNTAwLjA2MiAxNTcuNDQ1IDUwMS45NDcgMTU3LjcyOUM1NDcuNDM5IDE2NC41ODUgNjUwLjU2NiAxNTcuNzU5IDY0NC4wMDcgMTUzLjA4OEM2NDMuNDkzIDE1Mi43MjEgNjQyLjMwMyAxNTIuMzY4IDY0MC4zNTYgMTUyLjAzNUM2MzMuODYzIDE1MC45MjcgNjIzLjAxNiAxNTAuNDEyIDYxMC4xNDEgMTUwLjMxOEM1NjkuNjgyIDE1MC4wMjMgNTA5LjE5OCAxNTMuODc3IDUwMC44ODQgMTU2LjQ3Mkw1MDAuMTgzIDE1Ni43NTNaIiBmaWxsPSIjMkI1RDdDIi8+CjxwYXRoIGQ9Ik0wIDExNC4wOEMwIDEwOC4wMDUgNC45MjUgMTAzLjA4IDExIDEwMy4wOEgyNDVDMjUxLjA3NSAxMDMuMDggMjU2IDEwOC4wMDUgMjU2IDExNC4wOFYyMjkuMDhDMjU2IDIzNS4xNTUgMjUxLjA3NSAyNDAuMDggMjQ1IDI0MC4wOEgxMUM0LjkyNSAyNDAuMDggMCAyMzUuMTU1IDAgMjI5LjA4VjExNC4wOFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yNzEgMTM2LjU4TDI1NiAxMjIuNThWMTUyLjA4TDI3MSAxMzYuNThaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzAuMzg2IDEzMC41MzlIMjQuOTE1VjEyNy4zODVIMzkuNTI5VjEzMC41MzlIMzQuMDA5VjE0NS4zNTFIMzAuMzg2VjEzMC41MzlaTTQxLjQwMiAxMjYuOTY2SDQ0LjgwM1YxMzQuNjhINDQuOTUxQzQ1LjI4MDMgMTMzLjgyNSA0NS44MDYzIDEzMy4xNiA0Ni41MjkgMTMyLjY4NEM0Ny4yNTY3IDEzMi4xOTQgNDguMTE1NyAxMzEuOTM2IDQ4Ljk5MyAxMzEuOTQ0QzUwLjM4OTYgMTMxLjk0NCA1MS40ODIzIDEzMi4zOTYgNTIuMjcxIDEzMy4zQzUzLjA1OTcgMTM0LjE4NyA1My40NTQgMTM1LjU1IDUzLjQ1NCAxMzcuMzkxVjE0NS4zNTFINTAuMDUzVjEzOC4yMDRDNTAuMDUzIDEzNy4wMzcgNDkuODU1NyAxMzYuMTc1IDQ5LjQ2MSAxMzUuNjE2QzQ5LjA4MzcgMTM1LjA1OCA0OC40ODQgMTM0Ljc3OSA0Ny42NjIgMTM0Ljc3OEM0Ni44MDggMTM0Ljc3OCA0Ni4xMTggMTM1LjA5OCA0NS41OTIgMTM1LjczOUM0NS4wNjYgMTM2LjM2NCA0NC44MDMgMTM3LjE1MiA0NC44MDMgMTM4LjEwNVYxNDUuMzUxSDQxLjQwMlYxMjYuOTY2Wk01Ni4zNzEgMTMyLjE2Nkg1OS44MjFWMTQ1LjM1MUg1Ni4zNzFWMTMyLjE2NlpNNTguMDk2IDEzMC40NjVDNTcuNTIxMyAxMzAuNDY1IDU3LjA0NSAxMzAuMjg0IDU2LjY2NyAxMjkuOTIzQzU2LjI4OSAxMjkuNTYyIDU2LjEgMTI5LjEwMiA1Ni4xIDEyOC41NDNDNTYuMSAxMjguMDAxIDU2LjI4OSAxMjcuNTQ5IDU2LjY2NyAxMjcuMTg4QzU3LjA0NSAxMjYuODI2IDU3LjUyMTMgMTI2LjY0NSA1OC4wOTYgMTI2LjY0NkM1OC42NzEzIDEyNi42NDYgNTkuMTQ3NyAxMjYuODI3IDU5LjUyNSAxMjcuMTg4QzU5LjkxOTcgMTI3LjU0OSA2MC4xMTcgMTI4LjAwMSA2MC4xMTcgMTI4LjU0M0M2MC4xMTcgMTI5LjEwMiA1OS45MTk3IDEyOS41NjIgNTkuNTI1IDEyOS45MjNDNTkuMTQ3NyAxMzAuMjg1IDU4LjY3MTMgMTMwLjQ2NiA1OC4wOTYgMTMwLjQ2NVpNNjcuNzUgMTQ1LjU5N0M2Ni4wMjQ3IDE0NS41OTcgNjQuNjUyNyAxNDUuMjExIDYzLjYzNCAxNDQuNDM5QzYyLjYxNTMgMTQzLjY2NyA2Mi4wODEzIDE0Mi42MzIgNjIuMDMyIDE0MS4zMzRINjUuMzg0QzY1LjUxNTMgMTQyLjU2NiA2Ni4zMzY3IDE0My4xODIgNjcuODQ4IDE0My4xODJDNjguNTU0NyAxNDMuMTgyIDY5LjA4ODYgMTQzLjA1MSA2OS40NSAxNDIuNzg4QzY5LjgxMiAxNDIuNTI1IDY5Ljk5MyAxNDIuMTU1IDY5Ljk5MyAxNDEuNjc5QzY5Ljk5MyAxNDEuMTUzIDY5LjgwNCAxNDAuNzkxIDY5LjQyNiAxNDAuNTk0QzY5LjA0OCAxNDAuMzgxIDY4LjM0OTcgMTQwLjIgNjcuMzMxIDE0MC4wNTJDNjUuNTczIDEzOS43ODkgNjQuMzA4IDEzOS4zNyA2My41MzYgMTM4Ljc5NUM2Mi43NjI2IDEzOC4yMiA2Mi4zNzYzIDEzNy4zMTcgNjIuMzc3IDEzNi4wODRDNjIuMzc3IDEzNC44MTkgNjIuODcgMTMzLjgwOSA2My44NTYgMTMzLjA1M0M2NC44NDEzIDEzMi4yOTcgNjYuMTY0IDEzMS45MTkgNjcuODI0IDEzMS45MkM2OS4zODQ3IDEzMS45MiA3MC42MzMzIDEzMi4yODEgNzEuNTcgMTMzLjAwNEM3Mi41MDY3IDEzMy43MjcgNzMuMDE2IDEzNC43MTIgNzMuMDk4IDEzNS45NjFINjkuNzQ2QzY5LjYzMTMgMTM0Ljg3NyA2OC45NDEzIDEzNC4zMzUgNjcuNjc2IDEzNC4zMzVDNjcuMDg0IDEzNC4zMzUgNjYuNjA3NyAxMzQuNDY2IDY2LjI0NyAxMzQuNzI5QzY1LjkwMTcgMTM0Ljk3NiA2NS43MjkgMTM1LjMyOSA2NS43MjkgMTM1Ljc4OUM2NS43MjkgMTM2LjExNyA2NS44MTkzIDEzNi4zOCA2NiAxMzYuNTc3QzY2LjE5NzMgMTM2Ljc3NSA2Ni41MDEzIDEzNi45MzEgNjYuOTEyIDEzNy4wNDZDNjcuMzIyNyAxMzcuMTYxIDY3LjkyMjMgMTM3LjI2NyA2OC43MTEgMTM3LjM2NkM3MC4zNzAzIDEzNy41OTYgNzEuNTYxNyAxMzguMDA3IDcyLjI4NSAxMzguNTk4QzczLjAyNDMgMTM5LjE5IDczLjM5NCAxNDAuMTE4IDczLjM5NCAxNDEuMzgzQzczLjM5NCAxNDIuNzE0IDcyLjg5MjcgMTQzLjc0OSA3MS44OSAxNDQuNDg4QzcwLjg4OCAxNDUuMjI4IDY5LjUwOCAxNDUuNTk4IDY3Ljc1IDE0NS41OTdaTTgxLjQwMSAxMzIuMTY2SDg0Ljg1MVYxNDUuMzUxSDgxLjQwMVYxMzIuMTY2Wk04My4xMjYgMTMwLjQ2NUM4Mi41NTA3IDEzMC40NjUgODIuMDc0IDEzMC4yODQgODEuNjk2IDEyOS45MjNDODEuMzE4NyAxMjkuNTYyIDgxLjEzIDEyOS4xMDIgODEuMTMgMTI4LjU0M0M4MS4xMjM4IDEyOC4yOSA4MS4xNzEgMTI4LjAzOSA4MS4yNjg1IDEyNy44MDVDODEuMzY2MSAxMjcuNTcyIDgxLjUxMTcgMTI3LjM2MSA4MS42OTYgMTI3LjE4OEM4Mi4wNzQgMTI2LjgyNiA4Mi41NTA3IDEyNi42NDUgODMuMTI2IDEyNi42NDZDODMuNzAwNyAxMjYuNjQ2IDg0LjE3NyAxMjYuODI3IDg0LjU1NSAxMjcuMTg4Qzg0Ljk0OTcgMTI3LjU0OSA4NS4xNDcgMTI4LjAwMSA4NS4xNDcgMTI4LjU0M0M4NS4xNDcgMTI5LjEwMiA4NC45NDk3IDEyOS41NjIgODQuNTU1IDEyOS45MjNDODQuMTc3IDEzMC4yODUgODMuNzAwNyAxMzAuNDY2IDgzLjEyNiAxMzAuNDY1Wk05Mi43OCAxNDUuNTk3QzkxLjA1NDcgMTQ1LjU5NyA4OS42ODI3IDE0NS4yMTEgODguNjY0IDE0NC40MzlDODcuNjQ0NyAxNDMuNjY3IDg3LjExMDYgMTQyLjYzMiA4Ny4wNjIgMTQxLjMzNEg5MC40MTRDOTAuNTQ1MyAxNDIuNTY2IDkxLjM2NjcgMTQzLjE4MiA5Mi44NzggMTQzLjE4MkM5My41ODQ3IDE0My4xODIgOTQuMTE4NiAxNDMuMDUxIDk0LjQ4IDE0Mi43ODhDOTQuODQyIDE0Mi41MjUgOTUuMDIyNyAxNDIuMTU1IDk1LjAyMiAxNDEuNjc5Qzk1LjAyMiAxNDEuMTUzIDk0LjgzMyAxNDAuNzkxIDk0LjQ1NSAxNDAuNTk0Qzk0LjA3NzcgMTQwLjM4MSA5My4zNzk3IDE0MC4yIDkyLjM2MSAxNDAuMDUyQzkwLjYwMyAxMzkuNzg5IDg5LjMzNzcgMTM5LjM3IDg4LjU2NSAxMzguNzk1Qzg3Ljc5MjMgMTM4LjIyIDg3LjQwNjMgMTM3LjMxNiA4Ny40MDcgMTM2LjA4NEM4Ny40MDcgMTM0LjgxOSA4Ny45IDEzMy44MDkgODguODg2IDEzMy4wNTNDODkuODcxMyAxMzIuMjk3IDkxLjE5NCAxMzEuOTE5IDkyLjg1NCAxMzEuOTJDOTQuNDE0IDEzMS45MiA5NS42NjI3IDEzMi4yODEgOTYuNiAxMzMuMDA0Qzk3LjUzNiAxMzMuNzI3IDk4LjA0NTMgMTM0LjcxMyA5OC4xMjggMTM1Ljk2MUg5NC43NzZDOTQuNjYwNyAxMzQuODc3IDkzLjk3MDcgMTM0LjMzNSA5Mi43MDYgMTM0LjMzNUM5Mi4xMTQ3IDEzNC4zMzUgOTEuNjM4IDEzNC40NjYgOTEuMjc2IDEzNC43MjlDOTAuOTMxMyAxMzQuOTc2IDkwLjc1OSAxMzUuMzI5IDkwLjc1OSAxMzUuNzg5QzkwLjc1OSAxMzYuMTE3IDkwLjg0OTMgMTM2LjM4IDkxLjAzIDEzNi41NzdDOTEuMjI3MyAxMzYuNzc1IDkxLjUzMTMgMTM2LjkzMSA5MS45NDIgMTM3LjA0NkM5Mi4zNTIgMTM3LjE2MSA5Mi45NTE3IDEzNy4yNjcgOTMuNzQxIDEzNy4zNjZDOTUuNDAwMyAxMzcuNTk2IDk2LjU5MTMgMTM4LjAwNyA5Ny4zMTQgMTM4LjU5OEM5OC4wNTQgMTM5LjE5IDk4LjQyMzcgMTQwLjExOCA5OC40MjMgMTQxLjM4M0M5OC40MjMgMTQyLjcxNCA5Ny45MjIgMTQzLjc0OSA5Ni45MiAxNDQuNDg4Qzk1LjkxOCAxNDUuMjI4IDk0LjUzOCAxNDUuNTk4IDkyLjc4IDE0NS41OTdaTTEwNi40MyAxMzIuMTY2SDEwOS43MzNMMTA5LjgzMSAxMzQuNzA0SDEwOS45NzlDMTEwLjMyNCAxMzMuODE3IDExMC44NTggMTMzLjEzNiAxMTEuNTgxIDEzMi42NTlDMTEyLjMwNCAxMzIuMTgyIDExMy4xMjUgMTMxLjk0NCAxMTQuMDQ2IDEzMS45NDRDMTE1LjQyNiAxMzEuOTQ0IDExNi41MSAxMzIuMzk2IDExNy4yOTkgMTMzLjNDMTE4LjA4NyAxMzQuMTg3IDExOC40ODEgMTM1LjU1IDExOC40ODIgMTM3LjM5MVYxNDUuMzUxSDExNS4wODFWMTM4LjE1NUMxMTUuMDgxIDEzNy4wMDQgMTE0Ljg4NCAxMzYuMTU4IDExNC40ODkgMTM1LjYxNkMxMTQuMTEyIDEzNS4wNTggMTEzLjUxMiAxMzQuNzc5IDExMi42OSAxMzQuNzc4QzExMS44NTIgMTM0Ljc3OCAxMTEuMTcgMTM1LjA4MiAxMTAuNjQ1IDEzNS42OUMxMTAuMTE5IDEzNi4yOTggMTA5Ljg1NiAxMzcuMDg3IDEwOS44NTYgMTM4LjA1NlYxNDUuMzUxSDEwNi40M1YxMzIuMTY2Wk0xMjcuMzYyIDE0NS41NzNDMTI2LjA4MSAxNDUuNTczIDEyNC45NDcgMTQ1LjMwMiAxMjMuOTYxIDE0NC43NTlDMTIyLjk5NSAxNDQuMjA0IDEyMi4yMDggMTQzLjM4MyAxMjEuNjk0IDE0Mi4zOTRDMTIxLjE1MiAxNDEuMzc1IDEyMC44ODEgMTQwLjE2NyAxMjAuODgxIDEzOC43NzFDMTIwLjg4MSAxMzcuNDIzIDEyMS4xMzYgMTM2LjIzMiAxMjEuNjQ1IDEzNS4xOTdDMTIyLjE3MSAxMzQuMTYyIDEyMi45MTkgMTMzLjM2NSAxMjMuODg4IDEzMi44MDdDMTI0Ljg3MyAxMzIuMjMyIDEyNi4wMzEgMTMxLjk0NCAxMjcuMzYyIDEzMS45NDRDMTI4LjY0NCAxMzEuOTQ0IDEyOS43NyAxMzIuMjIzIDEzMC43MzkgMTMyLjc4MkMxMzEuNzI0IDEzMy4zMjQgMTMyLjQ4IDEzNC4xMTMgMTMzLjAwNiAxMzUuMTQ4QzEzMy41NDggMTM2LjE2NyAxMzMuODE5IDEzNy4zNzQgMTMzLjgxOSAxMzguNzcxQzEzMy44MTkgMTQwLjExOCAxMzMuNTU2IDE0MS4zMDkgMTMzLjAzMSAxNDIuMzQ0QzEzMi41NDIgMTQzLjM0MSAxMzEuNzcxIDE0NC4xNzIgMTMwLjgxMyAxNDQuNzM1QzEyOS44NDMgMTQ1LjI5MyAxMjguNjkzIDE0NS41NzIgMTI3LjM2MiAxNDUuNTczWk0xMjcuMzM4IDE0Mi43ODhDMTI4LjI3NCAxNDIuNzg4IDEyOS4wMDUgMTQyLjQ1MSAxMjkuNTMxIDE0MS43NzdDMTMwLjA3MyAxNDEuMDg3IDEzMC4zNDQgMTQwLjA4NSAxMzAuMzQ0IDEzOC43NzFDMTMwLjM0NCAxMzcuNDU2IDEzMC4wODEgMTM2LjQ1NCAxMjkuNTU2IDEzNS43NjRDMTI5LjAzIDEzNS4wNzQgMTI4LjI5OSAxMzQuNzI5IDEyNy4zNjIgMTM0LjcyOUMxMjYuNDI1IDEzNC43MjkgMTI1LjY4NiAxMzUuMDc0IDEyNS4xNDQgMTM1Ljc2NEMxMjQuNjE5IDEzNi40MzcgMTI0LjM1NiAxMzcuNDQgMTI0LjM1NiAxMzguNzcxQzEyNC4zNTYgMTQwLjA4NSAxMjQuNjE5IDE0MS4wODcgMTI1LjE0NCAxNDEuNzc3QzEyNS42NyAxNDIuNDUxIDEyNi40MDEgMTQyLjc4OCAxMjcuMzM4IDE0Mi43ODhaTTE0MC42NjMgMTQ1LjM1MUMxMzkuNTQ1IDE0NS4zNTEgMTM4LjcyMyAxNDUuMDg4IDEzOC4xOTggMTQ0LjU2MkMxMzcuNjg5IDE0NC4wMzcgMTM3LjQzNCAxNDMuMTk5IDEzNy40MzQgMTQyLjA0OFYxMzQuOTI2SDEzNS4xMThWMTMyLjE2NkgxMzcuNDM0VjEyOC42MTdMMTQwLjgzNSAxMjguMTk4VjEzMi4xNjZIMTQzLjQ3MlYxMzQuOTI2SDE0MC44MzVWMTQxLjQzMkMxNDAuODM1IDE0MS44MjcgMTQwLjkyNSAxNDIuMTE0IDE0MS4xMDYgMTQyLjI5NUMxNDEuMzAzIDE0Mi40NTkgMTQxLjU5MSAxNDIuNTQxIDE0MS45NjkgMTQyLjU0MUgxNDMuNDk3VjE0NS4zNTFIMTQwLjY2M1pNMTU1Ljk2OSAxNDUuMzUxQzE1NC44NTIgMTQ1LjM1MSAxNTQuMDMxIDE0NS4wODggMTUzLjUwNSAxNDQuNTYyQzE1Mi45OTYgMTQ0LjAzNyAxNTIuNzQxIDE0My4xOTkgMTUyLjc0MSAxNDIuMDQ4VjEzNC45MjZIMTUwLjQyNFYxMzIuMTY2SDE1Mi43NDFWMTI4LjYxN0wxNTYuMTQyIDEyOC4xOThWMTMyLjE2NkgxNTguNzc5VjEzNC45MjZIMTU2LjE0MlYxNDEuNDMyQzE1Ni4xNDIgMTQxLjgyNyAxNTYuMjMyIDE0Mi4xMTQgMTU2LjQxMyAxNDIuMjk1QzE1Ni42MSAxNDIuNDU5IDE1Ni44OTggMTQyLjU0MSAxNTcuMjc1IDE0Mi41NDFIMTU4LjgwM1YxNDUuMzUxSDE1NS45NjlaTTE2MS4wODggMTI2Ljk2NkgxNjQuNDg5VjEzNC42OEgxNjQuNjM3QzE2NC45NjUgMTMzLjgyNSAxNjUuNDkxIDEzMy4xNiAxNjYuMjE0IDEzMi42ODRDMTY2Ljk0MiAxMzIuMTk1IDE2Ny44MDEgMTMxLjkzNyAxNjguNjc4IDEzMS45NDRDMTcwLjA3NSAxMzEuOTQ0IDE3MS4xNjggMTMyLjM5NiAxNzEuOTU2IDEzMy4zQzE3Mi43NDUgMTM0LjE4NyAxNzMuMTM5IDEzNS41NSAxNzMuMTM5IDEzNy4zOTFWMTQ1LjM1MUgxNjkuNzM4VjEzOC4yMDRDMTY5LjczOCAxMzcuMDM3IDE2OS41NDEgMTM2LjE3NSAxNjkuMTQ3IDEzNS42MTZDMTY4Ljc2OSAxMzUuMDU4IDE2OC4xNjkgMTM0Ljc3OSAxNjcuMzQ4IDEzNC43NzhDMTY2LjQ5MyAxMzQuNzc4IDE2NS44MDMgMTM1LjA5OCAxNjUuMjc3IDEzNS43MzlDMTY0Ljc1MiAxMzYuMzY0IDE2NC40ODkgMTM3LjE1MiAxNjQuNDg5IDEzOC4xMDVWMTQ1LjM1MUgxNjEuMDg4VjEyNi45NjZaTTE4MS45MiAxNDUuNTczQzE3OS44OTkgMTQ1LjU3MyAxNzguMzE0IDE0NC45NjUgMTc3LjE2NCAxNDMuNzQ5QzE3Ni4wMyAxNDIuNTMzIDE3NS40NjMgMTQwLjg5OCAxNzUuNDYzIDEzOC44NDVDMTc1LjQ2MyAxMzcuNDQ4IDE3NS43MTggMTM2LjIzMiAxNzYuMjI3IDEzNS4xOTdDMTc2Ljc1MyAxMzQuMTQ2IDE3Ny40OTIgMTMzLjM0MSAxNzguNDQ1IDEzMi43ODJDMTc5LjQxNSAxMzIuMjIzIDE4MC41NDEgMTMxLjk0NCAxODEuODIyIDEzMS45NDRDMTgzLjg0MiAxMzEuOTQ0IDE4NS4zOTQgMTMyLjU0NCAxODYuNDc5IDEzMy43NDNDMTg3LjU4IDEzNC45NDMgMTg4LjEzMSAxMzYuNTUzIDE4OC4xMzEgMTM4LjU3NEMxODguMTMxIDEzOC43NzEgMTg4LjExNCAxMzkuMDgzIDE4OC4wODEgMTM5LjUxSDE3OC44NjRDMTc4Ljg2NCAxNDAuNjExIDE3OS4xMzUgMTQxLjQ2NSAxNzkuNjc3IDE0Mi4wNzNDMTgwLjIzNiAxNDIuNjgxIDE4MC45ODQgMTQyLjk4NSAxODEuOTIgMTQyLjk4NUMxODMuMzUgMTQyLjk4NSAxODQuMjU0IDE0Mi40MSAxODQuNjMxIDE0MS4yNkgxODcuOTgzQzE4Ny43NTMgMTQyLjYwNyAxODcuMDk2IDE0My42NjYgMTg2LjAxMSAxNDQuNDM5QzE4NC45MjcgMTQ1LjE5NSAxODMuNTYzIDE0NS41NzMgMTgxLjkyIDE0NS41NzNaTTE4NC42NTYgMTM3LjM2NkMxODQuNjIzIDEzNi40NjIgMTg0LjM0MyAxMzUuNzY0IDE4My44MTggMTM1LjI3MUMxODMuMzA4IDEzNC43NzggMTgyLjYzNCAxMzQuNTMxIDE4MS43OTcgMTM0LjUzMkMxODAuOTc2IDEzNC41MzIgMTgwLjI5NCAxMzQuNzg3IDE3OS43NTEgMTM1LjI5NkMxNzkuMjI2IDEzNS44MDUgMTc4LjkzIDEzNi41MDMgMTc4Ljg2NCAxMzcuMzkxTDE4NC42NTYgMTM3LjM2NlpNMjQuNzE4IDE2Ny4wNzlIMjguMjY3TDI5LjY3MiAxNzMuNTYxTDMwLjM2MiAxNzYuODYzSDMwLjUwOUwzMS4xMjYgMTczLjU2MUwzMi41MDYgMTY3LjA3OUgzNi4wNTVMMzcuNDM1IDE3My41NjFMMzguMDUxIDE3Ni45MTJIMzguMTk5TDM4LjgzOSAxNzMuNTYxTDQwLjI5MyAxNjcuMDc5SDQzLjY3TDQwLjM5MiAxODAuMjY0SDM2LjE3OEwzNC44OTYgMTc0LjY5NEwzNC4yMDYgMTcxLjE5NUgzNC4wNThMMzMuMzkzIDE3NC42OTRMMzIuMTM2IDE4MC4yNjRIMjcuOTIyTDI0LjcxOCAxNjcuMDc5Wk01MS4xMTYgMTgwLjQ4NkM0OS4wOTQ3IDE4MC40ODYgNDcuNTA5IDE3OS44NzggNDYuMzU5IDE3OC42NjJDNDUuMjI1NyAxNzcuNDQ2IDQ0LjY1OSAxNzUuODExIDQ0LjY1OSAxNzMuNzU4QzQ0LjY1OSAxNzIuMzYxIDQ0LjkxMzcgMTcxLjE0NiA0NS40MjMgMTcwLjExMUM0NS45NDkgMTY5LjA1OSA0Ni42ODgzIDE2OC4yNTQgNDcuNjQxIDE2Ny42OTVDNDguNjEwMyAxNjcuMTM3IDQ5LjczNTcgMTY2Ljg1OCA1MS4wMTcgMTY2Ljg1N0M1My4wMzgzIDE2Ni44NTcgNTQuNTkxIDE2Ny40NTcgNTUuNjc1IDE2OC42NTdDNTYuNzc1NyAxNjkuODU2IDU3LjMyNiAxNzEuNDY2IDU3LjMyNiAxNzMuNDg3QzU3LjMyNiAxNzMuNjg0IDU3LjMwOTcgMTczLjk5NiA1Ny4yNzcgMTc0LjQyM0g0OC4wNkM0OC4wNiAxNzUuNTI0IDQ4LjMzMSAxNzYuMzc4IDQ4Ljg3MyAxNzYuOTg2QzQ5LjQzMTcgMTc3LjU5NCA1MC4xNzkzIDE3Ny44OTggNTEuMTE2IDE3Ny44OThDNTIuNTQ1MyAxNzcuODk4IDUzLjQ0OSAxNzcuMzIzIDUzLjgyNyAxNzYuMTczSDU3LjE3OEM1Ni45NDggMTc3LjUyIDU2LjI5MSAxNzguNTc5IDU1LjIwNyAxNzkuMzUyQzU0LjEyMjMgMTgwLjEwOCA1Mi43NTg3IDE4MC40ODYgNTEuMTE2IDE4MC40ODZaTTUzLjg1MSAxNzIuMjc5QzUzLjgxNzYgMTcxLjM3NiA1My41MzgzIDE3MC42NzcgNTMuMDEzIDE3MC4xODRDNTIuNTAzNyAxNjkuNjkxIDUxLjgzIDE2OS40NDUgNTAuOTkyIDE2OS40NDVDNTAuMTcwNyAxNjkuNDQ1IDQ5LjQ4OSAxNjkuNyA0OC45NDcgMTcwLjIwOUM0OC40MjAzIDE3MC43MTggNDguMTI0NyAxNzEuNDE3IDQ4LjA2IDE3Mi4zMDRMNTMuODUxIDE3Mi4yNzlaTTY3LjEzOCAxODAuNTExQzY2LjE4NDcgMTgwLjUxMSA2NS4zNTUgMTgwLjI4MSA2NC42NDkgMTc5LjgyMUM2My45NTM4IDE3OS4zNTkgNjMuNDI2NCAxNzguNjg0IDYzLjE0NSAxNzcuODk4SDYyLjk3M0w2Mi44NzQgMTgwLjI2NEg1OS42MjFWMTYxLjg3OUg2My4wMjJWMTY5LjQ5NEg2My4xN0M2My40MzU4IDE2OC43MDcgNjMuOTU2MiAxNjguMDMxIDY0LjY0OSAxNjcuNTcyQzY1LjM1NTcgMTY3LjA5NiA2Ni4xODUzIDE2Ni44NTggNjcuMTM4IDE2Ni44NTdDNjguNzMxMyAxNjYuODU3IDY5Ljk4OCAxNjcuNDY1IDcwLjkwOCAxNjguNjgxQzcxLjg0NDcgMTY5Ljg4MSA3Mi4zMTMgMTcxLjU0OSA3Mi4zMTMgMTczLjY4NEM3Mi4zMTMgMTc1LjgxOSA3MS44NDQ3IDE3Ny40OTUgNzAuOTA4IDE3OC43MTJDNjkuOTg4IDE3OS45MTEgNjguNzMxMyAxODAuNTExIDY3LjEzOCAxODAuNTExWk02NS44MzIgMTc3LjY3NkM2Ni44MTczIDE3Ny42NzYgNjcuNTY0NyAxNzcuMzIzIDY4LjA3NCAxNzYuNjE3QzY4LjU4MzMgMTc1LjkxIDY4LjgzOCAxNzQuOTMzIDY4LjgzOCAxNzMuNjg0QzY4LjgzOCAxNzIuNDE5IDY4LjU5MTcgMTcxLjQzMyA2OC4wOTkgMTcwLjcyN0M2Ny42MDU3IDE3MC4wMiA2Ni44ODI3IDE2OS42NjcgNjUuOTMgMTY5LjY2N0M2NS4wMjY3IDE2OS42NjcgNjQuMzEyIDE2OS45OTYgNjMuNzg2IDE3MC42NTNDNjMuMjc2NiAxNzEuMjkzIDYzLjAyMiAxNzIuMTIzIDYzLjAyMiAxNzMuMTQyVjE3NC4yMjZDNjMuMDIyIDE3NS4yNDUgNjMuMjY4MyAxNzYuMDc1IDYzLjc2MSAxNzYuNzE1QzY0LjI3MSAxNzcuMzU2IDY0Ljk2MTMgMTc3LjY3NiA2NS44MzIgMTc3LjY3NlpNODAuNjMyIDE2Ny4wNzlIODMuODg1TDg0LjAwOCAxNjkuNDdIODQuMTU2Qzg0LjQ0MyAxNjguNjk0IDg0Ljk2OTMgMTY4LjAyOSA4NS42NTkgMTY3LjU3MkM4Ni4zNjU3IDE2Ny4wOTYgODcuMTk1MyAxNjYuODU4IDg4LjE0OCAxNjYuODU3Qzg5Ljc0MiAxNjYuODU3IDkwLjk5OSAxNjcuNDY1IDkxLjkxOSAxNjguNjgxQzkyLjg1NSAxNjkuODgxIDkzLjMyMzMgMTcxLjU0OSA5My4zMjQgMTczLjY4NEM5My4zMjQgMTc1LjgyIDkyLjg1NTcgMTc3LjQ5NiA5MS45MTkgMTc4LjcxMkM5MC45OTkgMTc5LjkxMSA4OS43NDIgMTgwLjUxMSA4OC4xNDggMTgwLjUxMUM4Ny4xOTUzIDE4MC41MTEgODYuMzY1NyAxODAuMjgxIDg1LjY1OSAxNzkuODIxQzg0Ljk3MzYgMTc5LjM4NyA4NC40NTMyIDE3OC43MzYgODQuMTgxIDE3Ny45NzJIODQuMDMzVjE4NC40NTRIODAuNjMyVjE2Ny4wNzlaTTg2Ljg0MiAxNzcuNjc2Qzg3LjgxMiAxNzcuNjc2IDg4LjU1MTMgMTc3LjMyMyA4OS4wNiAxNzYuNjE3Qzg5LjU4NiAxNzUuOTEgODkuODQ5IDE3NC45MzMgODkuODQ5IDE3My42ODRDODkuODQ5IDE3Mi40MTkgODkuNTk0MyAxNzEuNDMzIDg5LjA4NSAxNzAuNzI3Qzg4LjU5MTcgMTcwLjAyIDg3Ljg3NyAxNjkuNjY3IDg2Ljk0MSAxNjkuNjY3Qzg2LjAzNyAxNjkuNjY3IDg1LjMyMjMgMTY5Ljk5NiA4NC43OTcgMTcwLjY1M0M4NC4yODc3IDE3MS4yOTMgODQuMDMzIDE3Mi4xMjMgODQuMDMzIDE3My4xNDJWMTc0LjIyNkM4NC4wMzMgMTc1LjI0NSA4NC4yNzkzIDE3Ni4wNzUgODQuNzcyIDE3Ni43MTVDODUuMjgxMyAxNzcuMzU2IDg1Ljk3MTMgMTc3LjY3NiA4Ni44NDIgMTc3LjY3NlpNMTAwLjczOSAxODAuNDg2Qzk5LjE0NTYgMTgwLjQ4NiA5Ny44ODA3IDE3OS44ODYgOTYuOTQ0IDE3OC42ODdDOTYuMDI0IDE3Ny40NzEgOTUuNTY0IDE3NS43OTUgOTUuNTY0IDE3My42NTlDOTUuNTY0IDE3MS41MjMgOTYuMDI0IDE2OS44NTYgOTYuOTQ0IDE2OC42NTdDOTcuODgxMyAxNjcuNDQxIDk5LjE0NjMgMTY2LjgzMyAxMDAuNzM5IDE2Ni44MzNDMTAxLjcwOSAxNjYuODMzIDEwMi41NDcgMTY3LjA3MSAxMDMuMjUzIDE2Ny41NDdDMTAzLjk2NCAxNjguMDA5IDEwNC41MDEgMTY4LjY5NCAxMDQuNzgxIDE2OS40OTRIMTA0Ljg4TDEwNS4wMDMgMTY3LjA3OUgxMDguMjU2VjE4MC4yNjRIMTA1LjAwM0wxMDQuODggMTc3Ljg0OUgxMDQuNzgxQzEwNC40OTYgMTc4LjY0IDEwMy45NTkgMTc5LjMxNSAxMDMuMjUzIDE3OS43NzFDMTAyLjU0NyAxODAuMjQ4IDEwMS43MDkgMTgwLjQ4NiAxMDAuNzM5IDE4MC40ODZaTTEwMS45NDcgMTc3LjY3NkMxMDIuODM0IDE3Ny42NzYgMTAzLjU0MSAxNzcuMzQ4IDEwNC4wNjYgMTc2LjY5MUMxMDQuNTkyIDE3Ni4wMTggMTA0Ljg1NSAxNzUuMTcxIDEwNC44NTUgMTc0LjE1MlYxNzMuMjE2QzEwNC44NTUgMTcyLjE5NyAxMDQuNTkyIDE3MS4zNTEgMTA0LjA2NiAxNzAuNjc3QzEwMy41NTcgMTcwLjAwNCAxMDIuODY3IDE2OS42NjcgMTAxLjk5NiAxNjkuNjY3QzEwMS4wNDMgMTY5LjY2NyAxMDAuMzEyIDE3MC4wMTIgOTkuODAzIDE3MC43MDJDOTkuMjk0MyAxNzEuMzkyIDk5LjAzOTcgMTcyLjM3OCA5OS4wMzkgMTczLjY1OUM5OS4wMzkgMTc0Ljk0MSA5OS4yODUzIDE3NS45MzUgOTkuNzc4IDE3Ni42NDFDMTAwLjI4OCAxNzcuMzMxIDEwMS4wMTEgMTc3LjY3NiAxMDEuOTQ3IDE3Ny42NzZaTTExNy4xOCAxODQuODczQzExNS4zMDcgMTg0Ljg3MyAxMTMuODIgMTg0LjUyIDExMi43MiAxODMuODEzQzExMS42MzUgMTgzLjEyMyAxMTEuMDI3IDE4Mi4xNDUgMTEwLjg5NiAxODAuODhIMTE0LjUxOUMxMTQuNzY1IDE4MS44NDkgMTE1LjY5MyAxODIuMzM0IDExNy4zMDQgMTgyLjMzNEMxMTguMjU3IDE4Mi4zMzQgMTE4Ljk0NyAxODIuMTEyIDExOS4zNzQgMTgxLjY2OUMxMTkuODAxIDE4MS4yMjUgMTIwLjAxNCAxODAuNTM1IDEyMC4wMTQgMTc5LjU5OUwxMjAuMDM5IDE3Ny40NzlIMTE5LjkxNkMxMTkuNjM3IDE3OC4yMTkgMTE5LjEyNyAxNzguODExIDExOC4zODggMTc5LjI1NEMxMTcuNjY1IDE3OS42OTcgMTE2LjgyNyAxNzkuOTE5IDExNS44NzQgMTc5LjkxOUMxMTQuODM5IDE3OS45MTkgMTEzLjkyNyAxNzkuNjY0IDExMy4xMzkgMTc5LjE1NUMxMTIuMzY2IDE3OC42MjkgMTExLjc2NyAxNzcuODgxIDExMS4zNCAxNzYuOTEyQzExMC45MTMgMTc1LjkyNyAxMTAuNjk5IDE3NC43NiAxMTAuNjk5IDE3My40MTNDMTEwLjY5OSAxNzIuMDQ5IDExMC45MTMgMTcwLjg3NCAxMTEuMzQgMTY5Ljg4OUMxMTEuNzY3IDE2OC44ODcgMTEyLjM2NiAxNjguMTMxIDExMy4xMzkgMTY3LjYyMUMxMTMuOTExIDE2Ny4wOTYgMTE0LjgxNSAxNjYuODMzIDExNS44NSAxNjYuODMzQzExNi44MTkgMTY2LjgzMyAxMTcuNjY1IDE2Ny4wNjMgMTE4LjM4OCAxNjcuNTIzQzExOS4xMTEgMTY3Ljk2NiAxMTkuNjIgMTY4LjU2NiAxMTkuOTE2IDE2OS4zMjJIMTIwLjA2NEwxMjAuMTM4IDE2Ny4wNzlIMTIzLjQ0VjE3OS4xMDZDMTIzLjQ0IDE4MS4xNzYgMTIyLjkwNiAxODIuNjU1IDEyMS44MzggMTgzLjU0MkMxMjAuNzcxIDE4NC40MjkgMTE5LjIxOCAxODQuODcyIDExNy4xOCAxODQuODczWk0xMTcuMDU3IDE3Ny4xMzRDMTE3Ljk0NCAxNzcuMTM0IDExOC42NTggMTc2LjgxNCAxMTkuMjAxIDE3Ni4xNzNDMTE5Ljc0MyAxNzUuNTMyIDEyMC4wMTQgMTc0LjczNiAxMjAuMDE0IDE3My43ODNWMTcyLjk0NUMxMjAuMDE0IDE3Mi4wMDggMTE5Ljc0MyAxNzEuMjIgMTE5LjIwMSAxNzAuNTc5QzExOC42NzUgMTY5LjkzOCAxMTcuOTc3IDE2OS42MTggMTE3LjEwNiAxNjkuNjE4QzExNi4xODYgMTY5LjYxOCAxMTUuNDcxIDE2OS45NDYgMTE0Ljk2MiAxNzAuNjAzQzExNC40NTMgMTcxLjI2IDExNC4xOTggMTcyLjE5NyAxMTQuMTk4IDE3My40MTNDMTE0LjE5OCAxNzQuNTk2IDExNC40NDUgMTc1LjUxNiAxMTQuOTM4IDE3Ni4xNzNDMTE1LjQ0NyAxNzYuODE0IDExNi4xNTMgMTc3LjEzNCAxMTcuMDU3IDE3Ny4xMzRaTTEzMi4yMjIgMTgwLjQ4NkMxMzAuMjAxIDE4MC40ODYgMTI4LjYxNSAxNzkuODc4IDEyNy40NjUgMTc4LjY2MkMxMjYuMzMyIDE3Ny40NDYgMTI1Ljc2NSAxNzUuODExIDEyNS43NjUgMTczLjc1OEMxMjUuNzY1IDE3Mi4zNjEgMTI2LjAyIDE3MS4xNDYgMTI2LjUyOSAxNzAuMTExQzEyNy4wNTUgMTY5LjA1OSAxMjcuNzk0IDE2OC4yNTQgMTI4Ljc0NyAxNjcuNjk1QzEyOS43MTYgMTY3LjEzNyAxMzAuODQyIDE2Ni44NTggMTMyLjEyMyAxNjYuODU3QzEzNC4xNDQgMTY2Ljg1NyAxMzUuNjk3IDE2Ny40NTcgMTM2Ljc4MSAxNjguNjU3QzEzNy44ODIgMTY5Ljg1NiAxMzguNDMyIDE3MS40NjYgMTM4LjQzMiAxNzMuNDg3QzEzOC40MzIgMTczLjY4NCAxMzguNDE2IDE3My45OTYgMTM4LjM4MyAxNzQuNDIzSDEyOS4xNjZDMTI5LjE2NiAxNzUuNTI0IDEyOS40MzcgMTc2LjM3OCAxMjkuOTc5IDE3Ni45ODZDMTMwLjUzOCAxNzcuNTk0IDEzMS4yODUgMTc3Ljg5OCAxMzIuMjIyIDE3Ny44OThDMTMzLjY1MSAxNzcuODk4IDEzNC41NTUgMTc3LjMyMyAxMzQuOTMzIDE3Ni4xNzNIMTM4LjI4NEMxMzguMDU0IDE3Ny41MiAxMzcuMzk3IDE3OC41NzkgMTM2LjMxMyAxNzkuMzUyQzEzNS4yMjggMTgwLjEwOCAxMzMuODY1IDE4MC40ODYgMTMyLjIyMiAxODAuNDg2Wk0xMzQuOTU3IDE3Mi4yNzlDMTM0LjkyNCAxNzEuMzc2IDEzNC42NDQgMTcwLjY3NyAxMzQuMTE5IDE3MC4xODRDMTMzLjYxIDE2OS42OTEgMTMyLjkzNiAxNjkuNDQ1IDEzMi4wOTggMTY5LjQ0NUMxMzEuMjc3IDE2OS40NDUgMTMwLjU5NSAxNjkuNyAxMzAuMDUzIDE3MC4yMDlDMTI5LjUyNiAxNzAuNzE4IDEyOS4yMzEgMTcxLjQxNyAxMjkuMTY2IDE3Mi4zMDRMMTM0Ljk1NyAxNzIuMjc5Wk0xNDYuMzMgMTgxLjc2N0gxNDcuODU4QzE0OC40IDE4MS43NjcgMTQ4LjgyNyAxODEuNjUyIDE0OS4xNCAxODEuNDIyQzE0OS40NTIgMTgxLjIwOSAxNDkuNjk4IDE4MC44NjQgMTQ5Ljg3OSAxODAuMzg3TDE1MC4yOTggMTc5LjI1NEwxNDUuMjk1IDE2Ny4wNzlIMTQ5LjA0MUwxNTEuMTM2IDE3My4yNEwxNTEuOTI0IDE3NS42NTZIMTUyLjA0OEwxNTIuNzYyIDE3My4yNEwxNTQuNzM0IDE2Ny4wNzlIMTU4LjM4MUwxNTMuMjMxIDE4MS4xNzZDMTUyLjc4NyAxODIuNDI1IDE1Mi4xODcgMTgzLjMwNCAxNTEuNDMyIDE4My44MTNDMTUwLjY5MiAxODQuMzIyIDE0OS43MTQgMTg0LjU3NyAxNDguNDk5IDE4NC41NzdIMTQ2LjMzVjE4MS43NjdaTTE2NS43MjUgMTgwLjQ4NkMxNjQuNDQ0IDE4MC40ODYgMTYzLjMxIDE4MC4yMTUgMTYyLjMyNCAxNzkuNjczQzE2MS4zNTggMTc5LjExNyAxNjAuNTcxIDE3OC4yOTYgMTYwLjA1NyAxNzcuMzA3QzE1OS41MTUgMTc2LjI4OCAxNTkuMjQ0IDE3NS4wODEgMTU5LjI0NCAxNzMuNjg0QzE1OS4yNDQgMTcyLjMzNyAxNTkuNDk5IDE3MS4xNDYgMTYwLjAwOCAxNzAuMTExQzE2MC41MzQgMTY5LjA3NiAxNjEuMjgxIDE2OC4yNzkgMTYyLjI1IDE2Ny43MkMxNjMuMjM3IDE2Ny4xNDUgMTY0LjM5NSAxNjYuODU3IDE2NS43MjUgMTY2Ljg1N0MxNjcuMDA3IDE2Ni44NTcgMTY4LjEzMyAxNjcuMTM2IDE2OS4xMDIgMTY3LjY5NUMxNzAuMDg3IDE2OC4yMzggMTcwLjg0MyAxNjkuMDI2IDE3MS4zNjkgMTcwLjA2MUMxNzEuOTExIDE3MS4wOCAxNzIuMTgyIDE3Mi4yODcgMTcyLjE4MiAxNzMuNjg0QzE3Mi4xODIgMTc1LjAzMSAxNzEuOTE5IDE3Ni4yMjIgMTcxLjM5NCAxNzcuMjU3QzE3MC45MDUgMTc4LjI1NCAxNzAuMTM0IDE3OS4wODUgMTY5LjE3NiAxNzkuNjQ4QzE2OC4yMDYgMTgwLjIwNyAxNjcuMDU2IDE4MC40ODYgMTY1LjcyNSAxODAuNDg2Wk0xNjUuNzAxIDE3Ny43MDFDMTY2LjYzNyAxNzcuNzAxIDE2Ny4zNjggMTc3LjM2NCAxNjcuODk0IDE3Ni42OTFDMTY4LjQzNiAxNzYuMDAxIDE2OC43MDcgMTc0Ljk5OSAxNjguNzA3IDE3My42ODRDMTY4LjcwNyAxNzIuMzcgMTY4LjQ0NCAxNzEuMzY4IDE2Ny45MTkgMTcwLjY3N0MxNjcuMzkzIDE2OS45ODcgMTY2LjY2MiAxNjkuNjQyIDE2NS43MjUgMTY5LjY0MkMxNjQuNzg4IDE2OS42NDIgMTY0LjA0OSAxNjkuOTg3IDE2My41MDcgMTcwLjY3N0MxNjIuOTgyIDE3MS4zNSAxNjIuNzE5IDE3Mi4zNTMgMTYyLjcxOSAxNzMuNjg0QzE2Mi43MTkgMTc0Ljk5OCAxNjIuOTgyIDE3NiAxNjMuNTA3IDE3Ni42OTFDMTY0LjAzMyAxNzcuMzY0IDE2NC43NjQgMTc3LjcwMSAxNjUuNzAxIDE3Ny43MDFaTTE3OS4wNzIgMTgwLjQ4NkMxNzcuNjEgMTgwLjQ4NiAxNzYuNDkzIDE4MC4wNDIgMTc1LjcyIDE3OS4xNTVDMTc0Ljk0NyAxNzguMjY4IDE3NC41NjEgMTc2Ljk4NiAxNzQuNTYyIDE3NS4zMTFWMTY3LjA3OUgxNzcuOTg4VjE3NC40NDhDMTc3Ljk4OCAxNzUuNTE2IDE3OC4xNzcgMTc2LjMyOSAxNzguNTU0IDE3Ni44ODhDMTc4LjkzMiAxNzcuNDMgMTc5LjU0IDE3Ny43MDEgMTgwLjM3OCAxNzcuNzAxQzE4MS4yMTYgMTc3LjcwMSAxODEuODk4IDE3Ny4zODkgMTgyLjQyNCAxNzYuNzY1QzE4Mi45NDkgMTc2LjEyNCAxODMuMjEyIDE3NS4zMTEgMTgzLjIxMiAxNzQuMzI1VjE2Ny4wNzlIMTg2LjYxM1YxODAuMjY0SDE4My4zMzVMMTgzLjIxMiAxNzcuNzI2SDE4My4wODlDMTgyLjc3NyAxNzguNjEzIDE4Mi4yNjggMTc5LjI5NCAxODEuNTYxIDE3OS43NzFDMTgwLjg1NCAxODAuMjQ4IDE4MC4wMjUgMTgwLjQ4NiAxNzkuMDcyIDE4MC40ODZaTTIwMC4wNCAxODAuNDg2QzE5OC40NDYgMTgwLjQ4NiAxOTcuMTgxIDE3OS44ODYgMTk2LjI0NSAxNzguNjg3QzE5NS4zMjUgMTc3LjQ3MSAxOTQuODY1IDE3NS43OTUgMTk0Ljg2NSAxNzMuNjU5QzE5NC44NjUgMTcxLjUyMyAxOTUuMzI1IDE2OS44NTYgMTk2LjI0NSAxNjguNjU3QzE5Ny4xODEgMTY3LjQ0MSAxOTguNDQ2IDE2Ni44MzMgMjAwLjA0IDE2Ni44MzNDMjAxLjAwOSAxNjYuODMzIDIwMS44NDcgMTY3LjA3MSAyMDIuNTU0IDE2Ny41NDdDMjAzLjI2NSAxNjguMDA5IDIwMy44MDIgMTY4LjY5NCAyMDQuMDgyIDE2OS40OTRIMjA0LjE4TDIwNC4zMDQgMTY3LjA3OUgyMDcuNTU3VjE4MC4yNjRIMjA0LjMwNEwyMDQuMTggMTc3Ljg0OUgyMDQuMDgyQzIwMy43OTcgMTc4LjY0IDIwMy4yNiAxNzkuMzE1IDIwMi41NTQgMTc5Ljc3MUMyMDEuODQ3IDE4MC4yNDggMjAxLjAwOSAxODAuNDg2IDIwMC4wNCAxODAuNDg2Wk0yMDEuMjQ4IDE3Ny42NzZDMjAyLjEzNSAxNzcuNjc2IDIwMi44NDEgMTc3LjM0OCAyMDMuMzY3IDE3Ni42OTFDMjAzLjg5MyAxNzYuMDE4IDIwNC4xNTYgMTc1LjE3MSAyMDQuMTU2IDE3NC4xNTJWMTczLjIxNkMyMDQuMTU2IDE3Mi4xOTcgMjAzLjg5MyAxNzEuMzUxIDIwMy4zNjcgMTcwLjY3N0MyMDIuODU4IDE3MC4wMDQgMjAyLjE2OCAxNjkuNjY3IDIwMS4yOTcgMTY5LjY2N0MyMDAuMzQ0IDE2OS42NjcgMTk5LjYxMyAxNzAuMDEyIDE5OS4xMDQgMTcwLjcwMkMxOTguNTk1IDE3MS4zOTIgMTk4LjM0MSAxNzIuMzc4IDE5OC4zNCAxNzMuNjU5QzE5OC4zNCAxNzQuOTQxIDE5OC41ODYgMTc1LjkzNSAxOTkuMDc5IDE3Ni42NDFDMTk5LjU4OCAxNzcuMzMxIDIwMC4zMTEgMTc3LjY3NiAyMDEuMjQ4IDE3Ny42NzZaTTIxMC42MTYgMTY3LjA3OUgyMTMuNjk3TDIxMy44NDUgMTY5LjMyMkgyMTMuOTY4QzIxNC4yNDcgMTY4LjUxNyAyMTQuNjkxIDE2Ny45MTcgMjE1LjI5OSAxNjcuNTIzQzIxNS45MjMgMTY3LjExMiAyMTYuNjYyIDE2Ni45MDcgMjE3LjUxNyAxNjYuOTA3TDIxOC4wMzQgMTY2LjkzMVYxNzAuMTg0SDIxNy40NjdDMjE2LjMxNyAxNzAuMTg0IDIxNS40NjMgMTcwLjQ1NSAyMTQuOTA0IDE3MC45OThDMjE0LjM2MiAxNzEuNTIzIDIxNC4wNzUgMTcyLjI5NSAyMTQuMDQyIDE3My4zMTRWMTgwLjI2NEgyMTAuNjE2VjE2Ny4wNzlaTTIyNS40NTcgMTgwLjQ4NkMyMjMuNDM3IDE4MC40ODYgMjIxLjg1MiAxNzkuODc4IDIyMC43MDEgMTc4LjY2MkMyMTkuNTY4IDE3Ny40NDYgMjE5LjAwMSAxNzUuODExIDIxOS4wMDEgMTczLjc1OEMyMTkuMDAxIDE3Mi4zNjEgMjE5LjI1NiAxNzEuMTQ2IDIxOS43NjUgMTcwLjExMUMyMjAuMjkgMTY5LjA1OSAyMjEuMDMgMTY4LjI1NCAyMjEuOTgzIDE2Ny42OTVDMjIyLjk1MiAxNjcuMTM3IDIyNC4wNzcgMTY2Ljg1OCAyMjUuMzU5IDE2Ni44NTdDMjI3LjM4IDE2Ni44NTcgMjI4LjkzMiAxNjcuNDU3IDIzMC4wMTcgMTY4LjY1N0MyMzEuMTE3IDE2OS44NTYgMjMxLjY2NyAxNzEuNDY2IDIzMS42NjggMTczLjQ4N0MyMzEuNjY4IDE3My42ODQgMjMxLjY1MiAxNzMuOTk2IDIzMS42MTkgMTc0LjQyM0gyMjIuNDAxQzIyMi40MDEgMTc1LjUyNCAyMjIuNjcyIDE3Ni4zNzggMjIzLjIxNSAxNzYuOTg2QzIyMy43NzMgMTc3LjU5NCAyMjQuNTIgMTc3Ljg5OCAyMjUuNDU3IDE3Ny44OThDMjI2Ljg4NyAxNzcuODk4IDIyNy43OTEgMTc3LjMyMyAyMjguMTY4IDE3Ni4xNzNIMjMxLjUyQzIzMS4yOSAxNzcuNTIgMjMwLjYzMyAxNzguNTc5IDIyOS41NDggMTc5LjM1MkMyMjguNDY0IDE4MC4xMDggMjI3LjEgMTgwLjQ4NiAyMjUuNDU3IDE4MC40ODZaTTIyOC4xOTMgMTcyLjI3OUMyMjguMTYgMTcxLjM3NiAyMjcuODggMTcwLjY3NyAyMjcuMzU1IDE3MC4xODRDMjI2Ljg0NiAxNjkuNjkxIDIyNi4xNzIgMTY5LjQ0NSAyMjUuMzM0IDE2OS40NDVDMjI0LjUxMyAxNjkuNDQ1IDIyMy44MzEgMTY5LjcgMjIzLjI4OSAxNzAuMjA5QzIyMi43NjMgMTcwLjcxOCAyMjIuNDY3IDE3MS40MTcgMjIyLjQwMSAxNzIuMzA0TDIyOC4xOTMgMTcyLjI3OVpNMjYuMDI0IDE5Ni43OTJIMjkuNDI1VjIxNS4xNzdIMjYuMDI0VjE5Ni43OTJaTTM4LjMzOCAyMTUuMzk5QzM3LjA1NjYgMjE1LjM5OSAzNS45MjMgMjE1LjEyOCAzNC45MzcgMjE0LjU4NkMzMy45NzA3IDIxNC4wMyAzMy4xODM5IDIxMy4yMDkgMzIuNjcgMjEyLjIyQzMyLjEyOCAyMTEuMjAxIDMxLjg1NyAyMDkuOTk0IDMxLjg1NyAyMDguNTk3QzMxLjg1NyAyMDcuMjUgMzIuMTExNyAyMDYuMDU5IDMyLjYyMSAyMDUuMDI0QzMzLjE0NyAyMDMuOTg5IDMzLjg5NDYgMjAzLjE5MiAzNC44NjQgMjAyLjYzM0MzNS44NDkzIDIwMi4wNTggMzcuMDA3MyAyMDEuNzcxIDM4LjMzOCAyMDEuNzcxQzM5LjYxOTMgMjAxLjc3MSA0MC43NDUgMjAyLjA1IDQxLjcxNSAyMDIuNjA5QzQyLjcwMDMgMjAzLjE1IDQzLjQ1NiAyMDMuOTM5IDQzLjk4MiAyMDQuOTc1QzQ0LjUyNCAyMDUuOTkzIDQ0Ljc5NSAyMDcuMiA0NC43OTUgMjA4LjU5N0M0NC43OTUgMjA5Ljk0NSA0NC41MzIzIDIxMS4xMzYgNDQuMDA3IDIxMi4xNzFDNDMuNTE2MiAyMTMuMTY3IDQyLjc0NTMgMjEzLjk5NyA0MS43ODkgMjE0LjU2MUM0MC44MTkgMjE1LjEyIDM5LjY2ODYgMjE1LjM5OSAzOC4zMzggMjE1LjM5OVpNMzguMzE0IDIxMi42MTRDMzkuMjUgMjEyLjYxNCAzOS45ODEgMjEyLjI3NyA0MC41MDcgMjExLjYwNEM0MS4wNDkgMjEwLjkxNCA0MS4zMiAyMDkuOTEyIDQxLjMyIDIwOC41OTdDNDEuMzIgMjA3LjI4MyA0MS4wNTczIDIwNi4yODEgNDAuNTMyIDIwNS41OTFDNDAuMDA2IDIwNC45MDEgMzkuMjc0NiAyMDQuNTU2IDM4LjMzOCAyMDQuNTU2QzM3LjQwMTMgMjA0LjU1NiAzNi42NjIgMjA0LjkwMSAzNi4xMiAyMDUuNTkxQzM1LjU5NDcgMjA2LjI2NCAzNS4zMzIgMjA3LjI2NiAzNS4zMzIgMjA4LjU5N0MzNS4zMzIgMjA5LjkxMiAzNS41OTQ3IDIxMC45MTQgMzYuMTIgMjExLjYwNEMzNi42NDYgMjEyLjI3NyAzNy4zNzczIDIxMi42MTQgMzguMzE0IDIxMi42MTRaTTUzLjM4IDIxNS4zOTlDNTIuMDk4NyAyMTUuMzk5IDUwLjk2NSAyMTUuMTI4IDQ5Ljk3OSAyMTQuNTg2QzQ5LjAxMjcgMjE0LjAzIDQ4LjIyNTkgMjEzLjIwOSA0Ny43MTIgMjEyLjIyQzQ3LjE3IDIxMS4yMDEgNDYuODk5IDIwOS45OTQgNDYuODk5IDIwOC41OTdDNDYuODk5IDIwNy4yNSA0Ny4xNTM3IDIwNi4wNTkgNDcuNjYzIDIwNS4wMjRDNDguMTg5IDIwMy45ODkgNDguOTM2MyAyMDMuMTkyIDQ5LjkwNSAyMDIuNjMzQzUwLjg5MTcgMjAyLjA1OCA1Mi4wNSAyMDEuNzcxIDUzLjM4IDIwMS43NzFDNTQuNjYxMyAyMDEuNzcxIDU1Ljc4NyAyMDIuMDUgNTYuNzU3IDIwMi42MDlDNTcuNzQyMyAyMDMuMTUgNTguNDk4IDIwMy45MzkgNTkuMDI0IDIwNC45NzVDNTkuNTY2IDIwNS45OTMgNTkuODM3IDIwNy4yIDU5LjgzNyAyMDguNTk3QzU5LjgzNyAyMDkuOTQ1IDU5LjU3NDMgMjExLjEzNiA1OS4wNDkgMjEyLjE3MUM1OC41NTgxIDIxMy4xNjcgNTcuNzg3MyAyMTMuOTk3IDU2LjgzMSAyMTQuNTYxQzU1Ljg2MSAyMTUuMTIgNTQuNzEwNyAyMTUuMzk5IDUzLjM4IDIxNS4zOTlaTTUzLjM1NiAyMTIuNjE0QzU0LjI5MiAyMTIuNjE0IDU1LjAyMyAyMTIuMjc3IDU1LjU0OSAyMTEuNjA0QzU2LjA5MSAyMTAuOTE0IDU2LjM2MiAyMDkuOTEyIDU2LjM2MiAyMDguNTk3QzU2LjM2MiAyMDcuMjgzIDU2LjA5OTMgMjA2LjI4MSA1NS41NzQgMjA1LjU5MUM1NS4wNDggMjA0LjkwMSA1NC4zMTY3IDIwNC41NTYgNTMuMzggMjA0LjU1NkM1Mi40NDMzIDIwNC41NTYgNTEuNzA0IDIwNC45MDEgNTEuMTYyIDIwNS41OTFDNTAuNjM2NyAyMDYuMjY0IDUwLjM3NCAyMDcuMjY2IDUwLjM3NCAyMDguNTk3QzUwLjM3NCAyMDkuOTEyIDUwLjYzNjcgMjEwLjkxNCA1MS4xNjIgMjExLjYwNEM1MS42ODggMjEyLjI3NyA1Mi40MTkzIDIxMi42MTQgNTMuMzU2IDIxMi42MTRaTTY4LjI1NyAyMTAuNzkxTDY3LjQ2OSAyMDkuNTM0TDY1LjcxOSAyMTEuMzMzVjIxNS4xNzdINjIuMjY5VjE5Ni43OTJINjUuNzE5VjIwNy40MzlMNjYuNzc5IDIwNi4yMDdMNzAuNjQ4IDIwMS45OTNINzQuNzE0TDY5LjkwOCAyMDcuMTY4TDc0Ljk2MSAyMTUuMTc3SDcwLjk5M0w2OC4yNTcgMjEwLjc5MVpNNzYuNzU2IDIwMS45OTNIODAuMjA2VjIxNS4xNzdINzYuNzU2VjIwMS45OTNaTTc4LjQ4MSAyMDAuMjkyQzc3LjkwNTcgMjAwLjI5MiA3Ny40MjkzIDIwMC4xMTEgNzcuMDUyIDE5OS43NUM3Ni42NzQgMTk5LjM4OCA3Ni40ODUgMTk4LjkyOCA3Ni40ODUgMTk4LjM3Qzc2LjQ3ODggMTk4LjExNyA3Ni41MjYxIDE5Ny44NjUgNzYuNjIzOCAxOTcuNjMyQzc2LjcyMTUgMTk3LjM5OCA3Ni44Njc0IDE5Ny4xODcgNzcuMDUyIDE5Ny4wMTRDNzcuNDI5MyAxOTYuNjUzIDc3LjkwNTcgMTk2LjQ3MiA3OC40ODEgMTk2LjQ3MkM3OS4wNTU3IDE5Ni40NzIgNzkuNTMyIDE5Ni42NTMgNzkuOTEgMTk3LjAxNEM4MC4zMDQ3IDE5Ny4zNzYgODAuNTAyIDE5Ny44MjggODAuNTAyIDE5OC4zN0M4MC41MDIgMTk4LjkyOCA4MC4zMDQ3IDE5OS4zODggNzkuOTEgMTk5Ljc1Qzc5LjUzMiAyMDAuMTExIDc5LjA1NTcgMjAwLjI5MiA3OC40ODEgMjAwLjI5MlpNODMuMjU0IDIwMS45OTNIODYuNTU2TDg2LjY1NSAyMDQuNTMxSDg2LjgwM0M4Ny4xNDgzIDIwMy42NDQgODcuNjgyMyAyMDIuOTYyIDg4LjQwNSAyMDIuNDg1Qzg5LjEyNzcgMjAyLjAwOSA4OS45NDkgMjAxLjc3MSA5MC44NjkgMjAxLjc3MUM5Mi4yNDkgMjAxLjc3MSA5My4zMzMzIDIwMi4yMjMgOTQuMTIyIDIwMy4xMjZDOTQuOTEwNyAyMDQuMDEzIDk1LjMwNSAyMDUuMzc2IDk1LjMwNSAyMDcuMjE3VjIxNS4xNzdIOTEuOTA0VjIwNy45ODFDOTEuOTA0IDIwNi44MzEgOTEuNzA3IDIwNS45ODUgOTEuMzEzIDIwNS40NDNDOTAuOTM1IDIwNC44ODQgOTAuMzM1MyAyMDQuNjA1IDg5LjUxNCAyMDQuNjA1Qzg4LjY3NiAyMDQuNjA1IDg3Ljk5NCAyMDQuOTA5IDg3LjQ2OCAyMDUuNTE3Qzg2Ljk0MiAyMDYuMTI1IDg2LjY3OSAyMDYuOTE0IDg2LjY3OSAyMDcuODgzVjIxNS4xNzdIODMuMjU0VjIwMS45OTNaTTEwNC4xODQgMjE5Ljc4NkMxMDIuMzExIDIxOS43ODYgMTAwLjgyNCAyMTkuNDMzIDk5LjcyMyAyMTguNzI2Qzk4LjYzOSAyMTguMDM2IDk4LjAzMTMgMjE3LjA1OSA5Ny45IDIxNS43OTRIMTAxLjUyM0MxMDEuNzY5IDIxNi43NjMgMTAyLjY5NyAyMTcuMjQ4IDEwNC4zMDcgMjE3LjI0OEMxMDUuMjYgMjE3LjI0OCAxMDUuOTUxIDIxNy4wMjYgMTA2LjM3OCAyMTYuNTgyQzEwNi44MDUgMjE2LjEzOSAxMDcuMDE4IDIxNS40NDkgMTA3LjAxOCAyMTQuNTEyTDEwNy4wNDMgMjEyLjM5M0gxMDYuOTJDMTA2LjY0IDIxMy4xMzIgMTA2LjEzMSAyMTMuNzIzIDEwNS4zOTIgMjE0LjE2N0MxMDQuNjY5IDIxNC42MSAxMDMuODMxIDIxNC44MzIgMTAyLjg3OCAyMTQuODMyQzEwMS44NDMgMjE0LjgzMiAxMDAuOTMxIDIxNC41NzcgMTAwLjE0MiAyMTQuMDY4Qzk5LjM3MDcgMjEzLjU0MyA5OC43NzEgMjEyLjc5NSA5OC4zNDMgMjExLjgyNkM5Ny45MTYzIDIxMC44MzkgOTcuNzAzIDIwOS42NzMgOTcuNzAzIDIwOC4zMjZDOTcuNzAzIDIwNi45NjMgOTcuOTE2MyAyMDUuNzg4IDk4LjM0MyAyMDQuODAyQzk4Ljc3MSAyMDMuOCA5OS4zNzA3IDIwMy4wNDQgMTAwLjE0MiAyMDIuNTM1QzEwMC45MTUgMjAyLjAwOSAxMDEuODE4IDIwMS43NDYgMTAyLjg1MyAyMDEuNzQ2QzEwMy44MjMgMjAxLjc0NiAxMDQuNjY5IDIwMS45NzYgMTA1LjM5MiAyMDIuNDM2QzEwNi4xMTUgMjAyLjg4IDEwNi42MjQgMjAzLjQ4IDEwNi45MiAyMDQuMjM1SDEwNy4wNjhMMTA3LjE0MSAyMDEuOTkzSDExMC40NDRWMjE0LjAxOUMxMTAuNDQ0IDIxNi4wODkgMTA5LjkxIDIxNy41NjggMTA4Ljg0MiAyMTguNDU1QzEwNy43NzQgMjE5LjM0MiAxMDYuMjIxIDIxOS43ODYgMTA0LjE4NCAyMTkuNzg2Wk0xMDQuMDYxIDIxMi4wNDhDMTA0Ljk0OCAyMTIuMDQ4IDEwNS42NjIgMjExLjcyNyAxMDYuMjA1IDIxMS4wODZDMTA2Ljc0NyAyMTAuNDQ2IDEwNy4wMTggMjA5LjY0OSAxMDcuMDE4IDIwOC42OTZWMjA3Ljg1OEMxMDcuMDE4IDIwNi45MjEgMTA2Ljc0NyAyMDYuMTMzIDEwNi4yMDUgMjA1LjQ5MkMxMDUuNjc5IDIwNC44NTEgMTA0Ljk4MSAyMDQuNTMxIDEwNC4xMSAyMDQuNTMxQzEwMy4xOSAyMDQuNTMxIDEwMi40NzUgMjA0Ljg2IDEwMS45NjYgMjA1LjUxN0MxMDEuNDU3IDIwNi4xNzQgMTAxLjIwMiAyMDcuMTEgMTAxLjIwMiAyMDguMzI2QzEwMS4yMDIgMjA5LjUwOSAxMDEuNDQ4IDIxMC40MjkgMTAxLjk0MSAyMTEuMDg2QzEwMi40NSAyMTEuNzI3IDEwMy4xNTcgMjEyLjA0OCAxMDQuMDYxIDIxMi4wNDhaTTEyMC4wOTkgMjA0Ljc1M0gxMTguMDUzVjIwMS45OTNIMTIwLjA5OVYyMDAuMTY5QzEyMC4wOTkgMTk5LjA4NCAxMjAuNDI4IDE5OC4yNTUgMTIxLjA4NSAxOTcuNjhDMTIxLjc0MiAxOTcuMDg4IDEyMi42NzggMTk2Ljc5MiAxMjMuODk0IDE5Ni43OTJIMTI2LjMwOVYxOTkuMjMySDEyNC43MzJDMTI0LjMyMSAxOTkuMjMyIDEyNC4wMTcgMTk5LjMyMiAxMjMuODIgMTk5LjUwM0MxMjMuNjIzIDE5OS42ODQgMTIzLjUyNSAxOTkuOTk2IDEyMy41MjUgMjAwLjQ0VjIwMS45OTNIMTI2LjExMlYyMDQuNzUzSDEyMy41MjVWMjE1LjE3N0gxMjAuMDk5VjIwNC43NTNaTTEzMy44NjEgMjE1LjM5OUMxMzIuNTc5IDIxNS4zOTkgMTMxLjQ0NSAyMTUuMTI4IDEzMC40NiAyMTQuNTg2QzEyOS40OTMgMjE0LjAzIDEyOC43MDYgMjEzLjIwOSAxMjguMTkyIDIxMi4yMkMxMjcuNjUgMjExLjIwMSAxMjcuMzc5IDIwOS45OTQgMTI3LjM3OSAyMDguNTk3QzEyNy4zNzkgMjA3LjI1IDEyNy42MzQgMjA2LjA1OSAxMjguMTQzIDIwNS4wMjRDMTI4LjY2OCAyMDMuOTg5IDEyOS40MTYgMjAzLjE5MiAxMzAuMzg2IDIwMi42MzNDMTMxLjM3MSAyMDIuMDU4IDEzMi41MyAyMDEuNzcxIDEzMy44NjEgMjAxLjc3MUMxMzUuMTQyIDIwMS43NzEgMTM2LjI2OCAyMDIuMDUgMTM3LjIzNyAyMDIuNjA5QzEzOC4yMjIgMjAzLjE1IDEzOC45NzggMjAzLjkzOSAxMzkuNTA0IDIwNC45NzVDMTQwLjA0NiAyMDUuOTkzIDE0MC4zMTcgMjA3LjIgMTQwLjMxNyAyMDguNTk3QzE0MC4zMTcgMjA5Ljk0NSAxNDAuMDU0IDIxMS4xMzYgMTM5LjUyOSAyMTIuMTcxQzEzOS4wMzggMjEzLjE2NyAxMzguMjY3IDIxMy45OTcgMTM3LjMxMSAyMTQuNTYxQzEzNi4zNDEgMjE1LjEyIDEzNS4xOTEgMjE1LjM5OSAxMzMuODYxIDIxNS4zOTlaTTEzMy44MzYgMjEyLjYxNEMxMzQuNzczIDIxMi42MTQgMTM1LjUwNCAyMTIuMjc3IDEzNi4wMjkgMjExLjYwNEMxMzYuNTcyIDIxMC45MTQgMTM2Ljg0MyAyMDkuOTEyIDEzNi44NDMgMjA4LjU5N0MxMzYuODQzIDIwNy4yODMgMTM2LjU4IDIwNi4yODEgMTM2LjA1NCAyMDUuNTkxQzEzNS41MjggMjA0LjkwMSAxMzQuNzk3IDIwNC41NTYgMTMzLjg2MSAyMDQuNTU2QzEzMi45MjUgMjA0LjU1NiAxMzIuMTg2IDIwNC45MDEgMTMxLjY0MyAyMDUuNTkxQzEzMS4xMTcgMjA2LjI2NCAxMzAuODU0IDIwNy4yNjYgMTMwLjg1NCAyMDguNTk3QzEzMC44NTQgMjA5LjkxMiAxMzEuMTE3IDIxMC45MTQgMTMxLjY0MyAyMTEuNjA0QzEzMi4xNjggMjEyLjI3NyAxMzIuODk5IDIxMi42MTQgMTMzLjgzNiAyMTIuNjE0Wk0xNDIuNzIzIDIwMS45OTNIMTQ1LjgwNEwxNDUuOTUxIDIwNC4yMzVIMTQ2LjA3NUMxNDYuMzU0IDIwMy40MyAxNDYuNzk4IDIwMi44MyAxNDcuNDA1IDIwMi40MzZDMTQ4LjAzIDIwMi4wMjUgMTQ4Ljc2OSAyMDEuODIgMTQ5LjYyNCAyMDEuODJMMTUwLjE0MSAyMDEuODQ1VjIwNS4wOThIMTQ5LjU3NEMxNDguNDI0IDIwNS4wOTggMTQ3LjU3IDIwNS4zNjkgMTQ3LjAxMSAyMDUuOTExQzE0Ni40NjggMjA2LjQzNyAxNDYuMTgxIDIwNy4yMDkgMTQ2LjE0OSAyMDguMjI4VjIxNS4xNzdIMTQyLjcyM1YyMDEuOTkzWk0xNTEuNjY0IDIxNS4zNzVDMTUxLjA1NiAyMTUuMzc1IDE1MC41NjMgMjE1LjE5NCAxNTAuMTg1IDIxNC44MzJDMTQ5LjgyMyAyMTQuNDU1IDE0OS42NDIgMjEzLjk3IDE0OS42NDMgMjEzLjM3OEMxNDkuNjQzIDIxMi44MDMgMTQ5LjgyNCAyMTIuMzM1IDE1MC4xODUgMjExLjk3NEMxNTAuNTYzIDIxMS41OTYgMTUxLjA1NiAyMTEuNDA3IDE1MS42NjQgMjExLjQwN0MxNTIuMjU1IDIxMS40MDcgMTUyLjczMiAyMTEuNTk2IDE1My4wOTMgMjExLjk3NEMxNTMuNDcxIDIxMi4zMzUgMTUzLjY2IDIxMi44MDMgMTUzLjY2IDIxMy4zNzhDMTUzLjY2IDIxMy45NyAxNTMuNDcxIDIxNC40NTUgMTUzLjA5MyAyMTQuODMyQzE1Mi43MzIgMjE1LjE5NCAxNTIuMjU1IDIxNS4zNzUgMTUxLjY2NCAyMTUuMzc1WiIgZmlsbD0iIzMzNjA3QSIvPgo8ZyBmaWx0ZXI9InVybCgjZmlsdGVyMF9kXzJfMTAzKSI+CjxwYXRoIGQ9Ik01My43MjEgNjkuNDhIMTUuNDQxVjU0LjcyTDUwLjI0MSAwLjQ4MDAwM0g3NC4xMjFWNTMuMjhIODcuNDQxVjY5LjQ4SDc0LjEyMVY4OC4wOEg1My43MjFWNjkuNDhaTTUzLjcyMSA1My4yOFYyMy4wNEwzNS4wMDEgNTMuMjhINTMuNzIxWk0xMjguMzEgODkuMjhDMTE3LjgzIDg5LjI4IDEwOS43OSA4NS4zNiAxMDQuMTkgNzcuNTJDOTguNTkgNjkuNiA5NS43OSA1OC42NCA5NS43OSA0NC42NEM5NS43OSAzMC4zMiA5OC42NyAxOS4zMiAxMDQuNDMgMTEuNjRDMTEwLjE5IDMuODggMTE4LjE1IDAgMTI4LjMxIDBDMTM4Ljc5IDAgMTQ2LjgzIDMuOTIwMDEgMTUyLjQzIDExLjc2QzE1OC4wMyAxOS42IDE2MC44MyAzMC41NiAxNjAuODMgNDQuNjRDMTYwLjgzIDU4Ljk2IDE1Ny45NSA3MCAxNTIuMTkgNzcuNzZDMTQ2LjQzIDg1LjQ0IDEzOC40NyA4OS4yOCAxMjguMzEgODkuMjhaTTEyOC4zMSA3MS42NEMxMzYuMDcgNzEuNjQgMTM5Ljk1IDYyLjY0IDEzOS45NSA0NC42NEMxMzkuOTUgMzUuNTIgMTM4Ljk5IDI4Ljc2IDEzNy4wNyAyNC4zNkMxMzUuMTUgMTkuODggMTMyLjIzIDE3LjY0IDEyOC4zMSAxNy42NEMxMjQuMzkgMTcuNjQgMTIxLjQ3IDE5Ljg4IDExOS41NSAyNC4zNkMxMTcuNjMgMjguNzYgMTE2LjY3IDM1LjUyIDExNi42NyA0NC42NEMxMTYuNjcgNTMuNzYgMTE3LjYzIDYwLjU2IDExOS41NSA2NS4wNEMxMjEuNDcgNjkuNDQgMTI0LjM5IDcxLjY0IDEyOC4zMSA3MS42NFpNMjA4LjE3NCA2OS40OEgxNjkuODk0VjU0LjcyTDIwNC42OTQgMC40ODAwMDNIMjI4LjU3NFY1My4yOEgyNDEuODk0VjY5LjQ4SDIyOC41NzRWODguMDhIMjA4LjE3NFY2OS40OFpNMjA4LjE3NCA1My4yOFYyMy4wNEwxODkuNDU0IDUzLjI4SDIwOC4xNzRaIiBmaWxsPSIjRkRGREZEIi8+CjwvZz4KPHBhdGggZD0iTTMyMi4xMDMgMTM3LjYxNUwzMzkuODA4IDE2My4wNzZINDE0LjUwM0w0NDMuNTA1IDE0MC45ODdMNDM0LjA2MiA4NC4zMzNMMzM1Ljc2MSA4Mi45ODVMMzIyLjEwMyAxMzcuNjE1WiIgZmlsbD0iI0ZFQzE5RiIvPgo8cGF0aCBkPSJNMzAyLjkxOCAxODYuNTg1QzMwMC41OTcgMTgwLjMwNiAyOTYuNTM0IDE3NC4zOCAyOTEuNzAyIDE2OS43NTNDMjg5LjIyNyAxNjcuMzg0IDI4NC43MjkgMTY2LjMxMiAyODQuOTUxIDE2Mi4yNDlDMjg1LjY1MyAxNjAuNTE0IDI4OC45MjQgMTYwLjQxMiAyOTAuNDY2IDE2MC42MzRDMjk5LjA5MiAxNjEuODc2IDMwMy40MjQgMTY2LjQyNyAzMDguNDQ1IDE3My4wMzNDMzA4LjQ0NSAxNzMuMDMzIDMwNy4yODUgMTgzLjY4MiAzMDIuOTE4IDE4Ni41ODVaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjkyLjQzOSAxNjQuOTdDMjkzLjc3NSAxNjQuOTcgMjk0Ljg1OCAxNjQuMzQ0IDI5NC44NTggMTYzLjU3MkMyOTQuODU4IDE2Mi44IDI5My43NzUgMTYyLjE3NCAyOTIuNDM5IDE2Mi4xNzRDMjkxLjEwMyAxNjIuMTc0IDI5MC4wMiAxNjIuOCAyOTAuMDIgMTYzLjU3MkMyOTAuMDIgMTY0LjM0NCAyOTEuMTAzIDE2NC45NyAyOTIuNDM5IDE2NC45N1oiIGZpbGw9IiM1QUE2OTYiLz4KPHBhdGggZD0iTTI5OS4xMjkgMTY4Ljk4NUMzMDAuNTU3IDE2OC45ODUgMzAxLjcxNSAxNjguMjcgMzAxLjcxNSAxNjcuMzg4QzMwMS43MTUgMTY2LjUwNiAzMDAuNTU3IDE2NS43OTEgMjk5LjEyOSAxNjUuNzkxQzI5Ny43MDEgMTY1Ljc5MSAyOTYuNTQzIDE2Ni41MDYgMjk2LjU0MyAxNjcuMzg4QzI5Ni41NDMgMTY4LjI3IDI5Ny43MDEgMTY4Ljk4NSAyOTkuMTI5IDE2OC45ODVaIiBmaWxsPSIjNUFBNjk2Ii8+CjxwYXRoIGQ9Ik0zMDMuMjcxIDE3My41NTJDMzA0LjUyOSAxNzMuNTUyIDMwNS41NDkgMTcyLjg4NCAzMDUuNTQ5IDE3Mi4wNkMzMDUuNTQ5IDE3MS4yMzYgMzA0LjUyOSAxNzAuNTY4IDMwMy4yNzEgMTcwLjU2OEMzMDIuMDEzIDE3MC41NjggMzAwLjk5MyAxNzEuMjM2IDMwMC45OTMgMTcyLjA2QzMwMC45OTMgMTcyLjg4NCAzMDIuMDEzIDE3My41NTIgMzAzLjI3MSAxNzMuNTUyWiIgZmlsbD0iIzVBQTY5NiIvPgo8cGF0aCBkPSJNMzA2LjE2NiAxNzkuMTA1QzMwNy40MjQgMTc5LjEwNSAzMDguNDQ0IDE3OC40MzcgMzA4LjQ0NCAxNzcuNjEzQzMwOC40NDQgMTc2Ljc4OSAzMDcuNDI0IDE3Ni4xMjEgMzA2LjE2NiAxNzYuMTIxQzMwNC45MDggMTc2LjEyMSAzMDMuODg4IDE3Ni43ODkgMzAzLjg4OCAxNzcuNjEzQzMwMy44ODggMTc4LjQzNyAzMDQuOTA4IDE3OS4xMDUgMzA2LjE2NiAxNzkuMTA1WiIgZmlsbD0iIzVBQTY5NiIvPgo8cGF0aCBkPSJNMzgyLjQzMSAyMjcuMTc5SDM4Ni4wNzZDMzg2LjQ2IDIyNy44NDUgMzg2LjAwNSAyMzEuNzIgMzg2LjA3NiAyMzIuNzY3QzM4Ni40MzEgMjM4LjA3NSAzODcuMjk3IDI0My41NzMgMzkyLjgwNSAyNDUuMjU4QzM5NS44NTUgMjQ2LjE5MSAzOTkuMjU4IDI0NS42OTcgNDAyLjE0MiAyNDYuNTg1QzQwMi4zNTcgMjQ2LjcxOSA0MDIuNTE1IDI0Ni45MjcgNDAyLjU4NyAyNDcuMTdDNDAzLjI2NSAyNDkuNDEyIDQwMS41NjEgMjUwLjYyMyAzOTkuNDY2IDI1MC4yNzFDMzkxLjQ4NSAyNDguOTI5IDM4NC4xNzIgMjQyLjcxMiAzODIuNTA3IDIzNC42NDlDMzgyLjIxMSAyMzMuMjEzIDM4MS43NTkgMjI4LjIyMiAzODIuNDMxIDIyNy4xNzlaTTMzOS44MzEgMjM2LjY3M0MzNDAuNzMxIDIzNy4yNDUgMzQyLjAzNSAyMzguMTYgMzQzLjc1IDIzOS4yOTlDMzQ1LjIyIDI0MC4yNzUgMzQ2LjY2MiAyNDEuNzk4IDM0Ny4zNzcgMjQyLjQ4MUMzNDcuMjQ5IDI0Mi41NjIgMzQ2Ljk0MyAyNDIuNzM1IDM0Ni44MDEgMjQyLjc2NEMzNDQuNTczIDI0My4yMjMgMzM1LjI4NCAyNDUuMjY5IDMzNC40MDUgMjQyLjMxOUMzMzMuOTg5IDI0MC45MjYgMzM4LjM1NyAyMzguNzA2IDMzOS44MzEgMjM2LjY3M1pNMzczLjAyNCAyMjcuMDg0QzM3My45NjUgMjI3LjEwMyAzNzYuNjExIDIyNy4xNzcgMzc3LjUxMiAyMjcuMzA5QzM3Ny41MTEgMjMxLjIyNSAzNzcuNDA2IDIzNC44OSAzNzUuNzc4IDIzOC41NjFDMzcyLjk1OSAyNDQuOTIxIDM2Ni4yMzYgMjQ5LjY1MyAzNTkuMzQ2IDI1MC4zNDdDMzU2LjQ0OSAyNTAuNjM5IDM1Ny4wODYgMjQ2Ljk3NyAzNTguMzA4IDI0NS42MDlDMzYwLjI2IDI0Ni40IDM2NC45NDUgMjQ2LjY3NiAzNjYuODYgMjQ1Ljc0QzM3MS40NTkgMjQzLjQzOSAzNzMuMTAzIDIzNy4xMzIgMzczLjg3MiAyMzIuNDY0QzM3NC4wNjcgMjMxLjI3NyAzNzMuNzg3IDIzMC4xMDcgMzczLjAyNCAyMjcuMDg0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTM0NS42NzMgMTAyLjExOEMzNjEuMzc0IDEwNS43MzYgMzYwLjMwOSAxNDMuNTM4IDM0MC45MjYgMTQxLjI1NEMzNDAuNTQyIDE0MS4yMDkgMzM5Ljc5IDE0MC44MDkgMzM5LjQxMyAxNDAuNjM3QzMzNi41MjIgMTM5LjMyIDMzNS4zNSAxMzguMjkyIDMzNS40NzIgMTM0Ljk3QzMzNS43NTUgMTMzLjk3MyAzMzYuMzQ4IDEzMS42ODIgMzM2Ljc1MyAxMzAuODQ4TDMzNi42ODkgMTMwLjY0NEMzMzkuMjI3IDEyNS4zODIgMzQzLjAxNCAxMTQuMDA4IDM0My44NDQgMTA4LjQwNkwzNDQuMDA5IDEwOC4zNzhDMzQ0LjYyOCAxMDcuMjQ1IDM0NS4xMDYgMTAzLjc2OSAzNDUuNjczIDEwMi4xMThaIiBmaWxsPSIjRkVGRUZFIi8+CjxwYXRoIGQ9Ik00MjIuODAzIDExMS40MjNDNDI0Ljc3OSAxMTMuNTU0IDQyNC40MDggMTE1Ljc3OSA0MjUuNDU5IDExNi45NzZDNDI1LjY1NSAxMTguMTg4IDQyNS40NyAxMjUuNzMxIDQyNS4yMjIgMTI2LjgwOUM0MjQuMDc2IDEyOC4zODEgNDI0Ljg1OSAxMjkuNTc5IDQyMy4wMjEgMTMxLjE2NUM0MjAuMTk0IDEyMy4yMSA0MjIuMTQgMTE5LjMwNyA0MjIuODAzIDExMS40MjNaIiBmaWxsPSIjN0UyQTI2Ii8+CjxwYXRoIGQ9Ik00MjMuODkyIDEzOC44MDZDNDIzLjY2OSAxMzkuMjA2IDQyMi41IDEzOS43MzggNDIyLjA2NCAxMzkuOTU1QzQwOS40OCAxNDYuMjI3IDQwMi41NjUgMTMwLjIzNiA0MDMuMjk5IDEyMC4xNzJDNDAzLjkgMTExLjkzMSA0MDcuODQ4IDEwMS40MDQgNDE3LjcxOCAxMDEuOTM1QzQyNC4zNDcgMTAyLjI5MSA0MjIuNTg1IDEwNS40NjMgNDIyLjg3MiAxMTAuNjM0TDQyMi43NDkgMTExLjIzM0M0MjAuNzkgMTA5LjQ0NyA0MTkuMTkxIDEwOC40MDUgNDE2LjQ0NCAxMDguNDRDNDEwLjcyIDEwOC41MTQgNDA3LjA5MSAxMTcuNDUyIDQwNy42NDQgMTIyLjM1NEM0MDguNDgzIDEyOS43OTUgNDExLjgzOSAxMzYuNDI5IDQyMC40MzkgMTMzLjk4M0M0MjAuOTkyIDEzMy4wODQgNDIxLjEzMiAxMzIuNzk4IDQyMS45NSAxMzIuMTU2QzQyMi4yMzIgMTMyLjAzIDQyMi43OTIgMTMxLjQxNiA0MjMuMDIxIDEzMS4xNjVDNDI0Ljg2IDEyOS41NzkgNDI0LjA3NiAxMjguMzgxIDQyNS4yMjIgMTI2LjgwOUM0MjUuNzgxIDEyOC42NyA0MjYuNzEgMTMxLjk2NyA0MjcuNTUzIDEzMy42MzFDNDI1LjgwOSAxMzUuMjE4IDQyNi4xMjEgMTM3LjY3MSA0MjMuOTI1IDEzOC40NTFMNDIzLjg5MiAxMzguODA2WiIgZmlsbD0iI0ZFRkVGRSIvPgo8cGF0aCBkPSJNNDIzLjAyMSAxMzEuMTY1QzQyNC44NTkgMTI5LjU3OSA0MjQuMDc2IDEyOC4zODEgNDI1LjIyMSAxMjYuODA5QzQyNS43ODEgMTI4LjY3IDQyNi43MDkgMTMxLjk2NyA0MjcuNTUzIDEzMy42MzFDNDI1LjgwOSAxMzUuMjE4IDQyNi4xMiAxMzcuNjcxIDQyMy45MjUgMTM4LjQ1MUM0MjMuNzMyIDEzNi44NjUgNDIzLjcyOCAxMzMuODU0IDQyMy4zODIgMTMyLjUyMUw0MjIuNTA1IDEzMi42ODlMNDIxLjk0OSAxMzIuMTU2QzQyMi4yMzEgMTMyLjAzIDQyMi43OTEgMTMxLjQxNiA0MjMuMDIxIDEzMS4xNjVaIiBmaWxsPSIjOTk5OTk5Ii8+CjxwYXRoIGQ9Ik0zODYuMzA1IDE1MC43NThDMzg2LjU0NCAxNTAuNzU4IDM4Ni43NzMgMTUwLjg1MyAzODYuOTQxIDE1MS4wMjJDMzg3LjExIDE1MS4xOSAzODcuMjA1IDE1MS40MTkgMzg3LjIwNSAxNTEuNjU4QzM4Ny4yMDUgMTUxLjg5NyAzODcuMTEgMTUyLjEyNiAzODYuOTQxIDE1Mi4yOTRDMzg2Ljc3MyAxNTIuNDYzIDM4Ni41NDQgMTUyLjU1OCAzODYuMzA1IDE1Mi41NThIMzcxLjgwNUMzNzEuNTY2IDE1Mi41NTggMzcxLjMzNyAxNTIuNDYzIDM3MS4xNjkgMTUyLjI5NEMzNzEgMTUyLjEyNiAzNzAuOTA1IDE1MS44OTcgMzcwLjkwNSAxNTEuNjU4QzM3MC45MDUgMTUxLjQxOSAzNzEgMTUxLjE5IDM3MS4xNjkgMTUxLjAyMkMzNzEuMzM3IDE1MC44NTMgMzcxLjU2NiAxNTAuNzU4IDM3MS44MDUgMTUwLjc1OEgzODYuMzA1WiIgZmlsbD0iI0FDNUM1MSIvPgo8cGF0aCBkPSJNMzg3LjcwNyAxNjAuNzUzQzM5MS4wMTUgMTU4Ljg2IDQwNC45NDggMTUxLjI2IDQwOC4xMyAxNTQuMTQxTDM5MS44MDUgMTk2LjI1OEMzOTEuMzk4IDIwMS4wNTIgMzg3LjUyOSAyMjYuMjY5IDM4Ni44MTEgMjI3LjEyQzM4NC44MDEgMjI3LjQ0NyAzNzguOTI3IDIyNy4zNTkgMzc3LjUxMiAyMjcuMzA5QzM3Ni42MTEgMjI3LjE3NyAzNzQuODY3IDIyNy4xNCAzNzMuOTI2IDIyNy4xMkMzNzMuOTI2IDIyNi4wNjQgMzczLjg5NiAyMjQuOTMyIDM3My44MjcgMjI0LjIyN0MzNzMuMTUyIDIxNy4zMzkgMzcxLjc4IDIxMC41OTQgMzcxLjA0IDIwMy43MTNMMzM5LjUxNSAxNTQuMTg5QzM0MC45NjMgMTUyLjc2OSAzNDUuMzYzIDE1NC4wMjEgMzQ3LjQwMiAxNTQuMjU3QzM1NS43MjMgMTU1LjIyIDM2My42NzIgMTU3Ljc2NyAzNzEuNDUxIDE2MC43OTNDMzcyLjE4MyAxNjAuMzgyIDM4NS42NjMgMTYwLjc0MyAzODcuNDgzIDE2MC42NkMzODcuNTA4IDE2MC42NTkgMzg3LjY4MiAxNjAuNzQzIDM4Ny43MDcgMTYwLjc1M1oiIGZpbGw9IiNFRUQ3QUEiLz4KPHBhdGggZD0iTTM3MS40NTEgMTYwLjc5M0MzNzIuMTgzIDE2MC4zODIgMzg1LjY2MyAxNjAuNzQzIDM4Ny40ODMgMTYwLjY2QzM4Ny41MDggMTYwLjY1OSAzODcuNjgzIDE2MC43NDMgMzg3LjcwNyAxNjAuNzU0QzM4Ny4xNzIgMTYxLjIyOCAzODUuNjQ2IDE2Mi4xMDggMzg0Ljg3NiAxNjIuNzA0QzM4My4zMjcgMTYzLjkwMyAzODIuMDggMTY1LjEwNyAzODAuNTkzIDE2Ni4zNDhDMzc2LjU2IDE2My4zNDYgMzc1LjkxOCAxNjIuOTExIDM3MS40NTEgMTYwLjc5M1oiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0zNzIuNDU5IDE3Ni4yMjdDMzc3Ljc4NCAxOTEuMTUxIDM3MC43ODEgMTk5LjcwMSAzNzIuNTQyIDIxMS45MDFDMzcwLjg4NSAyMDguMjk4IDM2OS45ODEgMjAzLjQ2OSAzNjkuMjk4IDIwMC4xMDNDMzY3LjY0MiAxOTEuOTQ0IDM3MS42NTEgMTg0LjQxOCAzNzIuNDU5IDE3Ni4yMjdaIiBmaWxsPSIjOTk3NjY1Ii8+CjxwYXRoIGQ9Ik0zNzguODA1IDE0Mi4yNThDMzgwLjQ2MiAxNDIuMjU4IDM4MS44MDUgMTQwLjY5MSAzODEuODA1IDEzOC43NThDMzgxLjgwNSAxMzYuODI1IDM4MC40NjIgMTM1LjI1OCAzNzguODA1IDEzNS4yNThDMzc3LjE0OCAxMzUuMjU4IDM3NS44MDUgMTM2LjgyNSAzNzUuODA1IDEzOC43NThDMzc1LjgwNSAxNDAuNjkxIDM3Ny4xNDggMTQyLjI1OCAzNzguODA1IDE0Mi4yNThaIiBmaWxsPSIjQUM1QzUxIi8+CjxwYXRoIGQ9Ik00MTYuODA1IDE0MS4yNThDNDI0LjUzNyAxNDEuMjU4IDQzMC44MDUgMTMyLjUyOCA0MzAuODA1IDEyMS43NThDNDMwLjgwNSAxMTAuOTg4IDQyNC41MzcgMTAyLjI1OCA0MTYuODA1IDEwMi4yNThDNDA5LjA3MyAxMDIuMjU4IDQwMi44MDUgMTEwLjk4OCA0MDIuODA1IDEyMS43NThDNDAyLjgwNSAxMzIuNTI4IDQwOS4wNzMgMTQxLjI1OCA0MTYuODA1IDE0MS4yNThaIiBmaWxsPSIjRkVGRUZFIi8+CjxwYXRoIGQ9Ik0zNDMuODA1IDE0MS4yNThDMzUxLjUzNyAxNDEuMjU4IDM1Ny44MDUgMTMyLjUyOCAzNTcuODA1IDEyMS43NThDMzU3LjgwNSAxMTAuOTg4IDM1MS41MzcgMTAyLjI1OCAzNDMuODA1IDEwMi4yNThDMzM2LjA3MyAxMDIuMjU4IDMyOS44MDUgMTEwLjk4OCAzMjkuODA1IDEyMS43NThDMzI5LjgwNSAxMzIuNTI4IDMzNi4wNzMgMTQxLjI1OCAzNDMuODA1IDE0MS4yNThaIiBmaWxsPSIjRkVGRUZFIi8+CjxwYXRoIGQ9Ik00MTYuODA1IDEzNy4yNThDNDIyLjMyOCAxMzcuMjU4IDQyNi44MDUgMTMxLjQzOCA0MjYuODA1IDEyNC4yNThDNDI2LjgwNSAxMTcuMDc4IDQyMi4zMjggMTExLjI1OCA0MTYuODA1IDExMS4yNThDNDExLjI4MiAxMTEuMjU4IDQwNi44MDUgMTE3LjA3OCA0MDYuODA1IDEyNC4yNThDNDA2LjgwNSAxMzEuNDM4IDQxMS4yODIgMTM3LjI1OCA0MTYuODA1IDEzNy4yNThaIiBmaWxsPSIjQUM1QzUxIi8+CjxwYXRoIGQ9Ik0zNDMuODA1IDEzNy4yNThDMzQ5LjMyOCAxMzcuMjU4IDM1My44MDUgMTMxLjQzOCAzNTMuODA1IDEyNC4yNThDMzUzLjgwNSAxMTcuMDc4IDM0OS4zMjggMTExLjI1OCAzNDMuODA1IDExMS4yNThDMzM4LjI4MiAxMTEuMjU4IDMzMy44MDUgMTE3LjA3OCAzMzMuODA1IDEyNC4yNThDMzMzLjgwNSAxMzEuNDM4IDMzOC4yODIgMTM3LjI1OCAzNDMuODA1IDEzNy4yNThaIiBmaWxsPSIjQUM1QzUxIi8+CjxwYXRoIGQ9Ik0zNzEuMjU1IDE3OS4zNzRMMzcwLjU5MyAxNzYuNDkxQzM3NC4yMTYgMTcyLjAxIDM3NC4yODIgMTcxLjk0MSAzODAuNTc5IDE2Ni4zNDlDMzc2LjY2MSAxNzAuMTkyIDM3Mi4wODggMTc2LjIwOCAzNzEuMjU1IDE3OS4zNzRaIiBmaWxsPSIjOTk3NjY1Ii8+CjxwYXRoIGQ9Ik0zNDkuOTIxIDkwLjMwNkgzMjIuMTAzVjE0NS40MjFMMzM4LjQ4MiAxNTYuNzc0QzMzNy4yMTEgMTU1LjI0MyAzMzQuNjM0IDE0OC44MTggMzM0LjQ5NiAxMzUuMzY5QzMzNC4zNTggMTIxLjkyIDM0NC43MjEgOTkuNzIzIDM0OS45MjEgOTAuMzA2Wk00MjAuOTI1IDg5LjU2OEw0MzQuMjA1IDg5LjAxOFYxNDQuMTM2TDQxMC43NzUgMTUzLjM1NEM0MTcuMiAxNDUuNjI2IDQyNC4yNzcgMTQ0Ljc4NyA0MjQuMjc3IDEzOC4wODNDNDI0LjI3NyAxMjQuNjMzIDQyNS42NzQgMTA2Ljk4MiA0MjAuOTI1IDg5LjU2OFoiIGZpbGw9IiM1MjM4MkMiIGZpbGwtb3BhY2l0eT0iMC41Ii8+CjxwYXRoIGQ9Ik0zMzcuMTQyIDkwLjM0N0wzMzYuNjYzIDkwLjE0MkMzMzYuMjc4IDg5LjA5OSAzNDAuNjExIDc5LjkwOSAzNDEuNTQ4IDc4LjIzMUMzNDYuNzI4IDY4Ljk1NSAzNTUuMDA4IDU5LjM3MyAzNjYuMDk3IDU1Ljk1NEMzNjguMjI4IDU1LjI3NzUgMzcwLjQyOSA1NC44NDM3IDM3Mi42NTcgNTQuNjYxQzM3OC4wNDUgNTQuMjU0IDM4NC4wMiA1NS4xNzYgMzg5LjM4OCA1NS43MDhDMzk1LjkxOCA1Ni4zNTUgNDAyLjYyNSA1OC4zMzEgNDA3LjcxOSA2Mi4yMzNDNDEyLjU2MiA2NS45NDIgNDE2LjMwNyA3MS4xOCA0MjAuMDc5IDc1Ljc5QzQyMy4yMDYgNzkuNjExIDQzMS4wNDQgODkuMTc0IDQzMC44IDkzLjgwN0M0MTkuMDU1IDg3Ljk0NSAzODcuMjI3IDkyLjIwNyAzNzguMDg2IDkyLjMxNEMzNjcuNjI2IDkyLjQzNyAzNTcuNDYxIDkwLjUzNCAzNDYuOTYgOTAuNDYxQzM0NS4xMzcgOTAuMTI3IDMzOS4yNzMgOTAuMzEzIDMzNy4xNDIgOTAuMzQ3WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTM0OS41NTkgMTY4LjExQzM0OC42OTYgMTY3LjkzNCAzNDcuOTEyIDE2Ny43NzUgMzQ3LjIzNCAxNjcuNjI3QzM0Ny4zNTIgMTY3Ljc4IDM0Ny40NzMgMTY3LjkzOSAzNDcuNTk2IDE2OC4xMDNDMzQ4LjAwOCAxNjguNjQ3IDM0OC40NDcgMTY5LjIyNiAzNDguODY4IDE2OS43MDFDMzUxLjY3NCAxNzAuNTcgMzUzLjc5OSAxNzAuOTYgMzU1LjkwMiAxNzEuMzQ2QzM1OS44MzUgMTcyLjA2OCAzNjIuMzY0IDE3MS45MjQgMzcwLjQ1IDE3NS43MjhDMzY1Ljg5MSAxNzAuODUzIDM1Ni4xIDE2OS40NDEgMzQ5LjU1OSAxNjguMTFaIiBmaWxsPSIjMzEyMTFBIi8+CjxwYXRoIGQ9Ik00MDcuNDY0IDE3MC4wMzlDNDA2Ljk3OCAxNjguODEgNDA3LjExMSAxNjguNDMzIDQwNy40MzMgMTY3LjQyMUM0MDYuNzk0IDE2Ny41NDggNDA2LjEyNCAxNjcuNjY3IDQwNS40MjkgMTY3Ljc4N0w0MDQuOTQ0IDE2Ny44N0w0MDQuOTQzIDE2Ny44NzFDNDAwLjA4MyAxNjguNzA2IDM5NC4wNjkgMTY5Ljc0IDM4OC41NDMgMTc0LjM2TDM4OS45MjkgMTczLjgxNUMzOTcuMjU0IDE3MC45MzIgNDAxLjk5NCAxNjkuMDY2IDQwNy40NjQgMTcwLjAzOVoiIGZpbGw9IiMzMTIxMUEiLz4KPHBhdGggZD0iTTM4Ny4wNTMgMzIuNzI3QzM4My44NyAzMi40NTY5IDM4MC42NzYgMzIuMzUyOCAzNzcuNDgyIDMyLjQxNUMzNzIuNDk1IDMyLjUwMyAzNjcuNDgyIDMzLjAzNiAzNjIuNDYyIDMzLjU2OUMzNTcuOTk5IDM0LjA0MyAzNTMuNTMxIDM0LjUxNyAzNDkuMDcgMzQuNjgxQzM0NC43NTkgMzUuMjQ5IDM0Mi42NTggMzQuMDEyIDMzOS45MjUgMzIuNDA0QzMzOS4wMjQgMzEuODczIDMzOC4wNTMgMzEuMzAyIDMzNi45MTIgMzAuNzQyQzMzNi4xMTIgMzAuMzQ4NyAzMzUuMzEgMjkuOTUyIDMzNC41MDUgMjkuNTUyQzMyNi40MzcgMjUuNTQ5IDMxOC4xMzEgMjEuNDI4IDMwOC45NzcgMjEuMTgzQzMwMS44NTMgMjAuOTkzIDMwMC42NyAyNC41NjQgMzAwLjAwNiAzMC45MjFDMjk5LjU4NiAzNC45NDIgMjk5Ljk1NSAzOSAzMDAuMzIyIDQzLjA0NkMzMDAuNTE2IDQ1LjE3NiAzMDAuNzA5IDQ3LjMwMyAzMDAuNzg3IDQ5LjQxOUwzMDAuNzcyIDUxLjA5MkMzMDAuNjU5IDU4Ljk5OCAyOTkuODcyIDYwLjMwOCAyOTUuNDEyIDY3LjU0MUMyOTIuNjkzIDcxLjk1IDI5MC40MTEgNzkuOTk0IDI4OS4wNTIgODQuOTgyQzI4Ny4wOSA5My40OSAyODYuMjMzIDEwMi41MTYgMjg2LjUwNyAxMTEuMjQ5QzI4Ni41NTcgMTEyLjg0NyAyODYuNzk3IDExNC40NDUgMjg3LjAzOCAxMTYuMDQ2QzI4Ny40MTYgMTE4LjU1MyAyODcuNzk0IDEyMS4wNjUgMjg3LjQ0MyAxMjMuNTk2QzI4Ny4xODUgMTI2LjI2NyAyODYuMjA2IDEyOC45MDkgMjg1LjIzNyAxMzEuNTJDMjgzLjk0NSAxMzUuMDA0IDI4Mi42NzIgMTM4LjQzNiAyODMuMTU2IDE0MS44MTlDMjgzLjM5OCAxNDMuNTEgMjg1LjQ0MSAxNDYuMTgzIDI4Ni43MjggMTQ3LjQwM0MyOTQuNTA1IDE1NC43NzEgMzA1LjYzNyAxNTcuNDk1IDMxNi4wMTcgMTYwLjAzNEMzMTcuODMgMTYwLjQ3OCAzMTkuNjIgMTYwLjkxNSAzMjEuMzY1IDE2MS4zNzJDMzIzLjg4IDE2Mi4wMjkgMzI2LjMzOCAxNjIuNjY0IDMyOC43ODUgMTYzLjI5NkwzMjguNzg4IDE2My4yOTdIMzI4Ljc5QzMzMS44NiAxNjQuMDkxIDMzNC45MTQgMTY0Ljg4IDMzOC4wNDIgMTY1LjcwM0MzMzkuMzY3IDE2Ni4wNTEgMzQwLjc0IDE2Ni4yODUgMzQyLjEyIDE2Ni41MTlDMzQzLjg0MSAxNjYuODEyIDM0NS41NzIgMTY3LjEwNiAzNDcuMjM0IDE2Ny42MjdDMzQ3LjkxMiAxNjcuNzc1IDM0OC42OTYgMTY3LjkzNCAzNDkuNTU5IDE2OC4xMUMzNTYuMSAxNjkuNDQxIDM2NS44OTEgMTcwLjg1MyAzNzAuNDUgMTc1LjcyOEMzNjIuMzY0IDE3MS45MjQgMzU5LjgzNSAxNzIuMDY4IDM1NS45MDIgMTcxLjM0NkMzNTMuNzk5IDE3MC45NiAzNTEuNjc0IDE3MC41NyAzNDguODY4IDE2OS43MDFDMzQ4Ljc2IDE3NC40NDIgMzQ3LjA5MSAxNzguNDMyIDM0My44MDEgMTgxLjkwOUMzNDEuMDc4IDE4NC43ODUgMzMzLjk0NSAxODUuOTEgMzMwLjE4IDE4NS43NjZDMzIyLjI5IDE4NS40NjMgMzE3LjU4OCAxODIuODA1IDMxMi41NzggMTc2LjkyOUMzMTEuOTU3IDE3Ni4yMDIgMzEwLjQyIDE3NC43NTggMzA4LjU1OSAxNzMuMDM0QzMwNi40MjEgMTc1Ljc1NyAzMDQuOTIxIDE3OC43NTggMzA0LjQyMSAxODEuNzU3QzMwMy43MyAxODUuODk5IDMwMy4wNTYgMTg2LjU2NCAzMDMuMDMzIDE4Ni41ODVDMzAzLjYwOCAxODkuMjkzIDMwMy41ODYgMTkyLjY1NSAzMDMuNTYzIDE5Ni4wODlDMzAzLjUyNiAyMDEuNjI4IDMwMy40ODggMjA3LjM1NiAzMDUuOTU1IDIxMC44MzJDMzEzLjI0MSAyMTQuODIgMzIyLjU5OCAyMTIuOTUxIDMyOS43NzQgMjA5LjczM0MzMjkuOTYgMjA5LjY0OSAzMzAuMjQzIDIwOS41MTMgMzMwLjYwMiAyMDkuMzRDMzMzLjY2NCAyMDcuODYzIDM0Mi4yMjkgMjAzLjczMyAzNDIuNzMyIDIwNy4zMkMzNDMuMjE4IDIxMC43ODkgMzQzLjA1MiAyMTUuMDAyIDM0Mi44OTggMjE4Ljg5NEMzNDIuODQ3IDIyMC4xODIgMzQyLjc5NyAyMjEuNDM1IDM0Mi43NzMgMjIyLjYxNEMzNDIuNzggMjIyLjg5NCAzNDIuNzkxIDIyMy4yMjUgMzQyLjgwMyAyMjMuNTlDMzQyLjg3OCAyMjUuODE5IDM0Mi45OTYgMjI5LjM0MyAzNDIuMzQzIDIzMC43MDlDMzQxLjk3MiAyMzEuNDg1IDM0MS42MzYgMjMyLjExMiAzNDEuMzI1IDIzMi42OTNDMzQwLjYyIDIzNC4wMTEgMzQwLjA0NCAyMzUuMDg2IDMzOS40ODUgMjM3LjA5M0MzMzkuODY4IDIzNy4zMzYgMzQwLjE4OSAyMzcuNzcyIDM0MC41NjMgMjM4LjI4QzM0MS4wNjkgMjM4Ljk2NiAzNDEuNjcyIDIzOS43ODUgMzQyLjY1OCAyNDAuNDRMMzQzLjA1MiAyNDAuNzA0TDM0My4wNTcgMjQwLjcwN0wzNDMuMDU5IDI0MC43MDlDMzQ0LjIxMiAyNDEuNDg2IDM0NC43MiAyNDEuODI5IDM0Ny40OTIgMjQyLjQ4MUMzNTIuNDE5IDI0My4yNTggMzU0LjQyIDI0My43NTggMzU4LjQyMyAyNDUuNjFDMzYwLjM3NCAyNDYuNDAxIDM2NS4wNiAyNDYuNjc2IDM2Ni45NzQgMjQ1Ljc0QzM3MS41NzMgMjQzLjQzOSAzNzMuMjE4IDIzNy4xMzIgMzczLjk4NiAyMzIuNDY0QzM3NC4yOTQgMjMwLjM4IDM3NC4yNzcgMjI1Ljk0NSAzNzQuMjMgMjIzLjk4OEMzNzMuODc3IDIyMC4zNzkgMzczLjMzMiAyMTYuODEgMzcyLjc4NyAyMTMuMjM5QzM3Mi4yOTIgMjA5Ljk5NSAzNzEuNzk2IDIwNi43NSAzNzEuNDQ0IDIwMy40NzRDMzcwLjkxNSAxOTguNTUzIDM3MS41MTIgMTk1LjM1IDM3Mi4xNjIgMTkxLjg2NkMzNzIuNjA0IDE4OS40OTYgMzczLjA3IDE4Ni45OTYgMzczLjIyMyAxODMuNzM3QzM3My4yMDEgMTgxLjk1MyAzNzMuMTY2IDE3OS4xODMgMzcyLjg0NSAxNzcuNDYxQzM3Mi42NiAxNzYuNDY4IDM3Mi40NSAxNzUuNzk5IDM3Mi4yMjggMTc1LjA5M0MzNzIuMDYyIDE3NC41ODEgMzcxLjkxMiAxNzQuMDY1IDM3MS43NzcgMTczLjU0NEMzNzAuODA2IDE2OC45MTcgMzY0LjQ5IDE2Ni4yODQgMzU5Ljg4OCAxNjQuMzY1QzM1OS4xODggMTY0LjA3NyAzNTguNDkxIDE2My43OCAzNTcuNzk4IDE2My40NzVDMzUxLjM1OCAxNjAuNjAyIDM0NS43OTMgMTU3Ljg5MyAzMzkuOTIgMTUzLjk1MUMzMzguOTcyIDE1My4zOTYgMzM3LjM2NCAxNTIuNDE1IDMzNi42MzQgMTUxLjYwMUMzMzQuNjU5IDE0OS44NTEgMzMyLjAzIDE0Ny41MDkgMzMxLjI5NCAxNDYuMjg2QzMyNy45NzkgMTQwLjc3NiAzMjguNTkxIDEzMS41MTIgMzMwLjM2MyAxMjUuNTM0TDMzMC44MDcgMTI0LjExN0MzMzIuMzY2IDExOS4yMDggMzM0LjE1OCAxMTQuMTk3IDMzNS45MjggMTA5LjI0NUMzMzYuMzk5IDEwNy45MjggMzM2Ljg2NiAxMDYuNjE4IDMzNy4zMyAxMDUuMzE0TDMzOC4yNjQgMTAyLjY2MkMzMzkuMTI1IDk5Ljc3NyAzNDAuMjE0IDk2LjI1MSAzNDEuNDEgOTMuMjA2QzM0MS41OTQgOTIuNzM2IDM0MS43ODEgOTIuMjc5NyAzNDEuOTcgOTEuODM3TDM0Mi4yNTQgOTEuMTg3TDM0Mi4zOTYgOTAuODY4QzM0Mi41MyA5MC41NjUgMzQyLjUzNyA5MC41NDggMzQyLjkzMiA4OS43NTdDMzQzLjI5MSA4OS4wNDEgMzQ0LjEyMyA4Ni44MjMgMzQ0Ljk4NyA4NC41MjNDMzQ1LjkzMyA4Mi4wMDUgMzQ2LjkxNiA3OS4zODcgMzQ3LjM1NSA3OC41MjdDMzUyLjAwOSA2OS40MjcgMzU5LjQ0NiA2MC4wMjcgMzY5LjQwOCA1Ni42NzNDMzcxLjMxMyA1Ni4wMTE3IDM3My4yOTIgNTUuNTg2MiAzNzUuMzAxIDU1LjQwNkMzNzkuMTU4IDU1LjA4NyAzODMuMzUgNTUuNTk3IDM4Ny4zMzUgNTYuMDgxQzM4OC4zNDkgNTYuMjA0IDM4OS4zNTEgNTYuMzI2IDM5MC4zMyA1Ni40MzJDMzk2LjE5NSA1Ny4wNjcgNDAyLjIyMSA1OS4wMDUgNDA2Ljc5NyA2Mi44MzJDNDEwLjM0IDY1Ljc5NiA0MTMuMjI5IDY5Ljc1NSA0MTYuMDEgNzMuNTY1QzQxNi42NDQgNzQuNDMzIDQxNy4yNzEgNzUuMjkzIDQxNy45IDc2LjEzMkw0MTcuOTI1IDc2LjE2Nkw0MTcuOTI2IDc2LjE2N0M0MTguMTYgNzYuNDc5IDQxOC40MjUgNzYuODMgNDE4LjcyIDc3LjIyQzQyMS45OSA4MS41MzcgNDI4LjU2NCA5MC4yMiA0MjguMzYzIDk0LjM3OEM0MjguMzYzIDk3LjA0IDQyNy41MTQgMTA2LjQwMyA0MjYuNjI0IDExMC4wMTVDNDI2LjU1NCAxMTAuNjg2IDQyNi40NzUgMTExLjM1NSA0MjYuMzg2IDExMi4wMjRDNDI0LjY1OCAxMjIuMDk1IDQyNy4wMjQgMTMyLjU5OSA0MjcuNTQ3IDEzMy42M0M0MjguMzI4IDEzNS45OTcgNDI5LjI1IDEzOS4wOTkgNDI5LjQ1MyAxNDEuNTcyQzQyOC4yMDEgMTQzLjkxMiA0MjUuNDAyIDE0Ni4wNTggNDIyLjk4NiAxNDcuMDAzQzQyMi4xIDE0Ny4zNSA0MjAuODk0IDE0OC4wNDIgNDE5LjU4NSAxNDguNzkzQzQxNy4wNjUgMTUwLjIzOSA0MTQuMTY0IDE1MS45MDQgNDEyLjQzOCAxNTEuNzRMNDEyLjE5MyAxNTEuNzAyQzQxMC45MDUgMTUyLjYyMiA0MDkuNzUyIDE1My4yNTIgNDA4LjQwMSAxNTMuOTg5TDQwOC4xMjUgMTU0LjE0TDQwOC4xMTkgMTU0LjEzNkw0MDguMTE0IDE1NC4xMzFDNDAxLjY2OSAxNTcuNjU5IDM5My41NTUgMTYyLjY3MyAzODkuNjkzIDE2OC45MUMzODguNjM1IDE3MC42MTggMzg3LjkyOSAxNzIuNjA4IDM4Ny4zNiAxNzQuNTI2QzM4Ni4zMDQgMTc4LjA4NCAzODUuNzEgMTgxLjY5MSAzODUuMzk2IDE4NS4zODNDMzg0Ljk4OSAxOTAuMTc4IDM4My42OCAyMjUuMzkxIDM4NC4xNzQgMjMyLjc0M0MzODQuNTMgMjM4LjA1IDM4Ni45MyAyNDQuMDI3IDM5Mi40MzcgMjQ1LjcxMkMzOTQuNjcyIDI0Ni4xMzggMzk5LjgyIDI0Ni43NjYgNDAyLjUzMSAyNDUuODc0QzQwNC42OTggMjQ1LjMzMyA0MDUuODE0IDI0NC44NzIgNDA3LjEwOCAyNDIuOTcyQzQwNy4zMjIgMjM5Ljg3MyA0MDYuNDI2IDIzNy4wNDYgNDA1LjUyNCAyMzQuMjAzQzQwNC45NzMgMjMyLjQ2NCA0MDQuNDIgMjMwLjcyIDQwNC4xMTggMjI4LjkwNEM0MDMuNzYzIDIyNi43NjkgNDAzLjM0OCAyMjQuNTkgNDAyLjkzIDIyMi4zODhDNDAxLjc4NyAyMTYuMzc5IDQwMC42MTMgMjEwLjIwNCA0MDAuNTIgMjA0LjMxN1YxOTQuNzQ2QzQwMC41MiAxOTQuNzQ2IDQwNS4wNzYgMTk4LjQ2NSA0MDguMjI2IDIwMC41OEM0MTAuOTAzIDIwMi4zNzcgNDE0LjkzNyAyMDQuMDY1IDQxOC43MDMgMjA1LjY0MUw0MTkuMDA0IDIwNS43NjdDNDI4LjUyMSAyMDkuNzUgNDM5LjA2MyAyMTQuMTYyIDQ0Ny41MTQgMjEyLjY3OUM0NDcuMzU1IDIxMi42MzEgNDQ3LjE5NyAyMTIuNTggNDQ3LjAzOSAyMTIuNTI4QzQ0NS4yODcgMjExLjc3MiA0NDEuOTk0IDIwNy44NTIgNDQyLjgzOCAxOTguMjE5TDQ0Mi45MzYgMTk3LjMzQzQ0My4wMjEgMTk2LjUxNCA0NDMuMDk2IDE5NS42NDQgNDQzLjE3MyAxOTQuNzQ2QzQ0My41MyAxOTAuNjE1IDQ0My45NzEgMTg1Ljc4MiA0NDUuNTU2IDE4My4wMDhDNDQ0LjU0NyAxODMuMjU2IDQ0My44MDMgMTgzLjQ0MyA0NDIuOTU2IDE4My42NDlDNDQyLjcyMiAxODMuNzA2IDQ0Mi41MDMgMTgzLjc1OSA0NDIuMzExIDE4My44MDRDNDM1LjQyNSAxODUuNDQxIDQyNi40MiAxODQuNzU4IDQyMi40MDUgMTgzLjA2OEM0MTYuMDU0IDE3OS4zNzggNDExLjQwNSAxNzYuNTQ0IDQwNy40NjQgMTcwLjAzOUM0MDEuOTk0IDE2OS4wNjYgMzk3LjI1NCAxNzAuOTMyIDM4OS45MjkgMTczLjgxNUwzODguNTQzIDE3NC4zNkMzOTQuMDY5IDE2OS43NCA0MDAuMDgzIDE2OC43MDYgNDA0Ljk0MyAxNjcuODcxTDQwNC45NDQgMTY3Ljg3TDQwNS40MjkgMTY3Ljc4N0M0MDYuMTI0IDE2Ny42NjcgNDA2Ljc5NCAxNjcuNTQ4IDQwNy40MzMgMTY3LjQyMUM0MDkuNDc4IDE2Ny4wMTUgNDExLjY1OSAxNjYuNDY0IDQxNC42MzUgMTY2LjEwNkM0MTcuMjA5IDE2NS43OTYgNDIwLjE3MyAxNjUuNDM5IDQyMy40MiAxNjQuNzU3QzQzMS4wMTEgMTYzLjE2NCA0NDguMDk5IDE1OS41NDEgNDU0LjAxOSAxNTYuNzQ5QzQ1OC4wNDggMTU0LjgwOSA0NjMuMDk2IDE1MS40NjYgNDY0LjI0MyAxNDYuOTEzQzQ2NC40MTggMTQ2LjIxNiA0NjQuNTM5IDE0NS40MzUgNDY0LjY2MSAxNDQuNjQ3QzQ2NC44MzEgMTQzLjU1IDQ2NS4wMDQgMTQyLjQzOCA0NjUuMzI4IDE0MS41MTdMNDY1LjM0OCAxNDEuMzQ1TDQ2NS4zNDkgMTQxLjMzOUM0NjYuMTQ2IDEzNC43MjEgNDY2LjcyOSAxMjkuODggNDY2Ljc2NiAxMjMuMzZWMTIxLjU0MkM0NjYuODA1IDExOS40MjMgNDY3LjI4NSAxMTUuMjY5IDQ2Ny42MTggMTEyLjM4QzQ2Ny43MDUgMTExLjYyMiA0NjcuNzgzIDExMC45NTEgNDY3Ljg0IDExMC40MjdDNDY4Ljk5NCA5OS43OCA0NjguOTIxIDkyLjM4MiA0NjYuNDM5IDgxLjk2OEw0NjYuMTY1IDgxLjE2N0M0NjMuODg1IDc0LjQ5NCA0NjIuNTY0IDcwLjYzIDQ1OC4xMzQgNjQuNjIxTDQ1Ni4zNCA2Mi4zOTFDNDU2LjA5OCA1OS4yNDQgNDU1Ljk5NSA1Ni4zMzggNDU1Ljg5NCA1My40ODFDNDU1LjcxIDQ4LjI5MyA0NTUuNTMyIDQzLjI2OSA0NTQuNTM5IDM3LjI2M0w0NTQuNTMxIDM3LjIyMkM0NTMuNDk0IDMxLjc1OCA0NTIuNDExIDI2LjA0OCA0NDguNTMxIDIxLjc5MkM0NDEuNjE3IDIxLjAxMSA0MzYuMTg0IDIyLjk3NCA0MzAuMDMyIDI1LjE5N0M0MjkuMzE4IDI1LjQ1NyA0MjguNTkyIDI1LjcxNzcgNDI3Ljg1NSAyNS45NzlDNDIzLjY4NiAyNy40MjYzIDQxOS41MDUgMjguODQxIDQxNS4zMTQgMzAuMjIzQzQxNC43MjYgMzAuNDIgNDE0LjA5OSAzMC42MzcgNDEzLjQ0OCAzMC44NjJDNDEwLjYyMSAzMS44NCA0MDcuMzM0IDMyLjk3NiA0MDQuNzMzIDMzLjM3MUM0MDAuMzA1IDM0LjA0MSAzOTQuODI0IDMzLjQ5MyAzOTAuMDA2IDMzLjAxMkMzODguOTg2IDMyLjkxIDM4Ny45OTYgMzIuODExIDM4Ny4wNTMgMzIuNzI3WiIgZmlsbD0iIzUyMzgyQyIvPgo8cGF0aCBkPSJNNDQyLjkzNiAxOTcuMzNMNDQyLjgzOCAxOTguMjE5QzQ0MS45OTQgMjA3Ljg1MiA0NDUuMjg3IDIxMS43NzIgNDQ3LjAzOSAyMTIuNTI4QzQ0Ny4xOTYgMjEyLjU4MSA0NDcuMzU1IDIxMi42MzEgNDQ3LjUxNCAyMTIuNjc5QzQ0OS44OTggMjEyLjI2MSA0NTIuNDQzIDIwNy41OTQgNDUyLjc1NSAxOTUuMTY2TDQ0Mi45MzYgMTk3LjMzWiIgZmlsbD0iIzJBMUUxOCIvPgo8cGF0aCBkPSJNNDYzLjYzMyAxNzAuMzgxQzQ2Mi42MDEgMTY3LjI5OSA0NjIuMyAxNjYuMTEzIDQ1OS4zMjEgMTY0LjUwNUM0NTguMDgzIDE2My43MjkgNDU3LjA2MyAxNjMuMzUxIDQ1Ni4yMjggMTYzLjI1QzQ1My44MzMgMTYyLjk2IDQ1Mi45NjEgMTY0Ljk0NCA0NTIuODM3IDE2Ni4zMjFDNDUyLjE0OSAxNzEuMjQ4IDQ0OS41MTEgMTgwLjA1IDQ0NS40MDkgMTgzLjExNUM0NDMuMzUxIDE4Ni43MTcgNDQzLjM5NCAxOTMuNjA0IDQ0Mi44NCAxOTguMjEyQzQ1MS42NzUgMTk3LjgxOCA0NTMuODIyIDE5NC43OSA0NTQuNjk4IDE5My45ODlDNDYxLjAzIDE4Ny44NDQgNDY2LjcxMiAxNzkuNTc1IDQ2My42MzMgMTcwLjM4MVoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00NDMuMjQyIDE5Ny42NTdDNDQyLjU2IDE5Ny40MTUgNDQzLjgwMSAxOTUuMzYzIDQ0NS40MjEgMTk1LjU0N0M0NDYuMTY3IDE5NS42MzEgNDQ2LjE0MiAxOTYuMDA2IDQ0NS45NjMgMTk2LjUxN0M0NDUuODQ0IDE5Ni44NTUgNDQ1LjY0NSAxOTcuMzExIDQ0NC45NSAxOTcuNzU1QzQ0NC4yOTkgMTk4LjE3MSA0NDQuMDY4IDE5Ny45NTEgNDQzLjI0MiAxOTcuNjU3Wk00NTEuNDI0IDE5MS4yNEM0NTIuMDU2IDE5MS4xNjUgNDUyLjU2MSAxOTEuMDEgNDUyLjY2MyAxOTEuNDg3QzQ1My4wMzkgMTkzLjI1OSA0NTAuOTQyIDE5NC40ODkgNDQ5LjY1NSAxOTUuMTVDNDQ5LjAzOCAxOTUuNDY3IDQ0OC44NzIgMTk1LjM5NiA0NDguNzI1IDE5NS4wNjJDNDQ3LjgwMSAxOTIuOTY3IDQ0OS40ODUgMTkxLjYwMyA0NTEuNDI0IDE5MS4yNFpNNDYwLjE4OCAxNzkuMjc0QzQ2My41MTUgMTc5LjI3NCA0NjEuMDA0IDE4NC4xNTUgNDYwLjM1MSAxODQuMTQyQzQ1Ny4wMzcgMTg0LjA4IDQ1OS40MDEgMTc5LjI3NCA0NjAuMTg4IDE3OS4yNzRaTTQ1Ni43ODMgMTg2LjA5MkM0NTkuNjQ0IDE4Ny4yMzYgNDU3LjM1OCAxODkuNjU2IDQ1NS42MzMgMTkwLjUxOUM0NTUuMTg0IDE5MC43NDQgNDU0Ljc5NCAxOTAuNjQzIDQ1NC41MjggMTkwLjI5NEM0NTMuNDE4IDE4OC44NDQgNDU2LjA5NiAxODUuODE3IDQ1Ni43ODMgMTg2LjA5MlpNNDU3LjYxNSAxNjUuNTY5QzQ1Ny4wMjIgMTY1LjkxMiA0NTcuOTU0IDE2OS42MzggNDYxLjQwOSAxNjkuMzQ0QzQ2Mi43MTcgMTY5LjIzMyA0NjEuOTIxIDE2Ny4xMTUgNDYwLjcyOCAxNjYuMDY4QzQ1OS41MzQgMTY1LjI3MyA0NTguNDY5IDE2NS4wNzYgNDU3LjYxNSAxNjUuNTY5Wk00NjEuNjg3IDE3MS4yOTRDNDYwLjk1MiAxNzEuMjk0IDQ1OC41MzcgMTc1LjczNSA0NjEuNzY3IDE3Ni43NDZDNDYyLjQ0MSAxNzYuOTU3IDQ2My4wOTggMTc2LjE1IDQ2Mi45NjQgMTc0LjAzNEM0NjIuODc0IDE3Mi42MDIgNDYyLjMxMiAxNzEuMjk0IDQ2MS42ODcgMTcxLjI5NFoiIGZpbGw9IiM1QUE2OTYiLz4KPHBhdGggZD0iTTY5NS44MzkgNjUuOFY3MC45NjlINzAwLjM0VjY1LjhINjk1LjgzOVoiIGZpbGw9IiNGOERCQUMiLz4KPHBhdGggZD0iTTcwMC4zNCA2NS44VjcwLjk2OUg3MDUuNTkzVjY1LjhINzAwLjM0WiIgZmlsbD0iI0IzQTA3QyIvPgo8cGF0aCBkPSJNNjkwLjUwMyAzOS42MjNWNzAuOTY5SDY5NS44MzlWNjUuOEg3MDUuNTkzVjcwLjk2OUg3MTguNzY0VjQ0Ljk1OEg3NDMuODU4VjcwLjk2OUg3NDYuMTkyVjM5LjYyM0g2OTAuNTAzWiIgZmlsbD0iI0U0Qzk5OSIvPgo8cGF0aCBkPSJNNzIzLjAxNiA3MC45NjlWNTAuMzc3SDczNy4wMjJWNzAuOTY5SDc0Mi4xMDdWNDQuOTU4SDcxOC43NjRWNzAuOTY5SDcyMy4wMTZaIiBmaWxsPSIjRjVEQkE5Ii8+CjxwYXRoIGQ9Ik03MjMuMDE2IDUwLjM3N1Y3MC45NjlINzM3LjAyMlY1MC4zNzdINzIzLjAxNloiIGZpbGw9IiNBNzk4NzYiLz4KPHBhdGggZD0iTTc0Mi4xMDcgNDQuOTU4VjcwLjk2OUg3NDMuODU4VjQ0Ljk1OEg3NDIuMTA3WiIgZmlsbD0iI0EwODk2MyIvPgo8cGF0aCBkPSJNNzQ2LjE5MiAzOS42MjNWNzAuOTY5TDc4NS4zNzEgNzAuMDUyVjM5LjYyM0g3NDYuMTkyWiIgZmlsbD0iI0I0QTM3RSIvPgo8cGF0aCBkPSJNNzg1LjM3MSA3MC4wNTJMNzQ2LjE5MiA3MC45NjlMNzU3Ljk2MyA3MS40NjlMODA0LjYxMSA3MC45NjlMNzg1LjM3MSA3MC4wNTJaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfMl8xMDMpIi8+CjxwYXRoIGQ9Ik03NjcuMDMxIDM5LjYyM0M3NjYuNzAxIDM2Ljc4OCA3NjIuNDUxIDI3Ljk1MiA3NDguNzc2IDI3Ljk1MkM3NDcuODcgMjcuOTUyNyA3NDcuMDA5IDI4LjAwMzcgNzQ2LjE5MiAyOC4xMDVDNzUxLjA4MyAyOC4zNiA3NjAuODYxIDMxLjAyIDc2MC44NjEgMzkuNjIzSDc2Ny4wMzFaIiBmaWxsPSIjRThDRjlBIi8+CjxwYXRoIGQ9Ik03MzIuNzcgMzkuNjIzSDc2MC44NjFDNzYwLjg2MSAzMS4wMiA3NTEuMDgzIDI4LjM2IDc0Ni4xOTIgMjguMTA1QzczNy4xNTIgMjkuMjE1IDczMy40ODQgMzYuMDU1IDczMi43NyAzOS42MjNaIiBmaWxsPSIjRjhERUE5Ii8+CjxwYXRoIGQ9Ik03MjUuNDM0IDI4LjEwNVYzOS42MjNINzI2LjYwMVYyOS4wMzVMNzI1LjQzNCAyOC4xMDVaIiBmaWxsPSIjOTU4ODY2Ii8+CjxwYXRoIGQ9Ik03MjIuMDk5IDIyLjExNlYzOS42MjNINzIzLjQzM1YyMi45NUw3MjIuMDk5IDIyLjExNloiIGZpbGw9IiNCNkE3ODMiLz4KPHBhdGggZD0iTTcwNy4yOTYgMzMuNzMxQzcwMy4zNiAzNC41NiA3MDIuMjIzIDM3Ljg1OSA3MDIuMTc0IDM5LjYyM0g3MTQuNjc5QzcxNC42NzkgMzQuNjIxIDcwOS43NTcgMzMuNjExIDcwNy4yOTYgMzMuNzMxWiIgZmlsbD0iI0YzREVBQyIvPgo8cGF0aCBkPSJNNzE2LjkzIDM5LjYyM0M3MTYuOTMgMzcuNzg5IDcxNi4xOCAzMy41MzcgNzA5LjI2MSAzMy41MzdDNzA4LjUzOSAzMy41MzcgNzA3Ljg4NiAzMy42MDYgNzA3LjI5NiAzMy43MzFDNzA5Ljc1NyAzMy42MTEgNzE0LjY3OSAzNC42MjEgNzE0LjY3OSAzOS42MjNINzE2LjkzWiIgZmlsbD0iI0U0Q0U5RCIvPgo8cGF0aCBkPSJNNzU3LjIzNyA0Mi44MjJINzUxLjkwMkw3NTcuOTIgNzEuNDY0TDc2My42NDEgNzEuMjc1TDc1Ny4yMzcgNDIuODIyWiIgZmlsbD0idXJsKCNwYWludDJfbGluZWFyXzJfMTAzKSIvPgo8cGF0aCBkPSJNNzUwLjQwMSA0Mi44MjJWNzAuODMzTDc1Ny45MiA3MS40NjRMNzUxLjkwMiA0Mi44MjJINzUwLjQwMVoiIGZpbGw9IiNFM0M3OUMiLz4KPHBhdGggZD0iTTc4My4zMDEgNDIuODIySDc3OC41MzFMNzgzLjIzMSA3MC45OTlMNzg4LjcyMSA3MC43MjVMNzgzLjMwMSA0Mi44MjJaIiBmaWxsPSJ1cmwoI3BhaW50M19saW5lYXJfMl8xMDMpIi8+CjxwYXRoIGQ9Ik03NzYuNzAxIDQyLjgyMlY3MC4yNzdMNzgzLjIzMSA3MC45OTlMNzc4LjUzMSA0Mi44MjJINzc2LjcwMVoiIGZpbGw9IiNFMkNBOTkiLz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfZF8yXzEwMyIgeD0iMTUuNDQxIiB5PSIwIiB3aWR0aD0iMjI4LjQ1MyIgaGVpZ2h0PSI5MS4yOCIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVDb2xvck1hdHJpeCBpbj0iU291cmNlQWxwaGEiIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMCIgcmVzdWx0PSJoYXJkQWxwaGEiLz4KPGZlT2Zmc2V0IGR4PSIyIiBkeT0iMiIvPgo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJvdXQiLz4KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMjUgMCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvd18yXzEwMyIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfZHJvcFNoYWRvd18yXzEwMyIgcmVzdWx0PSJzaGFwZSIvPgo8L2ZpbHRlcj4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzJfMTAzIiB4MT0iNTU3LjM4NCIgeTE9IjQzLjgwNCIgeDI9IjU0OS4xODIiIHkyPSIyNC43NzUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzg2N0Q2MiIgc3RvcC1vcGFjaXR5PSIwLjgiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjODY3RDYyIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8yXzEwMyIgeDE9Ijc2NS4xOTEiIHkxPSI3NC45ODgiIHgyPSI3NjAuODAxIiB5Mj0iNDUuOTY5OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjODY3RDYyIiBzdG9wLW9wYWNpdHk9IjAuOCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NjdENjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDJfbGluZWFyXzJfMTAzIiB4MT0iNzY1LjU3MSIgeTE9IjEyNC4zNzIiIHgyPSI3NjEuMTcxIiB5Mj0iOTUuMzUzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4NjdENjIiIHN0b3Atb3BhY2l0eT0iMC44Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzg2N0Q2MiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50M19saW5lYXJfMl8xMDMiIHgxPSI3NjUuNTcxIiB5MT0iMTI0LjM3MiIgeDI9Ijc2MS4xNzEiIHkyPSI5NS4zNTMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzg2N0Q2MiIgc3RvcC1vcGFjaXR5PSIwLjgiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjODY3RDYyIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg=="
      >
    </div>
  </div>

<div class="container-lg tmp-mt-5 tmp-px-3 tmp-pb-5">
  <!-- '"` --><!-- </textarea></xmp> --></option></form><form role="search" data-turbo="false" action="/search" accept-charset="UTF-8" method="get">
    <label for="not-found-search" class="d-block text-normal color-fg-muted mb-1 f4">Find code, projects, and people on GitHub:</label>
    <div class="d-flex flex-items-center">
      <input type="text" name="q" id="not-found-search" class="flex-auto input-lg form-control mr-2">
        <button type="submit" data-view-component="true" class="btn">    Search
</button>
    </div>
</form>
    <div class="tmp-mt-5 color-fg-muted text-center">
      <a href="https://support.github.com?tags=dotcom-404" class="Link--secondary">Contact Support</a> &mdash;
      <a href="https://githubstatus.com" class="Link--secondary">GitHub Status</a> &mdash;
      <a href="https://x.com/githubstatus" class="Link--secondary">@githubstatus</a>
    </div>
</div>

  </main>

  </div>

              <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/primer-react-8503588299651923.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ncx-66e64888bc4615bb.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/2l-e468179ba7123a2e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/rwd-069fc3d9814ff9fe.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3d-7f22b36f29a9dd94.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b2-b841a883f7f8b0d3.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-footer-da41d0981394cfec.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.05b219cdb8e80c43.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/marketing-footer.b43ee9e0ce240a38.module.css" />

<react-partial
  partial-name="marketing-footer"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"cookieConsentEnabled":true,"colorMode":"light","currentLocale":"en","localeOptions":[{"displayName":"English","selectorLocale":"en-us","analyticsLabel":"locale:en-us"},{"displayName":"Português (Brasil)","selectorLocale":"pt-br","analyticsLabel":"locale:pt-br"},{"displayName":"Español (América Latina)","selectorLocale":"es-419","analyticsLabel":"locale:es-419"},{"displayName":"日本語","selectorLocale":"ja","analyticsLabel":"locale:ja"},{"displayName":"한국어","selectorLocale":"ko-kr","analyticsLabel":"locale:ko-kr"},{"displayName":"Français","selectorLocale":"fr-fr","analyticsLabel":"locale:fr-fr"},{"displayName":"Deutsch","selectorLocale":"de-de","analyticsLabel":"locale:de-de"}],"showAdminToggle":false,"isAdminModeOn":false,"adminTogglePath":null,"showUiOptOut":false,"isUiOptedOut":false,"uiOptOutTogglePath":null}}</script>
  <div data-target="react-partial.reactRoot"><div data-color-mode="light"><footer class="MarketingFooter-module__footer__sWiQH" role="contentinfo" data-analytics-category="Footer"><h2 class="visually-hidden">Site-wide Links</h2><div class="MarketingFooter-module__container__FiPNP"><div class="MarketingFooter-module__topRow__dhoq5"><section class="Newsletter-module__newsletter__WQAO6 MarketingFooter-module__newsletter__FkId8" aria-labelledby="subscribe-to-newsletter"><a href="/" class="Newsletter-module__logoLink__llafS" aria-label="Go to GitHub homepage"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github Newsletter-module__logo__rcAsT" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path></svg></a><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD Newsletter-module__heading__T6FMN" id="subscribe-to-newsletter"><span class="Newsletter-module__headingDot__mwB26" aria-hidden="true"></span>The developer newsletter</h3><p class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Newsletter-module__description__LBtd9">Get tips, technical guides, and best practices. Twice a month. Right in your inbox.</p><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--primary___MSbnU Primer_Brand__Button-module__Button--size-small___zQrEw Newsletter-module__cta___iepg" href="/newsletter"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-primary___QX1u5">Subscribe</span></span></a></section><div class="MarketingFooter-module__columns__hFD_D"><nav class="LinkColumn-module__column__vXgUS" aria-labelledby="footer-title-platform"><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD LinkColumn-module__heading__vyqWX" id="footer-title-platform">Platform</h3><ul class="LinkColumn-module__list__q5Tn1"><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/features" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;features&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Features</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/enterprise" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;enterprise&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Enterprise</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/features/copilot" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;copilot&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Copilot</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/features/ai" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;ai&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">AI</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/security" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Security</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/pricing" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;pricing&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Pricing</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/team" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;team&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Team</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;resources&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Resources</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/github/roadmap" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;roadmap&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Roadmap</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/resources/articles/devops-tools-comparison" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;compare&quot;,&quot;context&quot;:&quot;platform&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Compare GitHub</span></a></li></ul></nav><nav class="LinkColumn-module__column__vXgUS" aria-labelledby="footer-title-ecosystem"><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD LinkColumn-module__heading__vyqWX" id="footer-title-ecosystem">Ecosystem</h3><ul class="LinkColumn-module__list__q5Tn1"><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://docs.github.com/integrations/concepts/about-building-integrations" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;dev-api&quot;,&quot;context&quot;:&quot;ecosystem&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Developer API</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/partners" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;partners&quot;,&quot;context&quot;:&quot;ecosystem&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Partners</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/education" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;edu&quot;,&quot;context&quot;:&quot;ecosystem&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Education</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://cli.github.com" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;cli&quot;,&quot;context&quot;:&quot;ecosystem&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">GitHub CLI</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/apps/desktop" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;desktop&quot;,&quot;context&quot;:&quot;ecosystem&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Desktop</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/mobile" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;mobile&quot;,&quot;context&quot;:&quot;ecosystem&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Mobile</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/marketplace" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;marketplace&quot;,&quot;context&quot;:&quot;ecosystem&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Marketplace</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/mcp" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;mcp_registry&quot;,&quot;context&quot;:&quot;ecosystem&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">MCP Registry</span></a></li></ul></nav><nav class="LinkColumn-module__column__vXgUS" aria-labelledby="footer-title-support"><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD LinkColumn-module__heading__vyqWX" id="footer-title-support">Support</h3><ul class="LinkColumn-module__list__q5Tn1"><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://docs.github.com" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;docs&quot;,&quot;context&quot;:&quot;support&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Docs</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.community" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;community&quot;,&quot;context&quot;:&quot;support&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Community Forum</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/services" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;services&quot;,&quot;context&quot;:&quot;support&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Professional Services</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/enterprise/premium-support" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;premium_support&quot;,&quot;context&quot;:&quot;support&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Premium Support</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://skills.github.com" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;skills&quot;,&quot;context&quot;:&quot;support&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Skills</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://www.githubstatus.com" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;status&quot;,&quot;context&quot;:&quot;support&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Status</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://support.github.com?tags=dotcom-footer" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;contact_github&quot;,&quot;context&quot;:&quot;support&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Contact GitHub</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/git-guides" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;what_is_git&quot;,&quot;context&quot;:&quot;support&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">What is Git?</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/sitemap" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;sitemap&quot;,&quot;context&quot;:&quot;support&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Sitemap</span></a></li></ul></nav><nav class="LinkColumn-module__column__vXgUS" aria-labelledby="footer-title-company"><h3 class="Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module__Heading-font--monospace___wf5_H Primer_Brand__Heading-module__Heading--6___QHTZH Primer_Brand__Heading-module__Heading--textWrap-balance___XJ9OD LinkColumn-module__heading__vyqWX" id="footer-title-company">Company</h3><ul class="LinkColumn-module__list__q5Tn1"><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/about" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;about&quot;,&quot;context&quot;:&quot;company&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">About</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/why-github" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;why_github&quot;,&quot;context&quot;:&quot;company&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Why GitHub</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/customer-stories?type=enterprise" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;customer_stories&quot;,&quot;context&quot;:&quot;company&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Customer Stories</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.blog" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;blog&quot;,&quot;context&quot;:&quot;company&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Blog</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/readme" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;readme&quot;,&quot;context&quot;:&quot;company&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">The ReadME Project</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.careers" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;careers&quot;,&quot;context&quot;:&quot;company&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Careers</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="/about/diversity" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;inclusion&quot;,&quot;context&quot;:&quot;company&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Inclusion</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://socialimpact.github.com" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;social_impact&quot;,&quot;context&quot;:&quot;company&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Social Impact</span></a></li><li class="LinkColumn-module__item__nrsNE"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://thegithubshop.com" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;shop&quot;,&quot;context&quot;:&quot;company&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Link-module__Link--label___jM8Ty">Shop</span></a></li></ul></nav></div></div></div><div class="SubFooter-module__bar__MCrz3"><div class="SubFooter-module__container__zWjah"><nav aria-label="Legal and Resource Links" class="SubFooter-module__legal__ihBjH"><ul class="SubFooter-module__legalList__W482t"><li class="SubFooter-module__copyright__jBUrS"><time dateTime="2026">© 2026 GitHub, Inc.</time></li><li><a href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" class="SubFooter-module__legalLink__Y0jbc">Terms</a></li><li><a href="https://docs.github.com/site-policy/privacy-policies/github-general-privacy-statement" class="SubFooter-module__legalLink__Y0jbc">Privacy</a></li><li><cookie-consent-link><button type="button" class="SubFooter-module__legalLink__Y0jbc" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;}">Manage cookies</button></cookie-consent-link></li><li><cookie-consent-link><button type="button" class="SubFooter-module__legalLink__Y0jbc" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;}">Do not share my personal information</button></cookie-consent-link></li></ul></nav><div class="SubFooter-module__socialAndLocale__Kl140"><nav aria-label="GitHub&#x27;s Social Media Links"><ul class="SocialLinks-module__list__kkyUo"><li><a href="https://www.linkedin.com/company/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Linkedin&quot;,&quot;label&quot;:&quot;text:linkedin&quot;}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" width="19" height="18" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><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><span class="visually-hidden">GitHub on LinkedIn</span></a></li><li><a href="https://www.instagram.com/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Instagram&quot;,&quot;label&quot;:&quot;text:instagram&quot;}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on Instagram</span></a></li><li><a href="https://www.youtube.com/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to YouTube&quot;,&quot;label&quot;:&quot;text:youtube&quot;}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.17 13.6" width="23" height="16" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><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><span class="visually-hidden">GitHub on YouTube</span></a></li><li><a href="https://x.com/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to X&quot;,&quot;label&quot;:&quot;text:x&quot;}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 1227" width="16" height="16" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on X</span></a></li><li><a href="https://www.tiktok.com/@github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to tiktok&quot;,&quot;label&quot;:&quot;text:tiktok&quot;}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on TikTok</span></a></li><li><a href="https://www.twitch.tv/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Twitch&quot;,&quot;label&quot;:&quot;text:twitch&quot;}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z" fill="currentColor"></path></svg><span class="visually-hidden">GitHub on Twitch</span></a></li><li><a href="https://github.com/github" class="SocialLinks-module__iconLink__TSxai" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to github&#x27;s org&quot;,&quot;label&quot;:&quot;text:github&quot;}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 98 96" width="20" height="20" aria-hidden="true" focusable="false" class="SocialLinks-module__icon__GnyEV"><path fill="currentColor" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"></path></svg><span class="visually-hidden">GitHub’s organization on GitHub</span></a></li></ul></nav><div id="_R_ad_" class="Primer_Brand__ActionMenu-module__ActionMenu___xLxGU" data-testid="ActionMenu"><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--secondary___gHnw_ Primer_Brand__Button-module__Button--size-small___zQrEw Primer_Brand__ActionMenu-module__ActionMenu__button___vFLAF Primer_Brand__ActionMenu-module__ActionMenu__button--small___UAUPB Primer_Brand__ActionMenu-module__ActionMenu__button--default___heDoV" id="_R_ad_-button" aria-haspopup="true" aria-expanded="false" data-testid="ActionMenu-button" aria-label="English - Select language"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-secondary___eJ0_a"><span><span class="LocaleSelector-module__triggerContent__lli5v"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-globe" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path></svg><span class="LocaleSelector-module__triggerLabel__IDKuJ">English</span></span></span></span></span><span class="Primer_Brand__Button-module__Button__trailing-visual___5i3xR" data-testid="Button-trailing-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-chevron-down Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></button></div></div></div></div></footer></div></div>
</react-partial>




    <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999"
      data-locale="en"
      data-initial-cookie-consent-allowed=""
      data-cookie-consent-required="false"
    ></ghcc-consent>




  <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
    <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    You can’t perform that action at this time.
  </div>

    <template id="site-details-dialog">
  <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
    <summary role="button" aria-label="Close dialog"></summary>
    <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
      <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
      </button>
      <div class="octocat-spinner tmp-my-6 js-details-dialog-spinner"></div>
    </details-dialog>
  </details>
</template>

    <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;">
  <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
  </div>
</div>

    <template id="snippet-clipboard-copy-button">
  <div class="zeroclipboard-container position-absolute right-0 top-0">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2 tmp-m-2">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2 tmp-m-2">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>
<template id="snippet-clipboard-copy-button-unpositioned">
  <div class="zeroclipboard-container">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>




    </div>
    <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div>
    <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div>
  </body>
</html>

And the output:

sqlite_version=3.45.1, vec_version=v0.0.1-alpha.3
rowid=3, distance=0.000000
rowid=4, distance=0.200000
rowid=2, distance=0.200000

I do love go, especially how easy it is to type SQL returned results. But we do have to write our own serializeFloat32 function to convert a slice of floats into a vector BLOB, which is annoying. And if I have to write if err != nil one more time...

Rust

Here's the Rust implementation of the "simple" demo, using the rusqlite crate and the sqlite-vec crate:

Show Rust code
use rusqlite::{ffi::sqlite3_auto_extension, Connection, Result};
use sqlite_vec::sqlite3_vec_init;
use zerocopy::AsBytes;

fn main() -> Result<()> {
    unsafe {
        sqlite3_auto_extension(Some(std::mem::transmute(sqlite3_vec_init as *const ())));
    }

    let db = Connection::open_in_memory()?;
    let v: Vec<f32> = vec![0.1, 0.2, 0.3];

    let (sqlite_version, vec_version, x): (String, String, String) = db.query_row(
        "select sqlite_version(), vec_version(), vec_to_json(?)",
        &[v.as_bytes()],
        |x| Ok((x.get(0)?, x.get(1)?, x.get(2)?)),
    )?;

    println!("sqlite_version={sqlite_version}, vec_version={vec_version}");

    let items: Vec<(usize, Vec<f32>)> = vec![
        (1, vec![0.1, 0.1, 0.1, 0.1]),
        (2, vec![0.2, 0.2, 0.2, 0.2]),
        (3, vec![0.3, 0.3, 0.3, 0.3]),
        (4, vec![0.4, 0.4, 0.4, 0.4]),
        (5, vec![0.5, 0.5, 0.5, 0.5]),
    ];
    println!("{x}");

    db.execute(
        "CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4])",
        [],
    )?;
    let mut stmt = db.prepare("INSERT INTO vec_items(rowid, embedding) VALUES (?, ?)")?;
    for item in items {
        stmt.execute(rusqlite::params![item.0, item.1.as_bytes()])?;
    }

    let query: Vec<f32> = vec![0.3, 0.3, 0.3, 0.3];
    let result: Vec<(i64, f64)> = db
        .prepare(
            r"
          SELECT
            rowid,
            distance
          FROM vec_items
          WHERE embedding MATCH ?1
          ORDER BY distance
          LIMIT 3
        ",
        )?
        .query_map([query.as_bytes()], |r| Ok((r.get(0)?, r.get(1)?)))?
        .collect::<Result<Vec<_>, _>>()?;
    println!("{:?}", result);
    Ok(())
}

And the output:

$ cargo run demo.rs
   Compiling sqlite-vec-demo v0.0.0 (/Users/.../simple-rust)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.85s
     Running `target/debug/demo demo.rs`
sqlite_version=3.45.0, vec_version=v0.0.1-alpha.7
[0.100000,0.200000,0.300000]
[(3, 0.0), (4, 0.19999998807907104), (2, 0.20000001788139343)]

If you're okay adding the zerocopy crate, then coverting a Vec<f32> into a vector BLOB is as easy as a .as_bytes() call! The syntax can get a little gnarly, especially around .query_map().collect(), but man once you get it to work, it's extremely productive!

C

Finally, here's the C implementation of the "simple" demo, using the raw SQLite C API, and the sqlite-vec amalgamation!

Show C code
#include "sqlite3.h"
#include "sqlite-vec.h"
#include <stdio.h>
#include <unistd.h>
#include <assert.h>

int main(int argc, char *argv[]) {
  int rc = SQLITE_OK;
  sqlite3 *db;
  sqlite3_stmt *stmt;

  rc = sqlite3_auto_extension((void (*)())sqlite3_vec_init);
  assert(rc == SQLITE_OK);

  rc = sqlite3_open(":memory:", &db);
  assert(rc == SQLITE_OK);

  rc = sqlite3_prepare_v2(db, "SELECT sqlite_version(), vec_version()", -1, &stmt, NULL);
  assert(rc == SQLITE_OK);

  rc = sqlite3_step(stmt);
  printf("sqlite_version=%s, vec_version=%s\n", sqlite3_column_text(stmt, 0), sqlite3_column_text(stmt, 1));
  sqlite3_finalize(stmt);

  static const struct {
    sqlite3_int64 id;
    float vector[4];
  } items[] = {
    {1, {0.1, 0.1, 0.1, 0.1}},
    {2, {0.2, 0.2, 0.2, 0.2}},
    {3, {0.3, 0.3, 0.3, 0.3}},
    {4, {0.4, 0.4, 0.4, 0.4}},
    {5, {0.5, 0.5, 0.5, 0.5}},
  };
  float query[4] = {0.3, 0.3, 0.3, 0.3};


  rc = sqlite3_prepare_v2(db, "CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4])", -1, &stmt, NULL);
  assert(rc == SQLITE_OK);
  rc = sqlite3_step(stmt);
  assert(rc == SQLITE_DONE);
  sqlite3_finalize(stmt);

  rc = sqlite3_exec(db, "BEGIN", NULL, NULL, NULL);
  assert(rc == SQLITE_OK);
  rc = sqlite3_prepare_v2(db, "INSERT INTO vec_items(rowid, embedding) VALUES (?, ?)", -1, &stmt, NULL);
  assert(rc == SQLITE_OK);
  for (unsigned long i = 0; i < sizeof(items) / sizeof(items[0]); i++) {
    sqlite3_bind_int64(stmt, 1, items[i].id);
    sqlite3_bind_blob(stmt, 2, items[i].vector, sizeof(items[i].vector), SQLITE_STATIC);
    rc = sqlite3_step(stmt);
    assert(rc == SQLITE_DONE);
    sqlite3_reset(stmt);
  }
  sqlite3_finalize(stmt);
  rc = sqlite3_exec(db, "COMMIT", NULL, NULL, NULL);
  assert(rc == SQLITE_OK);

  rc = sqlite3_prepare_v2(db,
    "SELECT "
    "  rowid, "
    "  distance "
    "FROM vec_items "
    "WHERE embedding MATCH ?1 "
    "ORDER BY distance "
    "LIMIT 3 "
  , -1, &stmt, NULL);
  assert(rc == SQLITE_OK);

  sqlite3_bind_blob(stmt, 1, query, sizeof(query), SQLITE_STATIC);

  while(1) {
    rc = sqlite3_step(stmt);
    if(rc == SQLITE_DONE) break;
    assert(rc==SQLITE_ROW);
    sqlite3_int64 rowid = sqlite3_column_int64(stmt, 0);
    double distance = sqlite3_column_double(stmt, 1);
    printf("rowid=%lld distance=%f\n", rowid, distance);
  }
  sqlite3_finalize(stmt);
  sqlite3_close(db);
  return 0;
}

And the output:

$ make demo
gcc \
		-DSQLITE_CORE \
		-I../../ -I../../vendor \
		demo.c ../../sqlite-vec.c ../../vendor/sqlite3.c \
		-o demo
$ ./demo
sqlite_version=3.45.3, vec_version=v0.0.1-alpha.9
rowid=3 distance=0.000000
rowid=4 distance=0.200000
rowid=2 distance=0.200000

C is not a fun language is write and can be super unsafe. But man, it feels really nice to have a single 1.5MB executable with everything you need...

Final thoughts

SQL is the standard API across all languages

No matter the language, every single demo above ran basically the same SQL:

select sqlite_version(), vec_version();

create virtual table vec_items using vec0(embedding float[4]);

insert into vec_items(rowid, embedding)
  values (?, ?);

select
  rowid,
  distance
from vec_items
where embedding MATCH ?
order by distance
limit 3;

The only real differences were superficial: how the SQLite client library works for that language, how to convert a list of numbers to the BLOB format, and how to handle transactions.

I think this is the real super-power of sqlite-vec. It's rare to have a vector search library work in so many different languages and runtimes. But it's even more rare, perhaps unique, to have an API that's more-or-less the same across different programming languages. That means you can create and "train" an index in Python, serve it to users in the browser in JavaScript, in an Express server with Node.js, or in a CLI with Rust, all without much fuss.

Creating these bindings was worth it

It took me a loooooong time to figure out a good "distribution" strategy for SQLite extensions. When I first started creating SQLite extensions, I followed the pattern established by sqlean, which was to upload pre-compiled loadable extensions to Github Releases for popular platforms (MacOS, Linux, Windows, etc.).

This is great, but downloading links yourself can be quite a chore. If you want to use sqlite-vec in your Python package, you don't want to download and extract a tar.gz file: you just want to pip install something and go along your merry way.

So over the last few years, I've developed a few techniques to creating "binding" packages for these SQLite extensions on popular package managers: pypi, npm, rubygems, crates.io, and Golang modules. At this point, I've spent more time on these distributions than on SQLite extensions themselves, but it was worth it!

I haven't blogged about how the Rust/Go bindings work quite yet, but I hope to soon! I also have a work-in-progress project called sqlite-dist that automates a lot of these bindings, which I also plan to blog about in the near future.

Is it a good idea to have a SQLite client built into your language/runtime?

Of these examples, only Python and Bun have a builtin client library for SQLite. For all other languages, it's a 3rd party package that you must install and update yourself.

One one hand, this is great! No need to install another dependency, just write and use.

On the other hand, it makes working with modern SQLite features a bit harder.

For Python, the version of SQLite that's "bundled-in" depends on which Python your using. If you're using the default MacOS Python, that uses the default MacOS SQLite library, which is outdated and blocks SQLite extensions. If you're using brew, then it might use whatever SQLite version brew has installed. If you're using Docker, I have no idea.

For Bun, there's even a section in their bun:sqlite docs about this confusion. For MacOS users, the default SQLite library that Bun uses is the outdated default MacOS SQLite build. So Bun added a Database.setCustomSQLite("/path/to/libsqlite.dylib") method as a workaround. Which does work, but is an extra step you have to perform at runtime. And if you want to run your code on other operating systems, you'll need to add a few if statements to avoid accidentally loading in a SQLite build that doesn't exist. A small headache!

Now compare this to all the other libraries where SQLite is offered as a third party package: Node.js, Deno, Ruby, Go, and Rust. To update to a latest version of SQLite, you usually just need to update the package with whatever package manager your language/runtime offers. Sometimes there's a delay when a new SQLite version is released and package maintainers release a new version, which is something to consider. But it's way less likely that you'll get "surprised" by code that works on one machine and not the other, and you can handle updates yourself.