diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..f2394bf --- /dev/null +++ b/404.html @@ -0,0 +1,3 @@ + + Mercury +
Mercury
Modern blog theme
404
Page not found :(
\ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..6b1f48c --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +mercury.flxzt.net diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..b6d581f --- /dev/null +++ b/about/index.html @@ -0,0 +1,3 @@ + + About +
Mercury
Modern blog theme
About

This site provides a demo for the Mercury theme for the Zola static site generator.

\ No newline at end of file diff --git a/atom.xml b/atom.xml new file mode 100644 index 0000000..5637d6b --- /dev/null +++ b/atom.xml @@ -0,0 +1,832 @@ + + + Mercury + Modern blog theme + + + Zola + 2022-01-03T00:00:00+00:00 + https://mercury.flxzt.net/atom.xml + + Math + 2022-01-03T00:00:00+00:00 + 2022-01-03T00:00:00+00:00 + + + + + Unknown + + + + + + https://mercury.flxzt.net/posts/math/ + + <p>Taken from <a href="https://mathjax.github.io/MathJax-demos-web/tex-chtml.html">https://mathjax.github.io/MathJax-demos-web/tex-chtml.html</a></p> +<h1 id="mathjax-v3-beta-tex-input-html-output-test">MathJax v3 beta: TeX input, HTML output test</h1> +<p>When $a \ne 0$, there are two solutions to $ ax^2 + bx + c = 0 $ and they are +$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$</p> +<h2 id="the-lorenz-equations">The Lorenz Equations</h2> +<p>$$ +\begin{align} +\dot{x} &amp; = \sigma(y-x) \ +\dot{y} &amp; = \rho x - y - xz \ +\dot{z} &amp; = -\beta z + xy +\end{align} +$$</p> +<h2 id="the-cauchy-schwarz-inequality">The Cauchy-Schwarz Inequality</h2> +<p>$$ +\left( \sum_{k=1}^n a_k b_k \right)^{!!2} \leq +\left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) +$$</p> +<h2 id="a-cross-product-formula">A Cross Product Formula</h2> +<p>$$ +\mathbf{V}_1 \times \mathbf{V}_2 = +\begin{vmatrix} +\mathbf{i} &amp; \mathbf{j} &amp; \mathbf{k} \ +\frac{\partial X}{\partial u} &amp; \frac{\partial Y}{\partial u} &amp; 0 \ +\frac{\partial X}{\partial v} &amp; \frac{\partial Y}{\partial v} &amp; 0 \ +\end{vmatrix} +$$</p> +<h2 id="the-probability-of-getting-k-heads-when-flipping-n-coins-is">The probability of getting (k) heads when flipping (n) coins is:</h2> +<p>$$ +P(E) = {n \choose k} p^k (1-p)^{ n-k} +$$</p> +<h2 id="an-identity-of-ramanujan">An Identity of Ramanujan</h2> +<p>$$ +\frac{1}{(\sqrt{\phi \sqrt{5}}-\phi) e^{\frac25 \pi}} = +1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} +{1+\frac{e^{-8\pi}} {1+\ldots} } } } +$$</p> +<h2 id="a-rogers-ramanujan-identity">A Rogers-Ramanujan Identity</h2> +<p>$$ +1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = +\prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, +\quad\quad \text{for $|q| &lt; 1$}. +$$</p> +<h2 id="maxwell-s-equations">Maxwell's Equations</h2> +<p>$$ +\begin{align} +\nabla \times \vec{\mathbf{B}} -, \frac1c, \frac{\partial\vec{\mathbf{E}}}{\partial t} &amp; = \frac{4\pi}{c}\vec{\mathbf{j}} \ +\nabla \cdot \vec{\mathbf{E}} &amp; = 4 \pi \rho \ +\nabla \times \vec{\mathbf{E}}, +, \frac1c, \frac{\partial\vec{\mathbf{B}}}{\partial t} &amp; = \vec{\mathbf{0}} \ +\nabla \cdot \vec{\mathbf{B}} &amp; = 0 +\end{align} +$$</p> +<h2 id="in-line-mathematics">In-line Mathematics</h2> +<p>Finally, while display equations look good for a page of samples, the +ability to mix math and text in a paragraph is also important. This +expression $\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As +you see, MathJax equations can be used this way as well, without unduly +disturbing the spacing between lines.</p> + + + + + Table of Contents Test + 2022-01-02T00:00:00+00:00 + 2022-01-02T00:00:00+00:00 + + + + + Unknown + + + + + + https://mercury.flxzt.net/posts/table-of-contents/ + + <h1 id="heading-1">Heading 1</h1> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h2 id="heading-2">Heading 2</h2> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h3 id="heading-3">Heading 3</h3> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-1">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h3 id="heading-3-1">Heading 3</h3> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-2">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-3">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<hr /> +<h2 id="heading-2-1">Heading 2</h2> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h3 id="heading-3-2">Heading 3</h3> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-4">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-5">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h3 id="heading-3-3">Heading 3</h3> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-6">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> +<h4 id="heading-4-7">Heading 4</h4> +<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.</p> + + + + + Markdown Syntax + 2022-01-01T00:00:00+00:00 + 2022-01-01T00:00:00+00:00 + + + + + Unknown + + + + + + https://mercury.flxzt.net/posts/markdown/ + + <p>Taken from <a href="https://github.com/thephpleague/commonmark/blob/2.3/tests/benchmark/sample.md">github.com/thephpleague/commonmark/blob/2.3/tests/benchmark/sample.md</a></p> +<h2 id="overview">Overview</h2> +<h3 id="philosophy">Philosophy</h3> +<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p> +<p>Readability, however, is emphasized above all else. A Markdown-formatted +document should be publishable as-is, as plain text, without looking +like it's been marked up with tags or formatting instructions. While +Markdown's syntax has been influenced by several existing text-to-HTML +filters -- including [Setext] <a href="http://docutils.sourceforge.net/mirror/setext.html">1</a>, [atx] <a href="http://www.aaronsw.com/2002/atx/">2</a>, [Textile] <a href="http://textism.com/tools/textile/">3</a>, [reStructuredText] <a href="http://docutils.sourceforge.net/rst.html">4</a>, +[Grutatext] <a href="http://www.triptico.com/software/grutatxt.html">5</a>, and [EtText] <a href="http://ettext.taint.org/doc/">6</a> -- the single biggest source of +inspiration for Markdown's syntax is the format of plain text email.</p> +<p>To this end, Markdown's syntax is comprised entirely of punctuation +characters, which punctuation characters have been carefully chosen so +as to look like what they mean. E.g., asterisks around a word actually +look like *emphasis*. Markdown lists look like, well, lists. Even +blockquotes look like quoted passages of text, assuming you've ever +used email.</p> +<h3 id="html">Inline HTML</h3> +<p>Markdown's syntax is intended for one purpose: to be used as a +format for <em>writing</em> for the web.</p> +<p>Markdown is not a replacement for HTML, or even close to it. Its +syntax is very small, corresponding only to a very small subset of +HTML tags. The idea is <em>not</em> to create a syntax that makes it easier +to insert HTML tags. In my opinion, HTML tags are already easy to +insert. The idea for Markdown is to make it easy to read, write, and +edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em> +format. Thus, Markdown's formatting syntax only addresses issues that +can be conveyed in plain text.</p> +<p>For any markup that is not covered by Markdown's syntax, you simply +use HTML itself. There's no need to preface it or delimit it to +indicate that you're switching from Markdown to HTML; you just use +the tags.</p> +<p>The only restrictions are that block-level HTML elements -- e.g. <code>&lt;div&gt;</code>, +<code>&lt;table&gt;</code>, <code>&lt;pre&gt;</code>, <code>&lt;p&gt;</code>, etc. -- must be separated from surrounding +content by blank lines, and the start and end tags of the block should +not be indented with tabs or spaces. Markdown is smart enough not +to add extra (unwanted) <code>&lt;p&gt;</code> tags around HTML block-level tags.</p> +<p>For example, to add an HTML table to a Markdown article:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is a regular paragraph. +</span><span> +</span><span>&lt;table&gt; +</span><span> &lt;tr&gt; +</span><span> &lt;td&gt;Foo&lt;/td&gt; +</span><span> &lt;/tr&gt; +</span><span>&lt;/table&gt; +</span><span> +</span><span>This is another regular paragraph. +</span></code></pre> +<p>Note that Markdown formatting syntax is not processed within block-level +HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an +HTML block.</p> +<p>Span-level HTML tags -- e.g. <code>&lt;span&gt;</code>, <code>&lt;cite&gt;</code>, or <code>&lt;del&gt;</code> -- can be +used anywhere in a Markdown paragraph, list item, or header. If you +want, you can even use HTML tags instead of Markdown formatting; e.g. if +you'd prefer to use HTML <code>&lt;a&gt;</code> or <code>&lt;img&gt;</code> tags instead of Markdown's +link or image syntax, go right ahead.</p> +<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within +span-level tags.</p> +<h3 id="autoescape">Automatic Escaping for Special Characters</h3> +<p>In HTML, there are two characters that demand special treatment: <code>&lt;</code> +and <code>&amp;</code>. Left angle brackets are used to start tags; ampersands are +used to denote HTML entities. If you want to use them as literal +characters, you must escape them as entities, e.g. <code>&amp;lt;</code>, and +<code>&amp;amp;</code>.</p> +<p>Ampersands in particular are bedeviling for web writers. If you want to +write about 'AT&amp;T', you need to write '<code>AT&amp;amp;T</code>'. You even need to +escape ampersands within URLs. Thus, if you want to link to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>http://images.google.com/images?num=30&amp;q=larry+bird +</span></code></pre> +<p>you need to encode the URL as:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>http://images.google.com/images?num=30&amp;amp;q=larry+bird +</span></code></pre> +<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to +forget, and is probably the single most common source of HTML validation +errors in otherwise well-marked-up web sites.</p> +<p>Markdown allows you to use these characters naturally, taking care of +all the necessary escaping for you. If you use an ampersand as part of +an HTML entity, it remains unchanged; otherwise it will be translated +into <code>&amp;amp;</code>.</p> +<p>So, if you want to include a copyright symbol in your article, you can write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&amp;copy; +</span></code></pre> +<p>and Markdown will leave it alone. But if you write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>AT&amp;T +</span></code></pre> +<p>Markdown will translate it to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>AT&amp;amp;T +</span></code></pre> +<p>Similarly, because Markdown supports <a href="https://mercury.flxzt.net/posts/markdown/#html">inline HTML</a>, if you use +angle brackets as delimiters for HTML tags, Markdown will treat them as +such. But if you write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>4 &lt; 5 +</span></code></pre> +<p>Markdown will translate it to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>4 &amp;lt; 5 +</span></code></pre> +<p>However, inside Markdown code spans and blocks, angle brackets and +ampersands are <em>always</em> encoded automatically. This makes it easy to use +Markdown to write about HTML code. (As opposed to raw HTML, which is a +terrible format for writing about HTML syntax, because every single <code>&lt;</code> +and <code>&amp;</code> in your example code needs to be escaped.)</p> +<hr /> +<h2 id="block">Block Elements</h2> +<h3 id="p">Paragraphs and Line Breaks</h3> +<p>A paragraph is simply one or more consecutive lines of text, separated +by one or more blank lines. (A blank line is any line that looks like a +blank line -- a line containing nothing but spaces or tabs is considered +blank.) Normal paragraphs should not be indented with spaces or tabs.</p> +<p>The implication of the &quot;one or more consecutive lines of text&quot; rule is +that Markdown supports &quot;hard-wrapped&quot; text paragraphs. This differs +significantly from most other text-to-HTML formatters (including Movable +Type's &quot;Convert Line Breaks&quot; option) which translate every line break +character in a paragraph into a <code>&lt;br /&gt;</code> tag.</p> +<p>When you <em>do</em> want to insert a <code>&lt;br /&gt;</code> break tag using Markdown, you +end a line with two or more spaces, then type return.</p> +<p>Yes, this takes a tad more effort to create a <code>&lt;br /&gt;</code>, but a simplistic +&quot;every line break is a <code>&lt;br /&gt;</code>&quot; rule wouldn't work for Markdown. +Markdown's email-style <a href="https://mercury.flxzt.net/posts/markdown/#blockquote">blockquoting</a> and multi-paragraph <a href="https://mercury.flxzt.net/posts/markdown/#list">list items</a> +work best -- and look better -- when you format them with hard breaks.</p> +<h3 id="header">Headers</h3> +<p>Markdown supports two styles of headers, [Setext] <a href="http://docutils.sourceforge.net/mirror/setext.html">1</a> and [atx] <a href="http://www.aaronsw.com/2002/atx/">2</a>.</p> +<p>Setext-style headers are &quot;underlined&quot; using equal signs (for first-level +headers) and dashes (for second-level headers). For example:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is an H1 +</span><span>============= +</span><span> +</span><span>This is an H2 +</span><span>------------- +</span></code></pre> +<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p> +<p>Atx-style headers use 1-6 hash characters at the start of the line, +corresponding to header levels 1-6. For example:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span># This is an H1 +</span><span> +</span><span>## This is an H2 +</span><span> +</span><span>###### This is an H6 +</span></code></pre> +<p>Optionally, you may &quot;close&quot; atx-style headers. This is purely +cosmetic -- you can use this if you think it looks better. The +closing hashes don't even need to match the number of hashes +used to open the header. (The number of opening hashes +determines the header level.) :</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span># This is an H1 # +</span><span> +</span><span>## This is an H2 ## +</span><span> +</span><span>### This is an H3 ###### +</span></code></pre> +<h3 id="blockquote">Blockquotes</h3> +<p>Markdown uses email-style <code>&gt;</code> characters for blockquoting. If you're +familiar with quoting passages of text in an email message, then you +know how to create a blockquote in Markdown. It looks best if you hard +wrap the text and put a <code>&gt;</code> before every line:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, +</span><span>&gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. +</span><span>&gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. +</span><span>&gt; +</span><span>&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse +</span><span>&gt; id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>Markdown allows you to be lazy and only put the <code>&gt;</code> before the first +line of a hard-wrapped paragraph:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, +</span><span>consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. +</span><span>Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. +</span><span> +</span><span>&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse +</span><span>id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by +adding additional levels of <code>&gt;</code>:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&gt; This is the first level of quoting. +</span><span>&gt; +</span><span>&gt; &gt; This is nested blockquote. +</span><span>&gt; +</span><span>&gt; Back to the first level. +</span></code></pre> +<p>Blockquotes can contain other Markdown elements, including headers, lists, +and code blocks:</p> +<blockquote> +<h2 id="this-is-a-header">This is a header.</h2> +<ol> +<li>This is the first list item.</li> +<li>This is the second list item.</li> +</ol> +<p>Here's some example code:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span> return shell_exec(&quot;echo $input | $markdown_script&quot;); +</span></code></pre> +</blockquote> +<p>Any decent text editor should make email-style quoting easy. For +example, with BBEdit, you can make a selection and choose Increase +Quote Level from the Text menu.</p> +<h3 id="list">Lists</h3> +<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p> +<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably +-- as list markers:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Red +</span><span>* Green +</span><span>* Blue +</span></code></pre> +<p>is equivalent to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>+ Red +</span><span>+ Green +</span><span>+ Blue +</span></code></pre> +<p>and:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>- Red +</span><span>- Green +</span><span>- Blue +</span></code></pre> +<p>Ordered lists use numbers followed by periods:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1. Bird +</span><span>2. McHale +</span><span>3. Parish +</span></code></pre> +<p>It's important to note that the actual numbers you use to mark the +list have no effect on the HTML output Markdown produces. The HTML +Markdown produces from the above list is:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;ol&gt; +</span><span>&lt;li&gt;Bird&lt;/li&gt; +</span><span>&lt;li&gt;McHale&lt;/li&gt; +</span><span>&lt;li&gt;Parish&lt;/li&gt; +</span><span>&lt;/ol&gt; +</span></code></pre> +<p>If you instead wrote the list in Markdown like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1. Bird +</span><span>1. McHale +</span><span>1. Parish +</span></code></pre> +<p>or even:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>3. Bird +</span><span>1. McHale +</span><span>8. Parish +</span></code></pre> +<p>you'd get the exact same HTML output. The point is, if you want to, +you can use ordinal numbers in your ordered Markdown lists, so that +the numbers in your source match the numbers in your published HTML. +But if you want to be lazy, you don't have to.</p> +<p>If you do use lazy list numbering, however, you should still start the +list with the number 1. At some point in the future, Markdown may support +starting ordered lists at an arbitrary number.</p> +<p>List markers typically start at the left margin, but may be indented by +up to three spaces. List markers must be followed by one or more spaces +or a tab.</p> +<p>To make lists look nice, you can wrap items with hanging indents:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +</span><span> Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, +</span><span> viverra nec, fringilla in, laoreet vitae, risus. +</span><span>* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. +</span><span> Suspendisse id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>But if you want to be lazy, you don't have to:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +</span><span>Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, +</span><span>viverra nec, fringilla in, laoreet vitae, risus. +</span><span>* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. +</span><span>Suspendisse id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>If list items are separated by blank lines, Markdown will wrap the +items in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Bird +</span><span>* Magic +</span></code></pre> +<p>will turn into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;ul&gt; +</span><span>&lt;li&gt;Bird&lt;/li&gt; +</span><span>&lt;li&gt;Magic&lt;/li&gt; +</span><span>&lt;/ul&gt; +</span></code></pre> +<p>But this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* Bird +</span><span> +</span><span>* Magic +</span></code></pre> +<p>will turn into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;ul&gt; +</span><span>&lt;li&gt;&lt;p&gt;Bird&lt;/p&gt;&lt;/li&gt; +</span><span>&lt;li&gt;&lt;p&gt;Magic&lt;/p&gt;&lt;/li&gt; +</span><span>&lt;/ul&gt; +</span></code></pre> +<p>List items may consist of multiple paragraphs. Each subsequent +paragraph in a list item must be indented by either 4 spaces +or one tab:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1. This is a list item with two paragraphs. Lorem ipsum dolor +</span><span> sit amet, consectetuer adipiscing elit. Aliquam hendrerit +</span><span> mi posuere lectus. +</span><span> +</span><span> Vestibulum enim wisi, viverra nec, fringilla in, laoreet +</span><span> vitae, risus. Donec sit amet nisl. Aliquam semper ipsum +</span><span> sit amet velit. +</span><span> +</span><span>2. Suspendisse id sem consectetuer libero luctus adipiscing. +</span></code></pre> +<p>It looks nice if you indent every line of the subsequent +paragraphs, but here again, Markdown will allow you to be +lazy:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* This is a list item with two paragraphs. +</span><span> +</span><span> This is the second paragraph in the list item. You&#39;re +</span><span>only required to indent the first line. Lorem ipsum dolor +</span><span>sit amet, consectetuer adipiscing elit. +</span><span> +</span><span>* Another item in the same list. +</span></code></pre> +<p>To put a blockquote within a list item, the blockquote's <code>&gt;</code> +delimiters need to be indented:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* A list item with a blockquote: +</span><span> +</span><span> &gt; This is a blockquote +</span><span> &gt; inside a list item. +</span></code></pre> +<p>To put a code block within a list item, the code block needs +to be indented <em>twice</em> -- 8 spaces or two tabs:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* A list item with a code block: +</span><span> +</span><span> &lt;code goes here&gt; +</span></code></pre> +<p>It's worth noting that it's possible to trigger an ordered list by +accident, by writing something like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1986. What a great season. +</span></code></pre> +<p>In other words, a <em>number-period-space</em> sequence at the beginning of a +line. To avoid this, you can backslash-escape the period:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>1986\. What a great season. +</span></code></pre> +<h3 id="precode">Code Blocks</h3> +<p>Pre-formatted code blocks are used for writing about programming or +markup source code. Rather than forming normal paragraphs, the lines +of a code block are interpreted literally. Markdown wraps a code block +in both <code>&lt;pre&gt;</code> and <code>&lt;code&gt;</code> tags.</p> +<p>To produce a code block in Markdown, simply indent every line of the +block by at least 4 spaces or 1 tab. For example, given this input:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is a normal paragraph: +</span><span> +</span><span> This is a code block. +</span></code></pre> +<p>Markdown will generate:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;This is a normal paragraph:&lt;/p&gt; +</span><span> +</span><span>&lt;pre&gt;&lt;code&gt;This is a code block. +</span><span>&lt;/code&gt;&lt;/pre&gt; +</span></code></pre> +<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each +line of the code block. For example, this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>Here is an example of AppleScript: +</span><span> +</span><span> tell application &quot;Foo&quot; +</span><span> beep +</span><span> end tell +</span></code></pre> +<p>will turn into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;Here is an example of AppleScript:&lt;/p&gt; +</span><span> +</span><span>&lt;pre&gt;&lt;code&gt;tell application &quot;Foo&quot; +</span><span> beep +</span><span>end tell +</span><span>&lt;/code&gt;&lt;/pre&gt; +</span></code></pre> +<p>A code block continues until it reaches a line that is not indented +(or the end of the article).</p> +<p>Within a code block, ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> and <code>&gt;</code>) +are automatically converted into HTML entities. This makes it very +easy to include example HTML source code using Markdown -- just paste +it and indent it, and Markdown will handle the hassle of encoding the +ampersands and angle brackets. For example, this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span> &lt;div class=&quot;footer&quot;&gt; +</span><span> &amp;copy; 2004 Foo Corporation +</span><span> &lt;/div&gt; +</span></code></pre> +<p>will turn into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&quot;footer&quot;&amp;gt; +</span><span> &amp;amp;copy; 2004 Foo Corporation +</span><span>&amp;lt;/div&amp;gt; +</span><span>&lt;/code&gt;&lt;/pre&gt; +</span></code></pre> +<p>Regular Markdown syntax is not processed within code blocks. E.g., +asterisks are just literal asterisks within a code block. This means +it's also easy to use Markdown to write about Markdown's own syntax.</p> +<h3 id="hr">Horizontal Rules</h3> +<p>You can produce a horizontal rule tag (<code>&lt;hr /&gt;</code>) by placing three or +more hyphens, asterisks, or underscores on a line by themselves. If you +wish, you may use spaces between the hyphens or asterisks. Each of the +following lines will produce a horizontal rule:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>* * * +</span><span> +</span><span>*** +</span><span> +</span><span>***** +</span><span> +</span><span>- - - +</span><span> +</span><span>--------------------------------------- +</span></code></pre> +<hr /> +<h2 id="span">Span Elements</h2> +<h3 id="link">Links</h3> +<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p> +<p>In both styles, the link text is delimited by [square brackets].</p> +<p>To create an inline link, use a set of regular parentheses immediately +after the link text's closing square bracket. Inside the parentheses, +put the URL where you want the link to point, along with an <em>optional</em> +title for the link, surrounded in quotes. For example:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is [an example](http://example.com/ &quot;Title&quot;) inline link. +</span><span> +</span><span>[This link](http://example.net/) has no title attribute. +</span></code></pre> +<p>Will produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;This is &lt;a href=&quot;http://example.com/&quot; title=&quot;Title&quot;&gt; +</span><span>an example&lt;/a&gt; inline link.&lt;/p&gt; +</span><span> +</span><span>&lt;p&gt;&lt;a href=&quot;http://example.net/&quot;&gt;This link&lt;/a&gt; has no +</span><span>title attribute.&lt;/p&gt; +</span></code></pre> +<p>If you're referring to a local resource on the same server, you can +use relative paths:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>See my [About](/about/) page for details. +</span></code></pre> +<p>Reference-style links use a second set of square brackets, inside +which you place a label of your choosing to identify the link:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is [an example][id] reference-style link. +</span></code></pre> +<p>You can optionally use a space to separate the sets of brackets:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>This is [an example] [id] reference-style link. +</span></code></pre> +<p>Then, anywhere in the document, you define your link label like this, +on a line by itself:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[id]: http://example.com/ &quot;Optional Title Here&quot; +</span></code></pre> +<p>That is:</p> +<ul> +<li>Square brackets containing the link identifier (optionally +indented from the left margin using up to three spaces);</li> +<li>followed by a colon;</li> +<li>followed by one or more spaces (or tabs);</li> +<li>followed by the URL for the link;</li> +<li>optionally followed by a title attribute for the link, enclosed +in double or single quotes, or enclosed in parentheses.</li> +</ul> +<p>The following three link definitions are equivalent:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[foo]: http://example.com/ &quot;Optional Title Here&quot; +</span><span>[foo]: http://example.com/ &#39;Optional Title Here&#39; +</span><span>[foo]: http://example.com/ (Optional Title Here) +</span></code></pre> +<p><strong>Note:</strong> There is a known bug in Markdown.pl 1.0.1 which prevents +single quotes from being used to delimit link titles.</p> +<p>The link URL may, optionally, be surrounded by angle brackets:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[id]: &lt;http://example.com/&gt; &quot;Optional Title Here&quot; +</span></code></pre> +<p>You can put the title attribute on the next line and use extra spaces +or tabs for padding, which tends to look better with longer URLs:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[id]: http://example.com/longish/path/to/resource/here +</span><span> &quot;Optional Title Here&quot; +</span></code></pre> +<p>Link definitions are only used for creating links during Markdown +processing, and are stripped from your document in the HTML output.</p> +<p>Link definition names may consist of letters, numbers, spaces, and +punctuation -- but they are <em>not</em> case sensitive. E.g. these two +links:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[link text][a] +</span><span>[link text][A] +</span></code></pre> +<p>are equivalent.</p> +<p>The <em>implicit link name</em> shortcut allows you to omit the name of the +link, in which case the link text itself is used as the name. +Just use an empty set of square brackets -- e.g., to link the word +&quot;Google&quot; to the google.com web site, you could simply write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[Google][] +</span></code></pre> +<p>And then define the link:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[Google]: http://google.com/ +</span></code></pre> +<p>Because link names may contain spaces, this shortcut even works for +multiple words in the link text:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>Visit [Daring Fireball][] for more information. +</span></code></pre> +<p>And then define the link:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[Daring Fireball]: http://daringfireball.net/ +</span></code></pre> +<p>Link definitions can be placed anywhere in your Markdown document. I +tend to put them immediately after each paragraph in which they're +used, but if you want, you can put them all at the end of your +document, sort of like footnotes.</p> +<p>Here's an example of reference links in action:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>I get 10 times more traffic from [Google] [1] than from +</span><span>[Yahoo] [2] or [MSN] [3]. +</span><span> +</span><span> [1]: http://google.com/ &quot;Google&quot; +</span><span> [2]: http://search.yahoo.com/ &quot;Yahoo Search&quot; +</span><span> [3]: http://search.msn.com/ &quot;MSN Search&quot; +</span></code></pre> +<p>Using the implicit link name shortcut, you could instead write:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>I get 10 times more traffic from [Google][] than from +</span><span>[Yahoo][] or [MSN][]. +</span><span> +</span><span> [google]: http://google.com/ &quot;Google&quot; +</span><span> [yahoo]: http://search.yahoo.com/ &quot;Yahoo Search&quot; +</span><span> [msn]: http://search.msn.com/ &quot;MSN Search&quot; +</span></code></pre> +<p>Both of the above examples will produce the following HTML output:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;I get 10 times more traffic from &lt;a href=&quot;http://google.com/&quot; +</span><span>title=&quot;Google&quot;&gt;Google&lt;/a&gt; than from +</span><span>&lt;a href=&quot;http://search.yahoo.com/&quot; title=&quot;Yahoo Search&quot;&gt;Yahoo&lt;/a&gt; +</span><span>or &lt;a href=&quot;http://search.msn.com/&quot; title=&quot;MSN Search&quot;&gt;MSN&lt;/a&gt;.&lt;/p&gt; +</span></code></pre> +<p>For comparison, here is the same paragraph written using +Markdown's inline link style:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>I get 10 times more traffic from [Google](http://google.com/ &quot;Google&quot;) +</span><span>than from [Yahoo](http://search.yahoo.com/ &quot;Yahoo Search&quot;) or +</span><span>[MSN](http://search.msn.com/ &quot;MSN Search&quot;). +</span></code></pre> +<p>The point of reference-style links is not that they're easier to +write. The point is that with reference-style links, your document +source is vastly more readable. Compare the above examples: using +reference-style links, the paragraph itself is only 81 characters +long; with inline-style links, it's 176 characters; and as raw HTML, +it's 234 characters. In the raw HTML, there's more markup than there +is text.</p> +<p>With Markdown's reference-style links, a source document much more +closely resembles the final output, as rendered in a browser. By +allowing you to move the markup-related metadata out of the paragraph, +you can add links without interrupting the narrative flow of your +prose.</p> +<h3 id="em">Emphasis</h3> +<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of +emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an +HTML <code>&lt;em&gt;</code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML +<code>&lt;strong&gt;</code> tag. E.g., this input:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>*single asterisks* +</span><span> +</span><span>_single underscores_ +</span><span> +</span><span>**double asterisks** +</span><span> +</span><span>__double underscores__ +</span></code></pre> +<p>will produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;em&gt;single asterisks&lt;/em&gt; +</span><span> +</span><span>&lt;em&gt;single underscores&lt;/em&gt; +</span><span> +</span><span>&lt;strong&gt;double asterisks&lt;/strong&gt; +</span><span> +</span><span>&lt;strong&gt;double underscores&lt;/strong&gt; +</span></code></pre> +<p>You can use whichever style you prefer; the lone restriction is that +the same character must be used to open and close an emphasis span.</p> +<p>Emphasis can be used in the middle of a word:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>un*frigging*believable +</span></code></pre> +<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a +literal asterisk or underscore.</p> +<p>To produce a literal asterisk or underscore at a position where it +would otherwise be used as an emphasis delimiter, you can backslash +escape it:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>\*this text is surrounded by literal asterisks\* +</span></code></pre> +<h3 id="code">Code</h3> +<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>). +Unlike a pre-formatted code block, a code span indicates code within a +normal paragraph. For example:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>Use the `printf()` function. +</span></code></pre> +<p>will produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;Use the &lt;code&gt;printf()&lt;/code&gt; function.&lt;/p&gt; +</span></code></pre> +<p>To include a literal backtick character within a code span, you can use +multiple backticks as the opening and closing delimiters:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>``There is a literal backtick (`) here.`` +</span></code></pre> +<p>which will produce this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;&lt;code&gt;There is a literal backtick (`) here.&lt;/code&gt;&lt;/p&gt; +</span></code></pre> +<p>The backtick delimiters surrounding a code span may include spaces -- +one after the opening, one before the closing. This allows you to place +literal backtick characters at the beginning or end of a code span:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>A single backtick in a code span: `` ` `` +</span><span> +</span><span>A backtick-delimited string in a code span: `` `foo` `` +</span></code></pre> +<p>will produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;A single backtick in a code span: &lt;code&gt;`&lt;/code&gt;&lt;/p&gt; +</span><span> +</span><span>&lt;p&gt;A backtick-delimited string in a code span: &lt;code&gt;`foo`&lt;/code&gt;&lt;/p&gt; +</span></code></pre> +<p>With a code span, ampersands and angle brackets are encoded as HTML +entities automatically, which makes it easy to include example HTML +tags. Markdown will turn this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>Please don&#39;t use any `&lt;blink&gt;` tags. +</span></code></pre> +<p>into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;Please don&#39;t use any &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt; +</span></code></pre> +<p>You can write this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>`&amp;#8212;` is the decimal-encoded equivalent of `&amp;mdash;`. +</span></code></pre> +<p>to produce:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;p&gt;&lt;code&gt;&amp;amp;#8212;&lt;/code&gt; is the decimal-encoded +</span><span>equivalent of &lt;code&gt;&amp;amp;mdash;&lt;/code&gt;.&lt;/p&gt; +</span></code></pre> +<h3 id="img">Images</h3> +<p>Admittedly, it's fairly difficult to devise a &quot;natural&quot; syntax for +placing images into a plain text document format.</p> +<p>Markdown uses an image syntax that is intended to resemble the syntax +for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p> +<p>Inline image syntax looks like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>![Alt text](/path/to/img.jpg) +</span><span> +</span><span>![Alt text](/path/to/img.jpg &quot;Optional title&quot;) +</span></code></pre> +<p>That is:</p> +<ul> +<li>An exclamation mark: <code>!</code>;</li> +<li>followed by a set of square brackets, containing the <code>alt</code> +attribute text for the image;</li> +<li>followed by a set of parentheses, containing the URL or path to +the image, and an optional <code>title</code> attribute enclosed in double +or single quotes.</li> +</ul> +<p>Reference-style image syntax looks like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>![Alt text][id] +</span></code></pre> +<p>Where &quot;id&quot; is the name of a defined image reference. Image references +are defined using syntax identical to link references:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>[id]: url/to/image &quot;Optional title attribute&quot; +</span></code></pre> +<p>As of this writing, Markdown has no syntax for specifying the +dimensions of an image; if this is important to you, you can simply +use regular HTML <code>&lt;img&gt;</code> tags.</p> +<hr /> +<h2 id="misc">Miscellaneous</h2> +<h3 id="autolink">Automatic Links</h3> +<p>Markdown supports a shortcut style for creating &quot;automatic&quot; links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;http://example.com/&gt; +</span></code></pre> +<p>Markdown will turn this into:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;a href=&quot;http://example.com/&quot;&gt;http://example.com/&lt;/a&gt; +</span></code></pre> +<p>Automatic links for email addresses work similarly, except that +Markdown will also perform a bit of randomized decimal and hex +entity-encoding to help obscure your address from address-harvesting +spambots. For example, Markdown will turn this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;address@example.com&gt; +</span></code></pre> +<p>into something like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>&lt;a href=&quot;&amp;#x6D;&amp;#x61;i&amp;#x6C;&amp;#x74;&amp;#x6F;:&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65; +</span><span>&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111; +</span><span>&amp;#109;&quot;&gt;&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61; +</span><span>&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;&amp;#109;&lt;/a&gt; +</span></code></pre> +<p>which will render in a browser as a clickable link to &quot;address@example.com&quot;.</p> +<p>(This sort of entity-encoding trick will indeed fool many, if not +most, address-harvesting bots, but it definitely won't fool all of +them. It's better than nothing, but an address published in this way +will probably eventually start receiving spam.)</p> +<h3 id="backslash">Backslash Escapes</h3> +<p>Markdown allows you to use backslash escapes to generate literal +characters which would otherwise have special meaning in Markdown's +formatting syntax. For example, if you wanted to surround a word +with literal asterisks (instead of an HTML <code>&lt;em&gt;</code> tag), you can use +backslashes before the asterisks, like this:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>\*literal asterisks\* +</span></code></pre> +<p>Markdown provides backslash escapes for the following characters:</p> +<pre style="background-color:#0f1419;color:#bfbab0;"><code><span>\ backslash +</span><span>` backtick +</span><span>* asterisk +</span><span>_ underscore +</span><span>{} curly braces +</span><span>[] square brackets +</span><span>() parentheses +</span><span># hash mark +</span><span>+ plus sign +</span><span>- minus sign (hyphen) +</span><span>. dot +</span><span>! exclamation mark +</span></code></pre> + + + + diff --git a/audio/elevator/ding.mp3 b/audio/elevator/ding.mp3 new file mode 100644 index 0000000..8ec1c85 Binary files /dev/null and b/audio/elevator/ding.mp3 differ diff --git a/audio/elevator/music.mp3 b/audio/elevator/music.mp3 new file mode 100644 index 0000000..8e76e6b Binary files /dev/null and b/audio/elevator/music.mp3 differ diff --git a/elasticlunr.min.js b/elasticlunr.min.js new file mode 100644 index 0000000..79dad65 --- /dev/null +++ b/elasticlunr.min.js @@ -0,0 +1,10 @@ +/** + * elasticlunr - http://weixsong.github.io + * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.6 + * + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + * MIT Licensed + * @license + */ +!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o + + + + + + + + diff --git a/images/noise_dark.png b/images/noise_dark.png new file mode 100644 index 0000000..69b7441 Binary files /dev/null and b/images/noise_dark.png differ diff --git a/images/noise_light.png b/images/noise_light.png new file mode 100644 index 0000000..bff1f40 Binary files /dev/null and b/images/noise_light.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..e9f44bc --- /dev/null +++ b/index.html @@ -0,0 +1,3 @@ + + Mercury +
Mercury
Modern blog theme

Welcome to my awesome website!

Recent Posts

Math

Markdown Syntax

Recent Projects
/projects/project_1_card_image.png

Project 1

Example description

Project 2

Example description
/projects/project_3_card_image.jpg

Project 3

Example description
John Doe - © 2023
\ No newline at end of file diff --git a/js/count.js b/js/count.js new file mode 100644 index 0000000..7c504bc --- /dev/null +++ b/js/count.js @@ -0,0 +1,270 @@ +// GoatCounter: https://www.goatcounter.com +// This file (and *only* this file) is released under the ISC license: +// https://opensource.org/licenses/ISC +;(function() { + 'use strict'; + + if (window.goatcounter && window.goatcounter.vars) // Compatibility with very old version; do not use. + window.goatcounter = window.goatcounter.vars + else + window.goatcounter = window.goatcounter || {} + + // Load settings from data-goatcounter-settings. + var s = document.querySelector('script[data-goatcounter]') + if (s && s.dataset.goatcounterSettings) { + try { var set = JSON.parse(s.dataset.goatcounterSettings) } + catch (err) { console.error('invalid JSON in data-goatcounter-settings: ' + err) } + for (var k in set) + if (['no_onload', 'no_events', 'allow_local', 'allow_frame', 'path', 'title', 'referrer', 'event'].indexOf(k) > -1) + window.goatcounter[k] = set[k] + } + + var enc = encodeURIComponent + + // Get all data we're going to send off to the counter endpoint. + var get_data = function(vars) { + var data = { + p: (vars.path === undefined ? goatcounter.path : vars.path), + r: (vars.referrer === undefined ? goatcounter.referrer : vars.referrer), + t: (vars.title === undefined ? goatcounter.title : vars.title), + e: !!(vars.event || goatcounter.event), + s: [window.screen.width, window.screen.height, (window.devicePixelRatio || 1)], + b: is_bot(), + q: location.search, + } + + var rcb, pcb, tcb // Save callbacks to apply later. + if (typeof(data.r) === 'function') rcb = data.r + if (typeof(data.t) === 'function') tcb = data.t + if (typeof(data.p) === 'function') pcb = data.p + + if (is_empty(data.r)) data.r = document.referrer + if (is_empty(data.t)) data.t = document.title + if (is_empty(data.p)) data.p = get_path() + + if (rcb) data.r = rcb(data.r) + if (tcb) data.t = tcb(data.t) + if (pcb) data.p = pcb(data.p) + return data + } + + // Check if a value is "empty" for the purpose of get_data(). + var is_empty = function(v) { return v === null || v === undefined || typeof(v) === 'function' } + + // See if this looks like a bot; there is some additional filtering on the + // backend, but these properties can't be fetched from there. + var is_bot = function() { + // Headless browsers are probably a bot. + var w = window, d = document + if (w.callPhantom || w._phantom || w.phantom) + return 150 + if (w.__nightmare) + return 151 + if (d.__selenium_unwrapped || d.__webdriver_evaluate || d.__driver_evaluate) + return 152 + if (navigator.webdriver) + return 153 + return 0 + } + + // Object to urlencoded string, starting with a ?. + var urlencode = function(obj) { + var p = [] + for (var k in obj) + if (obj[k] !== '' && obj[k] !== null && obj[k] !== undefined && obj[k] !== false) + p.push(enc(k) + '=' + enc(obj[k])) + return '?' + p.join('&') + } + + // Show a warning in the console. + var warn = function(msg) { + if (console && 'warn' in console) + console.warn('goatcounter: ' + msg) + } + + // Get the endpoint to send requests to. + var get_endpoint = function() { + var s = document.querySelector('script[data-goatcounter]') + if (s && s.dataset.goatcounter) + return s.dataset.goatcounter + return (goatcounter.endpoint || window.counter) // counter is for compat; don't use. + } + + // Get current path. + var get_path = function() { + var loc = location, + c = document.querySelector('link[rel="canonical"][href]') + if (c) { // May be relative or point to different domain. + var a = document.createElement('a') + a.href = c.href + if (a.hostname.replace(/^www\./, '') === location.hostname.replace(/^www\./, '')) + loc = a + } + return (loc.pathname + loc.search) || '/' + } + + // Run function after DOM is loaded. + var on_load = function(f) { + if (document.body === null) + document.addEventListener('DOMContentLoaded', function() { f() }, false) + else + f() + } + + // Filter some requests that we (probably) don't want to count. + goatcounter.filter = function() { + if ('visibilityState' in document && document.visibilityState === 'prerender') + return 'visibilityState' + if (!goatcounter.allow_frame && location !== parent.location) + return 'frame' + if (!goatcounter.allow_local && location.hostname.match(/(localhost$|^127\.|^10\.|^172\.(1[6-9]|2[0-9]|3[0-1])\.|^192\.168\.|^0\.0\.0\.0$)/)) + return 'localhost' + if (!goatcounter.allow_local && location.protocol === 'file:') + return 'localfile' + if (localStorage && localStorage.getItem('skipgc') === 't') + return 'disabled with #toggle-goatcounter' + return false + } + + // Get URL to send to GoatCounter. + window.goatcounter.url = function(vars) { + var data = get_data(vars || {}) + if (data.p === null) // null from user callback. + return + data.rnd = Math.random().toString(36).substr(2, 5) // Browsers don't always listen to Cache-Control. + + var endpoint = get_endpoint() + if (!endpoint) + return warn('no endpoint found') + + return endpoint + urlencode(data) + } + + // Count a hit. + window.goatcounter.count = function(vars) { + var f = goatcounter.filter() + if (f) + return warn('not counting because of: ' + f) + + var url = goatcounter.url(vars) + if (!url) + return warn('not counting because path callback returned null') + + var img = document.createElement('img') + img.src = url + img.style.position = 'absolute' // Affect layout less. + img.style.bottom = '0px' + img.style.width = '1px' + img.style.height = '1px' + img.loading = 'eager' + img.setAttribute('alt', '') + img.setAttribute('aria-hidden', 'true') + + var rm = function() { if (img && img.parentNode) img.parentNode.removeChild(img) } + img.addEventListener('load', rm, false) + document.body.appendChild(img) + } + + // Get a query parameter. + window.goatcounter.get_query = function(name) { + var s = location.search.substr(1).split('&') + for (var i = 0; i < s.length; i++) + if (s[i].toLowerCase().indexOf(name.toLowerCase() + '=') === 0) + return s[i].substr(name.length + 1) + } + + // Track click events. + window.goatcounter.bind_events = function() { + if (!document.querySelectorAll) // Just in case someone uses an ancient browser. + return + + var send = function(elem) { + return function() { + goatcounter.count({ + event: true, + path: (elem.dataset.goatcounterClick || elem.name || elem.id || ''), + title: (elem.dataset.goatcounterTitle || elem.title || (elem.innerHTML || '').substr(0, 200) || ''), + referrer: (elem.dataset.goatcounterReferrer || elem.dataset.goatcounterReferral || ''), + }) + } + } + + Array.prototype.slice.call(document.querySelectorAll("*[data-goatcounter-click]")).forEach(function(elem) { + if (elem.dataset.goatcounterBound) + return + var f = send(elem) + elem.addEventListener('click', f, false) + elem.addEventListener('auxclick', f, false) // Middle click. + elem.dataset.goatcounterBound = 'true' + }) + } + + // Add a "visitor counter" frame or image. + window.goatcounter.visit_count = function(opt) { + on_load(function() { + opt = opt || {} + opt.type = opt.type || 'html' + opt.append = opt.append || 'body' + opt.path = opt.path || get_path() + opt.attr = opt.attr || {width: '200', height: (opt.no_branding ? '60' : '80')} + + opt.attr['src'] = get_endpoint() + 'er/' + enc(opt.path) + '.' + enc(opt.type) + '?' + if (opt.no_branding) opt.attr['src'] += '&no_branding=1' + if (opt.style) opt.attr['src'] += '&style=' + enc(opt.style) + if (opt.start) opt.attr['src'] += '&start=' + enc(opt.start) + if (opt.end) opt.attr['src'] += '&end=' + enc(opt.end) + + var tag = {png: 'img', svg: 'img', html: 'iframe'}[opt.type] + if (!tag) + return warn('visit_count: unknown type: ' + opt.type) + + if (opt.type === 'html') { + opt.attr['frameborder'] = '0' + opt.attr['scrolling'] = 'no' + } + + var d = document.createElement(tag) + for (var k in opt.attr) + d.setAttribute(k, opt.attr[k]) + + var p = document.querySelector(opt.append) + if (!p) + return warn('visit_count: append not found: ' + opt.append) + p.appendChild(d) + }) + } + + // Make it easy to skip your own views. + if (location.hash === '#toggle-goatcounter') { + if (localStorage.getItem('skipgc') === 't') { + localStorage.removeItem('skipgc', 't') + alert('GoatCounter tracking is now ENABLED in this browser.') + } + else { + localStorage.setItem('skipgc', 't') + alert('GoatCounter tracking is now DISABLED in this browser until ' + location + ' is loaded again.') + } + } + + if (!goatcounter.no_onload) + on_load(function() { + // 1. Page is visible, count request. + // 2. Page is not yet visible; wait until it switches to 'visible' and count. + // See #487 + if (!('visibilityState' in document) || document.visibilityState === 'visible') + goatcounter.count() + else { + var f = function(e) { + if (document.visibilityState !== 'visible') + return + document.removeEventListener('visibilitychange', f) + goatcounter.count() + } + document.addEventListener('visibilitychange', f) + } + + if (!goatcounter.no_events) + goatcounter.bind_events() + }) +})(); + diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..6b3f546 --- /dev/null +++ b/js/main.js @@ -0,0 +1,14 @@ +// Elevator +window.addEventListener('scroll', e => { + const threshold = 300; + document.querySelector('.elevator-button').style.visibility = window.scrollY > threshold ? 'visible' : 'hidden'; + document.querySelector('.elevator-button').style.opacity = window.scrollY > threshold ? '1' : '0'; +}); + +window.onload = function () { + var elevator = new Elevator({ + element: document.querySelector('.elevator-button'), + mainAudio: '/audio/elevator/music.mp3', + endAudio: '/audio/elevator/ding.mp3' + }); +} diff --git a/js/temml/Temml-Local.css b/js/temml/Temml-Local.css new file mode 100644 index 0000000..69fe595 --- /dev/null +++ b/js/temml/Temml-Local.css @@ -0,0 +1,85 @@ +/* +Temml.woff2 is a clone of KaTeX_Script-Regular, except that the code points +have been changed from ASCII to Unicode Mathematical Alphanumeric Symbols Script capitals, +Unicode range 1D49C to 1D4B5. +*/ + +@font-face { + font-family: 'Temml'; + src: url('Temml.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +math { + font-family: "Cambria Math", 'STIXTwoMath-Regular', math; + font-style: normal; + font-weight: normal; + line-height: normal; + font-size-adjust: none; + text-indent: 0; + text-transform: none; + letter-spacing: normal; + word-wrap: normal; + direction: ltr; +} + +math * { + border-color: currentColor; +} + +/* Next line is active in Firefox and Safari. + * Not in Chromium, which recognizes display: "block math" written inline. */ +math.tml-display { display: block; } + +math .mathscr { + font-family: "Temml"; +} + +mo.tml-prime { + font-family: Temml; +} + +/* Prevent f' from overlapping in Chromium */ +mo.prime-pad { + padding-left: 0.08em; +} + +/* Stretch \widetilde in Chromium */ +@supports (not (-webkit-backdrop-filter: blur(1px))) and (not (-moz-appearance: none)) { + .tml-crooked-2 { + transform: scale(2.0, 1.1) + } + .tml-crooked-3 { + transform: scale(3.0, 1.1) + } + .tml-crooked-4 { + transform: scale(4.0, 1.1) + } +} + +/* flex-wrap for line-breaking in Chromium */ +math { + display: inline-flex; + flex-wrap: wrap; + align-items: baseline; +} +math > mrow { + padding: 0.5ex 0ex; +} + +/* Avoid flex-wrap in Firefox */ +@-moz-document url-prefix() { + math { display: inline; } + math > mrow { padding: 0 } +} + +/* AMS environment auto-numbering via CSS counter. */ +.tml-eqn::before { + counter-increment: tmlEqnNo; + content: "(" counter(tmlEqnNo) ")"; +} + +body { + counter-reset: tmlEqnNo; +} diff --git a/js/temml/Temml.woff2 b/js/temml/Temml.woff2 new file mode 100644 index 0000000..fccefda Binary files /dev/null and b/js/temml/Temml.woff2 differ diff --git a/js/temml/auto-render.min.js b/js/temml/auto-render.min.js new file mode 100644 index 0000000..55bcd20 --- /dev/null +++ b/js/temml/auto-render.min.js @@ -0,0 +1 @@ +var renderMathInElement=function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);const r=function(e,t,n){let r=n,a=0;const i=e.length;for(;re.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;n=e.search(l),-1!==n;){n>0&&(i.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));const l=t.findIndex((t=>e.startsWith(t.left)));if(n=r(t[l].right,e,t[l].left.length),-1===n)break;const o=e.slice(0,n+t[l].right.length),s=a.test(o)?o:e.slice(t[l].left.length,n);i.push({type:"math",data:s,rawData:o,display:t[l].display}),e=e.slice(n+t[l].right.length)}return""!==e&&i.push({type:"text",data:e}),i}(e,t.delimiters);if(1===i.length&&"text"===i[0].type)return null;const l=document.createDocumentFragment();for(let e=0;e-1===e.indexOf(" "+t+" ")))&&l(r,t)}}};return function(e,t){if(!e)throw new Error("No element provided to render");const r={};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},l(e,r),n.default.postProcess(e)}}(temml); \ No newline at end of file diff --git a/js/temml/temml.min.js b/js/temml/temml.min.js new file mode 100644 index 0000000..3b9b2f8 --- /dev/null +++ b/js/temml/temml.min.js @@ -0,0 +1 @@ +var temml=function(){"use strict";class e{constructor(t,r){let n,o=" "+t;const s=r&&r.loc;if(s&&s.start<=s.end){const e=s.lexer.input;n=s.start;const t=s.end;n===e.length?o+=" at end of input: ":o+=" at position "+(n+1)+": ";const r=e.slice(n,t).replace(/[^]/g,"$&̲");let a,i;a=n>15?"…"+e.slice(n-15,n):e.slice(0,n),i=t+15":">","<":"<",'"':""","'":"'"},n=/[&><"']/g;const o=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?o(e.body[0]):e:"font"===e.type?o(e.body):e};var s={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(n,(e=>r[e]))},hyphenate:function(e){return e.replace(t,"-$1").toLowerCase()},getBaseElem:o,isCharacterBox:function(e){const t=o(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^\s*([^\\/#]*?)(?::|�*58|�*3a)/i.exec(e);return null!=t?t[1]:"_relative"},round:function(e){return+e.toFixed(4)}};class a{constructor(e){e=e||{},this.displayMode=s.deflt(e.displayMode,!1),this.annotate=s.deflt(e.annotate,!1),this.leqno=s.deflt(e.leqno,!1),this.throwOnError=s.deflt(e.throwOnError,!1),this.errorColor=s.deflt(e.errorColor,"#b22222"),this.macros=e.macros||{},this.wrap=s.deflt(e.wrap,"tex"),this.xml=s.deflt(e.xml,!1),this.colorIsTextColor=s.deflt(e.colorIsTextColor,!1),this.strict=s.deflt(e.strict,!1),this.trust=s.deflt(e.trust,!1),this.maxSize=void 0===e.maxSize?[1/0,1/0]:Array.isArray(e.maxSize)?e.maxSize:[1/0,1/0],this.maxExpand=Math.max(0,s.deflt(e.maxExpand,1e3))}isTrusted(e){e.url&&!e.protocol&&(e.protocol=s.protocolFromUrl(e.url));const t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)}}const i={},l={};function c({type:e,names:t,props:r,handler:n,mathmlBuilder:o}){const s={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:n};for(let e=0;ee.toText())).join("")}}const h=function(e){return e.filter((e=>e)).join(" ")},g=function(e,t){this.classes=e||[],this.attributes={},this.style=t||{}},f=function(e){const t=document.createElement(e);t.className=h(this.classes);for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t.style[e]=this.style[e]);for(const e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(let e=0;e`,t};class y{constructor(e,t,r){g.call(this,e,r),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}toNode(){return f.call(this,"span")}toMarkup(){return b.call(this,"span")}}class w{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return s.escape(this.text)}}class x{constructor(e,t,r){this.alt=t,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){const e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(const t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);return e}toMarkup(){let e=`${this.alt}0&&(e.className=h(this.classes));for(const t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(let t=0;t0&&(e+=` class="${s.escape(h(this.classes))}"`);let t="";for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t+=`${s.hyphenate(e)}:${this.style[e]};`);t&&(e+=` style="${t}"`),e+=">";for(let t=0;t",e}toText(){return this.children.map((e=>e.toText())).join("")}}class v{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return s.escape(this.toText())}toText(){return this.text}}const A=e=>{let t;return 1===e.length&&"mrow"===e[0].type?(t=e.pop(),t.type="mstyle"):t=new k("mstyle",e),t};var N={MathNode:k,TextNode:v,newDocumentFragment:function(e){return new d(e)}};const T=e=>{let t=0;if(e.body)for(const r of e.body)t+=T(r);else if("supsub"===e.type)t+=T(e.base),e.sub&&(t+=.7*T(e.sub)),e.sup&&(t+=.7*T(e.sup));else if("mathord"===e.type||"textord"===e.type)for(const r of e.text.split("")){const e=r.codePointAt(0);t+=96{const t=S(e.label);if(O.includes(e.label)){const r=T(e.base);1","\\gt",!0),I(F,V,"∈","\\in",!0),I(F,V,"∉","\\notin",!0),I(F,V,"","\\@not"),I(F,V,"⊂","\\subset",!0),I(F,V,"⊃","\\supset",!0),I(F,V,"⊆","\\subseteq",!0),I(F,V,"⊇","\\supseteq",!0),I(F,V,"⊈","\\nsubseteq",!0),I(F,V,"⊈","\\nsubseteqq"),I(F,V,"⊉","\\nsupseteq",!0),I(F,V,"⊉","\\nsupseteqq"),I(F,V,"⊨","\\models"),I(F,V,"←","\\leftarrow",!0),I(F,V,"≤","\\le"),I(F,V,"≤","\\leq",!0),I(F,V,"<","\\lt",!0),I(F,V,"→","\\rightarrow",!0),I(F,V,"→","\\to"),I(F,V,"≱","\\ngeq",!0),I(F,V,"≱","\\ngeqq"),I(F,V,"≱","\\ngeqslant"),I(F,V,"≰","\\nleq",!0),I(F,V,"≰","\\nleqq"),I(F,V,"≰","\\nleqslant"),I(F,V,"⫫","\\Perp",!0),I(F,_," ","\\ "),I(F,_," ","\\space"),I(F,_," ","\\nobreakspace"),I(L,_," ","\\ "),I(L,_," "," "),I(L,_," ","\\space"),I(L,_," ","\\nobreakspace"),I(F,_,null,"\\nobreak"),I(F,_,null,"\\allowbreak"),I(F,H,",",","),I(L,H,":",":"),I(F,H,";",";"),I(F,G,"⊼","\\barwedge",!0),I(F,G,"⊻","\\veebar",!0),I(F,G,"⊙","\\odot",!0),I(F,G,"⊕︎","\\oplus"),I(F,G,"⊗","\\otimes",!0),I(F,W,"∂","\\partial",!0),I(F,G,"⊘","\\oslash",!0),I(F,G,"⊚","\\circledcirc",!0),I(F,G,"⊡","\\boxdot",!0),I(F,G,"△","\\bigtriangleup"),I(F,G,"▽","\\bigtriangledown"),I(F,G,"†","\\dagger"),I(F,G,"⋄","\\diamond"),I(F,G,"⋆","\\star"),I(F,G,"◃","\\triangleleft"),I(F,G,"▹","\\triangleright"),I(F,U,"{","\\{"),I(L,W,"{","\\{"),I(L,W,"{","\\textbraceleft"),I(F,D,"}","\\}"),I(L,W,"}","\\}"),I(L,W,"}","\\textbraceright"),I(F,U,"{","\\lbrace"),I(F,D,"}","\\rbrace"),I(F,U,"[","\\lbrack",!0),I(L,W,"[","\\lbrack",!0),I(F,D,"]","\\rbrack",!0),I(L,W,"]","\\rbrack",!0),I(F,U,"(","\\lparen",!0),I(F,D,")","\\rparen",!0),I(L,W,"<","\\textless",!0),I(L,W,">","\\textgreater",!0),I(F,U,"⌊","\\lfloor",!0),I(F,D,"⌋","\\rfloor",!0),I(F,U,"⌈","\\lceil",!0),I(F,D,"⌉","\\rceil",!0),I(F,W,"\\","\\backslash"),I(F,W,"|","|"),I(F,W,"|","\\vert"),I(L,W,"|","\\textbar",!0),I(F,W,"‖","\\|"),I(F,W,"‖","\\Vert"),I(L,W,"‖","\\textbardbl"),I(L,W,"~","\\textasciitilde"),I(L,W,"\\","\\textbackslash"),I(L,W,"^","\\textasciicircum"),I(F,V,"↑","\\uparrow",!0),I(F,V,"⇑","\\Uparrow",!0),I(F,V,"↓","\\downarrow",!0),I(F,V,"⇓","\\Downarrow",!0),I(F,V,"↕","\\updownarrow",!0),I(F,V,"⇕","\\Updownarrow",!0),I(F,j,"∐","\\coprod"),I(F,j,"⋁","\\bigvee"),I(F,j,"⋀","\\bigwedge"),I(F,j,"⨄","\\biguplus"),I(F,j,"⋂","\\bigcap"),I(F,j,"⋃","\\bigcup"),I(F,j,"∫","\\int"),I(F,j,"∫","\\intop"),I(F,j,"∬","\\iint"),I(F,j,"∭","\\iiint"),I(F,j,"∏","\\prod"),I(F,j,"∑","\\sum"),I(F,j,"⨂","\\bigotimes"),I(F,j,"⨁","\\bigoplus"),I(F,j,"⨀","\\bigodot"),I(F,j,"∮","\\oint"),I(F,j,"∯","\\oiint"),I(F,j,"∰","\\oiiint"),I(F,j,"∱","\\intclockwise"),I(F,j,"∲","\\varointclockwise"),I(F,j,"⨌","\\iiiint"),I(F,j,"⨍","\\intbar"),I(F,j,"⨎","\\intBar"),I(F,j,"⨏","\\fint"),I(F,j,"⨒","\\rppolint"),I(F,j,"⨓","\\scpolint"),I(F,j,"⨕","\\pointint"),I(F,j,"⨖","\\sqint"),I(F,j,"⨗","\\intlarhk"),I(F,j,"⨘","\\intx"),I(F,j,"⨙","\\intcap"),I(F,j,"⨚","\\intcup"),I(F,j,"⨅","\\bigsqcap"),I(F,j,"⨆","\\bigsqcup"),I(F,j,"∫","\\smallint"),I(L,P,"…","\\textellipsis"),I(F,P,"…","\\mathellipsis"),I(L,P,"…","\\ldots",!0),I(F,P,"…","\\ldots",!0),I(F,P,"⋰","\\iddots",!0),I(F,P,"⋯","\\@cdots",!0),I(F,P,"⋱","\\ddots",!0),I(F,W,"⋮","\\varvdots"),I(F,$,"ˊ","\\acute"),I(F,$,"`","\\grave"),I(F,$,"¨","\\ddot"),I(F,$,"…","\\dddot"),I(F,$,"….","\\ddddot"),I(F,$,"~","\\tilde"),I(F,$,"‾","\\bar"),I(F,$,"˘","\\breve"),I(F,$,"ˇ","\\check"),I(F,$,"^","\\hat"),I(F,$,"→","\\vec"),I(F,$,"˙","\\dot"),I(F,$,"˚","\\mathring"),I(F,R,"ı","\\imath",!0),I(F,R,"ȷ","\\jmath",!0),I(F,W,"ı","ı"),I(F,W,"ȷ","ȷ"),I(L,W,"ı","\\i",!0),I(L,W,"ȷ","\\j",!0),I(L,W,"ß","\\ss",!0),I(L,W,"æ","\\ae",!0),I(L,W,"œ","\\oe",!0),I(L,W,"ø","\\o",!0),I(F,R,"ø","\\o",!0),I(L,W,"Æ","\\AE",!0),I(L,W,"Œ","\\OE",!0),I(L,W,"Ø","\\O",!0),I(F,R,"Ø","\\O",!0),I(L,$,"ˊ","\\'"),I(L,$,"ˋ","\\`"),I(L,$,"ˆ","\\^"),I(L,$,"˜","\\~"),I(L,$,"ˉ","\\="),I(L,$,"˘","\\u"),I(L,$,"˙","\\."),I(L,$,"¸","\\c"),I(L,$,"˚","\\r"),I(L,$,"ˇ","\\v"),I(L,$,"¨",'\\"'),I(L,$,"˝","\\H"),I(F,$,"ˊ","\\'"),I(F,$,"ˋ","\\`"),I(F,$,"ˆ","\\^"),I(F,$,"˜","\\~"),I(F,$,"ˉ","\\="),I(F,$,"˘","\\u"),I(F,$,"˙","\\."),I(F,$,"¸","\\c"),I(F,$,"˚","\\r"),I(F,$,"ˇ","\\v"),I(F,$,"¨",'\\"'),I(F,$,"˝","\\H");const X={"--":!0,"---":!0,"``":!0,"''":!0};I(L,W,"–","--",!0),I(L,W,"–","\\textendash"),I(L,W,"—","---",!0),I(L,W,"—","\\textemdash"),I(L,W,"‘","`",!0),I(L,W,"‘","\\textquoteleft"),I(L,W,"’","'",!0),I(L,W,"’","\\textquoteright"),I(L,W,"“","``",!0),I(L,W,"“","\\textquotedblleft"),I(L,W,"”","''",!0),I(L,W,"”","\\textquotedblright"),I(F,W,"°","\\degree",!0),I(L,W,"°","\\degree"),I(L,W,"°","\\textdegree",!0),I(F,W,"£","\\pounds"),I(F,W,"£","\\mathsterling",!0),I(L,W,"£","\\pounds"),I(L,W,"£","\\textsterling",!0),I(F,W,"✠","\\maltese"),I(L,W,"✠","\\maltese"),I(F,W,"€","\\euro",!0),I(L,W,"€","\\euro",!0),I(L,W,"€","\\texteuro"),I(F,W,"©","\\copyright",!0),I(L,W,"©","\\textcopyright"),I(F,W,"𝛤","\\varGamma"),I(F,W,"𝛥","\\varDelta"),I(F,W,"𝛩","\\varTheta"),I(F,W,"𝛬","\\varLambda"),I(F,W,"𝛯","\\varXi"),I(F,W,"𝛱","\\varPi"),I(F,W,"𝛴","\\varSigma"),I(F,W,"𝛶","\\varUpsilon"),I(F,W,"𝛷","\\varPhi"),I(F,W,"𝛹","\\varPsi"),I(F,W,"𝛺","\\varOmega"),I(L,W,"𝛤","\\varGamma"),I(L,W,"𝛥","\\varDelta"),I(L,W,"𝛩","\\varTheta"),I(L,W,"𝛬","\\varLambda"),I(L,W,"𝛯","\\varXi"),I(L,W,"𝛱","\\varPi"),I(L,W,"𝛴","\\varSigma"),I(L,W,"𝛶","\\varUpsilon"),I(L,W,"𝛷","\\varPhi"),I(L,W,"𝛹","\\varPsi"),I(L,W,"𝛺","\\varOmega");const Z='0123456789/@."';for(let e=0;e{if("mrow"!==e.type)return e;if(0===e.children.length)return e;if(!e.children[0].attributes||"mtext"!==e.children[0].type)return e;const t=e.children[0].attributes.mathvariant||"",r=new N.MathNode("mtext",[new N.TextNode(e.children[0].children[0].text)]);for(let n=1;n0&&" "===r.children[0].text.charAt(n-1)&&(r.children[0].text=r.children[0].text.slice(0,-1)+" "),r},re=/^[0-9]$/,ne=function(e){return 1!==e.length||e[0]instanceof d?new N.MathNode("mrow",e):e[0]},oe=e=>"atom"===e.type&&"rel"===e.family||"mclass"===e.type&&"mrel"===e.mclass,se=function(e,t,r){if(1===e.length){const n=ie(e[0],t);return r&&n instanceof k&&"mo"===n.type&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}(e=>{if(e.length<2)return;const t=[];let r=!1;for(let n=0;n0;r--)t[r-1].end===t[r].start-2&&("atom"===(n=e[t[r].start-1]).type&&","===n.text||"textord"===n.type&&"."===n.text)&&(t[r-1].end=t[r].end,t.splice(r,1));var n;for(let r=t.length-1;r>=0;r--){for(let n=t[r].start+1;n<=t[r].end;n++)e[t[r].start].text+=e[n].text;e.splice(t[r].start+1,t[r].end-t[r].start)}})(e);const n=[];for(let r=0;r0&&oe(e[r])&&oe(e[r-1])&&o.setAttribute("lspace","0em"),n.push(o)}return n},ae=function(e,t,r){return ne(se(e,t,r))},ie=function(t,r){if(!t)return new N.MathNode("mrow");if(l[t.type]){return l[t.type](t,r)}throw new e("Got group of unknown type: '"+t.type+"'")},le=e=>new N.MathNode("mtd",[],[],{padding:"0",width:"50%"});function ce(e,t,r,n){let o=null;1===e.length&&"tag"===e[0].type&&(o=e[0].tag,e=e[0].body);const s=se(e,r),a=n.displayMode||n.annotate?"none":n.wrap,i=0===s.length?null:s[0];let l=1===s.length&&null===o&&i instanceof k?s[0]:function(e,t,r){const n=[];let o=[],s=[],a=0,i=0,l=0;for(;i0&&o.push(new N.MathNode("mrow",s)),o.push(r),s=[];const e=new N.MathNode("mtd",o);e.style.textAlign="left",n.push(new N.MathNode("mtr",[e])),o=[],i+=1}else{if(s.push(r),r.type&&"mo"===r.type&&1===r.children.length){const n=r.children[0].text;if("([{⌊⌈⟨⟮⎰⟦⦃".indexOf(n)>-1)l+=1;else if(")]}⌋⌉⟩⟯⎱⟦⦄".indexOf(n)>-1)l-=1;else if(0===l&&"="===t&&"="===n){if(a+=1,a>1){s.pop();const e=new N.MathNode("mrow",s);o.push(e),s=[r]}}else if(0===l&&"tex"===t){const t=i0){const e=new N.MathNode("mrow",s);o.push(e)}if(n.length>0){const e=new N.MathNode("mtd",o);e.style.textAlign="left";const t=new N.MathNode("mtr",[e]);n.push(t);const s=new N.MathNode("mtable",n);return r||(s.setAttribute("columnalign","left"),s.setAttribute("rowspacing","0em")),s}return N.newDocumentFragment(o)}(s,a,n.displayMode);if(o&&(l=((e,t,r,n)=>{t=ae(t[0].body,r),(t=te(t)).classes.push("tml-tag"),e=new N.MathNode("mtd",[e]);const o=[le(),e,le()];n?(o[0].children.push(t),o[0].style.textAlign="-webkit-left"):(o[2].children.push(t),o[2].style.textAlign="-webkit-right");const s=new N.MathNode("mtr",o,["tml-tageqn"]),a=new N.MathNode("mtable",[s]);return a.style.width="100%",a.setAttribute("displaystyle","true"),a})(l,o,r,n.leqno)),n.annotate){const e=new N.MathNode("annotation",[new N.TextNode(t)]);e.setAttribute("encoding","application/x-tex"),l=new N.MathNode("semantics",[l,e])}const c=new N.MathNode("math",[l]);return n.xml&&c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n.displayMode&&(c.setAttribute("display","block"),c.style.display="block math",c.classes=["tml-display"]),c}const me=(e,t)=>{const r=e.isStretchy?M(e):new N.MathNode("mo",[ee(e.label,e.mode)]);"\\vec"===e.label?r.style.transform="scale(0.75) translate(10%, 30%)":(r.style.mathStyle="normal",r.style.mathDepth="0"),e.isStretchy||r.setAttribute("stretchy","false");return new N.MathNode("\\c"===e.label?"munder":"mover",[ie(e.base,t),r])},ue=new Set(["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"]);c({type:"accent",names:["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\overparen","\\widecheck","\\widehat","\\wideparen","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{const r=u(t[0]),n=!ue.has(e.funcName);return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,base:r}},mathmlBuilder:me}),c({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\c","\\u","\\.",'\\"',"\\r","\\H","\\v"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{const r=u(t[0]),n=e.parser.mode;return"math"===n&&e.parser.settings.strict&&console.log(`Temml parse error: Command ${e.funcName} is invalid in math mode.`),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,base:r}},mathmlBuilder:me}),c({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underparen","\\utilde"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>{const n=r[0];return{type:"accentUnder",mode:e.mode,label:t,base:n}},mathmlBuilder:(e,t)=>{const r=M(e);r.style["math-depth"]=0;return new N.MathNode("munder",[ie(e.base,t),r])}});const pe={pt:800/803,pc:9600/803,dd:1238/1157*800/803,cc:12.792133216944668,nd:685/642*800/803,nc:1370/107*800/803,sp:1/65536*800/803,mm:25.4/72,cm:2.54/72,in:1/72,px:96/72},de=["em","ex","mu","pt","mm","cm","in","px","bp","pc","dd","cc","nd","nc","sp"],he=function(e){return"string"!=typeof e&&(e=e.unit),de.indexOf(e)>-1},ge=e=>[1,.7,.5][Math.max(e-1,0)],fe=function(t,r){let n=t.number;if(r.maxSize[0]<0&&n>0)return{number:0,unit:"em"};const o=t.unit;switch(o){case"mm":case"cm":case"in":case"px":return n*pe[o]>r.maxSize[1]?{number:r.maxSize[1],unit:"pt"}:{number:n,unit:o};case"em":case"ex":return"ex"===o&&(n*=.431),n=Math.min(n/ge(r.level),r.maxSize[0]),{number:s.round(n),unit:"em"};case"bp":return n>r.maxSize[1]&&(n=r.maxSize[1]),{number:n,unit:"pt"};case"pt":case"pc":case"dd":case"cc":case"nd":case"nc":case"sp":return n=Math.min(n*pe[o],r.maxSize[1]),{number:s.round(n),unit:"pt"};case"mu":return n=Math.min(n/18,r.maxSize[0]),{number:s.round(n),unit:"em"};default:throw new e("Invalid unit: '"+o+"'")}},be=e=>{const t=new N.MathNode("mspace");return t.setAttribute("width",e+"em"),t},ye=(e,t=.3,r=0)=>{if(null==e&&0===r)return be(t);const n=e?[e]:[];return 0!==t&&n.unshift(be(t)),r>0&&n.push(be(r)),new N.MathNode("mrow",n)},we=(e,t)=>Number(e)/ge(t),xe=(e,t,r,n)=>{const o=B(e),s="eq"===e.slice(1,3),a="x"===e.charAt(1)?"1.75":"cd"===e.slice(2,4)?"3.0":s?"1.0":"2.0";o.setAttribute("lspace","0"),o.setAttribute("rspace",s?"0.5em":"0");const i=n.withLevel(n.level<2?2:3),l=we(a,i.level),c=we(a,3),m=ye(null,l.toFixed(4),0),u=ye(null,c.toFixed(4),0),p=we(s?0:.3,i.level).toFixed(4);let d,h;const g=t&&t.body&&(t.body.body||t.body.length>0);if(g){let e=ie(t,i);e=ye(e,p,p),d=new N.MathNode("mover",[e,u])}const f=r&&r.body&&(r.body.body||r.body.length>0);if(f){let e=ie(r,i);e=ye(e,p,p),h=new N.MathNode("munder",[e,u])}let b;return b=g||f?g&&f?new N.MathNode("munderover",[o,h,d]):g?new N.MathNode("mover",[o,d]):new N.MathNode("munder",[o,h]):new N.MathNode("mover",[o,m]),"3.0"===a&&(b.style.height="1em"),b.setAttribute("accent","false"),b};c({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\yields","\\yieldsLeft","\\mesomerism","\\longrightharpoonup","\\longleftharpoondown","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler:({parser:e,funcName:t},r,n)=>({type:"xArrow",mode:e.mode,name:t,body:r[0],below:n[0]}),mathmlBuilder(e,t){const r=[xe(e.name,e.body,e.below,t)];return r.unshift(be(.2778)),r.push(be(.2778)),new N.MathNode("mrow",r)}});const ke={"\\xtofrom":["\\xrightarrow","\\xleftarrow"],"\\xleftrightharpoons":["\\xleftharpoonup","\\xrightharpoondown"],"\\xrightleftharpoons":["\\xrightharpoonup","\\xleftharpoondown"],"\\yieldsLeftRight":["\\yields","\\yieldsLeft"],"\\equilibrium":["\\longrightharpoonup","\\longleftharpoondown"],"\\equilibriumRight":["\\longrightharpoonup","\\eqleftharpoondown"],"\\equilibriumLeft":["\\eqrightharpoonup","\\longleftharpoondown"]};function ve(e,t){if(!e||e.type!==t)throw new Error(`Expected node of type ${t}, but got `+(e?`node of type ${e.type}`:String(e)));return e}function Ae(e){const t=Ne(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?`node of type ${e.type}`:String(e)));return t}function Ne(e){return e&&("atom"===e.type||Object.prototype.hasOwnProperty.call(z,e.type))?e:null}c({type:"stackedArrow",names:["\\xtofrom","\\xleftrightharpoons","\\xrightleftharpoons","\\yieldsLeftRight","\\equilibrium","\\equilibriumRight","\\equilibriumLeft"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e,funcName:t},r,n){const o=r[0]?{type:"hphantom",mode:e.mode,body:r[0]}:null,s=n[0]?{type:"hphantom",mode:e.mode,body:n[0]}:null;return{type:"stackedArrow",mode:e.mode,name:t,body:r[0],upperArrowBelow:s,lowerArrowBody:o,below:n[0]}},mathmlBuilder(e,t){const r=ke[e.name][0],n=ke[e.name][1],o=xe(r,e.body,e.upperArrowBelow,t),s=xe(n,e.lowerArrowBody,e.below,t);let a;const i=new N.MathNode("mpadded",[o]);if(i.setAttribute("voffset","0.3em"),i.setAttribute("height","+0.3em"),i.setAttribute("depth","-0.3em"),"\\equilibriumLeft"===e.name){const e=new N.MathNode("mpadded",[s]);e.setAttribute("width","0.5em"),a=new N.MathNode("mpadded",[be(.2778),e,i,be(.2778)])}else i.setAttribute("width","\\equilibriumRight"===e.name?"0.5em":"0"),a=new N.MathNode("mpadded",[be(.2778),i,s,be(.2778)]);return a.setAttribute("voffset","-0.18em"),a.setAttribute("height","-0.18em"),a.setAttribute("depth","+0.18em"),a}});const Te={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},qe=e=>"textord"===e.type&&"@"===e.text;function Se(e,t,r){const n=Te[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{const e={type:"atom",text:n,mode:"math",family:"rel"},o={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[e],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[o],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{const e={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[e],[])}default:return{type:"textord",text:" ",mode:"math"}}}c({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"cdlabel",mode:e.mode,side:t.slice(4),label:r[0]}),mathmlBuilder(e,t){let r=new N.MathNode("mrow",[ie(e.label,t)]);return r=new N.MathNode("mpadded",[r]),r.setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new N.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),c({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler:({parser:e},t)=>({type:"cdlabelparent",mode:e.mode,fragment:t[0]}),mathmlBuilder:(e,t)=>new N.MathNode("mrow",[ie(e.fragment,t)])}),c({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler({parser:t,token:r},n){const o=ve(n[0],"ordgroup").body;let s="";for(let e=0;e{let t=e.toString(16);return 1===t.length&&(t="0"+t),t},Ie=JSON.parse('{\n "Apricot": "#ffb484",\n "Aquamarine": "#08b4bc",\n "Bittersweet": "#c84c14",\n "blue": "#0000FF",\n "Blue": "#303494",\n "BlueGreen": "#08b4bc",\n "BlueViolet": "#503c94",\n "BrickRed": "#b8341c",\n "brown": "#BF8040",\n "Brown": "#802404",\n "BurntOrange": "#f8941c",\n "CadetBlue": "#78749c",\n "CarnationPink": "#f884b4",\n "Cerulean": "#08a4e4",\n "CornflowerBlue": "#40ace4",\n "cyan": "#00FFFF",\n "Cyan": "#08acec",\n "Dandelion": "#ffbc44",\n "darkgray": "#404040",\n "DarkOrchid": "#a8548c",\n "Emerald": "#08ac9c",\n "ForestGreen": "#089c54",\n "Fuchsia": "#90348c",\n "Goldenrod": "#ffdc44",\n "gray": "#808080",\n "Gray": "#98949c",\n "green": "#00FF00",\n "Green": "#08a44c",\n "GreenYellow": "#e0e474",\n "JungleGreen": "#08ac9c",\n "Lavender": "#f89cc4",\n "lightgray": "#c0c0c0",\n "lime": "#BFFF00",\n "LimeGreen": "#90c43c",\n "magenta": "#FF00FF",\n "Magenta": "#f0048c",\n "Mahogany": "#b0341c",\n "Maroon": "#b03434",\n "Melon": "#f89c7c",\n "MidnightBlue": "#086494",\n "Mulberry": "#b03c94",\n "NavyBlue": "#086cbc",\n "olive": "#7F7F00",\n "OliveGreen": "#407c34",\n "orange": "#FF8000",\n "Orange": "#f8843c",\n "OrangeRed": "#f0145c",\n "Orchid": "#b074ac",\n "Peach": "#f8945c",\n "Periwinkle": "#8074bc",\n "PineGreen": "#088c74",\n "pink": "#ff7f7f",\n "Plum": "#98248c",\n "ProcessBlue": "#08b4ec",\n "purple": "#BF0040",\n "Purple": "#a0449c",\n "RawSienna": "#983c04",\n "red": "#ff0000",\n "Red": "#f01c24",\n "RedOrange": "#f86434",\n "RedViolet": "#a0246c",\n "Rhodamine": "#f0549c",\n "Royallue": "#0874bc",\n "RoyalPurple": "#683c9c",\n "RubineRed": "#f0047c",\n "Salmon": "#f8948c",\n "SeaGreen": "#30bc9c",\n "Sepia": "#701404",\n "SkyBlue": "#48c4dc",\n "SpringGreen": "#c8dc64",\n "Tan": "#e09c74",\n "teal": "#007F7F",\n "TealBlue": "#08acb4",\n "Thistle": "#d884b4",\n "Turquoise": "#08b4cc",\n "violet": "#800080",\n "Violet": "#60449c",\n "VioletRed": "#f054a4",\n "WildStrawberry": "#f0246c",\n "yellow": "#FFFF00",\n "Yellow": "#fff404",\n "YellowGreen": "#98cc6c",\n "YellowOrange": "#ffa41c"\n}'),Fe=(t,r)=>{let n="";if("HTML"===t){if(!Oe.test(r))throw new e("Invalid HTML input.");n=r}else if("RGB"===t){if(!Me.test(r))throw new e("Invalid RGB input.");r.split(",").map((e=>{n+=Ee(Number(e.trim()))}))}else{if(!Ce.test(r))throw new e("Invalid rbg input.");r.split(",").map((t=>{const r=Number(t.trim());if(r>1)throw new e("Color rgb input must be < 1.");n+=Ee(Number((255*r).toFixed(0)))}))}return"#"!==n.charAt(0)&&(n="#"+n),n},Le=(t,r,n)=>{const o=`\\\\color@${t}`;if(!Be.exec(t))throw new e("Invalid color: '"+t+"'",n);return ze.test(t)?"#"+t:("#"===t.charAt(0)||(r.has(o)?t=r.get(o).tokens[0].text:Ie[t]&&(t=Ie[t])),t)},$e=(e,t)=>{let r=se(e.body,t.withColor(e.color));return r=r.map((t=>(t.style.color=e.color,t))),N.newDocumentFragment(r)};c({type:"color",names:["\\textcolor"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","original"]},handler({parser:e,token:t},r,n){const o=n[0]&&ve(n[0],"raw").string;let s="";if(o){const e=ve(r[0],"raw").string;s=Fe(o,e)}else s=Le(ve(r[0],"raw").string,e.gullet.macros,t);const a=r[1];return{type:"color",mode:e.mode,color:s,body:p(a)}},mathmlBuilder:$e}),c({type:"color",names:["\\color"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw"]},handler({parser:e,token:t},r,n){const o=n[0]&&ve(n[0],"raw").string;let s="";if(o){const e=ve(r[0],"raw").string;s=Fe(o,e)}else s=Le(ve(r[0],"raw").string,e.gullet.macros,t);e.gullet.macros.set("\\current@color",s);const a=e.parseExpression(!0,"\\color");return{type:"color",mode:e.mode,color:s,body:a}},mathmlBuilder:$e}),c({type:"color",names:["\\definecolor"],props:{numArgs:3,allowedInText:!0,argTypes:["raw","raw","raw"]},handler({parser:t,funcName:r,token:n},o){const s=ve(o[0],"raw").string;if(!/^[A-Za-z]+$/.test(s))throw new e("Color name must be latin letters.",n);const a=ve(o[1],"raw").string;if(!["HTML","RGB","rgb"].includes(a))throw new e("Color model must be HTML, RGB, or rgb.",n);const i=ve(o[2],"raw").string,l=Fe(a,i);return t.gullet.macros.set(`\\\\color@${s}`,{tokens:[{text:l}],numArgs:0}),{type:"internal",mode:t.mode}}}),c({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler({parser:e},t,r){const n="["===e.gullet.future().text?e.parseSizeGroup(!0):null,o=!e.settings.displayMode;return{type:"cr",mode:e.mode,newLine:o,size:n&&ve(n,"size").value}},mathmlBuilder(e,t){const r=new N.MathNode("mo");if(e.newLine&&(r.setAttribute("linebreak","newline"),e.size)){const n=fe(e.size,t);r.setAttribute("height",n.number+n.unit)}return r}});const Ge={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},De=t=>{const r=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(r))throw new e("Expected a control sequence",t);return r},Pe=(e,t,r,n)=>{let o=e.gullet.macros.get(r.text);null==o&&(r.noexpand=!0,o={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,o,n)};c({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler({parser:t,funcName:r}){t.consumeSpaces();const n=t.fetch();if(Ge[n.text])return"\\global"!==r&&"\\\\globallong"!==r||(n.text=Ge[n.text]),ve(t.parseFunction(),"internal");throw new e("Invalid token after macro prefix",n)}}),c({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n=t.gullet.popToken();const o=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(o))throw new e("Expected a control sequence",n);let s,a=0;const i=[[]];for(;"{"!==t.gullet.future().text;)if(n=t.gullet.popToken(),"#"===n.text){if("{"===t.gullet.future().text){s=t.gullet.future(),i[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new e(`Invalid argument number "${n.text}"`);if(parseInt(n.text)!==a+1)throw new e(`Argument number "${n.text}" out of order`);a++,i.push([])}else{if("EOF"===n.text)throw new e("Expected a macro definition");i[a].push(n.text)}let{tokens:l}=t.gullet.consumeArg();return s&&l.unshift(s),"\\edef"!==r&&"\\xdef"!==r||(l=t.gullet.expandTokens(l),l.reverse()),t.gullet.macros.set(o,{tokens:l,numArgs:a,delimiters:i},r===Ge[r]),{type:"internal",mode:t.mode}}}),c({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=De(e.gullet.popToken());e.gullet.consumeSpaces();const n=(e=>{let t=e.gullet.popToken();return"="===t.text&&(t=e.gullet.popToken()," "===t.text&&(t=e.gullet.popToken())),t})(e);return Pe(e,r,n,"\\\\globallet"===t),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=De(e.gullet.popToken()),n=e.gullet.popToken(),o=e.gullet.popToken();return Pe(e,r,o,"\\\\globalfuture"===t),e.gullet.pushToken(o),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\newcommand","\\renewcommand","\\providecommand"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n="";const o=t.gullet.popToken();"{"===o.text?(n=De(t.gullet.popToken()),t.gullet.popToken()):n=De(o);const s=t.gullet.isDefined(n);if(s&&"\\newcommand"===r)throw new e(`\\newcommand{${n}} attempting to redefine ${n}; use \\renewcommand`);if(!s&&"\\renewcommand"===r)throw new e(`\\renewcommand{${n}} when command ${n} does not yet exist; use \\newcommand`);let a=0;if("["===t.gullet.future().text){let r=t.gullet.popToken();if(r=t.gullet.popToken(),!/^[0-9]$/.test(r.text))throw new e(`Invalid number of arguments: "${r.text}"`);if(a=parseInt(r.text),r=t.gullet.popToken(),"]"!==r.text)throw new e(`Invalid argument "${r.text}"`)}const{tokens:i}=t.gullet.consumeArg();return t.gullet.macros.set(n,{tokens:i,numArgs:a},!t.settings.strict),{type:"internal",mode:t.mode}}});const Re={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},je=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","\\llbracket","\\rrbracket","⟦","⟦","\\lBrace","\\rBrace","⦃","⦄","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."],Ue=["}","\\left","\\middle","\\right"],He=e=>e.length>0&&(je.includes(e)||Re[e]||Ue.includes(e)),Ve=[0,1.2,1.8,2.4,3];function _e(t,r){"ordgroup"===t.type&&1===t.body.length&&"⁄"===t.body[0].text&&(t={type:"textord",text:"/",mode:"math"});const n=Ne(t);if(n&&je.includes(n.text))return["<","\\lt"].includes(n.text)&&(n.text="⟨"),[">","\\gt"].includes(n.text)&&(n.text="⟩"),"/"===n.text&&(n.text="∕"),"\\backslash"===n.text&&(n.text="∖"),n;throw new e(n?`Invalid delimiter '${n.text}' after '${r.funcName}'`:`Invalid delimiter type '${t.type}'`,t)}c({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{const r=_e(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Re[e.funcName].size,mclass:Re[e.funcName].mclass,delim:r.text}},mathmlBuilder:e=>{const t=[];"."===e.delim&&(e.delim=""),t.push(ee(e.delim,e.mode));const r=new N.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),("∖"===e.delim||e.delim.indexOf("arrow")>-1)&&r.setAttribute("stretchy","true"),r.setAttribute("symmetric","true"),r.setAttribute("minsize",Ve[e.size]+"em"),r.setAttribute("maxsize",Ve[e.size]+"em"),r}}),c({type:"leftright-right",names:["\\right"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=t.parser.gullet.macros.get("\\current@color");if(n&&"string"!=typeof n)throw new e("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:_e(r[0],t).text,color:n}}}),c({type:"leftright",names:["\\left"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{const r=_e(t[0],e),n=e.parser;++n.leftrightDepth;const o=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);const s=ve(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:o,left:r.text,right:s.delim,rightColor:s.color}},mathmlBuilder:(e,t)=>{!function(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}(e);const r=se(e.body,t);"."===e.left&&(e.left="");const n=new N.MathNode("mo",[ee(e.left,e.mode)]);n.setAttribute("fence","true"),n.setAttribute("form","prefix"),("∖"===e.left||e.left.indexOf("arrow")>-1)&&n.setAttribute("stretchy","true"),r.unshift(n),"."===e.right&&(e.right="");const o=new N.MathNode("mo",[ee(e.right,e.mode)]);return o.setAttribute("fence","true"),o.setAttribute("form","postfix"),("∖"===e.right||e.right.indexOf("arrow")>-1)&&o.setAttribute("stretchy","true"),e.rightColor&&(o.style.color=e.rightColor),r.push(o),ne(r)}}),c({type:"middle",names:["\\middle"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=_e(r[0],t);if(!t.parser.leftrightDepth)throw new e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},mathmlBuilder:(e,t)=>{const r=ee(e.delim,e.mode),n=new N.MathNode("mo",[r]);return n.setAttribute("fence","true"),e.delim.indexOf("arrow")>-1&&n.setAttribute("stretchy","true"),n.setAttribute("form","prefix"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});const We=e=>{const t=new N.MathNode("mspace");return t.setAttribute("width","3pt"),t},Xe=(e,t)=>{let r;switch(r=e.label.indexOf("colorbox")>-1||"\\boxed"===e.label?new N.MathNode("mrow",[We(),ie(e.body,t),We()]):new N.MathNode("mrow",[ie(e.body,t)]),e.label){case"\\overline":r.style.padding="0.1em 0 0 0",r.style.borderTop="0.065em solid";break;case"\\underline":r.style.padding="0 0 0.1em 0",r.style.borderBottom="0.065em solid";break;case"\\cancel":r.style.background="linear-gradient(to top left,\nrgba(0,0,0,0) 0%,\nrgba(0,0,0,0) calc(50% - 0.06em),\nrgba(0,0,0,1) 50%,\nrgba(0,0,0,0) calc(50% + 0.06em),\nrgba(0,0,0,0) 100%);";break;case"\\bcancel":r.style.background="linear-gradient(to top right,\nrgba(0,0,0,0) 0%,\nrgba(0,0,0,0) calc(50% - 0.06em),\nrgba(0,0,0,1) 50%,\nrgba(0,0,0,0) calc(50% + 0.06em),\nrgba(0,0,0,0) 100%);";break;case"\\angl":r.style.padding="0.03889em 0.03889em 0 0.03889em",r.style.borderTop="0.049em solid",r.style.borderRight="0.049em solid",r.style.marginRight="0.03889em";break;case"\\sout":r.style["text-decoration"]="line-through 0.08em solid";break;case"\\boxed":r.style={padding:"3pt 0 3pt 0",border:"1px solid"},r.setAttribute("scriptlevel","0"),r.setAttribute("displaystyle","true");break;case"\\fbox":r.style={padding:"3pt",border:"1px solid"};break;case"\\fcolorbox":case"\\colorbox":{const t={padding:"3pt 0 3pt 0"};"\\fcolorbox"===e.label&&(t.border="0.06em solid "+String(e.borderColor)),r.style=t;break}case"\\xcancel":r.style.background="linear-gradient(to top left,\nrgba(0,0,0,0) 0%,\nrgba(0,0,0,0) calc(50% - 0.06em),\nrgba(0,0,0,1) 50%,\nrgba(0,0,0,0) calc(50% + 0.06em),\nrgba(0,0,0,0) 100%),\nlinear-gradient(to top right,\nrgba(0,0,0,0) 0%,\nrgba(0,0,0,0) calc(50% - 0.06em),\nrgba(0,0,0,1) 50%,\nrgba(0,0,0,0) calc(50% + 0.06em),\nrgba(0,0,0,0) 100%);"}return e.backgroundColor&&r.setAttribute("mathbackground",e.backgroundColor),r};c({type:"enclose",names:["\\colorbox"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","text"]},handler({parser:e,funcName:t},r,n){const o=n[0]&&ve(n[0],"raw").string;let s="";if(o){const e=ve(r[0],"raw").string;s=Fe(o,e)}else s=Le(ve(r[0],"raw").string,e.gullet.macros);const a=r[1];return{type:"enclose",mode:e.mode,label:t,backgroundColor:s,body:a}},mathmlBuilder:Xe}),c({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","raw","text"]},handler({parser:e,funcName:t},r,n){const o=n[0]&&ve(n[0],"raw").string;let s,a="";if(o){const e=ve(r[0],"raw").string,t=ve(r[0],"raw").string;a=Fe(o,e),s=Fe(o,t)}else a=Le(ve(r[0],"raw").string,e.gullet.macros),s=Le(ve(r[1],"raw").string,e.gullet.macros);const i=r[2];return{type:"enclose",mode:e.mode,label:t,backgroundColor:s,borderColor:a,body:i}},mathmlBuilder:Xe}),c({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:({parser:e},t)=>({type:"enclose",mode:e.mode,label:"\\fbox",body:t[0]})}),c({type:"enclose",names:["\\angl","\\cancel","\\bcancel","\\xcancel","\\sout","\\overline","\\boxed"],props:{numArgs:1},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Xe}),c({type:"enclose",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Xe});const Ze={};function Ye({type:e,names:t,props:r,handler:n,mathmlBuilder:o}){const s={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n};for(let e=0;e{if(!t.parser.settings.displayMode)throw new e(`{${t.envName}} can be used only in display mode.`)},nt=(e,t,r)=>{let n;const o=e.tags.shift();if(o){if(!o.body)return n=new N.MathNode("mtext",[],[]),n;n=ae(o.body,t),n.classes=["tml-tag"]}else{if(e.envClasses.includes("multline")&&(e.leqno&&0!==r||!e.leqno&&r!==e.body.length-1))return n=new N.MathNode("mtext",[],[]),n;n=new N.MathNode("mtext",[],["tml-eqn"])}return n};function ot(t,{cols:r,envClasses:n,addEqnNum:o,singleRow:s,emptySingleRow:a,maxNumCols:i,leqno:l},c){t.gullet.beginGroup(),s||t.gullet.macros.set("\\cr","\\\\\\relax"),o&&(t.gullet.macros.set("\\tag","\\env@tag{\\text{#1}}"),t.gullet.macros.set("\\notag","\\env@notag"),t.gullet.macros.set("\\nonumber","\\env@notag")),t.gullet.beginGroup();let m=[];const u=[m],p=[],d=[];let h;const g=[];for(g.push(tt(t));;){let r=t.parseExpression(!1,s?"\\end":"\\\\");if(o&&!h)for(let e=0;e1||!a)&&u.pop(),g.length{const t=new N.MathNode("mtd",[]);return t.style={padding:"0",width:"50%"},e.envClasses.includes("multline")&&(t.style.width="7.5%"),t},lt=function(e,t){const r=[],n=e.body.length,o=e.hLinesBeforeRow;for(let s=0;s0&&(2===o[0].length?c.children.forEach((e=>{e.style.borderTop="0.15em double"})):c.children.forEach((e=>{e.style.borderTop=o[0][0]?"0.06em dashed":"0.06em solid"}))),o[s+1].length>0&&(2===o[s+1].length?c.children.forEach((e=>{e.style.borderBottom="0.15em double"})):c.children.forEach((e=>{e.style.borderBottom=o[s+1][0]?"0.06em dashed":"0.06em solid"}))),r.push(c)}if(e.envClasses.length>0){const t=e.envClasses.includes("jot")?"0.7":e.envClasses.includes("small")?"0.35":"0.5",n=e.envClasses.includes("abut")||e.envClasses.includes("cases")?"0":e.envClasses.includes("small")?"0.1389":e.envClasses.includes("cd")?"0.25":"0.4",o=0===r.length?0:r[0].children.length,s=(t,r)=>0===t&&0===r||t===o-1&&1===r?"0":"align"!==e.envClasses[0]?n:1===r?"0":e.addEqnNum?t%2?"1":"0":t%2?"0":"1";for(let e=0;e1&&e.envClasses.includes("cases")&&(n.children[1].style.padding=n.children[1].style.padding.replace(/0em$/,"1em")),e.envClasses.includes("cases")||e.envClasses.includes("subarray"))for(const e of n.children)e.style.textAlign="-webkit-left"}}else for(let e=0;e0){const t=e.cols;let r=!1,n=0,o=t.length;for(;"separator"===t[n].type;)n+=1;for(;"separator"===t[o-1].type;)o-=1;if("separator"===t[0].type){const e="separator"===t[1].type?"0.15em double":"|"===t[0].separator?"0.06em solid ":"0.06em dashed ";for(const t of s.children)t.children[0].style.borderLeft=e}let i=e.addEqnNum?0:-1;for(let e=n;e0?a:"center ")+"right "),a&&s.setAttribute("columnalign",a.trim()),e.envClasses.includes("small")&&(s=new N.MathNode("mstyle",[s]),s.setAttribute("scriptlevel","1")),s},ct=function(t,r){-1===t.envName.indexOf("ed")&&rt(t);const n=[],o=ot(t.parser,{cols:n,addEqnNum:"align"===t.envName||"alignat"===t.envName,emptySingleRow:!0,envClasses:["abut","jot"],maxNumCols:"split"===t.envName?2:void 0,leqno:t.parser.settings.leqno},"display");let s,a=0;const i=t.envName.indexOf("at")>-1;if(r[0]&&i){let t="";for(let e=0;e1)throw new e("{subarray} can contain only one column");let o={cols:n,envClasses:["small"]};if(o=ot(t.parser,o,"script"),o.body.length>0&&o.body[0].length>1)throw new e("{subarray} can contain only one column");return o},mathmlBuilder:lt}),Ye({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){const t=ot(e.parser,{cols:[],envClasses:["cases"]},st(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},mathmlBuilder:lt}),Ye({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:ct,mathmlBuilder:lt}),Ye({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:ct,mathmlBuilder:lt}),Ye({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){"gathered"!==e.envName&&rt(e);const t={cols:[],envClasses:["abut","jot"],addEqnNum:"gather"===e.envName,emptySingleRow:!0,leqno:e.parser.settings.leqno};return ot(e.parser,t,"display")},mathmlBuilder:lt}),Ye({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){rt(e);const t={addEqnNum:"equation"===e.envName,emptySingleRow:!0,singleRow:!0,maxNumCols:1,envClasses:["align"],leqno:e.parser.settings.leqno};return ot(e.parser,t,"display")},mathmlBuilder:lt}),Ye({type:"array",names:["multline","multline*"],props:{numArgs:0},handler(e){rt(e);const t={addEqnNum:"multline"===e.envName,maxNumCols:1,envClasses:["jot","multline"],leqno:e.parser.settings.leqno};return ot(e.parser,t,"display")},mathmlBuilder:lt}),Ye({type:"array",names:["CD"],props:{numArgs:0},handler:t=>(rt(t),function(t){const r=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){r.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();const n=t.fetch().text;if("&"!==n&&"\\\\"!==n){if("\\end"===n){0===r[r.length-1].length&&r.pop();break}throw new e("Expected \\\\ or \\cr or \\end",t.nextToken)}t.consume()}let n=[];const o=[n];for(let i=0;i-1);else{if(!("<>AV".indexOf(o)>-1))throw new e('Expected one of "<>AV=|." after @.');for(let t=0;t<2;t++){let n=!0;for(let c=r+1;c({type:"envTag",mode:e.mode,body:t[0]}),mathmlBuilder:(e,t)=>new N.MathNode("mrow")}),c({type:"noTag",names:["\\env@notag"],props:{numArgs:0},handler:({parser:e})=>({type:"noTag",mode:e.mode}),mathmlBuilder:(e,t)=>new N.MathNode("mrow")});const ut=(e,t)=>{const r=e.font,n=t.withFont(r),o=ie(e.body,n);if(0===o.children.length)return o;if("boldsymbol"===r&&["mo","mpadded"].includes(o.type))return o.style.fontWeight="bold",o;let s="mo"===o.children[0].type;for(let e=1;e{const n=u(r[0]);let o=t;return o in pt&&(o=pt[o]),{type:"font",mode:e.mode,font:o.slice(1),body:n}},mathmlBuilder:ut}),c({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:({parser:e,funcName:t,breakOnTokenText:r},n)=>{const{mode:o}=e,s=e.parseExpression(!0,r);return{type:"font",mode:o,font:`math${t.slice(1)}`,body:{type:"ordgroup",mode:e.mode,body:s}}},mathmlBuilder:ut});const dt=["display","text","script","scriptscript"],ht={auto:-1,display:0,text:0,script:1,scriptscript:2},gt=(e,t)=>{const r="auto"===e.scriptLevel?t.incrementLevel():"display"===e.scriptLevel?t.withLevel(Je):"text"===e.scriptLevel?t.withLevel(Qe):t.withLevel(et);let n=new N.MathNode("mfrac",[ie(e.numer,r),ie(e.denom,r)]);if(e.hasBarLine){if(e.barSize){const r=fe(e.barSize,t);n.setAttribute("linethickness",r.number+r.unit)}}else n.setAttribute("linethickness","0px");if(null!=e.leftDelim||null!=e.rightDelim){const t=[];if(null!=e.leftDelim){const r=new N.MathNode("mo",[new N.TextNode(e.leftDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}if(t.push(n),null!=e.rightDelim){const r=new N.MathNode("mo",[new N.TextNode(e.rightDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}n=ne(t)}return"auto"!==e.scriptLevel&&(n=new N.MathNode("mstyle",[n]),n.setAttribute("displaystyle",String("display"===e.scriptLevel)),n.setAttribute("scriptlevel",ht[e.scriptLevel])),n};c({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=r[1];let s=!1,a=null,i=null,l="auto";switch(t){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a="(",i=")";break;case"\\\\bracefrac":a="\\{",i="\\}";break;case"\\\\brackfrac":a="[",i="]";break;default:throw new Error("Unrecognized genfrac command")}switch(t){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text"}return{type:"genfrac",mode:e.mode,continued:!1,numer:n,denom:o,hasBarLine:s,leftDelim:a,rightDelim:i,scriptLevel:l,barSize:null}},mathmlBuilder:gt}),c({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=r[1];return{type:"genfrac",mode:e.mode,continued:!0,numer:n,denom:o,hasBarLine:!0,leftDelim:null,rightDelim:null,scriptLevel:"display",barSize:null}}}),c({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler({parser:e,funcName:t,token:r}){let n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:r}}});const ft=function(e){let t=null;return e.length>0&&(t=e,t="."===t?null:t),t};c({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler({parser:e},t){const r=t[4],n=t[5],o=u(t[0]),s="atom"===o.type&&"open"===o.family?ft(o.text):null,a=u(t[1]),i="atom"===a.type&&"close"===a.family?ft(a.text):null,l=ve(t[2],"size");let c,m=null;l.isBlank?c=!0:(m=l.value,c=m.number>0);let p="auto",d=t[3];if("ordgroup"===d.type){if(d.body.length>0){const e=ve(d.body[0],"textord");p=dt[Number(e.text)]}}else d=ve(d,"textord"),p=dt[Number(d.text)];return{type:"genfrac",mode:e.mode,numer:r,denom:n,continued:!1,hasBarLine:c,barSize:m,leftDelim:s,rightDelim:i,scriptLevel:p}},mathmlBuilder:gt}),c({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:({parser:e,funcName:t,token:r},n)=>({type:"infix",mode:e.mode,replaceWith:"\\\\abovefrac",barSize:ve(n[0],"size").value,token:r})}),c({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(ve(r[1],"infix").barSize),s=r[2],a=o.number>0;return{type:"genfrac",mode:e.mode,numer:n,denom:s,continued:!1,hasBarLine:a,barSize:o,leftDelim:null,rightDelim:null,scriptLevel:"auto"}},mathmlBuilder:gt});c({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"horizBrace",mode:e.mode,label:t,isOver:/^\\over/.test(t),base:r[0]}),mathmlBuilder:(e,t)=>{const r=B(e.label);return r.style["math-depth"]=0,new N.MathNode(e.isOver?"mover":"munder",[ie(e.base,t),r])}}),c({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const o=n[1],s=ve(n[0],"url").url;if(!t.settings.isTrusted({command:"\\href",url:s}))throw new e('Function "\\href" is not trusted',r);return{type:"href",mode:t.mode,href:s,body:p(o)}},mathmlBuilder:(e,t)=>{let r=ae(e.body,t);return r instanceof k||(r=new k("mrow",[r])),r.setAttribute("href",e.href),r}}),c({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const o=ve(n[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:o}))throw new e('Function "\\url" is not trusted',r);const s=[];for(let e=0;e{const s=ve(o[0],"raw").string,a=o[1];if(t.settings.strict)throw new e(`Function "${r}" is disabled in strict mode`,n);let i;const l={};switch(r){case"\\class":l.class=s,i={command:"\\class",class:s};break;case"\\id":l.id=s,i={command:"\\id",id:s};break;case"\\style":l.style=s,i={command:"\\style",style:s};break;case"\\data":{const t=s.split(",");for(let r=0;r{const r=ae(e.body,t),n=[];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/)),r.classes=n;for(const t in e.attributes)"class"!==t&&Object.prototype.hasOwnProperty.call(e.attributes,t)&&r.setAttribute(t,e.attributes[t]);return r}});const bt=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};{const r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new e("Invalid size: '"+t+"' in \\includegraphics");const n={number:+(r[1]+r[2]),unit:r[3]};if(!he(n))throw new e("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n}};c({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:({parser:t,token:r},n,o)=>{let s={number:0,unit:"em"},a={number:.9,unit:"em"},i={number:0,unit:"em"},l="";if(o[0]){const t=ve(o[0],"raw").string.split(",");for(let r=0;r{const r=fe(e.height,t),n={number:0,unit:"em"};e.totalheight.number>0&&e.totalheight.unit===r.unit&&e.totalheight.number>r.number&&(n.number=e.totalheight.number-r.number,n.unit=r.unit);let o=0;e.width.number>0&&(o=fe(e.width,t));const s={height:r.number+n.number+"em"};o.number>0&&(s.width=o.number+o.unit),n.number>0&&(s.verticalAlign=-n.number+n.unit);const a=new x(e.src,e.alt,s);return a.height=r,a.depth=n,new N.MathNode("mtext",[a])}}),c({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler({parser:t,funcName:r,token:n},o){const s=ve(o[0],"size");if(t.settings.strict){const o="m"===r[1],a="mu"===s.value.unit;if(o){if(!a)throw new e(`LaTeX's ${r} supports only mu units, not ${s.value.unit} units`,n);if("math"!==t.mode)throw new e(`LaTeX's ${r} works only in math mode`,n)}else if(a)throw new e(`LaTeX's ${r} doesn't support mu units`,n)}return{type:"kern",mode:t.mode,dimension:s.value}},mathmlBuilder(e,t){const r=fe(e.dimension,t),n="em"===r.unit?yt(r.number):"";if("text"===e.mode&&n.length>0){const e=new N.TextNode(n);return new N.MathNode("mtext",[e])}{const e=new N.MathNode("mspace");return e.setAttribute("width",r.number+r.unit),r.number<0&&(e.style.marginLeft=r.number+r.unit),e}}});const yt=function(e){return e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?"  ":""},wt=/[^A-Za-z_0-9-]/g;c({type:"label",names:["\\label"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e},t)=>({type:"label",mode:e.mode,string:t[0].string.replace(wt,"")}),mathmlBuilder(e,t){const r=new N.MathNode("mrow",[],["tml-label"]);return e.string.length>0&&r.setAttribute("id",e.string),r}});const xt=["\\clap","\\llap","\\rlap"];c({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap","\\clap","\\llap","\\rlap"],props:{numArgs:1,allowedInText:!0},handler:({parser:t,funcName:r,token:n},o)=>{if(xt.includes(r)){if(t.settings.strict&&"text"!==t.mode)throw new e(`{${r}} can be used only in text mode.\n Try \\math${r.slice(1)}`,n);r=r.slice(1)}else r=r.slice(5);const s=o[0];return{type:"lap",mode:t.mode,alignment:r,body:s}},mathmlBuilder:(e,t)=>{let r;if("llap"===e.alignment){const n=se(p(e.body),t),o=new N.MathNode("mphantom",n);r=new N.MathNode("mpadded",[o]),r.setAttribute("width","0px")}const n=ie(e.body,t);let o;if("llap"===e.alignment?(n.style.position="absolute",n.style.right="0",n.style.bottom="0",o=new N.MathNode("mpadded",[r,n])):o=new N.MathNode("mpadded",[n]),"rlap"===e.alignment)e.body.body.length>0&&"genfrac"===e.body.body[0].type&&o.setAttribute("lspace","0.16667em");else{const t="llap"===e.alignment?"-1":"-0.5";o.setAttribute("lspace",t+"width"),"llap"===e.alignment?o.style.position="relative":(o.style.display="flex",o.style.justifyContent="center")}return o.setAttribute("width","0px"),o}}),c({type:"ordgroup",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler({funcName:e,parser:t},r){const n=t.mode;t.switchMode("math");const o="\\("===e?"\\)":"$",s=t.parseExpression(!1,o);return t.expect(o),t.switchMode(n),{type:"ordgroup",mode:t.mode,body:s}}}),c({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,r){throw new e(`Mismatched ${t.funcName}`,r)}});c({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:({parser:e},t)=>({type:"mathchoice",mode:e.mode,display:p(t[0]),text:p(t[1]),script:p(t[2]),scriptscript:p(t[3])}),mathmlBuilder:(e,t)=>{const r=((e,t)=>{switch(t.level){case Ke:return e.display;case Je:return e.text;case Qe:return e.script;case et:return e.scriptscript;default:return e.text}})(e,t);return ae(r,t)}});const kt=["text","textord","mathord","atom"],vt=e=>{const t=new N.MathNode("mspace");return t.setAttribute("width",e+"em"),t};function At(e,t){let r;const n=se(e.body,t);if("minner"===e.mclass)r=new N.MathNode("mpadded",n);else if("mord"===e.mclass)e.isCharacterBox||"mathord"===n[0].type?(r=n[0],r.type="mi"):r=new N.MathNode("mi",n);else{r=new N.MathNode("mrow",n),e.mustPromote?(r=n[0],r.type="mo",e.isCharacterBox&&e.body[0].text&&/[A-Za-z]/.test(e.body[0].text)&&r.setAttribute("mathvariant","italic")):r=new N.MathNode("mrow",n);const o=t.level<2;"mrow"===r.type?o&&("mbin"===e.mclass?(r.children.unshift(vt(.2222)),r.children.push(vt(.2222))):"mrel"===e.mclass?(r.children.unshift(vt(.2778)),r.children.push(vt(.2778))):"mpunct"===e.mclass?r.children.push(vt(.1667)):"minner"===e.mclass&&(r.children.unshift(vt(.0556)),r.children.push(vt(.0556)))):"mbin"===e.mclass?(r.attributes.lspace=o?"0.2222em":"0",r.attributes.rspace=o?"0.2222em":"0"):"mrel"===e.mclass?(r.attributes.lspace=o?"0.2778em":"0",r.attributes.rspace=o?"0.2778em":"0"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace=o?"0.1667em":"0"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&o&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em"),"mopen"!==e.mclass&&"mclose"!==e.mclass&&(delete r.attributes.stretchy,delete r.attributes.form)}return r}c({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler({parser:e,funcName:t},r){const n=r[0],o=s.isCharacterBox(n);let a=!0;const i={type:"mathord",text:"",mode:e.mode},l=n.body?n.body:[n];for(const t of l){if(!kt.includes(t.type)){a=!1;break}E[e.mode][t.text]?i.text+=E[e.mode][t.text].replace:t.text?i.text+=t.text:t.body&&t.body.map((e=>{i.text+=e.text}))}return{type:"mclass",mode:e.mode,mclass:"m"+t.slice(5),body:p(a?i:n),isCharacterBox:o,mustPromote:a}},mathmlBuilder:At});const Nt=e=>{const t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};c({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:({parser:e},t)=>({type:"mclass",mode:e.mode,mclass:Nt(t[0]),body:p(t[1]),isCharacterBox:s.isCharacterBox(t[1])})}),c({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler({parser:e,funcName:t},r){const n=r[1],o=r[0],s={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,stack:!0,suppressBaseShift:"\\stackrel"!==t,body:p(n)};return{type:"supsub",mode:o.mode,base:s,sup:"\\underset"===t?null:o,sub:"\\underset"===t?o:null}},mathmlBuilder:At});const Tt=(e,t,r)=>{if(!e)return r;const n=ie(e,t);return"mrow"===n.type&&0===n.children.length?r:n};c({type:"multiscript",names:["\\sideset","\\pres@cript"],props:{numArgs:3},handler({parser:t,funcName:r,token:n},o){if(0===o[2].body.length)throw new e(r+"cannot parse an empty base.");const s=o[2].body[0];if(t.settings.strict&&"\\sideset"===r&&!s.symbol)throw new e("The base of \\sideset must be a big operator. Try \\prescript.");if(o[0].body.length>0&&"supsub"!==o[0].body[0].type||o[1].body.length>0&&"supsub"!==o[1].body[0].type)throw new e("\\sideset can parse only subscripts and superscripts in its first two arguments",n);const a=o[0].body.length>0?o[0].body[0]:null,i=o[1].body.length>0?o[1].body[0]:null;return a||i?a?{type:"multiscript",mode:t.mode,isSideset:"\\sideset"===r,prescripts:a,postscripts:i,base:s}:{type:"styling",mode:t.mode,scriptLevel:"text",body:[{type:"supsub",mode:t.mode,base:s,sup:i.sup,sub:i.sub}]}:s},mathmlBuilder(e,t){const r=ie(e.base,t),n=new N.MathNode("mprescripts"),o=new N.MathNode("none");let s=[];const a=Tt(e.prescripts.sub,t,o),i=Tt(e.prescripts.sup,t,o);if(e.isSideset&&(a.setAttribute("style","text-align: left;"),i.setAttribute("style","text-align: left;")),e.postscripts){s=[r,Tt(e.postscripts.sub,t,o),Tt(e.postscripts.sup,t,o),n,a,i]}else s=[r,n,a,i];return new N.MathNode("mmultiscripts",s)}}),c({type:"not",names:["\\not"],props:{numArgs:1,primitive:!0,allowedInText:!1},handler({parser:e},t){const r=s.isCharacterBox(t[0]);let n;if(r)n=p(t[0]),"\\"===n[0].text.charAt(0)&&(n[0].text=E.math[n[0].text].replace),n[0].text=n[0].text.slice(0,1)+"̸"+n[0].text.slice(1);else{n=[{type:"textord",mode:"math",text:"̸"},{type:"kern",mode:"math",dimension:{number:-.6,unit:"em"}},t[0]]}return{type:"not",mode:e.mode,body:n,isCharacterBox:r}},mathmlBuilder(e,t){if(e.isCharacterBox){return se(e.body,t)[0]}return ae(e.body,t,!0)}});const qt=["textord","mathord","atom"],St=["\\smallint"],Ot=["textord","mathord","ordgroup","close","leftright"],Bt=(e,t)=>{let r;if(e.symbol)r=new k("mo",[ee(e.name,e.mode)]),St.includes(e.name)?r.setAttribute("largeop","false"):r.setAttribute("movablelimits","false");else if(e.body)r=new k("mo",se(e.body,t));else if(r=new k("mi",[new v(e.name.slice(1))]),!e.parentIsSupSub){const t=[r,new k("mo",[ee("⁡","text")])];if(e.needsLeadingSpace){const e=new k("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new k("mspace");e.setAttribute("width","0.1667em"),t.push(e)}r=new k("mrow",t)}return r},Mt={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨅":"\\bigsqcap","⨆":"\\bigsqcup"};c({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcap","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:({parser:e,funcName:t},r)=>{let n=t;return 1===n.length&&(n=Mt[n]),{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!0,stack:!1,name:n}},mathmlBuilder:Bt}),c({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:({parser:e},t)=>{const r=t[0],n=r.body?r.body:[r],o=1===n.length&&qt.includes(n[0].type);return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:o,stack:!1,name:o?n[0].text:null,body:o?null:p(r)}},mathmlBuilder:Bt});const Ct={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint","∱":"\\intclockwise","∲":"\\varointclockwise","⨌":"\\iiiint","⨍":"\\intbar","⨎":"\\intBar","⨏":"\\fint","⨒":"\\rppolint","⨓":"\\scpolint","⨕":"\\pointint","⨖":"\\sqint","⨗":"\\intlarhk","⨘":"\\intx","⨙":"\\intcap","⨚":"\\intcup"};c({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\sgn","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:He(n),needsLeadingSpace:r.length>0&&Ot.includes(r),name:t}},mathmlBuilder:Bt}),c({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:He(n),needsLeadingSpace:r.length>0&&Ot.includes(r),name:t}},mathmlBuilder:Bt}),c({type:"op",names:["\\int","\\iint","\\iiint","\\iiiint","\\oint","\\oiint","\\oiiint","\\intclockwise","\\varointclockwise","\\intbar","\\intBar","\\fint","\\rppolint","\\scpolint","\\pointint","\\sqint","\\intlarhk","\\intx","\\intcap","\\intcup","∫","∬","∭","∮","∯","∰","∱","∲","⨌","⨍","⨎","⨏","⨒","⨓","⨕","⨖","⨗","⨘","⨙","⨚"],props:{numArgs:0},handler({parser:e,funcName:t}){let r=t;return 1===r.length&&(r=Ct[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,stack:!1,name:r}},mathmlBuilder:Bt});const zt={};function Et(e,t){zt[e]=t}c({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],o=e.prevAtomType,s=e.gullet.future().text;return{type:"operatorname",mode:e.mode,body:p(n),alwaysHandleSupSub:"\\operatornamewithlimits"===t,limits:!1,parentIsSupSub:!1,isFollowedByDelimiter:He(s),needsLeadingSpace:o.length>0&&Ot.includes(o)}},mathmlBuilder:(e,t)=>{let r,n=se(e.body,t.withFont("mathrm")),o=!0;for(let e=0;ee.toText())).join("");n=[new N.TextNode(e)]}else if(1===n.length&&["mover","munder"].includes(n[0].type)&&("mi"===n[0].children[0].type||"mtext"===n[0].children[0].type)){if(n[0].children[0].type="mi",e.parentIsSupSub)return new N.MathNode("mrow",n);{const e=new N.MathNode("mo",[ee("⁡","text")]);return N.newDocumentFragment([n[0],e])}}if(o?(r=new N.MathNode("mi",n),1===n[0].text.length&&r.setAttribute("mathvariant","normal")):r=new N.MathNode("mrow",n),!e.parentIsSupSub){const t=[r,new N.MathNode("mo",[ee("⁡","text")])];if(e.needsLeadingSpace){const e=new N.MathNode("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new N.MathNode("mspace");e.setAttribute("width","0.1667em"),t.push(e)}return N.newDocumentFragment(t)}return r}}),Et("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),m({type:"ordgroup",mathmlBuilder:(e,t)=>ae(e.body,t,!0)}),c({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"phantom",mode:e.mode,body:p(r)}},mathmlBuilder:(e,t)=>{const r=se(e.body,t);return new N.MathNode("mphantom",r)}}),c({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"hphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=se(p(e.body),t),n=new N.MathNode("mphantom",r),o=new N.MathNode("mpadded",[n]);return o.setAttribute("height","0px"),o.setAttribute("depth","0px"),o}}),c({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"vphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=se(p(e.body),t),n=new N.MathNode("mphantom",r),o=new N.MathNode("mpadded",[n]);return o.setAttribute("width","0px"),o}}),c({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>({type:"pmb",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=se(e.body,t),n=A(r);return n.setAttribute("style","font-weight:bold"),n}});const It=(e,t)=>{const r=t.withLevel(Je),n=new N.MathNode("mpadded",[ie(e.body,r)]),o=fe(e.dy,t);return n.setAttribute("voffset",o.number+o.unit),o.number>0?n.style.padding=o.number+o.unit+" 0 0 0":n.style.padding="0 0 "+Math.abs(o.number)+o.unit+" 0",n};c({type:"raise",names:["\\raise","\\lower"],props:{numArgs:2,argTypes:["size","primitive"],primitive:!0},handler({parser:e,funcName:t},r){const n=ve(r[0],"size").value;"\\lower"===t&&(n.number*=-1);const o=r[1];return{type:"raise",mode:e.mode,dy:n,body:o}},mathmlBuilder:It}),c({type:"raise",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler({parser:e,funcName:t},r){const n=ve(r[0],"size").value,o=r[1];return{type:"raise",mode:e.mode,dy:n,body:o}},mathmlBuilder:It}),c({type:"ref",names:["\\ref","\\eqref"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e,funcName:t},r)=>({type:"ref",mode:e.mode,funcName:t,string:r[0].string.replace(wt,"")}),mathmlBuilder(e,t){const r="\\ref"===e.funcName?["tml-ref"]:["tml-ref","tml-eqref"],n=new N.MathNode("mtext",[new N.TextNode("")],r);return n.setAttribute("href","#"+e.string),n}}),c({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler:({parser:e})=>({type:"internal",mode:e.mode})}),c({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler({parser:e},t,r){const n=r[0],o=ve(t[0],"size"),s=ve(t[1],"size");return{type:"rule",mode:e.mode,shift:n&&ve(n,"size").value,width:o.value,height:s.value}},mathmlBuilder(e,t){const r=fe(e.width,t),n=fe(e.height,t),o=e.shift?fe(e.shift,t):{number:0,unit:"em"},s=t.color&&t.getColor()||"black",a=new N.MathNode("mspace");if(r.number>0&&n.number>0&&a.setAttribute("mathbackground",s),a.setAttribute("width",r.number+r.unit),a.setAttribute("height",n.number+n.unit),0===o.number)return a;const i=new N.MathNode("mpadded",[a]);return o.number>=0?i.setAttribute("height","+"+o.number+o.unit):(i.setAttribute("height",o.number+o.unit),i.setAttribute("depth","+"+-o.number+o.unit)),i.setAttribute("voffset",o.number+o.unit),i}});const Ft={"\\tiny":.5,"\\sixptsize":.6,"\\Tiny":.6,"\\scriptsize":.7,"\\footnotesize":.8,"\\small":.9,"\\normalsize":1,"\\large":1.2,"\\Large":1.44,"\\LARGE":1.728,"\\huge":2.074,"\\Huge":2.488};c({type:"sizing",names:["\\tiny","\\sixptsize","\\Tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],props:{numArgs:0,allowedInText:!0},handler:({breakOnTokenText:e,funcName:t,parser:r},n)=>{r.settings.strict&&"math"===r.mode&&console.log(`Temml strict-mode warning: Command ${t} is invalid in math mode.`);const o=r.parseExpression(!1,e);return{type:"sizing",mode:r.mode,funcName:t,body:o}},mathmlBuilder:(e,t)=>{const r=t.withFontSize(Ft[e.funcName]),n=se(e.body,r),o=A(n),s=(Ft[e.funcName]/t.fontSize).toFixed(4);return o.setAttribute("mathsize",s+"em"),o}}),c({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:({parser:e},t,r)=>{let n=!1,o=!1;const s=r[0]&&ve(r[0],"ordgroup");if(s){let e="";for(let t=0;t{const r=new N.MathNode("mpadded",[ie(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),c({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e},t,r){const n=r[0],o=t[0];return{type:"sqrt",mode:e.mode,body:o,index:n}},mathmlBuilder(e,t){const{body:r,index:n}=e;return n?new N.MathNode("mroot",[ie(r,t),ie(n,t.incrementLevel())]):new N.MathNode("msqrt",[ie(r,t)])}});const Lt={display:0,text:1,script:2,scriptscript:3},$t={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};c({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({breakOnTokenText:e,funcName:t,parser:r},n){const o=r.parseExpression(!0,e),s=t.slice(1,t.length-5);return{type:"styling",mode:r.mode,scriptLevel:s,body:o}},mathmlBuilder(e,t){const r=t.withLevel(Lt[e.scriptLevel]),n=se(e.body,r),o=A(n),s=$t[e.scriptLevel];return o.setAttribute("scriptlevel",s[0]),o.setAttribute("displaystyle",s[1]),o}});const Gt=/^m(over|under|underover)$/;m({type:"supsub",mathmlBuilder(e,t){let r,n,o=!1,s=!1,a=!1,i=!1;e.base&&"horizBrace"===e.base.type&&(n=!!e.sup,n===e.base.isOver&&(o=!0,r=e.base.isOver)),!e.base||e.base.stack||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0,s=!e.base.symbol,a=s&&!e.isFollowedByDelimiter,i=e.base.needsLeadingSpace);const l=e.base&&e.base.stack?[ie(e.base.body[0],t)]:[ie(e.base,t)],c=t.inSubOrSup();if(e.sub&&l.push(ie(e.sub,c)),e.sup){const t=ie(e.sup,c),r="mrow"===t.type?t.children[0]:t;"mo"===r.type&&r.classes.includes("tml-prime")&&e.base&&e.base.text&&"f"===e.base.text&&r.classes.push("prime-pad"),l.push(t)}let m;if(o)m=r?"mover":"munder";else if(e.sub)if(e.sup){const r=e.base;m=r&&("op"===r.type&&r.limits||"multiscript"===r.type)&&(t.level===Ke||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(t.level===Ke||r.limits)?"munderover":"msubsup"}else{const r=e.base;m=r&&"op"===r.type&&r.limits&&(t.level===Ke||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ke)?"munder":"msub"}else{const r=e.base;m=r&&"op"===r.type&&r.limits&&(t.level===Ke||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ke)?"mover":"msup"}let u=new N.MathNode(m,l);if(s){const e=new N.MathNode("mo",[ee("⁡","text")]);if(i){const t=new N.MathNode("mspace");t.setAttribute("width","0.1667em"),u=N.newDocumentFragment([t,u,e])}else u=N.newDocumentFragment([u,e]);if(a){const e=new N.MathNode("mspace");e.setAttribute("width","0.1667em"),u.children.push(e)}}else Gt.test(m)&&(u=new N.MathNode("mrow",[u]));return u}});const Dt=["\\shortmid","\\nshortmid","\\shortparallel","\\nshortparallel","\\smallsetminus"],Pt=["\\Rsh","\\Lsh","\\restriction"];m({type:"atom",mathmlBuilder(e,t){const r=new N.MathNode("mo",[ee(e.text,e.mode)]);return"punct"===e.family?r.setAttribute("separator","true"):"open"===e.family||"close"===e.family?"open"===e.family?(r.setAttribute("form","prefix"),r.setAttribute("stretchy","false")):"close"===e.family&&(r.setAttribute("form","postfix"),r.setAttribute("stretchy","false")):"\\mid"===e.text?(r.setAttribute("lspace","0.22em"),r.setAttribute("rspace","0.22em"),r.setAttribute("stretchy","false")):"rel"===e.family&&(e=>{if(1===e.length){const t=e.codePointAt(0);return 8591-1||e.indexOf("harpoon")>-1||Pt.includes(e)})(e.text)?r.setAttribute("stretchy","false"):Dt.includes(e.text)?r.setAttribute("mathsize","70%"):":"===e.text&&(r.attributes.lspace="0.2222em",r.attributes.rspace="0.2222em"),r}});const Rt={mathbf:"bold",mathrm:"normal",textit:"italic",mathit:"italic",mathnormal:"italic",mathbb:"double-struck",mathcal:"script",mathfrak:"fraktur",mathscr:"script",mathsf:"sans-serif",mathtt:"monospace"},jt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsc"===t.fontFamily)return"normal";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"sans-serif-bold":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";const r=t.font;if(!r||"mathnormal"===r)return null;const n=e.mode;switch(r){case"mathit":case"greekItalic":return"italic";case"mathrm":{const t=e.text.codePointAt(0);return 9390,bold:e=>119743,italic:e=>119795,"bold-italic":e=>119847,script:e=>Ut[e]||119899,"script-bold":e=>119951,fraktur:e=>Ht[e]||120003,"fraktur-bold":e=>120107,"double-struck":e=>Vt[e]||120055,"sans-serif":e=>120159,"sans-serif-bold":e=>120211,"sans-serif-italic":e=>120263,"sans-serif-bold-italic":e=>120380,monospace:e=>120367},lowerCaseLatin:{normal:e=>0,bold:e=>119737,italic:e=>"h"===e?8358:119789,"bold-italic":e=>119841,script:e=>Ut[e]||119893,"script-bold":e=>119945,fraktur:e=>119997,"fraktur-bold":e=>120101,"double-struck":e=>120049,"sans-serif":e=>120153,"sans-serif-bold":e=>120205,"sans-serif-italic":e=>120257,"sans-serif-bold-italic":e=>120309,monospace:e=>120361},upperCaseGreek:{normal:e=>0,bold:e=>"∇"===e?111802:119575,italic:e=>"∇"===e?111860:119633,"bold-italic":e=>"∇"===e?111802:119575,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>"∇"===e?111976:119749,"sans-serif-bold":e=>"∇"===e?111976:119749,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>"∇"===e?112034:119807,monospace:e=>0},lowerCaseGreek:{normal:e=>0,bold:e=>119569,italic:e=>119627,"bold-italic":e=>"ϕ"===e?119678:119685,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>119743,"sans-serif-bold":e=>119743,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>119801,monospace:e=>0},varGreek:{normal:e=>0,bold:e=>_t[e]||-51,italic:e=>0,"bold-italic":e=>Wt[e]||58,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>Xt[e]||116,"sans-serif-bold":e=>Xt[e]||116,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>Zt[e]||174,monospace:e=>0},numeral:{normal:e=>0,bold:e=>120734,italic:e=>0,"bold-italic":e=>0,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>120744,"sans-serif":e=>120754,"sans-serif-bold":e=>120764,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>0,monospace:e=>120774}}),Kt=(e,t)=>{const r=e.codePointAt(0),n=64{const n=new N.MathNode(r,[e]),o=new N.MathNode("mstyle",[n]);return o.style["font-style"]="italic",o.style["font-family"]="Cambria, 'Times New Roman', serif","bold-italic"===t&&(o.style["font-weight"]="bold"),o})(o,s,t);"normal"!==s&&(o.text=o.text.split("").map((e=>Kt(e,s))).join("")),a=new N.MathNode(t,[o])}else if("text"===e.mode)"normal"!==s&&(o.text=Kt(o.text,s)),a=new N.MathNode("mtext",[o]);else if(tr.has(e.text))a=new N.MathNode("mo",[o]),a.classes.push("tml-prime");else{const e=o.text;"italic"!==s&&(o.text=Kt(o.text,s)),a=new N.MathNode("mi",[o]),o.text===e&&er.test(e)?a.setAttribute("mathvariant","italic"):"∇"===o.text&&"normal"===s&&a.setAttribute("mathvariant","normal")}return a}});const rr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},nr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};m({type:"spacing",mathmlBuilder(t,r){let n;if(Object.prototype.hasOwnProperty.call(nr,t.text))n=new N.MathNode("mtext",[new N.TextNode(" ")]);else{if(!Object.prototype.hasOwnProperty.call(rr,t.text))throw new e(`Unknown type of space "${t.text}"`);n=new N.MathNode("mo"),"\\nobreak"===t.text&&n.setAttribute("linebreak","nobreak")}return n}}),m({type:"tag"});const or={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm","\\textsc":"textsc"},sr={"\\textbf":"textbf","\\textmd":"textmd"},ar={"\\textit":"textit","\\textup":"textup"};c({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textsc","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"text",mode:e.mode,body:p(n),font:t}},mathmlBuilder(e,t){const r=((e,t)=>{const r=e.font;return r?or[r]?t.withTextFontFamily(or[r]):sr[r]?t.withTextFontWeight(sr[r]):t.withTextFontShape(ar[r]):t})(e,t),n=ae(e.body,r);return te(n)}}),c({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,r,n){throw new e("\\verb ended by end of line instead of matching delimiter")},mathmlBuilder(e,t){const r=new N.TextNode(ir(e)),n=new N.MathNode("mtext",[r]);return n.setAttribute("mathvariant","monospace"),n}});const ir=e=>e.body.replace(/ /g,e.star?"␣":" "),lr=i;class cr{constructor(e,t,r){this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new cr(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class mr{constructor(e,t){this.text=e,this.loc=t}range(e,t){return new mr(t,cr.range(this,e))}}const ur=new RegExp("[̀-ͯ]+$");class pr{constructor(e,t){this.input=e,this.settings=t,this.tokenRegex=new RegExp("([ \r\n\t]+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧‪-퟿豈-￿][̀-ͯ]*|[\ud800-\udbff][\udc00-\udfff][̀-ͯ]*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|(\\\\[a-zA-Z@]+)[ \r\n\t]*|\\\\[^\ud800-\udfff])","g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){const t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new mr("EOF",new cr(this,r,r));const n=this.tokenRegex.exec(t);if(null===n||n.index!==r)throw new e(`Unexpected character: '${t[r]}'`,new mr(t[r],new cr(this,r,r+1)));const o=n[6]||n[3]||(n[2]?"\\ ":" ");if(14===this.catcodes[o]){const r=t.indexOf("\n",this.tokenRegex.lastIndex);if(-1===r){if(this.tokenRegex.lastIndex=t.length,this.settings.strict)throw new e("% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode")}else this.tokenRegex.lastIndex=r+1;return this.lex()}return new mr(o,new cr(this,r,this.tokenRegex.lastIndex))}}class dr{constructor(e={},t={}){this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new e("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");const t=this.undefStack.pop();for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])}has(e){return Object.prototype.hasOwnProperty.call(this.current,e)||Object.prototype.hasOwnProperty.call(this.builtins,e)}get(e){return Object.prototype.hasOwnProperty.call(this.current,e)?this.current[e]:this.builtins[e]}set(e,t,r=!1){if(r){for(let t=0;t0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{const t=this.undefStack[this.undefStack.length-1];t&&!Object.prototype.hasOwnProperty.call(t,e)&&(t[e]=this.current[e])}this.current[e]=t}}const hr=zt;Et("\\noexpand",(function(e){const t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Et("\\expandafter",(function(e){const t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Et("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Et("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Et("\\@ifnextchar",(function(e){const t=e.consumeArgs(3);e.consumeSpaces();const r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Et("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Et("\\TextOrMath",(function(e){const t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));const gr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15},fr=e=>{const t=e.future().text;return"EOF"===t?[null,""]:[gr[t.charAt(0)],t]},br=(e,t,r)=>{for(let n=1;n=r)throw new e(`Invalid base-${r} digit ${n.text}`);for(o=br(o,a,r),[s,a]=fr(t);null!=s&&s":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcap":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Et("\\dots",(function(e){let t="\\dotso";const r=e.expandAfterFuture().text;return r in yr?t=yr[r]:("\\not"===r.slice(0,4)||r in E.math&&["bin","rel"].includes(E.math[r].group))&&(t="\\dotsb"),t}));const wr={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Et("\\dotso",(function(e){return e.future().text in wr?"\\ldots\\,":"\\ldots"})),Et("\\dotsc",(function(e){const t=e.future().text;return t in wr&&","!==t?"\\ldots\\,":"\\ldots"})),Et("\\cdots",(function(e){return e.future().text in wr?"\\@cdots\\,":"\\@cdots"})),Et("\\dotsb","\\cdots"),Et("\\dotsm","\\cdots"),Et("\\dotsi","\\!\\cdots"),Et("\\idotsint","\\dotsi"),Et("\\dotsx","\\ldots\\,"),Et("\\DOTSI","\\relax"),Et("\\DOTSB","\\relax"),Et("\\DOTSX","\\relax"),Et("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Et("\\,","{\\tmspace+{3mu}{.1667em}}"),Et("\\thinspace","\\,"),Et("\\>","\\mskip{4mu}"),Et("\\:","{\\tmspace+{4mu}{.2222em}}"),Et("\\medspace","\\:"),Et("\\;","{\\tmspace+{5mu}{.2777em}}"),Et("\\thickspace","\\;"),Et("\\!","{\\tmspace-{3mu}{.1667em}}"),Et("\\negthinspace","\\!"),Et("\\negmedspace","{\\tmspace-{4mu}{.2222em}}"),Et("\\negthickspace","{\\tmspace-{5mu}{.277em}}"),Et("\\enspace","\\kern.5em "),Et("\\enskip","\\hskip.5em\\relax"),Et("\\quad","\\hskip1em\\relax"),Et("\\qquad","\\hskip2em\\relax"),Et("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Et("\\tag@paren","\\tag@literal{({#1})}"),Et("\\tag@literal",(t=>{if(t.macros.get("\\df@tag"))throw new e("Multiple \\tag");return"\\def\\df@tag{\\text{#1}}"})),Et("\\bmod","\\mathbin{\\text{mod}}"),Et("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Et("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Et("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Et("\\newline","\\\\\\relax"),Et("\\TeX","\\textrm{T}\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125em\\textrm{X}"),Et("\\LaTeX","\\textrm{L}\\kern-.35em\\raisebox{0.2em}{\\scriptstyle A}\\kern-.15em\\TeX"),Et("\\Temml","\\textrm{T}\\kern-0.2em\\lower{0.2em}{\\textrm{E}}\\kern-0.08em{\\textrm{M}\\kern-0.08em\\raise{0.2em}\\textrm{M}\\kern-0.08em\\textrm{L}}"),Et("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Et("\\@hspace","\\hskip #1\\relax"),Et("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Et("\\colon",'\\mathpunct{\\char"3a}'),Et("\\prescript","\\pres@cript{_{#1}^{#2}}{}{#3}"),Et("\\ordinarycolon",'\\char"3a'),Et("\\vcentcolon","\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}}"),Et("\\coloneq",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2212}'),Et("\\Coloneq",'\\mathrel{\\char"2237\\char"2212}'),Et("\\Eqqcolon",'\\mathrel{\\char"3d\\char"2237}'),Et("\\Eqcolon",'\\mathrel{\\char"2212\\char"2237}'),Et("\\colonapprox",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2248}'),Et("\\Colonapprox",'\\mathrel{\\char"2237\\char"2248}'),Et("\\colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Et("\\Colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Et("\\ratio","\\vcentcolon"),Et("\\coloncolon","\\dblcolon"),Et("\\colonequals","\\coloneqq"),Et("\\coloncolonequals","\\Coloneqq"),Et("\\equalscolon","\\eqqcolon"),Et("\\equalscoloncolon","\\Eqqcolon"),Et("\\colonminus","\\coloneq"),Et("\\coloncolonminus","\\Coloneq"),Et("\\minuscolon","\\eqcolon"),Et("\\minuscoloncolon","\\Eqcolon"),Et("\\coloncolonapprox","\\Colonapprox"),Et("\\coloncolonsim","\\Colonsim"),Et("\\notni","\\mathrel{\\char`∌}"),Et("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Et("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Et("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Et("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Et("\\varlimsup","\\DOTSB\\operatorname*{\\overline{\\text{lim}}}"),Et("\\varliminf","\\DOTSB\\operatorname*{\\underline{\\text{lim}}}"),Et("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{\\text{lim}}}"),Et("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{\\text{lim}}}"),Et("\\centerdot","{\\medspace\\rule{0.167em}{0.189em}\\medspace}"),Et("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Et("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Et("\\plim","\\DOTSB\\operatorname*{plim}"),Et("\\bra","\\mathinner{\\langle{#1}|}"),Et("\\ket","\\mathinner{|{#1}\\rangle}"),Et("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Et("\\Bra","\\left\\langle#1\\right|"),Et("\\Ket","\\left|#1\\right\\rangle");const xr=e=>t=>{const r=t.consumeArg().tokens,n=t.consumeArg().tokens,o=t.consumeArg().tokens,s=t.consumeArg().tokens,a=t.macros.get("|"),i=t.macros.get("\\|");t.macros.beginGroup();const l=t=>r=>{e&&(r.macros.set("|",a),o.length&&r.macros.set("\\|",i));let s=t;if(!t&&o.length){"|"===r.future().text&&(r.popToken(),s=!0)}return{tokens:s?o:n,numArgs:0}};t.macros.set("|",l(!1)),o.length&&t.macros.set("\\|",l(!0));const c=t.consumeArg().tokens,m=t.expandTokens([...s,...c,...r]);return t.macros.endGroup(),{tokens:m.reverse(),numArgs:0}};Et("\\bra@ket",xr(!1)),Et("\\bra@set",xr(!0)),Et("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Et("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Et("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Et("\\angln","{\\angl n}"),Et("\\odv","\\@ifstar\\odv@next\\odv@numerator"),Et("\\odv@numerator","\\frac{\\mathrm{d}#1}{\\mathrm{d}#2}"),Et("\\odv@next","\\frac{\\mathrm{d}}{\\mathrm{d}#2}#1"),Et("\\pdv","\\@ifstar\\pdv@next\\pdv@numerator");const kr=e=>{const t=e[0][0].text,r=(e=>{let t="";for(let r=e.length-1;r>-1;r--)t+=e[r].text;return t})(e[1]).split(","),n=String(r.length),o="1"===n?"\\partial":`\\partial^${n}`;let s="";return r.map((e=>{s+="\\partial "+e.trim()+"\\,"})),[t,o,s.replace(/\\,$/,"")]};Et("\\pdv@numerator",(function(e){const[t,r,n]=kr(e.consumeArgs(2));return`\\frac{${r} ${t}}{${n}}`})),Et("\\pdv@next",(function(e){const[t,r,n]=kr(e.consumeArgs(2));return`\\frac{${r}}{${n}} ${t}`})),Et("\\upalpha","\\up@greek{\\alpha}"),Et("\\upbeta","\\up@greek{\\beta}"),Et("\\upgamma","\\up@greek{\\gamma}"),Et("\\updelta","\\up@greek{\\delta}"),Et("\\upepsilon","\\up@greek{\\epsilon}"),Et("\\upzeta","\\up@greek{\\zeta}"),Et("\\upeta","\\up@greek{\\eta}"),Et("\\uptheta","\\up@greek{\\theta}"),Et("\\upiota","\\up@greek{\\iota}"),Et("\\upkappa","\\up@greek{\\kappa}"),Et("\\uplambda","\\up@greek{\\lambda}"),Et("\\upmu","\\up@greek{\\mu}"),Et("\\upnu","\\up@greek{\\nu}"),Et("\\upxi","\\up@greek{\\xi}"),Et("\\upomicron","\\up@greek{\\omicron}"),Et("\\uppi","\\up@greek{\\pi}"),Et("\\upalpha","\\up@greek{\\alpha}"),Et("\\uprho","\\up@greek{\\rho}"),Et("\\upsigma","\\up@greek{\\sigma}"),Et("\\uptau","\\up@greek{\\tau}"),Et("\\upupsilon","\\up@greek{\\upsilon}"),Et("\\upphi","\\up@greek{\\phi}"),Et("\\upchi","\\up@greek{\\chi}"),Et("\\uppsi","\\up@greek{\\psi}"),Et("\\upomega","\\up@greek{\\omega}"),Et("\\invamp",'\\mathbin{\\char"214b}'),Et("\\parr",'\\mathbin{\\char"214b}'),Et("\\with",'\\mathbin{\\char"26}'),Et("\\multimapinv",'\\mathrel{\\char"27dc}'),Et("\\multimapboth",'\\mathrel{\\char"29df}'),Et("\\scoh",'{\\mkern5mu\\char"2322\\mkern5mu}'),Et("\\sincoh",'{\\mkern5mu\\char"2323\\mkern5mu}'),Et("\\coh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2322}}}\n{\\smash{\\lower4mu{\\char"2323}}}\\mkern5mu}'),Et("\\incoh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2323}}}\n{\\smash{\\lower4mu{\\char"2322}}}\\mkern5mu}'),Et("\\standardstate","\\text{\\tiny\\char`⦵}");const vr={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class Ar{constructor(e,t,r){this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new dr(hr,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new pr(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){let t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:n,end:r}=this.consumeArg(["]"]))}else({tokens:n,start:t,end:r}=this.consumeArg());return this.pushToken(new mr("EOF",r.loc)),this.pushTokens(n),t.range(r,"")}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(t){const r=[],n=t&&t.length>0;n||this.consumeSpaces();const o=this.future();let s,a=0,i=0;do{if(s=this.popToken(),r.push(s),"{"===s.text)++a;else if("}"===s.text){if(--a,-1===a)throw new e("Extra }",s)}else if("EOF"===s.text)throw new e("Unexpected end of input in a macro argument, expected '"+(t&&n?t[i]:"}")+"'",s);if(t&&n)if((0===a||1===a&&"{"===t[i])&&s.text===t[i]){if(++i,i===t.length){r.splice(-i,i);break}}else i=0}while(0!==a||n);return"{"===o.text&&"}"===r[r.length-1].text&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:o,end:s}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new e("The length of delimiters doesn't match the number of args!");const n=r[0];for(let t=0;tthis.settings.maxExpand)throw new e("Too many expansions: infinite loop or need to increase maxExpand setting");let s=o.tokens;const a=this.consumeArgs(o.numArgs,o.delimiters);if(o.numArgs){s=s.slice();for(let t=s.length-1;t>=0;--t){let r=s[t];if("#"===r.text){if(0===t)throw new e("Incomplete placeholder at end of macro body",r);if(r=s[--t],"#"===r.text)s.splice(t+1,1);else{if(!/^[1-9]$/.test(r.text))throw new e("Not a valid argument number",r);s.splice(t,2,...a[+r.text-1])}}}}return this.pushTokens(s),s.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){const e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new mr(e)]):void 0}expandTokens(e){const t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){const e=this.stack.pop();e.treatAsRelax&&(e.noexpand=!1,e.treatAsRelax=!1),t.push(e)}return t}expandMacroAsText(e){const t=this.expandMacro(e);return t?t.map((e=>e.text)).join(""):t}_getExpansion(e){const t=this.macros.get(e);if(null==t)return t;if(1===e.length){const t=this.lexer.catcodes[e];if(null!=t&&13!==t)return}const r="function"==typeof t?t(this):t;if("string"==typeof r){let e=0;if(-1!==r.indexOf("#")){const t=r.replace(/##/g,"");for(;-1!==t.indexOf("#"+(e+1));)++e}const t=new pr(r,this.settings),n=[];let o=t.lex();for(;"EOF"!==o.text;)n.push(o),o=t.lex();n.reverse();return{tokens:n,numArgs:e}}return r}isDefined(e){return this.macros.has(e)||Object.prototype.hasOwnProperty.call(lr,e)||Object.prototype.hasOwnProperty.call(E.math,e)||Object.prototype.hasOwnProperty.call(E.text,e)||Object.prototype.hasOwnProperty.call(vr,e)}isExpandable(e){const t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Object.prototype.hasOwnProperty.call(lr,e)&&!lr[e].primitive}}const Nr=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Tr=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g","ʰ":"h","ⁱ":"i","ʲ":"j","ᵏ":"k","ˡ":"l","ᵐ":"m","ⁿ":"n","ᵒ":"o","ᵖ":"p","ʳ":"r","ˢ":"s","ᵗ":"t","ᵘ":"u","ᵛ":"v","ʷ":"w","ˣ":"x","ʸ":"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),qr=Object.freeze({"𝒜":"A","ℬ":"B","𝒞":"C","𝒟":"D","ℰ":"E","ℱ":"F","𝒢":"G","ℋ":"H","ℐ":"I","𝒥":"J","𝒦":"K","ℒ":"L","ℳ":"M","𝒩":"N","𝒪":"O","𝒫":"P","𝒬":"Q","ℛ":"R","𝒮":"S","𝒯":"T","𝒰":"U","𝒱":"V","𝒲":"W","𝒳":"X","𝒴":"Y","𝒵":"Z"});var Sr={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},Or={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"};class Br{constructor(e,t,r=!1){this.mode="math",this.gullet=new Ar(e,t,this.mode),this.settings=t,this.isPreamble=r,this.leftrightDepth=0,this.prevAtomType=""}expect(t,r=!0){if(this.fetch().text!==t)throw new e(`Expected '${t}', got '${this.fetch().text}'`,this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");const e=this.parseExpression(!1);if(this.expect("EOF"),this.isPreamble){const e=Object.create(null);return Object.entries(this.gullet.macros.current).forEach((([t,r])=>{e[t]=r})),this.gullet.endGroup(),e}const t=this.gullet.macros.get("\\df@tag");return this.gullet.endGroup(),t&&(this.gullet.macros.current["\\df@tag"]=t),e}static get endOfExpression(){return["}","\\endgroup","\\end","\\right","\\endtoggle","&"]}subparse(e){const t=this.nextToken;this.consume(),this.gullet.pushToken(new mr("}")),this.gullet.pushTokens(e);const r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t){const r=[];for(;;){"math"===this.mode&&this.consumeSpaces();const n=this.fetch();if(-1!==Br.endOfExpression.indexOf(n.text))break;if(t&&n.text===t)break;if(e&&lr[n.text]&&lr[n.text].infix)break;const o=this.parseAtom(t);if(!o)break;"internal"!==o.type&&(r.push(o),this.prevAtomType="atom"===o.type?o.family:o.type)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(t){let r,n=-1;for(let o=0;o=128))return null;if(this.settings.strict&&"math"===this.mode)throw new e(`Unicode text character "${r[0]}" used in math mode`,t);o={type:"textord",mode:"text",loc:cr.range(t),text:r}}if(this.consume(),n)for(let r=0;r0&&o[0].type&&"array"===o[0].type&&o[0].addEqnNum)&&n.gullet.macros.get("\\df@tag")){if(!r.displayMode)throw new e("\\tag works only in display mode");n.gullet.feed("\\df@tag"),o=[{type:"tag",mode:"text",body:o,tag:n.parse()}]}return o},Cr=[2,2,3,3];class zr{constructor(e){this.level=e.level,this.color=e.color,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontSize=e.fontSize||1,this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.maxSize=e.maxSize}extend(e){const t={level:this.level,color:this.color,font:this.font,fontFamily:this.fontFamily,fontSize:this.fontSize,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return new zr(t)}withLevel(e){return this.extend({level:e})}incrementLevel(){return this.extend({level:Math.min(this.level+1,3)})}inSubOrSup(){return this.extend({level:Cr[this.level]})}withColor(e){return this.extend({color:e})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withFontSize(e){return this.extend({fontSize:e})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}getColor(){return this.color}}let Er=function(e,t,r){t.textContent="";const n="MATH"===t.tagName;n&&(r.wrap="none");const o=Ir(e,r);n||o.children.length>1?(t.textContent="",o.children.forEach((e=>{t.appendChild(e.toNode())}))):t.appendChild(o.toNode())};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: Temml doesn't work in quirks mode. Make sure your website has a suitable doctype."),Er=function(){throw new e("Temml doesn't work in quirks mode.")});const Ir=function(t,r){const n=new a(r);try{const e=Mr(t,n);return ce(e,t,new zr({level:n.displayMode?Ke:Je,maxSize:n.maxSize}),n)}catch(r){return function(t,r,n){if(n.throwOnError||!(t instanceof e))throw t;const o=new y(["temml-error"],[new w(r+"\n"+t.toString())]);return o.style.color=n.errorColor,o.style.whiteSpace="pre-line",o}(r,t,n)}};return{version:"0.10.16",render:Er,renderToString:function(e,t){return Ir(e,t).toMarkup()},postProcess:function(e){const t={};let r=0;const n=e.getElementsByClassName("tml-tageqn");for(const e of n){const n=e.getElementsByClassName("tml-eqn");n.length>0&&(r+=1,n[0].id="tml-eqn-"+r);const o=e.getElementsByClassName("tml-label");if(0!==o.length)if(n.length>0)t[o[0].id]=String(r);else{const r=e.getElementsByClassName("tml-tag");r.length>0&&(t[o[0].id]=r[0].textContent)}}[...e.getElementsByClassName("tml-ref")].forEach((e=>{let r=t[e.getAttribute("href").slice(1)];-1===e.className.indexOf("tml-eqref")&&(r=r.replace(/^\(/,""),r=r.replace(/\($/,"")),"("!==r.charAt(0)&&(r="("+r),")"!==r.slice(-1)&&(r+=")"),e.textContent=r}))},ParseError:e,definePreamble:function(e,t){const r=new a(t);if(r.macros={},!("string"==typeof e||e instanceof String))throw new TypeError("Temml can only parse string typed expression");const n=new Br(e,r,!0);delete n.gullet.macros.current["\\df@tag"];return n.parse()},__parse:function(e,t){const r=new a(t);return Mr(e,r)},__renderToMathMLTree:Ir,__defineSymbol:I,__defineMacro:Et}}(); \ No newline at end of file diff --git a/js/temml/version.txt b/js/temml/version.txt new file mode 100644 index 0000000..cbd216f --- /dev/null +++ b/js/temml/version.txt @@ -0,0 +1 @@ +0.10.16 \ No newline at end of file diff --git a/js/temml_config.js b/js/temml_config.js new file mode 100644 index 0000000..ce9480d --- /dev/null +++ b/js/temml_config.js @@ -0,0 +1,18 @@ +renderMathInElement( + document.body, + { + delimiters: [ + { left: "$$", right: "$$", display: true }, + // Put $ after $$. + { left: "$", right: "$", display: false }, + { left: "\\(", right: "\\)", display: false }, + { left: "\\begin{equation}", right: "\\end{equation}", display: true }, + { left: "\\begin{align}", right: "\\end{align}", display: true }, + { left: "\\begin{alignat}", right: "\\end{alignat}", display: true }, + { left: "\\begin{gather}", right: "\\end{gather}", display: true }, + { left: "\\begin{CD}", right: "\\end{CD}", display: true }, + { left: "\\begin{multline}", right: "\\end{multline}", display: true }, + { left: "\\[", right: "\\]", display: true } + ] + } +); \ No newline at end of file diff --git a/main.css b/main.css new file mode 100644 index 0000000..a3dbd03 --- /dev/null +++ b/main.css @@ -0,0 +1 @@ +pre{padding:1em;border-radius:4px;position:relative;font-family:var(--code-font);overflow-x:auto;-webkit-overflow-scrolling:touch}code{background-color:var(--bg-0);padding:0px 3px;border-radius:4px;font-size:.9rem}pre code{background-color:rgba(0,0,0,0);color:inherit;padding:0}pre code[class*=language-]{-webkit-overflow-scrolling:touch}pre code[class*=language-]::before{font-size:smaller;background:#000;border-radius:0 0 3px 3px;color:#fff;padding:.1em 1ch;position:absolute;text-align:right;text-transform:uppercase;right:2px;top:2px}pre code[class=language-javascript]::before,pre code[class=language-js]::before{content:"js";background:gold;color:#000}pre code[class*=language-yml]::before,pre code[class*=language-yaml]::before{content:"yaml";background:#cd5c5c;color:#fff}pre code[class*=language-shell]::before,pre code[class*=language-bash]::before,pre code[class*=language-sh]::before{content:"shell";background:green;color:#fff}pre code[class*=language-json]::before{content:"json";background:#1e90ff;color:#000}pre code[class*=language-python]::before,pre code[class*=language-py]::before{content:"py";background:blue;color:#ff0}pre code[class*=language-css]::before{content:"css";background:cyan;color:#000}pre code[class*=language-go]::before{content:"Go";background:cyan;color:#4169e1}pre code[class*=language-md]::before{content:"Markdown";background:#4169e1;color:#f5f5f5}pre code[class*=language-rust]::before,pre code[class*=language-rs]::before{content:"rust";background:#000;color:#e9967a}pre code[class*=language-c]::before{content:"C";background:#000;color:lime}pre code[class*=language-cpp]::before{content:"C++";background:#000;color:aqua}.item-title{margin-bottom:.2em}.item-title:before{content:"🗎 ";font-size:smaller}.item-title:hover{color:var(--hover-color)}.item-title:hover:before{color:var(--hover-color)}.page-title{font-family:var(--header-font);font-size:2.4em;line-height:100%;margin:.6em 16px .2em 16px}.link-title{font-family:var(--header-font);font-size:2em;text-align:center;margin:1em 16px}h1,h2,h3,h4,h5,h6{font-family:var(--header-font);color:var(--text-0)}h1{font-size:1.4rem;margin-top:1.6em}h2{font-size:1.3rem;margin-top:1.5em}h3{font-size:1.2rem;margin-top:1.4em}h4{font-size:1.1rem;margin-top:1.3em}h5{font-size:1rem;margin-top:1.3em}article h1::before{margin-left:-.5ch;color:var(--text-1);content:"# "}article h2::before{margin-left:-.5ch;color:var(--text-1);content:"## "}article h3::before{margin-left:-.5ch;color:var(--text-1);content:"### "}article h4::before{margin-left:-.5ch;color:var(--text-1);content:"#### "}article h5::before{margin-left:-.5ch;color:var(--text-1);content:"##### "}article h6::before{margin-left:-.5ch;color:var(--text-1);content:"###### "}.meta{color:#999;letter-spacing:-.5px}header{background-color:var(--accent-bg);box-shadow:0 2px 6px var(--bg-2);border-radius:9px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.7em;padding:9px 12px 7px 12px;border-bottom:1px solid var(--accent-color)}.site-info{flex-grow:1;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:baseline;gap:.7em}.site-title{flex-grow:0;font-size:1.3rem}.socials{flex-grow:0;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:flex-end;gap:6px}.social{padding:2px}.social:hover{background-color:unset}.social>img{width:16px;height:16px}.site-menu{flex-grow:0}.site-menu-entry+.site-menu-entry{margin-left:.4em}@media (prefers-color-scheme: dark){.social>img{filter:invert(1)}}img{width:auto;height:auto;max-width:100%}figure{max-width:100%}.banner-image{width:100%}.description{margin:.4em 0}.caption{font-size:smaller;font-style:italic;color:var(--text-1)}.tldr-div{margin:1em 0 0 0}.tldr-prefix{padding:2px 4px;border-radius:4pt;background-color:var(--primary-color)}.draft-label{color:var(--text-0);text-decoration:none;padding:2px 4px;border-radius:4px;margin-left:6px;background-color:var(--primary-color)}.primary-color{color:var(--primary-color)}.primary-color-bg{background-color:var(--primary-color)}.accent-bg{color:var(--accent-bg)}::selection{background:var(--primary-color)}.pagination{margin-top:auto;text-align:center;padding:0}.page-link{padding:0 6px}hr{border:none;border-top:2px dotted var(--border-color);margin:6px 0}blockquote{border-left:3px solid var(--border-color);color:var(--text-1);margin:0;padding-left:1em}a{text-decoration:underline;color:var(--text-0)}a:hover{color:var(--hover-color)}time{color:grey}time::before{content:"🗓 ";font-size:smaller}.toc{margin-bottom:2rem}.toc li::marker{color:var(--primary-color)}ul{padding-left:3ch}.pagenotfound{font-family:var(--header-font);font-size:3em;text-align:center;margin:1.5em 0}aside{float:right;max-width:50%}.aside-inner{margin:.2em 0 .2em 1.5em;padding:.4em 0 .4em 1em;border-left:1px solid var(--border-color)}.show-all-div{margin:2.5em 0 2em 36px}.clear{clear:both}.elevator-button{color:var(--primary-color);background-color:var(--accent-bg);width:2rem;height:2rem;bottom:30px;right:30px;text-align:center;border:1px solid var(--border-color);border-radius:4px;position:fixed;visibility:hidden;transition:opacity 1s}.elevator-button:hover{cursor:pointer}@media all and (max-width: 719px){aside{max-width:100% !important;width:100%}.aside-inner{margin-left:.4em}}table{border-spacing:0;border-collapse:collapse}table th{padding:6px 13px;border:1px solid #dfe2e5;font-size:large}table td{padding:6px 13px;border:1px solid #dfe2e5}.taxonomies-title{margin-bottom:.4em}.taxonomies-items{margin-top:1em}.taxonomies-item+.taxonomies-item{margin-left:.4em}.taxonomy-item{display:flex;flex-direction:row;gap:.7em}.taxonomy-item-title{flex-grow:1}.tags{margin:3px 6px}.tags:before{content:"🏷 ";font-size:smaller}.tag{color:var(--text-1);border-radius:2px;background-color:var(--bg-2);padding:2px 3px}.cards{display:grid;grid-template-columns:repeat(auto-fill, minmax(350px, 1fr));grid-template-rows:auto;gap:18px;padding:12px 0}@supports (grid-template-rows: masonry){.cards{grid-template-rows:masonry}}.card{min-height:200px;border-radius:5px;overflow:hidden}.card:hover{background:color-mix(in srgb, var(--bg-1) 50%, var(--bg-2))}.card-info{padding:0px 18px 18px 18px}.card-title{margin:.4em 0;line-height:1em}.card-title::before{content:"🖴 ";font-size:smaller}.card-title:hover:before{color:var(--hover-color)}.card-image{width:100%;max-height:400px;object-fit:contain}.card-image-placeholder{height:12px;width:100%}.card-description{margin-top:.4em;overflow:hidden}@media all and (max-width: 719px){.cards{gap:12px}}.gallery{display:grid;grid-template-rows:auto;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:12px;padding:12px}@supports (grid-template-rows: masonry){.gallery{grid-template-rows:masonry}}.gallery-image{border-bottom:unset;border-image:unset;background:unset;transition:transform .2s}.gallery-image:hover{transform:scale(1.1)}.gallery-image>img{box-shadow:0px 0px 6px var(--bg-2)}html.webapp{width:100%;height:100%;margin:0}body.webapp{background-color:var(--bg-1);width:100%;height:100%;margin:0;display:flex;flex-direction:column}header.webapp{padding:6px;border-radius:unset;position:unset;top:unset}.webapp-header{font-family:var(--header-font);text-align:center;vertical-align:text-top;font-size:1.6em}iframe.webapp{flex:1;border:1px solid var(--border-color)}:root{--border-color: var(--bg-0);--text-font: "Roboto";--header-font: "Roboto";--code-font: "Inconsolata"}html{background-image:var(--bg-noise-image);color:var(--text-0);font-family:var(--text-font);line-height:1.4em}body{margin:0}.content{max-width:1000px;min-height:calc(100vh - 24px);margin:0 auto;padding:12px;word-wrap:break-word;display:flex;flex-direction:column;gap:12px}.main-content{flex-grow:1;display:flex;flex-direction:column;justify-content:flex-start;background-color:var(--bg-1);border-radius:9px;box-shadow:0 2px 6px var(--bg-2);overflow:hidden}.padded-content{margin:24px;color:var(--text-1)}footer{background-color:var(--bg-1);border-radius:9px;box-shadow:0 2px 6px var(--bg-2);margin-top:auto;padding:6px;text-align:center}.tml-eqn::before{content:""}@media all and (max-width: 719px){html{font-size:14px}.content{min-height:calc(100vh - 12px);padding:6px 0;gap:6px}.padded-content{margin:12px}}@media all and (min-width: 720px){html{font-size:15px}}@media all and (min-width: 900px){html{font-size:16px}} \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..1269929 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,27 @@ +{ + "name": "static", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@fontsource/inconsolata": { + "version": "5.0.18", + "resolved": "https://registry.npmjs.org/@fontsource/inconsolata/-/inconsolata-5.0.18.tgz", + "integrity": "sha512-VVG5RWMfYEmWRKv3sh8M1n3Ux3vs7v8978vYZ205lBQPlff3e7H67f7TRfswj2ybnX53+QxWylySvcv8ACCvWw==" + }, + "node_modules/@fontsource/merriweather": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/@fontsource/merriweather/-/merriweather-5.0.13.tgz", + "integrity": "sha512-V/UsU+5yceDICBUJJXWCT+6xf5YpLIVUHfUjBQ+NNbllIhe3zaVZ1f3t5+fNKwvBzKBDa3RNMCofAdW7uzw08Q==" + }, + "node_modules/@fontsource/roboto": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.13.tgz", + "integrity": "sha512-j61DHjsdUCKMXSdNLTOxcG701FWnF0jcqNNQi2iPCDxU8seN/sMxeh62dC++UiagCWq9ghTypX+Pcy7kX+QOeQ==" + }, + "node_modules/elevator.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elevator.js/-/elevator.js-1.0.1.tgz", + "integrity": "sha512-3+jUQIrUxDGjhF7cyrxi+NcqaDkYhQ+Y2UfVqozYMLxAY1i9l2ZjLWzPlFMFc4nx3SPYf9EPHEn1zUqpIWlXng==" + } + } +} diff --git a/node_modules/@fontsource/inconsolata/200.css b/node_modules/@fontsource/inconsolata/200.css new file mode 100644 index 0000000..6ac86bf --- /dev/null +++ b/node_modules/@fontsource/inconsolata/200.css @@ -0,0 +1,29 @@ +/* inconsolata-vietnamese-200-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 200; + src: url(./files/inconsolata-vietnamese-200-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-200-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inconsolata-latin-ext-200-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 200; + src: url(./files/inconsolata-latin-ext-200-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-200-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inconsolata-latin-200-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 200; + src: url(./files/inconsolata-latin-200-normal.woff2) format('woff2'), url(./files/inconsolata-latin-200-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/300.css b/node_modules/@fontsource/inconsolata/300.css new file mode 100644 index 0000000..41cb9b0 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/300.css @@ -0,0 +1,29 @@ +/* inconsolata-vietnamese-300-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/inconsolata-vietnamese-300-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-300-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inconsolata-latin-ext-300-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/inconsolata-latin-ext-300-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-300-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inconsolata-latin-300-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/inconsolata-latin-300-normal.woff2) format('woff2'), url(./files/inconsolata-latin-300-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/400.css b/node_modules/@fontsource/inconsolata/400.css new file mode 100644 index 0000000..1209463 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/400.css @@ -0,0 +1,29 @@ +/* inconsolata-vietnamese-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-vietnamese-400-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-400-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inconsolata-latin-ext-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-latin-ext-400-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-400-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inconsolata-latin-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-latin-400-normal.woff2) format('woff2'), url(./files/inconsolata-latin-400-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/500.css b/node_modules/@fontsource/inconsolata/500.css new file mode 100644 index 0000000..51be5c8 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/500.css @@ -0,0 +1,29 @@ +/* inconsolata-vietnamese-500-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/inconsolata-vietnamese-500-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-500-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inconsolata-latin-ext-500-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/inconsolata-latin-ext-500-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-500-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inconsolata-latin-500-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/inconsolata-latin-500-normal.woff2) format('woff2'), url(./files/inconsolata-latin-500-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/600.css b/node_modules/@fontsource/inconsolata/600.css new file mode 100644 index 0000000..6ae4131 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/600.css @@ -0,0 +1,29 @@ +/* inconsolata-vietnamese-600-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url(./files/inconsolata-vietnamese-600-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-600-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inconsolata-latin-ext-600-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url(./files/inconsolata-latin-ext-600-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-600-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inconsolata-latin-600-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url(./files/inconsolata-latin-600-normal.woff2) format('woff2'), url(./files/inconsolata-latin-600-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/700.css b/node_modules/@fontsource/inconsolata/700.css new file mode 100644 index 0000000..c3947b4 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/700.css @@ -0,0 +1,29 @@ +/* inconsolata-vietnamese-700-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/inconsolata-vietnamese-700-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-700-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inconsolata-latin-ext-700-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/inconsolata-latin-ext-700-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-700-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inconsolata-latin-700-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/inconsolata-latin-700-normal.woff2) format('woff2'), url(./files/inconsolata-latin-700-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/800.css b/node_modules/@fontsource/inconsolata/800.css new file mode 100644 index 0000000..4292542 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/800.css @@ -0,0 +1,29 @@ +/* inconsolata-vietnamese-800-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 800; + src: url(./files/inconsolata-vietnamese-800-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-800-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inconsolata-latin-ext-800-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 800; + src: url(./files/inconsolata-latin-ext-800-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-800-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inconsolata-latin-800-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 800; + src: url(./files/inconsolata-latin-800-normal.woff2) format('woff2'), url(./files/inconsolata-latin-800-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/900.css b/node_modules/@fontsource/inconsolata/900.css new file mode 100644 index 0000000..c40f534 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/900.css @@ -0,0 +1,29 @@ +/* inconsolata-vietnamese-900-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/inconsolata-vietnamese-900-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-900-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inconsolata-latin-ext-900-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/inconsolata-latin-ext-900-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-900-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inconsolata-latin-900-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/inconsolata-latin-900-normal.woff2) format('woff2'), url(./files/inconsolata-latin-900-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/CHANGELOG.md b/node_modules/@fontsource/inconsolata/CHANGELOG.md new file mode 100644 index 0000000..e798685 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/CHANGELOG.md @@ -0,0 +1,2 @@ +# Changelog +See the [Fontsource CHANGELOG.md](https://github.com/fontsource/fontsource/blob/main/CHANGELOG.md). \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/LICENSE b/node_modules/@fontsource/inconsolata/LICENSE new file mode 100644 index 0000000..79721ad --- /dev/null +++ b/node_modules/@fontsource/inconsolata/LICENSE @@ -0,0 +1,93 @@ +Copyright 2006 The Inconsolata Project Authors (https://github.com/cyrealtype/Inconsolata) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The 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. + +The 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. + +DEFINITIONS +"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. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"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. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission 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: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) 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. + +3) 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. + +4) 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. + +5) 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. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE 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. diff --git a/node_modules/@fontsource/inconsolata/README.md b/node_modules/@fontsource/inconsolata/README.md new file mode 100644 index 0000000..d576a05 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/README.md @@ -0,0 +1,47 @@ +# Fontsource Inconsolata + +[![npm (scoped)](https://img.shields.io/npm/v/@fontsource/inconsolata?color=brightgreen)](https://www.npmjs.com/package/@fontsource/inconsolata) [![Generic badge](https://img.shields.io/badge/fontsource-passing-brightgreen)](https://github.com/fontsource/fontsource) [![Monthly downloads](https://badgen.net/npm/dm/@fontsource/inconsolata)](https://github.com/fontsource/fontsource) [![Total downloads](https://badgen.net/npm/dt/@fontsource/inconsolata)](https://github.com/fontsource/fontsource) [![GitHub stars](https://img.shields.io/github/stars/fontsource/fontsource.svg?style=social&label=Star)](https://github.com/fontsource/fontsource/stargazers) + +The CSS and web font files to easily self-host the “Inconsolata” font. Please visit the main [Fontsource website](https://fontsource.org/fonts/inconsolata) to view more details on this package. + +## Quick Installation + +Fontsource offers multiple methods to import the CSS, including using a bundler like Vite or using SASS. You can find full documentation [here](https://fontsource.org/docs/getting-started/introduction). + +```javascript +npm install @fontsource/inconsolata +``` + +Within your app entry file or site component, import it in. + +```javascript +import "@fontsource/inconsolata"; // Defaults to weight 400 +import "@fontsource/inconsolata/400.css"; // Specify weight +import "@fontsource/inconsolata/400-italic.css"; // Specify weight and style +``` + +Supported variables: +- Weights: `[200,300,400,500,600,700,800,900]` +- Styles: `[normal]` +- Subsets: `[latin,latin-ext,vietnamese]` + +> Note: `italic` may not be supported by all fonts. To learn more about what weights and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/inconsolata). + +Finally, you can reference the font name in a CSS stylesheet, CSS Module, or CSS-in-JS. + +```css +body { + font-family: "Inconsolata"; +} +``` + +## Licensing +Always make sure to read the license for each font you use. Most of the fonts in the collection use the SIL Open Font License, v1.1. Some fonts use the Apache 2 license. The Ubuntu fonts use the Ubuntu Font License v1.0. + +Copyright 2006 The Inconsolata Project Authors (https://github.com/cyrealtype/Inconsolata) +[OFL-1.1](http://scripts.sil.org/OFL) + +## Other Notes +Font version (provided by source): `v32`. + +If you have any suggestions or ideas to improve the performance of font loading or expand the existing library, feel free to star and contribute to this repository. You can share your suggestions or ideas by creating an [issue](https://github.com/fontsource/fontsource/issues). \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-200-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-200-normal.woff new file mode 100644 index 0000000..c00dc03 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-200-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-200-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-200-normal.woff2 new file mode 100644 index 0000000..0a3a729 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-200-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-300-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-300-normal.woff new file mode 100644 index 0000000..80805b1 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-300-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-300-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-300-normal.woff2 new file mode 100644 index 0000000..3cb4347 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-300-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-400-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-400-normal.woff new file mode 100644 index 0000000..9c74520 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-400-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-400-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-400-normal.woff2 new file mode 100644 index 0000000..0d6d5c5 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-400-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-500-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-500-normal.woff new file mode 100644 index 0000000..215a903 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-500-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-500-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-500-normal.woff2 new file mode 100644 index 0000000..6ce8ea1 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-500-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-600-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-600-normal.woff new file mode 100644 index 0000000..f7a7de6 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-600-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-600-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-600-normal.woff2 new file mode 100644 index 0000000..5c5217a Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-600-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-700-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-700-normal.woff new file mode 100644 index 0000000..bbecd86 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-700-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-700-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-700-normal.woff2 new file mode 100644 index 0000000..8ad472d Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-700-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-800-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-800-normal.woff new file mode 100644 index 0000000..edc5384 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-800-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-800-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-800-normal.woff2 new file mode 100644 index 0000000..bbdc086 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-800-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-900-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-900-normal.woff new file mode 100644 index 0000000..51857bc Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-900-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-900-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-900-normal.woff2 new file mode 100644 index 0000000..df7fa31 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-900-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-200-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-200-normal.woff new file mode 100644 index 0000000..fbd647a Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-200-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-200-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-200-normal.woff2 new file mode 100644 index 0000000..9037f09 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-200-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-300-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-300-normal.woff new file mode 100644 index 0000000..6627c06 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-300-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-300-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-300-normal.woff2 new file mode 100644 index 0000000..8709897 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-300-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-400-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-400-normal.woff new file mode 100644 index 0000000..6ffd7f3 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-400-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-400-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-400-normal.woff2 new file mode 100644 index 0000000..c7dce65 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-400-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-500-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-500-normal.woff new file mode 100644 index 0000000..3066a38 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-500-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-500-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-500-normal.woff2 new file mode 100644 index 0000000..55e08a6 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-500-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-600-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-600-normal.woff new file mode 100644 index 0000000..3a1fcad Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-600-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-600-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-600-normal.woff2 new file mode 100644 index 0000000..a03a9d3 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-600-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-700-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-700-normal.woff new file mode 100644 index 0000000..f22b6fc Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-700-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-700-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-700-normal.woff2 new file mode 100644 index 0000000..89e4f67 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-700-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-800-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-800-normal.woff new file mode 100644 index 0000000..ec8e02e Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-800-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-800-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-800-normal.woff2 new file mode 100644 index 0000000..ab1c86a Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-800-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-900-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-900-normal.woff new file mode 100644 index 0000000..7f2af09 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-900-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-900-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-900-normal.woff2 new file mode 100644 index 0000000..3d45c81 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-latin-ext-900-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-200-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-200-normal.woff new file mode 100644 index 0000000..172a02a Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-200-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-200-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-200-normal.woff2 new file mode 100644 index 0000000..772dbd1 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-200-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-300-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-300-normal.woff new file mode 100644 index 0000000..faa14dd Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-300-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-300-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-300-normal.woff2 new file mode 100644 index 0000000..eebe885 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-300-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-400-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-400-normal.woff new file mode 100644 index 0000000..6dcb764 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-400-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-400-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-400-normal.woff2 new file mode 100644 index 0000000..780943d Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-400-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-500-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-500-normal.woff new file mode 100644 index 0000000..9866917 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-500-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-500-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-500-normal.woff2 new file mode 100644 index 0000000..3c80d67 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-500-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-600-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-600-normal.woff new file mode 100644 index 0000000..11be50a Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-600-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-600-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-600-normal.woff2 new file mode 100644 index 0000000..36b4adc Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-600-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-700-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-700-normal.woff new file mode 100644 index 0000000..d23d4d6 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-700-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-700-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-700-normal.woff2 new file mode 100644 index 0000000..c4b6588 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-700-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-800-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-800-normal.woff new file mode 100644 index 0000000..3cdb3d4 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-800-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-800-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-800-normal.woff2 new file mode 100644 index 0000000..f53be39 Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-800-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-900-normal.woff b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-900-normal.woff new file mode 100644 index 0000000..5b1785b Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-900-normal.woff differ diff --git a/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-900-normal.woff2 b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-900-normal.woff2 new file mode 100644 index 0000000..963616f Binary files /dev/null and b/node_modules/@fontsource/inconsolata/files/inconsolata-vietnamese-900-normal.woff2 differ diff --git a/node_modules/@fontsource/inconsolata/index.css b/node_modules/@fontsource/inconsolata/index.css new file mode 100644 index 0000000..1209463 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/index.css @@ -0,0 +1,29 @@ +/* inconsolata-vietnamese-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-vietnamese-400-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-400-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inconsolata-latin-ext-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-latin-ext-400-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-400-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inconsolata-latin-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-latin-400-normal.woff2) format('woff2'), url(./files/inconsolata-latin-400-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-200.css b/node_modules/@fontsource/inconsolata/latin-200.css new file mode 100644 index 0000000..dcf9383 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-200.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-200-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 200; + src: url(./files/inconsolata-latin-200-normal.woff2) format('woff2'), url(./files/inconsolata-latin-200-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-300.css b/node_modules/@fontsource/inconsolata/latin-300.css new file mode 100644 index 0000000..0897be0 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-300.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-300-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/inconsolata-latin-300-normal.woff2) format('woff2'), url(./files/inconsolata-latin-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-400.css b/node_modules/@fontsource/inconsolata/latin-400.css new file mode 100644 index 0000000..17f3685 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-400.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-latin-400-normal.woff2) format('woff2'), url(./files/inconsolata-latin-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-500.css b/node_modules/@fontsource/inconsolata/latin-500.css new file mode 100644 index 0000000..781cbf3 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-500.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-500-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/inconsolata-latin-500-normal.woff2) format('woff2'), url(./files/inconsolata-latin-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-600.css b/node_modules/@fontsource/inconsolata/latin-600.css new file mode 100644 index 0000000..f490824 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-600.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-600-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url(./files/inconsolata-latin-600-normal.woff2) format('woff2'), url(./files/inconsolata-latin-600-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-700.css b/node_modules/@fontsource/inconsolata/latin-700.css new file mode 100644 index 0000000..c50c8ba --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-700.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-700-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/inconsolata-latin-700-normal.woff2) format('woff2'), url(./files/inconsolata-latin-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-800.css b/node_modules/@fontsource/inconsolata/latin-800.css new file mode 100644 index 0000000..d8c23f6 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-800.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-800-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 800; + src: url(./files/inconsolata-latin-800-normal.woff2) format('woff2'), url(./files/inconsolata-latin-800-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-900.css b/node_modules/@fontsource/inconsolata/latin-900.css new file mode 100644 index 0000000..4cd324e --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-900.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-900-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/inconsolata-latin-900-normal.woff2) format('woff2'), url(./files/inconsolata-latin-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-ext-200.css b/node_modules/@fontsource/inconsolata/latin-ext-200.css new file mode 100644 index 0000000..83475ed --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-ext-200.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-ext-200-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 200; + src: url(./files/inconsolata-latin-ext-200-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-200-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-ext-300.css b/node_modules/@fontsource/inconsolata/latin-ext-300.css new file mode 100644 index 0000000..af9d920 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-ext-300.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-ext-300-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/inconsolata-latin-ext-300-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-ext-400.css b/node_modules/@fontsource/inconsolata/latin-ext-400.css new file mode 100644 index 0000000..25755f3 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-ext-400.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-ext-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-latin-ext-400-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-ext-500.css b/node_modules/@fontsource/inconsolata/latin-ext-500.css new file mode 100644 index 0000000..0276cdb --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-ext-500.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-ext-500-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/inconsolata-latin-ext-500-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-ext-600.css b/node_modules/@fontsource/inconsolata/latin-ext-600.css new file mode 100644 index 0000000..0920d25 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-ext-600.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-ext-600-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url(./files/inconsolata-latin-ext-600-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-600-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-ext-700.css b/node_modules/@fontsource/inconsolata/latin-ext-700.css new file mode 100644 index 0000000..cc81043 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-ext-700.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-ext-700-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/inconsolata-latin-ext-700-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-ext-800.css b/node_modules/@fontsource/inconsolata/latin-ext-800.css new file mode 100644 index 0000000..d4f8518 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-ext-800.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-ext-800-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 800; + src: url(./files/inconsolata-latin-ext-800-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-800-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-ext-900.css b/node_modules/@fontsource/inconsolata/latin-ext-900.css new file mode 100644 index 0000000..e454d06 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-ext-900.css @@ -0,0 +1,8 @@ +/* inconsolata-latin-ext-900-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/inconsolata-latin-ext-900-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin-ext.css b/node_modules/@fontsource/inconsolata/latin-ext.css new file mode 100644 index 0000000..d8436ae --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin-ext.css @@ -0,0 +1,71 @@ +/* inconsolata-latin-ext-200-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 200; + src: url(./files/inconsolata-latin-ext-200-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-200-normal.woff) format('woff'); +} + +/* inconsolata-latin-ext-300-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/inconsolata-latin-ext-300-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-300-normal.woff) format('woff'); +} + +/* inconsolata-latin-ext-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-latin-ext-400-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-400-normal.woff) format('woff'); +} + +/* inconsolata-latin-ext-500-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/inconsolata-latin-ext-500-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-500-normal.woff) format('woff'); +} + +/* inconsolata-latin-ext-600-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url(./files/inconsolata-latin-ext-600-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-600-normal.woff) format('woff'); +} + +/* inconsolata-latin-ext-700-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/inconsolata-latin-ext-700-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-700-normal.woff) format('woff'); +} + +/* inconsolata-latin-ext-800-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 800; + src: url(./files/inconsolata-latin-ext-800-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-800-normal.woff) format('woff'); +} + +/* inconsolata-latin-ext-900-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/inconsolata-latin-ext-900-normal.woff2) format('woff2'), url(./files/inconsolata-latin-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/latin.css b/node_modules/@fontsource/inconsolata/latin.css new file mode 100644 index 0000000..0caee52 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/latin.css @@ -0,0 +1,71 @@ +/* inconsolata-latin-200-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 200; + src: url(./files/inconsolata-latin-200-normal.woff2) format('woff2'), url(./files/inconsolata-latin-200-normal.woff) format('woff'); +} + +/* inconsolata-latin-300-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/inconsolata-latin-300-normal.woff2) format('woff2'), url(./files/inconsolata-latin-300-normal.woff) format('woff'); +} + +/* inconsolata-latin-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-latin-400-normal.woff2) format('woff2'), url(./files/inconsolata-latin-400-normal.woff) format('woff'); +} + +/* inconsolata-latin-500-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/inconsolata-latin-500-normal.woff2) format('woff2'), url(./files/inconsolata-latin-500-normal.woff) format('woff'); +} + +/* inconsolata-latin-600-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url(./files/inconsolata-latin-600-normal.woff2) format('woff2'), url(./files/inconsolata-latin-600-normal.woff) format('woff'); +} + +/* inconsolata-latin-700-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/inconsolata-latin-700-normal.woff2) format('woff2'), url(./files/inconsolata-latin-700-normal.woff) format('woff'); +} + +/* inconsolata-latin-800-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 800; + src: url(./files/inconsolata-latin-800-normal.woff2) format('woff2'), url(./files/inconsolata-latin-800-normal.woff) format('woff'); +} + +/* inconsolata-latin-900-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/inconsolata-latin-900-normal.woff2) format('woff2'), url(./files/inconsolata-latin-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/metadata.json b/node_modules/@fontsource/inconsolata/metadata.json new file mode 100644 index 0000000..0a43da4 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/metadata.json @@ -0,0 +1,22 @@ +{ + "id": "inconsolata", + "family": "Inconsolata", + "subsets": ["latin", "latin-ext", "vietnamese"], + "weights": [200, 300, 400, 500, 600, 700, 800, 900], + "styles": ["normal"], + "defSubset": "latin", + "variable": { + "wdth": {"default": "100", "min": "50", "max": "200", "step": "0.1"}, + "wght": {"default": "400", "min": "200", "max": "900", "step": "1"} + }, + "lastModified": "2023-09-14", + "version": "v32", + "category": "monospace", + "license": { + "type": "OFL-1.1", + "url": "http://scripts.sil.org/OFL", + "attribution": "Copyright 2006 The Inconsolata Project Authors (https://github.com/cyrealtype/Inconsolata)" + }, + "source": "https://github.com/google/fonts", + "type": "google" +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/package.json b/node_modules/@fontsource/inconsolata/package.json new file mode 100644 index 0000000..70e89df --- /dev/null +++ b/node_modules/@fontsource/inconsolata/package.json @@ -0,0 +1,30 @@ +{ + "name": "@fontsource/inconsolata", + "version": "5.0.18", + "description": "Self-host the Inconsolata font in a neatly bundled NPM package.", + "main": "index.css", + "publishConfig": {"access": "public"}, + "keywords": [ + "fontsource", + "font", + "font family", + "google fonts", + "inconsolata", + "Inconsolata", + "css", + "sass", + "front-end", + "web", + "typeface", + "variable" + ], + "author": "Google Inc.", + "license": "OFL-1.1", + "homepage": "https://fontsource.org/fonts/inconsolata", + "repository": { + "type": "git", + "url": "https://github.com/fontsource/font-files.git", + "directory": "fonts/google/inconsolata" + }, + "publishHash": "9fceda5e6eac436c" +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/scss/metadata.scss b/node_modules/@fontsource/inconsolata/scss/metadata.scss new file mode 100644 index 0000000..2116836 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/scss/metadata.scss @@ -0,0 +1,18 @@ +$id: 'inconsolata' !default; +$family: 'Inconsolata' !default; +$category: monospace !default; +$subsets: (latin, latin-ext, vietnamese) !default; +$weights: (200, 300, 400, 500, 600, 700, 800, 900) !default; +$styles: (normal) !default; +$axes: null !default; +$defaults: ( + subset: latin, + weight: 400, + style: normal, + axis: null, +) !default; +$unicode: ( + vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB), + latin-ext: (U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF), + latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), +) !default; diff --git a/node_modules/@fontsource/inconsolata/scss/mixins.scss b/node_modules/@fontsource/inconsolata/scss/mixins.scss new file mode 100644 index 0000000..0571337 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/scss/mixins.scss @@ -0,0 +1,192 @@ +@use 'sass:list'; +@use 'sass:map'; +@use 'sass:math'; +@use 'sass:meta'; +@use 'sass:string'; + +@use 'metadata'; + +$metadata: meta.module-variables(metadata) !default; +$directory: null !default; + +$family: null !default; +$display: null !default; +$formats: null !default; +$subsets: null !default; +$weights: null !default; +$styles: null !default; +$axes: null !default; + +// Deprecated +$displayVar: null !default; + +@mixin generator( + $metadata: $metadata, + $directory: $directory, + $family: $family, + $display: $display, + $formats: $formats, + $subsets: $subsets, + $weights: $weights, + $styles: $styles, + $axes: $axes, + + // Deprecated + $displayVar: $displayVar +) { + + @if $displayVar != null { + @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726)."; + } + + $isVariable: map.get($metadata, axes) != null; + + $directory: if( + $directory, + $directory, + '~@fontsource#{if($isVariable, '-variable', '')}/#{map.get($metadata, id)}/files' + ); + + $family: if($family, $family, map.get($metadata, family) + if($isVariable, ' Variable', '')); + $display: if($display, $display, swap); + $formats: if(not $formats or $formats == all, if($isVariable, woff2, (woff2, woff)), $formats); + $subsets: if( + $subsets, + if($subsets == all, map.get($metadata, subsets), $subsets), + map.get($metadata, subsets) + ); + $weights: if( + $weights, + if($weights == all, map.get($metadata, weights), $weights), + map.get($metadata, defaults, weight) + ); + $styles: if( + $styles, + if($styles == all, map.get($metadata, styles), $styles), + map.get($metadata, defaults, style) + ); + $axes: if( + $axes, + if($axes == all, full, $axes), + if($isVariable, if(map.has-key($metadata, axes, wght), wght, full), null) + ); + + @each $subset in $subsets { + @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) { + // If condition is true, generate faces for the current subset + @if ( + // If there is no unicode information for the font or + ($unicodeSubset == null) or + // If the subset match a unicode subset or + ($subset == $unicodeSubset) or + ( + // If $unicodeSubset is a numeric unicode subset + // and current subset exists in the list of font subsets but does not match any unicode subset + // then generate faces for this numeric unicode subset as it is representing part of the current subset + list.index(map.get($metadata, subsets), $subset) and not + map.has-key($metadata, unicode, $subset) and not + list.index(map.get($metadata, subsets), $unicodeSubset) + ) + ) { + @each $weight in if($axes, null, $weights) { + @each $axis in $axes { + @each $style in $styles { + $variant: '#{map.get($metadata, id)}-#{if($unicodeSubset, $unicodeSubset, $subset)}-#{if($axis, $axis, $weight)}-#{$style}'; + + $src: (); + @each $format in $formats { + $src: append( + $src, + url('#{$directory}/#{$variant}.#{$format}') + format('#{$format}#{if($axis, '-variations', '')}'), + comma + ); + } + + @content (( + metadata: $metadata, + directory: $directory, + family: $family, + display: $display, + formats: $formats, + subsets: $subsets, + weights: $weights, + styles: $styles, + axes: $axes, + + variant: $variant, + subset: $subset, + unicodeSubset: $unicodeSubset, + unicodeRange: $unicodeRange, + weight: $weight, + axis: $axis, + style: $style, + + font-family: string.quote($family), + font-style: if( + (($axis == full) or ($axis == slnt)) and map.has-key($metadata, axes, slnt), + oblique map.get($metadata, axes, slnt, min) + deg map.get($metadata, axes, slnt, max) + deg, + $style + ), + font-display: $display, + font-weight: if( + (($axis == full) or ($axis == wght)) and map.has-key($metadata, axes, wght), + map.get($metadata, axes, wght, min) map.get($metadata, axes, wght, max), + $weight + ), + font-stretch: if( + (($axis == full) or ($axis == wdth)) and map.has-key($metadata, axes, wdth), + '#{map.get($metadata, axes, wdth, min)}% #{map.get($metadata, axes, wdth, max)}%', + null + ), + src: $src, + unicode-range: $unicodeRange, + )); + } + } + } + } + } + } +} + +@mixin faces( + $metadata: $metadata, + $directory: $directory, + $family: $family, + $display: $display, + $formats: $formats, + $subsets: $subsets, + $weights: $weights, + $styles: $styles, + $axes: $axes, + + // Deprecated + $displayVar: $displayVar +) { + @include generator( + $metadata: $metadata, + $directory: $directory, + $family: $family, + $display: $display, + $formats: $formats, + $subsets: $subsets, + $weights: $weights, + $styles: $styles, + $axes: $axes, + + $displayVar: $displayVar + ) + using ($props) { + /* #{map.get($props, variant)} */ + @font-face { + font-family: map.get($props, font-family); + font-style: map.get($props, font-style); + font-display: map.get($props, font-display); + font-weight: map.get($props, font-weight); + font-stretch: map.get($props, font-stretch); + unicode-range: map.get($props, unicode-range); + src: map.get($props, src); + } + } +} diff --git a/node_modules/@fontsource/inconsolata/unicode.json b/node_modules/@fontsource/inconsolata/unicode.json new file mode 100644 index 0000000..099a698 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/unicode.json @@ -0,0 +1,5 @@ +{ + "vietnamese": "U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB", + "latin-ext": "U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF", + "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/vietnamese-200.css b/node_modules/@fontsource/inconsolata/vietnamese-200.css new file mode 100644 index 0000000..e3f90c7 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/vietnamese-200.css @@ -0,0 +1,8 @@ +/* inconsolata-vietnamese-200-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 200; + src: url(./files/inconsolata-vietnamese-200-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-200-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/vietnamese-300.css b/node_modules/@fontsource/inconsolata/vietnamese-300.css new file mode 100644 index 0000000..e8957a4 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/vietnamese-300.css @@ -0,0 +1,8 @@ +/* inconsolata-vietnamese-300-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/inconsolata-vietnamese-300-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/vietnamese-400.css b/node_modules/@fontsource/inconsolata/vietnamese-400.css new file mode 100644 index 0000000..b1f8661 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/vietnamese-400.css @@ -0,0 +1,8 @@ +/* inconsolata-vietnamese-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-vietnamese-400-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/vietnamese-500.css b/node_modules/@fontsource/inconsolata/vietnamese-500.css new file mode 100644 index 0000000..4436a2f --- /dev/null +++ b/node_modules/@fontsource/inconsolata/vietnamese-500.css @@ -0,0 +1,8 @@ +/* inconsolata-vietnamese-500-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/inconsolata-vietnamese-500-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/vietnamese-600.css b/node_modules/@fontsource/inconsolata/vietnamese-600.css new file mode 100644 index 0000000..d0035c4 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/vietnamese-600.css @@ -0,0 +1,8 @@ +/* inconsolata-vietnamese-600-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url(./files/inconsolata-vietnamese-600-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-600-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/vietnamese-700.css b/node_modules/@fontsource/inconsolata/vietnamese-700.css new file mode 100644 index 0000000..f8cd35a --- /dev/null +++ b/node_modules/@fontsource/inconsolata/vietnamese-700.css @@ -0,0 +1,8 @@ +/* inconsolata-vietnamese-700-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/inconsolata-vietnamese-700-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/vietnamese-800.css b/node_modules/@fontsource/inconsolata/vietnamese-800.css new file mode 100644 index 0000000..0bdd073 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/vietnamese-800.css @@ -0,0 +1,8 @@ +/* inconsolata-vietnamese-800-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 800; + src: url(./files/inconsolata-vietnamese-800-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-800-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/vietnamese-900.css b/node_modules/@fontsource/inconsolata/vietnamese-900.css new file mode 100644 index 0000000..6dd5112 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/vietnamese-900.css @@ -0,0 +1,8 @@ +/* inconsolata-vietnamese-900-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/inconsolata-vietnamese-900-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/inconsolata/vietnamese.css b/node_modules/@fontsource/inconsolata/vietnamese.css new file mode 100644 index 0000000..38b5fa8 --- /dev/null +++ b/node_modules/@fontsource/inconsolata/vietnamese.css @@ -0,0 +1,71 @@ +/* inconsolata-vietnamese-200-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 200; + src: url(./files/inconsolata-vietnamese-200-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-200-normal.woff) format('woff'); +} + +/* inconsolata-vietnamese-300-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/inconsolata-vietnamese-300-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-300-normal.woff) format('woff'); +} + +/* inconsolata-vietnamese-400-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/inconsolata-vietnamese-400-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-400-normal.woff) format('woff'); +} + +/* inconsolata-vietnamese-500-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/inconsolata-vietnamese-500-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-500-normal.woff) format('woff'); +} + +/* inconsolata-vietnamese-600-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 600; + src: url(./files/inconsolata-vietnamese-600-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-600-normal.woff) format('woff'); +} + +/* inconsolata-vietnamese-700-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/inconsolata-vietnamese-700-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-700-normal.woff) format('woff'); +} + +/* inconsolata-vietnamese-800-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 800; + src: url(./files/inconsolata-vietnamese-800-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-800-normal.woff) format('woff'); +} + +/* inconsolata-vietnamese-900-normal */ +@font-face { + font-family: 'Inconsolata'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/inconsolata-vietnamese-900-normal.woff2) format('woff2'), url(./files/inconsolata-vietnamese-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/300-italic.css b/node_modules/@fontsource/merriweather/300-italic.css new file mode 100644 index 0000000..1cdc72a --- /dev/null +++ b/node_modules/@fontsource/merriweather/300-italic.css @@ -0,0 +1,49 @@ +/* merriweather-cyrillic-ext-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-ext-300-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-300-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* merriweather-cyrillic-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-300-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-300-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* merriweather-vietnamese-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-vietnamese-300-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-300-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* merriweather-latin-ext-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-ext-300-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-300-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* merriweather-latin-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-300-italic.woff2) format('woff2'), url(./files/merriweather-latin-300-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/300.css b/node_modules/@fontsource/merriweather/300.css new file mode 100644 index 0000000..baef8e7 --- /dev/null +++ b/node_modules/@fontsource/merriweather/300.css @@ -0,0 +1,49 @@ +/* merriweather-cyrillic-ext-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-300-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* merriweather-cyrillic-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-300-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-300-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* merriweather-vietnamese-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-vietnamese-300-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-300-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* merriweather-latin-ext-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-ext-300-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-300-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* merriweather-latin-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-300-normal.woff2) format('woff2'), url(./files/merriweather-latin-300-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/400-italic.css b/node_modules/@fontsource/merriweather/400-italic.css new file mode 100644 index 0000000..d41a018 --- /dev/null +++ b/node_modules/@fontsource/merriweather/400-italic.css @@ -0,0 +1,49 @@ +/* merriweather-cyrillic-ext-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-ext-400-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-400-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* merriweather-cyrillic-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-400-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-400-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* merriweather-vietnamese-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-vietnamese-400-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-400-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* merriweather-latin-ext-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-ext-400-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-400-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* merriweather-latin-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-400-italic.woff2) format('woff2'), url(./files/merriweather-latin-400-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/400.css b/node_modules/@fontsource/merriweather/400.css new file mode 100644 index 0000000..b00b458 --- /dev/null +++ b/node_modules/@fontsource/merriweather/400.css @@ -0,0 +1,49 @@ +/* merriweather-cyrillic-ext-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-400-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* merriweather-cyrillic-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-400-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-400-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* merriweather-vietnamese-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-vietnamese-400-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-400-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* merriweather-latin-ext-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-ext-400-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-400-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* merriweather-latin-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-400-normal.woff2) format('woff2'), url(./files/merriweather-latin-400-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/700-italic.css b/node_modules/@fontsource/merriweather/700-italic.css new file mode 100644 index 0000000..1957f54 --- /dev/null +++ b/node_modules/@fontsource/merriweather/700-italic.css @@ -0,0 +1,49 @@ +/* merriweather-cyrillic-ext-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-ext-700-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-700-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* merriweather-cyrillic-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-700-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-700-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* merriweather-vietnamese-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-vietnamese-700-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-700-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* merriweather-latin-ext-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-ext-700-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-700-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* merriweather-latin-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-700-italic.woff2) format('woff2'), url(./files/merriweather-latin-700-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/700.css b/node_modules/@fontsource/merriweather/700.css new file mode 100644 index 0000000..6bcc966 --- /dev/null +++ b/node_modules/@fontsource/merriweather/700.css @@ -0,0 +1,49 @@ +/* merriweather-cyrillic-ext-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-700-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* merriweather-cyrillic-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-700-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-700-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* merriweather-vietnamese-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-vietnamese-700-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-700-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* merriweather-latin-ext-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-ext-700-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-700-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* merriweather-latin-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-700-normal.woff2) format('woff2'), url(./files/merriweather-latin-700-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/900-italic.css b/node_modules/@fontsource/merriweather/900-italic.css new file mode 100644 index 0000000..19d12df --- /dev/null +++ b/node_modules/@fontsource/merriweather/900-italic.css @@ -0,0 +1,49 @@ +/* merriweather-cyrillic-ext-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-ext-900-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-900-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* merriweather-cyrillic-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-900-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-900-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* merriweather-vietnamese-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-vietnamese-900-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-900-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* merriweather-latin-ext-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-ext-900-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-900-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* merriweather-latin-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-900-italic.woff2) format('woff2'), url(./files/merriweather-latin-900-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/900.css b/node_modules/@fontsource/merriweather/900.css new file mode 100644 index 0000000..c6f45f0 --- /dev/null +++ b/node_modules/@fontsource/merriweather/900.css @@ -0,0 +1,49 @@ +/* merriweather-cyrillic-ext-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-ext-900-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-900-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* merriweather-cyrillic-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-900-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-900-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* merriweather-vietnamese-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-vietnamese-900-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-900-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* merriweather-latin-ext-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-ext-900-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-900-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* merriweather-latin-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-900-normal.woff2) format('woff2'), url(./files/merriweather-latin-900-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/CHANGELOG.md b/node_modules/@fontsource/merriweather/CHANGELOG.md new file mode 100644 index 0000000..e798685 --- /dev/null +++ b/node_modules/@fontsource/merriweather/CHANGELOG.md @@ -0,0 +1,2 @@ +# Changelog +See the [Fontsource CHANGELOG.md](https://github.com/fontsource/fontsource/blob/main/CHANGELOG.md). \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/LICENSE b/node_modules/@fontsource/merriweather/LICENSE new file mode 100644 index 0000000..a7ce180 --- /dev/null +++ b/node_modules/@fontsource/merriweather/LICENSE @@ -0,0 +1,93 @@ +Copyright 2016 The Merriweather Project Authors (https://github.com/EbenSorkin/Merriweather), with Reserved Font Name "Merriweather". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The 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. + +The 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. + +DEFINITIONS +"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. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"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. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission 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: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) 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. + +3) 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. + +4) 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. + +5) 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. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE 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. diff --git a/node_modules/@fontsource/merriweather/README.md b/node_modules/@fontsource/merriweather/README.md new file mode 100644 index 0000000..8de9100 --- /dev/null +++ b/node_modules/@fontsource/merriweather/README.md @@ -0,0 +1,47 @@ +# Fontsource Merriweather + +[![npm (scoped)](https://img.shields.io/npm/v/@fontsource/merriweather?color=brightgreen)](https://www.npmjs.com/package/@fontsource/merriweather) [![Generic badge](https://img.shields.io/badge/fontsource-passing-brightgreen)](https://github.com/fontsource/fontsource) [![Monthly downloads](https://badgen.net/npm/dm/@fontsource/merriweather)](https://github.com/fontsource/fontsource) [![Total downloads](https://badgen.net/npm/dt/@fontsource/merriweather)](https://github.com/fontsource/fontsource) [![GitHub stars](https://img.shields.io/github/stars/fontsource/fontsource.svg?style=social&label=Star)](https://github.com/fontsource/fontsource/stargazers) + +The CSS and web font files to easily self-host the “Merriweather” font. Please visit the main [Fontsource website](https://fontsource.org/fonts/merriweather) to view more details on this package. + +## Quick Installation + +Fontsource offers multiple methods to import the CSS, including using a bundler like Vite or using SASS. You can find full documentation [here](https://fontsource.org/docs/getting-started/introduction). + +```javascript +npm install @fontsource/merriweather +``` + +Within your app entry file or site component, import it in. + +```javascript +import "@fontsource/merriweather"; // Defaults to weight 400 +import "@fontsource/merriweather/400.css"; // Specify weight +import "@fontsource/merriweather/400-italic.css"; // Specify weight and style +``` + +Supported variables: +- Weights: `[300,400,700,900]` +- Styles: `[italic,normal]` +- Subsets: `[cyrillic,cyrillic-ext,latin,latin-ext,vietnamese]` + +> Note: `italic` may not be supported by all fonts. To learn more about what weights and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/merriweather). + +Finally, you can reference the font name in a CSS stylesheet, CSS Module, or CSS-in-JS. + +```css +body { + font-family: "Merriweather"; +} +``` + +## Licensing +Always make sure to read the license for each font you use. Most of the fonts in the collection use the SIL Open Font License, v1.1. Some fonts use the Apache 2 license. The Ubuntu fonts use the Ubuntu Font License v1.0. + +Copyright 2016 The Merriweather Project Authors (https://github.com/EbenSorkin/Merriweather), with Reserved Font Name "Merriweather". +[OFL-1.1](http://scripts.sil.org/OFL) + +## Other Notes +Font version (provided by source): `v30`. + +If you have any suggestions or ideas to improve the performance of font loading or expand the existing library, feel free to star and contribute to this repository. You can share your suggestions or ideas by creating an [issue](https://github.com/fontsource/fontsource/issues). \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-300-italic.css b/node_modules/@fontsource/merriweather/cyrillic-300-italic.css new file mode 100644 index 0000000..af39b74 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-300-italic.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-300-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-300.css b/node_modules/@fontsource/merriweather/cyrillic-300.css new file mode 100644 index 0000000..a4baf0f --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-300.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-300-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-400-italic.css b/node_modules/@fontsource/merriweather/cyrillic-400-italic.css new file mode 100644 index 0000000..3387189 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-400-italic.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-400-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-400.css b/node_modules/@fontsource/merriweather/cyrillic-400.css new file mode 100644 index 0000000..40cf2fc --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-400.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-400-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-700-italic.css b/node_modules/@fontsource/merriweather/cyrillic-700-italic.css new file mode 100644 index 0000000..2c5b7a3 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-700-italic.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-700-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-700.css b/node_modules/@fontsource/merriweather/cyrillic-700.css new file mode 100644 index 0000000..53feca9 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-700.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-700-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-900-italic.css b/node_modules/@fontsource/merriweather/cyrillic-900-italic.css new file mode 100644 index 0000000..4eb1f80 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-900-italic.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-900-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-900.css b/node_modules/@fontsource/merriweather/cyrillic-900.css new file mode 100644 index 0000000..2e84d20 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-900.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-900-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext-300-italic.css b/node_modules/@fontsource/merriweather/cyrillic-ext-300-italic.css new file mode 100644 index 0000000..133b260 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext-300-italic.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-ext-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-ext-300-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext-300.css b/node_modules/@fontsource/merriweather/cyrillic-ext-300.css new file mode 100644 index 0000000..48a3e12 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext-300.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-ext-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext-400-italic.css b/node_modules/@fontsource/merriweather/cyrillic-ext-400-italic.css new file mode 100644 index 0000000..d23aeb7 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext-400-italic.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-ext-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-ext-400-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext-400.css b/node_modules/@fontsource/merriweather/cyrillic-ext-400.css new file mode 100644 index 0000000..ee3de89 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext-400.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-ext-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext-700-italic.css b/node_modules/@fontsource/merriweather/cyrillic-ext-700-italic.css new file mode 100644 index 0000000..2a99da0 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext-700-italic.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-ext-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-ext-700-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext-700.css b/node_modules/@fontsource/merriweather/cyrillic-ext-700.css new file mode 100644 index 0000000..85d90c3 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext-700.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-ext-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext-900-italic.css b/node_modules/@fontsource/merriweather/cyrillic-ext-900-italic.css new file mode 100644 index 0000000..ed4f36f --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext-900-italic.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-ext-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-ext-900-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext-900.css b/node_modules/@fontsource/merriweather/cyrillic-ext-900.css new file mode 100644 index 0000000..2da63d7 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext-900.css @@ -0,0 +1,8 @@ +/* merriweather-cyrillic-ext-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-ext-900-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext-italic.css b/node_modules/@fontsource/merriweather/cyrillic-ext-italic.css new file mode 100644 index 0000000..fc1b1bb --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext-italic.css @@ -0,0 +1,35 @@ +/* merriweather-cyrillic-ext-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-ext-300-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-300-italic.woff) format('woff'); +} + +/* merriweather-cyrillic-ext-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-ext-400-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-400-italic.woff) format('woff'); +} + +/* merriweather-cyrillic-ext-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-ext-700-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-700-italic.woff) format('woff'); +} + +/* merriweather-cyrillic-ext-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-ext-900-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-ext.css b/node_modules/@fontsource/merriweather/cyrillic-ext.css new file mode 100644 index 0000000..e82065a --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-ext.css @@ -0,0 +1,35 @@ +/* merriweather-cyrillic-ext-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-300-normal.woff) format('woff'); +} + +/* merriweather-cyrillic-ext-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-400-normal.woff) format('woff'); +} + +/* merriweather-cyrillic-ext-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-700-normal.woff) format('woff'); +} + +/* merriweather-cyrillic-ext-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-ext-900-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic-italic.css b/node_modules/@fontsource/merriweather/cyrillic-italic.css new file mode 100644 index 0000000..a25e0b4 --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic-italic.css @@ -0,0 +1,35 @@ +/* merriweather-cyrillic-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-300-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-300-italic.woff) format('woff'); +} + +/* merriweather-cyrillic-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-400-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-400-italic.woff) format('woff'); +} + +/* merriweather-cyrillic-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-700-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-700-italic.woff) format('woff'); +} + +/* merriweather-cyrillic-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-900-italic.woff2) format('woff2'), url(./files/merriweather-cyrillic-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/cyrillic.css b/node_modules/@fontsource/merriweather/cyrillic.css new file mode 100644 index 0000000..0d1bf0b --- /dev/null +++ b/node_modules/@fontsource/merriweather/cyrillic.css @@ -0,0 +1,35 @@ +/* merriweather-cyrillic-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-cyrillic-300-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-300-normal.woff) format('woff'); +} + +/* merriweather-cyrillic-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-400-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-400-normal.woff) format('woff'); +} + +/* merriweather-cyrillic-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-cyrillic-700-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-700-normal.woff) format('woff'); +} + +/* merriweather-cyrillic-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-cyrillic-900-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-italic.woff new file mode 100644 index 0000000..609f048 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-italic.woff2 new file mode 100644 index 0000000..71e8f7e Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-normal.woff new file mode 100644 index 0000000..b763963 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-normal.woff2 new file mode 100644 index 0000000..11d8cdd Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-300-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-italic.woff new file mode 100644 index 0000000..2738834 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-italic.woff2 new file mode 100644 index 0000000..ae7da0a Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-normal.woff new file mode 100644 index 0000000..a5f2682 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-normal.woff2 new file mode 100644 index 0000000..807c31d Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-400-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-italic.woff new file mode 100644 index 0000000..f90f5e2 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-italic.woff2 new file mode 100644 index 0000000..6c5b344 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-normal.woff new file mode 100644 index 0000000..fac720b Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-normal.woff2 new file mode 100644 index 0000000..0050186 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-700-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-italic.woff new file mode 100644 index 0000000..b7282e9 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-italic.woff2 new file mode 100644 index 0000000..70a6e07 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-normal.woff new file mode 100644 index 0000000..ca4ffd9 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-normal.woff2 new file mode 100644 index 0000000..01ccf85 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-900-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-italic.woff new file mode 100644 index 0000000..2e9c3d4 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-italic.woff2 new file mode 100644 index 0000000..0bc4aac Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-normal.woff new file mode 100644 index 0000000..927055c Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-normal.woff2 new file mode 100644 index 0000000..8874d2c Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-300-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-italic.woff new file mode 100644 index 0000000..5adedbc Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-italic.woff2 new file mode 100644 index 0000000..d3ec576 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-normal.woff new file mode 100644 index 0000000..33165d2 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-normal.woff2 new file mode 100644 index 0000000..49c00d5 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-400-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-italic.woff new file mode 100644 index 0000000..4d4a17a Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-italic.woff2 new file mode 100644 index 0000000..89d4d19 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-normal.woff new file mode 100644 index 0000000..886a34f Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-normal.woff2 new file mode 100644 index 0000000..1a4d41b Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-700-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-italic.woff new file mode 100644 index 0000000..f5b4616 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-italic.woff2 new file mode 100644 index 0000000..d0fe620 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-normal.woff new file mode 100644 index 0000000..d3ea4d0 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-normal.woff2 new file mode 100644 index 0000000..82028c9 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-cyrillic-ext-900-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-300-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-300-italic.woff new file mode 100644 index 0000000..fb7797e Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-300-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-300-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-300-italic.woff2 new file mode 100644 index 0000000..0c7b8ed Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-300-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-300-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-300-normal.woff new file mode 100644 index 0000000..ba2d129 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-300-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-300-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-300-normal.woff2 new file mode 100644 index 0000000..a119883 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-300-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-400-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-400-italic.woff new file mode 100644 index 0000000..e15678c Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-400-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-400-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-400-italic.woff2 new file mode 100644 index 0000000..38bfa01 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-400-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-400-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-400-normal.woff new file mode 100644 index 0000000..7a4624c Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-400-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-400-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-400-normal.woff2 new file mode 100644 index 0000000..6515c26 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-400-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-700-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-700-italic.woff new file mode 100644 index 0000000..54f2a2b Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-700-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-700-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-700-italic.woff2 new file mode 100644 index 0000000..2048135 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-700-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-700-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-700-normal.woff new file mode 100644 index 0000000..45e3645 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-700-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-700-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-700-normal.woff2 new file mode 100644 index 0000000..a6919a9 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-700-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-900-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-900-italic.woff new file mode 100644 index 0000000..20b2781 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-900-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-900-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-900-italic.woff2 new file mode 100644 index 0000000..d7cdeaa Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-900-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-900-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-900-normal.woff new file mode 100644 index 0000000..9102530 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-900-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-900-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-900-normal.woff2 new file mode 100644 index 0000000..4e3aec9 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-900-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-italic.woff new file mode 100644 index 0000000..f9e5cb5 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-italic.woff2 new file mode 100644 index 0000000..8a6b26f Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-normal.woff new file mode 100644 index 0000000..b6be5f3 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-normal.woff2 new file mode 100644 index 0000000..ff2d483 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-300-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-italic.woff new file mode 100644 index 0000000..7ddcfbf Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-italic.woff2 new file mode 100644 index 0000000..bc826ae Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-normal.woff new file mode 100644 index 0000000..c188e74 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-normal.woff2 new file mode 100644 index 0000000..3747036 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-400-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-italic.woff new file mode 100644 index 0000000..4a05af7 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-italic.woff2 new file mode 100644 index 0000000..4efb9a0 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-normal.woff new file mode 100644 index 0000000..979e25d Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-normal.woff2 new file mode 100644 index 0000000..568643c Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-700-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-italic.woff new file mode 100644 index 0000000..880ace8 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-italic.woff2 new file mode 100644 index 0000000..83258cb Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-normal.woff new file mode 100644 index 0000000..75df114 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-normal.woff2 new file mode 100644 index 0000000..86d5720 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-latin-ext-900-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-italic.woff new file mode 100644 index 0000000..bc562d6 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-italic.woff2 new file mode 100644 index 0000000..ff20a5b Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-normal.woff new file mode 100644 index 0000000..195cc12 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-normal.woff2 new file mode 100644 index 0000000..b250a2d Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-300-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-italic.woff new file mode 100644 index 0000000..3bbf684 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-italic.woff2 new file mode 100644 index 0000000..4029111 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-normal.woff new file mode 100644 index 0000000..37388c5 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-normal.woff2 new file mode 100644 index 0000000..7f87ba2 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-400-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-italic.woff new file mode 100644 index 0000000..223a36d Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-italic.woff2 new file mode 100644 index 0000000..4cb4c33 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-normal.woff new file mode 100644 index 0000000..9ce89ef Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-normal.woff2 new file mode 100644 index 0000000..7dda0ca Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-700-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-italic.woff b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-italic.woff new file mode 100644 index 0000000..93de318 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-italic.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-italic.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-italic.woff2 new file mode 100644 index 0000000..4172d4d Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-italic.woff2 differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-normal.woff b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-normal.woff new file mode 100644 index 0000000..edf4487 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-normal.woff differ diff --git a/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-normal.woff2 b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-normal.woff2 new file mode 100644 index 0000000..b527029 Binary files /dev/null and b/node_modules/@fontsource/merriweather/files/merriweather-vietnamese-900-normal.woff2 differ diff --git a/node_modules/@fontsource/merriweather/index.css b/node_modules/@fontsource/merriweather/index.css new file mode 100644 index 0000000..b00b458 --- /dev/null +++ b/node_modules/@fontsource/merriweather/index.css @@ -0,0 +1,49 @@ +/* merriweather-cyrillic-ext-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-ext-400-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* merriweather-cyrillic-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-cyrillic-400-normal.woff2) format('woff2'), url(./files/merriweather-cyrillic-400-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* merriweather-vietnamese-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-vietnamese-400-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-400-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* merriweather-latin-ext-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-ext-400-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-400-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* merriweather-latin-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-400-normal.woff2) format('woff2'), url(./files/merriweather-latin-400-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-300-italic.css b/node_modules/@fontsource/merriweather/latin-300-italic.css new file mode 100644 index 0000000..013498b --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-300-italic.css @@ -0,0 +1,8 @@ +/* merriweather-latin-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-300-italic.woff2) format('woff2'), url(./files/merriweather-latin-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-300.css b/node_modules/@fontsource/merriweather/latin-300.css new file mode 100644 index 0000000..48298fd --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-300.css @@ -0,0 +1,8 @@ +/* merriweather-latin-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-300-normal.woff2) format('woff2'), url(./files/merriweather-latin-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-400-italic.css b/node_modules/@fontsource/merriweather/latin-400-italic.css new file mode 100644 index 0000000..54f3e7b --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-400-italic.css @@ -0,0 +1,8 @@ +/* merriweather-latin-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-400-italic.woff2) format('woff2'), url(./files/merriweather-latin-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-400.css b/node_modules/@fontsource/merriweather/latin-400.css new file mode 100644 index 0000000..573619b --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-400.css @@ -0,0 +1,8 @@ +/* merriweather-latin-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-400-normal.woff2) format('woff2'), url(./files/merriweather-latin-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-700-italic.css b/node_modules/@fontsource/merriweather/latin-700-italic.css new file mode 100644 index 0000000..db772f3 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-700-italic.css @@ -0,0 +1,8 @@ +/* merriweather-latin-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-700-italic.woff2) format('woff2'), url(./files/merriweather-latin-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-700.css b/node_modules/@fontsource/merriweather/latin-700.css new file mode 100644 index 0000000..93382f2 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-700.css @@ -0,0 +1,8 @@ +/* merriweather-latin-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-700-normal.woff2) format('woff2'), url(./files/merriweather-latin-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-900-italic.css b/node_modules/@fontsource/merriweather/latin-900-italic.css new file mode 100644 index 0000000..5739dd2 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-900-italic.css @@ -0,0 +1,8 @@ +/* merriweather-latin-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-900-italic.woff2) format('woff2'), url(./files/merriweather-latin-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-900.css b/node_modules/@fontsource/merriweather/latin-900.css new file mode 100644 index 0000000..d1c2f08 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-900.css @@ -0,0 +1,8 @@ +/* merriweather-latin-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-900-normal.woff2) format('woff2'), url(./files/merriweather-latin-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext-300-italic.css b/node_modules/@fontsource/merriweather/latin-ext-300-italic.css new file mode 100644 index 0000000..4b2cbcf --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext-300-italic.css @@ -0,0 +1,8 @@ +/* merriweather-latin-ext-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-ext-300-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext-300.css b/node_modules/@fontsource/merriweather/latin-ext-300.css new file mode 100644 index 0000000..8bc220c --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext-300.css @@ -0,0 +1,8 @@ +/* merriweather-latin-ext-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-ext-300-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext-400-italic.css b/node_modules/@fontsource/merriweather/latin-ext-400-italic.css new file mode 100644 index 0000000..3405e70 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext-400-italic.css @@ -0,0 +1,8 @@ +/* merriweather-latin-ext-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-ext-400-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext-400.css b/node_modules/@fontsource/merriweather/latin-ext-400.css new file mode 100644 index 0000000..39cec26 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext-400.css @@ -0,0 +1,8 @@ +/* merriweather-latin-ext-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-ext-400-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext-700-italic.css b/node_modules/@fontsource/merriweather/latin-ext-700-italic.css new file mode 100644 index 0000000..aa75b04 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext-700-italic.css @@ -0,0 +1,8 @@ +/* merriweather-latin-ext-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-ext-700-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext-700.css b/node_modules/@fontsource/merriweather/latin-ext-700.css new file mode 100644 index 0000000..c1b0b87 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext-700.css @@ -0,0 +1,8 @@ +/* merriweather-latin-ext-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-ext-700-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext-900-italic.css b/node_modules/@fontsource/merriweather/latin-ext-900-italic.css new file mode 100644 index 0000000..f433415 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext-900-italic.css @@ -0,0 +1,8 @@ +/* merriweather-latin-ext-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-ext-900-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext-900.css b/node_modules/@fontsource/merriweather/latin-ext-900.css new file mode 100644 index 0000000..893cd08 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext-900.css @@ -0,0 +1,8 @@ +/* merriweather-latin-ext-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-ext-900-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext-italic.css b/node_modules/@fontsource/merriweather/latin-ext-italic.css new file mode 100644 index 0000000..d7e3dbb --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext-italic.css @@ -0,0 +1,35 @@ +/* merriweather-latin-ext-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-ext-300-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-300-italic.woff) format('woff'); +} + +/* merriweather-latin-ext-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-ext-400-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-400-italic.woff) format('woff'); +} + +/* merriweather-latin-ext-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-ext-700-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-700-italic.woff) format('woff'); +} + +/* merriweather-latin-ext-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-ext-900-italic.woff2) format('woff2'), url(./files/merriweather-latin-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-ext.css b/node_modules/@fontsource/merriweather/latin-ext.css new file mode 100644 index 0000000..d93cdd3 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-ext.css @@ -0,0 +1,35 @@ +/* merriweather-latin-ext-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-ext-300-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-300-normal.woff) format('woff'); +} + +/* merriweather-latin-ext-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-ext-400-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-400-normal.woff) format('woff'); +} + +/* merriweather-latin-ext-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-ext-700-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-700-normal.woff) format('woff'); +} + +/* merriweather-latin-ext-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-ext-900-normal.woff2) format('woff2'), url(./files/merriweather-latin-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin-italic.css b/node_modules/@fontsource/merriweather/latin-italic.css new file mode 100644 index 0000000..b053de8 --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin-italic.css @@ -0,0 +1,35 @@ +/* merriweather-latin-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-300-italic.woff2) format('woff2'), url(./files/merriweather-latin-300-italic.woff) format('woff'); +} + +/* merriweather-latin-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-400-italic.woff2) format('woff2'), url(./files/merriweather-latin-400-italic.woff) format('woff'); +} + +/* merriweather-latin-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-700-italic.woff2) format('woff2'), url(./files/merriweather-latin-700-italic.woff) format('woff'); +} + +/* merriweather-latin-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-900-italic.woff2) format('woff2'), url(./files/merriweather-latin-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/latin.css b/node_modules/@fontsource/merriweather/latin.css new file mode 100644 index 0000000..a13a81b --- /dev/null +++ b/node_modules/@fontsource/merriweather/latin.css @@ -0,0 +1,35 @@ +/* merriweather-latin-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-latin-300-normal.woff2) format('woff2'), url(./files/merriweather-latin-300-normal.woff) format('woff'); +} + +/* merriweather-latin-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-latin-400-normal.woff2) format('woff2'), url(./files/merriweather-latin-400-normal.woff) format('woff'); +} + +/* merriweather-latin-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-latin-700-normal.woff2) format('woff2'), url(./files/merriweather-latin-700-normal.woff) format('woff'); +} + +/* merriweather-latin-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-latin-900-normal.woff2) format('woff2'), url(./files/merriweather-latin-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/metadata.json b/node_modules/@fontsource/merriweather/metadata.json new file mode 100644 index 0000000..e416417 --- /dev/null +++ b/node_modules/@fontsource/merriweather/metadata.json @@ -0,0 +1,19 @@ +{ + "id": "merriweather", + "family": "Merriweather", + "subsets": ["cyrillic", "cyrillic-ext", "latin", "latin-ext", "vietnamese"], + "weights": [300, 400, 700, 900], + "styles": ["italic", "normal"], + "defSubset": "latin", + "variable": false, + "lastModified": "2022-09-22", + "version": "v30", + "category": "serif", + "license": { + "type": "OFL-1.1", + "url": "http://scripts.sil.org/OFL", + "attribution": "Copyright 2016 The Merriweather Project Authors (https://github.com/EbenSorkin/Merriweather), with Reserved Font Name \"Merriweather\"." + }, + "source": "https://github.com/google/fonts", + "type": "google" +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/package.json b/node_modules/@fontsource/merriweather/package.json new file mode 100644 index 0000000..f919829 --- /dev/null +++ b/node_modules/@fontsource/merriweather/package.json @@ -0,0 +1,30 @@ +{ + "name": "@fontsource/merriweather", + "version": "5.0.13", + "description": "Self-host the Merriweather font in a neatly bundled NPM package.", + "main": "index.css", + "publishConfig": {"access": "public"}, + "keywords": [ + "fontsource", + "font", + "font family", + "google fonts", + "merriweather", + "Merriweather", + "css", + "sass", + "front-end", + "web", + "typeface", + "variable" + ], + "author": "Google Inc.", + "license": "OFL-1.1", + "homepage": "https://fontsource.org/fonts/merriweather", + "repository": { + "type": "git", + "url": "https://github.com/fontsource/font-files.git", + "directory": "fonts/google/merriweather" + }, + "publishHash": "9ca2e3ef9b619b3e" +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/scss/metadata.scss b/node_modules/@fontsource/merriweather/scss/metadata.scss new file mode 100644 index 0000000..c5ca838 --- /dev/null +++ b/node_modules/@fontsource/merriweather/scss/metadata.scss @@ -0,0 +1,20 @@ +$id: 'merriweather' !default; +$family: 'Merriweather' !default; +$category: serif !default; +$subsets: (cyrillic, cyrillic-ext, latin, latin-ext, vietnamese) !default; +$weights: (300, 400, 700, 900) !default; +$styles: (italic, normal) !default; +$axes: null !default; +$defaults: ( + subset: latin, + weight: 400, + style: normal, + axis: null, +) !default; +$unicode: ( + cyrillic-ext: (U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F), + cyrillic: (U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116), + vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB), + latin-ext: (U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF), + latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), +) !default; diff --git a/node_modules/@fontsource/merriweather/scss/mixins.scss b/node_modules/@fontsource/merriweather/scss/mixins.scss new file mode 100644 index 0000000..0571337 --- /dev/null +++ b/node_modules/@fontsource/merriweather/scss/mixins.scss @@ -0,0 +1,192 @@ +@use 'sass:list'; +@use 'sass:map'; +@use 'sass:math'; +@use 'sass:meta'; +@use 'sass:string'; + +@use 'metadata'; + +$metadata: meta.module-variables(metadata) !default; +$directory: null !default; + +$family: null !default; +$display: null !default; +$formats: null !default; +$subsets: null !default; +$weights: null !default; +$styles: null !default; +$axes: null !default; + +// Deprecated +$displayVar: null !default; + +@mixin generator( + $metadata: $metadata, + $directory: $directory, + $family: $family, + $display: $display, + $formats: $formats, + $subsets: $subsets, + $weights: $weights, + $styles: $styles, + $axes: $axes, + + // Deprecated + $displayVar: $displayVar +) { + + @if $displayVar != null { + @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726)."; + } + + $isVariable: map.get($metadata, axes) != null; + + $directory: if( + $directory, + $directory, + '~@fontsource#{if($isVariable, '-variable', '')}/#{map.get($metadata, id)}/files' + ); + + $family: if($family, $family, map.get($metadata, family) + if($isVariable, ' Variable', '')); + $display: if($display, $display, swap); + $formats: if(not $formats or $formats == all, if($isVariable, woff2, (woff2, woff)), $formats); + $subsets: if( + $subsets, + if($subsets == all, map.get($metadata, subsets), $subsets), + map.get($metadata, subsets) + ); + $weights: if( + $weights, + if($weights == all, map.get($metadata, weights), $weights), + map.get($metadata, defaults, weight) + ); + $styles: if( + $styles, + if($styles == all, map.get($metadata, styles), $styles), + map.get($metadata, defaults, style) + ); + $axes: if( + $axes, + if($axes == all, full, $axes), + if($isVariable, if(map.has-key($metadata, axes, wght), wght, full), null) + ); + + @each $subset in $subsets { + @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) { + // If condition is true, generate faces for the current subset + @if ( + // If there is no unicode information for the font or + ($unicodeSubset == null) or + // If the subset match a unicode subset or + ($subset == $unicodeSubset) or + ( + // If $unicodeSubset is a numeric unicode subset + // and current subset exists in the list of font subsets but does not match any unicode subset + // then generate faces for this numeric unicode subset as it is representing part of the current subset + list.index(map.get($metadata, subsets), $subset) and not + map.has-key($metadata, unicode, $subset) and not + list.index(map.get($metadata, subsets), $unicodeSubset) + ) + ) { + @each $weight in if($axes, null, $weights) { + @each $axis in $axes { + @each $style in $styles { + $variant: '#{map.get($metadata, id)}-#{if($unicodeSubset, $unicodeSubset, $subset)}-#{if($axis, $axis, $weight)}-#{$style}'; + + $src: (); + @each $format in $formats { + $src: append( + $src, + url('#{$directory}/#{$variant}.#{$format}') + format('#{$format}#{if($axis, '-variations', '')}'), + comma + ); + } + + @content (( + metadata: $metadata, + directory: $directory, + family: $family, + display: $display, + formats: $formats, + subsets: $subsets, + weights: $weights, + styles: $styles, + axes: $axes, + + variant: $variant, + subset: $subset, + unicodeSubset: $unicodeSubset, + unicodeRange: $unicodeRange, + weight: $weight, + axis: $axis, + style: $style, + + font-family: string.quote($family), + font-style: if( + (($axis == full) or ($axis == slnt)) and map.has-key($metadata, axes, slnt), + oblique map.get($metadata, axes, slnt, min) + deg map.get($metadata, axes, slnt, max) + deg, + $style + ), + font-display: $display, + font-weight: if( + (($axis == full) or ($axis == wght)) and map.has-key($metadata, axes, wght), + map.get($metadata, axes, wght, min) map.get($metadata, axes, wght, max), + $weight + ), + font-stretch: if( + (($axis == full) or ($axis == wdth)) and map.has-key($metadata, axes, wdth), + '#{map.get($metadata, axes, wdth, min)}% #{map.get($metadata, axes, wdth, max)}%', + null + ), + src: $src, + unicode-range: $unicodeRange, + )); + } + } + } + } + } + } +} + +@mixin faces( + $metadata: $metadata, + $directory: $directory, + $family: $family, + $display: $display, + $formats: $formats, + $subsets: $subsets, + $weights: $weights, + $styles: $styles, + $axes: $axes, + + // Deprecated + $displayVar: $displayVar +) { + @include generator( + $metadata: $metadata, + $directory: $directory, + $family: $family, + $display: $display, + $formats: $formats, + $subsets: $subsets, + $weights: $weights, + $styles: $styles, + $axes: $axes, + + $displayVar: $displayVar + ) + using ($props) { + /* #{map.get($props, variant)} */ + @font-face { + font-family: map.get($props, font-family); + font-style: map.get($props, font-style); + font-display: map.get($props, font-display); + font-weight: map.get($props, font-weight); + font-stretch: map.get($props, font-stretch); + unicode-range: map.get($props, unicode-range); + src: map.get($props, src); + } + } +} diff --git a/node_modules/@fontsource/merriweather/unicode.json b/node_modules/@fontsource/merriweather/unicode.json new file mode 100644 index 0000000..0a1ce89 --- /dev/null +++ b/node_modules/@fontsource/merriweather/unicode.json @@ -0,0 +1,7 @@ +{ + "cyrillic-ext": "U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F", + "cyrillic": "U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116", + "vietnamese": "U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB", + "latin-ext": "U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF", + "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese-300-italic.css b/node_modules/@fontsource/merriweather/vietnamese-300-italic.css new file mode 100644 index 0000000..0b2c83a --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese-300-italic.css @@ -0,0 +1,8 @@ +/* merriweather-vietnamese-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-vietnamese-300-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese-300.css b/node_modules/@fontsource/merriweather/vietnamese-300.css new file mode 100644 index 0000000..0bd4fea --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese-300.css @@ -0,0 +1,8 @@ +/* merriweather-vietnamese-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-vietnamese-300-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese-400-italic.css b/node_modules/@fontsource/merriweather/vietnamese-400-italic.css new file mode 100644 index 0000000..748b363 --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese-400-italic.css @@ -0,0 +1,8 @@ +/* merriweather-vietnamese-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-vietnamese-400-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese-400.css b/node_modules/@fontsource/merriweather/vietnamese-400.css new file mode 100644 index 0000000..5df61da --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese-400.css @@ -0,0 +1,8 @@ +/* merriweather-vietnamese-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-vietnamese-400-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese-700-italic.css b/node_modules/@fontsource/merriweather/vietnamese-700-italic.css new file mode 100644 index 0000000..d8fe9eb --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese-700-italic.css @@ -0,0 +1,8 @@ +/* merriweather-vietnamese-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-vietnamese-700-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese-700.css b/node_modules/@fontsource/merriweather/vietnamese-700.css new file mode 100644 index 0000000..6d69797 --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese-700.css @@ -0,0 +1,8 @@ +/* merriweather-vietnamese-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-vietnamese-700-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese-900-italic.css b/node_modules/@fontsource/merriweather/vietnamese-900-italic.css new file mode 100644 index 0000000..f1909e7 --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese-900-italic.css @@ -0,0 +1,8 @@ +/* merriweather-vietnamese-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-vietnamese-900-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese-900.css b/node_modules/@fontsource/merriweather/vietnamese-900.css new file mode 100644 index 0000000..1142fff --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese-900.css @@ -0,0 +1,8 @@ +/* merriweather-vietnamese-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-vietnamese-900-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese-italic.css b/node_modules/@fontsource/merriweather/vietnamese-italic.css new file mode 100644 index 0000000..54b7b93 --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese-italic.css @@ -0,0 +1,35 @@ +/* merriweather-vietnamese-300-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-vietnamese-300-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-300-italic.woff) format('woff'); +} + +/* merriweather-vietnamese-400-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-vietnamese-400-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-400-italic.woff) format('woff'); +} + +/* merriweather-vietnamese-700-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-vietnamese-700-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-700-italic.woff) format('woff'); +} + +/* merriweather-vietnamese-900-italic */ +@font-face { + font-family: 'Merriweather'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-vietnamese-900-italic.woff2) format('woff2'), url(./files/merriweather-vietnamese-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/merriweather/vietnamese.css b/node_modules/@fontsource/merriweather/vietnamese.css new file mode 100644 index 0000000..6035322 --- /dev/null +++ b/node_modules/@fontsource/merriweather/vietnamese.css @@ -0,0 +1,35 @@ +/* merriweather-vietnamese-300-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/merriweather-vietnamese-300-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-300-normal.woff) format('woff'); +} + +/* merriweather-vietnamese-400-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/merriweather-vietnamese-400-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-400-normal.woff) format('woff'); +} + +/* merriweather-vietnamese-700-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/merriweather-vietnamese-700-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-700-normal.woff) format('woff'); +} + +/* merriweather-vietnamese-900-normal */ +@font-face { + font-family: 'Merriweather'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/merriweather-vietnamese-900-normal.woff2) format('woff2'), url(./files/merriweather-vietnamese-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/100-italic.css b/node_modules/@fontsource/roboto/100-italic.css new file mode 100644 index 0000000..77f8e72 --- /dev/null +++ b/node_modules/@fontsource/roboto/100-italic.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-ext-100-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-100-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-100-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-100-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-ext-100-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-100-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-100-italic.woff2) format('woff2'), url(./files/roboto-greek-100-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-vietnamese-100-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-100-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-ext-100-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-100-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-100-italic.woff2) format('woff2'), url(./files/roboto-latin-100-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/100.css b/node_modules/@fontsource/roboto/100.css new file mode 100644 index 0000000..a30c7d3 --- /dev/null +++ b/node_modules/@fontsource/roboto/100.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-ext-100-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-100-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-100-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-100-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-ext-100-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-100-normal.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-100-normal.woff2) format('woff2'), url(./files/roboto-greek-100-normal.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-vietnamese-100-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-100-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-ext-100-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-100-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-100-normal.woff2) format('woff2'), url(./files/roboto-latin-100-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/300-italic.css b/node_modules/@fontsource/roboto/300-italic.css new file mode 100644 index 0000000..bb7b5fa --- /dev/null +++ b/node_modules/@fontsource/roboto/300-italic.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-ext-300-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-300-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-300-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-300-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-ext-300-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-300-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-300-italic.woff2) format('woff2'), url(./files/roboto-greek-300-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-vietnamese-300-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-300-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-ext-300-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-300-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-300-italic.woff2) format('woff2'), url(./files/roboto-latin-300-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/300.css b/node_modules/@fontsource/roboto/300.css new file mode 100644 index 0000000..aae5063 --- /dev/null +++ b/node_modules/@fontsource/roboto/300.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-300-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-300-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-300-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-ext-300-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-300-normal.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-300-normal.woff2) format('woff2'), url(./files/roboto-greek-300-normal.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-vietnamese-300-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-300-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-ext-300-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-300-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-300-normal.woff2) format('woff2'), url(./files/roboto-latin-300-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/400-italic.css b/node_modules/@fontsource/roboto/400-italic.css new file mode 100644 index 0000000..4bc6651 --- /dev/null +++ b/node_modules/@fontsource/roboto/400-italic.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-ext-400-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-400-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-400-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-400-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-ext-400-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-400-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-400-italic.woff2) format('woff2'), url(./files/roboto-greek-400-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-vietnamese-400-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-400-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-ext-400-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-400-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-400-italic.woff2) format('woff2'), url(./files/roboto-latin-400-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/400.css b/node_modules/@fontsource/roboto/400.css new file mode 100644 index 0000000..d64ddb9 --- /dev/null +++ b/node_modules/@fontsource/roboto/400.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-400-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-400-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-ext-400-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-400-normal.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-400-normal.woff2) format('woff2'), url(./files/roboto-greek-400-normal.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-vietnamese-400-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-400-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-ext-400-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-400-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-400-normal.woff2) format('woff2'), url(./files/roboto-latin-400-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/500-italic.css b/node_modules/@fontsource/roboto/500-italic.css new file mode 100644 index 0000000..1f6424b --- /dev/null +++ b/node_modules/@fontsource/roboto/500-italic.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-ext-500-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-500-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-500-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-500-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-ext-500-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-500-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-500-italic.woff2) format('woff2'), url(./files/roboto-greek-500-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-vietnamese-500-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-500-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-ext-500-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-500-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-500-italic.woff2) format('woff2'), url(./files/roboto-latin-500-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/500.css b/node_modules/@fontsource/roboto/500.css new file mode 100644 index 0000000..a1864f4 --- /dev/null +++ b/node_modules/@fontsource/roboto/500.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-ext-500-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-500-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-500-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-500-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-ext-500-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-500-normal.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-500-normal.woff2) format('woff2'), url(./files/roboto-greek-500-normal.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-vietnamese-500-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-500-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-ext-500-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-500-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-500-normal.woff2) format('woff2'), url(./files/roboto-latin-500-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/700-italic.css b/node_modules/@fontsource/roboto/700-italic.css new file mode 100644 index 0000000..6538aed --- /dev/null +++ b/node_modules/@fontsource/roboto/700-italic.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-ext-700-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-700-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-700-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-700-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-ext-700-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-700-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-700-italic.woff2) format('woff2'), url(./files/roboto-greek-700-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-vietnamese-700-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-700-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-ext-700-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-700-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-700-italic.woff2) format('woff2'), url(./files/roboto-latin-700-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/700.css b/node_modules/@fontsource/roboto/700.css new file mode 100644 index 0000000..b46d397 --- /dev/null +++ b/node_modules/@fontsource/roboto/700.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-700-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-700-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-700-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-ext-700-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-700-normal.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-700-normal.woff2) format('woff2'), url(./files/roboto-greek-700-normal.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-vietnamese-700-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-700-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-ext-700-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-700-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-700-normal.woff2) format('woff2'), url(./files/roboto-latin-700-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/900-italic.css b/node_modules/@fontsource/roboto/900-italic.css new file mode 100644 index 0000000..661e7e9 --- /dev/null +++ b/node_modules/@fontsource/roboto/900-italic.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-ext-900-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-900-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-900-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-900-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-ext-900-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-900-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-900-italic.woff2) format('woff2'), url(./files/roboto-greek-900-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-vietnamese-900-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-900-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-ext-900-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-900-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-900-italic.woff2) format('woff2'), url(./files/roboto-latin-900-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/900.css b/node_modules/@fontsource/roboto/900.css new file mode 100644 index 0000000..f8f4413 --- /dev/null +++ b/node_modules/@fontsource/roboto/900.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-ext-900-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-900-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-900-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-900-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-ext-900-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-900-normal.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-900-normal.woff2) format('woff2'), url(./files/roboto-greek-900-normal.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-vietnamese-900-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-900-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-ext-900-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-900-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-900-normal.woff2) format('woff2'), url(./files/roboto-latin-900-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/CHANGELOG.md b/node_modules/@fontsource/roboto/CHANGELOG.md new file mode 100644 index 0000000..e798685 --- /dev/null +++ b/node_modules/@fontsource/roboto/CHANGELOG.md @@ -0,0 +1,2 @@ +# Changelog +See the [Fontsource CHANGELOG.md](https://github.com/fontsource/fontsource/blob/main/CHANGELOG.md). \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/LICENSE b/node_modules/@fontsource/roboto/LICENSE new file mode 100644 index 0000000..c002745 --- /dev/null +++ b/node_modules/@fontsource/roboto/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2011 Google Inc. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/README.md b/node_modules/@fontsource/roboto/README.md new file mode 100644 index 0000000..99ec5e9 --- /dev/null +++ b/node_modules/@fontsource/roboto/README.md @@ -0,0 +1,47 @@ +# Fontsource Roboto + +[![npm (scoped)](https://img.shields.io/npm/v/@fontsource/roboto?color=brightgreen)](https://www.npmjs.com/package/@fontsource/roboto) [![Generic badge](https://img.shields.io/badge/fontsource-passing-brightgreen)](https://github.com/fontsource/fontsource) [![Monthly downloads](https://badgen.net/npm/dm/@fontsource/roboto)](https://github.com/fontsource/fontsource) [![Total downloads](https://badgen.net/npm/dt/@fontsource/roboto)](https://github.com/fontsource/fontsource) [![GitHub stars](https://img.shields.io/github/stars/fontsource/fontsource.svg?style=social&label=Star)](https://github.com/fontsource/fontsource/stargazers) + +The CSS and web font files to easily self-host the “Roboto” font. Please visit the main [Fontsource website](https://fontsource.org/fonts/roboto) to view more details on this package. + +## Quick Installation + +Fontsource offers multiple methods to import the CSS, including using a bundler like Vite or using SASS. You can find full documentation [here](https://fontsource.org/docs/getting-started/introduction). + +```javascript +npm install @fontsource/roboto +``` + +Within your app entry file or site component, import it in. + +```javascript +import "@fontsource/roboto"; // Defaults to weight 400 +import "@fontsource/roboto/400.css"; // Specify weight +import "@fontsource/roboto/400-italic.css"; // Specify weight and style +``` + +Supported variables: +- Weights: `[100,300,400,500,700,900]` +- Styles: `[italic,normal]` +- Subsets: `[cyrillic,cyrillic-ext,greek,greek-ext,latin,latin-ext,vietnamese]` + +> Note: `italic` may not be supported by all fonts. To learn more about what weights and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/roboto). + +Finally, you can reference the font name in a CSS stylesheet, CSS Module, or CSS-in-JS. + +```css +body { + font-family: "Roboto"; +} +``` + +## Licensing +Always make sure to read the license for each font you use. Most of the fonts in the collection use the SIL Open Font License, v1.1. Some fonts use the Apache 2 license. The Ubuntu fonts use the Ubuntu Font License v1.0. + +Copyright 2011 Google Inc. All Rights Reserved. +[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0.html) + +## Other Notes +Font version (provided by source): `v30`. + +If you have any suggestions or ideas to improve the performance of font loading or expand the existing library, feel free to star and contribute to this repository. You can share your suggestions or ideas by creating an [issue](https://github.com/fontsource/fontsource/issues). \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-100-italic.css b/node_modules/@fontsource/roboto/cyrillic-100-italic.css new file mode 100644 index 0000000..d601ac1 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-100-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-100-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-100.css b/node_modules/@fontsource/roboto/cyrillic-100.css new file mode 100644 index 0000000..9fd832a --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-100.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-100-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-100-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-300-italic.css b/node_modules/@fontsource/roboto/cyrillic-300-italic.css new file mode 100644 index 0000000..116b598 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-300-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-300-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-300.css b/node_modules/@fontsource/roboto/cyrillic-300.css new file mode 100644 index 0000000..277d5c9 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-300.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-300-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-400-italic.css b/node_modules/@fontsource/roboto/cyrillic-400-italic.css new file mode 100644 index 0000000..872b7b4 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-400-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-400-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-400.css b/node_modules/@fontsource/roboto/cyrillic-400.css new file mode 100644 index 0000000..f36ed49 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-400.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-500-italic.css b/node_modules/@fontsource/roboto/cyrillic-500-italic.css new file mode 100644 index 0000000..eff872c --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-500-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-500-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-500.css b/node_modules/@fontsource/roboto/cyrillic-500.css new file mode 100644 index 0000000..ab8531a --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-500.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-500-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-700-italic.css b/node_modules/@fontsource/roboto/cyrillic-700-italic.css new file mode 100644 index 0000000..5704ddb --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-700-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-700-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-700.css b/node_modules/@fontsource/roboto/cyrillic-700.css new file mode 100644 index 0000000..6121139 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-700.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-700-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-900-italic.css b/node_modules/@fontsource/roboto/cyrillic-900-italic.css new file mode 100644 index 0000000..88be038 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-900-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-900-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-900.css b/node_modules/@fontsource/roboto/cyrillic-900.css new file mode 100644 index 0000000..9e7e336 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-900.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-900-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-100-italic.css b/node_modules/@fontsource/roboto/cyrillic-ext-100-italic.css new file mode 100644 index 0000000..f576b1b --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-100-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-ext-100-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-100.css b/node_modules/@fontsource/roboto/cyrillic-ext-100.css new file mode 100644 index 0000000..98c0a2a --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-100.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-ext-100-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-100-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-300-italic.css b/node_modules/@fontsource/roboto/cyrillic-ext-300-italic.css new file mode 100644 index 0000000..99b9267 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-300-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-ext-300-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-300.css b/node_modules/@fontsource/roboto/cyrillic-ext-300.css new file mode 100644 index 0000000..fda5ead --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-300.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-400-italic.css b/node_modules/@fontsource/roboto/cyrillic-ext-400-italic.css new file mode 100644 index 0000000..6cfc03c --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-400-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-ext-400-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-400.css b/node_modules/@fontsource/roboto/cyrillic-ext-400.css new file mode 100644 index 0000000..f23ef1c --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-400.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-500-italic.css b/node_modules/@fontsource/roboto/cyrillic-ext-500-italic.css new file mode 100644 index 0000000..95183f9 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-500-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-ext-500-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-500.css b/node_modules/@fontsource/roboto/cyrillic-ext-500.css new file mode 100644 index 0000000..3078400 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-500.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-ext-500-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-700-italic.css b/node_modules/@fontsource/roboto/cyrillic-ext-700-italic.css new file mode 100644 index 0000000..1e7324d --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-700-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-ext-700-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-700.css b/node_modules/@fontsource/roboto/cyrillic-ext-700.css new file mode 100644 index 0000000..cb0eb82 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-700.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-900-italic.css b/node_modules/@fontsource/roboto/cyrillic-ext-900-italic.css new file mode 100644 index 0000000..e1dd14b --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-900-italic.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-ext-900-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-900.css b/node_modules/@fontsource/roboto/cyrillic-ext-900.css new file mode 100644 index 0000000..64d0e02 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-900.css @@ -0,0 +1,8 @@ +/* roboto-cyrillic-ext-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-ext-900-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext-italic.css b/node_modules/@fontsource/roboto/cyrillic-ext-italic.css new file mode 100644 index 0000000..72231ce --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext-italic.css @@ -0,0 +1,53 @@ +/* roboto-cyrillic-ext-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-ext-100-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-100-italic.woff) format('woff'); +} + +/* roboto-cyrillic-ext-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-ext-300-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-300-italic.woff) format('woff'); +} + +/* roboto-cyrillic-ext-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-ext-400-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-400-italic.woff) format('woff'); +} + +/* roboto-cyrillic-ext-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-ext-500-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-500-italic.woff) format('woff'); +} + +/* roboto-cyrillic-ext-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-ext-700-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-700-italic.woff) format('woff'); +} + +/* roboto-cyrillic-ext-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-ext-900-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-ext.css b/node_modules/@fontsource/roboto/cyrillic-ext.css new file mode 100644 index 0000000..2b9a6b4 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-ext.css @@ -0,0 +1,53 @@ +/* roboto-cyrillic-ext-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-ext-100-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-100-normal.woff) format('woff'); +} + +/* roboto-cyrillic-ext-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-300-normal.woff) format('woff'); +} + +/* roboto-cyrillic-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-400-normal.woff) format('woff'); +} + +/* roboto-cyrillic-ext-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-ext-500-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-500-normal.woff) format('woff'); +} + +/* roboto-cyrillic-ext-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-700-normal.woff) format('woff'); +} + +/* roboto-cyrillic-ext-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-ext-900-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic-italic.css b/node_modules/@fontsource/roboto/cyrillic-italic.css new file mode 100644 index 0000000..a74fa48 --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic-italic.css @@ -0,0 +1,53 @@ +/* roboto-cyrillic-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-100-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-100-italic.woff) format('woff'); +} + +/* roboto-cyrillic-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-300-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-300-italic.woff) format('woff'); +} + +/* roboto-cyrillic-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-400-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-400-italic.woff) format('woff'); +} + +/* roboto-cyrillic-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-500-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-500-italic.woff) format('woff'); +} + +/* roboto-cyrillic-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-700-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-700-italic.woff) format('woff'); +} + +/* roboto-cyrillic-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-900-italic.woff2) format('woff2'), url(./files/roboto-cyrillic-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/cyrillic.css b/node_modules/@fontsource/roboto/cyrillic.css new file mode 100644 index 0000000..96505ce --- /dev/null +++ b/node_modules/@fontsource/roboto/cyrillic.css @@ -0,0 +1,53 @@ +/* roboto-cyrillic-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-cyrillic-100-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-100-normal.woff) format('woff'); +} + +/* roboto-cyrillic-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-cyrillic-300-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-300-normal.woff) format('woff'); +} + +/* roboto-cyrillic-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-400-normal.woff) format('woff'); +} + +/* roboto-cyrillic-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-cyrillic-500-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-500-normal.woff) format('woff'); +} + +/* roboto-cyrillic-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-cyrillic-700-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-700-normal.woff) format('woff'); +} + +/* roboto-cyrillic-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-cyrillic-900-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-italic.woff new file mode 100644 index 0000000..277a8d3 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-italic.woff2 new file mode 100644 index 0000000..18c3f12 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-normal.woff new file mode 100644 index 0000000..73b14ac Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-normal.woff2 new file mode 100644 index 0000000..122ac2c Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-100-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-italic.woff new file mode 100644 index 0000000..a839dff Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-italic.woff2 new file mode 100644 index 0000000..943c5a0 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-normal.woff new file mode 100644 index 0000000..d8b12c2 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-normal.woff2 new file mode 100644 index 0000000..9d7fb7f Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-300-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-italic.woff new file mode 100644 index 0000000..c6d0eaf Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-italic.woff2 new file mode 100644 index 0000000..dd587a2 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-normal.woff new file mode 100644 index 0000000..a846f89 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-normal.woff2 new file mode 100644 index 0000000..47da362 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-400-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-italic.woff new file mode 100644 index 0000000..e73eb9f Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-italic.woff2 new file mode 100644 index 0000000..cbe564b Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-normal.woff new file mode 100644 index 0000000..4c8f963 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-normal.woff2 new file mode 100644 index 0000000..cb5834f Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-500-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-italic.woff new file mode 100644 index 0000000..49d1ca0 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-italic.woff2 new file mode 100644 index 0000000..d2f30b5 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-normal.woff new file mode 100644 index 0000000..91386e6 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-normal.woff2 new file mode 100644 index 0000000..1bb7737 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-700-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-italic.woff new file mode 100644 index 0000000..6c5bb5e Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-italic.woff2 new file mode 100644 index 0000000..fe8fcec Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-normal.woff new file mode 100644 index 0000000..bb81dce Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-normal.woff2 new file mode 100644 index 0000000..1d173f2 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-900-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-italic.woff new file mode 100644 index 0000000..2c0a012 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-italic.woff2 new file mode 100644 index 0000000..5b0171c Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-normal.woff new file mode 100644 index 0000000..156efd4 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-normal.woff2 new file mode 100644 index 0000000..f8d7a0d Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-100-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-italic.woff new file mode 100644 index 0000000..79a6bdb Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-italic.woff2 new file mode 100644 index 0000000..bfcc76f Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-normal.woff new file mode 100644 index 0000000..9209306 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-normal.woff2 new file mode 100644 index 0000000..0f6e60b Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-300-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-italic.woff new file mode 100644 index 0000000..1dd5c8c Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-italic.woff2 new file mode 100644 index 0000000..9213da0 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-normal.woff new file mode 100644 index 0000000..0f4a8aa Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-normal.woff2 new file mode 100644 index 0000000..22ddee9 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-400-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-italic.woff new file mode 100644 index 0000000..bfae5db Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-italic.woff2 new file mode 100644 index 0000000..997a45c Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-normal.woff new file mode 100644 index 0000000..7223257 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-normal.woff2 new file mode 100644 index 0000000..8571683 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-500-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-italic.woff new file mode 100644 index 0000000..42353c1 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-italic.woff2 new file mode 100644 index 0000000..6abf54d Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-normal.woff new file mode 100644 index 0000000..0bd1b47 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-normal.woff2 new file mode 100644 index 0000000..6399552 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-700-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-italic.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-italic.woff new file mode 100644 index 0000000..d9952a8 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-italic.woff2 new file mode 100644 index 0000000..48a8c10 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-normal.woff b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-normal.woff new file mode 100644 index 0000000..b2f6baa Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-normal.woff2 new file mode 100644 index 0000000..f041fde Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-cyrillic-ext-900-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-100-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-100-italic.woff new file mode 100644 index 0000000..d6b3be1 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-100-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-100-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-100-italic.woff2 new file mode 100644 index 0000000..3d0f604 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-100-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-100-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-100-normal.woff new file mode 100644 index 0000000..016d6a1 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-100-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-100-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-100-normal.woff2 new file mode 100644 index 0000000..72fc021 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-100-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-300-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-300-italic.woff new file mode 100644 index 0000000..394ed68 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-300-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-300-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-300-italic.woff2 new file mode 100644 index 0000000..d4ec189 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-300-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-300-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-300-normal.woff new file mode 100644 index 0000000..04a5b7d Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-300-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-300-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-300-normal.woff2 new file mode 100644 index 0000000..b289f00 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-300-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-400-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-400-italic.woff new file mode 100644 index 0000000..22a00e2 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-400-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-400-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-400-italic.woff2 new file mode 100644 index 0000000..e0d3c43 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-400-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-400-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-400-normal.woff new file mode 100644 index 0000000..e93ee93 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-400-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-400-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-400-normal.woff2 new file mode 100644 index 0000000..fc71d94 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-400-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-500-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-500-italic.woff new file mode 100644 index 0000000..fe62fa8 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-500-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-500-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-500-italic.woff2 new file mode 100644 index 0000000..9997e98 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-500-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-500-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-500-normal.woff new file mode 100644 index 0000000..9be8310 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-500-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-500-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-500-normal.woff2 new file mode 100644 index 0000000..0933dfe Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-500-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-700-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-700-italic.woff new file mode 100644 index 0000000..0e31fbd Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-700-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-700-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-700-italic.woff2 new file mode 100644 index 0000000..c8091bc Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-700-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-700-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-700-normal.woff new file mode 100644 index 0000000..a8ca4fc Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-700-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-700-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-700-normal.woff2 new file mode 100644 index 0000000..cb9bfa7 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-700-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-900-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-900-italic.woff new file mode 100644 index 0000000..63ae293 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-900-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-900-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-900-italic.woff2 new file mode 100644 index 0000000..d953103 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-900-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-900-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-900-normal.woff new file mode 100644 index 0000000..d6087a1 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-900-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-900-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-900-normal.woff2 new file mode 100644 index 0000000..81848e2 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-900-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-italic.woff new file mode 100644 index 0000000..da5e322 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-italic.woff2 new file mode 100644 index 0000000..fb22fec Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-normal.woff new file mode 100644 index 0000000..0e78a4d Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-normal.woff2 new file mode 100644 index 0000000..11c7018 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-100-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-italic.woff new file mode 100644 index 0000000..ffe7db4 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-italic.woff2 new file mode 100644 index 0000000..a4699c7 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-normal.woff new file mode 100644 index 0000000..491ec69 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-normal.woff2 new file mode 100644 index 0000000..87711c0 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-300-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-italic.woff new file mode 100644 index 0000000..fa352a0 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-italic.woff2 new file mode 100644 index 0000000..508baef Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-normal.woff new file mode 100644 index 0000000..9b60042 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-normal.woff2 new file mode 100644 index 0000000..72ce0e9 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-400-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-italic.woff new file mode 100644 index 0000000..046b5df Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-italic.woff2 new file mode 100644 index 0000000..fecc185 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-normal.woff new file mode 100644 index 0000000..a869579 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-normal.woff2 new file mode 100644 index 0000000..064e94b Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-500-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-italic.woff new file mode 100644 index 0000000..4d43b56 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-italic.woff2 new file mode 100644 index 0000000..dd5a4a2 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-normal.woff new file mode 100644 index 0000000..c7fb60a Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-normal.woff2 new file mode 100644 index 0000000..a0d68e2 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-700-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-italic.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-italic.woff new file mode 100644 index 0000000..bafa9c0 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-italic.woff2 new file mode 100644 index 0000000..2e71425 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-normal.woff b/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-normal.woff new file mode 100644 index 0000000..030a7d7 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-normal.woff2 new file mode 100644 index 0000000..9eda94a Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-greek-ext-900-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-100-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-100-italic.woff new file mode 100644 index 0000000..49ca8b8 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-100-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-100-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-100-italic.woff2 new file mode 100644 index 0000000..4ccadd1 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-100-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-100-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-100-normal.woff new file mode 100644 index 0000000..dfc9d0e Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-100-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-100-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-100-normal.woff2 new file mode 100644 index 0000000..71c9bb7 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-100-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-300-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-300-italic.woff new file mode 100644 index 0000000..5cdb8b0 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-300-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-300-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-300-italic.woff2 new file mode 100644 index 0000000..22c57b0 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-300-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-300-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-300-normal.woff new file mode 100644 index 0000000..f8ed3c1 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-300-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-300-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-300-normal.woff2 new file mode 100644 index 0000000..6068138 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-300-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-400-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-400-italic.woff new file mode 100644 index 0000000..9c5afd5 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-400-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-400-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-400-italic.woff2 new file mode 100644 index 0000000..e1b7a79 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-400-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-400-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-400-normal.woff new file mode 100644 index 0000000..297c0ba Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-400-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-400-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-400-normal.woff2 new file mode 100644 index 0000000..020729e Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-400-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-500-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-500-italic.woff new file mode 100644 index 0000000..44e4dba Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-500-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-500-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-500-italic.woff2 new file mode 100644 index 0000000..ae1933f Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-500-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-500-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-500-normal.woff new file mode 100644 index 0000000..82437c1 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-500-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-500-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-500-normal.woff2 new file mode 100644 index 0000000..29342a8 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-500-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-700-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-700-italic.woff new file mode 100644 index 0000000..5434e16 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-700-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-700-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-700-italic.woff2 new file mode 100644 index 0000000..a56a6ed Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-700-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-700-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-700-normal.woff new file mode 100644 index 0000000..754cd83 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-700-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-700-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-700-normal.woff2 new file mode 100644 index 0000000..771fbec Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-700-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-900-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-900-italic.woff new file mode 100644 index 0000000..959b07f Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-900-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-900-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-900-italic.woff2 new file mode 100644 index 0000000..59cab0f Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-900-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-900-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-900-normal.woff new file mode 100644 index 0000000..ff29915 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-900-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-900-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-900-normal.woff2 new file mode 100644 index 0000000..067cb32 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-900-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-italic.woff new file mode 100644 index 0000000..336ec5e Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-italic.woff2 new file mode 100644 index 0000000..edfc6cd Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-normal.woff new file mode 100644 index 0000000..9487574 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-normal.woff2 new file mode 100644 index 0000000..02a27ea Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-100-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-italic.woff new file mode 100644 index 0000000..4be5196 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-italic.woff2 new file mode 100644 index 0000000..2bfc2ce Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-normal.woff new file mode 100644 index 0000000..7c4c1d6 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-normal.woff2 new file mode 100644 index 0000000..91231c9 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-300-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-italic.woff new file mode 100644 index 0000000..666d988 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-italic.woff2 new file mode 100644 index 0000000..ef920e5 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-normal.woff new file mode 100644 index 0000000..594549d Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-normal.woff2 new file mode 100644 index 0000000..8a8de61 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-400-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-italic.woff new file mode 100644 index 0000000..f790916 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-italic.woff2 new file mode 100644 index 0000000..e0d4123 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-normal.woff new file mode 100644 index 0000000..04f853a Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-normal.woff2 new file mode 100644 index 0000000..68f094c Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-500-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-italic.woff new file mode 100644 index 0000000..da364ef Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-italic.woff2 new file mode 100644 index 0000000..c88b8ae Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-normal.woff new file mode 100644 index 0000000..29ec516 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-normal.woff2 new file mode 100644 index 0000000..94ab5fb Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-700-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-italic.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-italic.woff new file mode 100644 index 0000000..09d86d7 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-italic.woff2 new file mode 100644 index 0000000..27773c9 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-normal.woff b/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-normal.woff new file mode 100644 index 0000000..e5c97af Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-normal.woff2 new file mode 100644 index 0000000..cf61b88 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-latin-ext-900-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-italic.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-italic.woff new file mode 100644 index 0000000..ac9f0a6 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-italic.woff2 new file mode 100644 index 0000000..ff1f96d Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-normal.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-normal.woff new file mode 100644 index 0000000..51f9715 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-normal.woff2 new file mode 100644 index 0000000..24a1bfd Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-100-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-italic.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-italic.woff new file mode 100644 index 0000000..e51873c Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-italic.woff2 new file mode 100644 index 0000000..b2391b9 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-normal.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-normal.woff new file mode 100644 index 0000000..3cb04e5 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-normal.woff2 new file mode 100644 index 0000000..c009987 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-300-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-italic.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-italic.woff new file mode 100644 index 0000000..261ab1c Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-italic.woff2 new file mode 100644 index 0000000..9a378af Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-normal.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-normal.woff new file mode 100644 index 0000000..e65d4a9 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-normal.woff2 new file mode 100644 index 0000000..6284d2e Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-400-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-italic.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-italic.woff new file mode 100644 index 0000000..4c34ebd Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-italic.woff2 new file mode 100644 index 0000000..1f579aa Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-normal.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-normal.woff new file mode 100644 index 0000000..0292e04 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-normal.woff2 new file mode 100644 index 0000000..6b0b4af Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-500-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-italic.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-italic.woff new file mode 100644 index 0000000..ac47af0 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-italic.woff2 new file mode 100644 index 0000000..6363b1c Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-normal.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-normal.woff new file mode 100644 index 0000000..4574ed4 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-normal.woff2 new file mode 100644 index 0000000..3c45011 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-700-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-italic.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-italic.woff new file mode 100644 index 0000000..b33f92b Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-italic.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-italic.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-italic.woff2 new file mode 100644 index 0000000..99b1da1 Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-italic.woff2 differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-normal.woff b/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-normal.woff new file mode 100644 index 0000000..8070dfa Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-normal.woff differ diff --git a/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-normal.woff2 b/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-normal.woff2 new file mode 100644 index 0000000..53b8d0d Binary files /dev/null and b/node_modules/@fontsource/roboto/files/roboto-vietnamese-900-normal.woff2 differ diff --git a/node_modules/@fontsource/roboto/greek-100-italic.css b/node_modules/@fontsource/roboto/greek-100-italic.css new file mode 100644 index 0000000..a9896f9 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-100-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-100-italic.woff2) format('woff2'), url(./files/roboto-greek-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-100.css b/node_modules/@fontsource/roboto/greek-100.css new file mode 100644 index 0000000..b120813 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-100.css @@ -0,0 +1,8 @@ +/* roboto-greek-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-100-normal.woff2) format('woff2'), url(./files/roboto-greek-100-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-300-italic.css b/node_modules/@fontsource/roboto/greek-300-italic.css new file mode 100644 index 0000000..9a289cf --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-300-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-300-italic.woff2) format('woff2'), url(./files/roboto-greek-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-300.css b/node_modules/@fontsource/roboto/greek-300.css new file mode 100644 index 0000000..cc72364 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-300.css @@ -0,0 +1,8 @@ +/* roboto-greek-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-300-normal.woff2) format('woff2'), url(./files/roboto-greek-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-400-italic.css b/node_modules/@fontsource/roboto/greek-400-italic.css new file mode 100644 index 0000000..36febd3 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-400-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-400-italic.woff2) format('woff2'), url(./files/roboto-greek-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-400.css b/node_modules/@fontsource/roboto/greek-400.css new file mode 100644 index 0000000..ed2d371 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-400.css @@ -0,0 +1,8 @@ +/* roboto-greek-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-400-normal.woff2) format('woff2'), url(./files/roboto-greek-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-500-italic.css b/node_modules/@fontsource/roboto/greek-500-italic.css new file mode 100644 index 0000000..27b4271 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-500-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-500-italic.woff2) format('woff2'), url(./files/roboto-greek-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-500.css b/node_modules/@fontsource/roboto/greek-500.css new file mode 100644 index 0000000..2000f91 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-500.css @@ -0,0 +1,8 @@ +/* roboto-greek-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-500-normal.woff2) format('woff2'), url(./files/roboto-greek-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-700-italic.css b/node_modules/@fontsource/roboto/greek-700-italic.css new file mode 100644 index 0000000..17dd4f5 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-700-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-700-italic.woff2) format('woff2'), url(./files/roboto-greek-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-700.css b/node_modules/@fontsource/roboto/greek-700.css new file mode 100644 index 0000000..2ddfab1 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-700.css @@ -0,0 +1,8 @@ +/* roboto-greek-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-700-normal.woff2) format('woff2'), url(./files/roboto-greek-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-900-italic.css b/node_modules/@fontsource/roboto/greek-900-italic.css new file mode 100644 index 0000000..ceee80c --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-900-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-900-italic.woff2) format('woff2'), url(./files/roboto-greek-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-900.css b/node_modules/@fontsource/roboto/greek-900.css new file mode 100644 index 0000000..2476185 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-900.css @@ -0,0 +1,8 @@ +/* roboto-greek-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-900-normal.woff2) format('woff2'), url(./files/roboto-greek-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-100-italic.css b/node_modules/@fontsource/roboto/greek-ext-100-italic.css new file mode 100644 index 0000000..dc08116 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-100-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-ext-100-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-100.css b/node_modules/@fontsource/roboto/greek-ext-100.css new file mode 100644 index 0000000..b8f9f61 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-100.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-ext-100-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-100-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-300-italic.css b/node_modules/@fontsource/roboto/greek-ext-300-italic.css new file mode 100644 index 0000000..80593f9 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-300-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-ext-300-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-300.css b/node_modules/@fontsource/roboto/greek-ext-300.css new file mode 100644 index 0000000..512c518 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-300.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-ext-300-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-400-italic.css b/node_modules/@fontsource/roboto/greek-ext-400-italic.css new file mode 100644 index 0000000..860d0f4 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-400-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-ext-400-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-400.css b/node_modules/@fontsource/roboto/greek-ext-400.css new file mode 100644 index 0000000..8f1b00d --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-400.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-ext-400-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-500-italic.css b/node_modules/@fontsource/roboto/greek-ext-500-italic.css new file mode 100644 index 0000000..e01bfb6 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-500-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-ext-500-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-500.css b/node_modules/@fontsource/roboto/greek-ext-500.css new file mode 100644 index 0000000..9d089b8 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-500.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-ext-500-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-700-italic.css b/node_modules/@fontsource/roboto/greek-ext-700-italic.css new file mode 100644 index 0000000..56178a2 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-700-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-ext-700-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-700.css b/node_modules/@fontsource/roboto/greek-ext-700.css new file mode 100644 index 0000000..5d0174a --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-700.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-ext-700-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-900-italic.css b/node_modules/@fontsource/roboto/greek-ext-900-italic.css new file mode 100644 index 0000000..5c98aa7 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-900-italic.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-ext-900-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-900.css b/node_modules/@fontsource/roboto/greek-ext-900.css new file mode 100644 index 0000000..894fa37 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-900.css @@ -0,0 +1,8 @@ +/* roboto-greek-ext-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-ext-900-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext-italic.css b/node_modules/@fontsource/roboto/greek-ext-italic.css new file mode 100644 index 0000000..e0f199a --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext-italic.css @@ -0,0 +1,53 @@ +/* roboto-greek-ext-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-ext-100-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-100-italic.woff) format('woff'); +} + +/* roboto-greek-ext-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-ext-300-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-300-italic.woff) format('woff'); +} + +/* roboto-greek-ext-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-ext-400-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-400-italic.woff) format('woff'); +} + +/* roboto-greek-ext-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-ext-500-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-500-italic.woff) format('woff'); +} + +/* roboto-greek-ext-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-ext-700-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-700-italic.woff) format('woff'); +} + +/* roboto-greek-ext-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-ext-900-italic.woff2) format('woff2'), url(./files/roboto-greek-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-ext.css b/node_modules/@fontsource/roboto/greek-ext.css new file mode 100644 index 0000000..a8e30d6 --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-ext.css @@ -0,0 +1,53 @@ +/* roboto-greek-ext-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-ext-100-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-100-normal.woff) format('woff'); +} + +/* roboto-greek-ext-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-ext-300-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-300-normal.woff) format('woff'); +} + +/* roboto-greek-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-ext-400-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-400-normal.woff) format('woff'); +} + +/* roboto-greek-ext-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-ext-500-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-500-normal.woff) format('woff'); +} + +/* roboto-greek-ext-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-ext-700-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-700-normal.woff) format('woff'); +} + +/* roboto-greek-ext-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-ext-900-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek-italic.css b/node_modules/@fontsource/roboto/greek-italic.css new file mode 100644 index 0000000..d4c6b8d --- /dev/null +++ b/node_modules/@fontsource/roboto/greek-italic.css @@ -0,0 +1,53 @@ +/* roboto-greek-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-100-italic.woff2) format('woff2'), url(./files/roboto-greek-100-italic.woff) format('woff'); +} + +/* roboto-greek-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-300-italic.woff2) format('woff2'), url(./files/roboto-greek-300-italic.woff) format('woff'); +} + +/* roboto-greek-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-400-italic.woff2) format('woff2'), url(./files/roboto-greek-400-italic.woff) format('woff'); +} + +/* roboto-greek-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-500-italic.woff2) format('woff2'), url(./files/roboto-greek-500-italic.woff) format('woff'); +} + +/* roboto-greek-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-700-italic.woff2) format('woff2'), url(./files/roboto-greek-700-italic.woff) format('woff'); +} + +/* roboto-greek-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-900-italic.woff2) format('woff2'), url(./files/roboto-greek-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/greek.css b/node_modules/@fontsource/roboto/greek.css new file mode 100644 index 0000000..e5ac45b --- /dev/null +++ b/node_modules/@fontsource/roboto/greek.css @@ -0,0 +1,53 @@ +/* roboto-greek-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-greek-100-normal.woff2) format('woff2'), url(./files/roboto-greek-100-normal.woff) format('woff'); +} + +/* roboto-greek-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-greek-300-normal.woff2) format('woff2'), url(./files/roboto-greek-300-normal.woff) format('woff'); +} + +/* roboto-greek-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-400-normal.woff2) format('woff2'), url(./files/roboto-greek-400-normal.woff) format('woff'); +} + +/* roboto-greek-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-greek-500-normal.woff2) format('woff2'), url(./files/roboto-greek-500-normal.woff) format('woff'); +} + +/* roboto-greek-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-greek-700-normal.woff2) format('woff2'), url(./files/roboto-greek-700-normal.woff) format('woff'); +} + +/* roboto-greek-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-greek-900-normal.woff2) format('woff2'), url(./files/roboto-greek-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/index.css b/node_modules/@fontsource/roboto/index.css new file mode 100644 index 0000000..d64ddb9 --- /dev/null +++ b/node_modules/@fontsource/roboto/index.css @@ -0,0 +1,69 @@ +/* roboto-cyrillic-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-400-normal.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* roboto-cyrillic-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-cyrillic-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-400-normal.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* roboto-greek-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-ext-400-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-400-normal.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* roboto-greek-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-greek-400-normal.woff2) format('woff2'), url(./files/roboto-greek-400-normal.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* roboto-vietnamese-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-vietnamese-400-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-400-normal.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* roboto-latin-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-ext-400-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-400-normal.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* roboto-latin-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-400-normal.woff2) format('woff2'), url(./files/roboto-latin-400-normal.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-100-italic.css b/node_modules/@fontsource/roboto/latin-100-italic.css new file mode 100644 index 0000000..175389d --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-100-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-100-italic.woff2) format('woff2'), url(./files/roboto-latin-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-100.css b/node_modules/@fontsource/roboto/latin-100.css new file mode 100644 index 0000000..cc6a57d --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-100.css @@ -0,0 +1,8 @@ +/* roboto-latin-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-100-normal.woff2) format('woff2'), url(./files/roboto-latin-100-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-300-italic.css b/node_modules/@fontsource/roboto/latin-300-italic.css new file mode 100644 index 0000000..4176d63 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-300-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-300-italic.woff2) format('woff2'), url(./files/roboto-latin-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-300.css b/node_modules/@fontsource/roboto/latin-300.css new file mode 100644 index 0000000..3efe5cb --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-300.css @@ -0,0 +1,8 @@ +/* roboto-latin-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-300-normal.woff2) format('woff2'), url(./files/roboto-latin-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-400-italic.css b/node_modules/@fontsource/roboto/latin-400-italic.css new file mode 100644 index 0000000..0594d1a --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-400-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-400-italic.woff2) format('woff2'), url(./files/roboto-latin-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-400.css b/node_modules/@fontsource/roboto/latin-400.css new file mode 100644 index 0000000..c28a1f4 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-400.css @@ -0,0 +1,8 @@ +/* roboto-latin-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-400-normal.woff2) format('woff2'), url(./files/roboto-latin-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-500-italic.css b/node_modules/@fontsource/roboto/latin-500-italic.css new file mode 100644 index 0000000..72e23f5 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-500-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-500-italic.woff2) format('woff2'), url(./files/roboto-latin-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-500.css b/node_modules/@fontsource/roboto/latin-500.css new file mode 100644 index 0000000..70df68f --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-500.css @@ -0,0 +1,8 @@ +/* roboto-latin-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-500-normal.woff2) format('woff2'), url(./files/roboto-latin-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-700-italic.css b/node_modules/@fontsource/roboto/latin-700-italic.css new file mode 100644 index 0000000..39c9ea9 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-700-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-700-italic.woff2) format('woff2'), url(./files/roboto-latin-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-700.css b/node_modules/@fontsource/roboto/latin-700.css new file mode 100644 index 0000000..7e95cea --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-700.css @@ -0,0 +1,8 @@ +/* roboto-latin-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-700-normal.woff2) format('woff2'), url(./files/roboto-latin-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-900-italic.css b/node_modules/@fontsource/roboto/latin-900-italic.css new file mode 100644 index 0000000..1733c22 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-900-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-900-italic.woff2) format('woff2'), url(./files/roboto-latin-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-900.css b/node_modules/@fontsource/roboto/latin-900.css new file mode 100644 index 0000000..4f256dc --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-900.css @@ -0,0 +1,8 @@ +/* roboto-latin-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-900-normal.woff2) format('woff2'), url(./files/roboto-latin-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-100-italic.css b/node_modules/@fontsource/roboto/latin-ext-100-italic.css new file mode 100644 index 0000000..ab224f5 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-100-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-ext-100-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-100.css b/node_modules/@fontsource/roboto/latin-ext-100.css new file mode 100644 index 0000000..40b43a6 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-100.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-ext-100-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-100-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-300-italic.css b/node_modules/@fontsource/roboto/latin-ext-300-italic.css new file mode 100644 index 0000000..a41a1b7 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-300-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-ext-300-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-300.css b/node_modules/@fontsource/roboto/latin-ext-300.css new file mode 100644 index 0000000..2bad50e --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-300.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-ext-300-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-400-italic.css b/node_modules/@fontsource/roboto/latin-ext-400-italic.css new file mode 100644 index 0000000..26be4fa --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-400-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-ext-400-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-400.css b/node_modules/@fontsource/roboto/latin-ext-400.css new file mode 100644 index 0000000..74171d6 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-400.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-ext-400-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-500-italic.css b/node_modules/@fontsource/roboto/latin-ext-500-italic.css new file mode 100644 index 0000000..0772016 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-500-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-ext-500-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-500.css b/node_modules/@fontsource/roboto/latin-ext-500.css new file mode 100644 index 0000000..7992834 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-500.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-ext-500-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-700-italic.css b/node_modules/@fontsource/roboto/latin-ext-700-italic.css new file mode 100644 index 0000000..3e6e3b7 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-700-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-ext-700-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-700.css b/node_modules/@fontsource/roboto/latin-ext-700.css new file mode 100644 index 0000000..96a59be --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-700.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-ext-700-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-900-italic.css b/node_modules/@fontsource/roboto/latin-ext-900-italic.css new file mode 100644 index 0000000..ceccde8 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-900-italic.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-ext-900-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-900.css b/node_modules/@fontsource/roboto/latin-ext-900.css new file mode 100644 index 0000000..8bbc2dd --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-900.css @@ -0,0 +1,8 @@ +/* roboto-latin-ext-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-ext-900-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext-italic.css b/node_modules/@fontsource/roboto/latin-ext-italic.css new file mode 100644 index 0000000..4e73667 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext-italic.css @@ -0,0 +1,53 @@ +/* roboto-latin-ext-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-ext-100-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-100-italic.woff) format('woff'); +} + +/* roboto-latin-ext-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-ext-300-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-300-italic.woff) format('woff'); +} + +/* roboto-latin-ext-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-ext-400-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-400-italic.woff) format('woff'); +} + +/* roboto-latin-ext-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-ext-500-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-500-italic.woff) format('woff'); +} + +/* roboto-latin-ext-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-ext-700-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-700-italic.woff) format('woff'); +} + +/* roboto-latin-ext-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-ext-900-italic.woff2) format('woff2'), url(./files/roboto-latin-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-ext.css b/node_modules/@fontsource/roboto/latin-ext.css new file mode 100644 index 0000000..dab0d6c --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-ext.css @@ -0,0 +1,53 @@ +/* roboto-latin-ext-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-ext-100-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-100-normal.woff) format('woff'); +} + +/* roboto-latin-ext-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-ext-300-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-300-normal.woff) format('woff'); +} + +/* roboto-latin-ext-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-ext-400-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-400-normal.woff) format('woff'); +} + +/* roboto-latin-ext-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-ext-500-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-500-normal.woff) format('woff'); +} + +/* roboto-latin-ext-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-ext-700-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-700-normal.woff) format('woff'); +} + +/* roboto-latin-ext-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-ext-900-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin-italic.css b/node_modules/@fontsource/roboto/latin-italic.css new file mode 100644 index 0000000..8e023ad --- /dev/null +++ b/node_modules/@fontsource/roboto/latin-italic.css @@ -0,0 +1,53 @@ +/* roboto-latin-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-100-italic.woff2) format('woff2'), url(./files/roboto-latin-100-italic.woff) format('woff'); +} + +/* roboto-latin-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-300-italic.woff2) format('woff2'), url(./files/roboto-latin-300-italic.woff) format('woff'); +} + +/* roboto-latin-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-400-italic.woff2) format('woff2'), url(./files/roboto-latin-400-italic.woff) format('woff'); +} + +/* roboto-latin-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-500-italic.woff2) format('woff2'), url(./files/roboto-latin-500-italic.woff) format('woff'); +} + +/* roboto-latin-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-700-italic.woff2) format('woff2'), url(./files/roboto-latin-700-italic.woff) format('woff'); +} + +/* roboto-latin-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-900-italic.woff2) format('woff2'), url(./files/roboto-latin-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/latin.css b/node_modules/@fontsource/roboto/latin.css new file mode 100644 index 0000000..cd04409 --- /dev/null +++ b/node_modules/@fontsource/roboto/latin.css @@ -0,0 +1,53 @@ +/* roboto-latin-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-latin-100-normal.woff2) format('woff2'), url(./files/roboto-latin-100-normal.woff) format('woff'); +} + +/* roboto-latin-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-latin-300-normal.woff2) format('woff2'), url(./files/roboto-latin-300-normal.woff) format('woff'); +} + +/* roboto-latin-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-latin-400-normal.woff2) format('woff2'), url(./files/roboto-latin-400-normal.woff) format('woff'); +} + +/* roboto-latin-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-latin-500-normal.woff2) format('woff2'), url(./files/roboto-latin-500-normal.woff) format('woff'); +} + +/* roboto-latin-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-latin-700-normal.woff2) format('woff2'), url(./files/roboto-latin-700-normal.woff) format('woff'); +} + +/* roboto-latin-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-latin-900-normal.woff2) format('woff2'), url(./files/roboto-latin-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/metadata.json b/node_modules/@fontsource/roboto/metadata.json new file mode 100644 index 0000000..7d15cfe --- /dev/null +++ b/node_modules/@fontsource/roboto/metadata.json @@ -0,0 +1,27 @@ +{ + "id": "roboto", + "family": "Roboto", + "subsets": [ + "cyrillic", + "cyrillic-ext", + "greek", + "greek-ext", + "latin", + "latin-ext", + "vietnamese" + ], + "weights": [100, 300, 400, 500, 700, 900], + "styles": ["italic", "normal"], + "defSubset": "latin", + "variable": false, + "lastModified": "2022-09-22", + "version": "v30", + "category": "sans-serif", + "license": { + "type": "Apache-2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html", + "attribution": "Copyright 2011 Google Inc. All Rights Reserved." + }, + "source": "https://github.com/google/fonts", + "type": "google" +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/package.json b/node_modules/@fontsource/roboto/package.json new file mode 100644 index 0000000..a3a8710 --- /dev/null +++ b/node_modules/@fontsource/roboto/package.json @@ -0,0 +1,30 @@ +{ + "name": "@fontsource/roboto", + "version": "5.0.13", + "description": "Self-host the Roboto font in a neatly bundled NPM package.", + "main": "index.css", + "publishConfig": {"access": "public"}, + "keywords": [ + "fontsource", + "font", + "font family", + "google fonts", + "roboto", + "Roboto", + "css", + "sass", + "front-end", + "web", + "typeface", + "variable" + ], + "author": "Google Inc.", + "license": "Apache-2.0", + "homepage": "https://fontsource.org/fonts/roboto", + "repository": { + "type": "git", + "url": "https://github.com/fontsource/font-files.git", + "directory": "fonts/google/roboto" + }, + "publishHash": "d92e9db3a24c6b33" +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/scss/metadata.scss b/node_modules/@fontsource/roboto/scss/metadata.scss new file mode 100644 index 0000000..69297d4 --- /dev/null +++ b/node_modules/@fontsource/roboto/scss/metadata.scss @@ -0,0 +1,22 @@ +$id: 'roboto' !default; +$family: 'Roboto' !default; +$category: sans-serif !default; +$subsets: (cyrillic, cyrillic-ext, greek, greek-ext, latin, latin-ext, vietnamese) !default; +$weights: (100, 300, 400, 500, 700, 900) !default; +$styles: (italic, normal) !default; +$axes: null !default; +$defaults: ( + subset: latin, + weight: 400, + style: normal, + axis: null, +) !default; +$unicode: ( + cyrillic-ext: (U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F), + cyrillic: (U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116), + greek-ext: (U+1F00-1FFF), + greek: (U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF), + vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB), + latin-ext: (U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF), + latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), +) !default; diff --git a/node_modules/@fontsource/roboto/scss/mixins.scss b/node_modules/@fontsource/roboto/scss/mixins.scss new file mode 100644 index 0000000..0571337 --- /dev/null +++ b/node_modules/@fontsource/roboto/scss/mixins.scss @@ -0,0 +1,192 @@ +@use 'sass:list'; +@use 'sass:map'; +@use 'sass:math'; +@use 'sass:meta'; +@use 'sass:string'; + +@use 'metadata'; + +$metadata: meta.module-variables(metadata) !default; +$directory: null !default; + +$family: null !default; +$display: null !default; +$formats: null !default; +$subsets: null !default; +$weights: null !default; +$styles: null !default; +$axes: null !default; + +// Deprecated +$displayVar: null !default; + +@mixin generator( + $metadata: $metadata, + $directory: $directory, + $family: $family, + $display: $display, + $formats: $formats, + $subsets: $subsets, + $weights: $weights, + $styles: $styles, + $axes: $axes, + + // Deprecated + $displayVar: $displayVar +) { + + @if $displayVar != null { + @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726)."; + } + + $isVariable: map.get($metadata, axes) != null; + + $directory: if( + $directory, + $directory, + '~@fontsource#{if($isVariable, '-variable', '')}/#{map.get($metadata, id)}/files' + ); + + $family: if($family, $family, map.get($metadata, family) + if($isVariable, ' Variable', '')); + $display: if($display, $display, swap); + $formats: if(not $formats or $formats == all, if($isVariable, woff2, (woff2, woff)), $formats); + $subsets: if( + $subsets, + if($subsets == all, map.get($metadata, subsets), $subsets), + map.get($metadata, subsets) + ); + $weights: if( + $weights, + if($weights == all, map.get($metadata, weights), $weights), + map.get($metadata, defaults, weight) + ); + $styles: if( + $styles, + if($styles == all, map.get($metadata, styles), $styles), + map.get($metadata, defaults, style) + ); + $axes: if( + $axes, + if($axes == all, full, $axes), + if($isVariable, if(map.has-key($metadata, axes, wght), wght, full), null) + ); + + @each $subset in $subsets { + @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) { + // If condition is true, generate faces for the current subset + @if ( + // If there is no unicode information for the font or + ($unicodeSubset == null) or + // If the subset match a unicode subset or + ($subset == $unicodeSubset) or + ( + // If $unicodeSubset is a numeric unicode subset + // and current subset exists in the list of font subsets but does not match any unicode subset + // then generate faces for this numeric unicode subset as it is representing part of the current subset + list.index(map.get($metadata, subsets), $subset) and not + map.has-key($metadata, unicode, $subset) and not + list.index(map.get($metadata, subsets), $unicodeSubset) + ) + ) { + @each $weight in if($axes, null, $weights) { + @each $axis in $axes { + @each $style in $styles { + $variant: '#{map.get($metadata, id)}-#{if($unicodeSubset, $unicodeSubset, $subset)}-#{if($axis, $axis, $weight)}-#{$style}'; + + $src: (); + @each $format in $formats { + $src: append( + $src, + url('#{$directory}/#{$variant}.#{$format}') + format('#{$format}#{if($axis, '-variations', '')}'), + comma + ); + } + + @content (( + metadata: $metadata, + directory: $directory, + family: $family, + display: $display, + formats: $formats, + subsets: $subsets, + weights: $weights, + styles: $styles, + axes: $axes, + + variant: $variant, + subset: $subset, + unicodeSubset: $unicodeSubset, + unicodeRange: $unicodeRange, + weight: $weight, + axis: $axis, + style: $style, + + font-family: string.quote($family), + font-style: if( + (($axis == full) or ($axis == slnt)) and map.has-key($metadata, axes, slnt), + oblique map.get($metadata, axes, slnt, min) + deg map.get($metadata, axes, slnt, max) + deg, + $style + ), + font-display: $display, + font-weight: if( + (($axis == full) or ($axis == wght)) and map.has-key($metadata, axes, wght), + map.get($metadata, axes, wght, min) map.get($metadata, axes, wght, max), + $weight + ), + font-stretch: if( + (($axis == full) or ($axis == wdth)) and map.has-key($metadata, axes, wdth), + '#{map.get($metadata, axes, wdth, min)}% #{map.get($metadata, axes, wdth, max)}%', + null + ), + src: $src, + unicode-range: $unicodeRange, + )); + } + } + } + } + } + } +} + +@mixin faces( + $metadata: $metadata, + $directory: $directory, + $family: $family, + $display: $display, + $formats: $formats, + $subsets: $subsets, + $weights: $weights, + $styles: $styles, + $axes: $axes, + + // Deprecated + $displayVar: $displayVar +) { + @include generator( + $metadata: $metadata, + $directory: $directory, + $family: $family, + $display: $display, + $formats: $formats, + $subsets: $subsets, + $weights: $weights, + $styles: $styles, + $axes: $axes, + + $displayVar: $displayVar + ) + using ($props) { + /* #{map.get($props, variant)} */ + @font-face { + font-family: map.get($props, font-family); + font-style: map.get($props, font-style); + font-display: map.get($props, font-display); + font-weight: map.get($props, font-weight); + font-stretch: map.get($props, font-stretch); + unicode-range: map.get($props, unicode-range); + src: map.get($props, src); + } + } +} diff --git a/node_modules/@fontsource/roboto/unicode.json b/node_modules/@fontsource/roboto/unicode.json new file mode 100644 index 0000000..05a0961 --- /dev/null +++ b/node_modules/@fontsource/roboto/unicode.json @@ -0,0 +1,9 @@ +{ + "cyrillic-ext": "U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F", + "cyrillic": "U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116", + "greek-ext": "U+1F00-1FFF", + "greek": "U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF", + "vietnamese": "U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB", + "latin-ext": "U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF", + "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-100-italic.css b/node_modules/@fontsource/roboto/vietnamese-100-italic.css new file mode 100644 index 0000000..be2be4b --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-100-italic.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-vietnamese-100-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-100.css b/node_modules/@fontsource/roboto/vietnamese-100.css new file mode 100644 index 0000000..ad3851b --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-100.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-vietnamese-100-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-100-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-300-italic.css b/node_modules/@fontsource/roboto/vietnamese-300-italic.css new file mode 100644 index 0000000..fc89aa2 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-300-italic.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-vietnamese-300-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-300.css b/node_modules/@fontsource/roboto/vietnamese-300.css new file mode 100644 index 0000000..be540d2 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-300.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-vietnamese-300-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-300-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-400-italic.css b/node_modules/@fontsource/roboto/vietnamese-400-italic.css new file mode 100644 index 0000000..7d52f12 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-400-italic.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-vietnamese-400-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-400.css b/node_modules/@fontsource/roboto/vietnamese-400.css new file mode 100644 index 0000000..af05553 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-400.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-vietnamese-400-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-400-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-500-italic.css b/node_modules/@fontsource/roboto/vietnamese-500-italic.css new file mode 100644 index 0000000..aa2c9b8 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-500-italic.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-vietnamese-500-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-500.css b/node_modules/@fontsource/roboto/vietnamese-500.css new file mode 100644 index 0000000..299c324 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-500.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-vietnamese-500-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-500-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-700-italic.css b/node_modules/@fontsource/roboto/vietnamese-700-italic.css new file mode 100644 index 0000000..330c6d6 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-700-italic.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-vietnamese-700-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-700.css b/node_modules/@fontsource/roboto/vietnamese-700.css new file mode 100644 index 0000000..f941111 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-700.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-vietnamese-700-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-700-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-900-italic.css b/node_modules/@fontsource/roboto/vietnamese-900-italic.css new file mode 100644 index 0000000..ea36292 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-900-italic.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-vietnamese-900-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-900.css b/node_modules/@fontsource/roboto/vietnamese-900.css new file mode 100644 index 0000000..27ca2ef --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-900.css @@ -0,0 +1,8 @@ +/* roboto-vietnamese-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-vietnamese-900-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese-italic.css b/node_modules/@fontsource/roboto/vietnamese-italic.css new file mode 100644 index 0000000..cfd93bb --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese-italic.css @@ -0,0 +1,53 @@ +/* roboto-vietnamese-100-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-vietnamese-100-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-100-italic.woff) format('woff'); +} + +/* roboto-vietnamese-300-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-vietnamese-300-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-300-italic.woff) format('woff'); +} + +/* roboto-vietnamese-400-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-vietnamese-400-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-400-italic.woff) format('woff'); +} + +/* roboto-vietnamese-500-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-vietnamese-500-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-500-italic.woff) format('woff'); +} + +/* roboto-vietnamese-700-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-vietnamese-700-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-700-italic.woff) format('woff'); +} + +/* roboto-vietnamese-900-italic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-vietnamese-900-italic.woff2) format('woff2'), url(./files/roboto-vietnamese-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/@fontsource/roboto/vietnamese.css b/node_modules/@fontsource/roboto/vietnamese.css new file mode 100644 index 0000000..0abd3a6 --- /dev/null +++ b/node_modules/@fontsource/roboto/vietnamese.css @@ -0,0 +1,53 @@ +/* roboto-vietnamese-100-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 100; + src: url(./files/roboto-vietnamese-100-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-100-normal.woff) format('woff'); +} + +/* roboto-vietnamese-300-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 300; + src: url(./files/roboto-vietnamese-300-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-300-normal.woff) format('woff'); +} + +/* roboto-vietnamese-400-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(./files/roboto-vietnamese-400-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-400-normal.woff) format('woff'); +} + +/* roboto-vietnamese-500-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 500; + src: url(./files/roboto-vietnamese-500-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-500-normal.woff) format('woff'); +} + +/* roboto-vietnamese-700-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url(./files/roboto-vietnamese-700-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-700-normal.woff) format('woff'); +} + +/* roboto-vietnamese-900-normal */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-display: swap; + font-weight: 900; + src: url(./files/roboto-vietnamese-900-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-900-normal.woff) format('woff'); +} \ No newline at end of file diff --git a/node_modules/elevator.js/README.md b/node_modules/elevator.js/README.md new file mode 100644 index 0000000..235ce50 --- /dev/null +++ b/node_modules/elevator.js/README.md @@ -0,0 +1,132 @@ +# elevator.js +Finally, a "back to top" button that behaves like a real elevator, by adding elevator music to quietly soothe the awkwardness that can ensue when being smoothly scrolled to the top of the screen. + +This is very serious stuff, [here's a demo](http://tholman.com/elevator.js)! + +### Instructions + +`Elevator.js` is a stand alone library (no jquery, or the likes) so usage is pretty straight forward. All styling of elements is up to you. `Elevator.js` only handles the audio management, and the scroll functionality! + +#### JS + +`Elevator.js` lives entirely within the js realm, which makes things fairly simple to use. + +You'll need to create a new instance of `Elevator`, and pass it some audio elements. + +```html + +``` + +You can also add an "element" option, clicking this element will invoke the "Scroll to top" functionality, we all love and crave. +```html +
Back to Top
+ + +``` + +If you don't want to scroll to the top, a custom target can be specified by adding a "targetElement" option: +```html +
Take the elevator to the target
+ + +``` + +If you want to scroll to a point on the page with some extra padding on the top, simply add the "verticalPadding" option: + +```html +
Take the elevator to the target
+ + +``` + +If you're really serious (boring), you don't have to use audio... and can also set a fixed time to scroll to the top +```html +
Back to Top
+ + +``` + +If you use elevator.js in combination with other code, you might want to use callbacks +```html + +``` + +### NPM +The package is also available via [NPM](https://www.npmjs.com/package/elevator.js) + +### License + +Elevator.js is covered by the MIT License. + +Audio in the Demo (sourced from [BenSound](http://www.bensound.com/)) is licenced under [Creative Commons](http://www.bensound.com/licensing). + +Copyright (C) 2015 ~ [Tim Holman](http://tholman.com) ~ timothy.w.holman@gmail.com diff --git a/node_modules/elevator.js/demo/css/styles.css b/node_modules/elevator.js/demo/css/styles.css new file mode 100644 index 0000000..fb98b80 --- /dev/null +++ b/node_modules/elevator.js/demo/css/styles.css @@ -0,0 +1,97 @@ +html, body { + padding: 0px; + margin: 0px; + width: 100%; + min-height: 100%; +} + +body { + color: #0C1F31; + background: #fff; + font-family: 'Avenir Next', 'Helvetica Neue', Helvetica, Arial, sans-serif; + text-align: center; +} + +.wrapper { + width: 900px; + margin: auto; + text-align: center; +} + +h1 { + font-size: 120px; + font-weight: 600; + margin-bottom: 8px; + margin-top: 120px; +} + +p { + width: 900px; + font-size: 24px; + font-weight: 400; + margin: auto; + line-height: 35px +} + +.down-arrow { + font-size: 120px; + margin-top: 90px; + margin-bottom: 90px; + text-shadow: 0px -20px #0C1F31, 0px 0px #C33329; + color: rgba(0,0,0,0); + + -webkit-transform: scaleY(0.8); + -moz-transform: scaleY(0.8); + transform: scaleY(0.8); +} + +.footer { + box-sizing: border-box; + padding-top: 190px; + height: 300px; +} + +.elevator { + text-align: center; + cursor: pointer; + width: 140px; + margin: auto; +} + +.elevator:hover { + opacity: 0.7; +} + +.elevator svg { + width: 40px; + height: 40px; + display: block; + margin: auto; + margin-bottom: 5px; +} + +.github-link { + position: fixed; + top: 0px; + right: 0px; +} + +.links { + margin-top: 25px; + font-size: 16px; + font-weight: bold; +} + +.links a, iframe { + margin-left: 10px; + margin-right: 10px; +} + +iframe { + margin-bottom: -3px; +} + +.links a { + text-decoration: none; + color: #0C1F31; +} \ No newline at end of file diff --git a/node_modules/elevator.js/demo/index.html b/node_modules/elevator.js/demo/index.html new file mode 100644 index 0000000..331baff --- /dev/null +++ b/node_modules/elevator.js/demo/index.html @@ -0,0 +1,114 @@ + + + + Elevator.js + + + + + + + + + + +

Elevator.js

+

+ Elevator.js fixes those awkward "scroll to top" moments the old fashioned way. +

+ + +
+

+ First we need to get to the bottom of the page. +

+ +
+

+ Because you're already at the top. +

+ +
+

+ So a "back to top" button wouldn't make sense. +

+ +
+

+ Down down down. +

+ +
+

+ Wow, all this scrolling. +

+ +
+

+ This had better be worth it. +

+ +
+

+ It's going to take ages to get back to the top. +

+ +
+

+ If only we had an easy way to get back... +

+ +
+

+ ...that is both functional and fun. +

+ +
+

+ I call "back to top" buttons elevators... +

+ +
+

+ ...they should really behave more like them. +

+ +
+

+ Ok, here we are... click that elevator! +

+ + + + + Fork me on GitHub + + + + + + + + \ No newline at end of file diff --git a/node_modules/elevator.js/demo/music/ding.mp3 b/node_modules/elevator.js/demo/music/ding.mp3 new file mode 100644 index 0000000..05df23e Binary files /dev/null and b/node_modules/elevator.js/demo/music/ding.mp3 differ diff --git a/node_modules/elevator.js/demo/music/elevator.mp3 b/node_modules/elevator.js/demo/music/elevator.mp3 new file mode 100644 index 0000000..2b30a30 Binary files /dev/null and b/node_modules/elevator.js/demo/music/elevator.mp3 differ diff --git a/node_modules/elevator.js/elevator.js b/node_modules/elevator.js/elevator.js new file mode 100644 index 0000000..90b784f --- /dev/null +++ b/node_modules/elevator.js/elevator.js @@ -0,0 +1,272 @@ +/*! + * Elevator.js + * + * MIT licensed + * Copyright (C) 2015 Tim Holman, http://tholman.com + */ + +/********************************************* + * Elevator.js + *********************************************/ + +var Elevator = function(options) { + "use strict"; + + // Elements + var body = null; + + // Scroll vars + var animation = null; + var duration = null; // ms + var customDuration = false; + var startTime = null; + var startPosition = null; + var endPosition = 0; + var targetElement = null; + var verticalPadding = null; + var elevating = false; + + var startCallback; + var mainAudio; + var endAudio; + var endCallback; + + var that = this; + + /** + * Utils + */ + + // Thanks Mr Penner - http://robertpenner.com/easing/ + function easeInOutQuad(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t + b; + t--; + return -c / 2 * (t * (t - 2) - 1) + b; + } + + function extendParameters(options, defaults) { + for (var option in defaults) { + var t = + options[option] === undefined && typeof option !== "function"; + if (t) { + options[option] = defaults[option]; + } + } + return options; + } + + function getVerticalOffset(element) { + var verticalOffset = 0; + while (element) { + verticalOffset += element.offsetTop || 0; + element = element.offsetParent; + } + + if (verticalPadding) { + verticalOffset = verticalOffset - verticalPadding; + } + + return verticalOffset; + } + + /** + * Main + */ + + // Time is passed through requestAnimationFrame, what a world! + function animateLoop(time) { + if (!startTime) { + startTime = time; + } + + var timeSoFar = time - startTime; + var easedPosition = easeInOutQuad( + timeSoFar, + startPosition, + endPosition - startPosition, + duration + ); + + window.scrollTo(0, easedPosition); + + if (timeSoFar < duration) { + animation = requestAnimationFrame(animateLoop); + } else { + animationFinished(); + } + } + + // ELEVATE! + // / + // ____ + // .' '=====<0 + // |======| + // |======| + // [IIIIII[\--() + // |_______| + // C O O O D + // C O O O D + // C O O O D + // C__O__O__O__D + // [_____________] + this.elevate = function() { + if (elevating) { + return; + } + + elevating = true; + startPosition = document.documentElement.scrollTop || body.scrollTop; + updateEndPosition(); + + // No custom duration set, so we travel at pixels per millisecond. (0.75px per ms) + if (!customDuration) { + duration = Math.abs(endPosition - startPosition) * 1.5; + } + + requestAnimationFrame(animateLoop); + + // Start music! + if (mainAudio) { + mainAudio.play(); + } + + if (startCallback) { + startCallback(); + } + }; + + function browserMeetsRequirements() { + return ( + window.requestAnimationFrame && + window.Audio && + window.addEventListener + ); + } + + function resetPositions() { + startTime = null; + startPosition = null; + elevating = false; + } + + function updateEndPosition() { + if (targetElement) { + endPosition = getVerticalOffset(targetElement); + } + } + + function animationFinished() { + resetPositions(); + + // Stop music! + if (mainAudio) { + mainAudio.pause(); + mainAudio.currentTime = 0; + } + + if (endAudio) { + endAudio.play(); + } + + if (endCallback) { + endCallback(); + } + } + + function onWindowBlur() { + // If animating, go straight to the top. And play no more music. + if (elevating) { + cancelAnimationFrame(animation); + resetPositions(); + + if (mainAudio) { + mainAudio.pause(); + mainAudio.currentTime = 0; + } + + updateEndPosition(); + window.scrollTo(0, endPosition); + } + } + + function bindElevateToElement(element) { + if (element.addEventListener) { + element.addEventListener("click", that.elevate, false); + } else { + // Older browsers + element.attachEvent("onclick", function() { + updateEndPosition(); + document.documentElement.scrollTop = endPosition; + document.body.scrollTop = endPosition; + window.scroll(0, endPosition); + }); + } + } + + function init(_options) { + // Bind to element click event, if need be. + body = document.body; + + var defaults = { + duration: undefined, + mainAudio: false, + endAudio: false, + preloadAudio: true, + loopAudio: true, + startCallback: null, + endCallback: null + }; + + _options = extendParameters(_options, defaults); + + if (_options.element) { + bindElevateToElement(_options.element); + } + + // Take the stairs instead + if (!browserMeetsRequirements()) { + return; + } + + if (_options.duration) { + customDuration = true; + duration = _options.duration; + } + + if (_options.targetElement) { + targetElement = _options.targetElement; + } + + if (_options.verticalPadding) { + verticalPadding = _options.verticalPadding; + } + + window.addEventListener("blur", onWindowBlur, false); + + if (_options.mainAudio) { + mainAudio = new Audio(_options.mainAudio); + mainAudio.setAttribute("preload", _options.preloadAudio); + mainAudio.setAttribute("loop", _options.loopAudio); + } + + if (_options.endAudio) { + endAudio = new Audio(_options.endAudio); + endAudio.setAttribute("preload", "true"); + } + + if (_options.endCallback) { + endCallback = _options.endCallback; + } + + if (_options.startCallback) { + startCallback = _options.startCallback; + } + } + + init(options); +}; + +if (typeof module !== "undefined" && module.exports) { + module.exports = Elevator; +} diff --git a/node_modules/elevator.js/elevator.min.js b/node_modules/elevator.js/elevator.min.js new file mode 100644 index 0000000..f30692a --- /dev/null +++ b/node_modules/elevator.js/elevator.min.js @@ -0,0 +1 @@ +var Elevator=function(n){"use strict";function e(n,e,t,o){return n/=o/2,1>n?t/2*n*n+e:(n--,-t/2*(n*(n-2)-1)+e)}function t(n,e){for(var t in e){var o=void 0===n[t]&&"function"!=typeof t;o&&(n[t]=e[t])}return n}function o(n){for(var e=0;n;)e+=n.offsetTop||0,n=n.offsetParent;return g&&(e-=g),e}function l(n){T||(T=n);var t=n-T,o=e(t,k,y-k,b);window.scrollTo(0,o),b>t?w=requestAnimationFrame(l):r()}function i(){return window.requestAnimationFrame&&window.Audio&&window.addEventListener}function u(){T=null,k=null,h=!1}function a(){C&&(y=o(C))}function r(){u(),f&&(f.pause(),f.currentTime=0),p&&p.play(),v&&v()}function d(){h&&(cancelAnimationFrame(w),u(),f&&(f.pause(),f.currentTime=0),a(),window.scrollTo(0,y))}function c(n){n.addEventListener?n.addEventListener("click",F.elevate,!1):n.attachEvent("onclick",function(){a(),document.documentElement.scrollTop=y,document.body.scrollTop=y,window.scroll(0,y)})}function s(n){A=document.body;var e={duration:void 0,mainAudio:!1,endAudio:!1,preloadAudio:!0,loopAudio:!0,startCallback:null,endCallback:null};n=t(n,e),n.element&&c(n.element),i()&&(n.duration&&(E=!0,b=n.duration),n.targetElement&&(C=n.targetElement),n.verticalPadding&&(g=n.verticalPadding),window.addEventListener("blur",d,!1),n.mainAudio&&(f=new Audio(n.mainAudio),f.setAttribute("preload",n.preloadAudio),f.setAttribute("loop",n.loopAudio)),n.endAudio&&(p=new Audio(n.endAudio),p.setAttribute("preload","true")),n.endCallback&&(v=n.endCallback),n.startCallback&&(m=n.startCallback))}var m,f,p,v,A=null,w=null,b=null,E=!1,T=null,k=null,y=0,C=null,g=null,h=!1,F=this;this.elevate=function(){h||(h=!0,k=document.documentElement.scrollTop||A.scrollTop,a(),E||(b=1.5*Math.abs(y-k)),requestAnimationFrame(l),f&&f.play(),m&&m())},s(n)};"undefined"!=typeof module&&module.exports&&(module.exports=Elevator); \ No newline at end of file diff --git a/node_modules/elevator.js/package.json b/node_modules/elevator.js/package.json new file mode 100644 index 0000000..ca550aa --- /dev/null +++ b/node_modules/elevator.js/package.json @@ -0,0 +1,21 @@ +{ + "name": "elevator.js", + "version": "1.0.1", + "description": + "Elevator.js fixes those awkward \"scroll to top\" moments the old fashioned way.", + "keywords": ["scroll", "top", "elevator"], + "homepage": "http://tholman.com/elevator.js", + "bugs": { + "url": "https://github.com/tholman/elevator.js/issues" + }, + "license": "MIT", + "author": "Tim Holman (http://tholman.com)", + "main": "elevator.min.js", + "repository": { + "type": "git", + "url": "git+https://github.com/tholman/elevator.js.git" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9a9ef48 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,35 @@ +{ + "name": "static", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@fontsource/inconsolata": "^5.0.18", + "@fontsource/merriweather": "^5.0.13", + "@fontsource/roboto": "5.0.13", + "elevator.js": "^1.0.1" + } + }, + "node_modules/@fontsource/inconsolata": { + "version": "5.0.18", + "resolved": "https://registry.npmjs.org/@fontsource/inconsolata/-/inconsolata-5.0.18.tgz", + "integrity": "sha512-VVG5RWMfYEmWRKv3sh8M1n3Ux3vs7v8978vYZ205lBQPlff3e7H67f7TRfswj2ybnX53+QxWylySvcv8ACCvWw==" + }, + "node_modules/@fontsource/merriweather": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/@fontsource/merriweather/-/merriweather-5.0.13.tgz", + "integrity": "sha512-V/UsU+5yceDICBUJJXWCT+6xf5YpLIVUHfUjBQ+NNbllIhe3zaVZ1f3t5+fNKwvBzKBDa3RNMCofAdW7uzw08Q==" + }, + "node_modules/@fontsource/roboto": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.13.tgz", + "integrity": "sha512-j61DHjsdUCKMXSdNLTOxcG701FWnF0jcqNNQi2iPCDxU8seN/sMxeh62dC++UiagCWq9ghTypX+Pcy7kX+QOeQ==" + }, + "node_modules/elevator.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elevator.js/-/elevator.js-1.0.1.tgz", + "integrity": "sha512-3+jUQIrUxDGjhF7cyrxi+NcqaDkYhQ+Y2UfVqozYMLxAY1i9l2ZjLWzPlFMFc4nx3SPYf9EPHEn1zUqpIWlXng==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..10d5c4e --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "@fontsource/roboto": "5.0.13", + "@fontsource/merriweather": "^5.0.13", + "@fontsource/inconsolata": "^5.0.18", + "elevator.js": "^1.0.1" + }, + "scripts": { + "post-update": "npm install --prefix ./static/ --only=production" + } +} \ No newline at end of file diff --git a/posts/index.html b/posts/index.html new file mode 100644 index 0000000..81f724f --- /dev/null +++ b/posts/index.html @@ -0,0 +1,3 @@ + + Mercury +
Mercury
Modern blog theme
Posts

Math

Markdown Syntax

    John Doe - © 2023
    \ No newline at end of file diff --git a/posts/markdown/index.html b/posts/markdown/index.html new file mode 100644 index 0000000..ea235d0 --- /dev/null +++ b/posts/markdown/index.html @@ -0,0 +1,256 @@ + + Markdown Syntax +
    Mercury
    Modern blog theme
    Markdown Syntax

    Taken from github.com/thephpleague/commonmark/blob/2.3/tests/benchmark/sample.md

    Overview

    Philosophy

    Markdown is intended to be as easy-to-read and easy-to-write as is feasible.

    Readability, however, is emphasized above all else. A Markdown-formatted document should be publishable as-is, as plain text, without looking like it's been marked up with tags or formatting instructions. While Markdown's syntax has been influenced by several existing text-to-HTML filters -- including [Setext] 1, [atx] 2, [Textile] 3, [reStructuredText] 4, [Grutatext] 5, and [EtText] 6 -- the single biggest source of inspiration for Markdown's syntax is the format of plain text email.

    To this end, Markdown's syntax is comprised entirely of punctuation characters, which punctuation characters have been carefully chosen so as to look like what they mean. E.g., asterisks around a word actually look like *emphasis*. Markdown lists look like, well, lists. Even blockquotes look like quoted passages of text, assuming you've ever used email.

    Inline HTML

    Markdown's syntax is intended for one purpose: to be used as a format for writing for the web.

    Markdown is not a replacement for HTML, or even close to it. Its syntax is very small, corresponding only to a very small subset of HTML tags. The idea is not to create a syntax that makes it easier to insert HTML tags. In my opinion, HTML tags are already easy to insert. The idea for Markdown is to make it easy to read, write, and edit prose. HTML is a publishing format; Markdown is a writing format. Thus, Markdown's formatting syntax only addresses issues that can be conveyed in plain text.

    For any markup that is not covered by Markdown's syntax, you simply use HTML itself. There's no need to preface it or delimit it to indicate that you're switching from Markdown to HTML; you just use the tags.

    The only restrictions are that block-level HTML elements -- e.g. <div>, <table>, <pre>, <p>, etc. -- must be separated from surrounding content by blank lines, and the start and end tags of the block should not be indented with tabs or spaces. Markdown is smart enough not to add extra (unwanted) <p> tags around HTML block-level tags.

    For example, to add an HTML table to a Markdown article:

    This is a regular paragraph.
    +
    +<table>
    +    <tr>
    +        <td>Foo</td>
    +    </tr>
    +</table>
    +
    +This is another regular paragraph.
    +

    Note that Markdown formatting syntax is not processed within block-level HTML tags. E.g., you can't use Markdown-style *emphasis* inside an HTML block.

    Span-level HTML tags -- e.g. <span>, <cite>, or <del> -- can be used anywhere in a Markdown paragraph, list item, or header. If you want, you can even use HTML tags instead of Markdown formatting; e.g. if you'd prefer to use HTML <a> or <img> tags instead of Markdown's link or image syntax, go right ahead.

    Unlike block-level HTML tags, Markdown syntax is processed within span-level tags.

    Automatic Escaping for Special Characters

    In HTML, there are two characters that demand special treatment: < and &. Left angle brackets are used to start tags; ampersands are used to denote HTML entities. If you want to use them as literal characters, you must escape them as entities, e.g. &lt;, and &amp;.

    Ampersands in particular are bedeviling for web writers. If you want to write about 'AT&T', you need to write 'AT&amp;T'. You even need to escape ampersands within URLs. Thus, if you want to link to:

    http://images.google.com/images?num=30&q=larry+bird
    +

    you need to encode the URL as:

    http://images.google.com/images?num=30&amp;q=larry+bird
    +

    in your anchor tag href attribute. Needless to say, this is easy to forget, and is probably the single most common source of HTML validation errors in otherwise well-marked-up web sites.

    Markdown allows you to use these characters naturally, taking care of all the necessary escaping for you. If you use an ampersand as part of an HTML entity, it remains unchanged; otherwise it will be translated into &amp;.

    So, if you want to include a copyright symbol in your article, you can write:

    &copy;
    +

    and Markdown will leave it alone. But if you write:

    AT&T
    +

    Markdown will translate it to:

    AT&amp;T
    +

    Similarly, because Markdown supports inline HTML, if you use angle brackets as delimiters for HTML tags, Markdown will treat them as such. But if you write:

    4 < 5
    +

    Markdown will translate it to:

    4 &lt; 5
    +

    However, inside Markdown code spans and blocks, angle brackets and ampersands are always encoded automatically. This makes it easy to use Markdown to write about HTML code. (As opposed to raw HTML, which is a terrible format for writing about HTML syntax, because every single < and & in your example code needs to be escaped.)


    Block Elements

    Paragraphs and Line Breaks

    A paragraph is simply one or more consecutive lines of text, separated by one or more blank lines. (A blank line is any line that looks like a blank line -- a line containing nothing but spaces or tabs is considered blank.) Normal paragraphs should not be indented with spaces or tabs.

    The implication of the "one or more consecutive lines of text" rule is that Markdown supports "hard-wrapped" text paragraphs. This differs significantly from most other text-to-HTML formatters (including Movable Type's "Convert Line Breaks" option) which translate every line break character in a paragraph into a <br /> tag.

    When you do want to insert a <br /> break tag using Markdown, you end a line with two or more spaces, then type return.

    Yes, this takes a tad more effort to create a <br />, but a simplistic "every line break is a <br />" rule wouldn't work for Markdown. Markdown's email-style blockquoting and multi-paragraph list items work best -- and look better -- when you format them with hard breaks.

    Markdown supports two styles of headers, [Setext] 1 and [atx] 2.

    Setext-style headers are "underlined" using equal signs (for first-level headers) and dashes (for second-level headers). For example:

    This is an H1
    +=============
    +
    +This is an H2
    +-------------
    +

    Any number of underlining ='s or -'s will work.

    Atx-style headers use 1-6 hash characters at the start of the line, corresponding to header levels 1-6. For example:

    # This is an H1
    +
    +## This is an H2
    +
    +###### This is an H6
    +

    Optionally, you may "close" atx-style headers. This is purely cosmetic -- you can use this if you think it looks better. The closing hashes don't even need to match the number of hashes used to open the header. (The number of opening hashes determines the header level.) :

    # This is an H1 #
    +
    +## This is an H2 ##
    +
    +### This is an H3 ######
    +

    Blockquotes

    Markdown uses email-style > characters for blockquoting. If you're familiar with quoting passages of text in an email message, then you know how to create a blockquote in Markdown. It looks best if you hard wrap the text and put a > before every line:

    > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
    +> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
    +> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
    +> 
    +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
    +> id sem consectetuer libero luctus adipiscing.
    +

    Markdown allows you to be lazy and only put the > before the first line of a hard-wrapped paragraph:

    > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
    +consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
    +Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
    +
    +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
    +id sem consectetuer libero luctus adipiscing.
    +

    Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by adding additional levels of >:

    > This is the first level of quoting.
    +>
    +> > This is nested blockquote.
    +>
    +> Back to the first level.
    +

    Blockquotes can contain other Markdown elements, including headers, lists, and code blocks:

    This is a header.

    1. This is the first list item.
    2. This is the second list item.

    Here's some example code:

     return shell_exec("echo $input | $markdown_script");
    +

    Any decent text editor should make email-style quoting easy. For example, with BBEdit, you can make a selection and choose Increase Quote Level from the Text menu.

    Lists

    Markdown supports ordered (numbered) and unordered (bulleted) lists.

    Unordered lists use asterisks, pluses, and hyphens -- interchangably -- as list markers:

    *   Red
    +*   Green
    +*   Blue
    +

    is equivalent to:

    +   Red
    ++   Green
    ++   Blue
    +

    and:

    -   Red
    +-   Green
    +-   Blue
    +

    Ordered lists use numbers followed by periods:

    1.  Bird
    +2.  McHale
    +3.  Parish
    +

    It's important to note that the actual numbers you use to mark the list have no effect on the HTML output Markdown produces. The HTML Markdown produces from the above list is:

    <ol>
    +<li>Bird</li>
    +<li>McHale</li>
    +<li>Parish</li>
    +</ol>
    +

    If you instead wrote the list in Markdown like this:

    1.  Bird
    +1.  McHale
    +1.  Parish
    +

    or even:

    3. Bird
    +1. McHale
    +8. Parish
    +

    you'd get the exact same HTML output. The point is, if you want to, you can use ordinal numbers in your ordered Markdown lists, so that the numbers in your source match the numbers in your published HTML. But if you want to be lazy, you don't have to.

    If you do use lazy list numbering, however, you should still start the list with the number 1. At some point in the future, Markdown may support starting ordered lists at an arbitrary number.

    List markers typically start at the left margin, but may be indented by up to three spaces. List markers must be followed by one or more spaces or a tab.

    To make lists look nice, you can wrap items with hanging indents:

    *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    +    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    +    viverra nec, fringilla in, laoreet vitae, risus.
    +*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    +    Suspendisse id sem consectetuer libero luctus adipiscing.
    +

    But if you want to be lazy, you don't have to:

    *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    +Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    +viverra nec, fringilla in, laoreet vitae, risus.
    +*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    +Suspendisse id sem consectetuer libero luctus adipiscing.
    +

    If list items are separated by blank lines, Markdown will wrap the items in <p> tags in the HTML output. For example, this input:

    *   Bird
    +*   Magic
    +

    will turn into:

    <ul>
    +<li>Bird</li>
    +<li>Magic</li>
    +</ul>
    +

    But this:

    *   Bird
    +
    +*   Magic
    +

    will turn into:

    <ul>
    +<li><p>Bird</p></li>
    +<li><p>Magic</p></li>
    +</ul>
    +

    List items may consist of multiple paragraphs. Each subsequent paragraph in a list item must be indented by either 4 spaces or one tab:

    1.  This is a list item with two paragraphs. Lorem ipsum dolor
    +    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
    +    mi posuere lectus.
    +
    +    Vestibulum enim wisi, viverra nec, fringilla in, laoreet
    +    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
    +    sit amet velit.
    +
    +2.  Suspendisse id sem consectetuer libero luctus adipiscing.
    +

    It looks nice if you indent every line of the subsequent paragraphs, but here again, Markdown will allow you to be lazy:

    *   This is a list item with two paragraphs.
    +
    +    This is the second paragraph in the list item. You're
    +only required to indent the first line. Lorem ipsum dolor
    +sit amet, consectetuer adipiscing elit.
    +
    +*   Another item in the same list.
    +

    To put a blockquote within a list item, the blockquote's > delimiters need to be indented:

    *   A list item with a blockquote:
    +
    +    > This is a blockquote
    +    > inside a list item.
    +

    To put a code block within a list item, the code block needs to be indented twice -- 8 spaces or two tabs:

    *   A list item with a code block:
    +
    +        <code goes here>
    +

    It's worth noting that it's possible to trigger an ordered list by accident, by writing something like this:

    1986. What a great season.
    +

    In other words, a number-period-space sequence at the beginning of a line. To avoid this, you can backslash-escape the period:

    1986\. What a great season.
    +

    Code Blocks

    Pre-formatted code blocks are used for writing about programming or markup source code. Rather than forming normal paragraphs, the lines of a code block are interpreted literally. Markdown wraps a code block in both <pre> and <code> tags.

    To produce a code block in Markdown, simply indent every line of the block by at least 4 spaces or 1 tab. For example, given this input:

    This is a normal paragraph:
    +
    +    This is a code block.
    +

    Markdown will generate:

    <p>This is a normal paragraph:</p>
    +
    +<pre><code>This is a code block.
    +</code></pre>
    +

    One level of indentation -- 4 spaces or 1 tab -- is removed from each line of the code block. For example, this:

    Here is an example of AppleScript:
    +
    +    tell application "Foo"
    +        beep
    +    end tell
    +

    will turn into:

    <p>Here is an example of AppleScript:</p>
    +
    +<pre><code>tell application "Foo"
    +    beep
    +end tell
    +</code></pre>
    +

    A code block continues until it reaches a line that is not indented (or the end of the article).

    Within a code block, ampersands (&) and angle brackets (< and >) are automatically converted into HTML entities. This makes it very easy to include example HTML source code using Markdown -- just paste it and indent it, and Markdown will handle the hassle of encoding the ampersands and angle brackets. For example, this:

        <div class="footer">
    +        &copy; 2004 Foo Corporation
    +    </div>
    +

    will turn into:

    <pre><code>&lt;div class="footer"&gt;
    +    &amp;copy; 2004 Foo Corporation
    +&lt;/div&gt;
    +</code></pre>
    +

    Regular Markdown syntax is not processed within code blocks. E.g., asterisks are just literal asterisks within a code block. This means it's also easy to use Markdown to write about Markdown's own syntax.

    Horizontal Rules

    You can produce a horizontal rule tag (<hr />) by placing three or more hyphens, asterisks, or underscores on a line by themselves. If you wish, you may use spaces between the hyphens or asterisks. Each of the following lines will produce a horizontal rule:

    * * *
    +
    +***
    +
    +*****
    +
    +- - -
    +
    +---------------------------------------
    +

    Span Elements

    Markdown supports two style of links: inline and reference.

    In both styles, the link text is delimited by [square brackets].

    To create an inline link, use a set of regular parentheses immediately after the link text's closing square bracket. Inside the parentheses, put the URL where you want the link to point, along with an optional title for the link, surrounded in quotes. For example:

    This is [an example](http://example.com/ "Title") inline link.
    +
    +[This link](http://example.net/) has no title attribute.
    +

    Will produce:

    <p>This is <a href="http://example.com/" title="Title">
    +an example</a> inline link.</p>
    +
    +<p><a href="http://example.net/">This link</a> has no
    +title attribute.</p>
    +

    If you're referring to a local resource on the same server, you can use relative paths:

    See my [About](/about/) page for details.   
    +

    Reference-style links use a second set of square brackets, inside which you place a label of your choosing to identify the link:

    This is [an example][id] reference-style link.
    +

    You can optionally use a space to separate the sets of brackets:

    This is [an example] [id] reference-style link.
    +

    Then, anywhere in the document, you define your link label like this, on a line by itself:

    [id]: http://example.com/  "Optional Title Here"
    +

    That is:

    • Square brackets containing the link identifier (optionally indented from the left margin using up to three spaces);
    • followed by a colon;
    • followed by one or more spaces (or tabs);
    • followed by the URL for the link;
    • optionally followed by a title attribute for the link, enclosed in double or single quotes, or enclosed in parentheses.

    The following three link definitions are equivalent:

    [foo]: http://example.com/  "Optional Title Here"
    +[foo]: http://example.com/  'Optional Title Here'
    +[foo]: http://example.com/  (Optional Title Here)
    +

    Note: There is a known bug in Markdown.pl 1.0.1 which prevents single quotes from being used to delimit link titles.

    The link URL may, optionally, be surrounded by angle brackets:

    [id]: <http://example.com/>  "Optional Title Here"
    +

    You can put the title attribute on the next line and use extra spaces or tabs for padding, which tends to look better with longer URLs:

    [id]: http://example.com/longish/path/to/resource/here
    +    "Optional Title Here"
    +

    Link definitions are only used for creating links during Markdown processing, and are stripped from your document in the HTML output.

    Link definition names may consist of letters, numbers, spaces, and punctuation -- but they are not case sensitive. E.g. these two links:

    [link text][a]
    +[link text][A]
    +

    are equivalent.

    The implicit link name shortcut allows you to omit the name of the link, in which case the link text itself is used as the name. Just use an empty set of square brackets -- e.g., to link the word "Google" to the google.com web site, you could simply write:

    [Google][]
    +

    And then define the link:

    [Google]: http://google.com/
    +

    Because link names may contain spaces, this shortcut even works for multiple words in the link text:

    Visit [Daring Fireball][] for more information.
    +

    And then define the link:

    [Daring Fireball]: http://daringfireball.net/
    +

    Link definitions can be placed anywhere in your Markdown document. I tend to put them immediately after each paragraph in which they're used, but if you want, you can put them all at the end of your document, sort of like footnotes.

    Here's an example of reference links in action:

    I get 10 times more traffic from [Google] [1] than from
    +[Yahoo] [2] or [MSN] [3].
    +
    +  [1]: http://google.com/        "Google"
    +  [2]: http://search.yahoo.com/  "Yahoo Search"
    +  [3]: http://search.msn.com/    "MSN Search"
    +

    Using the implicit link name shortcut, you could instead write:

    I get 10 times more traffic from [Google][] than from
    +[Yahoo][] or [MSN][].
    +
    +  [google]: http://google.com/        "Google"
    +  [yahoo]:  http://search.yahoo.com/  "Yahoo Search"
    +  [msn]:    http://search.msn.com/    "MSN Search"
    +

    Both of the above examples will produce the following HTML output:

    <p>I get 10 times more traffic from <a href="http://google.com/"
    +title="Google">Google</a> than from
    +<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
    +or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
    +

    For comparison, here is the same paragraph written using Markdown's inline link style:

    I get 10 times more traffic from [Google](http://google.com/ "Google")
    +than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
    +[MSN](http://search.msn.com/ "MSN Search").
    +

    The point of reference-style links is not that they're easier to write. The point is that with reference-style links, your document source is vastly more readable. Compare the above examples: using reference-style links, the paragraph itself is only 81 characters long; with inline-style links, it's 176 characters; and as raw HTML, it's 234 characters. In the raw HTML, there's more markup than there is text.

    With Markdown's reference-style links, a source document much more closely resembles the final output, as rendered in a browser. By allowing you to move the markup-related metadata out of the paragraph, you can add links without interrupting the narrative flow of your prose.

    Emphasis

    Markdown treats asterisks (*) and underscores (_) as indicators of emphasis. Text wrapped with one * or _ will be wrapped with an HTML <em> tag; double *'s or _'s will be wrapped with an HTML <strong> tag. E.g., this input:

    *single asterisks*
    +
    +_single underscores_
    +
    +**double asterisks**
    +
    +__double underscores__
    +

    will produce:

    <em>single asterisks</em>
    +
    +<em>single underscores</em>
    +
    +<strong>double asterisks</strong>
    +
    +<strong>double underscores</strong>
    +

    You can use whichever style you prefer; the lone restriction is that the same character must be used to open and close an emphasis span.

    Emphasis can be used in the middle of a word:

    un*frigging*believable
    +

    But if you surround an * or _ with spaces, it'll be treated as a literal asterisk or underscore.

    To produce a literal asterisk or underscore at a position where it would otherwise be used as an emphasis delimiter, you can backslash escape it:

    \*this text is surrounded by literal asterisks\*
    +

    Code

    To indicate a span of code, wrap it with backtick quotes (`). Unlike a pre-formatted code block, a code span indicates code within a normal paragraph. For example:

    Use the `printf()` function.
    +

    will produce:

    <p>Use the <code>printf()</code> function.</p>
    +

    To include a literal backtick character within a code span, you can use multiple backticks as the opening and closing delimiters:

    ``There is a literal backtick (`) here.``
    +

    which will produce this:

    <p><code>There is a literal backtick (`) here.</code></p>
    +

    The backtick delimiters surrounding a code span may include spaces -- one after the opening, one before the closing. This allows you to place literal backtick characters at the beginning or end of a code span:

    A single backtick in a code span: `` ` ``
    +
    +A backtick-delimited string in a code span: `` `foo` ``
    +

    will produce:

    <p>A single backtick in a code span: <code>`</code></p>
    +
    +<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
    +

    With a code span, ampersands and angle brackets are encoded as HTML entities automatically, which makes it easy to include example HTML tags. Markdown will turn this:

    Please don't use any `<blink>` tags.
    +

    into:

    <p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
    +

    You can write this:

    `&#8212;` is the decimal-encoded equivalent of `&mdash;`.
    +

    to produce:

    <p><code>&amp;#8212;</code> is the decimal-encoded
    +equivalent of <code>&amp;mdash;</code>.</p>
    +

    Images

    Admittedly, it's fairly difficult to devise a "natural" syntax for placing images into a plain text document format.

    Markdown uses an image syntax that is intended to resemble the syntax for links, allowing for two styles: inline and reference.

    Inline image syntax looks like this:

    ![Alt text](/path/to/img.jpg)
    +
    +![Alt text](/path/to/img.jpg "Optional title")
    +

    That is:

    • An exclamation mark: !;
    • followed by a set of square brackets, containing the alt attribute text for the image;
    • followed by a set of parentheses, containing the URL or path to the image, and an optional title attribute enclosed in double or single quotes.

    Reference-style image syntax looks like this:

    ![Alt text][id]
    +

    Where "id" is the name of a defined image reference. Image references are defined using syntax identical to link references:

    [id]: url/to/image  "Optional title attribute"
    +

    As of this writing, Markdown has no syntax for specifying the dimensions of an image; if this is important to you, you can simply use regular HTML <img> tags.


    Miscellaneous

    Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:

    <http://example.com/>
    +

    Markdown will turn this into:

    <a href="http://example.com/">http://example.com/</a>
    +

    Automatic links for email addresses work similarly, except that Markdown will also perform a bit of randomized decimal and hex entity-encoding to help obscure your address from address-harvesting spambots. For example, Markdown will turn this:

    <address@example.com>
    +

    into something like this:

    <a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
    +&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
    +&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
    +&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
    +

    which will render in a browser as a clickable link to "address@example.com".

    (This sort of entity-encoding trick will indeed fool many, if not most, address-harvesting bots, but it definitely won't fool all of them. It's better than nothing, but an address published in this way will probably eventually start receiving spam.)

    Backslash Escapes

    Markdown allows you to use backslash escapes to generate literal characters which would otherwise have special meaning in Markdown's formatting syntax. For example, if you wanted to surround a word with literal asterisks (instead of an HTML <em> tag), you can use backslashes before the asterisks, like this:

    \*literal asterisks\*
    +

    Markdown provides backslash escapes for the following characters:

    \   backslash
    +`   backtick
    +*   asterisk
    +_   underscore
    +{}  curly braces
    +[]  square brackets
    +()  parentheses
    +#   hash mark
    ++	plus sign
    +-	minus sign (hyphen)
    +.   dot
    +!   exclamation mark
    +
    John Doe - © 2023
    \ No newline at end of file diff --git a/posts/math/index.html b/posts/math/index.html new file mode 100644 index 0000000..d490949 --- /dev/null +++ b/posts/math/index.html @@ -0,0 +1,3 @@ + + Math +
    Mercury
    Modern blog theme
    Math

    Taken from https://mathjax.github.io/MathJax-demos-web/tex-chtml.html

    MathJax v3 beta: TeX input, HTML output test

    When $a \ne 0$, there are two solutions to $ ax^2 + bx + c = 0 $ and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$

    The Lorenz Equations

    $$ \begin{align} \dot{x} & = \sigma(y-x) \ \dot{y} & = \rho x - y - xz \ \dot{z} & = -\beta z + xy \end{align} $$

    The Cauchy-Schwarz Inequality

    $$ \left( \sum_{k=1}^n a_k b_k \right)^{!!2} \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) $$

    A Cross Product Formula

    $$ \mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \ \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \ \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \ \end{vmatrix} $$

    The probability of getting (k) heads when flipping (n) coins is:

    $$ P(E) = {n \choose k} p^k (1-p)^{ n-k} $$

    An Identity of Ramanujan

    $$ \frac{1}{(\sqrt{\phi \sqrt{5}}-\phi) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\ldots} } } } $$

    A Rogers-Ramanujan Identity

    $$ 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, \quad\quad \text{for $|q| < 1$}. $$

    Maxwell's Equations

    $$ \begin{align} \nabla \times \vec{\mathbf{B}} -, \frac1c, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \ \nabla \times \vec{\mathbf{E}}, +, \frac1c, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \ \nabla \cdot \vec{\mathbf{B}} & = 0 \end{align} $$

    In-line Mathematics

    Finally, while display equations look good for a page of samples, the ability to mix math and text in a paragraph is also important. This expression $\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As you see, MathJax equations can be used this way as well, without unduly disturbing the spacing between lines.

    John Doe - © 2023
    \ No newline at end of file diff --git a/posts/page/1/index.html b/posts/page/1/index.html new file mode 100644 index 0000000..fbc1095 --- /dev/null +++ b/posts/page/1/index.html @@ -0,0 +1 @@ +Redirect

    Click here to be redirected. \ No newline at end of file diff --git a/posts/table-of-contents/index.html b/posts/table-of-contents/index.html new file mode 100644 index 0000000..0e06a09 --- /dev/null +++ b/posts/table-of-contents/index.html @@ -0,0 +1,3 @@ + + Table of Contents Test +

    Mercury
    Modern blog theme
    Table of Contents Test

    Heading 1

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 2

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 3

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 3

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.


    Heading 2

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 3

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 3

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    Heading 4

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

    John Doe - © 2023
    \ No newline at end of file diff --git a/processed_images/project_1_card_image.74a5cdc8f32164ce.png b/processed_images/project_1_card_image.74a5cdc8f32164ce.png new file mode 100644 index 0000000..aee8ef3 Binary files /dev/null and b/processed_images/project_1_card_image.74a5cdc8f32164ce.png differ diff --git a/processed_images/project_3_card_image.a9288b4af345d8d7.jpg b/processed_images/project_3_card_image.a9288b4af345d8d7.jpg new file mode 100644 index 0000000..9dc97bf Binary files /dev/null and b/processed_images/project_3_card_image.a9288b4af345d8d7.jpg differ diff --git a/projects/index.html b/projects/index.html new file mode 100644 index 0000000..4a62b6b --- /dev/null +++ b/projects/index.html @@ -0,0 +1,3 @@ + + Mercury +
    Mercury
    Modern blog theme
    Projects
    /projects/project_1_card_image.png

    Project 1

    Example description

    Project 2

    Example description
    /projects/project_3_card_image.jpg

    Project 3

    Example description
    John Doe - © 2023
    \ No newline at end of file diff --git a/projects/project-1/index.html b/projects/project-1/index.html new file mode 100644 index 0000000..f5b555a --- /dev/null +++ b/projects/project-1/index.html @@ -0,0 +1,3 @@ + + Project 1 +
    Mercury
    Modern blog theme
    Project 1

    Example project page

    Card image: xkcd.com 730 - CC BY-NC 2.5

    John Doe - © 2023
    \ No newline at end of file diff --git a/projects/project-2/index.html b/projects/project-2/index.html new file mode 100644 index 0000000..ba3af8f --- /dev/null +++ b/projects/project-2/index.html @@ -0,0 +1,3 @@ + + Project 2 +
    Mercury
    Modern blog theme
    Project 2

    Example project page

    John Doe - © 2023
    \ No newline at end of file diff --git a/projects/project-3/index.html b/projects/project-3/index.html new file mode 100644 index 0000000..789fa0a --- /dev/null +++ b/projects/project-3/index.html @@ -0,0 +1,3 @@ + + Project 3 +
    Mercury
    Modern blog theme
    John Doe - © 2023
    \ No newline at end of file diff --git a/projects/project_1_card_image.png b/projects/project_1_card_image.png new file mode 100644 index 0000000..0c8cc5f Binary files /dev/null and b/projects/project_1_card_image.png differ diff --git a/projects/project_3_card_image.jpg b/projects/project_3_card_image.jpg new file mode 100644 index 0000000..21fd880 Binary files /dev/null and b/projects/project_3_card_image.jpg differ diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..f206a2e --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: +Allow: / +Sitemap: https://mercury.flxzt.net/sitemap.xml diff --git a/search_index.en.js b/search_index.en.js new file mode 100644 index 0000000..3e91017 --- /dev/null +++ b/search_index.en.js @@ -0,0 +1 @@ +window.searchIndex = {"fields":["title","body"],"pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5","index":{"body":{"root":{"docs":{},"df":0,"0":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.23606797749979}},"df":1},"1":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907},"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":4,"+":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.0}},"df":1}}}}},"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},".":{"docs":{},"df":0,"0":{"docs":{},"df":0,".":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"7":{"docs":{},"df":0,"6":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"}":{"docs":{},"df":0,"+":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{},"df":0,"+":{"docs":{},"df":0,"x":{"docs":{},"df":0,")":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}},"2":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0}},"df":3,".":{"docs":{},"df":0,"5":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1}},"3":{"docs":{},"df":0,"4":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"a":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"3":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":2.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":3},"4":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":2.8284271247461903}},"df":3,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"a":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"5":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"6":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"7":{"docs":{},"df":0,"3":{"docs":{},"df":0,"0":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1}}},"8":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"1":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"_":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"a":{"docs":{},"df":0,"_":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.0}},"df":1,"@":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}},"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/math/":{"tf":3.605551275463989}},"df":2,";":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"l":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}}}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"g":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}},"y":{"docs":{},"df":0,"w":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}},"r":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"c":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1}}}}}}},"t":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}}}}},"x":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"b":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"_":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}}}}}},"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"{":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}},"v":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"t":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}},"g":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.795831523312719}},"df":1,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1,"e":{"docs":{},"df":0,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}},"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.872983346207417}},"df":1}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"u":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"c":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":2},"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1},"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.123105625617661}},"df":1}}}}},"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":5.291502622129181}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":2}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"y":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"y":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"o":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"b":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}},"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"2":{"docs":{},"df":0,"5":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"s":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}},"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":6.708203932499369}},"df":1}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}}},"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"o":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1,"{":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}},"v":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.23606797749979}},"df":1}},"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":6.708203932499369}},"df":1},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1,"t":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.358898943540674},"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":5}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}},"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.4641016151377544}},"df":1}}}},"o":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1},"t":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.872983346207417}},"df":1,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"1":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}},"{":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"(":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"4":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"c":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"f":{"docs":{},"df":0,"{":{"docs":{},"df":0,"j":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}},"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.0}},"df":1,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"f":{"docs":{},"df":0,"{":{"docs":{},"df":0,"b":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}},"e":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"q":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}},"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0},"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":2}}},"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"/":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"/":{"docs":{},"df":0,"2":{"docs":{},"df":0,".":{"docs":{},"df":0,"3":{"docs":{},"df":0,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"o":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"g":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1},"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1}}}}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"s":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}}}},"l":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"x":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"z":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":6.708203932499369},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,":":{"docs":{},"df":0,"/":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}},"i":{"docs":{},"df":0,".":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1},"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":2,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":3}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}}},"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"e":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}},"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1},"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}},"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.0}},"df":1,"l":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"f":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}},"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"c":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"z":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}},"f":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":2}},"q":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}},"n":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":5.196152422706632},"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":2},"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":6.855654600401044}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":5.291502622129181}},"df":1}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.0}},"df":1}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.7416573867739413},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1},"n":{"docs":{},"df":0,"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2,";":{"docs":{},"df":0,"a":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"b":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"h":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"g":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"p":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}}},"n":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":7.681145747868608}},"df":1,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.4641016151377544}},"df":1},".":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"u":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"h":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"b":{"docs":{},"df":0,"f":{"docs":{},"df":0,"{":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"j":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"v":{"docs":{},"df":0,"}":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"'":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1,"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"p":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}}},"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":2.0}},"df":1}}},"m":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}},"r":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"c":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1},"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"c":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":6.708203932499369}},"df":1,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"q":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"c":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1},"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"t":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.7416573867739413}},"df":1}}}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}}}},"r":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}}},"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}},"p":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"(":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"^":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"g":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":4}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.123105625617661},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}}}}},"r":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}},"h":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}},"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"m":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}},"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}},"d":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"j":{"docs":{},"df":0,"=":{"docs":{},"df":0,"0":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,"}":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/projects/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.4142135623730951}},"df":4}}}},"s":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0},"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":2}}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.8284271247461903}},"df":1}}},"q":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,")":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"}":{"docs":{},"df":0,"+":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"q":{"docs":{},"df":0,"^":{"docs":{},"df":0,"6":{"docs":{},"df":0,"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"^":{"docs":{},"df":0,"2":{"docs":{},"df":0,")":{"docs":{},"df":0,"}":{"docs":{},"df":0,"+":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"{":{"docs":{},"df":0,"5":{"docs":{},"df":0,"j":{"docs":{},"df":0,"+":{"docs":{},"df":0,"2":{"docs":{},"df":0,"}":{"docs":{},"df":0,")":{"docs":{},"df":0,"(":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}},"3":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":6.708203932499369}},"df":1},"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.0}},"df":1}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/":{"tf":1.0}},"df":1}}}},"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}}},"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}}},"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"h":{"docs":{},"df":0,"o":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":2,")":{"docs":{},"df":0,"^":{"docs":{},"df":0,"{":{"docs":{},"df":0,"!":{"docs":{},"df":0,"!":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}}}},"s":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}}},"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"m":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"p":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"d":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":7.745966692414834}},"df":1},"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}},"w":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1,"e":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":2}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.47213595499958},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"m":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.3166247903554}},"df":1}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"f":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"q":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"{":{"docs":{},"df":0,"3":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}},"5":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"b":{"docs":{},"df":0,"^":{"docs":{},"df":0,"2":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.58257569495584}},"df":1}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"_":{"docs":{},"df":0,"{":{"docs":{},"df":0,"k":{"docs":{},"df":0,"=":{"docs":{},"df":0,"1":{"docs":{},"df":0,"}":{"docs":{},"df":0,"^":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1}}}}}}}}},"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1}}}}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"y":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.795831523312719}},"df":1}}}}}},"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":2}},"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":5.196152422706632}},"df":1},"k":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}},"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}},"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"u":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}},"n":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0},"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":2}},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.58257569495584},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"{":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"y":{"docs":{},"df":0,"'":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}},"u":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1}},"t":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"g":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907}},"df":1},"p":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"o":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.6457513110645907},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1,"'":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1},"r":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1},"n":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":5.477225575051661}},"df":1}}},"s":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":7.3484692283495345},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2,"a":{"docs":{},"df":0,"g":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1}}},"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}},"v":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"3":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"b":{"docs":{},"df":0,"f":{"docs":{},"df":0,"{":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1,"0":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"b":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}},"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}},"l":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1},"r":{"docs":{},"df":0,"i":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}}}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":3.872983346207417}},"df":1}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.605551275463989}},"df":1}},"y":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}},"e":{"docs":{},"df":0,"b":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.0}},"df":1,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/":{"tf":1.0}},"df":1}}},"l":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}},"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951},"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":2}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.449489742783178}},"df":1},"k":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":2.23606797749979}},"df":1},"t":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":3.1622776601683795}},"df":1}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":4.358898943540674}},"df":1,"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.7320508075688772}},"df":1,"k":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1}}}}}}},"y":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1},"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}},"y":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"e":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"'":{"docs":{},"df":0,"d":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.4142135623730951}},"df":1},"r":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.7320508075688772}},"df":1},"v":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}},"}":{"docs":{},"df":0,"{":{"docs":{},"df":0,"\\":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}},"z":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://mercury.flxzt.net/about/":{"tf":1.0}},"df":1}}}}}},"title":{"root":{"docs":{},"df":0,"1":{"docs":{"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0}},"df":1},"2":{"docs":{"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0}},"df":1},"3":{"docs":{"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":1},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":1}}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"h":{"docs":{"https://mercury.flxzt.net/posts/math/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/projects/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-1/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-2/":{"tf":1.0},"https://mercury.flxzt.net/projects/project-3/":{"tf":1.0}},"df":4}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{},"df":0,"y":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"https://mercury.flxzt.net/posts/markdown/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://mercury.flxzt.net/posts/table-of-contents/":{"tf":1.0}},"df":1}}}}}}},"documentStore":{"save":true,"docs":{"https://mercury.flxzt.net/":{"body":"Welcome to my awesome website!\n","id":"https://mercury.flxzt.net/","title":"Recent"},"https://mercury.flxzt.net/about/":{"body":"This site provides a demo for the Mercury theme for the Zola static site generator.\n","id":"https://mercury.flxzt.net/about/","title":"About"},"https://mercury.flxzt.net/posts/":{"body":"","id":"https://mercury.flxzt.net/posts/","title":"Posts"},"https://mercury.flxzt.net/posts/markdown/":{"body":"Taken from github.com/thephpleague/commonmark/blob/2.3/tests/benchmark/sample.md\nOverview\nPhilosophy\nMarkdown is intended to be as easy-to-read and easy-to-write as is feasible.\nReadability, however, is emphasized above all else. A Markdown-formatted\ndocument should be publishable as-is, as plain text, without looking\nlike it's been marked up with tags or formatting instructions. While\nMarkdown's syntax has been influenced by several existing text-to-HTML\nfilters -- including [Setext] 1, [atx] 2, [Textile] 3, [reStructuredText] 4,\n[Grutatext] 5, and [EtText] 6 -- the single biggest source of\ninspiration for Markdown's syntax is the format of plain text email.\nTo this end, Markdown's syntax is comprised entirely of punctuation\ncharacters, which punctuation characters have been carefully chosen so\nas to look like what they mean. E.g., asterisks around a word actually\nlook like *emphasis*. Markdown lists look like, well, lists. Even\nblockquotes look like quoted passages of text, assuming you've ever\nused email.\nInline HTML\nMarkdown's syntax is intended for one purpose: to be used as a\nformat for writing for the web.\nMarkdown is not a replacement for HTML, or even close to it. Its\nsyntax is very small, corresponding only to a very small subset of\nHTML tags. The idea is not to create a syntax that makes it easier\nto insert HTML tags. In my opinion, HTML tags are already easy to\ninsert. The idea for Markdown is to make it easy to read, write, and\nedit prose. HTML is a publishing format; Markdown is a writing\nformat. Thus, Markdown's formatting syntax only addresses issues that\ncan be conveyed in plain text.\nFor any markup that is not covered by Markdown's syntax, you simply\nuse HTML itself. There's no need to preface it or delimit it to\nindicate that you're switching from Markdown to HTML; you just use\nthe tags.\nThe only restrictions are that block-level HTML elements -- e.g. <div>,\n<table>, <pre>, <p>, etc. -- must be separated from surrounding\ncontent by blank lines, and the start and end tags of the block should\nnot be indented with tabs or spaces. Markdown is smart enough not\nto add extra (unwanted) <p> tags around HTML block-level tags.\nFor example, to add an HTML table to a Markdown article:\n\nNote that Markdown formatting syntax is not processed within block-level\nHTML tags. E.g., you can't use Markdown-style *emphasis* inside an\nHTML block.\nSpan-level HTML tags -- e.g. <span>, <cite>, or <del> -- can be\nused anywhere in a Markdown paragraph, list item, or header. If you\nwant, you can even use HTML tags instead of Markdown formatting; e.g. if\nyou'd prefer to use HTML <a> or <img> tags instead of Markdown's\nlink or image syntax, go right ahead.\nUnlike block-level HTML tags, Markdown syntax is processed within\nspan-level tags.\nAutomatic Escaping for Special Characters\nIn HTML, there are two characters that demand special treatment: <\nand &. Left angle brackets are used to start tags; ampersands are\nused to denote HTML entities. If you want to use them as literal\ncharacters, you must escape them as entities, e.g. &lt;, and\n&amp;.\nAmpersands in particular are bedeviling for web writers. If you want to\nwrite about 'AT&T', you need to write 'AT&amp;T'. You even need to\nescape ampersands within URLs. Thus, if you want to link to:\n\nyou need to encode the URL as:\n\nin your anchor tag href attribute. Needless to say, this is easy to\nforget, and is probably the single most common source of HTML validation\nerrors in otherwise well-marked-up web sites.\nMarkdown allows you to use these characters naturally, taking care of\nall the necessary escaping for you. If you use an ampersand as part of\nan HTML entity, it remains unchanged; otherwise it will be translated\ninto &amp;.\nSo, if you want to include a copyright symbol in your article, you can write:\n\nand Markdown will leave it alone. But if you write:\n\nMarkdown will translate it to:\n\nSimilarly, because Markdown supports inline HTML, if you use\nangle brackets as delimiters for HTML tags, Markdown will treat them as\nsuch. But if you write:\n\nMarkdown will translate it to:\n\nHowever, inside Markdown code spans and blocks, angle brackets and\nampersands are always encoded automatically. This makes it easy to use\nMarkdown to write about HTML code. (As opposed to raw HTML, which is a\nterrible format for writing about HTML syntax, because every single <\nand & in your example code needs to be escaped.)\n\nBlock Elements\nParagraphs and Line Breaks\nA paragraph is simply one or more consecutive lines of text, separated\nby one or more blank lines. (A blank line is any line that looks like a\nblank line -- a line containing nothing but spaces or tabs is considered\nblank.) Normal paragraphs should not be indented with spaces or tabs.\nThe implication of the \"one or more consecutive lines of text\" rule is\nthat Markdown supports \"hard-wrapped\" text paragraphs. This differs\nsignificantly from most other text-to-HTML formatters (including Movable\nType's \"Convert Line Breaks\" option) which translate every line break\ncharacter in a paragraph into a <br /> tag.\nWhen you do want to insert a <br /> break tag using Markdown, you\nend a line with two or more spaces, then type return.\nYes, this takes a tad more effort to create a <br />, but a simplistic\n\"every line break is a <br />\" rule wouldn't work for Markdown.\nMarkdown's email-style blockquoting and multi-paragraph list items\nwork best -- and look better -- when you format them with hard breaks.\nHeaders\nMarkdown supports two styles of headers, [Setext] 1 and [atx] 2.\nSetext-style headers are \"underlined\" using equal signs (for first-level\nheaders) and dashes (for second-level headers). For example:\n\nAny number of underlining ='s or -'s will work.\nAtx-style headers use 1-6 hash characters at the start of the line,\ncorresponding to header levels 1-6. For example:\n\nOptionally, you may \"close\" atx-style headers. This is purely\ncosmetic -- you can use this if you think it looks better. The\nclosing hashes don't even need to match the number of hashes\nused to open the header. (The number of opening hashes\ndetermines the header level.) :\n\nBlockquotes\nMarkdown uses email-style > characters for blockquoting. If you're\nfamiliar with quoting passages of text in an email message, then you\nknow how to create a blockquote in Markdown. It looks best if you hard\nwrap the text and put a > before every line:\n\nMarkdown allows you to be lazy and only put the > before the first\nline of a hard-wrapped paragraph:\n\nBlockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\nadding additional levels of >:\n\nBlockquotes can contain other Markdown elements, including headers, lists,\nand code blocks:\n\nThis is a header.\n\nThis is the first list item.\nThis is the second list item.\n\nHere's some example code:\n\n\nAny decent text editor should make email-style quoting easy. For\nexample, with BBEdit, you can make a selection and choose Increase\nQuote Level from the Text menu.\nLists\nMarkdown supports ordered (numbered) and unordered (bulleted) lists.\nUnordered lists use asterisks, pluses, and hyphens -- interchangably\n-- as list markers:\n\nis equivalent to:\n\nand:\n\nOrdered lists use numbers followed by periods:\n\nIt's important to note that the actual numbers you use to mark the\nlist have no effect on the HTML output Markdown produces. The HTML\nMarkdown produces from the above list is:\n\nIf you instead wrote the list in Markdown like this:\n\nor even:\n\nyou'd get the exact same HTML output. The point is, if you want to,\nyou can use ordinal numbers in your ordered Markdown lists, so that\nthe numbers in your source match the numbers in your published HTML.\nBut if you want to be lazy, you don't have to.\nIf you do use lazy list numbering, however, you should still start the\nlist with the number 1. At some point in the future, Markdown may support\nstarting ordered lists at an arbitrary number.\nList markers typically start at the left margin, but may be indented by\nup to three spaces. List markers must be followed by one or more spaces\nor a tab.\nTo make lists look nice, you can wrap items with hanging indents:\n\nBut if you want to be lazy, you don't have to:\n\nIf list items are separated by blank lines, Markdown will wrap the\nitems in <p> tags in the HTML output. For example, this input:\n\nwill turn into:\n\nBut this:\n\nwill turn into:\n\nList items may consist of multiple paragraphs. Each subsequent\nparagraph in a list item must be indented by either 4 spaces\nor one tab:\n\nIt looks nice if you indent every line of the subsequent\nparagraphs, but here again, Markdown will allow you to be\nlazy:\n\nTo put a blockquote within a list item, the blockquote's >\ndelimiters need to be indented:\n\nTo put a code block within a list item, the code block needs\nto be indented twice -- 8 spaces or two tabs:\n\nIt's worth noting that it's possible to trigger an ordered list by\naccident, by writing something like this:\n\nIn other words, a number-period-space sequence at the beginning of a\nline. To avoid this, you can backslash-escape the period:\n\nCode Blocks\nPre-formatted code blocks are used for writing about programming or\nmarkup source code. Rather than forming normal paragraphs, the lines\nof a code block are interpreted literally. Markdown wraps a code block\nin both <pre> and <code> tags.\nTo produce a code block in Markdown, simply indent every line of the\nblock by at least 4 spaces or 1 tab. For example, given this input:\n\nMarkdown will generate:\n\nOne level of indentation -- 4 spaces or 1 tab -- is removed from each\nline of the code block. For example, this:\n\nwill turn into:\n\nA code block continues until it reaches a line that is not indented\n(or the end of the article).\nWithin a code block, ampersands (&) and angle brackets (< and >)\nare automatically converted into HTML entities. This makes it very\neasy to include example HTML source code using Markdown -- just paste\nit and indent it, and Markdown will handle the hassle of encoding the\nampersands and angle brackets. For example, this:\n\nwill turn into:\n\nRegular Markdown syntax is not processed within code blocks. E.g.,\nasterisks are just literal asterisks within a code block. This means\nit's also easy to use Markdown to write about Markdown's own syntax.\nHorizontal Rules\nYou can produce a horizontal rule tag (<hr />) by placing three or\nmore hyphens, asterisks, or underscores on a line by themselves. If you\nwish, you may use spaces between the hyphens or asterisks. Each of the\nfollowing lines will produce a horizontal rule:\n\n\nSpan Elements\nLinks\nMarkdown supports two style of links: inline and reference.\nIn both styles, the link text is delimited by [square brackets].\nTo create an inline link, use a set of regular parentheses immediately\nafter the link text's closing square bracket. Inside the parentheses,\nput the URL where you want the link to point, along with an optional\ntitle for the link, surrounded in quotes. For example:\n\nWill produce:\n\nIf you're referring to a local resource on the same server, you can\nuse relative paths:\n\nReference-style links use a second set of square brackets, inside\nwhich you place a label of your choosing to identify the link:\n\nYou can optionally use a space to separate the sets of brackets:\n\nThen, anywhere in the document, you define your link label like this,\non a line by itself:\n\nThat is:\n\nSquare brackets containing the link identifier (optionally\nindented from the left margin using up to three spaces);\nfollowed by a colon;\nfollowed by one or more spaces (or tabs);\nfollowed by the URL for the link;\noptionally followed by a title attribute for the link, enclosed\nin double or single quotes, or enclosed in parentheses.\n\nThe following three link definitions are equivalent:\n\nNote: There is a known bug in Markdown.pl 1.0.1 which prevents\nsingle quotes from being used to delimit link titles.\nThe link URL may, optionally, be surrounded by angle brackets:\n\nYou can put the title attribute on the next line and use extra spaces\nor tabs for padding, which tends to look better with longer URLs:\n\nLink definitions are only used for creating links during Markdown\nprocessing, and are stripped from your document in the HTML output.\nLink definition names may consist of letters, numbers, spaces, and\npunctuation -- but they are not case sensitive. E.g. these two\nlinks:\n\nare equivalent.\nThe implicit link name shortcut allows you to omit the name of the\nlink, in which case the link text itself is used as the name.\nJust use an empty set of square brackets -- e.g., to link the word\n\"Google\" to the google.com web site, you could simply write:\n\nAnd then define the link:\n\nBecause link names may contain spaces, this shortcut even works for\nmultiple words in the link text:\n\nAnd then define the link:\n\nLink definitions can be placed anywhere in your Markdown document. I\ntend to put them immediately after each paragraph in which they're\nused, but if you want, you can put them all at the end of your\ndocument, sort of like footnotes.\nHere's an example of reference links in action:\n\nUsing the implicit link name shortcut, you could instead write:\n\nBoth of the above examples will produce the following HTML output:\n\nFor comparison, here is the same paragraph written using\nMarkdown's inline link style:\n\nThe point of reference-style links is not that they're easier to\nwrite. The point is that with reference-style links, your document\nsource is vastly more readable. Compare the above examples: using\nreference-style links, the paragraph itself is only 81 characters\nlong; with inline-style links, it's 176 characters; and as raw HTML,\nit's 234 characters. In the raw HTML, there's more markup than there\nis text.\nWith Markdown's reference-style links, a source document much more\nclosely resembles the final output, as rendered in a browser. By\nallowing you to move the markup-related metadata out of the paragraph,\nyou can add links without interrupting the narrative flow of your\nprose.\nEmphasis\nMarkdown treats asterisks (*) and underscores (_) as indicators of\nemphasis. Text wrapped with one * or _ will be wrapped with an\nHTML <em> tag; double *'s or _'s will be wrapped with an HTML\n<strong> tag. E.g., this input:\n\nwill produce:\n\nYou can use whichever style you prefer; the lone restriction is that\nthe same character must be used to open and close an emphasis span.\nEmphasis can be used in the middle of a word:\n\nBut if you surround an * or _ with spaces, it'll be treated as a\nliteral asterisk or underscore.\nTo produce a literal asterisk or underscore at a position where it\nwould otherwise be used as an emphasis delimiter, you can backslash\nescape it:\n\nCode\nTo indicate a span of code, wrap it with backtick quotes (`).\nUnlike a pre-formatted code block, a code span indicates code within a\nnormal paragraph. For example:\n\nwill produce:\n\nTo include a literal backtick character within a code span, you can use\nmultiple backticks as the opening and closing delimiters:\n\nwhich will produce this:\n\nThe backtick delimiters surrounding a code span may include spaces --\none after the opening, one before the closing. This allows you to place\nliteral backtick characters at the beginning or end of a code span:\n\nwill produce:\n\nWith a code span, ampersands and angle brackets are encoded as HTML\nentities automatically, which makes it easy to include example HTML\ntags. Markdown will turn this:\n\ninto:\n\nYou can write this:\n\nto produce:\n\nImages\nAdmittedly, it's fairly difficult to devise a \"natural\" syntax for\nplacing images into a plain text document format.\nMarkdown uses an image syntax that is intended to resemble the syntax\nfor links, allowing for two styles: inline and reference.\nInline image syntax looks like this:\n\nThat is:\n\nAn exclamation mark: !;\nfollowed by a set of square brackets, containing the alt\nattribute text for the image;\nfollowed by a set of parentheses, containing the URL or path to\nthe image, and an optional title attribute enclosed in double\nor single quotes.\n\nReference-style image syntax looks like this:\n\nWhere \"id\" is the name of a defined image reference. Image references\nare defined using syntax identical to link references:\n\nAs of this writing, Markdown has no syntax for specifying the\ndimensions of an image; if this is important to you, you can simply\nuse regular HTML <img> tags.\n\nMiscellaneous\nAutomatic Links\nMarkdown supports a shortcut style for creating \"automatic\" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:\n\nMarkdown will turn this into:\n\nAutomatic links for email addresses work similarly, except that\nMarkdown will also perform a bit of randomized decimal and hex\nentity-encoding to help obscure your address from address-harvesting\nspambots. For example, Markdown will turn this:\n\ninto something like this:\n\nwhich will render in a browser as a clickable link to \"address@example.com\".\n(This sort of entity-encoding trick will indeed fool many, if not\nmost, address-harvesting bots, but it definitely won't fool all of\nthem. It's better than nothing, but an address published in this way\nwill probably eventually start receiving spam.)\nBackslash Escapes\nMarkdown allows you to use backslash escapes to generate literal\ncharacters which would otherwise have special meaning in Markdown's\nformatting syntax. For example, if you wanted to surround a word\nwith literal asterisks (instead of an HTML <em> tag), you can use\nbackslashes before the asterisks, like this:\n\nMarkdown provides backslash escapes for the following characters:\n\n","id":"https://mercury.flxzt.net/posts/markdown/","title":"Markdown Syntax"},"https://mercury.flxzt.net/posts/math/":{"body":"Taken from https://mathjax.github.io/MathJax-demos-web/tex-chtml.html\nMathJax v3 beta: TeX input, HTML output test\nWhen $a \\ne 0$, there are two solutions to $ ax^2 + bx + c = 0 $ and they are\n$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$\nThe Lorenz Equations\n$$\n\\begin{align}\n\\dot{x} & = \\sigma(y-x) \\\n\\dot{y} & = \\rho x - y - xz \\\n\\dot{z} & = -\\beta z + xy\n\\end{align}\n$$\nThe Cauchy-Schwarz Inequality\n$$\n\\left( \\sum_{k=1}^n a_k b_k \\right)^{!!2} \\leq\n\\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n$$\nA Cross Product Formula\n$$\n\\mathbf{V}_1 \\times \\mathbf{V}_2 =\n\\begin{vmatrix}\n\\mathbf{i} & \\mathbf{j} & \\mathbf{k} \\\n\\frac{\\partial X}{\\partial u} & \\frac{\\partial Y}{\\partial u} & 0 \\\n\\frac{\\partial X}{\\partial v} & \\frac{\\partial Y}{\\partial v} & 0 \\\n\\end{vmatrix}\n$$\nThe probability of getting (k) heads when flipping (n) coins is:\n$$\nP(E) = {n \\choose k} p^k (1-p)^{ n-k}\n$$\nAn Identity of Ramanujan\n$$\n\\frac{1}{(\\sqrt{\\phi \\sqrt{5}}-\\phi) e^{\\frac25 \\pi}} =\n1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n{1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\n$$\nA Rogers-Ramanujan Identity\n$$\n1 + \\frac{q^2}{(1-q)}+\\frac{q^6}{(1-q)(1-q^2)}+\\cdots =\n\\prod_{j=0}^{\\infty}\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\n\\quad\\quad \\text{for $|q| < 1$}.\n$$\nMaxwell's Equations\n$$\n\\begin{align}\n\\nabla \\times \\vec{\\mathbf{B}} -, \\frac1c, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\n\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\n\\nabla \\times \\vec{\\mathbf{E}}, +, \\frac1c, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\n\\nabla \\cdot \\vec{\\mathbf{B}} & = 0\n\\end{align}\n$$\nIn-line Mathematics\nFinally, while display equations look good for a page of samples, the\nability to mix math and text in a paragraph is also important. This\nexpression $\\sqrt{3x-1}+(1+x)^2$ is an example of an inline equation. As\nyou see, MathJax equations can be used this way as well, without unduly\ndisturbing the spacing between lines.\n","id":"https://mercury.flxzt.net/posts/math/","title":"Math"},"https://mercury.flxzt.net/posts/table-of-contents/":{"body":"Heading 1\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 2\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 3\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 3\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\n\nHeading 2\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 3\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 3\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\nHeading 4\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.\n","id":"https://mercury.flxzt.net/posts/table-of-contents/","title":"Table of Contents Test"},"https://mercury.flxzt.net/projects/":{"body":"","id":"https://mercury.flxzt.net/projects/","title":"Projects"},"https://mercury.flxzt.net/projects/project-1/":{"body":"Example project page\nCard image: xkcd.com 730 - CC BY-NC 2.5\n","id":"https://mercury.flxzt.net/projects/project-1/","title":"Project 1"},"https://mercury.flxzt.net/projects/project-2/":{"body":"Example project page\n","id":"https://mercury.flxzt.net/projects/project-2/","title":"Project 2"},"https://mercury.flxzt.net/projects/project-3/":{"body":"Example project page\nCard image: NASA - Media Usage Guidelines\n","id":"https://mercury.flxzt.net/projects/project-3/","title":"Project 3"}},"docInfo":{"https://mercury.flxzt.net/":{"body":3,"title":1},"https://mercury.flxzt.net/about/":{"body":9,"title":0},"https://mercury.flxzt.net/posts/":{"body":0,"title":1},"https://mercury.flxzt.net/posts/markdown/":{"body":1764,"title":2},"https://mercury.flxzt.net/posts/math/":{"body":208,"title":1},"https://mercury.flxzt.net/posts/table-of-contents/":{"body":1485,"title":3},"https://mercury.flxzt.net/projects/":{"body":0,"title":1},"https://mercury.flxzt.net/projects/project-1/":{"body":10,"title":2},"https://mercury.flxzt.net/projects/project-2/":{"body":3,"title":2},"https://mercury.flxzt.net/projects/project-3/":{"body":9,"title":2}},"length":10},"lang":"English"}; \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..efdb576 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,42 @@ + + + + https://mercury.flxzt.net/ + + + https://mercury.flxzt.net/about/ + + + https://mercury.flxzt.net/posts/ + + + https://mercury.flxzt.net/posts/markdown/ + 2022-01-01 + + + https://mercury.flxzt.net/posts/math/ + 2022-01-03 + + + https://mercury.flxzt.net/posts/page/1/ + + + https://mercury.flxzt.net/posts/table-of-contents/ + 2022-01-02 + + + https://mercury.flxzt.net/projects/ + + + https://mercury.flxzt.net/projects/project-1/ + + + https://mercury.flxzt.net/projects/project-2/ + + + https://mercury.flxzt.net/projects/project-3/ + + + https://mercury.flxzt.net/tags/ + + diff --git a/social_icons/LICENSE b/social_icons/LICENSE new file mode 100644 index 0000000..993facc --- /dev/null +++ b/social_icons/LICENSE @@ -0,0 +1 @@ +All icons in this directory are downloaded from [FontAwesome](https://fontawesome.com/). They are part of the [free offer](https://fontawesome.com/license/free) and are licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). \ No newline at end of file diff --git a/social_icons/apple.svg b/social_icons/apple.svg new file mode 100644 index 0000000..d0532d5 --- /dev/null +++ b/social_icons/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/bitcoin.svg b/social_icons/bitcoin.svg new file mode 100644 index 0000000..941d9b0 --- /dev/null +++ b/social_icons/bitcoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/deviantart.svg b/social_icons/deviantart.svg new file mode 100644 index 0000000..7dbd0b6 --- /dev/null +++ b/social_icons/deviantart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/diaspora.svg b/social_icons/diaspora.svg new file mode 100644 index 0000000..55527b5 --- /dev/null +++ b/social_icons/diaspora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/discord.svg b/social_icons/discord.svg new file mode 100644 index 0000000..f0dfeab --- /dev/null +++ b/social_icons/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/discourse.svg b/social_icons/discourse.svg new file mode 100644 index 0000000..343bea6 --- /dev/null +++ b/social_icons/discourse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/email.svg b/social_icons/email.svg new file mode 100644 index 0000000..85245e2 --- /dev/null +++ b/social_icons/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/ethereum.svg b/social_icons/ethereum.svg new file mode 100644 index 0000000..af202de --- /dev/null +++ b/social_icons/ethereum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/etsy.svg b/social_icons/etsy.svg new file mode 100644 index 0000000..ebc040a --- /dev/null +++ b/social_icons/etsy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/facebook.svg b/social_icons/facebook.svg new file mode 100644 index 0000000..0afaf7a --- /dev/null +++ b/social_icons/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/github.svg b/social_icons/github.svg new file mode 100644 index 0000000..e32807a --- /dev/null +++ b/social_icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/gitlab.svg b/social_icons/gitlab.svg new file mode 100644 index 0000000..b577d3f --- /dev/null +++ b/social_icons/gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/google.svg b/social_icons/google.svg new file mode 100644 index 0000000..b3776b0 --- /dev/null +++ b/social_icons/google.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/hacker-news.svg b/social_icons/hacker-news.svg new file mode 100644 index 0000000..23e3980 --- /dev/null +++ b/social_icons/hacker-news.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/instagram.svg b/social_icons/instagram.svg new file mode 100644 index 0000000..89f63c4 --- /dev/null +++ b/social_icons/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/linkedin.svg b/social_icons/linkedin.svg new file mode 100644 index 0000000..d54fcf5 --- /dev/null +++ b/social_icons/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/mastodon.svg b/social_icons/mastodon.svg new file mode 100644 index 0000000..5e12f81 --- /dev/null +++ b/social_icons/mastodon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/paypal.svg b/social_icons/paypal.svg new file mode 100644 index 0000000..efdc81a --- /dev/null +++ b/social_icons/paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/pinterest.svg b/social_icons/pinterest.svg new file mode 100644 index 0000000..eb977c2 --- /dev/null +++ b/social_icons/pinterest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/quora.svg b/social_icons/quora.svg new file mode 100644 index 0000000..375d302 --- /dev/null +++ b/social_icons/quora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/reddit.svg b/social_icons/reddit.svg new file mode 100644 index 0000000..a8a3a96 --- /dev/null +++ b/social_icons/reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/rss.svg b/social_icons/rss.svg new file mode 100644 index 0000000..b862886 --- /dev/null +++ b/social_icons/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/skype.svg b/social_icons/skype.svg new file mode 100644 index 0000000..3369aba --- /dev/null +++ b/social_icons/skype.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/slack.svg b/social_icons/slack.svg new file mode 100644 index 0000000..0dbc26d --- /dev/null +++ b/social_icons/slack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/snapchat.svg b/social_icons/snapchat.svg new file mode 100644 index 0000000..2cd79dd --- /dev/null +++ b/social_icons/snapchat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/soundcloud.svg b/social_icons/soundcloud.svg new file mode 100644 index 0000000..4724d74 --- /dev/null +++ b/social_icons/soundcloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/spotify.svg b/social_icons/spotify.svg new file mode 100644 index 0000000..1d393ba --- /dev/null +++ b/social_icons/spotify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/stack-exchange.svg b/social_icons/stack-exchange.svg new file mode 100644 index 0000000..0a3177f --- /dev/null +++ b/social_icons/stack-exchange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/stack-overflow.svg b/social_icons/stack-overflow.svg new file mode 100644 index 0000000..2ca50c7 --- /dev/null +++ b/social_icons/stack-overflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/steam.svg b/social_icons/steam.svg new file mode 100644 index 0000000..b61f374 --- /dev/null +++ b/social_icons/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/telegram.svg b/social_icons/telegram.svg new file mode 100644 index 0000000..02f48c0 --- /dev/null +++ b/social_icons/telegram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/twitter.svg b/social_icons/twitter.svg new file mode 100644 index 0000000..0778f72 --- /dev/null +++ b/social_icons/twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/vimeo.svg b/social_icons/vimeo.svg new file mode 100644 index 0000000..d98368e --- /dev/null +++ b/social_icons/vimeo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/whatsapp.svg b/social_icons/whatsapp.svg new file mode 100644 index 0000000..d259142 --- /dev/null +++ b/social_icons/whatsapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/social_icons/youtube.svg b/social_icons/youtube.svg new file mode 100644 index 0000000..287dca2 --- /dev/null +++ b/social_icons/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/theme/dark.css b/theme/dark.css new file mode 100644 index 0000000..cdd2371 --- /dev/null +++ b/theme/dark.css @@ -0,0 +1 @@ +:root{--text-0: #f5f5f5;--text-1: #d8d8d8;--bg-0: #5f6b75;--bg-1: #232527;--bg-2: #1a1c1d;--accent-bg: #44494e;--bg-noise-image: url(/images/noise_dark.png);--primary-color: #96493f;--hover-color: #96493f;--accent-color: #828e99} \ No newline at end of file diff --git a/theme/light.css b/theme/light.css new file mode 100644 index 0000000..eedce31 --- /dev/null +++ b/theme/light.css @@ -0,0 +1 @@ +:root{--text-0: #1a1a1a;--text-1: #2a2a2a;--bg-0: #d6d6d6;--bg-1: #f8f8f8;--bg-2: #d3d5d8;--accent-bg: #f5f5dc;--bg-noise-image: url(/images/noise_light.png);--primary-color: #b34e41;--hover-color: #b34e41;--accent-color: #dbcb9f} \ No newline at end of file