[
  {
    "path": ".gitignore",
    "content": "*.swp\n*.DS_Store\nnode_modules\n.next\n.next-playwright\nout\nnext-env.d.ts\npublic/*\n!public/.gitkeep\nplaywright-report\ntest-results\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\n## 20 Mar 2026\n* **Removed Jost**, as the creator now charges for the variable font.\n\n## 06 Jun 2025\n* **Added [Commissioner](https://beautifulwebtype.com/commissioner/)**.\n\n## 05 Jun 2025\n* **Added [Instrument Sans](https://beautifulwebtype.com/instrument-sans/)**.\n* **Added [Instrument Serif](https://beautifulwebtype.com/instrument-serif/)**.\n\n## 23 Oct 2023\n* **Added [TASA Orbiter](https://beautifulwebtype.com/tasa-orbiter/)**.\n\n## 8 Apr 2023\n * **Updated [Source Code Pro](https://beautifulwebtype.com/source-code-pro/)** to version 1.024.\n\n## 22 Nov 2020\n* **Added [Fraunces](https://beautifulwebtype.com/fraunces/)**.\n* **Added pairing example** for Fraunces and Libre Franklin.\n* **Added pairing example** for Messapia and Inter.\n\n## 21 Nov 2020\n* **Added [Inter](https://beautifulwebtype.com/inter/)**.\n* **Updated glyph inspector** to include plain text character in sidebar for easier copying.\n\n## 23 May 2020\n* **Added [Messapia](https://beautifulwebtype.com/messapia/)**.\n* **Added [Crimson Pro](https://beautifulwebtype.com/crimson-pro/)**.\n* **Updated [Source Code Pro](https://beautifulwebtype.com/source-code-pro/)** to variable version.\n* **Updated [iA Writer Quattro](https://beautifulwebtype.com/ia-writer-quattro/)** to variable version.\n* **Updated [Fire Code](https://beautifulwebtype.com/fira-code/)** to v4.0 variable version.\n* **Updated [Lora](https://beautifulwebtype.com/lora/)** to variable version.\n* **Updated [Work Sans](https://beautifulwebtype.com/work-sans/)** to variable version.\n* **Updated [Space Grotesk](https://beautifulwebtype.com/space-grotesk/)** to variable version.\n* **Updated Manrope** to variable version.\n* **Updated [Source Serif Pro](https://beautifulwebtype.com/source-serif-pro/)** to variable version.\n* **Updated [Source Sans Pro](https://beautifulwebtype.com/source-sans-pro/)** to variable version.\n\n## 22 May 2020\n* **Updated [Work Sans](https://beautifulwebtype.com/work-sans/)** to version from 1 May 2020.\n* **Updated [Space Grotesk](https://beautifulwebtype.com/space-grotesk/)** to v1.1.6.\n* **Updated [Source Sans Pro](https://beautifulwebtype.com/source-sans-pro/)** to v3.006.\n* **Updated Manrope** to v4.5.\n* **Updated [Jost](https://beautifulwebtype.com/jost/)** to v3.5. Included link to Google Fonts version and removed local files. Author has not provided a [WOFF or WOFF2 distribution](https://github.com/indestructible-type/Jost/issues/35), so I recommend using the Google Fonts version.\n* **Updated [Source Serif Pro](https://beautifulwebtype.com/source-serif-pro/)** to v3.001.\n* **Updated IBM Plex** family typefaces to v4.0.2.\n\n## 21 Nov 2019\n* **Updated [Fira Code](https://beautifulwebtype.com/fira-code/)** to v2.0.\n* Small changes to layout, responsive styles and typography. Site will now stretch the full width of the screen.\n\n## 23 Aug 2019\n* **Updated [Le Murmure](https://beautifulwebtype.com/le-murmure/)** to v1.1.\n\n## 5 Apr 2019\n* **Updated Manrope** to v3.0.\n\n## 1 Feb 2019\n* **Added [Space Grotesk](https://beautifulwebtype.com/space-grotesk/)**\n* **Added [Atom feed](https://beautifulwebtype.com/feed.xml) for typefaces**\n\n## 31 Jan 2019\n* **Added Manrope**\n\n## 30 Jan 2019\n* **Added [iA Writer Quattro](https://beautifulwebtype.com/ia-writer-quattro/)**\n\n## 28 Jan 2019\n* **Updated latest version info for IBM Plex Family, Source Serif Pro and Source Sans Pro**\n\n## 21 Jan 2019\n* **Added [Fira Code](https://beautifulwebtype.com/fira-code/)**\n\n## 08 Jan 2019\n* **Added [Space Mono](https://beautifulwebtype.com/space-mono/)**\n\n## 07 Jan 2019\n* **Improved performance of glyph inspector**. Switching between glyph pages is now much faster.\n\n## 03 Jan 2019\n* **Added [Fivo Sans](https://beautifulwebtype.com/fivo-sans/)**\n* **Added [Fivo Sans Modern](https://beautifulwebtype.com/fivo-sans-modern/)**\n\n## 31 Dec 2018\n* **Added ability to link to specific glyph**. [For instance](https://beautifulwebtype.com/work-sans/glyphs/?i=1210).\n\n## 18 Dec 2018\n* **Added [Source Code Pro](https://beautifulwebtype.com/source-code-pro/)**\n\n## 17 Dec 2018\n* **Begin using a Jekyll collection for typefaces**\n* **Major refactoring of front-end**\n\n## 14 Dec 2018\n* **Added glyph inspector for each typeface**. [See it in action](https://beautifulwebtype.com/ibm-plex-mono/glyphs/). This feature was made possible by [opentype.js](https://github.com/opentypejs/opentype.js).\n\n## 11 Dec 2018\n* **Improved samples for several typefaces**\n\n## 05 Dec 2018\n* **Improved behavior of typeface comparison text**. Now, when updating the sample text for one typeface, it changes the sample text for the other typefaces as well.\n\n## 04 Dec 2018\n* **Added a section showing comparisons to similar typefaces on most detail pages**. For example, here's the comparisons for [FiraGO](https://beautifulwebtype.com/firago/#comparisons).\n\n## 03 Dec 2018\n* **Added [Inria Sans](https://beautifulwebtype.com/inria-sans/)**\n* **Added [Inria Serif](https://beautifulwebtype.com/inria-serif/)**\n\n## 27 Nov 2018\n* **Added [Source Sans Pro](https://beautifulwebtype.com/source-sans-pro/)**\n* **Improved display of figures on detail pages**\n\n## 26 Nov 2018\n* **Added [Work Sans](https://beautifulwebtype.com/work-sans/)**\n* **Updated [Alegreya](https://beautifulwebtype.com/alegreya/) to v2.008**\n\n## 25 Nov 2018\n* **Improved the design of several samples**\n* **Added [Le Murmure](https://beautifulwebtype.com/le-murmure/)**\n* **Removed Colus**. After adding this typeface earlier in the week, I discovered that it was free but not open-source. After some thought I’ve decided to focus exclusively on open-source, rather than just free, typefaces.\n\n## 20 Nov 2018\n* **Added [Poppins](https://beautifulwebtype.com/poppins/)**\n* **Added [Colus](https://beautifulwebtype.com/colus/)**\n* **Updated home page to show only 10 latest typefaces as well as pairings**. Given the number of typefaces now on the site, showing them all was causing the home page to load too slowly.\n\n## 19 Nov 2018\n* **Improved layout and design for tablets**\n\n## 09 Nov 2018\n* **Added first group of [recommended typeface pairings](https://beautifulwebtype.com/pairings/)**. Each pairing example is also available from the detail pages of the respective typefaces.\n\n## 06 Nov 2018\n* **Added short description for each typeface**\n\n## 04 Nov 2018\n* **Added a P2P mirror via the Dat protocol at [dat://beautifulwebtype.com/](dat://beautifulwebtype.com/).** You can access the distributed version using [Beaker Browser](https://beakerbrowser.com).\n* **Updated the sample for [IBM Plex Mono](https://beautifulwebtype.com/ibm-plex-mono/)**\n\n## 02 Nov 2018\n* **Added [IBM Plex Mono](https://beautifulwebtype.com/ibm-plex-mono/)**\n\n## 01 Nov 2018\n* **Added [IBM Plex Sans Condensed](https://beautifulwebtype.com/ibm-plex-sans-condensed/)**\n\n## 31 Oct 2018\n* **Added [IBM Plex Sans](https://beautifulwebtype.com/ibm-plex-sans/)**\n\n## 30 Oct 2018\n* **Added [IBM Plex Serif](https://beautifulwebtype.com/ibm-plex-serif/)**\n\n## 28 Oct 2018\n* **Added [BioRhyme Expanded](https://beautifulwebtype.com/biorhyme-expanded/)**\n\n## 25 Oct 2018\n* **Preload some fonts to improve rendering on page load**. It's going to be a constant challenge with page load times and font rendering, given the number of assets I'm loading. As a first step, I'm preloading fonts that appear in the site header and index page headers.\n\n## 23 Oct 2018\n* **Added [FiraGo](https://beautifulwebtype.com/firago/)**\n\n## 22 Oct 2018\n* **Added [Rakkas](https://beautifulwebtype.com/rakkas/)**\n\n## 19 Oct 2018\n* **Added [Archivo Black](https://beautifulwebtype.com/archivo-black/)**\n* **Updated the visual design of all typeface samples**. My original intention was to keep all the samples black and white in order to focus attention on the typeface rather than the design. However, I came to feel that the black backgrounds when viewed together became too monotonous. Additionally, the color helps to suggest a usage context for each typeface.\n* **Removed Merriweather**. I could no longer ignore the feeling that Merriweather was not a top-quality open-source typeface. It's missing ligatures and other OpenType features and aesthetically I feel it has flaws.\n\n## 15 Oct 2018\n* Completely new version of site with new typefaces, updated examples, and new detail pages showing OpenType features and more.\n"
  },
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2019 Chad Mazzola\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# [Beautiful Web Type](https://beautifulwebtype.com)\n\nIn October 2018 I released a completely re-thought and re-designed version of this project. The new version aims to provide a complete look at each typeface, cataloging all the available weights and styles, the full glyph set, the kerning quality, OpenType features, recommended pairings and more. I will highlight only typefaces that show a high level of quality.\n\nThe original version of the site is archived here: https://beautifulwebtype.com/v1/\n\n## Changelog\n\n### 20 Mar 2026\n* **Removed Jost**, as the creator now charges for the variable font.\n\n### 06 Jun 2025\n* **Added [Commissioner](https://beautifulwebtype.com/commissioner/)**.\n\n### 05 Jun 2025\n* **Added [Instrument Sans](https://beautifulwebtype.com/instrument-sans/)**.\n* **Added [Instrument Serif](https://beautifulwebtype.com/instrument-serif/)**.\n\n### 23 Oct 2023\n* **Added [TASA Orbiter](https://beautifulwebtype.com/tasa-orbiter/)**.\n\n### 8 Apr 2023\n * **Updated [Source Code Pro](https://beautifulwebtype.com/source-code-pro/)** to version 1.024.\n\n### 22 Nov 2020\n* **Added [Fraunces](https://beautifulwebtype.com/fraunces/)**.\n* **Added pairing example** for Fraunces and Libre Franklin.\n* **Added pairing example** for Messapia and Inter.\n\n**[Read full Changelog](./CHANGELOG.md)**\n\n## Featured typefaces\nAll typefaces are licensed under the [SIL Open Font License](https://scripts.sil.org/OFL).\n\n* [Alegreya](https://beautifulwebtype.com/alegreya/) &#8594; [Glyph inspector](https://beautifulwebtype.com/alegreya/glyphs/)\n* [Alegreya Sans](https://beautifulwebtype.com/alegreya-sans/) &#8594; [Glyph inspector](https://beautifulwebtype.com/alegreya-sans/glyphs/)\n* [Archivo](https://beautifulwebtype.com/archivo/) &#8594; [Glyph inspector](https://beautifulwebtype.com/archivo/glyphs/)\n* [Archivo Black](https://beautifulwebtype.com/archivo-black/) &#8594; [Glyph inspector](https://beautifulwebtype.com/archivo-black/glyphs/)\n* [BioRhyme](https://beautifulwebtype.com/biorhyme/) &#8594; [Glyph inspector](https://beautifulwebtype.com/biorhyme/glyphs/)\n* [BioRhyme Expanded](https://beautifulwebtype.com/biorhyme-expanded/) &#8594; [Glyph inspector](https://beautifulwebtype.com/biorhyme-expanded/glyphs/)\n* [Commissioner](https://beautifulwebtype.com/commissioner/) &#8594; [Glyph inspector](https://beautifulwebtype.com/commissioner/glyphs/)\n* [Cooper Hewitt](https://beautifulwebtype.com/cooper-hewitt/) &#8594; [Glyph inspector](https://beautifulwebtype.com/cooper-hewitt/glyphs/)\n* [Crimson Pro](https://beautifulwebtype.com/crimson-pro/) &#8594; [Glyph inspector](https://beautifulwebtype.com/crimson-pro/glyphs/)\n* [Fira Code](https://beautifulwebtype.com/fira-code/) &#8594; [Glyph inspector](https://beautifulwebtype.com/fira-code/glyphs/)\n* [FiraGo](https://beautifulwebtype.com/firago/) &#8594; [Glyph inspector](https://beautifulwebtype.com/firago/glyphs/)\n* [Fivo Sans](https://beautifulwebtype.com/fivo-sans/) &#8594; [Glyph inspector](https://beautifulwebtype.com/fivo-sans/glyphs/)\n* [Fivo Sans Modern](https://beautifulwebtype.com/fivo-sans-modern/) &#8594; [Glyph inspector](https://beautifulwebtype.com/fivo-sans-modern/glyphs/)\n* [Fraunces](https://beautifulwebtype.com/fraunces/) &#8594; [Glyph inspector](https://beautifulwebtype.com/fraunces/glyphs/)\n* [iA Writer Quattro](https://beautifulwebtype.com/ia-writer-quattro/) &#8594; [Glyph inspector](https://beautifulwebtype.com/ia-writer-quattro/glyphs/)\n* [IBM Plex Mono](https://beautifulwebtype.com/ibm-plex-mono/) &#8594; [Glyph inspector](https://beautifulwebtype.com/ibm-plex-mono/glyphs/)\n* [IBM Plex Sans](https://beautifulwebtype.com/ibm-plex-sans/) &#8594; [Glyph inspector](https://beautifulwebtype.com/ibm-plex-sans/glyphs/)\n* [IBM Plex Sans Condensed](https://beautifulwebtype.com/ibm-plex-sans-condensed/) &#8594; [Glyph inspector](https://beautifulwebtype.com/ibm-plex-sans-condensed/glyphs/)\n* [IBM Plex Serif](https://beautifulwebtype.com/ibm-plex-serif/) &#8594; [Glyph inspector](https://beautifulwebtype.com/ibm-plex-serif/glyphs/)\n* [Inria Sans](https://beautifulwebtype.com/inria-sans/) &#8594; [Glyph inspector](https://beautifulwebtype.com/inria-sans/glyphs/)\n* [Inria Serif](https://beautifulwebtype.com/inria-serif/) &#8594; [Glyph inspector](https://beautifulwebtype.com/inria-serif/glyphs/)\n* [Instrument Sans](https://beautifulwebtype.com/instrument-sans/) &#8594; [Glyph inspector](https://beautifulwebtype.com/instrument-sans/glyphs/)\n* [Instrument Serif](https://beautifulwebtype.com/instrument-serif/) &#8594; [Glyph inspector](https://beautifulwebtype.com/instrument-serif/glyphs/)\n* [Inter](https://beautifulwebtype.com/inter/) &#8594; [Glyph inspector](https://beautifulwebtype.com/inter/glyphs/)\n* [Le Murmure](https://beautifulwebtype.com/le-murmure/) &#8594; [Glyph inspector](https://beautifulwebtype.com/le-murmure/glyphs/)\n* [Libre Franklin](https://beautifulwebtype.com/libre-franklin/) &#8594; [Glyph inspector](https://beautifulwebtype.com/libre-franklin/glyphs/)\n* [Lora](https://beautifulwebtype.com/lora/) &#8594; [Glyph inspector](https://beautifulwebtype.com/lora/glyphs/)\n* [Messapia](https://beautifulwebtype.com/messapia/) &#8594; [Glyph inspector](https://beautifulwebtype.com/messapia/glyphs/)\n* [Oswald](https://beautifulwebtype.com/oswald/) &#8594; [Glyph inspector](https://beautifulwebtype.com/oswald/glyphs/)\n* [Playfair Display](https://beautifulwebtype.com/playfair-display/) &#8594; [Glyph inspector](https://beautifulwebtype.com/playfair-display/glyphs/)\n* [Poppins](https://beautifulwebtype.com/poppins/) &#8594; [Glyph inspector](https://beautifulwebtype.com/poppins/glyphs/)\n* [Rakkas](https://beautifulwebtype.com/rakkas/) &#8594; [Glyph inspector](https://beautifulwebtype.com/rakkas/glyphs/)\n* [Source Code Pro](https://beautifulwebtype.com/source-code-pro/) &#8594; [Glyph inspector](https://beautifulwebtype.com/source-code-pro/glyphs/)\n* [Source Sans Pro](https://beautifulwebtype.com/source-sans-pro/) &#8594; [Glyph inspector](https://beautifulwebtype.com/source-sans-pro/glyphs/)\n* [Source Serif Pro](https://beautifulwebtype.com/source-serif-pro/) &#8594; [Glyph inspector](https://beautifulwebtype.com/source-serif-pro/glyphs/)\n* [Space Grotesk](https://beautifulwebtype.com/space-grotesk/) &#8594; [Glyph inspector](https://beautifulwebtype.com/space-grotesk/glyphs/)\n* [Space Mono](https://beautifulwebtype.com/space-mono/) &#8594; [Glyph inspector](https://beautifulwebtype.com/space-mono/glyphs/)\n* [TASA Orbiter](https://beautifulwebtype.com/tasa-orbiter/) &#8594; [Glyph inspector](https://beautifulwebtype.com/tasa-orbiter/glyphs/)\n* [Vollkorn](https://beautifulwebtype.com/vollkorn/) &#8594; [Glyph inspector](https://beautifulwebtype.com/vollkorn/glyphs/)\n* [Work Sans](https://beautifulwebtype.com/work-sans/) &#8594; [Glyph inspector](https://beautifulwebtype.com/work-sans/glyphs/)\n* [Zilla Slab](https://beautifulwebtype.com/zilla-slab/) &#8594; [Glyph inspector](https://beautifulwebtype.com/zilla-slab/glyphs/)\n\n## Suggesting Typefaces\n\nI'm happy to receive suggestions for typefaces via [a GitHub issue](https://github.com/ubuwaits/beautiful-web-type/issues). When sending suggestions please include an example or two of the typeface in use. This helps me to make an initial evaluation of the typeface.\n\n## Local development\n\nInstall dependencies and start the Next.js dev server:\n\n    pnpm install\n    pnpm dev\n\nUseful commands:\n\n    pnpm build\n    pnpm test\n\n## Content authoring\n\nThe site's authored content lives in `content/`.\n\n### Add a typeface\n\nCreate `content/typefaces/<slug>/` with:\n\n- `meta.yml`\n- `detail.html`\n- `sample.html`\n- `glyphs.yml`\n\n`meta.yml` holds the typeface metadata used by the app, including `name`, `dateAdded`, `category`, `styles`, `weights`, `latestRelease`, `projectUrl`, `creator`, `description`, and optional fields like `gFontsUrl`, `italic`, `smallcap`, `sampleShade`, `familyFaces`, and `comparisonFaces`.\n\n`detail.html` is the trusted HTML fragment rendered on the typeface detail page.\n\n`sample.html` is the trusted HTML fragment rendered in listing cards and on the detail page.\n\n`glyphs.yml` must include:\n\n```yml\nfontFile: /assets/fonts/example/example.woff\n```\n\n### Add a pairing\n\nCreate `content/pairings/<slug>/` with:\n\n- `meta.yml`\n- `sample.html`\n\n`meta.yml` must include `name`, `dateAdded`, `typefaces`, and optional `sampleShade`.\n\n`sample.html` is the trusted HTML fragment rendered on pairing cards.\n\n### Shared site text\n\n`content/site/text.yml` holds the reusable `words`, `headlines`, and `paragraphs` arrays used across specimen pages.\n"
  },
  {
    "path": "app/[typefaceSlug]/glyphs/page.tsx",
    "content": "import type { Metadata } from \"next\";\nimport { notFound } from \"next/navigation\";\n\nimport { BreadcrumbJsonLd } from \"@/components/breadcrumb-jsonld\";\nimport { GlyphInspector } from \"@/components/glyph-inspector\";\nimport { PageShell } from \"@/components/page-shell\";\nimport { getAllTypefaceSlugs, getGlyphPageBySlug, getTypefaceBySlug } from \"@/lib/content\";\nimport { getGlyphPath, getTypefacePath } from \"@/lib/routes\";\n\nexport const dynamicParams = false;\n\nconst SITE_NAME = \"Beautiful Web Type\";\nconst TWITTER_CREATOR = \"@ubuwaits\";\n\nexport function generateStaticParams() {\n  return getAllTypefaceSlugs().map((typefaceSlug) => ({ typefaceSlug }));\n}\n\nexport async function generateMetadata({\n  params\n}: {\n  params: Promise<{ typefaceSlug: string }>;\n}): Promise<Metadata> {\n  const { typefaceSlug } = await params;\n  const typeface = getTypefaceBySlug(typefaceSlug);\n\n  if (!typeface) {\n    return {};\n  }\n\n  const title = `${typeface.name} Glyph Inspector`;\n  const description = `Explore the complete character set for the free font ${typeface.name}`;\n  const imagePath = `/assets/images/${typeface.slug}.png`;\n  const path = getGlyphPath(typeface.slug);\n\n  return {\n    title,\n    description,\n    alternates: {\n      canonical: path\n    },\n    openGraph: {\n      title,\n      siteName: SITE_NAME,\n      description,\n      url: path,\n      images: [imagePath]\n    },\n    twitter: {\n      card: \"summary_large_image\",\n      creator: TWITTER_CREATOR,\n      images: [imagePath]\n    }\n  };\n}\n\nexport default async function GlyphPage({\n  params\n}: {\n  params: Promise<{ typefaceSlug: string }>;\n}) {\n  const { typefaceSlug } = await params;\n  const typeface = getTypefaceBySlug(typefaceSlug);\n  const glyphPage = getGlyphPageBySlug(typefaceSlug);\n\n  if (!typeface || !glyphPage) {\n    notFound();\n  }\n\n  return (\n    <PageShell bodyClass={glyphPage.bodyClass}>\n      <BreadcrumbJsonLd\n        items={[\n          { name: \"Free & Open-Source Fonts\", path: \"/\" },\n          { name: typeface.category, path: `/${typeface.categorySlug}/` },\n          { name: typeface.name, path: getTypefacePath(typeface.slug) },\n          { name: \"Glyph Inspector\", path: getGlyphPath(typeface.slug) }\n        ]}\n      />\n      <GlyphInspector\n        fontClassName={typeface.slug}\n        fontFile={glyphPage.fontFile}\n        typefaceName={typeface.name}\n        typefacePath={getTypefacePath(typeface.slug)}\n      />\n    </PageShell>\n  );\n}\n"
  },
  {
    "path": "app/[typefaceSlug]/page.tsx",
    "content": "import type { Metadata } from \"next\";\nimport { notFound } from \"next/navigation\";\n\nimport { BreadcrumbJsonLd } from \"@/components/breadcrumb-jsonld\";\nimport { PageShell } from \"@/components/page-shell\";\nimport { TypefaceDetail } from \"@/components/typeface-detail\";\nimport {\n  getAllTypefaceSlugs,\n  getPairingsForTypeface,\n  getSampleForTypeface,\n  getTextData,\n  getTypefaceBySlug\n} from \"@/lib/content\";\nimport { getTypefacePath } from \"@/lib/routes\";\n\nexport const dynamicParams = false;\n\nconst SITE_NAME = \"Beautiful Web Type\";\nconst TWITTER_CREATOR = \"@ubuwaits\";\n\nexport function generateStaticParams() {\n  return getAllTypefaceSlugs().map((typefaceSlug) => ({ typefaceSlug }));\n}\n\nexport async function generateMetadata({\n  params\n}: {\n  params: Promise<{ typefaceSlug: string }>;\n}): Promise<Metadata> {\n  const { typefaceSlug } = await params;\n  const typeface = getTypefaceBySlug(typefaceSlug);\n\n  if (!typeface) {\n    return {};\n  }\n\n  const title = `Complete Guide to ${typeface.name}`;\n  const description = `Complete guide to the free font ${typeface.name}. See beautiful examples, recommended pairings, OpenType features, and more.`;\n  const imagePath = `/assets/images/${typeface.slug}.png`;\n  const path = getTypefacePath(typeface.slug);\n\n  return {\n    title,\n    description,\n    alternates: {\n      canonical: path\n    },\n    openGraph: {\n      title,\n      siteName: SITE_NAME,\n      description,\n      url: path,\n      images: [imagePath]\n    },\n    twitter: {\n      card: \"summary_large_image\",\n      creator: TWITTER_CREATOR,\n      images: [imagePath]\n    }\n  };\n}\n\nexport default async function TypefacePage({\n  params\n}: {\n  params: Promise<{ typefaceSlug: string }>;\n}) {\n  const { typefaceSlug } = await params;\n  const typeface = getTypefaceBySlug(typefaceSlug);\n\n  if (!typeface) {\n    notFound();\n  }\n\n  const sample = getSampleForTypeface(typeface.name);\n\n  if (!sample) {\n    notFound();\n  }\n\n  const pairings = getPairingsForTypeface(typeface.name);\n  const text = getTextData();\n\n  return (\n    <PageShell bodyClass={typeface.bodyClass}>\n      <BreadcrumbJsonLd\n        items={[\n          { name: \"Free & Open-Source Fonts\", path: \"/\" },\n          { name: typeface.category, path: `/${typeface.categorySlug}/` },\n          { name: typeface.name, path: getTypefacePath(typeface.slug) }\n        ]}\n      />\n      <TypefaceDetail\n        pairings={pairings}\n        sampleBody={sample.bodyHtml}\n        text={text}\n        typeface={typeface}\n      />\n    </PageShell>\n  );\n}\n"
  },
  {
    "path": "app/display/page.tsx",
    "content": "import type { Metadata } from \"next\";\n\nimport { CategoryRoutePage } from \"@/components/category-route-page\";\n\nexport const metadata: Metadata = {\n  title: \"In-Depth Guide to the Best Free Headline & Display Fonts\",\n  alternates: {\n    canonical: \"/display/\"\n  }\n};\n\nexport default function DisplayPage() {\n  return (\n    <CategoryRoutePage\n      bodyClass=\"display\"\n      breadcrumbLabel=\"Display\"\n      categorySlug=\"display\"\n      heading=\"Display Typefaces\"\n      path=\"/display/\"\n    />\n  );\n}\n"
  },
  {
    "path": "app/feed.xml/route.ts",
    "content": "import { getLatestTypefaces } from \"@/lib/content\";\nimport { buildAtomFeedXml } from \"@/lib/feed\";\n\nexport const dynamic = \"force-static\";\n\nexport function GET() {\n  return new Response(buildAtomFeedXml(getLatestTypefaces()), {\n    headers: {\n      \"Content-Type\": \"application/atom+xml; charset=utf-8\"\n    }\n  });\n}\n"
  },
  {
    "path": "app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n.main-nav a.active {\n  border-bottom-color: var(--red);\n  color: var(--red);\n}\n\n.menu-link {\n  cursor: pointer;\n}\n\nbody.menu-open {\n  overflow: hidden;\n}\n\n@media screen and (max-width: 1104px) {\n  body .mobile-menu {\n    position: fixed;\n    right: 0.25rem;\n    top: 0.5rem;\n    visibility: visible;\n    z-index: 1002;\n  }\n\n  body .mobile-menu .menu-line {\n    transition-duration: 0.25s;\n    transition-property: transform, opacity;\n    transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n  }\n\n  body .menu-overlay {\n    -webkit-backdrop-filter: none;\n    align-items: center;\n    backdrop-filter: none;\n    background-color: #fff;\n    display: flex;\n    inset: 0;\n    justify-content: center;\n    min-height: 100dvh;\n    opacity: 0;\n    padding: 1.5rem;\n    pointer-events: none;\n    position: fixed;\n    visibility: hidden;\n    width: 100vw;\n    z-index: 1001;\n  }\n\n  body .menu-overlay.open {\n    opacity: 1;\n    pointer-events: auto;\n    visibility: visible;\n  }\n\n  body .menu-overlay .main-nav {\n    align-items: center;\n    display: flex;\n    flex-direction: column;\n    gap: 0.9rem;\n    justify-content: center;\n    min-height: 100%;\n    text-align: center;\n    width: 100%;\n  }\n\n  body .menu-overlay li {\n    margin: 0;\n    padding: 0;\n  }\n\n  body .menu-overlay li.nav-home {\n    display: none;\n  }\n\n  body .menu-overlay a {\n    display: block;\n    padding: 0.25rem 0;\n  }\n}\n"
  },
  {
    "path": "app/layout.tsx",
    "content": "import type { Metadata } from \"next\";\nimport type { ReactNode } from \"react\";\nimport { Analytics } from \"@vercel/analytics/next\";\n\nimport { SiteFooter } from \"@/components/footer\";\nimport { SiteHeader } from \"@/components/site-header\";\n\nimport \"./globals.css\";\n\nconst SITE_NAME = \"Beautiful Web Type\";\nconst SITE_ORIGIN = \"https://www.beautifulwebtype.com\";\nconst DEFAULT_SITE_DESCRIPTION =\n  \"Discover the best free fonts from Google and across the web. See beautiful examples, recommended pairings, OpenType features, and more.\";\nconst DEFAULT_SOCIAL_IMAGE_PATH = \"/assets/images/card.png\";\nconst TWITTER_CREATOR = \"@ubuwaits\";\n\nexport const metadata: Metadata = {\n  metadataBase: new URL(SITE_ORIGIN),\n  title: {\n    default: SITE_NAME,\n    template: `%s • ${SITE_NAME}`\n  },\n  description: DEFAULT_SITE_DESCRIPTION,\n  openGraph: {\n    title: SITE_NAME,\n    siteName: SITE_NAME,\n    description: DEFAULT_SITE_DESCRIPTION,\n    url: SITE_ORIGIN,\n    images: [DEFAULT_SOCIAL_IMAGE_PATH]\n  },\n  twitter: {\n    card: \"summary_large_image\",\n    creator: TWITTER_CREATOR,\n    images: [DEFAULT_SOCIAL_IMAGE_PATH]\n  },\n  icons: {\n    icon: [\n      { rel: \"icon\", url: \"/favicon-96x96.png\", sizes: \"96x96\", type: \"image/png\" },\n      { rel: \"icon\", url: \"/favicon-32x32.png\", sizes: \"32x32\", type: \"image/png\" },\n      { rel: \"icon\", url: \"/favicon-16x16.png\", sizes: \"16x16\", type: \"image/png\" }\n    ]\n  }\n};\n\nexport default function RootLayout({ children }: { children: ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <head>\n        <link href=\"/css/application.css\" media=\"screen\" rel=\"stylesheet\" type=\"text/css\" />\n        <link\n          href=\"/feed.xml\"\n          rel=\"alternate\"\n          title=\"Typefaces\"\n          type=\"application/atom+xml\"\n        />\n        <link\n          as=\"font\"\n          crossOrigin=\"anonymous\"\n          href=\"/assets/fonts/alegreya-sans/AlegreyaSans-BlackItalic.woff2\"\n          rel=\"preload\"\n          type=\"font/woff2\"\n        />\n        <link\n          as=\"font\"\n          crossOrigin=\"anonymous\"\n          href=\"/assets/fonts/alegreya-sans/AlegreyaSans-Italic.woff2\"\n          rel=\"preload\"\n          type=\"font/woff2\"\n        />\n        <link\n          as=\"font\"\n          crossOrigin=\"anonymous\"\n          href=\"/assets/fonts/source-sans-pro/SourceSansVariable-Roman.ttf.woff2\"\n          rel=\"preload\"\n          type=\"font/woff2\"\n        />\n      </head>\n      <body className=\"min-h-screen\" spellCheck={false}>\n        <SiteHeader />\n        {children}\n        <SiteFooter />\n        <Analytics />\n      </body>\n    </html>\n  );\n}\n"
  },
  {
    "path": "app/monospaced/page.tsx",
    "content": "import type { Metadata } from \"next\";\n\nimport { CategoryRoutePage } from \"@/components/category-route-page\";\n\nexport const metadata: Metadata = {\n  title: \"In-Depth Guide to the Best Free Monospaced Fonts\",\n  alternates: {\n    canonical: \"/monospaced/\"\n  }\n};\n\nexport default function MonospacedPage() {\n  return (\n    <CategoryRoutePage\n      bodyClass=\"monospaced\"\n      breadcrumbLabel=\"Monospaced\"\n      categorySlug=\"monospaced\"\n      heading=\"Monospaced Typefaces\"\n      path=\"/monospaced/\"\n    />\n  );\n}\n"
  },
  {
    "path": "app/not-found.tsx",
    "content": "import { PageShell } from \"@/components/page-shell\";\n\nexport default function NotFound() {\n  return (\n    <PageShell>\n      <p\n        style={{\n          font: \"700 var(--ms7)/1.2 var(--poppins)\",\n          margin: \"0 auto\",\n          maxWidth: \"980px\",\n          padding: \"1em 0\",\n          textAlign: \"center\"\n        }}\n      >\n        The page you were trying to reach doesn’t exist.\n      </p>\n    </PageShell>\n  );\n}\n"
  },
  {
    "path": "app/page.tsx",
    "content": "import type { Metadata } from \"next\";\n\nimport { BreadcrumbJsonLd } from \"@/components/breadcrumb-jsonld\";\nimport { PairingCard } from \"@/components/pairing-card\";\nimport { PageShell } from \"@/components/page-shell\";\nimport { SampleCard } from \"@/components/sample-card\";\nimport {\n  getLatestPairings,\n  getLatestTypefaces,\n  getSampleForTypeface\n} from \"@/lib/content\";\n\nconst latestTypefaces = getLatestTypefaces().slice(0, 10);\nconst latestPairings = getLatestPairings();\n\nexport const metadata: Metadata = {\n  title: \"In-Depth Guide to the Best Free Fonts\",\n  alternates: {\n    canonical: \"/\"\n  }\n};\n\nexport default function HomePage() {\n  return (\n    <PageShell>\n      <BreadcrumbJsonLd items={[{ name: \"Free & Open-Source Fonts\", path: \"/\" }]} />\n      <div className=\"samples grid\">\n        <div className=\"gr1 gc12 page-header center\">\n          <h1>\n            Guide to Only the Best\n            <br /> Open-Source Typefaces\n          </h1>\n        </div>\n\n        {latestTypefaces.map((typeface) => {\n          const sample = getSampleForTypeface(typeface.name);\n\n          if (!sample) {\n            return null;\n          }\n\n          return <SampleCard key={typeface.slug} sample={sample} typeface={typeface} />;\n        })}\n\n        <h2 className=\"page-subhead gc1 gc12 mt3 ase\">Latest pairings</h2>\n        {latestPairings.map((pairing) => (\n          <PairingCard key={pairing.slug} pairing={pairing} />\n        ))}\n      </div>\n    </PageShell>\n  );\n}\n"
  },
  {
    "path": "app/pairings/page.tsx",
    "content": "import type { Metadata } from \"next\";\n\nimport { BreadcrumbJsonLd } from \"@/components/breadcrumb-jsonld\";\nimport { PairingCard } from \"@/components/pairing-card\";\nimport { PageShell } from \"@/components/page-shell\";\nimport { getLatestPairings } from \"@/lib/content\";\n\nconst latestPairings = getLatestPairings();\n\nexport const metadata: Metadata = {\n  title: \"Recommended Typeface Pairings\",\n  description:\n    \"See beautiful examples of recommended pairings using only free & open-source fonts.\",\n  alternates: {\n    canonical: \"/pairings/\"\n  }\n};\n\nexport default function PairingsPage() {\n  return (\n    <PageShell bodyClass=\"pairings\">\n      <BreadcrumbJsonLd items={[{ name: \"Free & Open-Source Fonts\", path: \"/\" }]} />\n      <div className=\"samples grid\">\n        <div className=\"gr1 gc12 page-header center\">\n          <h1>Recommended Typeface Pairings</h1>\n        </div>\n\n        {latestPairings.map((pairing) => (\n          <PairingCard key={pairing.slug} pairing={pairing} />\n        ))}\n      </div>\n    </PageShell>\n  );\n}\n"
  },
  {
    "path": "app/sans-serif/page.tsx",
    "content": "import type { Metadata } from \"next\";\n\nimport { CategoryRoutePage } from \"@/components/category-route-page\";\n\nexport const metadata: Metadata = {\n  title: \"In-Depth Guide to the Best Free Sans-Serif Fonts\",\n  alternates: {\n    canonical: \"/sans-serif/\"\n  }\n};\n\nexport default function SansSerifPage() {\n  return (\n    <CategoryRoutePage\n      bodyClass=\"sans-serif\"\n      breadcrumbLabel=\"Sans-Serif\"\n      categorySlug=\"sans-serif\"\n      heading=\"Sans-Serif Typefaces\"\n      path=\"/sans-serif/\"\n    />\n  );\n}\n"
  },
  {
    "path": "app/serif/page.tsx",
    "content": "import type { Metadata } from \"next\";\n\nimport { CategoryRoutePage } from \"@/components/category-route-page\";\n\nexport const metadata: Metadata = {\n  title: \"In-Depth Guide to the Best Free Serif Fonts\",\n  alternates: {\n    canonical: \"/serif/\"\n  }\n};\n\nexport default function SerifPage() {\n  return (\n    <CategoryRoutePage\n      bodyClass=\"serif\"\n      breadcrumbLabel=\"Serif\"\n      categorySlug=\"serif\"\n      heading=\"Serif Typefaces\"\n      path=\"/serif/\"\n    />\n  );\n}\n"
  },
  {
    "path": "app/sitemap.ts",
    "content": "import type { MetadataRoute } from \"next\";\n\nimport { getAllTypefaces } from \"@/lib/content\";\nimport {\n  STATIC_SITEMAP_PATHS,\n  getGlyphPath,\n  getTypefacePath,\n  toAbsoluteUrl\n} from \"@/lib/routes\";\n\nexport const dynamic = \"force-static\";\n\nexport default function sitemap(): MetadataRoute.Sitemap {\n  const lastModified = new Date();\n  const typefaces = getAllTypefaces();\n\n  return [\n    ...STATIC_SITEMAP_PATHS.map((path) => ({\n      url: toAbsoluteUrl(path),\n      lastModified\n    })),\n    ...typefaces.map((typeface) => ({\n      url: toAbsoluteUrl(getTypefacePath(typeface.slug)),\n      lastModified\n    })),\n    ...typefaces.map((typeface) => ({\n      url: toAbsoluteUrl(getGlyphPath(typeface.slug)),\n      lastModified\n    }))\n  ];\n}\n"
  },
  {
    "path": "app/v1/page.tsx",
    "content": "import fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport type { Metadata } from \"next\";\n\nconst LEGACY_V1_PATH = path.join(process.cwd(), \"v1/index.html\");\n\nfunction extractBodyHtml(html: string): string {\n  const match = html.match(/<body[^>]*>([\\s\\S]*?)<\\/body>/i);\n\n  if (!match) {\n    throw new Error(`Unable to find legacy v1 body markup in ${LEGACY_V1_PATH}`);\n  }\n\n  return match[1].trim();\n}\n\nconst legacyBodyHtml = extractBodyHtml(fs.readFileSync(LEGACY_V1_PATH, \"utf8\"));\n\nexport const metadata: Metadata = {\n  title: {\n    absolute: \"Beautiful Web Type - the best typefaces from Google Fonts\"\n  },\n  description: \"A showcase of the best typefaces from the Google web fonts directory.\",\n  alternates: {\n    canonical: \"/v1/\"\n  }\n};\n\nexport default function LegacyV1Page() {\n  return (\n    <>\n      <link href=\"/v1/stylesheets/application.css\" media=\"screen\" rel=\"stylesheet\" />\n      <link href=\"https://fonts.googleapis.com\" rel=\"preconnect\" />\n      <link crossOrigin=\"anonymous\" href=\"https://fonts.gstatic.com\" rel=\"preconnect\" />\n      <link\n        href=\"https://fonts.googleapis.com/css?family=Abril+Fatface|Open+Sans:300,400,600,700,800|Gentium+Book+Basic:400,400italic|Vollkorn:400italic,400\"\n        rel=\"stylesheet\"\n      />\n      <link\n        href=\"https://fonts.googleapis.com/css?family=Gravitas+One|Lato:100,900|Old+Standard+TT:400,400italic|PT+Serif:400|PT+Sans+Narrow:700\"\n        rel=\"stylesheet\"\n      />\n      <link\n        href=\"https://fonts.googleapis.com/css?family=PT+Sans:700|Merriweather:400,900|Playfair+Display:400,900,700italic|Oswald:700|PT+Mono\"\n        rel=\"stylesheet\"\n      />\n      <link\n        href=\"https://fonts.googleapis.com/css?family=Cardo:400,400italic\"\n        rel=\"stylesheet\"\n      />\n      <link href=\"https://fonts.googleapis.com/css?family=Fira+Mono:400,500|Vidaloka\" rel=\"stylesheet\" />\n      <style>{`\n        .legacy-v1,\n        .legacy-v1 *,\n        .legacy-v1 *::before,\n        .legacy-v1 *::after {\n          box-sizing: content-box;\n        }\n\n        header.site-header,\n        .mobile-menu,\n        .menu-overlay,\n        footer.grid {\n          display: none !important;\n        }\n      `}</style>\n      <div className=\"legacy-v1\" dangerouslySetInnerHTML={{ __html: legacyBodyHtml }} />\n    </>\n  );\n}\n"
  },
  {
    "path": "assets/fonts/alegreya/LICENSE.md",
    "content": "Copyright (c) 2011, Juan Pablo del Peral (juan@huertatipografica.com), with Reserved Font Names 'Alegreya' and 'Alegreya SC'\n\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n\n# SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n\n\n### PREAMBLE\n\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded,\nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\n### DEFINITIONS\n\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\n### PERMISSION & CONDITIONS\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1. Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2. Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3. No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5. The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\n### TERMINATION\n\nThis license becomes null and void if any of the above conditions are\nnot met.\n\n### DISCLAIMER\n\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/alegreya-sans/LICENSE.md",
    "content": "Copyright (c) 2013, Juan Pablo del Peral (juan@huertatipografica.com), with Reserved Font Names 'Alegreya Sans'\n\n\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n\n# SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n\n\n### PREAMBLE\n\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\n### DEFINITIONS\n\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\n### PERMISSION & CONDITIONS\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1. Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2. Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3. No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5. The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\n### TERMINATION\n\nThis license becomes null and void if any of the above conditions are\nnot met.\n\n### DISCLAIMER\n\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/archivo/LICENSE.md",
    "content": "Copyright (c) 2014-2018, Omnibus-Type (www.omnibus-type.com|omnibus.type@gmail.com).\n\n\n*This Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL*\n\n\n# SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n\n\n### PREAMBLE\n\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\n### DEFINITIONS\n\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\n### PERMISSION & CONDITIONS\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1. Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2. Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3. No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5. The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\n### TERMINATION\n\nThis license becomes null and void if any of the above conditions are\nnot met.\n\n### DISCLAIMER\n\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE."
  },
  {
    "path": "assets/fonts/archivo-black/LICENSE.md",
    "content": "Copyright (c) 2012-2018, Omnibus-Type (www.omnibus-type.com|omnibus.type@gmail.com)\n\n\n*This Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL*\n\n\n# SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n\n\n### PREAMBLE\n\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\n### DEFINITIONS\n\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\n### PERMISSION & CONDITIONS\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1. Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2. Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3. No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5. The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\n### TERMINATION\n\nThis license becomes null and void if any of the above conditions are\nnot met.\n\n### DISCLAIMER\n\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE."
  },
  {
    "path": "assets/fonts/biorhyme/LICENSE.md",
    "content": "Copyright 2016 Aoife Mooney (aoifemooney@gmail.com www.aoifemooney.org)\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\n\n—————————————————————————————-\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n—————————————————————————————-\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.\n\nDEFINITIONS\n“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.\n\n“Reserved Font Name” refers to any names specified as such after the copyright statement(s).\n\n“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s).\n\n“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.\n\n“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.\n\n5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are not met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/biorhyme-expanded/LICENSE.md",
    "content": "Copyright 2016 Aoife Mooney (aoifemooney@gmail.com www.aoifemooney.org)\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\n\n—————————————————————————————-\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n—————————————————————————————-\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.\n\nDEFINITIONS\n“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.\n\n“Reserved Font Name” refers to any names specified as such after the copyright statement(s).\n\n“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s).\n\n“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.\n\n“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.\n\n5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are not met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/commissioner/OFL.txt",
    "content": "Copyright 2019 The Commissioner Project Authors (https://github.com/kosbarts/Commissioner)\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttps://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/cooper-hewitt/LICENSE.md",
    "content": "Copyright (c) 2014, Cooper Hewitt Smithsonian Design Museum (cooperhewitt.org), with Reserved Font Name Cooper Hewitt.\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\n\n—————————————————————————————-\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n—————————————————————————————-\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.\n\nDEFINITIONS\n“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.\n\n“Reserved Font Name” refers to any names specified as such after the copyright statement(s).\n\n“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s).\n\n“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.\n\n“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.\n\n5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are not met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/firago/OFL.txt",
    "content": "Digitized data copyright 2012-2018 for FiraGO: Carrois Corporate GbR and HERE Europe B.V. All rights reserved. \nDigitized data copyright 2012-2018 for Fira Sans up to version 4.3: The Mozilla Foundation, Telefonica S.A., Carrois Corporate GbR and bBox Type GmbH.\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/fivo-sans/OFL.txt",
    "content": "Copyright 2017 Alexander Slobzheninov (www.behance.net/slobzheninov)\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/fivo-sans-modern/OFL.txt",
    "content": "Copyright 2017 Alexander Slobzheninov (www.behance.net/slobzheninov)\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/fraunces/README.md",
    "content": "# Fraunces, by Undercase Type\n\n*Designed by Phaedra Charles and Flavia Zimbardi.*\n\nFraunces is a display, \"Old Style\" soft-serif typeface inspired by the mannerisms of early 20th century typefaces such as Windsor, Souvenir, and the Cooper Series.\n\n## Desktop Recommendations\n\nYou can install all the fonts in the `Desktop` folder of this release at once, and their separate font family names will keep them separate in font menus. \n\nHowever, because variable fonts are still somewhat new and still gaining software support, you will have the most success using the static fonts in most cases, and using the variable fonts mostly on the web.\n\n### Desktop/Variable – Best for desktop web design in Sketch & experimental use in Adobe apps\n\nThe variable fonts will appear under a single family name:\n\n- Fraunces\n\nThis family will allow access of 12 styles: 6 weights + Italics. Many apps will automatically set the Optical Size axis to the appropriate value, given the current font size.\n\nSome apps will allow you to adjust the variable axes directly, such as Sketch, Adobe Illustrator, and Adobe Photoshop.\n\n### Desktop/Static – Best for graphic design for print & general desktop use\n\nThe static fonts are best to use if you are doing work that you intend for print or exporting to PDFs. Currently, even though variable fonts are usable in Adobe apps, they often have issues being exported to PDF, so it tends to be best to use static fonts for most graphic design purposes.\n\nWhen installed, the static fonts will each contain 6 weights + Italics, and have the following family names:\n\n- Fraunces 9pt\n- Fraunces 9pt Soft\n- Fraunces 9pt SuperSoft\n- Fraunces 72pt\n- Fraunces 72pt Soft\n- Fraunces 72pt SuperSoft\n- Fraunces 144pt\n- Fraunces 144pt Soft\n- Fraunces 144pt SuperSoft\n\n## Web Recommendations\n\nHere’s where variable fonts really shine. If you expect to use just two weights in three or more sizes (e.g. Regular & Bold at 16px, 40px, and 100px), you will start to save filesize by using a variable font over the static fonts. Of course, if really only want one or two styles of a font, it may be beneficial to use static web fonts instead.\n\n"
  },
  {
    "path": "assets/fonts/ia-writer-quattro/LICENSE.md",
    "content": "# iA Writer Typeface\n\nCopyright © 2018 Information Architects Inc. with Reserved Font Name \"iA Writer\"\n\n# Based on IBM Plex Typeface\n\nCopyright © 2017 IBM Corp. with Reserved Font Name \"Plex\"\n\n# License\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE."
  },
  {
    "path": "assets/fonts/ibm-plex-mono/license.txt",
    "content": "Copyright © 2017 IBM Corp. with Reserved Font Name \"Plex\"\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE."
  },
  {
    "path": "assets/fonts/ibm-plex-sans/license.txt",
    "content": "Copyright © 2017 IBM Corp. with Reserved Font Name \"Plex\"\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE."
  },
  {
    "path": "assets/fonts/ibm-plex-sans-condensed/license.txt",
    "content": "Copyright © 2017 IBM Corp. with Reserved Font Name \"Plex\"\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE."
  },
  {
    "path": "assets/fonts/ibm-plex-serif/license.txt",
    "content": "Copyright © 2017 IBM Corp. with Reserved Font Name \"Plex\"\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE."
  },
  {
    "path": "assets/fonts/inria-sans/LICENSE.txt",
    "content": "Copyright (c) 2017, Black[Foundry] (www.black-foundry.com | hello@black-foundry.com), with Reserved Font Name Inria Sans and Inria Serif.\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/inria-serif/LICENSE.txt",
    "content": "Copyright (c) 2017, Black[Foundry] (www.black-foundry.com | hello@black-foundry.com), with Reserved Font Name Inria Sans and Inria Serif.\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/instrument-sans/OFL.txt",
    "content": "Copyright 2022 The Instrument Sans Project Authors (https://github.com/Instrument/instrument-sans)\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttps://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/instrument-serif/OFL.txt",
    "content": "Copyright 2022 The Instrument Serif Project Authors (https://github.com/Instrument/instrument-serif)\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttps://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/inter/LICENSE.txt",
    "content": "Copyright (c) 2016-2020 The Inter Project Authors.\n\"Inter\" is a Reserved Font Name.\nhttps://github.com/rsms/inter\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded,\nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION AND CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/le-murmure/LICENSE.txt",
    "content": "This Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\nSIL Open Font License v1.1\n====================================================\n\n\nPreamble\n----------\n\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded,\nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\n\nDefinitions\n-------------\n\n`\"Font Software\"` refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n`\"Reserved Font Name\"` refers to any names specified as such after the\ncopyright statement(s).\n\n`\"Original Version\"` refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n`\"Modified Version\"` refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n`\"Author\"` refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\n\nPermission & Conditions\n------------------------\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1. Neither the Font Software nor any of its individual components,\n   in Original or Modified Versions, may be sold by itself.\n\n2. Original or Modified Versions of the Font Software may be bundled,\n   redistributed and/or sold with any software, provided that each copy\n   contains the above copyright notice and this license. These can be\n   included either as stand-alone text files, human-readable headers or\n   in the appropriate machine-readable metadata fields within text or\n   binary files as long as those fields can be easily viewed by the user.\n\n3. No Modified Version of the Font Software may use the Reserved Font\n   Name(s) unless explicit written permission is granted by the corresponding\n   Copyright Holder. This restriction only applies to the primary font name as\n   presented to the users.\n\n4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font\n   Software shall not be used to promote, endorse or advertise any\n   Modified Version, except to acknowledge the contribution(s) of the\n   Copyright Holder(s) and the Author(s) or with their explicit written\n   permission.\n\n5. The Font Software, modified or unmodified, in part or in whole,\n   must be distributed entirely under this license, and must not be\n   distributed under any other license. The requirement for fonts to\n   remain under this license does not apply to any document created\n   using the Font Software.\n\n\nTermination\n-----------\n\nThis license becomes null and void if any of the above conditions are\nnot met.\n\n\n    DISCLAIMER\n\n    THE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\n    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\n    OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\n    COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n    INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\n    DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n    FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\n    OTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/libre-franklin/OFL.txt",
    "content": "Copyright (c) 2015, Impallari Type (www.impallari.com)\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/lora/OFL.txt",
    "content": "Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name \"Lora\".\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/messapia/OFL.txt",
    "content": "Copyright (c) 2019, Collletttivo (collletttivo.it)\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/oswald/OFL.txt",
    "content": "Copyright 2016 The Oswald Project Authors (https://github.com/googlefonts/OswaldFont)\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/playfair-display/OFL.txt",
    "content": "Copyright 2017 The Playfair Display Project Authors (https://github.com/clauseggers/Playfair-Display), with Reserved Font Name \"Playfair Display\".\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded,\r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/rakkas/OFL.txt",
    "content": "Copyright 2016 Zeynep Akay\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/source-code-pro/LICENSE.txt",
    "content": "Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\n\r\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/source-sans-pro/LICENSE.md",
    "content": "Copyright 2010-2018 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\n\r\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/source-serif-pro/LICENSE.md",
    "content": "Copyright 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\n\r\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded,\r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/space-grotesk/OFL.txt",
    "content": "Copyright (c) 2016, Google Inc.\r\nCopyright (c) 2018, Florian Karsten (fonts.floriankarsten.com)\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/tasa-orbiter/OFL.txt",
    "content": "Copyright (c) 2023, Local Remote (https://localremote.co/),\r\nwith Reserved Font Name TASA Orbiter.\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/vollkorn/OFL.txt",
    "content": "Copyright 2017 The Vollkorn Project Authors (https://github.com/FAlthausen/Vollkorn-Typeface)\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "assets/fonts/work-sans/OFL.txt",
    "content": "Copyright 2019 The Work Sans Project Authors (https://github.com/weiweihuanghuang/Work-Sans)\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "assets/fonts/zilla-slab/LICENSE.md",
    "content": "Copyright 2017, The Mozilla Foundation\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttp://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "components/breadcrumb-jsonld.tsx",
    "content": "import { toAbsoluteUrl } from \"@/lib/routes\";\n\ntype BreadcrumbItem = {\n  name: string;\n  path: string;\n};\n\ntype BreadcrumbJsonLdProps = {\n  items: BreadcrumbItem[];\n};\n\nexport function BreadcrumbJsonLd({ items }: BreadcrumbJsonLdProps) {\n  const value = JSON.stringify(\n    {\n      \"@context\": \"http://schema.org\",\n      \"@type\": \"BreadcrumbList\",\n      itemListElement: items.map((item, index) => ({\n        \"@type\": \"ListItem\",\n        position: index + 1,\n        name: item.name,\n        item: toAbsoluteUrl(item.path)\n      }))\n    },\n    null,\n    2\n  );\n\n  return <script type=\"application/ld+json\" dangerouslySetInnerHTML={{ __html: value }} />;\n}\n"
  },
  {
    "path": "components/category-page.tsx",
    "content": "import { SampleCard } from \"@/components/sample-card\";\nimport { getSampleForTypeface } from \"@/lib/content\";\nimport type { Typeface } from \"@/lib/content\";\n\ntype CategoryPageProps = {\n  heading: string;\n  typefaces: Typeface[];\n};\n\nexport function CategoryPage({ heading, typefaces }: CategoryPageProps) {\n  return (\n    <div className=\"samples grid\">\n      <div className=\"gr1 gc12 page-header center\">\n        <h1>{heading}</h1>\n      </div>\n\n      {typefaces.map((typeface) => {\n        const sample = getSampleForTypeface(typeface.name);\n\n        if (!sample) {\n          return null;\n        }\n\n        return <SampleCard key={typeface.slug} sample={sample} typeface={typeface} />;\n      })}\n    </div>\n  );\n}\n"
  },
  {
    "path": "components/category-route-page.tsx",
    "content": "import { BreadcrumbJsonLd } from \"@/components/breadcrumb-jsonld\";\nimport { CategoryPage } from \"@/components/category-page\";\nimport { PageShell } from \"@/components/page-shell\";\nimport { getTypefacesByCategory } from \"@/lib/content\";\nimport type { CategorySlug } from \"@/lib/content\";\n\ntype CategoryRoutePageProps = {\n  breadcrumbLabel: string;\n  bodyClass: string;\n  categorySlug: CategorySlug;\n  heading: string;\n  path: string;\n};\n\nexport function CategoryRoutePage({\n  breadcrumbLabel,\n  bodyClass,\n  categorySlug,\n  heading,\n  path\n}: CategoryRoutePageProps) {\n  return (\n    <PageShell bodyClass={bodyClass}>\n      <BreadcrumbJsonLd\n        items={[\n          { name: \"Free & Open-Source Fonts\", path: \"/\" },\n          { name: breadcrumbLabel, path }\n        ]}\n      />\n      <CategoryPage heading={heading} typefaces={getTypefacesByCategory(categorySlug)} />\n    </PageShell>\n  );\n}\n"
  },
  {
    "path": "components/comparison-sync.tsx",
    "content": "\"use client\";\n\nimport { useEffect } from \"react\";\n\nexport function ComparisonSync() {\n  useEffect(() => {\n    const comparisonRoot = document.getElementById(\"comparisons\");\n\n    if (!comparisonRoot) {\n      return;\n    }\n\n    const comparisonNodes = Array.from(comparisonRoot.getElementsByTagName(\"h1\"));\n    const handleInput = (event: Event) => {\n      const target = event.currentTarget;\n\n      if (!(target instanceof HTMLElement)) {\n        return;\n      }\n\n      for (const node of comparisonNodes) {\n        if (node !== target) {\n          node.innerText = target.innerText;\n        }\n      }\n    };\n\n    comparisonNodes.forEach((node) => {\n      node.addEventListener(\"input\", handleInput, false);\n    });\n\n    return () => {\n      comparisonNodes.forEach((node) => {\n        node.removeEventListener(\"input\", handleInput, false);\n      });\n    };\n  }, []);\n\n  return null;\n}\n"
  },
  {
    "path": "components/footer.tsx",
    "content": "import Link from \"next/link\";\n\nimport { getTypefacesByCategory } from \"@/lib/content\";\nimport { getTypefacePath } from \"@/lib/routes\";\n\nexport function SiteFooter() {\n  const serifTypefaces = getTypefacesByCategory(\"serif\");\n  const sansSerifTypefaces = getTypefacesByCategory(\"sans-serif\");\n  const displayTypefaces = getTypefacesByCategory(\"display\");\n  const monospacedTypefaces = getTypefacesByCategory(\"monospaced\");\n\n  return (\n    <footer className=\"grid\">\n      <div className=\"footer-type-list gr1 gc2\">\n        <h3>\n          <Link href=\"/serif/\">Serif Typefaces</Link>\n        </h3>\n        <ol>\n          {serifTypefaces.map((typeface) => (\n            <li key={typeface.slug}>\n              <Link href={getTypefacePath(typeface.slug)}>{typeface.name}</Link>\n            </li>\n          ))}\n        </ol>\n      </div>\n\n      <div className=\"footer-type-list gr1 gc2\">\n        <h3>\n          <Link href=\"/sans-serif/\">Sans-Serif Typefaces</Link>\n        </h3>\n        <ol>\n          {sansSerifTypefaces.map((typeface) => (\n            <li key={typeface.slug}>\n              <Link href={getTypefacePath(typeface.slug)}>{typeface.name}</Link>\n            </li>\n          ))}\n        </ol>\n      </div>\n\n      <div className=\"footer-type-list gr1 gc2\">\n        <h3>\n          <Link href=\"/display/\">Display Typefaces</Link>\n        </h3>\n        <ol>\n          {displayTypefaces.map((typeface) => (\n            <li key={typeface.slug}>\n              <Link href={getTypefacePath(typeface.slug)}>{typeface.name}</Link>\n            </li>\n          ))}\n        </ol>\n      </div>\n\n      <div className=\"footer-type-list gr1 gc2\">\n        <h3>\n          <Link href=\"/monospaced/\">Monospaced Typefaces</Link>\n        </h3>\n        <ol>\n          {monospacedTypefaces.map((typeface) => (\n            <li key={typeface.slug}>\n              <Link href={getTypefacePath(typeface.slug)}>{typeface.name}</Link>\n            </li>\n          ))}\n        </ol>\n      </div>\n\n      <div className=\"footer-type-list gr1 gc2\">\n        <h3>Additional Info</h3>\n        <ol>\n          <li>\n            <a href=\"https://github.com/ubuwaits/beautiful-web-type\" rel=\"noopener\" target=\"_blank\">\n              Source on GitHub\n            </a>\n          </li>\n          <li>\n            <a\n              href=\"https://www.are.na/chad-mazzola/build-beautiful-web-type\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n            >\n              Are.na Channel\n            </a>\n          </li>\n          <li>\n            <a href=\"/feed.xml\">Atom feed</a>\n          </li>\n          <li>\n            <a href=\"/v1/\">Old version of site</a>\n          </li>\n        </ol>\n      </div>\n\n      <div className=\"footer-type-list gr1 gc2\">\n        <h3>About Me</h3>\n        <ol>\n          <li>\n            <a href=\"https://chad.is\" rel=\"noopener\" target=\"_blank\">\n              Personal site\n            </a>\n          </li>\n          <li>\n            <a href=\"https://twitter.com/ubuwaits\" rel=\"noopener noreferrer\" target=\"_blank\">\n              @ubuwaits\n            </a>\n          </li>\n          <li className=\"chadwin\">\n            <a href=\"https://chadwin.co\" rel=\"noopener\" target=\"_blank\">\n              Chadwin\n            </a>\n          </li>\n        </ol>\n      </div>\n    </footer>\n  );\n}\n"
  },
  {
    "path": "components/glyph-inspector.tsx",
    "content": "\"use client\";\n\nimport Script from \"next/script\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport { loadGlyphInspectorFont, type Font, type Glyph } from \"@/lib/glyph-inspector-font-loader\";\n\ntype GlyphInspectorProps = {\n  fontClassName: string;\n  fontFile: string;\n  typefaceName: string;\n  typefacePath: string;\n};\n\nfunction formatCssCode(unicode: number): string {\n  const hexUnicode = unicode.toString(16);\n\n  return `content: '\\\\${`0000${hexUnicode.toUpperCase()}`.slice(-4)}';`;\n}\n\nfunction formatHtmlCode(unicode: number): string {\n  return `&#${unicode};`;\n}\n\nfunction getPixelRatio(): number {\n  return window.devicePixelRatio || 1;\n}\n\nfunction enableHighDpiCanvas(canvas: HTMLCanvasElement) {\n  const pixelRatio = getPixelRatio();\n\n  if (pixelRatio === 1) {\n    return;\n  }\n\n  const oldWidth = canvas.width;\n  const oldHeight = canvas.height;\n  canvas.width = oldWidth * pixelRatio;\n  canvas.height = oldHeight * pixelRatio;\n  canvas.style.width = `${oldWidth}px`;\n  canvas.style.height = `${oldHeight}px`;\n\n  const context = canvas.getContext(\"2d\");\n  context?.scale(pixelRatio, pixelRatio);\n}\n\nfunction getColumnCount(): number {\n  if (window.innerWidth > 940) {\n    return 16;\n  }\n\n  if (window.innerWidth > 700) {\n    return 10;\n  }\n\n  return 6;\n}\n\nfunction getGlyphsPerPage(): number {\n  if (window.innerWidth > 940) {\n    return 128;\n  }\n\n  if (window.innerWidth > 700) {\n    return 130;\n  }\n\n  return 54;\n}\n\nfunction getGlyphPosition(font: Font, canvas: HTMLCanvasElement, glyph: Glyph) {\n  const pixelRatio = getPixelRatio();\n  const width = canvas.width / pixelRatio;\n  const height = canvas.height / pixelRatio;\n  const maxHeight = font.tables.head.yMax - font.tables.head.yMin;\n  const maxWidth = font.tables.head.xMax - font.tables.head.xMin;\n  const fontScale = Math.min(width / maxWidth, height / maxHeight);\n  const fontSize = fontScale * font.unitsPerEm;\n  const fontBaseline = (height * font.tables.head.yMax) / maxHeight;\n  const glyphWidth = glyph.advanceWidth * fontScale;\n  const xMin = (width - glyphWidth) / 2;\n\n  return { xMin, fontBaseline, fontSize };\n}\n\nexport function GlyphInspector({\n  fontClassName,\n  fontFile,\n  typefaceName,\n  typefacePath\n}: GlyphInspectorProps) {\n  const detailCanvasRef = useRef<HTMLCanvasElement | null>(null);\n  const glyphInfoRef = useRef<HTMLDivElement | null>(null);\n  const glyphGridRef = useRef<HTMLDivElement | null>(null);\n  const glyphPaginationRef = useRef<HTMLDivElement | null>(null);\n  const [scriptReady, setScriptReady] = useState(false);\n\n  useEffect(() => {\n    if (!scriptReady || !window.opentype) {\n      return;\n    }\n\n    const detailCanvas = detailCanvasRef.current;\n    const glyphInfo = glyphInfoRef.current;\n    const glyphGrid = glyphGridRef.current;\n    const glyphPagination = glyphPaginationRef.current;\n\n    if (!detailCanvas || !glyphInfo || !glyphGrid || !glyphPagination) {\n      return;\n    }\n\n    let cancelled = false;\n\n    const initializeGlyphInspector = async () => {\n      try {\n        const font = await loadGlyphInspectorFont(fontFile);\n\n        if (cancelled) {\n          return;\n        }\n\n        const removeClass = (className: string) => {\n          const nodes = Array.from(document.getElementsByClassName(className));\n          nodes.forEach((node) => node.classList.remove(className));\n        };\n\n        const highlightSelectedGlyph = (glyphIndex: number) => {\n          removeClass(\"active\");\n          document.getElementById(`g${glyphIndex}`)?.parentElement?.classList.add(\"active\");\n        };\n\n        const displaySelectedGlyphInfo = (glyph: Glyph) => {\n          const glyphValue = glyph.unicode ?? glyph.unicodes[0];\n          const glyphMarkup =\n            glyphValue === undefined ? \"Undefined\" : `&#${glyphValue};`;\n\n          glyphInfo.innerHTML = `\n            <h3>Glyph</h3>\n            <p class=\"${fontClassName}\">${glyphMarkup}</p>\n\n            <h3>Glyph Name</h3>\n            <p>${glyph.name ?? \"Not available\"}</p>\n\n            <h3>HTML Code</h3>\n            <p>${glyph.unicodes.map(formatHtmlCode).join(\", \") || \"Not available\"}</p>\n\n            <h3>CSS Code</h3>\n            <p>${glyph.unicodes.map(formatCssCode).join(\", \") || \"Not available\"}</p>\n          `;\n        };\n\n        const displaySelectedGlyph = (glyph: Glyph) => {\n          displaySelectedGlyphInfo(glyph);\n          highlightSelectedGlyph(glyph.index);\n          window.history.replaceState({}, document.title, `?i=${glyph.index}`);\n\n          detailCanvas.width = detailCanvas.parentElement?.clientWidth ?? 0;\n          detailCanvas.height = detailCanvas.width * 0.8;\n          enableHighDpiCanvas(detailCanvas);\n\n          const context = detailCanvas.getContext(\"2d\");\n\n          if (!context) {\n            return;\n          }\n\n          const pixelRatio = getPixelRatio();\n          const { xMin, fontBaseline, fontSize } = getGlyphPosition(font, detailCanvas, glyph);\n\n          context.clearRect(0, 0, detailCanvas.width, detailCanvas.height);\n          context.fillStyle = \"#F9C4C4\";\n          context.fillRect(\n            32,\n            fontBaseline,\n            detailCanvas.width / pixelRatio - 64,\n            1\n          );\n          glyph.draw(context, xMin, fontBaseline, fontSize);\n        };\n\n        const writeGlyph = (glyphCanvas: HTMLCanvasElement, glyphIndex: number) => {\n          if (glyphIndex >= font.numGlyphs) {\n            glyphCanvas.id = \"\";\n            delete glyphCanvas.dataset.glyphIndex;\n            return;\n          }\n\n          glyphCanvas.id = `g${glyphIndex}`;\n          glyphCanvas.dataset.glyphIndex = String(glyphIndex);\n\n          const glyph = font.glyphs.get(glyphIndex);\n          const context = glyphCanvas.getContext(\"2d\");\n\n          if (!context) {\n            return;\n          }\n\n          context.clearRect(0, 0, glyphCanvas.width, glyphCanvas.height);\n          const { xMin, fontBaseline, fontSize } = getGlyphPosition(font, glyphCanvas, glyph);\n          glyph.draw(context, xMin, fontBaseline, fontSize);\n        };\n\n        const highlightPagination = (pageNumber: number) => {\n          removeClass(\"selected-page\");\n          document.getElementById(`p${pageNumber}`)?.classList.add(\"selected-page\");\n        };\n\n        const clearGlyphCanvases = () => {\n          removeClass(\"active\");\n\n          const glyphCanvases = Array.from(\n            glyphGrid.getElementsByClassName(\"glyph\")\n          ) as HTMLCanvasElement[];\n\n          glyphCanvases.forEach((canvas) => {\n            canvas.getContext(\"2d\")?.clearRect(0, 0, canvas.width, canvas.height);\n          });\n        };\n\n        const displaySelectedGlyphPage = (glyphsPerPage: number, pageNumber: number) => {\n          clearGlyphCanvases();\n          highlightPagination(pageNumber);\n\n          const firstGlyphIndex = pageNumber * glyphsPerPage;\n          const glyphCanvases = Array.from(\n            glyphGrid.getElementsByClassName(\"glyph\")\n          ) as HTMLCanvasElement[];\n\n          for (let index = 0; index < glyphsPerPage; index += 1) {\n            writeGlyph(glyphCanvases[index], firstGlyphIndex + index);\n          }\n        };\n\n        const createGlyphCanvas = () => {\n          const glyphCanvasContainer = document.createElement(\"div\");\n          glyphCanvasContainer.classList.add(\"glyph-container\");\n\n          const canvasWidth = glyphGrid.offsetWidth / getColumnCount() - 1;\n          const glyphCanvas = document.createElement(\"canvas\");\n          glyphCanvas.width = canvasWidth;\n          glyphCanvas.height = canvasWidth * 1.2;\n          glyphCanvas.className = \"glyph\";\n          enableHighDpiCanvas(glyphCanvas);\n\n          glyphCanvasContainer.appendChild(glyphCanvas);\n          glyphCanvasContainer.addEventListener(\"click\", (event) => {\n            const target = event.target;\n\n            if (!(target instanceof HTMLCanvasElement)) {\n              return;\n            }\n\n            const glyphIndex = Number(target.dataset.glyphIndex);\n\n            if (Number.isNaN(glyphIndex)) {\n              return;\n            }\n\n            displaySelectedGlyph(font.glyphs.get(glyphIndex));\n          });\n\n          glyphGrid.appendChild(glyphCanvasContainer);\n        };\n\n        const displayGlyphGrid = (glyphsPerPage: number) => {\n          glyphGrid.innerHTML = \"\";\n\n          for (let index = 0; index < glyphsPerPage; index += 1) {\n            createGlyphCanvas();\n          }\n        };\n\n        const displayPagination = (glyphsPerPage: number) => {\n          const numberOfPages = Math.ceil(font.numGlyphs / glyphsPerPage);\n          glyphPagination.innerHTML = \"\";\n\n          for (let index = 0; index < numberOfPages; index += 1) {\n            const pageLink = document.createElement(\"a\");\n            pageLink.href = \"#\";\n            pageLink.id = `p${index}`;\n            pageLink.textContent = String(index + 1);\n\n            pageLink.addEventListener(\"click\", (event) => {\n              event.preventDefault();\n              displaySelectedGlyphPage(glyphsPerPage, index);\n            });\n\n            glyphPagination.appendChild(pageLink);\n          }\n        };\n\n        const getInitialGlyph = () => {\n          const searchParams = new URL(window.location.href).searchParams;\n          let glyphIndex = Number(searchParams.get(\"i\") ?? 5);\n\n          if (Number.isNaN(glyphIndex)) {\n            glyphIndex = 5;\n          }\n\n          if (glyphIndex >= font.numGlyphs) {\n            glyphIndex = font.numGlyphs - 1;\n          }\n\n          if (glyphIndex < 0) {\n            glyphIndex = 0;\n          }\n\n          return font.glyphs.get(glyphIndex);\n        };\n\n        const glyphsPerPage = getGlyphsPerPage();\n        const initialGlyph = getInitialGlyph();\n        const initialGlyphPage = Math.floor(initialGlyph.index / glyphsPerPage);\n\n        displayPagination(glyphsPerPage);\n        displayGlyphGrid(glyphsPerPage);\n        displaySelectedGlyphPage(glyphsPerPage, initialGlyphPage);\n        displaySelectedGlyph(initialGlyph);\n      } catch (error) {\n        if (!cancelled) {\n          console.error(\"Font could not be loaded\", error);\n        }\n      }\n    };\n\n    void initializeGlyphInspector();\n\n    return () => {\n      cancelled = true;\n    };\n  }, [fontClassName, fontFile, scriptReady]);\n\n  return (\n    <>\n      <Script src=\"/js/opentype.min.js\" strategy=\"afterInteractive\" onLoad={() => setScriptReady(true)} />\n\n      <header className=\"type-detail-header m2\">\n        <h2>\n          <a href={typefacePath}>{typefaceName}</a> / <span className=\"w400\">Glyph inspector</span>\n        </h2>\n      </header>\n\n      <div className=\"grid\">\n        <div className=\"gr1 gc3\" id=\"glyph-detail\">\n          <canvas id=\"glyph-detail-canvas\" ref={detailCanvasRef} />\n          <div id=\"glyph-info\" ref={glyphInfoRef}>\n            <h3>Glyph</h3>\n            <p>Undefined</p>\n            <h3>Glyph Name</h3>\n            <p>Undefined</p>\n            <h3>HTML Code</h3>\n            <p>Undefined</p>\n            <h3>CSS Code</h3>\n            <p>Undefined</p>\n          </div>\n        </div>\n\n        <div className=\"gr1 gc9\" id=\"glyph-grid-container\">\n          <div className=\"pagination-wrapper\">\n            <div id=\"glyph-pagination\" ref={glyphPaginationRef} />\n          </div>\n          <div id=\"glyph-grid\" ref={glyphGridRef} />\n        </div>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "components/page-shell.tsx",
    "content": "import clsx from \"clsx\";\nimport type { ReactNode } from \"react\";\n\ntype PageShellProps = {\n  bodyClass?: string;\n  children: ReactNode;\n};\n\nexport function PageShell({ bodyClass, children }: PageShellProps) {\n  return (\n    <main className={clsx(bodyClass, \"min-h-[calc(100vh-4rem)]\")}>\n      <section className=\"w-full\">{children}</section>\n    </main>\n  );\n}\n"
  },
  {
    "path": "components/pairing-card.tsx",
    "content": "import Link from \"next/link\";\n\nimport type { Pairing } from \"@/lib/content\";\nimport { resolveTypefaceSlugByName } from \"@/lib/content\";\nimport { getTypefacePath } from \"@/lib/routes\";\n\ntype PairingCardProps = {\n  pairing: Pairing;\n  currentTypefaceName?: string;\n};\n\nexport function PairingCard({ pairing, currentTypefaceName }: PairingCardProps) {\n  const pairedTypefaceName = currentTypefaceName\n    ? pairing.typefaces.find((typefaceName) => typefaceName !== currentTypefaceName)\n    : undefined;\n\n  return (\n    <div className={`sample pairing ${pairing.slug}-sample gr6 gc6`}>\n      <div className=\"text\" dangerouslySetInnerHTML={{ __html: pairing.bodyHtml }} />\n      <div className={`meta ${pairing.sampleShade === \"light\" ? \"dark\" : \"\"}`}>\n        {pairedTypefaceName ? (\n          <p>\n            Paired with{\" \"}\n            <Link href={getTypefacePath(resolveTypefaceSlugByName(pairedTypefaceName))}>\n              {pairedTypefaceName}\n            </Link>\n          </p>\n        ) : (\n          <p className=\"pairing-list\">\n            {pairing.typefaces.map((typefaceName) => (\n              <Link\n                key={typefaceName}\n                href={getTypefacePath(resolveTypefaceSlugByName(typefaceName))}\n              >\n                {typefaceName}\n              </Link>\n            ))}\n          </p>\n        )}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "components/sample-card.tsx",
    "content": "import Link from \"next/link\";\n\nimport type { Sample, Typeface } from \"@/lib/content\";\nimport { getTypefacePath } from \"@/lib/routes\";\n\ntype SampleCardProps = {\n  sample: Sample;\n  typeface: Typeface;\n};\n\nexport function SampleCard({ sample, typeface }: SampleCardProps) {\n  const typefacePath = getTypefacePath(typeface.slug);\n\n  return (\n    <div className={`sample ${typeface.slug} ${typeface.slug}-sample gr6 gc12`}>\n      <Link href={typefacePath}>\n        <div className=\"text\" dangerouslySetInnerHTML={{ __html: sample.bodyHtml }} />\n      </Link>\n      <div className={`meta ${sample.sampleShade === \"light\" ? \"dark\" : \"\"}`}>\n        <p className=\"name\">\n          <Link href={typefacePath}>\n            {typeface.name} by {typeface.creator.name}\n          </Link>\n        </p>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "components/site-header.tsx",
    "content": "\"use client\";\n\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nfunction NavItems({\n  activeSection,\n  onNavigate\n}: {\n  activeSection: string;\n  onNavigate?: () => void;\n}) {\n  return (\n    <>\n      <li className=\"nav-home\">\n        <h1>\n          <Link href=\"/\" onClick={onNavigate}>\n            Beautiful Web Type\n          </Link>\n        </h1>\n      </li>\n      <li className=\"nav-serif\">\n        <Link\n          className={activeSection === \"serif\" ? \"active\" : undefined}\n          href=\"/serif/\"\n          onClick={onNavigate}\n        >\n          Serif\n        </Link>\n      </li>\n      <li className=\"nav-sans-serif\">\n        <Link\n          className={activeSection === \"sans-serif\" ? \"active\" : undefined}\n          href=\"/sans-serif/\"\n          onClick={onNavigate}\n        >\n          Sans-Serif\n        </Link>\n      </li>\n      <li className=\"nav-display\">\n        <Link\n          className={activeSection === \"display\" ? \"active\" : undefined}\n          href=\"/display/\"\n          onClick={onNavigate}\n        >\n          Display\n        </Link>\n      </li>\n      <li className=\"nav-monospaced\">\n        <Link\n          className={activeSection === \"monospaced\" ? \"active\" : undefined}\n          href=\"/monospaced/\"\n          onClick={onNavigate}\n        >\n          Monospaced\n        </Link>\n      </li>\n      <li className=\"nav-pairings\">\n        <Link\n          className={activeSection === \"pairings\" ? \"active\" : undefined}\n          href=\"/pairings/\"\n          onClick={onNavigate}\n        >\n          Pairings\n        </Link>\n      </li>\n      <li className=\"nav-support\"> </li>\n    </>\n  );\n}\n\nexport function SiteHeader() {\n  const pathname = usePathname();\n  const [menuOpen, setMenuOpen] = useState(false);\n\n  if (pathname.startsWith(\"/v1\")) {\n    return null;\n  }\n\n  const activeSection = useMemo(() => {\n    const [firstSegment = \"\"] = pathname.split(\"/\").filter(Boolean);\n\n    return [\"serif\", \"sans-serif\", \"display\", \"monospaced\", \"pairings\"].includes(\n      firstSegment\n    )\n      ? firstSegment\n      : \"\";\n  }, [pathname]);\n\n  useEffect(() => {\n    document.body.classList.toggle(\"menu-open\", menuOpen);\n\n    return () => {\n      document.body.classList.remove(\"menu-open\");\n    };\n  }, [menuOpen]);\n\n  return (\n    <>\n      <header className=\"site-header\">\n        <ol className=\"main-nav\">\n          <NavItems activeSection={activeSection} />\n        </ol>\n      </header>\n\n      <div className={menuOpen ? \"mobile-menu open\" : \"mobile-menu\"}>\n        <span className=\"menu-circle\" />\n        <button\n          aria-expanded={menuOpen}\n          aria-label=\"Toggle navigation menu\"\n          className=\"menu-link\"\n          type=\"button\"\n          onClick={() => setMenuOpen((currentValue) => !currentValue)}\n        >\n          <span className=\"menu-icon\">\n            <span className=\"menu-line menu-line-1\" />\n            <span className=\"menu-line menu-line-2\" />\n            <span className=\"menu-line menu-line-3\" />\n          </span>\n        </button>\n      </div>\n\n      <div className={menuOpen ? \"menu-overlay open\" : \"menu-overlay\"}>\n        <ol className=\"main-nav\">\n          <NavItems activeSection={activeSection} onNavigate={() => setMenuOpen(false)} />\n        </ol>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "components/typeface-comparison.tsx",
    "content": "import Link from \"next/link\";\n\nimport type { Typeface } from \"@/lib/content\";\nimport { resolveTypefaceSlugByName } from \"@/lib/content\";\nimport { getTypefacePath } from \"@/lib/routes\";\n\ntype TypefaceComparisonProps = {\n  comparisonFaces: string[];\n  typeface: Typeface;\n  text: string;\n};\n\nexport function TypefaceComparison({\n  comparisonFaces,\n  typeface,\n  text\n}: TypefaceComparisonProps) {\n  return (\n    <div className=\"type-detail-table gr1 gc12\">\n      <div className=\"examples flow-column typeface-comparison\">\n        <div>\n          <h1 className={typeface.slug} contentEditable suppressContentEditableWarning>\n            {text}\n          </h1>\n          <p className=\"character-label\">{typeface.name}</p>\n        </div>\n        {comparisonFaces.map((comparisonFace) => (\n          <div key={comparisonFace}>\n            <h1\n              className={resolveTypefaceSlugByName(comparisonFace)}\n              contentEditable\n              suppressContentEditableWarning\n            >\n              {text}\n            </h1>\n            <p className=\"character-label\">\n              <Link href={getTypefacePath(resolveTypefaceSlugByName(comparisonFace))}>\n                {comparisonFace}\n              </Link>\n            </p>\n          </div>\n        ))}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "components/typeface-detail.tsx",
    "content": "import Link from \"next/link\";\n\nimport { ComparisonSync } from \"@/components/comparison-sync\";\nimport { PairingCard } from \"@/components/pairing-card\";\nimport { SampleCard } from \"@/components/sample-card\";\nimport { TypefaceComparison } from \"@/components/typeface-comparison\";\nimport type { Pairing, TextData, Typeface } from \"@/lib/content\";\nimport { resolveTypefaceSlugByName } from \"@/lib/content\";\nimport { getGlyphPath, getTypefacePath } from \"@/lib/routes\";\n\nconst CHARACTER_EXAMPLES = [\n  \"Aa\",\n  \"Bb\",\n  \"Cc\",\n  \"Dd\",\n  \"Ee\",\n  \"Ff\",\n  \"Gg\",\n  \"Hh\",\n  \"Ii\",\n  \"Jj\",\n  \"Kk\",\n  \"Ll\",\n  \"Mm\",\n  \"Nn\",\n  \"Oo\",\n  \"Pp\",\n  \"Qq\",\n  \"Rr\",\n  \"Ss\",\n  \"Tt\",\n  \"Uu\",\n  \"Vv\",\n  \"Ww\",\n  \"Xx\",\n  \"Yy\",\n  \"Zz\",\n  \"Åå\",\n  \"Ææ\",\n  \"Çç\",\n  \"Éé\",\n  \"Øø\",\n  \"Ññ\",\n  \"Üü\",\n  \"Žž\",\n  \"1234567890\",\n  \"‘¿?’\",\n  \"“!”\",\n  \"- &ndash; &mdash;\",\n  \"(&amp;)\",\n  \"[*]\",\n  \"{@}\",\n  \"€£¥$¢\",\n  \":;,.\",\n  \"&lt;&gt;+÷×=\"\n];\n\ntype TypefaceDetailProps = {\n  pairings: Pairing[];\n  sampleBody: string;\n  text: TextData;\n  typeface: Typeface;\n};\n\nexport function TypefaceDetail({\n  pairings,\n  sampleBody,\n  text,\n  typeface\n}: TypefaceDetailProps) {\n  const secondHeadlineType = typeface.italic ? \"italic\" : \"uppercase\";\n  const paragraphText = text.paragraphs[typeface.italic ? 0 : 1];\n\n  return (\n    <>\n      <div className={`grid ${typeface.slug}`}>\n        <header className=\"type-detail-header gr1 gc6\">\n          <div>\n            <h2>{typeface.name}</h2>\n            <h3>by {typeface.creator.name}</h3>\n          </div>\n        </header>\n\n        <div className=\"font-download gr1 gc6\">\n          {typeface.gFontsUrl ? (\n            <a href={typeface.gFontsUrl} rel=\"noopener\" target=\"_blank\">\n              Embed <span>using Google Fonts</span>\n            </a>\n          ) : null}\n          <a href={typeface.projectUrl} rel=\"noopener\" target=\"_blank\">\n            Download{\" \"}\n            <span>\n              {typeface.latestRelease.version} ({typeface.latestRelease.date})\n            </span>\n          </a>\n        </div>\n\n        <SampleCard\n          sample={{ bodyHtml: sampleBody, slug: typeface.slug, typefaceName: typeface.name }}\n          typeface={typeface}\n        />\n\n        <div className=\"type-styles gr1 gc6\">\n          {typeface.weights.map((weight) => (\n            <div key={`${typeface.slug}-${weight.weight}`}>\n              <p className={`w${weight.weight}`}>{weight.name}</p>\n              {typeface.italic ? (\n                <p className={`w${weight.weight}`}>\n                  <em>Italic</em>\n                </p>\n              ) : null}\n              <p className=\"weight\">{weight.weight}</p>\n            </div>\n          ))}\n        </div>\n\n        <div className=\"type-info gr1 gc3\">\n          <h3>Description</h3>\n          <h4>{typeface.description}</h4>\n        </div>\n\n        <div className=\"type-info gr1 gc3\">\n          <h3>Designed by</h3>\n          <h4>\n            <a href={typeface.creator.url} rel=\"noopener\" target=\"_blank\">\n              {typeface.creator.name}\n            </a>\n          </h4>\n\n          <h3>Category</h3>\n          <h4>\n            <Link href={`/${typeface.categorySlug}/`}>{typeface.category}</Link>\n          </h4>\n\n          <h3>No. of styles</h3>\n          <h4>{typeface.styles}</h4>\n\n          {typeface.familyFaces?.length ? (\n            <>\n              <h3>Other faces in family</h3>\n              <ul>\n                {typeface.familyFaces.map((familyFace) => (\n                  <li key={familyFace}>\n                    <Link href={getTypefacePath(resolveTypefaceSlugByName(familyFace))}>\n                      {familyFace}\n                    </Link>\n                  </li>\n                ))}\n              </ul>\n            </>\n          ) : null}\n        </div>\n\n        <div className=\"type-detail-table examples-characters gr1 gc6\">\n          <div className=\"meta dark top flex-row\">\n            <p className=\"name\">Characters</p>\n            <Link className=\"glyph-explorer\" href={getGlyphPath(typeface.slug)}>\n              Explore all characters\n            </Link>\n          </div>\n          <div className=\"examples character-examples flow-row\">\n            {CHARACTER_EXAMPLES.map((entry) => (\n              <div key={entry}>\n                <span dangerouslySetInnerHTML={{ __html: entry }} />\n              </div>\n            ))}\n          </div>\n        </div>\n\n        <div className=\"type-detail-table examples-words gr1 gc6\">\n          <div className=\"meta dark top\">\n            <p className=\"name\">Words</p>\n          </div>\n\n          <div className=\"examples word-examples flow-column flow-center\">\n            {text.words.slice(0, 6).map((word) => (\n              <div key={`${typeface.slug}-${word}`}>\n                <h1 contentEditable suppressContentEditableWarning>\n                  {word}\n                </h1>\n              </div>\n            ))}\n          </div>\n        </div>\n\n        <div className=\"type-detail-table examples-headlines gr1 gc6\">\n          <div className=\"meta dark top\">\n            <p className=\"name\">Headlines</p>\n          </div>\n\n          <div className=\"examples flow-column\">\n            {typeface.weights.map((weight, index) => (\n              <div key={`${typeface.slug}-headline-${weight.weight}`}>\n                <h1\n                  className={`w${weight.weight}`}\n                  contentEditable\n                  suppressContentEditableWarning\n                >\n                  {text.headlines[index]}\n                </h1>\n                <p className=\"character-label\">{weight.weight}</p>\n              </div>\n            ))}\n          </div>\n        </div>\n\n        <div className={`type-detail-table examples-headlines-${secondHeadlineType} gr1 gc6`}>\n          <div className=\"meta dark top\">\n            <p className=\"name\">\n              {secondHeadlineType === \"uppercase\" ? \"Uppercase\" : \"Italic\"} Headlines\n            </p>\n          </div>\n          <div className=\"examples flow-column\">\n            {typeface.weights.map((weight, index) => (\n              <div key={`${typeface.slug}-${secondHeadlineType}-${weight.weight}`}>\n                <h1\n                  className={`w${weight.weight} ${secondHeadlineType}`}\n                  contentEditable\n                  suppressContentEditableWarning\n                >\n                  {text.headlines[index]}\n                </h1>\n                <p className=\"character-label\">{weight.weight}</p>\n              </div>\n            ))}\n          </div>\n        </div>\n\n        {typeface.category !== \"Display\" ? (\n          <div className=\"type-detail-table examples-paragraphs gr6 gc6\">\n            <div className=\"meta dark top flex-column\">\n              <p className=\"name\">Paragraphs</p>\n              <p className=\"code\">font-weight: 400</p>\n            </div>\n            <div className=\"examples paragraph-examples flow-column\">\n              {[\"ms2\", \"ms1\", \"ms0\", \"ms-1\", \"ms-2 col-2\"].map((className) => (\n                <div key={`${typeface.slug}-${className}`}>\n                  <p\n                    className={className}\n                    contentEditable\n                    dangerouslySetInnerHTML={{ __html: paragraphText }}\n                    suppressContentEditableWarning\n                  />\n                </div>\n              ))}\n            </div>\n          </div>\n        ) : null}\n\n        {typeface.smallcap ? (\n          <div className=\"type-detail-table examples-smallcap gr7 gc6\">\n            <div className=\"meta dark top flex-column\">\n              <p className=\"name\">Smallcap headlines</p>\n              <p className=\"code\">font-feature-settings: 'smcp';</p>\n            </div>\n            <div className=\"examples flow-column small-caps\">\n              {typeface.weights.map((weight, index) => (\n                <div key={`${typeface.slug}-smallcap-${weight.weight}`}>\n                  <h1\n                    className={`w${weight.weight}`}\n                    contentEditable\n                    suppressContentEditableWarning\n                  >\n                    {text.headlines[index]}\n                  </h1>\n                  <p className=\"character-label\">{weight.weight}</p>\n                </div>\n              ))}\n            </div>\n          </div>\n        ) : null}\n\n        {typeface.bodyHtml ? (\n          <div className=\"contents\" dangerouslySetInnerHTML={{ __html: typeface.bodyHtml }} />\n        ) : null}\n      </div>\n\n      {typeface.comparisonFaces?.length ? (\n        <div className=\"grid grid-comparisons\" id=\"comparisons\">\n          <ComparisonSync />\n          <h3 className=\"gr1 gc12 ase mt3\">\n            {typeface.name} compared with other typefaces\n          </h3>\n          <TypefaceComparison\n            comparisonFaces={typeface.comparisonFaces}\n            text={text.words[3]}\n            typeface={typeface}\n          />\n        </div>\n      ) : null}\n\n      {pairings.length ? (\n        <div className=\"grid grid-pairings\" id=\"pairings\">\n          <h3 className=\"gr1 gc12 ase mt3\">Recommended Pairings for {typeface.name}</h3>\n          {pairings.map((pairing) => (\n            <PairingCard currentTypefaceName={typeface.name} key={pairing.slug} pairing={pairing} />\n          ))}\n        </div>\n      ) : null}\n    </>\n  );\n}\n"
  },
  {
    "path": "content/pairings/archivo-black-and-lora/meta.yml",
    "content": "name: Archivo Black and Lora\ndateAdded: '2018-11-09'\ntypefaces:\n  - Archivo Black\n  - Lora\n"
  },
  {
    "path": "content/pairings/archivo-black-and-lora/sample.html",
    "content": "<h1>Werner Herzog</h1>\n\n<p>There is nothing wrong with spending a night in jail if it means getting the shot you need. Send out all your dogs and one might return with prey. Never wallow in your troubles; despair must be kept private and brief. Expand your knowledge and understanding of music and literature, old and modern. That roll of unexposed celluloid you have in your hand might be the last in existence, so do something impressive with it. Carry bolt cutters everywhere. Thwart institutional cowardice.</p>\n\n<p>From <em>A Guide for the Perplexed</em></p>\n"
  },
  {
    "path": "content/pairings/fraunces-and-libre-franklin/meta.yml",
    "content": "name: Fraunces and Libre Franklin\ndateAdded: '2020-11-22'\ntypefaces:\n  - Fraunces\n  - Libre Franklin\n"
  },
  {
    "path": "content/pairings/fraunces-and-libre-franklin/sample.html",
    "content": "<h1>Picasso</h1>\n<h2>Love, Fame, Tragedy</h2>\n\n<h3>Tate Modern</h3>\n<p>8 March – 9 September 2018</p>\n"
  },
  {
    "path": "content/pairings/libre-franklin-and-source-serif-pro/meta.yml",
    "content": "name: Libre Franklin and Source Serif Pro\ndateAdded: '2018-11-09'\ntypefaces:\n  - Libre Franklin\n  - Source Serif Pro\nsampleShade: light\n"
  },
  {
    "path": "content/pairings/libre-franklin-and-source-serif-pro/sample.html",
    "content": "<h1><span>Out to<br> Lunch!</span><span>Eric<br> Dolphy</span></h1>\n\n<p><em>Out to Lunch</em> stands as Eric Dolphy’s magnum opus, an absolute pinnacle of avant-garde jazz in any form or era. Its rhythmic complexity was perhaps unrivaled since Dave Brubeck’s <em>Time Out</em>, and its five Dolphy originals&mdash;the jarring Monk tribute “Hat and Beard,” the aptly titled “Something Sweet, Something Tender,” the weirdly jaunty flute showcase “Gazzelloni,” the militaristic title track, the drunken lurch of “Straight Up and Down”&mdash;were a perfect balance of structured frameworks, carefully calibrated timbres, and generous individual freedom. &mdash; <em>AllMusic Review by Steve Huey</em></p>\n"
  },
  {
    "path": "content/pairings/messapia-and-inter/meta.yml",
    "content": "name: Messapia and Inter\ndateAdded: '2020-11-22'\ntypefaces:\n  - Messapia\n  - Inter\n"
  },
  {
    "path": "content/pairings/messapia-and-inter/sample.html",
    "content": "<h1>The Tired Vegetarian</h1>\n\n\n<p>All of these recipes are simplified versions of more complex and time consuming meals. They are perfect for those moments where you simply don’t want to cook, but would rather not <em>not</em> eat.</p>\n"
  },
  {
    "path": "content/pairings/oswald-and-source-serif-pro/meta.yml",
    "content": "name: Oswald and Source Serif Pro\ndateAdded: '2018-11-09'\ntypefaces:\n  - Oswald\n  - Source Serif Pro\n"
  },
  {
    "path": "content/pairings/oswald-and-source-serif-pro/sample.html",
    "content": "<h2>The Coming of Age of<br> Quantum Biology</h2>\n<h1>Life on<br> the Edge</h1>\n<h3>Johnjoe McFadden <br>& Jim Al-Khalili</h3>\n"
  },
  {
    "path": "content/pairings/rakkas-and-vollkorn/meta.yml",
    "content": "name: Rakkas and Vollkorn\ndateAdded: '2018-11-09'\ntypefaces:\n  - Rakkas\n  - Vollkorn\nsampleShade: light\n"
  },
  {
    "path": "content/pairings/rakkas-and-vollkorn/sample.html",
    "content": "<h1>Anger</h1>\n<h2>lucius</h2>\n\n<h1>Mercy</h1>\n<h2>annaeus</h2>\n\n<h1>Revenge</h1>\n<h2>seneca</h2>\n\n<h3><em>translated by</em> <span>robert a. kaster</span><br><em>and</em> <span>martha c. nussbaum</span></h3>\n"
  },
  {
    "path": "content/site/text.yml",
    "content": "words:\n  - Questography\n  - Havana Plywood\n  - Château d’Yquem\n  - hamburgevontpids\n  - Högertrafikomläggningen\n  - difficult waffles\nheadlines:\n  - Brawny gods just flocked up to quiz and vex him\n  - Amazingly few discotheques provide jukeboxes\n  - Why shouldn’t a quixotic Kazakh vampire jog barefoot?\n  - Grumpy wizards make a toxic brew for the jovial queen\n  - Jackie will budget for the most expensive zoology equipment\n  - Monsieur Jack, vous dactylographiez bien mieux que votre ami Wolf\n  - Jeg begynte å fortære en sandwich mens jeg kjørte taxi på vei til quiz\n  - Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich\n  - Gazeta publica hoje no jornal uma breve nota de faxina na quermesse\n  - Înjurând pițigăiat, zoofobul comandă vexat whisky și tequila\n  - Vår sære Zulu fra badeøya spilte jo whist og quickstep i min taxi\nparagraphs:\n  - But how could we fail to see that there is an infinite regress here—if we do not accept, as Kantian and post-Kantian philosophies do, a “supersensible” domain of freedom, outside of the world and its physical determinisms? According to them, the free sub­ject is an absolute origin, a first agent capable of creating first causes, who initiates new causal chains <em>ex nihilo</em>, independent of the rest of the world. &mdash;Henri Atlan, <em>Is Science Inhuman?</em>\n  - But how could we fail to see that there is an infinite regress here—if we do not accept, as Kantian and post-Kantian philosophies do, a “supersensible” domain of freedom, outside of the world and its physical determinisms? According to them, the free sub­ject is an absolute origin, a first agent capable of creating first causes, who initiates new causal chains ex nihilo, independent of the rest of the world. &mdash;Henri Atlan, Is Science Inhuman?\n"
  },
  {
    "path": "content/typefaces/alegreya/detail.html",
    "content": "<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-column'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade italic'>ffj</span> <span class='liga italic'>ffj</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>fft</span> <span class='liga'>fft</span></div>\n    <div><span class='fade italic'>fft</span> <span class='liga italic'>fft</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade italic'>fj</span> <span class='liga italic'>fj</span></div>\n    <div><span class='fade'>ft</span> <span class='liga'>ft</span></div>\n    <div><span class='fade'>Th</span> <span class='liga'>Th</span></div>\n    <div><span class='fade italic'>Th</span> <span class='liga italic'>Th</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-column'>\n    <p class='name'>Discretionary Ligatures</p>\n    <p class='code'>font-feature-settings: 'dlig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ch</span> <span class='dlig'>ch</span></div>\n    <div><span class='fade'><em>ch</em></span> <span class='dlig italic'>ch</span></div>\n    <div><span class='fade'>ct</span> <span class='dlig'>ct</span></div>\n    <div><span class='fade italic'>ct</span> <span class='dlig italic'>ct</span></div>\n    <div><span class='fade'>st</span> <span class='dlig'>st</span></div>\n    <div><span class='fade italic'>st</span> <span class='dlig italic'>st</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr8 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle (default): 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-column'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>1st</span> <span class='ordinals'>1st</span></div>\n    <div><span class='fade'>2nd</span> <span class='ordinals'>2nd</span></div>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-column'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss01';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>XVLIII</span> <span class='ss01'>XVLIII</span></div>\n    <div><span class='fade'>MDC</span> <span class='ss01'>MDC</span></div>\n    <div><span class='fade'>mxlii</span> <span class='ss01'>mxlii</span></div>\n    <div><span class='fade'>dxxvii</span> <span class='ss01'>dxxvii</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&harr;</span> <p class='code'>&amp;harr;</p></div>\n    <div><span>&updownarrow;</span> <p class='code'>&amp;updownarrow;</p></div>\n    <div><span>&#9650;</span> <p class='code'>&amp;#9650;</p></div>\n    <div><span>&#9654;</span> <p class='code'>&amp;#9654;</p></div>\n    <div><span>&#9660;</span> <p class='code'>&amp;#9660;</p></div>\n    <div><span>&#9664;</span> <p class='code'>&amp;#9664;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/alegreya/glyphs.yml",
    "content": "fontFile: /assets/fonts/alegreya/Alegreya-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/alegreya/meta.yml",
    "content": "name: Alegreya\ndateAdded: '2018-10-15'\ncategory: Serif\nstyles: 10\nitalic: true\nsmallcap: true\nsampleShade: light\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra-Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v2.008\n  date: 30 Oct 2018\nprojectUrl: https://github.com/huertatipografica/Alegreya\ngFontsUrl: https://fonts.google.com/specimen/Alegreya\ncreator:\n  name: Huerta Tipográfica\n  url: https://huertatipografica.com/en\ndescription: Alegreya is a contemporary interpretation of a calligraphic face, designed for long-form literary texts. It offers five weights, a carefully designed italic, small caps, and good OpenType support. This rich typographic palette makes it a versatile and expressive typeface.\nfamilyFaces:\n  - Alegreya Sans\ncomparisonFaces:\n  - Alegreya Sans\n  - IBM Plex Serif\n  - Source Serif Pro\n  - Vollkorn\n"
  },
  {
    "path": "content/typefaces/alegreya/sample.html",
    "content": "<h1>like the generations of leaves, the lives of mortal men. Now the wind scatters the old leaves across the earth, now the living timber bursts with the new buds and spring comes round again. And so with men: as one generation comes to life, another dies away.</h1>\n\n<p>Homer, <em>The Iliad</em></p>\n"
  },
  {
    "path": "content/typefaces/alegreya-sans/detail.html",
    "content": "<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fb</span> <span class='liga'>fb</span></div>\n    <div><span class='fade italic'>fb</span> <span class='liga'><em>fb</em></span></div>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade italic'>ffj</span> <span class='liga italic'>ffj</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>fft</span> <span class='liga'>fft</span></div>\n    <div><span class='fade italic'>fft</span> <span class='liga italic'>fft</span></div>\n    <div><span class='fade'>fh</span> <span class='liga'>fh</span></div>\n    <div><span class='fade italic'>fh</span> <span class='liga italic'>fh</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade italic'>fj</span> <span class='liga italic'>fj</span></div>\n    <div><span class='fade'>fk</span> <span class='liga'>fk</span></div>\n    <div><span class='fade italic'>fk</span> <span class='liga italic'>fk</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n    <div><span class='fade'>ft</span> <span class='liga'>ft</span></div>\n    <div><span class='fade italic'>ft</span> <span class='liga italic'>ft</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr6 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle (default): 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>1st</span> <span class='ordinals'>1st</span></div>\n    <div><span class='fade'>2nd</span> <span class='ordinals'>2nd</span></div>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss01';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>XVLIII</span> <span class='ss01'>XVLIII</span></div>\n    <div><span class='fade'>MDC</span> <span class='ss01'>MDC</span></div>\n    <div><span class='fade'>mxlii</span> <span class='ss01'>mxlii</span></div>\n    <div><span class='fade'>dxxvii</span> <span class='ss01'>dxxvii</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&harr;</span> <p class='code'>&amp;harr;</p></div>\n    <div><span>&updownarrow;</span> <p class='code'>&amp;updownarrow;</p></div>\n    <div><span>&#9650;</span> <p class='code'>&amp;#9650;</p></div>\n    <div><span>&#9654;</span> <p class='code'>&amp;#9654;</p></div>\n    <div><span>&#9660;</span> <p class='code'>&amp;#9660;</p></div>\n    <div><span>&#9664;</span> <p class='code'>&amp;#9664;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/alegreya-sans/glyphs.yml",
    "content": "fontFile: /assets/fonts/alegreya-sans/AlegreyaSans-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/alegreya-sans/meta.yml",
    "content": "name: Alegreya Sans\ndateAdded: '2018-10-15'\ncategory: Sans-Serif\nstyles: 14\nitalic: true\nsmallcap: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra-Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v2.008\n  date: 13 Mar 2018\nprojectUrl: https://github.com/huertatipografica/Alegreya-Sans\ngFontsUrl: https://fonts.google.com/specimen/Alegreya+Sans\ncreator:\n  name: Huerta Tipográfica\n  url: https://huertatipografica.com/en\ndescription: Alegreya Sans is the companion to Alegreya, with both typefaces taking inspiration from calligraphic letter forms. Offering seven weights, along with an expressive italic and small cap, it works well in a variety of contexts, from long-form texts to headlines.\nfamilyFaces:\n  - Alegreya\ncomparisonFaces:\n  - Alegreya\n  - FiraGO\n  - IBM Plex Sans\n  - Inria Sans\n"
  },
  {
    "path": "content/typefaces/alegreya-sans/sample.html",
    "content": "<h1>Helvítis<br> fokking<br> fokk!</h1>\n"
  },
  {
    "path": "content/typefaces/archivo/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr6 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle: 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Proportional Lining  (default): 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples ordinals flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div class='ms5'><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div class='ms5'><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div class='ms5'><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div class='ms5'><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/archivo/glyphs.yml",
    "content": "fontFile: /assets/fonts/archivo/Archivo-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/archivo/meta.yml",
    "content": "name: Archivo\ndateAdded: '2018-10-15'\ncategory: Sans-Serif\nstyles: 8\nitalic: true\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v1.003\n  date: 12 Aug 2018\nprojectUrl: https://github.com/Omnibus-Type/Archivo\ngFontsUrl: https://fonts.google.com/specimen/Archivo\ncreator:\n  name: Omnibus-Type\n  url: https://www.omnibus-type.com\ndescription: Archivo is a grotesque san-serif inspired by late 19<span class=ordinals>th</span> century American typefaces. Its letterforms are low contrast with a large x-height. It’s part of the Archivo family, which includes Black and Narrow styles.\nfamilyFaces:\n  - Archivo Black\ncomparisonFaces:\n  - FiraGO\n  - IBM Plex Sans\n  - Source Sans Pro\n"
  },
  {
    "path": "content/typefaces/archivo/sample.html",
    "content": "<h1>Dieter Rams<br>Bauhaus-Archiv<br>Museum für<br> Gestaltung<br>Retrospective <span class=\"oldstyle-proportional\">02.10.2015<br>24.11.2015</span></h1>\n"
  },
  {
    "path": "content/typefaces/archivo-black/detail.html",
    "content": "<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr7 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle: 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining (default): 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples ordinals flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div class='ms5'><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div class='ms5'><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div class='ms5'><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div class='ms5'><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/archivo-black/glyphs.yml",
    "content": "fontFile: /assets/fonts/archivo-black/ArchivoBlack-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/archivo-black/meta.yml",
    "content": "name: Archivo Black\ndateAdded: '2018-10-19'\ncategory: Sans-Serif\nstyles: 2\nitalic: true\nsampleShade: light\nweights:\n  - weight: 400\n    name: Regular\nlatestRelease:\n  version: v1.006\n  date: 12 Aug 2018\nprojectUrl: https://github.com/Omnibus-Type/ArchivoBlack\ngFontsUrl: https://fonts.google.com/specimen/Archivo+Black\ncreator:\n  name: Omnibus-Type\n  url: https://www.omnibus-type.com\ndescription: Archivo Black is a grotesque san-serif inspired by late 19<span class=ordinals>th</span> century American typefaces. Its letterforms are low contrast with a large x-height. It’s part of the Archivo family, which includes normal and Narrow styles.\nfamilyFaces:\n  - Archivo\ncomparisonFaces:\n  - Archivo\n"
  },
  {
    "path": "content/typefaces/archivo-black/sample.html",
    "content": "<h1>Die<br>Neue<br>Gesell<br>schaft</h1>\n<h2>August 1974</h2>\n"
  },
  {
    "path": "content/typefaces/biorhyme/detail.html",
    "content": "<div class='type-detail-table examples-figures gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n    <p class='code'>font-feature-settings: '----';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div>\n      <h1 class='fractions'>1/2 3/4</h1>\n      <p class='code'>'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>123</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n    <div><span class='fade'>27</span> <span class='ss03'>27</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>0</span> <span class='zero'>0</span> <p class='code'>'zero'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>1a</span> <span class='ordinals'>1a</span></div>\n    <div><span class='fade'>2o</span> <span class='ordinals'>2o</span> </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr5 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span class='ss05'>angry</span> <p class='code'>angry: 'ss05'</p></div>\n    <div><span class='ss05'>neutral</span> <p class='code'>neutral:&nbsp;'ss05'</p></div>\n    <div><span class='ss05'>happy</span> <p class='code'>happy: 'ss05'</p></div>\n    <div><span class='ss05'>sad</span> <p class='code'>sad: 'ss05'</p></div>\n    <div><span class='ss05'>surprised</span> <p class='code'>surprised: 'ss05'</p></div>\n    <div><span class='ss05'>afraid</span> <p class='code'>afraid: 'ss05'</p></div>\n    <div><span class='ss05'>disgusted</span> <p class='code'>disgusted: 'ss05'</p></div>\n    <div><span class='ss06'>angry</span> <p class='code'>angry: 'ss06'</p></div>\n    <div><span class='ss06'>neutral</span> <p class='code'>neutral:&nbsp;'ss06'</p></div>\n    <div><span class='ss06'>happy</span> <p class='code'>happy: 'ss06'</p></div>\n    <div><span class='ss06'>sad</span> <p class='code'>sad: 'ss06'</p></div>\n    <div><span class='ss06'>surprised</span> <p class='code'>surprised: 'ss06'</p></div>\n    <div><span class='ss06'>afraid</span> <p class='code'>afraid: 'ss06'</p></div>\n    <div><span class='ss06'>disgusted</span> <p class='code'>disgusted: 'ss06'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>A</span> <span class='ss07'>A</span> <p class='code'>'ss07'</p></div>\n    <div><span class='fade'>a</span> <span class='ss02'>a</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>G</span> <span class='ss04'>G</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>d</span> <span class='ss08'>d</span> <p class='code'>'ss08'</p></div>\n    <div><span class='fade'>f</span> <span class='ss01'>f</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>g</span> <span class='ss02'>g</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>k</span> <span class='ss03'>k</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>t</span> <span class='ss01'>t</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>u</span> <span class='ss08'>u</span> <p class='code'>'ss08'</p></div>\n    <div><span class='fade'>x</span> <span class='ss03'>x</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>z</span> <span class='ss04'>z</span> <p class='code'>'ss04'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Swashes</p>\n    <p class='code'>font-feature-settings: 'swsh';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>Q</span> <span class='swsh'>Q</span></div>\n    <div><span class='fade'>R</span> <span class='swsh'>R</span></div>\n    <div><span class='fade'>&</span> <span class='swsh'>&</span></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/biorhyme/glyphs.yml",
    "content": "fontFile: /assets/fonts/biorhyme/BioRhyme-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/biorhyme/meta.yml",
    "content": "name: BioRhyme\ndateAdded: '2018-10-15'\ncategory: Display\nstyles: 5\nweights:\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra-Bold\nlatestRelease:\n  version: v1.600\n  date: 9 Mar 2016\nprojectUrl: https://github.com/aoifemooney/makingbiorhyme\ngFontsUrl: https://fonts.google.com/specimen/BioRhyme\ncreator:\n  name: Aoife Mooney\n  url: http://www.aoifemooney.org\ndescription: BioRhyme takes inspiration from older slab serifs, but adds a friendly, playful personality. It works best at large sizes, both for headlines and short bursts of body copy. BioRhyme and its sister face BioRhyme Expanded take advantage of OpenType enhancements including alternative glyph forms, swashes and emoticons.\nfamilyFaces:\n  - BioRhyme Expanded\ncomparisonFaces:\n  - BioRhyme Expanded\n"
  },
  {
    "path": "content/typefaces/biorhyme/sample.html",
    "content": "<h1>är d<span class='ss08'>u</span><br> ny<span class='ss01'>f</span>iken?</h1>\n"
  },
  {
    "path": "content/typefaces/biorhyme-expanded/detail.html",
    "content": "<div class='type-detail-table examples-figures gr2 gc6'>\n  <div class='meta dark top flex-column'>\n    <p class='name'>Figures</p>\n    <p class='code'>font-feature-settings: '----';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div>\n      <h1 class='fractions'>1/2 3/4</h1>\n      <p class='code'>'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>123</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n    <div><span class='fade'>27</span> <span class='ss03'>27</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>0</span> <span class='zero'>0</span> <p class='code'>'zero'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-column'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>1a</span> <span class='ordinals'>1a</span></div>\n    <div><span class='fade'>2o</span> <span class='ordinals'>2o</span> </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr5 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span class='ss05'>angry</span> <p class='code'>angry: 'ss05'</p></div>\n    <div><span class='ss05'>neutral</span> <p class='code'>neutral:&nbsp;'ss05'</p></div>\n    <div><span class='ss05'>happy</span> <p class='code'>happy: 'ss05'</p></div>\n    <div><span class='ss05'>sad</span> <p class='code'>sad: 'ss05'</p></div>\n    <div><span class='ss05'>surprised</span> <p class='code'>surprised: 'ss05'</p></div>\n    <div><span class='ss05'>afraid</span> <p class='code'>afraid: 'ss05'</p></div>\n    <div><span class='ss05'>disgusted</span> <p class='code'>disgusted: 'ss05'</p></div>\n    <div><span class='ss06'>angry</span> <p class='code'>angry: 'ss06'</p></div>\n    <div><span class='ss06'>neutral</span> <p class='code'>neutral:&nbsp;'ss06'</p></div>\n    <div><span class='ss06'>happy</span> <p class='code'>happy: 'ss06'</p></div>\n    <div><span class='ss06'>sad</span> <p class='code'>sad: 'ss06'</p></div>\n    <div><span class='ss06'>surprised</span> <p class='code'>surprised: 'ss06'</p></div>\n    <div><span class='ss06'>afraid</span> <p class='code'>afraid: 'ss06'</p></div>\n    <div><span class='ss06'>disgusted</span> <p class='code'>disgusted: 'ss06'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>A</span> <span class='ss07'>A</span> <p class='code'>'ss07'</p></div>\n    <div><span class='fade'>a</span> <span class='ss02'>a</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>G</span> <span class='ss04'>G</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>d</span> <span class='ss08'>d</span> <p class='code'>'ss08'</p></div>\n    <div><span class='fade'>f</span> <span class='ss01'>f</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>g</span> <span class='ss02'>g</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>k</span> <span class='ss03'>k</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>t</span> <span class='ss01'>t</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>u</span> <span class='ss08'>u</span> <p class='code'>'ss08'</p></div>\n    <div><span class='fade'>x</span> <span class='ss03'>x</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>z</span> <span class='ss04'>z</span> <p class='code'>'ss04'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Swashes</p>\n    <p class='code'>font-feature-settings: 'swsh';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>Q</span> <span class='swsh'>Q</span></div>\n    <div><span class='fade'>R</span> <span class='swsh'>R</span></div>\n    <div><span class='fade'>&</span> <span class='swsh'>&</span></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/biorhyme-expanded/glyphs.yml",
    "content": "fontFile: /assets/fonts/biorhyme-expanded/BioRhymeExpanded-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/biorhyme-expanded/meta.yml",
    "content": "name: BioRhyme Expanded\ndateAdded: '2018-10-28'\ncategory: Display\nstyles: 5\nweights:\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra-Bold\nlatestRelease:\n  version: v1.600\n  date: 9 Mar 2016\nprojectUrl: https://github.com/aoifemooney/makingbiorhyme\ngFontsUrl: https://fonts.google.com/specimen/BioRhyme+Expanded\ncreator:\n  name: Aoife Mooney\n  url: http://www.aoifemooney.org\ndescription: BioRhyme Expanded takes inspiration from older slab serifs, but adds a friendly, playful personality. It works best at large sizes, both for headlines and short bursts of body copy. BioRhyme Expanded and its sister face BioRhyme take advantage of OpenType enhancements including alternative glyph forms, swashes and emoticons.\nfamilyFaces:\n  - BioRhyme\ncomparisonFaces:\n  - BioRhyme\n"
  },
  {
    "path": "content/typefaces/biorhyme-expanded/sample.html",
    "content": "<h1 class='ss02'>fat</h1>\n<h2>burger</h2>\n"
  },
  {
    "path": "content/typefaces/commissioner/detail.html",
    "content": "<div class='type-detail-table examples-figures gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>12345</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>12345</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr1 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/commissioner/glyphs.yml",
    "content": "fontFile: /assets/fonts/commissioner/Commissioner_VF_1.001.woff2\n"
  },
  {
    "path": "content/typefaces/commissioner/meta.yml",
    "content": "name: Commissioner\ndateAdded: '2025-06-06'\ncategory: Sans-Serif\nstyles: Variable\nitalic: true\nsampleShade: light\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra-Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v1.000\n  date: 24 Sep 2020\nprojectUrl: https://github.com/kosbarts/Commissioner\ngFontsUrl: https://fonts.google.com/specimen/Commissioner\ncreator:\n  name: Kostas Bartsokas\n  url: https://kostasbartsokas.com/\ndescription: Commissioner is a low-contrast humanist sans-serif with almost classical proportions, conceived as a variable family. The family consists of three “voices”. The default style is a grotesque with straight stems. As the flare axis grows the straight grotesque terminals develop a swelling and become almost glyphic serifs while joints become more idiosyncratic. The volume axis transforms the glyphic serifs to wedge-like ones.\ncomparisonFaces:\n  - Archivo\n  - Fivo Sans\n  - Libre Franklin\n  - Source Sans Pro\n"
  },
  {
    "path": "content/typefaces/commissioner/sample.html",
    "content": "<h2>NOW thru SUN. SEPT. 10</h2>\n<h1>LARRY YOUNG<br /> QUARTET</h1>\n\n<h2>TUES. SEPT. 12 thru SUN. SEPT. 17</h2>\n<h1>ALBERT AYLER<br /> QUINTET</h1>\n"
  },
  {
    "path": "content/typefaces/cooper-hewitt/detail.html",
    "content": "<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&bigstar;</span> <p class='code'>&amp;bigstar;</p></div>\n    <div><span>&#9788;</span> <p class='code'>&amp;#9788;</p></div>\n    <div><span>&#9790;</span> <p class='code'>&amp;#9790;</p></div>\n    <div><span>&numero;</span> <p class='code'>&amp;numero;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='fractions'>1/2 3/4</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/cooper-hewitt/glyphs.yml",
    "content": "fontFile: /assets/fonts/cooper-hewitt/CooperHewitt-Book.woff2\n"
  },
  {
    "path": "content/typefaces/cooper-hewitt/meta.yml",
    "content": "name: Cooper Hewitt\ndateAdded: '2018-10-15'\ncategory: Sans-Serif\nstyles: 14\nitalic: true\nweights:\n  - weight: 200\n    name: Thin\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Book\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: SemiBold\n  - weight: 700\n    name: Bold\n  - weight: 900\n    name: Heavy\nlatestRelease:\n  version: v1.0\n  date: 16 Jun 2014\nprojectUrl: https://www.cooperhewitt.org/open-source-at-cooper-hewitt/cooper-hewitt-the-typeface-by-chester-jenkins/\ncreator:\n  name: Chester Jenkins\n  url: https://vllg.com/constellation\ndescription: Cooper Hewitt is a contemporary sans-serif with a strong geometric feel. It works especially well for headlines when set in all caps. It was designed by Chester Jenkins for the Cooper Hewitt design museum.\ncomparisonFaces:\n  - Poppins\n"
  },
  {
    "path": "content/typefaces/cooper-hewitt/sample.html",
    "content": "<h1>Cinémathèque Suisse</h1>\n<h2>Jean-Luc Godard<br>12 Nov.84 Au 12 JAN.85<br>Casino de Montbenon<br>Lausanne</h2>\n"
  },
  {
    "path": "content/typefaces/crimson-pro/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Discretionary Ligatures</p>\n    <p class='code'>font-feature-settings: 'dlig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ch</span> <span class='dlig'>ch</span></div>\n    <div><span class='fade'><em>ch</em></span> <span class='dlig italic'>ch</span></div>\n    <div><span class='fade'>ct</span> <span class='dlig'>ct</span></div>\n    <div><span class='fade italic'>ct</span> <span class='dlig italic'>ct</span></div>\n    <div><span class='fade'>fj</span> <span class='dlig'>fj</span></div>\n    <div><span class='fade'>st</span> <span class='dlig'>st</span></div>\n    <div><span class='fade italic'>st</span> <span class='dlig italic'>st</span></div>\n    <div><span class='fade'>Th</span> <span class='dlig'>Th</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr7 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle (default): 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&#9753;</span> <p class='code'>&amp;#9753;</p></div>\n    <div><span>&#10087;</span> <p class='code'>&amp;#10087;</p></div>\n    <div><span>&#63743;</span> <p class='code'>&amp;#63743;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/crimson-pro/glyphs.yml",
    "content": "fontFile: /assets/fonts/crimson-pro/CrimsonPro-Roman-VF.woff2\n"
  },
  {
    "path": "content/typefaces/crimson-pro/meta.yml",
    "content": "name: Crimson Pro\ndateAdded: '2020-05-23'\ncategory: Serif\nstyles: Variable\nitalic: true\nsampleShade: light\nweights:\n  - weight: 200\n    name: Extra Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v1.002\n  date: 21 Feb 2019\nprojectUrl: https://github.com/Fonthausen/CrimsonPro\ngFontsUrl: https://fonts.google.com/specimen/Crimson+Pro\ncreator:\n  name: Jacques Le Bailly\n  url: http://baronvonfonthausen.com\ndescription: Released in January 2019, Crimson Pro is a redesign of the Crimson face by Sebastian Kosch. It’s ideal for long-form texts where readability is key.\ncomparisonFaces:\n  - Vollkorn\n  - Source Serif Pro\n"
  },
  {
    "path": "content/typefaces/crimson-pro/sample.html",
    "content": "<p>“Before he died in 2013, the great sociologist Robert Bellah said that his view of everything he’d studied across his life was tilted on its axis by this late recognition: when mammals began to bring forth offspring from the center of their bodies, spiritual life became possible. With apes and far more with humans, the period of necessary parental care—care in order for the offspring to survive—became longer and longer. The long helplessness of the child generated a sphere of softening, experimentation, and creativity in self-understanding and shared life.”</p>\n\n<h6>Krista Tippett, <em>Becoming Wise</em></h6>\n"
  },
  {
    "path": "content/typefaces/fira-code/detail.html",
    "content": "<div class='type-detail-table gr7 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures (selection)</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade ms6'>www</span> <span class='liga ms6'>www</span></div>\n    <div><span class='fade ms6'>&&</span> <span class='liga ms6'>&&</span></div>\n    <div><span class='fade ms6'> => </span> <span class='liga ms6'> => </span></div>\n    <div><span class='fade ms6'> <=> </span> <span class='liga ms6'> <=> </span></div>\n    <div><span class='fade ms6'> ||> </span> <span class='liga ms6'> ||> </span></div>\n    <div><span class='fade ms6'> ++ </span> <span class='liga ms6'> ++ </span></div>\n    <div><span class='fade ms6'>***</span> <span class='liga ms6'>***</span></div>\n    <div><span class='fade ms6'>*></span> <span class='liga ms6'>*></span></div>\n    <div><span class='fade ms6'>*/</span> <span class='liga ms6'>*/</span></div>\n    <div><span class='fade ms6'>{|</span> <span class='liga ms6'>{|</span></div>\n    <div><span class='fade ms6'>[|</span> <span class='liga ms6'>[|</span></div>\n    <div><span class='fade ms6'>]#</span> <span class='liga ms6'>]#</span></div>\n    <div><span class='fade ms6'>::</span> <span class='liga ms6'>::</span></div>\n    <div><span class='fade ms6'>::=</span> <span class='liga ms6'>::=</span></div>\n    <div><span class='fade ms6'>:=</span> <span class='liga ms6'>:=</span></div>\n    <div><span class='fade ms6'>!!</span> <span class='liga ms6'>!!</span></div>\n    <div><span class='fade ms6'> == </span> <span class='liga ms6'> == </span></div>\n    <div><span class='fade ms6'>!=</span> <span class='liga ms6'>!=</span></div>\n    <div><span class='fade ms6'> === </span> <span class='liga ms6'> === </span></div>\n    <div><span class='fade ms6'> !== </span> <span class='liga ms6'> !== </span></div>\n    <div><span class='fade ms6'> ## </span> <span class='liga ms6'> ## </span></div>\n    <div><span class='fade ms6'> ### </span> <span class='liga ms6'> ### </span></div>\n    <div><span class='fade ms6'> #### </span> <span class='liga ms6'> #### </span></div>\n    <div><span class='fade ms6'> #= </span> <span class='liga ms6'> #= </span></div>\n    <div><span class='fade ms6'> #? </span> <span class='liga ms6'> #? </span></div>\n    <div><span class='fade ms6'> #_ </span> <span class='liga ms6'> #_ </span></div>\n    <div><span class='fade ms6'> #_( </span> <span class='liga ms6'> #_( </span></div>\n    <div><span class='fade ms6'> .= </span> <span class='liga ms6'> .= </span></div>\n    <div><span class='fade ms6'> ..= </span> <span class='liga ms6'> ..= </span></div>\n    <div><span class='fade ms6'> ?: </span> <span class='liga ms6'> ?: </span></div>\n    <div><span class='fade ms6'> ?. </span> <span class='liga ms6'> ?. </span></div>\n    <div><span class='fade ms6'> /= </span> <span class='liga ms6'> /= </span></div>\n    <div><span class='fade ms6'> /== </span> <span class='liga ms6'> /== </span></div>\n    <div><span class='fade ms6'> /> </span> <span class='liga ms6'> /> </span></div>\n    <div><span class='fade ms6'> // </span> <span class='liga ms6'> // </span></div>\n    <div><span class='fade ms6'> _|_ </span> <span class='liga ms6'> _|_ </span></div>\n    <div><span class='fade ms6'> __ </span> <span class='liga ms6'> __ </span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr5 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining (default): 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>r</span> <span class='ss01'>r</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>&</span> <span class='ss03'>&</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>$</span> <span class='ss04'>$</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>@</span> <span class='ss05'>@</span> <p class='code'>'ss05'</p></div>\n    <div><span class='fade'>\\\\</span> <span class='ss06'>\\\\</span> <p class='code'>'ss06'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&#8999;</span> <p class='code'>&amp;#8999;</p></div>\n    <div><span>&#9760;</span> <p class='code'>&amp;#9760;</p></div>\n    <div><span>&#9680;</span> <p class='code'>&amp;#9680;</p></div>\n    <div><span>&#9786;</span> <p class='code'>&amp;#9786;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/fira-code/glyphs.yml",
    "content": "fontFile: /assets/fonts/fira-code/FiraCode-VF.woff2\n"
  },
  {
    "path": "content/typefaces/fira-code/meta.yml",
    "content": "name: Fira Code\ndateAdded: '2019-01-21'\ncategory: Monospaced\nstyles: Variable\nsampleShade: light\nweights:\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v4.0\n  date: 18 May 2020\nprojectUrl: https://github.com/tonsky/FiraCode\ncreator:\n  name: Nikita Prokopov\n  url: https://twitter.com/nikitonsky\ndescription: Fira Code is a monospaced typeface optimized for reading and writing code. It has a huge number of ligatures catering to a variety of programming languages, making code more concise and readable.\ncomparisonFaces:\n  - IBM Plex Mono\n  - Source Code Pro\n  - Space Mono\n"
  },
  {
    "path": "content/typefaces/fira-code/sample.html",
    "content": "<h1> ==> *** ## &#9760; ## *** <== </h1>\n<h1> #[*><span>United by the</span><*]# </h1>\n<h1> =<< &#9680; www &#9786;&#9786;&#9786; www &#9681; >>= </h1>\n<h1> #[*><span>World Wide Web</span><*]# </h1>\n<h1> ==> *** ## &#9760; ## *** <== </h1>\n"
  },
  {
    "path": "content/typefaces/firago/detail.html",
    "content": "<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade italic'>ffj</span> <span class='liga italic'>ffj</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade italic'>fj</span> <span class='liga italic'>fj</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr8 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle: 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining (default): 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>&</span> <span class='ss03'>&</span> <p class='code'>'ss03'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&harr;</span> <p class='code'>&amp;harr;</p></div>\n    <div><span>&updownarrow;</span> <p class='code'>&amp;updownarrow;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/firago/glyphs.yml",
    "content": "fontFile: /assets/fonts/firago/FiraGO-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/firago/meta.yml",
    "content": "name: FiraGO\ndateAdded: '2018-10-23'\ncategory: Sans-Serif\nstyles: 22\nitalic: true\nsmallcap: true\nsampleShade: light\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: UltraLight\n  - weight: 250\n    name: ExtraLight\n  - weight: 300\n    name: Light\n  - weight: 350\n    name: Book\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: SemiBold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: ExtraBold\n  - weight: 900\n    name: Heavy\nlatestRelease:\n  version: v1.0\n  date: 14 Mar 2018\nprojectUrl: https://github.com/bBoxType/FiraGO\ncreator:\n  name: bBox Type\n  url: https://bboxtype.com\ndescription: FiraGO is the successor to Fira Sans and serves as the corporate typeface for Here. It is a versatile sans-serif and includes eleven weights, a well-designed italic, small caps, and good OpenType support. It works well for both long stretches of body copy and headlines.\ncomparisonFaces:\n  - Alegreya Sans\n  - IBM Plex Sans\n  - Inria Sans\n  - Source Sans Pro\n"
  },
  {
    "path": "content/typefaces/firago/sample.html",
    "content": "<h2>Minimum</h2>\n<h3>Minimum</h3>\n<h4>Minimum</h4>\n<h5>Minimum</h5>\n<h6>Minimum</h6>'\n"
  },
  {
    "path": "content/typefaces/fivo-sans/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>a</span> <span class='aalt'>a</span> <p class='code'>'aalt'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/fivo-sans/glyphs.yml",
    "content": "fontFile: /assets/fonts/fivo-sans/fivosans-regular.woff2\n"
  },
  {
    "path": "content/typefaces/fivo-sans/meta.yml",
    "content": "name: Fivo Sans\ndateAdded: '2019-01-03'\ncategory: Sans-Serif\nstyles: 14\nitalic: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Heavy\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v1.0\n  date: 30 Jun 2017\nprojectUrl: https://www.behance.net/gallery/53653425/Fivo-Sans-Free-Font-Family\ncreator:\n  name: Alex Slobzheninov\n  url: https://www.behance.net/slobzheninov\ndescription: Fivo Sans is a neo-grotesque face inspired by the International Typographic Style.\nfamilyFaces:\n  - Fivo Sans Modern\ncomparisonFaces:\n  - Fivo Sans Modern\n  - Archivo\n  - Cooper Hewitt\n"
  },
  {
    "path": "content/typefaces/fivo-sans/sample.html",
    "content": "<h1>Internationale<br>Juni-Festwochen 1962<br>Stadttheater Zürich</h1>\n"
  },
  {
    "path": "content/typefaces/fivo-sans-modern/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>a</span> <span class='aalt'>a</span> <p class='code'>'aalt'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/fivo-sans-modern/glyphs.yml",
    "content": "fontFile: /assets/fonts/fivo-sans-modern/fivosansmodern-regular.woff2\n"
  },
  {
    "path": "content/typefaces/fivo-sans-modern/meta.yml",
    "content": "name: Fivo Sans Modern\ndateAdded: '2019-01-03'\ncategory: Display\nstyles: 10\nitalic: true\nsampleShade: light\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Heavy\n  - weight: 900\n    name: Extra Black\nlatestRelease:\n  version: v1.0\n  date: 5 Jul 2017\nprojectUrl: https://www.behance.net/gallery/54442585/FIvo-Sans-Modern-Typeface\ncreator:\n  name: Alex Slobzheninov\n  url: https://www.behance.net/slobzheninov\ndescription: Fivo Sans Modern is the display version of Fivo Sans. It’s notable for the ‘extremely huge’ ink traps that provide a distinctive feel while still maintaining its Swiss roots.\nfamilyFaces:\n  - Fivo Sans\ncomparisonFaces:\n  - Fivo Sans\n  - Archivo\n  - Cooper Hewitt\n"
  },
  {
    "path": "content/typefaces/fivo-sans-modern/sample.html",
    "content": "<h2>10 maart<br>dag van de<br><strong>anarchie</strong></h2>\n<h1>a</h1>\n"
  },
  {
    "path": "content/typefaces/fraunces/detail.html",
    "content": "<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Wonk</p>\n    <p class='code'>font-variation-settings: 'WONK';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span style='font-variation-settings: \"WONK\" 0;'>mnhs&</span> <p class='code'>'WONK' 0</p></div>\n    <div><span style='font-variation-settings: \"WONK\" 1;'>mnhs&</span> <p class='code'>'WONK' 1</p></div>\n\n    <div><span class='italic' style='font-variation-settings: \"WONK\" 0;'>lbdhkvw&</span> <p class='code'>'WONK' 0</p></div>\n    <div><span class='italic' style='font-variation-settings: \"WONK\" 1;'>lbdhkvw&</span> <p class='code'>'WONK' 1</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Softness</p>\n    <p class='code'>font-variation-settings: 'SOFT';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span style='font-variation-settings: \"SOFT\" 0;'>Softness</span> <p class='code'>'SOFT' 0</p></div>\n    <div><span style='font-variation-settings: \"SOFT\" 50;'>Softness</span> <p class='code'>'SOFT' 50</p></div>\n    <div><span style='font-variation-settings: \"SOFT\" 100;'>Softness</span> <p class='code'>'SOFT' 100</p></div>\n\n    <div><span class='italic' style='font-variation-settings: \"SOFT\" 0;'>Softness</span> <p class='code'>'SOFT' 0</p></div>\n    <div><span class='italic' style='font-variation-settings: \"SOFT\" 50;'>Softness</span> <p class='code'>'SOFT' 50</p></div>\n    <div><span class='italic' style='font-variation-settings: \"SOFT\" 100;'>Softness</span> <p class='code'>'SOFT' 100</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Optical Size</p>\n    <p class='code'>font-variation-settings: 'opsz';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span style='font-variation-settings: \"opsz\" 9;'>Optical</span> <p class='code'>'opsz' 9</p></div>\n    <div><span style='font-variation-settings: \"opsz\" 68;'>Optical</span> <p class='code'>'opsz' 68</p></div>\n    <div><span style='font-variation-settings: \"opsz\" 144;'>Optical</span> <p class='code'>'opsz' 144</p></div>\n\n    <div><span class='italic' style='font-variation-settings: \"opsz\" 9;'>Optical</span> <p class='code'>'opsz' 9</p></div>\n    <div><span class='italic' style='font-variation-settings: \"opsz\" 68;'>Optical</span> <p class='code'>'opsz' 68</p></div>\n    <div><span class='italic' style='font-variation-settings: \"opsz\" 144;'>Optical</span> <p class='code'>'opsz' 144</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&#188;</span> <p class='code'>&amp;188;</p></div>\n    <div><span>&#189;</span> <p class='code'>&amp;189;</p></div>\n    <div><span>&#190;</span> <p class='code'>&amp;190;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/fraunces/glyphs.yml",
    "content": "fontFile: /assets/fonts/fraunces/Fraunces.woff2\n"
  },
  {
    "path": "content/typefaces/fraunces/meta.yml",
    "content": "name: Fraunces\ndateAdded: '2020-11-22'\ncategory: Display\nstyles: Variable\nitalic: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi Bold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra-Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v1.0\n  date: 29 Oct 2020\nprojectUrl: https://github.com/undercasetype/Fraunces\ncreator:\n  name: Undercase Type\n  url: http://www.undercase.xyz\ndescription: 'Fraunces is a display face inspired by 20th century faces such as Windsor and Cooper. It’s available as a variable font, making use of several custom axes: ‘SOFT’ and ‘WONK’, along with the registered axes ‘wght’ and ‘opsz’.'\ncomparisonFaces:\n  - Playfair Display\n"
  },
  {
    "path": "content/typefaces/fraunces/sample.html",
    "content": "<h1><span>The</span></h1>\n<h1><span>Beach</span></h1>\n<h1><span style='margin-right: 0.075em;'>Boys</span>Pet</h1>\n<h1>Sounds</h1>\n"
  },
  {
    "path": "content/typefaces/ia-writer-quattro/detail.html",
    "content": "<div class='type-detail-table examples-figures gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'><span class='fractions'>1/2</span> <span class='fractions'>1/3</span> <span class='fractions'>3/4</span> <span class='fractions'>5/8</span> <span class='fractions'>7/8</span></h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>a</span> <span class='ss01'>a</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>g</span> <span class='ss02'>g</span> <p class='code'>'ss02'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/ia-writer-quattro/glyphs.yml",
    "content": "fontFile: /assets/fonts/ia-writer-quattro/iAWriterQuattroV.woff2\n"
  },
  {
    "path": "content/typefaces/ia-writer-quattro/meta.yml",
    "content": "name: iA Writer Quattro\ndateAdded: '2019-01-30'\ncategory: Sans-Serif\nstyles: Variable\nitalic: true\nsampleShade: dark\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi Bold\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v2.0\n  date: 25 Dec 2018\nprojectUrl: https://github.com/iaolo/iA-Fonts\ncreator:\n  name: iA\n  url: https://ia.net\ndescription: iA Writer Quattro is based on the monospaced version of IBM Plex, but gives extra width to some characters (such as m and w), while reducing the width of other characters (such as f, i, l, r and s). This variability in width, while still retaining the overall feel of a monospaced face, provides a unique, hybrid feel. More information is available on the <a href=https://ia.net/writer/blog/a-typographic-christmas>iA site</a>.\ncomparisonFaces:\n  - IBM Plex Mono\n  - IBM Plex Sans\n"
  },
  {
    "path": "content/typefaces/ia-writer-quattro/sample.html",
    "content": "<h1>&#176; All along this road</h1>\n<h1>not a single soul—only</h1>\n<h1>autumn evening</h1>\n\n<h2>Matsuo Basho</h2>\n"
  },
  {
    "path": "content/typefaces/ibm-plex-mono/detail.html",
    "content": "<div class='type-detail-table examples-figures gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>a</span> <span class='ss01'>a</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>g</span> <span class='ss02'>g</span> <p class='code'>'ss02'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&#xebe7;</span> <p class='code'>&amp;#xebe7;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/ibm-plex-mono/glyphs.yml",
    "content": "fontFile: /assets/fonts/ibm-plex-mono/IBMPlexMono-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/ibm-plex-mono/meta.yml",
    "content": "name: IBM Plex Mono\ndateAdded: '2018-11-02'\ncategory: Monospaced\nstyles: 16\nitalic: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 450\n    name: Text\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v4.0.2\n  date: 09 Dec 2019\nprojectUrl: https://github.com/IBM/plex\ngFontsUrl: https://fonts.google.com/specimen/IBM+Plex+Mono\ncreator:\n  name: Mike Abbink & Bold Monday\n  url: https://boldmonday.com\ndescription: IBM Plex is the corporate typeface for IBM. The Plex family includes Serif, Sans, Sans Condensed and Mono typefaces. They are designed to work well in user interfaces, with a surprisingly expressive italic for each.\nfamilyFaces:\n  - IBM Plex Sans\n  - IBM Plex Sans Condensed\n  - IBM Plex Serif\ncomparisonFaces:\n  - Source Code Pro\n  - IBM Plex Sans\n  - IBM Plex Sans Condensed\n  - IBM Plex Serif\n"
  },
  {
    "path": "content/typefaces/ibm-plex-mono/sample.html",
    "content": "<h1>Introduction</h1>\n<h1>to Mathematical</h1>\n<h1>Philosophy</h1>\n<h1>Bertrand</h1>\n<h1>Russell</h1>\n"
  },
  {
    "path": "content/typefaces/ibm-plex-sans/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>a</span> <span class='ss01'>a</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>g</span> <span class='ss02'>g</span> <p class='code'>'ss02'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&#xebe7;</span> <p class='code'>&amp;#xebe7;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/ibm-plex-sans/glyphs.yml",
    "content": "fontFile: /assets/fonts/ibm-plex-sans/IBMPlexSans-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/ibm-plex-sans/meta.yml",
    "content": "name: IBM Plex Sans\ndateAdded: '2018-10-31'\ncategory: Sans-Serif\nstyles: 16\nitalic: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 450\n    name: Text\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v4.0.2\n  date: 09 Dec 2019\nprojectUrl: https://github.com/IBM/plex\ngFontsUrl: https://fonts.google.com/specimen/IBM+Plex+Sans\ncreator:\n  name: Mike Abbink & Bold Monday\n  url: https://boldmonday.com\ndescription: IBM Plex is the corporate typeface for IBM. The Plex family includes Serif, Sans, Sans Condensed and Mono typefaces. They are designed to work well in user interfaces, with a surprisingly expressive italic for each.\nfamilyFaces:\n  - IBM Plex Mono\n  - IBM Plex Sans Condensed\n  - IBM Plex Serif\ncomparisonFaces:\n  - IBM Plex Serif\n  - Libre Franklin\n  - Source Sans Pro\n  - Work Sans\n"
  },
  {
    "path": "content/typefaces/ibm-plex-sans/sample.html",
    "content": "<h1>A Mathematical<br> Theory of<br> Communication</h1>\n<h1>C.E. Shannon</h1>\n"
  },
  {
    "path": "content/typefaces/ibm-plex-sans-condensed/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>a</span> <span class='ss01'>a</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>g</span> <span class='ss02'>g</span> <p class='code'>'ss02'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&#xebe7;</span> <p class='code'>&amp;#xebe7;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/ibm-plex-sans-condensed/glyphs.yml",
    "content": "fontFile: /assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/ibm-plex-sans-condensed/meta.yml",
    "content": "name: IBM Plex Sans Condensed\ndateAdded: '2018-11-01'\ncategory: Sans-Serif\nstyles: 16\nitalic: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 450\n    name: Text\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v4.0.2\n  date: 09 Dec 2019\nprojectUrl: https://github.com/IBM/plex\ngFontsUrl: https://fonts.google.com/specimen/IBM+Plex+Sans+Condensed\ncreator:\n  name: Mike Abbink & Bold Monday\n  url: https://boldmonday.com\ndescription: IBM Plex is the corporate typeface for IBM. The Plex family includes Serif, Sans, Sans Condensed and Mono typefaces. They are designed to work well in user interfaces, with a surprisingly expressive italic for each.\nfamilyFaces:\n  - IBM Plex Mono\n  - IBM Plex Sans\n  - IBM Plex Serif\ncomparisonFaces:\n  - IBM Plex Serif\n  - FiraGO\n  - Inria Sans\n"
  },
  {
    "path": "content/typefaces/ibm-plex-sans-condensed/sample.html",
    "content": "<h1>Monk</h1>\n<h2>Thelonious</h2>\n"
  },
  {
    "path": "content/typefaces/ibm-plex-serif/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&#xebe7;</span> <p class='code'>&amp;#xebe7;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/ibm-plex-serif/glyphs.yml",
    "content": "fontFile: /assets/fonts/ibm-plex-serif/IBMPlexSerif-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/ibm-plex-serif/meta.yml",
    "content": "name: IBM Plex Serif\ndateAdded: '2018-10-30'\ncategory: Serif\nstyles: 16\nitalic: true\nsampleShade: light\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 450\n    name: Text\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v4.0.2\n  date: 09 Dec 2019\nprojectUrl: https://github.com/IBM/plex\ngFontsUrl: https://fonts.google.com/specimen/IBM+Plex+Serif\ncreator:\n  name: Mike Abbink & Bold Monday\n  url: https://boldmonday.com\ndescription: IBM Plex is the corporate typeface for IBM. The Plex family includes Serif, Sans, Sans Condensed and Mono typefaces. They are designed to work well in user interfaces, with a surprisingly expressive italic for each.\nfamilyFaces:\n  - IBM Plex Mono\n  - IBM Plex Sans\n  - IBM Plex Sans Condensed\ncomparisonFaces:\n  - IBM Plex Sans\n  - Inria Serif\n  - Lora\n  - Source Serif Pro\n"
  },
  {
    "path": "content/typefaces/ibm-plex-serif/sample.html",
    "content": "<h1>“This just proves that this is not some peculiar human characteristic, it’s not even a mammalian characteristic, it’s a characteristic of brains,” he said. “It also shows that serotonin has a hugely important role in mediating social interactions right across species.”</h1>\n"
  },
  {
    "path": "content/typefaces/inria-sans/detail.html",
    "content": "<div class='type-detail-table gr5 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fb</span> <span class='liga'>fb</span></div>\n    <div><span class='fade italic'>fb</span> <span class='liga italic'>fb</span></div>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade italic'>ffj</span> <span class='liga italic'>ffj</span></div>\n    <div><span class='fade'>ffk</span> <span class='liga'>ffk</span></div>\n    <div><span class='fade italic'>ffk</span> <span class='liga italic'>ffk</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>fft</span> <span class='liga'>fft</span></div>\n    <div><span class='fade italic'>fft</span> <span class='liga italic'>fft</span></div>\n    <div><span class='fade'>fh</span> <span class='liga'>fh</span></div>\n    <div><span class='fade italic'>fh</span> <span class='liga italic'>fh</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade italic'>fj</span> <span class='liga italic'>fj</span></div>\n    <div><span class='fade'>fk</span> <span class='liga'>fk</span></div>\n    <div><span class='fade italic'>fk</span> <span class='liga italic'>fk</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n    <div><span class='fade'>ft</span> <span class='liga'>ft</span></div>\n    <div><span class='fade italic'>ft</span> <span class='liga italic'>ft</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr6 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle: 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining (default): 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum';</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr8 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss01';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>A</span> <span class='ss01'>A</span></div>\n    <div><span class='fade italic'>A</span> <span class='ss01 italic'>A</span></div>\n    <div><span class='fade'>B</span> <span class='ss01'>B</span></div>\n    <div><span class='fade italic'>B</span> <span class='ss01 italic'>B</span></div>\n    <div><span class='fade'>D</span> <span class='ss01'>D</span></div>\n    <div><span class='fade italic'>D</span> <span class='ss01 italic'>D</span></div>\n    <div><span class='fade'>E</span> <span class='ss01'>E</span></div>\n    <div><span class='fade italic'>E</span> <span class='ss01 italic'>E</span></div>\n    <div><span class='fade'>F</span> <span class='ss01'>F</span></div>\n    <div><span class='fade italic'>F</span> <span class='ss01 italic'>F</span></div>\n    <div><span class='fade'>G</span> <span class='ss01'>G</span></div>\n    <div><span class='fade italic'>G</span> <span class='ss01 italic'>G</span></div>\n    <div><span class='fade'>H</span> <span class='ss01'>H</span></div>\n    <div><span class='fade italic'>H</span> <span class='ss01 italic'>H</span></div>\n    <div><span class='fade'>J</span> <span class='ss01'>J</span></div>\n    <div><span class='fade italic'>J</span> <span class='ss01 italic'>J</span></div>\n    <div><span class='fade'>K</span> <span class='ss01'>K</span></div>\n    <div><span class='fade italic'>K</span> <span class='ss01 italic'>K</span></div>\n    <div><span class='fade'>L</span> <span class='ss01'>L</span></div>\n    <div><span class='fade italic'>L</span> <span class='ss01 italic'>L</span></div>\n    <div><span class='fade'>M</span> <span class='ss01'>M</span></div>\n    <div><span class='fade italic'>M</span> <span class='ss01 italic'>M</span></div>\n    <div><span class='fade'>N</span> <span class='ss01'>N</span></div>\n    <div><span class='fade italic'>N</span> <span class='ss01 italic'>N</span></div>\n    <div><span class='fade'>P</span> <span class='ss01'>P</span></div>\n    <div><span class='fade italic'>P</span> <span class='ss01 italic'>P</span></div>\n    <div><span class='fade'>R</span> <span class='ss01'>R</span></div>\n    <div><span class='fade italic'>R</span> <span class='ss01 italic'>R</span></div>\n    <div><span class='fade'>T</span> <span class='ss01'>T</span></div>\n    <div><span class='fade italic'>T</span> <span class='ss01 italic'>T</span></div>\n    <div><span class='fade'>U</span> <span class='ss01'>U</span></div>\n    <div><span class='fade italic'>U</span> <span class='ss01 italic'>U</span></div>\n    <div><span class='fade'>V</span> <span class='ss01'>V</span></div>\n    <div><span class='fade italic'>V</span> <span class='ss01 italic'>V</span></div>\n    <div><span class='fade'>W</span> <span class='ss01'>W</span></div>\n    <div><span class='fade italic'>W</span> <span class='ss01 italic'>W</span></div>\n    <div><span class='fade'>X</span> <span class='ss01'>X</span></div>\n    <div><span class='fade italic'>X</span> <span class='ss01 italic'>X</span></div>\n    <div><span class='fade'>Y</span> <span class='ss01'>Y</span></div>\n    <div><span class='fade italic'>Y</span> <span class='ss01 italic'>Y</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Case Sensitive Forms</p>\n    <p class='code'>font-feature-settings: 'case';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>(A)</span> <span class='case'>(A)</span></div>\n    <div><span class='fade'>{A}</span> <span class='case'>{A}</span></div>\n    <div><span class='fade'>[A]</span> <span class='case'>[A]</span></div>\n    <div><span class='fade'>-</span> <span class='case'>-</span></div>\n    <div><span class='fade'>&ndash;</span> <span class='case'>&ndash;</span></div>\n    <div><span class='fade'>&mdash;</span> <span class='case'>&mdash;</span></div>\n    <div><span class='fade'>@</span> <span class='case'>@</span></div>\n    <div><span class='fade'>¿</span> <span class='case'>¿</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&harr;</span> <p class='code'>&amp;harr;</p></div>\n    <div><span>&updownarrow;</span> <p class='code'>&amp;updownarrow;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/inria-sans/glyphs.yml",
    "content": "fontFile: /assets/fonts/inria-sans/InriaSans-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/inria-sans/meta.yml",
    "content": "name: Inria Sans\ndateAdded: '2018-12-03'\ncategory: Sans-Serif\nstyles: 6\nitalic: true\nweights:\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v1.200\n  date: 11 Jan 2018\nprojectUrl: https://github.com/BlackFoundry/InriaFonts\ncreator:\n  name: BlackFoundry\n  url: https://black-foundry.com/work/inria/\ndescription: Inria Sans, along with <a href='/inria-serif/'>Inria Serif</a>, was specially designed for Inria, a French institute for research in computer science and automation. The Sans has a contemporary feel, suitable for both body copy and headlines.\nfamilyFaces:\n  - Inria Serif\ncomparisonFaces:\n  - Inria Serif\n  - FiraGO\n  - IBM Plex Sans\n  - Source Sans Pro\n"
  },
  {
    "path": "content/typefaces/inria-sans/sample.html",
    "content": "<h1>Solomon R.<br> Guggenheim<br> Museum</h1>\n<h2>New York, New York</h2>\n"
  },
  {
    "path": "content/typefaces/inria-serif/detail.html",
    "content": "<div class='type-detail-table gr6 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fb</span> <span class='liga'>fb</span></div>\n    <div><span class='fade italic'>fb</span> <span class='liga italic'>fb</span></div>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade italic'>ffj</span> <span class='liga italic'>ffj</span></div>\n    <div><span class='fade'>ffk</span> <span class='liga'>ffk</span></div>\n    <div><span class='fade italic'>ffk</span> <span class='liga italic'>ffk</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>fft</span> <span class='liga'>fft</span></div>\n    <div><span class='fade italic'>fft</span> <span class='liga italic'>fft</span></div>\n    <div><span class='fade'>fh</span> <span class='liga'>fh</span></div>\n    <div><span class='fade italic'>fh</span> <span class='liga italic'>fh</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade italic'>fj</span> <span class='liga italic'>fj</span></div>\n    <div><span class='fade'>fk</span> <span class='liga'>fk</span></div>\n    <div><span class='fade italic'>fk</span> <span class='liga italic'>fk</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n    <div><span class='fade'>ft</span> <span class='liga'>ft</span></div>\n    <div><span class='fade italic'>ft</span> <span class='liga italic'>ft</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr5 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle: 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining (default): 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum';</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr5 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss01';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>A</span> <span class='ss01'>A</span></div>\n    <div><span class='fade italic'>A</span> <span class='ss01 italic'>A</span></div>\n    <div><span class='fade'>B</span> <span class='ss01'>B</span></div>\n    <div><span class='fade italic'>B</span> <span class='ss01 italic'>B</span></div>\n    <div><span class='fade'>D</span> <span class='ss01'>D</span></div>\n    <div><span class='fade italic'>D</span> <span class='ss01 italic'>D</span></div>\n    <div><span class='fade'>E</span> <span class='ss01'>E</span></div>\n    <div><span class='fade italic'>E</span> <span class='ss01 italic'>E</span></div>\n    <div><span class='fade'>F</span> <span class='ss01'>F</span></div>\n    <div><span class='fade italic'>F</span> <span class='ss01 italic'>F</span></div>\n    <div><span class='fade'>G</span> <span class='ss01'>G</span></div>\n    <div><span class='fade italic'>G</span> <span class='ss01 italic'>G</span></div>\n    <div><span class='fade'>H</span> <span class='ss01'>H</span></div>\n    <div><span class='fade italic'>H</span> <span class='ss01 italic'>H</span></div>\n    <div><span class='fade'>J</span> <span class='ss01'>J</span></div>\n    <div><span class='fade italic'>J</span> <span class='ss01 italic'>J</span></div>\n    <div><span class='fade'>K</span> <span class='ss01'>K</span></div>\n    <div><span class='fade italic'>K</span> <span class='ss01 italic'>K</span></div>\n    <div><span class='fade'>L</span> <span class='ss01'>L</span></div>\n    <div><span class='fade italic'>L</span> <span class='ss01 italic'>L</span></div>\n    <div><span class='fade'>M</span> <span class='ss01'>M</span></div>\n    <div><span class='fade italic'>M</span> <span class='ss01 italic'>M</span></div>\n    <div><span class='fade'>N</span> <span class='ss01'>N</span></div>\n    <div><span class='fade italic'>N</span> <span class='ss01 italic'>N</span></div>\n    <div><span class='fade'>P</span> <span class='ss01'>P</span></div>\n    <div><span class='fade italic'>P</span> <span class='ss01 italic'>P</span></div>\n    <div><span class='fade'>R</span> <span class='ss01'>R</span></div>\n    <div><span class='fade italic'>R</span> <span class='ss01 italic'>R</span></div>\n    <div><span class='fade'>S</span> <span class='ss01'>S</span></div>\n    <div><span class='fade italic'>S</span> <span class='ss01 italic'>S</span></div>\n    <div><span class='fade'>T</span> <span class='ss01'>T</span></div>\n    <div><span class='fade italic'>T</span> <span class='ss01 italic'>T</span></div>\n    <div><span class='fade'>U</span> <span class='ss01'>U</span></div>\n    <div><span class='fade italic'>U</span> <span class='ss01 italic'>U</span></div>\n    <div><span class='fade'>V</span> <span class='ss01'>V</span></div>\n    <div><span class='fade italic'>V</span> <span class='ss01 italic'>V</span></div>\n    <div><span class='fade'>W</span> <span class='ss01'>W</span></div>\n    <div><span class='fade italic'>W</span> <span class='ss01 italic'>W</span></div>\n    <div><span class='fade'>X</span> <span class='ss01'>X</span></div>\n    <div><span class='fade italic'>X</span> <span class='ss01 italic'>X</span></div>\n    <div><span class='fade'>Y</span> <span class='ss01'>Y</span></div>\n    <div><span class='fade italic'>Y</span> <span class='ss01 italic'>Y</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Case Sensitive Forms</p>\n    <p class='code'>font-feature-settings: 'case';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>(A)</span> <span class='case'>(A)</span></div>\n    <div><span class='fade'>{A}</span> <span class='case'>{A}</span></div>\n    <div><span class='fade'>[A]</span> <span class='case'>[A]</span></div>\n    <div><span class='fade'>-</span> <span class='case'>-</span></div>\n    <div><span class='fade'>&ndash;</span> <span class='case'>&ndash;</span></div>\n    <div><span class='fade'>&mdash;</span> <span class='case'>&mdash;</span></div>\n    <div><span class='fade'>@</span> <span class='case'>@</span></div>\n    <div><span class='fade'>¿</span> <span class='case'>¿</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&harr;</span> <p class='code'>&amp;harr;</p></div>\n    <div><span>&updownarrow;</span> <p class='code'>&amp;updownarrow;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/inria-serif/glyphs.yml",
    "content": "fontFile: /assets/fonts/inria-serif/InriaSerif-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/inria-serif/meta.yml",
    "content": "name: Inria Serif\ndateAdded: '2018-12-03'\ncategory: Serif\nstyles: 6\nitalic: true\nsampleShade: light\nweights:\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v1.200\n  date: 11 Jan 2018\nprojectUrl: https://github.com/BlackFoundry/InriaFonts\ncreator:\n  name: BlackFoundry\n  url: https://black-foundry.com/work/inria/\ndescription: Inria Serif, along with <a href='/inria-sans/'>Inria Sans</a>, was specially designed for Inria, a French institute for research in computer science and automation. The Serif has a literary feel, suitable for both body copy and headlines.\nfamilyFaces:\n  - Inria Sans\ncomparisonFaces:\n  - Inria Sans\n  - IBM Plex Serif\n  - Source Serif Pro\n"
  },
  {
    "path": "content/typefaces/inria-serif/sample.html",
    "content": "<h1>The Frolic of<br> the Beasts</h1>\n<h2>Yukio Mishima</h2>\n"
  },
  {
    "path": "content/typefaces/instrument-sans/detail.html",
    "content": "<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n    <div><span class='fade'>www</span> <span class='liga'>www</span></div>\n    <div><span class='fade italic'>www</span> <span class='liga italic'>www</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr1 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr1 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ij</span> <span class='ss01'>ij</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>a</span> <span class='ss02'>a</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>y</span> <span class='ss03'>y</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>K</span> <span class='ss04'>K</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>R</span> <span class='ss05'>R</span> <p class='code'>'ss05'</p></div>\n    <div><span class='fade'>M</span> <span class='ss06'>M</span> <p class='code'>'ss06'</p></div>\n    <div><span class='fade'>G</span> <span class='ss07'>G</span> <p class='code'>'ss07'</p></div>\n    <div><span class='fade'>J</span> <span class='ss08'>J</span> <p class='code'>'ss08'</p></div>\n    <div><span class='fade'>Q</span> <span class='aalt ss09'>Q</span> <p class='code'>'aalt ss09'</p></div>\n    <div><span class='fade'>2</span> <span class='aalt ss10'>2</span> <p class='code'>'aalt ss10'</p></div>\n    <div><span class='fade'>&</span> <span class='aalt ss11'>&</span> <p class='code'>'aalt ss11'</p></div>\n    <div><span class='fade'>$¢</span> <span class='aalt ss12'>$¢</span> <p class='code'>'aalt ss12'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&#8593;</span> <p class='code'>&amp;#8593;</p></div>\n    <div><span>&#8599;</span> <p class='code'>&amp;#8599;</p></div>\n    <div><span>&#8594;</span> <p class='code'>&amp;#8594;</p></div>\n    <div><span>&#8600;</span> <p class='code'>&amp;#8600;</p></div>\n    <div><span>&#8595;</span> <p class='code'>&amp;#8595;</p></div>\n    <div><span>&#8601;</span> <p class='code'>&amp;#8601;</p></div>\n    <div><span>&#8592;</span> <p class='code'>&amp;#8592;</p></div>\n    <div><span>&#8598;</span> <p class='code'>&amp;#8598;</p></div>\n    <div><span>&#8596;</span> <p class='code'>&amp;#8596;</p></div>\n    <div><span>&#8597;</span> <p class='code'>&amp;#8597;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/instrument-sans/glyphs.yml",
    "content": "fontFile: /assets/fonts/instrument-sans/InstrumentSans.woff2\n"
  },
  {
    "path": "content/typefaces/instrument-sans/meta.yml",
    "content": "name: Instrument Sans\ndateAdded: '2025-06-05'\ncategory: Sans-Serif\nstyles: Variable\nitalic: true\nsampleShade: light\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra-Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v1.000\n  date: 20 Mar 2023\nprojectUrl: https://github.com/Instrument/instrument-sans\ngFontsUrl: https://fonts.google.com/specimen/Instrument+Sans\ncreator:\n  name: Rodrigo Fuenzalida\n  url: https://www.instagram.com/erre.efe\ndescription: Instrument Sans is a variable sans-serif which balances an abundance of precision with subtle notes of playfulness.\nfamilyFaces:\n  - Instrument Serif\ncomparisonFaces:\n  - Instrument Serif\n  - Inter\n  - IBM Plex Sans\n"
  },
  {
    "path": "content/typefaces/instrument-sans/sample.html",
    "content": "<h1>Don Judd</h1>\n<h1>5FEB–2MAR</h1>\n<h1>Castelli</h1>\n<h1>Gallery</h1>\n<h1>4 EAST 77</h1>\n<h1>New York</h1>\n"
  },
  {
    "path": "content/typefaces/instrument-serif/detail.html",
    "content": "<div class='type-detail-table gr1 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Discretionary Ligatures</p>\n    <p class='code'>font-feature-settings: 'dlig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fb</span> <span class='dlig'>fb</span></div>\n    <div><span class='fade italic'>fb</span> <span class='dlig italic'>fb</span></div>\n    <div><span class='fade'>fh</span> <span class='dlig'>fh</span></div>\n    <div><span class='fade italic'>fh</span> <span class='dlig italic'>fh</span></div>\n    <div><span class='fade'>fk</span> <span class='dlig'>fk</span></div>\n    <div><span class='fade italic'>fk</span> <span class='dlig italic'>fk</span></div>\n    <div><span class='fade'>qj</span> <span class='dlig'>qj</span></div>\n    <div><span class='fade italic'>qj</span> <span class='dlig italic'>qj</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr5 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>fh</span> <span class='liga'>fh</span></div>\n    <div><span class='fade italic'>fh</span> <span class='liga italic'>fh</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&#167;</span> <p class='code'>&amp;#167;</p></div>\n    <div><span>&#169;</span> <p class='code'>&amp;#169;</p></div>\n    <div><span>&#174;</span> <p class='code'>&amp;#174;</p></div>\n    <div><span>&#176;</span> <p class='code'>&amp;#176;</p></div>\n    <div><span>&#182;</span> <p class='code'>&amp;#182;</p></div>\n    <div><span>&#8482;</span> <p class='code'>&amp;#8482;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/instrument-serif/glyphs.yml",
    "content": "fontFile: /assets/fonts/instrument-serif/InstrumentSerif-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/instrument-serif/meta.yml",
    "content": "name: Instrument Serif\ndateAdded: '2025-06-05'\ncategory: Serif\nstyles: 1\nitalic: true\nsampleShade: dark\nweights:\n  - weight: 400\n    name: Regular\nlatestRelease:\n  version: v1.000\n  date: 20 Mar 2023\nprojectUrl: https://github.com/Instrument/instrument-serif\ngFontsUrl: https://fonts.google.com/specimen/Instrument+Serif\ncreator:\n  name: Rodrigo Fuenzalida\n  url: https://www.instagram.com/erre.efe\ndescription: A condensed, display serif designed for the Instrument brand\nfamilyFaces:\n  - Instrument Sans\ncomparisonFaces:\n  - Instrument Sans\n  - Inria Serif\n  - IBM Plex Serif\n  - Source Serif Pro\n"
  },
  {
    "path": "content/typefaces/instrument-serif/sample.html",
    "content": "<h1>The sky is raining fish.</h1>\n<h1>Skyscrapers sit in mountains of sand.</h1>\n<h1>Bandits sleep in trunks of used cars.</h1>\n"
  },
  {
    "path": "content/typefaces/inter/detail.html",
    "content": "<div class='type-detail-table gr1 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Discretionary Ligatures</p>\n    <p class='code'>font-feature-settings: 'dlig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>!?</span> <span class='dlig'>!?</span></div>\n    <div><span class='fade'>?!</span> <span class='dlig'>?!</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Contextual Alternates</p>\n    <p class='code'>font-feature-settings: 'calt';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3x9</span> <span class='calt'>3x9</span></div>\n    <div><span class='fade'>12:56</span> <span class='calt'>12:56</span></div>\n    <div><span class='fade'>FE—X</span> <span class='calt'>FE—X</span></div>\n    <div><span class='fade'>(SEMI)</span> <span class='calt'>(SEMI)</span></div>\n    <div><span class='fade'>C@T</span> <span class='calt'>C@T</span></div>\n    <div><span class='fade'>:-)</span> <span class='calt'>:-)</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr7 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>12345abcde</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>12345abcde</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Case Sensitive Forms</p>\n    <p class='code'>font-feature-settings: 'case';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>(A)</span> <span class='case'>(A)</span></div>\n    <div><span class='fade'>{A}</span> <span class='case'>{A}</span></div>\n    <div><span class='fade'>[A]</span> <span class='case'>[A]</span></div>\n    <div><span class='fade'>-</span> <span class='case'>-</span></div>\n    <div><span class='fade'>&ndash;</span> <span class='case'>&ndash;</span></div>\n    <div><span class='fade'>&mdash;</span> <span class='case'>&mdash;</span></div>\n    <div><span class='fade'>@</span> <span class='case'>@</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>13469</span> <span class='ss01'>13469</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>0Illß</span> <span class='ss02'>0Illß</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>baroreceptor</span> <span class='ss03'>baroreceptor</span> <p class='code'>'ss03'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&#9398;</span> <p class='code'>&amp;#9398;</p></div>\n    <div><span>&#9423;</span> <p class='code'>&amp;#9423;</p></div>\n    <div><span>&#127280;</span> <p class='code'>&amp;#127280;</p></div>\n    <div><span>&#127305;</span> <p class='code'>&amp;#127305;</p></div>\n    <div><span>&#57658;</span> <p class='code'>&amp;#57658;</p></div>\n    <div><span>&#57659;</span> <p class='code'>&amp;#57659;</p></div>\n    <div><span>&#9733;</span> <p class='code'>&amp;#9733;</p></div>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&harr;</span> <p class='code'>&amp;harr;</p></div>\n    <div><span>&updownarrow;</span> <p class='code'>&amp;updownarrow;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/inter/glyphs.yml",
    "content": "fontFile: /assets/fonts/inter/Inter-roman.var.woff2\n"
  },
  {
    "path": "content/typefaces/inter/meta.yml",
    "content": "name: Inter\ndateAdded: '2020-11-21'\ncategory: Sans-Serif\nstyles: Variable\nitalic: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: Extra Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi Bold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v3.15\n  date: 20 Aug 2020\nprojectUrl: https://rsms.me/inter/\ngFontsUrl: https://fonts.google.com/specimen/Inter\ncreator:\n  name: Rasmus Andersson\n  url: https://rsms.me/\ndescription: Inter is a versatile typeface designed especially for screens. It’s an excellent choice for general user interface needs, but can also work well for body copy and headlines.\ncomparisonFaces:\n  - Cooper Hewitt\n  - Libre Franklin\n"
  },
  {
    "path": "content/typefaces/inter/sample.html",
    "content": "<h1>Psychedelic therapy</h1>\n<h2>Experience the all new you.</h2>\n"
  },
  {
    "path": "content/typefaces/le-murmure/detail.html",
    "content": "<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade ms8'>ff</span> <span class='liga ms8'>ff</span></div>\n    <div><span class='fade ms8'>ffi</span> <span class='liga ms8'>ffi</span></div>\n    <div><span class='fade ms8'>ffl</span> <span class='liga ms8'>ffl</span></div>\n    <div><span class='fade ms8'>fi</span> <span class='liga ms8'>fi</span></div>\n    <div><span class='fade ms8'>fl</span> <span class='liga ms8'>fl</span></div>\n    <div><span class='fade ms8'>VTF</span> <span class='liga ms8'>VTF</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr4 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle (default): 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>A</span> <span class='ss03'>A</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>Æ</span> <span class='ss03'>Æ</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>C</span> <span class='ss06'>C</span> <p class='code'>'ss06'</p></div>\n    <div><span class='fade'>f</span> <span class='ss01'>f</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>j</span> <span class='ss01'>j</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>M</span> <span class='ss01'>M</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>M</span> <span class='ss02'>M</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>M</span> <span class='ss05'>M</span> <p class='code'>'ss05'</p></div>\n    <div><span class='fade'>m</span> <span class='ss01'>m</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>m</span> <span class='ss02'>m</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>N</span> <span class='ss01'>N</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>N</span> <span class='ss02'>N</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>n</span> <span class='ss01'>n</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>n</span> <span class='ss02'>n</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>Q</span> <span class='ss07'>Q</span> <p class='code'>'ss07'</p></div>\n    <div><span class='fade'>R</span> <span class='ss07'>R</span> <p class='code'>'ss07'</p></div>\n    <div><span class='fade'>r</span> <span class='ss04'>r</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>S</span> <span class='ss01'>S</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>s</span> <span class='ss01'>s</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>W</span> <span class='ss05'>W</span> <p class='code'>'ss05'</p></div>\n    <div><span class='fade'>Z</span> <span class='ss01'>Z</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>z</span> <span class='ss01'>z</span> <p class='code'>'ss01'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Case Sensitive Forms</p>\n    <p class='code'>font-feature-settings: 'case';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>(8)</span> <span class='case'>(8)</span></div>\n    <div><span class='fade'>-</span> <span class='case'>-</span></div>\n    <div><span class='fade'>¿</span> <span class='case'>¿</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&#9889;</span> <p class='code'>&amp;#9889;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/le-murmure/glyphs.yml",
    "content": "fontFile: /assets/fonts/le-murmure/Le_Murmure-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/le-murmure/meta.yml",
    "content": "name: Le Murmure\ndateAdded: '2018-11-25'\ncategory: Display\nstyles: 1\nweights:\n  - weight: 400\n    name: Regular\nlatestRelease:\n  version: v1.1\n  date: 10 Jul 2019\nprojectUrl: https://velvetyne.fr/fonts/le-murmure/\ncreator:\n  name: Jérémy Landes\n  url: http://studiotriple.fr\ndescription: Designed especially for the French design agency <a href='https://murmure.me/'>Murmure</a>, Le Murmure is a distinctive sans-serif display typeface. Available in a single weight, it features a wealth of alternate glyphs.\n"
  },
  {
    "path": "content/typefaces/le-murmure/sample.html",
    "content": "<h1>&#9889; Oneohtrix Point Never &#9889;</h1>\n"
  },
  {
    "path": "content/typefaces/libre-franklin/detail.html",
    "content": "<div class='type-detail-table examples-figures gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>123</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/libre-franklin/glyphs.yml",
    "content": "fontFile: /assets/fonts/libre-franklin/LibreFranklin-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/libre-franklin/meta.yml",
    "content": "name: Libre Franklin\ndateAdded: '2018-10-15'\ncategory: Sans-Serif\nstyles: 18\nitalic: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra-Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v1.045\n  date: 15 Nov 2016\nprojectUrl: https://github.com/impallari/Libre-Franklin\ngFontsUrl: https://fonts.google.com/specimen/Libre+Franklin\ncreator:\n  name: Impallari Type\n  url: https://github.com/impallari\ndescription: Libre Franklin is an interpretation and expansion of the classic Franklin Gothic typeface. It’s a versatile sans-serif, suitable for both long-form text and headlines. At large sizes, the distinctive rounded corners of the characters become apparent.\ncomparisonFaces:\n  - IBM Plex Sans\n  - Inria Sans\n  - Source Sans Pro\n  - Work Sans\n"
  },
  {
    "path": "content/typefaces/libre-franklin/sample.html",
    "content": "<h1>Ornette</h1>\n<h1><span class=\"yellow\">On</span><span class=\"green\">Tenor</span></h1>\n<h2><span>Don Cherry</span><span>Jimmy Garrison</span><span>Ed Blackwell</span></h2>\n"
  },
  {
    "path": "content/typefaces/lora/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='fractions'>1/2 3/4</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples ordinals flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/lora/glyphs.yml",
    "content": "fontFile: /assets/fonts/lora/Lora-VF.woff2\n"
  },
  {
    "path": "content/typefaces/lora/meta.yml",
    "content": "name: Lora\ndateAdded: '2018-10-15'\ncategory: Serif\nstyles: Variable\nitalic: true\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi Bold\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v2.210\n  date: 4 Feb 2019\nprojectUrl: https://github.com/cyrealtype/Lora-Cyrillic\ngFontsUrl: https://fonts.google.com/specimen/Lora\ncreator:\n  name: Cyreal\n  url: http://www.cyreal.org\ndescription: Lora is a contemporary serif with a moderate contrast, well-suited to body text. It takes inspiration from calligraphic forms, but has a pleasing contrast with sturdy serifs, especially at the bold weight.\ncomparisonFaces:\n  - Alegreya\n  - IBM Plex Serif\n  - Source Serif Pro\n  - Vollkorn\n"
  },
  {
    "path": "content/typefaces/lora/sample.html",
    "content": "<p>Far off in the bending sky was the pearly light; and she felt the largeness of the world and the manifold wakings of men to labor and endurance. She was a part of that involuntary, palpitating life, and could neither look out on it from her luxurious shelter as a mere spectator, nor hide her eyes in selfish complaining.</p>\n\n<h2>George Eliot, <em>Middlemarch</em></h2>\n"
  },
  {
    "path": "content/typefaces/messapia/detail.html",
    "content": ""
  },
  {
    "path": "content/typefaces/messapia/glyphs.yml",
    "content": "fontFile: /assets/fonts/messapia/Messapia-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/messapia/meta.yml",
    "content": "name: Messapia\ndateAdded: '2020-05-23'\ncategory: Display\nstyles: 2\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: ''\n  date: 19 Mar 2019\nprojectUrl: http://collletttivo.it\ncreator:\n  name: Luca Marsano\n  url: http://www.shuluq.com\ndescription: 'From the Colllectttivo site: “Messapia is a type family with two styles: the first is inspired by an old font from the 19th century, the second is a sans serif bold extended.”'\ncomparisonFaces:\n  - BioRhyme\n  - Le Murmure\n"
  },
  {
    "path": "content/typefaces/messapia/sample.html",
    "content": "<h1>Umanità Nova</h1>\n<h2>Quotidiano Anarchico</h2>\n"
  },
  {
    "path": "content/typefaces/oswald/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-row'>\n    <div>\n      <h1 class='fractions'>1/2 3/4</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>123</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&#9650;</span> <p class='code'>&amp;#9650;</p></div>\n    <div><span>&#9660;</span> <p class='code'>&amp;#9660;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/oswald/glyphs.yml",
    "content": "fontFile: /assets/fonts/oswald/Oswald-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/oswald/meta.yml",
    "content": "name: Oswald\ndateAdded: '2018-10-15'\ncategory: Display\nstyles: 7\nweights:\n  - weight: 200\n    name: Extra-Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\n  - weight: 900\n    name: Heavy\nlatestRelease:\n  version: v4.004\n  date: 22 Sep 2017\nprojectUrl: https://github.com/googlefonts/OswaldFont\ngFontsUrl: https://fonts.google.com/specimen/Oswald\ncreator:\n  name: Vernon Adams\n  url: https://fonts.google.com/?query=Vernon+Adams\ndescription: Oswald, inspired by the ‘Alternate Gothic’ style of typefaces, is a condensed sans-serif, well-suited to headlines, especially when set in all caps. Originally designed by the late Vernon Adams, work on the typeface continues under several collaborators.\n"
  },
  {
    "path": "content/typefaces/oswald/sample.html",
    "content": "<h1>1968</h1>\n"
  },
  {
    "path": "content/typefaces/playfair-display/detail.html",
    "content": "{% assign text = site.data.text %}\n\n<div class='type-detail-table examples-smallcap-italic gr7 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Italic smallcap headlines</p>\n    <p class='code'>font-feature-settings: 'smcp';</p>\n  </div>\n  <div class='examples flow-column small-caps'>\n    <div>\n      <h1 class='w400 ms7 italic' contenteditable='true'>{{ text.headlines[0] }}</h1>\n      <p class='character-label'>400</p>\n    </div>\n    <div>\n      <h1 class='w700 ms7 italic' contenteditable='true'>{{ text.headlines[1] }}</h1>\n      <p class='character-label'>700</p>\n    </div>\n    <div>\n      <h1 class='w900 ms7 italic' contenteditable='true'>{{ text.headlines[2] }}</h1>\n      <p class='character-label'>900</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fb</span> <span class='liga'>fb</span></div>\n    <div><span class='fade italic'>fb</span> <span class='liga'><em>fb</em></span></div>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade italic'>ffj</span> <span class='liga italic'>ffj</span></div>\n    <div><span class='fade'>fh</span> <span class='liga'>fh</span></div>\n    <div><span class='fade italic'>fh</span> <span class='liga italic'>fh</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade italic'>fj</span> <span class='liga italic'>fj</span></div>\n    <div><span class='fade'>fk</span> <span class='liga'>fk</span></div>\n    <div><span class='fade italic'>fk</span> <span class='liga italic'>fk</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Discretionary Ligatures</p>\n    <p class='code'>font-feature-settings: 'dlig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ct</span> <span class='dlig'>ct</span></div>\n    <div><span class='fade italic'>ct</span> <span class='dlig italic'>ct</span></div>\n    <div><span class='fade'>st</span> <span class='dlig'>st</span></div>\n    <div><span class='fade italic'>st</span> <span class='dlig italic'>st</span></div>\n    <div><span class='fade'>Th</span> <span class='dlig'>Th</span></div>\n    <div><span class='fade italic'>Th</span> <span class='dlig italic'>Th</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr6 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle (default): 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples ordinals flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&harr;</span> <p class='code'>&amp;harr;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/playfair-display/glyphs.yml",
    "content": "fontFile: /assets/fonts/playfair-display/PlayfairDisplay-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/playfair-display/meta.yml",
    "content": "name: Playfair Display\ndateAdded: '2018-10-15'\ncategory: Display\nstyles: 6\nitalic: true\nsmallcap: true\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 700\n    name: Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v1.202\n  date: 5 Nov 2017\nprojectUrl: https://github.com/clauseggers/Playfair-Display\ngFontsUrl: https://fonts.google.com/specimen/Playfair+Display\ncreator:\n  name: Claus Eggers Sørensen\n  url: https://forthehearts.net/\ndescription: Playfair Display is a transitional serif well-suited to headlines and titles. It has a very large x-height, short descenders, and extra short capitals. It offers a wide variety of typographic flavor with three weights, a beautiful italic and small caps, and a number of OpenType features.\n"
  },
  {
    "path": "content/typefaces/playfair-display/sample.html",
    "content": "<h1>the isms go</h1>\n<h1>the ist dies</h1>\n<h1>art remains</h1>\n<p>Vladimir Nabokov</p>\n"
  },
  {
    "path": "content/typefaces/poppins/detail.html",
    "content": "<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>!</span> <span class='ss01'>!</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>?</span> <span class='ss01'>?</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>‘ ’</span> <span class='ss01'>‘ ’</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>“ ”</span> <span class='ss01'>“ ”</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>,</span> <span class='ss01'>,</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>.</span> <span class='ss01'>.</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>:</span> <span class='ss01'>:</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>;</span> <span class='ss01'>;</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>&hellip;</span> <span class='ss01'>&hellip;</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>a</span> <span class='ss02'>a</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>&</span> <span class='ss03'>&</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>3</span> <span class='ss04'>3</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>6</span> <span class='ss04'>6</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>9</span> <span class='ss04'>9</span> <p class='code'>'ss04'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/poppins/glyphs.yml",
    "content": "fontFile: /assets/fonts/poppins/Poppins-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/poppins/meta.yml",
    "content": "name: Poppins\ndateAdded: '2018-11-19'\ncategory: Sans-Serif\nstyles: 18\nitalic: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: ExtraLight\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: SemiBold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: ExtraBold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v4.001\n  date: 26 Mar 2018\nprojectUrl: https://github.com/itfoundry/Poppins\ngFontsUrl: https://fonts.google.com/specimen/Poppins\ncreator:\n  name: Indian Type Foundry\n  url: https://www.indiantypefoundry.com\ndescription: Poppins is a geometric sans-serif with a fairly high x-height. It supports both Latin and Devanagari chararacter sets.\ncomparisonFaces:\n  - Archivo\n  - Cooper Hewitt\n"
  },
  {
    "path": "content/typefaces/poppins/sample.html",
    "content": "<h1>Lennon</h1>\n<h1>McCartney</h1>\n<h1>Harrison</h1>\n<h1>& Starr</h1>\n"
  },
  {
    "path": "content/typefaces/rakkas/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Discretionary Ligatures</p>\n    <p class='code'>font-feature-settings: 'dlig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fj</span> <span class='dlig'>fj</span></div>\n    <div><span class='fade'>fm</span> <span class='dlig'>fm</span></div>\n    <div><span class='fade'>fn</span> <span class='dlig'>fn</span></div>\n    <div><span class='fade'>fr</span> <span class='dlig'>fr</span></div>\n    <div><span class='fade'>ft</span> <span class='dlig'>ft</span></div>\n    <div><span class='fade'>fu</span> <span class='dlig'>fu</span></div>\n    <div><span class='fade'>gf</span> <span class='dlig'>gf</span></div>\n    <div><span class='fade'>gi</span> <span class='dlig'>gi</span></div>\n    <div><span class='fade'>tt</span> <span class='dlig'>tt</span></div>\n    <div><span class='fade'>TT</span> <span class='dlig'>TT</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr5 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle: 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining  (default): 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 1/4 3/4</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples ordinals flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div class='ms5'><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div class='ms5'><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/rakkas/glyphs.yml",
    "content": "fontFile: /assets/fonts/rakkas/Rakkas-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/rakkas/meta.yml",
    "content": "name: Rakkas\ndateAdded: '2018-10-22'\ncategory: Display\nstyles: 1\nsampleShade: light\nweights:\n  - weight: 400\n    name: Regular\nlatestRelease:\n  version: v1.001\n  date: 10 Apr 2016\nprojectUrl: https://github.com/zeynepakay/Rakkas\ngFontsUrl: https://fonts.google.com/specimen/Rakkas\ncreator:\n  name: Zeynep Akay\n  url: http://theruqahproject.com\ndescription: Rakkas is a single-weight display typeface supporting both Arabic and Latin scrips. The Latin is based on a blackletter style, but borrows heavily from the Arabic design, with heavy calligraphic strokes.\n"
  },
  {
    "path": "content/typefaces/rakkas/sample.html",
    "content": "<h2><span>On</span><span class=\"bullet\">&bull;</span><span>The</span></h2>\n<h3>Shortness</h3>\n<h2><span>of</span><span class=\"bullet\">&bull;</span><span>life</span></h2>\n"
  },
  {
    "path": "content/typefaces/source-code-pro/detail.html",
    "content": "<div class='type-detail-table examples-figures gr4 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining (default): 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'><span class='fractions'>1/2</span> <span class='fractions'>3/4</span> <span class='fractions'>5/6</span> <span class='fractions'>7/8</span> <span class='fractions'>90/123</span></h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890abc</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>a</span> <span class='ss02'>a</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>g</span> <span class='ss03'>g</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>i</span> <span class='ss04'>i</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>l</span> <span class='ss04'>l</span> <p class='code'>'ss04'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>1st</span> <span class='ordinals'>1st</span></div>\n    <div><span class='fade'>2nd</span> <span class='ordinals'>2nd</span></div>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/source-code-pro/glyphs.yml",
    "content": "fontFile: /assets/fonts/source-code-pro/SourceCodeVF-Upright.ttf.woff2\n"
  },
  {
    "path": "content/typefaces/source-code-pro/meta.yml",
    "content": "name: Source Code Pro\ndateAdded: '2018-12-18'\ncategory: Monospaced\nstyles: Variable\nitalic: true\nsampleShade: light\nweights:\n  - weight: 200\n    name: ExtraLight\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: SemiBold\n  - weight: 700\n    name: Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v1.024\n  date: 4 Apr 2023\nprojectUrl: https://github.com/adobe-fonts/source-code-pro\ngFontsUrl: https://fonts.google.com/specimen/Source+Code+Pro\ncreator:\n  name: Paul D. Hunt\n  url: https://github.com/pauldhunt\ndescription: Source Code Pro is part of the Source Pro family of typefaces from Adobe. They are versatile typefaces designed especially for use in user interfaces.\nfamilyFaces:\n  - Source Sans Pro\n  - Source Serif Pro\ncomparisonFaces:\n  - IBM Plex Mono\n  - Source Sans Pro\n  - Source Serif Pro\n"
  },
  {
    "path": "content/typefaces/source-code-pro/sample.html",
    "content": "<h1>Perpetual<br> Uncertainty </h1>\n<h2>Malmö Konstmuseum</h2>\n<h3>24 februari – 26 augusti 2018</h3>\n"
  },
  {
    "path": "content/typefaces/source-sans-pro/detail.html",
    "content": "<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>fft</span> <span class='liga'>fft</span></div>\n    <div><span class='fade italic'>fft</span> <span class='liga italic'>fft</span></div>\n    <div><span class='fade'>ft</span> <span class='liga'>ft</span></div>\n    <div><span class='fade italic'>ft</span> <span class='liga italic'>ft</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr8 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle: 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining (default): 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='small-caps'>1234567890</h1>\n      <p class='character-label'>Small Caps: 'smcp'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890abc</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>a</span> <span class='ss03'>a</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>g</span> <span class='ss04'>g</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>l</span> <span class='ss05'>l</span> <p class='code'>'ss05'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>1st</span> <span class='ordinals'>1st</span></div>\n    <div><span class='fade'>2nd</span> <span class='ordinals'>2nd</span></div>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/source-sans-pro/glyphs.yml",
    "content": "fontFile: /assets/fonts/source-sans-pro/SourceSansVariable-Roman.ttf.woff2\n"
  },
  {
    "path": "content/typefaces/source-sans-pro/meta.yml",
    "content": "name: Source Sans Pro\ndateAdded: '2018-11-27'\ncategory: Sans-Serif\nstyles: Variable\nitalic: true\nsmallcap: true\nweights:\n  - weight: 200\n    name: Extra Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi Bold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v3.006\n  date: 05 Sep 2019\nprojectUrl: https://github.com/adobe-fonts/source-sans-pro\ngFontsUrl: https://fonts.google.com/specimen/Source+Sans+Pro\ncreator:\n  name: Paul D. Hunt\n  url: https://github.com/pauldhunt\ndescription: Source Sans Pro is a versatile typeface designed particularly for user interfaces. Its letterforms are slightly condensed allowing them to fit into tight spaces within a UI, and remain well-defined even at small sizes.\nfamilyFaces:\n  - Source Code Pro\n  - Source Serif Pro\ncomparisonFaces:\n  - Source Serif Pro\n  - Archivo\n  - FiraGO\n  - Inria Sans\n"
  },
  {
    "path": "content/typefaces/source-sans-pro/sample.html",
    "content": "<h2>janine m. menyus&thinsp;&mdash;</h2>\n<h1 class=oldstyle-proportional>9 basic principles<br> of biomimicry</h1>\n"
  },
  {
    "path": "content/typefaces/source-serif-pro/detail.html",
    "content": "<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade italic'>ffj</span> <span class='liga italic'>ffj</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade italic'>fj</span> <span class='liga italic'>fj</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>ft</span> <span class='liga'>ft</span></div>\n    <div><span class='fade italic'>ft</span> <span class='liga italic'>ft</span></div>\n    <div><span class='fade italic'>fft</span> <span class='liga italic'>fft</span> </div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr8 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle: 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining (default): 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='small-caps'>1234567890</h1>\n      <p class='character-label'>Small Caps: 'smcp'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>1st</span> <span class='ordinals'>1st</span></div>\n    <div><span class='fade'>2nd</span> <span class='ordinals'>2nd</span></div>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&#9650;</span> <p class='code'>&amp;#9650;</p></div>\n    <div><span>&#9654;</span> <p class='code'>&amp;#9654;</p></div>\n    <div><span>&#9660;</span> <p class='code'>&amp;#9660;</p></div>\n    <div><span>&#9664;</span> <p class='code'>&amp;#9664;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/source-serif-pro/glyphs.yml",
    "content": "fontFile: /assets/fonts/source-serif-pro/SourceSerifVariable-Roman.ttf.woff2\n"
  },
  {
    "path": "content/typefaces/source-serif-pro/meta.yml",
    "content": "name: Source Serif Pro\ndateAdded: '2018-10-15'\ncategory: Serif\nstyles: Variable\nitalic: true\nsmallcap: true\nsampleShade: light\nweights:\n  - weight: 200\n    name: Extra Light\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi Bold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: Extra Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v3.001\n  date: 11 Oct 2019\nprojectUrl: https://github.com/adobe-fonts/source-serif-pro\ngFontsUrl: https://fonts.google.com/specimen/Source+Serif+Pro\ncreator:\n  name: Frank Grießhammer\n  url: http://www.frgr.de\ndescription: Source Serif Pro was created as a companion to the Source Sans Pro typeface by Adobe. It exhibits a distinctive personality at each of its six weights, with a beautiful italic that remains useful from the lightest to the heaviest weights.\nfamilyFaces:\n  - Source Code Pro\n  - Source Sans Pro\ncomparisonFaces:\n  - Source Sans Pro\n  - IBM Plex Serif\n  - Inria Serif\n  - Lora\n"
  },
  {
    "path": "content/typefaces/source-serif-pro/sample.html",
    "content": "<h1>Philip Glass</h1>\n<h1>Dances</h1>\n<h1>No.2&mdash;No.4</h1>\n"
  },
  {
    "path": "content/typefaces/space-grotesk/detail.html",
    "content": "<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n  </div>\n</div>\n\n\n<div class='type-detail-table examples-figures gr6 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining (default): 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'><span class='fractions'>1/2</span> <span class='fractions'>1/3</span> <span class='fractions'>3/4</span> <span class='fractions'>5/8</span> <span class='fractions'>7/8</span> <span class='fractions'>90/123</span></h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>A</span> <span class='ss03'>A</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>I</span> <span class='ss04'>I</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>J</span> <span class='ss04'>J</span> <p class='code'>'ss04'</p></div>\n    <div><span class='fade'>M</span> <span class='ss03'>M</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>N</span> <span class='ss03'>N</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>R</span> <span class='ss05'>R</span> <p class='code'>'ss05'</p></div>\n    <div><span class='fade'>V</span> <span class='ss03'>V</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>W</span> <span class='ss03'>W</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>a</span> <span class='ss01'>a</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>g</span> <span class='ss02'>g</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>v</span> <span class='ss03'>v</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>w</span> <span class='ss03'>w</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>y</span> <span class='ss03'>y</span> <p class='code'>'ss03'</p></div>\n    <div><span class='fade'>æ</span> <span class='ss06'>æ</span> <p class='code'>'ss06'</p></div>\n    <div><span class='fade'>&#339;</span> <span class='ss06'>&#339;</span> <p class='code'>'ss06'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Case Sensitive Forms</p>\n    <p class='code'>font-feature-settings: 'case';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>(A)</span> <span class='case'>(A)</span></div>\n    <div><span class='fade'>{A}</span> <span class='case'>{A}</span></div>\n    <div><span class='fade'>[A]</span> <span class='case'>[A]</span></div>\n    <div><span class='fade'>-</span> <span class='case'>-</span></div>\n    <div><span class='fade'>&ndash;</span> <span class='case'>&ndash;</span></div>\n    <div><span class='fade'>&mdash;</span> <span class='case'>&mdash;</span></div>\n    <div><span class='fade'>|</span> <span class='case'>|</span></div>\n    <div><span class='fade'>&#166;</span> <span class='case'>&#166;</span></div>\n    <div><span class='fade'>/</span> <span class='case'>/</span></div>\n    <div><span class='fade'>\\</span> <span class='case'>\\</span></div>\n    <div><span class='fade'>@</span> <span class='case'>@</span></div>\n    <div><span class='fade'>¿</span> <span class='case'>¿</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&#166;</span> <p class='code'>&amp;#166;</p></div>\n    <div><span>&#169;</span> <p class='code'>&amp;#169;</p></div>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/space-grotesk/glyphs.yml",
    "content": "fontFile: /assets/fonts/space-grotesk/SpaceGroteskVariable.woff2\n"
  },
  {
    "path": "content/typefaces/space-grotesk/meta.yml",
    "content": "name: Space Grotesk\ndateAdded: '2019-02-01'\ncategory: Sans-Serif\nstyles: Variable\nweights:\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: SemiBold\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v1.1.6\n  date: 9 Dec 2019\nprojectUrl: https://github.com/floriankarsten/space-grotesk\ncreator:\n  name: Florian Karsten\n  url: https://fonts.floriankarsten.com/space-grotesk\ndescription: Space Grotesk is a sans-serif variation of the fixed-width Space Mono. It retains some of the angular quirkiness of Space Mono while still offering a functional face suitable for many uses.\nfamilyFaces:\n  - Space Mono\ncomparisonFaces:\n  - Space Mono\n"
  },
  {
    "path": "content/typefaces/space-grotesk/sample.html",
    "content": "<h1>The Nubians of Plutonia</h1><h1>Sound Sun Pleasure!!</h1><h1>Cosmic Tones for Mental Therapy</h1><h1>Sunrise in Different Dimensions</h1><h1>Outer Spaceways Incorporated</h1><h1>The Intergalactic Thing</h1>\n"
  },
  {
    "path": "content/typefaces/space-mono/detail.html",
    "content": "<div class='type-detail-table examples-figures gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining (default): 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='fractions'><span class='fractions'>1/2</span> <span class='fractions'>1/3</span> <span class='fractions'>3/4</span> <span class='fractions'>5/8</span> <span class='fractions'>7/8</span></h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>a</span> <span class='ss02'>a</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>g</span> <span class='ss02'>g</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>i</span> <span class='ss02'>i</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>l</span> <span class='ss02'>l</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>r</span> <span class='ss02'>r</span> <p class='code'>'ss02'</p></div>\n    <div><span class='fade'>y</span> <span class='ss02'>y</span> <p class='code'>'ss02'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/space-mono/glyphs.yml",
    "content": "fontFile: /assets/fonts/space-mono/spacemono-regular.woff2\n"
  },
  {
    "path": "content/typefaces/space-mono/meta.yml",
    "content": "name: Space Mono\ndateAdded: '2019-01-08'\ncategory: Monospaced\nstyles: 4\nitalic: true\nsampleShade: light\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v1.0\n  date: 16 Feb 2017\nprojectUrl: https://github.com/googlefonts/spacemono\ngFontsUrl: https://fonts.google.com/specimen/Space+Mono\ncreator:\n  name: Colophon Foundry\n  url: https://www.colophon-foundry.org\ndescription: Space Mono is a monospaced typeface built on a geometric foundation with grotesque details. It’s suitable for both general purpose uses and display settings.\nfamilyFaces:\n  - Space Grotesk\ncomparisonFaces:\n  - IBM Plex Mono\n  - Source Code Pro\n  - Space Grotesk\n"
  },
  {
    "path": "content/typefaces/space-mono/sample.html",
    "content": "<h1>Teenage</h1>\n<h1>Engineering</h1>\n<h1>Portable</h1>\n<h1>Synthesizer</h1>\n"
  },
  {
    "path": "content/typefaces/tasa-orbiter/detail.html",
    "content": "<div class='type-detail-table gr1 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Discretionary Ligatures</p>\n    <p class='code'>font-feature-settings: 'dlig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fi</span> <span class='dlig'>fi</span></div>\n    <div><span class='fade'>fl</span> <span class='dlig'>fl</span></div>\n    <div><span class='fade'>ff</span> <span class='dlig'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='dlig'>ffi</span></div>\n    <div><span class='fade'>ffl</span> <span class='dlig'>ffl</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Case Sensitive Forms</p>\n    <p class='code'>font-feature-settings: 'case';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>(A)</span> <span class='case'>(A)</span></div>\n    <div><span class='fade'>{A}</span> <span class='case'>{A}</span></div>\n    <div><span class='fade'>[A]</span> <span class='case'>[A]</span></div>\n    <div><span class='fade'>@</span> <span class='case'>@</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&harr;</span> <p class='code'>&amp;harr;</p></div>\n    <div><span>&updownarrow;</span> <p class='code'>&amp;updownarrow;</p></div>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/tasa-orbiter/glyphs.yml",
    "content": "fontFile: /assets/fonts/tasa-orbiter/TASAOrbiterVF.woff2\n"
  },
  {
    "path": "content/typefaces/tasa-orbiter/meta.yml",
    "content": "name: TASA Orbiter\ndateAdded: '2023-10-22'\ncategory: Sans-Serif\nstyles: Variable\nsampleShade: light\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: SemiBold\n  - weight: 700\n    name: Bold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v1.001\n  date: 16 May 2023\nprojectUrl: https://tasatype.localremote.co\ncreator:\n  name: Local Remote\n  url: https://localremote.co/work\ndescription: Bespoke typeface designed for the rebrand of Taiwan Space Agency. Neo-Grotesques and right-angled strokes designed for versatility across a broad range of applications for everyday use.\ncomparisonFaces:\n  - Archivo\n  - Fivo Sans\n  - iA Writer Quattro\n"
  },
  {
    "path": "content/typefaces/tasa-orbiter/sample.html",
    "content": "<h1>Artikulation</h1>\n<h2>Hörpartitur von Rainer Wehinger</h2>\n"
  },
  {
    "path": "content/typefaces/vollkorn/detail.html",
    "content": "<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade italic'>ffj</span> <span class='liga italic'>ffj</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>fft</span> <span class='liga'>fft</span></div>\n    <div><span class='fade italic'>fft</span> <span class='liga italic'>fft</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade italic'>fj</span> <span class='liga italic'>fj</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n    <div><span class='fade'>ft</span> <span class='liga'>ft</span></div>\n    <div><span class='fade italic'>ft</span> <span class='liga italic'>ft</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr6 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Discretionary Ligatures</p>\n    <p class='code'>font-feature-settings: 'dlig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ch</span> <span class='dlig'>ch</span></div>\n    <div><span class='fade'><em>ch</em></span> <span class='dlig italic'>ch</span></div>\n    <div><span class='fade'>ct</span> <span class='dlig'>ct</span></div>\n    <div><span class='fade italic'>ct</span> <span class='dlig italic'>ct</span></div>\n    <div><span class='fade'>fb</span> <span class='dlig'>fb</span></div>\n    <div><span class='fade italic'>fb</span> <span class='dlig italic'>fb</span></div>\n    <div><span class='fade'>fh</span> <span class='dlig'>fh</span></div>\n    <div><span class='fade italic'>fh</span> <span class='dlig italic'>fh</span></div>\n    <div><span class='fade'>fk</span> <span class='dlig'>fk</span></div>\n    <div><span class='fade italic'>fk</span> <span class='dlig italic'>fk</span></div>\n    <div><span class='fade'>fty</span> <span class='dlig'>fty</span></div>\n    <div><span class='fade italic'>fty</span> <span class='dlig italic'>fty</span></div>\n    <div><span class='fade'>fä</span> <span class='dlig'>fä</span></div>\n    <div><span class='fade italic'>fä</span> <span class='dlig italic'>fä</span></div>\n    <div><span class='fade'>fö</span> <span class='dlig'>fö</span></div>\n    <div><span class='fade italic'>fö</span> <span class='dlig italic'>fö</span></div>\n    <div><span class='fade'>fü</span> <span class='dlig'>fü</span></div>\n    <div><span class='fade italic'>fü</span> <span class='dlig italic'>fü</span></div>\n    <div><span class='fade'>st</span> <span class='dlig'>st</span></div>\n    <div><span class='fade italic'>st</span> <span class='dlig italic'>st</span></div>\n    <div><span class='fade'>Th</span> <span class='dlig'>Th</span></div>\n    <div><span class='fade italic'>Th</span> <span class='dlig italic'>Th</span></div>\n    <div><span class='fade'>ty</span> <span class='dlig'>ty</span></div>\n    <div><span class='fade italic'>ty</span> <span class='dlig italic'>ty</span></div>\n    <div><span class='fade'>www</span> <span class='dlig'>www</span></div>\n    <div><span class='fade italic'>www</span> <span class='dlig italic'>www</span></div>\n    <div><span class='fade'>-.-</span> <span class='dlig'>-.-</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Contextual Alternates</p>\n    <p class='code'>font-feature-settings: 'calt';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade w600'>fä</span> <span class='w600 calt'>fä</span></div>\n    <div><span class='fade'>RT</span> <span class='calt'>RT</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Titling Alternates</p>\n    <p class='code'>font-feature-settings: 'titl';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>Å</span> <span class='titl'>Å</span></div>\n    <div><span class='fade'>Ä</span> <span class='titl'>Ä</span></div>\n    <div><span class='fade'>Ö</span> <span class='titl'>Ö</span></div>\n    <div><span class='fade'>Ü</span> <span class='titl'>Ü</span></div>\n    <div><span class='fade'>J</span> <span class='titl'>J</span></div>\n    <div><span class='fade'>Q</span> <span class='titl'>Q</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr8 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle (default): 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum';</p>\n    </div>\n    <div>\n      <h1 class='small-caps'>1234567890</h1>\n      <p class='character-label'>Small Caps: 'smcp';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890&para;&sect;&dagger;&Dagger;&DoubleVerticalBar;</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss01';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade italic'>A</span> <span class='ss01 italic'>A</span></div>\n    <div><span class='fade'>a</span> <span class='ss01'>a</span></div>\n    <div><span class='fade italic'>E</span> <span class='ss01 italic'>E</span></div>\n    <div><span class='fade'>g</span> <span class='ss01'>g</span></div>\n    <div><span class='fade italic'>g</span> <span class='ss01 italic'>g</span></div>\n    <div><span class='fade'>j</span> <span class='ss01'>j</span></div>\n    <div><span class='fade italic'>j</span> <span class='ss01 italic'>j</span></div>\n    <div><span class='fade'>M</span> <span class='ss01'>M</span></div>\n    <div><span class='fade italic'>M</span> <span class='ss01 italic'>M</span></div>\n    <div><span class='fade'>N</span> <span class='ss01'>N</span></div>\n    <div><span class='fade italic'>N</span> <span class='ss01 italic'>N</span></div>\n    <div><span class='fade'>Q</span> <span class='ss01'>Q</span></div>\n    <div><span class='fade italic'>Q</span> <span class='ss01 italic'>Q</span></div>\n    <div><span class='fade'>y</span> <span class='ss01'>y</span></div>\n    <div><span class='fade italic'>x</span> <span class='ss01 italic'>x</span></div>\n    <div><span class='fade italic'>y</span> <span class='ss01 italic'>y</span></div>\n    <div><span class='fade italic'>z</span> <span class='ss01 italic'>z</span></div>\n    <div><span class='fade'>ẞ</span> <span class='ss01'>ẞ</span></div>\n    <div><span class='fade italic'>ẞ</span> <span class='ss01 italic'>ẞ</span></div>\n    <div><span class='fade'>&</span> <span class='ss01'>&</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&DoubleVerticalBar;</span> <p class='code'>&amp;DoubleVerticalBar;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/vollkorn/glyphs.yml",
    "content": "fontFile: /assets/fonts/vollkorn/Vollkorn-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/vollkorn/meta.yml",
    "content": "name: Vollkorn\ndateAdded: '2018-10-15'\ncategory: Serif\nstyles: 12\nitalic: true\nsmallcap: true\nweights:\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: SemiBold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: ExtraBold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v4.105\n  date: 09 May 2018\nprojectUrl: http://vollkorn-typeface.com/#download\ngFontsUrl: https://fonts.google.com/specimen/Vollkorn\ncreator:\n  name: Friedrich Althausen\n  url: https://friedrichalthausen.de/\ndescription: Vollkorn is the German word for ‘wholemeal’, which designer Friedrich Althausen felt described this ‘dark, sturdy, and grainy’ serif well. It offers six weights, small caps, and a number of OpenType features, making it perfect for (to stretch this analogy even further) everyday, bread and butter usage.\ncomparisonFaces:\n  - Alegreya\n  - Inria Serif\n  - Lora\n  - Source Serif Pro\n"
  },
  {
    "path": "content/typefaces/vollkorn/sample.html",
    "content": "<h1 class=\"w500\">shinichi<br> nakazawa</h1>\n<h2 class=\"w400 italic ase\">Beyond<br> Development:<br> Rediscovering<br> Nature’s<br> Wisdom</h2>\n\n<p>Technology was not given so humankind could ride roughshod over nature and wreak irreparable changes. Rather, technology is to draw out the hidden essence of all nature so that it can sparkle with new purpose. Technology is not to enslave and command life but to draw forth the infinite possibilities locked within all life and to open new realms of significance. <span class=\"ms-1\">&#9670;</span></p>\n"
  },
  {
    "path": "content/typefaces/work-sans/detail.html",
    "content": "<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Discretionary Ligatures</p>\n    <p class='code'>font-feature-settings: 'dlig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>ct</span> <span class='dlig'>ct</span></div>\n    <div><span class='fade'>st</span> <span class='dlig'>st</span></div>\n    <div><span class='fade'>(1)</span> <span class='dlig'>(1)</span></div>\n    <div><span class='fade'>(2)</span> <span class='dlig'>(2)</span></div>\n    <div><span class='fade'>(3)</span> <span class='dlig'>(3)</span></div>\n    <div><span class='fade'>(4)</span> <span class='dlig'>(4)</span></div>\n    <div><span class='fade'>(5)</span> <span class='dlig'>(5)</span></div>\n    <div><span class='fade'>(6)</span> <span class='dlig'>(6)</span></div>\n    <div><span class='fade'>(7)</span> <span class='dlig'>(7)</span></div>\n    <div><span class='fade'>(8)</span> <span class='dlig'>(8)</span></div>\n    <div><span class='fade'>(9)</span> <span class='dlig'>(9)</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Titling Alternates</p>\n    <p class='code'>font-feature-settings: 'titl';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>Ä</span> <span class='titl'>Ä</span></div>\n    <div><span class='fade'>Ö</span> <span class='titl'>Ö</span></div>\n    <div><span class='fade'>Ü</span> <span class='titl'>Ü</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr8 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle (default): 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum';</p>\n    </div>\n    <div>\n      <h1 class='small-caps'>1234567890</h1>\n      <p class='character-label'>Small Caps: 'smcp';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac';</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='subscript'>1234567890</span></h1>\n      <p class='character-label'>Subscripts: 'subs'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No.</span> <span class='ordinals'>No.</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Contextual Swashes</p>\n    <p class='code'>font-feature-settings: 'cswh';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>AR</span> <span class='cswh'>AR</span></div>\n    <div><span class='fade'>EL</span> <span class='cswh'>EL</span></div>\n    <div><span class='fade'>FE</span> <span class='cswh'>FE</span></div>\n    <div><span class='fade'>MN</span> <span class='cswh'>MN</span></div>\n    <div><span class='fade'>S</span> <span class='cswh'>S</span></div>\n    <div><span class='fade'>T</span> <span class='cswh'>T</span></div>\n    <div><span class='fade'>W</span> <span class='cswh'>W</span></div>\n    <div><span class='fade'>n</span> <span class='cswh'>n</span></div>\n    <div><span class='fade'>r</span> <span class='cswh'>r</span></div>\n    <div><span class='fade'>t</span> <span class='cswh'>t</span></div>\n    <div><span class='fade'>y</span> <span class='cswh'>y</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Alternate Glyph Forms</p>\n    <p class='code'>font-feature-settings: 'ss--';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>G</span> <span class='ss04'>G</span> <p class='code'>'ss06'</p></div>\n    <div><span class='fade'>R</span> <span class='ss03'>R</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>a</span> <span class='ss06'>a</span> <p class='code'>'ss06'</p></div>\n    <div><span class='fade'>g</span> <span class='ss01'>g</span> <p class='code'>'ss01'</p></div>\n    <div><span class='fade'>l</span> <span class='ss02'>l</span> <p class='code'>'ss02'</p></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Case Sensitive Forms</p>\n    <p class='code'>font-feature-settings: 'case';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>(A)</span> <span class='case'>(A)</span></div>\n    <div><span class='fade'>{A}</span> <span class='case'>{A}</span></div>\n    <div><span class='fade'>[A]</span> <span class='case'>[A]</span></div>\n    <div><span class='fade'>-</span> <span class='case'>-</span></div>\n    <div><span class='fade'>&ndash;</span> <span class='case'>&ndash;</span></div>\n    <div><span class='fade'>&mdash;</span> <span class='case'>&mdash;</span></div>\n    <div><span class='fade'>@</span> <span class='case'>@</span></div>\n    <div><span class='fade'>¿</span> <span class='case'>¿</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n    <div><span>&uarr;</span> <p class='code'>&amp;uarr;</p></div>\n    <div><span>&nearr;</span> <p class='code'>&amp;nearr;</p></div>\n    <div><span>&rarr;</span> <p class='code'>&amp;rarr;</p></div>\n    <div><span>&searr;</span> <p class='code'>&amp;searr;</p></div>\n    <div><span>&darr;</span> <p class='code'>&amp;darr;</p></div>\n    <div><span>&swarr;</span> <p class='code'>&amp;swarr;</p></div>\n    <div><span>&larr;</span> <p class='code'>&amp;larr;</p></div>\n    <div><span>&nwarr;</span> <p class='code'>&amp;nwarr;</p></div>\n    <div><span>&harr;</span> <p class='code'>&amp;harr;</p></div>\n    <div><span>&updownarrow;</span> <p class='code'>&amp;updownarrow;</p></div>\n    <div><span>&hookleftarrow;</span> <p class='code'>&amp;hookleftarrow;</p></div>\n    <div><span>&hookrightarrow;</span> <p class='code'>&amp;hookrightarrow;</p></div>\n    <div><span>&circlearrowleft;</span> <p class='code'>&amp;circlearrowleft;</p></div>\n    <div><span>&circlearrowright;</span> <p class='code'>&amp;circlearrowright;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/work-sans/glyphs.yml",
    "content": "fontFile: /assets/fonts/work-sans/WorkSans-Variable.woff2\n"
  },
  {
    "path": "content/typefaces/work-sans/meta.yml",
    "content": "name: Work Sans\ndateAdded: '2018-11-26'\ncategory: Sans-Serif\nstyles: Variable\nitalic: true\nsmallcap: true\nweights:\n  - weight: 100\n    name: Thin\n  - weight: 200\n    name: ExtraLight\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: SemiBold\n  - weight: 700\n    name: Bold\n  - weight: 800\n    name: ExtraBold\n  - weight: 900\n    name: Black\nlatestRelease:\n  version: v?\n  date: 1 May 2020\nprojectUrl: https://github.com/weiweihuanghuang/Work-Sans\ngFontsUrl: https://fonts.google.com/specimen/Work+Sans\ncreator:\n  name: Wei Huang\n  url: https://twitter.com/w__h_\ndescription: Work Sans is a sans-serif inspired by early Grotesque faces. It recently received a major update, adding an italic style and a wide selection of OpenType features. The face has a slightly playful feel, especially at heavier weights.\ncomparisonFaces:\n  - Archivo\n  - Cooper Hewitt\n  - Poppins\n  - Source Sans Pro\n"
  },
  {
    "path": "content/typefaces/work-sans/sample.html",
    "content": "<h1>Say! I like green eggs and ham!<br>I do! I like them, Sam-I-Am!<br> And I would eat them in a boat.<br>And I would eat them with a goat...</h1>\n"
  },
  {
    "path": "content/typefaces/zilla-slab/detail.html",
    "content": "<div class='type-detail-table gr4 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Standard Ligatures</p>\n    <p class='code'>font-feature-settings: 'liga', 'clig';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>fb</span> <span class='liga'>fb</span></div>\n    <div><span class='fade italic'>fb</span> <span class='liga'><em>fb</em></span></div>\n    <div><span class='fade'>ff</span> <span class='liga'>ff</span></div>\n    <div><span class='fade italic'>ff</span> <span class='liga italic'>ff</span></div>\n    <div><span class='fade'>ffi</span> <span class='liga'>ffi</span></div>\n    <div><span class='fade italic'>ffi</span> <span class='liga italic'>ffi</span></div>\n    <div><span class='fade'>ffj</span> <span class='liga'>ffj</span></div>\n    <div><span class='fade italic'>ffj</span> <span class='liga italic'>ffj</span></div>\n    <div><span class='fade'>ffl</span> <span class='liga'>ffl</span></div>\n    <div><span class='fade italic'>ffl</span> <span class='liga italic'>ffl</span></div>\n    <div><span class='fade'>fh</span> <span class='liga'>fh</span></div>\n    <div><span class='fade italic'>fh</span> <span class='liga italic'>fh</span></div>\n    <div><span class='fade'>fi</span> <span class='liga'>fi</span></div>\n    <div><span class='fade italic'>fi</span> <span class='liga italic'>fi</span></div>\n    <div><span class='fade'>fj</span> <span class='liga'>fj</span></div>\n    <div><span class='fade italic'>fj</span> <span class='liga italic'>fj</span></div>\n    <div><span class='fade'>fk</span> <span class='liga'>fk</span></div>\n    <div><span class='fade italic'>fk</span> <span class='liga italic'>fk</span></div>\n    <div><span class='fade'>fl</span> <span class='liga'>fl</span></div>\n    <div><span class='fade italic'>fl</span> <span class='liga italic'>fl</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table examples-figures gr7 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Figures</p>\n  </div>\n  <div class='examples flow-column flow-center'>\n    <div>\n      <h1 class='oldstyle-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Oldstyle (default): 'pnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='oldstyle-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Oldstyle: 'tnum', 'onum'</p>\n    </div>\n    <div>\n      <h1 class='lining-proportional'>1234567890</h1>\n      <p class='character-label'>Proportional Lining: 'pnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1 class='lining-tabular'>1234567890</h1>\n      <p class='character-label'>Tabular Lining: 'tnum', 'lnum'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>0</span> <span class='zero'>0</span></h1>\n      <p class='character-label'>Slashed Zero: 'zero'</p>\n    </div>\n    <div>\n      <h1 class='fractions'>1/2 3/4 5/6 7/8 90/123</h1>\n      <p class='character-label'>Fractions: 'frac'</p>\n    </div>\n    <div>\n      <h1><span class='fade'>A</span><span class='superscript'>1234567890</span></h1>\n      <p class='character-label'>Superscripts: 'sups'</p>\n    </div>\n  </div>\n</div>\n\n<div class='type-detail-table gr3 gc6'>\n  <div class='meta dark top'>\n    <p class='name'>Ordinals</p>\n    <p class='code'>font-feature-settings: 'ordn';</p>\n  </div>\n  <div class='examples flow-row'>\n    <div><span class='fade'>1st</span> <span class='ordinals'>1st</span></div>\n    <div><span class='fade'>2nd</span> <span class='ordinals'>2nd</span></div>\n    <div><span class='fade'>3a</span> <span class='ordinals'>3a</span></div>\n    <div><span class='fade'>4o</span> <span class='ordinals'>4o</span></div>\n    <div><span class='fade'>No</span> <span class='ordinals'>No</span></div>\n  </div>\n</div>\n\n<div class='type-detail-table gr2 gc6'>\n  <div class='meta dark top flex-row'>\n    <p class='name'>Special Characters</p> <a href='glyphs/' class='glyph-explorer'>Explore all characters</a>\n  </div>\n  <div class='examples flow-row'>\n    <div><span>&para;</span> <p class='code'>&amp;para;</p></div>\n    <div><span>&sect;</span> <p class='code'>&amp;sect;</p></div>\n    <div><span>&dagger;</span> <p class='code'>&amp;dagger;</p></div>\n    <div><span>&Dagger;</span> <p class='code'>&amp;Dagger;</p></div>\n  </div>\n</div>\n"
  },
  {
    "path": "content/typefaces/zilla-slab/glyphs.yml",
    "content": "fontFile: /assets/fonts/zilla-slab/ZillaSlab-Regular.woff2\n"
  },
  {
    "path": "content/typefaces/zilla-slab/meta.yml",
    "content": "name: Zilla Slab\ndateAdded: '2018-10-15'\ncategory: Serif\nstyles: 10\nitalic: true\nsmallcap: true\nweights:\n  - weight: 300\n    name: Light\n  - weight: 400\n    name: Regular\n  - weight: 500\n    name: Medium\n  - weight: 600\n    name: Semi-Bold\n  - weight: 700\n    name: Bold\nlatestRelease:\n  version: v1.002\n  date: 23 Aug 2017\nprojectUrl: https://github.com/mozilla/zilla-slab\ngFontsUrl: https://fonts.google.com/specimen/Zilla+Slab\ncreator:\n  name: Typotheque\n  url: https://www.typotheque.com\ndescription: Zilla Slab is Mozilla’s core typeface. It’s a contemporary slab serif with true italics, small caps and good OpenType support.\n"
  },
  {
    "path": "content/typefaces/zilla-slab/sample.html",
    "content": "<h1>Governments of the Industrial World, you weary giants of flesh and steel, I come from Cyberspace, the new home of Mind. On behalf of the future, I ask you of the past to leave us alone.</h1>\n"
  },
  {
    "path": "css/application.css",
    "content": "html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}footer.grid .subscribe-form input[type=submit]{border:none;border-radius:0;cursor:pointer;margin:0;padding:0;width:auto;overflow:visible;background:rgba(0,0,0,0);color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}footer.grid .subscribe-form input[type=submit]::-moz-focus-inner{border:0;padding:0}:root{--body-margin: 2em;--wrapper: calc(100vw - (2 * var(--body-margin)));--gutter: 2em;--rh: calc((var(--wrapper) - (11 * var(--gutter))) / 12)}@media screen and (max-width: 1104px){:root{--body-margin: 1em;--gutter: 1em}}.grid{display:grid;grid-template-columns:repeat(12, 1fr);grid-auto-rows:auto;grid-auto-flow:row;grid-gap:var(--gutter);margin:0 auto var(--gutter) auto;max-width:var(--wrapper)}@media screen and (max-width: 720px){.grid{grid-template-columns:repeat(6, 1fr);grid-auto-rows:auto}}@media screen and (max-width: 720px){.grid>header,.grid>div{grid-area:span 1/span 6}}.col-2{column-count:2;column-gap:2em}:root{--ui-face: var(--source-sans-pro)}.ui-face{font-family:var(--source-sans-pro)}:root{--ui-monospaced: var(--ibm-plex-mono)}.ui-monospaced{font-family:var(--ibm-plex-mono)}.highlight{color:var(--red)}.fade{color:#c9c9c9;font-feature-settings:\"calt\" off,\"liga\" off,\"clig\" off,\"dlig\" off,\"subs\" off,\"sups\" off}.page-header{margin:1.5rem 0 2rem}@media screen and (max-width: 1104px){.page-header{margin:1em 0 1.5rem}}.page-header h1{font:italic 400 var(--ms8)/4rem var(--alegreya-sans)}@media screen and (max-width: 1104px){.page-header h1{font-size:var(--ms4);line-height:2rem}}.page-header p{font:italic 400 var(--ms3)/1.3 var(--alegreya-sans);margin:0 1em}@media screen and (max-width: 1104px){.page-header p{font-size:var(--ms2)}}.page-header a{color:var(--red);font-weight:400}.page-subhead{font:italic 400 var(--ms6)/1 var(--alegreya-sans)}@media screen and (max-width: 1104px){.page-subhead{font-size:var(--ms3);grid-area:span 1/span 6 !important;margin-top:1em}}@media screen and (max-width: 1104px){.page-header+.page-header{margin:0 0 1em 0}}.gr1{grid-row:span 1}.gr2{grid-row:span 2}.gr3{grid-row:span 3}.gr4{grid-row:span 4}.gr5{grid-row:span 5}.gr6{grid-row:span 6}.gr7{grid-row:span 7}.gr8{grid-row:span 8}.gr9{grid-row:span 9}.gr10{grid-row:span 10}.gr11{grid-row:span 11}.gr12{grid-row:span 12}.gr13{grid-row:span 13}.gc2{grid-column:span 2}.gc3{grid-column:span 3}.gc4{grid-column:span 4}.gc5{grid-column:span 5}.gc6{grid-column:span 6}.gc8{grid-column:span 8}.gc9{grid-column:span 9}.gc12{grid-column:span 12}.ase{align-self:end}.asc{align-self:center}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.flow-center{text-align:center}.flex-column{flex-direction:column}.flex-row{flex-direction:row !important}:root{--ms20: 38.337rem;--ms19: 31.947rem;--ms18: 26.623rem;--ms17: 22.186rem;--ms16: 18.488rem;--ms15: 15.407rem;--ms14: 12.839rem;--ms13: 10.699rem;--ms12: 8.916rem;--ms11: 7.43rem;--ms10: 6.192rem;--ms9: 5.16rem;--ms8: 4.3rem;--ms7: 3.583rem;--ms6: 2.986rem;--ms5: 2.488rem;--ms4: 2.074rem;--ms3: 1.728rem;--ms2: 1.44rem;--ms1: 1.2rem;--ms0: 1rem;--ms-1: 0.833rem;--ms-2: 0.694rem;--ms-3: 0.579rem;--ms-4: 0.482rem}.ms20{font-size:38.337rem}.ms19{font-size:31.947rem}.ms18{font-size:26.623rem}.ms17{font-size:22.186rem}.ms16{font-size:18.488rem}.ms15{font-size:15.407rem}.ms14{font-size:12.839rem}.ms13{font-size:10.699rem}.ms12{font-size:8.916rem}.ms11{font-size:7.43rem}.ms10{font-size:6.192rem !important}.ms9{font-size:5.16rem !important}.ms8{font-size:4.3rem !important}.ms7{font-size:3.583rem !important}.ms6{font-size:2.986rem !important}.ms5{font-size:2.488rem !important}.ms4{font-size:2.074rem !important}.ms3{font-size:1.728rem !important}.ms2{font-size:1.44rem !important}.ms1{font-size:1.2rem}.ms0{font-size:1rem}.ms-1{font-size:.833rem}.ms-2{font-size:.694rem}.w100{font-weight:100}.w200{font-weight:200}.w250{font-weight:250}.w300{font-weight:300}.w350{font-weight:350}.w400{font-weight:400}.w450{font-weight:450}.w500{font-weight:500}.w600{font-weight:600}.w700{font-weight:700}.w800{font-weight:800}.w900{font-weight:900}.lh1{line-height:1 !important}.lh1-1{line-height:1.1 !important}.lh1-2{line-height:1.2 !important}.lh1-3{line-height:1.3 !important}.lh1-4{line-height:1.4 !important}.m2{margin-bottom:2em !important}.m1{margin-bottom:1em !important}.m075{margin-bottom:.75em}.m05{margin-bottom:.5em}.m025{margin-bottom:.25em}.mt3{margin-top:3rem}.center{text-align:center}.italic{font-style:italic}.upper,.uppercase{text-transform:uppercase}.aalt{font-feature-settings:\"aalt\"}.calt{font-feature-settings:\"calt\"}.case{font-feature-settings:\"case\"}.cswh{font-feature-settings:\"cswh\"}.cpsp{font-feature-settings:\"cpsp\"}.dlig{font-feature-settings:\"dlig\"}.fractions{font-feature-settings:\"frac\"}.oldstyle-proportional{font-feature-settings:\"onum\",\"pnum\"}.oldstyle-tabular{font-feature-settings:\"onum\",\"tnum\"}.ordinals{font-feature-settings:\"ordn\" !important}.liga{font-feature-settings:\"liga\",\"clig\"}.lining-proportional{font-feature-settings:\"lnum\",\"pnum\"}.lining-tabular{font-feature-settings:\"lnum\",\"tnum\"}.small-caps{font-feature-settings:\"smcp\"}.ss01{font-feature-settings:\"ss01\"}.ss02{font-feature-settings:\"ss02\"}.ss03{font-feature-settings:\"ss03\"}.ss04{font-feature-settings:\"ss04\"}.ss05{font-feature-settings:\"ss05\"}.ss06{font-feature-settings:\"ss06\"}.ss07{font-feature-settings:\"ss07\"}.ss08{font-feature-settings:\"ss08\"}.subscript{font-feature-settings:\"subs\"}.superscript,.sups{font-feature-settings:\"sups\"}.swsh{font-feature-settings:\"swsh\"}.titl{font-feature-settings:\"titl\"}.zero{font-feature-settings:\"zero\"}:root{--red: #EC3B3B}*{box-sizing:border-box}h1,h2,h3,h4,h5,h6,p,ol,ul,li{margin:0}ol{list-style:none;padding:0}html{font-size:16px}body{background:#f2f2f2;margin:6em var(--body-margin) var(--body-margin);text-rendering:optimizeLegibility;font-feature-settings:\"liga\" on,\"clig\" on,\"dlig\" off;-webkit-font-smoothing:antialiased}@media screen and (max-width: 720px){body{margin-top:5.5rem}}a{color:inherit;text-decoration:none}[contenteditable]:hover{background:rgba(255,165,0,.1);caret-color:var(--red);outline:0 solid rgba(0,0,0,0)}[contenteditable]:focus{background:rgba(255,165,0,.1);caret-color:var(--red);outline:0 solid rgba(0,0,0,0)}canvas{vertical-align:bottom}.site-header{-webkit-backdrop-filter:blur(2px);align-items:center;background:hsla(0,0%,100%,.975);margin:0 -2rem 0 -2rem;position:fixed;top:0;width:100%;z-index:10}@media screen and (max-width: 1104px){.site-header{justify-content:flex-start;margin:0 -1rem 0 -1rem}}.site-header>.main-nav{align-items:center;display:flex;flex-grow:1;font:700 var(--ms0)/1rem var(--ui-face);font-feature-settings:\"cpsp\";height:4rem;justify-content:center;text-transform:uppercase}.site-header>.main-nav li{align-items:center;display:flex}.site-header>.main-nav a{display:block;padding:1.5rem 1.5rem}.site-header>.main-nav a:hover{color:var(--red)}.site-header>.main-nav .nav-home{margin-right:auto}.site-header>.main-nav .nav-home h1{align-items:center;display:flex;flex-basis:275px;font:italic 900 var(--ms1)/0.4 var(--alegreya-sans);font-feature-settings:\"cpsp\";text-transform:uppercase}.site-header>.main-nav .nav-home a:hover{border-bottom-color:rgba(0,0,0,0)}.site-header>.main-nav .nav-support{flex-basis:275px;margin-left:auto;text-align:right;text-transform:none}.site-header>.main-nav .nav-support a{color:var(--red);font:700 var(--ms0)/1 var(--ui-face)}.site-header>.main-nav .nav-support a:hover{border-bottom-color:rgba(0,0,0,0)}.mobile-menu{height:48px;position:absolute;right:4px;top:8px;visibility:hidden;width:48px}@media screen and (max-width: 1104px){.mobile-menu{visibility:visible}}.mobile-menu .menu-circle{height:100%;position:absolute;width:100%;z-index:1000}.mobile-menu .menu-link{background:rgba(0,0,0,0);border:0;height:100%;position:absolute;width:100%;z-index:1002}.mobile-menu .menu-icon{bottom:1px;height:14px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.mobile-menu .menu-line{background-color:rgba(0,0,0,.87);border-radius:2px;height:2px;left:0;position:absolute;transition:all .25s cubic-bezier(0.175, 0.885, 0.32, 1.275);width:100%}.menu-line-1{top:0}.menu-line-2{top:0;bottom:0;margin:auto}.menu-line-3{bottom:0}.mobile-menu.open .menu-line-1{transform:translateY(7px) translateY(-50%) rotate(-135deg)}.mobile-menu.open .menu-line-2{opacity:0}.mobile-menu.open .menu-line-3{transform:translateY(-7px) translateY(50%) rotate(135deg)}.menu-overlay{-webkit-backdrop-filter:blur(2px);align-items:center;background-color:hsla(0,0%,100%,.98);color:#000;display:flex;flex-flow:column;height:100%;left:0;opacity:0;justify-content:center;position:fixed;top:0;transition:opacity .2s ease-in-out;visibility:hidden;width:100%;z-index:1001}.menu-overlay.open{opacity:1;visibility:visible;transition-delay:.03s}.menu-overlay li{font:700 var(--ms2)/1 var(--ui-face);margin:.25em;padding:.5em;text-align:center}.menu-overlay li.nav-home{display:none}body.pairings ol li.nav-pairings a,body.serif ol li.nav-serif a,body.sans-serif ol li.nav-sans-serif a,body.display ol li.nav-display a,body.monospaced ol li.nav-monospaced a{border-bottom-color:var(--red);color:var(--red)}@media screen and (max-width: 1104px){.site-header>.main-nav li{display:none}.site-header>ol .nav-home{display:block}.site-header>ol .nav-home a{padding:1.2em 1.5rem 1em 1rem}.site-header h1{flex-basis:auto;padding:0}}.sample{display:flex;flex-direction:column;justify-content:center}.sample>a{align-content:center;display:flex;flex-grow:1;flex-flow:column;height:45rem;justify-content:center;padding:2rem}@media screen and (max-width: 1104px){.sample>a{padding:4rem 3rem}}@media screen and (max-width: 720px){.sample>a{height:auto;padding:2.5rem}}.sample .text{margin:0 auto}.pairing .text{align-content:center;display:flex;flex-grow:1;flex-flow:column;justify-content:center;padding:2em}.meta{box-shadow:0 -1px 0 hsla(0,0%,100%,.3);color:#fff;display:flex;font:700 var(--ms0)/1rem var(--ui-face);flex-direction:column;justify-content:space-between;padding:1rem 1rem;text-align:left}.meta.code{color:#a7a7a7;font-weight:500}.meta.dark{box-shadow:0 -1px 0 rgba(0,0,0,.075);color:#333}.meta.top{box-shadow:0 1px 0 hsla(0,0%,100%,.3)}.meta.top.dark{box-shadow:0 1px 0 rgba(0,0,0,.075);color:#333}.meta a.glyph-explorer{color:var(--red);display:inline-block;font-size:var(--ms-1);letter-spacing:.035em;text-transform:uppercase}.meta .pairing-list a:first-child::after{content:\" &\"}.detail .sample:not(.pairing) .meta{display:none}.detail .sample:not(.pairing) a{pointer-events:none}.alegreya-sample{background:#dfd7c9}.alegreya-sample .text{color:rgba(2,4,15,.75);max-width:40rem}.alegreya-sample .text h1,.alegreya-sample .text p{font:400 var(--ms4)/2.5rem var(--alegreya)}@media screen and (max-width: 720px){.alegreya-sample .text h1,.alegreya-sample .text p{font-size:var(--ms2);line-height:2rem}}.alegreya-sample .text h1::first-line{font-feature-settings:\"smcp\";font-weight:500}.alegreya-sample .text p{margin-top:1rem}.alegreya-sans-sample{background:#ec3b3b}.alegreya-sans-sample .text{text-align:center}.alegreya-sans-sample .text h1{color:#fff;font:900 var(--ms12)/7.5rem var(--alegreya-sans);font-feature-settings:\"cpsp\";text-transform:uppercase}@media screen and (max-width: 720px){.alegreya-sans-sample .text h1{font-size:var(--ms7);line-height:3rem}}.archivo-sample{background:#000}.archivo-sample .text h1{color:#fff;font:600 var(--ms6)/3.5rem var(--archivo)}@media screen and (max-width: 720px){.archivo-sample .text h1{font-size:var(--ms4);line-height:2.5rem}}.archivo-sample .text h1 span{display:block;margin-top:2rem}.archivo-black-sample{background:#f5c827}.archivo-black-sample .text{color:#0b0a08}.archivo-black-sample .text h1{font:400 var(--ms11)/6rem var(--archivo-black);letter-spacing:-0.05em;margin-bottom:.5rem}@media screen and (max-width: 720px){.archivo-black-sample .text h1{font-size:var(--ms8);line-height:3.5rem}}.archivo-black-sample .text h2{border-top:.5rem solid #0b0a08;font-size:var(--ms3);padding-top:.5rem;text-align:right;text-transform:uppercase}.biorhyme-sample{background:#43c94d}.biorhyme-sample .text{color:#fff;text-align:center}.biorhyme-sample .text h1{font:800 var(--ms12)/8rem var(--biorhyme)}@media screen and (max-width: 720px){.biorhyme-sample .text h1{font-size:var(--ms7);line-height:3.5rem}}.biorhyme-expanded-sample{background:#f1592a}.biorhyme-expanded-sample .text{color:#fff;text-align:center}@media screen and (max-width: 720px){.biorhyme-expanded-sample .text{margin-top:1rem}}.biorhyme-expanded-sample .text h1{font:800 var(--ms15)/11.5rem var(--biorhyme-expanded);letter-spacing:-0.05em}@media screen and (max-width: 720px){.biorhyme-expanded-sample .text h1{font-size:var(--ms10);line-height:3rem}}.biorhyme-expanded-sample .text h2{font:800 var(--ms8)/5rem var(--biorhyme-expanded);letter-spacing:.2em;margin-left:.55em;text-transform:uppercase}@media screen and (max-width: 720px){.biorhyme-expanded-sample .text h2{font-size:var(--ms3);line-height:4rem}}.commissioner-sample{background:#ed3428}.commissioner-sample .text{color:#f3a537;max-width:720px;text-align:left}@media screen and (max-width: 720px){.commissioner-sample .text{padding:2em 0}}.commissioner-sample .text h1{font:700 var(--ms9)/0.85 var(--commissioner);font-variation-settings:\"slnt\" 0,\"FLAR\" 100,\"wght\" 900,\"VOLM\" 100;margin-bottom:5rem;text-transform:uppercase}@media screen and (max-width: 720px){.commissioner-sample .text h1{font-size:var(--ms4);margin-bottom:2rem}}.commissioner-sample .text h1:last-child{margin-bottom:0}.commissioner-sample .text h2{font:700 var(--ms4)/1 var(--commissioner);font-variation-settings:\"slnt\" -12,\"FLAR\" 0,\"wght\" 900,\"VOLM\" 0;letter-spacing:.02em;margin-bottom:.25rem}@media screen and (max-width: 720px){.commissioner-sample .text h2{font-size:var(--ms1)}}.cooper-hewitt-sample{background:#3a274e}.cooper-hewitt-sample .text{color:#fff;text-align:center}.cooper-hewitt-sample .text h1{font:400 var(--ms10)/6rem var(--cooper-hewitt);margin-bottom:5rem;text-transform:uppercase}@media screen and (max-width: 720px){.cooper-hewitt-sample .text h1{font-size:var(--ms4);line-height:2rem;margin-bottom:2rem}}.cooper-hewitt-sample .text h2{font:300 var(--ms4)/3rem var(--cooper-hewitt);text-transform:uppercase}@media screen and (max-width: 720px){.cooper-hewitt-sample .text h2{font-size:var(--ms1);line-height:1.5rem}}.crimson-pro-sample{background:#84ab8d}.crimson-pro-sample .text{color:#2a2f2c;max-width:40rem}.crimson-pro-sample .text p{font:400 var(--ms3)/2.5rem var(--crimson-pro);margin-bottom:1rem;text-indent:-0.45em}@media screen and (max-width: 720px){.crimson-pro-sample .text p{font-size:var(--ms1);line-height:1.5rem}}.crimson-pro-sample .text h6{color:#fff;font:400 var(--ms3)/1.5rem var(--crimson-pro)}@media screen and (max-width: 720px){.crimson-pro-sample .text h6{font-size:var(--ms0);line-height:1rem}}.fira-code-sample{background:#0d3560}.fira-code-sample .text{color:#fda18f;text-align:center;width:auto}.fira-code-sample .text h1{font:400 var(--ms7)/4rem var(--fira-code);margin-bottom:.5rem}.fira-code-sample .text h1 span{font-weight:700;padding:0 .5rem;text-transform:uppercase}@media(max-width: 1104px){.fira-code-sample .text h1{font-size:var(--ms4);line-height:2.5rem}}@media(max-width: 720px){.fira-code-sample .text h1{font-size:var(--ms0);line-height:1rem}}.firago-sample{background:#bcbbb8}.firago-sample .text{text-align:center}.firago-sample .text h2,.firago-sample .text h3,.firago-sample .text h4,.firago-sample .text h5,.firago-sample .text h6{background:#bcbbb8;color:#272727;font:var(--ms11)/7rem var(--firago);letter-spacing:.05em;margin-top:-3rem;position:relative;text-transform:uppercase}@media screen and (max-width: 720px){.firago-sample .text h2,.firago-sample .text h3,.firago-sample .text h4,.firago-sample .text h5,.firago-sample .text h6{font-size:var(--ms7);line-height:4rem;margin-top:-1.5rem}}.firago-sample .text h2{font-weight:350;margin-top:0;z-index:2}.firago-sample .text h3{font-weight:400;z-index:3}.firago-sample .text h4{font-weight:500;z-index:4}.firago-sample .text h5{font-weight:700;z-index:5}.firago-sample .text h6{color:#de2c29;font-weight:900;z-index:6}.fivo-sans-sample{background:#006da9}.fivo-sans-sample .text{color:#fff;width:auto}@media screen and (max-width: 720px){.fivo-sans-sample .text{padding:2em 0}}.fivo-sans-sample .text h1{font:700 var(--ms9)/1 var(--fivo-sans);letter-spacing:-0.025em}@media screen and (max-width: 1104px){.fivo-sans-sample .text h1{font-size:var(--ms7)}}@media screen and (max-width: 720px){.fivo-sans-sample .text h1{font-size:var(--ms3)}}.fivo-sans-modern-sample{background:#e7e6e2}.fivo-sans-modern-sample .text{color:#000;display:flex;width:auto}@media screen and (max-width: 720px){.fivo-sans-modern-sample .text{padding:2em 0}}.fivo-sans-modern-sample .text h1{font:700 var(--ms19)/0.425 var(--fivo-sans-modern);transform:scaleX(-1)}@media screen and (max-width: 1104px){.fivo-sans-modern-sample .text h1{font-size:var(--ms17)}}@media screen and (max-width: 720px){.fivo-sans-modern-sample .text h1{font-size:var(--ms13)}}.fivo-sans-modern-sample .text h2{font:400 var(--ms10)/0.9 var(--fivo-sans-modern);letter-spacing:-0.025em;text-align:right}.fivo-sans-modern-sample .text h2 strong{font-weight:700}@media screen and (max-width: 1104px){.fivo-sans-modern-sample .text h2{font-size:var(--ms8)}}@media screen and (max-width: 720px){.fivo-sans-modern-sample .text h2{font-size:var(--ms4)}}.fraunces-sample{background:#558b58}.fraunces-sample .text{color:#fff;text-align:center}.fraunces-sample .text h1{font:900 var(--ms12)/0.725 var(--fraunces);font-variation-settings:\"WONK\" 1,\"SOFT\" 100,\"opsz\" 144;letter-spacing:-0.03em}.fraunces-sample .text h1 span{color:#f5e16d}@media screen and (max-width: 720px){.fraunces-sample .text h1{font-size:var(--ms7)}}.ia-writer-quattro-sample{background:#ce5d18}.ia-writer-quattro-sample .text{width:auto}@media screen and (max-width: 720px){.ia-writer-quattro-sample .text{padding:1em 0}}.ia-writer-quattro-sample .text h1{color:#000;font:400 var(--ms7)/1.2 var(--ia-writer-quattro)}.ia-writer-quattro-sample .text h1:first-child{text-indent:-1em}@media screen and (max-width: 720px){.ia-writer-quattro-sample .text h1{font-size:var(--ms1)}}.ia-writer-quattro-sample .text h2{color:#fff;font:400 var(--ms4)/1.2 var(--ia-writer-quattro);margin-top:1em;opacity:.8}@media screen and (max-width: 720px){.ia-writer-quattro-sample .text h2{font-size:var(--ms1)}}.ibm-plex-mono-sample{background:#0b3d91}.ibm-plex-mono-sample .text{color:#fff;max-width:700px}@media screen and (max-width: 720px){.ibm-plex-mono-sample .text{padding:1em 0}}.ibm-plex-mono-sample .text h1{border-bottom:.075em solid #fff;font:italic 450 var(--ms6)/1.4 var(--ibm-plex-mono);padding-bottom:.1em}.ibm-plex-mono-sample .text h1:first-child{border-top:.075em solid #fff}@media screen and (max-width: 720px){.ibm-plex-mono-sample .text h1{font-size:var(--ms3)}}.ibm-plex-sans-sample{background:linear-gradient(30deg, #93949C, #C0C2CA)}.ibm-plex-sans-sample .text{width:auto}@media screen and (max-width: 720px){.ibm-plex-sans-sample .text{padding:1em 0}}.ibm-plex-sans-sample .text h1{color:#fff;font:400 var(--ms9)/1 var(--ibm-plex-sans)}.ibm-plex-sans-sample .text h1:first-child{color:#373737;margin-bottom:.25em}@media screen and (max-width: 720px){.ibm-plex-sans-sample .text h1{font-size:var(--ms4)}}.ibm-plex-sans-condensed-sample{background:#fc7609}.ibm-plex-sans-condensed-sample .text{display:grid;flex-grow:unset;grid:1fr/1fr;max-width:1100px;place-items:start;text-transform:lowercase}@media screen and (max-width: 720px){.ibm-plex-sans-condensed-sample .text{padding:1em 0}}.ibm-plex-sans-condensed-sample .text h1,.ibm-plex-sans-condensed-sample .text h2{grid-column:1/1;grid-row:1/1}.ibm-plex-sans-condensed-sample .text h1{color:#fdf8e3;font:600 var(--ms17)/1 var(--ibm-plex-sans-condensed);letter-spacing:-0.05em}@media screen and (max-width: 1104px){.ibm-plex-sans-condensed-sample .text h1{font-size:var(--ms14)}}@media screen and (max-width: 720px){.ibm-plex-sans-condensed-sample .text h1{font-size:var(--ms11)}}.ibm-plex-sans-condensed-sample .text h2{color:#130107;font:700 var(--ms10)/1.5 var(--ibm-plex-sans-condensed);padding-left:.2em}@media screen and (max-width: 1104px){.ibm-plex-sans-condensed-sample .text h2{font-size:var(--ms4)}}@media screen and (max-width: 720px){.ibm-plex-sans-condensed-sample .text h2{font-size:var(--ms3)}}.ibm-plex-serif-sample{background:#fde267}.ibm-plex-serif-sample .text{color:#272727;max-width:800px}.ibm-plex-serif-sample .text h1{font:italic 200 var(--ms6)/1.2 var(--ibm-plex-serif);text-indent:-0.45em}@media screen and (max-width: 720px){.ibm-plex-serif-sample .text h1{font-size:var(--ms3)}}.inria-sans-sample{background:#000}.inria-sans-sample .text{color:#fff;width:auto}@media screen and (max-width: 720px){.inria-sans-sample .text{padding:1em 0}}.inria-sans-sample .text h1{font:700 var(--ms10)/0.95 var(--inria-sans);letter-spacing:-0.0125em;margin-bottom:.25em;text-indent:.025em}@media screen and (max-width: 720px){.inria-sans-sample .text h1{font-size:var(--ms5)}}.inria-sans-sample .text h2{font:400 var(--ms4)/1 var(--inria-sans);margin-left:.15em;text-transform:uppercase}@media screen and (max-width: 720px){.inria-sans-sample .text h2{font-size:var(--ms1)}}.inria-serif-sample{background:#fff}.inria-serif-sample .text{color:#000;max-width:940px;text-align:center}@media screen and (max-width: 720px){.inria-serif-sample .text{padding:2em 0}}.inria-serif-sample .text h1{font:700 var(--ms9)/1.1 var(--inria-serif);text-transform:uppercase;margin-bottom:.5em}@media screen and (max-width: 720px){.inria-serif-sample .text h1{font-size:var(--ms5);margin-bottom:.25em}}.inria-serif-sample .text h2{font:400 var(--ms5)/1.2 var(--inria-serif)}@media screen and (max-width: 720px){.inria-serif-sample .text h2{font-size:var(--ms3)}}.instrument-sans-sample{background:#feba33}.instrument-sans-sample .text{color:#000;max-width:940px;text-align:center}@media screen and (max-width: 720px){.instrument-sans-sample .text{padding:2em 0}}.instrument-sans-sample .text h1{font:700 var(--ms10)/0.85 var(--instrument-sans);text-transform:uppercase;font-variation-settings:\"wdth\" 85,\"wght\" 700,\"ital\" 0}@media screen and (max-width: 720px){.instrument-sans-sample .text h1{font-size:var(--ms7)}}.instrument-sans-sample .text h1:nth-child(2){font-variation-settings:\"wdth\" 75,\"wght\" 700,\"ital\" 0}.instrument-sans-sample .text h1:nth-child(3){font-variation-settings:\"wdth\" 91,\"wght\" 700,\"ital\" 0}.instrument-sans-sample .text h1:nth-child(4){font-variation-settings:\"wdth\" 92,\"wght\" 700,\"ital\" 0}.instrument-sans-sample .text h1:nth-child(5){font-variation-settings:\"wdth\" 89,\"wght\" 700,\"ital\" 0}.instrument-sans-sample .text h1:nth-child(6){font-variation-settings:\"wdth\" 82,\"wght\" 700,\"ital\" 0}.instrument-serif-sample{background:#000}.instrument-serif-sample .text{color:#fff;max-width:940px;text-align:center}@media screen and (max-width: 720px){.instrument-serif-sample .text{padding:2em 0}}.instrument-serif-sample .text h1{font:400 var(--ms8)/1.1 var(--instrument-serif);margin-bottom:.2em}@media screen and (max-width: 720px){.instrument-serif-sample .text h1{font-size:var(--ms5);margin-bottom:.25em}}.instrument-serif-sample .text h2{font:400 var(--ms5)/1.2 var(--instrument-serif)}@media screen and (max-width: 720px){.instrument-serif-sample .text h2{font-size:var(--ms3)}}.inter-sample{background:#020022}.inter-sample .text{color:#fff;max-width:1080px;text-align:center}@media screen and (max-width: 720px){.inter-sample .text{padding:2em 0}}.inter-sample .text h1{background:linear-gradient(25deg, #FF01D7, #FFEB00, #00EDF5, #5600CC);-webkit-background-clip:text;color:rgba(0,0,0,0);font:475 var(--ms11)/1.1 var(--inter);font-feature-settings:\"ss03\";letter-spacing:-0.045em;margin-bottom:.5em}@media screen and (max-width: 720px){.inter-sample .text h1{font-size:var(--ms5);margin-bottom:.25em}}.inter-sample .text h2{font:300 var(--ms5)/1.2 var(--inter);font-feature-settings:\"ss03\";letter-spacing:-0.025em}@media screen and (max-width: 720px){.inter-sample .text h2{font-size:var(--ms2)}}.jost-sample{background:#000}.jost-sample .text{color:#fff;max-width:960px;text-align:center}@media screen and (max-width: 720px){.jost-sample .text{padding:2em 0}}.jost-sample .text h1{font:600 var(--ms10)/1 var(--jost);letter-spacing:.03em;text-transform:uppercase}@media screen and (max-width: 1104px){.jost-sample .text h1{font-size:var(--ms9)}}@media screen and (max-width: 720px){.jost-sample .text h1{font-size:var(--ms5)}}.jost-sample .text h2{font:400 var(--ms6)/1 var(--jost);letter-spacing:.0975em;opacity:.5;margin-top:.5em;text-transform:uppercase}@media screen and (max-width: 1104px){.jost-sample .text h2{font-size:var(--ms5)}}@media screen and (max-width: 720px){.jost-sample .text h2{font-size:var(--ms1)}}.le-murmure-sample{background:#0b0731}.le-murmure-sample .text{text-align:center}.le-murmure-sample .text h1{background:linear-gradient(25deg, #221D52, #2389C8, #E63595, #F490A9);-webkit-background-clip:text;color:rgba(0,0,0,0);font:400 var(--ms12)/1 var(--le-murmure);text-transform:uppercase}@media screen and (max-width: 1104px){.le-murmure-sample .text h1{font-size:var(--ms9)}}@media screen and (max-width: 720px){.le-murmure-sample .text h1{font-size:var(--ms4);margin:1.5em 0}}.libre-franklin-sample{background:#171717}.libre-franklin-sample .text{max-width:960px}@media screen and (max-width: 720px){.libre-franklin-sample .text{padding:1em 0}}.libre-franklin-sample .text h1{color:#ee4128;font:900 var(--ms11)/0.9 var(--libre-franklin);text-transform:uppercase}@media screen and (max-width: 720px){.libre-franklin-sample .text h1{font-size:var(--ms6)}}.libre-franklin-sample .text h1:nth-child(2){margin-bottom:.025em}.libre-franklin-sample .text .yellow{color:#fdc00d}.libre-franklin-sample .text .green{color:#56b557}.libre-franklin-sample .text h2{color:#fff;display:flex;font:900 var(--ms2)/1.2 var(--libre-franklin);justify-content:space-between;margin:0 .075em 0 .35em;text-transform:uppercase}@media screen and (max-width: 720px){.libre-franklin-sample .text h2{flex-direction:column;margin:.75em 0 0 .2em}}.lora-sample{background:#77918d}.lora-sample .text{color:#fff;max-width:600px}.lora-sample .text p{font:italic 400 var(--ms3)/1.4 var(--lora);margin-bottom:.5em}@media screen and (max-width: 720px){.lora-sample .text p{font-size:var(--ms1);line-height:1.3}}.lora-sample .text h2{font:700 var(--ms1)/1 var(--lora);letter-spacing:.1em;text-transform:uppercase}@media screen and (max-width: 720px){.lora-sample .text h2{font-size:var(--ms-1)}}.messapia-sample{background:#397bca}.messapia-sample .text{color:#fff;text-align:center}.messapia-sample .text h1{font:700 var(--ms9)/4rem var(--messapia);margin-bottom:.75rem}@media screen and (max-width: 720px){.messapia-sample .text h1{font-size:var(--ms2);line-height:2rem;margin-bottom:0}}.messapia-sample .text h2{font:400 var(--ms6)/3rem var(--messapia);letter-spacing:.03em;margin-left:.05em;text-transform:uppercase}@media screen and (max-width: 720px){.messapia-sample .text h2{font-size:var(--ms-1);line-height:1rem}}.oswald-sample{background:#25408f}.oswald-sample .text{color:#ec1c23;max-width:960px}@media screen and (max-width: 720px){.oswald-sample .text{padding:1em 0}}.oswald-sample .text h1{font:900 var(--ms16)/1 var(--oswald)}@media screen and (max-width: 720px){.oswald-sample .text h1{font-size:var(--ms11)}}.playfair-display-sample{background:#55af8c}.playfair-display-sample .text{text-align:center}@media screen and (max-width: 720px){.playfair-display-sample .text{padding:1em 0}}.playfair-display-sample .text h1{color:#f6f3cf;font:italic 400 var(--ms11)/0.7 var(--playfair-display);font-feature-settings:\"smcp\",\"dlig\"}@media screen and (max-width: 720px){.playfair-display-sample .text h1{font-size:var(--ms6)}}.playfair-display-sample .text h1:nth-child(3){font-weight:900;line-height:.55;margin-bottom:.5em}.playfair-display-sample .text p{color:#272727;font:italic 400 var(--ms4)/1 var(--playfair-display)}@media screen and (max-width: 720px){.playfair-display-sample .text p{font-size:var(--ms2)}}.poppins-sample{background:#000}@media screen and (max-width: 720px){.poppins-sample .text{padding:1em 0}}.poppins-sample .text h1{color:#fff;font:700 var(--ms10)/0.9 var(--poppins)}@media screen and (max-width: 720px){.poppins-sample .text h1{font-size:var(--ms5)}}.rakkas-sample{background:#fffefa}.rakkas-sample .text{color:#272727;max-width:1200px;text-align:center;text-transform:uppercase}@media screen and (max-width: 720px){.rakkas-sample .text{padding:1em 0}}.rakkas-sample .text h2{display:flex;font:400 var(--ms13)/0.8 var(--rakkas);justify-content:space-between;margin:0 .05em}@media screen and (max-width: 720px){.rakkas-sample .text h2{font-size:var(--ms8)}}.rakkas-sample .text h3{color:#f00e31;font:400 var(--ms10)/0.8 var(--rakkas);letter-spacing:.085em;margin:0 0 .05em .2em}@media screen and (max-width: 720px){.rakkas-sample .text h3{font-size:var(--ms5);letter-spacing:.07em}}.rakkas-sample .text h2:first-child{border-top:.05em solid #272727;padding-top:.07em}.rakkas-sample .text h2:last-child{border-bottom:.05em solid #272727}.rakkas-sample .text .bullet{align-self:center;font-size:var(--ms11) !important}@media screen and (max-width: 720px){.rakkas-sample .text .bullet{font-size:var(--ms6) !important}}.source-code-pro-sample{background:#c5e3d7}.source-code-pro-sample .text{color:#000;text-align:center;width:auto}@media screen and (max-width: 720px){.source-code-pro-sample .text{padding:2em 0}}.source-code-pro-sample .text h1{font:300 var(--ms10)/1.1 var(--source-code-pro)}@media screen and (max-width: 720px){.source-code-pro-sample .text h1{font-size:var(--ms5)}}.source-code-pro-sample .text h2{font:900 var(--ms6)/1 var(--source-code-pro);margin-top:2em;text-transform:uppercase}@media screen and (max-width: 720px){.source-code-pro-sample .text h2{font-size:var(--ms3)}}.source-code-pro-sample .text h3{font:500 var(--ms3)/1 var(--source-code-pro);margin-top:.5em}@media screen and (max-width: 720px){.source-code-pro-sample .text h3{font-size:var(--ms0)}}.source-sans-pro-sample{background:#295d74}.source-sans-pro-sample .text{color:#f6efdf;width:auto}@media screen and (max-width: 720px){.source-sans-pro-sample .text{padding:2em 0}}.source-sans-pro-sample .text h1{font:700 var(--ms9)/1 var(--source-sans-pro);margin-bottom:.67em}@media screen and (max-width: 720px){.source-sans-pro-sample .text h1{font-size:var(--ms4);margin-bottom:.5em}}.source-sans-pro-sample .text h2{font:400 var(--ms3)/1 var(--source-sans-pro);font-feature-settings:\"smcp\";margin:0 0 .15em .15em}@media screen and (max-width: 720px){.source-sans-pro-sample .text h2{font-size:var(--ms1)}}.source-serif-pro-sample{background:#fcdee0}.source-serif-pro-sample .text{color:#272727}@media screen and (max-width: 720px){.source-serif-pro-sample .text{padding:1em 0}}.source-serif-pro-sample .text h1{font:400 var(--ms11)/0.8 var(--source-serif-pro);letter-spacing:-0.03em}@media screen and (max-width: 720px){.source-serif-pro-sample .text h1{font-size:var(--ms6)}}.source-serif-pro-sample .text h1:first-child{margin-bottom:.5em}.space-grotesk-sample{background:#000}.space-grotesk-sample .text{color:#000;max-width:840px;text-align:center}@media screen and (max-width: 720px){.space-grotesk-sample .text{padding:1em 0}}.space-grotesk-sample .text h1{font:700 var(--ms7)/1.3 var(--space-grotesk);font-feature-settings:\"ss02\";display:inline;margin:0 .05em;padding:.1em .1em}.space-grotesk-sample .text h1:nth-child(1){background:#d3544d}.space-grotesk-sample .text h1:nth-child(2){background:#9ab099}.space-grotesk-sample .text h1:nth-child(3){background:#5d6b92}.space-grotesk-sample .text h1:nth-child(4){background:#e2a50e}.space-grotesk-sample .text h1:nth-child(5){background:#d4bfc4}.space-grotesk-sample .text h1:nth-child(6){background:#d71e1f}@media screen and (max-width: 720px){.space-grotesk-sample .text h1{font-size:var(--ms2)}}.space-mono-sample{background:#ffc900}.space-mono-sample .text{color:#111;width:auto}@media screen and (max-width: 720px){.space-mono-sample .text{padding:1em 0}}.space-mono-sample .text h1{font:700 var(--ms9)/1 var(--space-mono)}.space-mono-sample .text h1:nth-child(2){margin-bottom:.5em}@media screen and (max-width: 720px){.space-mono-sample .text h1{font-size:var(--ms5)}}.tasa-orbiter-sample{background:#fff}.tasa-orbiter-sample .text{color:#fff;max-width:1080px;text-align:center}@media screen and (max-width: 720px){.tasa-orbiter-sample .text{padding:2em 0}}.tasa-orbiter-sample .text h1{-webkit-background-clip:text;color:#362420;font:475 var(--ms12)/1.1 var(--tasa-orbiter);font-feature-settings:\"ss03\";margin-bottom:0}@media screen and (max-width: 720px){.tasa-orbiter-sample .text h1{font-size:var(--ms5);margin-bottom:.25em}}.tasa-orbiter-sample .text h2{color:#362420;font:300 var(--ms6)/1.2 var(--tasa-orbiter);font-feature-settings:\"ss03\";letter-spacing:-0.025em}@media screen and (max-width: 720px){.tasa-orbiter-sample .text h2{font-size:var(--ms2)}}.vollkorn-sample{background:#00237d}.vollkorn-sample .text{color:#fffcfb;display:grid;flex-grow:unset;grid:1fr/1fr 4fr;grid-gap:1.5em;max-width:760px}.vollkorn-sample .text h1,.vollkorn-sample .text h2,.vollkorn-sample .text p{font-size:var(--ms3);line-height:1.4}.vollkorn-sample .text h1{font-feature-settings:\"smcp\";grid-area:1/1;text-align:right}@media screen and (max-width: 720px){.vollkorn-sample .text h1{font-size:var(--ms0)}}.vollkorn-sample .text h2{font-size:var(--ms2);grid-area:1/1;line-height:1.3;margin-bottom:.2em;text-align:right}@media screen and (max-width: 720px){.vollkorn-sample .text h2{font-size:var(--ms-1)}}.vollkorn-sample .text p{grid-area:1/2}@media screen and (max-width: 720px){.vollkorn-sample .text p{font-size:var(--ms0)}}.work-sans-sample{background:#00a451}.work-sans-sample .text{color:#fff;max-width:960px}@media screen and (max-width: 720px){.work-sans-sample .text{padding:1em 0}}.work-sans-sample .text h1{font:800 var(--ms6)/1.3 var(--work-sans)}@media screen and (max-width: 1104px){.work-sans-sample .text h1{font-size:var(--ms4)}}@media screen and (max-width: 720px){.work-sans-sample .text h1{font-size:var(--ms1);margin:1em 0}}.zilla-slab-sample{background:linear-gradient(-90deg, #2f86d7, #1cf5ba)}.zilla-slab-sample .text{color:#fff;max-width:820px}.zilla-slab-sample .text h1{font:300 var(--ms6)/1.2 var(--zilla-slab)}@media screen and (max-width: 720px){.zilla-slab-sample .text h1{font-size:var(--ms2)}}@media screen and (max-width: 1104px){.pairing{grid-area:span 1/span 12}}.archivo-black-and-lora-sample{background:#080543}.archivo-black-and-lora-sample .text{color:#fff;margin:3rem 0;text-align:center}.archivo-black-and-lora-sample .text h1{font:400 var(--ms10)/0.8 var(--archivo-black);text-transform:uppercase}@media screen and (max-width: 720px){.archivo-black-and-lora-sample .text h1{font-size:var(--ms7)}}.archivo-black-and-lora-sample .text p{font:400 var(--ms1)/1.4 var(--lora);margin:2em 2em 0}@media screen and (max-width: 720px){.archivo-black-and-lora-sample .text p{margin:1em 0 0 0}}.archivo-black-and-lora-sample .text p:last-child{margin-top:1em}.fraunces-and-libre-franklin-sample{background:#111412}.fraunces-and-libre-franklin-sample .text{color:#377cb2;margin:6rem 0;text-align:center}.fraunces-and-libre-franklin-sample .text h1{font:200 var(--ms13)/0.8 var(--fraunces);font-variation-settings:\"WONK\" 1,\"SOFT\" 10,\"opsz\" 144;letter-spacing:-0.05em;margin:0 0 .5rem 0;text-transform:uppercase}@media screen and (max-width: 720px){.fraunces-and-libre-franklin-sample .text h1{font-size:var(--ms8)}}.fraunces-and-libre-franklin-sample .text h2{font:350 var(--ms7)/1 var(--fraunces);font-variation-settings:\"WONK\" 1,\"SOFT\" 60,\"opsz\" 90;letter-spacing:.0045em;text-transform:uppercase}@media screen and (max-width: 720px){.fraunces-and-libre-franklin-sample .text h2{font-size:var(--ms2)}}.fraunces-and-libre-franklin-sample .text h3{color:#fff;font:600 var(--ms2)/1.4 var(--libre-franklin);margin:6rem 0 0 0}@media screen and (max-width: 720px){.fraunces-and-libre-franklin-sample .text h3{font-size:var(--ms0)}}.fraunces-and-libre-franklin-sample .text p{color:#fff;font:600 var(--ms2)/1.4 var(--libre-franklin)}@media screen and (max-width: 720px){.fraunces-and-libre-franklin-sample .text p{font-size:var(--ms0)}}.libre-franklin-and-source-serif-pro-sample{background-color:#faf9f6}.libre-franklin-and-source-serif-pro-sample .text{color:#272727;margin:3rem}@media screen and (max-width: 720px){.libre-franklin-and-source-serif-pro-sample .text{margin:3rem 0}}.libre-franklin-and-source-serif-pro-sample .text h1{display:flex;font:900 var(--ms8)/0.9 var(--libre-franklin);margin-bottom:.1em;text-transform:uppercase}@media screen and (max-width: 720px){.libre-franklin-and-source-serif-pro-sample .text h1{font-size:var(--ms5)}}.libre-franklin-and-source-serif-pro-sample .text h1 span:last-child{color:#0fadda;font-weight:300;padding-left:.25em;text-transform:none}.libre-franklin-and-source-serif-pro-sample .text p{font:400 var(--ms1)/1.4 var(--source-serif-pro);margin:1em 4em 0 0}@media screen and (max-width: 720px){.libre-franklin-and-source-serif-pro-sample .text p{margin-right:0}}.messapia-and-inter-sample{background:#191f26}.messapia-and-inter-sample .text{color:#fff;margin:6rem 3rem;text-align:center}@media screen and (max-width: 720px){.messapia-and-inter-sample .text{margin:3rem 0rem}}.messapia-and-inter-sample .text h1{font:700 var(--ms8)/0.95 var(--messapia);letter-spacing:-0.035em;margin:0 0 2rem 0;text-transform:uppercase}@media screen and (max-width: 720px){.messapia-and-inter-sample .text h1{font-size:var(--ms3);line-height:1.1}}.messapia-and-inter-sample .text p{color:#c4ccd5;font:440 var(--ms3)/1.25 var(--inter);letter-spacing:-0.015em}@media screen and (max-width: 720px){.messapia-and-inter-sample .text p{font-size:var(--ms1)}}.oswald-and-source-serif-pro-sample{background:linear-gradient(25deg, #6356dd, #ec2a22)}.oswald-and-source-serif-pro-sample .text{color:#171717;margin:3rem 0;text-align:center}.oswald-and-source-serif-pro-sample .text h1{color:#fff;font:700 var(--ms10)/1 var(--oswald);margin-bottom:2.25rem;text-transform:uppercase}@media screen and (max-width: 720px){.oswald-and-source-serif-pro-sample .text h1{font-size:var(--ms8);margin-bottom:1.2rem}}.oswald-and-source-serif-pro-sample .text h2{font:700 var(--ms4)/1.2 var(--oswald);margin-bottom:2rem;text-transform:uppercase}@media screen and (max-width: 720px){.oswald-and-source-serif-pro-sample .text h2{font-size:var(--ms2);margin-bottom:1rem}}.oswald-and-source-serif-pro-sample .text h3{font:400 var(--ms5)/1.1 var(--source-serif-pro)}@media screen and (max-width: 720px){.oswald-and-source-serif-pro-sample .text h3{font-size:var(--ms3)}}.rakkas-and-vollkorn-sample{background:#fff}.rakkas-and-vollkorn-sample .text{color:#272727;margin:3rem 0;text-align:center}.rakkas-and-vollkorn-sample .text h1{font:400 var(--ms8)/0.9 var(--rakkas);letter-spacing:.025em;margin:.3em 0 .25em;text-transform:uppercase}@media screen and (max-width: 720px){.rakkas-and-vollkorn-sample .text h1{font-size:var(--ms7)}}.rakkas-and-vollkorn-sample .text h2{color:#f00e31;font:400 var(--ms5)/1 var(--vollkorn);font-feature-settings:\"smcp\"}@media screen and (max-width: 720px){.rakkas-and-vollkorn-sample .text h2{font-size:var(--ms4)}}.rakkas-and-vollkorn-sample .text h3{font:italic 400 var(--ms2)/1 var(--vollkorn);margin-top:2em}@media screen and (max-width: 720px){.rakkas-and-vollkorn-sample .text h3{font-size:var(--ms1)}}.rakkas-and-vollkorn-sample .text h3 span{font-style:normal;font-feature-settings:\"smcp\";letter-spacing:.05em}.type-detail-header{align-self:flex-end;display:flex}.type-detail-header h2{font:600 var(--ms5)/2.5rem var(--ui-face)}.type-detail-header h3{font:400 var(--ms5)/2.5rem var(--ui-face)}@media screen and (max-width: 1104px){.type-detail-header h2,.type-detail-header h3{font-size:var(--ms4)}}@media screen and (max-width: 720px){.type-detail-header h2,.type-detail-header h3{font-size:var(--ms3);line-height:2rem}}.font-download{align-items:flex-end;display:flex;justify-content:flex-end}@media screen and (max-width: 720px){.font-download{margin-top:1rem}}.font-download a{background:#000;border-radius:3px;color:#fff;font:600 var(--ms1)/1.25rem var(--ui-face);padding:.75rem 2rem;text-align:center;text-transform:uppercase;transition:background .2s ease-in-out}@media screen and (max-width: 720px){.font-download a{flex-basis:100%;font-size:var(--ms0);padding:.7em 0}}.font-download a:hover{background:var(--red)}.font-download a span{display:block;font-size:var(--ms0);font-weight:400;opacity:.8;text-transform:none}@media screen and (max-width: 720px){.font-download a span{font-size:var(--ms-1)}}.font-download a+a{margin-left:1em}.type-styles>div{align-items:baseline;display:flex}.type-styles p{font-size:var(--ms5);line-height:3rem;margin-right:.75rem}@media screen and (max-width: 720px){.type-styles p{font-size:var(--ms3);line-height:2.5rem}}.type-styles .weight{font-size:var(--ms2);color:#878787;line-height:1}.type-info h3{font:700 var(--ms0)/1.75rem var(--ui-face);text-transform:uppercase}.type-info h4,.type-info li{font:400 var(--ms1)/1.75rem var(--ui-face);margin-bottom:.875rem}.type-info h4:last-child,.type-info li:last-child{margin-bottom:0}.type-info ul{list-style:none;padding:0}.type-info ul li{margin-bottom:0}.type-info a{text-decoration:underline}.type-detail-table{background-color:#fff;display:flex;flex-direction:column;justify-content:center}@media screen and (max-width: 1104px){.type-detail-table{grid-area:span 1/span 12 !important}}@media screen and (max-width: 720px){.type-detail-table{grid-area:span 1/span 6 !important}}.examples{display:flex;flex-grow:2;justify-content:center;padding:2rem}@media screen and (max-width: 720px){.examples{padding:1rem !important}}.examples.flow-row{align-content:center;align-items:center;flex-flow:row wrap;text-align:center}.examples.flow-column{flex-flow:column}.examples>div{padding:1rem;overflow-wrap:break-word}.character-examples>div{padding:.5rem .25rem}.word-examples>div{margin-bottom:1rem;padding:0}@media screen and (max-width: 720px){.word-examples>div h1{font-size:var(--ms3) !important}.word-examples>div:nth-child(6) h1{font-size:var(--ms2) !important}}.examples h1{font-size:var(--ms4);line-height:2.5rem;margin-bottom:.5rem}@media screen and (max-width: 720px){.examples h1{margin-bottom:0}}.examples p{line-height:1.5rem}.examples span{font-size:var(--ms6);line-height:3.5rem}.examples.small-characters span{font-size:var(--ms4)}.word-examples h1{font-size:var(--ms6)}.word-examples div:nth-child(1) h1{font-weight:100}.word-examples div:nth-child(2) h1{font-weight:300;text-transform:uppercase}.word-examples div:nth-child(3) h1{font-weight:400}.word-examples div:nth-child(4) h1{font-weight:500}.word-examples div:nth-child(5) h1{font-weight:700}.word-examples div:nth-child(6) h1{font-weight:800;font-size:var(--ms5)}.word-examples div:nth-child(7) h1{font-weight:900}.paragraph-examples .ms2{line-height:2rem}.paragraph-examples .ms1{line-height:1.75rem}.paragraph-examples .ms0{line-height:1.5rem}.paragraph-examples .ms-1{line-height:1.25rem}.paragraph-examples .ms-2{line-height:1rem}.examples-figures .examples h1{font-size:var(--ms6);font-weight:400}.examples.typeface-comparison h1{font-size:var(--ms7);font-weight:400;line-height:3.5rem}@media screen and (max-width: 720px){.examples.typeface-comparison h1{font-size:var(--ms3);line-height:2.5rem}}.character-label,.code{color:#a7a7a7;font:normal 600 var(--ms-1)/1 var(--ibm-plex-mono);font-feature-settings:\"liga\" off;font-variant:normal;line-height:1rem;margin-top:.5rem;padding:0;text-transform:none}.character-label+.code{margin-top:0}.grid-comparisons h3,.grid-pairings h3{font:italic 400 var(--ms5)/1.2 var(--alegreya-sans)}@media screen and (max-width: 720px){.grid-comparisons h3,.grid-pairings h3{font-size:var(--ms3);grid-area:span 1/span 6;margin-top:1rem}}.grid.alegreya .examples-smallcap{grid-area:span 6/span 6}.grid.alegreya-sans .examples-paragraphs{grid-area:span 5/span 6}.grid.alegreya-sans .examples-smallcap{grid-area:span 6/span 6}.grid.archivo-black .examples-paragraphs{grid-area:span 11/span 6}.grid.archivo-black .examples-words .word-examples div:nth-child(5) h1{font-size:var(--ms4)}.grid.biorhyme .examples-headlines .examples h1{font-size:var(--ms5)}.grid.biorhyme-expanded .examples-characters .examples span{font-size:var(--ms4)}.grid.biorhyme-expanded .examples-words .word-examples h1{font-size:var(--ms4)}.grid.biorhyme-expanded .examples-words .word-examples div:nth-child(5) h1{font-size:var(--ms2)}.grid.biorhyme-expanded .examples-headlines-uppercase .examples h1{font-size:var(--ms3)}.grid.firago .examples-smallcap{grid-area:span 11/span 6}.grid.ibm-plex-mono .examples-paragraphs{grid-area:span 9/span 6}.grid.instrument-serif .examples-words .word-examples h1{font-weight:400}.grid.le-murmure .examples-characters .examples span{font-size:var(--ms8)}.grid.le-murmure .examples-words .word-examples h1{font-size:var(--ms7)}.grid.le-murmure .examples-headlines .examples h1,.grid.le-murmure .examples-headlines-uppercase .examples h1{font-size:var(--ms8);line-height:4.5rem}.grid.lora .examples-paragraphs{grid-area:span 9/span 6}.grid.messapia .examples-words .word-examples h1{font-size:var(--ms6)}.grid.messapia .examples-words .word-examples div:nth-child(5) h1{font-size:var(--ms4)}.grid.playfair-display .examples-characters .examples span{font-size:var(--ms7)}.grid.playfair-display .examples-headlines .examples h1{font-size:var(--ms7);line-height:1}.grid.playfair-display .examples-headlines-italic .examples h1{font-size:var(--ms7);line-height:1}.grid.playfair-display .examples-smallcap .examples h1{font-size:var(--ms7);line-height:.9}.grid.playfair-display .examples-smallcap-italic .examples h1{line-height:.9}.grid.rakkas .examples-headlines .examples h1{font-size:var(--ms8)}.grid.rakkas .examples-headlines .examples h1{font-size:var(--ms8);line-height:4.5rem}.grid.rakkas .examples-headlines-uppercase .examples h1{font-size:var(--ms8);line-height:4rem}.grid.space-mono .examples-words .word-examples h1{font-feature-settings:\"liga\" off,\"clig\" off,\"dlig\" off}.grid.space-mono .examples-headlines .examples h1,.grid.space-mono .examples-headlines-italic .examples h1{font-feature-settings:\"liga\" off,\"clig\" off,\"dlig\" off}.grid.space-mono .examples-paragraphs{font-feature-settings:\"liga\" off,\"clig\" off,\"dlig\" off}.grid.work-sans .examples-smallcap{grid-area:span 10/span 6}.grid.zilla-slab .examples-smallcap{grid-area:span 6/span 6}footer.grid{box-shadow:0 -1px 0 rgba(215,215,215,.4);margin-top:2rem;padding-top:2rem}@media screen and (max-width: 720px){footer.grid{grid-gap:1.5rem}}footer.grid h3{color:#797979;font:700 var(--ms0)/1.25rem var(--ui-face);margin-bottom:.5rem;text-transform:uppercase}footer.grid li{font:400 var(--ms0)/1.25rem var(--ui-face);margin-bottom:.5rem}footer.grid li a:hover{color:var(--red)}footer.grid p{font:400 var(--ms1)/1.75 var(--ui-face)}@media screen and (max-width: 1104px){footer.grid .footer-type-list{grid-area:span 1/span 4}}@media screen and (max-width: 720px){footer.grid .footer-type-list{grid-area:span 1/span 6}}@media screen and (max-width: 1104px){footer.grid .footer-patreon,footer.grid .footer-newsletter{grid-area:span 1/span 12}}@media screen and (max-width: 720px){footer.grid .footer-patreon,footer.grid .footer-newsletter{grid-area:span 1/span 6}}footer.grid .footer-patreon-content{display:flex}@media screen and (max-width: 720px){footer.grid .footer-patreon-content{flex-direction:column}}footer.grid .footer-patreon-content .patreon-logo{margin:.25em 1em 0 0}footer.grid .footer-patreon-content .patreon-logo img{height:3.375rem}footer.grid .subscribe-form{margin:.5em 0}footer.grid .subscribe-form form{display:flex;font:var(--ms1) var(--ui-face)}footer.grid .subscribe-form label{display:none}footer.grid .subscribe-form input[type=text]{-webkit-appearance:none;border:1px solid #000;border-radius:0;border-right:0;flex-grow:2;outline:none;padding:.75em;min-width:100px}footer.grid .subscribe-form input[type=submit]{background:#000;color:#fff;font-weight:700;padding:.75em 1.5em}.chadwin:before{content:\"NEW\";display:inline-block;background:#e74c3c;color:#fff;font-size:.65em;font-weight:bold;padding:.15em .5em;margin-right:.5em;border-radius:.25em;letter-spacing:.05em;vertical-align:middle}#glyph-detail .sidebar-header{background:#101010;border-top-left-radius:2px;border-top-right-radius:2px;padding:.5rem 1rem}#glyph-detail .sidebar-header a{color:#fff;display:block;font:600 var(--ms0)/1rem var(--ui-face);padding:.5rem 0}#glyph-detail .sidebar-header a span{font-size:var(--ms1);font-weight:700;line-height:1rem;margin-right:.1em}#glyph-detail #glyph-detail-canvas{background:#fff;border-bottom:1px solid #efefef}#glyph-detail #glyph-info{background:#fff;padding:1rem 1rem .5rem 1rem}#glyph-detail #glyph-info h3{font:700 var(--ms0)/1rem var(--ui-face);text-transform:uppercase}#glyph-detail #glyph-info p{font:500 var(--ms0)/1.5rem var(--ui-monospaced);margin-bottom:1rem;overflow-wrap:break-word}#glyph-grid{background:#fff;border:1px solid #efefef;border-top:0;border-left:0;display:grid;grid-template-columns:repeat(16, 1fr);grid-auto-rows:auto;grid-auto-flow:row;grid-gap:0;margin:0 auto;max-width:100%}@media screen and (max-width: 1104px){#glyph-grid{grid-template-columns:repeat(10, 1fr)}}@media screen and (max-width: 720px){#glyph-grid{grid-template-columns:repeat(6, 1fr)}}#glyph-grid .glyph-container{background:#fff;border:1px solid #efefef;border-right:0;border-bottom:0}#glyph-grid .glyph-container.active{background:rgba(255,165,0,.2)}#glyph-grid .glyph-container:hover{background:rgba(255,165,0,.2);cursor:pointer}#glyph-grid .glyph-container:active{background:rgba(255,165,0,.4)}.pagination-wrapper{background:#101010;border-top-left-radius:2px;border-top-right-radius:2px;display:flex;justify-content:center;overflow-x:scroll;padding:.5rem}.pagination-wrapper::-webkit-scrollbar{display:none}#glyph-pagination{background:#101010;display:flex;overflow-x:scroll}#glyph-pagination::-webkit-scrollbar{display:none}#glyph-pagination a{background:#515151;border-right:1px solid #313131;color:#fff;font:600 var(--ms0)/1rem var(--ui-face);padding:.5rem 1rem .5rem}#glyph-pagination a:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}#glyph-pagination a:last-child{border:0;border-top-right-radius:2px;border-bottom-right-radius:2px}#glyph-pagination a:hover{background:#313131}#glyph-pagination .selected-page{background:#313131}:root{--alegreya: \"Alegreya\", serif}.alegreya{font-family:\"Alegreya\",serif !important}@font-face{font-family:\"Alegreya\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/alegreya/Alegreya-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/alegreya/Alegreya-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/alegreya/Alegreya-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/alegreya/Alegreya-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/alegreya/Alegreya-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/alegreya/Alegreya-BoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/alegreya/Alegreya-ExtraBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya\";font-style:italic;font-weight:800;src:url(\"/assets/fonts/alegreya/Alegreya-ExtraBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/alegreya/Alegreya-Black.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/alegreya/Alegreya-BlackItalic.woff2\") format(\"woff2\")}:root{--alegreya-sans: \"Alegreya Sans\", serif}.alegreya-sans{font-family:\"Alegreya Sans\",serif !important}@font-face{font-family:\"Alegreya Sans\";font-style:normal;font-weight:100;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-Thin.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:italic;font-weight:100;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-ThinItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-BoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-ExtraBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:italic;font-weight:800;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-ExtraBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-Black.woff2\") format(\"woff2\")}@font-face{font-family:\"Alegreya Sans\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/alegreya-sans/AlegreyaSans-BlackItalic.woff2\") format(\"woff2\")}:root{--archivo: \"Archivo\", sans-serif}.archivo{font-family:\"Archivo\",sans-serif !important}@font-face{font-family:\"Archivo\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/archivo/Archivo-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Archivo\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/archivo/Archivo-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Archivo\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/archivo/Archivo-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Archivo\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/archivo/Archivo-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Archivo\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/archivo/Archivo-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Archivo\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/archivo/Archivo-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Archivo\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/archivo/Archivo-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Archivo\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/archivo/Archivo-BoldItalic.woff2\") format(\"woff2\")}:root{--archivo-black: \"Archivo Black\", sans-serif}.archivo-black{font-family:\"Archivo Black\",sans-serif !important}@font-face{font-family:\"Archivo Black\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/archivo-black/ArchivoBlack-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Archivo Black\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/archivo-black/ArchivoBlack-Italic.woff2\") format(\"woff2\")}:root{--biorhyme: \"BioRhyme\", serif}.biorhyme{font-family:\"BioRhyme\",serif !important}@font-face{font-family:\"Biorhyme\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/biorhyme/BioRhyme-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"Biorhyme\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/biorhyme/BioRhyme-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Biorhyme\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/biorhyme/BioRhyme-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Biorhyme\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/biorhyme/BioRhyme-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Biorhyme\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/biorhyme/BioRhyme-ExtraBold.woff2\") format(\"woff2\")}:root{--biorhyme-expanded: \"BioRhyme Expanded\", serif}.biorhyme-expanded{font-family:\"BioRhyme Expanded\",serif !important}@font-face{font-family:\"Biorhyme Expanded\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/biorhyme-expanded/BioRhymeExpanded-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"Biorhyme Expanded\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/biorhyme-expanded/BioRhymeExpanded-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Biorhyme Expanded\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/biorhyme-expanded/BioRhymeExpanded-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Biorhyme Expanded\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/biorhyme-expanded/BioRhymeExpanded-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Biorhyme Expanded\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/biorhyme-expanded/BioRhymeExpanded-ExtraBold.woff2\") format(\"woff2\")}:root{--commissioner: \"Commissioner\", sans-serif}.commissioner{font-family:\"Commissioner\",sans-serif !important}@font-face{font-family:\"Commissioner\";font-style:normal;font-weight:100 900;src:url(\"/assets/fonts/commissioner/Commissioner_VF_1.001.woff2\") format(\"woff2\")}:root{--cooper-hewitt: \"Cooper Hewitt\", sans-serif}.cooper-hewitt{font-family:\"Cooper Hewitt\",sans-serif !important}@font-face{font-family:\"Cooper Hewitt\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-Thin.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:italic;font-weight:200;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-ThinItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-Book.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-BookItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-Semibold.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-SemiboldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-BoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-Heavy.woff2\") format(\"woff2\")}@font-face{font-family:\"Cooper Hewitt\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/cooper-hewitt/CooperHewitt-HeavyItalic.woff2\") format(\"woff2\")}:root{--crimson-pro: \"Crimson Pro\", serif}.crimson-pro{font-family:\"Crimson Pro\",serif !important}@font-face{font-family:\"Crimson Pro\";font-stretch:normal;font-style:normal;font-weight:100 900;src:url(\"/assets/fonts/crimson-pro/CrimsonPro-Roman-VF.woff2\") format(\"woff2-variations\")}@font-face{font-family:\"Crimson Pro\";font-stretch:normal;font-style:italic;font-weight:100 900;src:url(\"/assets/fonts/crimson-pro/CrimsonPro-Italic-VF.woff2\") format(\"woff2-variations\")}:root{--fira-code: \"Fira Code VF\", monospace}.fira-code{font-family:\"Fira Code VF\",monospace !important}@font-face{font-family:\"Fira Code VF\";font-style:normal;font-weight:300 700;src:url(\"/assets/fonts/fira-code/FiraCode-VF.woff2\") format(\"woff2-variations\")}:root{--firago: \"FiraGO\", serif}.firago{font-family:\"FiraGO\",serif !important}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:100;src:url(\"/assets/fonts/firago/FiraGO-Thin.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:100;src:url(\"/assets/fonts/firago/FiraGO-ThinItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/firago/FiraGO-UltraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:200;src:url(\"/assets/fonts/firago/FiraGO-UltraLightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:250;src:url(\"/assets/fonts/firago/FiraGO-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:250;src:url(\"/assets/fonts/firago/FiraGO-ExtraLightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/firago/FiraGO-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/firago/FiraGO-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:350;src:url(\"/assets/fonts/firago/FiraGO-Book.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:350;src:url(\"/assets/fonts/firago/FiraGO-BookItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/firago/FiraGO-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/firago/FiraGO-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/firago/FiraGO-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/firago/FiraGO-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/firago/FiraGO-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/firago/FiraGO-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/firago/FiraGO-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/firago/FiraGO-BoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/firago/FiraGO-ExtraBold.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:800;src:url(\"/assets/fonts/firago/FiraGO-ExtraBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/firago/FiraGO-Heavy.woff2\") format(\"woff2\")}@font-face{font-family:\"FiraGo\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/firago/FiraGO-HeavyItalic.woff2\") format(\"woff2\")}:root{--fivo-sans: \"Fivo Sans\", sans-serif}.fivo-sans{font-family:\"Fivo Sans\",sans-serif !important}@font-face{font-family:\"Fivo Sans\";font-style:normal;font-weight:100;src:url(\"/assets/fonts/fivo-sans/fivosans-thin.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:italic;font-weight:100;src:url(\"/assets/fonts/fivo-sans/fivosans-thin-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/fivo-sans/fivosans-light.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/fivo-sans/fivosans-light-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/fivo-sans/fivosans-regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/fivo-sans/fivosans-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/fivo-sans/fivosans-medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/fivo-sans/fivosans-medium-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/fivo-sans/fivosans-bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/fivo-sans/fivosans-bold-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/fivo-sans/fivosans-heavy.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:italic;font-weight:800;src:url(\"/assets/fonts/fivo-sans/fivosans-heavy-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/fivo-sans/fivosans-black.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/fivo-sans/fivosans-black-oblique.woff2\") format(\"woff2\")}:root{--fivo-sans-modern: \"Fivo Sans Modern\", sans-serif}.fivo-sans-modern{font-family:\"Fivo Sans Modern\",sans-serif !important}@font-face{font-family:\"Fivo Sans Modern\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans Modern\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-regular-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans Modern\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans Modern\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-medium-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans Modern\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans Modern\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-bold-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans Modern\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-heavy.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans Modern\";font-style:italic;font-weight:800;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-heavy-oblique.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans Modern\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-extblack.woff2\") format(\"woff2\")}@font-face{font-family:\"Fivo Sans Modern\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/fivo-sans-modern/fivosansmodern-extblack-oblique.woff2\") format(\"woff2\")}:root{--fraunces: \"Fraunces\", serif}.fraunces{font-family:\"Fraunces\",serif !important}@font-face{font-family:\"Fraunces\";font-weight:100 900;src:url(\"/assets/fonts/fraunces/Fraunces.woff2\") format(\"woff2-variations\")}@font-face{font-family:\"Fraunces\";font-weight:100 900;font-style:italic;src:url(\"/assets/fonts/fraunces/Fraunces-Italic.woff2\") format(\"woff2-variations\")}:root{--ia-writer-quattro: \"iA Writer Quattro\", \"Helvetica Neue\", Arial, sans-serif}.ia-writer-quattro{font-family:\"iA Writer Quattro\",\"Helvetica Neue\",Arial,sans-serif !important}@font-face{font-family:\"iA Writer Quattro\";font-style:normal;font-weight:300 700;src:url(\"/assets/fonts/ia-writer-quattro/iAWriterQuattroV.woff2\") format(\"woff2-variations\")}@font-face{font-family:\"iA Writer Quattro\";font-style:italic;font-weight:300 700;src:url(\"/assets/fonts/ia-writer-quattro/iAWriterQuattroV-Italic.woff2\") format(\"woff2-variations\")}:root{--ibm-plex-mono: \"IBM Plex Mono\", \"Menlo\", \"DejaVu Sans Mono\", \"Bitstream Vera Sans Mono\", Courier, monospace}.ibm-plex-mono{font-family:\"IBM Plex Mono\",\"Menlo\",\"DejaVu Sans Mono\",\"Bitstream Vera Sans Mono\",Courier,monospace !important}@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:100;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-Thin.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:italic;font-weight:100;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-ThinItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:italic;font-weight:200;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-ExtraLightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:450;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-Text.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:italic;font-weight:450;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-TextItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Mono\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/ibm-plex-mono/IBMPlexMono-BoldItalic.woff2\") format(\"woff2\")}:root{--ibm-plex-sans: \"IBM Plex Sans\", \"Helvetica Neue\", Arial, sans-serif}.ibm-plex-sans{font-family:\"IBM Plex Sans\",\"Helvetica Neue\",Arial,sans-serif !important}@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:100;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-Thin.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:italic;font-weight:100;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-ThinItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:italic;font-weight:200;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-ExtraLightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:450;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-Text.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:italic;font-weight:450;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-TextItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/ibm-plex-sans/IBMPlexSans-BoldItalic.woff2\") format(\"woff2\")}:root{--ibm-plex-sans-condensed: \"IBM Plex Sans Condensed\", \"Helvetica Neue\", Arial, sans-serif}.ibm-plex-sans-condensed{font-family:\"IBM Plex Sans Condensed\",\"Helvetica Neue\",Arial,sans-serif !important}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:normal;font-weight:100;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Thin.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:italic;font-weight:100;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-ThinItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:italic;font-weight:200;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-ExtraLightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:normal;font-weight:450;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Text.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:italic;font-weight:450;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-TextItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Sans Condensed\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/ibm-plex-sans-condensed/IBMPlexSansCondensed-BoldItalic.woff2\") format(\"woff2\")}:root{--ibm-plex-serif: \"IBM Plex Serif\", \"Georgia\", Times, serif}.ibm-plex-serif{font-family:\"IBM Plex Serif\",\"Georgia\",Times,serif !important}@font-face{font-family:\"IBM Plex Serif\";font-style:normal;font-weight:100;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-Thin.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:italic;font-weight:100;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-ThinItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:italic;font-weight:200;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-ExtraLightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:normal;font-weight:450;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-Text.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:italic;font-weight:450;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-TextItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"IBM Plex Serif\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/ibm-plex-serif/IBMPlexSerif-BoldItalic.woff2\") format(\"woff2\")}:root{--inria-sans: \"Inria Sans\", \"Georgia\", Times, serif}.inria-sans{font-family:\"Inria Sans\",\"Georgia\",Times,serif !important}@font-face{font-family:\"Inria Sans\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/inria-sans/InriaSans-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Sans\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/inria-sans/InriaSans-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Sans\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/inria-sans/InriaSans-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Sans\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/inria-sans/InriaSans-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Sans\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/inria-sans/InriaSans-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Sans\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/inria-sans/InriaSans-BoldItalic.woff2\") format(\"woff2\")}:root{--inria-serif: \"Inria Serif\", \"Georgia\", Times, serif}.inria-serif{font-family:\"Inria Serif\",\"Georgia\",Times,serif !important}@font-face{font-family:\"Inria Serif\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/inria-serif/InriaSerif-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Serif\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/inria-serif/InriaSerif-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Serif\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/inria-serif/InriaSerif-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Serif\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/inria-serif/InriaSerif-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Serif\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/inria-serif/InriaSerif-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Inria Serif\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/inria-serif/InriaSerif-BoldItalic.woff2\") format(\"woff2\")}:root{--instrument-sans: \"Instrument Sans\", sans-serif}.instrument-sans{font-family:\"Instrument Sans\",sans-serif}@font-face{font-family:\"Instrument Sans\";font-style:normal;font-weight:100 900;src:url(\"/assets/fonts/instrument-sans/InstrumentSans.woff2\") format(\"woff2\")}@font-face{font-family:\"Instrument Sans\";font-style:italic;font-weight:100 900;src:url(\"/assets/fonts/instrument-sans/InstrumentSans-Italic.woff2\") format(\"woff2\")}:root{--instrument-serif: \"Instrument Serif\", \"Georgia\", Times, serif}.instrument-serif{font-family:\"Instrument Serif\",\"Georgia\",Times,serif !important}@font-face{font-family:\"Instrument Serif\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/instrument-serif/InstrumentSerif-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Instrument Serif\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/instrument-serif/InstrumentSerif-Italic.woff2\") format(\"woff2\")}:root{--inter: \"Inter var\", sans-serif}.inter{font-family:\"Inter var\",sans-serif !important}@font-face{font-family:\"Inter var\";font-weight:100 900;font-style:normal;font-named-instance:\"Regular\";src:url(\"/assets/fonts/inter/Inter-roman.var.woff2?v=3.15\") format(\"woff2-variations\")}@font-face{font-family:\"Inter var\";font-weight:100 900;font-style:italic;font-named-instance:\"Italic\";src:url(\"/assets/fonts/inter/Inter-italic.var.woff2?v=3.15\") format(\"woff2-variations\")}:root{--le-murmure: \"Le Murmure\", serif}.le-murmure{font-family:\"Le Murmure\",serif !important}@font-face{font-family:\"Le Murmure\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/le-murmure/Le_Murmure-Regular.woff2\") format(\"woff2\")}:root{--libre-franklin: \"Libre Franklin\", sans-serif}.libre-franklin{font-family:\"Libre Franklin\",sans-serif !important}@font-face{font-family:\"Libre Franklin\";font-style:normal;font-weight:100;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-Thin.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:italic;font-weight:100;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-ThinItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:italic;font-weight:200;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-ExtraLightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-BoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-ExtraBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:italic;font-weight:800;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-ExtraBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-Black.woff2\") format(\"woff2\")}@font-face{font-family:\"Libre Franklin\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/libre-franklin/LibreFranklin-BlackItalic.woff2\") format(\"woff2\")}:root{--lora: \"Lora\", serif}.lora{font-family:\"Lora\",serif !important}@font-face{font-family:\"Lora\";font-stretch:normal;font-style:normal;font-weight:100 900;src:url(\"/assets/fonts/lora/Lora-VF.woff2\") format(\"woff2-variations\")}@font-face{font-family:\"Lora\";font-stretch:normal;font-style:italic;font-weight:100 900;src:url(\"/assets/fonts/lora/Lora-Italic-VF.woff2\") format(\"woff2-variations\")}:root{--messapia: \"Messapia\", display}.messapia{font-family:\"Messapia\",display !important}@font-face{font-family:\"Messapia\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/messapia/Messapia-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Messapia\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/messapia/Messapia-Bold.woff2\") format(\"woff2\")}:root{--oswald: \"Oswald\", serif}.oswald{font-family:\"Oswald\",sans-serif !important}@font-face{font-family:\"Oswald\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/oswald/Oswald-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"Oswald\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/oswald/Oswald-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Oswald\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/oswald/Oswald-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Oswald\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/oswald/Oswald-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Oswald\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/oswald/Oswald-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Oswald\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/oswald/Oswald-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Oswald\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/oswald/OswaldHeavy-Regular.woff2\") format(\"woff2\")}:root{--playfair-display: \"Playfair Display\", serif}.playfair-display{font-family:\"Playfair Display\",serif !important}@font-face{font-family:\"Playfair Display\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/playfair-display/PlayfairDisplay-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Playfair Display\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/playfair-display/PlayfairDisplay-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Playfair Display\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/playfair-display/PlayfairDisplay-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Playfair Display\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/playfair-display/PlayfairDisplay-BoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Playfair Display\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/playfair-display/PlayfairDisplay-Black.woff2\") format(\"woff2\")}@font-face{font-family:\"Playfair Display\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/playfair-display/PlayfairDisplay-BlackItalic.woff2\") format(\"woff2\")}:root{--poppins: \"Poppins\", sans-serif}.poppins{font-family:\"Poppins\",sans-serif !important}@font-face{font-family:\"Poppins\";font-style:normal;font-weight:100;src:url(\"/assets/fonts/poppins/Poppins-Thin.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:italic;font-weight:100;src:url(\"/assets/fonts/poppins/Poppins-ThinItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:normal;font-weight:200;src:url(\"/assets/fonts/poppins/Poppins-ExtraLight.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:italic;font-weight:200;src:url(\"/assets/fonts/poppins/Poppins-ExtraLightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/poppins/Poppins-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/poppins/Poppins-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/poppins/Poppins-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/poppins/Poppins-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/poppins/Poppins-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/poppins/Poppins-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/poppins/Poppins-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/poppins/Poppins-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/poppins/Poppins-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/poppins/Poppins-BoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/poppins/Poppins-ExtraBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:italic;font-weight:800;src:url(\"/assets/fonts/poppins/Poppins-ExtraBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/poppins/Poppins-Black.woff2\") format(\"woff2\")}@font-face{font-family:\"Poppins\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/poppins/Poppins-BlackItalic.woff2\") format(\"woff2\")}:root{--rakkas: \"Rakkas\", serif}.rakkas{font-family:\"Rakkas\",serif !important}@font-face{font-family:\"Rakkas\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/rakkas/Rakkas-Regular.woff2\") format(\"woff2\")}:root{--source-code-pro: \"Source Code Variable\", serif}.source-code-pro{font-family:\"Source Code Variable\",serif !important}@font-face{font-family:\"Source Code Variable\";font-stretch:normal;font-style:normal;font-weight:200 900;src:url(\"/assets/fonts/source-code-pro/SourceCodeVF-Upright.ttf.woff2\") format(\"woff2-variations\")}@font-face{font-family:\"Source Code Variable\";font-stretch:normal;font-style:italic;font-weight:200 900;src:url(\"/assets/fonts/source-code-pro/SourceCodeVF-Italic.ttf.woff2\") format(\"woff2-variations\")}:root{--source-sans-pro: \"Source Sans Variable\", serif}.source-sans-pro{font-family:\"Source Sans Variable\",serif !important}@font-face{font-family:\"Source Sans Variable\";font-stretch:normal;font-style:normal;font-weight:200 900;src:url(\"/assets/fonts/source-sans-pro/SourceSansVariable-Roman.ttf.woff2\") format(\"woff2-variations\")}@font-face{font-family:\"Source Sans Variable\";font-stretch:normal;font-style:italic;font-weight:200 900;src:url(\"/assets/fonts/source-sans-pro/SourceSansVariable-Italic.ttf.woff2\") format(\"woff2-variations\")}:root{--source-serif-pro: \"Source Serif Variable\", serif}.source-serif-pro{font-family:\"Source Serif Variable\",serif !important}@font-face{font-family:\"Source Serif Variable\";font-stretch:normal;font-style:normal;font-weight:200 900;src:url(\"/assets/fonts/source-serif-pro/SourceSerifVariable-Roman.ttf.woff2\") format(\"woff2-variations\")}@font-face{font-family:\"Source Serif Variable\";font-stretch:normal;font-style:italic;font-weight:200 900;src:url(\"/assets/fonts/source-serif-pro/SourceSerifVariable-Italic.ttf.woff2\") format(\"woff2-variations\")}:root{--space-grotesk: \"Space Grotesk\", sans-serif}.space-grotesk{font-family:\"Space Grotesk\",sans-serif !important}@font-face{font-family:\"Space Grotesk\";font-stretch:normal;font-style:normal;font-weight:300 700;src:url(\"/assets/fonts/space-grotesk/SpaceGroteskVariable.woff2\") format(\"woff2-variations\")}:root{--space-mono: \"Space Mono\", monospace}.space-mono{font-family:\"Space Mono\",monospace !important}@font-face{font-family:\"Space Mono\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/space-mono/spacemono-regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Space Mono\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/space-mono/spacemono-italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Space Mono\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/space-mono/spacemono-bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Space Mono\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/space-mono/spacemono-bolditalic.woff2\") format(\"woff2\")}:root{--tasa-orbiter: \"TASA Orbiter\", sans-serif}.tasa-orbiter{font-family:\"TASA Orbiter\",sans-serif !important}@font-face{font-family:\"TASA Orbiter\";font-weight:100 900;font-style:normal;font-named-instance:\"Regular\";src:url(\"/assets/fonts/tasa-orbiter/TASAOrbiterVF.woff2\") format(\"woff2-variations\")}:root{--vollkorn: \"Vollkorn\", serif}.vollkorn{font-family:\"Vollkorn\",serif !important}@font-face{font-family:\"Vollkorn\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/vollkorn/Vollkorn-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/vollkorn/Vollkorn-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/vollkorn/Vollkorn-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/vollkorn/Vollkorn-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/vollkorn/Vollkorn-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/vollkorn/Vollkorn-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/vollkorn/Vollkorn-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/vollkorn/Vollkorn-BoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:normal;font-weight:800;src:url(\"/assets/fonts/vollkorn/Vollkorn-ExtraBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:italic;font-weight:800;src:url(\"/assets/fonts/vollkorn/Vollkorn-ExtraBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:normal;font-weight:900;src:url(\"/assets/fonts/vollkorn/Vollkorn-Black.woff2\") format(\"woff2\")}@font-face{font-family:\"Vollkorn\";font-style:italic;font-weight:900;src:url(\"/assets/fonts/vollkorn/Vollkorn-BlackItalic.woff2\") format(\"woff2\")}:root{--work-sans: \"Work Sans\", \"Helvetica Neue\", Arial, sans-serif}.work-sans{font-family:\"Work Sans\",\"Helvetica Neue\",Arial,sans-serif !important}@font-face{font-family:\"Work Sans\";font-stretch:normal;font-style:normal;font-weight:100 900;src:url(\"/assets/fonts/work-sans/WorkSans-Variable.woff2\") format(\"woff2-variations\")}@font-face{font-family:\"Work Sans\";font-stretch:normal;font-style:italic;font-weight:100 900;src:url(\"/assets/fonts/work-sans/WorkSans-Italic-Variable.woff2\") format(\"woff2-variations\")}:root{--zilla-slab: \"Zilla Slab\", serif}.zilla-slab{font-family:\"Zilla Slab\",serif !important}@font-face{font-family:\"Zilla Slab\";font-style:normal;font-weight:300;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-Light.woff2\") format(\"woff2\")}@font-face{font-family:\"Zilla Slab\";font-style:italic;font-weight:300;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-LightItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Zilla Slab\";font-style:normal;font-weight:400;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-Regular.woff2\") format(\"woff2\")}@font-face{font-family:\"Zilla Slab\";font-style:italic;font-weight:400;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-Italic.woff2\") format(\"woff2\")}@font-face{font-family:\"Zilla Slab\";font-style:normal;font-weight:500;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-Medium.woff2\") format(\"woff2\")}@font-face{font-family:\"Zilla Slab\";font-style:italic;font-weight:500;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-MediumItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Zilla Slab\";font-style:normal;font-weight:600;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-SemiBold.woff2\") format(\"woff2\")}@font-face{font-family:\"Zilla Slab\";font-style:italic;font-weight:600;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-SemiBoldItalic.woff2\") format(\"woff2\")}@font-face{font-family:\"Zilla Slab\";font-style:normal;font-weight:700;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-Bold.woff2\") format(\"woff2\")}@font-face{font-family:\"Zilla Slab\";font-style:italic;font-weight:700;src:url(\"/assets/fonts/zilla-slab/ZillaSlab-BoldItalic.woff2\") format(\"woff2\")}\n"
  },
  {
    "path": "js/wawoff2-decompress.js",
    "content": "var Module=typeof Module!==\"undefined\"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=typeof window===\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";var ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;var toLog=e;err(\"exiting due to exception: \"+toLog)}var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};readAsync=function readAsync(filename,onload,onerror){var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);nodeFS[\"readFile\"](filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);if(typeof module!==\"undefined\"){module[\"exports\"]=Module}quit_=function(status,toThrow){if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4}return len}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}var wasmBinaryFile;wasmBinaryFile=\"data:application/octet-stream;base64,AGFzbQEAAAABag9gAX8Bf2ACf38AYAN/f38Bf2ABfwBgAn9/AX9gBX9/f39/AGAGf39/f39/AGADf39/AGAEf39/fwBgAABgBH9/f38Bf2AFf39/f38Bf2AHf39/f39/fwBgBH9/fn4AYAh/f39/f39/fwACbRIBYQFhAAcBYQFiAAUBYQFjAAcBYQFkAAEBYQFlAAkBYQFmAAcBYQFnAAQBYQFoAAUBYQFpAAEBYQFqAAcBYQFrAAABYQFsAAMBYQFtAAMBYQFuAAwBYQFvAAIBYQFwAAABYQFxAAEBYQFyAAYDUlEDAAICAgIABAMEAwcHCgEBAgAFCQsLAQYIBwcAAQkLAAAJDQABCAMOAwMDAQMDAwkLAAMCAAoEBAQGBgYFBQUICAgCAgMAAwAAAAQBBAAKAgEEBQFwASQkBQcBAYACgIACBgkBfwFB8KrIAgsHHQcBcwIAAXQAMwF1AQABdgAjAXcAEgF4AFsBeQBBCSkBAEEBCyNeYi0yHGFgX11cWjIcWVhXVjIcODhVHFRLTlMcTE9SHE1QUQqJ4wRRzAwBB38CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgFBeHEiAGohBQJAIAFBAXENACABQQNxRQ0BIAMgAygCACIBayIDQZCnCCgCAEkNASAAIAFqIQAgA0GUpwgoAgBHBEAgAUH/AU0EQCADKAIIIgIgAUEDdiIEQQN0QainCGpGGiACIAMoAgwiAUYEQEGApwhBgKcIKAIAQX4gBHdxNgIADAMLIAIgATYCDCABIAI2AggMAgsgAygCGCEGAkAgAyADKAIMIgFHBEAgAygCCCICIAE2AgwgASACNgIIDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQECQCADIAMoAhwiAkECdEGwqQhqIgQoAgBGBEAgBCABNgIAIAENAUGEpwhBhKcIKAIAQX4gAndxNgIADAMLIAZBEEEUIAYoAhAgA0YbaiABNgIAIAFFDQILIAEgBjYCGCADKAIQIgIEQCABIAI2AhAgAiABNgIYCyADKAIUIgJFDQEgASACNgIUIAIgATYCGAwBCyAFKAIEIgFBA3FBA0cNAEGIpwggADYCACAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAMgBU8NACAFKAIEIgFBAXFFDQACQCABQQJxRQRAIAVBmKcIKAIARgRAQZinCCADNgIAQYynCEGMpwgoAgAgAGoiADYCACADIABBAXI2AgQgA0GUpwgoAgBHDQNBiKcIQQA2AgBBlKcIQQA2AgAPCyAFQZSnCCgCAEYEQEGUpwggAzYCAEGIpwhBiKcIKAIAIABqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAFBeHEgAGohAAJAIAFB/wFNBEAgBSgCCCICIAFBA3YiBEEDdEGopwhqRhogAiAFKAIMIgFGBEBBgKcIQYCnCCgCAEF+IAR3cTYCAAwCCyACIAE2AgwgASACNgIIDAELIAUoAhghBgJAIAUgBSgCDCIBRwRAIAUoAggiAkGQpwgoAgBJGiACIAE2AgwgASACNgIIDAELAkAgBUEUaiICKAIAIgQNACAFQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiAkECdEGwqQhqIgQoAgBGBEAgBCABNgIAIAENAUGEpwhBhKcIKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiABNgIAIAFFDQELIAEgBjYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQZSnCCgCAEcNAUGIpwggADYCAA8LIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIACyAAQf8BTQRAIABBA3YiAUEDdEGopwhqIQACf0GApwgoAgAiAkEBIAF0IgFxRQRAQYCnCCABIAJyNgIAIAAMAQsgACgCCAshAiAAIAM2AgggAiADNgIMIAMgADYCDCADIAI2AggPC0EfIQIgA0IANwIQIABB////B00EQCAAQQh2IgEgAUGA/j9qQRB2QQhxIgF0IgIgAkGA4B9qQRB2QQRxIgJ0IgQgBEGAgA9qQRB2QQJxIgR0QQ92IAEgAnIgBHJrIgFBAXQgACABQRVqdkEBcXJBHGohAgsgAyACNgIcIAJBAnRBsKkIaiEBAkACQAJAQYSnCCgCACIEQQEgAnQiB3FFBEBBhKcIIAQgB3I2AgAgASADNgIAIAMgATYCGAwBCyAAQQBBGSACQQF2ayACQR9GG3QhAiABKAIAIQEDQCABIgQoAgRBeHEgAEYNAiACQR12IQEgAkEBdCECIAQgAUEEcWoiB0EQaigCACIBDQALIAcgAzYCECADIAQ2AhgLIAMgAzYCDCADIAM2AggMAQsgBCgCCCIAIAM2AgwgBCADNgIIIANBADYCGCADIAQ2AgwgAyAANgIIC0GgpwhBoKcIKAIAQQFrIgBBfyAAGzYCAAsLMwEBfyAAQQEgABshAAJAA0AgABAjIgENAUH8pggoAgAiAQRAIAERCQAMAQsLEAQACyABC4EEAQN/IAJBgARPBEAgACABIAIQDhogAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAAL8gICAn8BfgJAIAJFDQAgACACaiIDQQFrIAE6AAAgACABOgAAIAJBA0kNACADQQJrIAE6AAAgACABOgABIANBA2sgAToAACAAIAE6AAIgAkEHSQ0AIANBBGsgAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLIAALpwEBAX8gAkUEQCAAKAIEIAEoAgRGDwsgACABRgRAQQEPCyMAQRBrIgMiAiAANgIIIAIgAigCCCgCBDYCDCACKAIMIQAgAyICIAE2AgggAiACKAIIKAIENgIMIAIoAgwiAy0AACEBAkAgAC0AACICRQ0AIAEgAkcNAANAIAMtAAEhASAALQABIgJFDQEgA0EBaiEDIABBAWohACABIAJGDQALCyABIAJGC8cBAQZ/AkAgAgJ/IAEoAgQiAkEgRgRAIAAtAAANAiAAQQJqDAELQSAgAmshBSAAIAEoAgAgAnYiB0H/AXEiBkECdGoiCC0AACIDQQhNBEAgAyAFSw0CIAEgAiADajYCBCAAIAZBAnRqQQJqDAELIAVBCUkNASAIIAAgBkECdGovAQIgA0ECdEGwFGooAgAgB3FBCHZqQQJ0aiIALQAAIgNBGCACa0sNASABIAIgA2pBCGo2AgQgAEECagsvAQA2AgBBASEECyAEC1IBAn9B8KYIKAIAIgEgAEEDakF8cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQD0UNAQtB8KYIIAA2AgAgAQ8LQfimCEEwNgIAQX8L+AEBBX8CQCABQXxxIgNFBEAMAQsDQCAAIAJBA3JqLQAAIAAgAkEBcmotAABBEHQgACACai0AAEEYdHIgACACQQJyai0AAEEIdHJyIARqIQQgAkEEaiICIANJDQALCyABIANHBH9BACECAkAgASADTQ0AIAFBAXEhBUEAIAFrIANBf3NHBEAgAUEDcSAFayEBA0AgACADQQFyai0AACADQQN0QRBxIgZBEHN0IAAgA2otAAAgBkEYc3QgAnJyIQIgA0ECaiEDIAFBAmsiAQ0ACwsgBUUNACAAIANqLQAAIANBA3RBf3NBGHF0IAJyIQILIAIgBGoFIAQLC2UBBX9BCBAKIgQiBSIDQYyfCDYCACADQbifCDYCACAAEDUiAUENahATIgJBADYCCCACIAE2AgQgAiABNgIAIAMgAkEMaiAAIAFBAWoQFDYCBCAFQeifCDYCACAEQYigCEEDEAkAC9MBAQZ/AkAgACgCCCIDQQFqIgQgACgCBCIFSw0AIAAoAgAiBiADai0AACECIAAgBDYCCAJAAkACQAJAIAJB/QFrDgMAAgEDCyADQQNqIgMgBUsNAyAEIAZqLwAAIgJBCHQgAkEIdnJB//8DcSECIAAgAzYCCAwCCyADQQJqIgIgBUsNAiAEIAZqLQAAIQMgACACNgIIIANB/QFqIQIMAQsgA0ECaiICIAVLDQEgBCAGai0AACEDIAAgAjYCCCADQfoDaiECCyABIAI2AgBBASEHCyAHCwYAIAAQEgsQACACBEAgACABIAIQFBoLCxAAIAIEQCAAIAEgAhAiGgsL4ggBA38jAEEgayEEIAIoAgAhBQJ/AkAgASgCACIGIAAoAgBPBEBBACAFIAZPDQIaIAQgASkCGDcDGCAEIAEpAhA3AxAgBCABKQIINwMIIAQgASkCADcDACABIAIpAhg3AhggASACKQIQNwIQIAEgAikCCDcCCCABIAIpAgA3AgAgAiAEKQMYNwIYIAIgBCkDEDcCECACIAQpAwg3AgggAiAEKQMANwIAQQEgASgCACAAKAIATw0CGiAEIAApAhg3AxggBCAAKQIQNwMQIAQgACkCCDcDCCAEIAApAgA3AwAgACABKQIYNwIYIAAgASkCEDcCECAAIAEpAgg3AgggACABKQIANwIAIAEgBCkDGDcCGCABIAQpAxA3AhAgASAEKQMINwIIIAEgBCkDADcCAAwBCyAFIAZJBEAgBCAAKQIYNwMYIAQgACkCEDcDECAEIAApAgg3AwggBCAAKQIANwMAIAAgAikCGDcCGCAAIAIpAhA3AhAgACACKQIINwIIIAAgAikCADcCACACIAQpAxg3AhggAiAEKQMQNwIQIAIgBCkDCDcCCCACIAQpAwA3AgBBAQwCCyAEIAApAhg3AxggBCAAKQIQNwMQIAQgACkCCDcDCCAEIAApAgA3AwAgACABKQIYNwIYIAAgASkCEDcCECAAIAEpAgg3AgggACABKQIANwIAIAEgBCkDGDcCGCABIAQpAxA3AhAgASAEKQMINwIIIAEgBCkDADcCAEEBIAIoAgAgASgCAE8NARogBCABKQIYNwMYIAQgASkCEDcDECAEIAEpAgg3AwggBCABKQIANwMAIAEgAikCGDcCGCABIAIpAhA3AhAgASACKQIINwIIIAEgAikCADcCACACIAQpAxg3AhggAiAEKQMQNwIQIAIgBCkDCDcCCCACIAQpAwA3AgALQQILIQUgAygCACACKAIASQR/IAQgAikCGDcDGCAEIAIpAhA3AxAgBCACKQIINwMIIAQgAikCADcDACACIAMpAhg3AhggAiADKQIQNwIQIAIgAykCCDcCCCACIAMpAgA3AgAgAyAEKQMYNwIYIAMgBCkDEDcCECADIAQpAwg3AgggAyAEKQMANwIAIAIoAgAgASgCAE8EQCAFQQFqDwsgBCABKQIYNwMYIAQgASkCEDcDECAEIAEpAgg3AwggBCABKQIANwMAIAEgAikCGDcCGCABIAIpAhA3AhAgASACKQIINwIIIAEgAikCADcCACACIAQpAxg3AhggAiAEKQMQNwIQIAIgBCkDCDcCCCACIAQpAwA3AgAgASgCACAAKAIATwRAIAVBAmoPCyAEIAApAhg3AxggBCAAKQIQNwMQIAQgACkCCDcDCCAEIAApAgA3AwAgACABKQIYNwIYIAAgASkCEDcCECAAIAEpAgg3AgggACABKQIANwIAIAEgBCkDGDcCGCABIAQpAxA3AhAgASAEKQMINwIIIAEgBCkDADcCACAFQQNqBSAFCwsdACABBEAgACABKAIAECAgACABKAIEECAgARASCwubBAEDfyABIAAgAUYiAjoADAJAIAINAANAIAEoAggiAi0ADA0BAkACfyACIAIoAggiAygCACIERgRAAkAgAygCBCIERQ0AIAQtAAwNAAwDCwJAIAEgAigCAEYEQCACIQEMAQsgAiACKAIEIgEoAgAiADYCBCABIAAEfyAAIAI2AgggAigCCAUgAws2AgggAigCCCIAIAAoAgAgAkdBAnRqIAE2AgAgASACNgIAIAIgATYCCCABKAIIIQMLIAFBAToADCADQQA6AAwgAyADKAIAIgAoAgQiATYC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AUcNAiADQQFGDQEMAgsgASACRgRAIAAoAhgiAkECRgRAIAAgAzYCGCADIQILIAAoAjBBAUcNAiACQQFGDQEMAgsgACAAKAIkQQFqNgIkCyAAQQE6ADYLC10BAX8gACgCECIDRQRAIABBATYCJCAAIAI2AhggACABNgIQDwsCQCABIANGBEAgACgCGEECRw0BIAAgAjYCGA8LIABBAToANiAAQQI2AhggACAAKAIkQQFqNgIkCwuIJwEIfyMAQSBrIgMkAANAIAFBIGshBgNAAkACQAJAAkACQAJAIAEgAGsiBEEFdSIFDgYFBQABAgMECyABQSBrIgEoAgAgACgCAE8NBCADIABBGGopAgA3AxggAyAAQRBqKQIANwMQIAMgAEEIaikCADcDCCADIAApAgA3AwAgACABKQIYNwIYIAAgASkCEDcCECAAIAEpAgg3AgggACABKQIANwIAIAEgAykDGDcCGCABIAMpAxA3AhAgASADKQMINwIIIAEgAykDADcCAAwECyAAQSBqIQQgAUEgayIFKAIAIQIgACgCICIBIAAoAgBPBEAgASACTQ0EIAMgBCkCGDcDGCADIAQpAhA3AxAgAyAEKQIINwMIIAMgBCkCADcDACAEIAUpAhg3AhggBCAFKQIQNwIQIAQgBSkCCDcCCCAEIAUpAgA3AgAgBSADKQMYNwIYIAUgAykDEDcCECAFIAMpAwg3AgggBSADKQMANwIAIAAoAiAgACgCAE8NBCADIABBGGopAgA3AxggAyAAQRBqKQIANwMQIAMgAEEIaikCADcDCCADIAApAgA3AwAgACAEKQIYNwIYIAAgBCkCEDcCECAAIAQpAgg3AgggACAEKQIANwIAIAQgAykDGDcCGCAEIAMpAxA3AhAgBCADKQMINwIIIAQgAykDADcCAAwECyABIAJLBEAgAyAAQRhqKQIANwMYIAMgAEEQaikCADcDECADIABBCGopAgA3AwggAyAAKQIANwMAIAAgBSkCGDcCGCAAIAUpAhA3AhAgACAFKQIINwIIIAAgBSkCADcCACAFIAMpAxg3AhggBSADKQMQNwIQIAUgAykDCDcCCCAFIAMpAwA3AgAMBAsgAyAAQRhqKQIANwMYIAMgAEEQaikCADcDECADIABBCGopAgA3AwggAyAAKQIANwMAIAAgBCkCGDcCGCAAIAQp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IAMpAxA3AhAgByADKQMINwIIIAcgAykDADcCAAwBCyAEIAVJBEAgAyAAQRhqKQIANwMYIAMgAEEQaikCADcDECADIABBCGopAgA3AwggAyAAKQIANwMAIAAgBikCGDcCGCAAIAYpAhA3AhAgACAGKQIINwIIIAAgBikCADcCACAGIAMpAxg3AhggBiADKQMQNwIQIAYgAykDCDcCCCAGIAMpAwA3AgBBASEKDAILIAMgAEEYaikCADcDGCADIABBEGopAgA3AxAgAyAAQQhqKQIANwMIIAMgACkCADcDACAAIAciBEEYaikCADcCGCAAIAQiBUEQaikCADcCECAAIARBCGopAgA3AgggACAEKQIANwIAIAQgAykDGDcCGCAEIAMpAxA3AhAgBCADKQMINwIIIAQgAykDADcCAEEBIQogBigCACAEKAIATw0BIAMgBCkCGDcDGCADIAUpAhA3AxAgAyAHKQIINwMIIAMgBykCADcDACAEIAYpAhg3AhggBSAGKQIQNwIQIAcgBikCCDcCCCAHIAYpAgA3AgAgBiADKQMYNwIYIAYgAykDEDcCECAGIAMpAwg3AgggBiADKQMANwIAC0ECIQoLIAYhBQJ/AkACQCAAKAIAIgggBygCACIESQRADAELA0AgBUEgayIFIABGBEAgAEEgaiEEIAggBigCAEkNAyAEIAZGDQUDQCAEKAIAIAhLBEAgAyAEQRhqKQIANwMYIAMgBEEQaikCADcDECADIARBCGopAgA3AwggAyAEKQIANwMAIAQgBikCGDcCGCAEIAYpAhA3AhAgBCAGKQIINwIIIAQgBikCADcCACAGIAMpAxg3AhggBiADKQMQNwIQIAYgAykDCDcCCCAGIAMpAwA3AgAgBEEgaiEEDAULIAYgBEEgaiIERw0ACwwFCyAFKAIAIARPDQALIAMgAEEYaikCADcDGCADIABBEGopAgA3AxAgAyAAQQhqKQIANwMIIAMgACkCADcDACAAIAVBGGopAgA3AhggACAFQRBqKQIANwIQIAAgBUEIaikCADcCCCAAIAUpAgA3AgAgBSADKQMYNwIYIAUgAykDEDcCECAFIAMpAwg3AgggBSADKQMANwIAIApBAWohCgsgBSAAQSBqIgRLBEADfyAHKAIAIQkDQCAEIghBIGohBCAIKAIAIAlJDQALA0AgBUEg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IAECfyACQf8AcSIBIAJBgAFxRQ0AGiAEQQJqIgIgBUsNASADIAZqLQAAIQMgACACNgIIIANB/wBxIAFBB3RyIgEgA0GAAXFFDQAaIARBA2oiAyAFSw0BIAIgBmotAAAhAiAAIAM2AgggAkH/AHEgAUEHdHIiASACQYABcUUNABogBEEEaiICIAVLDQEgAyAGai0AACEDIAAgAjYCCCADQf8AcSABQQd0ciIBIANBgAFxRQ0AGiAFIARBBWoiBUkNASACIAZqLQAAIQQgACAFNgIIIAFB////D0sNASAEQYABcQ0BIARB/wBxIAFBB3RyCzYCAEEBIQcLIAcL1RIBB38jAEEgayICJABBASEGAkACQAJAAkACQAJAIAEgAGtBBXUOBgUFAAECAwQLIAFBIGsiASgCACAAKAIATw0EIAIgACkCGDcDGCACIAApAhA3AxAgAiAAKQIINwMIIAIgACkCADcDACAAIAEpAhg3AhggACABKQIQNwIQIAAgASkCCDcCCCAAIAEpAgA3AgAgASACKQMYNwIYIAEgAikDEDcCECABIAIpAwg3AgggASACKQMANwIADAQLIAFBIGsiASgCACEDIAAoAiAiBSAAKAIATwRAIAMgBU8NBCACIAApAjg3AxggAiAAKQIwNwMQIAIgACkCKDcDCCACIAApAiA3AwAgACABKQIYNwI4IAAgASkCEDcCMCAAIAEpAgg3AiggACABKQIANwIgIAEgAikDGDcCGCABIAIpAxA3AhAgASACKQMINwIIIAEgAikDADcCACAAKAIgIAAoAgBPDQQgAiAAKQIYNwMYIAIgACkCEDcDECACIAApAgg3AwggAiAAKQIANwMAIAAgACkCODcCGCAAIAApAjA3AhAgACAAKQIoNwIIIAAgACkCIDcCACAAIAIpAxg3AjggACACKQMQNwIwIAAgAikDCDcCKCAAIAIpAwA3AiAMBAsgAyAFSQRAIAIgACkCGDcDGCACIAApAhA3AxAgAiAAKQIINwMIIAIgACkCADcDACAAIAEpAhg3AhggACABKQIQNwIQIAAgASkCCDcCCCAAIAEpAgA3AgAgASACKQMYNwIYIAEgAikDEDcCECABIAIpAwg3AgggASACKQMANwIADAQLIAIgACkCGDcDGCACIAApAhA3AxAgAiAAKQIINwMIIAIgACkCADcDACAAIAApAjg3AhggACAAKQIwNwIQIAAgACkCKDcCCCAAIAApAiA3AgAgACACKQMYNwI4IAAgAikDEDcCMCAAIAIpAwg3AiggACACKQMANwIgIAEoAgAgACgCIE8NAyACIAApAjg3AxggAiAAKQIwNwMQIAIgACkCKDcDCCACIAApAiA3AwAgACABKQIYNwI4IAAgASkCEDcCMCAAIAEpAgg3AiggACABKQIANwIgIAEgAikDGDcCGCABIAIpAxA3AhAgASACKQMINwIIIAEgAikDADcCAAwDCyAAIABBIGogAEFAayABQSBrEB8aDAILIAAgAEEgaiAAQUBrIgMgAEHgAGoQHxogAUEgayIBKAIAIAAoAmBPDQEgAiAAKQJ4NwMYIAIgACkCcDcDECACIAApAmg3AwggAiAAKQJgNwMAIAAgASkCGDcCeCAAIAEpAhA3AnAgACABKQIINwJoIAAgASkCADcCYCABIAIpAxg3AhggASACKQMQNwIQIAEgAikDCDcCCCABIAIpAwA3AgAgACgCYCADKAIATw0BIAIgAykCGDcDGCACIAMpAhA3AxAgAiADKQIINwMIIAIgAykCADcDACADIAApAng3AhggAyAAKQJwNwIQIAMgACkCaDcCCCADIAApAmA3AgAgACACKQMYNwJ4IAAgAikDEDcCcCAAIAIpAwg3AmggACACKQMANwJgIAMoAgAgACgCIE8NASACIAApAjg3AxggAiAAKQIwNwMQIAIgACkCKDcDCCACIAApAiA3AwAgACADKQIYNwI4IAAgAykCEDcCMCAAIAMpAgg3AiggACADKQIANwIgIAMgAikDGDcCGCADIAIpAxA3AhAgAyACKQMINwIIIAMgAikDADcCACAAKAIgIAAoAgBPDQEgAiAAKQIYNwMYIAIgACkCEDcDECACIAApAgg3AwggAiAAKQIANwMAIAAgACkCODcCGCAAIAApAjA3AhAgACAAKQIoNwIIIAAgACkCIDcCACAAIAIpAxg3AjggACACKQMQNwIwIAAgAikDCDcCKCAAIAIpAwA3AiAMAQsgAEFAayEEIAAoAkAhAwJAIAAoAiAiBSAAKAIAIgdPBEAgAyAFTw0BIAIgACkCODcDGCACIAApAjA3AxAgAiAAKQIoNwMIIAIgACkCIDcDACAAIAQpAhg3AjggACAEKQIQ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IABBCXY6AAQgAUH//wNxIQJBACEAA0AgAiAAIgFBAWoiAHYNAAsgAyABOgAJIAMgAUEIdjoACCADQRAgAXQiADoAByADIABBCHY6AAYgAyACQQR0IABB8P8DcWsiADoACyADIABBCHY6AAogC0EMaiELIBYoAgwiIiAWKAIQIhdHBEADQCAIKAI4ICIvAQBBBXRqKAIAIQMCQCAIKAJUIBVBBXRqIgdBGGoiASgCACIABEAgB0EYaiEBA0ACQCAAKAIQIgIgA0sEQCAAKAIAIgINASAAIQEMBAsgAiADTw0DIABBBGohASAAKAIEIgJFDQMgASEACyAAIQEgAiEADAALAAsgASEACyABKAIAIg1FBEBBGBATIg0gAzYCECANIAA2AgggDUIANwIAIA1BADYCFCABIA02AgAgBygCFCgCACIABH8gByAANgIUIAEoAgAFIA0LIgYgBiAHKAIYIhlGIgA6AAwCQCAADQADQCAGKAIIIgEtAAwNAQJAAkAgASABKAIIIgAoAgAiAkYEQAJAIAAoAgQiAkUNACACLQAMDQAMAwsCQCAGIAEoAgBGBEAgASECDAELIAEgASgCBCICKAIAIgY2AgQgAiAGBH8gBiABNgIIIAEoAggFIAALNgIIIAEoAggiACAAKAIAIAFHQQJ0aiACNgIAIAIgATYCACABIAI2AgggAigCCCEACyACQQE6AAwgAEEAOgAMIAAgACgCACIBKAIEIgI2AgAgAgRAIAIgADYCCAsgASAAKAIINgIIIAAoAggiAiACKAIAIABHQQJ0aiABNgIAIAEgADYCBAwBCwJAIAJFDQAgAi0ADA0ADAILAkAgBiABKAIARwRAIAEhBgwBCyABIAYoAgQiAjYCACAGIAIEfyACIAE2AgggASgCCAUgAAs2AgggASgCCCIAIAAoAgAgAUdBAnRqIAY2AgAgBiABNgIEIAEgBjYCCCAGKAIIIQALIAZBAToADCAAQQA6AAwgACAAKAIEIgEoAgAiAjYCBCACBEAgAiAANgIICyABIAAoAgg2AgggACgCCCICIAIoAgAgAEdBAnRqIAE2AgAgASAANgIACyAAIAE2AggMAgsgAUEBOgAMIAAgACAZRiIBOgAMIAJBAToADCAAIQYgAUUNAAsLIAcgBygCHEEBajYCHAsgDSALNgIUIAsgDGoiAEEANgAM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bW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAmBECAHEHAAC0BwAALAgAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAmBECAKAHAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQBOU3QzX18yMjFfX2Jhc2ljX3N0cmluZ19jb21tb25JTGIxRUVFAAAAAJgRAgD7BwAAHBICALwHAAAAAAAAAQAAACQIAAAAAAAAaWlpAE41d29mZjIxNFdPRkYyU3RyaW5nT3V0RQBONXdvZmYyOFdPRkYyT3V0RQBBgBELkgJwYW1jZGFlaGFlaGh4dG1ocHhhbWVtYW4yL1NPdHNvcCB0dmNtZ3BmZnlsZ2Fjb2xwZXJwIEZGQ0dST1ZUREJFQ0xCRXBzYWd4bWRobnJla0hTVExUTENQWE1EVmFlaHZ4dG12RVNBQkZFREdTT1BHQlVTR0NTQkVGVFNKSFRBTVREQkNDTEJDUkxPQ0xBUEMgR1ZTeGlic3RuY2FyYXZhdGFkYmNvbGJubHNicmF2Y2NzZGZ0YWVmeHRtZnJhdmZyYXZneXRzaHRzdWpyYWNsdHJvbXhyb21kYnBvcG9ycGthcnRmcGFaZmxpU3RhbEdjb2xHdGFlRmxsaVMAAAAAAQIDBAAFEQYQBwgJCgsMDQ4PAEGgEwuHAQICAgMCAgIEAgICAwICAgQABAMCAAQDAQAEAwIABAMFAQACAAUAAgAJAAIADQACABEAAwAZAAMAIQADACkAAwAxAAQAQQAEAFEABABhAAQAcQAFAJEABQCxAAUA0QAFAPEABgAxAQYAcQEHAPEBCADxAgkA8QQKAPEICwDxEAwA8SANAPFAGABBtBQLgAEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9//////wBBxBULnAIEAAAADAAAABwAAABJAAAAfgAAAOQAAACoAQAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+PwBB5BkL/AEBAQEBAgICAgMDAwMEBAQEBQUFBQYGBgYHBwcHCAgICAkJCQkKCgoKCwsLCwwMDAwNDQ0NDg4ODg8PDw8QEBAQERERERISEhITExMTFBQUFBUVFRUWFhYWFxcXFxgYGBgZGRkZGhoaGhsbGxscHBwcHR0dHR4eHh4fHx8fICAgICEhISEiIiIiIyMjIyQkJCQlJSUlJiYmJicnJycoKCgoKSkpKSoqKiorKysrLCwsLC0tLS0uLi4uLy8vLzAwMDAxMTExMjIyMjMzMzM0NDQ0NTU1NTY2NjY3Nzc3ODg4ODk5OTk6Ojo6Ozs7Ozw8PDw9PT09Pj4+Pj8/Pz8AQekdCwUEBAAABABBgB4L4AEIDBAMDBQMEBgcDAwgDCQMLCwsLCwsLCwsLCAgGCgcDAwwNDQ0MDQ0NDA0NDQ0NDA0NDQ0NDA0NDQ0NBgMHAwMDDg8PDw4PDw8ODw8PDw8ODw8PDw8ODw8PDw8GAwcDAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwBBgSALXgEBAQEBAQEBAQEBAQEBAQICAgICAgICAgIBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgIBAQEBAQEDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwEBAQEAQcAhC+jzBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAgICAgICAgICAgICAgICBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoMDAwMDAwMDAwMDAwMDAwOAABAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQYGBgYGBgYGBgYGBgYGBgcAAAAAAAACAAAAAAEAAAMAAAAAAgAABAAAAAADAAAFAAAAAAMAAAYAAAAAAwAABwAAAAADAAAIAAAAAAMAAAkAAAAAAAEAAgAAAAABAQADAAAAAAIBAAQAAAAAAwEABQAAAAADAQAGAAAAAAMBAAcAAAAAAwEACAAAAAADAQAJAAAAAAACAAIAAAAAAQIAAwAAAAACAgAEAAAAAAMCAAUAAAAAAwIABgAAAAADAgAHAAAAAAMCAAgAAAAAAwIACQAAAAAAAwACAAAAAAEDAAMAAAAAAgMABAAAAAADAwAFAAAAAAMDAAYAAAAAAwMABwAAAAADAwAIAAAAAAMDAAkAAAAAAAQAAgAAAAABBAADAAAAAAIEAAQAAAAAAwQABQAAAAADBAAGAAAAAAMEAAcAAAAAAwQACAAAAAADBAAJAAAAAAAFAAIAAAAAAQUAAwAAAAACBQAEAAAAAAMFAAUAAAAAAwUABgAAAAADBQAHAAAAAAMFAAgAAAAAAwUACQABAAAABgACAAEAAAEGAAMAAQAAAgYABAABAAADBgAFAAEAAAMGAAYAAQAAAwYABwABAAADBgAIAAEAAAMGAAkAAQAAAAgAAgABAAABCAADAAEAAAIIAAQAAQAAAwgABQABAAADCAAGAAEAAAMIAAcAAQAAAwgACAABAAADCAAJAAABAAMAAAoAAAEAAwAADAAAAgADAAAOAAACAAMAABIAAAMAAwAAFgAAAwADAAAeAAAEAAMAACYAAAQAAwAANgAAAQADAQAKAAABAAMBAAwAAAIAAwEADgAAAgADAQASAAADAAMBABYAAAMAAwEAHgAABAADAQAmAAAEAAMBADYAAAEAAwIACgAAAQADAgAMAAACAAMCAA4AAAIAAwIAEgAAAwADAgAWAAADAAMCAB4AAAQAAwIAJgAABAADAgA2AAABAAMDAAoAAAEAAwMADAAAAgADAwAOAAACAAMDABIAAAMAAwMAFgAAAwADAwAeAAAEAAMDACYAAAQAAwMANgAAAQADBAAKAAABAAMEAAwAAAIAAwQADgAAAgADBAASAAADAAMEABYAAAMAAwQAHgAABAADBAAmAAAEAAMEADYAAAEAAwUACgAAAQADBQAMAAACAAMFAA4AAAIAAwUAEgAAAwADBQAWAAADAAMFAB4AAAQAAwUAJgAABAADBQA2AAEBAAMGAAoAAQEAAwYADAABAgADBgAOAAECAAMGABIAAQMAAwYAFgABAwADBgAeAAEEAAMGACYAAQQAAwYANgABAQADCAAKAAEBAAMIAAwAAQIAAwgADgABAgADCAASAAEDAAMIABYAAQMAAwgAHgABBAADCAAmAAEEAAMIADYAAAD/AAAAAgAAAP8BAAADAAAA/wIAAAQAAAD/AwAABQAAAP8DAAAGAAAA/wMAAAcAAAD/AwAACAAAAP8DAAAJAAAA/wABAAIAAAD/AQEAAwAAAP8CAQAEAAAA/wMBAAUAAAD/AwEABgAAAP8DAQAHAAAA/wMBAAgAAAD/AwEACQAAAP8AAgACAAAA/wECAAMAAAD/AgIABAAAAP8DAgAFAAAA/wMCAAYAAAD/AwIABwAAAP8DAgAIAAAA/wMCAAkAAAD/AAMAAgAAAP8BAwADAAAA/wIDAAQAAAD/AwMABQAAAP8DAwAGAAAA/wMDAAcAAAD/AwMACAAAAP8DAwAJAAAA/wAEAAIAAAD/AQQAAwAAAP8CBAAEAAAA/wMEAAUAAAD/AwQABgAAAP8DBAAHAAAA/wMEAAgAAAD/AwQACQAAAP8ABQACAAAA/wEFAAMAAAD/AgUABAAAAP8DBQAFAAAA/wMFAAYAAAD/AwUABwAAAP8DBQAIAAAA/wMFAAkAAQD/AAYAAgABAP8BBgADAAEA/wIGAAQAAQD/AwYABQABAP8DBgAGAAEA/wMGAAcAAQD/AwYACAABAP8DBgAJAAEA/wAIAAIAAQD/AQgAAwABAP8CCAAEAAEA/wMIAAUAAQD/AwgABgABAP8DCAAHAAEA/wMIAAgAAQD/AwgACQAAAf8DAAAKAAAB/wMAAAwAAAL/AwAADgAAAv8DAAASAAAD/wMAABYAAAP/AwAAHgAABP8DAAAmAAAE/wMAADYAAAH/AwEACgAAAf8DAQAMAAAC/wMBAA4AAAL/AwEAEgAAA/8DAQAWAAAD/wMBAB4AAAT/AwEAJgAABP8DAQA2AAAB/wMCAAoAAAH/AwIADAAAAv8DAgAOAAAC/wMCABIAAAP/AwIAFgAAA/8DAgAeAAAE/wMCACYAAAT/AwIANgAAAf8DAwAKAAAB/wMDAAwAAAL/AwMADgAAAv8DAwASAAAD/wMDABYAAAP/AwMAHgAABP8DAwAmAAAE/wMDADYAAAH/AwQACgAAAf8DBAAMAAAC/wMEAA4AAAL/AwQAEgAAA/8DBAAWAAAD/wMEAB4AAAT/AwQAJgAABP8DBAA2AAAB/wMFAAoAAAH/AwUADAAAAv8DBQAOAAAC/wMFABIAAAP/AwUAFgAAA/8DBQAeAAAE/wMFACYAAAT/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AAYB/wOCAAwABgL/A4IADgAGAv8DggASAAYD/wOCABYABgP/A4IAHgAGBP8DggAmAAYE/wOCADYABwH/A8IACgAHAf8DwgAMAAcC/wPCAA4ABwL/A8IAEgAHA/8DwgAWAAcD/wPCAB4ABwT/A8IAJgAHBP8DwgA2AAgB/wNCAQoACAH/A0IBDAAIAv8DQgEOAAgC/wNCARIACAP/A0IBFgAIA/8DQgEeAAgE/wNCASYACAT/A0IBNgAJAf8DQgIKAAkB/wNCAgwACQL/A0ICDgAJAv8DQgISAAkD/wNCAhYACQP/A0ICHgAJBP8DQgImAAkE/wNCAjYACgH/A0IECgAKAf8DQgQMAAoC/wNCBA4ACgL/A0IEEgAKA/8DQgQWAAoD/wNCBB4ACgT/A0IEJgAKBP8DQgQ2AAwB/wNCCAoADAH/A0IIDAAMAv8DQggOAAwC/wNCCBIADAP/A0IIFgAMA/8DQggeAAwE/wNCCCYADAT/A0IINgAOAf8DQhgKAA4B/wNCGAwADgL/A0IYDgAOAv8DQhgSAA4D/wNCGBYADgP/A0IYHgAOBP8DQhgmAA4E/wNCGDYAGAH/A0JYCgAYAf8DQlgMABgC/wNCWA4AGAL/A0JYEgAYA/8DQlgWABgD/wNCWB4AGAT/A0JYJgAYBP8DQlg2AAYF/wOCAEYABgX/A4IAZgAGBv8DggCGAAYH/wOCAMYABgj/A4IARgEGCf8DggBGAgYK/wOCAEYEBhj/A4IARggHBf8DwgBGAAcF/wPCAGYABwb/A8IAhgAHB/8DwgDGAAcI/wPCAEYBBwn/A8IARgIHCv8DwgBGBAcY/wPCAEYICAX/A0IBRgAIBf8DQgFmAAgG/wNCAYYACAf/A0IBxgAICP8DQgFGAQgJ/wNCAUYCCAr/A0IBRgQIGP8DQgFGCAkF/wNCAkYACQX/A0ICZgAJBv8DQgKGAAkH/wNCAsYACQj/A0ICRgEJCf8DQgJGAgkK/wNCAkYECRj/A0ICRggKBf8DQgRGAAoF/wNCBGYACgb/A0IEhgAKB/8DQgTGAAoI/wNCBEYBCgn/A0IERgIKCv8DQgRGBAoY/wNCBEYIDAX/A0IIRgAMBf8DQghmAAwG/wNCCIYADAf/A0IIxgAMCP8DQghGAQwJ/wNCCEYCDAr/A0IIRgQMGP8DQghGCA4F/wNCGEYADgX/A0IYZgAOBv8DQhiGAA4H/wNCGMYADgj/A0IYRgEOCf8DQhhGAg4K/wNCGEYEDhj/A0IYRggYBf8DQlhGABgF/wNCWGYAGAb/A0JYhgAYB/8DQljGABgI/wNCWEYBGAn/A0JYRgIYCv8DQlhGBBgY/wNCWEYIAIBAwCCgYOAQkFDQMLBw8AiISMgoqGjoGJhY2Di4ePgEhETEJKRk5BSUVNQ0tHT0DIxMzCysbOwcnFzcPLx8/AKCQsIiomLiEpJS0jKycvIKikrKKqpq6hqaWto6unr6BoZGxiamZuYWllbWNrZ29g6OTs4urm7uHp5e3j6+fv4BgUHBIaFh4RGRUdExsXHxCYlJySmpaekZmVnZObl5+QWFRcUlpWXlFZVV1TW1dfUNjU3NLa1t7R2dXd09vX39A4NDwyOjY+MTk1PTM7Nz8wuLS8srq2vrG5tb2zu7e/sHh0fHJ6dn5xeXV9c3t3f3D49Pzy+vb+8fn1/fP79//wABkgG0AdQB9AEWAjYCVgJ2ApYCtgLWAvYCFgM2A1YDdgOYA7gD2AP4AxgEOARYBHgEmAS4BNgE+AQYBTgFWAV4BZgFuAXYBfgFAAAAAAAAdGltZWRvd25saWZlbGVmdGJhY2tjb2RlZGF0YXNob3dvbmx5c2l0ZWNpdHlvcGVuanVzdGxpa2VmcmVld29ya3RleHR5ZWFyb3ZlcmJvZHlsb3ZlZm9ybWJvb2twbGF5bGl2ZWxpbmVoZWxwaG9tZXNpZGVtb3Jld29yZGxvbmd0aGVtdmlld2ZpbmRwYWdlZGF5c2Z1bGxoZWFkdGVybWVhY2hhcmVhZnJvbXRydWVtYXJrYWJsZXVwb25oaWdoZGF0ZWxhbmRuZXdzZXZlbm5leHRjYXNlYm90aHBvc3R1c2VkbWFkZWhhbmRoZXJld2hhdG5hbWVMaW5rYmxvZ3NpemViYXNlaGVsZG1ha2VtYWludXNlcicpICtob2xkZW5kc3dpdGhOZXdzcmVhZHdlcmVzaWdudGFrZWhhdmVnYW1lc2VlbmNhbGxwYXRod2VsbHBsdXNtZW51ZmlsbXBhcnRqb2ludGhpc2xpc3Rnb29kbmVlZHdheXN3ZXN0am9ic21pbmRhbHNvbG9nb3JpY2h1c2VzbGFzdHRlYW1hcm15Zm9vZGtpbmd3aWxsZWFzdHdhcmRiZXN0ZmlyZVBhZ2Vrbm93YXdheS5wbmdtb3ZldGhhbmxvYWRnaXZlc2VsZm5vdGVtdWNoZmVlZG1hbnlyb2NraWNvbm9uY2Vsb29raGlkZWRpZWRIb21lcnVsZWhvc3RhamF4aW5mb2NsdWJsYXdzbGVzc2hhbGZzb21lc3VjaHpvbmUxMDAlb25lc2NhcmVUaW1lcmFjZWJsdWVmb3Vyd2Vla2ZhY2Vob3BlZ2F2ZWhhcmRsb3N0d2hlbnBhcmtrZXB0cGFzc3NoaXByb29tSFRNTHBsYW5UeXBlZG9uZXNhdmVrZWVwZmxhZ2xpbmtzb2xkZml2ZXRvb2tyYXRldG93bmp1bXB0aHVzZGFya2NhcmRmaWxlZmVhcnN0YXlraWxsdGhhdGZhbGxhdXRvZXZlci5jb210YWxrc2hvcHZvdGVkZWVwbW9kZXJlc3R0dXJuYm9ybmJhbmRmZWxscm9zZXVybChza2lucm9sZWNvbWVhY3RzYWdlc21lZXRnb2xkLmpwZ2l0ZW12YXJ5ZmVsdHRoZW5zZW5kZHJvcFZpZXdjb3B5MS4wIjwvYT5zdG9wZWxzZWxpZXN0b3VycGFjay5naWZwYXN0Y3NzP2dyYXltZWFuJmd0O3JpZGVzaG90bGF0ZXNhaWRyb2FkdmFyIGZlZWxqb2hucmlja3BvcnRmYXN0J1VBLWRlYWQ8L2I+cG9vcmJpbGx0eXBlVS5TLndvb2RtdXN0MnB4O0luZm9yYW5rd2lkZXdhbnR3YWxsbGVhZFswXTtwYXVsd2F2ZXN1cmUkKCcjd2FpdG1hc3Nhcm1zZ29lc2dhaW5sYW5ncGFpZCEtLSBsb2NrdW5pdHJvb3R3YWxrZmlybXdpZmV4bWwic29uZ3Rlc3QyMHB4a2luZHJvd3N0b29sZm9udG1haWxzYWZlc3Rhcm1hcHNjb3JlcmFpbmZsb3diYWJ5c3BhbnNheXM0cHg7NnB4O2FydHNmb290cmVhbHdpa2loZWF0c3RlcHRyaXBvcmcvbGFrZXdlYWt0b2xkRm9ybWNhc3RmYW5zYmFua3ZlcnlydW5zanVseXRhc2sxcHg7Z29hbGdyZXdzbG93ZWRnZWlkPSJzZXRzNXB4Oy5qcz80MHB4aWYgKHNvb25zZWF0bm9uZXR1YmV6ZXJvc2VudHJlZWRmYWN0aW50b2dpZnRoYXJtMThweGNhbWVoaWxsYm9sZHpvb212b2lkZWFzeXJpbmdmaWxscGVha2luaXRjb3N0M3B4O2phY2t0YWdzYml0c3JvbGxlZGl0a25ld25lYXI8IS0tZ3Jvd0pTT05kdXR5TmFtZXNhbGV5b3UgbG90c3BhaW5qYXp6Y29sZGV5ZXNmaXNod3d3LnJpc2t0YWJzcHJldjEwcHhyaXNlMjVweEJsdWVkaW5nMzAwLGJhbGxmb3JkZWFybndpbGRib3guZmFpcmxhY2t2ZXJzcGFpcmp1bmV0ZWNoaWYoIXBpY2tldmlsJCgiI3dhcm1sb3JkZG9lc3B1bGwsMDAwaWRlYWRyYXdodWdlc3BvdGZ1bmRidXJuaHJlZmNlbGxrZXlzdGlja2hvdXJsb3NzZnVlbDEycHhzdWl0ZGVhbFJTUyJhZ2VkZ3JleUdFVCJlYXNlYWltc2dpcmxhaWRzOHB4O25hdnlncmlkdGlwcyM5OTl3YXJzbGFkeWNhcnMpOyB9cGhwP2hlbGx0YWxsd2hvbXpoOuUqLw0KIDEwMGhhbGwuCgpBN3B4O3B1c2hjaGF0MHB4O2NyZXcqLzwvaGFzaDc1cHhmbGF0cmFyZSAmJiB0ZWxsY2FtcG9udG9sYWlkbWlzc3NraXB0ZW50ZmluZW1hbGVnZXRzcGxvdDQwMCwNCg0KY29vbGZlZXQucGhwPGJyPmVyaWNtb3N0Z3VpZGJlbGxkZXNjaGFpcm1hdGhhdG9tL2ltZyYjODJsdWNrY2VudDAwMDt0aW55Z29uZWh0bWxzZWxsZHJ1Z0ZSRUVub2Rlbmljaz9pZD1sb3NlbnVsbHZhc3R3aW5kUlNTIHdlYXJyZWx5YmVlbnNhbWVkdWtlbmFzYWNhcGV3aXNoZ3VsZlQyMzpoaXRzc2xvdGdhdGVraWNrYmx1cnRoZXkxNXB4JycpOyk7Ij5tc2lld2luc2JpcmRzb3J0YmV0YXNlZWtUMTg6b3Jkc3RyZWVtYWxsNjBweGZhcm3igJlzYm95c1swXS4nKTsiUE9TVGJlYXJraWRzKTt9fW1hcnl0ZW5kKFVLKXF1YWR6aDrmLXNpei0tLS1wcm9wJyk7DWxpZnRUMTk6dmljZWFuZHlkZWJ0PlJTU3Bvb2xuZWNrYmxvd1QxNjpkb29yZXZhbFQxNzpsZXRzZmFpbG9yYWxwb2xsbm92YWNvbHNnZW5lIOKAlHNvZnRyb21ldGlsbHJvc3M8aDM+cG91cmZhZGVwaW5rPHRyPm1pbmkpfCEobWluZXpoOuhiYXJzaGVhcjAwKTttaWxrIC0tPmlyb25mcmVkZGlza3dlbnRzb2lscHV0cy9qcy9ob2x5VDIyOklTQk5UMjA6YWRhbXNlZXM8aDI+anNvbicsICdjb250VDIxOiBSU1Nsb29wYXNpYW1vb248L3A+c291bExJTkVmb3J0Y2FydFQxNDo8aDE+ODBweCEtLTw5cHg7VDA0Om1pa2U6NDZabmljZWluY2hZb3JrcmljZXpoOuQnKSk7cHVyZW1hZ2VwYXJhdG9uZWJvbmQ6MzdaX29mXyddKTswMDAsemg653Rhbmt5YXJkYm93bGJ1c2g6NTZaSmF2YTMwcHgKfH0KJUMzJTozNFpqZWZmRVhQSWNhc2h2aXNhZ29sZnNub3d6aDrpcXVlci5jc3NzaWNrbWVhdG1pbi5iaW5kZGVsbGhpcmVwaWNzcmVudDozNlpIVFRQLTIwMWZvdG93b2xmRU5EIHhib3g6NTRaQk9EWWRpY2s7Cn0KZXhpdDozNVp2YXJzYmVhdCd9KTtkaWV0OTk5O2FubmV9fTwvW2ldLkxhbmdrbcKyd2lyZXRveXNhZGRzc2VhbGFsZXg7Cgl9ZWNob25pbmUub3JnMDA1KXRvbnlqZXdzc2FuZGxlZ3Nyb29mMDAwKSAyMDB3aW5lZ2VhcmRvZ3Nib290Z2FyeWN1dHN0eWxldGVtcHRpb24ueG1sY29ja2dhbmckKCcuNTBweFBoLkRtaXNjYWxhbmxvYW5kZXNrbWlsZXJ5YW51bml4ZGlzYyk7fQpkdXN0Y2xpcCkuCgo3MHB4LTIwMERWRHM3XT48dGFwZWRlbW9pKyspd2FnZWV1cm9waGlsb3B0c2hvbGVGQVFzYXNpbi0yNlRsYWJzcGV0c1VSTCBidWxrY29vazt9DQpIRUFEWzBdKWFiYnJqdWFuKDE5OGxlc2h0d2luPC9pPnNvbnlndXlzZnVja3BpcGV8LQohMDAyKW5kb3dbMV07W107CkxvZyBzYWx0DQoJCWJhbmd0cmltYmF0aCl7DQowMHB4Cn0pO2tvOuxmZWVzYWQ+DXM6Ly8gW107dG9sbHBsdWcoKXsKew0KIC5qcycyMDBwZHVhbGJvYXQuSlBHKTsKfXF1b3QpOwoKJyk7Cg0KfQ0yMDE0MjAxNTIwMTYyMDE3MjAxODIwMTkyMDIwMjAyMTIwMjIyMDIzMjAyNDIwMjUyMDI2MjAyNzIwMjgyMDI5MjAzMDIwMzEyMDMyMjAzMzIwMzQyMDM1MjAzNjIwMzcyMDEzMjAxMjIwMTEyMDEwMjAwOTIwMDgyMDA3MjAwNjIwMDUyMDA0MjAwMzIwMDIyMDAxMjAwMDE5OTkxOTk4MTk5NzE5OTYxOTk1MTk5NDE5OTMxOTkyMTk5MTE5OTAxOTg5MTk4ODE5ODcxOTg2MTk4NTE5ODQxOTgzMTk4MjE5ODExOTgwMTk3OTE5NzgxOTc3MTk3NjE5NzUxOTc0MTk3MzE5NzIxOTcxMTk3MDE5NjkxOTY4MTk2NzE5NjYxOTY1MTk2NDE5NjMxOTYyMTk2MTE5NjAxOTU5MTk1ODE5NTcxOTU2MTk1NTE5NTQxOTUzMTk1MjE5NTExOTUwMTAwMDEwMjQxMzk0MDAwMDk5OTljb21vbcOhc2VzdGVlc3RhcGVyb3RvZG9oYWNlY2FkYWHDsW9iaWVuZMOtYWFzw612aWRhY2Fzb290cm9mb3Jvc29sb290cmFjdWFsZGlqb3NpZG9ncmFudGlwb3RlbWFkZWJlYWxnb3F1w6llc3RvbmFkYXRyZXNwb2NvY2FzYWJham90b2Rhc2lub2FndWFwdWVzdW5vc2FudGVkaWNlbHVpc2VsbGFtYXlvem9uYWFtb3JwaXNvb2JyYWNsaWNlbGxvZGlvc2hvcmFjYXNp0LfQsNC90LDQvtC80YDQsNGA0YPRgtCw0L3QtdC/0L7QvtGC0LjQt9C90L7QtNC+0YLQvtC20LXQvtC90LjRhdCd0LDQtdC10LHRi9C80YvQktGL0YHQvtCy0YvQstC+0J3QvtC+0LHQn9C+0LvQuNC90LjQoNCk0J3QtdCc0YvRgtGL0J7QvdC40LzQtNCw0JfQsNCU0LDQndGD0J7QsdGC0LXQmNC30LXQudC90YPQvNC80KLRi9GD0LbZgdmK2KPZhtmF2KfZhdi52YPZhNij2YjYsdiv2YrYp9mB2YnZh9mI2YTZhdmE2YPYp9mI2YTZh9io2LPYp9mE2KXZhtmH2YrYo9mK2YLYr9mH2YTYq9mF2KjZh9mE2YjZhNmK2KjZhNin2YrYqNmD2LTZitin2YXYo9mF2YbYqtio2YrZhNmG2K3YqNmH2YXZhdi02YjYtGZpcnN0dmlkZW9saWdodHdvcmxkbWVkaWF3aGl0ZWNsb3NlYmxhY2tyaWdodHNtYWxsYm9va3NwbGFjZW11c2ljZmllbGRvcmRlcnBvaW50dmFsdWVsZXZlbHRhYmxlYm9hcmRob3VzZWdyb3Vwd29ya3N5ZWFyc3N0YXRldG9kYXl3YXRlcnN0YXJ0c3R5bGVkZWF0aHBvd2VycGhvbmVuaWdodGVycm9yaW5wdXRhYm91dHRlcm1zdGl0bGV0b29sc2V2ZW50bG9jYWx0aW1lc2xhcmdld29yZHNnYW1lc3Nob3J0c3BhY2Vmb2N1c2NsZWFybW9kZWxibG9ja2d1aWRlcmFkaW9zaGFyZXdvbWVuYWdhaW5tb25leWltYWdlbmFtZXN5b3VuZ2xpbmVzbGF0ZXJjb2xvcmdyZWVuZnJvbnQmYW1wO3dhdGNoZm9yY2VwcmljZXJ1bGVzYmVnaW5hZnRlcnZpc2l0aXNzdWVhcmVhc2JlbG93aW5kZXh0b3RhbGhvdXJzbGFiZWxwcmludHByZXNzYnVpbHRsaW5rc3NwZWVkc3R1ZHl0cmFkZWZvdW5kc2Vuc2V1bmRlcnNob3duZm9ybXNyYW5nZWFkZGVkc3RpbGxtb3ZlZHRha2VuYWJvdmVmbGFzaGZpeGVkb2Z0ZW5vdGhlcnZpZXdzY2hlY2tsZWdhbHJpdmVyaXRlbXNxdWlja3NoYXBlaHVtYW5leGlzdGdvaW5nbW92aWV0aGlyZGJhc2ljcGVhY2VzdGFnZXdpZHRobG9naW5pZGVhc3dyb3RlcGFnZXN1c2Vyc2RyaXZlc3RvcmVicmVha3NvdXRodm9pY2VzaXRlc21vbnRod2hlcmVidWlsZHdoaWNoZWFydGhmb3J1bXRocmVlc3BvcnRwYXJ0eUNsaWNrbG93ZXJsaXZlc2NsYXNzbGF5ZXJlbnRyeXN0b3J5dXNhZ2Vzb3VuZGNvdXJ0eW91ciBiaXJ0aHBvcHVwdHlwZXNhcHBseUltYWdlYmVpbmd1cHBlcm5vdGVzZXZlcnlzaG93c21lYW5zZXh0cmFtYXRjaHRyYWNra25vd25lYXJseWJlZ2Fuc3VwZXJwYXBlcm5vcnRobGVhcm5naXZlbm5hbWVkZW5kZWRUZXJtc3BhcnRzR3JvdXBicmFuZHVzaW5nd29tYW5mYWxzZXJlYWR5YXVkaW90YWtlc3doaWxlLmNvbS9saXZlZGNhc2VzZGFpbHljaGlsZGdyZWF0anVkZ2V0aG9zZXVuaXRzbmV2ZXJicm9hZGNvYXN0Y292ZXJhcHBsZWZpbGVzY3ljbGVzY2VuZXBsYW5zY2xpY2t3cml0ZXF1ZWVucGllY2VlbWFpbGZyYW1lb2xkZXJwaG90b2xpbWl0Y2FjaGVjaXZpbHNjYWxlZW50ZXJ0aGVtZXRoZXJldG91Y2hib3VuZHJveWFsYXNrZWR3aG9sZXNpbmNlc3RvY2sgbmFtZWZhaXRoaGVhcnRlbXB0eW9mZmVyc2NvcGVvd25lZG1pZ2h0YWxidW10aGlua2Jsb29kYXJyYXltYWpvcnRydXN0Y2Fub251bmlvbmNvdW50dmFsaWRzdG9uZVN0eWxlTG9naW5oYXBweW9jY3VybGVmdDpmcmVzaHF1aXRlZmlsbXNncmFkZW5lZWRzdXJiYW5maWdodGJhc2lzaG92ZXJhdXRvO3JvdXRlLmh0bWxtaXhlZGZpbmFsWW91ciBzbGlkZXRvcGljYnJvd25hbG9uZWRyYXduc3BsaXRyZWFjaFJpZ2h0ZGF0ZXNtYXJjaHF1b3RlZ29vZHNMaW5rc2RvdWJ0YXN5bmN0aHVtYmFsbG93Y2hpZWZ5b3V0aG5vdmVsMTBweDtzZXJ2ZXVudGlsaGFuZHNDaGVja1NwYWNlcXVlcnlqYW1lc2VxdWFsdHdpY2UwLDAwMFN0YXJ0cGFuZWxzb25nc3JvdW5kZWlnaHRzaGlmdHdvcnRocG9zdHNsZWFkc3dlZWtzYXZvaWR0aGVzZW1pbGVzcGxhbmVzbWFydGFscGhhcGxhbnRtYXJrc3JhdGVzcGxheXNjbGFpbXNhbGVzdGV4dHNzdGFyc3dyb25nPC9oMz50aGluZy5vcmcvbXVsdGloZWFyZFBvd2Vyc3RhbmR0b2tlbnNvbGlkKHRoaXNicmluZ3NoaXBzc3RhZmZ0cmllZGNhbGxzZnVsbHlmYWN0c2FnZW50VGhpcyAvLy0tPmFkbWluZWd5cHRFdmVudDE1cHg7RW1haWx0cnVlImNyb3Nzc3BlbnRibG9nc2JveCI+bm90ZWRsZWF2ZWNoaW5hc2l6ZXNndWVzdDwvaDQ+cm9ib3RoZWF2eXRydWUsc2V2ZW5ncmFuZGNyaW1lc2lnbnNhd2FyZWRhbmNlcGhhc2U+PCEtLWVuX1VTJiMzOTsyMDBweF9uYW1lbGF0aW5lbmpveWFqYXguYXRpb25zbWl0aFUuUy4gaG9sZHNwZXRlcmluZGlhbmF2Ij5jaGFpbnNjb3JlY29tZXNkb2luZ3ByaW9yU2hhcmUxOTkwc3JvbWFubGlzdHNqYXBhbmZhbGxzdHJpYWxvd25lcmFncmVlPC9oMj5hYnVzZWFsZXJ0b3BlcmEiLS8vV2NhcmRzaGlsbHN0ZWFtc1Bob3RvdHJ1dGhjbGVhbi5waHA/c2FpbnRtZXRhbGxvdWlzbWVhbnRwcm9vZmJyaWVmcm93Ij5nZW5yZXRydWNrbG9va3NWYWx1ZUZyYW1lLm5ldC8tLT4KPHRyeSB7CnZhciBtYWtlc2Nvc3RzcGxhaW5hZHVsdHF1ZXN0dHJhaW5sYWJvcmhlbHBzY2F1c2VtYWdpY21vdG9ydGhlaXIyNTBweGxlYXN0c3RlcHNDb3VudGNvdWxkZ2xhc3NzaWRlc2Z1bmRzaG90ZWxhd2FyZG1vdXRobW92ZXNwYXJpc2dpdmVzZHV0Y2h0ZXhhc2ZydWl0bnVsbCx8fFtdO3RvcCI+CjwhLS1QT1NUIm9jZWFuPGJyLz5mbG9vcnNwZWFrZGVwdGggc2l6ZWJhbmtzY2F0Y2hjaGFydDIwcHg7YWxpZ25kZWFsc3dvdWxkNTBweDt1cmw9InBhcmtzbW91c2VNb3N0IC4uLjwvYW1vbmdicmFpbmJvZHkgbm9uZTtiYXNlZGNhcnJ5ZHJhZnRyZWZlcnBhZ2VfaG9tZS5tZXRlcmRlbGF5ZHJlYW1wcm92ZWpvaW50PC90cj5kcnVnczwhLS0gYXByaWxpZGVhbGFsbGVuZXhhY3Rmb3J0aGNvZGVzbG9naWNWaWV3IHNlZW1zYmxhbmtwb3J0cyAoMjAwc2F2ZWRfbGlua2dvYWxzZ3JhbnRncmVla2hvbWVzcmluZ3NyYXRlZDMwcHg7d2hvc2VwYXJzZSgpOyIgQmxvY2tsaW51eGpvbmVzcGl4ZWwnKTsiPik7aWYoLWxlZnRkYXZpZGhvcnNlRm9jdXNyYWlzZWJveGVzVHJhY2tlbWVudDwvZW0+YmFyIj4uc3JjPXRvd2VyYWx0PSJjYWJsZWhlbnJ5MjRweDtzZXR1cGl0YWx5c2hhcnBtaW5vcnRhc3Rld2FudHN0aGlzLnJlc2V0d2hlZWxnaXJscy9jc3MvMTAwJTtjbHVic3N0dWZmYmlibGV2b3RlcyAxMDAwa29yZWF9KTsNCmJhbmRzcXVldWU9IHt9OzgwcHg7Y2tpbmd7DQoJCWFoZWFkY2xvY2tpcmlzaGxpa2UgcmF0aW9zdGF0c0Zvcm0ieWFob28pWzBdO0Fib3V0ZmluZHM8L2gxPmRlYnVndGFza3NVUkwgPWNlbGxzfSkoKTsxMnB4O3ByaW1ldGVsbHN0dXJuczB4NjAwLmpwZyJzcGFpbmJlYWNodGF4ZXNtaWNyb2FuZ2VsLS0+PC9naWZ0c3N0ZXZlLWxpbmtib2R5Ln0pOwoJbW91bnQgKDE5OUZBUTwvcm9nZXJmcmFua0NsYXNzMjhweDtmZWVkczxoMT48c2NvdHR0ZXN0czIycHg7ZHJpbmspIHx8IGxld2lzc2hhbGwjMDM5OyBmb3IgbG92ZWR3YXN0ZTAwcHg7amE644JzaW1vbjxmb250cmVwbHltZWV0c3VudGVyY2hlYXB0aWdodEJyYW5kKSAhPSBkcmVzc2NsaXBzcm9vbXNvbmtleW1vYmlsbWFpbi5OYW1lIHBsYXRlZnVubnl0cmVlc2NvbS8iMS5qcGd3bW9kZXBhcmFtU1RBUlRsZWZ0IGlkZGVuLCAyMDEpOwp9CmZvcm0udmlydXNjaGFpcnRyYW5zd29yc3RQYWdlc2l0aW9ucGF0Y2g8IS0tCm8tY2FjZmlybXN0b3VycywwMDAgYXNpYW5pKyspe2Fkb2JlJylbMF1pZD0xMGJvdGg7bWVudSAuMi5taS5wbmcia2V2aW5jb2FjaENoaWxkYnJ1Y2UyLmpwZ1VSTCkrLmpwZ3xzdWl0ZXNsaWNlaGFycnkxMjAiIHN3ZWV0dHI+DQpuYW1lPWRpZWdvcGFnZSBzd2lzcy0tPgoKI2ZmZjsiPkxvZy5jb20idHJlYXRzaGVldCkgJiYgMTRweDtzbGVlcG50ZW50ZmlsZWRqYTrjg2lkPSJjTmFtZSJ3b3JzZXNob3RzLWJveC1kZWx0YQombHQ7YmVhcnM6NDhaPGRhdGEtcnVyYWw8L2E+IHNwZW5kYmFrZXJzaG9wcz0gIiI7cGhwIj5jdGlvbjEzcHg7YnJpYW5oZWxsb3NpemU9bz0lMkYgam9pbm1heWJlPGltZyBpbWciPiwgZmpzaW1nIiAiKVswXU1Ub3BCVHlwZSJuZXdseURhbnNrY3plY2h0cmFpbGtub3dzPC9oNT5mYXEiPnpoLWNuMTApOwotMSIpO3R5cGU9Ymx1ZXN0cnVseWRhdmlzLmpzJzs+DQo8IXN0ZWVsIHlvdSBoMj4NCmZvcm0gamVzdXMxMDAlIG1lbnUuDQoJDQp3YWxlc3Jpc2tzdW1lbnRkZGluZ2ItbGlrdGVhY2hnaWYiIHZlZ2FzZGFuc2tlZXN0aXNocWlwc3VvbWlzb2JyZWRlc2RlZW50cmV0b2Rvc3B1ZWRlYcOxb3Nlc3TDoXRpZW5laGFzdGFvdHJvc3BhcnRlZG9uZGVudWV2b2hhY2VyZm9ybWFtaXNtb21lam9ybXVuZG9hcXXDrWTDrWFzc8OzbG9heXVkYWZlY2hhdG9kYXN0YW50b21lbm9zZGF0b3NvdHJhc3NpdGlvbXVjaG9haG9yYWx1Z2FybWF5b3Jlc3Rvc2hvcmFzdGVuZXJhbnRlc2ZvdG9zZXN0YXNwYcOtc251ZXZhc2FsdWRmb3Jvc21lZGlvcXVpZW5tZXNlc3BvZGVyY2hpbGVzZXLDoXZlY2VzZGVjaXJqb3PDqWVzdGFydmVudGFncnVwb2hlY2hvZWxsb3N0ZW5nb2FtaWdvY29zYXNuaXZlbGdlbnRlbWlzbWFhaXJlc2p1bGlvdGVtYXNoYWNpYWZhdm9yanVuaW9saWJyZXB1bnRvYnVlbm9hdXRvcmFicmlsYnVlbmF0ZXh0b21hcnpvc2FiZXJsaXN0YWx1ZWdvY8OzbW9lbmVyb2p1ZWdvcGVyw7poYWJlcmVzdG95bnVuY2FtdWplcnZhbG9yZnVlcmFsaWJyb2d1c3RhaWd1YWx2b3Rvc2Nhc29zZ3XDrWFwdWVkb3NvbW9zYXZpc291c3RlZGRlYmVubm9jaGVidXNjYWZhbHRhZXVyb3NzZXJpZWRpY2hvY3Vyc29jbGF2ZWNhc2FzbGXDs25wbGF6b2xhcmdvb2JyYXN2aXN0YWFwb3lvanVudG90cmF0YXZpc3RvY3JlYXJjYW1wb2hlbW9zY2luY29jYXJnb3Bpc29zb3JkZW5oYWNlbsOhcmVhZGlzY29wZWRyb2NlcmNhcHVlZGFwYXBlbG1lbm9yw7p0aWxjbGFyb2pvcmdlY2FsbGVwb25lcnRhcmRlbmFkaWVtYXJjYXNpZ3VlZWxsYXNzaWdsb2NvY2hlbW90b3NtYWRyZWNsYXNlcmVzdG9uacOxb3F1ZWRhcGFzYXJiYW5jb2hpam9zdmlhamVwYWJsb8Opc3RldmllbmVyZWlub2RlamFyZm9uZG9jYW5hbG5vcnRlbGV0cmFjYXVzYXRvbWFybWFub3NsdW5lc2F1dG9zdmlsbGF2ZW5kb3Blc2FydGlwb3N0ZW5nYW1hcmNvbGxldmFwYWRyZXVuaWRvdmFtb3N6b25hc2FtYm9zYmFuZGFtYXJpYWFidXNvbXVjaGFzdWJpcnJpb2phdml2aXJncmFkb2NoaWNhYWxsw61qb3ZlbmRpY2hhZXN0YW50YWxlc3NhbGlyc3VlbG9wZXNvc2ZpbmVzbGxhbWFidXNjb8Opc3RhbGxlZ2FuZWdyb3BsYXphaHVtb3JwYWdhcmp1bnRhZG9ibGVpc2xhc2JvbHNhYmHDsW9oYWJsYWx1Y2hhw4FyZWFkaWNlbmp1Z2Fybm90YXN2YWxsZWFsbMOhY2FyZ2Fkb2xvcmFiYWpvZXN0w6lndXN0b21lbnRlbWFyaW9maXJtYWNvc3RvZmljaGFwbGF0YWhvZ2FyYXJ0ZXNsZXllc2FxdWVsbXVzZW9iYXNlc3BvY29zbWl0YWRjaWVsb2NoaWNvbWllZG9nYW5hcnNhbnRvZXRhcGFkZWJlc3BsYXlhcmVkZXNzaWV0ZWNvcnRlY29yZWFkdWRhc2Rlc2Vvdmllam9kZXNlYWFndWFzJnF1b3Q7ZG9tYWluY29tbW9uc3RhdHVzZXZlbnRzbWFzdGVyc3lzdGVtYWN0aW9uYmFubmVycmVtb3Zlc2Nyb2xsdXBkYXRlZ2xvYmFsbWVkaXVtZmlsdGVybnVtYmVyY2hhbmdlcmVzdWx0cHVibGljc2NyZWVuY2hvb3Nlbm9ybWFsdHJhdmVsaXNzdWVzc291cmNldGFyZ2V0c3ByaW5nbW9kdWxlbW9iaWxlc3dpdGNocGhvdG9zYm9yZGVycmVnaW9uaXRzZWxmc29jaWFsYWN0aXZlY29sdW1ucmVjb3JkZm9sbG93dGl0bGU+ZWl0aGVybGVuZ3RoZmFtaWx5ZnJpZW5kbGF5b3V0YXV0aG9yY3JlYXRlcmV2aWV3c3VtbWVyc2VydmVycGxheWVkcGxheWVyZXhwYW5kcG9saWN5Zm9ybWF0ZG91YmxlcG9pbnRzc2VyaWVzcGVyc29ubGl2aW5nZGVzaWdubW9udGhzZm9yY2VzdW5pcXVld2VpZ2h0cGVvcGxlZW5lcmd5bmF0dXJlc2VhcmNoZmlndXJlaGF2aW5nY3VzdG9tb2Zmc2V0bGV0dGVyd2luZG93c3VibWl0cmVuZGVyZ3JvdXBzdXBsb2FkaGVhbHRobWV0aG9kdmlkZW9zc2Nob29sZnV0dXJlc2hhZG93ZGViYXRldmFsdWVzT2JqZWN0b3RoZXJzcmlnaHRzbGVhZ3VlY2hyb21lc2ltcGxlbm90aWNlc2hhcmVkZW5kaW5nc2Vhc29ucmVwb3J0b25saW5lc3F1YXJlYnV0dG9uaW1hZ2VzZW5hYmxlbW92aW5nbGF0ZXN0d2ludGVyRnJhbmNlcGVyaW9kc3Ryb25ncmVwZWF0TG9uZG9uZGV0YWlsZm9ybWVkZGVtYW5kc2VjdXJlcGFzc2VkdG9nZ2xlcGxhY2VzZGV2aWNlc3RhdGljY2l0aWVzc3RyZWFteWVsbG93YXR0YWNrc3RyZWV0ZmxpZ2h0aGlkZGVuaW5mbyI+b3BlbmVkdXNlZnVsdmFsbGV5Y2F1c2VzbGVhZGVyc2VjcmV0c2Vjb25kZGFtYWdlc3BvcnRzZXhjZXB0cmF0aW5nc2lnbmVkdGhpbmdzZWZmZWN0ZmllbGRzc3RhdGVzb2ZmaWNldmlzdWFsZWRpdG9ydm9sdW1lUmVwb3J0bXVzZXVtbW92aWVzcGFyZW50YWNjZXNzbW9zdGx5bW90aGVyIiBpZD0ibWFya2V0Z3JvdW5kY2hhbmNlc3VydmV5YmVmb3Jlc3ltYm9sbW9tZW50c3BlZWNobW90aW9uaW5zaWRlbWF0dGVyQ2VudGVyb2JqZWN0ZXhpc3RzbWlkZGxlRXVyb3BlZ3Jvd3RobGVnYWN5bWFubmVyZW5vdWdoY2FyZWVyYW5zd2Vyb3JpZ2lucG9ydGFsY2xpZW50c2VsZWN0cmFuZG9tY2xvc2VkdG9waWNzY29taW5nZmF0aGVyb3B0aW9uc2ltcGx5cmFpc2VkZXNjYXBlY2hvc2VuY2h1cmNoZGVmaW5lcmVhc29uY29ybmVyb3V0cHV0bWVtb3J5aWZyYW1lcG9saWNlbW9kZWxzTnVtYmVyZHVyaW5nb2ZmZXJzc3R5bGVza2lsbGVkbGlzdGVkY2FsbGVkc2lsdmVybWFyZ2luZGVsZXRlYmV0dGVyYnJvd3NlbGltaXRzR2xvYmFsc2luZ2xld2lkZ2V0Y2VudGVyYnVkZ2V0bm93cmFwY3JlZGl0Y2xhaW1zZW5naW5lc2FmZXR5Y2hvaWNlc3Bpcml0LXN0eWxlc3ByZWFkbWFraW5nbmVlZGVkcnVzc2lhcGxlYXNlZXh0ZW50U2NyaXB0YnJva2VuYWxsb3dzY2hhcmdlZGl2aWRlZmFjdG9ybWVtYmVyLWJhc2VkdGhlb3J5Y29uZmlnYXJvdW5kd29ya2VkaGVscGVkQ2h1cmNoaW1wYWN0c2hvdWxkYWx3YXlzbG9nbyIgYm90dG9tbGlzdCI+KXt2YXIgcHJlZml4b3JhbmdlSGVhZGVyLnB1c2goY291cGxlZ2FyZGVuYnJpZGdlbGF1bmNoUmV2aWV3dGFraW5ndmlzaW9ubGl0dGxlZGF0aW5nQnV0dG9uYmVhdXR5dGhlbWVzZm9yZ290U2VhcmNoYW5jaG9yYWxtb3N0bG9hZGVkQ2hhbmdlcmV0dXJuc3RyaW5ncmVsb2FkTW9iaWxlaW5jb21lc3VwcGx5U291cmNlb3JkZXJzdmlld2VkJm5ic3A7Y291cnNlQWJvdXQgaXNsYW5kPGh0bWwgY29va2llbmFtZT0iYW1hem9ubW9kZXJuYWR2aWNlaW48L2E+OiBUaGUgZGlhbG9naG91c2VzQkVHSU4gTWV4aWNvc3RhcnRzY2VudHJlaGVpZ2h0YWRkaW5nSXNsYW5kYXNzZXRzRW1waXJlU2Nob29sZWZmb3J0ZGlyZWN0bmVhcmx5bWFudWFsU2VsZWN0LgoKT25lam9pbmVkbWVudSI+UGhpbGlwYXdhcmRzaGFuZGxlaW1wb3J0T2ZmaWNlcmVnYXJkc2tpbGxzbmF0aW9uU3BvcnRzZGVncmVld2Vla2x5IChlLmcuYmVoaW5kZG9jdG9ybG9nZ2VkdW5pdGVkPC9iPjwvYmVnaW5zcGxhbnRzYXNzaXN0YXJ0aXN0aXNzdWVkMzAwcHh8Y2FuYWRhYWdlbmN5c2NoZW1lcmVtYWluQnJhemlsc2FtcGxlbG9nbyI+YmV5b25kLXNjYWxlYWNjZXB0c2VydmVkbWFyaW5lRm9vdGVyY2FtZXJhPC9oMT4KX2Zvcm0ibGVhdmVzc3RyZXNzIiAvPg0KLmdpZiIgb25sb2FkbG9hZGVyT3hmb3Jkc2lzdGVyc3Vydml2bGlzdGVuZmVtYWxlRGVzaWduc2l6ZT0iYXBwZWFsdGV4dCI+bGV2ZWxzdGhhbmtzaGlnaGVyZm9yY2VkYW5pbWFsYW55b25lQWZyaWNhYWdyZWVkcmVjZW50UGVvcGxlPGJyIC8+d29uZGVycHJpY2VzdHVybmVkfHwge307bWFpbiI+aW5saW5lc3VuZGF5d3JhcCI+ZmFpbGVkY2Vuc3VzbWludXRlYmVhY29ucXVvdGVzMTUwcHh8ZXN0YXRlcmVtb3RlZW1haWwibGlua2VkcmlnaHQ7c2lnbmFsZm9ybWFsMS5odG1sc2lnbnVwcHJpbmNlZmxvYXQ6LnBuZyIgZm9ydW0uQWNjZXNzcGFwZXJzc291bmRzZXh0ZW5kSGVpZ2h0c2xpZGVyVVRGLTgiJmFtcDsgQmVmb3JlLiBXaXRoc3R1ZGlvb3duZXJzbWFuYWdlcHJvZml0alF1ZXJ5YW5udWFscGFyYW1zYm91Z2h0ZmFtb3VzZ29vZ2xlbG9uZ2VyaSsrKSB7aXNyYWVsc2F5aW5nZGVjaWRlaG9tZSI+aGVhZGVyZW5zdXJlYnJhbmNocGllY2VzYmxvY2s7c3RhdGVkdG9wIj48cmFjaW5ncmVzaXplLS0mZ3Q7cGFjaXR5c2V4dWFsYnVyZWF1LmpwZyIgMTAsMDAwb2J0YWludGl0bGVzYW1vdW50LCBJbmMuY29tZWR5bWVudSIgbHlyaWNzdG9kYXkuaW5kZWVkY291bnR5X2xvZ28uRmFtaWx5bG9va2VkTWFya2V0bHNlIGlmUGxheWVydHVya2V5KTt2YXIgZm9yZXN0Z2l2aW5nZXJyb3JzRG9tYWlufWVsc2V7aW5zZXJ0QmxvZzwvZm9vdGVybG9naW4uZmFzdGVyYWdlbnRzPGJvZHkgMTBweCAwcHJhZ21hZnJpZGF5anVuaW9yZG9sbGFycGxhY2VkY292ZXJzcGx1Z2luNSwwMDAgcGFnZSI+Ym9zdG9uLnRlc3QoYXZhdGFydGVzdGVkX2NvdW50Zm9ydW1zc2NoZW1haW5kZXgsZmlsbGVkc2hhcmVzcmVhZGVyYWxlcnQoYXBwZWFyU3VibWl0bGluZSI+Ym9keSI+CiogVGhlVGhvdWdoc2VlaW5namVyc2V5TmV3czwvdmVyaWZ5ZXhwZXJ0aW5qdXJ5d2lkdGg9Q29va2llU1RBUlQgYWNyb3NzX2ltYWdldGhyZWFkbmF0aXZlcG9ja2V0Ym94Ij4KU3lzdGVtIERhdmlkY2FuY2VydGFibGVzcHJvdmVkQXByaWwgcmVhbGx5ZHJpdmVyaXRlbSI+bW9yZSI+Ym9hcmRzY29sb3JzY2FtcHVzZmlyc3QgfHwgW107bWVkaWEuZ3VpdGFyZmluaXNod2lkdGg6c2hvd2VkT3RoZXIgLnBocCIgYXNzdW1lbGF5ZXJzd2lsc29uc3RvcmVzcmVsaWVmc3dlZGVuQ3VzdG9tZWFzaWx5IHlvdXIgU3RyaW5nCgpXaGlsdGF5bG9yY2xlYXI6cmVzb3J0ZnJlbmNodGhvdWdoIikgKyAiPGJvZHk+YnV5aW5nYnJhbmRzTWVtYmVybmFtZSI+b3BwaW5nc2VjdG9yNXB4OyI+dnNwYWNlcG9zdGVybWFqb3IgY29mZmVlbWFydGlubWF0dXJlaGFwcGVuPC9uYXY+a2Fuc2FzbGluayI+SW1hZ2VzPWZhbHNld2hpbGUgaHNwYWNlMCZhbXA7IAoKSW4gIHBvd2VyUG9sc2tpLWNvbG9yam9yZGFuQm90dG9tU3RhcnQgLWNvdW50Mi5odG1sbmV3cyI+MDEuanBnT25saW5lLXJpZ2h0bWlsbGVyc2VuaW9ySVNCTiAwMCwwMDAgZ3VpZGVzdmFsdWUpZWN0aW9ucmVwYWlyLnhtbCIgIHJpZ2h0cy5odG1sLWJsb2NrcmVnRXhwOmhvdmVyd2l0aGludmlyZ2lucGhvbmVzPC90cj4NdXNpbmcgCgl2YXIgPicpOwoJPC90ZD4KPC90cj4KYmFoYXNhYnJhc2lsZ2FsZWdvbWFneWFycG9sc2tpc3Jwc2tp2LHYr9mI5Lit5paH566A5L2T57mB6auU5L+h5oGv5Lit5Zu95oiR5Lus5LiA5Liq5YWs5Y+4566h55CG6K665Z2b5Y+v5Lul5pyN5Yqh5pe26Ze05Liq5Lq65Lqn5ZOB6Ieq5bex5LyB5Lia5p+l55yL5bel5L2c6IGU57O75rKh5pyJ572R56uZ5omA5pyJ6K+E6K665Lit5b+D5paH56ug55So5oi36aaW6aG15L2c6ICF5oqA5pyv6Zeu6aKY55u45YWz5LiL6L295pCc57Si5L2/55So6L2v5Lu25Zyo57q/5Li76aKY6LWE5paZ6KeG6aKR5Zue5aSN5rOo5YaM572R57uc5pS26JeP5YaF5a655o6o6I2Q5biC5Zy65raI5oGv56m66Ze05Y+R5biD5LuA5LmI5aW95Y+L55Sf5rS75Zu+54mH5Y+R5bGV5aaC5p6c5omL5py65paw6Ze75pyA5paw5pa55byP5YyX5Lqs5o+Q5L6b5YWz5LqO5pu05aSa6L+Z5Liq57O757uf55+l6YGT5ri45oiP5bm/5ZGK5YW25LuW5Y+R6KGo5a6J5YWo56ys5LiA5Lya5ZGY6L+b6KGM54K55Ye754mI5p2D55S15a2Q5LiW55WM6K6+6K6h5YWN6LS55pWZ6IKy5Yqg5YWl5rS75Yqo5LuW5Lus5ZWG5ZOB5Y2a5a6i546w5Zyo5LiK5rW35aaC5L2V5bey57uP55WZ6KiA6K+m57uG56S+5Yy655m75b2V5pys56uZ6ZyA6KaB5Lu35qC85pSv5oyB5Zu96ZmF6ZO+5o6l5Zu95a625bu66K6+5pyL5Y+L6ZiF6K+75rOV5b6L5L2N572u57uP5rWO6YCJ5oup6L+Z5qC35b2T5YmN5YiG57G75o6S6KGM5Zug5Li65Lqk5piT5pyA5ZCO6Z+z5LmQ5LiN6IO96YCa6L+H6KGM5Lia56eR5oqA5Y+v6IO96K6+5aSH5ZCI5L2c5aSn5a6256S+5Lya56CU56m25LiT5Lia5YWo6YOo6aG555uu6L+Z6YeM6L+Y5piv5byA5aeL5oOF5Ya155S16ISR5paH5Lu25ZOB54mM5biu5Yqp5paH5YyW6LWE5rqQ5aSn5a2m5a2m5Lmg5Zyw5Z2A5rWP6KeI5oqV6LWE5bel56iL6KaB5rGC5oCO5LmI5pe25YCZ5Yqf6IO95Li76KaB55uu5YmN6LWE6K6v5Z+O5biC5pa55rOV55S15b2x5oub6IGY5aOw5piO5Lu75L2V5YGl5bq35pWw5o2u576O5Zu95rG96L2m5LuL57uN5L2G5piv5Lqk5rWB55Sf5Lqn5omA5Lul55S16K+d5pi+56S65LiA5Lqb5Y2V5L2N5Lq65ZGY5YiG5p6Q5Zyw5Zu+5peF5ri45bel5YW35a2m55Sf57O75YiX572R5Y+L5biW5a2Q5a+G56CB6aKR6YGT5o6n5Yi25Zyw5Yy65Z+65pys5YWo5Zu9572R5LiK6YeN6KaB56ys5LqM5Zac5qyi6L+b5YWl5Y+L5oOF6L+Z5Lqb6ICD6K+V5Y+R546w5Z+56K6t5Lul5LiK5pS/5bqc5oiQ5Li6546v5aKD6aaZ5riv5ZCM5pe25aix5LmQ5Y+R6YCB5LiA5a6a5byA5Y+R5L2c5ZOB5qCH5YeG5qyi6L+O6Kej5Yaz5Zyw5pa55LiA5LiL5Lul5Y+K6LSj5Lu75oiW6ICF5a6i5oi35Luj6KGo56ev5YiG5aWz5Lq65pWw56CB6ZSA5ZSu5Ye6546w56a757q/5bqU55So5YiX6KGo5LiN5ZCM57yW6L6R57uf6K6h5p+l6K+i5LiN6KaB5pyJ5YWz5py65p6E5b6I5aSa5pKt5pS+57uE57uH5pS/562W55u05o6l6IO95Yqb5p2l5rqQ5pmC6ZaT55yL5Yiw54Ot6Zeo5YWz6ZSu5LiT5Yy66Z2e5bi46Iux6K+t55m+5bqm5biM5pyb576O5aWz5q+U6L6D55+l6K+G6KeE5a6a5bu66K6u6YOo6Zeo5oSP6KeB57K+5b2p5pel5pys5o+Q6auY5Y+R6KiA5pa56Z2i5Z+66YeR5aSE55CG5p2D6ZmQ5b2x54mH6ZO26KGM6L+Y5pyJ5YiG5Lqr54mp5ZOB57uP6JCl5re75Yqg5LiT5a626L+Z56eN6K+d6aKY6LW35p2l5Lia5Yqh5YWs5ZGK6K6w5b2V566A5LuL6LSo6YeP55S35Lq65b2x5ZON5byV55So5oql5ZGK6YOo5YiG5b+r6YCf5ZKo6K+i5pe25bCa5rOo5oSP55Sz6K+35a2m5qCh5bqU6K+l5Y6G5Y+y5Y+q5piv6L+U5Zue6LSt5Lmw5ZCN56ew5Li65LqG5oiQ5Yqf6K+05piO5L6b5bqU5a2p5a2Q5LiT6aKY56iL5bqP5LiA6Iis5pyD5ZOh5Y+q5pyJ5YW25a6D5L+d5oqk6ICM5LiU5LuK5aSp56qX5Y+j5Yqo5oCB54q25oCB54m55Yir6K6k5Li65b+F6aG75pu05paw5bCP6K+05oiR5YCR5L2c5Li65aqS5L2T5YyF5ous6YKj5LmI5LiA5qC35Zu95YaF5piv5ZCm5qC55o2u55S16KeG5a2m6Zmi5YW35pyJ6L+H56iL55Sx5LqO5Lq65omN5Ye65p2l5LiN6L+H5q2j5Zyo5piO5pif5pWF5LqL5YWz57O75qCH6aKY5ZWG5Yqh6L6T5YWl5LiA55u05Z+656GA5pWZ5a2m5LqG6Kej5bu6562R57uT5p6c5YWo55CD6YCa55+l6K6h5YiS5a+55LqO6Im65pyv55u45YaM5Y+R55Sf55yf55qE5bu656uL562J57qn57G75Z6L57uP6aqM5a6e546w5Yi25L2c5p2l6Ieq5qCH562+5Lul5LiL5Y6f5Yib5peg5rOV5YW25Lit5YCL5Lq65LiA5YiH5oyH5Y2X5YWz6Zet6ZuG5Zui56ys5LiJ5YWz5rOo5Zug5q2k54Wn54mH5rex5Zyz5ZWG5Lia5bm/5bee5pel5pyf6auY57qn5pyA6L+R57u85ZCI6KGo56S65LiT6L6R6KGM5Li65Lqk6YCa6K+E5Lu36KeJ5b6X57K+5Y2O5a625bqt5a6M5oiQ5oSf6KeJ5a6J6KOF5b6X5Yiw6YKu5Lu25Yi25bqm6aOf5ZOB6Jm954S26L2s6L295oql5Lu36K6w6ICF5pa55qGI6KGM5pS/5Lq65rCR55So5ZOB5Lic6KW/5o+Q5Ye66YWS5bqX54S25ZCO5LuY5qy+54Ot54K55Lul5YmN5a6M5YWo5Y+R5biW6K6+572u6aKG5a+85bel5Lia5Yy76Zmi55yL55yL57uP5YW45Y6f5Zug5bmz5Y+w5ZCE56eN5aKe5Yqg5p2Q5paZ5paw5aKe5LmL5ZCO6IGM5Lia5pWI5p6c5LuK5bm06K665paH5oiR5Zu95ZGK6K+J54mI5Li75L+u5pS55Y+C5LiO5omT5Y2w5b+r5LmQ5py65qKw6KeC54K55a2Y5Zyo57K+56We6I635b6X5Yip55So57un57ut5L2g5Lus6L+Z5LmI5qih5byP6K+t6KiA6IO95aSf6ZuF6JmO5pON5L2c6aOO5qC85LiA6LW356eR5a2m5L2T6IKy55+t5L+h5p2h5Lu25rK755aX6L+Q5Yqo5Lqn5Lia5Lya6K6u5a+86Iiq5YWI55Sf6IGU55uf5Y+v5piv5ZWP6aGM57uT5p6E5L2c55So6LCD5p+l6LOH5paZ6Ieq5Yqo6LSf6LSj5Yac5Lia6K6/6Zeu5a6e5pa95o6l5Y+X6K6o6K666YKj5Liq5Y+N6aaI5Yqg5by65aWz5oCn6IyD5Zu05pyN5YuZ5LyR6Zey5LuK5pel5a6i5pyN6KeA55yL5Y+C5Yqg55qE6K+d5LiA54K55L+d6K+B5Zu+5Lmm5pyJ5pWI5rWL6K+V56e75Yqo5omN6IO95Yaz5a6a6IKh56Wo5LiN5pat6ZyA5rGC5LiN5b6X5Yqe5rOV5LmL6Ze06YeH55So6JCl6ZSA5oqV6K+J55uu5qCH54ix5oOF5pGE5b2x5pyJ5Lqb6KSH6KO95paH5a2m5py65Lya5pWw5a2X6KOF5L+u6LSt54mp5Yac5p2R5YWo6Z2i57K+5ZOB5YW25a6e5LqL5oOF5rC05bmz5o+Q56S65LiK5biC6LCi6LCi5pmu6YCa5pWZ5biI5LiK5Lyg57G75Yir5q2M5puy5oul5pyJ5Yib5paw6YWN5Lu25Y+q6KaB5pe25Luj6LOH6KiK6L6+5Yiw5Lq655Sf6K6i6ZiF6ICB5biI5bGV56S65b+D55CG6LS05a2Q57ay56uZ5Li76aGM6Ieq54S257qn5Yir566A5Y2V5pS56Z2p6YKj5Lqb5p2l6K+05omT5byA5Luj56CB5Yig6Zmk6K+B5Yi46IqC55uu6YeN54K55qyh5pW45aSa5bCR6KeE5YiS6LWE6YeR5om+5Yiw5Lul5ZCO5aSn5YWo5Li76aG15pyA5L2z5Zue562U5aSp5LiL5L+d6Zqc546w5Luj5qOA5p+l5oqV56Wo5bCP5pe25rKS5pyJ5q2j5bi455Sa6Iez5Luj55CG55uu5b2V5YWs5byA5aSN5Yi26YeR6J6N5bm456aP54mI5pys5b2i5oiQ5YeG5aSH6KGM5oOF5Zue5Yiw5oCd5oOz5oCO5qC35Y2P6K6u6K6k6K+B5pyA5aW95Lqn55Sf5oyJ54Wn5pyN6KOF5bm/5Lic5Yqo5ryr6YeH6LSt5paw5omL57uE5Zu+6Z2i5p2/5Y+C6ICD5pS/5rK75a655piT5aSp5Zyw5Yqq5Yqb5Lq65Lus5Y2H57qn6YCf5bqm5Lq654mp6LCD5pW05rWB6KGM6YCg5oiQ5paH5a2X6Z+p5Zu96LS45piT5byA5bGV55u46Zec6KGo546w5b2x6KeG5aaC5q2k576O5a655aSn5bCP5oql6YGT5p2h5qy+5b+D5oOF6K645aSa5rOV6KeE5a625bGF5Lmm5bqX6L+e5o6l56uL5Y2z5Li+5oql5oqA5ben5aWl6L+Q55m75YWl5Lul5p2l55CG6K665LqL5Lu26Ieq55Sx5Lit5Y2O5Yqe5YWs5aaI5aaI55yf5q2j5LiN6ZSZ5YWo5paH5ZCI5ZCM5Lu35YC85Yir5Lq655uR552j5YW35L2T5LiW57qq5Zui6Zif5Yib5Lia5om/5ouF5aKe6ZW/5pyJ5Lq65L+d5oyB5ZWG5a6257u05L+u5Y+w5rm+5bem5Y+z6IKh5Lu9562U5qGI5a6e6ZmF55S15L+h57uP55CG55Sf5ZG95a6j5Lyg5Lu75Yqh5q2j5byP54m56Imy5LiL5p2l5Y2P5Lya5Y+q6IO95b2T54S26YeN5paw5YWn5a655oyH5a+86L+Q6KGM5pel5b+X6LOj5a626LaF6L+H5Zyf5Zyw5rWZ5rGf5pSv5LuY5o6o5Ye656uZ6ZW/5p2t5bee5omn6KGM5Yi26YCg5LmL5LiA5o6o5bm/546w5Zy65o+P6L+w5Y+Y5YyW5Lyg57uf5q2M5omL5L+d6Zmp6K++56iL5Yy755aX57uP6L+H6L+H5Y675LmL5YmN5pS25YWl5bm05bqm5p2C5b+X576O5Li95pyA6auY55m76ZmG5pyq5p2l5Yqg5bel5YWN6LSj5pWZ56iL54mI5Z2X6Lqr5L2T6YeN5bqG5Ye65ZSu5oiQ5pys5b2i5byP5Zyf6LGG5Ye65YO55Lic5pa56YKu566x5Y2X5Lqs5rGC6IGM5Y+W5b6X6IGM5L2N55u45L+h6aG16Z2i5YiG6ZKf572R6aG156Gu5a6a5Zu+5L6L572R5Z2A56ev5p6B6ZSZ6K+v55uu55qE5a6d6LSd5py65YWz6aOO6Zmp5o6I5p2D55eF5q+S5a6g54mp6Zmk5LqG6KmV6KuW55a+55eF5Y+K5pe25rGC6LSt56uZ54K55YS/56ul5q+P5aSp5Lit5aSu6K6k6K+G5q+P5Liq5aSp5rSl5a2X5L2T5Y+w54Gj57u05oqk5pys6aG15Liq5oCn5a6Y5pa55bi46KeB55u45py65oiY55Wl5bqU5b2T5b6L5biI5pa55L6/5qCh5Zut6IKh5biC5oi/5bGL5qCP55uu5ZGY5bel5a+86Ie056qB54S26YGT5YW35pys572R57uT5ZCI5qGj5qGI5Yqz5Yqo5Y+m5aSW576O5YWD5byV6LW35pS55Y+Y56ys5Zub5Lya6K6h6Kqq5piO6ZqQ56eB5a6d5a6d6KeE6IyD5raI6LS55YWx5ZCM5b+Y6K6w5L2T57O75bim5p2l5ZCN5a2X55m86KGo5byA5pS+5Yqg55uf5Y+X5Yiw5LqM5omL5aSn6YeP5oiQ5Lq65pWw6YeP5YWx5Lqr5Yy65Z+f5aWz5a2p5Y6f5YiZ5omA5Zyo57uT5p2f6YCa5L+h6LaF57qn6YWN572u5b2T5pe25LyY56eA5oCn5oSf5oi/5Lqn6YGK5oiy5Ye65Y+j5o+Q5Lqk5bCx5Lia5L+d5YGl56iL5bqm5Y+C5pWw5LqL5Lia5pW05Liq5bGx5Lic5oOF5oSf54m55q6K5YiG6aGe5pCc5bCL5bGe5LqO6Zeo5oi36LSi5Yqh5aOw6Z+z5Y+K5YW26LSi57uP5Z2a5oyB5bmy6YOo5oiQ56uL5Yip55uK6ICD6JmR5oiQ6YO95YyF6KOF55So5oi25q+U6LWb5paH5piO5oub5ZWG5a6M5pW055yf5piv55y8552b5LyZ5Ly05aiB5pyb6aKG5Z+f5Y2r55Sf5LyY5oOg6KuW5aOH5YWs5YWx6Imv5aW95YWF5YiG56ym5ZCI6ZmE5Lu254m554K55LiN5Y+v6Iux5paH6LWE5Lqn5qC55pys5piO5pi+5a+G56K85YWs5LyX5rCR5peP5pu05Yqg5Lqr5Y+X5ZCM5a2m5ZCv5Yqo6YCC5ZCI5Y6f5p2l6Zeu562U5pys5paH576O6aOf57u/6Imy56iz5a6a57uI5LqO55Sf54mp5L6b5rGC5pCc54uQ5Yqb6YeP5Lil6YeN5rC46L+c5YaZ55yf5pyJ6ZmQ56ue5LqJ5a+56LGh6LS555So5LiN5aW957ud5a+55Y2B5YiG5L+D6L+b54K56K+E5b2x6Z+z5LyY5Yq/5LiN5bCR5qyj6LWP5bm25LiU5pyJ54K55pa55ZCR5YWo5paw5L+h55So6K6+5pa95b2i6LGh6LWE5qC856qB56C06ZqP552A6YeN5aSn5LqO5piv5q+V5Lia5pm66IO95YyW5bel5a6M576O5ZWG5Z+O57uf5LiA5Ye654mI5omT6YCg55Si5ZOB5qaC5Ya155So5LqO5L+d55WZ5Zug57Sg5Lit5ZyL5a2Y5YKo6LS05Zu+5pyA5oSb6ZW/5pyf5Y+j5Lu355CG6LSi5Z+65Zyw5a6J5o6S5q2m5rGJ6YeM6Z2i5Yib5bu65aSp56m66aaW5YWI5a6M5ZaE6amx5Yqo5LiL6Z2i5LiN5YaN6K+a5L+h5oSP5LmJ6Ziz5YWJ6Iux5Zu95ryC5Lqu5Yab5LqL546p5a62576k5LyX5Yac5rCR5Y2z5Y+v5ZCN56ix5a625YW35Yqo55S75oOz5Yiw5rOo5piO5bCP5a2m5oCn6IO96ICD56CU56Gs5Lu26KeC55yL5riF5qWa5pCe56yR6aaW6aCB6buE6YeR6YCC55So5rGf6IuP55yf5a6e5Li7566h6Zi25q616Ki75YaK57+76K+R5p2D5Yip5YGa5aW95Ly85LmO6YCa6K6v5pa95bel54uA5oWL5Lmf6K64546v5L+d5Z+55YW75qaC5b+15aSn5Z6L5py656Wo55CG6Kej5Yy/5ZCNY3VhbmRvZW52aWFybWFkcmlkYnVzY2FyaW5pY2lvdGllbXBvcG9ycXVlY3VlbnRhZXN0YWRvcHVlZGVuanVlZ29zY29udHJhZXN0w6Fubm9tYnJldGllbmVucGVyZmlsbWFuZXJhYW1pZ29zY2l1ZGFkY2VudHJvYXVucXVlcHVlZGVzZGVudHJvcHJpbWVycHJlY2lvc2Vnw7puYnVlbm9zdm9sdmVycHVudG9zc2VtYW5haGFiw61hYWdvc3RvbnVldm9zdW5pZG9zY2FybG9zZXF1aXBvbmnDsW9zbXVjaG9zYWxndW5hY29ycmVvaW1hZ2VucGFydGlyYXJyaWJhbWFyw61haG9tYnJlZW1wbGVvdmVyZGFkY2FtYmlvbXVjaGFzZnVlcm9ucGFzYWRvbMOtbmVhcGFyZWNlbnVldmFzY3Vyc29zZXN0YWJhcXVpZXJvbGlicm9zY3VhbnRvYWNjZXNvbWlndWVsdmFyaW9zY3VhdHJvdGllbmVzZ3J1cG9zc2Vyw6FuZXVyb3BhbWVkaW9zZnJlbnRlYWNlcmNhZGVtw6Fzb2ZlcnRhY29jaGVzbW9kZWxvaXRhbGlhbGV0cmFzYWxnw7puY29tcHJhY3VhbGVzZXhpc3RlY3VlcnBvc2llbmRvcHJlbnNhbGxlZ2FydmlhamVzZGluZXJvbXVyY2lhcG9kcsOhcHVlc3RvZGlhcmlvcHVlYmxvcXVpZXJlbWFudWVscHJvcGlvY3Jpc2lzY2llcnRvc2VndXJvbXVlcnRlZnVlbnRlY2VycmFyZ3JhbmRlZWZlY3RvcGFydGVzbWVkaWRhcHJvcGlhb2ZyZWNldGllcnJhZS1tYWlsdmFyaWFzZm9ybWFzZnV0dXJvb2JqZXRvc2VndWlycmllc2dvbm9ybWFzbWlzbW9zw7puaWNvY2FtaW5vc2l0aW9zcmF6w7NuZGViaWRvcHJ1ZWJhdG9sZWRvdGVuw61hamVzw7pzZXNwZXJvY29jaW5hb3JpZ2VudGllbmRhY2llbnRvY8OhZGl6aGFibGFyc2Vyw61hbGF0aW5hZnVlcnphZXN0aWxvZ3VlcnJhZW50cmFyw6l4aXRvbMOzcGV6YWdlbmRhdsOtZGVvZXZpdGFycGFnaW5hbWV0cm9zamF2aWVycGFkcmVzZsOhY2lsY2FiZXphw6FyZWFzc2FsaWRhZW52w61vamFww7NuYWJ1c29zYmllbmVzdGV4dG9zbGxldmFycHVlZGFuZnVlcnRlY29tw7puY2xhc2VzaHVtYW5vdGVuaWRvYmlsYmFvdW5pZGFkZXN0w6FzZWRpdGFyY3JlYWRv0LTQu9GP0YfRgtC+0LrQsNC60LjQu9C40Y3RgtC+0LLRgdC10LXQs9C+0L/RgNC40YLQsNC60LXRidC10YPQttC10JrQsNC60LHQtdC30LHRi9C70L7QvdC40JLRgdC10L/QvtC00K3RgtC+0YLQvtC80YfQtdC80L3QtdGC0LvQtdGC0YDQsNC30L7QvdCw0LPQtNC10LzQvdC10JTQu9GP0J/RgNC40L3QsNGB0L3QuNGF0YLQtdC80LrRgtC+0LPQvtC00LLQvtGC0YLQsNC80KHQqNCQ0LzQsNGP0KfRgtC+0LLQsNGB0LLQsNC80LXQvNGD0KLQsNC60LTQstCw0L3QsNC80Y3RgtC40Y3RgtGD0JLQsNC80YLQtdGF0L/RgNC+0YLRg9GC0L3QsNC00LTQvdGP0JLQvtGC0YLRgNC40L3QtdC50JLQsNGB0L3QuNC80YHQsNC80YLQvtGC0YDRg9Cx0J7QvdC40LzQuNGA0L3QtdC10J7QntCe0LvQuNGG0Y3RgtCw0J7QvdCw0L3QtdC80LTQvtC80LzQvtC50LTQstC10L7QvdC+0YHRg9C04KSV4KWH4KS54KWI4KSV4KWA4KS44KWH4KSV4KS+4KSV4KWL4KSU4KSw4KSq4KSw4KSo4KWH4KSP4KSV4KSV4KS/4KSt4KWA4KSH4KS44KSV4KSw4KSk4KWL4KS54KWL4KSG4KSq4KS54KWA4KSv4KS54KSv4KS+4KSk4KSV4KSl4KS+amFncmFu4KSG4KSc4KSc4KWL4KSF4KSs4KSm4KWL4KSX4KSI4KSc4KS+4KSX4KSP4KS54KSu4KSH4KSo4KS14KS54KSv4KWH4KSl4KWH4KSl4KWA4KSY4KSw4KSc4KSs4KSm4KWA4KSV4KSI4KSc4KWA4KS14KWH4KSo4KSI4KSo4KSP4KS54KSw4KSJ4KS44KSu4KWH4KSV4KSu4KS14KWL4KSy4KWH4KS44KSs4KSu4KSI4KSm4KWH4KST4KSw4KSG4KSu4KSs4KS44KSt4KSw4KSs4KSo4KSa4KSy4KSu4KSo4KSG4KSX4KS44KWA4KSy4KWA2LnZhNmJ2KXZhNmJ2YfYsNin2KLYrtix2LnYr9iv2KfZhNmJ2YfYsNmH2LXZiNix2LrZitix2YPYp9mG2YjZhNin2KjZitmG2LnYsdi22LDZhNmD2YfZhtin2YrZiNmF2YLYp9mE2LnZhNmK2KfZhtin2YTZg9mG2K3YqtmJ2YLYqNmE2YjYrdip2KfYrtix2YHZgti32LnYqNiv2LHZg9mG2KXYsNin2YPZhdin2KfYrdiv2KXZhNin2YHZitmH2KjYudi22YPZitmB2KjYrdir2YjZhdmG2YjZh9mI2KPZhtin2KzYr9in2YTZh9in2LPZhNmF2LnZhtiv2YTZitiz2LnYqNix2LXZhNmJ2YXZhtiw2KjZh9in2KPZhtmH2YXYq9mE2YPZhtiq2KfZhNin2K3Zitir2YXYtdix2LTYsdit2K3ZiNmE2YjZgdmK2KfYsNin2YTZg9mE2YXYsdip2KfZhtiq2KfZhNmB2KPYqNmI2K7Yp9i12KPZhtiq2KfZhtmH2KfZhNmK2LnYttmI2YjZgtiv2KfYqNmG2K7Zitix2KjZhtiq2YTZg9mF2LTYp9ih2YjZh9mK2KfYqNmI2YLYtdi12YjZhdin2LHZgtmF2KPYrdiv2YbYrdmG2LnYr9mF2LHYo9mK2KfYrdip2YPYqtio2K/ZiNmG2YrYrNio2YXZhtmH2KrYrdiq2KzZh9ip2LPZhtip2YrYqtmF2YPYsdip2LrYstip2YbZgdiz2KjZitiq2YTZhNmH2YTZhtin2KrZhNmD2YLZhNio2YTZhdin2LnZhtmH2KPZiNmE2LTZitih2YbZiNix2KPZhdin2YHZitmD2KjZg9mE2LDYp9iq2LHYqtio2KjYo9mG2YfZhdiz2KfZhtmD2KjZiti52YHZgtiv2K3Ys9mG2YTZh9mF2LTYudix2KPZh9mE2LTZh9ix2YLYt9ix2LfZhNiocHJvZmlsZXNlcnZpY2VkZWZhdWx0aGltc2VsZmRldGFpbHNjb250ZW50c3VwcG9ydHN0YXJ0ZWRtZXNzYWdlc3VjY2Vzc2Zhc2hpb248dGl0bGU+Y291bnRyeWFjY291bnRjcmVhdGVkc3Rvcmllc3Jlc3VsdHNydW5uaW5ncHJvY2Vzc3dyaXRpbmdvYmplY3RzdmlzaWJsZXdlbGNvbWVhcnRpY2xldW5rbm93bm5ldHdvcmtjb21wYW55ZHluYW1pY2Jyb3dzZXJwcml2YWN5cHJvYmxlbVNlcnZpY2VyZXNwZWN0ZGlzcGxheXJlcXVlc3RyZXNlcnZld2Vic2l0ZWhpc3RvcnlmcmllbmRzb3B0aW9uc3dvcmtpbmd2ZXJzaW9ubWlsbGlvbmNoYW5uZWx3aW5kb3cuYWRkcmVzc3Zpc2l0ZWR3ZWF0aGVyY29ycmVjdHByb2R1Y3RlZGlyZWN0Zm9yd2FyZHlvdSBjYW5yZW1vdmVkc3ViamVjdGNvbnRyb2xhcmNoaXZlY3VycmVudHJlYWRpbmdsaWJyYXJ5bGltaXRlZG1hbmFnZXJmdXJ0aGVyc3VtbWFyeW1hY2hpbmVtaW51dGVzcHJpdmF0ZWNvbnRleHRwcm9ncmFtc29jaWV0eW51bWJlcnN3cml0dGVuZW5hYmxlZHRyaWdnZXJzb3VyY2VzbG9hZGluZ2VsZW1lbnRwYXJ0bmVyZmluYWxseXBlcmZlY3RtZWFuaW5nc3lzdGVtc2tlZXBpbmdjdWx0dXJlJnF1b3Q7LGpvdXJuYWxwcm9qZWN0c3VyZmFjZXMmcXVvdDtleHBpcmVzcmV2aWV3c2JhbGFuY2VFbmdsaXNoQ29udGVudHRocm91Z2hQbGVhc2Ugb3BpbmlvbmNvbnRhY3RhdmVyYWdlcHJpbWFyeXZpbGxhZ2VTcGFuaXNoZ2FsbGVyeWRlY2xpbmVtZWV0aW5nbWlzc2lvbnBvcHVsYXJxdWFsaXR5bWVhc3VyZWdlbmVyYWxzcGVjaWVzc2Vzc2lvbnNlY3Rpb253cml0ZXJzY291bnRlcmluaXRpYWxyZXBvcnRzZmlndXJlc21lbWJlcnNob2xkaW5nZGlzcHV0ZWVhcmxpZXJleHByZXNzZGlnaXRhbHBpY3R1cmVBbm90aGVybWFycmllZHRyYWZmaWNsZWFkaW5nY2hhbmdlZGNlbnRyYWx2aWN0b3J5aW1hZ2VzL3JlYXNvbnNzdHVkaWVzZmVhdHVyZWxpc3RpbmdtdXN0IGJlc2Nob29sc1ZlcnNpb251c3VhbGx5ZXBpc29kZXBsYXlpbmdncm93aW5nb2J2aW91c292ZXJsYXlwcmVzZW50YWN0aW9uczwvdWw+DQp3cmFwcGVyYWxyZWFkeWNlcnRhaW5yZWFsaXR5c3RvcmFnZWFub3RoZXJkZXNrdG9wb2ZmZXJlZHBhdHRlcm51bnVzdWFsRGlnaXRhbGNhcGl0YWxXZWJzaXRlZmFpbHVyZWNvbm5lY3RyZWR1Y2VkQW5kcm9pZGRlY2FkZXNyZWd1bGFyICZhbXA7IGFuaW1hbHNyZWxlYXNlQXV0b21hdGdldHRpbmdtZXRob2Rzbm90aGluZ1BvcHVsYXJjYXB0aW9ubGV0dGVyc2NhcHR1cmVzY2llbmNlbGljZW5zZWNoYW5nZXNFbmdsYW5kPTEmYW1wO0hpc3RvcnkgPSBuZXcgQ2VudHJhbHVwZGF0ZWRTcGVjaWFsTmV0d29ya3JlcXVpcmVjb21tZW50d2FybmluZ0NvbGxlZ2V0b29sYmFycmVtYWluc2JlY2F1c2VlbGVjdGVkRGV1dHNjaGZpbmFuY2V3b3JrZXJzcXVpY2tseWJldHdlZW5leGFjdGx5c2V0dGluZ2Rpc2Vhc2VTb2NpZXR5d2VhcG9uc2V4aGliaXQmbHQ7IS0tQ29udHJvbGNsYXNzZXNjb3ZlcmVkb3V0bGluZWF0dGFja3NkZXZpY2VzKHdpbmRvd3B1cnBvc2V0aXRsZT0iTW9iaWxlIGtpbGxpbmdzaG93aW5nSXRhbGlhbmRyb3BwZWRoZWF2aWx5ZWZmZWN0cy0xJ10pOwpjb25maXJtQ3VycmVudGFkdmFuY2VzaGFyaW5nb3BlbmluZ2RyYXdpbmdiaWxsaW9ub3JkZXJlZEdlcm1hbnlyZWxhdGVkPC9mb3JtPmluY2x1ZGV3aGV0aGVyZGVmaW5lZFNjaWVuY2VjYXRhbG9nQXJ0aWNsZWJ1dHRvbnNsYXJnZXN0dW5pZm9ybWpvdXJuZXlzaWRlYmFyQ2hpY2Fnb2hvbGlkYXlHZW5lcmFscGFzc2FnZSwmcXVvdDthbmltYXRlZmVlbGluZ2Fycml2ZWRwYXNzaW5nbmF0dXJhbHJvdWdobHkuCgpUaGUgYnV0IG5vdGRlbnNpdHlCcml0YWluQ2hpbmVzZWxhY2sgb2Z0cmlidXRlSXJlbGFuZCIgZGF0YS1mYWN0b3JzcmVjZWl2ZXRoYXQgaXNMaWJyYXJ5aHVzYmFuZGluIGZhY3RhZmZhaXJzQ2hhcmxlc3JhZGljYWxicm91Z2h0ZmluZGluZ2xhbmRpbmc6bGFuZz0icmV0dXJuIGxlYWRlcnNwbGFubmVkcHJlbWl1bXBhY2thZ2VBbWVyaWNhRWRpdGlvbl0mcXVvdDtNZXNzYWdlbmVlZCB0b3ZhbHVlPSJjb21wbGV4bG9va2luZ3N0YXRpb25iZWxpZXZlc21hbGxlci1tb2JpbGVyZWNvcmRzd2FudCB0b2tpbmQgb2ZGaXJlZm94eW91IGFyZXNpbWlsYXJzdHVkaWVkbWF4aW11bWhlYWRpbmdyYXBpZGx5Y2xpbWF0ZWtpbmdkb21lbWVyZ2VkYW1vdW50c2ZvdW5kZWRwaW9uZWVyZm9ybXVsYWR5bmFzdHlob3cgdG8gU3VwcG9ydHJldmVudWVlY29ub215UmVzdWx0c2Jyb3RoZXJzb2xkaWVybGFyZ2VseWNhbGxpbmcuJnF1b3Q7QWNjb3VudEVkd2FyZCBzZWdtZW50Um9iZXJ0IGVmZm9ydHNQYWNpZmljbGVhcm5lZHVwIHdpdGhoZWlnaHQ6d2UgaGF2ZUFuZ2VsZXNuYXRpb25zX3NlYXJjaGFwcGxpZWRhY3F1aXJlbWFzc2l2ZWdyYW50ZWQ6IGZhbHNldHJlYXRlZGJpZ2dlc3RiZW5lZml0ZHJpdmluZ1N0dWRpZXNtaW5pbXVtcGVyaGFwc21vcm5pbmdzZWxsaW5naXMgdXNlZHJldmVyc2V2YXJpYW50IHJvbGU9Im1pc3NpbmdhY2hpZXZlcHJvbW90ZXN0dWRlbnRzb21lb25lZXh0cmVtZXJlc3RvcmVib3R0b206ZXZvbHZlZGFsbCB0aGVzaXRlbWFwZW5nbGlzaHdheSB0byAgQXVndXN0c3ltYm9sc0NvbXBhbnltYXR0ZXJzbXVzaWNhbGFnYWluc3RzZXJ2aW5nfSkoKTsNCnBheW1lbnR0cm91YmxlY29uY2VwdGNvbXBhcmVwYXJlbnRzcGxheWVyc3JlZ2lvbnNtb25pdG9yICcnVGhlIHdpbm5pbmdleHBsb3JlYWRhcHRlZEdhbGxlcnlwcm9kdWNlYWJpbGl0eWVuaGFuY2VjYXJlZXJzKS4gVGhlIGNvbGxlY3RTZWFyY2ggYW5jaWVudGV4aXN0ZWRmb290ZXIgaGFuZGxlcnByaW50ZWRjb25zb2xlRWFzdGVybmV4cG9ydHN3aW5kb3dzQ2hhbm5lbGlsbGVnYWxuZXV0cmFsc3VnZ2VzdF9oZWFkZXJzaWduaW5nLmh0bWwiPnNldHRsZWR3ZXN0ZXJuY2F1c2luZy13ZWJraXRjbGFpbWVkSnVzdGljZWNoYXB0ZXJ2aWN0aW1zVGhvbWFzIG1vemlsbGFwcm9taXNlcGFydGllc2VkaXRpb25vdXRzaWRlOmZhbHNlLGh1bmRyZWRPbHltcGljX2J1dHRvbmF1dGhvcnNyZWFjaGVkY2hyb25pY2RlbWFuZHNzZWNvbmRzcHJvdGVjdGFkb3B0ZWRwcmVwYXJlbmVpdGhlcmdyZWF0bHlncmVhdGVyb3ZlcmFsbGltcHJvdmVjb21tYW5kc3BlY2lhbHNlYXJjaC53b3JzaGlwZnVuZGluZ3Rob3VnaHRoaWdoZXN0aW5zdGVhZHV0aWxpdHlxdWFydGVyQ3VsdHVyZXRlc3RpbmdjbGVhcmx5ZXhwb3NlZEJyb3dzZXJsaWJlcmFsfSBjYXRjaFByb2plY3RleGFtcGxlaGlkZSgpO0Zsb3JpZGFhbnN3ZXJzYWxsb3dlZEVtcGVyb3JkZWZlbnNlc2VyaW91c2ZyZWVkb21TZXZlcmFsLWJ1dHRvbkZ1cnRoZXJvdXQgb2YgIT0gbnVsbHRyYWluZWREZW5tYXJrdm9pZCgwKS9hbGwuanNwcmV2ZW50UmVxdWVzdFN0ZXBoZW4KCldoZW4gb2JzZXJ2ZTwvaDI+DQpNb2Rlcm4gcHJvdmlkZSIgYWx0PSJib3JkZXJzLgoKRm9yIAoKTWFueSBhcnRpc3RzcG93ZXJlZHBlcmZvcm1maWN0aW9udHlwZSBvZm1lZGljYWx0aWNrZXRzb3Bwb3NlZENvdW5jaWx3aXRuZXNzanVzdGljZUdlb3JnZSBCZWxnaXVtLi4uPC9hPnR3aXR0ZXJub3RhYmx5d2FpdGluZ3dhcmZhcmUgT3RoZXIgcmFua2luZ3BocmFzZXNtZW50aW9uc3Vydml2ZXNjaG9sYXI8L3A+DQogQ291bnRyeWlnbm9yZWRsb3NzIG9manVzdCBhc0dlb3JnaWFzdHJhbmdlPGhlYWQ+PHN0b3BwZWQxJ10pOw0KaXNsYW5kc25vdGFibGVib3JkZXI6bGlzdCBvZmNhcnJpZWQxMDAsMDAwPC9oMz4KIHNldmVyYWxiZWNvbWVzc2VsZWN0IHdlZGRpbmcwMC5odG1sbW9uYXJjaG9mZiB0aGV0ZWFjaGVyaGlnaGx5IGJpb2xvZ3lsaWZlIG9mb3IgZXZlbnJpc2Ugb2YmcmFxdW87cGx1c29uZWh1bnRpbmcodGhvdWdoRG91Z2xhc2pvaW5pbmdjaXJjbGVzRm9yIHRoZUFuY2llbnRWaWV0bmFtdmVoaWNsZXN1Y2ggYXNjcnlzdGFsdmFsdWUgPVdpbmRvd3NlbmpveWVkYSBzbWFsbGFzc3VtZWQ8YSBpZD0iZm9yZWlnbiBBbGwgcmlob3cgdGhlRGlzcGxheXJldGlyZWRob3dldmVyaGlkZGVuO2JhdHRsZXNzZWVraW5nY2FiaW5ldHdhcyBub3Rsb29rIGF0Y29uZHVjdGdldCB0aGVKYW51YXJ5aGFwcGVuc3R1cm5pbmdhOmhvdmVyT25saW5lIEZyZW5jaCBsYWNraW5ndHlwaWNhbGV4dHJhY3RlbmVtaWVzZXZlbiBpZmdlbmVyYXRkZWNpZGVkYXJlIG5vdC9zZWFyY2hiZWxpZWZzLWltYWdlOmxvY2F0ZWRzdGF0aWMubG9naW4iPmNvbnZlcnR2aW9sZW50ZW50ZXJlZGZpcnN0Ij5jaXJjdWl0RmlubGFuZGNoZW1pc3RzaGUgd2FzMTBweDsiPmFzIHN1Y2hkaXZpZGVkPC9zcGFuPndpbGwgYmVsaW5lIG9mYSBncmVhdG15c3RlcnkvaW5kZXguZmFsbGluZ2R1ZSB0byByYWlsd2F5Y29sbGVnZW1vbnN0ZXJkZXNjZW50aXQgd2l0aG51Y2xlYXJKZXdpc2ggcHJvdGVzdEJyaXRpc2hmbG93ZXJzcHJlZGljdHJlZm9ybXNidXR0b24gd2hvIHdhc2xlY3R1cmVpbnN0YW50c3VpY2lkZWdlbmVyaWNwZXJpb2RzbWFya2V0c1NvY2lhbCBmaXNoaW5nY29tYmluZWdyYXBoaWN3aW5uZXJzPGJyIC8+PGJ5IHRoZSBOYXR1cmFsUHJpdmFjeWNvb2tpZXNvdXRjb21lcmVzb2x2ZVN3ZWRpc2hicmllZmx5UGVyc2lhbnNvIG11Y2hDZW50dXJ5ZGVwaWN0c2NvbHVtbnNob3VzaW5nc2NyaXB0c25leHQgdG9iZWFyaW5nbWFwcGluZ3JldmlzZWRqUXVlcnkoLXdpZHRoOnRpdGxlIj50b29sdGlwU2VjdGlvbmRlc2lnbnNUdXJraXNoeW91bmdlci5tYXRjaCh9KSgpOwoKYnVybmluZ29wZXJhdGVkZWdyZWVzc291cmNlPVJpY2hhcmRjbG9zZWx5cGxhc3RpY2VudHJpZXM8L3RyPg0KY29sb3I6I3VsIGlkPSJwb3NzZXNzcm9sbGluZ3BoeXNpY3NmYWlsaW5nZXhlY3V0ZWNvbnRlc3RsaW5rIHRvRGVmYXVsdDxiciAvPgo6IHRydWUsY2hhcnRlcnRvdXJpc21jbGFzc2ljcHJvY2VlZGV4cGxhaW48L2gxPg0Kb25saW5lLj94bWwgdmVoZWxwaW5nZGlhbW9uZHVzZSB0aGVhaXJsaW5lZW5kIC0tPikuYXR0cihyZWFkZXJzaG9zdGluZyNmZmZmZmZyZWFsaXplVmluY2VudHNpZ25hbHMgc3JjPSIvUHJvZHVjdGRlc3BpdGVkaXZlcnNldGVsbGluZ1B1YmxpYyBoZWxkIGluSm9zZXBoIHRoZWF0cmVhZmZlY3RzPHN0eWxlPmEgbGFyZ2Vkb2Vzbid0bGF0ZXIsIEVsZW1lbnRmYXZpY29uY3JlYXRvckh1bmdhcnlBaXJwb3J0c2VlIHRoZXNvIHRoYXRNaWNoYWVsU3lzdGVtc1Byb2dyYW1zLCBhbmQgIHdpZHRoPWUmcXVvdDt0cmFkaW5nbGVmdCI+CnBlcnNvbnNHb2xkZW4gQWZmYWlyc2dyYW1tYXJmb3JtaW5nZGVzdHJveWlkZWEgb2ZjYXNlIG9mb2xkZXN0IHRoaXMgaXMuc3JjID0gY2FydG9vbnJlZ2lzdHJDb21tb25zTXVzbGltc1doYXQgaXNpbiBtYW55bWFya2luZ3JldmVhbHNJbmRlZWQsZXF1YWxseS9zaG93X2FvdXRkb29yZXNjYXBlKEF1c3RyaWFnZW5ldGljc3lzdGVtLEluIHRoZSBzaXR0aW5nSGUgYWxzb0lzbGFuZHNBY2FkZW15CgkJPCEtLURhbmllbCBiaW5kaW5nYmxvY2siPmltcG9zZWR1dGlsaXplQWJyYWhhbShleGNlcHR7d2lkdGg6cHV0dGluZykuaHRtbCh8fCBbXTsKREFUQVsgKmtpdGNoZW5tb3VudGVkYWN0dWFsIGRpYWxlY3RtYWlubHkgX2JsYW5rJ2luc3RhbGxleHBlcnRzaWYodHlwZUl0IGFsc28mY29weTsgIj5UZXJtc2Jvcm4gaW5PcHRpb25zZWFzdGVybnRhbGtpbmdjb25jZXJuZ2FpbmVkIG9uZ29pbmdqdXN0aWZ5Y3JpdGljc2ZhY3RvcnlpdHMgb3duYXNzYXVsdGludml0ZWRsYXN0aW5naGlzIG93bmhyZWY9Ii8iIHJlbD0iZGV2ZWxvcGNvbmNlcnRkaWFncmFtZG9sbGFyc2NsdXN0ZXJwaHA/aWQ9YWxjb2hvbCk7fSkoKTt1c2luZyBhPjxzcGFuPnZlc3NlbHNyZXZpdmFsQWRkcmVzc2FtYXRldXJhbmRyb2lkYWxsZWdlZGlsbG5lc3N3YWxraW5nY2VudGVyc3F1YWxpZnltYXRjaGVzdW5pZmllZGV4dGluY3REZWZlbnNlZGllZCBpbgoJPCEtLSBjdXN0b21zbGlua2luZ0xpdHRsZSBCb29rIG9mZXZlbmluZ21pbi5qcz9hcmUgdGhla29udGFrdHRvZGF5J3MuaHRtbCIgdGFyZ2V0PXdlYXJpbmdBbGwgUmlnOwp9KSgpO3JhaXNpbmcgQWxzbywgY3J1Y2lhbGFib3V0Ij5kZWNsYXJlLS0+CjxzY2ZpcmVmb3hhcyBtdWNoYXBwbGllc2luZGV4LCBzLCBidXQgdHlwZSA9IAoNCjwhLS10b3dhcmRzUmVjb3Jkc1ByaXZhdGVGb3JlaWduUHJlbWllcmNob2ljZXNWaXJ0dWFscmV0dXJuc0NvbW1lbnRQb3dlcmVkaW5saW5lO3BvdmVydHljaGFtYmVyTGl2aW5nIHZvbHVtZXNBbnRob255bG9naW4iIFJlbGF0ZWRFY29ub215cmVhY2hlc2N1dHRpbmdncmF2aXR5bGlmZSBpbkNoYXB0ZXItc2hhZG93Tm90YWJsZTwvdGQ+DQogcmV0dXJuc3RhZGl1bXdpZGdldHN2YXJ5aW5ndHJhdmVsc2hlbGQgYnl3aG8gYXJld29yayBpbmZhY3VsdHlhbmd1bGFyd2hvIGhhZGFpcnBvcnR0b3duIG9mCgpTb21lICdjbGljaydjaGFyZ2Vza2V5d29yZGl0IHdpbGxjaXR5IG9mKHRoaXMpO0FuZHJldyB1bmlxdWUgY2hlY2tlZG9yIG1vcmUzMDBweDsgcmV0dXJuO3JzaW9uPSJwbHVnaW5zd2l0aGluIGhlcnNlbGZTdGF0aW9uRmVkZXJhbHZlbnR1cmVwdWJsaXNoc2VudCB0b3RlbnNpb25hY3RyZXNzY29tZSB0b2ZpbmdlcnNEdWtlIG9mcGVvcGxlLGV4cGxvaXR3aGF0IGlzaGFybW9ueWEgbWFqb3IiOiJodHRwaW4gaGlzIG1lbnUiPgptb250aGx5b2ZmaWNlcmNvdW5jaWxnYWluaW5nZXZlbiBpblN1bW1hcnlkYXRlIG9mbG95YWx0eWZpdG5lc3NhbmQgd2FzZW1wZXJvcnN1cHJlbWVTZWNvbmQgaGVhcmluZ1J1c3NpYW5sb25nZXN0QWxiZXJ0YWxhdGVyYWxzZXQgb2Ygc21hbGwiPi5hcHBlbmRkbyB3aXRoZmVkZXJhbGJhbmsgb2ZiZW5lYXRoRGVzcGl0ZUNhcGl0YWxncm91bmRzKSwgYW5kIHBlcmNlbnRpdCBmcm9tY2xvc2luZ2NvbnRhaW5JbnN0ZWFkZmlmdGVlbmFzIHdlbGwueWFob28ucmVzcG9uZGZpZ2h0ZXJvYnNjdXJlcmVmbGVjdG9yZ2FuaWM9IE1hdGguZWRpdGluZ29ubGluZSBwYWRkaW5nYSB3aG9sZW9uZXJyb3J5ZWFyIG9mZW5kIG9mIGJhcnJpZXJ3aGVuIGl0aGVhZGVyIGhvbWUgb2ZyZXN1bWVkcmVuYW1lZHN0cm9uZz5oZWF0aW5ncmV0YWluc2Nsb3VkZnJ3YXkgb2YgTWFyY2ggMWtub3dpbmdpbiBwYXJ0QmV0d2Vlbmxlc3NvbnNjbG9zZXN0dmlydHVhbGxpbmtzIj5jcm9zc2VkRU5EIC0tPmZhbW91cyBhd2FyZGVkTGljZW5zZUhlYWx0aCBmYWlybHkgd2VhbHRoeW1pbmltYWxBZnJpY2FuY29tcGV0ZWxhYmVsIj5zaW5naW5nZmFybWVyc0JyYXNpbClkaXNjdXNzcmVwbGFjZUdyZWdvcnlmb250IGNvcHVyc3VlZGFwcGVhcnNtYWtlIHVwcm91bmRlZGJvdGggb2ZibG9ja2Vkc2F3IHRoZW9mZmljZXNjb2xvdXJzaWYoZG9jdXdoZW4gaGVlbmZvcmNlcHVzaChmdUF1Z3VzdCBVVEYtOCI+RmFudGFzeWluIG1vc3Rpbmp1cmVkVXN1YWxseWZhcm1pbmdjbG9zdXJlb2JqZWN0IGRlZmVuY2V1c2Ugb2YgTWVkaWNhbDxib2R5PgpldmlkZW50YmUgdXNlZGtleUNvZGVzaXh0ZWVuSXNsYW1pYyMwMDAwMDBlbnRpcmUgd2lkZWx5IGFjdGl2ZSAodHlwZW9mb25lIGNhbmNvbG9yID1zcGVha2VyZXh0ZW5kc1BoeXNpY3N0ZXJyYWluPHRib2R5PmZ1bmVyYWx2aWV3aW5nbWlkZGxlIGNyaWNrZXRwcm9waGV0c2hpZnRlZGRvY3RvcnNSdXNzZWxsIHRhcmdldGNvbXBhY3RhbGdlYnJhc29jaWFsLWJ1bGsgb2ZtYW4gYW5kPC90ZD4KIGhlIGxlZnQpLnZhbCgpZmFsc2UpO2xvZ2ljYWxiYW5raW5naG9tZSB0b25hbWluZyBBcml6b25hY3JlZGl0cyk7Cn0pOwpmb3VuZGVyaW4gdHVybkNvbGxpbnNiZWZvcmUgQnV0IHRoZWNoYXJnZWRUaXRsZSI+Q2FwdGFpbnNwZWxsZWRnb2RkZXNzVGFnIC0tPkFkZGluZzpidXQgd2FzUmVjZW50IHBhdGllbnRiYWNrIGluPWZhbHNlJkxpbmNvbG53ZSBrbm93Q291bnRlckp1ZGFpc21zY3JpcHQgYWx0ZXJlZCddKTsKICBoYXMgdGhldW5jbGVhckV2ZW50Jyxib3RoIGlubm90IGFsbAoKPCEtLSBwbGFjaW5naGFyZCB0byBjZW50ZXJzb3J0IG9mY2xpZW50c3N0cmVldHNCZXJuYXJkYXNzZXJ0c3RlbmQgdG9mYW50YXN5ZG93biBpbmhhcmJvdXJGcmVlZG9tamV3ZWxyeS9hYm91dC4uc2VhcmNobGVnZW5kc2lzIG1hZGVtb2Rlcm4gb25seSBvbm9ubHkgdG9pbWFnZSIgbGluZWFyIHBhaW50ZXJhbmQgbm90cmFyZWx5IGFjcm9ueW1kZWxpdmVyc2hvcnRlcjAwJmFtcDthcyBtYW55d2lkdGg9Ii8qIDwhW0N0aXRsZSA9b2YgdGhlIGxvd2VzdCBwaWNrZWQgZXNjYXBlZHVzZXMgb2ZwZW9wbGVzIFB1YmxpY01hdHRoZXd0YWN0aWNzZGFtYWdlZHdheSBmb3JsYXdzIG9mZWFzeSB0byB3aW5kb3dzdHJvbmcgIHNpbXBsZX1jYXRjaChzZXZlbnRoaW5mb2JveHdlbnQgdG9wYWludGVkY2l0aXplbkkgZG9uJ3RyZXRyZWF0LiBTb21lIHd3LiIpOwpib21iaW5nbWFpbHRvOm1hZGUgaW4uIE1hbnkgY2Fycmllc3x8e307d2l3b3JrIG9mc3lub255bWRlZmVhdHNmYXZvcmVkb3B0aWNhbHBhZ2VUcmF1bmxlc3Mgc2VuZGluZ2xlZnQiPjxjb21TY29yQWxsIHRoZWpRdWVyeS50b3VyaXN0Q2xhc3NpY2ZhbHNlIiBXaWxoZWxtc3VidXJic2dlbnVpbmViaXNob3BzLnNwbGl0KGdsb2JhbCBmb2xsb3dzYm9keSBvZm5vbWluYWxDb250YWN0c2VjdWxhcmxlZnQgdG9jaGllZmx5LWhpZGRlbi1iYW5uZXI8L2xpPgoKLiBXaGVuIGluIGJvdGhkaXNtaXNzRXhwbG9yZWFsd2F5cyB2aWEgdGhlc3Bhw7FvbHdlbGZhcmVydWxpbmcgYXJyYW5nZWNhcHRhaW5oaXMgc29ucnVsZSBvZmhlIHRvb2tpdHNlbGYsPTAmYW1wOyhjYWxsZWRzYW1wbGVzdG8gbWFrZWNvbS9wYWdNYXJ0aW4gS2VubmVkeWFjY2VwdHNmdWxsIG9maGFuZGxlZEJlc2lkZXMvLy0tPjwvYWJsZSB0b3RhcmdldHNlc3NlbmNlaGltIHRvIGl0cyBieSBjb21tb24ubWluZXJhbHRvIHRha2V3YXlzIHRvcy5vcmcvbGFkdmlzZWRwZW5hbHR5c2ltcGxlOmlmIHRoZXlMZXR0ZXJzYSBzaG9ydEhlcmJlcnRzdHJpa2VzIGdyb3Vwcy5sZW5ndGhmbGlnaHRzb3ZlcmxhcHNsb3dseSBsZXNzZXIgc29jaWFsIDwvcD4KCQlpdCBpbnRvcmFua2VkIHJhdGUgb2Z1bD4NCiAgYXR0ZW1wdHBhaXIgb2ZtYWtlIGl0S29udGFrdEFudG9uaW9oYXZpbmcgcmF0aW5ncyBhY3RpdmVzdHJlYW1zdHJhcHBlZCIpLmNzcyhob3N0aWxlbGVhZCB0b2xpdHRsZSBncm91cHMsUGljdHVyZS0tPg0KDQogcm93cz0iIG9iamVjdGludmVyc2U8Zm9vdGVyQ3VzdG9tVj48XC9zY3Jzb2x2aW5nQ2hhbWJlcnNsYXZlcnl3b3VuZGVkd2hlcmVhcyE9ICd1bmRmb3IgYWxscGFydGx5IC1yaWdodDpBcmFiaWFuYmFja2VkIGNlbnR1cnl1bml0IG9mbW9iaWxlLUV1cm9wZSxpcyBob21lcmlzayBvZmRlc2lyZWRDbGludG9uY29zdCBvZmFnZSBvZiBiZWNvbWUgbm9uZSBvZnAmcXVvdDtNaWRkbGUgZWFkJylbMENyaXRpY3NzdHVkaW9zPiZjb3B5O2dyb3VwIj5hc3NlbWJsbWFraW5nIHByZXNzZWR3aWRnZXQucHM6IiA/IHJlYnVpbHRieSBzb21lRm9ybWVyIGVkaXRvcnNkZWxheWVkQ2Fub25pY2hhZCB0aGVwdXNoaW5nY2xhc3M9ImJ1dCBhcmVwYXJ0aWFsQmFieWxvbmJvdHRvbSBjYXJyaWVyQ29tbWFuZGl0cyB1c2VBcyB3aXRoY291cnNlc2EgdGhpcmRkZW5vdGVzYWxzbyBpbkhvdXN0b24yMHB4OyI+YWNjdXNlZGRvdWJsZSBnb2FsIG9mRmFtb3VzICkuYmluZChwcmllc3RzIE9ubGluZWluIEp1bHlzdCArICJnY29uc3VsdGRlY2ltYWxoZWxwZnVscmV2aXZlZGlzIHZlcnlyJysnaXB0bG9zaW5nIGZlbWFsZXNpcyBhbHNvc3RyaW5nc2RheXMgb2ZhcnJpdmFsZnV0dXJlIDxvYmplY3Rmb3JjaW5nU3RyaW5nKCIgLz4KCQloZXJlIGlzZW5jb2RlZC4gIFRoZSBiYWxsb29uZG9uZSBieS9jb21tb25iZ2NvbG9ybGF3IG9mIEluZGlhbmFhdm9pZGVkYnV0IHRoZTJweCAzcHhqcXVlcnkuYWZ0ZXIgYXBvbGljeS5tZW4gYW5kZm9vdGVyLT0gdHJ1ZTtmb3IgdXNlc2NyZWVuLkluZGlhbiBpbWFnZSA9ZmFtaWx5LGh0dHA6Ly8gJm5ic3A7ZHJpdmVyc2V0ZXJuYWxzYW1lIGFzbm90aWNlZHZpZXdlcnN9KSgpOwogaXMgbW9yZXNlYXNvbnNmb3JtZXIgdGhlIG5ld2lzIGp1c3Rjb25zZW50IFNlYXJjaHdhcyB0aGV3aHkgdGhlc2hpcHBlZGJyPjxicj53aWR0aDogaGVpZ2h0PW1hZGUgb2ZjdWlzaW5laXMgdGhhdGEgdmVyeSBBZG1pcmFsIGZpeGVkO25vcm1hbCBNaXNzaW9uUHJlc3MsIG9udGFyaW9jaGFyc2V0dHJ5IHRvIGludmFkZWQ9InRydWUic3BhY2luZ2lzIG1vc3RhIG1vcmUgdG90YWxseWZhbGwgb2Z9KTsNCiAgaW1tZW5zZXRpbWUgaW5zZXQgb3V0c2F0aXNmeXRvIGZpbmRkb3duIHRvbG90IG9mIFBsYXllcnNpbiBKdW5lcXVhbnR1bW5vdCB0aGV0aW1lIHRvZGlzdGFudEZpbm5pc2hzcmMgPSAoc2luZ2xlIGhlbHAgb2ZHZXJtYW4gbGF3IGFuZGxhYmVsZWRmb3Jlc3RzY29va2luZ3NwYWNlIj5oZWFkZXItd2VsbCBhc1N0YW5sZXlicmlkZ2VzL2dsb2JhbENyb2F0aWEgQWJvdXQgWzBdOwogIGl0LCBhbmRncm91cGVkYmVpbmcgYSl7dGhyb3doZSBtYWRlbGlnaHRlcmV0aGljYWxGRkZGRkYiYm90dG9tImxpa2UgYSBlbXBsb3lzbGl2ZSBpbmFzIHNlZW5wcmludGVybW9zdCBvZnViLWxpbmtyZWplY3RzYW5kIHVzZWltYWdlIj5zdWNjZWVkZmVlZGluZ051Y2xlYXJpbmZvcm1hdG8gaGVscFdvbWVuJ3NOZWl0aGVyTWV4aWNhbnByb3RlaW48dGFibGUgYnkgbWFueWhlYWx0aHlsYXdzdWl0ZGV2aXNlZC5wdXNoKHtzZWxsZXJzc2ltcGx5IFRocm91Z2guY29va2llIEltYWdlKG9sZGVyIj51cy5qcyI+IFNpbmNlIHVuaXZlcnNsYXJnZXIgb3BlbiB0byEtLSBlbmRsaWVzIGluJ10pOw0KICBtYXJrZXR3aG8gaXMgKCJET01Db21hbmFnZWRvbmUgZm9ydHlwZW9mIEtpbmdkb21wcm9maXRzcHJvcG9zZXRvIHNob3djZW50ZXI7bWFkZSBpdGRyZXNzZWR3ZXJlIGlubWl4dHVyZXByZWNpc2VhcmlzaW5nc3JjID0gJ21ha2UgYSBzZWN1cmVkQmFwdGlzdHZvdGluZyAKCQl2YXIgTWFyY2ggMmdyZXcgdXBDbGltYXRlLnJlbW92ZXNraWxsZWR3YXkgdGhlPC9oZWFkPmZhY2Ugb2ZhY3RpbmcgcmlnaHQiPnRvIHdvcmtyZWR1Y2VzaGFzIGhhZGVyZWN0ZWRzaG93KCk7YWN0aW9uPWJvb2sgb2ZhbiBhcmVhPT0gImh0dDxoZWFkZXIKPGh0bWw+Y29uZm9ybWZhY2luZyBjb29raWUucmVseSBvbmhvc3RlZCAuY3VzdG9taGUgd2VudGJ1dCBmb3JzcHJlYWQgRmFtaWx5IGEgbWVhbnNvdXQgdGhlZm9ydW1zLmZvb3RhZ2UiPk1vYmlsQ2xlbWVudHMiIGlkPSJhcyBoaWdoaW50ZW5zZS0tPjwhLS1mZW1hbGUgaXMgc2VlbmltcGxpZWRzZXQgdGhlYSBzdGF0ZWFuZCBoaXNmYXN0ZXN0YmVzaWRlc2J1dHRvbl9ib3VuZGVkIj48aW1nIEluZm9ib3hldmVudHMsYSB5b3VuZ2FuZCBhcmVOYXRpdmUgY2hlYXBlclRpbWVvdXRhbmQgaGFzZW5naW5lc3dvbiB0aGUobW9zdGx5cmlnaHQ6IGZpbmQgYSAtYm90dG9tUHJpbmNlIGFyZWEgb2Ztb3JlIG9mc2VhcmNoX25hdHVyZSxsZWdhbGx5cGVyaW9kLGxhbmQgb2ZvciB3aXRoaW5kdWNlZHByb3ZpbmdtaXNzaWxlbG9jYWxseUFnYWluc3R0aGUgd2F5ayZxdW90O3B4OyI+DQpwdXNoZWQgYWJhbmRvbm51bWVyYWxDZXJ0YWluSW4gdGhpc21vcmUgaW5vciBzb21lbmFtZSBpc2FuZCwgaW5jcm93bmVkSVNCTiAwLWNyZWF0ZXNPY3RvYmVybWF5IG5vdGNlbnRlciBsYXRlIGluRGVmZW5jZWVuYWN0ZWR3aXNoIHRvYnJvYWRseWNvb2xpbmdvbmxvYWQ9aXQuIFRoZXJlY292ZXJNZW1iZXJzaGVpZ2h0IGFzc3VtZXM8aHRtbD4KcGVvcGxlLmluIG9uZSA9d2luZG93Zm9vdGVyX2EgZ29vZCByZWtsYW1hb3RoZXJzLHRvIHRoaXNfY29va2llcGFuZWwiPkxvbmRvbixkZWZpbmVzY3J1c2hlZGJhcHRpc21jb2FzdGFsc3RhdHVzIHRpdGxlIiBtb3ZlIHRvbG9zdCBpbmJldHRlciBpbXBsaWVzcml2YWxyeXNlcnZlcnMgU3lzdGVtUGVyaGFwc2VzIGFuZCBjb250ZW5kZmxvd2luZ2xhc3RlZCByaXNlIGluR2VuZXNpc3ZpZXcgb2ZyaXNpbmcgc2VlbSB0b2J1dCBpbiBiYWNraW5naGUgd2lsbGdpdmVuIGFnaXZpbmcgY2l0aWVzLmZsb3cgb2YgTGF0ZXIgYWxsIGJ1dEhpZ2h3YXlvbmx5IGJ5c2lnbiBvZmhlIGRvZXNkaWZmZXJzYmF0dGVyeSZhbXA7bGFzaW5nbGVzdGhyZWF0c2ludGVnZXJ0YWtlIG9ucmVmdXNlZGNhbGxlZCA9VVMmYW1wU2VlIHRoZW5hdGl2ZXNieSB0aGlzc3lzdGVtLmhlYWQgb2Y6aG92ZXIsbGVzYmlhbnN1cm5hbWVhbmQgYWxsY29tbW9uL2hlYWRlcl9fcGFyYW1zSGFydmFyZC9waXhlbC5yZW1vdmFsc28gbG9uZ3JvbGUgb2Zqb2ludGx5c2t5c2NyYVVuaWNvZGViciAvPg0KQXRsYW50YW51Y2xldXNDb3VudHkscHVyZWx5IGNvdW50Ij5lYXNpbHkgYnVpbGQgYW9uY2xpY2thIGdpdmVucG9pbnRlcmgmcXVvdDtldmVudHMgZWxzZSB7CmRpdGlvbnNub3cgdGhlLCB3aXRoIG1hbiB3aG9vcmcvV2Vib25lIGFuZGNhdmFscnlIZSBkaWVkc2VhdHRsZTAwLDAwMCB7d2luZG93aGF2ZSB0b2lmKHdpbmRhbmQgaXRzc29sZWx5IG0mcXVvdDtyZW5ld2VkRGV0cm9pdGFtb25nc3RlaXRoZXIgdGhlbSBpblNlbmF0b3JVczwvYT48S2luZyBvZkZyYW5jaXMtcHJvZHVjaGUgdXNlZGFydCBhbmRoaW0gYW5kdXNlZCBieXNjb3JpbmdhdCBob21ldG8gaGF2ZXJlbGF0ZXNpYmlsaXR5ZmFjdGlvbkJ1ZmZhbG9saW5rIj48d2hhdCBoZWZyZWUgdG9DaXR5IG9mY29tZSBpbnNlY3RvcnNjb3VudGVkb25lIGRheW5lcnZvdXNzcXVhcmUgfTtpZihnb2luIHdoYXRpbWciIGFsaXMgb25seXNlYXJjaC90dWVzZGF5bG9vc2VseVNvbG9tb25zZXh1YWwgLSA8YSBocm1lZGl1bSJETyBOT1QgRnJhbmNlLHdpdGggYSB3YXIgYW5kc2Vjb25kIHRha2UgYSA+DQoNCg0KbWFya2V0LmhpZ2h3YXlkb25lIGluY3Rpdml0eSJsYXN0Ij5vYmxpZ2VkcmlzZSB0byJ1bmRlZmltYWRlIHRvIEVhcmx5IHByYWlzZWRpbiBpdHMgZm9yIGhpc2F0aGxldGVKdXBpdGVyWWFob28hIHRlcm1lZCBzbyBtYW55cmVhbGx5IHMuIFRoZSBhIHdvbWFuP3ZhbHVlPWRpcmVjdCByaWdodCIgYmljeWNsZWFjaW5nPSJkYXkgYW5kc3RhdGluZ1JhdGhlcixoaWdoZXIgT2ZmaWNlIGFyZSBub3d0aW1lcywgd2hlbiBhIHBheSBmb3JvbiB0aGlzLWxpbmsiPjtib3JkZXJhcm91bmQgYW5udWFsIHRoZSBOZXdwdXQgdGhlLmNvbSIgdGFraW4gdG9hIGJyaWVmKGluIHRoZWdyb3Vwcy47IHdpZHRoZW56eW1lc3NpbXBsZSBpbiBsYXRle3JldHVybnRoZXJhcHlhIHBvaW50YmFubmluZ2lua3MiPgooKTsiIHJlYSBwbGFjZVx1MDAzQ2FhYm91dCBhdHI+DQoJCWNjb3VudCBnaXZlcyBhPFNDUklQVFJhaWx3YXl0aGVtZXMvdG9vbGJveEJ5SWQoInhodW1hbnMsd2F0Y2hlc2luIHNvbWUgaWYgKHdpY29taW5nIGZvcm1hdHMgVW5kZXIgYnV0IGhhc2hhbmRlZCBtYWRlIGJ5dGhhbiBpbmZlYXIgb2ZkZW5vdGVkL2lmcmFtZWxlZnQgaW52b2x0YWdlaW4gZWFjaGEmcXVvdDtiYXNlIG9mSW4gbWFueXVuZGVyZ29yZWdpbWVzYWN0aW9uIDwvcD4NCjx1c3RvbVZhOyZndDs8L2ltcG9ydHNvciB0aGF0bW9zdGx5ICZhbXA7cmUgc2l6ZT0iPC9hPjwvaGEgY2xhc3NwYXNzaXZlSG9zdCA9IFdoZXRoZXJmZXJ0aWxlVmFyaW91cz1bXTsoZnVjYW1lcmFzLz48L3RkPmFjdHMgYXNJbiBzb21lPg0KDQo8IW9yZ2FuaXMgPGJyIC8+QmVpamluZ2NhdGFsw6BkZXV0c2NoZXVyb3BldWV1c2thcmFnYWVpbGdlc3ZlbnNrYWVzcGHDsWFtZW5zYWpldXN1YXJpb3RyYWJham9tw6l4aWNvcMOhZ2luYXNpZW1wcmVzaXN0ZW1hb2N0dWJyZWR1cmFudGVhw7FhZGlyZW1wcmVzYW1vbWVudG9udWVzdHJvcHJpbWVyYXRyYXbDqXNncmFjaWFzbnVlc3RyYXByb2Nlc29lc3RhZG9zY2FsaWRhZHBlcnNvbmFuw7ptZXJvYWN1ZXJkb23DunNpY2FtaWVtYnJvb2ZlcnRhc2FsZ3Vub3NwYcOtc2VzZWplbXBsb2RlcmVjaG9hZGVtw6FzcHJpdmFkb2FncmVnYXJlbmxhY2VzcG9zaWJsZWhvdGVsZXNzZXZpbGxhcHJpbWVyb8O6bHRpbW9ldmVudG9zYXJjaGl2b2N1bHR1cmFtdWplcmVzZW50cmFkYWFudW5jaW9lbWJhcmdvbWVyY2Fkb2dyYW5kZXNlc3R1ZGlvbWVqb3Jlc2ZlYnJlcm9kaXNlw7FvdHVyaXNtb2PDs2RpZ29wb3J0YWRhZXNwYWNpb2ZhbWlsaWFhbnRvbmlvcGVybWl0ZWd1YXJkYXJhbGd1bmFzcHJlY2lvc2FsZ3VpZW5zZW50aWRvdmlzaXRhc3TDrXR1bG9jb25vY2Vyc2VndW5kb2NvbnNlam9mcmFuY2lhbWludXRvc3NlZ3VuZGF0ZW5lbW9zZWZlY3Rvc23DoWxhZ2FzZXNpw7NucmV2aXN0YWdyYW5hZGFjb21wcmFyaW5ncmVzb2dhcmPDrWFhY2Npw7NuZWN1YWRvcnF1aWVuZXNpbmNsdXNvZGViZXLDoW1hdGVyaWFob21icmVzbXVlc3RyYXBvZHLDrWFtYcOxYW5hw7psdGltYWVzdGFtb3NvZmljaWFsdGFtYmllbm5pbmfDum5zYWx1ZG9zcG9kZW1vc21lam9yYXJwb3NpdGlvbmJ1c2luZXNzaG9tZXBhZ2VzZWN1cml0eWxhbmd1YWdlc3RhbmRhcmRjYW1wYWlnbmZlYXR1cmVzY2F0ZWdvcnlleHRlcm5hbGNoaWxkcmVucmVzZXJ2ZWRyZXNlYXJjaGV4Y2hhbmdlZmF2b3JpdGV0ZW1wbGF0ZW1pbGl0YXJ5aW5kdXN0cnlzZXJ2aWNlc21hdGVyaWFscHJvZHVjdHN6LWluZGV4OmNvbW1lbnRzc29mdHdhcmVjb21wbGV0ZWNhbGVuZGFycGxhdGZvcm1hcnRpY2xlc3JlcXVpcmVkbW92ZW1lbnRxdWVzdGlvbmJ1aWxkaW5ncG9saXRpY3Nwb3NzaWJsZXJlbGlnaW9ucGh5c2ljYWxmZWVkYmFja3JlZ2lzdGVycGljdHVyZXNkaXNhYmxlZHByb3RvY29sYXVkaWVuY2VzZXR0aW5nc2FjdGl2aXR5ZWxlbWVudHNsZWFybmluZ2FueXRoaW5nYWJzdHJhY3Rwcm9ncmVzc292ZXJ2aWV3bWFnYXppbmVlY29ub21pY3RyYWluaW5ncHJlc3N1cmV2YXJpb3VzIDxzdHJvbmc+cHJvcGVydHlzaG9wcGluZ3RvZ2V0aGVyYWR2YW5jZWRiZWhhdmlvcmRvd25sb2FkZmVhdHVyZWRmb290YmFsbHNlbGVjdGVkTGFuZ3VhZ2VkaXN0YW5jZXJlbWVtYmVydHJhY2tpbmdwYXNzd29yZG1vZGlmaWVkc3R1ZGVudHNkaXJlY3RseWZpZ2h0aW5nbm9ydGhlcm5kYXRhYmFzZWZlc3RpdmFsYnJlYWtpbmdsb2NhdGlvbmludGVybmV0ZHJvcGRvd25wcmFjdGljZWV2aWRlbmNlZnVuY3Rpb25tYXJyaWFnZXJlc3BvbnNlcHJvYmxlbXNuZWdhdGl2ZXByb2dyYW1zYW5hbHlzaXNyZWxlYXNlZGJhbm5lciI+cHVyY2hhc2Vwb2xpY2llc3JlZ2lvbmFsY3JlYXRpdmVhcmd1bWVudGJvb2ttYXJrcmVmZXJyZXJjaGVtaWNhbGRpdmlzaW9uY2FsbGJhY2tzZXBhcmF0ZXByb2plY3RzY29uZmxpY3RoYXJkd2FyZWludGVyZXN0ZGVsaXZlcnltb3VudGFpbm9idGFpbmVkPSBmYWxzZTtmb3IodmFyIGFjY2VwdGVkY2FwYWNpdHljb21wdXRlcmlkZW50aXR5YWlyY3JhZnRlbXBsb3llZHByb3Bvc2VkZG9tZXN0aWNpbmNsdWRlc3Byb3ZpZGVkaG9zcGl0YWx2ZXJ0aWNhbGNvbGxhcHNlYXBwcm9hY2hwYXJ0bmVyc2xvZ28iPjxhZGF1Z2h0ZXJhdXRob3IiIGN1bHR1cmFsZmFtaWxpZXMvaW1hZ2VzL2Fzc2VtYmx5cG93ZXJmdWx0ZWFjaGluZ2ZpbmlzaGVkZGlzdHJpY3Rjcml0aWNhbGNnaS1iaW4vcHVycG9zZXNyZXF1aXJlc2VsZWN0aW9uYmVjb21pbmdwcm92aWRlc2FjYWRlbWljZXhlcmNpc2VhY3R1YWxseW1lZGljaW5lY29uc3RhbnRhY2NpZGVudE1hZ2F6aW5lZG9jdW1lbnRzdGFydGluZ2JvdHRvbSI+b2JzZXJ2ZWQ6ICZxdW90O2V4dGVuZGVkcHJldmlvdXNTb2Z0d2FyZWN1c3RvbWVyZGVjaXNpb25zdHJlbmd0aGRldGFpbGVkc2xpZ2h0bHlwbGFubmluZ3RleHRhcmVhY3VycmVuY3lldmVyeW9uZXN0cmFpZ2h0dHJhbnNmZXJwb3NpdGl2ZXByb2R1Y2VkaGVyaXRhZ2VzaGlwcGluZ2Fic29sdXRlcmVjZWl2ZWRyZWxldmFudGJ1dHRvbiIgdmlvbGVuY2Vhbnl3aGVyZWJlbmVmaXRzbGF1bmNoZWRyZWNlbnRseWFsbGlhbmNlZm9sbG93ZWRtdWx0aXBsZWJ1bGxldGluaW5jbHVkZWRvY2N1cnJlZGludGVybmFsJCh0aGlzKS5yZXB1YmxpYz48dHI+PHRkY29uZ3Jlc3NyZWNvcmRlZHVsdGltYXRlc29sdXRpb248dWwgaWQ9ImRpc2NvdmVySG9tZTwvYT53ZWJzaXRlc25ldHdvcmtzYWx0aG91Z2hlbnRpcmVseW1lbW9yaWFsbWVzc2FnZXNjb250aW51ZWFjdGl2ZSI+c29tZXdoYXR2aWN0b3JpYVdlc3Rlcm4gIHRpdGxlPSJMb2NhdGlvbmNvbnRyYWN0dmlzaXRvcnNEb3dubG9hZHdpdGhvdXQgcmlnaHQiPgptZWFzdXJlc3dpZHRoID0gdmFyaWFibGVpbnZvbHZlZHZpcmdpbmlhbm9ybWFsbHloYXBwZW5lZGFjY291bnRzc3RhbmRpbmduYXRpb25hbFJlZ2lzdGVycHJlcGFyZWRjb250cm9sc2FjY3VyYXRlYmlydGhkYXlzdHJhdGVneW9mZmljaWFsZ3JhcGhpY3NjcmltaW5hbHBvc3NpYmx5Y29uc3VtZXJQZXJzb25hbHNwZWFraW5ndmFsaWRhdGVhY2hpZXZlZC5qcGciIC8+bWFjaGluZXM8L2gyPgogIGtleXdvcmRzZnJpZW5kbHlicm90aGVyc2NvbWJpbmVkb3JpZ2luYWxjb21wb3NlZGV4cGVjdGVkYWRlcXVhdGVwYWtpc3RhbmZvbGxvdyIgdmFsdWFibGU8L2xhYmVsPnJlbGF0aXZlYnJpbmdpbmdpbmNyZWFzZWdvdmVybm9ycGx1Z2lucy9MaXN0IG9mIEhlYWRlciI+IiBuYW1lPSIgKCZxdW90O2dyYWR1YXRlPC9oZWFkPgpjb21tZXJjZW1hbGF5c2lhZGlyZWN0b3JtYWludGFpbjtoZWlnaHQ6c2NoZWR1bGVjaGFuZ2luZ2JhY2sgdG8gY2F0aG9saWNwYXR0ZXJuc2NvbG9yOiAjZ3JlYXRlc3RzdXBwbGllc3JlbGlhYmxlPC91bD4KCQk8c2VsZWN0IGNpdGl6ZW5zY2xvdGhpbmd3YXRjaGluZzxsaSBpZD0ic3BlY2lmaWNjYXJyeWluZ3NlbnRlbmNlPGNlbnRlcj5jb250cmFzdHRoaW5raW5nY2F0Y2goZSlzb3V0aGVybk1pY2hhZWwgbWVyY2hhbnRjYXJvdXNlbHBhZGRpbmc6aW50ZXJpb3Iuc3BsaXQoImxpemF0aW9uT2N0b2JlciApe3JldHVybmltcHJvdmVkLS0mZ3Q7Cgpjb3ZlcmFnZWNoYWlybWFuLnBuZyIgLz5zdWJqZWN0c1JpY2hhcmQgd2hhdGV2ZXJwcm9iYWJseXJlY292ZXJ5YmFzZWJhbGxqdWRnbWVudGNvbm5lY3QuLmNzcyIgLz4gd2Vic2l0ZXJlcG9ydGVkZGVmYXVsdCIvPjwvYT4NCmVsZWN0cmljc2NvdGxhbmRjcmVhdGlvbnF1YW50aXR5LiBJU0JOIDBkaWQgbm90IGluc3RhbmNlLXNlYXJjaC0iIGxhbmc9InNwZWFrZXJzQ29tcHV0ZXJjb250YWluc2FyY2hpdmVzbWluaXN0ZXJyZWFjdGlvbmRpc2NvdW50SXRhbGlhbm9jcml0ZXJpYXN0cm9uZ2x5OiAnaHR0cDonc2NyaXB0J2NvdmVyaW5nb2ZmZXJpbmdhcHBlYXJlZEJyaXRpc2ggaWRlbnRpZnlGYWNlYm9va251bWVyb3VzdmVoaWNsZXNjb25jZXJuc0FtZXJpY2FuaGFuZGxpbmdkaXYgaWQ9IldpbGxpYW0gcHJvdmlkZXJfY29udGVudGFjY3VyYWN5c2VjdGlvbiBhbmRlcnNvbmZsZXhpYmxlQ2F0ZWdvcnlsYXdyZW5jZTxzY3JpcHQ+bGF5b3V0PSJhcHByb3ZlZCBtYXhpbXVtaGVhZGVyIj48L3RhYmxlPlNlcnZpY2VzaGFtaWx0b25jdXJyZW50IGNhbmFkaWFuY2hhbm5lbHMvdGhlbWVzLy9hcnRpY2xlb3B0aW9uYWxwb3J0dWdhbHZhbHVlPSIiaW50ZXJ2YWx3aXJlbGVzc2VudGl0bGVkYWdlbmNpZXNTZWFyY2giIG1lYXN1cmVkdGhvdXNhbmRzcGVuZGluZyZoZWxsaXA7bmV3IERhdGUiIHNpemU9InBhZ2VOYW1lbWlkZGxlIiAiIC8+PC9hPmhpZGRlbiI+c2VxdWVuY2VwZXJzb25hbG92ZXJmbG93b3BpbmlvbnNpbGxpbm9pc2xpbmtzIj4KCTx0aXRsZT52ZXJzaW9uc3NhdHVyZGF5dGVybWluYWxpdGVtcHJvcGVuZ2luZWVyc2VjdGlvbnNkZXNpZ25lcnByb3Bvc2FsPSJmYWxzZSJFc3Bhw7FvbHJlbGVhc2Vzc3VibWl0IiBlciZxdW90O2FkZGl0aW9uc3ltcHRvbXNvcmllbnRlZHJlc291cmNlcmlnaHQiPjxwbGVhc3VyZXN0YXRpb25zaGlzdG9yeS5sZWF2aW5nICBib3JkZXI9Y29udGVudHNjZW50ZXIiPi4KClNvbWUgZGlyZWN0ZWRzdWl0YWJsZWJ1bGdhcmlhLnNob3coKTtkZXNpZ25lZEdlbmVyYWwgY29uY2VwdHNFeGFtcGxlc3dpbGxpYW1zT3JpZ2luYWwiPjxzcGFuPnNlYXJjaCI+b3BlcmF0b3JyZXF1ZXN0c2EgJnF1b3Q7YWxsb3dpbmdEb2N1bWVudHJldmlzaW9uLiAKClRoZSB5b3Vyc2VsZkNvbnRhY3QgbWljaGlnYW5FbmdsaXNoIGNvbHVtYmlhcHJpb3JpdHlwcmludGluZ2RyaW5raW5nZmFjaWxpdHlyZXR1cm5lZENvbnRlbnQgb2ZmaWNlcnNSdXNzaWFuIGdlbmVyYXRlLTg4NTktMSJpbmRpY2F0ZWZhbWlsaWFyIHF1YWxpdHltYXJnaW46MCBjb250ZW50dmlld3BvcnRjb250YWN0cy10aXRsZSI+cG9ydGFibGUubGVuZ3RoIGVsaWdpYmxlaW52b2x2ZXNhdGxhbnRpY29ubG9hZD0iZGVmYXVsdC5zdXBwbGllZHBheW1lbnRzZ2xvc3NhcnkKCkFmdGVyIGd1aWRhbmNlPC90ZD48dGRlbmNvZGluZ21pZGRsZSI+Y2FtZSB0byBkaXNwbGF5c3Njb3R0aXNoam9uYXRoYW5tYWpvcml0eXdpZGdldHMuY2xpbmljYWx0aGFpbGFuZHRlYWNoZXJzPGhlYWQ+CglhZmZlY3RlZHN1cHBvcnRzcG9pbnRlcjt0b1N0cmluZzwvc21hbGw+b2tsYWhvbWF3aWxsIGJlIGludmVzdG9yMCIgYWx0PSJob2xpZGF5c1Jlc291cmNlbGljZW5zZWQgKHdoaWNoIC4gQWZ0ZXIgY29uc2lkZXJ2aXNpdGluZ2V4cGxvcmVycHJpbWFyeSBzZWFyY2giIGFuZHJvaWQicXVpY2tseSBtZWV0aW5nc2VzdGltYXRlO3JldHVybiA7Y29sb3I6IyBoZWlnaHQ9YXBwcm92YWwsICZxdW90OyBjaGVja2VkLm1pbi5qcyJtYWduZXRpYz48L2E+PC9oZm9yZWNhc3QuIFdoaWxlIHRodXJzZGF5ZHZlcnRpc2UmZWFjdXRlO2hhc0NsYXNzZXZhbHVhdGVvcmRlcmluZ2V4aXN0aW5ncGF0aWVudHMgT25saW5lIGNvbG9yYWRvT3B0aW9ucyJjYW1wYmVsbDwhLS0gZW5kPC9zcGFuPjw8YnIgLz4NCl9wb3B1cHN8c2NpZW5jZXMsJnF1b3Q7IHF1YWxpdHkgV2luZG93cyBhc3NpZ25lZGhlaWdodDogPGIgY2xhc3NsZSZxdW90OyB2YWx1ZT0iIENvbXBhbnlleGFtcGxlczxpZnJhbWUgYmVsaWV2ZXNwcmVzZW50c21hcnNoYWxscGFydCBvZiBwcm9wZXJseSkuCgpUaGUgdGF4b25vbXltdWNoIG9mIDwvc3Bhbj4KIiBkYXRhLXNydHVndcOqc3Njcm9sbFRvIHByb2plY3Q8aGVhZD4NCmF0dG9ybmV5ZW1waGFzaXNzcG9uc29yc2ZhbmN5Ym94d29ybGQncyB3aWxkbGlmZWNoZWNrZWQ9c2Vzc2lvbnNwcm9ncmFtbXB4O2ZvbnQtIFByb2plY3Rqb3VybmFsc2JlbGlldmVkdmFjYXRpb250aG9tcHNvbmxpZ2h0aW5nYW5kIHRoZSBzcGVjaWFsIGJvcmRlcj0wY2hlY2tpbmc8L3Rib2R5PjxidXR0b24gQ29tcGxldGVjbGVhcmZpeAo8aGVhZD4KYXJ0aWNsZSA8c2VjdGlvbmZpbmRpbmdzcm9sZSBpbiBwb3B1bGFyICBPY3RvYmVyd2Vic2l0ZSBleHBvc3VyZXVzZWQgdG8gIGNoYW5nZXNvcGVyYXRlZGNsaWNraW5nZW50ZXJpbmdjb21tYW5kc2luZm9ybWVkIG51bWJlcnMgIDwvZGl2PmNyZWF0aW5nb25TdWJtaXRtYXJ5bGFuZGNvbGxlZ2VzYW5hbHl0aWNsaXN0aW5nc2NvbnRhY3QubG9nZ2VkSW5hZHZpc29yeXNpYmxpbmdzY29udGVudCJzJnF1b3Q7KXMuIFRoaXMgcGFja2FnZXNjaGVja2JveHN1Z2dlc3RzcHJlZ25hbnR0b21vcnJvd3NwYWNpbmc9aWNvbi5wbmdqYXBhbmVzZWNvZGViYXNlYnV0dG9uIj5nYW1ibGluZ3N1Y2ggYXMgLCB3aGlsZSA8L3NwYW4+IG1pc3NvdXJpc3BvcnRpbmd0b3A6MXB4IC48L3NwYW4+dGVuc2lvbnN3aWR0aD0iMmxhenlsb2Fkbm92ZW1iZXJ1c2VkIGluIGhlaWdodD0iY3JpcHQiPgombmJzcDs8Lzx0cj48dGQgaGVpZ2h0OjIvcHJvZHVjdGNvdW50cnkgaW5jbHVkZSBmb290ZXIiICZsdDshLS0gdGl0bGUiPjwvanF1ZXJ5LjwvZm9ybT4KKOeugOS9kyko57mB6auUKWhydmF0c2tpaXRhbGlhbm9yb23Dom7Eg3TDvHJrw6dl2KfYsdiv2Yh0YW1iacOpbm5vdGljaWFzbWVuc2FqZXNwZXJzb25hc2RlcmVjaG9zbmFjaW9uYWxzZXJ2aWNpb2NvbnRhY3RvdXN1YXJpb3Nwcm9ncmFtYWdvYmllcm5vZW1wcmVzYXNhbnVuY2lvc3ZhbGVuY2lhY29sb21iaWFkZXNwdcOpc2RlcG9ydGVzcHJveWVjdG9wcm9kdWN0b3DDumJsaWNvbm9zb3Ryb3NoaXN0b3JpYXByZXNlbnRlbWlsbG9uZXNtZWRpYW50ZXByZWd1bnRhYW50ZXJpb3JyZWN1cnNvc3Byb2JsZW1hc2FudGlhZ29udWVzdHJvc29waW5pw7NuaW1wcmltaXJtaWVudHJhc2Ftw6lyaWNhdmVuZGVkb3Jzb2NpZWRhZHJlc3BlY3RvcmVhbGl6YXJyZWdpc3Ryb3BhbGFicmFzaW50ZXLDqXNlbnRvbmNlc2VzcGVjaWFsbWllbWJyb3NyZWFsaWRhZGPDs3Jkb2JhemFyYWdvemFww6FnaW5hc3NvY2lhbGVzYmxvcXVlYXJnZXN0acOzbmFscXVpbGVyc2lzdGVtYXNjaWVuY2lhc2NvbXBsZXRvdmVyc2nDs25jb21wbGV0YWVzdHVkaW9zcMO6YmxpY2FvYmpldGl2b2FsaWNhbnRlYnVzY2Fkb3JjYW50aWRhZGVudHJhZGFzYWNjaW9uZXNhcmNoaXZvc3N1cGVyaW9ybWF5b3LDrWFhbGVtYW5pYWZ1bmNpw7Nuw7psdGltb3NoYWNpZW5kb2FxdWVsbG9zZWRpY2nDs25mZXJuYW5kb2FtYmllbnRlZmFjZWJvb2tudWVzdHJhc2NsaWVudGVzcHJvY2Vzb3NiYXN0YW50ZXByZXNlbnRhcmVwb3J0YXJjb25ncmVzb3B1YmxpY2FyY29tZXJjaW9jb250cmF0b2rDs3ZlbmVzZGlzdHJpdG90w6ljbmljYWNvbmp1bnRvZW5lcmfDrWF0cmFiYWphcmFzdHVyaWFzcmVjaWVudGV1dGlsaXphcmJvbGV0w61uc2FsdmFkb3Jjb3JyZWN0YXRyYWJham9zcHJpbWVyb3NuZWdvY2lvc2xpYmVydGFkZGV0YWxsZXNwYW50YWxsYXByw7N4aW1vYWxtZXLDrWFhbmltYWxlc3F1acOpbmVzY29yYXrDs25zZWNjacOzbmJ1c2NhbmRvb3BjaW9uZXNleHRlcmlvcmNvbmNlcHRvdG9kYXbDrWFnYWxlcsOtYWVzY3JpYmlybWVkaWNpbmFsaWNlbmNpYWNvbnN1bHRhYXNwZWN0b3NjcsOtdGljYWTDs2xhcmVzanVzdGljaWFkZWJlcsOhbnBlcsOtb2RvbmVjZXNpdGFtYW50ZW5lcnBlcXVlw7FvcmVjaWJpZGF0cmlidW5hbHRlbmVyaWZlY2FuY2nDs25jYW5hcmlhc2Rlc2NhcmdhZGl2ZXJzb3NtYWxsb3JjYXJlcXVpZXJldMOpY25pY29kZWJlcsOtYXZpdmllbmRhZmluYW56YXNhZGVsYW50ZWZ1bmNpb25hY29uc2Vqb3NkaWbDrWNpbGNpdWRhZGVzYW50aWd1YXNhdmFuemFkYXTDqXJtaW5vdW5pZGFkZXNzw6FuY2hlemNhbXBhw7Fhc29mdG9uaWNyZXZpc3Rhc2NvbnRpZW5lc2VjdG9yZXNtb21lbnRvc2ZhY3VsdGFkY3LDqWRpdG9kaXZlcnNhc3N1cHVlc3RvZmFjdG9yZXNzZWd1bmRvc3BlcXVlw7Fh0LPQvtC00LDQtdGB0LvQuNC10YHRgtGM0LHRi9C70L7QsdGL0YLRjNGN0YLQvtC80JXRgdC70LjRgtC+0LPQvtC80LXQvdGP0LLRgdC10YXRjdGC0L7QudC00LDQttC10LHRi9C70LjQs9C+0LTRg9C00LXQvdGM0Y3RgtC+0YLQsdGL0LvQsNGB0LXQsdGP0L7QtNC40L3RgdC10LHQtdC90LDQtNC+0YHQsNC50YLRhNC+0YLQvtC90LXQs9C+0YHQstC+0LjRgdCy0L7QudC40LPRgNGL0YLQvtC20LXQstGB0LXQvNGB0LLQvtGO0LvQuNGI0YzRjdGC0LjRhdC/0L7QutCw0LTQvdC10LnQtNC+0LzQsNC80LjRgNCw0LvQuNCx0L7RgtC10LzRg9GF0L7RgtGP0LTQstGD0YXRgdC10YLQuNC70Y7QtNC40LTQtdC70L7QvNC40YDQtdGC0LXQsdGP0YHQstC+0LXQstC40LTQtdGH0LXQs9C+0Y3RgtC40LzRgdGH0LXRgtGC0LXQvNGL0YbQtdC90YvRgdGC0LDQu9Cy0LXQtNGM0YLQtdC80LXQstC+0LTRi9GC0LXQsdC10LLRi9GI0LXQvdCw0LzQuNGC0LjQv9Cw0YLQvtC80YPQv9GA0LDQstC70LjRhtCw0L7QtNC90LDQs9C+0LTRi9C30L3QsNGO0LzQvtCz0YPQtNGA0YPQs9Cy0YHQtdC50LjQtNC10YLQutC40L3QvtC+0LTQvdC+0LTQtdC70LDQtNC10LvQtdGB0YDQvtC60LjRjtC90Y/QstC10YHRjNCV0YHRgtGM0YDQsNC30LDQvdCw0YjQuNin2YTZhNmH2KfZhNiq2YrYrNmF2YrYudiu2KfYtdip2KfZhNiw2YrYudmE2YrZh9is2K/Zitiv2KfZhNii2YbYp9mE2LHYr9iq2K3Zg9mF2LXZgdit2KnZg9in2YbYqtin2YTZhNmK2YrZg9mI2YbYtNio2YPYqdmB2YrZh9in2KjZhtin2KrYrdmI2KfYodij2YPYq9ix2K7ZhNin2YTYp9mE2K3YqNiv2YTZitmE2K/YsdmI2LPYp9i22LrYt9iq2YPZiNmG2YfZhtin2YPYs9in2K3YqdmG2KfYr9mK2KfZhNi32KjYudmE2YrZg9i02YPYsdin2YrZhdmD2YbZhdmG2YfYp9i02LHZg9ip2LHYptmK2LPZhti02YrYt9mF2KfYsNin2KfZhNmB2YbYtNio2KfYqNiq2LnYqNix2LHYrdmF2KnZg9in2YHYqdmK2YLZiNmE2YXYsdmD2LLZg9mE2YXYqdij2K3Zhdiv2YLZhNio2YrZiti52YbZiti12YjYsdip2LfYsdmK2YLYtNin2LHZg9is2YjYp9mE2KPYrtix2YnZhdi52YbYp9in2KjYrdir2LnYsdmI2LbYqNi02YPZhNmF2LPYrNmE2KjZhtin2YbYrtin2YTYr9mD2KrYp9io2YPZhNmK2KnYqNiv2YjZhtij2YrYttin2YrZiNis2K/Zgdix2YrZgtmD2KrYqNiq2KPZgdi22YTZhdi32KjYrtin2YPYq9ix2KjYp9ix2YPYp9mB2LbZhNin2K3ZhNmJ2YbZgdiz2YfYo9mK2KfZhdix2K/ZiNiv2KPZhtmH2KfYr9mK2YbYp9in2YTYp9mG2YXYudix2LbYqti52YTZhdiv2KfYrtmE2YXZhdmD2YYAAAAAAAAAAAEAAQABAAEAAgACAAIAAgAEAAQABAAEAAABAgMEBQYHBwYFBAMCAQAICQoLDA0ODw8ODQwLCgkIEBESExQVFhcXFhUUExIREBgZGhscHR4fHx4dHBsaGRj/////AAAAAAAAAAD/////AQAAAAIAAAACAAAAAQAAAAEAAAADAAAA//8AAQAAAAEAAP//AAEAAAAIAAgACAAIAAAAAQACAAMABAAFAAYAB3Jlc291cmNlc2NvdW50cmllc3F1ZXN0aW9uc2VxdWlwbWVudGNvbW11bml0eWF2YWlsYWJsZWhpZ2hsaWdodERURC94aHRtbG1hcmtldGluZ2tub3dsZWRnZXNvbWV0aGluZ2NvbnRhaW5lcmRpcmVjdGlvbnN1YnNjcmliZWFkdmVydGlzZWNoYXJhY3RlciIgdmFsdWU9Ijwvc2VsZWN0PkF1c3RyYWxpYSIgY2xhc3M9InNpdHVhdGlvbmF1dGhvcml0eWZvbGxvd2luZ3ByaW1hcmlseW9wZXJhdGlvbmNoYWxsZW5nZWRldmVsb3BlZGFub255bW91c2Z1bmN0aW9uIGZ1bmN0aW9uc2NvbXBhbmllc3N0cnVjdHVyZWFncmVlbWVudCIgdGl0bGU9InBvdGVudGlhbGVkdWNhdGlvbmFyZ3VtZW50c3NlY29uZGFyeWNvcHlyaWdodGxhbmd1YWdlc2V4Y2x1c2l2ZWNvbmRpdGlvbjwvZm9ybT4NCnN0YXRlbWVudGF0dGVudGlvbkJpb2dyYXBoeX0gZWxzZSB7CnNvbHV0aW9uc3doZW4gdGhlIEFuYWx5dGljc3RlbXBsYXRlc2Rhbmdlcm91c3NhdGVsbGl0ZWRvY3VtZW50c3B1Ymxpc2hlcmltcG9ydGFudHByb3RvdHlwZWluZmx1ZW5jZSZyYXF1bzs8L2VmZmVjdGl2ZWdlbmVyYWxseXRyYW5zZm9ybWJlYXV0aWZ1bHRyYW5zcG9ydG9yZ2FuaXplZHB1Ymxpc2hlZHByb21pbmVudHVudGlsIHRoZXRodW1ibmFpbE5hdGlvbmFsIC5mb2N1cygpO292ZXIgdGhlIG1pZ3JhdGlvbmFubm91bmNlZGZvb3RlciI+CmV4Y2VwdGlvbmxlc3MgdGhhbmV4cGVuc2l2ZWZvcm1hdGlvbmZyYW1ld29ya3RlcnJpdG9yeW5kaWNhdGlvbmN1cnJlbnRseWNsYXNzTmFtZWNyaXRpY2lzbXRyYWRpdGlvbmVsc2V3aGVyZUFsZXhhbmRlcmFwcG9pbnRlZG1hdGVyaWFsc2Jyb2FkY2FzdG1lbnRpb25lZGFmZmlsaWF0ZTwvb3B0aW9uPnRyZWF0bWVudGRpZmZlcmVudC9kZWZhdWx0LlByZXNpZGVudG9uY2xpY2s9ImJpb2dyYXBoeW90aGVyd2lzZXBlcm1hbmVudEZyYW7Dp2Fpc0hvbGx5d29vZGV4cGFuc2lvbnN0YW5kYXJkczwvc3R5bGU+CnJlZHVjdGlvbkRlY2VtYmVyIHByZWZlcnJlZENhbWJyaWRnZW9wcG9uZW50c0J1c2luZXNzIGNvbmZ1c2lvbj4KPHRpdGxlPnByZXNlbnRlZGV4cGxhaW5lZGRvZXMgbm90IHdvcmxkd2lkZWludGVyZmFjZXBvc2l0aW9uc25ld3NwYXBlcjwvdGFibGU+Cm1vdW50YWluc2xpa2UgdGhlIGVzc2VudGlhbGZpbmFuY2lhbHNlbGVjdGlvbmFjdGlvbj0iL2FiYW5kb25lZEVkdWNhdGlvbnBhcnNlSW50KHN0YWJpbGl0eXVuYWJsZSB0bzwvdGl0bGU+CnJlbGF0aW9uc05vdGUgdGhhdGVmZmljaWVudHBlcmZvcm1lZHR3byB5ZWFyc1NpbmNlIHRoZXRoZXJlZm9yZXdyYXBwZXIiPmFsdGVybmF0ZWluY3JlYXNlZEJhdHRsZSBvZnBlcmNlaXZlZHRyeWluZyB0b25lY2Vzc2FyeXBvcnRyYXllZGVsZWN0aW9uc0VsaXphYmV0aDwvaWZyYW1lPmRpc2NvdmVyeWluc3VyYW5jZXMubGVuZ3RoO2xlZ2VuZGFyeUdlb2dyYXBoeWNhbmRpZGF0ZWNvcnBvcmF0ZXNvbWV0aW1lc3NlcnZpY2VzLmluaGVyaXRlZDwvc3Ryb25nPkNvbW11bml0eXJlbGlnaW91c2xvY2F0aW9uc0NvbW1pdHRlZWJ1aWxkaW5nc3RoZSB3b3JsZG5vIGxvbmdlcmJlZ2lubmluZ3JlZmVyZW5jZWNhbm5vdCBiZWZyZXF1ZW5jeXR5cGljYWxseWludG8gdGhlIHJlbGF0aXZlO3JlY29yZGluZ3ByZXNpZGVudGluaXRpYWxseXRlY2huaXF1ZXRoZSBvdGhlcml0IGNhbiBiZWV4aXN0ZW5jZXVuZGVybGluZXRoaXMgdGltZXRlbGVwaG9uZWl0ZW1zY29wZXByYWN0aWNlc2FkdmFudGFnZSk7cmV0dXJuIEZvciBvdGhlcnByb3ZpZGluZ2RlbW9jcmFjeWJvdGggdGhlIGV4dGVuc2l2ZXN1ZmZlcmluZ3N1cHBvcnRlZGNvbXB1dGVycyBmdW5jdGlvbnByYWN0aWNhbHNhaWQgdGhhdGl0IG1heSBiZUVuZ2xpc2g8L2Zyb20gdGhlIHNjaGVkdWxlZGRvd25sb2FkczwvbGFiZWw+CnN1c3BlY3RlZG1hcmdpbjogMHNwaXJpdHVhbDwvaGVhZD4KCm1pY3Jvc29mdGdyYWR1YWxseWRpc2N1c3NlZGhlIGJlY2FtZWV4ZWN1dGl2ZWpxdWVyeS5qc2hvdXNlaG9sZGNvbmZpcm1lZHB1cmNoYXNlZGxpdGVyYWxseWRlc3Ryb3llZHVwIHRvIHRoZXZhcmlhdGlvbnJlbWFpbmluZ2l0IGlzIG5vdGNlbnR1cmllc0phcGFuZXNlIGFtb25nIHRoZWNvbXBsZXRlZGFsZ29yaXRobWludGVyZXN0c3JlYmVsbGlvbnVuZGVmaW5lZGVuY291cmFnZXJlc2l6YWJsZWludm9sdmluZ3NlbnNpdGl2ZXVuaXZlcnNhbHByb3Zpc2lvbihhbHRob3VnaGZlYXR1cmluZ2NvbmR1Y3RlZCksIHdoaWNoIGNvbnRpbnVlZC1oZWFkZXIiPkZlYnJ1YXJ5IG51bWVyb3VzIG92ZXJmbG93OmNvbXBvbmVudGZyYWdtZW50c2V4Y2VsbGVudGNvbHNwYW49InRlY2huaWNhbG5lYXIgdGhlIEFkdmFuY2VkIHNvdXJjZSBvZmV4cHJlc3NlZEhvbmcgS29uZyBGYWNlYm9va211bHRpcGxlIG1lY2hhbmlzbWVsZXZhdGlvbm9mZmVuc2l2ZTwvZm9ybT4KCXNwb25zb3JlZGRvY3VtZW50Lm9yICZxdW90O3RoZXJlIGFyZXRob3NlIHdob21vdmVtZW50c3Byb2Nlc3Nlc2RpZmZpY3VsdHN1Ym1pdHRlZHJlY29tbWVuZGNvbnZpbmNlZHByb21vdGluZyIgd2lkdGg9Ii5yZXBsYWNlKGNsYXNzaWNhbGNvYWxpdGlvbmhpcyBmaXJzdGRlY2lzaW9uc2Fzc2lzdGFudGluZGljYXRlZGV2b2x1dGlvbi13cmFwcGVyImVub3VnaCB0b2Fsb25nIHRoZWRlbGl2ZXJlZC0tPg0KPCEtLUFtZXJpY2FuIHByb3RlY3RlZE5vdmVtYmVyIDwvc3R5bGU+PGZ1cm5pdHVyZUludGVybmV0ICBvbmJsdXI9InN1c3BlbmRlZHJlY2lwaWVudGJhc2VkIG9uIE1vcmVvdmVyLGFib2xpc2hlZGNvbGxlY3RlZHdlcmUgbWFkZWVtb3Rpb25hbGVtZXJnZW5jeW5hcnJhdGl2ZWFkdm9jYXRlc3B4O2JvcmRlcmNvbW1pdHRlZGRpcj0ibHRyImVtcGxveWVlc3Jlc2VhcmNoLiBzZWxlY3RlZHN1Y2Nlc3NvcmN1c3RvbWVyc2Rpc3BsYXllZFNlcHRlbWJlcmFkZENsYXNzKEZhY2Vib29rIHN1Z2dlc3RlZGFuZCBsYXRlcm9wZXJhdGluZ2VsYWJvcmF0ZVNvbWV0aW1lc0luc3RpdHV0ZWNlcnRhaW5seWluc3RhbGxlZGZvbGxvd2Vyc0plcnVzYWxlbXRoZXkgaGF2ZWNvbXB1dGluZ2dlbmVyYXRlZHByb3ZpbmNlc2d1YXJhbnRlZWFyYml0cmFyeXJlY29nbml6ZXdhbnRlZCB0b3B4O3dpZHRoOnRoZW9yeSBvZmJlaGF2aW91cldoaWxlIHRoZWVzdGltYXRlZGJlZ2FuIHRvIGl0IGJlY2FtZW1hZ25pdHVkZW11c3QgaGF2ZW1vcmUgdGhhbkRpcmVjdG9yeWV4dGVuc2lvbnNlY3JldGFyeW5hdHVyYWxseW9jY3VycmluZ3ZhcmlhYmxlc2dpdmVuIHRoZXBsYXRmb3JtLjwvbGFiZWw+PGZhaWxlZCB0b2NvbXBvdW5kc2tpbmRzIG9mIHNvY2lldGllc2Fsb25nc2lkZSAtLSZndDsKCnNvdXRod2VzdHRoZSByaWdodHJhZGlhdGlvbm1heSBoYXZlIHVuZXNjYXBlKHNwb2tlbiBpbiIgaHJlZj0iL3Byb2dyYW1tZW9ubHkgdGhlIGNvbWUgZnJvbWRpcmVjdG9yeWJ1cmllZCBpbmEgc2ltaWxhcnRoZXkgd2VyZTwvZm9udD48L05vcndlZ2lhbnNwZWNpZmllZHByb2R1Y2luZ3Bhc3NlbmdlcihuZXcgRGF0ZXRlbXBvcmFyeWZpY3Rpb25hbEFmdGVyIHRoZWVxdWF0aW9uc2Rvd25sb2FkLnJlZ3VsYXJseWRldmVsb3BlcmFib3ZlIHRoZWxpbmtlZCB0b3BoZW5vbWVuYXBlcmlvZCBvZnRvb2x0aXAiPnN1YnN0YW5jZWF1dG9tYXRpY2FzcGVjdCBvZkFtb25nIHRoZWNvbm5lY3RlZGVzdGltYXRlc0FpciBGb3JjZXN5c3RlbSBvZm9iamVjdGl2ZWltbWVkaWF0ZW1ha2luZyBpdHBhaW50aW5nc2NvbnF1ZXJlZGFyZSBzdGlsbHByb2NlZHVyZWdyb3d0aCBvZmhlYWRlZCBieUV1cm9wZWFuIGRpdmlzaW9uc21vbGVjdWxlc2ZyYW5jaGlzZWludGVudGlvbmF0dHJhY3RlZGNoaWxkaG9vZGFsc28gdXNlZGRlZGljYXRlZHNpbmdhcG9yZWRlZ3JlZSBvZmZhdGhlciBvZmNvbmZsaWN0czwvYT48L3A+CmNhbWUgZnJvbXdlcmUgdXNlZG5vdGUgdGhhdHJlY2VpdmluZ0V4ZWN1dGl2ZWV2ZW4gbW9yZWFjY2VzcyB0b2NvbW1hbmRlclBvbGl0aWNhbG11c2ljaWFuc2RlbGljaW91c3ByaXNvbmVyc2FkdmVudCBvZlVURi04IiAvPjwhW0NEQVRBWyI+Q29udGFjdFNvdXRoZXJuIGJnY29sb3I9InNlcmllcyBvZi4gSXQgd2FzIGluIEV1cm9wZXBlcm1pdHRlZHZhbGlkYXRlLmFwcGVhcmluZ29mZmljaWFsc3NlcmlvdXNseS1sYW5ndWFnZWluaXRpYXRlZGV4dGVuZGluZ2xvbmctdGVybWluZmxhdGlvbnN1Y2ggdGhhdGdldENvb2tpZW1hcmtlZCBieTwvYnV0dG9uPmltcGxlbWVudGJ1dCBpdCBpc2luY3JlYXNlc2Rvd24gdGhlIHJlcXVpcmluZ2RlcGVuZGVudC0tPgo8IS0tIGludGVydmlld1dpdGggdGhlIGNvcGllcyBvZmNvbnNlbnN1c3dhcyBidWlsdFZlbmV6dWVsYShmb3JtZXJseXRoZSBzdGF0ZXBlcnNvbm5lbHN0cmF0ZWdpY2Zhdm91ciBvZmludmVudGlvbldpa2lwZWRpYWNvbnRpbmVudHZpcnR1YWxseXdoaWNoIHdhc3ByaW5jaXBsZUNvbXBsZXRlIGlkZW50aWNhbHNob3cgdGhhdHByaW1pdGl2ZWF3YXkgZnJvbW1vbGVjdWxhcnByZWNpc2VseWRpc3NvbHZlZFVuZGVyIHRoZXZlcnNpb249Ij4mbmJzcDs8L0l0IGlzIHRoZSBUaGlzIGlzIHdpbGwgaGF2ZW9yZ2FuaXNtc3NvbWUgdGltZUZyaWVkcmljaHdhcyBmaXJzdHRoZSBvbmx5IGZhY3QgdGhhdGZvcm0gaWQ9InByZWNlZGluZ1RlY2huaWNhbHBoeXNpY2lzdG9jY3VycyBpbm5hdmlnYXRvcnNlY3Rpb24iPnNwYW4gaWQ9InNvdWdodCB0b2JlbG93IHRoZXN1cnZpdmluZ308L3N0eWxlPmhpcyBkZWF0aGFzIGluIHRoZWNhdXNlZCBieXBhcnRpYWxseWV4aXN0aW5nIHVzaW5nIHRoZXdhcyBnaXZlbmEgbGlzdCBvZmxldmVscyBvZm5vdGlvbiBvZk9mZmljaWFsIGRpc21pc3NlZHNjaWVudGlzdHJlc2VtYmxlc2R1cGxpY2F0ZWV4cGxvc2l2ZXJlY292ZXJlZGFsbCBvdGhlcmdhbGxlcmllc3twYWRkaW5nOnBlb3BsZSBvZnJlZ2lvbiBvZmFkZHJlc3Nlc2Fzc29jaWF0ZWltZyBhbHQ9ImluIG1vZGVybnNob3VsZCBiZW1ldGhvZCBvZnJlcG9ydGluZ3RpbWVzdGFtcG5lZWRlZCB0b3RoZSBHcmVhdHJlZ2FyZGluZ3NlZW1lZCB0b3ZpZXdlZCBhc2ltcGFjdCBvbmlkZWEgdGhhdHRoZSBXb3JsZGhlaWdodCBvZmV4cGFuZGluZ1RoZXNlIGFyZWN1cnJlbnQiPmNhcmVmdWxseW1haW50YWluc2NoYXJnZSBvZkNsYXNzaWNhbGFkZHJlc3NlZHByZWRpY3RlZG93bmVyc2hpcDxkaXYgaWQ9InJpZ2h0Ij4NCnJlc2lkZW5jZWxlYXZlIHRoZWNvbnRlbnQiPmFyZSBvZnRlbiAgfSkoKTsNCnByb2JhYmx5IFByb2Zlc3Nvci1idXR0b24iIHJlc3BvbmRlZHNheXMgdGhhdGhhZCB0byBiZXBsYWNlZCBpbkh1bmdhcmlhbnN0YXR1cyBvZnNlcnZlcyBhc1VuaXZlcnNhbGV4ZWN1dGlvbmFnZ3JlZ2F0ZWZvciB3aGljaGluZmVjdGlvbmFncmVlZCB0b2hvd2V2ZXIsIHBvcHVsYXIiPnBsYWNlZCBvbmNvbnN0cnVjdGVsZWN0b3JhbHN5bWJvbCBvZmluY2x1ZGluZ3JldHVybiB0b2FyY2hpdGVjdENocmlzdGlhbnByZXZpb3VzIGxpdmluZyBpbmVhc2llciB0b3Byb2Zlc3NvcgombHQ7IS0tIGVmZmVjdCBvZmFuYWx5dGljc3dhcyB0YWtlbndoZXJlIHRoZXRvb2sgb3ZlcmJlbGllZiBpbkFmcmlrYWFuc2FzIGZhciBhc3ByZXZlbnRlZHdvcmsgd2l0aGEgc3BlY2lhbDxmaWVsZHNldENocmlzdG1hc1JldHJpZXZlZAoKSW4gdGhlIGJhY2sgaW50b25vcnRoZWFzdG1hZ2F6aW5lcz48c3Ryb25nPmNvbW1pdHRlZWdvdmVybmluZ2dyb3VwcyBvZnN0b3JlZCBpbmVzdGFibGlzaGEgZ2VuZXJhbGl0cyBmaXJzdHRoZWlyIG93bnBvcHVsYXRlZGFuIG9iamVjdENhcmliYmVhbmFsbG93IHRoZWRpc3RyaWN0c3dpc2NvbnNpbmxvY2F0aW9uLjsgd2lkdGg6IGluaGFiaXRlZFNvY2lhbGlzdEphbnVhcnkgMTwvZm9vdGVyPnNpbWlsYXJseWNob2ljZSBvZnRoZSBzYW1lIHNwZWNpZmljIGJ1c2luZXNzIFRoZSBmaXJzdC5sZW5ndGg7IGRlc2lyZSB0b2RlYWwgd2l0aHNpbmNlIHRoZXVzZXJBZ2VudGNvbmNlaXZlZGluZGV4LnBocGFzICZxdW90O2VuZ2FnZSBpbnJlY2VudGx5LGZldyB5ZWFyc3dlcmUgYWxzbwo8aGVhZD4KPGVkaXRlZCBieWFyZSBrbm93bmNpdGllcyBpbmFjY2Vzc2tleWNvbmRlbW5lZGFsc28gaGF2ZXNlcnZpY2VzLGZhbWlseSBvZlNjaG9vbCBvZmNvbnZlcnRlZG5hdHVyZSBvZiBsYW5ndWFnZW1pbmlzdGVyczwvb2JqZWN0PnRoZXJlIGlzIGEgcG9wdWxhcnNlcXVlbmNlc2Fkdm9jYXRlZFRoZXkgd2VyZWFueSBvdGhlcmxvY2F0aW9uPWVudGVyIHRoZW11Y2ggbW9yZXJlZmxlY3RlZHdhcyBuYW1lZG9yaWdpbmFsIGEgdHlwaWNhbHdoZW4gdGhleWVuZ2luZWVyc2NvdWxkIG5vdHJlc2lkZW50c3dlZG5lc2RheXRoZSB0aGlyZCBwcm9kdWN0c0phbnVhcnkgMndoYXQgdGhleWEgY2VydGFpbnJlYWN0aW9uc3Byb2Nlc3NvcmFmdGVyIGhpc3RoZSBsYXN0IGNvbnRhaW5lZCI+PC9kaXY+CjwvYT48L3RkPmRlcGVuZCBvbnNlYXJjaCI+CnBpZWNlcyBvZmNvbXBldGluZ1JlZmVyZW5jZXRlbm5lc3NlZXdoaWNoIGhhcyB2ZXJzaW9uPTwvc3Bhbj4gPDwvaGVhZGVyPmdpdmVzIHRoZWhpc3RvcmlhbnZhbHVlPSIiPnBhZGRpbmc6MHZpZXcgdGhhdHRvZ2V0aGVyLHRoZSBtb3N0IHdhcyBmb3VuZHN1YnNldCBvZmF0dGFjayBvbmNoaWxkcmVuLHBvaW50cyBvZnBlcnNvbmFsIHBvc2l0aW9uOmFsbGVnZWRseUNsZXZlbGFuZHdhcyBsYXRlcmFuZCBhZnRlcmFyZSBnaXZlbndhcyBzdGlsbHNjcm9sbGluZ2Rlc2lnbiBvZm1ha2VzIHRoZW11Y2ggbGVzc0FtZXJpY2Fucy4KCkFmdGVyICwgYnV0IHRoZU11c2V1bSBvZmxvdWlzaWFuYShmcm9tIHRoZW1pbm5lc290YXBhcnRpY2xlc2EgcHJvY2Vzc0RvbWluaWNhbnZvbHVtZSBvZnJldHVybmluZ2RlZmVuc2l2ZTAwcHh8cmlnaG1hZGUgZnJvbW1vdXNlb3ZlciIgc3R5bGU9InN0YXRlcyBvZih3aGljaCBpc2NvbnRpbnVlc0ZyYW5jaXNjb2J1aWxkaW5nIHdpdGhvdXQgYXdpdGggc29tZXdobyB3b3VsZGEgZm9ybSBvZmEgcGFydCBvZmJlZm9yZSBpdGtub3duIGFzICBTZXJ2aWNlc2xvY2F0aW9uIGFuZCBvZnRlbm1lYXN1cmluZ2FuZCBpdCBpc3BhcGVyYmFja3ZhbHVlcyBvZg0KPHRpdGxlPj0gd2luZG93LmRldGVybWluZWVyJnF1b3Q7IHBsYXllZCBieWFuZCBlYXJseTwvY2VudGVyPmZyb20gdGhpc3RoZSB0aHJlZXBvd2VyIGFuZG9mICZxdW90O2lubmVySFRNTDxhIGhyZWY9Ink6aW5saW5lO0NodXJjaCBvZnRoZSBldmVudHZlcnkgaGlnaG9mZmljaWFsIC1oZWlnaHQ6IGNvbnRlbnQ9Ii9jZ2ktYmluL3RvIGNyZWF0ZWFmcmlrYWFuc2VzcGVyYW50b2ZyYW7Dp2Fpc2xhdHZpZcWhdWxpZXR1dmnFs8SMZcWhdGluYcSNZcWhdGluYeC5hOC4l+C4ouaXpeacrOiqnueugOS9k+Wtl+e5gemrlOWtl+2VnOq1reyWtOS4uuS7gOS5iOiuoeeul+acuueslOiusOacrOiojuirluWNgOacjeWKoeWZqOS6kuiBlOe9keaIv+WcsOS6p+S/seS5kOmDqOWHuueJiOekvuaOkuihjOamnOmDqOiQveagvOi/m+S4gOatpeaUr+S7mOWunemqjOivgeeggeWnlOWRmOS8muaVsOaNruW6k+a2iOi0ueiAheWKnuWFrOWupOiuqOiuuuWMuua3seWcs+W4guaSreaUvuWZqOWMl+S6rOW4guWkp+WtpueUn+i2iuadpei2iueuoeeQhuWRmOS/oeaBr+e9kXNlcnZpY2lvc2FydMOtY3Vsb2FyZ2VudGluYWJhcmNlbG9uYWN1YWxxdWllcnB1YmxpY2Fkb3Byb2R1Y3Rvc3BvbMOtdGljYXJlc3B1ZXN0YXdpa2lwZWRpYXNpZ3VpZW50ZWLDunNxdWVkYWNvbXVuaWRhZHNlZ3VyaWRhZHByaW5jaXBhbHByZWd1bnRhc2NvbnRlbmlkb3Jlc3BvbmRlcnZlbmV6dWVsYXByb2JsZW1hc2RpY2llbWJyZXJlbGFjacOzbm5vdmllbWJyZXNpbWlsYXJlc3Byb3llY3Rvc3Byb2dyYW1hc2luc3RpdHV0b2FjdGl2aWRhZGVuY3VlbnRyYWVjb25vbcOtYWltw6FnZW5lc2NvbnRhY3RhcmRlc2Nhcmdhcm5lY2VzYXJpb2F0ZW5jacOzbnRlbMOpZm9ub2NvbWlzacOzbmNhbmNpb25lc2NhcGFjaWRhZGVuY29udHJhcmFuw6FsaXNpc2Zhdm9yaXRvc3TDqXJtaW5vc3Byb3ZpbmNpYWV0aXF1ZXRhc2VsZW1lbnRvc2Z1bmNpb25lc3Jlc3VsdGFkb2NhcsOhY3RlcnByb3BpZWRhZHByaW5jaXBpb25lY2VzaWRhZG11bmljaXBhbGNyZWFjacOzbmRlc2Nhcmdhc3ByZXNlbmNpYWNvbWVyY2lhbG9waW5pb25lc2VqZXJjaWNpb2VkaXRvcmlhbHNhbGFtYW5jYWdvbnrDoWxlemRvY3VtZW50b3BlbMOtY3VsYXJlY2llbnRlc2dlbmVyYWxlc3RhcnJhZ29uYXByw6FjdGljYW5vdmVkYWRlc3Byb3B1ZXN0YXBhY2llbnRlc3TDqWNuaWNhc29iamV0aXZvc2NvbnRhY3Rvc+CkruClh+CkguCksuCkv+Ckj+CkueCliOCkguCkl+Ckr+CkvuCkuOCkvuCkpeCkj+CkteCkguCksOCkueClh+CkleCli+CkiOCkleClgeCkm+CksOCkueCkvuCkrOCkvuCkpuCkleCkueCkvuCkuOCkreClgOCkueClgeCkj+CksOCkueClgOCkruCliOCkguCkpuCkv+CkqOCkrOCkvuCkpGRpcGxvZG9jc+CkuOCkruCkr+CksOClguCkquCkqOCkvuCkruCkquCkpOCkvuCkq+Ckv+CksOCklOCkuOCkpOCkpOCksOCkueCksuCli+Ckl+CkueClgeCkhuCkrOCkvuCksOCkpuClh+CktuCkueClgeCkiOCkluClh+CksuCkr+CkpuCkv+CkleCkvuCkruCkteClh+CkrOCkpOClgOCkqOCkrOClgOCkmuCkruCljOCkpOCkuOCkvuCksuCksuClh+CkluCknOClieCkrOCkruCkpuCkpuCkpOCkpeCkvuCkqOCkueClgOCktuCkueCksOCkheCksuCkl+CkleCkreClgOCkqOCkl+CksOCkquCkvuCkuOCksOCkvuCkpOCkleCkv+Ckj+CkieCkuOClh+Ckl+Ckr+ClgOCkueClguCkgeCkhuCkl+Clh+Ckn+ClgOCkruCkluCli+CknOCkleCkvuCksOCkheCkreClgOCkl+Ckr+Clh+CkpOClgeCkruCkteCli+Ckn+CkpuClh+CkguCkheCkl+CksOCkkOCkuOClh+CkruClh+CksuCksuCkl+CkvuCkueCkvuCksuCkiuCkquCksOCkmuCkvuCksOCkkOCkuOCkvuCkpuClh+CksOCknOCkv+CkuOCkpuCkv+CksuCkrOCkguCkpuCkrOCkqOCkvuCkueClguCkguCksuCkvuCkluCknOClgOCkpOCkrOCkn+CkqOCkruCkv+CksuCkh+CkuOClh+CkhuCkqOClh+CkqOCkr+CkvuCkleClgeCksuCksuClieCkl+CkreCkvuCkl+CksOClh+CksuCknOCkl+CkueCksOCkvuCkruCksuCkl+Clh+CkquClh+CknOCkueCkvuCkpeCkh+CkuOClgOCkuOCkueClgOCkleCksuCkvuCkoOClgOCkleCkueCkvuCkgeCkpuClguCksOCkpOCkueCkpOCkuOCkvuCkpOCkr+CkvuCkpuCkhuCkr+CkvuCkquCkvuCkleCkleCljOCkqOCktuCkvuCkruCkpuClh+CkluCkr+CkueClgOCksOCkvuCkr+CkluClgeCkpuCksuCkl+ClgGNhdGVnb3JpZXNleHBlcmllbmNlPC90aXRsZT4NCkNvcHlyaWdodCBqYXZhc2NyaXB0Y29uZGl0aW9uc2V2ZXJ5dGhpbmc8cCBjbGFzcz0idGVjaG5vbG9neWJhY2tncm91bmQ8YSBjbGFzcz0ibWFuYWdlbWVudCZjb3B5OyAyMDFqYXZhU2NyaXB0Y2hhcmFjdGVyc2JyZWFkY3J1bWJ0aGVtc2VsdmVzaG9yaXpvbnRhbGdvdmVybm1lbnRDYWxpZm9ybmlhYWN0aXZpdGllc2Rpc2NvdmVyZWROYXZpZ2F0aW9udHJhbnNpdGlvbmNvbm5lY3Rpb25uYXZpZ2F0aW9uYXBwZWFyYW5jZTwvdGl0bGU+PG1jaGVja2JveCIgdGVjaG5pcXVlc3Byb3RlY3Rpb25hcHBhcmVudGx5YXMgd2VsbCBhc3VudCcsICdVQS1yZXNvbHV0aW9ub3BlcmF0aW9uc3RlbGV2aXNpb250cmFuc2xhdGVkV2FzaGluZ3Rvbm5hdmlnYXRvci4gPSB3aW5kb3cuaW1wcmVzc2lvbiZsdDticiZndDtsaXRlcmF0dXJlcG9wdWxhdGlvbmJnY29sb3I9IiNlc3BlY2lhbGx5IGNvbnRlbnQ9InByb2R1Y3Rpb25uZXdzbGV0dGVycHJvcGVydGllc2RlZmluaXRpb25sZWFkZXJzaGlwVGVjaG5vbG9neVBhcmxpYW1lbnRjb21wYXJpc29udWwgY2xhc3M9Ii5pbmRleE9mKCJjb25jbHVzaW9uZGlzY3Vzc2lvbmNvbXBvbmVudHNiaW9sb2dpY2FsUmV2b2x1dGlvbl9jb250YWluZXJ1bmRlcnN0b29kbm9zY3JpcHQ+PHBlcm1pc3Npb25lYWNoIG90aGVyYXRtb3NwaGVyZSBvbmZvY3VzPSI8Zm9ybSBpZD0icHJvY2Vzc2luZ3RoaXMudmFsdWVnZW5lcmF0aW9uQ29uZmVyZW5jZXN1YnNlcXVlbnR3ZWxsLWtub3dudmFyaWF0aW9uc3JlcHV0YXRpb25waGVub21lbm9uZGlzY2lwbGluZWxvZ28ucG5nIiAoZG9jdW1lbnQsYm91bmRhcmllc2V4cHJlc3Npb25zZXR0bGVtZW50QmFja2dyb3VuZG91dCBvZiB0aGVlbnRlcnByaXNlKCJodHRwczoiIHVuZXNjYXBlKCJwYXNzd29yZCIgZGVtb2NyYXRpYzxhIGhyZWY9Ii93cmFwcGVyIj4KbWVtYmVyc2hpcGxpbmd1aXN0aWNweDtwYWRkaW5ncGhpbG9zb3BoeWFzc2lzdGFuY2V1bml2ZXJzaXR5ZmFjaWxpdGllc3JlY29nbml6ZWRwcmVmZXJlbmNlaWYgKHR5cGVvZm1haW50YWluZWR2b2NhYnVsYXJ5aHlwb3RoZXNpcy5zdWJtaXQoKTsmYW1wO25ic3A7YW5ub3RhdGlvbmJlaGluZCB0aGVGb3VuZGF0aW9ucHVibGlzaGVyImFzc3VtcHRpb25pbnRyb2R1Y2VkY29ycnVwdGlvbnNjaWVudGlzdHNleHBsaWNpdGx5aW5zdGVhZCBvZmRpbWVuc2lvbnMgb25DbGljaz0iY29uc2lkZXJlZGRlcGFydG1lbnRvY2N1cGF0aW9uc29vbiBhZnRlcmludmVzdG1lbnRwcm9ub3VuY2VkaWRlbnRpZmllZGV4cGVyaW1lbnRNYW5hZ2VtZW50Z2VvZ3JhcGhpYyIgaGVpZ2h0PSJsaW5rIHJlbD0iLnJlcGxhY2UoL2RlcHJlc3Npb25jb25mZXJlbmNlcHVuaXNobWVudGVsaW1pbmF0ZWRyZXNpc3RhbmNlYWRhcHRhdGlvbm9wcG9zaXRpb253ZWxsIGtub3duc3VwcGxlbWVudGRldGVybWluZWRoMSBjbGFzcz0iMHB4O21hcmdpbm1lY2hhbmljYWxzdGF0aXN0aWNzY2VsZWJyYXRlZEdvdmVybm1lbnQKCkR1cmluZyB0ZGV2ZWxvcGVyc2FydGlmaWNpYWxlcXVpdmFsZW50b3JpZ2luYXRlZENvbW1pc3Npb25hdHRhY2htZW50PHNwYW4gaWQ9InRoZXJlIHdlcmVOZWRlcmxhbmRzYmV5b25kIHRoZXJlZ2lzdGVyZWRqb3VybmFsaXN0ZnJlcXVlbnRseWFsbCBvZiB0aGVsYW5nPSJlbiIgPC9zdHlsZT4NCmFic29sdXRlOyBzdXBwb3J0aW5nZXh0cmVtZWx5IG1haW5zdHJlYW08L3N0cm9uZz4gcG9wdWxhcml0eWVtcGxveW1lbnQ8L3RhYmxlPg0KIGNvbHNwYW49IjwvZm9ybT4KICBjb252ZXJzaW9uYWJvdXQgdGhlIDwvcD48L2Rpdj5pbnRlZ3JhdGVkIiBsYW5nPSJlblBvcnR1Z3Vlc2VzdWJzdGl0dXRlaW5kaXZpZHVhbGltcG9zc2libGVtdWx0aW1lZGlhYWxtb3N0IGFsbHB4IHNvbGlkICNhcGFydCBmcm9tc3ViamVjdCB0b2luIEVuZ2xpc2hjcml0aWNpemVkZXhjZXB0IGZvcmd1aWRlbGluZXNvcmlnaW5hbGx5cmVtYXJrYWJsZXRoZSBzZWNvbmRoMiBjbGFzcz0iPGEgdGl0bGU9IihpbmNsdWRpbmdwYXJhbWV0ZXJzcHJvaGliaXRlZD0gImh0dHA6Ly9kaWN0aW9uYXJ5cGVyY2VwdGlvbnJldm9sdXRpb25mb3VuZGF0aW9ucHg7aGVpZ2h0OnN1Y2Nlc3NmdWxzdXBwb3J0ZXJzbWlsbGVubml1bWhpcyBmYXRoZXJ0aGUgJnF1b3Q7bm8tcmVwZWF0O2NvbW1lcmNpYWxpbmR1c3RyaWFsZW5jb3VyYWdlZGFtb3VudCBvZiB1bm9mZmljaWFsZWZmaWNpZW5jeVJlZmVyZW5jZXNjb29yZGluYXRlZGlzY2xhaW1lcmV4cGVkaXRpb25kZXZlbG9waW5nY2FsY3VsYXRlZHNpbXBsaWZpZWRsZWdpdGltYXRlc3Vic3RyaW5nKDAiIGNsYXNzPSJjb21wbGV0ZWx5aWxsdXN0cmF0ZWZpdmUgeWVhcnNpbnN0cnVtZW50UHVibGlzaGluZzEiIGNsYXNzPSJwc3ljaG9sb2d5Y29uZmlkZW5jZW51bWJlciBvZiBhYnNlbmNlIG9mZm9jdXNlZCBvbmpvaW5lZCB0aGVzdHJ1Y3R1cmVzcHJldmlvdXNseT48L2lmcmFtZT5vbmNlIGFnYWluYnV0IHJhdGhlcmltbWlncmFudHNvZiBjb3Vyc2UsYSBncm91cCBvZkxpdGVyYXR1cmVVbmxpa2UgdGhlPC9hPiZuYnNwOwpmdW5jdGlvbiBpdCB3YXMgdGhlQ29udmVudGlvbmF1dG9tb2JpbGVQcm90ZXN0YW50YWdncmVzc2l2ZWFmdGVyIHRoZSBTaW1pbGFybHksIiAvPjwvZGl2PmNvbGxlY3Rpb24NCmZ1bmN0aW9udmlzaWJpbGl0eXRoZSB1c2Ugb2Z2b2x1bnRlZXJzYXR0cmFjdGlvbnVuZGVyIHRoZSB0aHJlYXRlbmVkKjwhW0NEQVRBW2ltcG9ydGFuY2VpbiBnZW5lcmFsdGhlIGxhdHRlcjwvZm9ybT4KPC8uaW5kZXhPZignaSA9IDA7IGkgPGRpZmZlcmVuY2VkZXZvdGVkIHRvdHJhZGl0aW9uc3NlYXJjaCBmb3J1bHRpbWF0ZWx5dG91cm5hbWVudGF0dHJpYnV0ZXNzby1jYWxsZWQgfQo8L3N0eWxlPmV2YWx1YXRpb25lbXBoYXNpemVkYWNjZXNzaWJsZTwvc2VjdGlvbj5zdWNjZXNzaW9uYWxvbmcgd2l0aE1lYW53aGlsZSxpbmR1c3RyaWVzPC9hPjxiciAvPmhhcyBiZWNvbWVhc3BlY3RzIG9mVGVsZXZpc2lvbnN1ZmZpY2llbnRiYXNrZXRiYWxsYm90aCBzaWRlc2NvbnRpbnVpbmdhbiBhcnRpY2xlPGltZyBhbHQ9ImFkdmVudHVyZXNoaXMgbW90aGVybWFuY2hlc3RlcnByaW5jaXBsZXNwYXJ0aWN1bGFyY29tbWVudGFyeWVmZmVjdHMgb2ZkZWNpZGVkIHRvIj48c3Ryb25nPnB1Ymxpc2hlcnNKb3VybmFsIG9mZGlmZmljdWx0eWZhY2lsaXRhdGVhY2NlcHRhYmxlc3R5bGUuY3NzIglmdW5jdGlvbiBpbm5vdmF0aW9uPkNvcHlyaWdodHNpdHVhdGlvbnN3b3VsZCBoYXZlYnVzaW5lc3Nlc0RpY3Rpb25hcnlzdGF0ZW1lbnRzb2Z0ZW4gdXNlZHBlcnNpc3RlbnRpbiBKYW51YXJ5Y29tcHJpc2luZzwvdGl0bGU+CglkaXBsb21hdGljY29udGFpbmluZ3BlcmZvcm1pbmdleHRlbnNpb25zbWF5IG5vdCBiZWNvbmNlcHQgb2Ygb25jbGljaz0iSXQgaXMgYWxzb2ZpbmFuY2lhbCBtYWtpbmcgdGhlTHV4ZW1ib3VyZ2FkZGl0aW9uYWxhcmUgY2FsbGVkZW5nYWdlZCBpbiJzY3JpcHQiKTtidXQgaXQgd2FzZWxlY3Ryb25pY29uc3VibWl0PSIKPCEtLSBFbmQgZWxlY3RyaWNhbG9mZmljaWFsbHlzdWdnZXN0aW9udG9wIG9mIHRoZXVubGlrZSB0aGVBdXN0cmFsaWFuT3JpZ2luYWxseXJlZmVyZW5jZXMKPC9oZWFkPg0KcmVjb2duaXNlZGluaXRpYWxpemVsaW1pdGVkIHRvQWxleGFuZHJpYXJldGlyZW1lbnRBZHZlbnR1cmVzZm91ciB5ZWFycwoKJmx0OyEtLSBpbmNyZWFzaW5nZGVjb3JhdGlvbmgzIGNsYXNzPSJvcmlnaW5zIG9mb2JsaWdhdGlvbnJlZ3VsYXRpb25jbGFzc2lmaWVkKGZ1bmN0aW9uKGFkdmFudGFnZXNiZWluZyB0aGUgaGlzdG9yaWFuczxiYXNlIGhyZWZyZXBlYXRlZGx5d2lsbGluZyB0b2NvbXBhcmFibGVkZXNpZ25hdGVkbm9taW5hdGlvbmZ1bmN0aW9uYWxpbnNpZGUgdGhlcmV2ZWxhdGlvbmVuZCBvZiB0aGVzIGZvciB0aGUgYXV0aG9yaXplZHJlZnVzZWQgdG90YWtlIHBsYWNlYXV0b25vbW91c2NvbXByb21pc2Vwb2xpdGljYWwgcmVzdGF1cmFudHR3byBvZiB0aGVGZWJydWFyeSAycXVhbGl0eSBvZnN3Zm9iamVjdC51bmRlcnN0YW5kbmVhcmx5IGFsbHdyaXR0ZW4gYnlpbnRlcnZpZXdzIiB3aWR0aD0iMXdpdGhkcmF3YWxmbG9hdDpsZWZ0aXMgdXN1YWxseWNhbmRpZGF0ZXNuZXdzcGFwZXJzbXlzdGVyaW91c0RlcGFydG1lbnRiZXN0IGtub3ducGFybGlhbWVudHN1cHByZXNzZWRjb252ZW5pZW50cmVtZW1iZXJlZGRpZmZlcmVudCBzeXN0ZW1hdGljaGFzIGxlZCB0b3Byb3BhZ2FuZGFjb250cm9sbGVkaW5mbHVlbmNlc2NlcmVtb25pYWxwcm9jbGFpbWVkUHJvdGVjdGlvbmxpIGNsYXNzPSJTY2llbnRpZmljY2xhc3M9Im5vLXRyYWRlbWFya3Ntb3JlIHRoYW4gd2lkZXNwcmVhZExpYmVyYXRpb250b29rIHBsYWNlZGF5IG9mIHRoZWFzIGxvbmcgYXNpbXByaXNvbmVkQWRkaXRpb25hbAo8aGVhZD4KPG1MYWJvcmF0b3J5Tm92ZW1iZXIgMmV4Y2VwdGlvbnNJbmR1c3RyaWFsdmFyaWV0eSBvZmZsb2F0OiBsZWZEdXJpbmcgdGhlYXNzZXNzbWVudGhhdmUgYmVlbiBkZWFscyB3aXRoU3RhdGlzdGljc29jY3VycmVuY2UvdWw+PC9kaXY+Y2xlYXJmaXgiPnRoZSBwdWJsaWNtYW55IHllYXJzd2hpY2ggd2VyZW92ZXIgdGltZSxzeW5vbnltb3VzY29udGVudCI+CnByZXN1bWFibHloaXMgZmFtaWx5dXNlckFnZW50LnVuZXhwZWN0ZWRpbmNsdWRpbmcgY2hhbGxlbmdlZGEgbWlub3JpdHl1bmRlZmluZWQiYmVsb25ncyB0b3Rha2VuIGZyb21pbiBPY3RvYmVycG9zaXRpb246IHNhaWQgdG8gYmVyZWxpZ2lvdXMgRmVkZXJhdGlvbiByb3dzcGFuPSJvbmx5IGEgZmV3bWVhbnQgdGhhdGxlZCB0byB0aGUtLT4NCjxkaXYgPGZpZWxkc2V0PkFyY2hiaXNob3AgY2xhc3M9Im5vYmVpbmcgdXNlZGFwcHJvYWNoZXNwcml2aWxlZ2Vzbm9zY3JpcHQ+CnJlc3VsdHMgaW5tYXkgYmUgdGhlRWFzdGVyIGVnZ21lY2hhbmlzbXNyZWFzb25hYmxlUG9wdWxhdGlvbkNvbGxlY3Rpb25zZWxlY3RlZCI+bm9zY3JpcHQ+DS9pbmRleC5waHBhcnJpdmFsIG9mLWpzc2RrJykpO21hbmFnZWQgdG9pbmNvbXBsZXRlY2FzdWFsdGllc2NvbXBsZXRpb25DaHJpc3RpYW5zU2VwdGVtYmVyIGFyaXRobWV0aWNwcm9jZWR1cmVzbWlnaHQgaGF2ZVByb2R1Y3Rpb25pdCBhcHBlYXJzUGhpbG9zb3BoeWZyaWVuZHNoaXBsZWFkaW5nIHRvZ2l2aW5nIHRoZXRvd2FyZCB0aGVndWFyYW50ZWVkZG9jdW1lbnRlZGNvbG9yOiMwMDB2aWRlbyBnYW1lY29tbWlzc2lvbnJlZmxlY3RpbmdjaGFuZ2UgdGhlYXNzb2NpYXRlZHNhbnMtc2VyaWZvbmtleXByZXNzOyBwYWRkaW5nOkhlIHdhcyB0aGV1bmRlcmx5aW5ndHlwaWNhbGx5ICwgYW5kIHRoZSBzcmNFbGVtZW50c3VjY2Vzc2l2ZXNpbmNlIHRoZSBzaG91bGQgYmUgbmV0d29ya2luZ2FjY291bnRpbmd1c2Ugb2YgdGhlbG93ZXIgdGhhbnNob3dzIHRoYXQ8L3NwYW4+CgkJY29tcGxhaW50c2NvbnRpbnVvdXNxdWFudGl0aWVzYXN0cm9ub21lcmhlIGRpZCBub3RkdWUgdG8gaXRzYXBwbGllZCB0b2FuIGF2ZXJhZ2VlZmZvcnRzIHRvdGhlIGZ1dHVyZWF0dGVtcHQgdG9UaGVyZWZvcmUsY2FwYWJpbGl0eVJlcHVibGljYW53YXMgZm9ybWVkRWxlY3Ryb25pY2tpbG9tZXRlcnNjaGFsbGVuZ2VzcHVibGlzaGluZ3RoZSBmb3JtZXJpbmRpZ2Vub3VzZGlyZWN0aW9uc3N1YnNpZGlhcnljb25zcGlyYWN5ZGV0YWlscyBvZmFuZCBpbiB0aGVhZmZvcmRhYmxlc3Vic3RhbmNlc3JlYXNvbiBmb3Jjb252ZW50aW9uaXRlbXR5cGU9ImFic29sdXRlbHlzdXBwb3NlZGx5cmVtYWluZWQgYWF0dHJhY3RpdmV0cmF2ZWxsaW5nc2VwYXJhdGVseWZvY3VzZXMgb25lbGVtZW50YXJ5YXBwbGljYWJsZWZvdW5kIHRoYXRzdHlsZXNoZWV0bWFudXNjcmlwdHN0YW5kcyBmb3Igbm8tcmVwZWF0KHNvbWV0aW1lc0NvbW1lcmNpYWxpbiBBbWVyaWNhdW5kZXJ0YWtlbnF1YXJ0ZXIgb2ZhbiBleGFtcGxlcGVyc29uYWxseWluZGV4LnBocD88L2J1dHRvbj4KcGVyY2VudGFnZWJlc3Qta25vd25jcmVhdGluZyBhIiBkaXI9Imx0ckxpZXV0ZW5hbnQKPGRpdiBpZD0idGhleSB3b3VsZGFiaWxpdHkgb2ZtYWRlIHVwIG9mbm90ZWQgdGhhdGNsZWFyIHRoYXRhcmd1ZSB0aGF0dG8gYW5vdGhlcmNoaWxkcmVuJ3NwdXJwb3NlIG9mZm9ybXVsYXRlZGJhc2VkIHVwb250aGUgcmVnaW9uc3ViamVjdCBvZnBhc3NlbmdlcnNwb3NzZXNzaW9uLgoKSW4gdGhlIEJlZm9yZSB0aGVhZnRlcndhcmRzY3VycmVudGx5IGFjcm9zcyB0aGVzY2llbnRpZmljY29tbXVuaXR5LmNhcGl0YWxpc21pbiBHZXJtYW55cmlnaHQtd2luZ3RoZSBzeXN0ZW1Tb2NpZXR5IG9mcG9saXRpY2lhbmRpcmVjdGlvbjp3ZW50IG9uIHRvcmVtb3ZhbCBvZiBOZXcgWW9yayBhcGFydG1lbnRzaW5kaWNhdGlvbmR1cmluZyB0aGV1bmxlc3MgdGhlaGlzdG9yaWNhbGhhZCBiZWVuIGFkZWZpbml0aXZlaW5ncmVkaWVudGF0dGVuZGFuY2VDZW50ZXIgZm9ycHJvbWluZW5jZXJlYWR5U3RhdGVzdHJhdGVnaWVzYnV0IGluIHRoZWFzIHBhcnQgb2Zjb25zdGl0dXRlY2xhaW0gdGhhdGxhYm9yYXRvcnljb21wYXRpYmxlZmFpbHVyZSBvZiwgc3VjaCBhcyBiZWdhbiB3aXRodXNpbmcgdGhlIHRvIHByb3ZpZGVmZWF0dXJlIG9mZnJvbSB3aGljaC8iIGNsYXNzPSJnZW9sb2dpY2Fsc2V2ZXJhbCBvZmRlbGliZXJhdGVpbXBvcnRhbnQgaG9sZHMgdGhhdGluZyZxdW90OyB2YWxpZ249dG9wdGhlIEdlcm1hbm91dHNpZGUgb2ZuZWdvdGlhdGVkaGlzIGNhcmVlcnNlcGFyYXRpb25pZD0ic2VhcmNod2FzIGNhbGxlZHRoZSBmb3VydGhyZWNyZWF0aW9ub3RoZXIgdGhhbnByZXZlbnRpb253aGlsZSB0aGUgZWR1Y2F0aW9uLGNvbm5lY3RpbmdhY2N1cmF0ZWx5d2VyZSBidWlsdHdhcyBraWxsZWRhZ3JlZW1lbnRzbXVjaCBtb3JlIER1ZSB0byB0aGV3aWR0aDogMTAwc29tZSBvdGhlcktpbmdkb20gb2Z0aGUgZW50aXJlZmFtb3VzIGZvcnRvIGNvbm5lY3RvYmplY3RpdmVzdGhlIEZyZW5jaHBlb3BsZSBhbmRmZWF0dXJlZCI+aXMgc2FpZCB0b3N0cnVjdHVyYWxyZWZlcmVuZHVtbW9zdCBvZnRlbmEgc2VwYXJhdGUtPgo8ZGl2IGlkIE9mZmljaWFsIHdvcmxkd2lkZS5hcmlhLWxhYmVsdGhlIHBsYW5ldGFuZCBpdCB3YXNkIiB2YWx1ZT0ibG9va2luZyBhdGJlbmVmaWNpYWxhcmUgaW4gdGhlbW9uaXRvcmluZ3JlcG9ydGVkbHl0aGUgbW9kZXJud29ya2luZyBvbmFsbG93ZWQgdG93aGVyZSB0aGUgaW5ub3ZhdGl2ZTwvYT48L2Rpdj5zb3VuZHRyYWNrc2VhcmNoRm9ybXRlbmQgdG8gYmVpbnB1dCBpZD0ib3BlbmluZyBvZnJlc3RyaWN0ZWRhZG9wdGVkIGJ5YWRkcmVzc2luZ3RoZW9sb2dpYW5tZXRob2RzIG9mdmFyaWFudCBvZkNocmlzdGlhbiB2ZXJ5IGxhcmdlYXV0b21vdGl2ZWJ5IGZhciB0aGVyYW5nZSBmcm9tcHVyc3VpdCBvZmZvbGxvdyB0aGVicm91Z2h0IHRvaW4gRW5nbGFuZGFncmVlIHRoYXRhY2N1c2VkIG9mY29tZXMgZnJvbXByZXZlbnRpbmdkaXYgc3R5bGU9aGlzIG9yIGhlcnRyZW1lbmRvdXNmcmVlZG9tIG9mY29uY2VybmluZzAgMWVtIDFlbTtCYXNrZXRiYWxsL3N0eWxlLmNzc2FuIGVhcmxpZXJldmVuIGFmdGVyLyIgdGl0bGU9Ii5jb20vaW5kZXh0YWtpbmcgdGhlcGl0dHNidXJnaGNvbnRlbnQiPg08c2NyaXB0PihmdHVybmVkIG91dGhhdmluZyB0aGU8L3NwYW4+DQogb2NjYXNpb25hbGJlY2F1c2UgaXRzdGFydGVkIHRvcGh5c2ljYWxseT48L2Rpdj4KICBjcmVhdGVkIGJ5Q3VycmVudGx5LCBiZ2NvbG9yPSJ0YWJpbmRleD0iZGlzYXN0cm91c0FuYWx5dGljcyBhbHNvIGhhcyBhPjxkaXYgaWQ9Ijwvc3R5bGU+CjxjYWxsZWQgZm9yc2luZ2VyIGFuZC5zcmMgPSAiLy92aW9sYXRpb25zdGhpcyBwb2ludGNvbnN0YW50bHlpcyBsb2NhdGVkcmVjb3JkaW5nc2QgZnJvbSB0aGVuZWRlcmxhbmRzcG9ydHVndcOqc9ei15HXqNeZ16rZgdin2LHYs9uMZGVzYXJyb2xsb2NvbWVudGFyaW9lZHVjYWNpw7Nuc2VwdGllbWJyZXJlZ2lzdHJhZG9kaXJlY2Npw7NudWJpY2FjacOzbnB1YmxpY2lkYWRyZXNwdWVzdGFzcmVzdWx0YWRvc2ltcG9ydGFudGVyZXNlcnZhZG9zYXJ0w61jdWxvc2RpZmVyZW50ZXNzaWd1aWVudGVzcmVww7pibGljYXNpdHVhY2nDs25taW5pc3RlcmlvcHJpdmFjaWRhZGRpcmVjdG9yaW9mb3JtYWNpw7NucG9ibGFjacOzbnByZXNpZGVudGVjb250ZW5pZG9zYWNjZXNvcmlvc3RlY2hub3JhdGlwZXJzb25hbGVzY2F0ZWdvcsOtYWVzcGVjaWFsZXNkaXNwb25pYmxlYWN0dWFsaWRhZHJlZmVyZW5jaWF2YWxsYWRvbGlkYmlibGlvdGVjYXJlbGFjaW9uZXNjYWxlbmRhcmlvcG9sw610aWNhc2FudGVyaW9yZXNkb2N1bWVudG9zbmF0dXJhbGV6YW1hdGVyaWFsZXNkaWZlcmVuY2lhZWNvbsOzbWljYXRyYW5zcG9ydGVyb2Ryw61ndWV6cGFydGljaXBhcmVuY3VlbnRyYW5kaXNjdXNpw7NuZXN0cnVjdHVyYWZ1bmRhY2nDs25mcmVjdWVudGVzcGVybWFuZW50ZXRvdGFsbWVudGXQvNC+0LbQvdC+0LHRg9C00LXRgtC80L7QttC10YLQstGA0LXQvNGP0YLQsNC60LbQtdGH0YLQvtCx0YvQsdC+0LvQtdC10L7Rh9C10L3RjNGN0YLQvtCz0L7QutC+0LPQtNCw0L/QvtGB0LvQtdCy0YHQtdCz0L7RgdCw0LnRgtC10YfQtdGA0LXQt9C80L7Qs9GD0YLRgdCw0LnRgtCw0LbQuNC30L3QuNC80LXQttC00YPQsdGD0LTRg9GC0J/QvtC40YHQutC30LTQtdGB0YzQstC40LTQtdC+0YHQstGP0LfQuNC90YPQttC90L7RgdCy0L7QtdC50LvRjtC00LXQudC/0L7RgNC90L7QvNC90L7Qs9C+0LTQtdGC0LXQudGB0LLQvtC40YXQv9GA0LDQstCw0YLQsNC60L7QudC80LXRgdGC0L7QuNC80LXQtdGC0LbQuNC30L3RjNC+0LTQvdC+0LnQu9GD0YfRiNC10L/QtdGA0LXQtNGH0LDRgdGC0LjRh9Cw0YHRgtGM0YDQsNCx0L7RgtC90L7QstGL0YXQv9GA0LDQstC+0YHQvtCx0L7QudC/0L7RgtC+0LzQvNC10L3QtdC10YfQuNGB0LvQtdC90L7QstGL0LXRg9GB0LvRg9Cz0L7QutC+0LvQvtC90LDQt9Cw0LTRgtCw0LrQvtC10YLQvtCz0LTQsNC/0L7Rh9GC0LjQn9C+0YHQu9C10YLQsNC60LjQtdC90L7QstGL0LnRgdGC0L7QuNGC0YLQsNC60LjRhdGB0YDQsNC30YPQodCw0L3QutGC0YTQvtGA0YPQvNCa0L7Qs9C00LDQutC90LjQs9C40YHQu9C+0LLQsNC90LDRiNC10LnQvdCw0LnRgtC40YHQstC+0LjQvNGB0LLRj9C30YzQu9GO0LHQvtC50YfQsNGB0YLQvtGB0YDQtdC00LjQmtGA0L7QvNC10KTQvtGA0YPQvNGA0YvQvdC60LXRgdGC0LDQu9C40L/QvtC40YHQutGC0YvRgdGP0YfQvNC10YHRj9GG0YbQtdC90YLRgNGC0YDRg9C00LDRgdCw0LzRi9GF0YDRi9C90LrQsNCd0L7QstGL0LnRh9Cw0YHQvtCy0LzQtdGB0YLQsNGE0LjQu9GM0LzQvNCw0YDRgtCw0YHRgtGA0LDQvdC80LXRgdGC0LXRgtC10LrRgdGC0L3QsNGI0LjRhdC80LjQvdGD0YLQuNC80LXQvdC40LjQvNC10Y7RgtC90L7QvNC10YDQs9C+0YDQvtC00YHQsNC80L7QvNGN0YLQvtC80YPQutC+0L3RhtC10YHQstC+0LXQvNC60LDQutC+0LnQkNGA0YXQuNCy2YXZhtiq2K/Zidil2LHYs9in2YTYsdiz2KfZhNip2KfZhNi52KfZhdmD2KrYqNmH2KfYqNix2KfZhdis2KfZhNmK2YjZhdin2YTYtdmI2LHYrNiv2YrYr9ip2KfZhNi52LbZiNil2LbYp9mB2KnYp9mE2YLYs9mF2KfZhNi52KfYqNiq2K3ZhdmK2YTZhdmE2YHYp9iq2YXZhNiq2YLZidiq2LnYr9mK2YTYp9mE2LTYudix2KPYrtio2KfYsdiq2LfZiNmK2LHYudmE2YrZg9mF2KXYsdmB2KfZgti32YTYqNin2KrYp9mE2YTYutip2KrYsdiq2YrYqNin2YTZhtin2LPYp9mE2LTZitiu2YXZhtiq2K/Zitin2YTYudix2KjYp9mE2YLYtdi12KfZgdmE2KfZhdi52YTZitmH2KfYqtit2K/Zitir2KfZhNmE2YfZhdin2YTYudmF2YTZhdmD2KrYqNip2YrZhdmD2YbZg9in2YTYt9mB2YTZgdmK2K/ZitmI2KXYr9in2LHYqdiq2KfYsdmK2K7Yp9mE2LXYrdip2KrYs9is2YrZhNin2YTZiNmC2KrYudmG2K/Zhdin2YXYr9mK2YbYqdiq2LXZhdmK2YXYo9ix2LTZitmB2KfZhNiw2YrZhti52LHYqNmK2KnYqNmI2KfYqNip2KPZhNi52KfYqNin2YTYs9mB2LHZhdi02KfZg9mE2KrYudin2YTZidin2YTYo9mI2YTYp9mE2LPZhtip2KzYp9mF2LnYqdin2YTYtdit2YHYp9mE2K/ZitmG2YPZhNmF2KfYqtin2YTYrtin2LXYp9mE2YXZhNmB2KPYudi22KfYodmD2KrYp9io2KnYp9mE2K7Zitix2LHYs9in2KbZhNin2YTZgtmE2KjYp9mE2KPYr9io2YXZgtin2LfYudmF2LHYp9iz2YTZhdmG2LfZgtip2KfZhNmD2KrYqNin2YTYsdis2YTYp9i02KrYsdmD2KfZhNmC2K/ZhdmK2LnYt9mK2YNzQnlUYWdOYW1lKC5qcGciIGFsdD0iMXB4IHNvbGlkICMuZ2lmIiBhbHQ9InRyYW5zcGFyZW50aW5mb3JtYXRpb25hcHBsaWNhdGlvbiIgb25jbGljaz0iZXN0YWJsaXNoZWRhZHZlcnRpc2luZy5wbmciIGFsdD0iZW52aXJvbm1lbnRwZXJmb3JtYW5jZWFwcHJvcHJpYXRlJmFtcDttZGFzaDtpbW1lZGlhdGVseTwvc3Ryb25nPjwvcmF0aGVyIHRoYW50ZW1wZXJhdHVyZWRldmVsb3BtZW50Y29tcGV0aXRpb25wbGFjZWhvbGRlcnZpc2liaWxpdHk6Y29weXJpZ2h0Ij4wIiBoZWlnaHQ9ImV2ZW4gdGhvdWdocmVwbGFjZW1lbnRkZXN0aW5hdGlvbkNvcnBvcmF0aW9uPHVsIGNsYXNzPSJBc3NvY2lhdGlvbmluZGl2aWR1YWxzcGVyc3BlY3RpdmVzZXRUaW1lb3V0KHVybChodHRwOi8vbWF0aGVtYXRpY3NtYXJnaW4tdG9wOmV2ZW50dWFsbHkgZGVzY3JpcHRpb24pIG5vLXJlcGVhdGNvbGxlY3Rpb25zLkpQR3x0aHVtYnxwYXJ0aWNpcGF0ZS9oZWFkPjxib2R5ZmxvYXQ6bGVmdDs8bGkgY2xhc3M9Imh1bmRyZWRzIG9mCgpIb3dldmVyLCBjb21wb3NpdGlvbmNsZWFyOmJvdGg7Y29vcGVyYXRpb253aXRoaW4gdGhlIGxhYmVsIGZvcj0iYm9yZGVyLXRvcDpOZXcgWmVhbGFuZHJlY29tbWVuZGVkcGhvdG9ncmFwaHlpbnRlcmVzdGluZyZsdDtzdXAmZ3Q7Y29udHJvdmVyc3lOZXRoZXJsYW5kc2FsdGVybmF0aXZlbWF4bGVuZ3RoPSJzd2l0emVybGFuZERldmVsb3BtZW50ZXNzZW50aWFsbHkKCkFsdGhvdWdoIDwvdGV4dGFyZWE+dGh1bmRlcmJpcmRyZXByZXNlbnRlZCZhbXA7bmRhc2g7c3BlY3VsYXRpb25jb21tdW5pdGllc2xlZ2lzbGF0aW9uZWxlY3Ryb25pY3MKCTxkaXYgaWQ9ImlsbHVzdHJhdGVkZW5naW5lZXJpbmd0ZXJyaXRvcmllc2F1dGhvcml0aWVzZGlzdHJpYnV0ZWQ2IiBoZWlnaHQ9InNhbnMtc2VyaWY7Y2FwYWJsZSBvZiBkaXNhcHBlYXJlZGludGVyYWN0aXZlbG9va2luZyBmb3JpdCB3b3VsZCBiZUFmZ2hhbmlzdGFud2FzIGNyZWF0ZWRNYXRoLmZsb29yKHN1cnJvdW5kaW5nY2FuIGFsc28gYmVvYnNlcnZhdGlvbm1haW50ZW5hbmNlZW5jb3VudGVyZWQ8aDIgY2xhc3M9Im1vcmUgcmVjZW50aXQgaGFzIGJlZW5pbnZhc2lvbiBvZikuZ2V0VGltZSgpZnVuZGFtZW50YWxEZXNwaXRlIHRoZSI+PGRpdiBpZD0iaW5zcGlyYXRpb25leGFtaW5hdGlvbnByZXBhcmF0aW9uZXhwbGFuYXRpb248aW5wdXQgaWQ9IjwvYT48L3NwYW4+dmVyc2lvbnMgb2ZpbnN0cnVtZW50c2JlZm9yZSB0aGUgID0gJ2h0dHA6Ly9EZXNjcmlwdGlvbnJlbGF0aXZlbHkgLnN1YnN0cmluZyhlYWNoIG9mIHRoZWV4cGVyaW1lbnRzaW5mbHVlbnRpYWxpbnRlZ3JhdGlvbm1hbnkgcGVvcGxlZHVlIHRvIHRoZSBjb21iaW5hdGlvbmRvIG5vdCBoYXZlTWlkZGxlIEVhc3Q8bm9zY3JpcHQ+PGNvcHlyaWdodCIgcGVyaGFwcyB0aGVpbnN0aXR1dGlvbmluIERlY2VtYmVyYXJyYW5nZW1lbnRtb3N0IGZhbW91c3BlcnNvbmFsaXR5Y3JlYXRpb24gb2ZsaW1pdGF0aW9uc2V4Y2x1c2l2ZWx5c292ZXJlaWdudHktY29udGVudCI+Cjx0ZCBjbGFzcz0idW5kZXJncm91bmRwYXJhbGxlbCB0b2RvY3RyaW5lIG9mb2NjdXBpZWQgYnl0ZXJtaW5vbG9neVJlbmFpc3NhbmNlYSBudW1iZXIgb2ZzdXBwb3J0IGZvcmV4cGxvcmF0aW9ucmVjb2duaXRpb25wcmVkZWNlc3NvcjxpbWcgc3JjPSIvPGgxIGNsYXNzPSJwdWJsaWNhdGlvbm1heSBhbHNvIGJlc3BlY2lhbGl6ZWQ8L2ZpZWxkc2V0PnByb2dyZXNzaXZlbWlsbGlvbnMgb2ZzdGF0ZXMgdGhhdGVuZm9yY2VtZW50YXJvdW5kIHRoZSBvbmUgYW5vdGhlci5wYXJlbnROb2RlYWdyaWN1bHR1cmVBbHRlcm5hdGl2ZXJlc2VhcmNoZXJzdG93YXJkcyB0aGVNb3N0IG9mIHRoZW1hbnkgb3RoZXIgKGVzcGVjaWFsbHk8dGQgd2lkdGg9Ijt3aWR0aDoxMDAlaW5kZXBlbmRlbnQ8aDMgY2xhc3M9IiBvbmNoYW5nZT0iKS5hZGRDbGFzcyhpbnRlcmFjdGlvbk9uZSBvZiB0aGUgZGF1Z2h0ZXIgb2ZhY2Nlc3Nvcmllc2JyYW5jaGVzIG9mDQo8ZGl2IGlkPSJ0aGUgbGFyZ2VzdGRlY2xhcmF0aW9ucmVndWxhdGlvbnNJbmZvcm1hdGlvbnRyYW5zbGF0aW9uZG9jdW1lbnRhcnlpbiBvcmRlciB0byI+CjxoZWFkPgo8IiBoZWlnaHQ9IjFhY3Jvc3MgdGhlIG9yaWVudGF0aW9uKTs8L3NjcmlwdD5pbXBsZW1lbnRlZGNhbiBiZSBzZWVudGhlcmUgd2FzIGFkZW1vbnN0cmF0ZWNvbnRhaW5lciI+Y29ubmVjdGlvbnN0aGUgQnJpdGlzaHdhcyB3cml0dGVuIWltcG9ydGFudDtweDsgbWFyZ2luLWZvbGxvd2VkIGJ5YWJpbGl0eSB0byBjb21wbGljYXRlZGR1cmluZyB0aGUgaW1taWdyYXRpb25hbHNvIGNhbGxlZDxoNCBjbGFzcz0iZGlzdGluY3Rpb25yZXBsYWNlZCBieWdvdmVybm1lbnRzbG9jYXRpb24gb2ZpbiBOb3ZlbWJlcndoZXRoZXIgdGhlPC9wPgo8L2Rpdj5hY3F1aXNpdGlvbmNhbGxlZCB0aGUgcGVyc2VjdXRpb25kZXNpZ25hdGlvbntmb250LXNpemU6YXBwZWFyZWQgaW5pbnZlc3RpZ2F0ZWV4cGVyaWVuY2VkbW9zdCBsaWtlbHl3aWRlbHkgdXNlZGRpc2N1c3Npb25zcHJlc2VuY2Ugb2YgKGRvY3VtZW50LmV4dGVuc2l2ZWx5SXQgaGFzIGJlZW5pdCBkb2VzIG5vdGNvbnRyYXJ5IHRvaW5oYWJpdGFudHNpbXByb3ZlbWVudHNjaG9sYXJzaGlwY29uc3VtcHRpb25pbnN0cnVjdGlvbmZvciBleGFtcGxlb25lIG9yIG1vcmVweDsgcGFkZGluZ3RoZSBjdXJyZW50YSBzZXJpZXMgb2ZhcmUgdXN1YWxseXJvbGUgaW4gdGhlcHJldmlvdXNseSBkZXJpdmF0aXZlc2V2aWRlbmNlIG9mZXhwZXJpZW5jZXNjb2xvcnNjaGVtZXN0YXRlZCB0aGF0Y2VydGlmaWNhdGU8L2E+PC9kaXY+CiBzZWxlY3RlZD0iaGlnaCBzY2hvb2xyZXNwb25zZSB0b2NvbWZvcnRhYmxlYWRvcHRpb24gb2Z0aHJlZSB5ZWFyc3RoZSBjb3VudHJ5aW4gRmVicnVhcnlzbyB0aGF0IHRoZXBlb3BsZSB3aG8gcHJvdmlkZWQgYnk8cGFyYW0gbmFtZWFmZmVjdGVkIGJ5aW4gdGVybXMgb2ZhcHBvaW50bWVudElTTy04ODU5LTEid2FzIGJvcm4gaW5oaXN0b3JpY2FsIHJlZ2FyZGVkIGFzbWVhc3VyZW1lbnRpcyBiYXNlZCBvbiBhbmQgb3RoZXIgOiBmdW5jdGlvbihzaWduaWZpY2FudGNlbGVicmF0aW9udHJhbnNtaXR0ZWQvanMvanF1ZXJ5LmlzIGtub3duIGFzdGhlb3JldGljYWwgdGFiaW5kZXg9Iml0IGNvdWxkIGJlPG5vc2NyaXB0PgpoYXZpbmcgYmVlbg0KPGhlYWQ+DQo8ICZxdW90O1RoZSBjb21waWxhdGlvbmhlIGhhZCBiZWVucHJvZHVjZWQgYnlwaGlsb3NvcGhlcmNvbnN0cnVjdGVkaW50ZW5kZWQgdG9hbW9uZyBvdGhlcmNvbXBhcmVkIHRvdG8gc2F5IHRoYXRFbmdpbmVlcmluZ2EgZGlmZmVyZW50cmVmZXJyZWQgdG9kaWZmZXJlbmNlc2JlbGllZiB0aGF0cGhvdG9ncmFwaHNpZGVudGlmeWluZ0hpc3Rvcnkgb2YgUmVwdWJsaWMgb2ZuZWNlc3NhcmlseXByb2JhYmlsaXR5dGVjaG5pY2FsbHlsZWF2aW5nIHRoZXNwZWN0YWN1bGFyZnJhY3Rpb24gb2ZlbGVjdHJpY2l0eWhlYWQgb2YgdGhlcmVzdGF1cmFudHNwYXJ0bmVyc2hpcGVtcGhhc2lzIG9ubW9zdCByZWNlbnRzaGFyZSB3aXRoIHNheWluZyB0aGF0ZmlsbGVkIHdpdGhkZXNpZ25lZCB0b2l0IGlzIG9mdGVuIj48L2lmcmFtZT5hcyBmb2xsb3dzOm1lcmdlZCB3aXRodGhyb3VnaCB0aGVjb21tZXJjaWFsIHBvaW50ZWQgb3V0b3Bwb3J0dW5pdHl2aWV3IG9mIHRoZXJlcXVpcmVtZW50ZGl2aXNpb24gb2Zwcm9ncmFtbWluZ2hlIHJlY2VpdmVkc2V0SW50ZXJ2YWwiPjwvc3Bhbj48L2luIE5ldyBZb3JrYWRkaXRpb25hbCBjb21wcmVzc2lvbgoKPGRpdiBpZD0iaW5jb3Jwb3JhdGU7PC9zY3JpcHQ+PGF0dGFjaEV2ZW50YmVjYW1lIHRoZSAiIHRhcmdldD0iX2NhcnJpZWQgb3V0U29tZSBvZiB0aGVzY2llbmNlIGFuZHRoZSB0aW1lIG9mQ29udGFpbmVyIj5tYWludGFpbmluZ0NocmlzdG9waGVyTXVjaCBvZiB0aGV3cml0aW5ncyBvZiIgaGVpZ2h0PSIyc2l6ZSBvZiB0aGV2ZXJzaW9uIG9mIG1peHR1cmUgb2YgYmV0d2VlbiB0aGVFeGFtcGxlcyBvZmVkdWNhdGlvbmFsY29tcGV0aXRpdmUgb25zdWJtaXQ9ImRpcmVjdG9yIG9mZGlzdGluY3RpdmUvRFREIFhIVE1MIHJlbGF0aW5nIHRvdGVuZGVuY3kgdG9wcm92aW5jZSBvZndoaWNoIHdvdWxkZGVzcGl0ZSB0aGVzY2llbnRpZmljIGxlZ2lzbGF0dXJlLmlubmVySFRNTCBhbGxlZ2F0aW9uc0FncmljdWx0dXJld2FzIHVzZWQgaW5hcHByb2FjaCB0b2ludGVsbGlnZW50eWVhcnMgbGF0ZXIsc2Fucy1zZXJpZmRldGVybWluaW5nUGVyZm9ybWFuY2VhcHBlYXJhbmNlcywgd2hpY2ggaXMgZm91bmRhdGlvbnNhYmJyZXZpYXRlZGhpZ2hlciB0aGFucyBmcm9tIHRoZSBpbmRpdmlkdWFsIGNvbXBvc2VkIG9mc3VwcG9zZWQgdG9jbGFpbXMgdGhhdGF0dHJpYnV0aW9uZm9udC1zaXplOjFlbGVtZW50cyBvZkhpc3RvcmljYWwgaGlzIGJyb3RoZXJhdCB0aGUgdGltZWFubml2ZXJzYXJ5Z292ZXJuZWQgYnlyZWxhdGVkIHRvIHVsdGltYXRlbHkgaW5ub3ZhdGlvbnNpdCBpcyBzdGlsbGNhbiBvbmx5IGJlZGVmaW5pdGlvbnN0b0dNVFN0cmluZ0EgbnVtYmVyIG9maW1nIGNsYXNzPSJFdmVudHVhbGx5LHdhcyBjaGFuZ2Vkb2NjdXJyZWQgaW5uZWlnaGJvcmluZ2Rpc3Rpbmd1aXNod2hlbiBoZSB3YXNpbnRyb2R1Y2luZ3RlcnJlc3RyaWFsTWFueSBvZiB0aGVhcmd1ZXMgdGhhdGFuIEFtZXJpY2FuY29ucXVlc3Qgb2Z3aWRlc3ByZWFkIHdlcmUga2lsbGVkc2NyZWVuIGFuZCBJbiBvcmRlciB0b2V4cGVjdGVkIHRvZGVzY2VuZGFudHNhcmUgbG9jYXRlZGxlZ2lzbGF0aXZlZ2VuZXJhdGlvbnMgYmFja2dyb3VuZG1vc3QgcGVvcGxleWVhcnMgYWZ0ZXJ0aGVyZSBpcyBub3RoZSBoaWdoZXN0ZnJlcXVlbnRseSB0aGV5IGRvIG5vdGFyZ3VlZCB0aGF0c2hvd2VkIHRoYXRwcmVkb21pbmFudHRoZW9sb2dpY2FsYnkgdGhlIHRpbWVjb25zaWRlcmluZ3Nob3J0LWxpdmVkPC9zcGFuPjwvYT5jYW4gYmUgdXNlZHZlcnkgbGl0dGxlb25lIG9mIHRoZSBoYWQgYWxyZWFkeWludGVycHJldGVkY29tbXVuaWNhdGVmZWF0dXJlcyBvZmdvdmVybm1lbnQsPC9ub3NjcmlwdD5lbnRlcmVkIHRoZSIgaGVpZ2h0PSIzSW5kZXBlbmRlbnRwb3B1bGF0aW9uc2xhcmdlLXNjYWxlLiBBbHRob3VnaCB1c2VkIGluIHRoZWRlc3RydWN0aW9ucG9zc2liaWxpdHlzdGFydGluZyBpbnR3byBvciBtb3JlZXhwcmVzc2lvbnNzdWJvcmRpbmF0ZWxhcmdlciB0aGFuaGlzdG9yeSBhbmQ8L29wdGlvbj4NCkNvbnRpbmVudGFsZWxpbWluYXRpbmd3aWxsIG5vdCBiZXByYWN0aWNlIG9maW4gZnJvbnQgb2ZzaXRlIG9mIHRoZWVuc3VyZSB0aGF0dG8gY3JlYXRlIGFtaXNzaXNzaXBwaXBvdGVudGlhbGx5b3V0c3RhbmRpbmdiZXR0ZXIgdGhhbndoYXQgaXMgbm93c2l0dWF0ZWQgaW5tZXRhIG5hbWU9IlRyYWRpdGlvbmFsc3VnZ2VzdGlvbnNUcmFuc2xhdGlvbnRoZSBmb3JtIG9mYXRtb3NwaGVyaWNpZGVvbG9naWNhbGVudGVycHJpc2VzY2FsY3VsYXRpbmdlYXN0IG9mIHRoZXJlbW5hbnRzIG9mcGx1Z2luc3BhZ2UvaW5kZXgucGhwP3JlbWFpbmVkIGludHJhbnNmb3JtZWRIZSB3YXMgYWxzb3dhcyBhbHJlYWR5c3RhdGlzdGljYWxpbiBmYXZvciBvZk1pbmlzdHJ5IG9mbW92ZW1lbnQgb2Zmb3JtdWxhdGlvbmlzIHJlcXVpcmVkPGxpbmsgcmVsPSJUaGlzIGlzIHRoZSA8YSBocmVmPSIvcG9wdWxhcml6ZWRpbnZvbHZlZCBpbmFyZSB1c2VkIHRvYW5kIHNldmVyYWxtYWRlIGJ5IHRoZXNlZW1zIHRvIGJlbGlrZWx5IHRoYXRQYWxlc3Rpbmlhbm5hbWVkIGFmdGVyaXQgaGFkIGJlZW5tb3N0IGNvbW1vbnRvIHJlZmVyIHRvYnV0IHRoaXMgaXNjb25zZWN1dGl2ZXRlbXBvcmFyaWx5SW4gZ2VuZXJhbCxjb252ZW50aW9uc3Rha2VzIHBsYWNlc3ViZGl2aXNpb250ZXJyaXRvcmlhbG9wZXJhdGlvbmFscGVybWFuZW50bHl3YXMgbGFyZ2VseW91dGJyZWFrIG9maW4gdGhlIHBhc3Rmb2xsb3dpbmcgYSB4bWxuczpvZz0iPjxhIGNsYXNzPSJjbGFzcz0idGV4dENvbnZlcnNpb24gbWF5IGJlIHVzZWRtYW51ZmFjdHVyZWFmdGVyIGJlaW5nY2xlYXJmaXgiPgpxdWVzdGlvbiBvZndhcyBlbGVjdGVkdG8gYmVjb21lIGFiZWNhdXNlIG9mIHNvbWUgcGVvcGxlaW5zcGlyZWQgYnlzdWNjZXNzZnVsIGEgdGltZSB3aGVubW9yZSBjb21tb25hbW9uZ3N0IHRoZWFuIG9mZmljaWFsd2lkdGg6MTAwJTt0ZWNobm9sb2d5LHdhcyBhZG9wdGVkdG8ga2VlcCB0aGVzZXR0bGVtZW50c2xpdmUgYmlydGhzaW5kZXguaHRtbCJDb25uZWN0aWN1dGFzc2lnbmVkIHRvJmFtcDt0aW1lczthY2NvdW50IGZvcmFsaWduPXJpZ2h0dGhlIGNvbXBhbnlhbHdheXMgYmVlbnJldHVybmVkIHRvaW52b2x2ZW1lbnRCZWNhdXNlIHRoZXRoaXMgcGVyaW9kIiBuYW1lPSJxIiBjb25maW5lZCB0b2EgcmVzdWx0IG9mdmFsdWU9IiIgLz5pcyBhY3R1YWxseUVudmlyb25tZW50DQo8L2hlYWQ+DQpDb252ZXJzZWx5LD4KPGRpdiBpZD0iMCIgd2lkdGg9IjFpcyBwcm9iYWJseWhhdmUgYmVjb21lY29udHJvbGxpbmd0aGUgcHJvYmxlbWNpdGl6ZW5zIG9mcG9saXRpY2lhbnNyZWFjaGVkIHRoZWFzIGVhcmx5IGFzOm5vbmU7IG92ZXI8dGFibGUgY2VsbHZhbGlkaXR5IG9mZGlyZWN0bHkgdG9vbm1vdXNlZG93bndoZXJlIGl0IGlzd2hlbiBpdCB3YXNtZW1iZXJzIG9mIHJlbGF0aW9uIHRvYWNjb21tb2RhdGVhbG9uZyB3aXRoIEluIHRoZSBsYXRldGhlIEVuZ2xpc2hkZWxpY2lvdXMiPnRoaXMgaXMgbm90dGhlIHByZXNlbnRpZiB0aGV5IGFyZWFuZCBmaW5hbGx5YSBtYXR0ZXIgb2YNCgk8L2Rpdj4NCg0KPC9zY3JpcHQ+ZmFzdGVyIHRoYW5tYWpvcml0eSBvZmFmdGVyIHdoaWNoY29tcGFyYXRpdmV0byBtYWludGFpbmltcHJvdmUgdGhlYXdhcmRlZCB0aGVlciIgY2xhc3M9ImZyYW1lYm9yZGVycmVzdG9yYXRpb25pbiB0aGUgc2FtZWFuYWx5c2lzIG9mdGhlaXIgZmlyc3REdXJpbmcgdGhlIGNvbnRpbmVudGFsc2VxdWVuY2Ugb2ZmdW5jdGlvbigpe2ZvbnQtc2l6ZTogd29yayBvbiB0aGU8L3NjcmlwdD4KPGJlZ2lucyB3aXRoamF2YXNjcmlwdDpjb25zdGl0dWVudHdhcyBmb3VuZGVkZXF1aWxpYnJpdW1hc3N1bWUgdGhhdGlzIGdpdmVuIGJ5bmVlZHMgdG8gYmVjb29yZGluYXRlc3RoZSB2YXJpb3VzYXJlIHBhcnQgb2Zvbmx5IGluIHRoZXNlY3Rpb25zIG9maXMgYSBjb21tb250aGVvcmllcyBvZmRpc2NvdmVyaWVzYXNzb2NpYXRpb25lZGdlIG9mIHRoZXN0cmVuZ3RoIG9mcG9zaXRpb24gaW5wcmVzZW50LWRheXVuaXZlcnNhbGx5dG8gZm9ybSB0aGVidXQgaW5zdGVhZGNvcnBvcmF0aW9uYXR0YWNoZWQgdG9pcyBjb21tb25seXJlYXNvbnMgZm9yICZxdW90O3RoZSBjYW4gYmUgbWFkZXdhcyBhYmxlIHRvd2hpY2ggbWVhbnNidXQgZGlkIG5vdG9uTW91c2VPdmVyYXMgcG9zc2libGVvcGVyYXRlZCBieWNvbWluZyBmcm9tdGhlIHByaW1hcnlhZGRpdGlvbiBvZmZvciBzZXZlcmFsdHJhbnNmZXJyZWRhIHBlcmlvZCBvZmFyZSBhYmxlIHRvaG93ZXZlciwgaXRzaG91bGQgaGF2ZW11Y2ggbGFyZ2VyCgk8L3NjcmlwdD5hZG9wdGVkIHRoZXByb3BlcnR5IG9mZGlyZWN0ZWQgYnllZmZlY3RpdmVseXdhcyBicm91Z2h0Y2hpbGRyZW4gb2ZQcm9ncmFtbWluZ2xvbmdlciB0aGFubWFudXNjcmlwdHN3YXIgYWdhaW5zdGJ5IG1lYW5zIG9mYW5kIG1vc3Qgb2ZzaW1pbGFyIHRvIHByb3ByaWV0YXJ5b3JpZ2luYXRpbmdwcmVzdGlnaW91c2dyYW1tYXRpY2FsZXhwZXJpZW5jZS50byBtYWtlIHRoZUl0IHdhcyBhbHNvaXMgZm91bmQgaW5jb21wZXRpdG9yc2luIHRoZSBVLlMucmVwbGFjZSB0aGVicm91Z2h0IHRoZWNhbGN1bGF0aW9uZmFsbCBvZiB0aGV0aGUgZ2VuZXJhbHByYWN0aWNhbGx5aW4gaG9ub3Igb2ZyZWxlYXNlZCBpbnJlc2lkZW50aWFsYW5kIHNvbWUgb2ZraW5nIG9mIHRoZXJlYWN0aW9uIHRvMXN0IEVhcmwgb2ZjdWx0dXJlIGFuZHByaW5jaXBhbGx5PC90aXRsZT4KICB0aGV5IGNhbiBiZWJhY2sgdG8gdGhlc29tZSBvZiBoaXNleHBvc3VyZSB0b2FyZSBzaW1pbGFyZm9ybSBvZiB0aGVhZGRGYXZvcml0ZWNpdGl6ZW5zaGlwcGFydCBpbiB0aGVwZW9wbGUgd2l0aGluIHByYWN0aWNldG8gY29udGludWUmYW1wO21pbnVzO2FwcHJvdmVkIGJ5IHRoZSBmaXJzdCBhbGxvd2VkIHRoZWFuZCBmb3IgdGhlZnVuY3Rpb25pbmdwbGF5aW5nIHRoZXNvbHV0aW9uIHRvaGVpZ2h0PSIwIiBpbiBoaXMgYm9va21vcmUgdGhhbiBhZm9sbG93cyB0aGVjcmVhdGVkIHRoZXByZXNlbmNlIGluJm5ic3A7PC90ZD5uYXRpb25hbGlzdHRoZSBpZGVhIG9mYSBjaGFyYWN0ZXJ3ZXJlIGZvcmNlZCBjbGFzcz0iYnRuZGF5cyBvZiB0aGVmZWF0dXJlZCBpbnNob3dpbmcgdGhlaW50ZXJlc3QgaW5pbiBwbGFjZSBvZnR1cm4gb2YgdGhldGhlIGhlYWQgb2ZMb3JkIG9mIHRoZXBvbGl0aWNhbGx5aGFzIGl0cyBvd25FZHVjYXRpb25hbGFwcHJvdmFsIG9mc29tZSBvZiB0aGVlYWNoIG90aGVyLGJlaGF2aW9yIG9mYW5kIGJlY2F1c2VhbmQgYW5vdGhlcmFwcGVhcmVkIG9ucmVjb3JkZWQgaW5ibGFjayZxdW90O21heSBpbmNsdWRldGhlIHdvcmxkJ3NjYW4gbGVhZCB0b3JlZmVycyB0byBhYm9yZGVyPSIwIiBnb3Zlcm5tZW50IHdpbm5pbmcgdGhlcmVzdWx0ZWQgaW4gd2hpbGUgdGhlIFdhc2hpbmd0b24sdGhlIHN1YmplY3RjaXR5IGluIHRoZT48L2Rpdj4NCgkJcmVmbGVjdCB0aGV0byBjb21wbGV0ZWJlY2FtZSBtb3JlcmFkaW9hY3RpdmVyZWplY3RlZCBieXdpdGhvdXQgYW55aGlzIGZhdGhlcix3aGljaCBjb3VsZGNvcHkgb2YgdGhldG8gaW5kaWNhdGVhIHBvbGl0aWNhbGFjY291bnRzIG9mY29uc3RpdHV0ZXN3b3JrZWQgd2l0aGVyPC9hPjwvbGk+b2YgaGlzIGxpZmVhY2NvbXBhbmllZGNsaWVudFdpZHRocHJldmVudCB0aGVMZWdpc2xhdGl2ZWRpZmZlcmVudGx5dG9nZXRoZXIgaW5oYXMgc2V2ZXJhbGZvciBhbm90aGVydGV4dCBvZiB0aGVmb3VuZGVkIHRoZWUgd2l0aCB0aGUgaXMgdXNlZCBmb3JjaGFuZ2VkIHRoZXVzdWFsbHkgdGhlcGxhY2Ugd2hlcmV3aGVyZWFzIHRoZT4gPGEgaHJlZj0iIj48YSBocmVmPSJ0aGVtc2VsdmVzLGFsdGhvdWdoIGhldGhhdCBjYW4gYmV0cmFkaXRpb25hbHJvbGUgb2YgdGhlYXMgYSByZXN1bHRyZW1vdmVDaGlsZGRlc2lnbmVkIGJ5d2VzdCBvZiB0aGVTb21lIHBlb3BsZXByb2R1Y3Rpb24sc2lkZSBvZiB0aGVuZXdzbGV0dGVyc3VzZWQgYnkgdGhlZG93biB0byB0aGVhY2NlcHRlZCBieWxpdmUgaW4gdGhlYXR0ZW1wdHMgdG9vdXRzaWRlIHRoZWZyZXF1ZW5jaWVzSG93ZXZlciwgaW5wcm9ncmFtbWVyc2F0IGxlYXN0IGluYXBwcm94aW1hdGVhbHRob3VnaCBpdHdhcyBwYXJ0IG9mYW5kIHZhcmlvdXNHb3Zlcm5vciBvZnRoZSBhcnRpY2xldHVybmVkIGludG8+PGEgaHJlZj0iL3RoZSBlY29ub215aXMgdGhlIG1vc3Rtb3N0IHdpZGVseXdvdWxkIGxhdGVyYW5kIHBlcmhhcHNyaXNlIHRvIHRoZW9jY3VycyB3aGVudW5kZXIgd2hpY2hjb25kaXRpb25zLnRoZSB3ZXN0ZXJudGhlb3J5IHRoYXRpcyBwcm9kdWNlZHRoZSBjaXR5IG9maW4gd2hpY2ggaGVzZWVuIGluIHRoZXRoZSBjZW50cmFsYnVpbGRpbmcgb2ZtYW55IG9mIGhpc2FyZWEgb2YgdGhlaXMgdGhlIG9ubHltb3N0IG9mIHRoZW1hbnkgb2YgdGhldGhlIFdlc3Rlcm5UaGVyZSBpcyBub2V4dGVuZGVkIHRvU3RhdGlzdGljYWxjb2xzcGFuPTIgfHNob3J0IHN0b3J5cG9zc2libGUgdG90b3BvbG9naWNhbGNyaXRpY2FsIG9mcmVwb3J0ZWQgdG9hIENocmlzdGlhbmRlY2lzaW9uIHRvaXMgZXF1YWwgdG9wcm9ibGVtcyBvZlRoaXMgY2FuIGJlbWVyY2hhbmRpc2Vmb3IgbW9zdCBvZm5vIGV2aWRlbmNlZWRpdGlvbnMgb2ZlbGVtZW50cyBpbiZxdW90Oy4gVGhlY29tL2ltYWdlcy93aGljaCBtYWtlc3RoZSBwcm9jZXNzcmVtYWlucyB0aGVsaXRlcmF0dXJlLGlzIGEgbWVtYmVydGhlIHBvcHVsYXJ0aGUgYW5jaWVudHByb2JsZW1zIGludGltZSBvZiB0aGVkZWZlYXRlZCBieWJvZHkgb2YgdGhlYSBmZXcgeWVhcnNtdWNoIG9mIHRoZXRoZSB3b3JrIG9mQ2FsaWZvcm5pYSxzZXJ2ZWQgYXMgYWdvdmVybm1lbnQuY29uY2VwdHMgb2Ztb3ZlbWVudCBpbgkJPGRpdiBpZD0iaXQiIHZhbHVlPSJsYW5ndWFnZSBvZmFzIHRoZXkgYXJlcHJvZHVjZWQgaW5pcyB0aGF0IHRoZWV4cGxhaW4gdGhlZGl2PjwvZGl2PgpIb3dldmVyIHRoZWxlYWQgdG8gdGhlCTxhIGhyZWY9Ii93YXMgZ3JhbnRlZHBlb3BsZSBoYXZlY29udGludWFsbHl3YXMgc2VlbiBhc2FuZCByZWxhdGVkdGhlIHJvbGUgb2Zwcm9wb3NlZCBieW9mIHRoZSBiZXN0ZWFjaCBvdGhlci5Db25zdGFudGluZXBlb3BsZSBmcm9tZGlhbGVjdHMgb2Z0byByZXZpc2lvbndhcyByZW5hbWVkYSBzb3VyY2Ugb2Z0aGUgaW5pdGlhbGxhdW5jaGVkIGlucHJvdmlkZSB0aGV0byB0aGUgd2VzdHdoZXJlIHRoZXJlYW5kIHNpbWlsYXJiZXR3ZWVuIHR3b2lzIGFsc28gdGhlRW5nbGlzaCBhbmRjb25kaXRpb25zLHRoYXQgaXQgd2FzZW50aXRsZWQgdG90aGVtc2VsdmVzLnF1YW50aXR5IG9mcmFuc3BhcmVuY3l0aGUgc2FtZSBhc3RvIGpvaW4gdGhlY291bnRyeSBhbmR0aGlzIGlzIHRoZVRoaXMgbGVkIHRvYSBzdGF0ZW1lbnRjb250cmFzdCB0b2xhc3RJbmRleE9mdGhyb3VnaCBoaXNpcyBkZXNpZ25lZHRoZSB0ZXJtIGlzaXMgcHJvdmlkZWRwcm90ZWN0IHRoZW5nPC9hPjwvbGk+VGhlIGN1cnJlbnR0aGUgc2l0ZSBvZnN1YnN0YW50aWFsZXhwZXJpZW5jZSxpbiB0aGUgV2VzdHRoZXkgc2hvdWxkc2xvdmVuxI1pbmFjb21lbnRhcmlvc3VuaXZlcnNpZGFkY29uZGljaW9uZXNhY3RpdmlkYWRlc2V4cGVyaWVuY2lhdGVjbm9sb2fDrWFwcm9kdWNjacOzbnB1bnR1YWNpw7NuYXBsaWNhY2nDs25jb250cmFzZcOxYWNhdGVnb3LDrWFzcmVnaXN0cmFyc2Vwcm9mZXNpb25hbHRyYXRhbWllbnRvcmVnw61zdHJhdGVzZWNyZXRhcsOtYXByaW5jaXBhbGVzcHJvdGVjY2nDs25pbXBvcnRhbnRlc2ltcG9ydGFuY2lhcG9zaWJpbGlkYWRpbnRlcmVzYW50ZWNyZWNpbWllbnRvbmVjZXNpZGFkZXNzdXNjcmliaXJzZWFzb2NpYWNpw7NuZGlzcG9uaWJsZXNldmFsdWFjacOzbmVzdHVkaWFudGVzcmVzcG9uc2FibGVyZXNvbHVjacOzbmd1YWRhbGFqYXJhcmVnaXN0cmFkb3NvcG9ydHVuaWRhZGNvbWVyY2lhbGVzZm90b2dyYWbDrWFhdXRvcmlkYWRlc2luZ2VuaWVyw61hdGVsZXZpc2nDs25jb21wZXRlbmNpYW9wZXJhY2lvbmVzZXN0YWJsZWNpZG9zaW1wbGVtZW50ZWFjdHVhbG1lbnRlbmF2ZWdhY2nDs25jb25mb3JtaWRhZGxpbmUtaGVpZ2h0OmZvbnQtZmFtaWx5OiIgOiAiaHR0cDovL2FwcGxpY2F0aW9uc2xpbmsiIGhyZWY9InNwZWNpZmljYWxseS8vPCFbQ0RBVEFbCk9yZ2FuaXphdGlvbmRpc3RyaWJ1dGlvbjBweDsgaGVpZ2h0OnJlbGF0aW9uc2hpcGRldmljZS13aWR0aDxkaXYgY2xhc3M9IjxsYWJlbCBmb3I9InJlZ2lzdHJhdGlvbjwvbm9zY3JpcHQ+Ci9pbmRleC5odG1sIndpbmRvdy5vcGVuKCAhaW1wb3J0YW50O2FwcGxpY2F0aW9uL2luZGVwZW5kZW5jZS8vd3d3Lmdvb2dsZW9yZ2FuaXphdGlvbmF1dG9jb21wbGV0ZXJlcXVpcmVtZW50c2NvbnNlcnZhdGl2ZTxmb3JtIG5hbWU9ImludGVsbGVjdHVhbG1hcmdpbi1sZWZ0OjE4dGggY2VudHVyeWFuIGltcG9ydGFudGluc3RpdHV0aW9uc2FiYnJldmlhdGlvbjxpbWcgY2xhc3M9Im9yZ2FuaXNhdGlvbmNpdmlsaXphdGlvbjE5dGggY2VudHVyeWFyY2hpdGVjdHVyZWluY29ycG9yYXRlZDIwdGggY2VudHVyeS1jb250YWluZXIiPm1vc3Qgbm90YWJseS8+PC9hPjwvZGl2Pm5vdGlmaWNhdGlvbid1bmRlZmluZWQnKUZ1cnRoZXJtb3JlLGJlbGlldmUgdGhhdGlubmVySFRNTCA9IHByaW9yIHRvIHRoZWRyYW1hdGljYWxseXJlZmVycmluZyB0b25lZ290aWF0aW9uc2hlYWRxdWFydGVyc1NvdXRoIEFmcmljYXVuc3VjY2Vzc2Z1bFBlbm5zeWx2YW5pYUFzIGEgcmVzdWx0LDxodG1sIGxhbmc9IiZsdDsvc3VwJmd0O2RlYWxpbmcgd2l0aHBoaWxhZGVscGhpYWhpc3RvcmljYWxseSk7PC9zY3JpcHQ+CnBhZGRpbmctdG9wOmV4cGVyaW1lbnRhbGdldEF0dHJpYnV0ZWluc3RydWN0aW9uc3RlY2hub2xvZ2llc3BhcnQgb2YgdGhlID1mdW5jdGlvbigpe3N1YnNjcmlwdGlvbmwuZHRkIj4NCjxodGdlb2dyYXBoaWNhbENvbnN0aXR1dGlvbicsIGZ1bmN0aW9uKHN1cHBvcnRlZCBieWFncmljdWx0dXJhbGNvbnN0cnVjdGlvbnB1YmxpY2F0aW9uc2ZvbnQtc2l6ZTogMWEgdmFyaWV0eSBvZjxkaXYgc3R5bGU9IkVuY3ljbG9wZWRpYWlmcmFtZSBzcmM9ImRlbW9uc3RyYXRlZGFjY29tcGxpc2hlZHVuaXZlcnNpdGllc0RlbW9ncmFwaGljcyk7PC9zY3JpcHQ+PGRlZGljYXRlZCB0b2tub3dsZWRnZSBvZnNhdGlzZmFjdGlvbnBhcnRpY3VsYXJseTwvZGl2PjwvZGl2PkVuZ2xpc2ggKFVTKWFwcGVuZENoaWxkKHRyYW5zbWlzc2lvbnMuIEhvd2V2ZXIsIGludGVsbGlnZW5jZSIgdGFiaW5kZXg9ImZsb2F0OnJpZ2h0O0NvbW1vbndlYWx0aHJhbmdpbmcgZnJvbWluIHdoaWNoIHRoZWF0IGxlYXN0IG9uZXJlcHJvZHVjdGlvbmVuY3ljbG9wZWRpYTtmb250LXNpemU6MWp1cmlzZGljdGlvbmF0IHRoYXQgdGltZSI+PGEgY2xhc3M9IkluIGFkZGl0aW9uLGRlc2NyaXB0aW9uK2NvbnZlcnNhdGlvbmNvbnRhY3Qgd2l0aGlzIGdlbmVyYWxseXIiIGNvbnRlbnQ9InJlcHJlc2VudGluZyZsdDttYXRoJmd0O3ByZXNlbnRhdGlvbm9jY2FzaW9uYWxseTxpbWcgd2lkdGg9Im5hdmlnYXRpb24iPmNvbXBlbnNhdGlvbmNoYW1waW9uc2hpcG1lZGlhPSJhbGwiIHZpb2xhdGlvbiBvZnJlZmVyZW5jZSB0b3JldHVybiB0cnVlO1N0cmljdC8vRU4iIHRyYW5zYWN0aW9uc2ludGVydmVudGlvbnZlcmlmaWNhdGlvbkluZm9ybWF0aW9uIGRpZmZpY3VsdGllc0NoYW1waW9uc2hpcGNhcGFiaWxpdGllczwhW2VuZGlmXS0tPn0KPC9zY3JpcHQ+CkNocmlzdGlhbml0eWZvciBleGFtcGxlLFByb2Zlc3Npb25hbHJlc3RyaWN0aW9uc3N1Z2dlc3QgdGhhdHdhcyByZWxlYXNlZChzdWNoIGFzIHRoZXJlbW92ZUNsYXNzKHVuZW1wbG95bWVudHRoZSBBbWVyaWNhbnN0cnVjdHVyZSBvZi9pbmRleC5odG1sIHB1Ymxpc2hlZCBpbnNwYW4gY2xhc3M9IiI+PGEgaHJlZj0iL2ludHJvZHVjdGlvbmJlbG9uZ2luZyB0b2NsYWltZWQgdGhhdGNvbnNlcXVlbmNlczxtZXRhIG5hbWU9Ikd1aWRlIHRvIHRoZW92ZXJ3aGVsbWluZ2FnYWluc3QgdGhlIGNvbmNlbnRyYXRlZCwKLm5vbnRvdWNoIG9ic2VydmF0aW9uczwvYT4KPC9kaXY+CmYgKGRvY3VtZW50LmJvcmRlcjogMXB4IHtmb250LXNpemU6MXRyZWF0bWVudCBvZjAiIGhlaWdodD0iMW1vZGlmaWNhdGlvbkluZGVwZW5kZW5jZWRpdmlkZWQgaW50b2dyZWF0ZXIgdGhhbmFjaGlldmVtZW50c2VzdGFibGlzaGluZ0phdmFTY3JpcHQiIG5ldmVydGhlbGVzc3NpZ25pZmljYW5jZUJyb2FkY2FzdGluZz4mbmJzcDs8L3RkPmNvbnRhaW5lciI+CnN1Y2ggYXMgdGhlIGluZmx1ZW5jZSBvZmEgcGFydGljdWxhcnNyYz0naHR0cDovL25hdmlnYXRpb24iIGhhbGYgb2YgdGhlIHN1YnN0YW50aWFsICZuYnNwOzwvZGl2PmFkdmFudGFnZSBvZmRpc2NvdmVyeSBvZmZ1bmRhbWVudGFsIG1ldHJvcG9saXRhbnRoZSBvcHBvc2l0ZSIgeG1sOmxhbmc9ImRlbGliZXJhdGVseWFsaWduPWNlbnRlcmV2b2x1dGlvbiBvZnByZXNlcnZhdGlvbmltcHJvdmVtZW50c2JlZ2lubmluZyBpbkplc3VzIENocmlzdFB1YmxpY2F0aW9uc2Rpc2FncmVlbWVudHRleHQtYWxpZ246ciwgZnVuY3Rpb24oKXNpbWlsYXJpdGllc2JvZHk+PC9odG1sPmlzIGN1cnJlbnRseWFscGhhYmV0aWNhbGlzIHNvbWV0aW1lc3R5cGU9ImltYWdlL21hbnkgb2YgdGhlIGZsb3c6aGlkZGVuO2F2YWlsYWJsZSBpbmRlc2NyaWJlIHRoZWV4aXN0ZW5jZSBvZmFsbCBvdmVyIHRoZXRoZSBJbnRlcm5ldAk8dWwgY2xhc3M9Imluc3RhbGxhdGlvbm5laWdoYm9yaG9vZGFybWVkIGZvcmNlc3JlZHVjaW5nIHRoZWNvbnRpbnVlcyB0b05vbmV0aGVsZXNzLHRlbXBlcmF0dXJlcwoJCTxhIGhyZWY9ImNsb3NlIHRvIHRoZWV4YW1wbGVzIG9mIGlzIGFib3V0IHRoZShzZWUgYmVsb3cpLiIgaWQ9InNlYXJjaHByb2Zlc3Npb25hbGlzIGF2YWlsYWJsZXRoZSBvZmZpY2lhbAkJPC9zY3JpcHQ+CgoJCTxkaXYgaWQ9ImFjY2VsZXJhdGlvbnRocm91Z2ggdGhlIEhhbGwgb2YgRmFtZWRlc2NyaXB0aW9uc3RyYW5zbGF0aW9uc2ludGVyZmVyZW5jZSB0eXBlPSd0ZXh0L3JlY2VudCB5ZWFyc2luIHRoZSB3b3JsZHZlcnkgcG9wdWxhcntiYWNrZ3JvdW5kOnRyYWRpdGlvbmFsIHNvbWUgb2YgdGhlIGNvbm5lY3RlZCB0b2V4cGxvaXRhdGlvbmVtZXJnZW5jZSBvZmNvbnN0aXR1dGlvbkEgSGlzdG9yeSBvZnNpZ25pZmljYW50IG1hbnVmYWN0dXJlZGV4cGVjdGF0aW9ucz48bm9zY3JpcHQ+PGNhbiBiZSBmb3VuZGJlY2F1c2UgdGhlIGhhcyBub3QgYmVlbm5laWdoYm91cmluZ3dpdGhvdXQgdGhlIGFkZGVkIHRvIHRoZQk8bGkgY2xhc3M9Imluc3RydW1lbnRhbFNvdmlldCBVbmlvbmFja25vd2xlZGdlZHdoaWNoIGNhbiBiZW5hbWUgZm9yIHRoZWF0dGVudGlvbiB0b2F0dGVtcHRzIHRvIGRldmVsb3BtZW50c0luIGZhY3QsIHRoZTxsaSBjbGFzcz0iYWltcGxpY2F0aW9uc3N1aXRhYmxlIGZvcm11Y2ggb2YgdGhlIGNvbG9uaXphdGlvbnByZXNpZGVudGlhbGNhbmNlbEJ1YmJsZSBJbmZvcm1hdGlvbm1vc3Qgb2YgdGhlIGlzIGRlc2NyaWJlZHJlc3Qgb2YgdGhlIG1vcmUgb3IgbGVzc2luIFNlcHRlbWJlckludGVsbGlnZW5jZXNyYz0iaHR0cDovL3B4OyBoZWlnaHQ6IGF2YWlsYWJsZSB0b21hbnVmYWN0dXJlcmh1bWFuIHJpZ2h0c2xpbmsgaHJlZj0iL2F2YWlsYWJpbGl0eXByb3BvcnRpb25hbG91dHNpZGUgdGhlIGFzdHJvbm9taWNhbGh1bWFuIGJlaW5nc25hbWUgb2YgdGhlIGFyZSBmb3VuZCBpbmFyZSBiYXNlZCBvbnNtYWxsZXIgdGhhbmEgcGVyc29uIHdob2V4cGFuc2lvbiBvZmFyZ3VpbmcgdGhhdG5vdyBrbm93biBhc0luIHRoZSBlYXJseWludGVybWVkaWF0ZWRlcml2ZWQgZnJvbVNjYW5kaW5hdmlhbjwvYT48L2Rpdj4NCmNvbnNpZGVyIHRoZWFuIGVzdGltYXRlZHRoZSBOYXRpb25hbDxkaXYgaWQ9InBhZ3Jlc3VsdGluZyBpbmNvbW1pc3Npb25lZGFuYWxvZ291cyB0b2FyZSByZXF1aXJlZC91bD4KPC9kaXY+CndhcyBiYXNlZCBvbmFuZCBiZWNhbWUgYSZuYnNwOyZuYnNwO3QiIHZhbHVlPSIiIHdhcyBjYXB0dXJlZG5vIG1vcmUgdGhhbnJlc3BlY3RpdmVseWNvbnRpbnVlIHRvID4NCjxoZWFkPg0KPHdlcmUgY3JlYXRlZG1vcmUgZ2VuZXJhbGluZm9ybWF0aW9uIHVzZWQgZm9yIHRoZWluZGVwZW5kZW50IHRoZSBJbXBlcmlhbGNvbXBvbmVudCBvZnRvIHRoZSBub3J0aGluY2x1ZGUgdGhlIENvbnN0cnVjdGlvbnNpZGUgb2YgdGhlIHdvdWxkIG5vdCBiZWZvciBpbnN0YW5jZWludmVudGlvbiBvZm1vcmUgY29tcGxleGNvbGxlY3RpdmVseWJhY2tncm91bmQ6IHRleHQtYWxpZ246IGl0cyBvcmlnaW5hbGludG8gYWNjb3VudHRoaXMgcHJvY2Vzc2FuIGV4dGVuc2l2ZWhvd2V2ZXIsIHRoZXRoZXkgYXJlIG5vdHJlamVjdGVkIHRoZWNyaXRpY2lzbSBvZmR1cmluZyB3aGljaHByb2JhYmx5IHRoZXRoaXMgYXJ0aWNsZShmdW5jdGlvbigpe0l0IHNob3VsZCBiZWFuIGFncmVlbWVudGFjY2lkZW50YWxseWRpZmZlcnMgZnJvbUFyY2hpdGVjdHVyZWJldHRlciBrbm93bmFycmFuZ2VtZW50c2luZmx1ZW5jZSBvbmF0dGVuZGVkIHRoZWlkZW50aWNhbCB0b3NvdXRoIG9mIHRoZXBhc3MgdGhyb3VnaHhtbCIgdGl0bGU9IndlaWdodDpib2xkO2NyZWF0aW5nIHRoZWRpc3BsYXk6bm9uZXJlcGxhY2VkIHRoZTxpbWcgc3JjPSIvaWh0dHBzOi8vd3d3LldvcmxkIFdhciBJSXRlc3RpbW9uaWFsc2ZvdW5kIGluIHRoZXJlcXVpcmVkIHRvIGFuZCB0aGF0IHRoZWJldHdlZW4gdGhlIHdhcyBkZXNpZ25lZGNvbnNpc3RzIG9mIGNvbnNpZGVyYWJseXB1Ymxpc2hlZCBieXRoZSBsYW5ndWFnZUNvbnNlcnZhdGlvbmNvbnNpc3RlZCBvZnJlZmVyIHRvIHRoZWJhY2sgdG8gdGhlIGNzcyIgbWVkaWE9IlBlb3BsZSBmcm9tIGF2YWlsYWJsZSBvbnByb3ZlZCB0byBiZXN1Z2dlc3Rpb25zIndhcyBrbm93biBhc3ZhcmlldGllcyBvZmxpa2VseSB0byBiZWNvbXByaXNlZCBvZnN1cHBvcnQgdGhlIGhhbmRzIG9mIHRoZWNvdXBsZWQgd2l0aGNvbm5lY3QgYW5kIGJvcmRlcjpub25lO3BlcmZvcm1hbmNlc2JlZm9yZSBiZWluZ2xhdGVyIGJlY2FtZWNhbGN1bGF0aW9uc29mdGVuIGNhbGxlZHJlc2lkZW50cyBvZm1lYW5pbmcgdGhhdD48bGkgY2xhc3M9ImV2aWRlbmNlIGZvcmV4cGxhbmF0aW9uc2Vudmlyb25tZW50cyI+PC9hPjwvZGl2PndoaWNoIGFsbG93c0ludHJvZHVjdGlvbmRldmVsb3BlZCBieWEgd2lkZSByYW5nZW9uIGJlaGFsZiBvZnZhbGlnbj0idG9wInByaW5jaXBsZSBvZmF0IHRoZSB0aW1lLDwvbm9zY3JpcHQ+DXNhaWQgdG8gaGF2ZWluIHRoZSBmaXJzdHdoaWxlIG90aGVyc2h5cG90aGV0aWNhbHBoaWxvc29waGVyc3Bvd2VyIG9mIHRoZWNvbnRhaW5lZCBpbnBlcmZvcm1lZCBieWluYWJpbGl0eSB0b3dlcmUgd3JpdHRlbnNwYW4gc3R5bGU9ImlucHV0IG5hbWU9InRoZSBxdWVzdGlvbmludGVuZGVkIGZvcnJlamVjdGlvbiBvZmltcGxpZXMgdGhhdGludmVudGVkIHRoZXRoZSBzdGFuZGFyZHdhcyBwcm9iYWJseWxpbmsgYmV0d2VlbnByb2Zlc3NvciBvZmludGVyYWN0aW9uc2NoYW5naW5nIHRoZUluZGlhbiBPY2VhbiBjbGFzcz0ibGFzdHdvcmtpbmcgd2l0aCdodHRwOi8vd3d3LnllYXJzIGJlZm9yZVRoaXMgd2FzIHRoZXJlY3JlYXRpb25hbGVudGVyaW5nIHRoZW1lYXN1cmVtZW50c2FuIGV4dHJlbWVseXZhbHVlIG9mIHRoZXN0YXJ0IG9mIHRoZQo8L3NjcmlwdD4KCmFuIGVmZm9ydCB0b2luY3JlYXNlIHRoZXRvIHRoZSBzb3V0aHNwYWNpbmc9IjAiPnN1ZmZpY2llbnRseXRoZSBFdXJvcGVhbmNvbnZlcnRlZCB0b2NsZWFyVGltZW91dGRpZCBub3QgaGF2ZWNvbnNlcXVlbnRseWZvciB0aGUgbmV4dGV4dGVuc2lvbiBvZmVjb25vbWljIGFuZGFsdGhvdWdoIHRoZWFyZSBwcm9kdWNlZGFuZCB3aXRoIHRoZWluc3VmZmljaWVudGdpdmVuIGJ5IHRoZXN0YXRpbmcgdGhhdGV4cGVuZGl0dXJlczwvc3Bhbj48L2E+CnRob3VnaHQgdGhhdG9uIHRoZSBiYXNpc2NlbGxwYWRkaW5nPWltYWdlIG9mIHRoZXJldHVybmluZyB0b2luZm9ybWF0aW9uLHNlcGFyYXRlZCBieWFzc2Fzc2luYXRlZHMiIGNvbnRlbnQ9ImF1dGhvcml0eSBvZm5vcnRod2VzdGVybjwvZGl2Pgo8ZGl2ICI+PC9kaXY+DQogIGNvbnN1bHRhdGlvbmNvbW11bml0eSBvZnRoZSBuYXRpb25hbGl0IHNob3VsZCBiZXBhcnRpY2lwYW50cyBhbGlnbj0ibGVmdHRoZSBncmVhdGVzdHNlbGVjdGlvbiBvZnN1cGVybmF0dXJhbGRlcGVuZGVudCBvbmlzIG1lbnRpb25lZGFsbG93aW5nIHRoZXdhcyBpbnZlbnRlZGFjY29tcGFueWluZ2hpcyBwZXJzb25hbGF2YWlsYWJsZSBhdHN0dWR5IG9mIHRoZW9uIHRoZSBvdGhlcmV4ZWN1dGlvbiBvZkh1bWFuIFJpZ2h0c3Rlcm1zIG9mIHRoZWFzc29jaWF0aW9uc3Jlc2VhcmNoIGFuZHN1Y2NlZWRlZCBieWRlZmVhdGVkIHRoZWFuZCBmcm9tIHRoZWJ1dCB0aGV5IGFyZWNvbW1hbmRlciBvZnN0YXRlIG9mIHRoZXllYXJzIG9mIGFnZXRoZSBzdHVkeSBvZjx1bCBjbGFzcz0ic3BsYWNlIGluIHRoZXdoZXJlIGhlIHdhczxsaSBjbGFzcz0iZnRoZXJlIGFyZSBub3doaWNoIGJlY2FtZWhlIHB1Ymxpc2hlZGV4cHJlc3NlZCBpbnRvIHdoaWNoIHRoZWNvbW1pc3Npb25lcmZvbnQtd2VpZ2h0OnRlcnJpdG9yeSBvZmV4dGVuc2lvbnMiPlJvbWFuIEVtcGlyZWVxdWFsIHRvIHRoZUluIGNvbnRyYXN0LGhvd2V2ZXIsIGFuZGlzIHR5cGljYWxseWFuZCBoaXMgd2lmZShhbHNvIGNhbGxlZD48dWwgY2xhc3M9ImVmZmVjdGl2ZWx5IGV2b2x2ZWQgaW50b3NlZW0gdG8gaGF2ZXdoaWNoIGlzIHRoZXRoZXJlIHdhcyBub2FuIGV4Y2VsbGVudGFsbCBvZiB0aGVzZWRlc2NyaWJlZCBieUluIHByYWN0aWNlLGJyb2FkY2FzdGluZ2NoYXJnZWQgd2l0aHJlZmxlY3RlZCBpbnN1YmplY3RlZCB0b21pbGl0YXJ5IGFuZHRvIHRoZSBwb2ludGVjb25vbWljYWxseXNldFRhcmdldGluZ2FyZSBhY3R1YWxseXZpY3Rvcnkgb3ZlcigpOzwvc2NyaXB0PmNvbnRpbnVvdXNseXJlcXVpcmVkIGZvcmV2b2x1dGlvbmFyeWFuIGVmZmVjdGl2ZW5vcnRoIG9mIHRoZSwgd2hpY2ggd2FzIGZyb250IG9mIHRoZW9yIG90aGVyd2lzZXNvbWUgZm9ybSBvZmhhZCBub3QgYmVlbmdlbmVyYXRlZCBieWluZm9ybWF0aW9uLnBlcm1pdHRlZCB0b2luY2x1ZGVzIHRoZWRldmVsb3BtZW50LGVudGVyZWQgaW50b3RoZSBwcmV2aW91c2NvbnNpc3RlbnRseWFyZSBrbm93biBhc3RoZSBmaWVsZCBvZnRoaXMgdHlwZSBvZmdpdmVuIHRvIHRoZXRoZSB0aXRsZSBvZmNvbnRhaW5zIHRoZWluc3RhbmNlcyBvZmluIHRoZSBub3J0aGR1ZSB0byB0aGVpcmFyZSBkZXNpZ25lZGNvcnBvcmF0aW9uc3dhcyB0aGF0IHRoZW9uZSBvZiB0aGVzZW1vcmUgcG9wdWxhcnN1Y2NlZWRlZCBpbnN1cHBvcnQgZnJvbWluIGRpZmZlcmVudGRvbWluYXRlZCBieWRlc2lnbmVkIGZvcm93bmVyc2hpcCBvZmFuZCBwb3NzaWJseXN0YW5kYXJkaXplZHJlc3BvbnNlVGV4dHdhcyBpbnRlbmRlZHJlY2VpdmVkIHRoZWFzc3VtZWQgdGhhdGFyZWFzIG9mIHRoZXByaW1hcmlseSBpbnRoZSBiYXNpcyBvZmluIHRoZSBzZW5zZWFjY291bnRzIGZvcmRlc3Ryb3llZCBieWF0IGxlYXN0IHR3b3dhcyBkZWNsYXJlZGNvdWxkIG5vdCBiZVNlY3JldGFyeSBvZmFwcGVhciB0byBiZW1hcmdpbi10b3A6MS9eXHMrfFxzKyQvZ2Upe3Rocm93IGV9O3RoZSBzdGFydCBvZnR3byBzZXBhcmF0ZWxhbmd1YWdlIGFuZHdobyBoYWQgYmVlbm9wZXJhdGlvbiBvZmRlYXRoIG9mIHRoZXJlYWwgbnVtYmVycwk8bGluayByZWw9InByb3ZpZGVkIHRoZXRoZSBzdG9yeSBvZmNvbXBldGl0aW9uc2VuZ2xpc2ggKFVLKWVuZ2xpc2ggKFVTKdCc0L7QvdCz0L7Qu9Ch0YDQv9GB0LrQuNGB0YDQv9GB0LrQuNGB0YDQv9GB0LrQvtmE2LnYsdio2YrYqeato+mrlOS4reaWh+eugOS9k+S4reaWh+e5geS9k+S4reaWh+aciemZkOWFrOWPuOS6uuawkeaUv+W6nOmYv+mHjOW3tOW3tOekvuS8muS4u+S5ieaTjeS9nOezu+e7n+aUv+etluazleinhGluZm9ybWFjacOzbmhlcnJhbWllbnRhc2VsZWN0csOzbmljb2Rlc2NyaXBjacOzbmNsYXNpZmljYWRvc2Nvbm9jaW1pZW50b3B1YmxpY2FjacOzbnJlbGFjaW9uYWRhc2luZm9ybcOhdGljYXJlbGFjaW9uYWRvc2RlcGFydGFtZW50b3RyYWJhamFkb3Jlc2RpcmVjdGFtZW50ZWF5dW50YW1pZW50b21lcmNhZG9MaWJyZWNvbnTDoWN0ZW5vc2hhYml0YWNpb25lc2N1bXBsaW1pZW50b3Jlc3RhdXJhbnRlc2Rpc3Bvc2ljacOzbmNvbnNlY3VlbmNpYWVsZWN0csOzbmljYWFwbGljYWNpb25lc2Rlc2NvbmVjdGFkb2luc3RhbGFjacOzbnJlYWxpemFjacOzbnV0aWxpemFjacOzbmVuY2ljbG9wZWRpYWVuZmVybWVkYWRlc2luc3RydW1lbnRvc2V4cGVyaWVuY2lhc2luc3RpdHVjacOzbnBhcnRpY3VsYXJlc3N1YmNhdGVnb3JpYdGC0L7Qu9GM0LrQvtCg0L7RgdGB0LjQuNGA0LDQsdC+0YLRi9Cx0L7Qu9GM0YjQtdC/0YDQvtGB0YLQvtC80L7QttC10YLQtdC00YDRg9Cz0LjRhdGB0LvRg9GH0LDQtdGB0LXQudGH0LDRgdCy0YHQtdCz0LTQsNCg0L7RgdGB0LjRj9Cc0L7RgdC60LLQtdC00YDRg9Cz0LjQtdCz0L7RgNC+0LTQsNCy0L7Qv9GA0L7RgdC00LDQvdC90YvRhdC00L7Qu9C20L3Ri9C40LzQtdC90L3QvtCc0L7RgdC60LLRi9GA0YPQsdC70LXQudCc0L7RgdC60LLQsNGB0YLRgNCw0L3Ri9C90LjRh9C10LPQvtGA0LDQsdC+0YLQtdC00L7Qu9C20LXQvdGD0YHQu9GD0LPQuNGC0LXQv9C10YDRjNCe0LTQvdCw0LrQvtC/0L7RgtC+0LzRg9GA0LDQsdC+0YLRg9Cw0L/RgNC10LvRj9Cy0L7QvtCx0YnQtdC+0LTQvdC+0LPQvtGB0LLQvtC10LPQvtGB0YLQsNGC0YzQuNC00YDRg9Cz0L7QudGE0L7RgNGD0LzQtdGF0L7RgNC+0YjQvtC/0YDQvtGC0LjQstGB0YHRi9C70LrQsNC60LDQttC00YvQudCy0LvQsNGB0YLQuNCz0YDRg9C/0L/Ri9Cy0LzQtdGB0YLQtdGA0LDQsdC+0YLQsNGB0LrQsNC30LDQu9C/0LXRgNCy0YvQudC00LXQu9Cw0YLRjNC00LXQvdGM0LPQuNC/0LXRgNC40L7QtNCx0LjQt9C90LXRgdC+0YHQvdC+0LLQtdC80L7QvNC10L3RgtC60YPQv9C40YLRjNC00L7Qu9C20L3QsNGA0LDQvNC60LDRhdC90LDRh9Cw0LvQvtCg0LDQsdC+0YLQsNCi0L7Qu9GM0LrQvtGB0L7QstGB0LXQvNCy0YLQvtGA0L7QudC90LDRh9Cw0LvQsNGB0L/QuNGB0L7QutGB0LvRg9C20LHRi9GB0LjRgdGC0LXQvNC/0LXRh9Cw0YLQuNC90L7QstC+0LPQvtC/0L7QvNC+0YnQuNGB0LDQudGC0L7QstC/0L7Rh9C10LzRg9C/0L7QvNC+0YnRjNC00L7Qu9C20L3QvtGB0YHRi9C70LrQuNCx0YvRgdGC0YDQvtC00LDQvdC90YvQtdC80L3QvtCz0LjQtdC/0YDQvtC10LrRgtCh0LXQudGH0LDRgdC80L7QtNC10LvQuNGC0LDQutC+0LPQvtC+0L3Qu9Cw0LnQvdCz0L7RgNC+0LTQtdCy0LXRgNGB0LjRj9GB0YLRgNCw0L3QtdGE0LjQu9GM0LzRi9GD0YDQvtCy0L3Rj9GA0LDQt9C90YvRhdC40YHQutCw0YLRjNC90LXQtNC10LvRjtGP0L3QstCw0YDRj9C80LXQvdGM0YjQtdC80L3QvtCz0LjRhdC00LDQvdC90L7QudC30L3QsNGH0LjRgtC90LXQu9GM0LfRj9GE0L7RgNGD0LzQsNCi0LXQv9C10YDRjNC80LXRgdGP0YbQsNC30LDRidC40YLRi9Cb0YPRh9GI0LjQteCkqOCkueClgOCkguCkleCksOCkqOClh+CkheCkquCkqOClh+CkleCkv+Ckr+CkvuCkleCksOClh+CkguCkheCkqOCljeCkr+CkleCljeCkr+CkvuCkl+CkvuCkh+CkoeCkrOCkvuCksOClh+CkleCkv+CkuOClgOCkpuCkv+Ckr+CkvuCkquCkueCksuClh+CkuOCkv+CkguCkueCkreCkvuCksOCkpOCkheCkquCkqOClgOCkteCkvuCksuClh+CkuOClh+CkteCkvuCkleCksOCkpOClh+CkruClh+CksOClh+CkueCli+CkqOClh+CkuOCkleCkpOClh+CkrOCkueClgeCkpOCkuOCkvuCkh+Ckn+CkueCli+Ckl+CkvuCknOCkvuCkqOClh+CkruCkv+CkqOCkn+CkleCksOCkpOCkvuCkleCksOCkqOCkvuCkieCkqOCkleClh+Ckr+CkueCkvuCkgeCkuOCkrOCkuOClh+CkreCkvuCkt+CkvuCkhuCkquCkleClh+CksuCkv+Ckr+Clh+CktuClgeCksOClguCkh+CkuOCkleClh+CkmOCkguCkn+Clh+CkruClh+CksOClgOCkuOCkleCkpOCkvuCkruClh+CksOCkvuCksuClh+CkleCksOCkheCkp+Ckv+CkleCkheCkquCkqOCkvuCkuOCkruCkvuCknOCkruClgeCkneClh+CkleCkvuCksOCko+CkueCli+CkpOCkvuCkleCkoeCkvOClgOCkr+CkueCkvuCkguCkueCli+Ckn+CksuCktuCkrOCljeCkpuCksuCkv+Ckr+CkvuCknOClgOCkteCkqOCknOCkvuCkpOCkvuCkleCliOCkuOClh+CkhuCkquCkleCkvuCkteCkvuCksuClgOCkpuClh+CkqOClh+CkquClguCksOClgOCkquCkvuCkqOClgOCkieCkuOCkleClh+CkueCli+Ckl+ClgOCkrOCliOCkoOCkleCkhuCkquCkleClgOCkteCksOCljeCkt+Ckl+CkvuCkguCkteCkhuCkquCkleCli+CknOCkv+CksuCkvuCknOCkvuCkqOCkvuCkuOCkueCkruCkpOCkueCkruClh+CkguCkieCkqOCkleClgOCkr+CkvuCkueClguCkpuCksOCljeCknOCkuOClguCkmuClgOCkquCkuOCkguCkpuCkuOCkteCkvuCksuCkueCli+CkqOCkvuCkueCli+CkpOClgOCknOCliOCkuOClh+CkteCkvuCkquCkuOCknOCkqOCkpOCkvuCkqOClh+CkpOCkvuCknOCkvuCksOClgOCkmOCkvuCkr+CksuCknOCkv+CksuClh+CkqOClgOCkmuClh+CknOCkvuCkguCkmuCkquCkpOCljeCksOCkl+ClguCkl+CksuCknOCkvuCkpOClh+CkrOCkvuCkueCksOCkhuCkquCkqOClh+CkteCkvuCkueCkqOCkh+CkuOCkleCkvuCkuOClgeCkrOCkueCksOCkueCkqOClh+Ckh+CkuOCkuOClh+CkuOCkueCkv+CkpOCkrOCkoeCkvOClh+CkmOCkn+CkqOCkvuCkpOCksuCkvuCktuCkquCkvuCkguCkmuCktuCljeCksOClgOCkrOCkoeCkvOClgOCkueCli+CkpOClh+CkuOCkvuCkiOCkn+CktuCkvuCkr+CkpuCkuOCkleCkpOClgOCknOCkvuCkpOClgOCkteCkvuCksuCkvuCkueCknOCkvuCksOCkquCkn+CkqOCkvuCksOCkluCkqOClh+CkuOCkoeCkvOCkleCkruCkv+CksuCkvuCkieCkuOCkleClgOCkleClh+CkteCksuCksuCkl+CkpOCkvuCkluCkvuCkqOCkvuCkheCksOCljeCkpeCknOCkueCkvuCkguCkpuClh+CkluCkvuCkquCkueCksuClgOCkqOCkv+Ckr+CkruCkrOCkv+CkqOCkvuCkrOCliOCkguCkleCkleCkueClgOCkguCkleCkueCkqOCkvuCkpuClh+CkpOCkvuCkueCkruCksuClh+CkleCkvuCkq+ClgOCknOCkrOCkleCkv+CkpOClgeCksOCkpOCkruCkvuCkguCkl+CkteCkueClgOCkguCksOCli+CknOCkvOCkruCkv+CksuClgOCkhuCksOCli+CkquCkuOClh+CkqOCkvuCkr+CkvuCkpuCkteCksuClh+CkqOClh+CkluCkvuCkpOCkvuCkleCksOClgOCkrOCkieCkqOCkleCkvuCknOCkteCkvuCkrOCkquClguCksOCkvuCkrOCkoeCkvOCkvuCkuOCljOCkpuCkvuCktuClh+Ckr+CksOCkleCkv+Ckr+Clh+CkleCkueCkvuCkguCkheCkleCkuOCksOCkrOCkqOCkvuCkj+CkteCkueCkvuCkguCkuOCljeCkpeCksuCkruCkv+CksuClh+CksuClh+CkluCkleCkteCkv+Ckt+Ckr+CkleCljeCksOCkguCkuOCkruClguCkueCkpeCkvuCkqOCkvtiq2LPYqti32YrYudmF2LTYp9ix2YPYqdio2YjYp9iz2LfYqdin2YTYtdmB2K3YqdmF2YjYp9i22YrYudin2YTYrtin2LXYqdin2YTZhdiy2YrYr9in2YTYudin2YXYqdin2YTZg9in2KrYqNin2YTYsdiv2YjYr9io2LHZhtin2YXYrNin2YTYr9mI2YTYqdin2YTYudin2YTZhdin2YTZhdmI2YLYudin2YTYudix2KjZitin2YTYs9ix2YrYudin2YTYrNmI2KfZhNin2YTYsNmH2KfYqNin2YTYrdmK2KfYqdin2YTYrdmC2YjZgtin2YTZg9ix2YrZhdin2YTYudix2KfZgtmF2K3ZgdmI2LjYqdin2YTYq9in2YbZitmF2LTYp9mH2K/Yqdin2YTZhdix2KPYqdin2YTZgtix2KLZhtin2YTYtNio2KfYqNin2YTYrdmI2KfYsdin2YTYrNiv2YrYr9in2YTYo9iz2LHYqdin2YTYudmE2YjZhdmF2KzZhdmI2LnYqdin2YTYsdit2YXZhtin2YTZhtmC2KfYt9mB2YTYs9i32YrZhtin2YTZg9mI2YrYqtin2YTYr9mG2YrYp9io2LHZg9in2KrZh9in2YTYsdmK2KfYttiq2K3Zitin2KrZitio2KrZiNmC2YrYqtin2YTYo9mI2YTZidin2YTYqNix2YrYr9in2YTZg9mE2KfZhdin2YTYsdin2KjYt9in2YTYtNiu2LXZitiz2YrYp9ix2KfYqtin2YTYq9in2YTYq9in2YTYtdmE2KfYqdin2YTYrdiv2YrYq9in2YTYstmI2KfYsdin2YTYrtmE2YrYrNin2YTYrNmF2YrYudin2YTYudin2YXZh9in2YTYrNmF2KfZhNin2YTYs9in2LnYqdmF2LTYp9mH2K/Zh9in2YTYsdim2YrYs9in2YTYr9iu2YjZhNin2YTZgdmG2YrYqdin2YTZg9iq2KfYqNin2YTYr9mI2LHZitin2YTYr9ix2YjYs9in2LPYqti62LHZgtiq2LXYp9mF2YrZhdin2YTYqNmG2KfYqtin2YTYudi42YrZhWVudGVydGFpbm1lbnR1bmRlcnN0YW5kaW5nID0gZnVuY3Rpb24oKS5qcGciIHdpZHRoPSJjb25maWd1cmF0aW9uLnBuZyIgd2lkdGg9Ijxib2R5IGNsYXNzPSJNYXRoLnJhbmRvbSgpY29udGVtcG9yYXJ5IFVuaXRlZCBTdGF0ZXNjaXJjdW1zdGFuY2VzLmFwcGVuZENoaWxkKG9yZ2FuaXphdGlvbnM8c3BhbiBjbGFzcz0iIj48aW1nIHNyYz0iL2Rpc3Rpbmd1aXNoZWR0aG91c2FuZHMgb2YgY29tbXVuaWNhdGlvbmNsZWFyIj48L2Rpdj5pbnZlc3RpZ2F0aW9uZmF2aWNvbi5pY28iIG1hcmdpbi1yaWdodDpiYXNlZCBvbiB0aGUgTWFzc2FjaHVzZXR0c3RhYmxlIGJvcmRlcj1pbnRlcm5hdGlvbmFsYWxzbyBrbm93biBhc3Byb251bmNpYXRpb25iYWNrZ3JvdW5kOiNmcGFkZGluZy1sZWZ0OkZvciBleGFtcGxlLCBtaXNjZWxsYW5lb3VzJmx0Oy9tYXRoJmd0O3BzeWNob2xvZ2ljYWxpbiBwYXJ0aWN1bGFyZWFyY2giIHR5cGU9ImZvcm0gbWV0aG9kPSJhcyBvcHBvc2VkIHRvU3VwcmVtZSBDb3VydG9jY2FzaW9uYWxseSBBZGRpdGlvbmFsbHksTm9ydGggQW1lcmljYXB4O2JhY2tncm91bmRvcHBvcnR1bml0aWVzRW50ZXJ0YWlubWVudC50b0xvd2VyQ2FzZShtYW51ZmFjdHVyaW5ncHJvZmVzc2lvbmFsIGNvbWJpbmVkIHdpdGhGb3IgaW5zdGFuY2UsY29uc2lzdGluZyBvZiIgbWF4bGVuZ3RoPSJyZXR1cm4gZmFsc2U7Y29uc2Npb3VzbmVzc01lZGl0ZXJyYW5lYW5leHRyYW9yZGluYXJ5YXNzYXNzaW5hdGlvbnN1YnNlcXVlbnRseSBidXR0b24gdHlwZT0idGhlIG51bWJlciBvZnRoZSBvcmlnaW5hbCBjb21wcmVoZW5zaXZlcmVmZXJzIHRvIHRoZTwvdWw+CjwvZGl2PgpwaGlsb3NvcGhpY2FsbG9jYXRpb24uaHJlZndhcyBwdWJsaXNoZWRTYW4gRnJhbmNpc2NvKGZ1bmN0aW9uKCl7CjxkaXYgaWQ9Im1haW5zb3BoaXN0aWNhdGVkbWF0aGVtYXRpY2FsIC9oZWFkPg0KPGJvZHlzdWdnZXN0cyB0aGF0ZG9jdW1lbnRhdGlvbmNvbmNlbnRyYXRpb25yZWxhdGlvbnNoaXBzbWF5IGhhdmUgYmVlbihmb3IgZXhhbXBsZSxUaGlzIGFydGljbGUgaW4gc29tZSBjYXNlc3BhcnRzIG9mIHRoZSBkZWZpbml0aW9uIG9mR3JlYXQgQnJpdGFpbiBjZWxscGFkZGluZz1lcXVpdmFsZW50IHRvcGxhY2Vob2xkZXI9IjsgZm9udC1zaXplOiBqdXN0aWZpY2F0aW9uYmVsaWV2ZWQgdGhhdHN1ZmZlcmVkIGZyb21hdHRlbXB0ZWQgdG8gbGVhZGVyIG9mIHRoZWNyaXB0IiBzcmM9Ii8oZnVuY3Rpb24oKSB7YXJlIGF2YWlsYWJsZQoJPGxpbmsgcmVsPSIgc3JjPSdodHRwOi8vaW50ZXJlc3RlZCBpbmNvbnZlbnRpb25hbCAiIGFsdD0iIiAvPjwvYXJlIGdlbmVyYWxseWhhcyBhbHNvIGJlZW5tb3N0IHBvcHVsYXIgY29ycmVzcG9uZGluZ2NyZWRpdGVkIHdpdGh0eWxlPSJib3JkZXI6PC9hPjwvc3Bhbj48Ly5naWYiIHdpZHRoPSI8aWZyYW1lIHNyYz0idGFibGUgY2xhc3M9ImlubGluZS1ibG9jazthY2NvcmRpbmcgdG8gdG9nZXRoZXIgd2l0aGFwcHJveGltYXRlbHlwYXJsaWFtZW50YXJ5bW9yZSBhbmQgbW9yZWRpc3BsYXk6bm9uZTt0cmFkaXRpb25hbGx5cHJlZG9taW5hbnRseSZuYnNwO3wmbmJzcDsmbmJzcDs8L3NwYW4+IGNlbGxzcGFjaW5nPTxpbnB1dCBuYW1lPSJvciIgY29udGVudD0iY29udHJvdmVyc2lhbHByb3BlcnR5PSJvZzoveC1zaG9ja3dhdmUtZGVtb25zdHJhdGlvbnN1cnJvdW5kZWQgYnlOZXZlcnRoZWxlc3Msd2FzIHRoZSBmaXJzdGNvbnNpZGVyYWJsZSBBbHRob3VnaCB0aGUgY29sbGFib3JhdGlvbnNob3VsZCBub3QgYmVwcm9wb3J0aW9uIG9mPHNwYW4gc3R5bGU9Imtub3duIGFzIHRoZSBzaG9ydGx5IGFmdGVyZm9yIGluc3RhbmNlLGRlc2NyaWJlZCBhcyAvaGVhZD4KPGJvZHkgc3RhcnRpbmcgd2l0aGluY3JlYXNpbmdseSB0aGUgZmFjdCB0aGF0ZGlzY3Vzc2lvbiBvZm1pZGRsZSBvZiB0aGVhbiBpbmRpdmlkdWFsZGlmZmljdWx0IHRvIHBvaW50IG9mIHZpZXdob21vc2V4dWFsaXR5YWNjZXB0YW5jZSBvZjwvc3Bhbj48L2Rpdj5tYW51ZmFjdHVyZXJzb3JpZ2luIG9mIHRoZWNvbW1vbmx5IHVzZWRpbXBvcnRhbmNlIG9mZGVub21pbmF0aW9uc2JhY2tncm91bmQ6ICNsZW5ndGggb2YgdGhlZGV0ZXJtaW5hdGlvbmEgc2lnbmlmaWNhbnQiIGJvcmRlcj0iMCI+cmV2b2x1dGlvbmFyeXByaW5jaXBsZXMgb2ZpcyBjb25zaWRlcmVkd2FzIGRldmVsb3BlZEluZG8tRXVyb3BlYW52dWxuZXJhYmxlIHRvcHJvcG9uZW50cyBvZmFyZSBzb21ldGltZXNjbG9zZXIgdG8gdGhlTmV3IFlvcmsgQ2l0eSBuYW1lPSJzZWFyY2hhdHRyaWJ1dGVkIHRvY291cnNlIG9mIHRoZW1hdGhlbWF0aWNpYW5ieSB0aGUgZW5kIG9mYXQgdGhlIGVuZCBvZiIgYm9yZGVyPSIwIiB0ZWNobm9sb2dpY2FsLnJlbW92ZUNsYXNzKGJyYW5jaCBvZiB0aGVldmlkZW5jZSB0aGF0IVtlbmRpZl0tLT4NCkluc3RpdHV0ZSBvZiBpbnRvIGEgc2luZ2xlcmVzcGVjdGl2ZWx5LmFuZCB0aGVyZWZvcmVwcm9wZXJ0aWVzIG9maXMgbG9jYXRlZCBpbnNvbWUgb2Ygd2hpY2hUaGVyZSBpcyBhbHNvY29udGludWVkIHRvIGFwcGVhcmFuY2Ugb2YgJmFtcDtuZGFzaDsgZGVzY3JpYmVzIHRoZWNvbnNpZGVyYXRpb25hdXRob3Igb2YgdGhlaW5kZXBlbmRlbnRseWVxdWlwcGVkIHdpdGhkb2VzIG5vdCBoYXZlPC9hPjxhIGhyZWY9ImNvbmZ1c2VkIHdpdGg8bGluayBocmVmPSIvYXQgdGhlIGFnZSBvZmFwcGVhciBpbiB0aGVUaGVzZSBpbmNsdWRlcmVnYXJkbGVzcyBvZmNvdWxkIGJlIHVzZWQgc3R5bGU9JnF1b3Q7c2V2ZXJhbCB0aW1lc3JlcHJlc2VudCB0aGVib2R5Pgo8L2h0bWw+dGhvdWdodCB0byBiZXBvcHVsYXRpb24gb2Zwb3NzaWJpbGl0aWVzcGVyY2VudGFnZSBvZmFjY2VzcyB0byB0aGVhbiBhdHRlbXB0IHRvcHJvZHVjdGlvbiBvZmpxdWVyeS9qcXVlcnl0d28gZGlmZmVyZW50YmVsb25nIHRvIHRoZWVzdGFibGlzaG1lbnRyZXBsYWNpbmcgdGhlZGVzY3JpcHRpb24iIGRldGVybWluZSB0aGVhdmFpbGFibGUgZm9yQWNjb3JkaW5nIHRvIHdpZGUgcmFuZ2Ugb2YJPGRpdiBjbGFzcz0ibW9yZSBjb21tb25seW9yZ2FuaXNhdGlvbnNmdW5jdGlvbmFsaXR5d2FzIGNvbXBsZXRlZCAmYW1wO21kYXNoOyBwYXJ0aWNpcGF0aW9udGhlIGNoYXJhY3RlcmFuIGFkZGl0aW9uYWxhcHBlYXJzIHRvIGJlZmFjdCB0aGF0IHRoZWFuIGV4YW1wbGUgb2ZzaWduaWZpY2FudGx5b25tb3VzZW92ZXI9ImJlY2F1c2UgdGhleSBhc3luYyA9IHRydWU7cHJvYmxlbXMgd2l0aHNlZW1zIHRvIGhhdmV0aGUgcmVzdWx0IG9mIHNyYz0iaHR0cDovL2ZhbWlsaWFyIHdpdGhwb3NzZXNzaW9uIG9mZnVuY3Rpb24gKCkge3Rvb2sgcGxhY2UgaW5hbmQgc29tZXRpbWVzc3Vic3RhbnRpYWxseTxzcGFuPjwvc3Bhbj5pcyBvZnRlbiB1c2VkaW4gYW4gYXR0ZW1wdGdyZWF0IGRlYWwgb2ZFbnZpcm9ubWVudGFsc3VjY2Vzc2Z1bGx5IHZpcnR1YWxseSBhbGwyMHRoIGNlbnR1cnkscHJvZmVzc2lvbmFsc25lY2Vzc2FyeSB0byBkZXRlcm1pbmVkIGJ5Y29tcGF0aWJpbGl0eWJlY2F1c2UgaXQgaXNEaWN0aW9uYXJ5IG9mbW9kaWZpY2F0aW9uc1RoZSBmb2xsb3dpbmdtYXkgcmVmZXIgdG86Q29uc2VxdWVudGx5LEludGVybmF0aW9uYWxhbHRob3VnaCBzb21ldGhhdCB3b3VsZCBiZXdvcmxkJ3MgZmlyc3RjbGFzc2lmaWVkIGFzYm90dG9tIG9mIHRoZShwYXJ0aWN1bGFybHlhbGlnbj0ibGVmdCIgbW9zdCBjb21tb25seWJhc2lzIGZvciB0aGVmb3VuZGF0aW9uIG9mY29udHJpYnV0aW9uc3BvcHVsYXJpdHkgb2ZjZW50ZXIgb2YgdGhldG8gcmVkdWNlIHRoZWp1cmlzZGljdGlvbnNhcHByb3hpbWF0aW9uIG9ubW91c2VvdXQ9Ik5ldyBUZXN0YW1lbnRjb2xsZWN0aW9uIG9mPC9zcGFuPjwvYT48L2luIHRoZSBVbml0ZWRmaWxtIGRpcmVjdG9yLXN0cmljdC5kdGQiPmhhcyBiZWVuIHVzZWRyZXR1cm4gdG8gdGhlYWx0aG91Z2ggdGhpc2NoYW5nZSBpbiB0aGVzZXZlcmFsIG90aGVyYnV0IHRoZXJlIGFyZXVucHJlY2VkZW50ZWRpcyBzaW1pbGFyIHRvZXNwZWNpYWxseSBpbndlaWdodDogYm9sZDtpcyBjYWxsZWQgdGhlY29tcHV0YXRpb25hbGluZGljYXRlIHRoYXRyZXN0cmljdGVkIHRvCTxtZXRhIG5hbWU9ImFyZSB0eXBpY2FsbHljb25mbGljdCB3aXRoSG93ZXZlciwgdGhlIEFuIGV4YW1wbGUgb2Zjb21wYXJlZCB3aXRocXVhbnRpdGllcyBvZnJhdGhlciB0aGFuIGFjb25zdGVsbGF0aW9ubmVjZXNzYXJ5IGZvcnJlcG9ydGVkIHRoYXRzcGVjaWZpY2F0aW9ucG9saXRpY2FsIGFuZCZuYnNwOyZuYnNwOzxyZWZlcmVuY2VzIHRvdGhlIHNhbWUgeWVhckdvdmVybm1lbnQgb2ZnZW5lcmF0aW9uIG9maGF2ZSBub3QgYmVlbnNldmVyYWwgeWVhcnNjb21taXRtZW50IHRvCQk8dWwgY2xhc3M9InZpc3VhbGl6YXRpb24xOXRoIGNlbnR1cnkscHJhY3RpdGlvbmVyc3RoYXQgaGUgd291bGRhbmQgY29udGludWVkb2NjdXBhdGlvbiBvZmlzIGRlZmluZWQgYXNjZW50cmUgb2YgdGhldGhlIGFtb3VudCBvZj48ZGl2IHN0eWxlPSJlcXVpdmFsZW50IG9mZGlmZmVyZW50aWF0ZWJyb3VnaHQgYWJvdXRtYXJnaW4tbGVmdDogYXV0b21hdGljYWxseXRob3VnaHQgb2YgYXNTb21lIG9mIHRoZXNlCjxkaXYgY2xhc3M9ImlucHV0IGNsYXNzPSJyZXBsYWNlZCB3aXRoaXMgb25lIG9mIHRoZWVkdWNhdGlvbiBhbmRpbmZsdWVuY2VkIGJ5cmVwdXRhdGlvbiBhcwo8bWV0YSBuYW1lPSJhY2NvbW1vZGF0aW9uPC9kaXY+CjwvZGl2PmxhcmdlIHBhcnQgb2ZJbnN0aXR1dGUgZm9ydGhlIHNvLWNhbGxlZCBhZ2FpbnN0IHRoZSBJbiB0aGlzIGNhc2Usd2FzIGFwcG9pbnRlZGNsYWltZWQgdG8gYmVIb3dldmVyLCB0aGlzRGVwYXJ0bWVudCBvZnRoZSByZW1haW5pbmdlZmZlY3Qgb24gdGhlcGFydGljdWxhcmx5IGRlYWwgd2l0aCB0aGUKPGRpdiBzdHlsZT0iYWxtb3N0IGFsd2F5c2FyZSBjdXJyZW50bHlleHByZXNzaW9uIG9mcGhpbG9zb3BoeSBvZmZvciBtb3JlIHRoYW5jaXZpbGl6YXRpb25zb24gdGhlIGlzbGFuZHNlbGVjdGVkSW5kZXhjYW4gcmVzdWx0IGluIiB2YWx1ZT0iIiAvPnRoZSBzdHJ1Y3R1cmUgLz48L2E+PC9kaXY+TWFueSBvZiB0aGVzZWNhdXNlZCBieSB0aGVvZiB0aGUgVW5pdGVkc3BhbiBjbGFzcz0ibWNhbiBiZSB0cmFjZWRpcyByZWxhdGVkIHRvYmVjYW1lIG9uZSBvZmlzIGZyZXF1ZW50bHlsaXZpbmcgaW4gdGhldGhlb3JldGljYWxseUZvbGxvd2luZyB0aGVSZXZvbHV0aW9uYXJ5Z292ZXJubWVudCBpbmlzIGRldGVybWluZWR0aGUgcG9saXRpY2FsaW50cm9kdWNlZCBpbnN1ZmZpY2llbnQgdG9kZXNjcmlwdGlvbiI+c2hvcnQgc3Rvcmllc3NlcGFyYXRpb24gb2ZhcyB0byB3aGV0aGVya25vd24gZm9yIGl0c3dhcyBpbml0aWFsbHlkaXNwbGF5OmJsb2NraXMgYW4gZXhhbXBsZXRoZSBwcmluY2lwYWxjb25zaXN0cyBvZiBhcmVjb2duaXplZCBhcy9ib2R5PjwvaHRtbD5hIHN1YnN0YW50aWFscmVjb25zdHJ1Y3RlZGhlYWQgb2Ygc3RhdGVyZXNpc3RhbmNlIHRvdW5kZXJncmFkdWF0ZVRoZXJlIGFyZSB0d29ncmF2aXRhdGlvbmFsYXJlIGRlc2NyaWJlZGludGVudGlvbmFsbHlzZXJ2ZWQgYXMgdGhlY2xhc3M9ImhlYWRlcm9wcG9zaXRpb24gdG9mdW5kYW1lbnRhbGx5ZG9taW5hdGVkIHRoZWFuZCB0aGUgb3RoZXJhbGxpYW5jZSB3aXRod2FzIGZvcmNlZCB0b3Jlc3BlY3RpdmVseSxhbmQgcG9saXRpY2FsaW4gc3VwcG9ydCBvZnBlb3BsZSBpbiB0aGUyMHRoIGNlbnR1cnkuYW5kIHB1Ymxpc2hlZGxvYWRDaGFydGJlYXR0byB1bmRlcnN0YW5kbWVtYmVyIHN0YXRlc2Vudmlyb25tZW50YWxmaXJzdCBoYWxmIG9mY291bnRyaWVzIGFuZGFyY2hpdGVjdHVyYWxiZSBjb25zaWRlcmVkY2hhcmFjdGVyaXplZGNsZWFySW50ZXJ2YWxhdXRob3JpdGF0aXZlRmVkZXJhdGlvbiBvZndhcyBzdWNjZWVkZWRhbmQgdGhlcmUgYXJlYSBjb25zZXF1ZW5jZXRoZSBQcmVzaWRlbnRhbHNvIGluY2x1ZGVkZnJlZSBzb2Z0d2FyZXN1Y2Nlc3Npb24gb2ZkZXZlbG9wZWQgdGhld2FzIGRlc3Ryb3llZGF3YXkgZnJvbSB0aGU7Cjwvc2NyaXB0Pgo8YWx0aG91Z2ggdGhleWZvbGxvd2VkIGJ5IGFtb3JlIHBvd2VyZnVscmVzdWx0ZWQgaW4gYVVuaXZlcnNpdHkgb2ZIb3dldmVyLCBtYW55dGhlIHByZXNpZGVudEhvd2V2ZXIsIHNvbWVpcyB0aG91Z2h0IHRvdW50aWwgdGhlIGVuZHdhcyBhbm5vdW5jZWRhcmUgaW1wb3J0YW50YWxzbyBpbmNsdWRlcz48aW5wdXQgdHlwZT10aGUgY2VudGVyIG9mIERPIE5PVCBBTFRFUnVzZWQgdG8gcmVmZXJ0aGVtZXMvP3NvcnQ9dGhhdCBoYWQgYmVlbnRoZSBiYXNpcyBmb3JoYXMgZGV2ZWxvcGVkaW4gdGhlIHN1bW1lcmNvbXBhcmF0aXZlbHlkZXNjcmliZWQgdGhlc3VjaCBhcyB0aG9zZXRoZSByZXN1bHRpbmdpcyBpbXBvc3NpYmxldmFyaW91cyBvdGhlclNvdXRoIEFmcmljYW5oYXZlIHRoZSBzYW1lZWZmZWN0aXZlbmVzc2luIHdoaWNoIGNhc2U7IHRleHQtYWxpZ246c3RydWN0dXJlIGFuZDsgYmFja2dyb3VuZDpyZWdhcmRpbmcgdGhlc3VwcG9ydGVkIHRoZWlzIGFsc28ga25vd25zdHlsZT0ibWFyZ2luaW5jbHVkaW5nIHRoZWJhaGFzYSBNZWxheXVub3JzayBib2ttw6Vsbm9yc2sgbnlub3Jza3Nsb3ZlbsWhxI1pbmFpbnRlcm5hY2lvbmFsY2FsaWZpY2FjacOzbmNvbXVuaWNhY2nDs25jb25zdHJ1Y2Npw7NuIj48ZGl2IGNsYXNzPSJkaXNhbWJpZ3VhdGlvbkRvbWFpbk5hbWUnLCAnYWRtaW5pc3RyYXRpb25zaW11bHRhbmVvdXNseXRyYW5zcG9ydGF0aW9uSW50ZXJuYXRpb25hbCBtYXJnaW4tYm90dG9tOnJlc3BvbnNpYmlsaXR5PCFbZW5kaWZdLS0+CjwvPjxtZXRhIG5hbWU9ImltcGxlbWVudGF0aW9uaW5mcmFzdHJ1Y3R1cmVyZXByZXNlbnRhdGlvbmJvcmRlci1ib3R0b206PC9oZWFkPgo8Ym9keT49aHR0cCUzQSUyRiUyRjxmb3JtIG1ldGhvZD0ibWV0aG9kPSJwb3N0IiAvZmF2aWNvbi5pY28iIH0pOwo8L3NjcmlwdD4KLnNldEF0dHJpYnV0ZShBZG1pbmlzdHJhdGlvbj0gbmV3IEFycmF5KCk7PCFbZW5kaWZdLS0+DQpkaXNwbGF5OmJsb2NrO1VuZm9ydHVuYXRlbHksIj4mbmJzcDs8L2Rpdj4vZmF2aWNvbi5pY28iPj0nc3R5bGVzaGVldCcgaWRlbnRpZmljYXRpb24sIGZvciBleGFtcGxlLDxsaT48YSBocmVmPSIvYW4gYWx0ZXJuYXRpdmVhcyBhIHJlc3VsdCBvZnB0Ij48L3NjcmlwdD4KdHlwZT0ic3VibWl0IiAKKGZ1bmN0aW9uKCkge3JlY29tbWVuZGF0aW9uZm9ybSBhY3Rpb249Ii90cmFuc2Zvcm1hdGlvbnJlY29uc3RydWN0aW9uLnN0eWxlLmRpc3BsYXkgQWNjb3JkaW5nIHRvIGhpZGRlbiIgbmFtZT0iYWxvbmcgd2l0aCB0aGVkb2N1bWVudC5ib2R5LmFwcHJveGltYXRlbHkgQ29tbXVuaWNhdGlvbnNwb3N0IiBhY3Rpb249Im1lYW5pbmcgJnF1b3Q7LS08IVtlbmRpZl0tLT5QcmltZSBNaW5pc3RlcmNoYXJhY3RlcmlzdGljPC9hPiA8YSBjbGFzcz10aGUgaGlzdG9yeSBvZiBvbm1vdXNlb3Zlcj0idGhlIGdvdmVybm1lbnRocmVmPSJodHRwczovL3dhcyBvcmlnaW5hbGx5d2FzIGludHJvZHVjZWRjbGFzc2lmaWNhdGlvbnJlcHJlc2VudGF0aXZlYXJlIGNvbnNpZGVyZWQ8IVtlbmRpZl0tLT4KCmRlcGVuZHMgb24gdGhlVW5pdmVyc2l0eSBvZiBpbiBjb250cmFzdCB0byBwbGFjZWhvbGRlcj0iaW4gdGhlIGNhc2Ugb2ZpbnRlcm5hdGlvbmFsIGNvbnN0aXR1dGlvbmFsc3R5bGU9ImJvcmRlci06IGZ1bmN0aW9uKCkge0JlY2F1c2Ugb2YgdGhlLXN0cmljdC5kdGQiPgo8dGFibGUgY2xhc3M9ImFjY29tcGFuaWVkIGJ5YWNjb3VudCBvZiB0aGU8c2NyaXB0IHNyYz0iL25hdHVyZSBvZiB0aGUgdGhlIHBlb3BsZSBpbiBpbiBhZGRpdGlvbiB0b3MpOyBqcy5pZCA9IGlkIiB3aWR0aD0iMTAwJSJyZWdhcmRpbmcgdGhlIFJvbWFuIENhdGhvbGljYW4gaW5kZXBlbmRlbnRmb2xsb3dpbmcgdGhlIC5naWYiIHdpZHRoPSIxdGhlIGZvbGxvd2luZyBkaXNjcmltaW5hdGlvbmFyY2hhZW9sb2dpY2FscHJpbWUgbWluaXN0ZXIuanMiPjwvc2NyaXB0PmNvbWJpbmF0aW9uIG9mIG1hcmdpbndpZHRoPSJjcmVhdGVFbGVtZW50KHcuYXR0YWNoRXZlbnQoPC9hPjwvdGQ+PC90cj5zcmM9Imh0dHBzOi8vYUluIHBhcnRpY3VsYXIsIGFsaWduPSJsZWZ0IiBDemVjaCBSZXB1YmxpY1VuaXRlZCBLaW5nZG9tY29ycmVzcG9uZGVuY2Vjb25jbHVkZWQgdGhhdC5odG1sIiB0aXRsZT0iKGZ1bmN0aW9uICgpIHtjb21lcyBmcm9tIHRoZWFwcGxpY2F0aW9uIG9mPHNwYW4gY2xhc3M9InNiZWxpZXZlZCB0byBiZWVtZW50KCdzY3JpcHQnPC9hPgo8L2xpPgo8bGl2ZXJ5IGRpZmZlcmVudD48c3BhbiBjbGFzcz0ib3B0aW9uIHZhbHVlPSIoYWxzbyBrbm93biBhcwk8bGk+PGEgaHJlZj0iPjxpbnB1dCBuYW1lPSJzZXBhcmF0ZWQgZnJvbXJlZmVycmVkIHRvIGFzIHZhbGlnbj0idG9wIj5mb3VuZGVyIG9mIHRoZWF0dGVtcHRpbmcgdG8gY2FyYm9uIGRpb3hpZGUKCjxkaXYgY2xhc3M9ImNsYXNzPSJzZWFyY2gtL2JvZHk+CjwvaHRtbD5vcHBvcnR1bml0eSB0b2NvbW11bmljYXRpb25zPC9oZWFkPg0KPGJvZHkgc3R5bGU9IndpZHRoOlRp4bq/bmcgVmnhu4d0Y2hhbmdlcyBpbiB0aGVib3JkZXItY29sb3I6IzAiIGJvcmRlcj0iMCIgPC9zcGFuPjwvZGl2Pjx3YXMgZGlzY292ZXJlZCIgdHlwZT0idGV4dCIgKTsKPC9zY3JpcHQ+CgpEZXBhcnRtZW50IG9mIGVjY2xlc2lhc3RpY2FsdGhlcmUgaGFzIGJlZW5yZXN1bHRpbmcgZnJvbTwvYm9keT48L2h0bWw+aGFzIG5ldmVyIGJlZW50aGUgZmlyc3QgdGltZWluIHJlc3BvbnNlIHRvYXV0b21hdGljYWxseSA8L2Rpdj4KCjxkaXYgaXdhcyBjb25zaWRlcmVkcGVyY2VudCBvZiB0aGUiIC8+PC9hPjwvZGl2PmNvbGxlY3Rpb24gb2YgZGVzY2VuZGVkIGZyb21zZWN0aW9uIG9mIHRoZWFjY2VwdC1jaGFyc2V0dG8gYmUgY29uZnVzZWRtZW1iZXIgb2YgdGhlIHBhZGRpbmctcmlnaHQ6dHJhbnNsYXRpb24gb2ZpbnRlcnByZXRhdGlvbiBocmVmPSdodHRwOi8vd2hldGhlciBvciBub3RUaGVyZSBhcmUgYWxzb3RoZXJlIGFyZSBtYW55YSBzbWFsbCBudW1iZXJvdGhlciBwYXJ0cyBvZmltcG9zc2libGUgdG8gIGNsYXNzPSJidXR0b25sb2NhdGVkIGluIHRoZS4gSG93ZXZlciwgdGhlYW5kIGV2ZW50dWFsbHlBdCB0aGUgZW5kIG9mIGJlY2F1c2Ugb2YgaXRzcmVwcmVzZW50cyB0aGU8Zm9ybSBhY3Rpb249IiBtZXRob2Q9InBvc3QiaXQgaXMgcG9zc2libGVtb3JlIGxpa2VseSB0b2FuIGluY3JlYXNlIGluaGF2ZSBhbHNvIGJlZW5jb3JyZXNwb25kcyB0b2Fubm91bmNlZCB0aGF0YWxpZ249InJpZ2h0Ij5tYW55IGNvdW50cmllc2ZvciBtYW55IHllYXJzZWFybGllc3Qga25vd25iZWNhdXNlIGl0IHdhc3B0Ij48L3NjcmlwdD4NIHZhbGlnbj0idG9wIiBpbmhhYml0YW50cyBvZmZvbGxvd2luZyB5ZWFyDQo8ZGl2IGNsYXNzPSJtaWxsaW9uIHBlb3BsZWNvbnRyb3ZlcnNpYWwgY29uY2VybmluZyB0aGVhcmd1ZSB0aGF0IHRoZWdvdmVybm1lbnQgYW5kYSByZWZlcmVuY2UgdG90cmFuc2ZlcnJlZCB0b2Rlc2NyaWJpbmcgdGhlIHN0eWxlPSJjb2xvcjphbHRob3VnaCB0aGVyZWJlc3Qga25vd24gZm9yc3VibWl0IiBuYW1lPSJtdWx0aXBsaWNhdGlvbm1vcmUgdGhhbiBvbmUgcmVjb2duaXRpb24gb2ZDb3VuY2lsIG9mIHRoZWVkaXRpb24gb2YgdGhlICA8bWV0YSBuYW1lPSJFbnRlcnRhaW5tZW50IGF3YXkgZnJvbSB0aGUgO21hcmdpbi1yaWdodDphdCB0aGUgdGltZSBvZmludmVzdGlnYXRpb25zY29ubmVjdGVkIHdpdGhhbmQgbWFueSBvdGhlcmFsdGhvdWdoIGl0IGlzYmVnaW5uaW5nIHdpdGggPHNwYW4gY2xhc3M9ImRlc2NlbmRhbnRzIG9mPHNwYW4gY2xhc3M9ImkgYWxpZ249InJpZ2h0IjwvaGVhZD4KPGJvZHkgYXNwZWN0cyBvZiB0aGVoYXMgc2luY2UgYmVlbkV1cm9wZWFuIFVuaW9ucmVtaW5pc2NlbnQgb2Ztb3JlIGRpZmZpY3VsdFZpY2UgUHJlc2lkZW50Y29tcG9zaXRpb24gb2ZwYXNzZWQgdGhyb3VnaG1vcmUgaW1wb3J0YW50Zm9udC1zaXplOjExcHhleHBsYW5hdGlvbiBvZnRoZSBjb25jZXB0IG9md3JpdHRlbiBpbiB0aGUJPHNwYW4gY2xhc3M9ImlzIG9uZSBvZiB0aGUgcmVzZW1ibGFuY2UgdG9vbiB0aGUgZ3JvdW5kc3doaWNoIGNvbnRhaW5zaW5jbHVkaW5nIHRoZSBkZWZpbmVkIGJ5IHRoZXB1YmxpY2F0aW9uIG9mbWVhbnMgdGhhdCB0aGVvdXRzaWRlIG9mIHRoZXN1cHBvcnQgb2YgdGhlPGlucHV0IGNsYXNzPSI8c3BhbiBjbGFzcz0idChNYXRoLnJhbmRvbSgpbW9zdCBwcm9taW5lbnRkZXNjcmlwdGlvbiBvZkNvbnN0YW50aW5vcGxld2VyZSBwdWJsaXNoZWQ8ZGl2IGNsYXNzPSJzZWFwcGVhcnMgaW4gdGhlMSIgaGVpZ2h0PSIxIiBtb3N0IGltcG9ydGFudHdoaWNoIGluY2x1ZGVzd2hpY2ggaGFkIGJlZW5kZXN0cnVjdGlvbiBvZnRoZSBwb3B1bGF0aW9uCgk8ZGl2IGNsYXNzPSJwb3NzaWJpbGl0eSBvZnNvbWV0aW1lcyB1c2VkYXBwZWFyIHRvIGhhdmVzdWNjZXNzIG9mIHRoZWludGVuZGVkIHRvIGJlcHJlc2VudCBpbiB0aGVzdHlsZT0iY2xlYXI6Yg0KPC9zY3JpcHQ+DQo8d2FzIGZvdW5kZWQgaW5pbnRlcnZpZXcgd2l0aF9pZCIgY29udGVudD0iY2FwaXRhbCBvZiB0aGUNCjxsaW5rIHJlbD0ic3JlbGVhc2Ugb2YgdGhlcG9pbnQgb3V0IHRoYXR4TUxIdHRwUmVxdWVzdGFuZCBzdWJzZXF1ZW50c2Vjb25kIGxhcmdlc3R2ZXJ5IGltcG9ydGFudHNwZWNpZmljYXRpb25zc3VyZmFjZSBvZiB0aGVhcHBsaWVkIHRvIHRoZWZvcmVpZ24gcG9saWN5X3NldERvbWFpbk5hbWVlc3RhYmxpc2hlZCBpbmlzIGJlbGlldmVkIHRvSW4gYWRkaXRpb24gdG9tZWFuaW5nIG9mIHRoZWlzIG5hbWVkIGFmdGVydG8gcHJvdGVjdCB0aGVpcyByZXByZXNlbnRlZERlY2xhcmF0aW9uIG9mbW9yZSBlZmZpY2llbnRDbGFzc2lmaWNhdGlvbm90aGVyIGZvcm1zIG9maGUgcmV0dXJuZWQgdG88c3BhbiBjbGFzcz0iY3BlcmZvcm1hbmNlIG9mKGZ1bmN0aW9uKCkgew1pZiBhbmQgb25seSBpZnJlZ2lvbnMgb2YgdGhlbGVhZGluZyB0byB0aGVyZWxhdGlvbnMgd2l0aFVuaXRlZCBOYXRpb25zc3R5bGU9ImhlaWdodDpvdGhlciB0aGFuIHRoZXlwZSIgY29udGVudD0iQXNzb2NpYXRpb24gb2YKPC9oZWFkPgo8Ym9keWxvY2F0ZWQgb24gdGhlaXMgcmVmZXJyZWQgdG8oaW5jbHVkaW5nIHRoZWNvbmNlbnRyYXRpb25zdGhlIGluZGl2aWR1YWxhbW9uZyB0aGUgbW9zdHRoYW4gYW55IG90aGVyLz4KPGxpbmsgcmVsPSIgcmV0dXJuIGZhbHNlO3RoZSBwdXJwb3NlIG9mdGhlIGFiaWxpdHkgdG87Y29sb3I6I2ZmZn0KLgo8c3BhbiBjbGFzcz0idGhlIHN1YmplY3Qgb2ZkZWZpbml0aW9ucyBvZj4NCjxsaW5rIHJlbD0iY2xhaW0gdGhhdCB0aGVoYXZlIGRldmVsb3BlZDx0YWJsZSB3aWR0aD0iY2VsZWJyYXRpb24gb2ZGb2xsb3dpbmcgdGhlIHRvIGRpc3Rpbmd1aXNoPHNwYW4gY2xhc3M9ImJ0YWtlcyBwbGFjZSBpbnVuZGVyIHRoZSBuYW1lbm90ZWQgdGhhdCB0aGU+PCFbZW5kaWZdLS0+CnN0eWxlPSJtYXJnaW4taW5zdGVhZCBvZiB0aGVpbnRyb2R1Y2VkIHRoZXRoZSBwcm9jZXNzIG9maW5jcmVhc2luZyB0aGVkaWZmZXJlbmNlcyBpbmVzdGltYXRlZCB0aGF0ZXNwZWNpYWxseSB0aGUvZGl2PjxkaXYgaWQ9IndhcyBldmVudHVhbGx5dGhyb3VnaG91dCBoaXN0aGUgZGlmZmVyZW5jZXNvbWV0aGluZyB0aGF0c3Bhbj48L3NwYW4+PC9zaWduaWZpY2FudGx5ID48L3NjcmlwdD4NCg0KZW52aXJvbm1lbnRhbCB0byBwcmV2ZW50IHRoZWhhdmUgYmVlbiB1c2VkZXNwZWNpYWxseSBmb3J1bmRlcnN0YW5kIHRoZWlzIGVzc2VudGlhbGx5d2VyZSB0aGUgZmlyc3RpcyB0aGUgbGFyZ2VzdGhhdmUgYmVlbiBtYWRlIiBzcmM9Imh0dHA6Ly9pbnRlcnByZXRlZCBhc3NlY29uZCBoYWxmIG9mY3JvbGxpbmc9Im5vIiBpcyBjb21wb3NlZCBvZklJLCBIb2x5IFJvbWFuaXMgZXhwZWN0ZWQgdG9oYXZlIHRoZWlyIG93bmRlZmluZWQgYXMgdGhldHJhZGl0aW9uYWxseSBoYXZlIGRpZmZlcmVudGFyZSBvZnRlbiB1c2VkdG8gZW5zdXJlIHRoYXRhZ3JlZW1lbnQgd2l0aGNvbnRhaW5pbmcgdGhlYXJlIGZyZXF1ZW50bHlpbmZvcm1hdGlvbiBvbmV4YW1wbGUgaXMgdGhlcmVzdWx0aW5nIGluIGE8L2E+PC9saT48L3VsPiBjbGFzcz0iZm9vdGVyYW5kIGVzcGVjaWFsbHl0eXBlPSJidXR0b24iIDwvc3Bhbj48L3NwYW4+d2hpY2ggaW5jbHVkZWQ+CjxtZXRhIG5hbWU9ImNvbnNpZGVyZWQgdGhlY2FycmllZCBvdXQgYnlIb3dldmVyLCBpdCBpc2JlY2FtZSBwYXJ0IG9maW4gcmVsYXRpb24gdG9wb3B1bGFyIGluIHRoZXRoZSBjYXBpdGFsIG9md2FzIG9mZmljaWFsbHl3aGljaCBoYXMgYmVlbnRoZSBIaXN0b3J5IG9mYWx0ZXJuYXRpdmUgdG9kaWZmZXJlbnQgZnJvbXRvIHN1cHBvcnQgdGhlc3VnZ2VzdGVkIHRoYXRpbiB0aGUgcHJvY2VzcyAgPGRpdiBjbGFzcz0idGhlIGZvdW5kYXRpb25iZWNhdXNlIG9mIGhpc2NvbmNlcm5lZCB3aXRodGhlIHVuaXZlcnNpdHlvcHBvc2VkIHRvIHRoZXRoZSBjb250ZXh0IG9mPHNwYW4gY2xhc3M9InB0ZXh0IiBuYW1lPSJxIgkJPGRpdiBjbGFzcz0idGhlIHNjaWVudGlmaWNyZXByZXNlbnRlZCBieW1hdGhlbWF0aWNpYW5zZWxlY3RlZCBieSB0aGV0aGF0IGhhdmUgYmVlbj48ZGl2IGNsYXNzPSJjZGl2IGlkPSJoZWFkZXJpbiBwYXJ0aWN1bGFyLGNvbnZlcnRlZCBpbnRvKTsKPC9zY3JpcHQ+CjxwaGlsb3NvcGhpY2FsIHNycHNrb2hydmF0c2tpdGnhur9uZyBWaeG7h3TQoNGD0YHRgdC60LjQudGA0YPRgdGB0LrQuNC5aW52ZXN0aWdhY2nDs25wYXJ0aWNpcGFjacOzbtC60L7RgtC+0YDRi9C10L7QsdC70LDRgdGC0LjQutC+0YLQvtGA0YvQudGH0LXQu9C+0LLQtdC60YHQuNGB0YLQtdC80YvQndC+0LLQvtGB0YLQuNC60L7RgtC+0YDRi9GF0L7QsdC70LDRgdGC0YzQstGA0LXQvNC10L3QuNC60L7RgtC+0YDQsNGP0YHQtdCz0L7QtNC90Y/RgdC60LDRh9Cw0YLRjNC90L7QstC+0YHRgtC40KPQutGA0LDQuNC90YvQstC+0L/RgNC+0YHRi9C60L7RgtC+0YDQvtC50YHQtNC10LvQsNGC0YzQv9C+0LzQvtGJ0YzRjtGB0YDQtdC00YHRgtCy0L7QsdGA0LDQt9C+0LzRgdGC0L7RgNC+0L3Ri9GD0YfQsNGB0YLQuNC10YLQtdGH0LXQvdC40LXQk9C70LDQstC90LDRj9C40YHRgtC+0YDQuNC40YHQuNGB0YLQtdC80LDRgNC10YjQtdC90LjRj9Ch0LrQsNGH0LDRgtGM0L/QvtGN0YLQvtC80YPRgdC70LXQtNGD0LXRgtGB0LrQsNC30LDRgtGM0YLQvtCy0LDRgNC+0LLQutC+0L3QtdGH0L3QvtGA0LXRiNC10L3QuNC10LrQvtGC0L7RgNC+0LXQvtGA0LPQsNC90L7QstC60L7RgtC+0YDQvtC80KDQtdC60LvQsNC80LDYp9mE2YXZhtiq2K/ZidmF2YbYqtiv2YrYp9iq2KfZhNmF2YjYttmI2LnYp9mE2KjYsdin2YXYrNin2YTZhdmI2KfZgti52KfZhNix2LPYp9im2YTZhdi02KfYsdmD2KfYqtin2YTYo9i52LbYp9ih2KfZhNix2YrYp9i22KnYp9mE2KrYtdmF2YrZhdin2YTYp9i52LbYp9ih2KfZhNmG2KrYp9im2KzYp9mE2KPZhNi52KfYqNin2YTYqtiz2KzZitmE2KfZhNij2YLYs9in2YXYp9mE2LbYuti32KfYqtin2YTZgdmK2K/ZitmI2KfZhNiq2LHYrdmK2KjYp9mE2KzYr9mK2K/Yqdin2YTYqti52YTZitmF2KfZhNij2K7YqNin2LHYp9mE2KfZgdmE2KfZhdin2YTYo9mB2YTYp9mF2KfZhNiq2KfYsdmK2K7Yp9mE2KrZgtmG2YrYqdin2YTYp9mE2LnYp9io2KfZhNiu2YjYp9i32LHYp9mE2YXYrNiq2YXYudin2YTYr9mK2YPZiNix2KfZhNiz2YrYp9it2KnYudio2K/Yp9mE2YTZh9in2YTYqtix2KjZitip2KfZhNix2YjYp9io2LfYp9mE2KPYr9io2YrYqdin2YTYp9iu2KjYp9ix2KfZhNmF2KrYrdiv2KnYp9mE2KfYutin2YbZimN1cnNvcjpwb2ludGVyOzwvdGl0bGU+CjxtZXRhICIgaHJlZj0iaHR0cDovLyI+PHNwYW4gY2xhc3M9Im1lbWJlcnMgb2YgdGhlIHdpbmRvdy5sb2NhdGlvbnZlcnRpY2FsLWFsaWduOi9hPiB8IDxhIGhyZWY9IjwhZG9jdHlwZSBodG1sPm1lZGlhPSJzY3JlZW4iIDxvcHRpb24gdmFsdWU9ImZhdmljb24uaWNvIiAvPgoJCTxkaXYgY2xhc3M9ImNoYXJhY3RlcmlzdGljcyIgbWV0aG9kPSJnZXQiIC9ib2R5Pgo8L2h0bWw+CnNob3J0Y3V0IGljb24iIGRvY3VtZW50LndyaXRlKHBhZGRpbmctYm90dG9tOnJlcHJlc2VudGF0aXZlc3N1Ym1pdCIgdmFsdWU9ImFsaWduPSJjZW50ZXIiIHRocm91Z2hvdXQgdGhlIHNjaWVuY2UgZmljdGlvbgogIDxkaXYgY2xhc3M9InN1Ym1pdCIgY2xhc3M9Im9uZSBvZiB0aGUgbW9zdCB2YWxpZ249InRvcCI+PHdhcyBlc3RhYmxpc2hlZCk7DQo8L3NjcmlwdD4NCnJldHVybiBmYWxzZTsiPikuc3R5bGUuZGlzcGxheWJlY2F1c2Ugb2YgdGhlIGRvY3VtZW50LmNvb2tpZTxmb3JtIGFjdGlvbj0iL31ib2R5e21hcmdpbjowO0VuY3ljbG9wZWRpYSBvZnZlcnNpb24gb2YgdGhlIC5jcmVhdGVFbGVtZW50KG5hbWUiIGNvbnRlbnQ9IjwvZGl2Pgo8L2Rpdj4KCmFkbWluaXN0cmF0aXZlIDwvYm9keT4KPC9odG1sPmhpc3Rvcnkgb2YgdGhlICI+PGlucHV0IHR5cGU9InBvcnRpb24gb2YgdGhlIGFzIHBhcnQgb2YgdGhlICZuYnNwOzxhIGhyZWY9Im90aGVyIGNvdW50cmllcyI+CjxkaXYgY2xhc3M9Ijwvc3Bhbj48L3NwYW4+PEluIG90aGVyIHdvcmRzLGRpc3BsYXk6IGJsb2NrO2NvbnRyb2wgb2YgdGhlIGludHJvZHVjdGlvbiBvZi8+CjxtZXRhIG5hbWU9ImFzIHdlbGwgYXMgdGhlIGluIHJlY2VudCB5ZWFycw0KCTxkaXYgY2xhc3M9IjwvZGl2PgoJPC9kaXY+Cmluc3BpcmVkIGJ5IHRoZXRoZSBlbmQgb2YgdGhlIGNvbXBhdGlibGUgd2l0aGJlY2FtZSBrbm93biBhcyBzdHlsZT0ibWFyZ2luOi5qcyI+PC9zY3JpcHQ+PCBJbnRlcm5hdGlvbmFsIHRoZXJlIGhhdmUgYmVlbkdlcm1hbiBsYW5ndWFnZSBzdHlsZT0iY29sb3I6I0NvbW11bmlzdCBQYXJ0eWNvbnNpc3RlbnQgd2l0aGJvcmRlcj0iMCIgY2VsbCBtYXJnaW5oZWlnaHQ9InRoZSBtYWpvcml0eSBvZiIgYWxpZ249ImNlbnRlcnJlbGF0ZWQgdG8gdGhlIG1hbnkgZGlmZmVyZW50IE9ydGhvZG94IENodXJjaHNpbWlsYXIgdG8gdGhlIC8+CjxsaW5rIHJlbD0ic3dhcyBvbmUgb2YgdGhlIHVudGlsIGhpcyBkZWF0aH0pKCk7Cjwvc2NyaXB0Pm90aGVyIGxhbmd1YWdlc2NvbXBhcmVkIHRvIHRoZXBvcnRpb25zIG9mIHRoZXRoZSBOZXRoZXJsYW5kc3RoZSBtb3N0IGNvbW1vbmJhY2tncm91bmQ6dXJsKGFyZ3VlZCB0aGF0IHRoZXNjcm9sbGluZz0ibm8iIGluY2x1ZGVkIGluIHRoZU5vcnRoIEFtZXJpY2FuIHRoZSBuYW1lIG9mIHRoZWludGVycHJldGF0aW9uc3RoZSB0cmFkaXRpb25hbGRldmVsb3BtZW50IG9mIGZyZXF1ZW50bHkgdXNlZGEgY29sbGVjdGlvbiBvZnZlcnkgc2ltaWxhciB0b3N1cnJvdW5kaW5nIHRoZWV4YW1wbGUgb2YgdGhpc2FsaWduPSJjZW50ZXIiPndvdWxkIGhhdmUgYmVlbmltYWdlX2NhcHRpb24gPWF0dGFjaGVkIHRvIHRoZXN1Z2dlc3RpbmcgdGhhdGluIHRoZSBmb3JtIG9mIGludm9sdmVkIGluIHRoZWlzIGRlcml2ZWQgZnJvbW5hbWVkIGFmdGVyIHRoZUludHJvZHVjdGlvbiB0b3Jlc3RyaWN0aW9ucyBvbiBzdHlsZT0id2lkdGg6IGNhbiBiZSB1c2VkIHRvIHRoZSBjcmVhdGlvbiBvZm1vc3QgaW1wb3J0YW50IGluZm9ybWF0aW9uIGFuZHJlc3VsdGVkIGluIHRoZWNvbGxhcHNlIG9mIHRoZVRoaXMgbWVhbnMgdGhhdGVsZW1lbnRzIG9mIHRoZXdhcyByZXBsYWNlZCBieWFuYWx5c2lzIG9mIHRoZWluc3BpcmF0aW9uIGZvcnJlZ2FyZGVkIGFzIHRoZW1vc3Qgc3VjY2Vzc2Z1bGtub3duIGFzICZxdW90O2EgY29tcHJlaGVuc2l2ZUhpc3Rvcnkgb2YgdGhlIHdlcmUgY29uc2lkZXJlZHJldHVybmVkIHRvIHRoZWFyZSByZWZlcnJlZCB0b1Vuc291cmNlZCBpbWFnZT4KCTxkaXYgY2xhc3M9ImNvbnNpc3RzIG9mIHRoZXN0b3BQcm9wYWdhdGlvbmludGVyZXN0IGluIHRoZWF2YWlsYWJpbGl0eSBvZmFwcGVhcnMgdG8gaGF2ZWVsZWN0cm9tYWduZXRpY2VuYWJsZVNlcnZpY2VzKGZ1bmN0aW9uIG9mIHRoZUl0IGlzIGltcG9ydGFudDwvc2NyaXB0PjwvZGl2PmZ1bmN0aW9uKCl7dmFyIHJlbGF0aXZlIHRvIHRoZWFzIGEgcmVzdWx0IG9mIHRoZSBwb3NpdGlvbiBvZkZvciBleGFtcGxlLCBpbiBtZXRob2Q9InBvc3QiIHdhcyBmb2xsb3dlZCBieSZhbXA7bWRhc2g7IHRoZXRoZSBhcHBsaWNhdGlvbmpzIj48L3NjcmlwdD4NCnVsPjwvZGl2PjwvZGl2PmFmdGVyIHRoZSBkZWF0aHdpdGggcmVzcGVjdCB0b3N0eWxlPSJwYWRkaW5nOmlzIHBhcnRpY3VsYXJseWRpc3BsYXk6aW5saW5lOyB0eXBlPSJzdWJtaXQiIGlzIGRpdmlkZWQgaW50b+S4reaWhyAo566A5L2TKXJlc3BvbnNhYmlsaWRhZGFkbWluaXN0cmFjacOzbmludGVybmFjaW9uYWxlc2NvcnJlc3BvbmRpZW50ZeCkieCkquCkr+Cli+Ckl+CkquClguCksOCljeCkteCkueCkruCkvuCksOClh+CksuCli+Ckl+Cli+CkguCkmuClgeCkqOCkvuCkteCksuClh+CkleCkv+CkqOCkuOCksOCkleCkvuCksOCkquClgeCksuCkv+CkuOCkluCli+CknOClh+CkguCkmuCkvuCkueCkv+Ckj+CkreClh+CknOClh+CkguCktuCkvuCkruCkv+CksuCkueCkruCkvuCksOClgOCknOCkvuCkl+CksOCko+CkrOCkqOCkvuCkqOClh+CkleClgeCkruCkvuCksOCkrOCljeCksuClieCkl+CkruCkvuCksuCkv+CkleCkruCkueCkv+CksuCkvuCkquClg+Ckt+CljeCkoOCkrOCkouCkvOCkpOClh+CkreCkvuCknOCkquCkvuCkleCljeCksuCkv+CkleCkn+CljeCksOClh+CkqOCkluCkv+CksuCkvuCkq+CkpuCljOCksOCkvuCkqOCkruCkvuCkruCksuClh+CkruCkpOCkpuCkvuCkqOCkrOCkvuCknOCkvuCksOCkteCkv+CkleCkvuCkuOCkleCljeCkr+Cli+CkguCkmuCkvuCkueCkpOClh+CkquCkueClgeCkgeCkmuCkrOCkpOCkvuCkr+CkvuCkuOCkguCkteCkvuCkpuCkpuClh+CkluCkqOClh+CkquCkv+Ckm+CksuClh+CkteCkv+CktuClh+Ckt+CksOCkvuCknOCljeCkr+CkieCkpOCljeCkpOCksOCkruClgeCkguCkrOCkiOCkpuCli+CkqOCli+CkguCkieCkquCkleCksOCko+CkquCkouCkvOClh+CkguCkuOCljeCkpeCkv+CkpOCkq+Ckv+CksuCljeCkruCkruClgeCkluCljeCkr+CkheCkmuCljeCkm+CkvuCkm+ClguCkn+CkpOClgOCkuOCkguCkl+ClgOCkpOCknOCkvuCkj+Ckl+CkvuCkteCkv+CkreCkvuCkl+CkmOCko+CljeCkn+Clh+CkpuClguCkuOCksOClh+CkpuCkv+CkqOCli+CkguCkueCkpOCljeCkr+CkvuCkuOClh+CkleCljeCkuOCkl+CkvuCkguCkp+ClgOCkteCkv+CktuCljeCkteCksOCkvuCkpOClh+CkguCkpuCliOCkn+CljeCkuOCkqOCkleCljeCktuCkvuCkuOCkvuCkruCkqOClh+CkheCkpuCkvuCksuCkpOCkrOCkv+CknOCksuClgOCkquClgeCksOClguCkt+CkueCkv+CkguCkpuClgOCkruCkv+CkpOCljeCksOCkleCkteCkv+CkpOCkvuCksOClgeCkquCkr+Clh+CkuOCljeCkpeCkvuCkqOCkleCksOCli+CkoeCkvOCkruClgeCkleCljeCkpOCkr+Cli+CknOCkqOCkvuCkleClg+CkquCkr+CkvuCkquCli+CkuOCljeCkn+CkmOCksOClh+CksuClguCkleCkvuCksOCljeCkr+CkteCkv+CkmuCkvuCksOCkuOClguCkmuCkqOCkvuCkruClguCksuCljeCkr+CkpuClh+CkluClh+CkguCkueCkruClh+CktuCkvuCkuOCljeCkleClguCksuCkruCliOCkguCkqOClh+CkpOCliOCkr+CkvuCksOCknOCkv+CkuOCkleClh3Jzcyt4bWwiIHRpdGxlPSItdHlwZSIgY29udGVudD0idGl0bGUiIGNvbnRlbnQ9ImF0IHRoZSBzYW1lIHRpbWUuanMiPjwvc2NyaXB0Pgo8IiBtZXRob2Q9InBvc3QiIDwvc3Bhbj48L2E+PC9saT52ZXJ0aWNhbC1hbGlnbjp0L2pxdWVyeS5taW4uanMiPi5jbGljayhmdW5jdGlvbiggc3R5bGU9InBhZGRpbmctfSkoKTsKPC9zY3JpcHQ+Cjwvc3Bhbj48YSBocmVmPSI8YSBocmVmPSJodHRwOi8vKTsgcmV0dXJuIGZhbHNlO3RleHQtZGVjb3JhdGlvbjogc2Nyb2xsaW5nPSJubyIgYm9yZGVyLWNvbGxhcHNlOmFzc29jaWF0ZWQgd2l0aCBCYWhhc2EgSW5kb25lc2lhRW5nbGlzaCBsYW5ndWFnZTx0ZXh0IHhtbDpzcGFjZT0uZ2lmIiBib3JkZXI9IjAiPC9ib2R5Pgo8L2h0bWw+Cm92ZXJmbG93OmhpZGRlbjtpbWcgc3JjPSJodHRwOi8vYWRkRXZlbnRMaXN0ZW5lcnJlc3BvbnNpYmxlIGZvciBzLmpzIj48L3NjcmlwdD4KL2Zhdmljb24uaWNvIiAvPm9wZXJhdGluZyBzeXN0ZW0iIHN0eWxlPSJ3aWR0aDoxdGFyZ2V0PSJfYmxhbmsiPlN0YXRlIFVuaXZlcnNpdHl0ZXh0LWFsaWduOmxlZnQ7CmRvY3VtZW50LndyaXRlKCwgaW5jbHVkaW5nIHRoZSBhcm91bmQgdGhlIHdvcmxkKTsNCjwvc2NyaXB0Pg0KPCIgc3R5bGU9ImhlaWdodDo7b3ZlcmZsb3c6aGlkZGVubW9yZSBpbmZvcm1hdGlvbmFuIGludGVybmF0aW9uYWxhIG1lbWJlciBvZiB0aGUgb25lIG9mIHRoZSBmaXJzdGNhbiBiZSBmb3VuZCBpbiA8L2Rpdj4KCQk8L2Rpdj4KZGlzcGxheTogbm9uZTsiPiIgLz4KPGxpbmsgcmVsPSIKICAoZnVuY3Rpb24oKSB7dGhlIDE1dGggY2VudHVyeS5wcmV2ZW50RGVmYXVsdChsYXJnZSBudW1iZXIgb2YgQnl6YW50aW5lIEVtcGlyZS5qcGd8dGh1bWJ8bGVmdHx2YXN0IG1ham9yaXR5IG9mbWFqb3JpdHkgb2YgdGhlICBhbGlnbj0iY2VudGVyIj5Vbml2ZXJzaXR5IFByZXNzZG9taW5hdGVkIGJ5IHRoZVNlY29uZCBXb3JsZCBXYXJkaXN0cmlidXRpb24gb2Ygc3R5bGU9InBvc2l0aW9uOnRoZSByZXN0IG9mIHRoZSBjaGFyYWN0ZXJpemVkIGJ5IHJlbD0ibm9mb2xsb3ciPmRlcml2ZXMgZnJvbSB0aGVyYXRoZXIgdGhhbiB0aGUgYSBjb21iaW5hdGlvbiBvZnN0eWxlPSJ3aWR0aDoxMDBFbmdsaXNoLXNwZWFraW5nY29tcHV0ZXIgc2NpZW5jZWJvcmRlcj0iMCIgYWx0PSJ0aGUgZXhpc3RlbmNlIG9mRGVtb2NyYXRpYyBQYXJ0eSIgc3R5bGU9Im1hcmdpbi1Gb3IgdGhpcyByZWFzb24sLmpzIj48L3NjcmlwdD4KCXNCeVRhZ05hbWUocylbMF1qcyI+PC9zY3JpcHQ+DQo8LmpzIj48L3NjcmlwdD4NCmxpbmsgcmVsPSJpY29uIiAnIGFsdD0nJyBjbGFzcz0nZm9ybWF0aW9uIG9mIHRoZXZlcnNpb25zIG9mIHRoZSA8L2E+PC9kaXY+PC9kaXY+L3BhZ2U+CiAgPHBhZ2U+CjxkaXYgY2xhc3M9ImNvbnRiZWNhbWUgdGhlIGZpcnN0YmFoYXNhIEluZG9uZXNpYWVuZ2xpc2ggKHNpbXBsZSnOlc67zrvOt869zrnOus6s0YXRgNCy0LDRgtGB0LrQuNC60L7QvNC/0LDQvdC40LjRj9Cy0LvRj9C10YLRgdGP0JTQvtCx0LDQstC40YLRjNGH0LXQu9C+0LLQtdC60LDRgNCw0LfQstC40YLQuNGP0JjQvdGC0LXRgNC90LXRgtCe0YLQstC10YLQuNGC0YzQvdCw0L/RgNC40LzQtdGA0LjQvdGC0LXRgNC90LXRgtC60L7RgtC+0YDQvtCz0L7RgdGC0YDQsNC90LjRhtGL0LrQsNGH0LXRgdGC0LLQtdGD0YHQu9C+0LLQuNGP0YXQv9GA0L7QsdC70LXQvNGL0L/QvtC70YPRh9C40YLRjNGP0LLQu9GP0Y7RgtGB0Y/QvdCw0LjQsdC+0LvQtdC10LrQvtC80L/QsNC90LjRj9Cy0L3QuNC80LDQvdC40LXRgdGA0LXQtNGB0YLQstCw2KfZhNmF2YjYp9i22YrYudin2YTYsdim2YrYs9mK2KnYp9mE2KfZhtiq2YLYp9mE2YXYtNin2LHZg9in2KrZg9in2YTYs9mK2KfYsdin2KrYp9mE2YXZg9iq2YjYqNip2KfZhNiz2LnZiNiv2YrYqdin2K3Ytdin2KbZitin2KrYp9mE2LnYp9mE2YXZitip2KfZhNi12YjYqtmK2KfYqtin2YTYp9mG2KrYsdmG2KrYp9mE2KrYtdin2YXZitmF2KfZhNil2LPZhNin2YXZitin2YTZhdi02KfYsdmD2KnYp9mE2YXYsdim2YrYp9iqcm9ib3RzIiBjb250ZW50PSI8ZGl2IGlkPSJmb290ZXIiPnRoZSBVbml0ZWQgU3RhdGVzPGltZyBzcmM9Imh0dHA6Ly8uanBnfHJpZ2h0fHRodW1ifC5qcyI+PC9zY3JpcHQ+DQo8bG9jYXRpb24ucHJvdG9jb2xmcmFtZWJvcmRlcj0iMCIgcyIgLz4KPG1ldGEgbmFtZT0iPC9hPjwvZGl2PjwvZGl2Pjxmb250LXdlaWdodDpib2xkOyZxdW90OyBhbmQgJnF1b3Q7ZGVwZW5kaW5nIG9uIHRoZSBtYXJnaW46MDtwYWRkaW5nOiIgcmVsPSJub2ZvbGxvdyIgUHJlc2lkZW50IG9mIHRoZSB0d2VudGlldGggY2VudHVyeWV2aXNpb24+CiAgPC9wYWdlSW50ZXJuZXQgRXhwbG9yZXJhLmFzeW5jID0gdHJ1ZTsNCmluZm9ybWF0aW9uIGFib3V0PGRpdiBpZD0iaGVhZGVyIj4iIGFjdGlvbj0iaHR0cDovLzxhIGhyZWY9Imh0dHBzOi8vPGRpdiBpZD0iY29udGVudCI8L2Rpdj4NCjwvZGl2Pg0KPGRlcml2ZWQgZnJvbSB0aGUgPGltZyBzcmM9J2h0dHA6Ly9hY2NvcmRpbmcgdG8gdGhlIAo8L2JvZHk+CjwvaHRtbD4Kc3R5bGU9ImZvbnQtc2l6ZTpzY3JpcHQgbGFuZ3VhZ2U9IkFyaWFsLCBIZWx2ZXRpY2EsPC9hPjxzcGFuIGNsYXNzPSI8L3NjcmlwdD48c2NyaXB0IHBvbGl0aWNhbCBwYXJ0aWVzdGQ+PC90cj48L3RhYmxlPjxocmVmPSJodHRwOi8vd3d3LmludGVycHJldGF0aW9uIG9mcmVsPSJzdHlsZXNoZWV0IiBkb2N1bWVudC53cml0ZSgnPGNoYXJzZXQ9InV0Zi04Ij4KYmVnaW5uaW5nIG9mIHRoZSByZXZlYWxlZCB0aGF0IHRoZXRlbGV2aXNpb24gc2VyaWVzIiByZWw9Im5vZm9sbG93Ij4gdGFyZ2V0PSJfYmxhbmsiPmNsYWltaW5nIHRoYXQgdGhlaHR0cCUzQSUyRiUyRnd3dy5tYW5pZmVzdGF0aW9ucyBvZlByaW1lIE1pbmlzdGVyIG9maW5mbHVlbmNlZCBieSB0aGVjbGFzcz0iY2xlYXJmaXgiPi9kaXY+DQo8L2Rpdj4NCg0KdGhyZWUtZGltZW5zaW9uYWxDaHVyY2ggb2YgRW5nbGFuZG9mIE5vcnRoIENhcm9saW5hc3F1YXJlIGtpbG9tZXRyZXMuYWRkRXZlbnRMaXN0ZW5lcmRpc3RpbmN0IGZyb20gdGhlY29tbW9ubHkga25vd24gYXNQaG9uZXRpYyBBbHBoYWJldGRlY2xhcmVkIHRoYXQgdGhlY29udHJvbGxlZCBieSB0aGVCZW5qYW1pbiBGcmFua2xpbnJvbGUtcGxheWluZyBnYW1ldGhlIFVuaXZlcnNpdHkgb2ZpbiBXZXN0ZXJuIEV1cm9wZXBlcnNvbmFsIGNvbXB1dGVyUHJvamVjdCBHdXRlbmJlcmdyZWdhcmRsZXNzIG9mIHRoZWhhcyBiZWVuIHByb3Bvc2VkdG9nZXRoZXIgd2l0aCB0aGU+PC9saT48bGkgY2xhc3M9ImluIHNvbWUgY291bnRyaWVzbWluLmpzIj48L3NjcmlwdD5vZiB0aGUgcG9wdWxhdGlvbm9mZmljaWFsIGxhbmd1YWdlPGltZyBzcmM9ImltYWdlcy9pZGVudGlmaWVkIGJ5IHRoZW5hdHVyYWwgcmVzb3VyY2VzY2xhc3NpZmljYXRpb24gb2ZjYW4gYmUgY29uc2lkZXJlZHF1YW50dW0gbWVjaGFuaWNzTmV2ZXJ0aGVsZXNzLCB0aGVtaWxsaW9uIHllYXJzIGFnbzwvYm9keT4NCjwvaHRtbD4NzpXOu867zrfOvc65zrrOrAp0YWtlIGFkdmFudGFnZSBvZmFuZCwgYWNjb3JkaW5nIHRvYXR0cmlidXRlZCB0byB0aGVNaWNyb3NvZnQgV2luZG93c3RoZSBmaXJzdCBjZW50dXJ5dW5kZXIgdGhlIGNvbnRyb2xkaXYgY2xhc3M9ImhlYWRlcnNob3J0bHkgYWZ0ZXIgdGhlbm90YWJsZSBleGNlcHRpb250ZW5zIG9mIHRob3VzYW5kc3NldmVyYWwgZGlmZmVyZW50YXJvdW5kIHRoZSB3b3JsZC5yZWFjaGluZyBtaWxpdGFyeWlzb2xhdGVkIGZyb20gdGhlb3Bwb3NpdGlvbiB0byB0aGV0aGUgT2xkIFRlc3RhbWVudEFmcmljYW4gQW1lcmljYW5zaW5zZXJ0ZWQgaW50byB0aGVzZXBhcmF0ZSBmcm9tIHRoZW1ldHJvcG9saXRhbiBhcmVhbWFrZXMgaXQgcG9zc2libGVhY2tub3dsZWRnZWQgdGhhdGFyZ3VhYmx5IHRoZSBtb3N0dHlwZT0idGV4dC9jc3MiPgp0aGUgSW50ZXJuYXRpb25hbEFjY29yZGluZyB0byB0aGUgcGU9InRleHQvY3NzIiAvPgpjb2luY2lkZSB3aXRoIHRoZXR3by10aGlyZHMgb2YgdGhlRHVyaW5nIHRoaXMgdGltZSxkdXJpbmcgdGhlIHBlcmlvZGFubm91bmNlZCB0aGF0IGhldGhlIGludGVybmF0aW9uYWxhbmQgbW9yZSByZWNlbnRseWJlbGlldmVkIHRoYXQgdGhlY29uc2Npb3VzbmVzcyBhbmRmb3JtZXJseSBrbm93biBhc3N1cnJvdW5kZWQgYnkgdGhlZmlyc3QgYXBwZWFyZWQgaW5vY2Nhc2lvbmFsbHkgdXNlZHBvc2l0aW9uOmFic29sdXRlOyIgdGFyZ2V0PSJfYmxhbmsiIHBvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246Y2VudGVyO2pheC9saWJzL2pxdWVyeS8xLmJhY2tncm91bmQtY29sb3I6I3R5cGU9ImFwcGxpY2F0aW9uL2FuZ3VhZ2UiIGNvbnRlbnQ9IjxtZXRhIGh0dHAtZXF1aXY9IlByaXZhY3kgUG9saWN5PC9hPmUoIiUzQ3NjcmlwdCBzcmM9JyIgdGFyZ2V0PSJfYmxhbmsiPk9uIHRoZSBvdGhlciBoYW5kLC5qcGd8dGh1bWJ8cmlnaHR8MjwvZGl2PjxkaXYgY2xhc3M9IjxkaXYgc3R5bGU9ImZsb2F0Om5pbmV0ZWVudGggY2VudHVyeTwvYm9keT4NCjwvaHRtbD4NCjxpbWcgc3JjPSJodHRwOi8vczt0ZXh0LWFsaWduOmNlbnRlcmZvbnQtd2VpZ2h0OiBib2xkOyBBY2NvcmRpbmcgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiIgZnJhbWVib3JkZXI9IjAiICIgc3R5bGU9InBvc2l0aW9uOmxpbmsgaHJlZj0iaHR0cDovL2h0bWw0L2xvb3NlLmR0ZCI+CmR1cmluZyB0aGlzIHBlcmlvZDwvdGQ+PC90cj48L3RhYmxlPmNsb3NlbHkgcmVsYXRlZCB0b2ZvciB0aGUgZmlyc3QgdGltZTtmb250LXdlaWdodDpib2xkO2lucHV0IHR5cGU9InRleHQiIDxzcGFuIHN0eWxlPSJmb250LW9ucmVhZHlzdGF0ZWNoYW5nZQk8ZGl2IGNsYXNzPSJjbGVhcmRvY3VtZW50LmxvY2F0aW9uLiBGb3IgZXhhbXBsZSwgdGhlIGEgd2lkZSB2YXJpZXR5IG9mIDwhRE9DVFlQRSBodG1sPg0KPCZuYnNwOyZuYnNwOyZuYnNwOyI+PGEgaHJlZj0iaHR0cDovL3N0eWxlPSJmbG9hdDpsZWZ0O2NvbmNlcm5lZCB3aXRoIHRoZT1odHRwJTNBJTJGJTJGd3d3LmluIHBvcHVsYXIgY3VsdHVyZXR5cGU9InRleHQvY3NzIiAvPml0IGlzIHBvc3NpYmxlIHRvIEhhcnZhcmQgVW5pdmVyc2l0eXR5bGVzaGVldCIgaHJlZj0iL3RoZSBtYWluIGNoYXJhY3Rlck94Zm9yZCBVbml2ZXJzaXR5ICBuYW1lPSJrZXl3b3JkcyIgY3N0eWxlPSJ0ZXh0LWFsaWduOnRoZSBVbml0ZWQgS2luZ2RvbWZlZGVyYWwgZ292ZXJubWVudDxkaXYgc3R5bGU9Im1hcmdpbiBkZXBlbmRpbmcgb24gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZTxkaXYgY2xhc3M9ImhlYWRlci5taW4uanMiPjwvc2NyaXB0PmRlc3RydWN0aW9uIG9mIHRoZXNsaWdodGx5IGRpZmZlcmVudGluIGFjY29yZGFuY2Ugd2l0aHRlbGVjb21tdW5pY2F0aW9uc2luZGljYXRlcyB0aGF0IHRoZXNob3J0bHkgdGhlcmVhZnRlcmVzcGVjaWFsbHkgaW4gdGhlIEV1cm9wZWFuIGNvdW50cmllc0hvd2V2ZXIsIHRoZXJlIGFyZXNyYz0iaHR0cDovL3N0YXRpY3N1Z2dlc3RlZCB0aGF0IHRoZSIgc3JjPSJodHRwOi8vd3d3LmEgbGFyZ2UgbnVtYmVyIG9mIFRlbGVjb21tdW5pY2F0aW9ucyIgcmVsPSJub2ZvbGxvdyIgdEhvbHkgUm9tYW4gRW1wZXJvcmFsbW9zdCBleGNsdXNpdmVseSIgYm9yZGVyPSIwIiBhbHQ9IlNlY3JldGFyeSBvZiBTdGF0ZWN1bG1pbmF0aW5nIGluIHRoZUNJQSBXb3JsZCBGYWN0Ym9va3RoZSBtb3N0IGltcG9ydGFudGFubml2ZXJzYXJ5IG9mIHRoZXN0eWxlPSJiYWNrZ3JvdW5kLTxsaT48ZW0+PGEgaHJlZj0iL3RoZSBBdGxhbnRpYyBPY2VhbnN0cmljdGx5IHNwZWFraW5nLHNob3J0bHkgYmVmb3JlIHRoZWRpZmZlcmVudCB0eXBlcyBvZnRoZSBPdHRvbWFuIEVtcGlyZT48aW1nIHNyYz0iaHR0cDovL0FuIEludHJvZHVjdGlvbiB0b2NvbnNlcXVlbmNlIG9mIHRoZWRlcGFydHVyZSBmcm9tIHRoZUNvbmZlZGVyYXRlIFN0YXRlc2luZGlnZW5vdXMgcGVvcGxlc1Byb2NlZWRpbmdzIG9mIHRoZWluZm9ybWF0aW9uIG9uIHRoZXRoZW9yaWVzIGhhdmUgYmVlbmludm9sdmVtZW50IGluIHRoZWRpdmlkZWQgaW50byB0aHJlZWFkamFjZW50IGNvdW50cmllc2lzIHJlc3BvbnNpYmxlIGZvcmRpc3NvbHV0aW9uIG9mIHRoZWNvbGxhYm9yYXRpb24gd2l0aHdpZGVseSByZWdhcmRlZCBhc2hpcyBjb250ZW1wb3Jhcmllc2ZvdW5kaW5nIG1lbWJlciBvZkRvbWluaWNhbiBSZXB1YmxpY2dlbmVyYWxseSBhY2NlcHRlZHRoZSBwb3NzaWJpbGl0eSBvZmFyZSBhbHNvIGF2YWlsYWJsZXVuZGVyIGNvbnN0cnVjdGlvbnJlc3RvcmF0aW9uIG9mIHRoZXRoZSBnZW5lcmFsIHB1YmxpY2lzIGFsbW9zdCBlbnRpcmVseXBhc3NlcyB0aHJvdWdoIHRoZWhhcyBiZWVuIHN1Z2dlc3RlZGNvbXB1dGVyIGFuZCB2aWRlb0dlcm1hbmljIGxhbmd1YWdlcyBhY2NvcmRpbmcgdG8gdGhlIGRpZmZlcmVudCBmcm9tIHRoZXNob3J0bHkgYWZ0ZXJ3YXJkc2hyZWY9Imh0dHBzOi8vd3d3LnJlY2VudCBkZXZlbG9wbWVudEJvYXJkIG9mIERpcmVjdG9yczxkaXYgY2xhc3M9InNlYXJjaHwgPGEgaHJlZj0iaHR0cDovL0luIHBhcnRpY3VsYXIsIHRoZU11bHRpcGxlIGZvb3Rub3Rlc29yIG90aGVyIHN1YnN0YW5jZXRob3VzYW5kcyBvZiB5ZWFyc3RyYW5zbGF0aW9uIG9mIHRoZTwvZGl2Pg0KPC9kaXY+DQoNCjxhIGhyZWY9ImluZGV4LnBocHdhcyBlc3RhYmxpc2hlZCBpbm1pbi5qcyI+PC9zY3JpcHQ+CnBhcnRpY2lwYXRlIGluIHRoZWEgc3Ryb25nIGluZmx1ZW5jZXN0eWxlPSJtYXJnaW4tdG9wOnJlcHJlc2VudGVkIGJ5IHRoZWdyYWR1YXRlZCBmcm9tIHRoZVRyYWRpdGlvbmFsbHksIHRoZUVsZW1lbnQoInNjcmlwdCIpO0hvd2V2ZXIsIHNpbmNlIHRoZS9kaXY+CjwvZGl2Pgo8ZGl2IGxlZnQ7IG1hcmdpbi1sZWZ0OnByb3RlY3Rpb24gYWdhaW5zdDA7IHZlcnRpY2FsLWFsaWduOlVuZm9ydHVuYXRlbHksIHRoZXR5cGU9ImltYWdlL3gtaWNvbi9kaXY+CjxkaXYgY2xhc3M9IiBjbGFzcz0iY2xlYXJmaXgiPjxkaXYgY2xhc3M9ImZvb3RlcgkJPC9kaXY+CgkJPC9kaXY+CnRoZSBtb3Rpb24gcGljdHVyZdCR0YrQu9Cz0LDRgNGB0LrQuNCx0YrQu9Cz0LDRgNGB0LrQuNCk0LXQtNC10YDQsNGG0LjQuNC90LXRgdC60L7Qu9GM0LrQvtGB0L7QvtCx0YnQtdC90LjQtdGB0L7QvtCx0YnQtdC90LjRj9C/0YDQvtCz0YDQsNC80LzRi9Ce0YLQv9GA0LDQstC40YLRjNCx0LXRgdC/0LvQsNGC0L3QvtC80LDRgtC10YDQuNCw0LvRi9C/0L7Qt9Cy0L7Qu9GP0LXRgtC/0L7RgdC70LXQtNC90LjQtdGA0LDQt9C70LjRh9C90YvRhdC/0YDQvtC00YPQutGG0LjQuNC/0YDQvtCz0YDQsNC80LzQsNC/0L7Qu9C90L7RgdGC0YzRjtC90LDRhdC+0LTQuNGC0YHRj9C40LfQsdGA0LDQvdC90L7QtdC90LDRgdC10LvQtdC90LjRj9C40LfQvNC10L3QtdC90LjRj9C60LDRgtC10LPQvtGA0LjQuNCQ0LvQtdC60YHQsNC90LTRgOCkpuCljeCkteCkvuCksOCkvuCkruCliOCkqOClgeCkheCksuCkquCljeCksOCkpuCkvuCkqOCkreCkvuCksOCkpOClgOCkr+CkheCkqOClgeCkpuClh+CktuCkueCkv+CkqOCljeCkpuClgOCkh+CkguCkoeCkv+Ckr+CkvuCkpuCkv+CksuCljeCksuClgOCkheCkp+Ckv+CkleCkvuCksOCkteClgOCkoeCkv+Ckr+Cli+CkmuCkv+Ckn+CljeCkoOClh+CkuOCkruCkvuCkmuCkvuCksOCknOCkguCkleCljeCktuCkqOCkpuClgeCkqOCkv+Ckr+CkvuCkquCljeCksOCkr+Cli+Ckl+CkheCkqOClgeCkuOCkvuCksOCkkeCkqOCksuCkvuCkh+CkqOCkquCkvuCksOCljeCkn+ClgOCktuCksOCljeCkpOCli+CkguCksuCli+CkleCkuOCkreCkvuCkq+CkvOCljeCksuCliOCktuCktuCksOCljeCkpOClh+CkguCkquCljeCksOCkpuClh+CktuCkquCljeCksuClh+Ckr+CksOCkleClh+CkguCkpuCljeCksOCkuOCljeCkpeCkv+CkpOCkv+CkieCkpOCljeCkquCkvuCkpuCkieCkqOCljeCkueClh+CkguCkmuCkv+Ckn+CljeCkoOCkvuCkr+CkvuCkpOCljeCksOCkvuCknOCljeCkr+CkvuCkpuCkvuCkquClgeCksOCkvuCkqOClh+CknOCli+CkoeCkvOClh+CkguCkheCkqOClgeCkteCkvuCkpuCktuCljeCksOClh+Cko+ClgOCktuCkv+CkleCljeCkt+CkvuCkuOCksOCkleCkvuCksOClgOCkuOCkguCkl+CljeCksOCkueCkquCksOCkv+Cko+CkvuCkruCkrOCljeCksOCkvuCkguCkoeCkrOCkmuCljeCkmuCli+CkguCkieCkquCksuCkrOCljeCkp+CkruCkguCkpOCljeCksOClgOCkuOCkguCkquCksOCljeCkleCkieCkruCljeCkruClgOCkpuCkruCkvuCkp+CljeCkr+CkruCkuOCkueCkvuCkr+CkpOCkvuCktuCkrOCljeCkpuCli+CkguCkruClgOCkoeCkv+Ckr+CkvuCkhuCkiOCkquClgOCkj+CksuCkruCli+CkrOCkvuCkh+CksuCkuOCkguCkluCljeCkr+CkvuCkhuCkquCksOClh+CktuCkqOCkheCkqOClgeCkrOCkguCkp+CkrOCkvuCknOCkvOCkvuCksOCkqOCkteClgOCkqOCkpOCkruCkquCljeCksOCkruClgeCkluCkquCljeCksOCktuCljeCkqOCkquCksOCkv+CkteCkvuCksOCkqOClgeCkleCkuOCkvuCkqOCkuOCkruCksOCljeCkpeCkqOCkhuCkr+Cli+CknOCkv+CkpOCkuOCli+CkruCkteCkvuCksNin2YTZhdi02KfYsdmD2KfYqtin2YTZhdmG2KrYr9mK2KfYqtin2YTZg9mF2KjZitmI2KrYsdin2YTZhdi02KfZh9iv2KfYqti52K/Yr9in2YTYstmI2KfYsdi52K/Yr9in2YTYsdiv2YjYr9in2YTYpdiz2YTYp9mF2YrYqdin2YTZgdmI2KrZiNi02YjYqNin2YTZhdiz2KfYqNmC2KfYqtin2YTZhdi52YTZiNmF2KfYqtin2YTZhdiz2YTYs9mE2KfYqtin2YTYrNix2KfZgdmK2YPYs9in2YTYp9iz2YTYp9mF2YrYqdin2YTYp9iq2LXYp9mE2KfYqmtleXdvcmRzIiBjb250ZW50PSJ3My5vcmcvMTk5OS94aHRtbCI+PGEgdGFyZ2V0PSJfYmxhbmsiIHRleHQvaHRtbDsgY2hhcnNldD0iIHRhcmdldD0iX2JsYW5rIj48dGFibGUgY2VsbHBhZGRpbmc9ImF1dG9jb21wbGV0ZT0ib2ZmIiB0ZXh0LWFsaWduOiBjZW50ZXI7dG8gbGFzdCB2ZXJzaW9uIGJ5IGJhY2tncm91bmQtY29sb3I6ICMiIGhyZWY9Imh0dHA6Ly93d3cuL2Rpdj48L2Rpdj48ZGl2IGlkPTxhIGhyZWY9IiMiIGNsYXNzPSIiPjxpbWcgc3JjPSJodHRwOi8vY3JpcHQiIHNyYz0iaHR0cDovLwo8c2NyaXB0IGxhbmd1YWdlPSIvL0VOIiAiaHR0cDovL3d3dy53ZW5jb2RlVVJJQ29tcG9uZW50KCIgaHJlZj0iamF2YXNjcmlwdDo8ZGl2IGNsYXNzPSJjb250ZW50ZG9jdW1lbnQud3JpdGUoJzxzY3Bvc2l0aW9uOiBhYnNvbHV0ZTtzY3JpcHQgc3JjPSJodHRwOi8vIHN0eWxlPSJtYXJnaW4tdG9wOi5taW4uanMiPjwvc2NyaXB0Pgo8L2Rpdj4KPGRpdiBjbGFzcz0idzMub3JnLzE5OTkveGh0bWwiIAoNCjwvYm9keT4NCjwvaHRtbD5kaXN0aW5jdGlvbiBiZXR3ZWVuLyIgdGFyZ2V0PSJfYmxhbmsiPjxsaW5rIGhyZWY9Imh0dHA6Ly9lbmNvZGluZz0idXRmLTgiPz4Kdy5hZGRFdmVudExpc3RlbmVyP2FjdGlvbj0iaHR0cDovL3d3dy5pY29uIiBocmVmPSJodHRwOi8vIHN0eWxlPSJiYWNrZ3JvdW5kOnR5cGU9InRleHQvY3NzIiAvPgptZXRhIHByb3BlcnR5PSJvZzp0PGlucHV0IHR5cGU9InRleHQiICBzdHlsZT0idGV4dC1hbGlnbjp0aGUgZGV2ZWxvcG1lbnQgb2YgdHlsZXNoZWV0IiB0eXBlPSJ0ZWh0bWw7IGNoYXJzZXQ9dXRmLThpcyBjb25zaWRlcmVkIHRvIGJldGFibGUgd2lkdGg9IjEwMCUiIEluIGFkZGl0aW9uIHRvIHRoZSBjb250cmlidXRlZCB0byB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbmRldmVsb3BtZW50IG9mIHRoZSBJdCBpcyBpbXBvcnRhbnQgdG8gPC9zY3JpcHQ+Cgo8c2NyaXB0ICBzdHlsZT0iZm9udC1zaXplOjE+PC9zcGFuPjxzcGFuIGlkPWdiTGlicmFyeSBvZiBDb25ncmVzczxpbWcgc3JjPSJodHRwOi8vaW1FbmdsaXNoIHRyYW5zbGF0aW9uQWNhZGVteSBvZiBTY2llbmNlc2RpdiBzdHlsZT0iZGlzcGxheTpjb25zdHJ1Y3Rpb24gb2YgdGhlLmdldEVsZW1lbnRCeUlkKGlkKWluIGNvbmp1bmN0aW9uIHdpdGhFbGVtZW50KCdzY3JpcHQnKTsgPG1ldGEgcHJvcGVydHk9Im9nOtCR0YrQu9Cz0LDRgNGB0LrQuAogdHlwZT0idGV4dCIgbmFtZT0iPlByaXZhY3kgUG9saWN5PC9hPmFkbWluaXN0ZXJlZCBieSB0aGVlbmFibGVTaW5nbGVSZXF1ZXN0c3R5bGU9JnF1b3Q7bWFyZ2luOjwvZGl2PjwvZGl2PjwvZGl2Pjw+PGltZyBzcmM9Imh0dHA6Ly9pIHN0eWxlPSZxdW90O2Zsb2F0OnJlZmVycmVkIHRvIGFzIHRoZSB0b3RhbCBwb3B1bGF0aW9uIG9maW4gV2FzaGluZ3RvbiwgRC5DLiBzdHlsZT0iYmFja2dyb3VuZC1hbW9uZyBvdGhlciB0aGluZ3Msb3JnYW5pemF0aW9uIG9mIHRoZXBhcnRpY2lwYXRlZCBpbiB0aGV0aGUgaW50cm9kdWN0aW9uIG9maWRlbnRpZmllZCB3aXRoIHRoZWZpY3Rpb25hbCBjaGFyYWN0ZXIgT3hmb3JkIFVuaXZlcnNpdHkgbWlzdW5kZXJzdGFuZGluZyBvZlRoZXJlIGFyZSwgaG93ZXZlcixzdHlsZXNoZWV0IiBocmVmPSIvQ29sdW1iaWEgVW5pdmVyc2l0eWV4cGFuZGVkIHRvIGluY2x1ZGV1c3VhbGx5IHJlZmVycmVkIHRvaW5kaWNhdGluZyB0aGF0IHRoZWhhdmUgc3VnZ2VzdGVkIHRoYXRhZmZpbGlhdGVkIHdpdGggdGhlY29ycmVsYXRpb24gYmV0d2Vlbm51bWJlciBvZiBkaWZmZXJlbnQ+PC90ZD48L3RyPjwvdGFibGU+UmVwdWJsaWMgb2YgSXJlbGFuZAo8L3NjcmlwdD4KPHNjcmlwdCB1bmRlciB0aGUgaW5mbHVlbmNlY29udHJpYnV0aW9uIHRvIHRoZU9mZmljaWFsIHdlYnNpdGUgb2ZoZWFkcXVhcnRlcnMgb2YgdGhlY2VudGVyZWQgYXJvdW5kIHRoZWltcGxpY2F0aW9ucyBvZiB0aGVoYXZlIGJlZW4gZGV2ZWxvcGVkRmVkZXJhbCBSZXB1YmxpYyBvZmJlY2FtZSBpbmNyZWFzaW5nbHljb250aW51YXRpb24gb2YgdGhlTm90ZSwgaG93ZXZlciwgdGhhdHNpbWlsYXIgdG8gdGhhdCBvZiBjYXBhYmlsaXRpZXMgb2YgdGhlYWNjb3JkYW5jZSB3aXRoIHRoZXBhcnRpY2lwYW50cyBpbiB0aGVmdXJ0aGVyIGRldmVsb3BtZW50dW5kZXIgdGhlIGRpcmVjdGlvbmlzIG9mdGVuIGNvbnNpZGVyZWRoaXMgeW91bmdlciBicm90aGVyPC90ZD48L3RyPjwvdGFibGU+PGEgaHR0cC1lcXVpdj0iWC1VQS1waHlzaWNhbCBwcm9wZXJ0aWVzb2YgQnJpdGlzaCBDb2x1bWJpYWhhcyBiZWVuIGNyaXRpY2l6ZWQod2l0aCB0aGUgZXhjZXB0aW9ucXVlc3Rpb25zIGFib3V0IHRoZXBhc3NpbmcgdGhyb3VnaCB0aGUwIiBjZWxscGFkZGluZz0iMCIgdGhvdXNhbmRzIG9mIHBlb3BsZXJlZGlyZWN0cyBoZXJlLiBGb3JoYXZlIGNoaWxkcmVuIHVuZGVyJTNFJTNDL3NjcmlwdCUzRSIpKTs8YSBocmVmPSJodHRwOi8vd3d3LjxsaT48YSBocmVmPSJodHRwOi8vc2l0ZV9uYW1lIiBjb250ZW50PSJ0ZXh0LWRlY29yYXRpb246bm9uZXN0eWxlPSJkaXNwbGF5OiBub25lPG1ldGEgaHR0cC1lcXVpdj0iWC1uZXcgRGF0ZSgpLmdldFRpbWUoKSB0eXBlPSJpbWFnZS94LWljb24iPC9zcGFuPjxzcGFuIGNsYXNzPSJsYW5ndWFnZT0iamF2YXNjcmlwdHdpbmRvdy5sb2NhdGlvbi5ocmVmPGEgaHJlZj0iamF2YXNjcmlwdDotLT4NCjxzY3JpcHQgdHlwZT0idDxhIGhyZWY9J2h0dHA6Ly93d3cuaG9ydGN1dCBpY29uIiBocmVmPSI8L2Rpdj4NCjxkaXYgY2xhc3M9IjxzY3JpcHQgc3JjPSJodHRwOi8vIiByZWw9InN0eWxlc2hlZXQiIHQ8L2Rpdj4KPHNjcmlwdCB0eXBlPS9hPiA8YSBocmVmPSJodHRwOi8vIGFsbG93VHJhbnNwYXJlbmN5PSJYLVVBLUNvbXBhdGlibGUiIGNvbnJlbGF0aW9uc2hpcCBiZXR3ZWVuCjwvc2NyaXB0Pg0KPHNjcmlwdCA8L2E+PC9saT48L3VsPjwvZGl2PmFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U8L2E+PGEgaHJlZj0iaHR0cDovLzwvYT48L2xpPjxsaSBjbGFzcz0iZm9ybSBhY3Rpb249Imh0dHA6Ly88ZGl2IHN0eWxlPSJkaXNwbGF5OnR5cGU9InRleHQiIG5hbWU9InEiPHRhYmxlIHdpZHRoPSIxMDAlIiBiYWNrZ3JvdW5kLXBvc2l0aW9uOiIgYm9yZGVyPSIwIiB3aWR0aD0icmVsPSJzaG9ydGN1dCBpY29uIiBoNj48dWw+PGxpPjxhIGhyZWY9IiAgPG1ldGEgaHR0cC1lcXVpdj0iY3NzIiBtZWRpYT0ic2NyZWVuIiByZXNwb25zaWJsZSBmb3IgdGhlICIgdHlwZT0iYXBwbGljYXRpb24vIiBzdHlsZT0iYmFja2dyb3VuZC1odG1sOyBjaGFyc2V0PXV0Zi04IiBhbGxvd3RyYW5zcGFyZW5jeT0ic3R5bGVzaGVldCIgdHlwZT0idGUNCjxtZXRhIGh0dHAtZXF1aXY9Ij48L3NwYW4+PHNwYW4gY2xhc3M9IjAiIGNlbGxzcGFjaW5nPSIwIj47Cjwvc2NyaXB0Pgo8c2NyaXB0IHNvbWV0aW1lcyBjYWxsZWQgdGhlZG9lcyBub3QgbmVjZXNzYXJpbHlGb3IgbW9yZSBpbmZvcm1hdGlvbmF0IHRoZSBiZWdpbm5pbmcgb2YgPCFET0NUWVBFIGh0bWw+PGh0bWxwYXJ0aWN1bGFybHkgaW4gdGhlIHR5cGU9ImhpZGRlbiIgbmFtZT0iamF2YXNjcmlwdDp2b2lkKDApOyJlZmZlY3RpdmVuZXNzIG9mIHRoZSBhdXRvY29tcGxldGU9Im9mZiIgZ2VuZXJhbGx5IGNvbnNpZGVyZWQ+PGlucHV0IHR5cGU9InRleHQiICI+PC9zY3JpcHQ+DQo8c2NyaXB0dGhyb3VnaG91dCB0aGUgd29ybGRjb21tb24gbWlzY29uY2VwdGlvbmFzc29jaWF0aW9uIHdpdGggdGhlPC9kaXY+CjwvZGl2Pgo8ZGl2IGNkdXJpbmcgaGlzIGxpZmV0aW1lLGNvcnJlc3BvbmRpbmcgdG8gdGhldHlwZT0iaW1hZ2UveC1pY29uIiBhbiBpbmNyZWFzaW5nIG51bWJlcmRpcGxvbWF0aWMgcmVsYXRpb25zYXJlIG9mdGVuIGNvbnNpZGVyZWRtZXRhIGNoYXJzZXQ9InV0Zi04IiA8aW5wdXQgdHlwZT0idGV4dCIgZXhhbXBsZXMgaW5jbHVkZSB0aGUiPjxpbWcgc3JjPSJodHRwOi8vaXBhcnRpY2lwYXRpb24gaW4gdGhldGhlIGVzdGFibGlzaG1lbnQgb2YKPC9kaXY+CjxkaXYgY2xhc3M9IiZhbXA7bmJzcDsmYW1wO25ic3A7dG8gZGV0ZXJtaW5lIHdoZXRoZXJxdWl0ZSBkaWZmZXJlbnQgZnJvbW1hcmtlZCB0aGUgYmVnaW5uaW5nZGlzdGFuY2UgYmV0d2VlbiB0aGVjb250cmlidXRpb25zIHRvIHRoZWNvbmZsaWN0IGJldHdlZW4gdGhld2lkZWx5IGNvbnNpZGVyZWQgdG93YXMgb25lIG9mIHRoZSBmaXJzdHdpdGggdmFyeWluZyBkZWdyZWVzaGF2ZSBzcGVjdWxhdGVkIHRoYXQoZG9jdW1lbnQuZ2V0RWxlbWVudHBhcnRpY2lwYXRpbmcgaW4gdGhlb3JpZ2luYWxseSBkZXZlbG9wZWRldGEgY2hhcnNldD0idXRmLTgiPiB0eXBlPSJ0ZXh0L2NzcyIgLz4KaW50ZXJjaGFuZ2VhYmx5IHdpdGhtb3JlIGNsb3NlbHkgcmVsYXRlZHNvY2lhbCBhbmQgcG9saXRpY2FsdGhhdCB3b3VsZCBvdGhlcndpc2VwZXJwZW5kaWN1bGFyIHRvIHRoZXN0eWxlIHR5cGU9InRleHQvY3NzdHlwZT0ic3VibWl0IiBuYW1lPSJmYW1pbGllcyByZXNpZGluZyBpbmRldmVsb3BpbmcgY291bnRyaWVzY29tcHV0ZXIgcHJvZ3JhbW1pbmdlY29ub21pYyBkZXZlbG9wbWVudGRldGVybWluYXRpb24gb2YgdGhlZm9yIG1vcmUgaW5mb3JtYXRpb25vbiBzZXZlcmFsIG9jY2FzaW9uc3BvcnR1Z3XDqnMgKEV1cm9wZXUp0KPQutGA0LDRl9C90YHRjNC60LDRg9C60YDQsNGX0L3RgdGM0LrQsNCg0L7RgdGB0LjQudGB0LrQvtC50LzQsNGC0LXRgNC40LDQu9C+0LLQuNC90YTQvtGA0LzQsNGG0LjQuNGD0L/RgNCw0LLQu9C10L3QuNGP0L3QtdC+0LHRhdC+0LTQuNC80L7QuNC90YTQvtGA0LzQsNGG0LjRj9CY0L3RhNC+0YDQvNCw0YbQuNGP0KDQtdGB0L/Rg9Cx0LvQuNC60LjQutC+0LvQuNGH0LXRgdGC0LLQvtC40L3RhNC+0YDQvNCw0YbQuNGO0YLQtdGA0YDQuNGC0L7RgNC40LjQtNC+0YHRgtCw0YLQvtGH0L3Qvtin2YTZhdiq2YjYp9is2K/ZiNmG2KfZhNin2LTYqtix2KfZg9in2KrYp9mE2KfZgtiq2LHYp9it2KfYqmh0bWw7IGNoYXJzZXQ9VVRGLTgiIHNldFRpbWVvdXQoZnVuY3Rpb24oKWRpc3BsYXk6aW5saW5lLWJsb2NrOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHR5cGUgPSAndGV4dC9qYXZhc2NyaTxpbWcgc3JjPSJodHRwOi8vd3d3LiIgImh0dHA6Ly93d3cudzMub3JnL3Nob3J0Y3V0IGljb24iIGhyZWY9IiIgYXV0b2NvbXBsZXRlPSJvZmYiIDwvYT48L2Rpdj48ZGl2IGNsYXNzPTwvYT48L2xpPgo8bGkgY2xhc3M9ImNzcyIgdHlwZT0idGV4dC9jc3MiIDxmb3JtIGFjdGlvbj0iaHR0cDovL3h0L2NzcyIgaHJlZj0iaHR0cDovL2xpbmsgcmVsPSJhbHRlcm5hdGUiIA0KPHNjcmlwdCB0eXBlPSJ0ZXh0LyBvbmNsaWNrPSJqYXZhc2NyaXB0OihuZXcgRGF0ZSkuZ2V0VGltZSgpfWhlaWdodD0iMSIgd2lkdGg9IjEiIFBlb3BsZSdzIFJlcHVibGljIG9mICA8YSBocmVmPSJodHRwOi8vd3d3LnRleHQtZGVjb3JhdGlvbjp1bmRlcnRoZSBiZWdpbm5pbmcgb2YgdGhlIDwvZGl2Pgo8L2Rpdj4KPC9kaXY+CmVzdGFibGlzaG1lbnQgb2YgdGhlIDwvZGl2PjwvZGl2PjwvZGl2PjwvZCN2aWV3cG9ydHttaW4taGVpZ2h0Ogo8c2NyaXB0IHNyYz0iaHR0cDovL29wdGlvbj48b3B0aW9uIHZhbHVlPW9mdGVuIHJlZmVycmVkIHRvIGFzIC9vcHRpb24+CjxvcHRpb24gdmFsdTwhRE9DVFlQRSBodG1sPgo8IS0tW0ludGVybmF0aW9uYWwgQWlycG9ydD4KPGEgaHJlZj0iaHR0cDovL3d3dzwvYT48YSBocmVmPSJodHRwOi8vd+C4oOC4suC4qeC4suC5hOC4l+C4ouGDpeGDkOGDoOGDl+GDo+GDmuGDmOato+mrlOS4reaWhyAo57mB6auUKeCkqOCkv+CksOCljeCkpuClh+CktuCkoeCkvuCkieCkqOCksuCli+CkoeCkleCljeCkt+Clh+CkpOCljeCksOCknOCkvuCkqOCkleCkvuCksOClgOCkuOCkguCkrOCkguCkp+Ckv+CkpOCkuOCljeCkpeCkvuCkquCkqOCkvuCkuOCljeCkteClgOCkleCkvuCksOCkuOCkguCkuOCljeCkleCksOCko+CkuOCkvuCkruCkl+CljeCksOClgOCkmuCkv+Ckn+CljeCkoOCli+CkguCkteCkv+CknOCljeCknuCkvuCkqOCkheCkruClh+CksOCkv+CkleCkvuCkteCkv+CkreCkv+CkqOCljeCkqOCkl+CkvuCkoeCkv+Ckr+CkvuCkgeCkleCljeCkr+Cli+CkguCkleCkv+CkuOClgeCksOCkleCljeCkt+CkvuCkquCkueClgeCkgeCkmuCkpOClgOCkquCljeCksOCkrOCkguCkp+CkqOCkn+Ckv+CkquCljeCkquCko+ClgOCkleCljeCksOCkv+CkleClh+Ckn+CkquCljeCksOCkvuCksOCkguCkreCkquCljeCksOCkvuCkquCljeCkpOCkruCkvuCksuCkv+CkleCli+CkguCksOCkq+CkvOCljeCkpOCkvuCksOCkqOCkv+CksOCljeCkruCkvuCko+CksuCkv+CkruCkv+Ckn+Clh+CkoWRlc2NyaXB0aW9uIiBjb250ZW50PSJkb2N1bWVudC5sb2NhdGlvbi5wcm90LmdldEVsZW1lbnRzQnlUYWdOYW1lKDwhRE9DVFlQRSBodG1sPgo8aHRtbCA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+OnVybCIgY29udGVudD0iaHR0cDovLy5jc3MiIHJlbD0ic3R5bGVzaGVldCJzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+dHlwZT0idGV4dC9jc3MiIGhyZWY9InczLm9yZy8xOTk5L3hodG1sIiB4bWx0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG1ldGhvZD0iZ2V0IiBhY3Rpb249ImxpbmsgcmVsPSJzdHlsZXNoZWV0IiAgPSBkb2N1bWVudC5nZXRFbGVtZW50dHlwZT0iaW1hZ2UveC1pY29uIiAvPmNlbGxwYWRkaW5nPSIwIiBjZWxsc3AuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgPC9hPjwvbGk+PGxpPjxhIGhyZWY9IiIgd2lkdGg9IjEiIGhlaWdodD0iMSIiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc3R5bGU9ImRpc3BsYXk6bm9uZTsiPmFsdGVybmF0ZSIgdHlwZT0iYXBwbGktLy9XM0MvL0RURCBYSFRNTCAxLjAgZWxsc3BhY2luZz0iMCIgY2VsbHBhZCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIvYT4mbmJzcDs8c3BhbiByb2xlPSJzCjxpbnB1dCB0eXBlPSJoaWRkZW4iIGxhbmd1YWdlPSJKYXZhU2NyaXB0IiAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHlwZT0idGV4dC9jc3MiIG1lZGlhPSJ0eXBlPSd0ZXh0L2phdmFzY3JpcHQnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHlwZT0idGV4dC9jc3MiIHJlbD0ic3QgaGVpZ2h0PSIxIiB3aWR0aD0iMSIgPScrZW5jb2RlVVJJQ29tcG9uZW50KDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiAKYm9keSwgdHIsIGlucHV0LCB0ZXh0bWV0YSBuYW1lPSJyb2JvdHMiIGNvbm1ldGhvZD0icG9zdCIgYWN0aW9uPSI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuY3NzIiByZWw9InN0eWxlc2hlZXQiIDwvZGl2PjwvZGl2PjxkaXYgY2xhc3NsYW5ndWFnZT0iamF2YXNjcmlwdCI+YXJpYS1oaWRkZW49InRydWUiPsK3PHJpcHQiIHR5cGU9InRleHQvamF2YXNsPTA7fSkoKTsKKGZ1bmN0aW9uKCl7YmFja2dyb3VuZC1pbWFnZTogdXJsKC9hPjwvbGk+PGxpPjxhIGhyZWY9ImgJCTxsaT48YSBocmVmPSJodHRwOi8vYXRvciIgYXJpYS1oaWRkZW49InRydT4gPGEgaHJlZj0iaHR0cDovL3d3dy5sYW5ndWFnZT0iamF2YXNjcmlwdCIgL29wdGlvbj4KPG9wdGlvbiB2YWx1ZS9kaXY+PC9kaXY+PGRpdiBjbGFzcz1yYXRvciIgYXJpYS1oaWRkZW49InRyZT0obmV3IERhdGUpLmdldFRpbWUoKXBvcnR1Z3XDqnMgKGRvIEJyYXNpbCnQvtGA0LPQsNC90LjQt9Cw0YbQuNC40LLQvtC30LzQvtC20L3QvtGB0YLRjNC+0LHRgNCw0LfQvtCy0LDQvdC40Y/RgNC10LPQuNGB0YLRgNCw0YbQuNC40LLQvtC30LzQvtC20L3QvtGB0YLQuNC+0LHRj9C30LDRgtC10LvRjNC90LA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIm50LVR5cGUiIGNvbnRlbnQ9InRleHQvPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVyYW5zaXRpb25hbC8vRU4iICJodHRwOjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LS8vVzNDLy9EVEQgWEhUTUwgMS4wIFREVEQveGh0bWwxLXRyYW5zaXRpb25hbC8vd3d3LnczLm9yZy9UUi94aHRtbDEvcGUgPSAndGV4dC9qYXZhc2NyaXB0Jzs8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFqcyIgdHlwZT0idGV4dC9qYXZhc2NyaShkb2N1bWVudCkucmVhZHkoZnVuY3Rpc2NyaXB0IHR5cGU9InRleHQvamF2YXNpbWFnZSIgY29udGVudD0iaHR0cDovL1VBLUNvbXBhdGlibGUiIGNvbnRlbnQ9dG1sOyBjaGFyc2V0PXV0Zi04IiAvPgpsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT09IGRvY3VtZW50LmNyZWF0ZUVsZW1lbjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSBkb2N1bWVudC5nZXRFbGVtZW50c0JpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPWEudHlwZSA9ICd0ZXh0L2phdmFzY3JpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWVodG1sOyBjaGFyc2V0PXV0Zi04IiAvPmR0ZCI+CjxodG1sIHhtbG5zPSJodHRw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M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAAAcEgIAmA0CAAAAAAABAAAAJAgAAAAAAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ljRUUAAJgRAgD0DQIATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAACYEQIAHA4CAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAmBECAEQOAgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAJgRAgBsDgIATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACYEQIAlA4CAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAmBECALwOAgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAJgRAgDkDgIATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACYEQIADA8CAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQAAmBECADQPAgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUAAJgRAgBcDwIAAAAAAKgPAgAMAAAADQAAAA4AAABTdDlleGNlcHRpb24AAAAAmBECAJgPAgAAAAAA1A8CAAMAAAAPAAAAEAAAAFN0MTFsb2dpY19lcnJvcgDAEQIAxA8CAKgPAgAAAAAACBACAAMAAAARAAAAEAAAAFN0MTJsZW5ndGhfZXJyb3IAAAAAwBECAPQPAgDUDwIAU3Q5dHlwZV9pbmZvAAAAAJgRAgAUEAIATjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAwBECACwQAgAkEAIATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAwBECAFwQAgBQEAIAAAAAANAQAgASAAAAEwAAABQAAAAVAAAAFgAAAE4xMF9fY3h4YWJpdjEyM19fZnVuZGFtZW50YWxfdHlwZV9pbmZvRQDAEQIAqBACAFAQAgB2AAAAlBACANwQAgBiAAAAlBACAOgQAgBjAAAAlBACAPQQAgBoAAAAlBACAAARAgBhAAAAlBACAAwRAgBzAAAAlBACABgRAgB0AAAAlBACACQRAgBpAAAAlBACADARAgBqAAAAlBACADwRAgBsAAAAlBACAEgRAgBtAAAAlBACAFQRAgB4AAAAlBACAGARAgB5AAAAlBACAGwRAgBmAAAAlBACAHgRAgBkAAAAlBACAIQRAgAAAAAAgBACABIAAAAXAAAAFAAAABUAAAAYAAAAGQAAABoAAAAbAAAAAAAAAAgSAgASAAAAHAAAABQAAAAVAAAAGAAAAB0AAAAeAAAAHwAAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAADAEQIA4BECAIAQAgAAAAAAZBICABIAAAAgAAAAFAAAABUAAAAYAAAAIQAAACIAAAAjAAAATjEwX19jeHhhYml2MTIxX192bWlfY2xhc3NfdHlwZV9pbmZvRQAAAMARAgA8EgIAgBACAEH0pAgLRZQSAgAEAAAABQAAAAYAAAAHAAAACAAAAJgRAgBhCAAAwBECAEgIAACMEgIAAAAAAAoKCwsKCgoKCgkJCAcHCAcHBgYFBQBB1aUIC54BEAAAACQAAABUAAAAjAAAAKwAAADQAAAA+AAAACQBAABUAQAAbgEAAIoBAACZAQAAoQEAgKkBAIC7AQAAxQEAAM8BAEDUAQDA2QEAoNwBAKDfAQCg3wEAoN8BAKDfAQCg3wEAoN8BAKDfAQCg3wEAMCoAANkAAADQCQIAsAoCAHkAAAAgCwIAAAAMABsAFwAqAD8AOAAwADsAQABwFVI=\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"s\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"u\"];addOnInit(Module[\"asm\"][\"t\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function(\"body\",\"return function \"+name+\"() {\\n\"+'    \"use strict\";'+\"    return body.apply(this, arguments);\\n\"+\"};\\n\")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i])}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;dependentTypes.forEach(function(dt,i){if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(function(){typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options){options=options||{};if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(function(cb){cb()})}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){++count}}return count}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){return emval_handle_array[i]}}return null}function init_emval(){Module[\"count_emval_handles\"]=count_emval_handles;Module[\"get_first_emval\"]=get_first_emval}var Emval={toValue:function(handle){if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:function(value){switch(value){case undefined:{return 1}case null:{return 2}case true:{return 3}case false:{return 4}default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){if(typeof value!==\"number\"&&typeof value!==\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(\"new_ called with constructor type \"+typeof constructor+\" which is not a function\")}var dummy=createNamedFunction(constructor.name||\"unknownFunctionName\",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break}}var returns=argTypes[0].name!==\"void\";var argsList=\"\";var argsListWired=\"\";for(var i=0;i<argCount-2;++i){argsList+=(i!==0?\", \":\"\")+\"arg\"+i;argsListWired+=(i!==0?\", \":\"\")+\"arg\"+i+\"Wired\"}var invokerFnBody=\"return function \"+makeLegalFunctionName(humanName)+\"(\"+argsList+\") {\\n\"+\"if (arguments.length !== \"+(argCount-2)+\") {\\n\"+\"throwBindingError('function \"+humanName+\" called with ' + arguments.length + ' arguments, expected \"+(argCount-2)+\" args!');\\n\"+\"}\\n\";if(needsDestructorStack){invokerFnBody+=\"var destructors = [];\\n\"}var dtorStack=needsDestructorStack?\"destructors\":\"null\";var args1=[\"throwBindingError\",\"invoker\",\"fn\",\"runDestructors\",\"retType\",\"classParam\"];var args2=[throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];if(isClassMethodFunc){invokerFnBody+=\"var thisWired = classParam.toWireType(\"+dtorStack+\", this);\\n\"}for(var i=0;i<argCount-2;++i){invokerFnBody+=\"var arg\"+i+\"Wired = argType\"+i+\".toWireType(\"+dtorStack+\", arg\"+i+\"); // \"+argTypes[i+2].name+\"\\n\";args1.push(\"argType\"+i);args2.push(argTypes[i+2])}if(isClassMethodFunc){argsListWired=\"thisWired\"+(argsListWired.length>0?\", \":\"\")+argsListWired}invokerFnBody+=(returns?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){var paramName=i===1?\"thisWired\":\"arg\"+(i-2)+\"Wired\";if(argTypes[i].destructorFunction!==null){invokerFnBody+=paramName+\"_dtor(\"+paramName+\"); // \"+argTypes[i].name+\"\\n\";args1.push(paramName+\"_dtor\");args2.push(argTypes[i].destructorFunction)}}}if(returns){invokerFnBody+=\"var ret = retType.fromWireType(rv);\\n\"+\"return ret;\\n\"}else{}invokerFnBody+=\"}\\n\";args1.push(invokerFnBody);var invokerFunction=new_(Function,args1).apply(null,args2);return invokerFunction}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i<count;i++){array.push(HEAP32[(firstElement>>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}return getWasmTableEntry(ptr).apply(null,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=arguments.length;for(var i=0;i<arguments.length;i++){argCache[i]=arguments[i]}return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!==\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(\"Cannot call \"+name+\" due to unbound types\",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<<bitshift>>>bitshift}}var isUnsignedType=name.includes(\"unsigned\");registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":function(destructors,value){if(typeof value!==\"number\"&&typeof value!==\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}if(value<minRange||value>maxRange){throw new TypeError('Passing a number \"'+_embind_repr(value)+'\" from JS side to C/C++ side to an argument of type \"'+name+'\", which is outside the valid range ['+minRange+\", \"+maxRange+\"]!\")}return isUnsignedType?value>>>0:value|0},\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[value+4+i])}str=a.join(\"\")}_free(value);return str},\"toWireType\":function(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var getLength;var valueIsOfTypeString=typeof value===\"string\";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError(\"Cannot pass non-string to std::string\")}if(stdStringIsUTF8&&valueIsOfTypeString){getLength=function(){return lengthBytesUTF8(value)}}else{getLength=function(){return value.length}}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i<length;++i){HEAPU8[ptr+4+i]=value[i]}}}if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=function(){return HEAPU16};shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=function(){return HEAPU32};shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value===\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1}}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function _abort(){abort(\"\")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_emval();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");var ASSERTIONS=false;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\")  at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var decodeBase64=typeof atob===\"function\"?atob:function(input){var keyStr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";var output=\"\";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output};function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE===\"boolean\"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,\"base64\");return new Uint8Array(buf[\"buffer\"],buf[\"byteOffset\"],buf[\"byteLength\"])}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error(\"Converting base64 string to bytes failed.\")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}var asmLibraryArg={\"k\":___cxa_allocate_exception,\"j\":___cxa_throw,\"n\":__embind_register_bigint,\"h\":__embind_register_bool,\"q\":__embind_register_emval,\"f\":__embind_register_float,\"r\":__embind_register_function,\"b\":__embind_register_integer,\"a\":__embind_register_memory_view,\"d\":__embind_register_std_string,\"c\":__embind_register_std_wstring,\"i\":__embind_register_void,\"l\":__emval_decref,\"m\":__emval_incref,\"g\":__emval_take_value,\"e\":_abort,\"o\":_emscripten_memcpy_big,\"p\":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"t\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"v\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"w\"]).apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return(___getTypeName=Module[\"___getTypeName\"]=Module[\"asm\"][\"x\"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=function(){return(___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=Module[\"asm\"][\"y\"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n"
  },
  {
    "path": "lib/content/graph.ts",
    "content": "import { cache } from \"react\";\n\nimport { getReservedTopLevelSlugs } from \"../routes\";\nimport { DEFAULT_CONTENT_DIR, loadContentSource } from \"./source\";\nimport type { ContentGraph, Pairing } from \"./types\";\n\nconst RESERVED_TOP_LEVEL_SLUGS = getReservedTopLevelSlugs();\n\nfunction sortByDateDesc<T extends { dateAdded: string }>(entries: readonly T[]): T[] {\n  return [...entries].sort((left, right) =>\n    right.dateAdded.localeCompare(left.dateAdded)\n  );\n}\n\nfunction validateContentGraph(graph: ContentGraph): void {\n  for (const typeface of graph.typefaces) {\n    if (RESERVED_TOP_LEVEL_SLUGS.has(typeface.slug)) {\n      throw new Error(`Typeface slug \"${typeface.slug}\" collides with a reserved route`);\n    }\n\n    if (!graph.sampleByTypefaceName.has(typeface.name)) {\n      throw new Error(`Missing sample for typeface \"${typeface.name}\"`);\n    }\n\n    if (!graph.glyphPageByTypefaceName.has(typeface.name)) {\n      throw new Error(`Missing glyph page for typeface \"${typeface.name}\"`);\n    }\n\n    for (const relatedName of typeface.familyFaces ?? []) {\n      if (!graph.typefaceByName.has(relatedName)) {\n        throw new Error(`Missing family face \"${relatedName}\" referenced by \"${typeface.name}\"`);\n      }\n    }\n\n    for (const relatedName of typeface.comparisonFaces ?? []) {\n      if (!graph.typefaceByName.has(relatedName)) {\n        throw new Error(\n          `Missing comparison face \"${relatedName}\" referenced by \"${typeface.name}\"`\n        );\n      }\n    }\n  }\n\n  for (const sample of graph.samples) {\n    if (!graph.typefaceByName.has(sample.typefaceName)) {\n      throw new Error(\n        `Sample \"${sample.slug}\" references missing typeface \"${sample.typefaceName}\"`\n      );\n    }\n  }\n\n  for (const pairing of graph.pairings) {\n    for (const typefaceName of pairing.typefaces) {\n      if (!graph.typefaceByName.has(typefaceName)) {\n        throw new Error(`Pairing \"${pairing.name}\" references missing typeface \"${typefaceName}\"`);\n      }\n    }\n  }\n}\n\nexport function buildContentGraphFromContentDir(contentDir: string): ContentGraph {\n  const { typefaces, glyphPages, samples, pairings, text } = loadContentSource(contentDir);\n  const typefaceBySlug = new Map(typefaces.map((entry) => [entry.slug, entry]));\n  const typefaceByName = new Map(typefaces.map((entry) => [entry.name, entry]));\n  const glyphPageBySlug = new Map(glyphPages.map((entry) => [entry.slug, entry]));\n  const glyphPageByTypefaceName = new Map(\n    glyphPages.map((entry) => [entry.typefaceName, entry])\n  );\n  const sampleByTypefaceName = new Map(samples.map((entry) => [entry.typefaceName, entry]));\n  const pairingsByTypefaceName = new Map<string, Pairing[]>();\n\n  for (const pairing of pairings) {\n    for (const typefaceName of pairing.typefaces) {\n      const currentEntries = pairingsByTypefaceName.get(typefaceName) ?? [];\n      currentEntries.push(pairing);\n      pairingsByTypefaceName.set(typefaceName, currentEntries);\n    }\n  }\n\n  const graph: ContentGraph = {\n    typefaces,\n    typefaceBySlug,\n    typefaceByName,\n    glyphPages,\n    glyphPageBySlug,\n    glyphPageByTypefaceName,\n    samples,\n    sampleByTypefaceName,\n    pairings,\n    pairingsByTypefaceName,\n    latestTypefaces: sortByDateDesc(typefaces),\n    latestPairings: sortByDateDesc(pairings),\n    text\n  };\n\n  validateContentGraph(graph);\n\n  return graph;\n}\n\nconst getCachedContentGraph = cache(() => buildContentGraphFromContentDir(DEFAULT_CONTENT_DIR));\n\nexport function getContentGraph(): ContentGraph {\n  return getCachedContentGraph();\n}\n"
  },
  {
    "path": "lib/content/index.ts",
    "content": "export {\n  getAllTypefaceSlugs,\n  getAllTypefaces,\n  getGlyphPageBySlug,\n  getLatestPairings,\n  getLatestTypefaces,\n  getPairingsForTypeface,\n  getSampleForTypeface,\n  getTextData,\n  getTypefaceBySlug,\n  getTypefacesByCategory,\n  resolveTypefaceSlugByName\n} from \"./queries\";\n\nexport type {\n  CategoryName,\n  CategorySlug,\n  GlyphPage,\n  Pairing,\n  Sample,\n  TextData,\n  Typeface,\n  Weight\n} from \"./types\";\n"
  },
  {
    "path": "lib/content/queries.ts",
    "content": "import type {\n  CategorySlug,\n  GlyphPage,\n  Pairing,\n  Sample,\n  TextData,\n  Typeface\n} from \"./types\";\nimport { getContentGraph } from \"./graph\";\n\nexport function getAllTypefaces(): Typeface[] {\n  return getContentGraph().typefaces;\n}\n\nexport function getAllTypefaceSlugs(): string[] {\n  return getAllTypefaces().map((typeface) => typeface.slug);\n}\n\nexport function getLatestTypefaces(): Typeface[] {\n  return getContentGraph().latestTypefaces;\n}\n\nexport function getLatestPairings(): Pairing[] {\n  return getContentGraph().latestPairings;\n}\n\nexport function getTypefacesByCategory(categorySlug: CategorySlug): Typeface[] {\n  return getAllTypefaces().filter((typeface) => typeface.categorySlug === categorySlug);\n}\n\nexport function getTypefaceBySlug(typefaceSlug: string): Typeface | undefined {\n  return getContentGraph().typefaceBySlug.get(typefaceSlug);\n}\n\nexport function getGlyphPageBySlug(typefaceSlug: string): GlyphPage | undefined {\n  return getContentGraph().glyphPageBySlug.get(typefaceSlug);\n}\n\nexport function getSampleForTypeface(typefaceName: string): Sample | undefined {\n  return getContentGraph().sampleByTypefaceName.get(typefaceName);\n}\n\nexport function getPairingsForTypeface(typefaceName: string): Pairing[] {\n  return getContentGraph().pairingsByTypefaceName.get(typefaceName) ?? [];\n}\n\nexport function getTextData(): TextData {\n  return getContentGraph().text;\n}\n\nexport function resolveTypefaceSlugByName(typefaceName: string): string {\n  const typeface = getContentGraph().typefaceByName.get(typefaceName);\n\n  if (!typeface) {\n    throw new Error(`Unknown typeface \"${typefaceName}\"`);\n  }\n\n  return typeface.slug;\n}\n"
  },
  {
    "path": "lib/content/source.ts",
    "content": "import fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport { load } from \"js-yaml\";\n\nimport type {\n  CategoryName,\n  CategorySlug,\n  GlyphPage,\n  Pairing,\n  Sample,\n  SampleShade,\n  TextData,\n  Typeface,\n  Weight\n} from \"./types\";\n\nexport const DEFAULT_CONTENT_DIR = path.join(process.cwd(), \"content\");\n\ntype ContentSource = {\n  typefaces: Typeface[];\n  glyphPages: GlyphPage[];\n  samples: Sample[];\n  pairings: Pairing[];\n  text: TextData;\n};\n\nconst CATEGORY_SLUGS: Record<CategoryName, CategorySlug> = {\n  Display: \"display\",\n  Monospaced: \"monospaced\",\n  \"Sans-Serif\": \"sans-serif\",\n  Serif: \"serif\"\n};\n\nfunction listDirectories(directory: string): string[] {\n  if (!fs.existsSync(directory)) {\n    throw new Error(`Expected directory to exist: ${directory}`);\n  }\n\n  return fs\n    .readdirSync(directory, { withFileTypes: true })\n    .filter((entry) => entry.isDirectory())\n    .map((entry) => path.join(directory, entry.name))\n    .sort((left, right) => path.basename(left).localeCompare(path.basename(right)));\n}\n\nfunction readRequiredTextFile(filePath: string): string {\n  if (!fs.existsSync(filePath)) {\n    throw new Error(`Expected file to exist: ${filePath}`);\n  }\n\n  return fs.readFileSync(filePath, \"utf8\").trim();\n}\n\nfunction readYamlFile(filePath: string): Record<string, unknown> {\n  if (!fs.existsSync(filePath)) {\n    throw new Error(`Expected file to exist: ${filePath}`);\n  }\n\n  const parsed = load(fs.readFileSync(filePath, \"utf8\"));\n\n  if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n    throw new Error(`Expected YAML object in ${filePath}`);\n  }\n\n  return parsed as Record<string, unknown>;\n}\n\nfunction assertString(value: unknown, key: string, filePath: string): string {\n  if (typeof value !== \"string\" || value.length === 0) {\n    throw new Error(`Expected \"${key}\" to be a non-empty string in ${filePath}`);\n  }\n\n  return value;\n}\n\nfunction assertStringValue(value: unknown, key: string, filePath: string): string {\n  if (typeof value !== \"string\") {\n    throw new Error(`Expected \"${key}\" to be a string in ${filePath}`);\n  }\n\n  return value;\n}\n\nfunction assertObject(\n  value: unknown,\n  key: string,\n  filePath: string\n): Record<string, unknown> {\n  if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n    throw new Error(`Expected \"${key}\" to be an object in ${filePath}`);\n  }\n\n  return value as Record<string, unknown>;\n}\n\nfunction assertCategory(value: unknown, filePath: string): CategoryName {\n  if (typeof value !== \"string\" || !(value in CATEGORY_SLUGS)) {\n    throw new Error(`Expected \"category\" to be a valid category in ${filePath}`);\n  }\n\n  return value as CategoryName;\n}\n\nfunction maybeString(value: unknown): string | undefined {\n  return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction maybeBoolean(value: unknown): boolean | undefined {\n  return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction assertStringArray(value: unknown, key: string, filePath: string): string[] {\n  if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\")) {\n    throw new Error(`Expected \"${key}\" to be a string array in ${filePath}`);\n  }\n\n  return value as string[];\n}\n\nfunction assertStringOrNumber(\n  value: unknown,\n  key: string,\n  filePath: string\n): string | number {\n  if (typeof value !== \"string\" && typeof value !== \"number\") {\n    throw new Error(`Expected \"${key}\" to be a string or number in ${filePath}`);\n  }\n\n  return value;\n}\n\nfunction assertWeights(value: unknown, filePath: string): Weight[] {\n  if (!Array.isArray(value)) {\n    throw new Error(`Expected \"weights\" to be an array in ${filePath}`);\n  }\n\n  return value.map((entry) => {\n    if (\n      typeof entry !== \"object\" ||\n      entry === null ||\n      typeof (entry as { name?: unknown }).name !== \"string\" ||\n      typeof (entry as { weight?: unknown }).weight !== \"number\"\n    ) {\n      throw new Error(`Invalid weight entry in ${filePath}`);\n    }\n\n    return {\n      name: (entry as { name: string }).name,\n      weight: (entry as { weight: number }).weight\n    };\n  });\n}\n\nfunction assertSampleShade(\n  value: unknown,\n  key: string,\n  filePath: string\n): SampleShade | undefined {\n  if (value === undefined || value === null) {\n    return undefined;\n  }\n\n  if (value === \"light\" || value === \"dark\") {\n    return value;\n  }\n\n  throw new Error(`Expected \"${key}\" to be \"light\" or \"dark\" in ${filePath}`);\n}\n\nfunction toDateString(value: unknown, key: string, filePath: string): string {\n  if (value instanceof Date) {\n    return value.toISOString().slice(0, 10);\n  }\n\n  if (typeof value === \"string\") {\n    const parsed = new Date(value);\n\n    if (!Number.isNaN(parsed.getTime())) {\n      return parsed.toISOString().slice(0, 10);\n    }\n  }\n\n  throw new Error(`Expected \"${key}\" to be a date-like value in ${filePath}`);\n}\n\nfunction categoryToSlug(category: CategoryName): CategorySlug {\n  return CATEGORY_SLUGS[category];\n}\n\nfunction loadTypefaceBundles(contentDir: string): {\n  typefaces: Typeface[];\n  glyphPages: GlyphPage[];\n  samples: Sample[];\n} {\n  const typefaces: Typeface[] = [];\n  const glyphPages: GlyphPage[] = [];\n  const samples: Sample[] = [];\n  const typefaceDirectories = listDirectories(path.join(contentDir, \"typefaces\"));\n\n  for (const directory of typefaceDirectories) {\n    const slug = path.basename(directory);\n    const metaPath = path.join(directory, \"meta.yml\");\n    const detailPath = path.join(directory, \"detail.html\");\n    const samplePath = path.join(directory, \"sample.html\");\n    const glyphsPath = path.join(directory, \"glyphs.yml\");\n    const meta = readYamlFile(metaPath);\n    const glyphs = readYamlFile(glyphsPath);\n    const latestRelease = assertObject(meta.latestRelease, \"latestRelease\", metaPath);\n    const creator = assertObject(meta.creator, \"creator\", metaPath);\n    const category = assertCategory(meta.category, metaPath);\n    const typefaceName = assertString(meta.name, \"name\", metaPath);\n\n    typefaces.push({\n      slug,\n      name: typefaceName,\n      dateAdded: toDateString(meta.dateAdded, \"dateAdded\", metaPath),\n      category,\n      categorySlug: categoryToSlug(category),\n      styles: assertStringOrNumber(meta.styles, \"styles\", metaPath),\n      weights: assertWeights(meta.weights, metaPath),\n      latestRelease: {\n        version: assertStringValue(latestRelease.version, \"latestRelease.version\", metaPath),\n        date: assertString(latestRelease.date, \"latestRelease.date\", metaPath)\n      },\n      projectUrl: assertString(meta.projectUrl, \"projectUrl\", metaPath),\n      gFontsUrl: maybeString(meta.gFontsUrl),\n      creator: {\n        name: assertString(creator.name, \"creator.name\", metaPath),\n        url: assertString(creator.url, \"creator.url\", metaPath)\n      },\n      description: assertString(meta.description, \"description\", metaPath),\n      italic: maybeBoolean(meta.italic),\n      smallcap: maybeBoolean(meta.smallcap),\n      familyFaces: Array.isArray(meta.familyFaces)\n        ? assertStringArray(meta.familyFaces, \"familyFaces\", metaPath)\n        : undefined,\n      comparisonFaces: Array.isArray(meta.comparisonFaces)\n        ? assertStringArray(meta.comparisonFaces, \"comparisonFaces\", metaPath)\n        : undefined,\n      bodyHtml: readRequiredTextFile(detailPath),\n      bodyClass: `${categoryToSlug(category)} detail`\n    });\n\n    glyphPages.push({\n      slug,\n      typefaceName,\n      fontFile: assertString(glyphs.fontFile, \"fontFile\", glyphsPath),\n      bodyClass: `${categoryToSlug(category)} glyphs`\n    });\n\n    samples.push({\n      slug,\n      typefaceName,\n      sampleShade: assertSampleShade(meta.sampleShade, \"sampleShade\", metaPath),\n      bodyHtml: readRequiredTextFile(samplePath)\n    });\n  }\n\n  return { typefaces, glyphPages, samples };\n}\n\nfunction loadPairings(contentDir: string): Pairing[] {\n  const pairings: Pairing[] = [];\n  const pairingDirectories = listDirectories(path.join(contentDir, \"pairings\"));\n\n  for (const directory of pairingDirectories) {\n    const slug = path.basename(directory);\n    const metaPath = path.join(directory, \"meta.yml\");\n    const samplePath = path.join(directory, \"sample.html\");\n    const meta = readYamlFile(metaPath);\n\n    pairings.push({\n      slug,\n      name: assertString(meta.name, \"name\", metaPath),\n      dateAdded: toDateString(meta.dateAdded, \"dateAdded\", metaPath),\n      typefaces: assertStringArray(meta.typefaces, \"typefaces\", metaPath),\n      sampleShade: assertSampleShade(meta.sampleShade, \"sampleShade\", metaPath),\n      bodyHtml: readRequiredTextFile(samplePath)\n    });\n  }\n\n  return pairings;\n}\n\nfunction loadTextData(contentDir: string): TextData {\n  const textPath = path.join(contentDir, \"site\", \"text.yml\");\n  const parsed = readYamlFile(textPath);\n\n  return {\n    words: assertStringArray(parsed.words, \"words\", textPath),\n    headlines: assertStringArray(parsed.headlines, \"headlines\", textPath),\n    paragraphs: assertStringArray(parsed.paragraphs, \"paragraphs\", textPath)\n  };\n}\n\nexport function loadContentSource(contentDir = DEFAULT_CONTENT_DIR): ContentSource {\n  const { typefaces, glyphPages, samples } = loadTypefaceBundles(contentDir);\n\n  return {\n    typefaces,\n    glyphPages,\n    samples,\n    pairings: loadPairings(contentDir),\n    text: loadTextData(contentDir)\n  };\n}\n"
  },
  {
    "path": "lib/content/types.ts",
    "content": "export type CategoryName = \"Display\" | \"Monospaced\" | \"Sans-Serif\" | \"Serif\";\n\nexport type CategorySlug = \"display\" | \"monospaced\" | \"sans-serif\" | \"serif\";\n\nexport type Weight = {\n  weight: number;\n  name: string;\n};\n\nexport type SampleShade = \"light\" | \"dark\";\n\nexport type Typeface = {\n  slug: string;\n  name: string;\n  dateAdded: string;\n  category: CategoryName;\n  categorySlug: CategorySlug;\n  styles: string | number;\n  weights: Weight[];\n  latestRelease: {\n    version: string;\n    date: string;\n  };\n  projectUrl: string;\n  gFontsUrl?: string;\n  creator: {\n    name: string;\n    url: string;\n  };\n  description: string;\n  italic?: boolean;\n  smallcap?: boolean;\n  familyFaces?: string[];\n  comparisonFaces?: string[];\n  bodyHtml: string;\n  bodyClass: string;\n};\n\nexport type GlyphPage = {\n  slug: string;\n  typefaceName: string;\n  fontFile: string;\n  bodyClass: string;\n};\n\nexport type Sample = {\n  slug: string;\n  typefaceName: string;\n  sampleShade?: SampleShade;\n  bodyHtml: string;\n};\n\nexport type Pairing = {\n  slug: string;\n  name: string;\n  dateAdded: string;\n  typefaces: string[];\n  sampleShade?: SampleShade;\n  bodyHtml: string;\n};\n\nexport type TextData = {\n  words: string[];\n  headlines: string[];\n  paragraphs: string[];\n};\n\nexport type ContentGraph = {\n  typefaces: Typeface[];\n  typefaceBySlug: Map<string, Typeface>;\n  typefaceByName: Map<string, Typeface>;\n  glyphPages: GlyphPage[];\n  glyphPageBySlug: Map<string, GlyphPage>;\n  glyphPageByTypefaceName: Map<string, GlyphPage>;\n  samples: Sample[];\n  sampleByTypefaceName: Map<string, Sample>;\n  pairings: Pairing[];\n  pairingsByTypefaceName: Map<string, Pairing[]>;\n  latestTypefaces: Typeface[];\n  latestPairings: Pairing[];\n  text: TextData;\n};\n"
  },
  {
    "path": "lib/feed.ts",
    "content": "import { getTypefacePath, toAbsoluteUrl } from \"./routes\";\nimport type { Typeface } from \"./content/types\";\n\nconst SITE_NAME = \"Beautiful Web Type\";\n\nfunction xmlEscape(value: string): string {\n  return value\n    .replace(/&/g, \"&amp;\")\n    .replace(/</g, \"&lt;\")\n    .replace(/>/g, \"&gt;\")\n    .replace(/\"/g, \"&quot;\")\n    .replace(/'/g, \"&apos;\");\n}\n\nexport function buildAtomFeedXml(\n  typefaces: readonly Typeface[],\n  buildDate = new Date().toISOString()\n): string {\n  const entries = typefaces\n    .map((typeface) => {\n      const imageUrl = toAbsoluteUrl(`/assets/images/${typeface.slug}.png`);\n      const typefaceUrl = toAbsoluteUrl(getTypefacePath(typeface.slug));\n\n      return `<entry>\n  <title>${xmlEscape(`${typeface.name} by ${typeface.creator.name}`)}</title>\n  <link href=\"${xmlEscape(typefaceUrl)}\" />\n  <id>${xmlEscape(typefaceUrl)}</id>\n  <updated>${xmlEscape(new Date(typeface.dateAdded).toISOString())}</updated>\n  <summary type=\"html\">${xmlEscape(typeface.description)}</summary>\n  <content type=\"xhtml\"><div xmlns=\"http://www.w3.org/1999/xhtml\"><p>${xmlEscape(\n    typeface.description\n  )}</p><p><a href=\"${xmlEscape(typefaceUrl)}\"><img src=\"${xmlEscape(\n    imageUrl\n  )}\" alt=\"${xmlEscape(`${typeface.name} by ${typeface.creator.name}`)}\" /></a></p></div>\n  </content>\n</entry>`;\n    })\n    .join(\"\\n\");\n\n  return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\">\n  <title>${SITE_NAME}</title>\n  <link href=\"${toAbsoluteUrl(\"/feed.xml\")}\" rel=\"self\" />\n  <link href=\"${toAbsoluteUrl(\"/\")}\" />\n  <id>${toAbsoluteUrl(\"/\")}</id>\n  <updated>${xmlEscape(buildDate)}</updated>\n  <author>\n    <name>Chad Mazzola</name>\n    <email>ubuwaits@gmail.com</email>\n    <uri>${toAbsoluteUrl(\"/\")}</uri>\n  </author>\n${entries}\n</feed>\n`;\n}\n"
  },
  {
    "path": "lib/glyph-inspector-font-loader.ts",
    "content": "export type Glyph = {\n  index: number;\n  unicode?: number;\n  unicodes: number[];\n  name?: string;\n  advanceWidth: number;\n  draw: (\n    context: CanvasRenderingContext2D,\n    x: number,\n    y: number,\n    fontSize: number\n  ) => void;\n};\n\nexport type Font = {\n  numGlyphs: number;\n  unitsPerEm: number;\n  glyphs: {\n    get: (glyphIndex: number) => Glyph;\n  };\n  tables: {\n    head: {\n      xMax: number;\n      xMin: number;\n      yMax: number;\n      yMin: number;\n    };\n  };\n};\n\nexport type OpentypeRuntime = {\n  load: (fontFile: string, callback: (error: Error | null, font?: Font) => void) => void;\n  parse: (fontData: ArrayBuffer) => Font;\n};\n\nexport type Wawoff2Module = {\n  decompress?: (fontData: ArrayBuffer | Uint8Array) => ArrayBuffer | Uint8Array | number[];\n  onRuntimeInitialized?: () => void;\n};\n\ntype ReadyWawoff2Module = Wawoff2Module & {\n  decompress: NonNullable<Wawoff2Module[\"decompress\"]>;\n};\n\ntype GlyphInspectorFontLoaderDeps = {\n  getOpentype: () => OpentypeRuntime | undefined;\n  fetchArrayBuffer: (fontFile: string) => Promise<ArrayBuffer>;\n  loadScript: (src: string) => Promise<void>;\n  getWoff2Module: () => Wawoff2Module | undefined;\n  setWoff2Module: (module: Wawoff2Module) => void;\n};\n\nconst WAWOFF2_DECOMPRESSOR_SRC = \"/js/wawoff2-decompress.js\";\n\nconst scriptPromises = new Map<string, Promise<void>>();\nlet woff2ModulePromise: Promise<ReadyWawoff2Module> | null = null;\n\ndeclare global {\n  interface Window {\n    Module?: Wawoff2Module;\n    opentype?: OpentypeRuntime;\n  }\n}\n\nfunction isWoff2FontFile(fontFile: string) {\n  return fontFile.toLowerCase().endsWith(\".woff2\");\n}\n\nfunction normalizeDecompressedFontData(fontData: ArrayBuffer | Uint8Array | number[]) {\n  if (fontData instanceof ArrayBuffer) {\n    return fontData;\n  }\n\n  const typedArray = fontData instanceof Uint8Array ? fontData : Uint8Array.from(fontData);\n  const arrayBuffer = new ArrayBuffer(typedArray.byteLength);\n  const bufferView = new Uint8Array(arrayBuffer);\n  bufferView.set(typedArray);\n\n  return arrayBuffer;\n}\n\nfunction loadOpentypeFont(opentype: OpentypeRuntime, fontFile: string) {\n  return new Promise<Font>((resolve, reject) => {\n    opentype.load(fontFile, (error, font) => {\n      if (error) {\n        reject(error);\n        return;\n      }\n\n      if (!font) {\n        reject(new Error(`Font could not be loaded: ${fontFile}`));\n        return;\n      }\n\n      resolve(font);\n    });\n  });\n}\n\nfunction loadScriptFromDocument(src: string) {\n  const cachedPromise = scriptPromises.get(src);\n\n  if (cachedPromise) {\n    return cachedPromise;\n  }\n\n  const promise = new Promise<void>((resolve, reject) => {\n    const existingScript = document.querySelector<HTMLScriptElement>(`script[src=\"${src}\"]`);\n\n    const handleLoad = () => resolve();\n    const handleError = () => reject(new Error(`Failed to load script: ${src}`));\n\n    if (existingScript) {\n      if (existingScript.dataset.loaded === \"true\") {\n        resolve();\n        return;\n      }\n\n      existingScript.addEventListener(\"load\", handleLoad, { once: true });\n      existingScript.addEventListener(\"error\", handleError, { once: true });\n      return;\n    }\n\n    const script = document.createElement(\"script\");\n    script.src = src;\n    script.async = true;\n    script.dataset.loaded = \"false\";\n    script.addEventListener(\n      \"load\",\n      () => {\n        script.dataset.loaded = \"true\";\n        resolve();\n      },\n      { once: true }\n    );\n    script.addEventListener(\"error\", handleError, { once: true });\n    document.head.appendChild(script);\n  }).catch((error) => {\n    scriptPromises.delete(src);\n    throw error;\n  });\n\n  scriptPromises.set(src, promise);\n\n  return promise;\n}\n\nasync function ensureWoff2Module(\n  deps: GlyphInspectorFontLoaderDeps\n): Promise<ReadyWawoff2Module> {\n  if (woff2ModulePromise) {\n    return woff2ModulePromise;\n  }\n\n  const existingModule = deps.getWoff2Module();\n\n  if (existingModule?.decompress) {\n    return existingModule as ReadyWawoff2Module;\n  }\n\n  woff2ModulePromise = new Promise<ReadyWawoff2Module>((resolve, reject) => {\n    const previousModule = deps.getWoff2Module();\n    const previousOnRuntimeInitialized = previousModule?.onRuntimeInitialized;\n\n    const finalizeModule = () => {\n      const readyModule = deps.getWoff2Module();\n\n      if (!readyModule?.decompress) {\n        woff2ModulePromise = null;\n        reject(new Error(\"WOFF2 decompressor did not initialize.\"));\n        return;\n      }\n\n      resolve(readyModule as ReadyWawoff2Module);\n    };\n\n    deps.setWoff2Module({\n      ...(previousModule ?? {}),\n      onRuntimeInitialized: () => {\n        previousOnRuntimeInitialized?.();\n        finalizeModule();\n      }\n    });\n\n    deps.loadScript(WAWOFF2_DECOMPRESSOR_SRC)\n      .then(() => {\n        if (deps.getWoff2Module()?.decompress) {\n          finalizeModule();\n        }\n      })\n      .catch((error) => {\n        woff2ModulePromise = null;\n        reject(error instanceof Error ? error : new Error(String(error)));\n      });\n  });\n\n  return woff2ModulePromise;\n}\n\nconst browserGlyphInspectorFontLoaderDeps: GlyphInspectorFontLoaderDeps = {\n  getOpentype: () => window.opentype,\n  fetchArrayBuffer: async (fontFile) => {\n    const response = await fetch(fontFile);\n\n    if (!response.ok) {\n      throw new Error(`Font could not be loaded: ${response.status} ${response.statusText}`);\n    }\n\n    return response.arrayBuffer();\n  },\n  loadScript: loadScriptFromDocument,\n  getWoff2Module: () => window.Module,\n  setWoff2Module: (module) => {\n    window.Module = module;\n  }\n};\n\nexport async function loadGlyphInspectorFont(\n  fontFile: string,\n  deps: GlyphInspectorFontLoaderDeps = browserGlyphInspectorFontLoaderDeps\n) {\n  const opentype = deps.getOpentype();\n\n  if (!opentype) {\n    throw new Error(\"opentype.js is not available.\");\n  }\n\n  if (!isWoff2FontFile(fontFile)) {\n    return loadOpentypeFont(opentype, fontFile);\n  }\n\n  const woff2Module = await ensureWoff2Module(deps);\n  const fontData = await deps.fetchArrayBuffer(fontFile);\n  const decompressedFontData = normalizeDecompressedFontData(woff2Module.decompress(fontData));\n\n  return opentype.parse(decompressedFontData);\n}\n\nexport function createGlyphInspectorFontLoader(deps: GlyphInspectorFontLoaderDeps) {\n  return (fontFile: string) => loadGlyphInspectorFont(fontFile, deps);\n}\n\nexport function resetGlyphInspectorFontLoaderForTests() {\n  scriptPromises.clear();\n  woff2ModulePromise = null;\n}\n"
  },
  {
    "path": "lib/routes.ts",
    "content": "export const SITE_ORIGIN = \"https://www.beautifulwebtype.com\";\n\nexport const STATIC_SITEMAP_PATHS = [\n  \"/\",\n  \"/display/\",\n  \"/monospaced/\",\n  \"/sans-serif/\",\n  \"/serif/\",\n  \"/pairings/\"\n] as const;\n\nconst NON_TYPEFACE_TOP_LEVEL_PATHS = [\n  \"assets\",\n  \"css\",\n  \"feed.xml\",\n  \"google146824b99fdbed48.html\",\n  \"js\",\n  \"sitemap.xml\",\n  \"v1\"\n] as const;\n\nfunction routeToTopLevelSlug(routePath: string): string | undefined {\n  return routePath.split(\"/\").filter(Boolean)[0];\n}\n\nexport function getReservedTopLevelSlugs(): Set<string> {\n  return new Set([\n    ...STATIC_SITEMAP_PATHS.map(routeToTopLevelSlug).filter(\n      (routeSlug): routeSlug is string => routeSlug !== undefined\n    ),\n    ...NON_TYPEFACE_TOP_LEVEL_PATHS\n  ]);\n}\n\nexport function getTypefacePath(typefaceSlug: string): string {\n  return `/${typefaceSlug}/`;\n}\n\nexport function getGlyphPath(typefaceSlug: string): string {\n  return `/${typefaceSlug}/glyphs/`;\n}\n\nexport function toAbsoluteUrl(routePath: string): string {\n  return new URL(routePath, SITE_ORIGIN).toString();\n}\n"
  },
  {
    "path": "next.config.ts",
    "content": "import type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n  distDir: process.env.NEXT_DIST_DIR || \".next\",\n  output: \"export\",\n  trailingSlash: true\n};\n\nexport default nextConfig;\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"beautiful-web-type\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"packageManager\": \"pnpm@10.10.0\",\n  \"scripts\": {\n    \"prepare:static\": \"tsx scripts/prepare-static.ts\",\n    \"predev\": \"pnpm prepare:static\",\n    \"dev\": \"next dev\",\n    \"prebuild\": \"pnpm prepare:static\",\n    \"build\": \"next build\",\n    \"postbuild\": \"tsx scripts/verify-export.ts\",\n    \"start\": \"serve out -l 3000\",\n    \"test\": \"pnpm test:unit && pnpm test:e2e\",\n    \"test:unit\": \"vitest run\",\n    \"test:e2e\": \"pnpm prepare:static && playwright test\"\n  },\n  \"dependencies\": {\n    \"@vercel/analytics\": \"^2.0.1\",\n    \"clsx\": \"^2.1.1\",\n    \"js-yaml\": \"^4.1.0\",\n    \"next\": \"^15.5.14\",\n    \"react\": \"^19.0.0\",\n    \"react-dom\": \"^19.0.0\"\n  },\n  \"devDependencies\": {\n    \"@playwright/test\": \"^1.51.1\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/node\": \"^22.13.5\",\n    \"@types/react\": \"^19.0.10\",\n    \"@types/react-dom\": \"^19.0.4\",\n    \"autoprefixer\": \"^10.4.20\",\n    \"playwright\": \"^1.51.1\",\n    \"postcss\": \"^8.5.3\",\n    \"serve\": \"^14.2.4\",\n    \"tailwindcss\": \"^3.4.17\",\n    \"tsx\": \"^4.19.3\",\n    \"typescript\": \"^5.8.2\",\n    \"vitest\": \"^3.0.8\"\n  }\n}\n"
  },
  {
    "path": "playwright.config.ts",
    "content": "import { defineConfig } from \"@playwright/test\";\n\nexport default defineConfig({\n  testDir: \"./tests/e2e\",\n  fullyParallel: true,\n  use: {\n    baseURL: \"http://127.0.0.1:3100\",\n    trace: \"on-first-retry\"\n  },\n  webServer: {\n    command: \"NEXT_DIST_DIR=.next-playwright pnpm exec next dev --port 3100\",\n    reuseExistingServer: false,\n    timeout: 120000,\n    url: \"http://127.0.0.1:3100\"\n  }\n});\n"
  },
  {
    "path": "postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {}\n  }\n};\n"
  },
  {
    "path": "public/.gitkeep",
    "content": "\n"
  },
  {
    "path": "scripts/migrate-content.ts",
    "content": "import fs from \"node:fs\";\nimport { mkdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { dump, load } from \"js-yaml\";\n\nconst ROOT_DIR = process.cwd();\nconst CONTENT_DIR = path.join(ROOT_DIR, \"content\");\nconst LEGACY_DATA_DIR = path.join(ROOT_DIR, \"_data\");\nconst LEGACY_GLYPHS_DIR = path.join(ROOT_DIR, \"_glyphs\");\nconst LEGACY_PAIRINGS_DIR = path.join(ROOT_DIR, \"_pairings\");\nconst LEGACY_SAMPLES_DIR = path.join(ROOT_DIR, \"_samples\");\nconst LEGACY_TYPEFACES_DIR = path.join(ROOT_DIR, \"_typefaces\");\n\nconst CATEGORY_SLUGS = {\n  Display: \"display\",\n  Monospaced: \"monospaced\",\n  \"Sans-Serif\": \"sans-serif\",\n  Serif: \"serif\"\n} as const;\n\ntype CategoryName = keyof typeof CATEGORY_SLUGS;\ntype CategorySlug = (typeof CATEGORY_SLUGS)[CategoryName];\ntype SampleShade = \"light\" | \"dark\";\n\nfunction listFilesRecursively(directory: string, extension: string): string[] {\n  const entries = fs\n    .readdirSync(directory, { withFileTypes: true })\n    .sort((left, right) => left.name.localeCompare(right.name));\n\n  return entries.flatMap((entry) => {\n    const entryPath = path.join(directory, entry.name);\n\n    if (entry.isDirectory()) {\n      return listFilesRecursively(entryPath, extension);\n    }\n\n    return entry.name.endsWith(extension) ? [entryPath] : [];\n  });\n}\n\nfunction parseYamlText(rawValue: string, filePath: string): Record<string, unknown> {\n  const parsed = load(rawValue);\n\n  if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n    throw new Error(`Expected YAML object in ${filePath}`);\n  }\n\n  return parsed as Record<string, unknown>;\n}\n\nfunction parseFrontMatterFile(filePath: string): {\n  data: Record<string, unknown>;\n  content: string;\n} {\n  const fileContents = fs.readFileSync(filePath, \"utf8\");\n  const match = fileContents.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n?([\\s\\S]*)$/);\n\n  if (!match) {\n    throw new Error(`Expected front matter in ${filePath}`);\n  }\n\n  return {\n    data: parseYamlText(match[1], filePath),\n    content: match[2].trim()\n  };\n}\n\nfunction assertString(value: unknown, key: string, filePath: string): string {\n  if (typeof value !== \"string\" || value.length === 0) {\n    throw new Error(`Expected \"${key}\" to be a non-empty string in ${filePath}`);\n  }\n\n  return value;\n}\n\nfunction assertStringValue(value: unknown, key: string, filePath: string): string {\n  if (typeof value !== \"string\") {\n    throw new Error(`Expected \"${key}\" to be a string in ${filePath}`);\n  }\n\n  return value;\n}\n\nfunction assertCategory(value: unknown, filePath: string): CategoryName {\n  if (typeof value !== \"string\" || !(value in CATEGORY_SLUGS)) {\n    throw new Error(`Expected \"category\" to be a valid category in ${filePath}`);\n  }\n\n  return value as CategoryName;\n}\n\nfunction assertStringArray(value: unknown, key: string, filePath: string): string[] {\n  if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\")) {\n    throw new Error(`Expected \"${key}\" to be a string array in ${filePath}`);\n  }\n\n  return value as string[];\n}\n\nfunction maybeBoolean(value: unknown): boolean | undefined {\n  return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction maybeString(value: unknown): string | undefined {\n  return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction maybeSampleShade(value: unknown, filePath: string): SampleShade | undefined {\n  if (value === undefined || value === null || value === \"\") {\n    return undefined;\n  }\n\n  if (value === \"light\" || value === \"dark\") {\n    return value;\n  }\n\n  if (value === \"h1ght\") {\n    return \"light\";\n  }\n\n  throw new Error(`Expected \"sample_shade\" to be \"light\" or \"dark\" in ${filePath}`);\n}\n\nfunction toDateString(value: unknown, key: string, filePath: string): string {\n  if (value instanceof Date) {\n    return value.toISOString().slice(0, 10);\n  }\n\n  if (typeof value === \"string\") {\n    const parsed = new Date(value);\n\n    if (!Number.isNaN(parsed.getTime())) {\n      return parsed.toISOString().slice(0, 10);\n    }\n  }\n\n  throw new Error(`Expected \"${key}\" to be a date-like value in ${filePath}`);\n}\n\nfunction sanitizeFontFile(fontFile: string): string {\n  return fontFile.replace(/^['\"]|['\"]$/g, \"\");\n}\n\nfunction compactObject<T extends Record<string, unknown>>(value: T): T {\n  return Object.fromEntries(\n    Object.entries(value).filter(([, entry]) => entry !== undefined)\n  ) as T;\n}\n\nfunction serializeYaml(value: Record<string, unknown>): string {\n  return dump(value, {\n    lineWidth: -1,\n    noRefs: true,\n    sortKeys: false\n  }).trimEnd();\n}\n\nasync function writeYamlFile(filePath: string, value: Record<string, unknown>) {\n  await writeFile(filePath, `${serializeYaml(value)}\\n`, \"utf8\");\n}\n\nasync function writeHtmlFile(filePath: string, html: string) {\n  const fileContents = html.length > 0 ? `${html}\\n` : \"\";\n  await writeFile(filePath, fileContents, \"utf8\");\n}\n\nfunction categoryToSlug(category: CategoryName): CategorySlug {\n  return CATEGORY_SLUGS[category];\n}\n\nasync function prepareContentDirectories() {\n  await mkdir(CONTENT_DIR, { recursive: true });\n\n  for (const directory of [\"site\", \"pairings\", \"typefaces\"]) {\n    await rm(path.join(CONTENT_DIR, directory), { recursive: true, force: true });\n    await mkdir(path.join(CONTENT_DIR, directory), { recursive: true });\n  }\n}\n\nasync function migrateTextData() {\n  const legacyTextPath = path.join(LEGACY_DATA_DIR, \"text.yml\");\n  const nextTextPath = path.join(CONTENT_DIR, \"site\", \"text.yml\");\n  const parsed = parseYamlText(await readFile(legacyTextPath, \"utf8\"), legacyTextPath);\n\n  await writeYamlFile(nextTextPath, {\n    words: assertStringArray(parsed.words, \"words\", legacyTextPath),\n    headlines: assertStringArray(parsed.headlines, \"headlines\", legacyTextPath),\n    paragraphs: assertStringArray(parsed.paragraphs, \"paragraphs\", legacyTextPath)\n  });\n}\n\nasync function migrateTypefaceBundles() {\n  const typefaceFiles = listFilesRecursively(LEGACY_TYPEFACES_DIR, \".html\");\n\n  for (const typefaceFile of typefaceFiles) {\n    const slug = path.basename(typefaceFile, \".html\");\n    const { data, content } = parseFrontMatterFile(typefaceFile);\n    const category = assertCategory(data.category, typefaceFile);\n    const categorySlug = categoryToSlug(category);\n    const sampleFile = path.join(LEGACY_SAMPLES_DIR, categorySlug, `${slug}.html`);\n    const glyphFile = path.join(LEGACY_GLYPHS_DIR, categorySlug, `${slug}.html`);\n\n    if (!fs.existsSync(sampleFile)) {\n      throw new Error(`Missing legacy sample file for \"${slug}\" at ${sampleFile}`);\n    }\n\n    if (!fs.existsSync(glyphFile)) {\n      throw new Error(`Missing legacy glyph file for \"${slug}\" at ${glyphFile}`);\n    }\n\n    const sample = parseFrontMatterFile(sampleFile);\n    const glyphs = parseFrontMatterFile(glyphFile);\n\n    const name = assertString(data.name, \"name\", typefaceFile);\n    const sampleTypefaceName = assertString(sample.data.typeface, \"typeface\", sampleFile);\n    const glyphTypefaceName = assertString(glyphs.data.typeface, \"typeface\", glyphFile);\n\n    if (sampleTypefaceName !== name) {\n      throw new Error(\n        `Legacy sample \"${sampleFile}\" references \"${sampleTypefaceName}\" instead of \"${name}\"`\n      );\n    }\n\n    if (glyphTypefaceName !== name) {\n      throw new Error(\n        `Legacy glyph file \"${glyphFile}\" references \"${glyphTypefaceName}\" instead of \"${name}\"`\n      );\n    }\n\n    const nextTypefaceDir = path.join(CONTENT_DIR, \"typefaces\", slug);\n    const creator = data.creator as { name?: unknown; url?: unknown } | undefined;\n    const latestRelease = data.latest_release as\n      | { version?: unknown; date?: unknown }\n      | undefined;\n\n    if (!creator || typeof creator !== \"object\") {\n      throw new Error(`Expected \"creator\" object in ${typefaceFile}`);\n    }\n\n    if (!latestRelease || typeof latestRelease !== \"object\") {\n      throw new Error(`Expected \"latest_release\" object in ${typefaceFile}`);\n    }\n\n    await mkdir(nextTypefaceDir, { recursive: true });\n    await writeYamlFile(\n      path.join(nextTypefaceDir, \"meta.yml\"),\n      compactObject({\n        name,\n        dateAdded: toDateString(data.date_added, \"date_added\", typefaceFile),\n        category,\n        styles: data.styles,\n        italic: maybeBoolean(data.italic),\n        smallcap: maybeBoolean(data.smallcap),\n        sampleShade: maybeSampleShade(sample.data.sample_shade, sampleFile),\n        weights: data.weights,\n        latestRelease: {\n          version: assertStringValue(\n            latestRelease.version,\n            \"latest_release.version\",\n            typefaceFile\n          ),\n          date: assertString(latestRelease.date, \"latest_release.date\", typefaceFile)\n        },\n        projectUrl: assertString(data.project_url, \"project_url\", typefaceFile),\n        gFontsUrl: maybeString(data.g_fonts_url),\n        creator: {\n          name: assertString(creator.name, \"creator.name\", typefaceFile),\n          url: assertString(creator.url, \"creator.url\", typefaceFile)\n        },\n        description: assertString(data.description, \"description\", typefaceFile),\n        familyFaces: Array.isArray(data.family_faces)\n          ? assertStringArray(data.family_faces, \"family_faces\", typefaceFile)\n          : undefined,\n        comparisonFaces: Array.isArray(data.comparison_faces)\n          ? assertStringArray(data.comparison_faces, \"comparison_faces\", typefaceFile)\n          : undefined\n      })\n    );\n    await writeHtmlFile(path.join(nextTypefaceDir, \"detail.html\"), content);\n    await writeHtmlFile(path.join(nextTypefaceDir, \"sample.html\"), sample.content);\n    await writeYamlFile(path.join(nextTypefaceDir, \"glyphs.yml\"), {\n      fontFile: sanitizeFontFile(assertString(glyphs.data.font_file, \"font_file\", glyphFile))\n    });\n  }\n}\n\nasync function migratePairingBundles() {\n  const pairingFiles = listFilesRecursively(LEGACY_PAIRINGS_DIR, \".html\");\n\n  for (const pairingFile of pairingFiles) {\n    const slug = path.basename(pairingFile, \".html\");\n    const { data, content } = parseFrontMatterFile(pairingFile);\n    const nextPairingDir = path.join(CONTENT_DIR, \"pairings\", slug);\n\n    await mkdir(nextPairingDir, { recursive: true });\n    await writeYamlFile(\n      path.join(nextPairingDir, \"meta.yml\"),\n      compactObject({\n        name: assertString(data.name, \"name\", pairingFile),\n        dateAdded: toDateString(data.date_added, \"date_added\", pairingFile),\n        typefaces: assertStringArray(data.typefaces, \"typefaces\", pairingFile),\n        sampleShade: maybeSampleShade(data.sample_shade, pairingFile)\n      })\n    );\n    await writeHtmlFile(path.join(nextPairingDir, \"sample.html\"), content);\n  }\n}\n\nasync function removeLegacyDirectories() {\n  for (const directory of [\n    LEGACY_DATA_DIR,\n    LEGACY_GLYPHS_DIR,\n    LEGACY_PAIRINGS_DIR,\n    LEGACY_SAMPLES_DIR,\n    LEGACY_TYPEFACES_DIR\n  ]) {\n    await rm(directory, { recursive: true, force: true });\n  }\n}\n\nasync function main() {\n  const shouldDeleteLegacy = process.argv.includes(\"--delete-legacy\");\n\n  await prepareContentDirectories();\n  await Promise.all([migrateTextData(), migrateTypefaceBundles(), migratePairingBundles()]);\n\n  if (shouldDeleteLegacy) {\n    await removeLegacyDirectories();\n  }\n}\n\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n"
  },
  {
    "path": "scripts/prepare-static.ts",
    "content": "import { mkdir, rm, cp, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nconst ROOT_DIR = process.cwd();\nconst PUBLIC_DIR = path.join(ROOT_DIR, \"public\");\nconst GOOGLE_VERIFICATION_FILE = \"google146824b99fdbed48.html\";\nconst GOOGLE_VERIFICATION_CONTENT =\n  \"google-site-verification: google146824b99fdbed48.html\\n\";\nconst REPO_ROOT_DOCUMENTATION_FILES = [\"CHANGELOG.md\", \"LICENSE\", \"README.md\"];\n\nconst DIRECTORIES_TO_CLEAR = [\"assets\", \"css\", \"js\", \"v1\"];\nconst DIRECTORIES_TO_COPY = [\n  { source: \"assets\", target: \"assets\" },\n  { source: \"css\", target: \"css\" },\n  { source: \"js\", target: \"js\" },\n  { source: \"v1/stylesheets\", target: \"v1/stylesheets\" }\n];\nconst FILES_TO_COPY = [\"favicon-16x16.png\", \"favicon-32x32.png\", \"favicon-96x96.png\"];\n\nasync function clearGeneratedPublicFiles() {\n  await mkdir(PUBLIC_DIR, { recursive: true });\n\n  for (const directory of DIRECTORIES_TO_CLEAR) {\n    await rm(path.join(PUBLIC_DIR, directory), { force: true, recursive: true });\n  }\n\n  for (const fileName of [\n    ...FILES_TO_COPY,\n    ...REPO_ROOT_DOCUMENTATION_FILES,\n    GOOGLE_VERIFICATION_FILE,\n    \"feed.xml\",\n    \"sitemap.xml\"\n  ]) {\n    await rm(path.join(PUBLIC_DIR, fileName), { force: true });\n  }\n}\n\nasync function copyStaticEntries() {\n  for (const directory of DIRECTORIES_TO_COPY) {\n    await cp(path.join(ROOT_DIR, directory.source), path.join(PUBLIC_DIR, directory.target), {\n      recursive: true\n    });\n  }\n\n  for (const fileName of FILES_TO_COPY) {\n    await cp(path.join(ROOT_DIR, fileName), path.join(PUBLIC_DIR, fileName));\n  }\n}\n\nasync function writeGeneratedStaticFiles() {\n  await writeFile(\n    path.join(PUBLIC_DIR, GOOGLE_VERIFICATION_FILE),\n    GOOGLE_VERIFICATION_CONTENT,\n    \"utf8\"\n  );\n}\n\nasync function main() {\n  await clearGeneratedPublicFiles();\n  await copyStaticEntries();\n  await writeGeneratedStaticFiles();\n}\n\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n"
  },
  {
    "path": "scripts/verify-export.ts",
    "content": "import { access } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { getAllTypefaceSlugs } from \"../lib/content\";\n\nconst ROOT_DIR = process.cwd();\nconst OUT_DIR = path.join(ROOT_DIR, \"out\");\n\nasync function assertExists(relativePath: string) {\n  const filePath = path.join(OUT_DIR, relativePath);\n\n  try {\n    await access(filePath);\n  } catch {\n    throw new Error(`Missing export artifact: ${relativePath}`);\n  }\n}\n\nasync function main() {\n  const typefaceSlugs = getAllTypefaceSlugs();\n  const expectedFiles = [\n    \"404.html\",\n    \"feed.xml\",\n    \"sitemap.xml\",\n    \"index.html\",\n    \"pairings/index.html\",\n    \"display/index.html\",\n    \"monospaced/index.html\",\n    \"sans-serif/index.html\",\n    \"serif/index.html\",\n    \"v1/index.html\",\n    \"google146824b99fdbed48.html\",\n    \"css/application.css\",\n    \"js/opentype.min.js\",\n    \"js/wawoff2-decompress.js\",\n    \"assets/images/card.png\",\n    \"assets/fonts/cooper-hewitt/CooperHewitt-Book.woff2\",\n    \"assets/fonts/inter/Inter-roman.var.woff2\",\n    \"assets/fonts/work-sans/WorkSans-Variable.woff2\"\n  ];\n\n  for (const typefaceSlug of typefaceSlugs) {\n    expectedFiles.push(`${typefaceSlug}/index.html`);\n    expectedFiles.push(`${typefaceSlug}/glyphs/index.html`);\n  }\n\n  await Promise.all(expectedFiles.map(assertExists));\n}\n\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n"
  },
  {
    "path": "tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\";\n\nconst config: Config = {\n  content: [\n    \"./app/**/*.{ts,tsx}\",\n    \"./components/**/*.{ts,tsx}\",\n    \"./lib/**/*.{ts,tsx}\"\n  ],\n  theme: {\n    extend: {}\n  },\n  corePlugins: {\n    preflight: false\n  }\n};\n\nexport default config;\n"
  },
  {
    "path": "tests/content-graph.test.ts",
    "content": "import { describe, expect, it } from \"vitest\";\n\nimport { getContentGraph } from \"@/lib/content/graph\";\n\ndescribe(\"content graph\", () => {\n  it(\"loads all collections and validates cross-links\", () => {\n    const graph = getContentGraph();\n\n    expect(graph.typefaces).toHaveLength(41);\n    expect(graph.glyphPages).toHaveLength(41);\n    expect(graph.samples).toHaveLength(41);\n    expect(graph.pairings).toHaveLength(6);\n    expect(graph.typefaceBySlug.get(\"inter\")?.name).toBe(\"Inter\");\n    expect(graph.sampleByTypefaceName.get(\"Inter\")?.slug).toBe(\"inter\");\n    expect(graph.glyphPageBySlug.get(\"inter\")?.typefaceName).toBe(\"Inter\");\n  });\n});\n"
  },
  {
    "path": "tests/content-queries.test.ts",
    "content": "import { describe, expect, it } from \"vitest\";\n\nimport {\n  getAllTypefaceSlugs,\n  getPairingsForTypeface,\n  getSampleForTypeface,\n  getTextData,\n  getTypefaceBySlug,\n  getTypefacesByCategory,\n  resolveTypefaceSlugByName\n} from \"@/lib/content\";\n\ndescribe(\"content queries\", () => {\n  it(\"returns narrow query results without exposing the full graph\", () => {\n    expect(getAllTypefaceSlugs()).toContain(\"inter\");\n    expect(getTypefacesByCategory(\"sans-serif\").some((typeface) => typeface.slug === \"inter\")).toBe(\n      true\n    );\n    expect(getTypefaceBySlug(\"inter\")?.name).toBe(\"Inter\");\n    expect(getSampleForTypeface(\"Inter\")?.slug).toBe(\"inter\");\n    expect(getPairingsForTypeface(\"Inter\").length).toBeGreaterThan(0);\n    expect(resolveTypefaceSlugByName(\"Inter\")).toBe(\"inter\");\n    expect(getTextData().words.length).toBeGreaterThan(0);\n  });\n});\n"
  },
  {
    "path": "tests/content-validation.test.ts",
    "content": "import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { tmpdir } from \"node:os\";\n\nimport { describe, expect, it } from \"vitest\";\n\nimport { buildContentGraphFromContentDir } from \"@/lib/content/graph\";\n\nfunction createContentRoot(): string {\n  const root = mkdtempSync(path.join(tmpdir(), \"beautiful-web-type-content-\"));\n  const typefaceDir = path.join(root, \"typefaces\", \"test-sans\");\n  const pairingsDir = path.join(root, \"pairings\");\n  const siteDir = path.join(root, \"site\");\n\n  mkdirSync(typefaceDir, { recursive: true });\n  mkdirSync(pairingsDir, { recursive: true });\n  mkdirSync(siteDir, { recursive: true });\n\n  writeFileSync(\n    path.join(siteDir, \"text.yml\"),\n    [\n      \"words:\",\n      \"  - Questography\",\n      \"headlines:\",\n      \"  - Example headline\",\n      \"paragraphs:\",\n      \"  - Example paragraph\"\n    ].join(\"\\n\"),\n    \"utf8\"\n  );\n\n  writeFileSync(\n    path.join(typefaceDir, \"meta.yml\"),\n    [\n      \"name: Test Sans\",\n      \"dateAdded: '2024-01-01'\",\n      \"category: Sans-Serif\",\n      \"styles: 2\",\n      \"sampleShade: light\",\n      \"weights:\",\n      \"  - weight: 400\",\n      \"    name: Regular\",\n      \"latestRelease:\",\n      \"  version: v1.0\",\n      \"  date: 1 Jan 2024\",\n      \"projectUrl: https://example.com/test-sans\",\n      \"creator:\",\n      \"  name: Example Foundry\",\n      \"  url: https://example.com\",\n      \"description: Example typeface\"\n    ].join(\"\\n\"),\n    \"utf8\"\n  );\n  writeFileSync(path.join(typefaceDir, \"detail.html\"), \"<p>Detail body</p>\\n\", \"utf8\");\n  writeFileSync(path.join(typefaceDir, \"sample.html\"), \"<p>Sample body</p>\\n\", \"utf8\");\n  writeFileSync(path.join(typefaceDir, \"glyphs.yml\"), \"fontFile: /assets/fonts/test.woff\\n\", \"utf8\");\n\n  return root;\n}\n\ndescribe(\"content validation\", () => {\n  it(\"rejects invalid sampleShade values\", () => {\n    const root = createContentRoot();\n\n    try {\n      writeFileSync(\n        path.join(root, \"typefaces\", \"test-sans\", \"meta.yml\"),\n        [\n          \"name: Test Sans\",\n          \"dateAdded: '2024-01-01'\",\n          \"category: Sans-Serif\",\n          \"styles: 2\",\n          \"sampleShade: neon\",\n          \"weights:\",\n          \"  - weight: 400\",\n          \"    name: Regular\",\n          \"latestRelease:\",\n          \"  version: v1.0\",\n          \"  date: 1 Jan 2024\",\n          \"projectUrl: https://example.com/test-sans\",\n          \"creator:\",\n          \"  name: Example Foundry\",\n          \"  url: https://example.com\",\n          \"description: Example typeface\"\n        ].join(\"\\n\"),\n        \"utf8\"\n      );\n\n      expect(() => buildContentGraphFromContentDir(root)).toThrow(\n        'Expected \"sampleShade\" to be \"light\" or \"dark\"'\n      );\n    } finally {\n      rmSync(root, { recursive: true, force: true });\n    }\n  });\n\n  it(\"requires all files in a typeface bundle\", () => {\n    const root = createContentRoot();\n\n    try {\n      rmSync(path.join(root, \"typefaces\", \"test-sans\", \"glyphs.yml\"));\n\n      expect(() => buildContentGraphFromContentDir(root)).toThrow(\"Expected file to exist\");\n    } finally {\n      rmSync(root, { recursive: true, force: true });\n    }\n  });\n});\n"
  },
  {
    "path": "tests/e2e/site.spec.ts",
    "content": "import { expect, test } from \"@playwright/test\";\n\ntest(\"renders the serif category page with serif samples\", async ({ page }) => {\n  await page.goto(\"/serif/\");\n\n  await expect(page.locator(\".page-header h1\")).toHaveText(\"Serif Typefaces\");\n  await expect(page.locator(\".samples > .sample a[href='/alegreya/']\").first()).toBeVisible();\n  await expect(page.locator(\".samples > .sample a[href='/inter/']\")).toHaveCount(0);\n});\n\ntest(\"keeps comparison text in sync on detail pages\", async ({ page }) => {\n  await page.goto(\"/inter/\");\n\n  const firstComparison = page.locator(\"#comparisons h1\").first();\n  await firstComparison.evaluate((node) => {\n    node.innerText = \"synced specimen\";\n    node.dispatchEvent(new Event(\"input\", { bubbles: true }));\n  });\n\n  await expect(page.locator(\"#comparisons h1\").nth(1)).toHaveText(\"synced specimen\");\n});\n\ntest(\"opens the mobile navigation overlay\", async ({ page }) => {\n  await page.setViewportSize({ width: 390, height: 844 });\n  await page.goto(\"/\");\n  await page.locator(\".menu-link\").click();\n\n  const overlay = page.locator(\".menu-overlay\");\n  const nav = page.locator(\".menu-overlay .main-nav\");\n\n  await expect(overlay).toHaveClass(/open/);\n  await expect(overlay).toHaveCSS(\"background-color\", \"rgb(255, 255, 255)\");\n\n  const overlayBox = await overlay.boundingBox();\n  const navBox = await nav.boundingBox();\n\n  expect(overlayBox).not.toBeNull();\n  expect(navBox).not.toBeNull();\n\n  expect(Math.round(overlayBox!.x)).toBe(0);\n  expect(Math.round(overlayBox!.y)).toBe(0);\n  expect(Math.round(overlayBox!.height)).toBeGreaterThanOrEqual(844);\n\n  const overlayCenterX = overlayBox!.x + overlayBox!.width / 2;\n  const overlayCenterY = overlayBox!.y + overlayBox!.height / 2;\n  const navCenterX = navBox!.x + navBox!.width / 2;\n  const navCenterY = navBox!.y + navBox!.height / 2;\n\n  expect(Math.abs(navCenterX - overlayCenterX)).toBeLessThan(24);\n  expect(Math.abs(navCenterY - overlayCenterY)).toBeLessThan(48);\n});\n\ntest(\"loads the glyph inspector and updates the glyph query param\", async ({ page }) => {\n  await page.goto(\"/inter/glyphs/?i=10\");\n  await page.waitForFunction(\n    () => document.querySelectorAll(\"#glyph-pagination a\").length > 0\n  );\n\n  await page.locator(\"#glyph-grid canvas\").first().click();\n  await expect(page).toHaveURL(/\\/inter\\/glyphs\\/\\?i=\\d+/);\n});\n\ntest(\"loads the Commissioner glyph inspector from WOFF2\", async ({ page }) => {\n  await page.goto(\"/commissioner/glyphs/?i=10\");\n  await page.waitForFunction(\n    () => document.querySelectorAll(\"#glyph-pagination a\").length > 0\n  );\n\n  await page.locator(\"#glyph-grid canvas\").first().click();\n  await expect(page).toHaveURL(/\\/commissioner\\/glyphs\\/\\?i=\\d+/);\n});\n\ntest(\"loads the Work Sans glyph inspector from generated WOFF2\", async ({ page }) => {\n  await page.goto(\"/work-sans/glyphs/?i=10\");\n  await page.waitForFunction(\n    () => document.querySelectorAll(\"#glyph-pagination a\").length > 0\n  );\n\n  await page.locator(\"#glyph-grid canvas\").first().click();\n  await expect(page).toHaveURL(/\\/work-sans\\/glyphs\\/\\?i=\\d+/);\n});\n\ntest(\"loads the Cooper Hewitt glyph inspector from converted WOFF2\", async ({ page }) => {\n  await page.goto(\"/cooper-hewitt/glyphs/?i=10\");\n  await page.waitForFunction(\n    () => document.querySelectorAll(\"#glyph-pagination a\").length > 0\n  );\n\n  await page.locator(\"#glyph-grid canvas\").first().click();\n  await expect(page).toHaveURL(/\\/cooper-hewitt\\/glyphs\\/\\?i=\\d+/);\n});\n"
  },
  {
    "path": "tests/feed-route.test.ts",
    "content": "import { describe, expect, it } from \"vitest\";\n\nimport { GET } from \"@/app/feed.xml/route\";\n\ndescribe(\"feed route\", () => {\n  it(\"returns atom xml with the expected content type\", async () => {\n    const response = GET();\n    const feedXml = await response.text();\n\n    expect(response.headers.get(\"content-type\")).toBe(\"application/atom+xml; charset=utf-8\");\n    expect(feedXml).toContain(\"<feed\");\n    expect(feedXml).toContain(\"https://www.beautifulwebtype.com/inter/\");\n  });\n});\n"
  },
  {
    "path": "tests/feed.test.ts",
    "content": "import { describe, expect, it } from \"vitest\";\n\nimport { getLatestTypefaces } from \"@/lib/content\";\nimport { buildAtomFeedXml } from \"@/lib/feed\";\n\ndescribe(\"feed xml\", () => {\n  it(\"builds atom xml from the latest typefaces in order\", () => {\n    const latestTypefaces = getLatestTypefaces();\n    const feedXml = buildAtomFeedXml(latestTypefaces, \"2026-03-18T10:00:00.000Z\");\n    const firstEntryTitle = `${latestTypefaces[0].name} by ${latestTypefaces[0].creator.name}`;\n    const secondEntryTitle = `${latestTypefaces[1].name} by ${latestTypefaces[1].creator.name}`;\n\n    expect(feedXml).toContain(\"<feed\");\n    expect(feedXml).toContain(\"<updated>2026-03-18T10:00:00.000Z</updated>\");\n    expect(feedXml).toContain(\"Inter by Rasmus Andersson\");\n    expect(feedXml).toContain(\"https://www.beautifulwebtype.com/assets/images/inter.png\");\n    expect(feedXml.indexOf(firstEntryTitle)).toBeLessThan(feedXml.indexOf(secondEntryTitle));\n  });\n});\n"
  },
  {
    "path": "tests/glyph-inspector-font-loader.test.ts",
    "content": "import { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport {\n  createGlyphInspectorFontLoader,\n  resetGlyphInspectorFontLoaderForTests,\n  type Font,\n  type OpentypeRuntime,\n  type Wawoff2Module\n} from \"@/lib/glyph-inspector-font-loader\";\n\nfunction createMockFont(): Font {\n  return {\n    numGlyphs: 42,\n    unitsPerEm: 1000,\n    glyphs: {\n      get: vi.fn()\n    },\n    tables: {\n      head: {\n        xMax: 800,\n        xMin: -20,\n        yMax: 900,\n        yMin: -200\n      }\n    }\n  };\n}\n\ndescribe(\"glyph inspector font loader\", () => {\n  beforeEach(() => {\n    resetGlyphInspectorFontLoaderForTests();\n  });\n\n  it(\"uses opentype.load for non-WOFF2 font files\", async () => {\n    const font = createMockFont();\n    const load = vi.fn((fontFile: string, callback: (error: Error | null, font?: Font) => void) => {\n      callback(null, font);\n    });\n    const parse = vi.fn();\n    const fetchArrayBuffer = vi.fn();\n    const loadScript = vi.fn();\n\n    const loader = createGlyphInspectorFontLoader({\n      getOpentype: () => ({ load, parse }) as OpentypeRuntime,\n      fetchArrayBuffer,\n      loadScript,\n      getWoff2Module: () => undefined,\n      setWoff2Module: vi.fn()\n    });\n\n    await expect(loader(\"/assets/fonts/test.woff\")).resolves.toBe(font);\n    expect(load).toHaveBeenCalledWith(\n      \"/assets/fonts/test.woff\",\n      expect.any(Function)\n    );\n    expect(parse).not.toHaveBeenCalled();\n    expect(fetchArrayBuffer).not.toHaveBeenCalled();\n    expect(loadScript).not.toHaveBeenCalled();\n  });\n\n  it(\"decompresses WOFF2 fonts before parsing them\", async () => {\n    const font = createMockFont();\n    const compressedFontData = new ArrayBuffer(8);\n    const decompressedFontData = new Uint8Array([1, 2, 3, 4]);\n    const load = vi.fn();\n    const parse = vi.fn().mockReturnValue(font);\n    const fetchArrayBuffer = vi.fn().mockResolvedValue(compressedFontData);\n    const loadScript = vi.fn(async () => {\n      const onRuntimeInitialized = woff2Module?.onRuntimeInitialized;\n      woff2Module = {\n        ...(woff2Module ?? {}),\n        decompress,\n        onRuntimeInitialized\n      };\n      onRuntimeInitialized?.();\n    });\n    const decompress = vi.fn().mockReturnValue(decompressedFontData);\n    let woff2Module: Wawoff2Module | undefined;\n\n    const loader = createGlyphInspectorFontLoader({\n      getOpentype: () => ({ load, parse }) as OpentypeRuntime,\n      fetchArrayBuffer,\n      loadScript,\n      getWoff2Module: () => woff2Module,\n      setWoff2Module: (module) => {\n        woff2Module = module;\n      }\n    });\n\n    await expect(loader(\"/assets/fonts/test.woff2\")).resolves.toBe(font);\n    expect(load).not.toHaveBeenCalled();\n    expect(fetchArrayBuffer).toHaveBeenCalledWith(\"/assets/fonts/test.woff2\");\n    expect(loadScript).toHaveBeenCalledWith(\"/js/wawoff2-decompress.js\");\n    expect(decompress).toHaveBeenCalledWith(compressedFontData);\n\n    const parsedFontData = parse.mock.calls[0]?.[0];\n    expect(parsedFontData).toBeInstanceOf(ArrayBuffer);\n    expect(Array.from(new Uint8Array(parsedFontData))).toEqual(Array.from(decompressedFontData));\n  });\n\n  it(\"initializes the WOFF2 decompressor only once\", async () => {\n    const font = createMockFont();\n    const parse = vi.fn().mockReturnValue(font);\n    const fetchArrayBuffer = vi.fn().mockResolvedValue(new ArrayBuffer(8));\n    const decompress = vi.fn().mockImplementation((fontData: ArrayBuffer) => new Uint8Array(fontData));\n    const loadScript = vi.fn(async () => {\n      const onRuntimeInitialized = woff2Module?.onRuntimeInitialized;\n      woff2Module = {\n        ...(woff2Module ?? {}),\n        decompress,\n        onRuntimeInitialized\n      };\n      onRuntimeInitialized?.();\n    });\n    let woff2Module: Wawoff2Module | undefined;\n\n    const loader = createGlyphInspectorFontLoader({\n      getOpentype: () =>\n        ({\n          load: vi.fn(),\n          parse\n        }) as OpentypeRuntime,\n      fetchArrayBuffer,\n      loadScript,\n      getWoff2Module: () => woff2Module,\n      setWoff2Module: (module) => {\n        woff2Module = module;\n      }\n    });\n\n    await loader(\"/assets/fonts/test-a.woff2\");\n    await loader(\"/assets/fonts/test-b.woff2\");\n\n    expect(loadScript).toHaveBeenCalledTimes(1);\n    expect(fetchArrayBuffer).toHaveBeenCalledTimes(2);\n    expect(parse).toHaveBeenCalledTimes(2);\n    expect(decompress).toHaveBeenCalledTimes(2);\n  });\n});\n"
  },
  {
    "path": "tests/sitemap-route.test.ts",
    "content": "import { describe, expect, it } from \"vitest\";\n\nimport sitemap from \"@/app/sitemap\";\nimport { getAllTypefaces } from \"@/lib/content\";\nimport { toAbsoluteUrl } from \"@/lib/routes\";\n\ndescribe(\"sitemap route\", () => {\n  it(\"returns the static and dynamic routes for export\", () => {\n    const entries = sitemap();\n    const urls = entries.map((entry) => entry.url);\n\n    expect(urls).toEqual(\n      expect.arrayContaining([\n        toAbsoluteUrl(\"/\"),\n        toAbsoluteUrl(\"/display/\"),\n        toAbsoluteUrl(\"/monospaced/\"),\n        toAbsoluteUrl(\"/sans-serif/\"),\n        toAbsoluteUrl(\"/serif/\"),\n        toAbsoluteUrl(\"/pairings/\"),\n        toAbsoluteUrl(\"/inter/\"),\n        toAbsoluteUrl(\"/inter/glyphs/\")\n      ])\n    );\n    expect(urls).toHaveLength(6 + getAllTypefaces().length * 2);\n  });\n});\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    \"allowJs\": false,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\n        \"./*\"\n      ]\n    }\n  },\n  \"include\": [\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \".next/types/**/*.ts\",\n    \"next-env.d.ts\",\n    \".next-playwright/types/**/*.ts\"\n  ],\n  \"exclude\": [\n    \"node_modules\"\n  ]\n}\n"
  },
  {
    "path": "v1/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"description\" content=\"A showcase of the best typefaces from the Google web fonts directory.\">\n    <meta name=\"twitter:card\" content=\"summary_large_image\">\n    <meta name=\"twitter:creator\" content=\"@ubuwaits\">    \n    <link rel=\"canonical\" href=\"https://www.beautifulwebtype.com/v1/\">\n    <meta property=\"og:url\" content=\"https://www.beautifulwebtype.com/v1/\">\n    <meta property=\"og:title\" content=\"Beautiful Web Type &mdash; the best typefaces from Google Fonts\">\n    <meta property=\"og:image\" content=\"https://www.beautifulwebtype.com/assets/images/card.png\">\n    <title>Beautiful Web Type &mdash; the best typefaces from Google Fonts</title>\n    <!--[if lt IE 9]><script src=\"http://html5shim.googlecode.com/svn/trunk/html5.js\"></script><![endif]-->\n    <link href=\"stylesheets/application.css\" rel='stylesheet' type=\"text/css\" media=\"screen\">\n    <link href='https://fonts.googleapis.com/css?family=Abril+Fatface|Open+Sans:300,400,600,700,800|Gentium+Book+Basic:400,400italic|Vollkorn:400italic,400' rel='stylesheet' type='text/css'>\n    <link href='https://fonts.googleapis.com/css?family=Gravitas+One|Lato:100,900|Old+Standard+TT:400,400italic|PT+Serif:400|PT+Sans+Narrow:700' rel='stylesheet' type='text/css'>\n    <link href='https://fonts.googleapis.com/css?family=PT+Sans:700|Merriweather:400,900|Playfair+Display:400,900,700italic|Oswald:700|PT+Mono' rel='stylesheet' type='text/css'>\n    <link href='https://fonts.googleapis.com/css?family=Cardo:400,400italic' rel='stylesheet' type='text/css'>\n    <link href='https://fonts.googleapis.com/css?family=Fira+Mono:400,500|Vidaloka' rel='stylesheet'  type='text/css'>\n  </head>\n\n  <body class=\"index\">\n\n    <section id=\"container\">\n      <section class=\"samples\">\n  <section class=\"sample\" id=\"title\">\n    <section class=\"text\">\n      <h1>Beautiful W<span class=\"kern\">eb</span> Type</h1>\n      <h2>A showcase of the best typefaces from <a href=\"https://fonts.google.com\">Google Fonts</a></h2>\n\n      <section class=\"intro\">\n        <p>There are over 800 typefaces in the Google web fonts directory. Many of them are awful. But there are also high-quality typefaces that deserve a closer look. Below are examples of these typefaces in action. Click the examples to get the typeface from the Google web fonts directory.</p>\n\n        <ul>\n          <li><a href=\"https://chad.is\">Maintained by Chad Mazzola</a></li>\n          <li><a href=\"https://github.com/ubuwaits/beautiful-web-type\">Watch this repo on github</a></li>\n          <li><a href=\"https://twitter.com/ubuwaits\">Follow me on twitter</a></li>\n        </ul>\n\n      </section>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"herzog\">\n    <section class=\"text\">\n        <a href=\"https://fonts.google.com/specimen/Cardo\" title=\"Cardo\">\n          <h2>&ldquo;I personally would rather do the existentially essential things in life on foot. If you live in England and your girlfriend is in Sicily, and it is clear you want to marry her, then you should walk to Sicily to propose. For these things travel by car or aeroplane is not the right thing.&rdquo;</h2>\n          <h3>&mdash;Werner Herzog, <em>Of Walking in Ice</em></h3>\n        </a>\n      </section>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"bringhurst\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Vollkorn\" title=\"Vollkorn\">\n        <h1>&ldquo;Big type, even huge type, can be beautiful and useful.<br> But poise is usually far more important than size &mdash;<br> and poise consists primarily of emptiness.&rdquo;</h1>\n        <p>&mdash;Robert Bringhurst</p>\n      </a>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"nietzsche\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Open+Sans\" title=\"Open Sans\">\n        <h1><span>On the<br></span> Genealogy <span class=\"kern\">of</span> Morals</h1>\n      </a>\n      <a href=\"https://fonts.google.com/specimen/Open+Sans\" title=\"Open Sans\">\n        <h2><span>Friedrich Nietzsche</span></h2>\n      </a>\n      <section class=\"excerpt\">\n        <a href=\"https://fonts.google.com/specimen/Gentium+Book+Basic\" title=\"Gentium Book Basic\">\n          <p>At this point I can no longer avoid giving a first, provisional statement of my own hypothesis concerning the origin of the &#8220;bad conscience&#8221;: it may sound rather strange and needs to be pondered, lived with, and slept on for a long time. I regard the bad conscience as the serious illness that man was bound to contract under the stress of the most fundamental change he ever experienced—that change which occurred when he found himself finally enclosed within the walls of society and of peace. The situation that faced sea animals when they were compelled to become land animals or perish was the same as that which faced these semi-animals, well adapted to the wilderness, to war, to prowling, to adventure: suddenly all their instincts were disvalued and &#8220;suspended.&#8221; From now on they had to walk on their feet and &#8220;bear themselves&#8221; whereas hitherto they had been borne by the water: a dreadful heaviness lay upon them. They felt unable to cope with the simplest undertakings; in this new world they no longer possessed their former guides, their regulating, unconscious and infallible drives: they were reduced to thinking, inferring, reckoning, coordinating cause and effect, these unfortunate creatures; they were reduced to their &#8220;consciousness,&#8221; their weakest and most fallible organ! I believe there has never been such a feeling of misery on earth, such a leaden discomfort and at the same time the old instincts had not suddenly ceased to make their usual demands. Only it was hardly or rarely possible to humor them: as a rule they had to seek new and, as it were, subterranean gratifications.</p>\n        </a>\n      </section>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"tufte\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Vollkorn\" title=\"Vollkorn\">\n        <h1><span>Edward T<span class=\"kern\">u</span>f<span class=\"kern push\">t</span>e</span></h1>\n        <p><span>&ldquo;</span>The best graphics are about the useful and important, about life and death, about the universe. Beautiful graphics do not traffic with the trivial.<span>&rdquo;</span></p>\n      </a>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"seneca\">\n    <section class=\"text\">\n        <div class=\"body\">\n          <a href=\"https://fonts.google.com/specimen/Lato\" title=\"Lato\">\n            <p class=\"title\">Lucius Annaeus Seneca<br>60 AD</p>\n          </a>\n          <a href=\"https://fonts.google.com/specimen/Merriweather\" title=\"Merriweather\">\n            <h1>De Beneficiis</h1>\n            <hr>\n            <h2>Book I.</h2>\n            <p>Among the numerous faults of those who pass their lives recklessly and without due reflexion, my good friend Liberalis, I should say that there is hardly any one so hurtful to society as this, that we neither know how to bestow or how to receive a benefit. It follows from this that benefits are badly invested, and become bad debts: in these cases it is too late to complain of their not being returned, for they were thrown away when we bestowed them. Nor need we wonder that while the greatest vices are common, none is more common than ingratitude: for this I see is brought about by various causes. The first of these is, that we do not choose worthy persons upon whom to bestow our bounty, but although when we are about to lend money we first make a careful enquiry into the means and habits of life of our debtor, and avoid sowing seed in a worn-out or unfruitful soil, yet without any discrimination we scatter our benefits at random rather than bestow them. It is hard to say whether it is more dishonourable for the receiver to disown a benefit, or for the giver to demand a return of it: for a benefit is a loan, the repayment of which depends merely upon the good feeling of the debtor. To misuse a benefit like a spendthrift is most shameful, because we do not need our wealth but only our intention to set us free from the obligation of it; for a benefit is repaid by being acknowledged. Yet while they are to blame who do not even show so much gratitude as to acknowledge their debt, we ourselves are to blame no less. We find many men ungrateful, yet we make more men so, because at one time we harshly and reproachfully demand some return for our bounty, at another we are fickle and regret what we have given, at another we are peevish and apt to find fault with trifles. By acting thus we destroy all sense of gratitude, not only after we have given anything, but while we are in the act of giving it. Who has ever thought it enough to be asked for anything in an off-hand manner, or to be asked only once? Who, when he suspected that he was going to be asked for any thing, has not frowned, turned away his face, pretended to be busy, or purposely talked without ceasing, in order not to give his suitor a chance of preferring his request, and avoided by various tricks having to help his friend in his pressing need? and when driven into a corner, has not either put the matter off, that is, given a cowardly refusal, or promised his help ungraciously, with a wry face, and with unkind words, of which he seemed to grudge the utterance.</p>\n         </a>\n        </div>\n      </a>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"thin\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Lato\" title=\"Lato\">\n        <ul>\n          <li>Unit<span class=\"kern\">y</span></li>\n          <li>Rhy<span class=\"kern\">t</span>hm</li>\n          <li>Bal<span class=\"kern\">a</span>nce</li>\n          <li>Emph<span class=\"kern\">a</span><span class=\"kern\">s</span>is</li>\n          <li>Proximit<span class=\"kern\">y</span></li>\n          <li>Hier<span class=\"kern\">a</span>rchy</li>\n        </ul>\n      </a>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"nabokov\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Playfair+Display\" title=\"Playfair Display\">\n        <h1 class=\"first\">the <br>the</h1>\n        <h1 class=\"second\">isms go<br>ist dies</h1>\n        <h1 class=\"third\">art remains.</h1>\n        <p>Vladimir Nabokov</p>\n      </a>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"postnormal\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Oswald\" title=\"Oswald\">\n        <h2>Post&mdash;&mdash;</h2>\n        <h2>Normal</h2>\n        <h2>Era</h2>\n      </a>\n\n      <a href=\"https://fonts.google.com/specimen/PT+Mono\" title=\"PT Mono\">\n        <ol class=\"normal\">\n          <li>AUTHORITARIAN/CENTRALIZED</li>\n          <li>OBJECTIVE/IMPARTIAL</li>\n          <li>HIERARCHY</li>\n          <li>NUCLEAR</li>\n          <li>GLOBALISM/GROWTH</li>\n          <li>NATION/PROVINCE/CITY</li>\n          <li>BROADCAST</li>\n          <li>EXPLOITATIVE/UNSUSTAINABLE</li>\n          <li>DOGMATIC/ORTHODOX</li>\n        </ol>\n\n        <ol class=\"forward\">\n          <li>></li>\n          <li>></li>\n          <li>></li>\n          <li>></li>\n          <li>></li>\n          <li>></li>\n          <li>></li>\n          <li>></li>\n          <li>></li>\n        </ol>\n\n        <ol class=\"post\">\n          <li>EGALITARIAN/DECENTRALIZED</li>\n          <li>SUBJECTIVE/PARTIAL</li>\n          <li>NETWORK</li>\n          <li>NEO-TRIBAL</li>\n          <li>LOCALISM/STEADY-STATE</li>\n          <li>LOCALE/WATERSHED/REGION/WORLD</li>\n          <li>PARTICIPATIVE</li>\n          <li>RESTORATIVE/SUSTAINABLE</li>\n          <li>ENIGMATIC/HETERODOX</li>\n        </ol>\n      </a>\n      <p class=\"source\">SOURCE: <a href=\"http://stoweboyd.com/post/49946797759/how-the-postnormal-era-will-change-everything\" target=\"_blank\">Stowe Boyd, How the Postnormal Era Will Change Everything</a></p>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"slogan\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Gravitas+One\" title=\"Gravitas One\">\n        <h1>Don&rsquo;t die</h1>\n        <h1>wondering</h1>\n      </a>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"darwin\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Old+Standard+TT\" title=\"Old Standard TT\">\n        <h1 class=\"small\">On</h1>\n        <h1>the Origin of Species</h1>\n        <h1 class=\"small\">By means of natural selection</h1>\n        <h2>By Charles Darwin, M.A.,</h2>\n        <h3>Fellow of the Royal, Geological, Linn&aelig;an, ETC., Societies;<br>Author of &lsquo;Journal of Researches During H.M.S. Beagle&rsquo;s Voyage Round the World.&rsquo;</h3>\n        <h4>The right of Translation is reserved.</h4>\n      </a>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"headline\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Abril+Fatface\" title=\"Abril Fatface\">\n        <h1>Meaning &amp;<br>Structure<br>in Design</h1>\n      </a>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"camus\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/PT+Sans+Narrow\" title=\"PT Sans Narrow\">\n        <h1>Albert Camus Buried</h1>\n      </a>\n        <hr>\n      <a href=\"https://fonts.google.com/specimen/PT+Sans\" title=\"PT Sans\">\n        <h2>Simple Ceremony Is Held for French Nobel Prize Author</h2>\n      </a>\n        <hr class=\"bottom\">\n      <a href=\"https://fonts.google.com/specimen/PT+Serif\" title=\"PT Serif\">\n        <p>PARIS, Jan. 6&mdash;Albert Camus, one of France&rsquo;s ranking writers and winner of a\n        Nobel Prize for Literature, was buried today in a cemetery not far from the country home\n        he recently bought in the village of Lourmarin in the south of France.</p>\n        <p>It was while motoring from Lourmarin to Paris last Monday that the Algerian-born writer\n        was killed when the car he was in went out of control and crashed into a tree at the side\n        of a highway, seventy-five miles southeast of Paris.</p>\n      </a>\n    </section>\n  </section>\n\n  <section class=\"sample\" id=\"plato\">\n    <section class=\"text\">\n      <a href=\"https://fonts.google.com/specimen/Vidaloka\" title=\"Vidaloka\">\n        <h1><mark>particulars</mark> <span>&amp;</span> <mark>universals</mark></h1>\n      </a>\n      <a href=\"https://fonts.google.com/specimen/Fira+Mono\" title=\"Fira Mono\">\n        <p class=\"separator\">For <strong>Plato</strong> it was not possible to have knowledge of anything that could change or was particular, since knowledge had to be <strong>forever unfailing and general</strong>. For that reason, the world of the forms is the real world, like sunlight, while the sensible world is only <strong>imperfectly or partially real</strong>, like shadows.</p>\n      </a>\n    </section>\n  </section>\n\n</section>\n\n\n      <footer>\n        <p>You can <a href=\"https://github.com/ubuwaits/beautiful-web-type\">watch this repo on Github</a> or <a href=\"https://twitter.com/ubuwaits\">follow me on Twitter</a>.</p>\n      </footer>\n    </section>\n\n  </body>\n</html>\n"
  },
  {
    "path": "v1/stylesheets/application.css",
    "content": "/* Global Reset\n------------------------------------------------------------------------------*/\n/* http://meyerweb.com/eric/tools/css/reset/\n   v2.0 | 20110126\n   License: none (public domain)\n*/\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n  margin: 0;\n  padding: 0;\n  border: 0;\n  font-size: 100%;\n  font: inherit;\n  vertical-align: baseline; }\n\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n  display: block; }\n\nbody {\n  line-height: 1; }\n\nol, ul {\n  list-style: none; }\n\nblockquote, q {\n  quotes: none; }\n\nblockquote:before, blockquote:after,\nq:before, q:after {\n  content: '';\n  content: none; }\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0; }\n\n/* Clear Floated Elements\n------------------------------------------------------------------------------*/\n.clearfix:after, .sample .text:after, #postnormal .source:after {\n  clear: both;\n  content: ' ';\n  display: block;\n  font-size: 0;\n  line-height: 0;\n  visibility: hidden;\n  width: 0;\n  height: 0; }\n\n.newsletter input[type='submit'] {\n  border: none;\n  cursor: pointer;\n  margin: 0;\n  padding: 0;\n  width: auto;\n  overflow: visible;\n  background: transparent;\n  /* inherit font & color from ancestor */\n  color: inherit;\n  font: inherit;\n  /* Normalize `line-height`. Cannot be changed from `normal` in Firefox 4+. */\n  line-height: normal;\n  /* Corrects font smoothing for webkit */\n  -webkit-font-smoothing: inherit;\n  -moz-osx-font-smoothing: inherit;\n  /* Corrects inability to style clickable `input` types in iOS */\n  -webkit-appearance: none;\n  /* Remove excess padding and border in Firefox 4+ */ }\n  .newsletter input[type='submit']::-moz-focus-inner {\n    border: 0;\n    padding: 0; }\n\n.newsletter {\n  background-color: #FFF700;\n  padding: 10em 0; }\n  .newsletter form {\n    margin: 1em auto 0.5em auto;\n    max-width: 600px; }\n  .newsletter h2 {\n    font: 900 20px/1.6 'merriweather';\n    margin: 0 0 1em 0; }\n  .newsletter p {\n    font: 400 20px/1.6 'merriweather';\n    margin: 0 0 1em 0; }\n  .newsletter input[type='text'] {\n    border: 1px solid #ddd;\n    box-sizing: border-box;\n    font: 400 20px 'merriweather';\n    margin: 0 0 0.5em 0;\n    outline: none;\n    padding: 1em 0.5em;\n    width: 100%; }\n  .newsletter input[type='submit'] {\n    background: #373737;\n    box-sizing: border-box;\n    color: #fff;\n    display: inline;\n    font: 400 20px/1 'merriweather';\n    padding: 0.75em 1.75em;\n    width: auto; }\n\n.tinyletter {\n  font: 400 12px/1 'merriweather';\n  margin-left: 1em; }\n  .tinyletter a {\n    color: inherit;\n    text-decoration: none; }\n\nbody {\n  background: #eaeaea;\n  box-sizing: border-box;\n  font-family: \"helvetica neue\", helvetica, arial, sans-serif;\n  -webkit-text-size-adjust: 100%; }\n\na {\n  color: inherit;\n  text-decoration: none; }\n\nfooter {\n  padding: 50px;\n  text-align: center; }\n  footer p {\n    color: #555;\n    font: 400 16px/1 'open sans';\n    margin: 0; }\n    footer p a {\n      color: #555;\n      font-weight: 700; }\n      footer p a:hover {\n        color: #000; }\n\n.sample {\n  min-height: 106vh;\n  display: flex;\n  flex-direction: column;\n  justify-content: center; }\n  .sample .text {\n    margin: 0 auto;\n    padding: 100px 20px;\n    position: relative;\n    text-align: left;\n    width: 820px; }\n\n#title {\n  background: #fff;\n  min-height: auto;\n  padding: 100px 0; }\n  #title h1 {\n    color: #000;\n    font: 400 86px/84px Abril Fatface;\n    letter-spacing: 1px; }\n    #title h1 span.kern {\n      margin: 0 0 0 -10px; }\n  #title h2 {\n    color: #666;\n    font: 300 18px/24px 'open sans';\n    margin: 0 0 36px 0;\n    width: 650px; }\n    #title h2 a:hover {\n      color: #222; }\n  #title p, #title ul {\n    color: #666;\n    float: left;\n    font: 400 13px/21px 'open sans';\n    margin: 0 50px 0 0;\n    width: 450px; }\n  #title ul {\n    margin: 0;\n    position: relative;\n    top: -2px;\n    width: 300px; }\n    #title ul li {\n      font-size: 11px;\n      position: relative;\n      text-transform: uppercase; }\n      #title ul li:before {\n        content: \"\\00d7\";\n        font-size: 15px;\n        font-weight: 700;\n        left: -2px;\n        position: relative;\n        top: 2px; }\n      #title ul li a:hover {\n        color: #222;\n        font-weight: 700; }\n\n#herzog {\n  background: #2A2C39; }\n  #herzog h2 {\n    color: #E9E9EB;\n    font: 400 36px/1.4 'cardo';\n    font-style: italic;\n    margin: 0 0 20px 0;\n    text-align: left;\n    text-indent: -10px; }\n  #herzog h3 {\n    color: #fff;\n    font: 400 36px/1.4 'cardo';\n    margin: 0 0 20px 0;\n    text-align: left;\n    text-indent: -32px; }\n    #herzog h3 em {\n      font-style: italic; }\n\n#nietzsche {\n  background: #ef4723; }\n  #nietzsche .excerpt {\n    -moz-column-count: 2;\n    -moz-column-gap: 50px;\n    -webkit-column-count: 2;\n    -webkit-column-gap: 50px; }\n  #nietzsche h1 {\n    color: #222;\n    font: 800 64px/64px 'open sans';\n    margin: 0 0 32px 0;\n    text-align: center;\n    text-transform: uppercase;\n    width: 800px; }\n    #nietzsche h1 span {\n      font: 400 60px/60px 'gentium book basic';\n      font-style: italic;\n      text-transform: none; }\n      #nietzsche h1 span.kern {\n        margin: 0 4px 0 -10px; }\n  #nietzsche h2 {\n    border-top: 1px solid #222;\n    color: #222;\n    font: 800 20px/20px 'open sans';\n    margin: 0 0 20px 0;\n    text-align: center;\n    text-transform: uppercase; }\n    #nietzsche h2 span {\n      background: #ef4723;\n      padding: 0 20px;\n      position: relative;\n      top: -10px; }\n  #nietzsche p {\n    color: #222;\n    font: 400 16px/24px 'gentium book basic';\n    margin: 0; }\n\n#bringhurst {\n  background: #fcfaf2; }\n  #bringhurst .text {\n    width: 410px; }\n  #bringhurst h1 {\n    color: #333;\n    font: 400 20px/30px 'vollkorn';\n    font-style: italic;\n    margin: 0 0 10px 0;\n    text-indent: -6px; }\n  #bringhurst p {\n    color: #c90707;\n    font: 400 12px/18px 'vollkorn';\n    letter-spacing: 1px;\n    text-transform: uppercase;\n    text-indent: -13px; }\n\n#thin {\n  background: #0ac5f4; }\n  #thin li {\n    color: #fff;\n    font: 100 92px/1 'lato';\n    text-transform: uppercase; }\n    #thin li .kern {\n      margin: 0 0 0 6px; }\n    #thin li:nth-child(1) {\n      opacity: 0.3; }\n    #thin li:nth-child(2) {\n      opacity: 0.4; }\n    #thin li:nth-child(3) {\n      opacity: 0.5; }\n    #thin li:nth-child(4) {\n      opacity: 0.6; }\n    #thin li:nth-child(5) {\n      opacity: 0.7; }\n    #thin li:nth-child(6) {\n      opacity: 0.8; }\n\n#nabokov {\n  background: rgba(133, 135, 141, 0.7); }\n  #nabokov .text {\n    width: 700px; }\n  #nabokov h1 {\n    color: #242526;\n    font: italic 700 84px/1.2 'playfair display'; }\n    #nabokov h1.first {\n      float: left;\n      padding: 200px 0 0 0;\n      margin: 0 0 -10px 0;\n      width: 142px; }\n    #nabokov h1.second {\n      border-left: 8px solid #242526;\n      float: left;\n      margin: 0 0 -10px 0;\n      padding: 200px 0 0 25px;\n      width: auto; }\n    #nabokov h1.third {\n      clear: both;\n      font-style: normal;\n      font-weight: 900;\n      margin: 0 0 0 172px; }\n  #nabokov p {\n    color: #2e2f31;\n    font: 400 14px/1 'playfair display';\n    letter-spacing: 1px;\n    margin: 18px 0 0 175px;\n    text-transform: uppercase; }\n\n#seneca {\n  background: #caccc9; }\n  #seneca .body {\n    -moz-column-count: 3;\n    -moz-column-gap: 30px;\n    -webkit-column-count: 3;\n    -webkit-column-gap: 30px; }\n  #seneca h1 {\n    color: #222;\n    font: 900 42px/44px 'merriweather';\n    letter-spacing: -1px;\n    margin: 44px 0 0 0; }\n  #seneca hr {\n    background: #333;\n    border: 0;\n    height: 3px;\n    margin: 19px 0 22px 0;\n    width: 100px; }\n  #seneca h2 {\n    color: #333;\n    font: 900 14px/22px 'merriweather'; }\n  #seneca p.title {\n    color: #c3322f;\n    font: 900 14px/22px 'lato'; }\n  #seneca p {\n    color: #333;\n    font: 400 14px/22px 'merriweather'; }\n\n#tufte {\n  background: #f8f5ef; }\n  #tufte .text {\n    width: 860px; }\n  #tufte h1 {\n    border-top: 5px solid #172bae;\n    color: #172bae;\n    font: 300 92px/1 'vollkorn';\n    letter-spacing: -1px;\n    margin: 0 0 0 -8px; }\n    #tufte h1 span {\n      background: #f8f5ef;\n      padding: 0 19px 0 0;\n      position: relative;\n      top: -52px; }\n      #tufte h1 span.kern {\n        background: transparent;\n        margin: 0 0 0 -5px;\n        padding: 0;\n        top: 0; }\n        #tufte h1 span.kern.push {\n          margin: 0 0 0 7px; }\n  #tufte p {\n    color: #172bae;\n    font: 400 20px/30px 'vollkorn';\n    font-style: italic;\n    margin: -40px 0 0 280px;\n    text-indent: -16px; }\n    #tufte p span {\n      font-size: 28px;\n      font-family: 'gentium book basic';\n      font-weight: 400;\n      margin: 0 2px 0 0;\n      position: relative;\n      top: 5px; }\n\n#postnormal {\n  background: #fff; }\n  #postnormal .text {\n    width: 860px; }\n  #postnormal .source {\n    font: normal 10px/16px 'pt mono';\n    opacity: 0.3;\n    padding: 28px 0 0 0;\n    text-transform: uppercase; }\n  #postnormal h2 {\n    color: #FFF700;\n    font: bold 164px/1 'oswald';\n    position: absolute;\n    text-transform: uppercase;\n    top: 0;\n    width: 100%;\n    z-index: 1; }\n    #postnormal h2:nth-child(1) {\n      left: 0px; }\n    #postnormal h2:nth-child(2) {\n      top: 160px;\n      text-align: center; }\n    #postnormal h2:nth-child(3) {\n      text-align: right;\n      top: 318px; }\n  #postnormal ol {\n    float: left;\n    position: relative;\n    width: auto;\n    z-index: 2; }\n    #postnormal ol li {\n      color: #222;\n      font: normal 13px/54px 'pt mono';\n      letter-spacing: 5px; }\n    #postnormal ol.normal {\n      opacity: 0.3; }\n    #postnormal ol.forward {\n      margin: 0 60px; }\n\n#slogan {\n  background: #c00; }\n  #slogan .text {\n    text-align: center;\n    width: 700px; }\n  #slogan h1 {\n    border-bottom: 6px solid #090909;\n    color: #090909;\n    display: inline-block;\n    font: 400 76px/64px 'Gravitas One';\n    letter-spacing: -4px;\n    margin: 0 0 20px 0;\n    padding: 0 4px;\n    text-transform: uppercase; }\n\n#darwin {\n  background: #ede0ce; }\n  #darwin .text {\n    text-align: center;\n    width: 750px; }\n  #darwin h1 {\n    color: #161616;\n    font: 400 58px/58px 'old standard tt';\n    margin: 0 0 32px 0;\n    text-transform: uppercase; }\n    #darwin h1.small {\n      font-size: 18px; }\n  #darwin h2 {\n    color: #161616;\n    font: 400 28px/28px 'old standard tt';\n    margin: 160px 0 14px 0;\n    text-transform: uppercase; }\n  #darwin h3 {\n    color: #161616;\n    font: 400 14px/21px 'old standard tt';\n    margin: 0 0 80px 0;\n    text-transform: uppercase; }\n  #darwin h4 {\n    color: #161616;\n    font: 400 14px/21px 'old standard tt';\n    font-style: italic;\n    margin: 0; }\n\n#headline {\n  background: #000; }\n  #headline .text {\n    width: 470px; }\n  #headline h1 {\n    color: #fff;\n    font: 400 92px/84px Abril Fatface; }\n\n#camus {\n  background: #fff; }\n  #camus .text {\n    width: 205px; }\n  #camus h1 {\n    color: #222;\n    font: 700 24px/24px 'pt sans narrow';\n    margin: 0;\n    text-align: center;\n    text-transform: uppercase; }\n  #camus hr {\n    background: #333;\n    border: 0;\n    height: 2px;\n    margin: 12px auto 8px;\n    width: 60px; }\n    #camus hr.bottom {\n      margin: 10px auto; }\n  #camus h2 {\n    color: #222;\n    font: 700 16px/20px 'pt sans';\n    margin: 0;\n    text-align: center; }\n  #camus p {\n    color: #222;\n    font: 400 14px/18px 'pt serif';\n    text-align: justify;\n    text-indent: 14px; }\n\n#plato {\n  background: #8253D7; }\n  #plato .text {\n    width: 730px; }\n  #plato h1 {\n    color: #461B93;\n    font: 400 60px/72px 'Vidaloka';\n    letter-spacing: 1px;\n    text-align: center; }\n    #plato h1 span {\n      font-size: 100px;\n      position: relative;\n      top: 16px;\n      margin: 0 15px; }\n    #plato h1 mark {\n      color: inherit;\n      background-color: transparent;\n      position: relative;\n      z-index: 0; }\n      #plato h1 mark:after {\n        content: \"\";\n        position: absolute;\n        height: 25%;\n        width: 104%;\n        background-color: #6A3CBC;\n        bottom: 10px;\n        left: -2%;\n        z-index: -1; }\n  #plato p {\n    font: 400 15px/30px 'Fira Mono';\n    color: #e3d3ff;\n    text-align: center;\n    position: relative;\n    box-sizing: border-box;\n    padding: 0 80px; }\n    #plato p.separator {\n      margin-top: 120px; }\n      #plato p.separator:after {\n        content: \"\";\n        width: 1px;\n        height: 55px;\n        background-color: #ac7eff;\n        display: block;\n        position: absolute;\n        top: -80px;\n        left: 50%; }\n    #plato p strong {\n      font-weight: 500;\n      color: #ffbf79; }\n\n/*# sourceMappingURL=application.css.map */\n"
  },
  {
    "path": "vitest.config.ts",
    "content": "import path from \"node:path\";\n\nimport { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n  resolve: {\n    alias: {\n      \"@\": path.resolve(__dirname)\n    }\n  },\n  test: {\n    environment: \"node\",\n    include: [\"tests/**/*.test.ts\"]\n  }\n});\n"
  }
]